@mediusinc/mng-commons-layout 5.5.0 → 6.0.0-rc.3
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/components/README.md +3 -0
- package/components/index.d.ts +10 -0
- package/{lib → components/lib}/components/footer.component.d.ts +1 -1
- package/{lib → components/lib}/components/main-layout.component.d.ts +1 -1
- package/{lib → components/lib}/components/menu-item.component.d.ts +2 -2
- package/{lib → components/lib}/components/menu.component.d.ts +1 -1
- package/{lib → components/lib}/components/settings.component.d.ts +1 -2
- package/{lib → components/lib}/components/sidebar.component.d.ts +1 -1
- package/{lib → components/lib}/components/topbar.component.d.ts +2 -2
- package/components/pages/error/README.md +3 -0
- package/components/pages/error/index.d.ts +2 -0
- package/{lib/components/pages/error → components/pages/error/lib}/error.page.component.d.ts +1 -1
- package/components/pages/main/README.md +3 -0
- package/components/pages/main/index.d.ts +2 -0
- package/components/pages/main/lazy/README.md +3 -0
- package/components/pages/main/lazy/index.d.ts +1 -0
- package/components/pages/main/lazy/lib/route-builder.d.ts +8 -0
- package/components/pages/main/lib/main-layout.component.d.ts +23 -0
- package/components/pages/not-found/README.md +3 -0
- package/components/pages/not-found/index.d.ts +2 -0
- package/{lib/components/pages/not-found → components/pages/not-found/lib}/not-found.page.component.d.ts +1 -1
- package/esm2022/components/index.mjs +12 -0
- package/esm2022/components/lib/components/breadcrumb.component.mjs +29 -0
- package/esm2022/components/lib/components/footer.component.mjs +23 -0
- package/esm2022/components/lib/components/main-layout.component.mjs +86 -0
- package/esm2022/components/lib/components/menu-item.component.mjs +169 -0
- package/esm2022/components/lib/components/menu.component.mjs +36 -0
- package/esm2022/components/lib/components/settings.component.mjs +87 -0
- package/esm2022/components/lib/components/sidebar.component.mjs +51 -0
- package/esm2022/components/lib/components/topbar-user.component.mjs +51 -0
- package/esm2022/components/lib/components/topbar.component.mjs +37 -0
- package/esm2022/components/lib/components/version.component.mjs +95 -0
- package/esm2022/components/mediusinc-mng-commons-layout-components.mjs +5 -0
- package/esm2022/components/pages/error/index.mjs +3 -0
- package/esm2022/components/pages/error/lib/error.page.component.mjs +20 -0
- package/esm2022/components/pages/error/mediusinc-mng-commons-layout-components-pages-error.mjs +5 -0
- package/esm2022/components/pages/main/index.mjs +3 -0
- package/esm2022/components/pages/main/lazy/index.mjs +2 -0
- package/esm2022/components/pages/main/lazy/lib/route-builder.mjs +11 -0
- package/esm2022/components/pages/main/lazy/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs +5 -0
- package/esm2022/components/pages/main/lib/main-layout.component.mjs +84 -0
- package/esm2022/components/pages/main/lib/route-builder.mjs +12 -0
- package/esm2022/components/pages/main/mediusinc-mng-commons-layout-components-pages-main.mjs +5 -0
- package/esm2022/components/pages/not-found/index.mjs +3 -0
- package/esm2022/components/pages/not-found/lib/not-found.page.component.mjs +20 -0
- package/esm2022/components/pages/not-found/mediusinc-mng-commons-layout-components-pages-not-found.mjs +5 -0
- package/esm2022/index.mjs +2 -15
- package/esm2022/lib/helpers/menu-items.mjs +5 -2
- package/esm2022/lib/services/layout-feature-config.token.mjs +1 -1
- package/esm2022/lib/services/layout.service.mjs +6 -14
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs +25 -0
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs +18 -0
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs +101 -0
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs +25 -0
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-layout-components.mjs +600 -0
- package/fesm2022/mediusinc-mng-commons-layout-components.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-layout.mjs +74 -696
- package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -1
- package/index.d.ts +1 -13
- package/lib/helpers/menu-items.d.ts +3 -0
- package/lib/services/layout-feature-config.token.d.ts +2 -2
- package/lib/services/layout.service.d.ts +2 -2
- package/package.json +32 -2
- package/version-info.json +6 -6
- package/esm2022/lib/components/breadcrumb.component.mjs +0 -29
- package/esm2022/lib/components/footer.component.mjs +0 -25
- package/esm2022/lib/components/main-layout.component.mjs +0 -88
- package/esm2022/lib/components/menu-item.component.mjs +0 -170
- package/esm2022/lib/components/menu.component.mjs +0 -38
- package/esm2022/lib/components/pages/error/error.page.component.mjs +0 -20
- package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +0 -20
- package/esm2022/lib/components/settings.component.mjs +0 -87
- package/esm2022/lib/components/sidebar.component.mjs +0 -52
- package/esm2022/lib/components/topbar-user.component.mjs +0 -52
- package/esm2022/lib/components/topbar.component.mjs +0 -39
- package/esm2022/lib/components/version.component.mjs +0 -96
- package/esm2022/lib/helpers/route-builder.mjs +0 -12
- /package/{lib → components/lib}/components/breadcrumb.component.d.ts +0 -0
- /package/{lib → components/lib}/components/topbar-user.component.d.ts +0 -0
- /package/{lib → components/lib}/components/version.component.d.ts +0 -0
- /package/{lib/helpers → components/pages/main/lib}/route-builder.d.ts +0 -0
|
@@ -21,7 +21,7 @@ export class LayoutService {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
getDefaultColorScheme() {
|
|
24
|
-
return this.config?.colorScheme ??
|
|
24
|
+
return this.config?.colorScheme ?? 'auto';
|
|
25
25
|
}
|
|
26
26
|
setColorScheme(scheme) {
|
|
27
27
|
const defaultColorScheme = this.getDefaultColorScheme();
|
|
@@ -66,19 +66,11 @@ export class LayoutService {
|
|
|
66
66
|
this._menuMode = signal(this.initMenuMode());
|
|
67
67
|
this.menuMode = this._menuMode.asReadonly();
|
|
68
68
|
// logos
|
|
69
|
-
this.appLogoLight = signal(this.config?.logoPathLight ?? this.
|
|
70
|
-
this.appLogoDark = signal(this.config?.logoPathLight ?? this.
|
|
69
|
+
this.appLogoLight = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');
|
|
70
|
+
this.appLogoDark = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');
|
|
71
71
|
this.appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));
|
|
72
|
-
this.appLogoNameLight = signal(this.config?.logoNamePathLight ??
|
|
73
|
-
|
|
74
|
-
this.config?.logoNamePath ??
|
|
75
|
-
this.commonsConfig?.app?.logoNamePath ??
|
|
76
|
-
'assets/layout/images/logo-appname.png');
|
|
77
|
-
this.appLogoNameDark = signal(this.config?.logoNamePathDark ??
|
|
78
|
-
this.commonsConfig?.app?.logoNamePathDark ??
|
|
79
|
-
this.config?.logoNamePath ??
|
|
80
|
-
this.commonsConfig?.app?.logoNamePath ??
|
|
81
|
-
'assets/layout/images/logo-appname.png');
|
|
72
|
+
this.appLogoNameLight = signal(this.config?.logoNamePathLight ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
|
|
73
|
+
this.appLogoNameDark = signal(this.config?.logoNamePathDark ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
|
|
82
74
|
this.appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));
|
|
83
75
|
// overlays
|
|
84
76
|
this.isOverlay = computed(() => this.menuMode() === 'overlay');
|
|
@@ -172,4 +164,4 @@ export class LayoutService {
|
|
|
172
164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LayoutService, decorators: [{
|
|
173
165
|
type: Injectable
|
|
174
166
|
}], ctorParameters: () => [] });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFDLHdCQUF3QixFQUFFLHFCQUFxQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHNUYsT0FBTyxFQUFDLGdDQUFnQyxFQUE4QixNQUFNLCtCQUErQixDQUFDOztBQUc1RyxNQUFNLE9BQU8sYUFBYTtJQWdDZCxrQkFBa0I7UUFDdEIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RyxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksQ0FBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFtQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdGLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFdBQXdCO1FBQ3JELElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxN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Q0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFlBQVk7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQWlCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbkcsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUM7SUFDN0MsQ0FBQzsrR0E5TFEsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIGFmdGVyTmV4dFJlbmRlciwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0NPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwgQ29tbW9uc1N0b3JhZ2VTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0xheW91dFN0YXRlfSBmcm9tICcuLi9tb2RlbHMvbGF5b3V0LXN0YXRlLm1vZGVsJztcbmltcG9ydCB7Q09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQsIENvbG9yU2NoZW1lLCBMYXlvdXRNZW51TW9kZX0gZnJvbSAnLi9sYXlvdXQtZmVhdHVyZS1jb25maWcudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTGF5b3V0U2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlTmFtZSA9ICdNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlTWVudU1vZGVLZXkgPSAnbWVudU1vZGUnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZUNvbG9yU2NoZW1lS2V5ID0gJ2NvbG9yU2NoZW1lJztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tb25zQ29uZmlnID0gaW5qZWN0KENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoQ29tbW9uc1N0b3JhZ2VTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBzdGF0ZSA9IHNpZ25hbDxMYXlvdXRTdGF0ZT4oe1xuICAgICAgICBzdGF0aWNNZW51RGVza3RvcEluYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgb3ZlcmxheU1lbnVBY3RpdmU6IGZhbHNlLFxuICAgICAgICByaWdodE1lbnVBY3RpdmU6IGZhbHNlLFxuICAgICAgICBjb25maWdTaWRlYmFyVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIHN0YXRpY01lbnVNb2JpbGVBY3RpdmU6IGZhbHNlLFxuICAgICAgICBtZW51SG92ZXJBY3RpdmU6IGZhbHNlLFxuICAgICAgICBzaWRlYmFyQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgYW5jaG9yZWQ6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBwcml2YXRlIG92ZXJsYXlPcGVuID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHB1YmxpYyBvdmVybGF5T3BlbiQgPSB0aGlzLm92ZXJsYXlPcGVuLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLy8gY29sb3Igc2NoZW1lXG4gICAgcHJpdmF0ZSBfY29sb3JTY2hlbWVTZXR0aW5nID0gc2lnbmFsKHRoaXMuZ2V0SW5pdENvbG9yU2NoZW1lKCkpO1xuICAgIHB1YmxpYyBjb2xvclNjaGVtZVNldHRpbmcgPSB0aGlzLl9jb2xvclNjaGVtZVNldHRpbmcuYXNSZWFkb25seSgpO1xuICAgIHByaXZhdGUgX2NvbG9yU2NoZW1lID0gc2lnbmFsPEV4Y2x1ZGU8Q29sb3JTY2hlbWUsICdzeXN0ZW0nPj4odGhpcy5nZXRJbml0QWN0dWFsQ29sb3JTY2hlbWUodGhpcy5jb2xvclNjaGVtZVNldHRpbmcoKSkpO1xuICAgIHB1YmxpYyBjb2xvclNjaGVtZSA9IHRoaXMuX2NvbG9yU2NoZW1lLmFzUmVhZG9ubHkoKTtcbiAgICBwdWJsaWMgY29sb3JTY2hlbWVJc0xpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY29sb3JTY2hlbWUoKSA9PT0gJ2xpZ2h0Jyk7XG5cbiAgICBwcml2YXRlIGdldEluaXRDb2xvclNjaGVtZSgpOiBDb2xvclNjaGVtZSB7XG4gICAgICAgIGxldCBjb2xvclNjaGVtZSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbTxDb2xvclNjaGVtZT4odGhpcy50eXBlTmFtZSwgdGhpcy5zdG9yYWdlQ29sb3JTY2hlbWVLZXkpO1xuICAgICAgICBpZiAoY29sb3JTY2hlbWUgPT0gbnVsbCB8fCAhKFsnZGFyaycsICdsaWdodCcsICdhdXRvJ10gYXMgQ29sb3JTY2hlbWVbXSkuaW5jbHVkZXMoY29sb3JTY2hlbWUpKSB7XG4gICAgICAgICAgICBjb2xvclNjaGVtZSA9IHRoaXMuZ2V0RGVmYXVsdENvbG9yU2NoZW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbG9yU2NoZW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5pdEFjdHVhbENvbG9yU2NoZW1lKGNvbG9yU2NoZW1lOiBDb2xvclNjaGVtZSk6IEV4Y2x1ZGU8Q29sb3JTY2hlbWUsICdzeXN0ZW0nPiB7XG4gICAgICAgIGlmIChjb2xvclNjaGVtZSA9PT0gJ2F1dG8nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb2xvclNjaGVtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdENvbG9yU2NoZW1lKCk6IENvbG9yU2NoZW1lIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnPy5jb2xvclNjaGVtZSA/PyB0aGlzLmNvbW1vbnNDb25maWc/LmFwcD8uY29sb3JTY2hlbWUgPz8gJ2F1dG8nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDb2xvclNjaGVtZShzY2hlbWU6IENvbG9yU2NoZW1lKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRDb2xvclNjaGVtZSA9IHRoaXMuZ2V0RGVmYXVsdENvbG9yU2NoZW1lKCk7XG4gICAgICAgIGlmIChzY2hlbWUgPT09IGRlZmF1bHRDb2xvclNjaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZUNvbG9yU2NoZW1lS2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VDb2xvclNjaGVtZUtleSwgc2NoZW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jb2xvclNjaGVtZVNldHRpbmcuc2V0KHNjaGVtZSk7XG4gICAgICAgIHRoaXMuX2NvbG9yU2NoZW1lLnNldCh0aGlzLmdldEluaXRBY3R1YWxDb2xvclNjaGVtZShzY2hlbWUpKTtcbiAgICB9XG5cbiAgICAvLyBtZW51IG1vZGVcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWVudU1vZGVzOiBMYXlvdXRNZW51TW9kZVtdID0gdGhpcy5jb25maWc/Lm1lbnVNb2RlcyA/PyBbJ3N0YXRpYycsICdvdmVybGF5JywgJ3JldmVhbCcsICdkcmF3ZXInLCAnc2xpbScsICdzbGltLXBsdXMnXTtcbiAgICBwcml2YXRlIF9tZW51TW9kZSA9IHNpZ25hbCh0aGlzLmluaXRNZW51TW9kZSgpKTtcbiAgICBwdWJsaWMgbWVudU1vZGUgPSB0aGlzLl9tZW51TW9kZS5hc1JlYWRvbmx5KCk7XG5cbiAgICAvLyBsb2dvc1xuICAgIHByaXZhdGUgYXBwTG9nb0xpZ2h0ID0gc2lnbmFsKFxuICAgICAgICB0aGlzLmNvbmZpZz8ubG9nb1BhdGhMaWdodCA/PyB0aGlzLmNvbW1vbnNDb25maWc/LmFwcD8ubG9nb1BhdGhMaWdodCA/PyB0aGlzLmNvbmZpZz8ubG9nb1BhdGggPz8gdGhpcy5jb21tb25zQ29uZmlnPy5hcHA/LmxvZ29QYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLnBuZydcbiAgICApO1xuICAgIHByaXZhdGUgYXBwTG9nb0RhcmsgPSBzaWduYWwoXG4gICAgICAgIHRoaXMuY29uZmlnPy5sb2dvUGF0aExpZ2h0ID8/IHRoaXMuY29tbW9uc0NvbmZpZz8uYXBwPy5sb2dvUGF0aERhcmsgPz8gdGhpcy5jb25maWc/LmxvZ29QYXRoID8/IHRoaXMuY29tbW9uc0NvbmZpZz8uYXBwPy5sb2dvUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby5wbmcnXG4gICAgKTtcbiAgICBwdWJsaWMgYXBwTG9nbyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmNvbG9yU2NoZW1lSXNMaWdodCgpID8gdGhpcy5hcHBMb2dvTGlnaHQoKSA6IHRoaXMuYXBwTG9nb0RhcmsoKSkpO1xuXG4gICAgcHJpdmF0ZSBhcHBMb2dvTmFtZUxpZ2h0ID0gc2lnbmFsKFxuICAgICAgICB0aGlzLmNvbmZpZz8ubG9nb05hbWVQYXRoTGlnaHQgPz9cbiAgICAgICAgICAgIHRoaXMuY29tbW9uc0NvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGhMaWdodCA/P1xuICAgICAgICAgICAgdGhpcy5jb25maWc/LmxvZ29OYW1lUGF0aCA/P1xuICAgICAgICAgICAgdGhpcy5jb21tb25zQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aCA/P1xuICAgICAgICAgICAgJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnXG4gICAgKTtcbiAgICBwcml2YXRlIGFwcExvZ29OYW1lRGFyayA9IHNpZ25hbChcbiAgICAgICAgdGhpcy5jb25maWc/LmxvZ29OYW1lUGF0aERhcmsgPz9cbiAgICAgICAgICAgIHRoaXMuY29tbW9uc0NvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGhEYXJrID8/XG4gICAgICAgICAgICB0aGlzLmNvbmZpZz8ubG9nb05hbWVQYXRoID8/XG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoID8/XG4gICAgICAgICAgICAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby1hcHBuYW1lLnBuZydcbiAgICApO1xuICAgIHB1YmxpYyBhcHBMb2dvTmFtZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmNvbG9yU2NoZW1lSXNMaWdodCgpID8gdGhpcy5hcHBMb2dvTmFtZUxpZ2h0KCkgOiB0aGlzLmFwcExvZ29OYW1lRGFyaygpKSk7XG5cbiAgICAvLyBvdmVybGF5c1xuICAgIHB1YmxpYyBpc092ZXJsYXkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdvdmVybGF5Jyk7XG4gICAgcHVibGljIGlzU2xpbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVudU1vZGUoKSA9PT0gJ3NsaW0nKTtcbiAgICBwdWJsaWMgaXNTbGltUGx1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVudU1vZGUoKSA9PT0gJ3NsaW0tcGx1cycpO1xuXG4gICAgLy8gdXNlZCBmb3IgbWFuYWdpbmcgdGhlIHN1Ym1lbnUgZHJvcGRvd24gb3ZlcmxheSBpbiBzbGltIGFuZCBzbGltKyBsYXlvdXRzXG4gICAgcHVibGljIHN1Ym1lbnVPdmVybGF5S2V5ID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sb3JTY2hlbWVTZXR0aW5nKCkgPT09ICdhdXRvJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdDb2xvclNjaGVtZSA9IGV2ZW50Lm1hdGNoZXMgPyAnZGFyaycgOiAnbGlnaHQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb2xvclNjaGVtZS5zZXQobmV3Q29sb3JTY2hlbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sb3JTY2hlbWUgPSB0aGlzLl9jb2xvclNjaGVtZSgpO1xuICAgICAgICAgICAgY29uc3QgbGlua0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAtdGhlbWUnKSBhcyBIVE1MTGlua0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoY29sb3JTY2hlbWUgPT09ICdkYXJrJyAmJiBsaW5rRWxlbWVudD8uaHJlZi5pbmNsdWRlcygnbGlnaHQnKSkge1xuICAgICAgICAgICAgICAgIGxpbmtFbGVtZW50LmhyZWYgPSAndGhlbWUtZGFyay5jc3MnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2xvclNjaGVtZSA9PT0gJ2xpZ2h0JyAmJiBsaW5rRWxlbWVudD8uaHJlZi5pbmNsdWRlcygnZGFyaycpKSB7XG4gICAgICAgICAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9ICd0aGVtZS1saWdodC5jc3MnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk1lbnVNb2RlQ2hhbmdlKG1vZGU6IExheW91dE1lbnVNb2RlKSB7XG4gICAgICAgIGlmICghdGhpcy5tZW51TW9kZXMuaW5jbHVkZXMobW9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9kZSA9PT0gdGhpcy5jb25maWc/Lm1lbnVNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0odGhpcy50eXBlTmFtZSwgdGhpcy5zdG9yYWdlTWVudU1vZGVLZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZU1lbnVNb2RlS2V5LCBtb2RlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tZW51TW9kZS5zZXQobW9kZSk7XG4gICAgfVxuXG4gICAgb25NZW51VG9nZ2xlKCkge1xuICAgICAgICBpZiAodGhpcy5pc092ZXJsYXkoKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBvdmVybGF5TWVudUFjdGl2ZTogIXN0YXRlLm92ZXJsYXlNZW51QWN0aXZlXG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlKCkub3ZlcmxheU1lbnVBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlPcGVuLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzdGF0aWNNZW51RGVza3RvcEluYWN0aXZlOiAhc3RhdGUuc3RhdGljTWVudURlc2t0b3BJbmFjdGl2ZVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzdGF0aWNNZW51TW9iaWxlQWN0aXZlOiAhc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZVxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZSgpLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlPcGVuLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlTdWJtZW51T3BlbihrZXk6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5zdWJtZW51T3ZlcmxheUtleSgpID09PSBrZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3VibWVudU92ZXJsYXlLZXkuc2V0KGtleSk7XG4gICAgICAgIHRoaXMub3ZlcmxheU9wZW4ubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlTdWJtZW51Q2xvc2UoKSB7XG4gICAgICAgIHRoaXMuc3VibWVudU92ZXJsYXlLZXkuc2V0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgaXNEZXNrdG9wKCkge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPiA5OTE7XG4gICAgfVxuXG4gICAgaXNNb2JpbGUoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc0Rlc2t0b3AoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRNZW51TW9kZSgpOiBMYXlvdXRNZW51TW9kZSB7XG4gICAgICAgIGNvbnN0IGxzTW9kZSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbTxMYXlvdXRNZW51TW9kZT4odGhpcy50eXBlTmFtZSwgdGhpcy5zdG9yYWdlTWVudU1vZGVLZXkpO1xuICAgICAgICBpZiAobHNNb2RlICYmIHRoaXMubWVudU1vZGVzLmluY2x1ZGVzKGxzTW9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBsc01vZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnPy5tZW51TW9kZSA/PyAnc3RhdGljJztcbiAgICB9XG59XG4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFDLHdCQUF3QixFQUFFLHFCQUFxQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHNUYsT0FBTyxFQUFDLGdDQUFnQyxFQUE4QixNQUFNLCtCQUErQixDQUFDOztBQUc1RyxNQUFNLE9BQU8sYUFBYTtJQWdDZCxrQkFBa0I7UUFDdEIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RyxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksQ0FBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFtQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdGLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFdBQXdCO1FBQ3JELElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxN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QVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQztJQUM3QyxDQUFDOytHQTlLUSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgYWZ0ZXJOZXh0UmVuZGVyLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q09NTU9OU19NT0RVTEVfQ09ORklHX0lULCBDb21tb25zU3RvcmFnZVNlcnZpY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7TGF5b3V0U3RhdGV9IGZyb20gJy4uL21vZGVscy9sYXlvdXQtc3RhdGUubW9kZWwnO1xuaW1wb3J0IHtDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwgQ29sb3JTY2hlbWUsIExheW91dE1lbnVNb2RlfSBmcm9tICcuL2xheW91dC1mZWF0dXJlLWNvbmZpZy50b2tlbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMYXlvdXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR5cGVOYW1lID0gJ01haW5MYXlvdXRDb21wb25lbnRTZXJ2aWNlJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VNZW51TW9kZUtleSA9ICdtZW51TW9kZSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlQ29sb3JTY2hlbWVLZXkgPSAnY29sb3JTY2hlbWUnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNDb25maWcgPSBpbmplY3QoQ09NTU9OU19NT0RVTEVfQ09ORklHX0lULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZSA9IGluamVjdChDb21tb25zU3RvcmFnZVNlcnZpY2UpO1xuXG4gICAgcHVibGljIHN0YXRlID0gc2lnbmFsPExheW91dFN0YXRlPih7XG4gICAgICAgIHN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmU6IGZhbHNlLFxuICAgICAgICBvdmVybGF5TWVudUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIHJpZ2h0TWVudUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ1NpZGViYXJWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgc3RhdGljTWVudU1vYmlsZUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIG1lbnVIb3ZlckFjdGl2ZTogZmFsc2UsXG4gICAgICAgIHNpZGViYXJBY3RpdmU6IGZhbHNlLFxuICAgICAgICBhbmNob3JlZDogZmFsc2VcbiAgICB9KTtcblxuICAgIHByaXZhdGUgb3ZlcmxheU9wZW4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHVibGljIG92ZXJsYXlPcGVuJCA9IHRoaXMub3ZlcmxheU9wZW4uYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvLyBjb2xvciBzY2hlbWVcbiAgICBwcml2YXRlIF9jb2xvclNjaGVtZVNldHRpbmcgPSBzaWduYWwodGhpcy5nZXRJbml0Q29sb3JTY2hlbWUoKSk7XG4gICAgcHVibGljIGNvbG9yU2NoZW1lU2V0dGluZyA9IHRoaXMuX2NvbG9yU2NoZW1lU2V0dGluZy5hc1JlYWRvbmx5KCk7XG4gICAgcHJpdmF0ZSBfY29sb3JTY2hlbWUgPSBzaWduYWw8RXhjbHVkZTxDb2xvclNjaGVtZSwgJ3N5c3RlbSc+Pih0aGlzLmdldEluaXRBY3R1YWxDb2xvclNjaGVtZSh0aGlzLmNvbG9yU2NoZW1lU2V0dGluZygpKSk7XG4gICAgcHVibGljIGNvbG9yU2NoZW1lID0gdGhpcy5fY29sb3JTY2hlbWUuYXNSZWFkb25seSgpO1xuICAgIHB1YmxpYyBjb2xvclNjaGVtZUlzTGlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jb2xvclNjaGVtZSgpID09PSAnbGlnaHQnKTtcblxuICAgIHByaXZhdGUgZ2V0SW5pdENvbG9yU2NoZW1lKCk6IENvbG9yU2NoZW1lIHtcbiAgICAgICAgbGV0IGNvbG9yU2NoZW1lID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtPENvbG9yU2NoZW1lPih0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VDb2xvclNjaGVtZUtleSk7XG4gICAgICAgIGlmIChjb2xvclNjaGVtZSA9PSBudWxsIHx8ICEoWydkYXJrJywgJ2xpZ2h0JywgJ2F1dG8nXSBhcyBDb2xvclNjaGVtZVtdKS5pbmNsdWRlcyhjb2xvclNjaGVtZSkpIHtcbiAgICAgICAgICAgIGNvbG9yU2NoZW1lID0gdGhpcy5nZXREZWZhdWx0Q29sb3JTY2hlbWUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sb3JTY2hlbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJbml0QWN0dWFsQ29sb3JTY2hlbWUoY29sb3JTY2hlbWU6IENvbG9yU2NoZW1lKTogRXhjbHVkZTxDb2xvclNjaGVtZSwgJ3N5c3RlbSc+IHtcbiAgICAgICAgaWYgKGNvbG9yU2NoZW1lID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMgPyAnZGFyaycgOiAnbGlnaHQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNvbG9yU2NoZW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0Q29sb3JTY2hlbWUoKTogQ29sb3JTY2hlbWUge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/LmNvbG9yU2NoZW1lID8/ICdhdXRvJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q29sb3JTY2hlbWUoc2NoZW1lOiBDb2xvclNjaGVtZSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29sb3JTY2hlbWUgPSB0aGlzLmdldERlZmF1bHRDb2xvclNjaGVtZSgpO1xuICAgICAgICBpZiAoc2NoZW1lID09PSBkZWZhdWx0Q29sb3JTY2hlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSh0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VDb2xvclNjaGVtZUtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy50eXBlTmFtZSwgdGhpcy5zdG9yYWdlQ29sb3JTY2hlbWVLZXksIHNjaGVtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29sb3JTY2hlbWVTZXR0aW5nLnNldChzY2hlbWUpO1xuICAgICAgICB0aGlzLl9jb2xvclNjaGVtZS5zZXQodGhpcy5nZXRJbml0QWN0dWFsQ29sb3JTY2hlbWUoc2NoZW1lKSk7XG4gICAgfVxuXG4gICAgLy8gbWVudSBtb2RlXG4gICAgcHVibGljIHJlYWRvbmx5IG1lbnVNb2RlczogTGF5b3V0TWVudU1vZGVbXSA9IHRoaXMuY29uZmlnPy5tZW51TW9kZXMgPz8gWydzdGF0aWMnLCAnb3ZlcmxheScsICdyZXZlYWwnLCAnZHJhd2VyJywgJ3NsaW0nLCAnc2xpbS1wbHVzJ107XG4gICAgcHJpdmF0ZSBfbWVudU1vZGUgPSBzaWduYWwodGhpcy5pbml0TWVudU1vZGUoKSk7XG4gICAgcHVibGljIG1lbnVNb2RlID0gdGhpcy5fbWVudU1vZGUuYXNSZWFkb25seSgpO1xuXG4gICAgLy8gbG9nb3NcbiAgICBwcml2YXRlIGFwcExvZ29MaWdodCA9IHNpZ25hbCh0aGlzLmNvbmZpZz8ubG9nb1BhdGhMaWdodCA/PyB0aGlzLmNvbmZpZz8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJyk7XG4gICAgcHJpdmF0ZSBhcHBMb2dvRGFyayA9IHNpZ25hbCh0aGlzLmNvbmZpZz8ubG9nb1BhdGhMaWdodCA/PyB0aGlzLmNvbmZpZz8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJyk7XG4gICAgcHVibGljIGFwcExvZ28gPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb0xpZ2h0KCkgOiB0aGlzLmFwcExvZ29EYXJrKCkpKTtcblxuICAgIHByaXZhdGUgYXBwTG9nb05hbWVMaWdodCA9IHNpZ25hbCh0aGlzLmNvbmZpZz8ubG9nb05hbWVQYXRoTGlnaHQgPz8gdGhpcy5jb25maWc/LmxvZ29OYW1lUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby1hcHBuYW1lLnBuZycpO1xuICAgIHByaXZhdGUgYXBwTG9nb05hbWVEYXJrID0gc2lnbmFsKHRoaXMuY29uZmlnPy5sb2dvTmFtZVBhdGhEYXJrID8/IHRoaXMuY29uZmlnPy5sb2dvTmFtZVBhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnKTtcbiAgICBwdWJsaWMgYXBwTG9nb05hbWUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb05hbWVMaWdodCgpIDogdGhpcy5hcHBMb2dvTmFtZURhcmsoKSkpO1xuXG4gICAgLy8gb3ZlcmxheXNcbiAgICBwdWJsaWMgaXNPdmVybGF5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tZW51TW9kZSgpID09PSAnb3ZlcmxheScpO1xuICAgIHB1YmxpYyBpc1NsaW0gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdzbGltJyk7XG4gICAgcHVibGljIGlzU2xpbVBsdXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdzbGltLXBsdXMnKTtcblxuICAgIC8vIHVzZWQgZm9yIG1hbmFnaW5nIHRoZSBzdWJtZW51IGRyb3Bkb3duIG92ZXJsYXkgaW4gc2xpbSBhbmQgc2xpbSsgbGF5b3V0c1xuICAgIHB1YmxpYyBzdWJtZW51T3ZlcmxheUtleSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbG9yU2NoZW1lU2V0dGluZygpID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q29sb3JTY2hlbWUgPSBldmVudC5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29sb3JTY2hlbWUuc2V0KG5ld0NvbG9yU2NoZW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yU2NoZW1lID0gdGhpcy5fY29sb3JTY2hlbWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmtFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwLXRoZW1lJykgYXMgSFRNTExpbmtFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGNvbG9yU2NoZW1lID09PSAnZGFyaycgJiYgbGlua0VsZW1lbnQ/LmhyZWYuaW5jbHVkZXMoJ2xpZ2h0JykpIHtcbiAgICAgICAgICAgICAgICBsaW5rRWxlbWVudC5ocmVmID0gJ3RoZW1lLWRhcmsuY3NzJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sb3JTY2hlbWUgPT09ICdsaWdodCcgJiYgbGlua0VsZW1lbnQ/LmhyZWYuaW5jbHVkZXMoJ2RhcmsnKSkge1xuICAgICAgICAgICAgICAgIGxpbmtFbGVtZW50LmhyZWYgPSAndGhlbWUtbGlnaHQuY3NzJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25NZW51TW9kZUNoYW5nZShtb2RlOiBMYXlvdXRNZW51TW9kZSkge1xuICAgICAgICBpZiAoIXRoaXMubWVudU1vZGVzLmluY2x1ZGVzKG1vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vZGUgPT09IHRoaXMuY29uZmlnPy5tZW51TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZU1lbnVNb2RlS2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VNZW51TW9kZUtleSwgbW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVudU1vZGUuc2V0KG1vZGUpO1xuICAgIH1cblxuICAgIG9uTWVudVRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgb3ZlcmxheU1lbnVBY3RpdmU6ICFzdGF0ZS5vdmVybGF5TWVudUFjdGl2ZVxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZSgpLm92ZXJsYXlNZW51QWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbi5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZXNrdG9wKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc3RhdGljTWVudURlc2t0b3BJbmFjdGl2ZTogIXN0YXRlLnN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc3RhdGljTWVudU1vYmlsZUFjdGl2ZTogIXN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmVcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUoKS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbi5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5U3VibWVudU9wZW4oa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuc3VibWVudU92ZXJsYXlLZXkoKSA9PT0ga2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN1Ym1lbnVPdmVybGF5S2V5LnNldChrZXkpO1xuICAgICAgICB0aGlzLm92ZXJsYXlPcGVuLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5U3VibWVudUNsb3NlKCkge1xuICAgICAgICB0aGlzLnN1Ym1lbnVPdmVybGF5S2V5LnNldCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGlzRGVza3RvcCgpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID4gOTkxO1xuICAgIH1cblxuICAgIGlzTW9iaWxlKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNEZXNrdG9wKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TWVudU1vZGUoKTogTGF5b3V0TWVudU1vZGUge1xuICAgICAgICBjb25zdCBsc01vZGUgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW08TGF5b3V0TWVudU1vZGU+KHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZU1lbnVNb2RlS2V5KTtcbiAgICAgICAgaWYgKGxzTW9kZSAmJiB0aGlzLm1lbnVNb2Rlcy5pbmNsdWRlcyhsc01vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbHNNb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8ubWVudU1vZGUgPz8gJ3N0YXRpYyc7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
import { RouterLink } from '@angular/router';
|
|
4
|
+
import * as i2 from '@ngx-translate/core';
|
|
5
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
+
import * as i1 from 'primeng/button';
|
|
7
|
+
import { ButtonModule } from 'primeng/button';
|
|
8
|
+
import { LayoutService } from '@mediusinc/mng-commons-layout';
|
|
9
|
+
|
|
10
|
+
class ErrorPageComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.layout = inject(LayoutService);
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ErrorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ErrorPageComponent, isStandalone: true, selector: "mng-error-page", ngImport: i0, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(252,97,97,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ErrorPageComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ standalone: true, selector: 'mng-error-page', imports: [ButtonModule, TranslateModule, RouterLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(252,97,97,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"] }]
|
|
20
|
+
}] });
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Generated bundle index. Do not edit.
|
|
24
|
+
*/
|
|
25
|
+
//# sourceMappingURL=mediusinc-mng-commons-layout-components-pages-error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-layout-components-pages-error.mjs","sources":["../../components/pages/error/src/lib/error.page.component.ts","../../components/pages/error/src/lib/error.page.component.html","../../components/pages/error/src/mediusinc-mng-commons-layout-components-pages-error.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '@mediusinc/mng-commons-layout';\n\n@Component({\n standalone: true,\n selector: 'mng-error-page',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\n templateUrl: './error.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAgBa,kBAAkB,CAAA;AAR/B,IAAA,WAAA,GAAA;AASoB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjD;+GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,0EChB/B,olCAiBA,EAAA,MAAA,EAAA,CAAA,k4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNc,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4FAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK1C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,gBAAgB,EACjB,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,EAGnC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,olCAAA,EAAA,MAAA,EAAA,CAAA,k4BAAA,CAAA,EAAA;;;AEdnD;;AAEG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createLazyRoute } from '@mediusinc/mng-commons/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a layout route on the specified path.
|
|
5
|
+
*
|
|
6
|
+
* @param {String} path - The path of the route.
|
|
7
|
+
* @return {RouteBuilder} - The route builder for the layout route.
|
|
8
|
+
*/
|
|
9
|
+
function createLayoutLazyRoute(path) {
|
|
10
|
+
return createLazyRoute(path, () => import('@mediusinc/mng-commons-layout/components/pages/main').then(c => c.MainLayoutComponent));
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Generated bundle index. Do not edit.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export { createLayoutLazyRoute };
|
|
18
|
+
//# sourceMappingURL=mediusinc-mng-commons-layout-components-pages-main-lazy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-layout-components-pages-main-lazy.mjs","sources":["../../components/pages/main/lazy/src/lib/route-builder.ts","../../components/pages/main/lazy/src/mediusinc-mng-commons-layout-components-pages-main-lazy.ts"],"sourcesContent":["import {RouteBuilder, createLazyRoute} from '@mediusinc/mng-commons/core';\n\n/**\n * Creates a layout route on the specified path.\n *\n * @param {String} path - The path of the route.\n * @return {RouteBuilder} - The route builder for the layout route.\n */\nexport function createLayoutLazyRoute(path: string): RouteBuilder {\n return createLazyRoute(path, () => import('@mediusinc/mng-commons-layout/components/pages/main').then(c => c.MainLayoutComponent));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAEA;;;;;AAKG;AACG,SAAU,qBAAqB,CAAC,IAAY,EAAA;IAC9C,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,OAAO,qDAAqD,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;AACtI;;ACVA;;AAEG;;;;"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, Renderer2, viewChild, signal, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import * as i1 from '@angular/router';
|
|
6
|
+
import { RouterModule } from '@angular/router';
|
|
7
|
+
import { COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService } from '@mediusinc/mng-commons-layout';
|
|
8
|
+
import { TopbarComponent, BreadcrumbComponent, FooterComponent } from '@mediusinc/mng-commons-layout/components';
|
|
9
|
+
import { ComponentDirective, NotificationWrapperComponent, createRoute } from '@mediusinc/mng-commons/core';
|
|
10
|
+
|
|
11
|
+
class MainLayoutComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
// private readonly commonsService = inject(CommonsService);
|
|
14
|
+
this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
|
|
15
|
+
this.layout = inject(LayoutService);
|
|
16
|
+
this.menuService = inject(MenuService);
|
|
17
|
+
this.renderer = inject(Renderer2);
|
|
18
|
+
this.appTopbar = viewChild('topbarCmp');
|
|
19
|
+
this.ripple = signal(this.config?.ripple ?? true);
|
|
20
|
+
this.topbarComponent = signal(this.config?.components?.topbar === false ? undefined : (this.config?.components?.topbar ?? TopbarComponent));
|
|
21
|
+
this.breadcrumbsComponent = signal(this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent));
|
|
22
|
+
this.footerComponent = signal(this.config?.components?.footer === false ? undefined : (this.config?.components?.footer ?? FooterComponent));
|
|
23
|
+
this.useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);
|
|
24
|
+
this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {
|
|
25
|
+
if (!this.menuOutsideClickListener) {
|
|
26
|
+
this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {
|
|
27
|
+
const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));
|
|
28
|
+
if (isOutsideClicked) {
|
|
29
|
+
this.hideMenu();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (this.layout.state().staticMenuMobileActive) {
|
|
34
|
+
this.blockBodyScroll();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
blockBodyScroll() {
|
|
39
|
+
if (document.body.classList) {
|
|
40
|
+
document.body.classList.add('blocked-scroll');
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
document.body.className += ' blocked-scroll';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
unblockBodyScroll() {
|
|
47
|
+
if (document.body.classList) {
|
|
48
|
+
document.body.classList.remove('blocked-scroll');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
document.body.className = document.body.className.replace(new RegExp('(^|\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
hideMenu() {
|
|
55
|
+
this.layout.state.update(state => ({
|
|
56
|
+
...state,
|
|
57
|
+
overlayMenuActive: false,
|
|
58
|
+
staticMenuMobileActive: false,
|
|
59
|
+
menuHoverActive: false
|
|
60
|
+
}));
|
|
61
|
+
if (this.layout.submenuOverlayKey() !== undefined) {
|
|
62
|
+
this.layout.onOverlaySubmenuClose();
|
|
63
|
+
}
|
|
64
|
+
if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {
|
|
65
|
+
this.menuService.reset();
|
|
66
|
+
}
|
|
67
|
+
if (this.menuOutsideClickListener) {
|
|
68
|
+
this.menuOutsideClickListener();
|
|
69
|
+
this.menuOutsideClickListener = null;
|
|
70
|
+
}
|
|
71
|
+
this.unblockBodyScroll();
|
|
72
|
+
}
|
|
73
|
+
ngOnDestroy() {
|
|
74
|
+
if (this.menuOutsideClickListener) {
|
|
75
|
+
this.menuOutsideClickListener();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MainLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: MainLayoutComponent, isStandalone: true, selector: "mng-main-layout", viewQueries: [{ propertyName: "appTopbar", first: true, predicate: ["topbarCmp"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "component", type: NotificationWrapperComponent, selector: "mng-notification-wrapper" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MainLayoutComponent, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{ standalone: true, selector: 'mng-main-layout', imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n" }]
|
|
84
|
+
}], ctorParameters: () => [] });
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Creates a layout route on the specified path.
|
|
88
|
+
*
|
|
89
|
+
* @param {String} path - The path of the route.
|
|
90
|
+
* @return {RouteBuilder} - The route builder for the layout route.
|
|
91
|
+
*/
|
|
92
|
+
function createLayoutRoute(path) {
|
|
93
|
+
return createRoute(path, MainLayoutComponent);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Generated bundle index. Do not edit.
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
export { MainLayoutComponent, createLayoutRoute };
|
|
101
|
+
//# sourceMappingURL=mediusinc-mng-commons-layout-components-pages-main.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-layout-components-pages-main.mjs","sources":["../../components/pages/main/src/lib/main-layout.component.ts","../../components/pages/main/src/lib/main-layout.component.html","../../components/pages/main/src/lib/route-builder.ts","../../components/pages/main/src/mediusinc-mng-commons-layout-components-pages-main.ts"],"sourcesContent":["import {NgClass, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, OnDestroy, Renderer2, Type, inject, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService} from '@mediusinc/mng-commons-layout';\nimport {BreadcrumbComponent, FooterComponent, TopbarComponent} from '@mediusinc/mng-commons-layout/components';\nimport {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainLayoutComponent implements OnDestroy {\n // private readonly commonsService = inject(CommonsService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n private appTopbar = viewChild<ElementRef>('topbarCmp');\n\n public readonly ripple = signal(this.config?.ripple ?? true);\n\n public topbarComponent = signal<Type<any> | undefined>(this.config?.components?.topbar === false ? undefined : (this.config?.components?.topbar ?? TopbarComponent));\n public breadcrumbsComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent)\n );\n public footerComponent = signal<Type<any> | undefined>(this.config?.components?.footer === false ? undefined : (this.config?.components?.footer ?? FooterComponent));\n\n public useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);\n private menuOutsideClickListener: any;\n\n constructor() {\n this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layout.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layout.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n\n if (this.layout.submenuOverlayKey() !== undefined) {\n this.layout.onOverlaySubmenuClose();\n }\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.menuService.reset();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","import {RouteBuilder, createRoute} from '@mediusinc/mng-commons/core';\n\nimport {MainLayoutComponent} from './main-layout.component';\n\n/**\n * Creates a layout route on the specified path.\n *\n * @param {String} path - The path of the route.\n * @return {RouteBuilder} - The route builder for the layout route.\n */\nexport function createLayoutRoute(path: string): RouteBuilder {\n return createRoute(path, MainLayoutComponent);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
import { RouterLink } from '@angular/router';
|
|
4
|
+
import * as i2 from '@ngx-translate/core';
|
|
5
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
+
import * as i1 from 'primeng/button';
|
|
7
|
+
import { ButtonModule } from 'primeng/button';
|
|
8
|
+
import { LayoutService } from '@mediusinc/mng-commons-layout';
|
|
9
|
+
|
|
10
|
+
class NotFoundPageComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.layout = inject(LayoutService);
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NotFoundPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: NotFoundPageComponent, isStandalone: true, selector: "mng-not-found-page", ngImport: i0, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(252,97,97,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel p{font-size:24px;font-weight:400;max-width:320px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NotFoundPageComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ standalone: true, selector: 'mng-not-found-page', imports: [ButtonModule, RouterLink, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n", styles: [".exception-body{background:var(--surface-ground)}.exception-body .exception-container{background:var(--exception-pages-image);background-repeat:no-repeat;background-size:contain;box-sizing:border-box}.exception-body .exception-container .exception-panel{box-sizing:border-box;flex-grow:1;margin-top:3rem;margin-bottom:3rem}.exception-body .exception-container .exception-panel h1{font-size:140px;font-weight:900;text-shadow:0 0 50px rgba(252,97,97,.2)}.exception-body .exception-container .exception-panel h3{font-size:80px;font-weight:900;margin-top:-90px;margin-bottom:50px}.exception-body .exception-container .exception-panel p{font-size:24px;font-weight:400;max-width:320px}.exception-body .exception-container .exception-panel button{margin-top:50px}.exception-body .exception-container .exception-footer{margin-bottom:2rem}.exception-body .exception-container .exception-footer .exception-logo{width:34px}.exception-body .exception-container .exception-footer .exception-appname{width:72px}\n"] }]
|
|
20
|
+
}] });
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Generated bundle index. Do not edit.
|
|
24
|
+
*/
|
|
25
|
+
//# sourceMappingURL=mediusinc-mng-commons-layout-components-pages-not-found.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-layout-components-pages-not-found.mjs","sources":["../../components/pages/not-found/src/lib/not-found.page.component.ts","../../components/pages/not-found/src/lib/not-found.page.component.html","../../components/pages/not-found/src/mediusinc-mng-commons-layout-components-pages-not-found.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '@mediusinc/mng-commons-layout';\n\n@Component({\n standalone: true,\n selector: 'mng-not-found-page',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\n templateUrl: './not-found.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotFoundPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n }\n @if (layout.appLogoName()) {\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAgBa,qBAAqB,CAAA;AARlC,IAAA,WAAA,GAAA;AASoB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjD;+GAFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,8EChBlC,mpCAkBA,EAAA,MAAA,EAAA,CAAA,y+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPc,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,mOAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK1C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,EAGnC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mpCAAA,EAAA,MAAA,EAAA,CAAA,y+BAAA,CAAA,EAAA;;;AEdnD;;AAEG"}
|