@sumaris-net/ngx-components 2.4.112 → 2.4.115

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.
Files changed (64) hide show
  1. package/doc/changelog.md +4 -1
  2. package/esm2020/public_api.mjs +4 -1
  3. package/esm2020/src/app/admin/services/filter/person.filter.mjs +1 -1
  4. package/esm2020/src/app/admin/services/person.service.mjs +9 -1
  5. package/esm2020/src/app/core/form/entity/editor.class.mjs +7 -7
  6. package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +5 -2
  7. package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +1 -1
  8. package/esm2020/src/app/core/graphql/graphql.service.mjs +4 -1
  9. package/esm2020/src/app/core/menu/menu.component.mjs +33 -94
  10. package/esm2020/src/app/core/menu/menu.model.mjs +45 -1
  11. package/esm2020/src/app/core/menu/menu.service.mjs +250 -7
  12. package/esm2020/src/app/core/menu/testing/menu-other.testing.mjs +52 -0
  13. package/esm2020/src/app/core/menu/testing/menu.testing.mjs +106 -0
  14. package/esm2020/src/app/core/menu/testing/menu.testing.module.mjs +79 -0
  15. package/esm2020/src/app/core/services/account.service.mjs +2 -2
  16. package/esm2020/src/app/core/services/crypto.service.mjs +14 -21
  17. package/esm2020/src/app/core/services/model/account.model.mjs +1 -1
  18. package/esm2020/src/app/core/services/model/config.model.mjs +1 -1
  19. package/esm2020/src/app/core/services/model/department.model.mjs +1 -1
  20. package/esm2020/src/app/core/services/model/peer.model.mjs +1 -1
  21. package/esm2020/src/app/core/services/model/person.model.mjs +1 -1
  22. package/esm2020/src/app/core/services/model/referential.model.mjs +1 -1
  23. package/esm2020/src/app/core/services/model/settings.model.mjs +1 -1
  24. package/esm2020/src/app/core/services/network.service.mjs +9 -6
  25. package/esm2020/src/app/core/services/platform.service.mjs +3 -2
  26. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +1 -1
  27. package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +1 -1
  28. package/esm2020/src/app/core/table/table-select-columns.component.mjs +1 -1
  29. package/esm2020/src/app/shared/file/json.utils.mjs +3 -3
  30. package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +1 -1
  31. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +1 -1
  32. package/esm2020/src/app/shared/interceptors/progess.interceptor.mjs +1 -1
  33. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +1 -1
  34. package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +1 -1
  35. package/esm2020/src/app/shared/services/startable-service.class.mjs +1 -1
  36. package/esm2020/src/app/shared/shared.testing.module.mjs +15 -7
  37. package/esm2020/src/app/shared/toast/toast.testing.mjs +1 -1
  38. package/esm2020/src/app/shared/toolbar/toolbar.mjs +1 -1
  39. package/esm2020/src/app/social/job/progression/job-progression.model.mjs +1 -1
  40. package/esm2020/src/app/social/message/message.model.mjs +1 -1
  41. package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +1 -1
  42. package/esm2020/src/app/social/user-event/user-event.service.mjs +3 -2
  43. package/fesm2015/sumaris-net.ngx-components.mjs +1031 -589
  44. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
  45. package/fesm2020/sumaris-net.ngx-components.mjs +1025 -589
  46. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
  47. package/package.json +8 -6
  48. package/public_api.d.ts +3 -0
  49. package/src/app/admin/services/person.service.d.ts +5 -0
  50. package/src/app/core/form/text-popover/text-popover.component.d.ts +2 -1
  51. package/src/app/core/menu/menu.component.d.ts +17 -13
  52. package/src/app/core/menu/menu.model.d.ts +30 -1
  53. package/src/app/core/menu/menu.service.d.ts +49 -3
  54. package/src/app/core/menu/testing/menu-other.testing.d.ts +13 -0
  55. package/src/app/core/menu/testing/menu.testing.d.ts +34 -0
  56. package/src/app/core/menu/testing/menu.testing.module.d.ts +12 -0
  57. package/src/app/core/services/account.service.d.ts +1 -1
  58. package/src/app/core/services/crypto.service.d.ts +7 -7
  59. package/src/app/core/services/network.service.d.ts +1 -1
  60. package/src/app/core/services/platform.service.d.ts +3 -2
  61. package/src/app/shared/shared.testing.module.d.ts +2 -1
  62. package/src/assets/i18n/en-US.json +1 -0
  63. package/src/assets/i18n/en.json +1 -0
  64. package/src/assets/i18n/fr.json +1 -0
@@ -1,13 +1,42 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject, Subject } from 'rxjs';
1
+ import { EventEmitter, Inject, Injectable, Optional } from '@angular/core';
2
+ import { BehaviorSubject, merge, Subject } from 'rxjs';
3
+ import { MenuItems } from './menu.model';
4
+ import { APP_MENU_ITEMS } from './menu.component';
5
+ import { NavigationEnd } from '@angular/router';
6
+ import { StartableService } from '../../shared/services/startable-service.class';
7
+ import { ENVIRONMENT } from '../../../environments/environment.class';
8
+ import { DateUtils } from '../../shared/dates';
9
+ import { debounceTime, filter, map, mapTo, mergeMap, tap } from 'rxjs/operators';
10
+ import { CORE_CONFIG_OPTIONS } from '../services/config/core.config';
11
+ import { isNotNilOrBlank } from '../../shared/functions';
3
12
  import * as i0 from "@angular/core";
13
+ import * as i1 from "../services/platform.service";
14
+ import * as i2 from "../services/config.service";
15
+ import * as i3 from "../services/account.service";
16
+ import * as i4 from "@angular/router";
17
+ import * as i5 from "../../../environments/environment.class";
4
18
  export const DEFAULT_MENU_SHOW_WHEN = 'lg';
5
- export class MenuService {
6
- constructor() {
19
+ export class MenuService extends StartableService {
20
+ constructor(platformService, configService, accountService, router, environment, rootItems) {
21
+ super(platformService);
22
+ this.platformService = platformService;
23
+ this.configService = configService;
24
+ this.accountService = accountService;
25
+ this.router = router;
26
+ this.environment = environment;
27
+ this.onLoginChange = new Subject();
28
+ this.onUpdateMenu = new EventEmitter();
29
+ this.$items = new BehaviorSubject(undefined);
30
+ this._logPrefix = '[menu-service]';
7
31
  this._$toggled = new Subject();
8
32
  this._$opened = new Subject();
9
33
  this._$splitPaneWhen = new BehaviorSubject(DEFAULT_MENU_SHOW_WHEN);
10
34
  this._$enabled = new BehaviorSubject(true);
35
+ this._debug = !environment.production;
36
+ this.$items.next((rootItems || []).map(i => this.prepareItem(i)));
37
+ }
38
+ get rootItems() {
39
+ return this.$items.value;
11
40
  }
12
41
  get opened() {
13
42
  return this._$opened.asObservable();
@@ -43,13 +72,227 @@ export class MenuService {
43
72
  _markAsClosed() {
44
73
  this._$opened.next(false);
45
74
  }
75
+ async addSubMenuItems(newItems, opts) {
76
+ await this.ready();
77
+ newItems.forEach(i => this.addSubMenuItem(i), opts);
78
+ }
79
+ async ngOnStart() {
80
+ console.info(`${this._logPrefix} Starting...`);
81
+ // Update component when refresh is need (=login events or config changed)
82
+ this.registerSubscription(merge(merge(this.accountService.onLogin
83
+ .pipe(
84
+ // Filter on account changes
85
+ filter(account => !DateUtils.isSame(account?.updateDate, this.lastAccountUpdateDate))), this.configService.config
86
+ .pipe(
87
+ // Store the config
88
+ tap(config => this._config = config)))
89
+ .pipe(
90
+ // Add debounce to avoid to trigger twice, at startup
91
+ debounceTime(250),
92
+ // Wait account service ready (can be restarted)
93
+ mergeMap(() => this.accountService.ready()), map(() => this.accountService.account)),
94
+ // Logout
95
+ this.accountService.onLogout.pipe(mapTo(null)))
96
+ .subscribe(async (account) => {
97
+ if (account?.updateDate) {
98
+ this.lastAccountUpdateDate = account.updateDate;
99
+ this.onLoginChange.next(account);
100
+ }
101
+ else {
102
+ this.lastAccountUpdateDate = null;
103
+ this.onLoginChange.next(null);
104
+ }
105
+ this.refreshMenuItems();
106
+ }));
107
+ this.registerSubscription(this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event) => {
108
+ const pathParam = MenuItems.parsePathWithQuery(event.url);
109
+ const excludedItems = [];
110
+ const items = this.detachSubMenus(pathParam, this.$items.value, excludedItems);
111
+ console.debug(`${this._logPrefix} Detached sub menus: `, excludedItems);
112
+ // this.addSubMenuItems();
113
+ //this.$items.next(items);
114
+ }));
115
+ return this.$items.value;
116
+ }
117
+ refreshMenuItems() {
118
+ if (this._debug)
119
+ console.debug(`${this._logPrefix} Refreshing menu items...`);
120
+ // Insert menu items, from the config
121
+ const configValue = this._config && this._config.getProperty(CORE_CONFIG_OPTIONS.MENU_ITEMS);
122
+ if (isNotNilOrBlank(configValue)) {
123
+ try {
124
+ const configItems = JSON.parse(configValue);
125
+ this._data = (configItems || []).reduce((res, item) => {
126
+ if (item.after) {
127
+ const index = res.findIndex(i => i.title === item.after);
128
+ if (index !== -1) {
129
+ return res.slice(0, index + 1)
130
+ .concat(item)
131
+ .concat(res.slice(index + 1));
132
+ }
133
+ }
134
+ if (item.before) {
135
+ const index = res.findIndex(i => i.title === item.before);
136
+ if (index !== -1) {
137
+ return res.slice(0, index)
138
+ .concat(item)
139
+ .concat(res.slice(index));
140
+ }
141
+ }
142
+ return res.concat(item);
143
+ }, this._data);
144
+ }
145
+ catch (err) {
146
+ console.error(`${this._logPrefix} Invalid value for option '${CORE_CONFIG_OPTIONS.MENU_ITEMS.key}'. Expected an array of menu item`, err);
147
+ }
148
+ }
149
+ // TODO : isLogin is not used in MenuItems.checkIfVisible
150
+ const opts = { debug: this._debug };
151
+ const filteredItems = this._data
152
+ .filter(item => MenuItems.checkIfVisible(item, this.accountService, this._config, opts))
153
+ .map(item => {
154
+ // Replace title using properties
155
+ if (isNotNilOrBlank(item.titleProperty) && this._config) {
156
+ const title = this._config.properties[item.titleProperty];
157
+ if (title)
158
+ return { ...item, title }; // Create a copy, to keep the original item.title
159
+ }
160
+ return item;
161
+ });
162
+ this.$items.next(filteredItems);
163
+ }
164
+ async addSubMenuItem(newItem, opts) {
165
+ opts = {
166
+ skipIfExists: false,
167
+ ...opts,
168
+ };
169
+ // Make sure path (and pathParams) are filled in the same way
170
+ newItem = this.prepareItem(newItem);
171
+ // Find if item already exists
172
+ const existingItem = this.findExistingItem(newItem);
173
+ if (existingItem && opts.skipIfExists) {
174
+ // DEBUG
175
+ console.debug(`${this._logPrefix} Skipping sub item (already exist)`, newItem);
176
+ return; // Already add
177
+ }
178
+ const parent = this.findParent(newItem);
179
+ if (!parent) {
180
+ console.warn(`${this._logPrefix} Unable to add sub item: no parent found`);
181
+ const parentUrlTre = this.router.createUrlTree(newItem.parentPath.split('/'), {
182
+ queryParams: newItem.parentPathParams
183
+ });
184
+ const data = this.router.routerState.root.parent?.data;
185
+ console.log('TODO check parent data', data);
186
+ /*await this.router.navigateByUrl(newItem.parentPath, {
187
+ skipLocationChange: true
188
+ });*/
189
+ }
190
+ else {
191
+ this.addMenuToParent(parent, newItem);
192
+ }
193
+ }
194
+ ;
195
+ prepareItem(item) {
196
+ item = {
197
+ ...item,
198
+ $children: item.$children || new BehaviorSubject([])
199
+ };
200
+ // Clean
201
+ if (item.path) {
202
+ const { path, params } = MenuItems.parsePathWithQuery(item.path);
203
+ item.path = path;
204
+ item.pathParams = { ...item.pathParams, ...params };
205
+ }
206
+ if (item.parentPath) {
207
+ const { path, params } = MenuItems.parsePathWithQuery(item.parentPath);
208
+ item.parentPath = path;
209
+ item.parentPathParams = { ...item.parentPathParams, ...params };
210
+ }
211
+ return item;
212
+ }
213
+ findExistingItem(item, items) {
214
+ items = items || this.$items.value;
215
+ if (!items.length)
216
+ return undefined; // Not found
217
+ return items.find(i => MenuItems.isSame(i, item) || (i.$children && this.findExistingItem(item, i.$children.value)));
218
+ }
219
+ findParent(childItem, parentItems) {
220
+ if (!childItem?.path)
221
+ return undefined;
222
+ parentItems = parentItems || this.$items.value;
223
+ return parentItems.reduce((res, item) => {
224
+ if (!item?.path)
225
+ return res;
226
+ // A found item already match with the menuItem.parentPath : keep it as it
227
+ // There is a found candidate that already match the current candidate : keep it
228
+ if (MenuItems.isParent(childItem, res))
229
+ return res;
230
+ // If the menu item has explicit parentPath and its path and path param are the same as the candidate : use it as parent
231
+ if (MenuItems.isParent(childItem, item))
232
+ return item;
233
+ if (!res && item.$children?.value.length) {
234
+ return this.findParent(childItem, item.$children?.value);
235
+ }
236
+ return res;
237
+ }, undefined);
238
+ }
239
+ ;
240
+ addMenuToParent(parent, child) {
241
+ console.debug(`${this._logPrefix}Adding a sub-menu ${MenuItems.getUrl(child)} to parent menu ${MenuItems.getUrl(parent)}`);
242
+ // Avoid to keep identical menu item (we replace it with the new child menu item)
243
+ //if (!parent?.$children) parent.$children = new BehaviorSubject<MenuItem[]>([]);
244
+ const children = parent.$children.value || [];
245
+ const existingIndex = children.findIndex(item => MenuItems.isSame(child, item));
246
+ if (existingIndex !== -1) {
247
+ children[existingIndex] = child;
248
+ }
249
+ else {
250
+ children.push(child);
251
+ }
252
+ parent.$children.next(children);
253
+ this.onUpdateMenu.emit();
254
+ }
255
+ detachSubMenus(currentPathParam, items, excludedItems) {
256
+ items = items || this.rootItems;
257
+ excludedItems = excludedItems || [];
258
+ items = items.filter(item => {
259
+ if (!item.parentPath)
260
+ return true; // Always keep root items
261
+ // Current route = param: keep it
262
+ // if (MenuItems.isParent(item, currentPathParam)) return true;
263
+ // Item parent path starts with the current path: keep it
264
+ // if (item.path?.startsWith(currentPathParam.path)) return true;
265
+ // Keep each menu items in the scope of the current url path
266
+ if (currentPathParam.path.startsWith(item.path))
267
+ return true;
268
+ // Else, exclude
269
+ excludedItems.push(item);
270
+ return false;
271
+ });
272
+ items.forEach(item => {
273
+ const children = this.detachSubMenus(currentPathParam, item.$children.value || [], excludedItems);
274
+ item.$children.next(children);
275
+ });
276
+ return items;
277
+ }
278
+ isVisibleForRoute(item, currentPathParam) {
279
+ return;
280
+ }
46
281
  }
47
- MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
282
+ MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuService, deps: [{ token: i1.PlatformService }, { token: i2.ConfigService }, { token: i3.AccountService }, { token: i4.Router }, { token: ENVIRONMENT }, { token: APP_MENU_ITEMS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
48
283
  MenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuService, providedIn: 'root' });
49
284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuService, decorators: [{
50
285
  type: Injectable,
51
286
  args: [{
52
287
  providedIn: 'root'
53
288
  }]
54
- }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBSzFELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQixJQUFJLENBQUM7QUFLOUQsTUFBTSxPQUFPLFdBQVc7SUFIeEI7UUFLbUIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBb0Isc0JBQXNCLENBQUMsQ0FBQztRQUNqRixjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7S0E2Q2pFO0lBM0NDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBd0I7UUFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO2FBQ0k7WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7O3dHQWhEVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5leHBvcnQgdHlwZSBTcGxpdFBhbmVTaG93V2hlbiA9IGJvb2xlYW58J2xnJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01FTlVfU0hPV19XSEVOOiBTcGxpdFBhbmVTaG93V2hlbiA9ICdsZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF8kdG9nZ2xlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRvcGVuZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kc3BsaXRQYW5lV2hlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3BsaXRQYW5lU2hvd1doZW4+KERFRkFVTFRfTUVOVV9TSE9XX1dIRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kZW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgZ2V0IG9wZW5lZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJG9wZW5lZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzcGxpdFBhbmVXaGVuKCk6IE9ic2VydmFibGU8U3BsaXRQYW5lU2hvd1doZW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJHNwbGl0UGFuZVdoZW4uYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJGVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5fJHRvZ2dsZWQubmV4dCgpO1xuICB9XG5cbiAgZW5hYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fJGVuYWJsZWQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBzZXRTcGxpdFBhbmVTaG93V2hlbih2YWx1ZTogU3BsaXRQYW5lU2hvd1doZW4pIHtcbiAgICBpZiAodGhpcy5fJHNwbGl0UGFuZVdoZW4udmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl8kc3BsaXRQYW5lV2hlbi5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTcGxpdFBhbmVXaGVuKCkge1xuICAgIGlmICh0aGlzLl8kc3BsaXRQYW5lV2hlbi52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuXyRzcGxpdFBhbmVXaGVuLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuXyRzcGxpdFBhbmVXaGVuLm5leHQoREVGQVVMVF9NRU5VX1NIT1dfV0hFTik7XG4gICAgfVxuICB9XG5cbiAgX21hcmtBc09wZW5lZCgpIHtcbiAgICB0aGlzLl8kb3BlbmVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBfbWFya0FzQ2xvc2VkKCkge1xuICAgIHRoaXMuXyRvcGVuZWQubmV4dChmYWxzZSk7XG4gIH1cblxufVxuIl19
289
+ }], ctorParameters: function () { return [{ type: i1.PlatformService }, { type: i2.ConfigService }, { type: i3.AccountService }, { type: i4.Router }, { type: i5.Environment, decorators: [{
290
+ type: Inject,
291
+ args: [ENVIRONMENT]
292
+ }] }, { type: undefined, decorators: [{
293
+ type: Optional
294
+ }, {
295
+ type: Inject,
296
+ args: [APP_MENU_ITEMS]
297
+ }] }]; } });
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFDLGVBQWUsRUFBRSxLQUFLLEVBQXlCLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQVcsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDL0UsT0FBTyxFQUFjLFdBQVcsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBR2pGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUkvRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFJdkQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXNCLElBQUksQ0FBQztBQW1COUQsTUFBTSxPQUFPLFdBQVksU0FBUSxnQkFBaUM7SUFrQmhFLFlBQ1ksZUFBZ0MsRUFDaEMsYUFBNEIsRUFDNUIsY0FBOEIsRUFDOUIsTUFBYyxFQUNPLFdBQXdCLEVBQ25CLFNBQXNCO1FBRTFELEtBQUssQ0FBQyxlQUFlLENBQUMs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QUFJLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQWMsRUFBRSxnQkFBK0I7UUFDekUsT0FBUTtJQUNWLENBQUM7O3dHQS9UVSxXQUFXLGtJQXVCWixXQUFXLGFBQ0MsY0FBYzs0R0F4QnpCLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF3QkksTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBza2lwV2hpbGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge01lbnVJdGVtLCBNZW51SXRlbXN9IGZyb20gJy4vbWVudS5tb2RlbCc7XG5pbXBvcnQge0FQUF9NRU5VX0lURU1TfSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7TmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtTdGFydGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge1BsYXRmb3JtU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge01vbWVudH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7RGF0ZVV0aWxzfSBmcm9tICcuLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtYXBUbywgbWVyZ2VNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9jb25maWcubW9kZWwnO1xuaW1wb3J0IHtDT1JFX0NPTkZJR19PUFRJT05TfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHtpc05vdE5pbE9yQmxhbmt9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtBY2NvdW50fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9hY2NvdW50Lm1vZGVsJztcblxuZXhwb3J0IHR5cGUgU3BsaXRQYW5lU2hvd1doZW4gPSBib29sZWFufCdsZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NRU5VX1NIT1dfV0hFTjogU3BsaXRQYW5lU2hvd1doZW4gPSAnbGcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFN1Yk1lbnVJdGVtc09wdGlvbiB7XG4gIHNraXBJZkV4aXN0czogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRTdWJNZW51SXRlbXMge1xuICBpdGVtczogTWVudUl0ZW1bXTtcbiAgb3B0cz86IEFkZFN1Yk1lbnVJdGVtc09wdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW51UGF0aFBhcmFtIHtcbiAgcGF0aDogc3RyaW5nO1xuICBwYXJhbXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8TWVudUl0ZW1bXSwgYW55PiB7XG5cbiAgcHVibGljIG9uTG9naW5DaGFuZ2UgPSBuZXcgU3ViamVjdDxBY2NvdW50PigpO1xuICBwdWJsaWMgb25VcGRhdGVNZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwdWJsaWMgcmVhZG9ubHkgJGl0ZW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPih1bmRlZmluZWQpO1xuXG4gIHByb3RlY3RlZCBsYXN0QWNjb3VudFVwZGF0ZURhdGU6IE1vbWVudCB8IHN0cmluZztcbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1ttZW51LXNlcnZpY2VdJztcbiAgcHJpdmF0ZSBfY29uZmlnOiBDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kdG9nZ2xlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRvcGVuZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kc3BsaXRQYW5lV2hlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3BsaXRQYW5lU2hvd1doZW4+KERFRkFVTFRfTUVOVV9TSE9XX1dIRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF8kZW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHJpdmF0ZSBnZXQgcm9vdEl0ZW1zKCk6IE1lbnVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLiRpdGVtcy52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybVNlcnZpY2U6IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX01FTlVfSVRFTVMpIHJvb3RJdGVtcz86IE1lbnVJdGVtW11cbiAgKSB7XG4gICAgc3VwZXIocGxhdGZvcm1TZXJ2aWNlKTtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIHRoaXMuJGl0ZW1zLm5leHQoKHJvb3RJdGVtcyB8fCBbXSkubWFwKGkgPT4gdGhpcy5wcmVwYXJlSXRlbShpKSkpO1xuICB9XG5cbiAgZ2V0IG9wZW5lZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJG9wZW5lZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzcGxpdFBhbmVXaGVuKCk6IE9ic2VydmFibGU8U3BsaXRQYW5lU2hvd1doZW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJHNwbGl0UGFuZVdoZW4uYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fJGVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5fJHRvZ2dsZWQubmV4dCgpO1xuICB9XG5cbiAgZW5hYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fJGVuYWJsZWQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBzZXRTcGxpdFBhbmVTaG93V2hlbih2YWx1ZTogU3BsaXRQYW5lU2hvd1doZW4pIHtcbiAgICBpZiAodGhpcy5fJHNwbGl0UGFuZVdoZW4udmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl8kc3BsaXRQYW5lV2hlbi5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTcGxpdFBhbmVXaGVuKCkge1xuICAgIGlmICh0aGlzLl8kc3BsaXRQYW5lV2hlbi52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuXyRzcGxpdFBhbmVXaGVuLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuXyRzcGxpdFBhbmVXaGVuLm5leHQoREVGQVVMVF9NRU5VX1NIT1dfV0hFTik7XG4gICAgfVxuICB9XG5cbiAgX21hcmtBc09wZW5lZCgpIHtcbiAgICB0aGlzLl8kb3BlbmVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBfbWFya0FzQ2xvc2VkKCkge1xuICAgIHRoaXMuXyRvcGVuZWQubmV4dChmYWxzZSk7XG4gIH1cblxuICBhc3luYyBhZGRTdWJNZW51SXRlbXMobmV3SXRlbXM6IE1lbnVJdGVtW10sIG9wdHM/OiBBZGRTdWJNZW51SXRlbXNPcHRpb24pIHtcbiAgICBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgbmV3SXRlbXMuZm9yRWFjaChpID0+IHRoaXMuYWRkU3ViTWVudUl0ZW0oaSksIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPE1lbnVJdGVtW10+IHtcbiAgICBjb25zb2xlLmluZm8oYCR7dGhpcy5fbG9nUHJlZml4fSBTdGFydGluZy4uLmApO1xuXG4gICAgLy8gVXBkYXRlIGNvbXBvbmVudCB3aGVuIHJlZnJlc2ggaXMgbmVlZCAoPWxvZ2luIGV2ZW50cyBvciBjb25maWcgY2hhbmdlZClcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dpblxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBvbiBhY2NvdW50IGNoYW5nZXNcbiAgICAgICAgICAgICAgZmlsdGVyKGFjY291bnQgPT4gIURhdGVVdGlscy5pc1NhbWUoYWNjb3VudD8udXBkYXRlRGF0ZSwgdGhpcy5sYXN0QWNjb3VudFVwZGF0ZURhdGUpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICxcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNvbmZpZ1xuICAgICAgICAgICAgICB0YXAoY29uZmlnID0+IHRoaXMuX2NvbmZpZyA9IGNvbmZpZylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgLy8gQWRkIGRlYm91bmNlIHRvIGF2b2lkIHRvIHRyaWdnZXIgdHdpY2UsIGF0IHN0YXJ0dXBcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgICAgLy8gV2FpdCBhY2NvdW50IHNlcnZpY2UgcmVhZHkgKGNhbiBiZSByZXN0YXJ0ZWQpXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCkpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuYWNjb3VudFNlcnZpY2UuYWNjb3VudClcbiAgICAgICAgICApLFxuICAgICAgICAvLyBMb2dvdXRcbiAgICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dC5waXBlKG1hcFRvKG51bGwpKSxcbiAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyBhY2NvdW50ID0+IHtcbiAgICAgICAgICBpZiAoYWNjb3VudD8udXBkYXRlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWNjb3VudFVwZGF0ZURhdGUgPSBhY2NvdW50LnVwZGF0ZURhdGU7XG4gICAgICAgICAgICB0aGlzLm9uTG9naW5DaGFuZ2UubmV4dChhY2NvdW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWNjb3VudFVwZGF0ZURhdGUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vbkxvZ2luQ2hhbmdlLm5leHQobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVmcmVzaE1lbnVJdGVtcygpO1xuICAgICAgICB9KSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAvLyBmaWx0ZXIoZXZlbnQgPT4gISF0aGlzLiRpdGVtcz8udmFsdWUpLFxuICAgICAgKS5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGhQYXJhbSA9IE1lbnVJdGVtcy5wYXJzZVBhdGhXaXRoUXVlcnkoZXZlbnQudXJsKTtcbiAgICAgICAgY29uc3QgZXhjbHVkZWRJdGVtcyA9IFtdO1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZGV0YWNoU3ViTWVudXMocGF0aFBhcmFtLCB0aGlzLiRpdGVtcy52YWx1ZSwgZXhjbHVkZWRJdGVtcyk7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fSBEZXRhY2hlZCBzdWIgbWVudXM6IGAsIGV4Y2x1ZGVkSXRlbXMpO1xuICAgICAgICAvLyB0aGlzLmFkZFN1Yk1lbnVJdGVtcygpO1xuICAgICAgICAvL3RoaXMuJGl0ZW1zLm5leHQoaXRlbXMpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuJGl0ZW1zLnZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZnJlc2hNZW51SXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0gUmVmcmVzaGluZyBtZW51IGl0ZW1zLi4uYCk7XG5cbiAgICAvLyBJbnNlcnQgbWVudSBpdGVtcywgZnJvbSB0aGUgY29uZmlnXG4gICAgY29uc3QgY29uZmlnVmFsdWU6IHN0cmluZyA9IHRoaXMuX2NvbmZpZyAmJiB0aGlzLl9jb25maWcuZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5NRU5VX0lURU1TKTtcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKGNvbmZpZ1ZhbHVlKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29uZmlnSXRlbXMgPSBKU09OLnBhcnNlKGNvbmZpZ1ZhbHVlKTtcbiAgICAgICAgdGhpcy5fZGF0YSA9IChjb25maWdJdGVtcyB8fCBbXSkucmVkdWNlKChyZXMsIGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5hZnRlcikge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSByZXMuZmluZEluZGV4KGkgPT4gaS50aXRsZSA9PT0gaXRlbS5hZnRlcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXMuc2xpY2UoMCwgaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgIC5jb25jYXQoaXRlbSlcbiAgICAgICAgICAgICAgICAuY29uY2F0KHJlcy5zbGljZShpbmRleCArIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0ZW0uYmVmb3JlKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHJlcy5maW5kSW5kZXgoaSA9PiBpLnRpdGxlID09PSBpdGVtLmJlZm9yZSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXMuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmNvbmNhdChpdGVtKVxuICAgICAgICAgICAgICAgIC5jb25jYXQocmVzLnNsaWNlKGluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXMuY29uY2F0KGl0ZW0pO1xuICAgICAgICB9LCB0aGlzLl9kYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH0gSW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uICcke0NPUkVfQ09ORklHX09QVElPTlMuTUVOVV9JVEVNUy5rZXl9Jy4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgbWVudSBpdGVtYCwgZXJyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPIDogaXNMb2dpbiBpcyBub3QgdXNlZCBpbiBNZW51SXRlbXMuY2hlY2tJZlZpc2libGVcbiAgICBjb25zdCBvcHRzID0ge2RlYnVnOiB0aGlzLl9kZWJ1Z307XG4gICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IHRoaXMuX2RhdGFcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBNZW51SXRlbXMuY2hlY2tJZlZpc2libGUoaXRlbSwgdGhpcy5hY2NvdW50U2VydmljZSwgdGhpcy5fY29uZmlnLCBvcHRzKSlcbiAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgIC8vIFJlcGxhY2UgdGl0bGUgdXNpbmcgcHJvcGVydGllc1xuICAgICAgICBpZiAoaXNOb3ROaWxPckJsYW5rKGl0ZW0udGl0bGVQcm9wZXJ0eSkgJiYgdGhpcy5fY29uZmlnKSB7XG4gICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLl9jb25maWcucHJvcGVydGllc1tpdGVtLnRpdGxlUHJvcGVydHldO1xuICAgICAgICAgIGlmICh0aXRsZSkgcmV0dXJuIHsuLi5pdGVtLCB0aXRsZX07IC8vIENyZWF0ZSBhIGNvcHksIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGl0ZW0udGl0bGVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4kaXRlbXMubmV4dChmaWx0ZXJlZEl0ZW1zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBhZGRTdWJNZW51SXRlbShuZXdJdGVtOiBNZW51SXRlbSwgb3B0cz86IEFkZFN1Yk1lbnVJdGVtc09wdGlvbikge1xuICAgIG9wdHMgPSB7XG4gICAgICBza2lwSWZFeGlzdHM6IGZhbHNlLFxuICAgICAgLi4ub3B0cyxcbiAgICB9O1xuXG4gICAgLy8gTWFrZSBzdXJlIHBhdGggKGFuZCBwYXRoUGFyYW1zKSBhcmUgZmlsbGVkIGluIHRoZSBzYW1lIHdheVxuICAgIG5ld0l0ZW0gPSB0aGlzLnByZXBhcmVJdGVtKG5ld0l0ZW0pO1xuXG4gICAgLy8gRmluZCBpZiBpdGVtIGFscmVhZHkgZXhpc3RzXG4gICAgY29uc3QgZXhpc3RpbmdJdGVtID0gdGhpcy5maW5kRXhpc3RpbmdJdGVtKG5ld0l0ZW0pO1xuICAgIGlmIChleGlzdGluZ0l0ZW0gJiYgb3B0cy5za2lwSWZFeGlzdHMpIHtcbiAgICAgIC8vIERFQlVHXG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0gU2tpcHBpbmcgc3ViIGl0ZW0gKGFscmVhZHkgZXhpc3QpYCwgbmV3SXRlbSk7XG4gICAgICByZXR1cm47IC8vIEFscmVhZHkgYWRkXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50KG5ld0l0ZW0pO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fSBVbmFibGUgdG8gYWRkIHN1YiBpdGVtOiBubyBwYXJlbnQgZm91bmRgKTtcbiAgICAgIGNvbnN0IHBhcmVudFVybFRyZSA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUobmV3SXRlbS5wYXJlbnRQYXRoLnNwbGl0KCcvJyksIHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IG5ld0l0ZW0ucGFyZW50UGF0aFBhcmFtc1xuICAgICAgfSk7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdC5wYXJlbnQ/LmRhdGE7XG4gICAgICBjb25zb2xlLmxvZygnVE9ETyBjaGVjayBwYXJlbnQgZGF0YScsIGRhdGEpO1xuXG4gICAgICAvKmF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3SXRlbS5wYXJlbnRQYXRoLCB7XG4gICAgICAgIHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZVxuICAgICAgfSk7Ki9cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmFkZE1lbnVUb1BhcmVudChwYXJlbnQsIG5ld0l0ZW0pO1xuICAgIH1cbiAgfTtcblxuICBwcm90ZWN0ZWQgcHJlcGFyZUl0ZW0oaXRlbTogTWVudUl0ZW0pOiBNZW51SXRlbSB7XG5cbiAgICBpdGVtID0gPE1lbnVJdGVtPntcbiAgICAgIC4uLml0ZW0sXG4gICAgICAkY2hpbGRyZW46IGl0ZW0uJGNoaWxkcmVuIHx8IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4oW10pXG4gICAgfTtcblxuICAgIC8vIENsZWFuXG4gICAgaWYgKGl0ZW0ucGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KGl0ZW0ucGF0aCk7XG4gICAgICBpdGVtLnBhdGggPSBwYXRoO1xuICAgICAgaXRlbS5wYXRoUGFyYW1zID0gey4uLml0ZW0ucGF0aFBhcmFtcywgLi4ucGFyYW1zfTtcbiAgICB9XG4gICAgaWYgKGl0ZW0ucGFyZW50UGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KGl0ZW0ucGFyZW50UGF0aCk7XG4gICAgICBpdGVtLnBhcmVudFBhdGggPSBwYXRoO1xuICAgICAgaXRlbS5wYXJlbnRQYXRoUGFyYW1zID0gey4uLml0ZW0ucGFyZW50UGF0aFBhcmFtcywgLi4ucGFyYW1zfTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kRXhpc3RpbmdJdGVtKGl0ZW06IE1lbnVJdGVtLCBpdGVtcz86IE1lbnVJdGVtW10pOiBNZW51SXRlbSB7XG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLiRpdGVtcy52YWx1ZTtcbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gTm90IGZvdW5kXG4gICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiBNZW51SXRlbXMuaXNTYW1lKGksIGl0ZW0pIHx8IChcbiAgICAgIGkuJGNoaWxkcmVuICYmIHRoaXMuZmluZEV4aXN0aW5nSXRlbShpdGVtLCBpLiRjaGlsZHJlbi52YWx1ZSlcbiAgICApKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kUGFyZW50KGNoaWxkSXRlbTogTWVudUl0ZW0sIHBhcmVudEl0ZW1zPzogTWVudUl0ZW1bXSk6IE1lbnVJdGVtIHtcbiAgICBpZiAoIWNoaWxkSXRlbT8ucGF0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBwYXJlbnRJdGVtcyA9IHBhcmVudEl0ZW1zIHx8IHRoaXMuJGl0ZW1zLnZhbHVlO1xuXG4gICAgcmV0dXJuIHBhcmVudEl0ZW1zLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0/LnBhdGgpIHJldHVybiByZXM7XG5cbiAgICAgIC8vIEEgZm91bmQgaXRlbSBhbHJlYWR5IG1hdGNoIHdpdGggdGhlIG1lbnVJdGVtLnBhcmVudFBhdGggOiBrZWVwIGl0IGFzIGl0XG4gICAgICAvLyBUaGVyZSBpcyBhIGZvdW5kIGNhbmRpZGF0ZSB0aGF0IGFscmVhZHkgbWF0Y2ggdGhlIGN1cnJlbnQgY2FuZGlkYXRlIDoga2VlcCBpdFxuICAgICAgaWYgKE1lbnVJdGVtcy5pc1BhcmVudChjaGlsZEl0ZW0sIHJlcykpIHJldHVybiByZXM7XG5cbiAgICAgIC8vIElmIHRoZSBtZW51IGl0ZW0gaGFzIGV4cGxpY2l0IHBhcmVudFBhdGggYW5kIGl0cyBwYXRoIGFuZCBwYXRoIHBhcmFtIGFyZSB0aGUgc2FtZSBhcyB0aGUgY2FuZGlkYXRlICA6IHVzZSBpdCBhcyBwYXJlbnRcbiAgICAgIGlmIChNZW51SXRlbXMuaXNQYXJlbnQoY2hpbGRJdGVtLCBpdGVtKSkgcmV0dXJuIGl0ZW07XG5cbiAgICAgIGlmICghcmVzICYmIGl0ZW0uJGNoaWxkcmVuPy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudChjaGlsZEl0ZW0sIGl0ZW0uJGNoaWxkcmVuPy52YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgdW5kZWZpbmVkKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgYWRkTWVudVRvUGFyZW50KHBhcmVudDogTWVudUl0ZW0sIGNoaWxkOiBNZW51SXRlbSkge1xuXG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9QWRkaW5nIGEgc3ViLW1lbnUgJHtNZW51SXRlbXMuZ2V0VXJsKGNoaWxkKX0gdG8gcGFyZW50IG1lbnUgJHtNZW51SXRlbXMuZ2V0VXJsKHBhcmVudCl9YCk7XG5cbiAgICAvLyBBdm9pZCB0byBrZWVwIGlkZW50aWNhbCBtZW51IGl0ZW0gKHdlIHJlcGxhY2UgaXQgd2l0aCB0aGUgbmV3IGNoaWxkIG1lbnUgaXRlbSlcbiAgICAvL2lmICghcGFyZW50Py4kY2hpbGRyZW4pIHBhcmVudC4kY2hpbGRyZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+KFtdKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC4kY2hpbGRyZW4udmFsdWUgfHwgW107XG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IGNoaWxkcmVuLmZpbmRJbmRleChpdGVtID0+IE1lbnVJdGVtcy5pc1NhbWUoY2hpbGQsIGl0ZW0pKTtcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNoaWxkcmVuW2V4aXN0aW5nSW5kZXhdID0gY2hpbGQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgfVxuICAgIHBhcmVudC4kY2hpbGRyZW4ubmV4dChjaGlsZHJlbik7XG5cblxuICAgIHRoaXMub25VcGRhdGVNZW51LmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZXRhY2hTdWJNZW51cyhjdXJyZW50UGF0aFBhcmFtOiBNZW51UGF0aFBhcmFtLCBpdGVtcz86IE1lbnVJdGVtW10sIGV4Y2x1ZGVkSXRlbXM/OiBNZW51SXRlbVtdKSB7XG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLnJvb3RJdGVtcztcbiAgICBleGNsdWRlZEl0ZW1zID0gZXhjbHVkZWRJdGVtcyB8fCBbXTtcbiAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS5wYXJlbnRQYXRoKSByZXR1cm4gdHJ1ZTsgLy8gQWx3YXlzIGtlZXAgcm9vdCBpdGVtc1xuXG4gICAgICAvLyBDdXJyZW50IHJvdXRlID0gcGFyYW06IGtlZXAgaXRcbiAgICAgIC8vIGlmIChNZW51SXRlbXMuaXNQYXJlbnQoaXRlbSwgY3VycmVudFBhdGhQYXJhbSkpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBJdGVtIHBhcmVudCBwYXRoIHN0YXJ0cyB3aXRoIHRoZSBjdXJyZW50IHBhdGg6IGtlZXAgaXRcbiAgICAgIC8vIGlmIChpdGVtLnBhdGg/LnN0YXJ0c1dpdGgoY3VycmVudFBhdGhQYXJhbS5wYXRoKSkgcmV0dXJuIHRydWU7XG5cbiAgICAgIC8vIEtlZXAgZWFjaCBtZW51IGl0ZW1zIGluIHRoZSBzY29wZSBvZiB0aGUgY3VycmVudCB1cmwgcGF0aFxuICAgICAgaWYgKGN1cnJlbnRQYXRoUGFyYW0ucGF0aC5zdGFydHNXaXRoKGl0ZW0ucGF0aCkpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBFbHNlLCBleGNsdWRlXG4gICAgICBleGNsdWRlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5kZXRhY2hTdWJNZW51cyhjdXJyZW50UGF0aFBhcmFtLCBpdGVtLiRjaGlsZHJlbi52YWx1ZSB8fCBbXSwgZXhjbHVkZWRJdGVtcyk7XG4gICAgICBpdGVtLiRjaGlsZHJlbi5uZXh0KGNoaWxkcmVuKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNWaXNpYmxlRm9yUm91dGUoaXRlbTogTWVudUl0ZW0sIGN1cnJlbnRQYXRoUGFyYW06IE1lbnVQYXRoUGFyYW0pIHtcbiAgICByZXR1cm4gO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { Component, } from '@angular/core';
2
+ import { MenuItems } from '../menu.model';
3
+ import { MenuTestingPage } from './menu.testing';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ import * as i2 from "@ionic/angular";
7
+ import * as i3 from "@ngx-translate/core";
8
+ import * as i4 from "../menu.service";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "@angular/material/tabs";
11
+ import * as i7 from "../../../shared/toolbar/toolbar";
12
+ export class OtherMenuTestingPage extends MenuTestingPage {
13
+ constructor(route, // Modal editor give 'null'
14
+ router, navController, alertCtrl, translate, menuService) {
15
+ super(route, router, navController, alertCtrl, translate, menuService);
16
+ this.logPrefix = '[menu-testing-other] ';
17
+ }
18
+ initSubMenu() {
19
+ const pathParam = MenuItems.parsePathWithQuery(this.router.url);
20
+ this.title = 'Other';
21
+ this.secondTabTitle = 'Second';
22
+ this.parentPath = '/testing/shared/menu?tab=1';
23
+ this.childPath = '';
24
+ const path = '/testing/shared/menu/other';
25
+ const parentPath = '/testing/shared/menu?tab=1';
26
+ console.debug(`${this.logPrefix} Setup with`, { path, parentPath });
27
+ this.menuService.addSubMenuItems([
28
+ {
29
+ title: 'Other',
30
+ path,
31
+ parentPath,
32
+ action: null,
33
+ profile: 'GUEST',
34
+ },
35
+ {
36
+ title: this.secondTabTitle,
37
+ path,
38
+ pathParams: { tab: '1' },
39
+ parentPath: path,
40
+ action: null,
41
+ profile: 'GUEST',
42
+ }
43
+ ]);
44
+ }
45
+ }
46
+ 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 });
47
+ 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>{{ title }}</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 <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A first tab<br/>\n\n <ion-button (click)=\"toggleThird()\">\n Third tab ?\n </ion-button>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath\" >\n {{ childPath }}\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab *ngIf=\"thirdTabTitle\"\n [label]=\"thirdTabTitle\" class=\"ion-padding\">\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: "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: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i6.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i7.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }] });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: OtherMenuTestingPage, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'app-testing-menu-other', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</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 <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A first tab<br/>\n\n <ion-button (click)=\"toggleThird()\">\n Third tab ?\n </ion-button>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath\" >\n {{ childPath }}\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab *ngIf=\"thirdTabTitle\"\n [label]=\"thirdTabTitle\" class=\"ion-padding\">\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"] }]
51
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1vdGhlci50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LW90aGVyLnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFLekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU8vQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZTtJQUd2RCxZQUNFLEtBQXFCLEVBQUUsMkJBQTJCO0lBQ2xELE1BQWMsRUFDZCxhQUE0QixFQUM1QixTQUEwQixFQUMxQixTQUEyQixFQUMzQixXQUF3QjtRQUV4QixLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLHVCQUF1QixDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksR0FBRyw0QkFBNEIsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztRQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsYUFBYSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQzlCO1lBQ0U7Z0JBQ0UsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsSUFBSTtnQkFDSixVQUFVO2dCQUNWLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUMxQixJQUFJO2dCQUNKLFVBQVUsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixNQUFNLEVBQUUsSUFBSTtnQkFDWixPQUFPLEVBQUUsT0FBTzthQUNqQjtTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7O2lIQTNDVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixxRkNiakMsbStDQTJEQTsyRkQ5Q2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lbnVTZXJ2aWNlfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtc30gZnJvbSAnLi4vbWVudS5tb2RlbCc7XG5pbXBvcnQge01lbnVUZXN0aW5nUGFnZX0gZnJvbSAnLi9tZW51LnRlc3RpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVzdGluZy1tZW51LW90aGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUudGVzdGluZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS50ZXN0aW5nLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgT3RoZXJNZW51VGVzdGluZ1BhZ2UgZXh0ZW5kcyBNZW51VGVzdGluZ1BhZ2Uge1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCAvLyBNb2RhbCBlZGl0b3IgZ2l2ZSAnbnVsbCdcbiAgICByb3V0ZXI6IFJvdXRlcixcbiAgICBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBtZW51U2VydmljZTogTWVudVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocm91dGUsIHJvdXRlciwgbmF2Q29udHJvbGxlciwgYWxlcnRDdHJsLCB0cmFuc2xhdGUsIG1lbnVTZXJ2aWNlKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbbWVudS10ZXN0aW5nLW90aGVyXSAnO1xuICB9XG5cbiAgaW5pdFN1Yk1lbnUoKSB7XG4gICAgY29uc3QgcGF0aFBhcmFtID0gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeSh0aGlzLnJvdXRlci51cmwpO1xuICAgIHRoaXMudGl0bGUgPSAnT3RoZXInO1xuICAgIHRoaXMuc2Vjb25kVGFiVGl0bGUgPSAnU2Vjb25kJztcbiAgICB0aGlzLnBhcmVudFBhdGggPSAnL3Rlc3Rpbmcvc2hhcmVkL21lbnU/dGFiPTEnO1xuICAgIHRoaXMuY2hpbGRQYXRoID0gJyc7XG4gICAgY29uc3QgcGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudS9vdGhlcic7XG4gICAgY29uc3QgcGFyZW50UGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudT90YWI9MSc7XG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH0gU2V0dXAgd2l0aGAsIHtwYXRoLCBwYXJlbnRQYXRofSk7XG4gICAgdGhpcy5tZW51U2VydmljZS5hZGRTdWJNZW51SXRlbXMoXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ090aGVyJyxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHBhcmVudFBhdGgsXG4gICAgICAgICAgYWN0aW9uOiBudWxsLFxuICAgICAgICAgIHByb2ZpbGU6ICdHVUVTVCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogdGhpcy5zZWNvbmRUYWJUaXRsZSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHBhdGhQYXJhbXM6IHt0YWI6ICcxJ30sXG4gICAgICAgICAgcGFyZW50UGF0aDogcGF0aCxcbiAgICAgICAgICBhY3Rpb246IG51bGwsXG4gICAgICAgICAgcHJvZmlsZTogJ0dVRVNUJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgICk7XG4gIH1cblxufVxuIiwiPGFwcC10b29sYmFyIFtkZWZhdWx0QmFja0hyZWZdPVwicGFyZW50UGF0aFwiPlxuICA8aW9uLXRpdGxlPnt7IHRpdGxlIH19PC9pb24tdGl0bGU+XG48L2FwcC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQ+XG5cbiAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwXG4gICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRUYWJJbmRleFwiXG4gICAgICAgICAgICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgZHluYW1pY0hlaWdodD5cblxuICAgIDwhLS0gVEFCOiAxIC0tPlxuICAgIDxtYXQtdGFiIGxhYmVsPVwiRGV0YWlsc1wiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPkRldGFpbHM8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICBBIGZpcnN0IHRhYjxici8+XG5cbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVRoaXJkKClcIj5cbiAgICAgICAgICBUaGlyZCB0YWIgP1xuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAyIC0tPlxuICAgIDxtYXQtdGFiIFtsYWJlbF09XCJzZWNvbmRUYWJUaXRsZVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPnt7c2Vjb25kVGFiVGl0bGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIEEgc2Vjb25kIHRhYjxici8+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY29uZFRhYlRpdGxlPT09ICdPdGhlcnMnXCI+XG4gICAgICAgICAgTmF2aWdhdGUgdG8gOiA8YSBbcm91dGVyTGlua109XCJjaGlsZFBhdGhcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMyAtLT5cbiAgICA8bWF0LXRhYiAqbmdJZj1cInRoaXJkVGFiVGl0bGVcIlxuICAgICAgICAgICAgIFtsYWJlbF09XCJ0aGlyZFRhYlRpdGxlXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWw+e3t0aGlyZFRhYlRpdGxlfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICBBIHRoaXJkIHRhYlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG4gIDwvbWF0LXRhYi1ncm91cD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
@@ -0,0 +1,106 @@
1
+ import { Component, ViewChildren } from '@angular/core';
2
+ import { AppTabEditor } from '../../form/entity/editor.class';
3
+ import { MenuItems } from "../menu.model";
4
+ import { MatTab } from "@angular/material/tabs";
5
+ import { Subject } from "rxjs";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "@ionic/angular";
9
+ import * as i3 from "@ngx-translate/core";
10
+ import * as i4 from "../menu.service";
11
+ import * as i5 from "@angular/common";
12
+ import * as i6 from "@angular/material/tabs";
13
+ import * as i7 from "../../../shared/toolbar/toolbar";
14
+ export class MenuTestingPage extends AppTabEditor {
15
+ constructor(route, // Modal editor give 'null'
16
+ router, navController, alertCtrl, translate, menuService) {
17
+ super(route, router, navController, alertCtrl, translate, {
18
+ tabCount: 2
19
+ });
20
+ this.menuService = menuService;
21
+ this.logPrefix = '[menu-testing] ';
22
+ this.childPath = '';
23
+ this.title = '';
24
+ this.secondTabTitle = '';
25
+ this.parentPath = null;
26
+ this.thirdTabTitle = null;
27
+ }
28
+ ngOnInit() {
29
+ console.debug(`${this.logPrefix} Init page...`);
30
+ super.ngOnInit();
31
+ this.initSubMenu();
32
+ }
33
+ ngAfterViewInit() {
34
+ super.ngAfterViewInit();
35
+ //
36
+ // MenuTestingPage.tabsChanges.next(this.tabs.toArray());
37
+ // this.registerSubscription(
38
+ // this.tabs.changes
39
+ // .subscribe(_ => MenuTestingPage.tabsChanges.next(this.tabs.toArray()))
40
+ // );
41
+ }
42
+ ngOnDestroy() {
43
+ super.ngOnDestroy();
44
+ console.debug(`${this.logPrefix}Destroying...`);
45
+ }
46
+ load(id, options) {
47
+ return Promise.resolve(undefined);
48
+ }
49
+ get isNewData() {
50
+ return false;
51
+ }
52
+ reload() {
53
+ return Promise.resolve(undefined);
54
+ }
55
+ save(event, options) {
56
+ return Promise.resolve(false);
57
+ }
58
+ toggleThird() {
59
+ if (!this.thirdTabTitle) {
60
+ this.thirdTabTitle = 'Third';
61
+ }
62
+ else {
63
+ this.thirdTabTitle = null;
64
+ }
65
+ }
66
+ initSubMenu() {
67
+ const pathParam = MenuItems.parsePathWithQuery(this.router.url);
68
+ this.title = 'Menu';
69
+ this.secondTabTitle = 'Others';
70
+ this.parentPath = '/testing';
71
+ this.childPath = '/testing/shared/menu/other';
72
+ const path = '/testing/shared/menu';
73
+ console.debug(`${this.logPrefix} Setup with`, { path, parentPath: this.parentPath });
74
+ this.menuService.addSubMenuItems([
75
+ {
76
+ title: 'Menu',
77
+ path,
78
+ parentPath: this.parentPath,
79
+ action: null,
80
+ profile: 'GUEST',
81
+ },
82
+ {
83
+ title: this.secondTabTitle,
84
+ path,
85
+ pathParams: { tab: '1' },
86
+ parentPath: path,
87
+ action: null,
88
+ profile: 'GUEST',
89
+ }
90
+ ]);
91
+ }
92
+ getFirstInvalidTabIndex() {
93
+ return 0;
94
+ }
95
+ }
96
+ MenuTestingPage.tabsChanges = new Subject();
97
+ 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 });
98
+ MenuTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuTestingPage, selector: "app-testing-menu", viewQueries: [{ propertyName: "tabs", predicate: MatTab, descendants: true }], usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</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 <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A first tab<br/>\n\n <ion-button (click)=\"toggleThird()\">\n Third tab ?\n </ion-button>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath\" >\n {{ childPath }}\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab *ngIf=\"thirdTabTitle\"\n [label]=\"thirdTabTitle\" class=\"ion-padding\">\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: "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: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]", inputs: ["routerDirection", "routerAnimation"] }, { kind: "component", type: i6.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i7.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }] });
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuTestingPage, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'app-testing-menu', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title>{{ title }}</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 <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A first tab<br/>\n\n <ion-button (click)=\"toggleThird()\">\n Third tab ?\n </ion-button>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab [label]=\"secondTabTitle\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>{{secondTabTitle}}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n A second tab<br/>\n\n <ng-container *ngIf=\"secondTabTitle=== 'Others'\">\n Navigate to : <a [routerLink]=\"childPath\" >\n {{ childPath }}\n </a>\n </ng-container>\n </div>\n\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab *ngIf=\"thirdTabTitle\"\n [label]=\"thirdTabTitle\" class=\"ion-padding\">\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"] }]
102
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }]; }, propDecorators: { tabs: [{
103
+ type: ViewChildren,
104
+ args: [MatTab]
105
+ }] } });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUEwQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBSTVELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQU83QixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxZQUFZO0lBaUIvQyxZQUNFLEtBQXFCLEVBQUUsMkJBQTJCO0lBQ2xELE1BQWMsRUFDZCxhQUE0QixFQUM1QixTQUEwQixFQUMxQixTQUEyQixFQUNqQixXQUF3QjtRQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtZQUN4RCxRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUMsQ0FBQztRQUpPLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBakIxQixjQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQVcsSUFBSSxDQUFDO1FBRTFCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBZ0IvQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxlQUFlLENBQUMsQ0FBQztRQUVoRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFLakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxlQUFlO1FBQ2IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEVBQUU7UUFDRix5REFBeUQ7UUFDekQsNkJBQTZCO1FBQzdCLHdCQUF3QjtRQUN4QixpRkFBaUY7UUFDakYsS0FBSztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQVcsRUFBRSxPQUFhO1FBQzdCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQXdCLEVBQUUsT0FBWTtRQUN6QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLFdBQVc7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7U0FDOUI7YUFDSTtZQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVTLFdBQVc7UUFDbkIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyw0QkFBNEIsQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQztRQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsYUFBYSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUI7WUFDRTtnQkFDRSxLQUFLLEVBQUUsTUFBTTtnQkFDYixJQUFJO2dCQUNKLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsTUFBTSxFQUFFLElBQUk7Z0JBQ1osT0FBTyxFQUFFLE9BQU87YUFDakI7WUFDRDtnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWM7Z0JBQzFCLElBQUk7Z0JBQ0osVUFBVSxFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQztnQkFDdEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1NBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVTLHVCQUF1QjtRQUMvQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7O0FBNUdNLDJCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQzs0R0FKbEMsZUFBZTtnR0FBZixlQUFlLGlGQWNaLE1BQU0sdUVDN0J0QixtK0NBMkRBOzJGRDVDYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLGtCQUFrQjs2T0FrQk4sSUFBSTtzQkFBekIsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNZW51U2VydmljZX0gZnJvbSAnLi4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7QXBwVGFiRWRpdG9yfSBmcm9tICcuLi8uLi9mb3JtL2VudGl0eS9lZGl0b3IuY2xhc3MnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtc30gZnJvbSBcIi4uL21lbnUubW9kZWxcIjtcbmltcG9ydCB7TWF0VGFifSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFic1wiO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVzdGluZy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUudGVzdGluZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS50ZXN0aW5nLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVRlc3RpbmdQYWdlIGV4dGVuZHMgQXBwVGFiRWRpdG9yXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG5cbiAgc3RhdGljIHRhYnNDaGFuZ2VzID0gbmV3IFN1YmplY3Q8TWF0VGFiW10+KCk7XG5cbiAgcHJvdGVjdGVkIGxvZ1ByZWZpeCA9ICdbbWVudS10ZXN0aW5nXSAnO1xuICBwcm90ZWN0ZWQgY2hpbGRQYXRoID0gJyc7XG4gIHByb3RlY3RlZCB0aXRsZSA9ICcnO1xuICBwcm90ZWN0ZWQgc2Vjb25kVGFiVGl0bGUgPSAnJztcbiAgcHJvdGVjdGVkIHBhcmVudFBhdGg6IHN0cmluZyA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHRoaXJkVGFiVGl0bGUgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGRyZW4oTWF0VGFiKSB0YWJzITogUXVlcnlMaXN0PE1hdFRhYj47XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsIC8vIE1vZGFsIGVkaXRvciBnaXZlICdudWxsJ1xuICAgIHJvdXRlcjogUm91dGVyLFxuICAgIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXG4gICAgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtZW51U2VydmljZTogTWVudVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocm91dGUsIHJvdXRlciwgbmF2Q29udHJvbGxlciwgYWxlcnRDdHJsLCB0cmFuc2xhdGUsIHtcbiAgICAgIHRhYkNvdW50OiAyXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBJbml0IHBhZ2UuLi5gKTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cblxuXG5cbiAgICB0aGlzLmluaXRTdWJNZW51KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgLy9cbiAgICAvLyBNZW51VGVzdGluZ1BhZ2UudGFic0NoYW5nZXMubmV4dCh0aGlzLnRhYnMudG9BcnJheSgpKTtcbiAgICAvLyB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgIC8vICAgICB0aGlzLnRhYnMuY2hhbmdlc1xuICAgIC8vICAgICAgICAgLnN1YnNjcmliZShfID0+IE1lbnVUZXN0aW5nUGFnZS50YWJzQ2hhbmdlcy5uZXh0KHRoaXMudGFicy50b0FycmF5KCkpKVxuICAgIC8vICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9RGVzdHJveWluZy4uLmApO1xuICB9XG5cbiAgbG9hZChpZD86IG51bWJlciwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGdldCBpc05ld0RhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHNhdmUoZXZlbnQ6IEV2ZW50IHwgdW5kZWZpbmVkLCBvcHRpb25zOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVUaGlyZCgpIHtcbiAgICBpZiAoIXRoaXMudGhpcmRUYWJUaXRsZSkge1xuICAgICAgdGhpcy50aGlyZFRhYlRpdGxlID0gJ1RoaXJkJztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnRoaXJkVGFiVGl0bGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0U3ViTWVudSgpIHtcbiAgICBjb25zdCBwYXRoUGFyYW0gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KHRoaXMucm91dGVyLnVybCk7XG4gICAgdGhpcy50aXRsZSA9ICdNZW51JztcbiAgICB0aGlzLnNlY29uZFRhYlRpdGxlID0gJ090aGVycyc7XG4gICAgdGhpcy5wYXJlbnRQYXRoID0gJy90ZXN0aW5nJztcbiAgICB0aGlzLmNoaWxkUGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudS9vdGhlcic7XG4gICAgY29uc3QgcGF0aCA9ICcvdGVzdGluZy9zaGFyZWQvbWVudSc7XG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH0gU2V0dXAgd2l0aGAsIHtwYXRoLCBwYXJlbnRQYXRoOiB0aGlzLnBhcmVudFBhdGh9KTtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmFkZFN1Yk1lbnVJdGVtcyhcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnTWVudScsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwYXJlbnRQYXRoOiB0aGlzLnBhcmVudFBhdGgsXG4gICAgICAgICAgYWN0aW9uOiBudWxsLFxuICAgICAgICAgIHByb2ZpbGU6ICdHVUVTVCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogdGhpcy5zZWNvbmRUYWJUaXRsZSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHBhdGhQYXJhbXM6IHt0YWI6ICcxJ30sXG4gICAgICAgICAgcGFyZW50UGF0aDogcGF0aCxcbiAgICAgICAgICBhY3Rpb246IG51bGwsXG4gICAgICAgICAgcHJvZmlsZTogJ0dVRVNUJyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Rmlyc3RJbnZhbGlkVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIiwiPGFwcC10b29sYmFyIFtkZWZhdWx0QmFja0hyZWZdPVwicGFyZW50UGF0aFwiPlxuICA8aW9uLXRpdGxlPnt7IHRpdGxlIH19PC9pb24tdGl0bGU+XG48L2FwcC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQ+XG5cbiAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwXG4gICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRUYWJJbmRleFwiXG4gICAgICAgICAgICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgZHluYW1pY0hlaWdodD5cblxuICAgIDwhLS0gVEFCOiAxIC0tPlxuICAgIDxtYXQtdGFiIGxhYmVsPVwiRGV0YWlsc1wiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPkRldGFpbHM8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICBBIGZpcnN0IHRhYjxici8+XG5cbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVRoaXJkKClcIj5cbiAgICAgICAgICBUaGlyZCB0YWIgP1xuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAyIC0tPlxuICAgIDxtYXQtdGFiIFtsYWJlbF09XCJzZWNvbmRUYWJUaXRsZVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPnt7c2Vjb25kVGFiVGl0bGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIEEgc2Vjb25kIHRhYjxici8+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY29uZFRhYlRpdGxlPT09ICdPdGhlcnMnXCI+XG4gICAgICAgICAgTmF2aWdhdGUgdG8gOiA8YSBbcm91dGVyTGlua109XCJjaGlsZFBhdGhcIiA+XG4gICAgICAgICAgICB7eyBjaGlsZFBhdGggfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFRBQjogMyAtLT5cbiAgICA8bWF0LXRhYiAqbmdJZj1cInRoaXJkVGFiVGl0bGVcIlxuICAgICAgICAgICAgIFtsYWJlbF09XCJ0aGlyZFRhYlRpdGxlXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWw+e3t0aGlyZFRhYlRpdGxlfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICBBIHRoaXJkIHRhYlxuICAgICAgPC9kaXY+XG5cbiAgICA8L21hdC10YWI+XG4gIDwvbWF0LXRhYi1ncm91cD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=