tango-app-ui-shared 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/guards/auth.guard.mjs +26 -0
- package/esm2022/lib/i18n/index.mjs +3 -0
- package/esm2022/lib/i18n/translation.module.mjs +17 -0
- package/esm2022/lib/i18n/translation.service.mjs +53 -0
- package/esm2022/lib/i18n/vocabs/ch.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/de.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/en.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/es.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/fr.mjs +106 -0
- package/esm2022/lib/i18n/vocabs/jp.mjs +106 -0
- package/esm2022/lib/interceptors/http-auth-interceptor.mjs +19 -0
- package/esm2022/lib/interfaces/global-state.mjs +2 -0
- package/esm2022/lib/modules/errors/error404/error404.component.mjs +45 -0
- package/esm2022/lib/modules/errors/error500/error500.component.mjs +45 -0
- package/esm2022/lib/modules/errors/errors-routing.module.mjs +38 -0
- package/esm2022/lib/modules/errors/errors.component.mjs +39 -0
- package/esm2022/lib/modules/errors/errors.module.mjs +31 -0
- package/esm2022/lib/modules/layout/content/content.component.mjs +43 -0
- package/esm2022/lib/modules/layout/footer/footer.component.mjs +17 -0
- package/esm2022/lib/modules/layout/header/header-menu/header-menu.component.mjs +41 -0
- package/esm2022/lib/modules/layout/header/header.component.mjs +100 -0
- package/esm2022/lib/modules/layout/header/navbar/navbar.component.mjs +24 -0
- package/esm2022/lib/modules/layout/header/page-title/page-title.component.mjs +50 -0
- package/esm2022/lib/modules/layout/keenicon/icons.json +1 -0
- package/esm2022/lib/modules/layout/keenicon/keenicon.component.mjs +37 -0
- package/esm2022/lib/modules/layout/layout/layout.component.mjs +285 -0
- package/esm2022/lib/modules/layout/layout.module.mjs +139 -0
- package/esm2022/lib/modules/layout/scripts-init/scripts-init.component.mjs +74 -0
- package/esm2022/lib/modules/layout/scroll-top/scroll-top.component.mjs +74 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.mjs +14 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.mjs +46 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.mjs +15 -0
- package/esm2022/lib/modules/layout/sidebar/sidebar.component.mjs +132 -0
- package/esm2022/lib/modules/layout/toolbar/accounting/accounting.component.mjs +15 -0
- package/esm2022/lib/modules/layout/toolbar/classic/classic.component.mjs +67 -0
- package/esm2022/lib/modules/layout/toolbar/extended/extended.component.mjs +14 -0
- package/esm2022/lib/modules/layout/toolbar/reports/reports.component.mjs +17 -0
- package/esm2022/lib/modules/layout/toolbar/saas/saas.component.mjs +17 -0
- package/esm2022/lib/modules/layout/toolbar/toolbar.component.mjs +89 -0
- package/esm2022/lib/routes/route-wraper-modules/manage-wrapper.module.mjs +18 -0
- package/esm2022/lib/routes/route-wraper-modules/profile-wrapper.module.mjs +18 -0
- package/esm2022/lib/routes/route-wraper-modules/store-wrapper.module.mjs +18 -0
- package/esm2022/lib/routes/routing.mjs +25 -0
- package/esm2022/lib/services/auth.service.mjs +23 -0
- package/esm2022/lib/services/global-state.service.mjs +16 -0
- package/esm2022/public-api.mjs +48 -0
- package/esm2022/tango-app-ui-shared.mjs +5 -0
- package/fesm2022/tango-app-ui-shared-manage-wrapper.module-B6GJQNQZ.mjs +21 -0
- package/fesm2022/tango-app-ui-shared-manage-wrapper.module-B6GJQNQZ.mjs.map +1 -0
- package/fesm2022/tango-app-ui-shared-profile-wrapper.module-CTJBnU9I.mjs +21 -0
- package/fesm2022/tango-app-ui-shared-profile-wrapper.module-CTJBnU9I.mjs.map +1 -0
- package/fesm2022/tango-app-ui-shared-store-wrapper.module-UYYC9an_.mjs +21 -0
- package/fesm2022/tango-app-ui-shared-store-wrapper.module-UYYC9an_.mjs.map +1 -0
- package/fesm2022/tango-app-ui-shared.mjs +3418 -0
- package/fesm2022/tango-app-ui-shared.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/guards/auth.guard.d.ts +10 -0
- package/{src/lib/i18n/index.ts → lib/i18n/index.d.ts} +2 -2
- package/lib/i18n/translation.module.d.ts +8 -0
- package/lib/i18n/translation.service.d.ts +19 -0
- package/lib/i18n/vocabs/ch.d.ts +104 -0
- package/lib/i18n/vocabs/de.d.ts +104 -0
- package/lib/i18n/vocabs/en.d.ts +104 -0
- package/lib/i18n/vocabs/es.d.ts +104 -0
- package/lib/i18n/vocabs/fr.d.ts +104 -0
- package/lib/i18n/vocabs/jp.d.ts +104 -0
- package/lib/interceptors/http-auth-interceptor.d.ts +9 -0
- package/lib/interfaces/global-state.d.ts +5 -0
- package/lib/modules/errors/error404/error404.component.d.ts +15 -0
- package/lib/modules/errors/error500/error500.component.d.ts +15 -0
- package/lib/modules/errors/errors-routing.module.d.ts +7 -0
- package/lib/modules/errors/errors.component.d.ts +13 -0
- package/lib/modules/errors/errors.module.d.ts +11 -0
- package/lib/modules/layout/content/content.component.d.ts +16 -0
- package/lib/modules/layout/footer/footer.component.d.ts +8 -0
- package/lib/modules/layout/header/header-menu/header-menu.component.d.ts +18 -0
- package/lib/modules/layout/header/header.component.d.ts +30 -0
- package/lib/modules/layout/header/navbar/navbar.component.d.ts +14 -0
- package/lib/modules/layout/header/page-title/page-title.component.d.ts +20 -0
- package/lib/modules/layout/keenicon/keenicon.component.d.ts +13 -0
- package/lib/modules/layout/layout/layout.component.d.ts +74 -0
- package/lib/modules/layout/layout.module.d.ts +32 -0
- package/lib/modules/layout/scripts-init/scripts-init.component.d.ts +19 -0
- package/lib/modules/layout/scroll-top/scroll-top.component.d.ts +19 -0
- package/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.d.ts +8 -0
- package/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.d.ts +19 -0
- package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +8 -0
- package/lib/modules/layout/sidebar/sidebar.component.d.ts +35 -0
- package/lib/modules/layout/toolbar/accounting/accounting.component.d.ts +8 -0
- package/lib/modules/layout/toolbar/classic/classic.component.d.ts +27 -0
- package/lib/modules/layout/toolbar/extended/extended.component.d.ts +8 -0
- package/lib/modules/layout/toolbar/reports/reports.component.d.ts +9 -0
- package/lib/modules/layout/toolbar/saas/saas.component.d.ts +9 -0
- package/lib/modules/layout/toolbar/toolbar.component.d.ts +27 -0
- package/lib/routes/route-wraper-modules/manage-wrapper.module.d.ts +7 -0
- package/lib/routes/route-wraper-modules/profile-wrapper.module.d.ts +7 -0
- package/lib/routes/route-wraper-modules/store-wrapper.module.d.ts +7 -0
- package/lib/routes/routing.d.ts +3 -0
- package/lib/services/auth.service.d.ts +9 -0
- package/lib/services/global-state.service.d.ts +9 -0
- package/package.json +25 -12
- package/{src/public-api.ts → public-api.d.ts} +37 -64
- package/.eslintrc.json +0 -37
- package/ng-package.json +0 -7
- package/src/lib/guards/auth.guard.ts +0 -20
- package/src/lib/i18n/translation.module.ts +0 -9
- package/src/lib/i18n/translation.service.ts +0 -61
- package/src/lib/i18n/vocabs/ch.ts +0 -105
- package/src/lib/i18n/vocabs/de.ts +0 -105
- package/src/lib/i18n/vocabs/en.ts +0 -105
- package/src/lib/i18n/vocabs/es.ts +0 -105
- package/src/lib/i18n/vocabs/fr.ts +0 -105
- package/src/lib/i18n/vocabs/jp.ts +0 -105
- package/src/lib/interceptors/http-auth-interceptor.ts +0 -21
- package/src/lib/interfaces/global-state.ts +0 -6
- package/src/lib/modules/errors/error404/error404.component.html +0 -24
- package/src/lib/modules/errors/error404/error404.component.scss +0 -0
- package/src/lib/modules/errors/error404/error404.component.spec.ts +0 -25
- package/src/lib/modules/errors/error404/error404.component.ts +0 -50
- package/src/lib/modules/errors/error500/error500.component.html +0 -24
- package/src/lib/modules/errors/error500/error500.component.scss +0 -0
- package/src/lib/modules/errors/error500/error500.component.spec.ts +0 -25
- package/src/lib/modules/errors/error500/error500.component.ts +0 -50
- package/src/lib/modules/errors/errors-routing.module.ts +0 -30
- package/src/lib/modules/errors/errors.component.html +0 -15
- package/src/lib/modules/errors/errors.component.scss +0 -4
- package/src/lib/modules/errors/errors.component.spec.ts +0 -25
- package/src/lib/modules/errors/errors.component.ts +0 -42
- package/src/lib/modules/errors/errors.module.ts +0 -21
- package/src/lib/modules/layout/content/content.component.html +0 -12
- package/src/lib/modules/layout/content/content.component.scss +0 -0
- package/src/lib/modules/layout/content/content.component.ts +0 -35
- package/src/lib/modules/layout/footer/footer.component.html +0 -32
- package/src/lib/modules/layout/footer/footer.component.scss +0 -0
- package/src/lib/modules/layout/footer/footer.component.spec.ts +0 -25
- package/src/lib/modules/layout/footer/footer.component.ts +0 -13
- package/src/lib/modules/layout/header/header-menu/header-menu.component.html +0 -27
- package/src/lib/modules/layout/header/header-menu/header-menu.component.scss +0 -4
- package/src/lib/modules/layout/header/header-menu/header-menu.component.spec.ts +0 -25
- package/src/lib/modules/layout/header/header-menu/header-menu.component.ts +0 -38
- package/src/lib/modules/layout/header/header.component.html +0 -90
- package/src/lib/modules/layout/header/header.component.scss +0 -0
- package/src/lib/modules/layout/header/header.component.spec.ts +0 -25
- package/src/lib/modules/layout/header/header.component.ts +0 -139
- package/src/lib/modules/layout/header/navbar/navbar.component.html +0 -92
- package/src/lib/modules/layout/header/navbar/navbar.component.scss +0 -0
- package/src/lib/modules/layout/header/navbar/navbar.component.spec.ts +0 -23
- package/src/lib/modules/layout/header/navbar/navbar.component.ts +0 -20
- package/src/lib/modules/layout/header/page-title/page-title.component.html +0 -32
- package/src/lib/modules/layout/header/page-title/page-title.component.ts +0 -40
- package/src/lib/modules/layout/keenicon/icons.json +0 -1
- package/src/lib/modules/layout/keenicon/keenicon.component.html +0 -4
- package/src/lib/modules/layout/keenicon/keenicon.component.scss +0 -0
- package/src/lib/modules/layout/keenicon/keenicon.component.spec.ts +0 -23
- package/src/lib/modules/layout/keenicon/keenicon.component.ts +0 -30
- package/src/lib/modules/layout/layout/layout.component.html +0 -70
- package/src/lib/modules/layout/layout/layout.component.scss +0 -15
- package/src/lib/modules/layout/layout/layout.component.ts +0 -399
- package/src/lib/modules/layout/layout.module.ts +0 -93
- package/src/lib/modules/layout/scripts-init/scripts-init.component.html +0 -0
- package/src/lib/modules/layout/scripts-init/scripts-init.component.ts +0 -81
- package/src/lib/modules/layout/scroll-top/scroll-top.component.html +0 -1
- package/src/lib/modules/layout/scroll-top/scroll-top.component.ts +0 -75
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.html +0 -9
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.ts +0 -13
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.html +0 -26
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.ts +0 -36
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.html +0 -276
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.ts +0 -15
- package/src/lib/modules/layout/sidebar/sidebar.component.html +0 -16
- package/src/lib/modules/layout/sidebar/sidebar.component.scss +0 -0
- package/src/lib/modules/layout/sidebar/sidebar.component.spec.ts +0 -23
- package/src/lib/modules/layout/sidebar/sidebar.component.ts +0 -203
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.html +0 -84
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/accounting/accounting.component.ts +0 -14
- package/src/lib/modules/layout/toolbar/classic/classic.component.html +0 -37
- package/src/lib/modules/layout/toolbar/classic/classic.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/classic/classic.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/classic/classic.component.ts +0 -88
- package/src/lib/modules/layout/toolbar/extended/extended.component.html +0 -100
- package/src/lib/modules/layout/toolbar/extended/extended.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/extended/extended.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/extended/extended.component.ts +0 -12
- package/src/lib/modules/layout/toolbar/reports/reports.component.html +0 -62
- package/src/lib/modules/layout/toolbar/reports/reports.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/reports/reports.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/reports/reports.component.ts +0 -14
- package/src/lib/modules/layout/toolbar/saas/saas.component.html +0 -77
- package/src/lib/modules/layout/toolbar/saas/saas.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/saas/saas.component.spec.ts +0 -23
- package/src/lib/modules/layout/toolbar/saas/saas.component.ts +0 -14
- package/src/lib/modules/layout/toolbar/toolbar.component.html +0 -27
- package/src/lib/modules/layout/toolbar/toolbar.component.scss +0 -0
- package/src/lib/modules/layout/toolbar/toolbar.component.spec.ts +0 -25
- package/src/lib/modules/layout/toolbar/toolbar.component.ts +0 -125
- package/src/lib/routes/route-wraper-modules/manage-wrapper.module.ts +0 -12
- package/src/lib/routes/route-wraper-modules/profile-wrapper.module.ts +0 -12
- package/src/lib/routes/route-wraper-modules/store-wrapper.module.ts +0 -12
- package/src/lib/routes/routing.ts +0 -72
- package/src/lib/services/auth.service.ts +0 -16
- package/src/lib/services/global-state.service.ts +0 -11
- package/tsconfig.lib.json +0 -14
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { Component, ViewChild, } from '@angular/core';
|
|
2
|
+
import { NavigationEnd } from '@angular/router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "tango-app-ui-metronics";
|
|
5
|
+
import * as i2 from "@angular/router";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "../header/header.component";
|
|
8
|
+
import * as i5 from "../content/content.component";
|
|
9
|
+
import * as i6 from "../scripts-init/scripts-init.component";
|
|
10
|
+
import * as i7 from "../toolbar/toolbar.component";
|
|
11
|
+
import * as i8 from "../sidebar/sidebar.component";
|
|
12
|
+
import * as i9 from "../scroll-top/scroll-top.component";
|
|
13
|
+
export class LayoutComponent {
|
|
14
|
+
initService;
|
|
15
|
+
layout;
|
|
16
|
+
router;
|
|
17
|
+
activatedRoute;
|
|
18
|
+
unsubscribe = [];
|
|
19
|
+
// Public variables
|
|
20
|
+
// page
|
|
21
|
+
pageContainerCSSClasses;
|
|
22
|
+
// header
|
|
23
|
+
appHeaderDefaultClass = '';
|
|
24
|
+
appHeaderDisplay;
|
|
25
|
+
appHeaderDefaultStickyEnabled;
|
|
26
|
+
appHeaderDefaultStickyAttributes = {};
|
|
27
|
+
appHeaderDefaultMinimizeEnabled;
|
|
28
|
+
appHeaderDefaultMinimizeAttributes = {};
|
|
29
|
+
// toolbar
|
|
30
|
+
appToolbarDisplay;
|
|
31
|
+
appToolbarLayout;
|
|
32
|
+
appToolbarCSSClass = '';
|
|
33
|
+
appToolbarSwapEnabled;
|
|
34
|
+
appToolbarSwapAttributes = {};
|
|
35
|
+
appToolbarStickyEnabled;
|
|
36
|
+
appToolbarStickyAttributes = {};
|
|
37
|
+
appToolbarMinimizeEnabled;
|
|
38
|
+
appToolbarMinimizeAttributes = {};
|
|
39
|
+
// content
|
|
40
|
+
appContentContiner;
|
|
41
|
+
appContentContainerClass;
|
|
42
|
+
contentCSSClasses;
|
|
43
|
+
contentContainerCSSClass;
|
|
44
|
+
// sidebar
|
|
45
|
+
appSidebarDefaultClass;
|
|
46
|
+
appSidebarDefaultDrawerEnabled;
|
|
47
|
+
appSidebarDefaultDrawerAttributes = {};
|
|
48
|
+
appSidebarDisplay;
|
|
49
|
+
appSidebarDefaultStickyEnabled;
|
|
50
|
+
appSidebarDefaultStickyAttributes = {};
|
|
51
|
+
ktSidebar;
|
|
52
|
+
/// sidebar panel
|
|
53
|
+
appSidebarPanelDisplay;
|
|
54
|
+
// footer
|
|
55
|
+
appFooterDisplay;
|
|
56
|
+
appFooterCSSClass = '';
|
|
57
|
+
appFooterContainer = '';
|
|
58
|
+
appFooterContainerCSSClass = '';
|
|
59
|
+
appFooterFixedDesktop;
|
|
60
|
+
appFooterFixedMobile;
|
|
61
|
+
// scrolltop
|
|
62
|
+
scrolltopDisplay;
|
|
63
|
+
ktAside;
|
|
64
|
+
ktHeaderMobile;
|
|
65
|
+
ktHeader;
|
|
66
|
+
constructor(initService, layout, router, activatedRoute) {
|
|
67
|
+
this.initService = initService;
|
|
68
|
+
this.layout = layout;
|
|
69
|
+
this.router = router;
|
|
70
|
+
this.activatedRoute = activatedRoute;
|
|
71
|
+
// define layout type and load layout
|
|
72
|
+
this.router.events.subscribe((event) => {
|
|
73
|
+
if (event instanceof NavigationEnd) {
|
|
74
|
+
const currentLayoutType = this.layout.currentLayoutTypeSubject.value;
|
|
75
|
+
const nextLayoutType = this.activatedRoute?.firstChild?.snapshot.data.layout ||
|
|
76
|
+
this.layout.getBaseLayoutTypeFromLocalStorage();
|
|
77
|
+
if (currentLayoutType !== nextLayoutType || !currentLayoutType) {
|
|
78
|
+
this.layout.currentLayoutTypeSubject.next(nextLayoutType);
|
|
79
|
+
this.initService.reInitProps(nextLayoutType);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
ngOnInit() {
|
|
85
|
+
const subscr = this.layout.layoutConfigSubject
|
|
86
|
+
.asObservable()
|
|
87
|
+
.subscribe((config) => {
|
|
88
|
+
this.updateProps(config);
|
|
89
|
+
});
|
|
90
|
+
this.unsubscribe.push(subscr);
|
|
91
|
+
}
|
|
92
|
+
updateProps(config) {
|
|
93
|
+
this.scrolltopDisplay = this.layout.getProp('scrolltop.display', config);
|
|
94
|
+
this.pageContainerCSSClasses =
|
|
95
|
+
this.layout.getStringCSSClasses('pageContainer');
|
|
96
|
+
this.appHeaderDefaultClass = this.layout.getProp('app.header.default.class', config);
|
|
97
|
+
this.appHeaderDisplay = this.layout.getProp('app.header.display', config);
|
|
98
|
+
this.appFooterDisplay = this.layout.getProp('app.footer.display', config);
|
|
99
|
+
this.appSidebarDisplay = this.layout.getProp('app.sidebar.display', config);
|
|
100
|
+
this.appSidebarPanelDisplay = this.layout.getProp('app.sidebar-panel.display', config);
|
|
101
|
+
this.appToolbarDisplay = this.layout.getProp('app.toolbar.display', config);
|
|
102
|
+
this.contentCSSClasses = this.layout.getStringCSSClasses('content');
|
|
103
|
+
this.contentContainerCSSClass =
|
|
104
|
+
this.layout.getStringCSSClasses('contentContainer');
|
|
105
|
+
this.appContentContiner = this.layout.getProp('app.content.container', config);
|
|
106
|
+
this.appContentContainerClass = this.layout.getProp('app.content.containerClass', config);
|
|
107
|
+
// footer
|
|
108
|
+
if (this.appFooterDisplay) {
|
|
109
|
+
this.updateFooter(config);
|
|
110
|
+
}
|
|
111
|
+
// sidebar
|
|
112
|
+
if (this.appSidebarDisplay) {
|
|
113
|
+
this.updateSidebar(config);
|
|
114
|
+
}
|
|
115
|
+
// header
|
|
116
|
+
if (this.appHeaderDisplay) {
|
|
117
|
+
this.updateHeader(config);
|
|
118
|
+
}
|
|
119
|
+
// toolbar
|
|
120
|
+
if (this.appToolbarDisplay) {
|
|
121
|
+
this.updateToolbar(config);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
updateSidebar(config) {
|
|
125
|
+
this.appSidebarDefaultClass = this.layout.getProp('app.sidebar.default.class', config);
|
|
126
|
+
this.appSidebarDefaultDrawerEnabled = this.layout.getProp('app.sidebar.default.drawer.enabled', config);
|
|
127
|
+
if (this.appSidebarDefaultDrawerEnabled) {
|
|
128
|
+
this.appSidebarDefaultDrawerAttributes = this.layout.getProp('app.sidebar.default.drawer.attributes', config);
|
|
129
|
+
}
|
|
130
|
+
this.appSidebarDefaultStickyEnabled = this.layout.getProp('app.sidebar.default.sticky.enabled', config);
|
|
131
|
+
if (this.appSidebarDefaultStickyEnabled) {
|
|
132
|
+
this.appSidebarDefaultStickyAttributes = this.layout.getProp('app.sidebar.default.sticky.attributes', config);
|
|
133
|
+
}
|
|
134
|
+
setTimeout(() => {
|
|
135
|
+
const sidebarElement = document.getElementById('kt_app_sidebar');
|
|
136
|
+
// sidebar
|
|
137
|
+
if (this.appSidebarDisplay && sidebarElement) {
|
|
138
|
+
const sidebarAttributes = sidebarElement
|
|
139
|
+
.getAttributeNames()
|
|
140
|
+
.filter((t) => t.indexOf('data-') > -1);
|
|
141
|
+
sidebarAttributes.forEach((attr) => sidebarElement.removeAttribute(attr));
|
|
142
|
+
if (this.appSidebarDefaultDrawerEnabled) {
|
|
143
|
+
for (const key in this.appSidebarDefaultDrawerAttributes) {
|
|
144
|
+
if (this.appSidebarDefaultDrawerAttributes.hasOwnProperty(key)) {
|
|
145
|
+
sidebarElement.setAttribute(key, this.appSidebarDefaultDrawerAttributes[key]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (this.appSidebarDefaultStickyEnabled) {
|
|
150
|
+
for (const key in this.appSidebarDefaultStickyAttributes) {
|
|
151
|
+
if (this.appSidebarDefaultStickyAttributes.hasOwnProperty(key)) {
|
|
152
|
+
sidebarElement.setAttribute(key, this.appSidebarDefaultStickyAttributes[key]);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}, 0);
|
|
158
|
+
}
|
|
159
|
+
updateHeader(config) {
|
|
160
|
+
this.appHeaderDefaultStickyEnabled = this.layout.getProp('app.header.default.sticky.enabled', config);
|
|
161
|
+
if (this.appHeaderDefaultStickyEnabled) {
|
|
162
|
+
this.appHeaderDefaultStickyAttributes = this.layout.getProp('app.header.default.sticky.attributes', config);
|
|
163
|
+
}
|
|
164
|
+
this.appHeaderDefaultMinimizeEnabled = this.layout.getProp('app.header.default.minimize.enabled', config);
|
|
165
|
+
if (this.appHeaderDefaultMinimizeEnabled) {
|
|
166
|
+
this.appHeaderDefaultMinimizeAttributes = this.layout.getProp('app.header.default.minimize.attributes', config);
|
|
167
|
+
}
|
|
168
|
+
setTimeout(() => {
|
|
169
|
+
const headerElement = document.getElementById('kt_app_header');
|
|
170
|
+
// header
|
|
171
|
+
if (this.appHeaderDisplay && headerElement) {
|
|
172
|
+
const headerAttributes = headerElement
|
|
173
|
+
.getAttributeNames()
|
|
174
|
+
.filter((t) => t.indexOf('data-') > -1);
|
|
175
|
+
headerAttributes.forEach((attr) => headerElement.removeAttribute(attr));
|
|
176
|
+
if (this.appHeaderDefaultStickyEnabled) {
|
|
177
|
+
for (const key in this.appHeaderDefaultStickyAttributes) {
|
|
178
|
+
if (this.appHeaderDefaultStickyAttributes.hasOwnProperty(key)) {
|
|
179
|
+
headerElement.setAttribute(key, this.appHeaderDefaultStickyAttributes[key]);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (this.appHeaderDefaultMinimizeEnabled) {
|
|
184
|
+
for (const key in this.appHeaderDefaultMinimizeAttributes) {
|
|
185
|
+
if (this.appHeaderDefaultMinimizeAttributes.hasOwnProperty(key)) {
|
|
186
|
+
headerElement.setAttribute(key, this.appHeaderDefaultMinimizeAttributes[key]);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}, 0);
|
|
192
|
+
}
|
|
193
|
+
updateFooter(config) {
|
|
194
|
+
this.appFooterCSSClass = this.layout.getProp('app.footer.class', config);
|
|
195
|
+
this.appFooterContainer = this.layout.getProp('app.footer.container', config);
|
|
196
|
+
this.appFooterContainerCSSClass = this.layout.getProp('app.footer.containerClass', config);
|
|
197
|
+
if (this.appFooterContainer === 'fixed') {
|
|
198
|
+
this.appFooterContainerCSSClass += ' container-xxl';
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
if (this.appFooterContainer === 'fluid') {
|
|
202
|
+
this.appFooterContainerCSSClass += ' container-fluid';
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
this.appFooterFixedDesktop = this.layout.getProp('app.footer.fixed.desktop', config);
|
|
206
|
+
if (this.appFooterFixedDesktop) {
|
|
207
|
+
document.body.setAttribute('data-kt-app-footer-fixed', 'true');
|
|
208
|
+
}
|
|
209
|
+
this.appFooterFixedMobile = this.layout.getProp('app.footer.fixed.mobile');
|
|
210
|
+
if (this.appFooterFixedMobile) {
|
|
211
|
+
document.body.setAttribute('data-kt-app-footer-fixed-mobile', 'true');
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
updateToolbar(config) {
|
|
215
|
+
this.appToolbarLayout = this.layout.getProp('app.toolbar.layout', config);
|
|
216
|
+
this.appToolbarSwapEnabled = this.layout.getProp('app.toolbar.swap.enabled', config);
|
|
217
|
+
if (this.appToolbarSwapEnabled) {
|
|
218
|
+
this.appToolbarSwapAttributes = this.layout.getProp('app.toolbar.swap.attributes', config);
|
|
219
|
+
}
|
|
220
|
+
this.appToolbarStickyEnabled = this.layout.getProp('app.toolbar.sticky.enabled', config);
|
|
221
|
+
if (this.appToolbarStickyEnabled) {
|
|
222
|
+
this.appToolbarStickyAttributes = this.layout.getProp('app.toolbar.sticky.attributes', config);
|
|
223
|
+
}
|
|
224
|
+
this.appToolbarCSSClass =
|
|
225
|
+
this.layout.getProp('app.toolbar.class', config) || '';
|
|
226
|
+
this.appToolbarMinimizeEnabled = this.layout.getProp('app.toolbar.minimize.enabled', config);
|
|
227
|
+
if (this.appToolbarMinimizeEnabled) {
|
|
228
|
+
this.appToolbarMinimizeAttributes = this.layout.getProp('app.toolbar.minimize.attributes', config);
|
|
229
|
+
this.appToolbarCSSClass += ' app-toolbar-minimize';
|
|
230
|
+
}
|
|
231
|
+
setTimeout(() => {
|
|
232
|
+
const toolbarElement = document.getElementById('kt_app_toolbar');
|
|
233
|
+
// toolbar
|
|
234
|
+
if (this.appToolbarDisplay && toolbarElement) {
|
|
235
|
+
const toolbarAttributes = toolbarElement
|
|
236
|
+
.getAttributeNames()
|
|
237
|
+
.filter((t) => t.indexOf('data-') > -1);
|
|
238
|
+
toolbarAttributes.forEach((attr) => toolbarElement.removeAttribute(attr));
|
|
239
|
+
if (this.appToolbarSwapEnabled) {
|
|
240
|
+
for (const key in this.appToolbarSwapAttributes) {
|
|
241
|
+
if (this.appToolbarSwapAttributes.hasOwnProperty(key)) {
|
|
242
|
+
toolbarElement.setAttribute(key, this.appToolbarSwapAttributes[key]);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (this.appToolbarStickyEnabled) {
|
|
247
|
+
for (const key in this.appToolbarStickyAttributes) {
|
|
248
|
+
if (this.appToolbarStickyAttributes.hasOwnProperty(key)) {
|
|
249
|
+
toolbarElement.setAttribute(key, this.appToolbarStickyAttributes[key]);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (this.appToolbarMinimizeEnabled) {
|
|
254
|
+
for (const key in this.appToolbarMinimizeAttributes) {
|
|
255
|
+
if (this.appToolbarMinimizeAttributes.hasOwnProperty(key)) {
|
|
256
|
+
toolbarElement.setAttribute(key, this.appToolbarMinimizeAttributes[key]);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}, 0);
|
|
262
|
+
}
|
|
263
|
+
ngOnDestroy() {
|
|
264
|
+
this.unsubscribe.forEach((sb) => sb.unsubscribe());
|
|
265
|
+
}
|
|
266
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LayoutComponent, deps: [{ token: i1.LayoutInitService }, { token: i1.LayoutService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
267
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: LayoutComponent, selector: "lib-layout", viewQueries: [{ propertyName: "ktSidebar", first: true, predicate: ["ktSidebar"], descendants: true, static: true }, { propertyName: "ktAside", first: true, predicate: ["ktAside"], descendants: true, static: true }, { propertyName: "ktHeaderMobile", first: true, predicate: ["ktHeaderMobile"], descendants: true, static: true }, { propertyName: "ktHeader", first: true, predicate: ["ktHeader"], descendants: true, static: true }], ngImport: i0, template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\" data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\" data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main flex-column flex-row-fluid\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <div class=\"d-flex flex-column flex-column-fluid\">\r\n <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container>\r\n <lib-content id=\" kt_app_content\" class=\"app-content\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <!-- <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container> -->\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->\r\n", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.HeaderComponent, selector: "lib-header" }, { kind: "component", type: i5.ContentComponent, selector: "lib-content", inputs: ["contentContainerCSSClass", "appContentContiner", "appContentContainerClass"] }, { kind: "component", type: i6.ScriptsInitComponent, selector: "lib-scripts-init" }, { kind: "component", type: i7.ToolbarComponent, selector: "lib-toolbar", inputs: ["currentLayoutType", "appToolbarLayout"] }, { kind: "component", type: i8.SidebarComponent, selector: "lib-sidebar" }, { kind: "component", type: i9.LayoutScrollTopComponent, selector: "lib-scroll-top" }] });
|
|
268
|
+
}
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LayoutComponent, decorators: [{
|
|
270
|
+
type: Component,
|
|
271
|
+
args: [{ selector: 'lib-layout', template: "<!--begin::App-->\r\n<div class=\"d-flex flex-column flex-root app-root\" id=\"kt_app_root\">\r\n <!--begin::Page-->\r\n <div class=\"app-page flex-column flex-column-fluid\" id=\"kt_app_page\">\r\n <ng-container *ngIf=\"appHeaderDisplay\">\r\n <!--begin::Header-->\r\n <lib-header [ngClass]=\"appHeaderDefaultClass\" id=\"kt_app_header\" class=\"app-header\" data-kt-sticky=\"true\" data-kt-sticky-activate=\"{default: true, lg: true}\" data-kt-sticky-name=\"app-header-minimize\" data-kt-sticky-offset=\"{default: '200px', lg: '0'}\" data-kt-sticky-animation=\"false\">\r\n </lib-header>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Wrapper-->\r\n <div class=\"app-wrapper flex-column flex-row-fluid\" id=\"kt_app_wrapper\">\r\n\r\n <ng-container *ngIf=\"appSidebarDisplay\">\r\n <!--begin::sidebar-->\r\n <lib-sidebar #ktSidebar id=\"kt_app_sidebar\" class=\"app-sidebar flex-column\" [ngClass]=\"appSidebarDefaultClass\">\r\n </lib-sidebar>\r\n <!--end::sidebar-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"appSidebarPanelDisplay\">\r\n <!-- TODO: app sidebar panel -->\r\n </ng-container>\r\n <!--begin::Main-->\r\n <div class=\"app-main flex-column flex-row-fluid\" id=\"kt_app_main\">\r\n <!--begin::Content wrapper-->\r\n <div class=\"d-flex flex-column flex-column-fluid\">\r\n <ng-container *ngIf=\"appToolbarDisplay\">\r\n <lib-toolbar class=\"app-toolbar\" [ngClass]=\"appToolbarCSSClass\" id=\"kt_app_toolbar\"\r\n [appToolbarLayout]=\"appToolbarLayout\"></lib-toolbar>\r\n </ng-container>\r\n <lib-content id=\" kt_app_content\" class=\"app-content\" [ngClass]=\"contentCSSClasses\"\r\n [contentContainerCSSClass]=\"contentContainerCSSClass\" [appContentContiner]=\"appContentContiner\"\r\n [appContentContainerClass]=\"appContentContainerClass\">\r\n </lib-content>\r\n </div>\r\n <!--end::Content wrapper-->\r\n <!-- <ng-container *ngIf=\"appFooterDisplay\">\r\n <lib-footer class=\"app-footer\" [ngClass]=\"appFooterCSSClass\" id=\"kt_app_footer\"\r\n [appFooterContainerCSSClass]=\"appFooterContainerCSSClass\"></lib-footer>\r\n </ng-container> -->\r\n </div>\r\n <!--end:::Main-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n </div>\r\n <!--end::Page-->\r\n</div>\r\n<!--end::App-->\r\n\r\n<lib-scripts-init></lib-scripts-init>\r\n<ng-container>\r\n <lib-scroll-top id=\"kt_scrolltop\" class=\"scrolltop\" data-kt-scrolltop=\"true\"></lib-scroll-top>\r\n</ng-container>\r\n<!-- begin:: Drawers -->\r\n<!-- <lib-activity-drawer></lib-activity-drawer> -->\r\n<!-- <lib-messenger-drawer></lib-messenger-drawer> -->\r\n<!-- end:: Drawers -->\r\n\r\n<!-- end:: Engage -->\r\n<!-- <lib-engages></lib-engages> -->\r\n<!-- end:: Engage -->\r\n\r\n<!-- begin:: Modals -->\r\n<!-- <lib-main-modal></lib-main-modal> -->\r\n<!-- <lib-invite-users-modal></lib-invite-users-modal> -->\r\n<!-- <lib-upgrade-plan-modal></lib-upgrade-plan-modal> -->\r\n<!-- end:: Modals -->\r\n", styles: [":host{height:100%;margin:0}:host .flex-root{height:100%}.page-loaded app-layout{opacity:1;transition:opacity 1s ease-in-out}\n"] }]
|
|
272
|
+
}], ctorParameters: () => [{ type: i1.LayoutInitService }, { type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }], propDecorators: { ktSidebar: [{
|
|
273
|
+
type: ViewChild,
|
|
274
|
+
args: ['ktSidebar', { static: true }]
|
|
275
|
+
}], ktAside: [{
|
|
276
|
+
type: ViewChild,
|
|
277
|
+
args: ['ktAside', { static: true }]
|
|
278
|
+
}], ktHeaderMobile: [{
|
|
279
|
+
type: ViewChild,
|
|
280
|
+
args: ['ktHeaderMobile', { static: true }]
|
|
281
|
+
}], ktHeader: [{
|
|
282
|
+
type: ViewChild,
|
|
283
|
+
args: ['ktHeader', { static: true }]
|
|
284
|
+
}] } });
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBVXhFLE1BQU0sT0FBTyxlQUFlO0lBdURoQjtJQUNBO0lBQ0E7SUFDQTtJQXpERixXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUV6QyxtQkFBbUI7SUFDbkIsT0FBTztJQUNQLHVCQUF1QixDQUFTO0lBQ2hDLFNBQVM7SUFDVCxxQkFBcUIsR0FBVyxFQUFFLENBQUM7SUFDbkMsZ0JBQWdCLENBQVU7SUFDMUIsNkJBQTZCLENBQVU7SUFDdkMsZ0NBQWdDLEdBQW1DLEVBQUUsQ0FBQztJQUN0RSwrQkFBK0IsQ0FBVTtJQUN6QyxrQ0FBa0MsR0FBbUMsRUFBRSxDQUFDO0lBQ3hFLFVBQVU7SUFDVixpQkFBaUIsQ0FBVTtJQUMzQixnQkFBZ0IsQ0FBNkQ7SUFDN0Usa0JBQWtCLEdBQVcsRUFBRSxDQUFDO0lBQ2hDLHFCQUFxQixDQUFVO0lBQy9CLHdCQUF3QixHQUFtQyxFQUFFLENBQUM7SUFDOUQsdUJBQXVCLENBQVU7SUFDakMsMEJBQTBCLEdBQW1DLEVBQUUsQ0FBQztJQUNoRSx5QkFBeUIsQ0FBVTtJQUNuQyw0QkFBNEIsR0FBbUMsRUFBRSxDQUFDO0lBRWxFLFVBQVU7SUFDVixrQkFBa0IsQ0FB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Z0JBRUQsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUU7b0JBQ2xDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFO3dCQUNuRCxJQUFJLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQ3pELGNBQWMsQ0FBQyxZQUFZLENBQ3pCLEdBQUcsRUFDSCxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQ3ZDLENBQUM7eUJBQ0g7cUJBQ0Y7aUJBQ0Y7YUFDRjtRQUNILENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7dUdBNVhVLGVBQWU7MkZBQWYsZUFBZSxpZUNqQjVCLCtsR0FzRUE7OzJGRHJEYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVk7b0tBd0NvQixTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBY0EsT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNTLGNBQWM7c0JBQTVELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNKLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkRlc3Ryb3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSUxheW91dCwgTGF5b3V0VHlwZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1tZXRyb25pY3MnO1xyXG5pbXBvcnQgeyBMYXlvdXRJbml0U2VydmljZSwgTGF5b3V0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1tZXRyb25pY3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbGF5b3V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvLyBQdWJsaWMgdmFyaWFibGVzXHJcbiAgLy8gcGFnZVxyXG4gIHBhZ2VDb250YWluZXJDU1NDbGFzc2VzOiBzdHJpbmc7XHJcbiAgLy8gaGVhZGVyXHJcbiAgYXBwSGVhZGVyRGVmYXVsdENsYXNzOiBzdHJpbmcgPSAnJztcclxuICBhcHBIZWFkZXJEaXNwbGF5OiBib29sZWFuO1xyXG4gIGFwcEhlYWRlckRlZmF1bHRTdGlja3lFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcEhlYWRlckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzOiB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBhcHBIZWFkZXJEZWZhdWx0TWluaW1pemVFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIC8vIHRvb2xiYXJcclxuICBhcHBUb29sYmFyRGlzcGxheTogYm9vbGVhbjtcclxuICBhcHBUb29sYmFyTGF5b3V0OiAnY2xhc3NpYycgfCAnYWNjb3VudGluZycgfCAnZXh0ZW5kZWQnIHwgJ3JlcG9ydHMnIHwgJ3NhYXMnO1xyXG4gIGFwcFRvb2xiYXJDU1NDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgYXBwVG9vbGJhclN3YXBFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJTd2FwQXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgYXBwVG9vbGJhclN0aWNreUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXM6IHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGFwcFRvb2xiYXJNaW5pbWl6ZUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcblxyXG4gIC8vIGNvbnRlbnRcclxuICBhcHBDb250ZW50Q29udGluZXI/OiAnZml4ZWQnIHwgJ2ZsdWlkJztcclxuICBhcHBDb250ZW50Q29udGFpbmVyQ2xhc3M6IHN0cmluZztcclxuICBjb250ZW50Q1NTQ2xhc3Nlczogc3RyaW5nO1xyXG4gIGNvbnRlbnRDb250YWluZXJDU1NDbGFzczogc3RyaW5nO1xyXG4gIC8vIHNpZGViYXJcclxuICBhcHBTaWRlYmFyRGVmYXVsdENsYXNzOiBzdHJpbmc7XHJcbiAgYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgYXBwU2lkZWJhckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwU2lkZWJhckRlZmF1bHRTdGlja3lFbmFibGVkOiBib29sZWFuO1xyXG4gIGFwcFNpZGViYXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlczogeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgQFZpZXdDaGlsZCgna3RTaWRlYmFyJywgeyBzdGF0aWM6IHRydWUgfSkga3RTaWRlYmFyOiBFbGVtZW50UmVmO1xyXG4gIC8vLyBzaWRlYmFyIHBhbmVsXHJcbiAgYXBwU2lkZWJhclBhbmVsRGlzcGxheTogYm9vbGVhbjtcclxuICAvLyBmb290ZXJcclxuICBhcHBGb290ZXJEaXNwbGF5OiBib29sZWFuO1xyXG4gIGFwcEZvb3RlckNTU0NsYXNzOiBzdHJpbmcgPSAnJztcclxuICBhcHBGb290ZXJDb250YWluZXI6IHN0cmluZyA9ICcnO1xyXG4gIGFwcEZvb3RlckNvbnRhaW5lckNTU0NsYXNzOiBzdHJpbmcgPSAnJztcclxuICBhcHBGb290ZXJGaXhlZERlc2t0b3A6IGJvb2xlYW47XHJcbiAgYXBwRm9vdGVyRml4ZWRNb2JpbGU6IGJvb2xlYW47XHJcblxyXG4gIC8vIHNjcm9sbHRvcFxyXG4gIHNjcm9sbHRvcERpc3BsYXk6IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2t0QXNpZGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBrdEFzaWRlOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2t0SGVhZGVyTW9iaWxlJywgeyBzdGF0aWM6IHRydWUgfSkga3RIZWFkZXJNb2JpbGU6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgna3RIZWFkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBrdEhlYWRlcjogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluaXRTZXJ2aWNlOiBMYXlvdXRJbml0U2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7XHJcbiAgICAvLyBkZWZpbmUgbGF5b3V0IHR5cGUgYW5kIGxvYWQgbGF5b3V0XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudExheW91dFR5cGUgPSB0aGlzLmxheW91dC5jdXJyZW50TGF5b3V0VHlwZVN1YmplY3QudmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnN0IG5leHRMYXlvdXRUeXBlOiBMYXlvdXRUeXBlID1cclxuICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGU/LmZpcnN0Q2hpbGQ/LnNuYXBzaG90LmRhdGEubGF5b3V0IHx8XHJcbiAgICAgICAgICB0aGlzLmxheW91dC5nZXRCYXNlTGF5b3V0VHlwZUZyb21Mb2NhbFN0b3JhZ2UoKTtcclxuXHJcbiAgICAgICAgaWYgKGN1cnJlbnRMYXlvdXRUeXBlICE9PSBuZXh0TGF5b3V0VHlwZSB8fCAhY3VycmVudExheW91dFR5cGUpIHtcclxuICAgICAgICAgIHRoaXMubGF5b3V0LmN1cnJlbnRMYXlvdXRUeXBlU3ViamVjdC5uZXh0KG5leHRMYXlvdXRUeXBlKTtcclxuICAgICAgICAgIHRoaXMuaW5pdFNlcnZpY2UucmVJbml0UHJvcHMobmV4dExheW91dFR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IHN1YnNjciA9IHRoaXMubGF5b3V0LmxheW91dENvbmZpZ1N1YmplY3RcclxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvcHMoY29uZmlnKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2goc3Vic2NyKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVByb3BzKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5zY3JvbGx0b3BEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ3Njcm9sbHRvcC5kaXNwbGF5JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLnBhZ2VDb250YWluZXJDU1NDbGFzc2VzID1cclxuICAgICAgdGhpcy5sYXlvdXQuZ2V0U3RyaW5nQ1NTQ2xhc3NlcygncGFnZUNvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0Q2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmhlYWRlci5kZWZhdWx0LmNsYXNzJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwSGVhZGVyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuaGVhZGVyLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwRm9vdGVyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuZm9vdGVyLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwU2lkZWJhckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnNpZGViYXIuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBTaWRlYmFyUGFuZWxEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLXBhbmVsLmRpc3BsYXknLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwVG9vbGJhckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIuZGlzcGxheScsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5jb250ZW50Q1NTQ2xhc3NlcyA9IHRoaXMubGF5b3V0LmdldFN0cmluZ0NTU0NsYXNzZXMoJ2NvbnRlbnQnKTtcclxuICAgIHRoaXMuY29udGVudENvbnRhaW5lckNTU0NsYXNzID1cclxuICAgICAgdGhpcy5sYXlvdXQuZ2V0U3RyaW5nQ1NTQ2xhc3NlcygnY29udGVudENvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5hcHBDb250ZW50Q29udGluZXIgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmNvbnRlbnQuY29udGFpbmVyJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzICdmaXhlZCcgfCAnZmx1aWQnO1xyXG4gICAgdGhpcy5hcHBDb250ZW50Q29udGFpbmVyQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLmNvbnRlbnQuY29udGFpbmVyQ2xhc3MnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgc3RyaW5nO1xyXG4gICAgLy8gZm9vdGVyXHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJEaXNwbGF5KSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRm9vdGVyKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICAvLyBzaWRlYmFyXHJcbiAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGlzcGxheSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNpZGViYXIoY29uZmlnKTtcclxuICAgIH1cclxuICAgIC8vIGhlYWRlclxyXG4gICAgaWYgKHRoaXMuYXBwSGVhZGVyRGlzcGxheSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUhlYWRlcihjb25maWcpO1xyXG4gICAgfVxyXG4gICAgLy8gdG9vbGJhclxyXG4gICAgaWYgKHRoaXMuYXBwVG9vbGJhckRpc3BsYXkpIHtcclxuICAgICAgdGhpcy51cGRhdGVUb29sYmFyKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTaWRlYmFyKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdENsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuY2xhc3MnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgc3RyaW5nO1xyXG5cclxuICAgIHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuZHJhd2VyLmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC5zaWRlYmFyLmRlZmF1bHQuZHJhd2VyLmF0dHJpYnV0ZXMnLFxyXG4gICAgICAgIGNvbmZpZ1xyXG4gICAgICApIGFzIHsgW2F0dHJOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5RW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuc2lkZWJhci5kZWZhdWx0LnN0aWNreS5lbmFibGVkJyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAuc2lkZWJhci5kZWZhdWx0LnN0aWNreS5hdHRyaWJ1dGVzJyxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKSBhcyB7IFthdHRyTmFtZTogc3RyaW5nXTogc3RyaW5nIH07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FwcF9zaWRlYmFyJyk7XHJcbiAgICAgIC8vIHNpZGViYXJcclxuICAgICAgaWYgKHRoaXMuYXBwU2lkZWJhckRpc3BsYXkgJiYgc2lkZWJhckVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCBzaWRlYmFyQXR0cmlidXRlcyA9IHNpZGViYXJFbGVtZW50XHJcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlTmFtZXMoKVxyXG4gICAgICAgICAgLmZpbHRlcigodCkgPT4gdC5pbmRleE9mKCdkYXRhLScpID4gLTEpO1xyXG4gICAgICAgIHNpZGViYXJBdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+XHJcbiAgICAgICAgICBzaWRlYmFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cilcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwU2lkZWJhckRlZmF1bHREcmF3ZXJBdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0RHJhd2VyQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgc2lkZWJhckVsZW1lbnQuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBTaWRlYmFyRGVmYXVsdERyYXdlckF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBTaWRlYmFyRGVmYXVsdFN0aWNreUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwU2lkZWJhckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICBzaWRlYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFNpZGViYXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlc1trZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVIZWFkZXIoY29uZmlnOiBJTGF5b3V0KSB7XHJcbiAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC5oZWFkZXIuZGVmYXVsdC5zdGlja3kuZW5hYmxlZCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdFN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC5oZWFkZXIuZGVmYXVsdC5zdGlja3kuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplRW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAuaGVhZGVyLmRlZmF1bHQubWluaW1pemUuZW5hYmxlZCcsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAuaGVhZGVyLmRlZmF1bHQubWluaW1pemUuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBoZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0X2FwcF9oZWFkZXInKTtcclxuICAgICAgLy8gaGVhZGVyXHJcbiAgICAgIGlmICh0aGlzLmFwcEhlYWRlckRpc3BsYXkgJiYgaGVhZGVyRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckF0dHJpYnV0ZXMgPSBoZWFkZXJFbGVtZW50XHJcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlTmFtZXMoKVxyXG4gICAgICAgICAgLmZpbHRlcigodCkgPT4gdC5pbmRleE9mKCdkYXRhLScpID4gLTEpO1xyXG4gICAgICAgIGhlYWRlckF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT4gaGVhZGVyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cikpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5RW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0U3RpY2t5QXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgaGVhZGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRTdGlja3lBdHRyaWJ1dGVzW2tleV1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBIZWFkZXJEZWZhdWx0TWluaW1pemVFbmFibGVkKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwSGVhZGVyRGVmYXVsdE1pbmltaXplQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgaGVhZGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcEhlYWRlckRlZmF1bHRNaW5pbWl6ZUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9vdGVyKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBGb290ZXJDU1NDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC5mb290ZXIuY2xhc3MnLCBjb25maWcpIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyID0gdGhpcy5sYXlvdXQuZ2V0UHJvcCgnYXBwLmZvb3Rlci5jb250YWluZXInLCBjb25maWcpIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyQ1NTQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAuZm9vdGVyLmNvbnRhaW5lckNsYXNzJywgY29uZmlnKSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJDb250YWluZXIgPT09ICdmaXhlZCcpIHtcclxuICAgICAgdGhpcy5hcHBGb290ZXJDb250YWluZXJDU1NDbGFzcyArPSAnIGNvbnRhaW5lci14eGwnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXBwRm9vdGVyQ29udGFpbmVyID09PSAnZmx1aWQnKSB7XHJcbiAgICAgICAgdGhpcy5hcHBGb290ZXJDb250YWluZXJDU1NDbGFzcyArPSAnIGNvbnRhaW5lci1mbHVpZCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcEZvb3RlckZpeGVkRGVza3RvcCA9IHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC5mb290ZXIuZml4ZWQuZGVza3RvcCcsIGNvbmZpZykgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcEZvb3RlckZpeGVkRGVza3RvcCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgnZGF0YS1rdC1hcHAtZm9vdGVyLWZpeGVkJywgJ3RydWUnKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwRm9vdGVyRml4ZWRNb2JpbGUgPSB0aGlzLmxheW91dC5nZXRQcm9wKCdhcHAuZm9vdGVyLmZpeGVkLm1vYmlsZScpIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBGb290ZXJGaXhlZE1vYmlsZSkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgnZGF0YS1rdC1hcHAtZm9vdGVyLWZpeGVkLW1vYmlsZScsICd0cnVlJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVRvb2xiYXIoY29uZmlnOiBJTGF5b3V0KSB7XHJcbiAgICB0aGlzLmFwcFRvb2xiYXJMYXlvdXQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIubGF5b3V0JyxcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzICdjbGFzc2ljJyB8ICdhY2NvdW50aW5nJyB8ICdleHRlbmRlZCcgfCAncmVwb3J0cycgfCAnc2Fhcyc7XHJcbiAgICB0aGlzLmFwcFRvb2xiYXJTd2FwRW5hYmxlZCA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICdhcHAudG9vbGJhci5zd2FwLmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTd2FwRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJTd2FwQXR0cmlidXRlcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgICAgJ2FwcC50b29sYmFyLnN3YXAuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwVG9vbGJhclN0aWNreUVuYWJsZWQgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAnYXBwLnRvb2xiYXIuc3RpY2t5LmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTdGlja3lFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXMgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICAgICdhcHAudG9vbGJhci5zdGlja3kuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwVG9vbGJhckNTU0NsYXNzID1cclxuICAgICAgKHRoaXMubGF5b3V0LmdldFByb3AoJ2FwcC50b29sYmFyLmNsYXNzJywgY29uZmlnKSBhcyBzdHJpbmcpIHx8ICcnO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyTWluaW1pemVFbmFibGVkID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgJ2FwcC50b29sYmFyLm1pbmltaXplLmVuYWJsZWQnLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyTWluaW1pemVBdHRyaWJ1dGVzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgICAnYXBwLnRvb2xiYXIubWluaW1pemUuYXR0cmlidXRlcycsXHJcbiAgICAgICAgY29uZmlnXHJcbiAgICAgICkgYXMgeyBbYXR0ck5hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJDU1NDbGFzcyArPSAnIGFwcC10b29sYmFyLW1pbmltaXplJztcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgdG9vbGJhckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RfYXBwX3Rvb2xiYXInKTtcclxuICAgICAgLy8gdG9vbGJhclxyXG4gICAgICBpZiAodGhpcy5hcHBUb29sYmFyRGlzcGxheSAmJiB0b29sYmFyRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHRvb2xiYXJBdHRyaWJ1dGVzID0gdG9vbGJhckVsZW1lbnRcclxuICAgICAgICAgIC5nZXRBdHRyaWJ1dGVOYW1lcygpXHJcbiAgICAgICAgICAuZmlsdGVyKCh0KSA9PiB0LmluZGV4T2YoJ2RhdGEtJykgPiAtMSk7XHJcbiAgICAgICAgdG9vbGJhckF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cikgPT5cclxuICAgICAgICAgIHRvb2xiYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJTd2FwRW5hYmxlZCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hcHBUb29sYmFyU3dhcEF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhclN3YXBBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICB0b29sYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRvb2xiYXJTd2FwQXR0cmlidXRlc1trZXldXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhclN0aWNreUVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgIHRvb2xiYXJFbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwVG9vbGJhclN0aWNreUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUVuYWJsZWQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXBwVG9vbGJhck1pbmltaXplQXR0cmlidXRlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hcHBUb29sYmFyTWluaW1pemVBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICB0b29sYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRvb2xiYXJNaW5pbWl6ZUF0dHJpYnV0ZXNba2V5XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPCEtLWJlZ2luOjpBcHAtLT5cclxuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXJvb3QgYXBwLXJvb3RcIiBpZD1cImt0X2FwcF9yb290XCI+XHJcbiAgPCEtLWJlZ2luOjpQYWdlLS0+XHJcbiAgPGRpdiBjbGFzcz1cImFwcC1wYWdlIGZsZXgtY29sdW1uIGZsZXgtY29sdW1uLWZsdWlkXCIgaWQ9XCJrdF9hcHBfcGFnZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcEhlYWRlckRpc3BsYXlcIj5cclxuICAgICAgPCEtLWJlZ2luOjpIZWFkZXItLT5cclxuICAgICAgPGxpYi1oZWFkZXIgW25nQ2xhc3NdPVwiYXBwSGVhZGVyRGVmYXVsdENsYXNzXCIgaWQ9XCJrdF9hcHBfaGVhZGVyXCIgY2xhc3M9XCJhcHAtaGVhZGVyXCIgZGF0YS1rdC1zdGlja3k9XCJ0cnVlXCIgZGF0YS1rdC1zdGlja3ktYWN0aXZhdGU9XCJ7ZGVmYXVsdDogdHJ1ZSwgbGc6IHRydWV9XCIgZGF0YS1rdC1zdGlja3ktbmFtZT1cImFwcC1oZWFkZXItbWluaW1pemVcIiBkYXRhLWt0LXN0aWNreS1vZmZzZXQ9XCJ7ZGVmYXVsdDogJzIwMHB4JywgbGc6ICcwJ31cIiBkYXRhLWt0LXN0aWNreS1hbmltYXRpb249XCJmYWxzZVwiPlxyXG4gICAgICA8L2xpYi1oZWFkZXI+XHJcbiAgICAgIDwhLS1lbmQ6OkhlYWRlci0tPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLWJlZ2luOjpXcmFwcGVyLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLXdyYXBwZXIgZmxleC1jb2x1bW4gZmxleC1yb3ctZmx1aWRcIiBpZD1cImt0X2FwcF93cmFwcGVyXCI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwU2lkZWJhckRpc3BsYXlcIj5cclxuICAgICAgICA8IS0tYmVnaW46OnNpZGViYXItLT5cclxuICAgICAgICA8bGliLXNpZGViYXIgI2t0U2lkZWJhciBpZD1cImt0X2FwcF9zaWRlYmFyXCIgY2xhc3M9XCJhcHAtc2lkZWJhciBmbGV4LWNvbHVtblwiIFtuZ0NsYXNzXT1cImFwcFNpZGViYXJEZWZhdWx0Q2xhc3NcIj5cclxuICAgICAgICA8L2xpYi1zaWRlYmFyPlxyXG4gICAgICAgIDwhLS1lbmQ6OnNpZGViYXItLT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwU2lkZWJhclBhbmVsRGlzcGxheVwiPlxyXG4gICAgICAgIDwhLS0gVE9ETzogYXBwIHNpZGViYXIgcGFuZWwgLS0+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tYmVnaW46Ok1haW4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcC1tYWluIGZsZXgtY29sdW1uIGZsZXgtcm93LWZsdWlkXCIgaWQ9XCJrdF9hcHBfbWFpblwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6Q29udGVudCB3cmFwcGVyLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWNvbHVtbi1mbHVpZFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcFRvb2xiYXJEaXNwbGF5XCI+XHJcbiAgICAgICAgICAgIDxsaWItdG9vbGJhciBjbGFzcz1cImFwcC10b29sYmFyXCIgW25nQ2xhc3NdPVwiYXBwVG9vbGJhckNTU0NsYXNzXCIgaWQ9XCJrdF9hcHBfdG9vbGJhclwiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2xiYXJMYXlvdXRdPVwiYXBwVG9vbGJhckxheW91dFwiPjwvbGliLXRvb2xiYXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxsaWItY29udGVudCBpZD1cIiBrdF9hcHBfY29udGVudFwiIGNsYXNzPVwiYXBwLWNvbnRlbnRcIiBbbmdDbGFzc109XCJjb250ZW50Q1NTQ2xhc3Nlc1wiXHJcbiAgICAgICAgICAgIFtjb250ZW50Q29udGFpbmVyQ1NTQ2xhc3NdPVwiY29udGVudENvbnRhaW5lckNTU0NsYXNzXCIgW2FwcENvbnRlbnRDb250aW5lcl09XCJhcHBDb250ZW50Q29udGluZXJcIlxyXG4gICAgICAgICAgICBbYXBwQ29udGVudENvbnRhaW5lckNsYXNzXT1cImFwcENvbnRlbnRDb250YWluZXJDbGFzc1wiPlxyXG4gICAgICAgICAgPC9saWItY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50IHdyYXBwZXItLT5cclxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBGb290ZXJEaXNwbGF5XCI+XHJcbiAgICAgICAgICA8bGliLWZvb3RlciBjbGFzcz1cImFwcC1mb290ZXJcIiBbbmdDbGFzc109XCJhcHBGb290ZXJDU1NDbGFzc1wiIGlkPVwia3RfYXBwX2Zvb3RlclwiXHJcbiAgICAgICAgICAgIFthcHBGb290ZXJDb250YWluZXJDU1NDbGFzc109XCJhcHBGb290ZXJDb250YWluZXJDU1NDbGFzc1wiPjwvbGliLWZvb3Rlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjo6TWFpbi0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcblxyXG4gIDwvZGl2PlxyXG4gIDwhLS1lbmQ6OlBhZ2UtLT5cclxuPC9kaXY+XHJcbjwhLS1lbmQ6OkFwcC0tPlxyXG5cclxuPGxpYi1zY3JpcHRzLWluaXQ+PC9saWItc2NyaXB0cy1pbml0PlxyXG48bmctY29udGFpbmVyPlxyXG4gIDxsaWItc2Nyb2xsLXRvcCBpZD1cImt0X3Njcm9sbHRvcFwiIGNsYXNzPVwic2Nyb2xsdG9wXCIgZGF0YS1rdC1zY3JvbGx0b3A9XCJ0cnVlXCI+PC9saWItc2Nyb2xsLXRvcD5cclxuPC9uZy1jb250YWluZXI+XHJcbjwhLS0gYmVnaW46OiBEcmF3ZXJzIC0tPlxyXG48IS0tIDxsaWItYWN0aXZpdHktZHJhd2VyPjwvbGliLWFjdGl2aXR5LWRyYXdlcj4gLS0+XHJcbjwhLS0gPGxpYi1tZXNzZW5nZXItZHJhd2VyPjwvbGliLW1lc3Nlbmdlci1kcmF3ZXI+IC0tPlxyXG48IS0tIGVuZDo6IERyYXdlcnMgLS0+XHJcblxyXG48IS0tIGVuZDo6IEVuZ2FnZSAtLT5cclxuPCEtLSA8bGliLWVuZ2FnZXM+PC9saWItZW5nYWdlcz4gLS0+XHJcbjwhLS0gZW5kOjogRW5nYWdlIC0tPlxyXG5cclxuPCEtLSBiZWdpbjo6IE1vZGFscyAtLT5cclxuPCEtLSA8bGliLW1haW4tbW9kYWw+PC9saWItbWFpbi1tb2RhbD4gLS0+XHJcbjwhLS0gPGxpYi1pbnZpdGUtdXNlcnMtbW9kYWw+PC9saWItaW52aXRlLXVzZXJzLW1vZGFsPiAtLT5cclxuPCEtLSA8bGliLXVwZ3JhZGUtcGxhbi1tb2RhbD48L2xpYi11cGdyYWRlLXBsYW4tbW9kYWw+IC0tPlxyXG48IS0tIGVuZDo6IE1vZGFscyAtLT5cclxuIl19
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { InlineSVGModule } from 'ng-inline-svg-2';
|
|
4
|
+
import { RouterModule } from '@angular/router';
|
|
5
|
+
import { NgbDropdownModule, NgbProgressbarModule, NgbTooltipModule, } from '@ng-bootstrap/ng-bootstrap';
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
+
// import { ExtrasModule } from '../partials/layout/extras/extras.module';
|
|
8
|
+
// import {
|
|
9
|
+
// DrawersModule,
|
|
10
|
+
// DropdownMenusModule,
|
|
11
|
+
// ModalsModule,
|
|
12
|
+
// EngagesModule,
|
|
13
|
+
// } from '../partials';
|
|
14
|
+
// import { EngagesComponent } from '../partials/layout/engages/engages.component';
|
|
15
|
+
// import { ThemeModeModule } from '../partials/layout/theme-mode-switcher/theme-mode.module';
|
|
16
|
+
import { KeeniconComponent } from './keenicon/keenicon.component';
|
|
17
|
+
import { TranslationModule } from '../../i18n';
|
|
18
|
+
import { LayoutComponent } from './layout/layout.component';
|
|
19
|
+
import { HeaderComponent } from './header/header.component';
|
|
20
|
+
import { ContentComponent } from './content/content.component';
|
|
21
|
+
import { FooterComponent } from './footer/footer.component';
|
|
22
|
+
import { ScriptsInitComponent } from './scripts-init/scripts-init.component';
|
|
23
|
+
import { ToolbarComponent } from './toolbar/toolbar.component';
|
|
24
|
+
import { PageTitleComponent } from './header/page-title/page-title.component';
|
|
25
|
+
import { HeaderMenuComponent } from './header/header-menu/header-menu.component';
|
|
26
|
+
import { SidebarComponent } from './sidebar/sidebar.component';
|
|
27
|
+
import { SidebarLogoComponent } from './sidebar/sidebar-logo/sidebar-logo.component';
|
|
28
|
+
import { SidebarMenuComponent } from './sidebar/sidebar-menu/sidebar-menu.component';
|
|
29
|
+
import { SidebarFooterComponent } from './sidebar/sidebar-footer/sidebar-footer.component';
|
|
30
|
+
import { NavbarComponent } from './header/navbar/navbar.component';
|
|
31
|
+
import { AccountingComponent } from './toolbar/accounting/accounting.component';
|
|
32
|
+
import { ClassicComponent } from './toolbar/classic/classic.component';
|
|
33
|
+
import { ExtendedComponent } from './toolbar/extended/extended.component';
|
|
34
|
+
import { ReportsComponent } from './toolbar/reports/reports.component';
|
|
35
|
+
import { SaasComponent } from './toolbar/saas/saas.component';
|
|
36
|
+
import { Routing } from '../../routes/routing';
|
|
37
|
+
import { LayoutScrollTopComponent } from './scroll-top/scroll-top.component';
|
|
38
|
+
import * as i0 from "@angular/core";
|
|
39
|
+
import * as i1 from "@angular/router";
|
|
40
|
+
const routes = [
|
|
41
|
+
{
|
|
42
|
+
path: '',
|
|
43
|
+
component: LayoutComponent,
|
|
44
|
+
children: Routing,
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
export class LayoutModule {
|
|
48
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
49
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: LayoutModule, declarations: [LayoutComponent,
|
|
50
|
+
HeaderComponent,
|
|
51
|
+
ContentComponent,
|
|
52
|
+
FooterComponent,
|
|
53
|
+
ScriptsInitComponent,
|
|
54
|
+
ToolbarComponent,
|
|
55
|
+
PageTitleComponent,
|
|
56
|
+
HeaderMenuComponent,
|
|
57
|
+
// EngagesComponent,
|
|
58
|
+
SidebarComponent,
|
|
59
|
+
SidebarLogoComponent,
|
|
60
|
+
SidebarMenuComponent,
|
|
61
|
+
SidebarFooterComponent,
|
|
62
|
+
NavbarComponent,
|
|
63
|
+
AccountingComponent,
|
|
64
|
+
ClassicComponent,
|
|
65
|
+
ExtendedComponent,
|
|
66
|
+
ReportsComponent,
|
|
67
|
+
SaasComponent,
|
|
68
|
+
KeeniconComponent,
|
|
69
|
+
LayoutScrollTopComponent], imports: [CommonModule, i1.RouterModule, TranslationModule,
|
|
70
|
+
InlineSVGModule,
|
|
71
|
+
NgbDropdownModule,
|
|
72
|
+
NgbProgressbarModule,
|
|
73
|
+
// ExtrasModule,
|
|
74
|
+
// ModalsModule,
|
|
75
|
+
// DrawersModule,
|
|
76
|
+
// EngagesModule,
|
|
77
|
+
// DropdownMenusModule,
|
|
78
|
+
NgbTooltipModule,
|
|
79
|
+
TranslateModule], exports: [RouterModule] });
|
|
80
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LayoutModule, imports: [CommonModule,
|
|
81
|
+
RouterModule.forChild(routes),
|
|
82
|
+
TranslationModule,
|
|
83
|
+
InlineSVGModule,
|
|
84
|
+
NgbDropdownModule,
|
|
85
|
+
NgbProgressbarModule,
|
|
86
|
+
// ExtrasModule,
|
|
87
|
+
// ModalsModule,
|
|
88
|
+
// DrawersModule,
|
|
89
|
+
// EngagesModule,
|
|
90
|
+
// DropdownMenusModule,
|
|
91
|
+
NgbTooltipModule,
|
|
92
|
+
TranslateModule, RouterModule] });
|
|
93
|
+
}
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LayoutModule, decorators: [{
|
|
95
|
+
type: NgModule,
|
|
96
|
+
args: [{
|
|
97
|
+
declarations: [
|
|
98
|
+
LayoutComponent,
|
|
99
|
+
HeaderComponent,
|
|
100
|
+
ContentComponent,
|
|
101
|
+
FooterComponent,
|
|
102
|
+
ScriptsInitComponent,
|
|
103
|
+
ToolbarComponent,
|
|
104
|
+
PageTitleComponent,
|
|
105
|
+
HeaderMenuComponent,
|
|
106
|
+
// EngagesComponent,
|
|
107
|
+
SidebarComponent,
|
|
108
|
+
SidebarLogoComponent,
|
|
109
|
+
SidebarMenuComponent,
|
|
110
|
+
SidebarFooterComponent,
|
|
111
|
+
NavbarComponent,
|
|
112
|
+
AccountingComponent,
|
|
113
|
+
ClassicComponent,
|
|
114
|
+
ExtendedComponent,
|
|
115
|
+
ReportsComponent,
|
|
116
|
+
SaasComponent,
|
|
117
|
+
KeeniconComponent,
|
|
118
|
+
LayoutScrollTopComponent
|
|
119
|
+
],
|
|
120
|
+
imports: [
|
|
121
|
+
CommonModule,
|
|
122
|
+
RouterModule.forChild(routes),
|
|
123
|
+
TranslationModule,
|
|
124
|
+
InlineSVGModule,
|
|
125
|
+
NgbDropdownModule,
|
|
126
|
+
NgbProgressbarModule,
|
|
127
|
+
// ExtrasModule,
|
|
128
|
+
// ModalsModule,
|
|
129
|
+
// DrawersModule,
|
|
130
|
+
// EngagesModule,
|
|
131
|
+
// DropdownMenusModule,
|
|
132
|
+
NgbTooltipModule,
|
|
133
|
+
TranslateModule,
|
|
134
|
+
// ThemeModeModule,
|
|
135
|
+
],
|
|
136
|
+
exports: [RouterModule],
|
|
137
|
+
}]
|
|
138
|
+
}] });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEdBQ2pCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELDBFQUEwRTtBQUMxRSxXQUFXO0FBQ1gsbUJBQW1CO0FBQ25CLHlCQUF5QjtBQUN6QixrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLHdCQUF3QjtBQUN4QixtRkFBbUY7QUFDbkYsOEZBQThGO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JB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QUFRLENBQUMsTUFBTSxDQUFDO3dCQUM3QixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5saW5lU1ZHTW9kdWxlIH0gZnJvbSAnbmctaW5saW5lLXN2Zy0yJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gIE5nYlByb2dyZXNzYmFyTW9kdWxlLFxyXG4gIE5nYlRvb2x0aXBNb2R1bGUsXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuLy8gaW1wb3J0IHsgRXh0cmFzTW9kdWxlIH0gZnJvbSAnLi4vcGFydGlhbHMvbGF5b3V0L2V4dHJhcy9leHRyYXMubW9kdWxlJztcclxuLy8gaW1wb3J0IHtcclxuLy8gICBEcmF3ZXJzTW9kdWxlLFxyXG4vLyAgIERyb3Bkb3duTWVudXNNb2R1bGUsXHJcbi8vICAgTW9kYWxzTW9kdWxlLFxyXG4vLyAgIEVuZ2FnZXNNb2R1bGUsXHJcbi8vIH0gZnJvbSAnLi4vcGFydGlhbHMnO1xyXG4vLyBpbXBvcnQgeyBFbmdhZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFydGlhbHMvbGF5b3V0L2VuZ2FnZXMvZW5nYWdlcy5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBUaGVtZU1vZGVNb2R1bGUgfSBmcm9tICcuLi9wYXJ0aWFscy9sYXlvdXQvdGhlbWUtbW9kZS1zd2l0Y2hlci90aGVtZS1tb2RlLm1vZHVsZSc7XHJcbmltcG9ydCB7IEtlZW5pY29uQ29tcG9uZW50IH0gZnJvbSAnLi9rZWVuaWNvbi9rZWVuaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2kxOG4nO1xyXG5pbXBvcnQgeyBMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC9sYXlvdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2NyaXB0c0luaXRDb21wb25lbnQgfSBmcm9tICcuL3NjcmlwdHMtaW5pdC9zY3JpcHRzLWluaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL3BhZ2UtdGl0bGUvcGFnZS10aXRsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWFkZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9oZWFkZXIvaGVhZGVyLW1lbnUvaGVhZGVyLW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4vc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZGViYXJMb2dvQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItbG9nby9zaWRlYmFyLWxvZ28uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lkZWJhck1lbnVDb21wb25lbnQgfSBmcm9tICcuL3NpZGViYXIvc2lkZWJhci1tZW51L3NpZGViYXItbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlYmFyRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItZm9vdGVyL3NpZGViYXItZm9vdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdmJhckNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL25hdmJhci9uYXZiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWNjb3VudGluZ0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9hY2NvdW50aW5nL2FjY291bnRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xhc3NpY0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9jbGFzc2ljL2NsYXNzaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXh0ZW5kZWRDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXIvZXh0ZW5kZWQvZXh0ZW5kZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVwb3J0c0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9yZXBvcnRzL3JlcG9ydHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Fhc0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci9zYWFzL3NhYXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm91dGluZyB9IGZyb20gJy4uLy4uL3JvdXRlcy9yb3V0aW5nJztcclxuaW1wb3J0IHsgTGF5b3V0U2Nyb2xsVG9wQ29tcG9uZW50IH0gZnJvbSAnLi9zY3JvbGwtdG9wL3Njcm9sbC10b3AuY29tcG9uZW50JztcclxuXHJcbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gIHtcclxuICAgIHBhdGg6ICcnLFxyXG4gICAgY29tcG9uZW50OiBMYXlvdXRDb21wb25lbnQsXHJcbiAgICBjaGlsZHJlbjogUm91dGluZyxcclxuICB9LFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIExheW91dENvbXBvbmVudCxcclxuICAgIEhlYWRlckNvbXBvbmVudCxcclxuICAgIENvbnRlbnRDb21wb25lbnQsXHJcbiAgICBGb290ZXJDb21wb25lbnQsXHJcbiAgICBTY3JpcHRzSW5pdENvbXBvbmVudCxcclxuICAgIFRvb2xiYXJDb21wb25lbnQsXHJcbiAgICBQYWdlVGl0bGVDb21wb25lbnQsXHJcbiAgICBIZWFkZXJNZW51Q29tcG9uZW50LFxyXG4gICAgLy8gRW5nYWdlc0NvbXBvbmVudCxcclxuICAgIFNpZGViYXJDb21wb25lbnQsXHJcbiAgICBTaWRlYmFyTG9nb0NvbXBvbmVudCxcclxuICAgIFNpZGViYXJNZW51Q29tcG9uZW50LFxyXG4gICAgU2lkZWJhckZvb3RlckNvbXBvbmVudCxcclxuICAgIE5hdmJhckNvbXBvbmVudCxcclxuICAgIEFjY291bnRpbmdDb21wb25lbnQsXHJcbiAgICBDbGFzc2ljQ29tcG9uZW50LFxyXG4gICAgRXh0ZW5kZWRDb21wb25lbnQsXHJcbiAgICBSZXBvcnRzQ29tcG9uZW50LFxyXG4gICAgU2Fhc0NvbXBvbmVudCxcclxuICAgIEtlZW5pY29uQ29tcG9uZW50LFxyXG4gICAgTGF5b3V0U2Nyb2xsVG9wQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKSxcclxuICAgIFRyYW5zbGF0aW9uTW9kdWxlLFxyXG4gICAgSW5saW5lU1ZHTW9kdWxlLFxyXG4gICAgTmdiRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBOZ2JQcm9ncmVzc2Jhck1vZHVsZSxcclxuICAgIC8vIEV4dHJhc01vZHVsZSxcclxuICAgIC8vIE1vZGFsc01vZHVsZSxcclxuICAgIC8vIERyYXdlcnNNb2R1bGUsXHJcbiAgICAvLyBFbmdhZ2VzTW9kdWxlLFxyXG4gICAgLy8gRHJvcGRvd25NZW51c01vZHVsZSxcclxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICAvLyBUaGVtZU1vZGVNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExheW91dE1vZHVsZSB7fVxyXG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { ResolveEnd } from '@angular/router';
|
|
3
|
+
import { filter } from 'rxjs/operators';
|
|
4
|
+
import { ToggleComponent, ScrollTopComponent, DrawerComponent, StickyComponent, MenuComponent, ScrollComponent, } from 'tango-app-ui-metronics';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "tango-app-ui-metronics";
|
|
7
|
+
import * as i2 from "@angular/router";
|
|
8
|
+
import * as i3 from "@angular/platform-browser";
|
|
9
|
+
export class ScriptsInitComponent {
|
|
10
|
+
layout;
|
|
11
|
+
pageInfo;
|
|
12
|
+
router;
|
|
13
|
+
titleService;
|
|
14
|
+
unsubscribe = [];
|
|
15
|
+
constructor(layout, pageInfo, router, titleService) {
|
|
16
|
+
this.layout = layout;
|
|
17
|
+
this.pageInfo = pageInfo;
|
|
18
|
+
this.router = router;
|
|
19
|
+
this.titleService = titleService;
|
|
20
|
+
const initPageInfo = () => {
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
// this.pageInfo.calculateTitle();
|
|
23
|
+
// this.pageInfo.calculateBreadcrumbs();
|
|
24
|
+
this.pageInfo.title.asObservable().subscribe((title) => {
|
|
25
|
+
this.titleService.setTitle(title + ' - TangoEye');
|
|
26
|
+
});
|
|
27
|
+
}, 10);
|
|
28
|
+
};
|
|
29
|
+
initPageInfo();
|
|
30
|
+
// subscribe to router events
|
|
31
|
+
this.router.events
|
|
32
|
+
.pipe(filter((event) => event instanceof ResolveEnd))
|
|
33
|
+
.subscribe(initPageInfo);
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.pluginsInitialization();
|
|
37
|
+
const layoutUpdateSubscription = this.layout.layoutConfigSubject
|
|
38
|
+
.asObservable()
|
|
39
|
+
.subscribe(() => {
|
|
40
|
+
this.pluginsReInitialization();
|
|
41
|
+
});
|
|
42
|
+
this.unsubscribe.push(layoutUpdateSubscription);
|
|
43
|
+
}
|
|
44
|
+
pluginsInitialization() {
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
ToggleComponent.bootstrap();
|
|
47
|
+
ScrollTopComponent.bootstrap();
|
|
48
|
+
DrawerComponent.bootstrap();
|
|
49
|
+
StickyComponent.bootstrap();
|
|
50
|
+
MenuComponent.bootstrap();
|
|
51
|
+
ScrollComponent.bootstrap();
|
|
52
|
+
}, 200);
|
|
53
|
+
}
|
|
54
|
+
pluginsReInitialization() {
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
ToggleComponent.reinitialization();
|
|
57
|
+
ScrollTopComponent.reinitialization();
|
|
58
|
+
DrawerComponent.reinitialization();
|
|
59
|
+
StickyComponent.bootstrap();
|
|
60
|
+
MenuComponent.reinitialization();
|
|
61
|
+
ScrollComponent.reinitialization();
|
|
62
|
+
}, 100);
|
|
63
|
+
}
|
|
64
|
+
ngOnDestroy() {
|
|
65
|
+
this.unsubscribe.forEach((sb) => sb.unsubscribe());
|
|
66
|
+
}
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ScriptsInitComponent, deps: [{ token: i1.LayoutService }, { token: i1.PageInfoService }, { token: i2.Router }, { token: i3.Title }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ScriptsInitComponent, selector: "lib-scripts-init", ngImport: i0, template: "" });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ScriptsInitComponent, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{ selector: 'lib-scripts-init', template: "" }]
|
|
73
|
+
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i1.PageInfoService }, { type: i2.Router }, { type: i3.Title }] });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0cy1pbml0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9zY3JpcHRzLWluaXQvc2NyaXB0cy1pbml0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9zY3JpcHRzLWluaXQvc2NyaXB0cy1pbml0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUNMLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGVBQWUsRUFDZixhQUFhLEVBQ2IsZUFBZSxHQUNoQixNQUFNLHdCQUF3QixDQUFDOzs7OztBQVFoQyxNQUFNLE9BQU8sb0JBQW9CO0lBR3JCO0lBQ0E7SUFDQTtJQUNBO0lBTEYsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFDekMsWUFDVSxNQUFxQixFQUNyQixRQUF5QixFQUN6QixNQUFjLEVBQ2QsWUFBbUI7UUFIbkIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQU87UUFFM0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ3hCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2Qsa0NBQWtDO2dCQUNsQyx3Q0FBd0M7Z0JBRXhDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxDQUFDO1FBRUYsWUFBWSxFQUFFLENBQUM7UUFDZiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLFVBQVUsQ0FBQyxDQUFDO2FBQ3BELFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUI7YUFDN0QsWUFBWSxFQUFFO2FBQ2QsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUIsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0IsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25DLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7dUdBNURVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLHdEQ25CakMsRUFBQTs7MkZEbUJhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlc29sdmVFbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgVG9nZ2xlQ29tcG9uZW50LFxyXG4gIFNjcm9sbFRvcENvbXBvbmVudCxcclxuICBEcmF3ZXJDb21wb25lbnQsXHJcbiAgU3RpY2t5Q29tcG9uZW50LFxyXG4gIE1lbnVDb21wb25lbnQsXHJcbiAgU2Nyb2xsQ29tcG9uZW50LFxyXG59IGZyb20gJ3RhbmdvLWFwcC11aS1tZXRyb25pY3MnO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktbWV0cm9uaWNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNjcmlwdHMtaW5pdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NjcmlwdHMtaW5pdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JpcHRzSW5pdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlLFxyXG4gICkge1xyXG4gICAgY29uc3QgaW5pdFBhZ2VJbmZvID0gKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyB0aGlzLnBhZ2VJbmZvLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5wYWdlSW5mby5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG5cclxuICAgICAgICB0aGlzLnBhZ2VJbmZvLnRpdGxlLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgodGl0bGUpID0+IHtcclxuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlICsgJyAtIFRhbmdvRXllJyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIDEwKTtcclxuICAgIH07XHJcblxyXG4gICAgaW5pdFBhZ2VJbmZvKCk7XHJcbiAgICAvLyBzdWJzY3JpYmUgdG8gcm91dGVyIGV2ZW50c1xyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgUmVzb2x2ZUVuZCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoaW5pdFBhZ2VJbmZvKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wbHVnaW5zSW5pdGlhbGl6YXRpb24oKTtcclxuICAgIGNvbnN0IGxheW91dFVwZGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMubGF5b3V0LmxheW91dENvbmZpZ1N1YmplY3RcclxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucGx1Z2luc1JlSW5pdGlhbGl6YXRpb24oKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2gobGF5b3V0VXBkYXRlU3Vic2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIHBsdWdpbnNJbml0aWFsaXphdGlvbigpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBUb2dnbGVDb21wb25lbnQuYm9vdHN0cmFwKCk7XHJcbiAgICAgIFNjcm9sbFRvcENvbXBvbmVudC5ib290c3RyYXAoKTtcclxuICAgICAgRHJhd2VyQ29tcG9uZW50LmJvb3RzdHJhcCgpO1xyXG4gICAgICBTdGlja3lDb21wb25lbnQuYm9vdHN0cmFwKCk7XHJcbiAgICAgIE1lbnVDb21wb25lbnQuYm9vdHN0cmFwKCk7XHJcbiAgICAgIFNjcm9sbENvbXBvbmVudC5ib290c3RyYXAoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBwbHVnaW5zUmVJbml0aWFsaXphdGlvbigpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBUb2dnbGVDb21wb25lbnQucmVpbml0aWFsaXphdGlvbigpO1xyXG4gICAgICBTY3JvbGxUb3BDb21wb25lbnQucmVpbml0aWFsaXphdGlvbigpO1xyXG4gICAgICBEcmF3ZXJDb21wb25lbnQucmVpbml0aWFsaXphdGlvbigpO1xyXG4gICAgICBTdGlja3lDb21wb25lbnQuYm9vdHN0cmFwKCk7XHJcbiAgICAgIE1lbnVDb21wb25lbnQucmVpbml0aWFsaXphdGlvbigpO1xyXG4gICAgICBTY3JvbGxDb21wb25lbnQucmVpbml0aWFsaXphdGlvbigpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5mb3JFYWNoKChzYikgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG59XHJcbiIsIiJdfQ==
|