barsa-tiles 1.0.456 → 2.0.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/{esm2020 → esm2022}/barsa-tiles.mjs +4 -4
- package/esm2022/lib/action-item/action-item.component.mjs +17 -0
- package/{esm2020 → esm2022}/lib/action-links.pipe.mjs +16 -16
- package/esm2022/lib/actions-link/actions-link.component.mjs +41 -0
- package/esm2022/lib/app-finder/app-finder.component.mjs +52 -0
- package/esm2022/lib/app-finder-app-list/app-finder-app-list.component.mjs +39 -0
- package/esm2022/lib/app-finder-group/app-finder-group.component.mjs +41 -0
- package/esm2022/lib/app-finder.service.mjs +121 -0
- package/esm2022/lib/barsa-shellbar/barsa-shellbar.component.mjs +183 -0
- package/esm2022/lib/barsa-tiles.module.mjs +225 -0
- package/esm2022/lib/change-app-tile/change-app-tile.component.mjs +46 -0
- package/esm2022/lib/create-app-group/create-app-group.component.mjs +43 -0
- package/esm2022/lib/directives/emptylist.directive.mjs +36 -0
- package/esm2022/lib/feed-tile/feed-tile.component.mjs +31 -0
- package/{esm2020 → esm2022}/lib/footer-edit-tile/footer-edit-tile.component.mjs +13 -13
- package/esm2022/lib/footer-tile/footer-tile.component.mjs +27 -0
- package/esm2022/lib/form-app-finder/form-app-finder.component.mjs +95 -0
- package/esm2022/lib/form-tile/form-tile.component.mjs +34 -0
- package/esm2022/lib/logo-tile/logo-tile.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +40 -40
- package/{esm2020 → esm2022}/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +29 -29
- package/esm2022/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +26 -0
- package/{esm2020 → esm2022}/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +20 -20
- package/{esm2020 → esm2022}/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +32 -32
- package/{esm2020 → esm2022}/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +27 -27
- package/{esm2020 → esm2022}/lib/models/app-tile-footer-section.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/app-tile-footer.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/app-tile-group-pin.mjs +1 -1
- package/esm2022/lib/models/base-bt-tile-component.mjs +26 -0
- package/{esm2020 → esm2022}/lib/models/base-tile-component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/models/base-tile-setting.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/feed-tile-setting.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/index.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/logo-tile-setting.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/micro-tile-chart-bullet-setting.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/news-tile-setting.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/numeric-tile-setting.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/profile-tile-setting.mjs +1 -1
- package/esm2022/lib/models/tile-setting.mjs +2 -0
- package/{esm2020 → esm2022}/lib/models/user-portal-settings.mjs +1 -1
- package/esm2022/lib/news-tile/news-tile.component.mjs +53 -0
- package/esm2022/lib/notification-group/notification-group.component.mjs +116 -0
- package/esm2022/lib/notification-group-header/notification-group-header.component.mjs +38 -0
- package/esm2022/lib/numeric-tile/numeric-tile.component.mjs +64 -0
- package/esm2022/lib/pin-tile/pin-tile.component.mjs +110 -0
- package/esm2022/lib/pipes/group-tiles.pipe.mjs +31 -0
- package/{esm2020 → esm2022}/lib/pipes/home-group.pipe.mjs +17 -17
- package/esm2022/lib/pipes/tile-home-filter.pipe.mjs +28 -0
- package/esm2022/lib/pipes/tile-prop.pipe.mjs +32 -0
- package/esm2022/lib/popover-app-finder/filter-apps-grouped.pipe.mjs +36 -0
- package/esm2022/lib/popover-app-finder/popover-app-finder.component.mjs +112 -0
- package/esm2022/lib/profile-tile/profile-tile.component.mjs +25 -0
- package/esm2022/lib/shellbar/shellbar.component.mjs +201 -0
- package/esm2022/lib/simple-tile/simple-tile.component.mjs +22 -0
- package/esm2022/lib/tile/tile.component.mjs +70 -0
- package/esm2022/lib/tile-renderer.directive.mjs +70 -0
- package/esm2022/lib/tile-style.directive.mjs +29 -0
- package/esm2022/lib/tiles-viewer/tiles-viewer.component.mjs +167 -0
- package/esm2022/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +164 -0
- package/esm2022/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +88 -0
- package/esm2022/lib/tiles-viewer.service.mjs +130 -0
- package/esm2022/lib/tiles.service.mjs +589 -0
- package/{esm2020 → esm2022}/public-api.mjs +46 -45
- package/fesm2022/barsa-tiles.mjs +3179 -0
- package/fesm2022/barsa-tiles.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/action-item/action-item.component.d.ts +6 -6
- package/lib/action-links.pipe.d.ts +7 -7
- package/lib/actions-link/actions-link.component.d.ts +17 -17
- package/lib/app-finder/app-finder.component.d.ts +24 -24
- package/lib/app-finder-app-list/app-finder-app-list.component.d.ts +20 -20
- package/lib/app-finder-group/app-finder-group.component.d.ts +14 -14
- package/lib/app-finder.service.d.ts +33 -33
- package/lib/barsa-shellbar/barsa-shellbar.component.d.ts +104 -97
- package/lib/barsa-tiles.module.d.ts +91 -86
- package/lib/change-app-tile/change-app-tile.component.d.ts +20 -20
- package/lib/create-app-group/create-app-group.component.d.ts +19 -19
- package/lib/directives/emptylist.directive.d.ts +14 -14
- package/lib/feed-tile/feed-tile.component.d.ts +11 -11
- package/lib/footer-edit-tile/footer-edit-tile.component.d.ts +6 -6
- package/lib/footer-tile/footer-tile.component.d.ts +11 -11
- package/lib/form-app-finder/form-app-finder.component.d.ts +38 -38
- package/lib/form-tile/form-tile.component.d.ts +24 -24
- package/lib/logo-tile/logo-tile.component.d.ts +7 -7
- package/lib/micro-tile-chart-area/micro-tile-chart-area.component.d.ts +8 -8
- package/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.d.ts +12 -12
- package/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.d.ts +16 -16
- package/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.d.ts +7 -7
- package/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.d.ts +8 -8
- package/lib/micro-tile-chart-line/micro-tile-chart-line.component.d.ts +8 -8
- package/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.d.ts +8 -8
- package/lib/models/app-tile-footer-section.d.ts +6 -6
- package/lib/models/app-tile-footer.d.ts +8 -8
- package/lib/models/app-tile-group-pin.d.ts +5 -5
- package/lib/models/base-bt-tile-component.d.ts +9 -9
- package/lib/models/base-tile-component.d.ts +26 -26
- package/lib/models/base-tile-setting.d.ts +5 -5
- package/lib/models/feed-tile-setting.d.ts +7 -7
- package/lib/models/index.d.ts +13 -13
- package/lib/models/logo-tile-setting.d.ts +6 -6
- package/lib/models/micro-tile-chart-bullet-setting.d.ts +10 -10
- package/lib/models/news-tile-setting.d.ts +4 -4
- package/lib/models/numeric-tile-setting.d.ts +9 -9
- package/lib/models/profile-tile-setting.d.ts +7 -7
- package/lib/models/tile-setting.d.ts +10 -10
- package/lib/models/user-portal-settings.d.ts +9 -9
- package/lib/news-tile/news-tile.component.d.ts +19 -19
- package/lib/notification-group/notification-group.component.d.ts +54 -55
- package/lib/notification-group-header/notification-group-header.component.d.ts +15 -15
- package/lib/numeric-tile/numeric-tile.component.d.ts +16 -12
- package/lib/pin-tile/pin-tile.component.d.ts +30 -30
- package/lib/pipes/group-tiles.pipe.d.ts +14 -14
- package/lib/pipes/home-group.pipe.d.ts +9 -9
- package/lib/pipes/tile-home-filter.pipe.d.ts +8 -8
- package/lib/pipes/tile-prop.pipe.d.ts +8 -8
- package/lib/popover-app-finder/filter-apps-grouped.pipe.d.ts +13 -0
- package/lib/popover-app-finder/popover-app-finder.component.d.ts +39 -0
- package/lib/profile-tile/profile-tile.component.d.ts +7 -7
- package/lib/shellbar/shellbar.component.d.ts +94 -94
- package/lib/simple-tile/simple-tile.component.d.ts +10 -10
- package/lib/tile/tile.component.d.ts +22 -20
- package/lib/tile-renderer.directive.d.ts +28 -28
- package/lib/tile-style.directive.d.ts +12 -0
- package/lib/tiles-viewer/tiles-viewer.component.d.ts +65 -63
- package/lib/tiles-viewer-container/tiles-viewer-container.component.d.ts +59 -57
- package/lib/tiles-viewer-group/tiles-viewer-group.component.d.ts +39 -39
- package/lib/tiles-viewer.service.d.ts +42 -42
- package/lib/tiles.service.d.ts +75 -75
- package/package.json +7 -13
- package/public-api.d.ts +42 -41
- package/esm2020/lib/action-item/action-item.component.mjs +0 -18
- package/esm2020/lib/actions-link/actions-link.component.mjs +0 -42
- package/esm2020/lib/app-finder/app-finder.component.mjs +0 -53
- package/esm2020/lib/app-finder-app-list/app-finder-app-list.component.mjs +0 -40
- package/esm2020/lib/app-finder-group/app-finder-group.component.mjs +0 -42
- package/esm2020/lib/app-finder.service.mjs +0 -121
- package/esm2020/lib/barsa-shellbar/barsa-shellbar.component.mjs +0 -166
- package/esm2020/lib/barsa-tiles.module.mjs +0 -206
- package/esm2020/lib/change-app-tile/change-app-tile.component.mjs +0 -47
- package/esm2020/lib/create-app-group/create-app-group.component.mjs +0 -44
- package/esm2020/lib/directives/emptylist.directive.mjs +0 -36
- package/esm2020/lib/feed-tile/feed-tile.component.mjs +0 -32
- package/esm2020/lib/footer-tile/footer-tile.component.mjs +0 -28
- package/esm2020/lib/form-app-finder/form-app-finder.component.mjs +0 -95
- package/esm2020/lib/form-tile/form-tile.component.mjs +0 -35
- package/esm2020/lib/logo-tile/logo-tile.component.mjs +0 -23
- package/esm2020/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +0 -27
- package/esm2020/lib/models/base-bt-tile-component.mjs +0 -30
- package/esm2020/lib/models/tile-setting.mjs +0 -2
- package/esm2020/lib/news-tile/news-tile.component.mjs +0 -54
- package/esm2020/lib/notification-group/notification-group.component.mjs +0 -116
- package/esm2020/lib/notification-group-header/notification-group-header.component.mjs +0 -39
- package/esm2020/lib/numeric-tile/numeric-tile.component.mjs +0 -34
- package/esm2020/lib/pin-tile/pin-tile.component.mjs +0 -111
- package/esm2020/lib/pipes/group-tiles.pipe.mjs +0 -31
- package/esm2020/lib/pipes/tile-home-filter.pipe.mjs +0 -28
- package/esm2020/lib/pipes/tile-prop.pipe.mjs +0 -32
- package/esm2020/lib/profile-tile/profile-tile.component.mjs +0 -26
- package/esm2020/lib/shellbar/shellbar.component.mjs +0 -200
- package/esm2020/lib/simple-tile/simple-tile.component.mjs +0 -23
- package/esm2020/lib/tile/tile.component.mjs +0 -61
- package/esm2020/lib/tile-renderer.directive.mjs +0 -70
- package/esm2020/lib/tiles-viewer/tiles-viewer.component.mjs +0 -157
- package/esm2020/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +0 -158
- package/esm2020/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +0 -88
- package/esm2020/lib/tiles-viewer.service.mjs +0 -130
- package/esm2020/lib/tiles.service.mjs +0 -589
- package/fesm2015/barsa-tiles.mjs +0 -2977
- package/fesm2015/barsa-tiles.mjs.map +0 -1
- package/fesm2020/barsa-tiles.mjs +0 -2941
- package/fesm2020/barsa-tiles.mjs.map +0 -1
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
|
-
import { debounceTime, exhaustMap, finalize, takeUntil, tap } from 'rxjs/operators';
|
|
4
|
-
import { ChangeAppTileComponent } from './change-app-tile/change-app-tile.component';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@fundamental-ngx/core";
|
|
7
|
-
import * as i2 from "./tiles.service";
|
|
8
|
-
export class TilesViewerService {
|
|
9
|
-
constructor(dialogService, tilesService) {
|
|
10
|
-
this.dialogService = dialogService;
|
|
11
|
-
this.tilesService = tilesService;
|
|
12
|
-
this._onDestroy$ = new Subject();
|
|
13
|
-
this._hideTileSource = new Subject();
|
|
14
|
-
this._updateAppTileSettingSource = new Subject();
|
|
15
|
-
this._deleteGroupSource = new Subject();
|
|
16
|
-
this._loadAppGroupSource = new Subject();
|
|
17
|
-
this._saveAppGroupOrdersSource = new Subject();
|
|
18
|
-
this.saveAppGroupOrders$ = this._saveAppGroupOrdersSource.asObservable();
|
|
19
|
-
this._resetAppGroupSource = new Subject();
|
|
20
|
-
this.resetAppGroup$ = this._resetAppGroupSource.asObservable();
|
|
21
|
-
this._hideAppGroupSource = new Subject();
|
|
22
|
-
this.hideAppGroup$ = this._hideAppGroupSource.asObservable();
|
|
23
|
-
this._viewLoadingSource = new BehaviorSubject(false);
|
|
24
|
-
this.viewLoading$ = this._viewLoadingSource.asObservable().pipe(debounceTime(200));
|
|
25
|
-
this.hideTile$ = this._hideTileSource.asObservable();
|
|
26
|
-
this.updateAppTileSetting$ = this._updateAppTileSettingSource.asObservable();
|
|
27
|
-
this.deleteAppGroup$ = this._deleteGroupSource.asObservable();
|
|
28
|
-
this._loadAppGroupSource
|
|
29
|
-
.asObservable()
|
|
30
|
-
.pipe(takeUntil(this._onDestroy$))
|
|
31
|
-
.subscribe((group) => {
|
|
32
|
-
this.tilesService.loadAppTileGroups(group);
|
|
33
|
-
});
|
|
34
|
-
this.hideTile$
|
|
35
|
-
.pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appTile) => this.tilesService
|
|
36
|
-
.singlePinTileChanged(appTile.AppTile ? appTile.AppTile.Id : appTile.Id)
|
|
37
|
-
.pipe(finalize(() => this.setLoaded()))), finalize(() => this.setLoaded()))
|
|
38
|
-
.subscribe();
|
|
39
|
-
this.updateAppTileSetting$
|
|
40
|
-
.pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appTile) => this.tilesService.changeAppTileSetting(appTile).pipe(finalize(() => {
|
|
41
|
-
this.setLoaded();
|
|
42
|
-
}))), finalize(() => {
|
|
43
|
-
this.setLoaded();
|
|
44
|
-
}))
|
|
45
|
-
.subscribe();
|
|
46
|
-
this.deleteAppGroup$
|
|
47
|
-
.pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appGroup) => this.tilesService.deleteAppGroup(appGroup).pipe(finalize(() => {
|
|
48
|
-
this.setLoaded();
|
|
49
|
-
}))))
|
|
50
|
-
.subscribe();
|
|
51
|
-
this.resetAppGroup$
|
|
52
|
-
.pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.resetAppGroupSetting(appGroup).pipe(finalize(() => {
|
|
53
|
-
this.setLoaded();
|
|
54
|
-
}))), finalize(() => {
|
|
55
|
-
this.setLoaded();
|
|
56
|
-
}))
|
|
57
|
-
.subscribe();
|
|
58
|
-
this.hideAppGroup$
|
|
59
|
-
.pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.toggleAppGroupSettingVisible(appGroup).pipe(finalize(() => {
|
|
60
|
-
this.setLoaded();
|
|
61
|
-
}))), finalize(() => {
|
|
62
|
-
this.setLoaded();
|
|
63
|
-
}))
|
|
64
|
-
.subscribe();
|
|
65
|
-
this.saveAppGroupOrders$
|
|
66
|
-
.pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroups) => this.tilesService.saveAppGroupOrders(appGroups).pipe(finalize(() => {
|
|
67
|
-
this.setLoaded();
|
|
68
|
-
}))), finalize(() => {
|
|
69
|
-
this.setLoaded();
|
|
70
|
-
}))
|
|
71
|
-
.subscribe();
|
|
72
|
-
}
|
|
73
|
-
get selectedAppGroupId() {
|
|
74
|
-
return localStorage.getItem('selectedTab') ?? '';
|
|
75
|
-
}
|
|
76
|
-
set selectedAppGroupId(groupId) {
|
|
77
|
-
localStorage.setItem('selectedTab', groupId);
|
|
78
|
-
}
|
|
79
|
-
setSelectedTab(group) {
|
|
80
|
-
this.selectedAppGroupId = group.Id;
|
|
81
|
-
}
|
|
82
|
-
loadAppGroup(group) {
|
|
83
|
-
this._loadAppGroupSource.next(group);
|
|
84
|
-
}
|
|
85
|
-
ngOnDestroy() {
|
|
86
|
-
this._onDestroy$.next();
|
|
87
|
-
}
|
|
88
|
-
openRenameForm(appTile) {
|
|
89
|
-
const newGroupDialogRef = this.dialogService.open(ChangeAppTileComponent, {
|
|
90
|
-
data: appTile,
|
|
91
|
-
verticalPadding: true,
|
|
92
|
-
responsivePadding: true
|
|
93
|
-
});
|
|
94
|
-
newGroupDialogRef.afterClosed.subscribe((setting) => {
|
|
95
|
-
if (setting) {
|
|
96
|
-
const newAppTile = { ...appTile };
|
|
97
|
-
newAppTile.Title = newAppTile.TileTitle = setting.title;
|
|
98
|
-
newAppTile.Subtitle = setting.subtitle;
|
|
99
|
-
this._updateAppTileSettingSource.next(newAppTile);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
resetAppGroup(appGroup) {
|
|
104
|
-
this._resetAppGroupSource.next(appGroup);
|
|
105
|
-
}
|
|
106
|
-
toggleAppGroupSettingVisible(appGroup) {
|
|
107
|
-
this._hideAppGroupSource.next(appGroup);
|
|
108
|
-
}
|
|
109
|
-
deleteAppGroup(appGroup) {
|
|
110
|
-
this._deleteGroupSource.next(appGroup);
|
|
111
|
-
}
|
|
112
|
-
hideTile(appTile) {
|
|
113
|
-
this._hideTileSource.next(appTile);
|
|
114
|
-
}
|
|
115
|
-
saveAppGroupOrders(appGroups) {
|
|
116
|
-
this._saveAppGroupOrdersSource.next(appGroups);
|
|
117
|
-
}
|
|
118
|
-
setLoaded() {
|
|
119
|
-
this._viewLoadingSource.next(false);
|
|
120
|
-
}
|
|
121
|
-
setLoading() {
|
|
122
|
-
this._viewLoadingSource.next(true);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
TilesViewerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService, deps: [{ token: i1.DialogService }, { token: i2.TilesService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
126
|
-
TilesViewerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService });
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerService, decorators: [{
|
|
128
|
-
type: Injectable
|
|
129
|
-
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.TilesService }]; } });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1wRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdyRixNQUFNLE9BQU8sa0JBQWtCO0lBb0IzQixZQUFvQixhQUE0QixFQUFVLFlBQTBCO1FBQWhFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFkakUsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3JELGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ2pFLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3hELHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3pELDhCQUF5QixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQ2pFLHdCQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRSx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUMxRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxRCx3QkFBbUIsR0FBRyxJQUFJLE9BQU8s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WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZXhoYXVzdE1hcCwgZmluYWxpemUsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBUaWxlc1NlcnZpY2UgfSBmcm9tICcuL3RpbGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFuZ2VBcHBUaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFuZ2UtYXBwLXRpbGUvY2hhbmdlLWFwcC10aWxlLmNvbXBvbmVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUaWxlc1ZpZXdlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgdmlld0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgaGlkZVRpbGUkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xyXG4gICAgdXBkYXRlQXBwVGlsZVNldHRpbmckOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xyXG4gICAgZGVsZXRlQXBwR3JvdXAkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xyXG5cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfaGlkZVRpbGVTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgcHJpdmF0ZSBfdXBkYXRlQXBwVGlsZVNldHRpbmdTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgcHJpdmF0ZSBfZGVsZXRlR3JvdXBTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgcHJpdmF0ZSBfbG9hZEFwcEdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX3NhdmVBcHBHcm91cE9yZGVyc1NvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWxbXT4oKTtcclxuICAgIHByaXZhdGUgc2F2ZUFwcEdyb3VwT3JkZXJzJCA9IHRoaXMuX3NhdmVBcHBHcm91cE9yZGVyc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3Jlc2V0QXBwR3JvdXBTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgcHJpdmF0ZSByZXNldEFwcEdyb3VwJCA9IHRoaXMuX3Jlc2V0QXBwR3JvdXBTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF9oaWRlQXBwR3JvdXBTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgcHJpdmF0ZSBoaWRlQXBwR3JvdXAkID0gdGhpcy5faGlkZUFwcEdyb3VwU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfdmlld0xvYWRpbmdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsIHByaXZhdGUgdGlsZXNTZXJ2aWNlOiBUaWxlc1NlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnZpZXdMb2FkaW5nJCA9IHRoaXMuX3ZpZXdMb2FkaW5nU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpO1xyXG4gICAgICAgIHRoaXMuaGlkZVRpbGUkID0gdGhpcy5faGlkZVRpbGVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBcHBUaWxlU2V0dGluZyQgPSB0aGlzLl91cGRhdGVBcHBUaWxlU2V0dGluZ1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgICAgICB0aGlzLmRlbGV0ZUFwcEdyb3VwJCA9IHRoaXMuX2RlbGV0ZUdyb3VwU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMuX2xvYWRBcHBHcm91cFNvdXJjZVxyXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChncm91cCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UubG9hZEFwcFRpbGVHcm91cHMoZ3JvdXApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmhpZGVUaWxlJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBUaWxlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zaW5nbGVQaW5UaWxlQ2hhbmdlZChhcHBUaWxlLkFwcFRpbGUgPyBhcHBUaWxlLkFwcFRpbGUuSWQgOiBhcHBUaWxlLklkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLnNldExvYWRlZCgpKSlcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnNldExvYWRlZCgpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVBcHBUaWxlU2V0dGluZyRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwVGlsZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZS5jaGFuZ2VBcHBUaWxlU2V0dGluZyhhcHBUaWxlKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmRlbGV0ZUFwcEdyb3VwJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBHcm91cCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZS5kZWxldGVBcHBHcm91cChhcHBHcm91cCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2V0QXBwR3JvdXAkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcEdyb3VwKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlLnJlc2V0QXBwR3JvdXBTZXR0aW5nKGFwcEdyb3VwKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmhpZGVBcHBHcm91cCRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwR3JvdXApID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UudG9nZ2xlQXBwR3JvdXBTZXR0aW5nVmlzaWJsZShhcHBHcm91cCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zYXZlQXBwR3JvdXBPcmRlcnMkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcEdyb3VwcykgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZS5zYXZlQXBwR3JvdXBPcmRlcnMoYXBwR3JvdXBzKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHNlbGVjdGVkQXBwR3JvdXBJZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRUYWInKSA/PyAnJztcclxuICAgIH1cclxuICAgIHNldCBzZWxlY3RlZEFwcEdyb3VwSWQoZ3JvdXBJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NlbGVjdGVkVGFiJywgZ3JvdXBJZCk7XHJcbiAgICB9XHJcbiAgICBzZXRTZWxlY3RlZFRhYihncm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBcHBHcm91cElkID0gZ3JvdXAuSWQ7XHJcbiAgICB9XHJcbiAgICBsb2FkQXBwR3JvdXAoZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sb2FkQXBwR3JvdXBTb3VyY2UubmV4dChncm91cCk7XHJcbiAgICB9XHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUmVuYW1lRm9ybShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbmV3R3JvdXBEaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDaGFuZ2VBcHBUaWxlQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IGFwcFRpbGUsXHJcbiAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbmV3R3JvdXBEaWFsb2dSZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChzZXR0aW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdBcHBUaWxlID0geyAuLi5hcHBUaWxlIH07XHJcbiAgICAgICAgICAgICAgICBuZXdBcHBUaWxlLlRpdGxlID0gbmV3QXBwVGlsZS5UaWxlVGl0bGUgPSBzZXR0aW5nLnRpdGxlO1xyXG4gICAgICAgICAgICAgICAgbmV3QXBwVGlsZS5TdWJ0aXRsZSA9IHNldHRpbmcuc3VidGl0bGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlU2V0dGluZ1NvdXJjZS5uZXh0KG5ld0FwcFRpbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXNldEFwcEdyb3VwKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVzZXRBcHBHcm91cFNvdXJjZS5uZXh0KGFwcEdyb3VwKTtcclxuICAgIH1cclxuICAgIHRvZ2dsZUFwcEdyb3VwU2V0dGluZ1Zpc2libGUoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oaWRlQXBwR3JvdXBTb3VyY2UubmV4dChhcHBHcm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQXBwR3JvdXAoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kZWxldGVHcm91cFNvdXJjZS5uZXh0KGFwcEdyb3VwKTtcclxuICAgIH1cclxuICAgIGhpZGVUaWxlKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oaWRlVGlsZVNvdXJjZS5uZXh0KGFwcFRpbGUpO1xyXG4gICAgfVxyXG4gICAgc2F2ZUFwcEdyb3VwT3JkZXJzKGFwcEdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2F2ZUFwcEdyb3VwT3JkZXJzU291cmNlLm5leHQoYXBwR3JvdXBzKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2FkZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdmlld0xvYWRpbmdTb3VyY2UubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBzZXRMb2FkaW5nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ZpZXdMb2FkaW5nU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|