@bravobit/bb-foundation 0.29.1 → 0.29.2
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/auth/lib/auth.service.d.ts +4 -5
- package/esm2022/auth/lib/auth.interceptor.mjs +3 -3
- package/esm2022/auth/lib/auth.module.mjs +4 -4
- package/esm2022/auth/lib/auth.service.mjs +11 -13
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +3 -3
- package/esm2022/auth/lib/guards/anonymous.guard.mjs +3 -3
- package/esm2022/auth/lib/guards/authenticated.guard.mjs +3 -3
- package/esm2022/collections/lib/collections.module.mjs +4 -4
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
- package/esm2022/collections/lib/components/collections.directive.mjs +12 -12
- package/esm2022/controls/lib/checkbox/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +3 -3
- package/esm2022/controls/lib/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/controls/lib/control-error/control-error/control-error.component.mjs +3 -3
- package/esm2022/controls/lib/control-error/control-error-submit.directive.mjs +3 -3
- package/esm2022/controls/lib/control-error/control-error.module.mjs +4 -4
- package/esm2022/controls/lib/controls.module.mjs +4 -4
- package/esm2022/controls/lib/form-control/form-control/form-control.component.mjs +3 -3
- package/esm2022/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +3 -3
- package/esm2022/controls/lib/form-control/form-control-input.directive.mjs +3 -3
- package/esm2022/controls/lib/form-control/form-control.module.mjs +4 -4
- package/esm2022/controls/lib/radio/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/controls/lib/radio/radio-group/radio-group.component.mjs +3 -3
- package/esm2022/controls/lib/radio/radio.module.mjs +4 -4
- package/esm2022/controls/lib/toggle/toggle/toggle.component.mjs +3 -3
- package/esm2022/controls/lib/toggle/toggle-group/toggle-group.component.mjs +3 -3
- package/esm2022/controls/lib/toggle/toggle.module.mjs +4 -4
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
- package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
- package/esm2022/dashboard/lib/dashboard.module.mjs +4 -4
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog.insertion.mjs +3 -3
- package/esm2022/dialog/lib/dialog.module.mjs +4 -4
- package/esm2022/dialog/lib/dialog.service.mjs +3 -3
- package/esm2022/elements/lib/avatar/avatar.component.mjs +3 -3
- package/esm2022/elements/lib/button/button.component.mjs +6 -6
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/elements/lib/directives/addon.directive.mjs +6 -6
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +3 -3
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +3 -3
- package/esm2022/elements/lib/directives/input.directive.mjs +6 -6
- package/esm2022/elements/lib/dropdown/dropdown.component.mjs +6 -6
- package/esm2022/elements/lib/elements.module.mjs +4 -4
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +3 -3
- package/esm2022/elements/lib/form-control/form-control.component.mjs +3 -3
- package/esm2022/elements/lib/form-error/form-error.component.mjs +3 -3
- package/esm2022/elements/lib/form-group/form-group.component.mjs +3 -3
- package/esm2022/elements/lib/icon/icon.component.mjs +3 -3
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +3 -3
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +3 -3
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +3 -3
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +3 -3
- package/esm2022/elements/lib/spinner/spinner.component.mjs +3 -3
- package/esm2022/elements/lib/tag/tag.component.mjs +3 -3
- package/esm2022/http/lib/http.module.mjs +4 -4
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +3 -3
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +3 -3
- package/esm2022/lib/core/services/clipboard.service.mjs +3 -3
- package/esm2022/lib/core/services/exif.service.mjs +3 -3
- package/esm2022/lib/core/services/file-loader.service.mjs +3 -3
- package/esm2022/lib/core/services/image-converter.service.mjs +3 -3
- package/esm2022/lib/core/services/languages.service.mjs +3 -3
- package/esm2022/lib/core/services/network.service.mjs +3 -3
- package/esm2022/lib/core/services/patch.service.mjs +3 -3
- package/esm2022/localize/lib/localize.module.mjs +4 -4
- package/esm2022/localize/lib/localize.pipe.mjs +3 -3
- package/esm2022/localize/lib/localize.service.mjs +3 -3
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
- package/esm2022/localize/lib/views/localize-template.directive.mjs +3 -3
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +3 -3
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +3 -3
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +3 -3
- package/esm2022/masking/lib/masking.module.mjs +4 -4
- package/esm2022/masking/lib/masking.service.mjs +3 -3
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
- package/esm2022/notifications/lib/notifications.module.mjs +4 -4
- package/esm2022/notifications/lib/notifications.service.mjs +3 -3
- package/esm2022/permissions/lib/directives/permission.directive.mjs +3 -3
- package/esm2022/permissions/lib/guards/permission.guard.mjs +3 -3
- package/esm2022/permissions/lib/permissions.module.mjs +4 -4
- package/esm2022/permissions/lib/permissions.service.mjs +3 -3
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2022/storage/lib/storage.service.mjs +3 -3
- package/esm2022/table/lib/components/table/table.component.mjs +9 -9
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +3 -3
- package/esm2022/table/lib/table.module.mjs +4 -4
- package/esm2022/theming/lib/theming.directive.mjs +3 -3
- package/esm2022/theming/lib/theming.module.mjs +4 -4
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +3 -3
- package/esm2022/tooltip/lib/tooltip.directive.mjs +3 -3
- package/esm2022/tooltip/lib/tooltip.module.mjs +4 -4
- package/esm2022/utils/lib/directives/autosize.directive.mjs +3 -3
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +3 -3
- package/esm2022/utils/lib/directives/focus.directive.mjs +3 -3
- package/esm2022/utils/lib/directives/template.directive.mjs +3 -3
- package/esm2022/utils/lib/utils.module.mjs +4 -4
- package/fesm2022/bravobit-bb-foundation-auth.mjs +26 -28
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +22 -22
- package/fesm2022/bravobit-bb-foundation-controls.mjs +57 -57
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +25 -25
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +31 -31
- package/fesm2022/bravobit-bb-foundation-elements.mjs +76 -76
- package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-localize.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +13 -13
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +13 -13
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2022/bravobit-bb-foundation-table.mjs +22 -22
- package/fesm2022/bravobit-bb-foundation-theming.mjs +7 -7
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation.mjs +21 -21
- package/package.json +12 -12
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { AuthConfig, AuthRedirectHandler } from './interfaces/config.interface';
|
|
2
|
-
import { Injector
|
|
2
|
+
import { Injector } from '@angular/core';
|
|
3
3
|
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
4
4
|
import { AuthProvider, AuthSignInResponse } from './interfaces/provider.interface';
|
|
5
5
|
import { Storage } from '@bravobit/bb-foundation/storage';
|
|
6
|
+
import { TransferState } from '@angular/platform-browser';
|
|
6
7
|
import { HttpConfig } from '@bravobit/bb-foundation/http';
|
|
7
8
|
import { Observable } from 'rxjs';
|
|
8
9
|
import { Platform } from '@angular/cdk/platform';
|
|
9
|
-
import { TransferState } from '@angular/core';
|
|
10
10
|
import { AuthSession } from './auth.session';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
export declare class Auth {
|
|
13
|
-
private _zone;
|
|
14
13
|
private _storage;
|
|
15
14
|
private _injector;
|
|
16
15
|
private _platform;
|
|
@@ -24,7 +23,7 @@ export declare class Auth {
|
|
|
24
23
|
readonly session: AuthSession;
|
|
25
24
|
readonly user: Observable<any | null>;
|
|
26
25
|
private _refreshHandler;
|
|
27
|
-
constructor(
|
|
26
|
+
constructor(_storage: Storage, _injector: Injector, _platform: Platform, _httpClient: HttpClient, _config?: AuthConfig, _state?: TransferState, _httpConfig?: HttpConfig, _handler?: AuthRedirectHandler);
|
|
28
27
|
initialize(): () => Promise<void>;
|
|
29
28
|
me<T = any>(): Observable<T>;
|
|
30
29
|
signIn(provider: AuthProvider, as?: string[]): Promise<AuthSignInResponse>;
|
|
@@ -53,6 +52,6 @@ export declare class Auth {
|
|
|
53
52
|
private autoRefresh;
|
|
54
53
|
private get router();
|
|
55
54
|
private getUrl;
|
|
56
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<Auth, [null, null, null, null,
|
|
55
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Auth, [null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
|
|
57
56
|
static ɵprov: i0.ɵɵInjectableDeclaration<Auth>;
|
|
58
57
|
}
|
|
@@ -79,10 +79,10 @@ export class AuthInterceptor {
|
|
|
79
79
|
// Return null as data.
|
|
80
80
|
return of(null);
|
|
81
81
|
}
|
|
82
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
83
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.Auth }, { token: i2.AuthConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
83
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthInterceptor }); }
|
|
84
84
|
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
86
86
|
type: Injectable
|
|
87
87
|
}], ctorParameters: function () { return [{ type: i1.Auth }, { type: i2.AuthConfig, decorators: [{
|
|
88
88
|
type: Optional
|
|
@@ -17,11 +17,11 @@ export class AuthModule {
|
|
|
17
17
|
]
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
21
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.
|
|
22
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
21
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: AuthModule, declarations: [BbAuthenticated], imports: [HttpClientModule], exports: [BbAuthenticated] }); }
|
|
22
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthModule, imports: [HttpClientModule] }); }
|
|
23
23
|
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthModule, decorators: [{
|
|
25
25
|
type: NgModule,
|
|
26
26
|
args: [{
|
|
27
27
|
imports: [HttpClientModule],
|
|
@@ -13,10 +13,10 @@ import * as i1 from "@bravobit/bb-foundation/storage";
|
|
|
13
13
|
import * as i2 from "@angular/cdk/platform";
|
|
14
14
|
import * as i3 from "@angular/common/http";
|
|
15
15
|
import * as i4 from "./interfaces/config.interface";
|
|
16
|
-
import * as i5 from "@
|
|
16
|
+
import * as i5 from "@angular/platform-browser";
|
|
17
|
+
import * as i6 from "@bravobit/bb-foundation/http";
|
|
17
18
|
export class Auth {
|
|
18
|
-
constructor(
|
|
19
|
-
this._zone = _zone;
|
|
19
|
+
constructor(_storage, _injector, _platform, _httpClient, _config, _state, _httpConfig, _handler) {
|
|
20
20
|
this._storage = _storage;
|
|
21
21
|
this._injector = _injector;
|
|
22
22
|
this._platform = _platform;
|
|
@@ -224,9 +224,7 @@ export class Auth {
|
|
|
224
224
|
clearTimeout?.(this._refreshHandler);
|
|
225
225
|
this._refreshHandler = null;
|
|
226
226
|
}
|
|
227
|
-
this.
|
|
228
|
-
this._refreshHandler = window?.setTimeout?.(() => this.autoRefresh(), cappedTiming);
|
|
229
|
-
});
|
|
227
|
+
this._refreshHandler = window?.setTimeout?.(() => this.autoRefresh(), cappedTiming);
|
|
230
228
|
}
|
|
231
229
|
catch {
|
|
232
230
|
// Just ignore it.
|
|
@@ -251,16 +249,16 @@ export class Auth {
|
|
|
251
249
|
.filter(item => !!item)
|
|
252
250
|
.join('/');
|
|
253
251
|
}
|
|
254
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
255
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.
|
|
252
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: Auth, deps: [{ token: i1.Storage }, { token: i0.Injector }, { token: i2.Platform }, { token: i3.HttpClient }, { token: i4.AuthConfig, optional: true }, { token: i5.TransferState, optional: true }, { token: i6.HttpConfig, optional: true }, { token: AUTH_REDIRECT_HANDLER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
253
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: Auth }); }
|
|
256
254
|
}
|
|
257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: Auth, decorators: [{
|
|
258
256
|
type: Injectable
|
|
259
|
-
}], ctorParameters: function () { return [{ type:
|
|
257
|
+
}], ctorParameters: function () { return [{ type: i1.Storage }, { type: i0.Injector }, { type: i2.Platform }, { type: i3.HttpClient }, { type: i4.AuthConfig, decorators: [{
|
|
260
258
|
type: Optional
|
|
261
|
-
}] }, { type:
|
|
259
|
+
}] }, { type: i5.TransferState, decorators: [{
|
|
262
260
|
type: Optional
|
|
263
|
-
}] }, { type:
|
|
261
|
+
}] }, { type: i6.HttpConfig, decorators: [{
|
|
264
262
|
type: Optional
|
|
265
263
|
}] }, { type: undefined, decorators: [{
|
|
266
264
|
type: Optional
|
|
@@ -268,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
|
|
|
268
266
|
type: Inject,
|
|
269
267
|
args: [AUTH_REDIRECT_HANDLER]
|
|
270
268
|
}] }]; } });
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBa0MsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBWSxZQUFZLEVBQVUsUUFBUSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQTBCLE1BQU0sc0JBQXNCLENBQUM7QUFHdEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFDLGNBQWMsRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBR3ZDLE1BQU0sT0FBTyxJQUFJO0lBV2IsWUFBb0IsS0FBYSxFQUNiLFFBQWlCLEVBQ2pCLFNBQW1CLEVBQ25CLFNBQW1CLEVBQ25CLFdBQXVCLEVBQ1gsT0FBb0IsRUFDcEIsTUFBc0IsRUFDdEIsV0FBd0IsRUFDTyxRQUE4QjtRQVJ6RSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsZ0JBQVcsR0FBWCxX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UUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FVVEhfUkVESVJFQ1RfSEFORExFUiwgQXV0aENvbmZpZywgQXV0aFJlZGlyZWN0SGFuZGxlcn0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBtYWtlU3RhdGVLZXksIE5nWm9uZSwgT3B0aW9uYWwsIFN0YXRlS2V5fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cENvbnRleHQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0F1dGhQcm92aWRlciwgQXV0aFNpZ25JblJlc3BvbnNlfSBmcm9tICcuL2ludGVyZmFjZXMvcHJvdmlkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7U3RvcmFnZSwgU3RvcmFnZU9wdGlvbn0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vc3RvcmFnZSc7XG5pbXBvcnQge1VTRV9BVVRIT1JJWkFUSU9OfSBmcm9tICcuL3Rva2Vucy91c2UtYXV0aG9yaXphdGlvbi50b2tlbic7XG5pbXBvcnQge0F1dGhWZXJpZnlQcm92aWRlcn0gZnJvbSAnLi9wcm92aWRlcnMvdmVyaWZ5LnByb3ZpZGVyJztcbmltcG9ydCB7QXV0aEVtYWlsUHJvdmlkZXJ9IGZyb20gJy4vcHJvdmlkZXJzL2VtYWlsLnByb3ZpZGVyJztcbmltcG9ydCB7SHR0cENvbmZpZ30gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vaHR0cCc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtUcmFuc2ZlclN0YXRlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXV0aFNlc3Npb259IGZyb20gJy4vYXV0aC5zZXNzaW9uJztcbmltcG9ydCB7bWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aCB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhTdGF0ZUtleTogU3RhdGVLZXk8YW55IHwgbnVsbD4gPSBtYWtlU3RhdGVLZXkoYGJiQXV0aFN0YXRlS2V5YCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfaHR0cEFsaWFzOiBzdHJpbmcgfCBudWxsID0gdGhpcy5faHR0cENvbmZpZz8uZGVmYXVsdEFsaWFzID8/IG51bGw7XG5cbiAgICByZWFkb25seSBzZXNzaW9uOiBBdXRoU2Vzc2lvbjtcbiAgICByZWFkb25seSB1c2VyOiBPYnNlcnZhYmxlPGFueSB8IG51bGw+O1xuXG4gICAgcHJpdmF0ZSBfcmVmcmVzaEhhbmRsZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3N0b3JhZ2U6IFN0b3JhZ2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZz86IEF1dGhDb25maWcsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfc3RhdGU/OiBUcmFuc2ZlclN0YXRlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2h0dHBDb25maWc/OiBIdHRwQ29uZmlnLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVVUSF9SRURJUkVDVF9IQU5ETEVSKSBwcml2YXRlIF9oYW5kbGVyPzogQXV0aFJlZGlyZWN0SGFuZGxlcikge1xuICAgICAgICAvLyBXZSBzZWxlY3QgYSBzdG9yYWdlIHN0cmF0ZWd5IGJhc2VkIG9uIHRoZSBzZXJ2ZXIvYnJvd3Nlci5cbiAgICAgICAgLy8gT25seSBjb29raWVzIENBTiB3b3JrIG9uIHRoZSBzZXJ2ZXIuXG4gICAgICAgIGNvbnN0IHN0b3JhZ2VTdHJhdGVneSA9IHRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlclxuICAgICAgICAgICAgPyB0aGlzLl9zdG9yYWdlLnNlbGVjdChbU3RvcmFnZU9wdGlvbi5Db29raWUsIFN0b3JhZ2VPcHRpb24uTG9jYWxdKVxuICAgICAgICAgICAgOiB0aGlzLl9zdG9yYWdlLmNvb2tpZTtcblxuICAgICAgICAvLyBTdGFydGluZyB0aGUgbmV3IHNlc3Npb24uXG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IG5ldyBBdXRoU2Vzc2lvbih7XG4gICAgICAgICAgICBpZDogdGhpcy5fY29uZmlnPy5hcHBsaWNhdGlvbklkLFxuICAgICAgICAgICAgc3RvcmFnZTogc3RvcmFnZVN0cmF0ZWd5XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVzZXIgPSB0aGlzLnNlc3Npb24udXNlcjtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGFwcCBzaG91bGQgYm9vdHN0cmFwIHRoZSBhdXRoZW50aWNhdGlvbi5cbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJvb3RzdHJhcCA9IHRoaXMuX2NvbmZpZz8uYm9vdHN0cmFwID8/IHRydWU7XG4gICAgICAgICAgICBpZiAoIXNob3VsZEJvb3RzdHJhcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUF1dG9SZWZyZXNoaW5nKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9ubHkgcmV0cmlldmUgZnJvbSB0aGUgc2VydmVyIHdoZW4gd2UgYXJlIGFjdHVhbGx5IGF1dGhlbnRpY2F0ZWQuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2Vzc2lvbi5hdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUga2V5IGZyb20gdGhlIHNlcnZlciBzdGF0ZS5cbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGF0ZSAmJiB0aGlzLl9zdGF0ZT8uaGFzS2V5KHRoaXMuX2F1dGhTdGF0ZUtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fc3RhdGU/LmdldCh0aGlzLl9hdXRoU3RhdGVLZXksIG51bGwpID8/IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5zZXRVc2VyKHVzZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUcnkgdG8gZmV0Y2ggdGhlIHVzZXIgZnJvbSB0aGUgc2VydmVyLlxuICAgICAgICAgICAgY29uc3QgdXNlciQgPSB0aGlzLm1lKCk7XG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odXNlciQsIHtkZWZhdWx0VmFsdWU6IG51bGx9KTtcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBzdGF0ZSBpZiBleGlzdHMuXG4gICAgICAgICAgICBpZiAodGhpcy5fc3RhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZT8uc2V0PGFueT4odGhpcy5fYXV0aFN0YXRlS2V5LCB1c2VyID8/IG51bGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTYXZlIHRoZSB1c2VyIGluIHRoZSBzdG9yYWdlIGFuZCBoYW5kbGUgYXV0byByZWZyZXNoaW5nLlxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uLnNldFVzZXIodXNlcik7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUF1dG9SZWZyZXNoaW5nKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWU8VCA9IGFueT4oKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL21lJyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxUPih1cmwpO1xuICAgIH1cblxuICAgIGFzeW5jIHNpZ25Jbihwcm92aWRlcjogQXV0aFByb3ZpZGVyLCBhcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IHthY2Nlc3NUb2tlbiwgcmVmcmVzaFRva2VuLCB1c2VyLCAuLi5yZXN1bHR9ID0gYXdhaXQgcHJvdmlkZXIuYXV0aGVudGljYXRlKHRoaXMuX2h0dHBDbGllbnQpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSByb2xlIG1hdGNoZXMuXG4gICAgICAgIGNvbnN0IHJvbGUgPSB1c2VyPy5yb2xlID8/IG51bGw7XG4gICAgICAgIGlmIChhcyAmJiAhYXMuaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByb2xlLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgaWYgdGhlIHByb3ZpZGVyIGlzIG9uZSBvZiB0aGUgYXZhaWxhYmxlXG4gICAgICAgIC8vIHByb3ZpZGVycyB0aGVuIHJldHVybiB0aGUgdXNlciBvYmplY3QgYW5kIHRoZSBwcm92aWRlci5cbiAgICAgICAgY29uc3QgYXBpUHJvdmlkZXIgPSByZXN1bHQ/LnByb3ZpZGVyID8/IG51bGw7XG4gICAgICAgIGNvbnN0IGFwaVZlcmlmeVRva2VuID0gcmVzdWx0Py52ZXJpZnlUb2tlbiA/PyBudWxsO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVQcm92aWRlcnMgPSB0aGlzLl9jb25maWc/LnByb3ZpZGVycyA/PyBbJ2VtYWlsJywgJ3NtcycsICd0b3RwJ107XG4gICAgICAgIGlmIChhdmFpbGFibGVQcm92aWRlcnMuaW5jbHVkZXMoYXBpUHJvdmlkZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gPEF1dGhTaWduSW5SZXNwb25zZT57dXNlciwgcHJvdmlkZXI6IGFwaVByb3ZpZGVyLCB2ZXJpZnlUb2tlbjogYXBpVmVyaWZ5VG9rZW59O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSB0b2tlbnMgaW4gc3RvcmFnZS5cbiAgICAgICAgdGhpcy5zZXRUb2tlbnMoYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbik7XG5cbiAgICAgICAgLy8gU2V0IHRoZSB1c2VyIGluIHN0b3JhZ2UuXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5zZXRVc2VyKHVzZXIpO1xuXG4gICAgICAgIC8vIFJldHVybiB0aGUgdXNlci5cbiAgICAgICAgcmV0dXJuIDxBdXRoU2lnbkluUmVzcG9uc2U+e3VzZXJ9O1xuICAgIH1cblxuICAgIGFzeW5jIHNpZ25JbldpdGhFbWFpbChlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBhcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL2xvZ2luJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZ25JbihuZXcgQXV0aEVtYWlsUHJvdmlkZXIoZW1haWwsIHBhc3N3b3JkLCB1cmwpLCBhcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2lnbkluV2l0aFZlcmlmeUNvZGUoY29kZTogc3RyaW5nLCB2ZXJpZnlUb2tlbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL3ZlcmlmeScpO1xuICAgICAgICByZXR1cm4gdGhpcy5zaWduSW4obmV3IEF1dGhWZXJpZnlQcm92aWRlcihjb2RlLCB2ZXJpZnlUb2tlbiwgdXJsKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVzZW5kVmVyaWZ5Q29kZSh2ZXJpZnlUb2tlbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL3Jlc2VuZCcpO1xuICAgICAgICBjb25zdCByZXN1bHQkID0gdGhpcy5faHR0cENsaWVudC5wb3N0KHVybCwge1xuICAgICAgICAgICAgdmVyaWZ5X3Rva2VuOiB2ZXJpZnlUb2tlblxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20ocmVzdWx0JCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVnaXN0ZXI8VCA9IGFueT4oZGF0YTogYW55LCBvcHRpb25zPzoge1xuICAgICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgICAgfTtcbiAgICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgICAgIH07XG4gICAgfSkge1xuICAgICAgICAvLyBFeGVjdXRlIEFQSSBjYWxsLlxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFVybCgnYXV0aC9yZWdpc3RlcicpO1xuICAgICAgICBjb25zdCByZXN1bHQkID0gdGhpcy5faHR0cENsaWVudC5wb3N0PHsgdG9rZW46IHN0cmluZywgcmVmcmVzaF90b2tlbjogc3RyaW5nLCB1c2VyOiBhbnkgfT4odXJsLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20ocmVzdWx0JCk7XG5cbiAgICAgICAgLy8gU2V0IHRoZSB0b2tlbnMgaW4gc3RvcmFnZS5cbiAgICAgICAgdGhpcy5zZXRUb2tlbnMocmVzdWx0Py50b2tlbiwgcmVzdWx0Py5yZWZyZXNoX3Rva2VuKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHVzZXIgaW4gc3RvcmFnZS5cbiAgICAgICAgY29uc3QgdXNlciA9IHJlc3VsdD8udXNlcjtcbiAgICAgICAgdGhpcy5zZXNzaW9uLnNldFVzZXIodXNlcik7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSB1c2VyLlxuICAgICAgICByZXR1cm4gPFQ+dXNlcjtcbiAgICB9XG5cbiAgICBsb2dvdXQoKSB7XG4gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSByZWZyZXNoIHRva2VuIGp1c3QgY2xlYXIgdGhlIHNlc3Npb24uXG4gICAgICAgIC8vIE5vdGU6IFdlIGRvIHRoaXMgYmVjYXVzZSBlbHNlIHdlIHRyeSB0byBpbnZhbGlkYXRlXG4gICAgICAgIC8vIGFuIFwidW5kZWZpbmVkXCIgcmVmcmVzaCB0b2tlbi5cbiAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5zZXNzaW9uLnJlZnJlc2hUb2tlbjtcbiAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uY2xlYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGRvIGhhdmUgYSByZWZyZXNoIHRva2VuLCBzbyB0cnkgdG9cbiAgICAgICAgLy8gaW52YWxpZGF0ZSBpdCBpbiB0aGUgYmFja2VuZC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL2xvZ291dCcpO1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyTmFtZSA9IHRoaXMuX2NvbmZpZz8uaHR0cD8uaGVhZGVyID8/ICdBdXRob3JpemF0aW9uJztcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmFibGUkID0gdGhpcy5faHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1toZWFkZXJOYW1lXTogcmVmcmVzaFRva2VufVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmaXJzdFZhbHVlRnJvbShvYnNlcnZhYmxlJCkudGhlbihfID0+IF8pLmNhdGNoKF8gPT4gXyk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gRG8gbm90aGluZyBiZWNhdXNlIHRoZSB0b2tlbnMgd2lsbCBiZSBkZWxldGVkIGFueXdheXMgZnJvbSB0aGUgc2Vzc2lvbi5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlbGV0ZSB0aGUgdG9rZW5zIGZyb20gdGhlIHNlc3Npb24uXG4gICAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uY2xlYXIoKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICAvLyBJZiB0aGUgcmVmcmVzaCB0b2tlbiBkb2VzXG4gICAgICAgIC8vIG5vdCBleGlzdCBqdXN0IHJldHVybiBhbiBvYnNlcnZhYmxlIG9mIG51bGwuXG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMuc2Vzc2lvbi5yZWZyZXNoVG9rZW47XG4gICAgICAgIGlmICghcmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQZXJmb3JtIHRoZSByZWZyZXNoIGNhbGwuXG4gICAgICAgIGNvbnN0IGhlYWRlck5hbWUgPSB0aGlzLl9jb25maWc/Lmh0dHA/LmhlYWRlciA/PyAnQXV0aG9yaXphdGlvbic7XG4gICAgICAgIGNvbnN0IHNjaGVtZSA9IHRoaXMuX2NvbmZpZz8uaHR0cD8uc2NoZW1lID8/ICdCZWFyZXInO1xuXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL3JlZnJlc2gnKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpLnNldChVU0VfQVVUSE9SSVpBVElPTiwgZmFsc2UpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDx7IHRva2VuOiBzdHJpbmcsIHJlZnJlc2hfdG9rZW46IHN0cmluZyB9Pih1cmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtbaGVhZGVyTmFtZV06IGAke3NjaGVtZX0gJHtyZWZyZXNoVG9rZW59YH0sXG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHt0b2tlbiwgcmVmcmVzaF90b2tlbn0pID0+IHRoaXMuc2V0VG9rZW5zKHRva2VuLCByZWZyZXNoX3Rva2VuKSksXG4gICAgICAgICAgICBtYXAoKHt0b2tlbn0pID0+IHRva2VuKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFzeW5jIHJlcXVlc3RQYXNzd29yZChlbWFpbDogc3RyaW5nLCBleHRyYVBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL3Jlc2V0Jyk7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGUkID0gdGhpcy5faHR0cENsaWVudC5wb3N0KHVybCwgey4uLmV4dHJhUGFyYW1zLCBlbWFpbH0pO1xuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20ob2JzZXJ2YWJsZSQpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlc2V0UGFzc3dvcmQodG9rZW46IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZywgZXh0cmFQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fSkge1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFVybCgnYXV0aC9yZXNldC1wYXNzd29yZCcpO1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlJCA9IHRoaXMuX2h0dHBDbGllbnQucG9zdCh1cmwsIHsuLi5leHRyYVBhcmFtcywgdG9rZW4sIHBhc3N3b3JkOiBuZXdQYXNzd29yZH0pO1xuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20ob2JzZXJ2YWJsZSQpO1xuICAgIH1cblxuICAgIGNsZWFyQW5kUmVkaXJlY3QoKSB7XG4gICAgICAgIC8vIDEuIERlbGV0ZSB0aGUgdG9rZW5zIGZyb20gdGhlIHNlc3Npb24uXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5jbGVhcigpO1xuXG4gICAgICAgIGlmICh0aGlzLl9oYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5faGFuZGxlci5vbkZhaWxlZEF1dGhlbnRpY2F0ZWQoKTtcbiAgICAgICAgICAgIGlmICghdXJsVHJlZSB8fCB1cmxUcmVlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFRyZWUpLnRoZW4oXyA9PiBfKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIENvbXBvc2UgdGhlIHJvdXRlIHVybC5cbiAgICAgICAgY29uc3QgcmVkaXJlY3RVcmwgPSB0aGlzLl9jb25maWc/LnJlZGlyZWN0cy51bmF1dGhlbnRpY2F0ZWQgPz8gbnVsbDtcblxuICAgICAgICAvLyAzLiBSb3V0ZSBiYWNrIGlmIHRoZSB1c2VyIHByb3ZpZGVkIGEgcmVkaXJlY3QgdXJsLlxuICAgICAgICBpZiAodGhpcy5yb3V0ZXIgJiYgcmVkaXJlY3RVcmwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmRzID0gQXJyYXkuaXNBcnJheShyZWRpcmVjdFVybCkgPyByZWRpcmVjdFVybCA6IFtyZWRpcmVjdFVybF07XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcykudGhlbihfID0+IF8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb2tlbnMoYWNjZXNzVG9rZW46IHN0cmluZywgcmVmcmVzaFRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gU2V0IHRoZSB0b2tlbnMgaW4gb3VyIHNlc3Npb24uXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5zZXRUb2tlbnMoYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbik7XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgdGhlIGF1dG8gcmVmcmVzaCBvZiB0aGUgcmVmcmVzaCB0b2tlbi5cbiAgICAgICAgdGhpcy5oYW5kbGVBdXRvUmVmcmVzaGluZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQXV0b1JlZnJlc2hpbmcoKSB7XG4gICAgICAgIGNvbnN0IHNob3VsZEF1dG9SZWZyZXNoID0gdGhpcy5fY29uZmlnPy5hdXRvUmVmcmVzaCA/PyBmYWxzZTtcbiAgICAgICAgaWYgKCFzaG91bGRBdXRvUmVmcmVzaCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gdGhpcy5zZXNzaW9uLnJlZnJlc2hUb2tlblBheWxvYWQ/LmV4cGlyZXNBdCA/PyBudWxsO1xuICAgICAgICBpZiAoZXhwaXJlc0F0ID09PSBudWxsIHx8ICF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyA9IGV4cGlyZXNBdC5nZXRUaW1lKCkgLSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCBvZmZzZXRJbk1pbGxpc2Vjb25kcyA9IDEwXzAwMDsgLy8gMTAgc2Vjb25kcy5cblxuICAgICAgICAvLyBXZSB3YW50IHRvIHN0YXJ0IHRoZSByZWZyZXNoIDEwIHNlY29uZHMgYmVmb3JlIGl0IGV4cGlyZXMuXG4gICAgICAgIGNvbnN0IGFjdHVhbFRpbWluZyA9IGRpZmZlcmVuY2VJbk1pbGxpc2Vjb25kcyAtIG9mZnNldEluTWlsbGlzZWNvbmRzO1xuICAgICAgICBpZiAoYWN0dWFsVGltaW5nIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gY2FwIHRoZSB0aW1pbmdzIGJlY2F1c2UgaWZcbiAgICAgICAgLy8gd2UgZ2V0IGxhcmdlIG51bWJlcnMgaXQgbWlnaHQgY2F1c2UgdW53YW50ZWQgcmVzdWx0cy5cbiAgICAgICAgY29uc3QgbWF4VGltaW5nID0gMTAwMCAqIDYwICogNjAgKiAyNDsgLy8gMjQgaG91cnMuXG4gICAgICAgIGNvbnN0IGNhcHBlZFRpbWluZyA9IE1hdGgubWF4KDEsIE1hdGgubWluKGFjdHVhbFRpbWluZywgbWF4VGltaW5nKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcmVmcmVzaEhhbmRsZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQ/Lih0aGlzLl9yZWZyZXNoSGFuZGxlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEhhbmRsZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEhhbmRsZXIgPSB3aW5kb3c/LnNldFRpbWVvdXQ/LigoKSA9PiB0aGlzLmF1dG9SZWZyZXNoKCksIGNhcHBlZFRpbWluZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBKdXN0IGlnbm9yZSBpdC5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgYXV0b1JlZnJlc2goKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgdG8gd2FpdCBmb3IgaXQgdG8gcmVmcmVzaC5cbiAgICAgICAgICAgIGNvbnN0IHJlZnJlc2gkID0gdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShyZWZyZXNoJCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgcmVmcmVzaGluZywgd2UgbmVlZCB0byBjbGVhci5cbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbmRSZWRpcmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgcm91dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVcmwoZW5kcG9pbnQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gW3RoaXMuX2h0dHBBbGlhcywgZW5kcG9pbnRdXG4gICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gISFpdGVtKVxuICAgICAgICAgICAgLmpvaW4oJy8nKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9hdXRoL3NyYy9saWIvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBa0MsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBWSxZQUFZLEVBQUUsUUFBUSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBYSxXQUFXLEVBQTBCLE1BQU0sc0JBQXNCLENBQUM7QUFHdEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHN0QsT0FBTyxFQUFDLGNBQWMsRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQUd2QyxNQUFNLE9BQU8sSUFBSTtJQVdiLFlBQW9CLFFBQWlCLEVBQ2pCLFNBQW1CLEVBQ25CLFNBQW1CLEVBQ25CLFdBQXVCLEVBQ1gsT0FBb0IsRUFDcEIsTUFBc0IsRUFDdEIsV0FBd0IsRUFDTyxRQUE4QjtRQVB6RSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUNYLFlBQU8sR0FBUCxPQUFPLENBQWE7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LCBBdXRoQ29uZmlnLCBBdXRoUmVkaXJlY3RIYW5kbGVyfSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIG1ha2VTdGF0ZUtleSwgT3B0aW9uYWwsIFN0YXRlS2V5fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cENvbnRleHQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0F1dGhQcm92aWRlciwgQXV0aFNpZ25JblJlc3BvbnNlfSBmcm9tICcuL2ludGVyZmFjZXMvcHJvdmlkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7U3RvcmFnZSwgU3RvcmFnZU9wdGlvbn0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vc3RvcmFnZSc7XG5pbXBvcnQge1VTRV9BVVRIT1JJWkFUSU9OfSBmcm9tICcuL3Rva2Vucy91c2UtYXV0aG9yaXphdGlvbi50b2tlbic7XG5pbXBvcnQge0F1dGhWZXJpZnlQcm92aWRlcn0gZnJvbSAnLi9wcm92aWRlcnMvdmVyaWZ5LnByb3ZpZGVyJztcbmltcG9ydCB7QXV0aEVtYWlsUHJvdmlkZXJ9IGZyb20gJy4vcHJvdmlkZXJzL2VtYWlsLnByb3ZpZGVyJztcbmltcG9ydCB7VHJhbnNmZXJTdGF0ZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0h0dHBDb25maWd9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2h0dHAnO1xuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7QXV0aFNlc3Npb259IGZyb20gJy4vYXV0aC5zZXNzaW9uJztcbmltcG9ydCB7bWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aCB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhTdGF0ZUtleTogU3RhdGVLZXk8YW55IHwgbnVsbD4gPSBtYWtlU3RhdGVLZXkoYGJiQXV0aFN0YXRlS2V5YCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfaHR0cEFsaWFzOiBzdHJpbmcgfCBudWxsID0gdGhpcy5faHR0cENvbmZpZz8uZGVmYXVsdEFsaWFzID8/IG51bGw7XG5cbiAgICByZWFkb25seSBzZXNzaW9uOiBBdXRoU2Vzc2lvbjtcbiAgICByZWFkb25seSB1c2VyOiBPYnNlcnZhYmxlPGFueSB8IG51bGw+O1xuXG4gICAgcHJpdmF0ZSBfcmVmcmVzaEhhbmRsZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RvcmFnZTogU3RvcmFnZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29uZmlnPzogQXV0aENvbmZpZyxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9zdGF0ZT86IFRyYW5zZmVyU3RhdGUsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfaHR0cENvbmZpZz86IEh0dHBDb25maWcsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChBVVRIX1JFRElSRUNUX0hBTkRMRVIpIHByaXZhdGUgX2hhbmRsZXI/OiBBdXRoUmVkaXJlY3RIYW5kbGVyKSB7XG4gICAgICAgIC8vIFdlIHNlbGVjdCBhIHN0b3JhZ2Ugc3RyYXRlZ3kgYmFzZWQgb24gdGhlIHNlcnZlci9icm93c2VyLlxuICAgICAgICAvLyBPbmx5IGNvb2tpZXMgQ0FOIHdvcmsgb24gdGhlIHNlcnZlci5cbiAgICAgICAgY29uc3Qgc3RvcmFnZVN0cmF0ZWd5ID0gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyXG4gICAgICAgICAgICA/IHRoaXMuX3N0b3JhZ2Uuc2VsZWN0KFtTdG9yYWdlT3B0aW9uLkNvb2tpZSwgU3RvcmFnZU9wdGlvbi5Mb2NhbF0pXG4gICAgICAgICAgICA6IHRoaXMuX3N0b3JhZ2UuY29va2llO1xuXG4gICAgICAgIC8vIFN0YXJ0aW5nIHRoZSBuZXcgc2Vzc2lvbi5cbiAgICAgICAgdGhpcy5zZXNzaW9uID0gbmV3IEF1dGhTZXNzaW9uKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLl9jb25maWc/LmFwcGxpY2F0aW9uSWQsXG4gICAgICAgICAgICBzdG9yYWdlOiBzdG9yYWdlU3RyYXRlZ3lcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXNlciA9IHRoaXMuc2Vzc2lvbi51c2VyO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgYXBwIHNob3VsZCBib290c3RyYXAgdGhlIGF1dGhlbnRpY2F0aW9uLlxuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQm9vdHN0cmFwID0gdGhpcy5fY29uZmlnPy5ib290c3RyYXAgPz8gdHJ1ZTtcbiAgICAgICAgICAgIGlmICghc2hvdWxkQm9vdHN0cmFwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQXV0b1JlZnJlc2hpbmcoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gT25seSByZXRyaWV2ZSBmcm9tIHRoZSBzZXJ2ZXIgd2hlbiB3ZSBhcmUgYWN0dWFsbHkgYXV0aGVudGljYXRlZC5cbiAgICAgICAgICAgIGlmICghdGhpcy5zZXNzaW9uLmF1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBrZXkgZnJvbSB0aGUgc2VydmVyIHN0YXRlLlxuICAgICAgICAgICAgaWYgKHRoaXMuX3N0YXRlICYmIHRoaXMuX3N0YXRlPy5oYXNLZXkodGhpcy5fYXV0aFN0YXRlS2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl9zdGF0ZT8uZ2V0KHRoaXMuX2F1dGhTdGF0ZUtleSwgbnVsbCkgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLnNldFVzZXIodXNlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRyeSB0byBmZXRjaCB0aGUgdXNlciBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAgICAgICAgICBjb25zdCB1c2VyJCA9IHRoaXMubWUoKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh1c2VyJCwge2RlZmF1bHRWYWx1ZTogbnVsbH0pO1xuXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHN0YXRlIGlmIGV4aXN0cy5cbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlPy5zZXQ8YW55Pih0aGlzLl9hdXRoU3RhdGVLZXksIHVzZXIgPz8gbnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNhdmUgdGhlIHVzZXIgaW4gdGhlIHN0b3JhZ2UgYW5kIGhhbmRsZSBhdXRvIHJlZnJlc2hpbmcuXG4gICAgICAgICAgICB0aGlzLnNlc3Npb24uc2V0VXNlcih1c2VyKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQXV0b1JlZnJlc2hpbmcoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtZTxUID0gYW55PigpIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVcmwoJ2F1dGgvbWUnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFQ+KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2lnbkluKHByb3ZpZGVyOiBBdXRoUHJvdmlkZXIsIGFzPzogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3Qge2FjY2Vzc1Rva2VuLCByZWZyZXNoVG9rZW4sIHVzZXIsIC4uLnJlc3VsdH0gPSBhd2FpdCBwcm92aWRlci5hdXRoZW50aWNhdGUodGhpcy5faHR0cENsaWVudCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJvbGUgbWF0Y2hlcy5cbiAgICAgICAgY29uc3Qgcm9sZSA9IHVzZXI/LnJvbGUgPz8gbnVsbDtcbiAgICAgICAgaWYgKGFzICYmICFhcy5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJvbGUuJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGF0ZSBpZiB0aGUgcHJvdmlkZXIgaXMgb25lIG9mIHRoZSBhdmFpbGFibGVcbiAgICAgICAgLy8gcHJvdmlkZXJzIHRoZW4gcmV0dXJuIHRoZSB1c2VyIG9iamVjdCBhbmQgdGhlIHByb3ZpZGVyLlxuICAgICAgICBjb25zdCBhcGlQcm92aWRlciA9IHJlc3VsdD8ucHJvdmlkZXIgPz8gbnVsbDtcbiAgICAgICAgY29uc3QgYXBpVmVyaWZ5VG9rZW4gPSByZXN1bHQ/LnZlcmlmeVRva2VuID8/IG51bGw7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVByb3ZpZGVycyA9IHRoaXMuX2NvbmZpZz8ucHJvdmlkZXJzID8/IFsnZW1haWwnLCAnc21zJywgJ3RvdHAnXTtcbiAgICAgICAgaWYgKGF2YWlsYWJsZVByb3ZpZGVycy5pbmNsdWRlcyhhcGlQcm92aWRlcikpIHtcbiAgICAgICAgICAgIHJldHVybiA8QXV0aFNpZ25JblJlc3BvbnNlPnt1c2VyLCBwcm92aWRlcjogYXBpUHJvdmlkZXIsIHZlcmlmeVRva2VuOiBhcGlWZXJpZnlUb2tlbn07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGhlIHRva2VucyBpbiBzdG9yYWdlLlxuICAgICAgICB0aGlzLnNldFRva2VucyhhY2Nlc3NUb2tlbiwgcmVmcmVzaFRva2VuKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHVzZXIgaW4gc3RvcmFnZS5cbiAgICAgICAgdGhpcy5zZXNzaW9uLnNldFVzZXIodXNlcik7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSB1c2VyLlxuICAgICAgICByZXR1cm4gPEF1dGhTaWduSW5SZXNwb25zZT57dXNlcn07XG4gICAgfVxuXG4gICAgYXN5bmMgc2lnbkluV2l0aEVtYWlsKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGFzPzogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVcmwoJ2F1dGgvbG9naW4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2lnbkluKG5ldyBBdXRoRW1haWxQcm92aWRlcihlbWFpbCwgcGFzc3dvcmQsIHVybCksIGFzKTtcbiAgICB9XG5cbiAgICBhc3luYyBzaWduSW5XaXRoVmVyaWZ5Q29kZShjb2RlOiBzdHJpbmcsIHZlcmlmeVRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVcmwoJ2F1dGgvdmVyaWZ5Jyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZ25JbihuZXcgQXV0aFZlcmlmeVByb3ZpZGVyKGNvZGUsIHZlcmlmeVRva2VuLCB1cmwpKTtcbiAgICB9XG5cbiAgICBhc3luYyByZXNlbmRWZXJpZnlDb2RlKHZlcmlmeVRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVcmwoJ2F1dGgvcmVzZW5kJyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSB0aGlzLl9odHRwQ2xpZW50LnBvc3QodXJsLCB7XG4gICAgICAgICAgICB2ZXJpZnlfdG9rZW46IHZlcmlmeVRva2VuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShyZXN1bHQkKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWdpc3RlcjxUID0gYW55PihkYXRhOiBhbnksIG9wdGlvbnM/OiB7XG4gICAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgICB9O1xuICAgICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICAgICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbiAgICAgICAgfTtcbiAgICB9KSB7XG4gICAgICAgIC8vIEV4ZWN1dGUgQVBJIGNhbGwuXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL3JlZ2lzdGVyJyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSB0aGlzLl9odHRwQ2xpZW50LnBvc3Q8eyB0b2tlbjogc3RyaW5nLCByZWZyZXNoX3Rva2VuOiBzdHJpbmcsIHVzZXI6IGFueSB9Pih1cmwsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShyZXN1bHQkKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHRva2VucyBpbiBzdG9yYWdlLlxuICAgICAgICB0aGlzLnNldFRva2VucyhyZXN1bHQ/LnRva2VuLCByZXN1bHQ/LnJlZnJlc2hfdG9rZW4pO1xuXG4gICAgICAgIC8vIFNldCB0aGUgdXNlciBpbiBzdG9yYWdlLlxuICAgICAgICBjb25zdCB1c2VyID0gcmVzdWx0Py51c2VyO1xuICAgICAgICB0aGlzLnNlc3Npb24uc2V0VXNlcih1c2VyKTtcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIHVzZXIuXG4gICAgICAgIHJldHVybiA8VD51c2VyO1xuICAgIH1cblxuICAgIGxvZ291dCgpIHtcbiAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHJlZnJlc2ggdG9rZW4ganVzdCBjbGVhciB0aGUgc2Vzc2lvbi5cbiAgICAgICAgLy8gTm90ZTogV2UgZG8gdGhpcyBiZWNhdXNlIGVsc2Ugd2UgdHJ5IHRvIGludmFsaWRhdGVcbiAgICAgICAgLy8gYW4gXCJ1bmRlZmluZWRcIiByZWZyZXNoIHRva2VuLlxuICAgICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0aGlzLnNlc3Npb24ucmVmcmVzaFRva2VuO1xuICAgICAgICBpZiAoIXJlZnJlc2hUb2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5jbGVhcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgZG8gaGF2ZSBhIHJlZnJlc2ggdG9rZW4sIHNvIHRyeSB0b1xuICAgICAgICAvLyBpbnZhbGlkYXRlIGl0IGluIHRoZSBiYWNrZW5kLlxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVcmwoJ2F1dGgvbG9nb3V0Jyk7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJOYW1lID0gdGhpcy5fY29uZmlnPy5odHRwPy5oZWFkZXIgPz8gJ0F1dGhvcml6YXRpb24nO1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSQgPSB0aGlzLl9odHRwQ2xpZW50LmdldCh1cmwsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7W2hlYWRlck5hbWVdOiByZWZyZXNoVG9rZW59XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpcnN0VmFsdWVGcm9tKG9ic2VydmFibGUkKS50aGVuKF8gPT4gXykuY2F0Y2goXyA9PiBfKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nIGJlY2F1c2UgdGhlIHRva2VucyB3aWxsIGJlIGRlbGV0ZWQgYW55d2F5cyBmcm9tIHRoZSBzZXNzaW9uLlxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGVsZXRlIHRoZSB0b2tlbnMgZnJvbSB0aGUgc2Vzc2lvbi5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5jbGVhcigpO1xuICAgIH1cblxuICAgIHJlZnJlc2goKSB7XG4gICAgICAgIC8vIElmIHRoZSByZWZyZXNoIHRva2VuIGRvZXNcbiAgICAgICAgLy8gbm90IGV4aXN0IGp1c3QgcmV0dXJuIGFuIG9ic2VydmFibGUgb2YgbnVsbC5cbiAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5zZXNzaW9uLnJlZnJlc2hUb2tlbjtcbiAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBlcmZvcm0gdGhlIHJlZnJlc2ggY2FsbC5cbiAgICAgICAgY29uc3QgaGVhZGVyTmFtZSA9IHRoaXMuX2NvbmZpZz8uaHR0cD8uaGVhZGVyID8/ICdBdXRob3JpemF0aW9uJztcbiAgICAgICAgY29uc3Qgc2NoZW1lID0gdGhpcy5fY29uZmlnPy5odHRwPy5zY2hlbWUgPz8gJ0JlYXJlcic7XG5cbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVcmwoJ2F1dGgvcmVmcmVzaCcpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCkuc2V0KFVTRV9BVVRIT1JJWkFUSU9OLCBmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PHsgdG9rZW46IHN0cmluZywgcmVmcmVzaF90b2tlbjogc3RyaW5nIH0+KHVybCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1toZWFkZXJOYW1lXTogYCR7c2NoZW1lfSAke3JlZnJlc2hUb2tlbn1gfSxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHRcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoe3Rva2VuLCByZWZyZXNoX3Rva2VufSkgPT4gdGhpcy5zZXRUb2tlbnModG9rZW4sIHJlZnJlc2hfdG9rZW4pKSxcbiAgICAgICAgICAgIG1hcCgoe3Rva2VufSkgPT4gdG9rZW4pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVxdWVzdFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIGV4dHJhUGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30pIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVcmwoJ2F1dGgvcmVzZXQnKTtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSQgPSB0aGlzLl9odHRwQ2xpZW50LnBvc3QodXJsLCB7Li4uZXh0cmFQYXJhbXMsIGVtYWlsfSk7XG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShvYnNlcnZhYmxlJCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVzZXRQYXNzd29yZCh0b2tlbjogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nLCBleHRyYVBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsKCdhdXRoL3Jlc2V0LXBhc3N3b3JkJyk7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGUkID0gdGhpcy5faHR0cENsaWVudC5wb3N0KHVybCwgey4uLmV4dHJhUGFyYW1zLCB0b2tlbiwgcGFzc3dvcmQ6IG5ld1Bhc3N3b3JkfSk7XG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShvYnNlcnZhYmxlJCk7XG4gICAgfVxuXG4gICAgY2xlYXJBbmRSZWRpcmVjdCgpIHtcbiAgICAgICAgLy8gMS4gRGVsZXRlIHRoZSB0b2tlbnMgZnJvbSB0aGUgc2Vzc2lvbi5cbiAgICAgICAgdGhpcy5zZXNzaW9uLmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2hhbmRsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLl9oYW5kbGVyLm9uRmFpbGVkQXV0aGVudGljYXRlZCgpO1xuICAgICAgICAgICAgaWYgKCF1cmxUcmVlIHx8IHVybFRyZWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsVHJlZSkudGhlbihfID0+IF8pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQ29tcG9zZSB0aGUgcm91dGUgdXJsLlxuICAgICAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuX2NvbmZpZz8ucmVkaXJlY3RzLnVuYXV0aGVudGljYXRlZCA/PyBudWxsO1xuXG4gICAgICAgIC8vIDMuIFJvdXRlIGJhY2sgaWYgdGhlIHVzZXIgcHJvdmlkZWQgYSByZWRpcmVjdCB1cmwuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlciAmJiByZWRpcmVjdFVybCkge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZHMgPSBBcnJheS5pc0FycmF5KHJlZGlyZWN0VXJsKSA/IHJlZGlyZWN0VXJsIDogW3JlZGlyZWN0VXJsXTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKGNvbW1hbmRzKS50aGVuKF8gPT4gXyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRva2VucyhhY2Nlc3NUb2tlbjogc3RyaW5nLCByZWZyZXNoVG9rZW46IHN0cmluZykge1xuICAgICAgICAvLyBTZXQgdGhlIHRva2VucyBpbiBvdXIgc2Vzc2lvbi5cbiAgICAgICAgdGhpcy5zZXNzaW9uLnNldFRva2VucyhhY2Nlc3NUb2tlbiwgcmVmcmVzaFRva2VuKTtcblxuICAgICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgYXV0byByZWZyZXNoIG9mIHRoZSByZWZyZXNoIHRva2VuLlxuICAgICAgICB0aGlzLmhhbmRsZUF1dG9SZWZyZXNoaW5nKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBdXRvUmVmcmVzaGluZygpIHtcbiAgICAgICAgY29uc3Qgc2hvdWxkQXV0b1JlZnJlc2ggPSB0aGlzLl9jb25maWc/LmF1dG9SZWZyZXNoID8/IGZhbHNlO1xuICAgICAgICBpZiAoIXNob3VsZEF1dG9SZWZyZXNoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSB0aGlzLnNlc3Npb24ucmVmcmVzaFRva2VuUGF5bG9hZD8uZXhwaXJlc0F0ID8/IG51bGw7XG4gICAgICAgIGlmIChleHBpcmVzQXQgPT09IG51bGwgfHwgIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzID0gZXhwaXJlc0F0LmdldFRpbWUoKSAtIERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IG9mZnNldEluTWlsbGlzZWNvbmRzID0gMTBfMDAwOyAvLyAxMCBzZWNvbmRzLlxuXG4gICAgICAgIC8vIFdlIHdhbnQgdG8gc3RhcnQgdGhlIHJlZnJlc2ggMTAgc2Vjb25kcyBiZWZvcmUgaXQgZXhwaXJlcy5cbiAgICAgICAgY29uc3QgYWN0dWFsVGltaW5nID0gZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIC0gb2Zmc2V0SW5NaWxsaXNlY29uZHM7XG4gICAgICAgIGlmIChhY3R1YWxUaW1pbmcgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBjYXAgdGhlIHRpbWluZ3MgYmVjYXVzZSBpZlxuICAgICAgICAvLyB3ZSBnZXQgbGFyZ2UgbnVtYmVycyBpdCBtaWdodCBjYXVzZSB1bndhbnRlZCByZXN1bHRzLlxuICAgICAgICBjb25zdCBtYXhUaW1pbmcgPSAxMDAwICogNjAgKiA2MCAqIDI0OyAvLyAyNCBob3Vycy5cbiAgICAgICAgY29uc3QgY2FwcGVkVGltaW5nID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oYWN0dWFsVGltaW5nLCBtYXhUaW1pbmcpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZWZyZXNoSGFuZGxlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dD8uKHRoaXMuX3JlZnJlc2hIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGFuZGxlciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGFuZGxlciA9IHdpbmRvdz8uc2V0VGltZW91dD8uKCgpID0+IHRoaXMuYXV0b1JlZnJlc2goKSwgY2FwcGVkVGltaW5nKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBKdXN0IGlnbm9yZSBpdC5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgYXV0b1JlZnJlc2goKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgdG8gd2FpdCBmb3IgaXQgdG8gcmVmcmVzaC5cbiAgICAgICAgICAgIGNvbnN0IHJlZnJlc2gkID0gdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShyZWZyZXNoJCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgcmVmcmVzaGluZywgd2UgbmVlZCB0byBjbGVhci5cbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbmRSZWRpcmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgcm91dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVcmwoZW5kcG9pbnQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gW3RoaXMuX2h0dHBBbGlhcywgZW5kcG9pbnRdXG4gICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gISFpdGVtKVxuICAgICAgICAgICAgLmpvaW4oJy8nKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -28,10 +28,10 @@ export class BbAuthenticated extends AbstractAuthDirective {
|
|
|
28
28
|
ngOnDestroy() {
|
|
29
29
|
this._subscription?.unsubscribe();
|
|
30
30
|
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
32
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAuthenticated, deps: [{ token: i1.Auth }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
32
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BbAuthenticated, selector: "[bbAuthenticated]", inputs: { bbAuthenticatedElse: "bbAuthenticatedElse" }, usesInheritance: true, ngImport: i0 }); }
|
|
33
33
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAuthenticated, decorators: [{
|
|
35
35
|
type: Directive,
|
|
36
36
|
args: [{
|
|
37
37
|
selector: '[bbAuthenticated]'
|
|
@@ -34,10 +34,10 @@ export class BbAnonymousGuard {
|
|
|
34
34
|
canActivateChild(childRoute, state) {
|
|
35
35
|
return this.canActivate(childRoute, state);
|
|
36
36
|
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
38
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAnonymousGuard, deps: [{ token: i1.Auth }, { token: i2.Router }, { token: i3.AuthConfig, optional: true }, { token: AUTH_REDIRECT_HANDLER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAnonymousGuard, providedIn: 'root' }); }
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAnonymousGuard, decorators: [{
|
|
41
41
|
type: Injectable,
|
|
42
42
|
args: [{
|
|
43
43
|
providedIn: 'root'
|
|
@@ -37,10 +37,10 @@ export class BbAuthenticatedGuard {
|
|
|
37
37
|
canActivateChild(childRoute, state) {
|
|
38
38
|
return this.canActivate(childRoute, state);
|
|
39
39
|
}
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
41
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAuthenticatedGuard, deps: [{ token: i1.Auth }, { token: i2.Router }, { token: i3.AuthConfig, optional: true }, { token: AUTH_REDIRECT_HANDLER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAuthenticatedGuard, providedIn: 'root' }); }
|
|
42
42
|
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbAuthenticatedGuard, decorators: [{
|
|
44
44
|
type: Injectable,
|
|
45
45
|
args: [{
|
|
46
46
|
providedIn: 'root'
|
|
@@ -5,8 +5,8 @@ import { CommonModule } from '@angular/common';
|
|
|
5
5
|
import { NgModule } from '@angular/core';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class CollectionsModule {
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
9
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CollectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: CollectionsModule, declarations: [
|
|
10
10
|
// Components.
|
|
11
11
|
BbCollectionsViewer,
|
|
12
12
|
BbCollectionsPager,
|
|
@@ -23,9 +23,9 @@ export class CollectionsModule {
|
|
|
23
23
|
BbCollectionsEmpty,
|
|
24
24
|
BbCollectionsError,
|
|
25
25
|
BbCollectionsInitial] }); }
|
|
26
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.
|
|
26
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CollectionsModule, imports: [CommonModule] }); }
|
|
27
27
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CollectionsModule, decorators: [{
|
|
29
29
|
type: NgModule,
|
|
30
30
|
args: [{
|
|
31
31
|
imports: [CommonModule],
|
package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs
CHANGED
|
@@ -109,10 +109,10 @@ export class BbCollectionsPager {
|
|
|
109
109
|
.filter(page => page > 0 && page <= totalPages)
|
|
110
110
|
.map(page => ({ page, active: pageNumber === page }));
|
|
111
111
|
}
|
|
112
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsPager, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BbCollectionsPager, selector: "bb-collections-pager", inputs: { label: "label", collection: "collection" }, host: { classAttribute: "bb-collections-pager" }, ngImport: i0, template: "<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;-webkit-appearance:none;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
114
114
|
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsPager, decorators: [{
|
|
116
116
|
type: Component,
|
|
117
117
|
args: [{ selector: 'bb-collections-pager', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-pager' }, preserveWhitespaces: false, template: "<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n ←\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n →\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;-webkit-appearance:none;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"] }]
|
|
118
118
|
}], propDecorators: { label: [{
|
package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs
CHANGED
|
@@ -7,10 +7,10 @@ export class BbCollectionsViewer {
|
|
|
7
7
|
// Inputs.
|
|
8
8
|
this.collection = null;
|
|
9
9
|
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsViewer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BbCollectionsViewer, selector: "[bb-collections-viewer]", inputs: { collection: "collection" }, host: { classAttribute: "bb-collections-viewer" }, queries: [{ propertyName: "dataTemplate", first: true, predicate: BbCollectionsData, descendants: true, read: TemplateRef }, { propertyName: "emptyTemplate", first: true, predicate: BbCollectionsEmpty, descendants: true, read: TemplateRef }, { propertyName: "errorTemplate", first: true, predicate: BbCollectionsError, descendants: true, read: TemplateRef }, { propertyName: "initialTemplate", first: true, predicate: BbCollectionsInitial, descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n </ng-container>\n</ng-container>\n", styles: [".bb-collections-viewer{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsViewer, decorators: [{
|
|
14
14
|
type: Component,
|
|
15
15
|
args: [{ selector: '[bb-collections-viewer]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-viewer' }, preserveWhitespaces: false, template: "<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n </ng-container>\n</ng-container>\n", styles: [".bb-collections-viewer{display:block}\n"] }]
|
|
16
16
|
}], propDecorators: { dataTemplate: [{
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
import { Directive } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class BbCollectionsData {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
5
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsData, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BbCollectionsData, selector: "[bbCollectionsData]", ngImport: i0 }); }
|
|
6
6
|
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsData, decorators: [{
|
|
8
8
|
type: Directive,
|
|
9
9
|
args: [{
|
|
10
10
|
selector: '[bbCollectionsData]'
|
|
11
11
|
}]
|
|
12
12
|
}] });
|
|
13
13
|
export class BbCollectionsEmpty {
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
15
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsEmpty, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
15
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BbCollectionsEmpty, selector: "[bbCollectionsEmpty]", ngImport: i0 }); }
|
|
16
16
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsEmpty, decorators: [{
|
|
18
18
|
type: Directive,
|
|
19
19
|
args: [{
|
|
20
20
|
selector: '[bbCollectionsEmpty]'
|
|
21
21
|
}]
|
|
22
22
|
}] });
|
|
23
23
|
export class BbCollectionsError {
|
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
25
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsError, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BbCollectionsError, selector: "[bbCollectionsError]", ngImport: i0 }); }
|
|
26
26
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsError, decorators: [{
|
|
28
28
|
type: Directive,
|
|
29
29
|
args: [{
|
|
30
30
|
selector: '[bbCollectionsError]'
|
|
31
31
|
}]
|
|
32
32
|
}] });
|
|
33
33
|
export class BbCollectionsInitial {
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
35
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsInitial, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BbCollectionsInitial, selector: "[bbCollectionsInitial]", ngImport: i0 }); }
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbCollectionsInitial, decorators: [{
|
|
38
38
|
type: Directive,
|
|
39
39
|
args: [{
|
|
40
40
|
selector: '[bbCollectionsInitial]'
|
|
@@ -140,12 +140,12 @@ export class BbiCheckbox {
|
|
|
140
140
|
}
|
|
141
141
|
this._renderer.setProperty(element, field, value);
|
|
142
142
|
}
|
|
143
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
144
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.
|
|
143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiCheckbox, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
144
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BbiCheckbox, selector: "bbi-checkbox", inputs: { checked: "checked", disabled: "disabled", grouped: "grouped", indeterminate: "indeterminate", required: "required", hideText: "hideText" }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { properties: { "class.grouped": "grouped", "class.indeterminate": "indeterminate", "class.required": "required" }, classAttribute: "bbi-checkbox" }, providers: [
|
|
145
145
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbiCheckbox), multi: true }
|
|
146
146
|
], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<input #input\n [id]=\"labelId\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"onChangeEvent($event)\"\n (click)=\"onClickEvent($event)\"\n (blur)=\"onTouched()\"\n class=\"bbi-checkbox-input\"\n type=\"checkbox\">\n<label [attr.for]=\"labelId\"\n class=\"bbi-checkbox-label\">\n <span *ngIf=\"!hideText\"\n class=\"bbi-checkbox-text\"><ng-content></ng-content></span>\n</label>\n", styles: [".bbi-checkbox{display:block}.bbi-checkbox.grouped{margin-bottom:var(--checkbox-grouping, 20px)}.bbi-checkbox.required>.bbi-checkbox-label>.bbi-checkbox-text:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5;margin-left:3px}.bbi-checkbox-input{border:0;width:1px;padding:0;height:1px;margin:-1px;overflow:hidden;position:absolute;visibility:inherit;white-space:nowrap;clip:rect(0,0,0,0)}.bbi-checkbox-input:checked+.bbi-checkbox-label:before,.bbi-checkbox-input:indeterminate+.bbi-checkbox-label:before{background-color:var(--checkbox-colors-accent, var(--accent-color, #1565c0));border:var(--checkbox-border-thickness, 1px) solid var(--checkbox-colors-accent, var(--accent-color, #1565c0))}.bbi-checkbox-input:checked+.bbi-checkbox-label:after,.bbi-checkbox-input:indeterminate+.bbi-checkbox-label:after{opacity:1;transform:scale(1) rotate(-45deg)}.bbi-checkbox-input:indeterminate+.bbi-checkbox-label:after{left:calc(var(--checkbox-size, 20px) / 4);width:calc(var(--checkbox-size, 20px) / 2);transform:scale(1) rotate(0);border-left:0 solid var(--checkbox-check-color, white);border-bottom:var(--checkbox-check-thickness, 2px) solid var(--checkbox-check-color, white)}.bbi-checkbox-input:focus+.bbi-checkbox-label:before{outline-color:var(--checkbox-outline-color, var(--accent-color, #1565c0))}.bbi-checkbox-input:disabled+.bbi-checkbox-label{cursor:not-allowed;color:var(--checkbox-colors-disabled, #c6c6c6)}.bbi-checkbox-input:disabled+.bbi-checkbox-label:before{border-color:var(--checkbox-colors-disabled, #c6c6c6)}.bbi-checkbox-input:disabled+.bbi-checkbox-label>.bbi-checkbox-text{color:var(--checkbox-colors-disabled, #c6c6c6)}.bbi-checkbox-input:checked:disabled+.bbi-checkbox-label:before,.bbi-checkbox-input:indeterminate:disabled+.bbi-checkbox-label:before{background-color:var(--checkbox-colors-disabled, #c6c6c6)}.bbi-checkbox-label{border:0;margin:0;display:flex;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;align-items:center;font-family:inherit;vertical-align:initial;min-height:var(--checkbox-size, 20px);padding-left:var(--checkbox-size, 20px)}.bbi-checkbox-label:before{left:0;content:\"\";position:absolute;width:var(--checkbox-size, 20px);height:var(--checkbox-size, 20px);background-color:initial;border-radius:var(--checkbox-border-radius, 4px);outline-offset:var(--checkbox-outline-offset, 1px);outline:var(--checkbox-outline-thickness, 2px) solid transparent;border:var(--checkbox-border-thickness, 1px) solid var(--checkbox-border-color, #111111);transition:outline-color .2s cubic-bezier(0,0,.2,1),background-color .18s cubic-bezier(0,0,.2,1),border-color .18s cubic-bezier(0,0,.2,1)}.bbi-checkbox-label:after{opacity:0;content:\"\";background:none;position:absolute;transform-origin:center;width:var(--checkbox-check-size, 12px);transform:scale(.85) rotate(-60deg);height:calc(var(--checkbox-check-size, 12px) / 2);top:calc(50% - var(--checkbox-check-size, 12px) / 2 * .75);left:calc((var(--checkbox-size, 20px) - var(--checkbox-check-size, 12px)) / 2);border-left:var(--checkbox-check-thickness, 2px) solid var(--checkbox-check-color, white);border-bottom:var(--checkbox-check-thickness, 2px) solid var(--checkbox-check-color, white);transition:opacity .12s cubic-bezier(0,0,.2,1),transform .18s cubic-bezier(0,0,.2,1)}.bbi-checkbox-text{color:var(--checkbox-label-color, #111111);padding-left:var(--checkbox-label-offset, 6px);font-size:var(--checkbox-label-font-size, 16px);font-weight:var(--checkbox-label-font-weight, 400);line-height:var(--checkbox-label-line-height, 1.28)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
147
147
|
}
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiCheckbox, decorators: [{
|
|
149
149
|
type: Component,
|
|
150
150
|
args: [{ selector: 'bbi-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
151
151
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbiCheckbox), multi: true }
|
|
@@ -45,10 +45,10 @@ export class BbiCheckboxGroup {
|
|
|
45
45
|
this._required = false;
|
|
46
46
|
this._inline = false;
|
|
47
47
|
}
|
|
48
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
49
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiCheckboxGroup, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BbiCheckboxGroup, selector: "bbi-checkbox-group", inputs: { label: "label", grouped: "grouped", required: "required", inline: "inline" }, host: { properties: { "class.grouped": "grouped", "class.required": "required", "class.inline": "inline" }, classAttribute: "bbi-checkbox-group" }, ngImport: i0, template: "<label *ngIf=\"label as labelContent\"\n class=\"bbi-checkbox-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-checkbox-group-items\">\n <ng-content select=\"bbi-checkbox\"></ng-content>\n</div>\n", styles: [".bbi-checkbox-group{display:block}.bbi-checkbox-group.grouped{margin-bottom:var(--checkbox-group-grouping, 20px)}.bbi-checkbox-group.required>.bbi-checkbox-group-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bbi-checkbox-group-label{border:0;padding:0;font-family:inherit;display:inline-block;box-sizing:border-box;vertical-align:initial;color:var(--checkbox-group-label-color, #525252);font-size:var(--checkbox-group-label-font-size, 14px);margin-bottom:var(--checkbox-group-label-offset, 4px);line-height:var(--checkbox-group-label-line-height, 1.33);font-weight:var(--checkbox-group-label-font-weight, 400)}.bbi-checkbox-group-items{display:flex;flex-direction:column}.bbi-checkbox-group-items:not(:empty){margin-bottom:-var(--checkbox-group-item-spacing-vertical,4px)}.bbi-checkbox-group-items>*{margin-bottom:var(--checkbox-group-item-spacing-vertical, 4px)}@media only screen and (min-width: 768px){.bbi-checkbox-group.inline>.bbi-checkbox-group-items{flex-wrap:wrap;flex-direction:row}.bbi-checkbox-group.inline>.bbi-checkbox-group-items>*:not(:last-child){margin-right:var(--checkbox-group-item-spacing-horizontal, 10px)}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
50
50
|
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiCheckboxGroup, decorators: [{
|
|
52
52
|
type: Component,
|
|
53
53
|
args: [{ selector: 'bbi-checkbox-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
54
54
|
'class': 'bbi-checkbox-group',
|
|
@@ -5,11 +5,11 @@ import { CommonModule } from '@angular/common';
|
|
|
5
5
|
import { NgModule } from '@angular/core';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class CheckboxModule {
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
9
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.
|
|
10
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: CheckboxModule, declarations: [BbiCheckbox, BbiCheckboxGroup], imports: [CommonModule, UtilsModule], exports: [BbiCheckbox, BbiCheckboxGroup] }); }
|
|
10
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CheckboxModule, imports: [CommonModule, UtilsModule] }); }
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CheckboxModule, decorators: [{
|
|
13
13
|
type: NgModule,
|
|
14
14
|
args: [{
|
|
15
15
|
imports: [CommonModule, UtilsModule],
|
|
@@ -41,10 +41,10 @@ export class BbiControlError {
|
|
|
41
41
|
? this._localize.translate(data)
|
|
42
42
|
: data?.token;
|
|
43
43
|
}
|
|
44
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiControlError, deps: [{ token: i1.Localize, optional: true }, { token: BBI_CONTROL_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BbiControlError, selector: "bbi-control-error", inputs: { errors: "errors" }, host: { properties: { "@errorAnimation": "this.animation" }, classAttribute: "bbi-control-error" }, ngImport: i0, template: "{{ error ?? '...' }}\n", styles: [".bbi-control-error{color:var(--control-error-color, var(--error-color, #bd322a));display:block;margin-top:var(--control-error-spacing, 4px);font-size:var(--control-error-font-size, 13px);font-weight:var(--control-error-font-weight, 400);line-height:var(--control-error-line-height, 1.5)}\n"], animations: [controlErrorAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
46
46
|
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiControlError, decorators: [{
|
|
48
48
|
type: Component,
|
|
49
49
|
args: [{ selector: 'bbi-control-error', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bbi-control-error' }, preserveWhitespaces: false, animations: [controlErrorAnimation], template: "{{ error ?? '...' }}\n", styles: [".bbi-control-error{color:var(--control-error-color, var(--error-color, #bd322a));display:block;margin-top:var(--control-error-spacing, 4px);font-size:var(--control-error-font-size, 13px);font-weight:var(--control-error-font-weight, 400);line-height:var(--control-error-line-height, 1.5)}\n"] }]
|
|
50
50
|
}], ctorParameters: function () { return [{ type: i1.Localize, decorators: [{
|
|
@@ -34,10 +34,10 @@ export class BbiControlErrorSubmit {
|
|
|
34
34
|
});
|
|
35
35
|
this._subscription.add(subscription);
|
|
36
36
|
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
38
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiControlErrorSubmit, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
38
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: BbiControlErrorSubmit, selector: "form", exportAs: ["bbiControlErrorSubmit"], ngImport: i0 }); }
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BbiControlErrorSubmit, decorators: [{
|
|
41
41
|
type: Directive,
|
|
42
42
|
args: [{
|
|
43
43
|
selector: 'form',
|
|
@@ -4,11 +4,11 @@ import { CommonModule } from '@angular/common';
|
|
|
4
4
|
import { NgModule } from '@angular/core';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class ControlErrorModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ControlErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: ControlErrorModule, declarations: [BbiControlError, BbiControlErrorSubmit], imports: [CommonModule], exports: [BbiControlError, BbiControlErrorSubmit] }); }
|
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ControlErrorModule, imports: [CommonModule] }); }
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ControlErrorModule, decorators: [{
|
|
12
12
|
type: NgModule,
|
|
13
13
|
args: [{
|
|
14
14
|
imports: [CommonModule],
|