@sumaris-net/ngx-components 2.4.132 → 2.4.134
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/src/app/core/home/home.mjs +1 -1
- package/esm2020/src/app/core/menu/menu.component.mjs +21 -26
- package/esm2020/src/app/core/menu/menu.model.mjs +131 -33
- package/esm2020/src/app/core/menu/menu.module.mjs +14 -4
- package/esm2020/src/app/core/menu/menu.service.mjs +224 -161
- package/esm2020/src/app/core/menu/sub-menu-tab.directive.mjs +47 -25
- package/esm2020/src/app/core/menu/testing/menu-other.testing.mjs +10 -7
- package/esm2020/src/app/core/menu/testing/menu.testing.mjs +29 -12
- package/esm2020/src/app/core/settings/settings.page.mjs +1 -1
- package/esm2020/src/app/social/message/message.form.mjs +11 -8
- package/fesm2015/sumaris-net.ngx-components.mjs +516 -298
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +470 -260
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/home/home.d.ts +5 -5
- package/src/app/core/menu/menu.component.d.ts +8 -10
- package/src/app/core/menu/menu.model.d.ts +67 -11
- package/src/app/core/menu/menu.module.d.ts +4 -2
- package/src/app/core/menu/menu.service.d.ts +20 -19
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +8 -3
- package/src/app/core/menu/testing/menu.testing.d.ts +5 -2
- package/src/app/core/settings/settings.page.d.ts +5 -5
- package/src/theme/_ngx-components.scss +2 -1
|
@@ -11,51 +11,71 @@ export class SubMenuTabDirective {
|
|
|
11
11
|
this.tabGroup = tabGroup;
|
|
12
12
|
this.tab = tab;
|
|
13
13
|
this.router = router;
|
|
14
|
+
this.subMenuIcon = { icon: 'none' };
|
|
15
|
+
this._debug = true;
|
|
14
16
|
this.path = MenuItems.parsePathWithQuery(this.router.routerState.snapshot.url).path;
|
|
15
17
|
}
|
|
16
18
|
ngAfterViewInit() {
|
|
17
19
|
if (!this.tab.disabled)
|
|
18
|
-
this.
|
|
20
|
+
this._addToMenu();
|
|
19
21
|
}
|
|
20
22
|
ngOnChanges(changes) {
|
|
21
23
|
if (changes.disabled || changes.label || changes.subMenuTitle || changes.parentPath || changes.path) {
|
|
22
24
|
if (this.disabled) {
|
|
23
|
-
|
|
24
|
-
this.menuService.removeSubMenuItem(this._menuItem);
|
|
25
|
+
this._removeToMenu();
|
|
25
26
|
}
|
|
26
27
|
else {
|
|
27
|
-
this.
|
|
28
|
+
this._addToMenu();
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
+
async _removeToMenu() {
|
|
33
|
+
const menuItem = this.menuItem;
|
|
34
|
+
if (menuItem) {
|
|
35
|
+
await this.menuService.removeSubMenuItem(menuItem);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async _addToMenu() {
|
|
39
|
+
const menuItem = this.menuItem;
|
|
40
|
+
if (!menuItem?.parentPath)
|
|
41
|
+
return;
|
|
42
|
+
if (this._debug)
|
|
43
|
+
console.debug(`[sub-menu-tab] Refreshing sub menu {${menuItem.path}?tab=${menuItem.pathParams?.tab || 0} on parent {${menuItem.parentPath}}`);
|
|
44
|
+
this._menuItem = await this.menuService.addSubMenuItem(menuItem, { skipIfExists: false });
|
|
45
|
+
}
|
|
46
|
+
get menuItem() {
|
|
32
47
|
const index = this.tabGroup.selectedIndex + this.tab.position;
|
|
33
|
-
const pathParams = index === 0 ? {} : { tab: index.toString() };
|
|
34
48
|
const parentPath = index === 0 ? this.parentPath : this.path;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (this._menuItem) {
|
|
46
|
-
if (menuItem.title === this._menuItem.title && MenuItems.isSame(menuItem, this._menuItem))
|
|
47
|
-
return; // Skip if no changes
|
|
48
|
-
menuItem.id = this._menuItem.id;
|
|
49
|
+
if (!parentPath)
|
|
50
|
+
return null;
|
|
51
|
+
const tabParams = index === 0 ? {} : { tab: index.toString() };
|
|
52
|
+
// Create or load
|
|
53
|
+
if (!this._menuItem) {
|
|
54
|
+
this._menuItem = this.menuService.loadOrCreate({
|
|
55
|
+
path: this.path,
|
|
56
|
+
pathParams: tabParams,
|
|
57
|
+
parentPath,
|
|
58
|
+
});
|
|
49
59
|
}
|
|
60
|
+
// Update existing
|
|
50
61
|
else {
|
|
51
|
-
|
|
52
|
-
this._menuItem =
|
|
62
|
+
const { path, params } = MenuItems.parsePathWithQuery(this.path);
|
|
63
|
+
this._menuItem.path = path;
|
|
64
|
+
this._menuItem.pathParams = { ...params, ...tabParams };
|
|
53
65
|
}
|
|
54
|
-
|
|
66
|
+
// Update title and icon
|
|
67
|
+
this._menuItem.title = this.title;
|
|
68
|
+
if (this.subMenuIcon?.icon !== 'none') {
|
|
69
|
+
Object.assign(this._menuItem, this.subMenuIcon);
|
|
70
|
+
}
|
|
71
|
+
return this._menuItem;
|
|
72
|
+
}
|
|
73
|
+
get title() {
|
|
74
|
+
return isNotNil(this.subMenuTitle) ? this.subMenuTitle : this.label;
|
|
55
75
|
}
|
|
56
76
|
}
|
|
57
77
|
SubMenuTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SubMenuTabDirective, deps: [{ token: i1.MenuService }, { token: i2.MatTabGroup }, { token: i2.MatTab }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Directive });
|
|
58
|
-
SubMenuTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: { label: "label", disabled: "disabled", parentPath: "parentPath", path: "path", subMenuTitle: "subMenuTitle" }, usesOnChanges: true, ngImport: i0 });
|
|
78
|
+
SubMenuTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: { label: "label", disabled: "disabled", parentPath: "parentPath", path: "path", subMenuTitle: "subMenuTitle", subMenuIcon: "subMenuIcon" }, usesOnChanges: true, ngImport: i0 });
|
|
59
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SubMenuTabDirective, decorators: [{
|
|
60
80
|
type: Directive,
|
|
61
81
|
args: [{
|
|
@@ -71,5 +91,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
71
91
|
type: Input
|
|
72
92
|
}], subMenuTitle: [{
|
|
73
93
|
type: Input
|
|
94
|
+
}], subMenuIcon: [{
|
|
95
|
+
type: Input
|
|
74
96
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLW1lbnUtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L3N1Yi1tZW51LXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUkxRixPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNbEQsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUFvQixXQUF3QixFQUFVLFFBQXFCLEVBQVUsR0FBVyxFQUFVLE1BQWM7UUFBcEcsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFML0csZ0JBQVcsR0FBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUd6QyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBR3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEYsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDbkcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDdEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWE7UUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLFFBQVEsRUFBRTtZQUNaLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVTtRQUN0QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVTtZQUFFLE9BQU87UUFFbEMsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRWhKLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsSUFBWSxRQUFRO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0QsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QixNQUFNLFNBQVMsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBRS9ELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO2dCQUM3QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFVBQVU7YUFDWCxDQUFDLENBQUM7U0FDSjtRQUNELGtCQUFrQjthQUNiO1lBQ0gsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7U0FDekQ7UUFFRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFZLEtBQUs7UUFDZixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEUsQ0FBQzs7Z0hBOUVVLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7c0tBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWIsIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuL21lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudUl0ZW1zIH0gZnJvbSAnLi9tZW51Lm1vZGVsJztcbmltcG9ydCB7IGlzTm90TmlsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBJY29uUmVmIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcFN1Yk1lbnVUYWJdJyxcbn0pXG5leHBvcnQgY2xhc3MgU3ViTWVudVRhYkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBwYXJlbnRQYXRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBhdGg6IHN0cmluZztcbiAgQElucHV0KCkgc3ViTWVudVRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1Yk1lbnVJY29uOiBJY29uUmVmID0geyBpY29uOiAnbm9uZScgfTtcblxuICBwcml2YXRlIF9tZW51SXRlbTogTWVudUl0ZW07XG4gIHByaXZhdGUgX2RlYnVnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSwgcHJpdmF0ZSB0YWJHcm91cDogTWF0VGFiR3JvdXAsIHByaXZhdGUgdGFiOiBNYXRUYWIsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICB0aGlzLnBhdGggPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkucGF0aDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMudGFiLmRpc2FibGVkKSB0aGlzLl9hZGRUb01lbnUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kaXNhYmxlZCB8fCBjaGFuZ2VzLmxhYmVsIHx8IGNoYW5nZXMuc3ViTWVudVRpdGxlIHx8IGNoYW5nZXMucGFyZW50UGF0aCB8fCBjaGFuZ2VzLnBhdGgpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuX3JlbW92ZVRvTWVudSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYWRkVG9NZW51KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcmVtb3ZlVG9NZW51KCkge1xuICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51SXRlbTtcbiAgICBpZiAobWVudUl0ZW0pIHtcbiAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2UucmVtb3ZlU3ViTWVudUl0ZW0obWVudUl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2FkZFRvTWVudSgpIHtcbiAgICBjb25zdCBtZW51SXRlbSA9IHRoaXMubWVudUl0ZW07XG4gICAgaWYgKCFtZW51SXRlbT8ucGFyZW50UGF0aCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKVxuICAgICAgY29uc29sZS5kZWJ1ZyhgW3N1Yi1tZW51LXRhYl0gUmVmcmVzaGluZyBzdWIgbWVudSB7JHttZW51SXRlbS5wYXRofT90YWI9JHttZW51SXRlbS5wYXRoUGFyYW1zPy50YWIgfHwgMH0gb24gcGFyZW50IHske21lbnVJdGVtLnBhcmVudFBhdGh9fWApO1xuXG4gICAgdGhpcy5fbWVudUl0ZW0gPSBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmFkZFN1Yk1lbnVJdGVtKG1lbnVJdGVtLCB7IHNraXBJZkV4aXN0czogZmFsc2UgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBtZW51SXRlbSgpOiBNZW51SXRlbSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggKyB0aGlzLnRhYi5wb3NpdGlvbjtcbiAgICBjb25zdCBwYXJlbnRQYXRoID0gaW5kZXggPT09IDAgPyB0aGlzLnBhcmVudFBhdGggOiB0aGlzLnBhdGg7XG4gICAgaWYgKCFwYXJlbnRQYXRoKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB0YWJQYXJhbXMgPSBpbmRleCA9PT0gMCA/IHt9IDogeyB0YWI6IGluZGV4LnRvU3RyaW5nKCkgfTtcblxuICAgIC8vIENyZWF0ZSBvciBsb2FkXG4gICAgaWYgKCF0aGlzLl9tZW51SXRlbSkge1xuICAgICAgdGhpcy5fbWVudUl0ZW0gPSB0aGlzLm1lbnVTZXJ2aWNlLmxvYWRPckNyZWF0ZSh7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgcGF0aFBhcmFtczogdGFiUGFyYW1zLFxuICAgICAgICBwYXJlbnRQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFVwZGF0ZSBleGlzdGluZ1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IE1lbnVJdGVtcy5wYXJzZVBhdGhXaXRoUXVlcnkodGhpcy5wYXRoKTtcbiAgICAgIHRoaXMuX21lbnVJdGVtLnBhdGggPSBwYXRoO1xuICAgICAgdGhpcy5fbWVudUl0ZW0ucGF0aFBhcmFtcyA9IHsgLi4ucGFyYW1zLCAuLi50YWJQYXJhbXMgfTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGl0bGUgYW5kIGljb25cbiAgICB0aGlzLl9tZW51SXRlbS50aXRsZSA9IHRoaXMudGl0bGU7XG4gICAgaWYgKHRoaXMuc3ViTWVudUljb24/Lmljb24gIT09ICdub25lJykge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9tZW51SXRlbSwgdGhpcy5zdWJNZW51SWNvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX21lbnVJdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXNOb3ROaWwodGhpcy5zdWJNZW51VGl0bGUpID8gdGhpcy5zdWJNZW51VGl0bGUgOiB0aGlzLmxhYmVsO1xuICB9XG59XG4iXX0=
|
|
@@ -16,15 +16,18 @@ export class OtherMenuTestingPage extends MenuTestingPage {
|
|
|
16
16
|
super(route, router, navController, alertCtrl, translate, menuService);
|
|
17
17
|
this.logPrefix = '[menu-testing-other] ';
|
|
18
18
|
this.showOtherLinks = false;
|
|
19
|
+
this.showThirdTab = true;
|
|
19
20
|
}
|
|
20
21
|
async initSubMenu() {
|
|
21
|
-
this.title = await this.computeTitle();
|
|
22
22
|
this.secondTabTitle = 'Second';
|
|
23
23
|
this.parentPath = '/testing/shared/menu?tab=1';
|
|
24
24
|
this.childPath = '';
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
this.path = '/testing/shared/menu/others/' + this.route.snapshot.paramMap.get('otherId');
|
|
26
|
+
console.debug(`${this.logPrefix} Setup with`, { path: this.path, parentPath: this.parentPath });
|
|
27
|
+
this.thirdTabTitle = 'Third';
|
|
28
|
+
this.markForCheck();
|
|
29
|
+
this.title = await this.computeTitle();
|
|
30
|
+
this.markForCheck();
|
|
28
31
|
}
|
|
29
32
|
getDefaultTitle() {
|
|
30
33
|
return 'Other';
|
|
@@ -37,9 +40,9 @@ export class OtherMenuTestingPage extends MenuTestingPage {
|
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
OtherMenuTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OtherMenuTestingPage, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
-
OtherMenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OtherMenuTestingPage, selector: "app-testing-menu-other", usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title|async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab
|
|
43
|
+
OtherMenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: OtherMenuTestingPage, selector: "app-testing-menu-other", usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title|async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab label=\"Details\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"($title|async)||''\"\n [parentPath]=\"parentPath\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p [class.cdk-visually-hidden]=\"showThirdTab\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"changeTitle($event)\">\n Change page title\n </ion-button>\n\n <ion-button (click)=\"addSubMenuItem($event)\">\n Add sub menu other 3\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, true)\">\n Add sub menu (outside route) - pinned\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, false)\">\n Add sub menu (outside route) - not pinned\n </ion-button>\n\n </p>\n\n <p>\n \n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab label=\"Second\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\"\n [disabled]=\"!showThirdTab && !toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle", "subMenuIcon"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i7.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
|
|
41
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OtherMenuTestingPage, decorators: [{
|
|
42
45
|
type: Component,
|
|
43
|
-
args: [{ selector: 'app-testing-menu-other', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title|async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab
|
|
46
|
+
args: [{ selector: 'app-testing-menu-other', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title|async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab label=\"Details\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"($title|async)||''\"\n [parentPath]=\"parentPath\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p [class.cdk-visually-hidden]=\"showThirdTab\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"changeTitle($event)\">\n Change page title\n </ion-button>\n\n <ion-button (click)=\"addSubMenuItem($event)\">\n Add sub menu other 3\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, true)\">\n Add sub menu (outside route) - pinned\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, false)\">\n Add sub menu (outside route) - not pinned\n </ion-button>\n\n </p>\n\n <p>\n \n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab label=\"Second\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\"\n [disabled]=\"!showThirdTab && !toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"] }]
|
|
44
47
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }]; } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1vdGhlci50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LW90aGVyLnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQU9sRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZTtJQUN2RCxZQUNFLEtBQXFCLEVBQUUsMkJBQTJCO0lBQ2xELE1BQWMsRUFDZCxhQUE0QixFQUM1QixTQUEwQixFQUMxQixTQUEyQixFQUMzQixXQUF3QjtRQUV4QixLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLHVCQUF1QixDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsNEJBQTRCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pGLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxLQUFLLENBQUMsWUFBWTtRQUMxQixvREFBb0Q7UUFDcEQsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0lBQ2hELENBQUM7O2lIQXZDVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixxRkNiakMsOG9HQThHQTsyRkRqR2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNZW51VGVzdGluZ1BhZ2UgfSBmcm9tICcuL21lbnUudGVzdGluZyc7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVzdGluZy1tZW51LW90aGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUudGVzdGluZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS50ZXN0aW5nLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgT3RoZXJNZW51VGVzdGluZ1BhZ2UgZXh0ZW5kcyBNZW51VGVzdGluZ1BhZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsIC8vIE1vZGFsIGVkaXRvciBnaXZlICdudWxsJ1xuICAgIHJvdXRlcjogUm91dGVyLFxuICAgIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXG4gICAgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZVxuICApIHtcbiAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBuYXZDb250cm9sbGVyLCBhbGVydEN0cmwsIHRyYW5zbGF0ZSwgbWVudVNlcnZpY2UpO1xuICAgIHRoaXMubG9nUHJlZml4ID0gJ1ttZW51LXRlc3Rpbmctb3RoZXJdICc7XG4gICAgdGhpcy5zaG93T3RoZXJMaW5rcyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1RoaXJkVGFiID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGluaXRTdWJNZW51KCkge1xuICAgIHRoaXMuc2Vjb25kVGFiVGl0bGUgPSAnU2Vjb25kJztcbiAgICB0aGlzLnBhcmVudFBhdGggPSAnL3Rlc3Rpbmcvc2hhcmVkL21lbnU/dGFiPTEnO1xuICAgIHRoaXMuY2hpbGRQYXRoID0gJyc7XG4gICAgdGhpcy5wYXRoID0gJy90ZXN0aW5nL3NoYXJlZC9tZW51L290aGVycy8nICsgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ290aGVySWQnKTtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBTZXR1cCB3aXRoYCwgeyBwYXRoOiB0aGlzLnBhdGgsIHBhcmVudFBhdGg6IHRoaXMucGFyZW50UGF0aCB9KTtcbiAgICB0aGlzLnRoaXJkVGFiVGl0bGUgPSAnVGhpcmQnO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLnRpdGxlID0gYXdhaXQgdGhpcy5jb21wdXRlVGl0bGUoKTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnT3RoZXInO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvbXB1dGVUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIExvYWQgdGl0bGUgKHdpdGggYSBkZWxheSAoZS5nLiB3aGVuIGxvYWRpbmcgZGF0YSlcbiAgICBhd2FpdCBzbGVlcCgyMDAwKTtcblxuICAgIGNvbnN0IG90aGVySWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnb3RoZXJJZCcpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFRpdGxlKCkgKyAnICcgKyBvdGhlcklkO1xuICB9XG59XG4iLCI8YXBwLXRvb2xiYXIgW2RlZmF1bHRCYWNrSHJlZl09XCJwYXJlbnRQYXRoXCI+XG4gIDxpb24tdGl0bGUgW2lubmVySFRNTF09XCIkdGl0bGV8YXN5bmNcIj48L2lvbi10aXRsZT5cbjwvYXBwLXRvb2xiYXI+XG5cbjxpb24tY29udGVudD5cblxuICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXBcbiAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICBkeW5hbWljSGVpZ2h0PlxuXG4gICAgPCEtLSBUQUI6IDEgLS0+XG4gICAgPG1hdC10YWIgbGFiZWw9XCJEZXRhaWxzXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICAgICAgICAgYXBwU3ViTWVudVRhYlxuICAgICAgICAgICAgIFtzdWJNZW51VGl0bGVdPVwiKCR0aXRsZXxhc3luYyl8fCcnXCJcbiAgICAgICAgICAgICBbcGFyZW50UGF0aF09XCJwYXJlbnRQYXRoXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD5EZXRhaWxzPC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgPHA+QSBmaXJzdCB0YWI8L3A+XG5cbiAgICAgICAgPHAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1RoaXJkVGFiXCI+XG4gICAgICAgICAgPGlvbi10b2dnbGUgI3RvZ2dsZVRoaXJkPlxuICAgICAgICAgICAgVG9nZ2xlIFRoaXJkIFRhYlxuICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VUaXRsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBDaGFuZ2UgcGFnZSB0aXRsZVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhZGRTdWJNZW51SXRlbSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBBZGQgc3ViIG1lbnUgb3RoZXIgM1xuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhZGRPdXRzaWRlUm91dGVTdWJNZW51SXRlbSgkZXZlbnQsIHRydWUpXCI+XG4gICAgICAgICAgICBBZGQgc3ViIG1lbnUgKG91dHNpZGUgcm91dGUpIC0gcGlubmVkXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZE91dHNpZGVSb3V0ZVN1Yk1lbnVJdGVtKCRldmVudCwgZmFsc2UpXCI+XG4gICAgICAgICAgICBBZGQgc3ViIG1lbnUgKG91dHNpZGUgcm91dGUpIC0gbm90IHBpbm5lZFxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgJm5ic3A7Jm5ic3A7XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUoZmFsc2UpXCIgKm5nSWY9XCJtZW51U2VydmljZS5lbmFibGVkfGFzeW5jXCI+XG4gICAgICAgICAgICBEaXNhYmxlIG1lbnVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUodHJ1ZSlcIiAqbmdJZj1cIiEobWVudVNlcnZpY2UuZW5hYmxlZHxhc3luYylcIj5cbiAgICAgICAgICAgIEVuYWJsZSBtZW51XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVTcGxpdFBhbmVXaGVuKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKG1lbnVTZXJ2aWNlLmVuYWJsZWR8YXN5bmMpXCI+XG4gICAgICAgICAgICBUb2dnbGUgc3BsaXQgcGFuZVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMiAtLT5cbiAgICA8bWF0LXRhYiBsYWJlbD1cIlNlY29uZFwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgIGFwcFN1Yk1lbnVUYWJcbiAgICAgICAgICAgICBbc3ViTWVudVRpdGxlXT1cIiRzZWNvbmRUYWJUaXRsZXxhc3luY1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWwgW2lubmVySFRNTF09XCIkc2Vjb25kVGFiVGl0bGV8YXN5bmNcIj48L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIHNlY29uZCB0YWI8L3A+XG5cbiAgICAgICAgPHAgKm5nSWY9XCJzaG93T3RoZXJMaW5rc1wiPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMSdcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMidcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VTZWNvbmRUYWJUaXRsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBDaGFuZ2UgdGFiIGxhYmVsXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAzIC0tPlxuICAgIDxtYXQtdGFiIGFwcFN1Yk1lbnVUYWIgW2xhYmVsXT1cInRoaXJkVGFiVGl0bGVcIlxuICAgICAgICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2hvd1RoaXJkVGFiICYmICF0b2dnbGVUaGlyZC5jaGVja2VkXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD57e3RoaXJkVGFiVGl0bGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIEEgdGhpcmQgdGFiXG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cbiAgPC9tYXQtdGFiLWdyb3VwPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Component
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
2
|
import { AppTabEditor } from '../../form/entity/editor.class';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { DateUtils } from '../../../shared/dates';
|
|
5
|
+
import { toBoolean } from '../../../shared/functions';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/router";
|
|
7
8
|
import * as i2 from "@ionic/angular";
|
|
@@ -22,7 +23,9 @@ export class MenuTestingPage extends AppTabEditor {
|
|
|
22
23
|
this.childPath = '';
|
|
23
24
|
this.thirdTabTitle = '';
|
|
24
25
|
this.parentPath = null;
|
|
26
|
+
this.path = null;
|
|
25
27
|
this.showOtherLinks = true;
|
|
28
|
+
this.showThirdTab = false;
|
|
26
29
|
this.$title = new Subject();
|
|
27
30
|
this.$secondTabTitle = new Subject();
|
|
28
31
|
}
|
|
@@ -35,10 +38,10 @@ export class MenuTestingPage extends AppTabEditor {
|
|
|
35
38
|
ngOnInit() {
|
|
36
39
|
console.debug(`${this.logPrefix} Init page...`);
|
|
37
40
|
super.ngOnInit();
|
|
38
|
-
this.initSubMenu();
|
|
39
41
|
}
|
|
40
42
|
ngAfterViewInit() {
|
|
41
43
|
super.ngAfterViewInit();
|
|
44
|
+
this.initSubMenu();
|
|
42
45
|
}
|
|
43
46
|
ngOnDestroy() {
|
|
44
47
|
super.ngOnDestroy();
|
|
@@ -67,6 +70,22 @@ export class MenuTestingPage extends AppTabEditor {
|
|
|
67
70
|
const time = DateUtils.moment().format('HH:mm:ss');
|
|
68
71
|
this.secondTabTitle = `<small>${time}<br/></small>Second`;
|
|
69
72
|
}
|
|
73
|
+
addSubMenuItem(event) {
|
|
74
|
+
this.menuService.addSubMenuItem({
|
|
75
|
+
title: 'Fake',
|
|
76
|
+
parentPath: this.path,
|
|
77
|
+
path: this.path + '/fake',
|
|
78
|
+
//pinned: true
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
addOutsideRouteSubMenuItem(event, pinned) {
|
|
82
|
+
this.menuService.addSubMenuItem({
|
|
83
|
+
title: 'Fake',
|
|
84
|
+
parentPath: '/admin/users',
|
|
85
|
+
path: '/admin/users/fake',
|
|
86
|
+
pinned: toBoolean(pinned, false),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
70
89
|
enableMenu(value) {
|
|
71
90
|
this.menuService.enable(value);
|
|
72
91
|
}
|
|
@@ -78,9 +97,10 @@ export class MenuTestingPage extends AppTabEditor {
|
|
|
78
97
|
this.secondTabTitle = 'Others';
|
|
79
98
|
this.thirdTabTitle = 'Third';
|
|
80
99
|
this.parentPath = '/testing';
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
console.debug(`${this.logPrefix} Setup with`, { path, parentPath: this.parentPath });
|
|
100
|
+
this.path = this.parentPath + '/shared/menu';
|
|
101
|
+
this.childPath = this.path + '/others';
|
|
102
|
+
console.debug(`${this.logPrefix} Setup with`, { path: this.path, parentPath: this.parentPath });
|
|
103
|
+
this.markForCheck();
|
|
84
104
|
}
|
|
85
105
|
getFirstInvalidTabIndex() {
|
|
86
106
|
return 0;
|
|
@@ -93,12 +113,9 @@ export class MenuTestingPage extends AppTabEditor {
|
|
|
93
113
|
}
|
|
94
114
|
}
|
|
95
115
|
MenuTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuTestingPage, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
-
MenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuTestingPage, selector: "app-testing-menu",
|
|
116
|
+
MenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuTestingPage, selector: "app-testing-menu", usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title|async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab label=\"Details\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"($title|async)||''\"\n [parentPath]=\"parentPath\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p [class.cdk-visually-hidden]=\"showThirdTab\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"changeTitle($event)\">\n Change page title\n </ion-button>\n\n <ion-button (click)=\"addSubMenuItem($event)\">\n Add sub menu other 3\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, true)\">\n Add sub menu (outside route) - pinned\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, false)\">\n Add sub menu (outside route) - not pinned\n </ion-button>\n\n </p>\n\n <p>\n \n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab label=\"Second\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\"\n [disabled]=\"!showThirdTab && !toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle", "subMenuIcon"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i7.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
|
|
97
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuTestingPage, decorators: [{
|
|
98
118
|
type: Component,
|
|
99
|
-
args: [{ selector: 'app-testing-menu', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title|async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab
|
|
100
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }]; }
|
|
101
|
-
type: ViewChild,
|
|
102
|
-
args: ['toggleThird']
|
|
103
|
-
}] } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBT2xELE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUFvQi9DLFlBQ0UsS0FBcUIsRUFBRSwyQkFBMkI7SUFDbEQsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLFNBQTBCLEVBQzFCLFNBQTJCLEVBQ2pCLFdBQXdCO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFO1lBQ3hELFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQyxDQUFDO1FBSk8sZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF2QjFCLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2Ysa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUV0QixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUMvQixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFxQmxELENBQUM7SUFuQkQsSUFBYyxLQUFLLENBQUMsS0FB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SUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OzRHQXpHVSxlQUFlO2dHQUFmLGVBQWUsMkxDZDVCLDhrRkEyRkE7MkZEN0VhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0Usa0JBQWtCOzZPQUtGLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVGFiRWRpdG9yIH0gZnJvbSAnLi4vLi4vZm9ybS9lbnRpdHkvZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBJb25Ub2dnbGUsIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGF0ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVzdGluZy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUudGVzdGluZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS50ZXN0aW5nLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVRlc3RpbmdQYWdlIGV4dGVuZHMgQXBwVGFiRWRpdG9yIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCd0b2dnbGVUaGlyZCcpIHRvZ2dsZVRoaXJkOiBJb25Ub2dnbGU7XG5cbiAgcHJvdGVjdGVkIGxvZ1ByZWZpeCA9ICdbbWVudS10ZXN0aW5nXSAnO1xuICBwcm90ZWN0ZWQgY2hpbGRQYXRoID0gJyc7XG4gIHByb3RlY3RlZCB0aGlyZFRhYlRpdGxlID0gJyc7XG4gIHByb3RlY3RlZCBwYXJlbnRQYXRoOiBzdHJpbmcgPSBudWxsO1xuICBwcm90ZWN0ZWQgc2hvd090aGVyTGlua3MgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCAkdGl0bGUgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByb3RlY3RlZCAkc2Vjb25kVGFiVGl0bGUgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHJvdGVjdGVkIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy4kdGl0bGUubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHNlY29uZFRhYlRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiRzZWNvbmRUYWJUaXRsZS5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZVxuICApIHtcbiAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBuYXZDb250cm9sbGVyLCBhbGVydEN0cmwsIHRyYW5zbGF0ZSwge1xuICAgICAgdGFiQ291bnQ6IDMsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBJbml0IHBhZ2UuLi5gKTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pbml0U3ViTWVudSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fURlc3Ryb3lpbmcuLi5gKTtcbiAgfVxuXG4gIGxvYWQoaWQ/OiBudW1iZXIsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBnZXQgaXNOZXdEYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCwgb3B0aW9uczogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gIH1cblxuICBjaGFuZ2VUaXRsZShldmVudD86IFVJRXZlbnQpIHtcbiAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lID0gRGF0ZVV0aWxzLm1vbWVudCgpLmZvcm1hdCgnSEg6bW06c3MnKTtcbiAgICAgIHRoaXMudGl0bGUgPSBgJHt0aGlzLmdldERlZmF1bHRUaXRsZSgpfSA8Yj4ke3RpbWV9PC9iPmA7XG4gICAgfSwgMjAwMCk7XG4gIH1cblxuICBjaGFuZ2VTZWNvbmRUYWJUaXRsZShldmVudD86IFVJRXZlbnQpIHtcbiAgICBjb25zdCB0aW1lID0gRGF0ZVV0aWxzLm1vbWVudCgpLmZvcm1hdCgnSEg6bW06c3MnKTtcbiAgICB0aGlzLnNlY29uZFRhYlRpdGxlID0gYDxzbWFsbD4ke3RpbWV9PGJyLz48L3NtYWxsPlNlY29uZGA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5hYmxlTWVudSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubWVudVNlcnZpY2UuZW5hYmxlKHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgdG9nZ2xlU3BsaXRQYW5lV2hlbigpIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnRvZ2dsZVNwbGl0UGFuZVdoZW4oKTtcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgaW5pdFN1Yk1lbnUoKSB7XG4gICAgdGhpcy50aXRsZSA9IGF3YWl0IHRoaXMuY29tcHV0ZVRpdGxlKCk7XG5cbiAgICB0aGlzLnNlY29uZFRhYlRpdGxlID0gJ090aGVycyc7XG4gICAgdGhpcy50aGlyZFRhYlRpdGxlID0gJ1RoaXJkJztcbiAgICB0aGlzLnBhcmVudFBhdGggPSAnL3Rlc3RpbmcnO1xuICAgIHRoaXMuY2hpbGRQYXRoID0gJy90ZXN0aW5nL3NoYXJlZC9tZW51L290aGVycyc7XG4gICAgY29uc3QgcGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudSc7XG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH0gU2V0dXAgd2l0aGAsIHsgcGF0aCwgcGFyZW50UGF0aDogdGhpcy5wYXJlbnRQYXRoIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdFRpdGxlKCkge1xuICAgIHJldHVybiAnTWVudSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY29tcHV0ZVRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRUaXRsZSgpO1xuICB9XG59XG4iLCI8YXBwLXRvb2xiYXIgW2RlZmF1bHRCYWNrSHJlZl09XCJwYXJlbnRQYXRoXCI+XG4gIDxpb24tdGl0bGUgW2lubmVySFRNTF09XCIkdGl0bGV8YXN5bmNcIj48L2lvbi10aXRsZT5cbjwvYXBwLXRvb2xiYXI+XG5cbjxpb24tY29udGVudD5cblxuICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXBcbiAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICBkeW5hbWljSGVpZ2h0PlxuXG4gICAgPCEtLSBUQUI6IDEgLS0+XG4gICAgPG1hdC10YWIgYXBwU3ViTWVudVRhYiBsYWJlbD1cIkRldGFpbHNcIiBjbGFzcz1cImlvbi1wYWRkaW5nXCJcbiAgICAgICAgICAgICBbc3ViTWVudVRpdGxlXT1cIiR0aXRsZXxhc3luY1wiIFtwYXJlbnRQYXRoXT1cInBhcmVudFBhdGhcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPkRldGFpbHM8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIGZpcnN0IHRhYjwvcD5cblxuICAgICAgICA8cD5cbiAgICAgICAgICA8aW9uLXRvZ2dsZSAjdG9nZ2xlVGhpcmQ+XG4gICAgICAgICAgICBUb2dnbGUgVGhpcmQgVGFiXG4gICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNoYW5nZVRpdGxlKCRldmVudClcIj5cbiAgICAgICAgICAgIFJlbG9hZCBwYWdlIHRpdGxlXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICZuYnNwOyZuYnNwO1xuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJlbmFibGVNZW51KGZhbHNlKVwiICpuZ0lmPVwibWVudVNlcnZpY2UuZW5hYmxlZHxhc3luY1wiPlxuICAgICAgICAgICAgRGlzYWJsZSBtZW51XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJlbmFibGVNZW51KHRydWUpXCIgKm5nSWY9XCIhKG1lbnVTZXJ2aWNlLmVuYWJsZWR8YXN5bmMpXCI+XG4gICAgICAgICAgICBFbmFibGUgbWVudVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU3BsaXRQYW5lV2hlbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIShtZW51U2VydmljZS5lbmFibGVkfGFzeW5jKVwiPlxuICAgICAgICAgICAgVG9nZ2xlIHNwbGl0IHBhbmVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBUQUI6IDIgLS0+XG4gICAgPG1hdC10YWIgYXBwU3ViTWVudVRhYlxuICAgICAgICAgICAgIFtzdWJNZW51VGl0bGVdPVwiJHNlY29uZFRhYlRpdGxlfGFzeW5jXCJcbiAgICAgICAgICAgICBsYWJlbD1cIlNlY29uZFwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsIFtpbm5lckhUTUxdPVwiJHNlY29uZFRhYlRpdGxlfGFzeW5jXCI+PC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgPHA+QSBzZWNvbmQgdGFiPC9wPlxuXG4gICAgICAgIDxwICpuZ0lmPVwic2hvd090aGVyTGlua3NcIj5cbiAgICAgICAgICBOYXZpZ2F0ZSB0byA6IDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkUGF0aCsnLzEnXCIgPlxuICAgICAgICAgICAge3sgY2hpbGRQYXRoIH19LzFcbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGJyLz5cbiAgICAgICAgICBOYXZpZ2F0ZSB0byA6IDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkUGF0aCsnLzInXCIgPlxuICAgICAgICAgICAge3sgY2hpbGRQYXRoIH19LzJcbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8cD5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlU2Vjb25kVGFiVGl0bGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgQ2hhbmdlIHRhYiBsYWJlbFxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMyAtLT5cbiAgICA8bWF0LXRhYiBhcHBTdWJNZW51VGFiIFtsYWJlbF09XCJ0aGlyZFRhYlRpdGxlXCJcbiAgICAgICAgICAgICBjbGFzcz1cImlvbi1wYWRkaW5nXCIgW2Rpc2FibGVkXT1cIiF0b2dnbGVUaGlyZC5jaGVja2VkXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD57e3RoaXJkVGFiVGl0bGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIEEgdGhpcmQgdGFiXG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cbiAgPC9tYXQtdGFiLWdyb3VwPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
119
|
+
args: [{ selector: 'app-testing-menu', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title|async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n\n <mat-tab-group #tabGroup\n [(selectedIndex)]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n dynamicHeight>\n\n <!-- TAB: 1 -->\n <mat-tab label=\"Details\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"($title|async)||''\"\n [parentPath]=\"parentPath\">\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p [class.cdk-visually-hidden]=\"showThirdTab\">\n <ion-toggle #toggleThird>\n Toggle Third Tab\n </ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"changeTitle($event)\">\n Change page title\n </ion-button>\n\n <ion-button (click)=\"addSubMenuItem($event)\">\n Add sub menu other 3\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, true)\">\n Add sub menu (outside route) - pinned\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, false)\">\n Add sub menu (outside route) - not pinned\n </ion-button>\n\n </p>\n\n <p>\n \n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled|async\">\n Disable menu\n </ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"!(menuService.enabled|async)\">\n Enable menu\n </ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\"\n [disabled]=\"!(menuService.enabled|async)\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab label=\"Second\" class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"$secondTabTitle|async\">\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle|async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to : <a [routerLink]=\"childPath+'/1'\" >\n {{ childPath }}/1\n </a>\n <br/>\n Navigate to : <a [routerLink]=\"childPath+'/2'\" >\n {{ childPath }}/2\n </a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">\n Change tab label\n </ion-button>\n </p>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab appSubMenuTab [label]=\"thirdTabTitle\"\n class=\"ion-padding\"\n [disabled]=\"!showThirdTab && !toggleThird.checked\">\n <ng-template mat-tab-label>\n <ion-label>{{thirdTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A third tab\n </div>\n\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"] }]
|
|
120
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }]; } });
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUFvQi9DLFlBQ0UsS0FBcUIsRUFBRSwyQkFBMkI7SUFDbEQsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLFNBQTBCLEVBQzFCLFNBQTJCLEVBQ2pCLFdBQXdCO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFO1lBQ3hELFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQyxDQUFDO1FBSk8sZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF6QjFCLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2Ysa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQixTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLFdBQU0sR0FBRyxJQUFJLE9B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VztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRVMsdUJBQXVCO1FBQy9CLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVTLGVBQWU7UUFDdkIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVTLEtBQUssQ0FBQyxZQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OzRHQTNIVSxlQUFlO2dHQUFmLGVBQWUsK0VDZjVCLDhvR0E4R0E7MkZEL0ZhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVGFiRWRpdG9yIH0gZnJvbSAnLi4vLi4vZm9ybS9lbnRpdHkvZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RhdGVzJztcbmltcG9ydCB7IHRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVzdGluZy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUudGVzdGluZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS50ZXN0aW5nLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVRlc3RpbmdQYWdlIGV4dGVuZHMgQXBwVGFiRWRpdG9yIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgbG9nUHJlZml4ID0gJ1ttZW51LXRlc3RpbmddICc7XG4gIHByb3RlY3RlZCBjaGlsZFBhdGggPSAnJztcbiAgcHJvdGVjdGVkIHRoaXJkVGFiVGl0bGUgPSAnJztcbiAgcHJvdGVjdGVkIHBhcmVudFBhdGg6IHN0cmluZyA9IG51bGw7XG4gIHByb3RlY3RlZCBwYXRoOiBzdHJpbmcgPSBudWxsO1xuICBwcm90ZWN0ZWQgc2hvd090aGVyTGlua3MgPSB0cnVlO1xuICBwcm90ZWN0ZWQgc2hvd1RoaXJkVGFiID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkICR0aXRsZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJvdGVjdGVkICRzZWNvbmRUYWJUaXRsZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBwcm90ZWN0ZWQgc2V0IHRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiR0aXRsZS5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXQgc2Vjb25kVGFiVGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuJHNlY29uZFRhYlRpdGxlLm5leHQodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCAvLyBNb2RhbCBlZGl0b3IgZ2l2ZSAnbnVsbCdcbiAgICByb3V0ZXI6IFJvdXRlcixcbiAgICBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIG5hdkNvbnRyb2xsZXIsIGFsZXJ0Q3RybCwgdHJhbnNsYXRlLCB7XG4gICAgICB0YWJDb3VudDogMyxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IEluaXQgcGFnZS4uLmApO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLmluaXRTdWJNZW51KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9RGVzdHJveWluZy4uLmApO1xuICB9XG5cbiAgbG9hZChpZD86IG51bWJlciwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGdldCBpc05ld0RhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHNhdmUoZXZlbnQ6IEV2ZW50IHwgdW5kZWZpbmVkLCBvcHRpb25zOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuXG4gIGNoYW5nZVRpdGxlKGV2ZW50PzogVUlFdmVudCkge1xuICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWUgPSBEYXRlVXRpbHMubW9tZW50KCkuZm9ybWF0KCdISDptbTpzcycpO1xuICAgICAgdGhpcy50aXRsZSA9IGAke3RoaXMuZ2V0RGVmYXVsdFRpdGxlKCl9IDxiPiR7dGltZX08L2I+YDtcbiAgICB9LCAyMDAwKTtcbiAgfVxuXG4gIGNoYW5nZVNlY29uZFRhYlRpdGxlKGV2ZW50PzogVUlFdmVudCkge1xuICAgIGNvbnN0IHRpbWUgPSBEYXRlVXRpbHMubW9tZW50KCkuZm9ybWF0KCdISDptbTpzcycpO1xuICAgIHRoaXMuc2Vjb25kVGFiVGl0bGUgPSBgPHNtYWxsPiR7dGltZX08YnIvPjwvc21hbGw+U2Vjb25kYDtcbiAgfVxuXG4gIGFkZFN1Yk1lbnVJdGVtKGV2ZW50PzogVUlFdmVudCkge1xuICAgIHRoaXMubWVudVNlcnZpY2UuYWRkU3ViTWVudUl0ZW0oe1xuICAgICAgdGl0bGU6ICdGYWtlJyxcbiAgICAgIHBhcmVudFBhdGg6IHRoaXMucGF0aCxcbiAgICAgIHBhdGg6IHRoaXMucGF0aCArICcvZmFrZScsXG4gICAgICAvL3Bpbm5lZDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgYWRkT3V0c2lkZVJvdXRlU3ViTWVudUl0ZW0oZXZlbnQ/OiBVSUV2ZW50LCBwaW5uZWQ/OiBib29sZWFuKSB7XG4gICAgdGhpcy5tZW51U2VydmljZS5hZGRTdWJNZW51SXRlbSh7XG4gICAgICB0aXRsZTogJ0Zha2UnLFxuICAgICAgcGFyZW50UGF0aDogJy9hZG1pbi91c2VycycsXG4gICAgICBwYXRoOiAnL2FkbWluL3VzZXJzL2Zha2UnLFxuICAgICAgcGlubmVkOiB0b0Jvb2xlYW4ocGlubmVkLCBmYWxzZSksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5hYmxlTWVudSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubWVudVNlcnZpY2UuZW5hYmxlKHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgdG9nZ2xlU3BsaXRQYW5lV2hlbigpIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnRvZ2dsZVNwbGl0UGFuZVdoZW4oKTtcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgaW5pdFN1Yk1lbnUoKSB7XG4gICAgdGhpcy50aXRsZSA9IGF3YWl0IHRoaXMuY29tcHV0ZVRpdGxlKCk7XG4gICAgdGhpcy5zZWNvbmRUYWJUaXRsZSA9ICdPdGhlcnMnO1xuICAgIHRoaXMudGhpcmRUYWJUaXRsZSA9ICdUaGlyZCc7XG4gICAgdGhpcy5wYXJlbnRQYXRoID0gJy90ZXN0aW5nJztcbiAgICB0aGlzLnBhdGggPSB0aGlzLnBhcmVudFBhdGggKyAnL3NoYXJlZC9tZW51JztcbiAgICB0aGlzLmNoaWxkUGF0aCA9IHRoaXMucGF0aCArICcvb3RoZXJzJztcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBTZXR1cCB3aXRoYCwgeyBwYXRoOiB0aGlzLnBhdGgsIHBhcmVudFBhdGg6IHRoaXMucGFyZW50UGF0aCB9KTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdFRpdGxlKCkge1xuICAgIHJldHVybiAnTWVudSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY29tcHV0ZVRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRUaXRsZSgpO1xuICB9XG59XG4iLCI8YXBwLXRvb2xiYXIgW2RlZmF1bHRCYWNrSHJlZl09XCJwYXJlbnRQYXRoXCI+XG4gIDxpb24tdGl0bGUgW2lubmVySFRNTF09XCIkdGl0bGV8YXN5bmNcIj48L2lvbi10aXRsZT5cbjwvYXBwLXRvb2xiYXI+XG5cbjxpb24tY29udGVudD5cblxuICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXBcbiAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICBkeW5hbWljSGVpZ2h0PlxuXG4gICAgPCEtLSBUQUI6IDEgLS0+XG4gICAgPG1hdC10YWIgbGFiZWw9XCJEZXRhaWxzXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICAgICAgICAgYXBwU3ViTWVudVRhYlxuICAgICAgICAgICAgIFtzdWJNZW51VGl0bGVdPVwiKCR0aXRsZXxhc3luYyl8fCcnXCJcbiAgICAgICAgICAgICBbcGFyZW50UGF0aF09XCJwYXJlbnRQYXRoXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD5EZXRhaWxzPC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgPHA+QSBmaXJzdCB0YWI8L3A+XG5cbiAgICAgICAgPHAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1RoaXJkVGFiXCI+XG4gICAgICAgICAgPGlvbi10b2dnbGUgI3RvZ2dsZVRoaXJkPlxuICAgICAgICAgICAgVG9nZ2xlIFRoaXJkIFRhYlxuICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VUaXRsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBDaGFuZ2UgcGFnZSB0aXRsZVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhZGRTdWJNZW51SXRlbSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBBZGQgc3ViIG1lbnUgb3RoZXIgM1xuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhZGRPdXRzaWRlUm91dGVTdWJNZW51SXRlbSgkZXZlbnQsIHRydWUpXCI+XG4gICAgICAgICAgICBBZGQgc3ViIG1lbnUgKG91dHNpZGUgcm91dGUpIC0gcGlubmVkXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZE91dHNpZGVSb3V0ZVN1Yk1lbnVJdGVtKCRldmVudCwgZmFsc2UpXCI+XG4gICAgICAgICAgICBBZGQgc3ViIG1lbnUgKG91dHNpZGUgcm91dGUpIC0gbm90IHBpbm5lZFxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgJm5ic3A7Jm5ic3A7XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUoZmFsc2UpXCIgKm5nSWY9XCJtZW51U2VydmljZS5lbmFibGVkfGFzeW5jXCI+XG4gICAgICAgICAgICBEaXNhYmxlIG1lbnVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUodHJ1ZSlcIiAqbmdJZj1cIiEobWVudVNlcnZpY2UuZW5hYmxlZHxhc3luYylcIj5cbiAgICAgICAgICAgIEVuYWJsZSBtZW51XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVTcGxpdFBhbmVXaGVuKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKG1lbnVTZXJ2aWNlLmVuYWJsZWR8YXN5bmMpXCI+XG4gICAgICAgICAgICBUb2dnbGUgc3BsaXQgcGFuZVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMiAtLT5cbiAgICA8bWF0LXRhYiBsYWJlbD1cIlNlY29uZFwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgIGFwcFN1Yk1lbnVUYWJcbiAgICAgICAgICAgICBbc3ViTWVudVRpdGxlXT1cIiRzZWNvbmRUYWJUaXRsZXxhc3luY1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWwgW2lubmVySFRNTF09XCIkc2Vjb25kVGFiVGl0bGV8YXN5bmNcIj48L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIHNlY29uZCB0YWI8L3A+XG5cbiAgICAgICAgPHAgKm5nSWY9XCJzaG93T3RoZXJMaW5rc1wiPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMSdcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YnIvPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDogPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoKycvMidcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX0vMlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VTZWNvbmRUYWJUaXRsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBDaGFuZ2UgdGFiIGxhYmVsXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAzIC0tPlxuICAgIDxtYXQtdGFiIGFwcFN1Yk1lbnVUYWIgW2xhYmVsXT1cInRoaXJkVGFiVGl0bGVcIlxuICAgICAgICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2hvd1RoaXJkVGFiICYmICF0b2dnbGVUaGlyZC5jaGVja2VkXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD57e3RoaXJkVGFiVGl0bGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIEEgdGhpcmQgdGFiXG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cbiAgPC9tYXQtdGFiLWdyb3VwPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|