@delon/theme 18.3.0 → 19.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/compact.css +882 -63
  2. package/compact.min.css +1 -1
  3. package/dark.css +882 -63
  4. package/dark.min.css +1 -1
  5. package/default.css +882 -63
  6. package/default.min.css +1 -1
  7. package/fesm2022/layout-default.mjs +118 -119
  8. package/fesm2022/layout-default.mjs.map +1 -1
  9. package/fesm2022/setting-drawer.mjs +59 -94
  10. package/fesm2022/setting-drawer.mjs.map +1 -1
  11. package/fesm2022/theme-btn.mjs +27 -29
  12. package/fesm2022/theme-btn.mjs.map +1 -1
  13. package/fesm2022/theme.mjs +168 -163
  14. package/fesm2022/theme.mjs.map +1 -1
  15. package/layout-default/layout.module.d.ts +2 -3
  16. package/layout-default/layout.service.d.ts +3 -0
  17. package/package.json +6 -16
  18. package/setting-drawer/setting-drawer-item.component.d.ts +1 -1
  19. package/setting-drawer/setting-drawer.component.d.ts +1 -1
  20. package/setting-drawer/setting-drawer.module.d.ts +1 -13
  21. package/src/services/menu/menu.service.d.ts +8 -0
  22. package/system/ng/_drag.less +9 -0
  23. package/system/ng/index.less +1 -0
  24. package/variable.css +882 -63
  25. package/variable.min.css +1 -1
  26. package/esm2022/layout-blank/layout-blank.mjs +0 -5
  27. package/esm2022/layout-blank/public_api.mjs +0 -3
  28. package/esm2022/layout-default/layout-default.mjs +0 -5
  29. package/esm2022/layout-default/layout-header-item-trigger.directive.mjs +0 -16
  30. package/esm2022/layout-default/layout-header-item.component.mjs +0 -33
  31. package/esm2022/layout-default/layout-header.component.mjs +0 -138
  32. package/esm2022/layout-default/layout-nav.component.mjs +0 -280
  33. package/esm2022/layout-default/layout-top-menu-item.mjs +0 -33
  34. package/esm2022/layout-default/layout.component.mjs +0 -196
  35. package/esm2022/layout-default/layout.module.mjs +0 -71
  36. package/esm2022/layout-default/layout.service.mjs +0 -65
  37. package/esm2022/layout-default/public_api.mjs +0 -10
  38. package/esm2022/layout-default/types.mjs +0 -2
  39. package/esm2022/public_api.mjs +0 -9
  40. package/esm2022/setting-drawer/public_api.mjs +0 -4
  41. package/esm2022/setting-drawer/setting-drawer-item.component.mjs +0 -34
  42. package/esm2022/setting-drawer/setting-drawer.component.mjs +0 -183
  43. package/esm2022/setting-drawer/setting-drawer.mjs +0 -5
  44. package/esm2022/setting-drawer/setting-drawer.module.mjs +0 -66
  45. package/esm2022/setting-drawer/setting-drawer.types.mjs +0 -193
  46. package/esm2022/src/config.mjs +0 -2
  47. package/esm2022/src/locale/index.mjs +0 -2
  48. package/esm2022/src/locale/languages/ar-SA.mjs +0 -83
  49. package/esm2022/src/locale/languages/el-GR.mjs +0 -83
  50. package/esm2022/src/locale/languages/en-US.mjs +0 -83
  51. package/esm2022/src/locale/languages/es-ES.mjs +0 -83
  52. package/esm2022/src/locale/languages/fr-FR.mjs +0 -83
  53. package/esm2022/src/locale/languages/hr-HR.mjs +0 -47
  54. package/esm2022/src/locale/languages/it-IT.mjs +0 -83
  55. package/esm2022/src/locale/languages/ja-JP.mjs +0 -83
  56. package/esm2022/src/locale/languages/ko-KR.mjs +0 -83
  57. package/esm2022/src/locale/languages/pl-PL.mjs +0 -83
  58. package/esm2022/src/locale/languages/sl-SI.mjs +0 -82
  59. package/esm2022/src/locale/languages/tr-TR.mjs +0 -83
  60. package/esm2022/src/locale/languages/vi-VI.mjs +0 -83
  61. package/esm2022/src/locale/languages/zh-CN.mjs +0 -83
  62. package/esm2022/src/locale/languages/zh-TW.mjs +0 -83
  63. package/esm2022/src/locale/locale.module.mjs +0 -17
  64. package/esm2022/src/locale/locale.service.mjs +0 -45
  65. package/esm2022/src/locale/locale.tokens.mjs +0 -3
  66. package/esm2022/src/locale/locale.types.mjs +0 -2
  67. package/esm2022/src/locale/public_api.mjs +0 -20
  68. package/esm2022/src/pipes/date/date.pipe.mjs +0 -25
  69. package/esm2022/src/pipes/index.mjs +0 -6
  70. package/esm2022/src/pipes/keys/keys.pipe.mjs +0 -21
  71. package/esm2022/src/pipes/safe/html.pipe.mjs +0 -18
  72. package/esm2022/src/pipes/safe/url.pipe.mjs +0 -18
  73. package/esm2022/src/pipes/yn/yn.pipe.mjs +0 -43
  74. package/esm2022/src/provide.mjs +0 -51
  75. package/esm2022/src/router/optional-preloader.mjs +0 -21
  76. package/esm2022/src/services/drawer/drawer.helper.mjs +0 -110
  77. package/esm2022/src/services/http/http.client.mjs +0 -154
  78. package/esm2022/src/services/http/http.decorator.mjs +0 -212
  79. package/esm2022/src/services/http/http.token.mjs +0 -38
  80. package/esm2022/src/services/http/index.mjs +0 -4
  81. package/esm2022/src/services/i18n/i18n-url.guard.mjs +0 -51
  82. package/esm2022/src/services/i18n/i18n.mjs +0 -100
  83. package/esm2022/src/services/i18n/i18n.pipe.mjs +0 -18
  84. package/esm2022/src/services/i18n/index.mjs +0 -4
  85. package/esm2022/src/services/index.mjs +0 -11
  86. package/esm2022/src/services/menu/index.mjs +0 -3
  87. package/esm2022/src/services/menu/interface.mjs +0 -2
  88. package/esm2022/src/services/menu/menu.service.mjs +0 -297
  89. package/esm2022/src/services/modal/modal.helper.mjs +0 -167
  90. package/esm2022/src/services/preloader/preloader.mjs +0 -27
  91. package/esm2022/src/services/responsive/responsive.mjs +0 -53
  92. package/esm2022/src/services/rtl/rtl.service.mjs +0 -98
  93. package/esm2022/src/services/settings/index.mjs +0 -3
  94. package/esm2022/src/services/settings/settings.service.mjs +0 -105
  95. package/esm2022/src/services/settings/types.mjs +0 -2
  96. package/esm2022/src/services/title/title.service.mjs +0 -137
  97. package/esm2022/src/theme.module.mjs +0 -57
  98. package/esm2022/src/version.mjs +0 -3
  99. package/esm2022/theme-btn/public_api.mjs +0 -3
  100. package/esm2022/theme-btn/theme-btn.component.mjs +0 -100
  101. package/esm2022/theme-btn/theme-btn.mjs +0 -5
  102. package/esm2022/theme-btn/theme-btn.module.mjs +0 -20
  103. package/esm2022/theme.mjs +0 -5
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJsYW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvbGF5b3V0LWJsYW5rL2xheW91dC1ibGFuay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -1,3 +0,0 @@
1
- // https://github.com/ng-packagr/ng-packagr/issues/1655
2
- export default void 0;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL2xheW91dC1ibGFuay9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxlQUFlLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMTY1NVxuZXhwb3J0IGRlZmF1bHQgdm9pZCAwO1xuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9sYXlvdXQtZGVmYXVsdC9sYXlvdXQtZGVmYXVsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -1,16 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class LayoutDefaultHeaderItemTriggerDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultHeaderItemTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: LayoutDefaultHeaderItemTriggerDirective, selector: "[layout-default-header-item-trigger]", host: { properties: { "class.alain-default__nav-item": "true" } }, ngImport: i0 }); }
6
- }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultHeaderItemTriggerDirective, decorators: [{
8
- type: Directive,
9
- args: [{
10
- selector: '[layout-default-header-item-trigger]',
11
- host: {
12
- '[class.alain-default__nav-item]': `true`
13
- }
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWhlYWRlci1pdGVtLXRyaWdnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvbGF5b3V0LWRlZmF1bHQvbGF5b3V0LWhlYWRlci1pdGVtLXRyaWdnZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTFDLE1BQU0sT0FBTyx1Q0FBdUM7OEdBQXZDLHVDQUF1QztrR0FBdkMsdUNBQXVDOzsyRkFBdkMsdUNBQXVDO2tCQU5uRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELElBQUksRUFBRTt3QkFDSixpQ0FBaUMsRUFBRSxNQUFNO3FCQUMxQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbGF5b3V0LWRlZmF1bHQtaGVhZGVyLWl0ZW0tdHJpZ2dlcl0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hbGFpbi1kZWZhdWx0X19uYXYtaXRlbV0nOiBgdHJ1ZWBcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXREZWZhdWx0SGVhZGVySXRlbVRyaWdnZXJEaXJlY3RpdmUge31cbiJdfQ==
@@ -1,33 +0,0 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class LayoutDefaultHeaderItemComponent {
4
- constructor() {
5
- this.hidden = 'none';
6
- this.direction = 'right';
7
- }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultHeaderItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: { hidden: "hidden", direction: "direction" }, viewQueries: [{ propertyName: "host", first: true, predicate: ["host"], descendants: true, static: true }], ngImport: i0, template: `
10
- <ng-template #host>
11
- <ng-content />
12
- </ng-template>
13
- `, isInline: true }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultHeaderItemComponent, decorators: [{
16
- type: Component,
17
- args: [{
18
- selector: 'layout-default-header-item',
19
- template: `
20
- <ng-template #host>
21
- <ng-content />
22
- </ng-template>
23
- `
24
- }]
25
- }], propDecorators: { host: [{
26
- type: ViewChild,
27
- args: ['host', { static: true }]
28
- }], hidden: [{
29
- type: Input
30
- }], direction: [{
31
- type: Input
32
- }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWhlYWRlci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL2xheW91dC1kZWZhdWx0L2xheW91dC1oZWFkZXItaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVl6RSxNQUFNLE9BQU8sZ0NBQWdDO0lBUjdDO1FBV1csV0FBTSxHQUFrQyxNQUFNLENBQUM7UUFDL0MsY0FBUyxHQUFxQyxPQUFPLENBQUM7S0FDaEU7OEdBTFksZ0NBQWdDO2tHQUFoQyxnQ0FBZ0Msb09BTmpDOzs7O0dBSVQ7OzJGQUVVLGdDQUFnQztrQkFSNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUU7Ozs7R0FJVDtpQkFDRjs4QkFFc0MsSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUUxQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1EaXJlY3Rpb24sIExheW91dERlZmF1bHRIZWFkZXJJdGVtSGlkZGVuIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xheW91dC1kZWZhdWx0LWhlYWRlci1pdGVtJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hvc3Q+XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1Db21wb25lbnQge1xuICBAVmlld0NoaWxkKCdob3N0JywgeyBzdGF0aWM6IHRydWUgfSkgaG9zdCE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIEBJbnB1dCgpIGhpZGRlbjogTGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1IaWRkZW4gPSAnbm9uZSc7XG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogTGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1EaXJlY3Rpb24gPSAncmlnaHQnO1xufVxuIl19
@@ -1,138 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, Input, inject } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { SettingsService } from '@delon/theme';
4
- import { LayoutDefaultService } from './layout.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "@angular/router";
8
- import * as i3 from "ng-zorro-antd/icon";
9
- export class LayoutDefaultHeaderComponent {
10
- constructor() {
11
- this.settings = inject(SettingsService);
12
- this.srv = inject(LayoutDefaultService);
13
- this.cdr = inject(ChangeDetectorRef);
14
- this.destroy$ = inject(DestroyRef);
15
- this.left = [];
16
- this.middle = [];
17
- this.right = [];
18
- }
19
- get opt() {
20
- return this.srv.options;
21
- }
22
- get app() {
23
- return this.settings.app;
24
- }
25
- get collapsed() {
26
- return this.settings.layout.collapsed;
27
- }
28
- get collapsedIcon() {
29
- return this.srv.collapsedIcon;
30
- }
31
- refresh() {
32
- const arr = this.items.toArray();
33
- this.left = arr.filter(i => i.direction === 'left');
34
- this.middle = arr.filter(i => i.direction === 'middle');
35
- this.right = arr.filter(i => i.direction === 'right');
36
- this.cdr.detectChanges();
37
- }
38
- ngAfterViewInit() {
39
- this.items.changes.pipe(takeUntilDestroyed(this.destroy$)).subscribe(() => this.refresh());
40
- this.srv.options$.pipe(takeUntilDestroyed(this.destroy$)).subscribe(() => this.cdr.detectChanges());
41
- this.refresh();
42
- }
43
- toggleCollapsed() {
44
- this.srv.toggleCollapsed();
45
- }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: LayoutDefaultHeaderComponent, selector: "layout-default-header", inputs: { items: "items" }, host: { properties: { "class.alain-default__header": "true" } }, ngImport: i0, template: `
48
- <ng-template #render let-ls>
49
- @for (i of ls; track $index) {
50
- <li [class.hidden-mobile]="i.hidden === 'mobile'" [class.hidden-pc]="i.hidden === 'pc'">
51
- <ng-container *ngTemplateOutlet="i.host" />
52
- </li>
53
- }
54
- </ng-template>
55
- <div class="alain-default__header-logo" [style.width.px]="opt.logoFixWidth">
56
- @if (opt.logo) {
57
- <ng-container *ngTemplateOutlet="opt.logo" />
58
- } @else {
59
- <a [routerLink]="opt.logoLink" class="alain-default__header-logo-link">
60
- <img class="alain-default__header-logo-expanded" [attr.src]="opt.logoExpanded" [attr.alt]="app.name" />
61
- <img class="alain-default__header-logo-collapsed" [attr.src]="opt.logoCollapsed" [attr.alt]="app.name" />
62
- </a>
63
- }
64
- </div>
65
- <div class="alain-default__nav-wrap">
66
- <ul class="alain-default__nav">
67
- @if (!opt.hideAside && opt.showHeaderCollapse) {
68
- <li>
69
- <div class="alain-default__nav-item alain-default__nav-item--collapse" (click)="toggleCollapsed()">
70
- <span nz-icon [nzType]="collapsedIcon"></span>
71
- </div>
72
- </li>
73
- }
74
- <ng-template [ngTemplateOutlet]="render" [ngTemplateOutletContext]="{ $implicit: left }" />
75
- </ul>
76
- @if (middle.length > 0) {
77
- <div class="alain-default__nav alain-default__nav-middle">
78
- <ng-container *ngTemplateOutlet="middle[0].host" />
79
- </div>
80
- }
81
- <ul class="alain-default__nav">
82
- <ng-template [ngTemplateOutlet]="render" [ngTemplateOutletContext]="{ $implicit: right }" />
83
- </ul>
84
- </div>
85
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultHeaderComponent, decorators: [{
88
- type: Component,
89
- args: [{
90
- selector: 'layout-default-header',
91
- template: `
92
- <ng-template #render let-ls>
93
- @for (i of ls; track $index) {
94
- <li [class.hidden-mobile]="i.hidden === 'mobile'" [class.hidden-pc]="i.hidden === 'pc'">
95
- <ng-container *ngTemplateOutlet="i.host" />
96
- </li>
97
- }
98
- </ng-template>
99
- <div class="alain-default__header-logo" [style.width.px]="opt.logoFixWidth">
100
- @if (opt.logo) {
101
- <ng-container *ngTemplateOutlet="opt.logo" />
102
- } @else {
103
- <a [routerLink]="opt.logoLink" class="alain-default__header-logo-link">
104
- <img class="alain-default__header-logo-expanded" [attr.src]="opt.logoExpanded" [attr.alt]="app.name" />
105
- <img class="alain-default__header-logo-collapsed" [attr.src]="opt.logoCollapsed" [attr.alt]="app.name" />
106
- </a>
107
- }
108
- </div>
109
- <div class="alain-default__nav-wrap">
110
- <ul class="alain-default__nav">
111
- @if (!opt.hideAside && opt.showHeaderCollapse) {
112
- <li>
113
- <div class="alain-default__nav-item alain-default__nav-item--collapse" (click)="toggleCollapsed()">
114
- <span nz-icon [nzType]="collapsedIcon"></span>
115
- </div>
116
- </li>
117
- }
118
- <ng-template [ngTemplateOutlet]="render" [ngTemplateOutletContext]="{ $implicit: left }" />
119
- </ul>
120
- @if (middle.length > 0) {
121
- <div class="alain-default__nav alain-default__nav-middle">
122
- <ng-container *ngTemplateOutlet="middle[0].host" />
123
- </div>
124
- }
125
- <ul class="alain-default__nav">
126
- <ng-template [ngTemplateOutlet]="render" [ngTemplateOutletContext]="{ $implicit: right }" />
127
- </ul>
128
- </div>
129
- `,
130
- host: {
131
- '[class.alain-default__header]': `true`
132
- },
133
- changeDetection: ChangeDetectionStrategy.OnPush
134
- }]
135
- }], propDecorators: { items: [{
136
- type: Input
137
- }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9sYXlvdXQtZGVmYXVsdC9sYXlvdXQtaGVhZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFPLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUlwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUF1RHhELE1BQU0sT0FBTyw0QkFBNEI7SUE5Q3pDO1FBK0NtQixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLFFBQUcsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuQyxRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUkvQyxTQUFJLEdBQThCLEVBQUUsQ0FBQztRQUNyQyxXQUFNLEdBQThCLEVBQUUsQ0FBQztRQUN2QyxVQUFLLEdBQThCLEVBQUUsQ0FBQztLQW1DdkM7SUFqQ0MsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFDaEMsQ0FBQztJQUVPLE9BQU87UUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0E1Q1UsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsMEpBNUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ1Q7OzJGQU1VLDRCQUE0QjtrQkE5Q3hDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNDVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osK0JBQStCLEVBQUUsTUFBTTtxQkFDeEM7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzhCQU9VLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBJbnB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBBcHAsIFNldHRpbmdzU2VydmljZSB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IExheW91dERlZmF1bHRIZWFkZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQtaGVhZGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dERlZmF1bHRTZXJ2aWNlIH0gZnJvbSAnLi9sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBMYXlvdXREZWZhdWx0SGVhZGVySXRlbURpcmVjdGlvbiwgTGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1IaWRkZW4sIExheW91dERlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmludGVyZmFjZSBMYXlvdXREZWZhdWx0SGVhZGVySXRlbSB7XG4gIGhvc3Q6IFRlbXBsYXRlUmVmPE56U2FmZUFueT47XG4gIGhpZGRlbj86IExheW91dERlZmF1bHRIZWFkZXJJdGVtSGlkZGVuO1xuICBkaXJlY3Rpb24/OiBMYXlvdXREZWZhdWx0SGVhZGVySXRlbURpcmVjdGlvbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGF5b3V0LWRlZmF1bHQtaGVhZGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI3JlbmRlciBsZXQtbHM+XG4gICAgICBAZm9yIChpIG9mIGxzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGxpIFtjbGFzcy5oaWRkZW4tbW9iaWxlXT1cImkuaGlkZGVuID09PSAnbW9iaWxlJ1wiIFtjbGFzcy5oaWRkZW4tcGNdPVwiaS5oaWRkZW4gPT09ICdwYydcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaS5ob3N0XCIgLz5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19oZWFkZXItbG9nb1wiIFtzdHlsZS53aWR0aC5weF09XCJvcHQubG9nb0ZpeFdpZHRoXCI+XG4gICAgICBAaWYgKG9wdC5sb2dvKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHQubG9nb1wiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwib3B0LmxvZ29MaW5rXCIgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19oZWFkZXItbG9nby1saW5rXCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImFsYWluLWRlZmF1bHRfX2hlYWRlci1sb2dvLWV4cGFuZGVkXCIgW2F0dHIuc3JjXT1cIm9wdC5sb2dvRXhwYW5kZWRcIiBbYXR0ci5hbHRdPVwiYXBwLm5hbWVcIiAvPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19oZWFkZXItbG9nby1jb2xsYXBzZWRcIiBbYXR0ci5zcmNdPVwib3B0LmxvZ29Db2xsYXBzZWRcIiBbYXR0ci5hbHRdPVwiYXBwLm5hbWVcIiAvPlxuICAgICAgICA8L2E+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFsYWluLWRlZmF1bHRfX25hdi13cmFwXCI+XG4gICAgICA8dWwgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19uYXZcIj5cbiAgICAgICAgQGlmICghb3B0LmhpZGVBc2lkZSAmJiBvcHQuc2hvd0hlYWRlckNvbGxhcHNlKSB7XG4gICAgICAgICAgPGxpPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsYWluLWRlZmF1bHRfX25hdi1pdGVtIGFsYWluLWRlZmF1bHRfX25hdi1pdGVtLS1jb2xsYXBzZVwiIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZWQoKVwiPlxuICAgICAgICAgICAgICA8c3BhbiBuei1pY29uIFtuelR5cGVdPVwiY29sbGFwc2VkSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlbmRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbGVmdCB9XCIgLz5cbiAgICAgIDwvdWw+XG4gICAgICBAaWYgKG1pZGRsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19uYXYgYWxhaW4tZGVmYXVsdF9fbmF2LW1pZGRsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtaWRkbGVbMF0uaG9zdFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPHVsIGNsYXNzPVwiYWxhaW4tZGVmYXVsdF9fbmF2XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJyZW5kZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJpZ2h0IH1cIiAvPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYWxhaW4tZGVmYXVsdF9faGVhZGVyXSc6IGB0cnVlYFxuICB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXREZWZhdWx0SGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3MgPSBpbmplY3QoU2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzcnYgPSBpbmplY3QoTGF5b3V0RGVmYXVsdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgQElucHV0KCkgaXRlbXMhOiBRdWVyeUxpc3Q8TGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1Db21wb25lbnQ+O1xuXG4gIGxlZnQ6IExheW91dERlZmF1bHRIZWFkZXJJdGVtW10gPSBbXTtcbiAgbWlkZGxlOiBMYXlvdXREZWZhdWx0SGVhZGVySXRlbVtdID0gW107XG4gIHJpZ2h0OiBMYXlvdXREZWZhdWx0SGVhZGVySXRlbVtdID0gW107XG5cbiAgZ2V0IG9wdCgpOiBMYXlvdXREZWZhdWx0T3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuc3J2Lm9wdGlvbnM7XG4gIH1cblxuICBnZXQgYXBwKCk6IEFwcCB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuYXBwO1xuICB9XG5cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5sYXlvdXQuY29sbGFwc2VkO1xuICB9XG5cbiAgZ2V0IGNvbGxhcHNlZEljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcnYuY29sbGFwc2VkSWNvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICBjb25zdCBhcnIgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcbiAgICB0aGlzLmxlZnQgPSBhcnIuZmlsdGVyKGkgPT4gaS5kaXJlY3Rpb24gPT09ICdsZWZ0Jyk7XG4gICAgdGhpcy5taWRkbGUgPSBhcnIuZmlsdGVyKGkgPT4gaS5kaXJlY3Rpb24gPT09ICdtaWRkbGUnKTtcbiAgICB0aGlzLnJpZ2h0ID0gYXJyLmZpbHRlcihpID0+IGkuZGlyZWN0aW9uID09PSAncmlnaHQnKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoKCkpO1xuICAgIHRoaXMuc3J2Lm9wdGlvbnMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIHRvZ2dsZUNvbGxhcHNlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNydi50b2dnbGVDb2xsYXBzZWQoKTtcbiAgfVxufVxuIl19
@@ -1,280 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Directionality } from '@angular/cdk/bidi';
3
- import { DOCUMENT } from '@angular/common';
4
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, Input, NgZone, Output, Renderer2, ViewEncapsulation, booleanAttribute, inject, numberAttribute } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { DomSanitizer } from '@angular/platform-browser';
7
- import { NavigationEnd, Router } from '@angular/router';
8
- import { filter } from 'rxjs';
9
- import { MenuService, SettingsService } from '@delon/theme';
10
- import { ZoneOutside } from '@delon/util/decorator';
11
- import { WINDOW } from '@delon/util/token';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/common";
14
- import * as i2 from "ng-zorro-antd/tooltip";
15
- import * as i3 from "ng-zorro-antd/icon";
16
- import * as i4 from "ng-zorro-antd/badge";
17
- const SHOWCLS = 'sidebar-nav__floating-show';
18
- const FLOATINGCLS = 'sidebar-nav__floating';
19
- export class LayoutDefaultNavComponent {
20
- constructor() {
21
- this.doc = inject(DOCUMENT);
22
- this.win = inject(WINDOW);
23
- this.router = inject(Router);
24
- this.render = inject(Renderer2);
25
- this.menuSrv = inject(MenuService);
26
- this.settings = inject(SettingsService);
27
- this.cdr = inject(ChangeDetectorRef);
28
- this.ngZone = inject(NgZone);
29
- this.sanitizer = inject(DomSanitizer);
30
- this.directionality = inject(Directionality);
31
- this.destroy$ = inject(DestroyRef);
32
- this.dir = 'ltr';
33
- this.list = [];
34
- this.disabledAcl = false;
35
- this.autoCloseUnderPad = true;
36
- this.recursivePath = true;
37
- this.hideEmptyChildren = true;
38
- this.maxLevelIcon = 3;
39
- this.select = new EventEmitter();
40
- }
41
- set openStrictly(value) {
42
- this.menuSrv.openStrictly = value;
43
- }
44
- get collapsed() {
45
- return this.settings.layout.collapsed;
46
- }
47
- getLinkNode(node) {
48
- node = node.nodeName === 'A' ? node : node.parentNode;
49
- return node.nodeName !== 'A' ? null : node;
50
- }
51
- floatingClickHandle(e) {
52
- e.stopPropagation();
53
- const linkNode = this.getLinkNode(e.target);
54
- if (linkNode == null) {
55
- return false;
56
- }
57
- const id = +linkNode.dataset.id;
58
- // Should be ingore children title trigger event
59
- if (isNaN(id)) {
60
- return false;
61
- }
62
- let item;
63
- this.menuSrv.visit(this.list, (i) => {
64
- if (!item && i._id === id) {
65
- item = i;
66
- }
67
- });
68
- this.to(item);
69
- this.hideAll();
70
- e.preventDefault();
71
- return false;
72
- }
73
- clearFloating() {
74
- if (!this.floatingEl)
75
- return;
76
- this.floatingEl.removeEventListener('click', this.floatingClickHandle.bind(this));
77
- // fix ie: https://github.com/ng-alain/delon/issues/52
78
- if (this.floatingEl.hasOwnProperty('remove')) {
79
- this.floatingEl.remove();
80
- }
81
- else if (this.floatingEl.parentNode) {
82
- this.floatingEl.parentNode.removeChild(this.floatingEl);
83
- }
84
- }
85
- genFloating() {
86
- this.clearFloating();
87
- this.floatingEl = this.render.createElement('div');
88
- this.floatingEl.classList.add(`${FLOATINGCLS}-container`);
89
- this.floatingEl.addEventListener('click', this.floatingClickHandle.bind(this), false);
90
- this.bodyEl.appendChild(this.floatingEl);
91
- }
92
- genSubNode(linkNode, item) {
93
- const id = `_sidebar-nav-${item._id}`;
94
- const childNode = item.badge ? linkNode.nextElementSibling.nextElementSibling : linkNode.nextElementSibling;
95
- const node = childNode.cloneNode(true);
96
- node.id = id;
97
- node.classList.add(FLOATINGCLS);
98
- node.addEventListener('mouseleave', () => {
99
- node.classList.remove(SHOWCLS);
100
- }, false);
101
- this.floatingEl.appendChild(node);
102
- return node;
103
- }
104
- hideAll() {
105
- const allNode = this.floatingEl.querySelectorAll(`.${FLOATINGCLS}`);
106
- for (let i = 0; i < allNode.length; i++) {
107
- allNode[i].classList.remove(SHOWCLS);
108
- }
109
- }
110
- // calculate the node position values.
111
- calPos(linkNode, node) {
112
- const rect = linkNode.getBoundingClientRect();
113
- // bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14721015/
114
- const scrollTop = Math.max(this.doc.documentElement.scrollTop, this.bodyEl.scrollTop);
115
- const docHeight = Math.max(this.doc.documentElement.clientHeight, this.bodyEl.clientHeight);
116
- const spacing = 5;
117
- let offsetHeight = -spacing;
118
- if (docHeight < rect.top + node.clientHeight) {
119
- offsetHeight = rect.top + node.clientHeight - docHeight + spacing;
120
- }
121
- node.style.top = `${rect.top + scrollTop - offsetHeight}px`;
122
- if (this.dir === 'rtl') {
123
- node.style.right = `${rect.width + spacing}px`;
124
- }
125
- else {
126
- node.style.left = `${rect.right + spacing}px`;
127
- }
128
- }
129
- showSubMenu(e, item) {
130
- if (this.collapsed !== true) {
131
- return;
132
- }
133
- e.preventDefault();
134
- const linkNode = e.target;
135
- this.genFloating();
136
- const subNode = this.genSubNode(linkNode, item);
137
- this.hideAll();
138
- subNode.classList.add(SHOWCLS);
139
- this.calPos(linkNode, subNode);
140
- }
141
- to(item) {
142
- this.select.emit(item);
143
- if (item.disabled)
144
- return;
145
- if (item.externalLink) {
146
- if (item.target === '_blank') {
147
- this.win.open(item.externalLink);
148
- }
149
- else {
150
- this.win.location.href = item.externalLink;
151
- }
152
- return;
153
- }
154
- this.ngZone.run(() => this.router.navigateByUrl(item.link));
155
- }
156
- toggleOpen(item) {
157
- this.menuSrv.toggleOpen(item);
158
- }
159
- _click() {
160
- if (this.isPad && this.collapsed) {
161
- this.openAside(false);
162
- this.hideAll();
163
- }
164
- }
165
- closeSubMenu() {
166
- if (this.collapsed) {
167
- this.hideAll();
168
- }
169
- }
170
- openByUrl(url) {
171
- const { menuSrv, recursivePath } = this;
172
- this.menuSrv.open(menuSrv.find({ url, recursive: recursivePath }));
173
- }
174
- ngOnInit() {
175
- const { doc, router, menuSrv, settings, cdr } = this;
176
- this.bodyEl = doc.querySelector('body');
177
- menuSrv.change.pipe(takeUntilDestroyed(this.destroy$)).subscribe(data => {
178
- menuSrv.visit(data, (i, _p, depth) => {
179
- i._text = this.sanitizer.bypassSecurityTrustHtml(i.text);
180
- i._needIcon = depth <= this.maxLevelIcon && !!i.icon;
181
- if (!i._aclResult) {
182
- if (this.disabledAcl) {
183
- i.disabled = true;
184
- }
185
- else {
186
- i._hidden = true;
187
- }
188
- }
189
- const icon = i.icon;
190
- if (icon && icon.type === 'svg' && typeof icon.value === 'string') {
191
- icon.value = this.sanitizer.bypassSecurityTrustHtml(icon.value);
192
- }
193
- });
194
- if (this.hideEmptyChildren)
195
- this.fixHide(data);
196
- this.list = data.filter((w) => w._hidden !== true);
197
- cdr.detectChanges();
198
- });
199
- router.events.pipe(takeUntilDestroyed(this.destroy$)).subscribe(e => {
200
- if (e instanceof NavigationEnd) {
201
- this.openByUrl(e.urlAfterRedirects);
202
- this.underPad();
203
- this.cdr.detectChanges();
204
- }
205
- });
206
- settings.notify
207
- .pipe(takeUntilDestroyed(this.destroy$), filter(t => t.type === 'layout' && t.name === 'collapsed'))
208
- .subscribe(() => this.clearFloating());
209
- this.underPad();
210
- this.dir = this.directionality.value;
211
- this.directionality.change.pipe(takeUntilDestroyed(this.destroy$)).subscribe(direction => {
212
- this.dir = direction;
213
- this.cdr.detectChanges();
214
- });
215
- this.openByUrl(router.url);
216
- this.ngZone.runOutsideAngular(() => this.genFloating());
217
- }
218
- fixHide(ls) {
219
- const inFn = (list) => {
220
- for (const item of list) {
221
- if (item.children && item.children.length > 0) {
222
- inFn(item.children);
223
- if (!item._hidden) {
224
- item._hidden = item.children.every((v) => v._hidden);
225
- }
226
- }
227
- }
228
- };
229
- inFn(ls);
230
- }
231
- ngOnDestroy() {
232
- this.clearFloating();
233
- }
234
- // #region Under pad
235
- get isPad() {
236
- return this.doc.defaultView.innerWidth < 768;
237
- }
238
- underPad() {
239
- if (this.autoCloseUnderPad && this.isPad && !this.collapsed) {
240
- setTimeout(() => this.openAside(true));
241
- }
242
- }
243
- openAside(status) {
244
- this.settings.setLayout('collapsed', status);
245
- }
246
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
247
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: LayoutDefaultNavComponent, selector: "layout-default-nav", inputs: { disabledAcl: ["disabledAcl", "disabledAcl", booleanAttribute], autoCloseUnderPad: ["autoCloseUnderPad", "autoCloseUnderPad", booleanAttribute], recursivePath: ["recursivePath", "recursivePath", booleanAttribute], hideEmptyChildren: ["hideEmptyChildren", "hideEmptyChildren", booleanAttribute], openStrictly: ["openStrictly", "openStrictly", booleanAttribute], maxLevelIcon: ["maxLevelIcon", "maxLevelIcon", numberAttribute] }, outputs: { select: "select" }, host: { listeners: { "click": "_click()", "document:click": "closeSubMenu()" }, properties: { "class.d-block": "true" } }, ngImport: i0, template: "<ng-template #icon let-i>\n @if (i) {\n @switch (i.type) {\n @case ('icon') {\n <i\n class=\"sidebar-nav__item-icon\"\n nz-icon\n [nzType]=\"i.value\"\n [nzTheme]=\"i.theme\"\n [nzSpin]=\"i.spin\"\n [nzTwotoneColor]=\"i.twoToneColor\"\n [nzIconfont]=\"i.iconfont\"\n [nzRotate]=\"i.rotate\"\n ></i>\n }\n @case ('iconfont') {\n <i class=\"sidebar-nav__item-icon\" nz-icon [nzIconfont]=\"i.iconfont\"></i>\n }\n @case ('img') {\n <img [src]=\"i.value\" class=\"sidebar-nav__item-icon sidebar-nav__item-img\" />\n }\n @case ('svg') {\n <span class=\"sidebar-nav__item-icon sidebar-nav__item-svg\" [innerHTML]=\"i.value\"></span>\n }\n @default {\n <i class=\"sidebar-nav__item-icon {{ i.value }}\"></i>\n }\n }\n }\n</ng-template>\n<ng-template #tree let-ls>\n @for (i of ls; track $index) {\n @if (i._hidden !== true) {\n <li class=\"sidebar-nav__item\" [class.sidebar-nav__selected]=\"i._selected\" [class.sidebar-nav__open]=\"i.open\">\n <!-- link -->\n @if (i.children.length === 0) {\n <a\n (click)=\"to(i)\"\n [attr.data-id]=\"i._id\"\n class=\"sidebar-nav__item-link\"\n [ngClass]=\"{ 'sidebar-nav__item-disabled': i.disabled }\"\n (mouseenter)=\"closeSubMenu()\"\n >\n @if (i._needIcon) {\n @if (collapsed) {\n <span nz-tooltip nzTooltipPlacement=\"right\" [nzTooltipTitle]=\"i.text\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\" />\n </span>\n } @else {\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\" />\n }\n }\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n </a>\n }\n <!-- has children link -->\n @if (i.children.length > 0) {\n <a (click)=\"toggleOpen(i)\" (mouseenter)=\"showSubMenu($event, i)\" class=\"sidebar-nav__item-link\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\" />\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n <i class=\"sidebar-nav__sub-arrow\"></i>\n </a>\n }\n <!-- badge -->\n @if (i.badge) {\n <nz-badge [nzCount]=\"i.badge\" [nzDot]=\"i.badgeDot\" nzStandalone [nzOverflowCount]=\"9\" />\n }\n @if (i.children.length > 0) {\n <ul class=\"sidebar-nav sidebar-nav__sub sidebar-nav__depth{{ i._depth }}\">\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: i.children }\" />\n </ul>\n }\n </li>\n }\n }\n</ng-template>\n<ul class=\"sidebar-nav\">\n @for (group of list; track $index) {\n @if (group.group) {\n <li class=\"sidebar-nav__item sidebar-nav__group-title\">\n <span [innerHTML]=\"group._text\"></span>\n </li>\n }\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: group.children }\" />\n }\n</ul>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i4.NzBadgeComponent, selector: "nz-badge", inputs: ["nzShowZero", "nzShowDot", "nzStandalone", "nzDot", "nzOverflowCount", "nzColor", "nzStyle", "nzText", "nzTitle", "nzStatus", "nzCount", "nzOffset", "nzSize"], exportAs: ["nzBadge"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
248
- }
249
- __decorate([
250
- ZoneOutside()
251
- ], LayoutDefaultNavComponent.prototype, "showSubMenu", null);
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultNavComponent, decorators: [{
253
- type: Component,
254
- args: [{ selector: 'layout-default-nav', host: {
255
- '(click)': '_click()',
256
- '(document:click)': 'closeSubMenu()',
257
- '[class.d-block]': `true`
258
- }, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template #icon let-i>\n @if (i) {\n @switch (i.type) {\n @case ('icon') {\n <i\n class=\"sidebar-nav__item-icon\"\n nz-icon\n [nzType]=\"i.value\"\n [nzTheme]=\"i.theme\"\n [nzSpin]=\"i.spin\"\n [nzTwotoneColor]=\"i.twoToneColor\"\n [nzIconfont]=\"i.iconfont\"\n [nzRotate]=\"i.rotate\"\n ></i>\n }\n @case ('iconfont') {\n <i class=\"sidebar-nav__item-icon\" nz-icon [nzIconfont]=\"i.iconfont\"></i>\n }\n @case ('img') {\n <img [src]=\"i.value\" class=\"sidebar-nav__item-icon sidebar-nav__item-img\" />\n }\n @case ('svg') {\n <span class=\"sidebar-nav__item-icon sidebar-nav__item-svg\" [innerHTML]=\"i.value\"></span>\n }\n @default {\n <i class=\"sidebar-nav__item-icon {{ i.value }}\"></i>\n }\n }\n }\n</ng-template>\n<ng-template #tree let-ls>\n @for (i of ls; track $index) {\n @if (i._hidden !== true) {\n <li class=\"sidebar-nav__item\" [class.sidebar-nav__selected]=\"i._selected\" [class.sidebar-nav__open]=\"i.open\">\n <!-- link -->\n @if (i.children.length === 0) {\n <a\n (click)=\"to(i)\"\n [attr.data-id]=\"i._id\"\n class=\"sidebar-nav__item-link\"\n [ngClass]=\"{ 'sidebar-nav__item-disabled': i.disabled }\"\n (mouseenter)=\"closeSubMenu()\"\n >\n @if (i._needIcon) {\n @if (collapsed) {\n <span nz-tooltip nzTooltipPlacement=\"right\" [nzTooltipTitle]=\"i.text\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\" />\n </span>\n } @else {\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\" />\n }\n }\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n </a>\n }\n <!-- has children link -->\n @if (i.children.length > 0) {\n <a (click)=\"toggleOpen(i)\" (mouseenter)=\"showSubMenu($event, i)\" class=\"sidebar-nav__item-link\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\" />\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n <i class=\"sidebar-nav__sub-arrow\"></i>\n </a>\n }\n <!-- badge -->\n @if (i.badge) {\n <nz-badge [nzCount]=\"i.badge\" [nzDot]=\"i.badgeDot\" nzStandalone [nzOverflowCount]=\"9\" />\n }\n @if (i.children.length > 0) {\n <ul class=\"sidebar-nav sidebar-nav__sub sidebar-nav__depth{{ i._depth }}\">\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: i.children }\" />\n </ul>\n }\n </li>\n }\n }\n</ng-template>\n<ul class=\"sidebar-nav\">\n @for (group of list; track $index) {\n @if (group.group) {\n <li class=\"sidebar-nav__item sidebar-nav__group-title\">\n <span [innerHTML]=\"group._text\"></span>\n </li>\n }\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: group.children }\" />\n }\n</ul>\n" }]
259
- }], propDecorators: { disabledAcl: [{
260
- type: Input,
261
- args: [{ transform: booleanAttribute }]
262
- }], autoCloseUnderPad: [{
263
- type: Input,
264
- args: [{ transform: booleanAttribute }]
265
- }], recursivePath: [{
266
- type: Input,
267
- args: [{ transform: booleanAttribute }]
268
- }], hideEmptyChildren: [{
269
- type: Input,
270
- args: [{ transform: booleanAttribute }]
271
- }], openStrictly: [{
272
- type: Input,
273
- args: [{ transform: booleanAttribute }]
274
- }], maxLevelIcon: [{
275
- type: Input,
276
- args: [{ transform: numberAttribute }]
277
- }], select: [{
278
- type: Output
279
- }], showSubMenu: [] } });
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9sYXlvdXQtZGVmYXVsdC9sYXlvdXQtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL2xheW91dC1kZWZhdWx0L2xheW91dC1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBYSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLGVBQWUsRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQTZCLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBTzNDLE1BQU0sT0FBTyxHQUFHLDRCQUE0QixDQUFDO0FBQzdDLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDO0FBYzVDLE1B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QWlCLENBQUMsSUFBSTs4QkFvQkcsV0FBVztzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxpQkFBaUI7c0JBQXhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsYUFBYTtzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxpQkFBaUI7c0JBQXhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRWxDLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJQyxZQUFZO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDbEIsTUFBTTtzQkFBeEIsTUFBTTtnQkFrR1AsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWVudSwgTWVudUljb24sIE1lbnVJbm5lciwgTWVudVNlcnZpY2UsIFNldHRpbmdzU2VydmljZSB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBab25lT3V0c2lkZSB9IGZyb20gJ0BkZWxvbi91dGlsL2RlY29yYXRvcic7XG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICdAZGVsb24vdXRpbC90b2tlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2IGV4dGVuZHMgTWVudUlubmVyIHtcbiAgX25lZWRJY29uPzogYm9vbGVhbjtcbiAgX3RleHQ/OiBTYWZlSHRtbDtcbn1cblxuY29uc3QgU0hPV0NMUyA9ICdzaWRlYmFyLW5hdl9fZmxvYXRpbmctc2hvdyc7XG5jb25zdCBGTE9BVElOR0NMUyA9ICdzaWRlYmFyLW5hdl9fZmxvYXRpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsYXlvdXQtZGVmYXVsdC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICAnKGNsaWNrKSc6ICdfY2xpY2soKScsXG4gICAgJyhkb2N1bWVudDpjbGljayknOiAnY2xvc2VTdWJNZW51KCknLFxuICAgICdbY2xhc3MuZC1ibG9ja10nOiBgdHJ1ZWBcbiAgfSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIExheW91dERlZmF1bHROYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aW4gPSBpbmplY3QoV0lORE9XKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZW5kZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZW51U3J2ID0gaW5qZWN0KE1lbnVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5ncyA9IGluamVjdChTZXR0aW5nc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0aW9uYWxpdHkgPSBpbmplY3QoRGlyZWN0aW9uYWxpdHkpO1xuXG4gIHByaXZhdGUgYm9keUVsITogSFRNTEJvZHlFbGVtZW50O1xuICBwcml2YXRlIGRlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIGZsb2F0aW5nRWwhOiBIVE1MRGl2RWxlbWVudDtcbiAgZGlyPzogRGlyZWN0aW9uID0gJ2x0cic7XG4gIGxpc3Q6IE5hdltdID0gW107XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkQWNsID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvQ2xvc2VVbmRlclBhZCA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWN1cnNpdmVQYXRoID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhpZGVFbXB0eUNoaWxkcmVuID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNldCBvcGVuU3RyaWN0bHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1lbnVTcnYub3BlblN0cmljdGx5ID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4TGV2ZWxJY29uID0gMztcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudT4oKTtcblxuICBnZXQgY29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmxheW91dC5jb2xsYXBzZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmtOb2RlKG5vZGU6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBub2RlID0gbm9kZS5ub2RlTmFtZSA9PT0gJ0EnID8gbm9kZSA6IChub2RlLnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpO1xuICAgIHJldHVybiBub2RlLm5vZGVOYW1lICE9PSAnQScgPyBudWxsIDogbm9kZTtcbiAgfVxuXG4gIHByaXZhdGUgZmxvYXRpbmdDbGlja0hhbmRsZShlOiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBsaW5rTm9kZSA9IHRoaXMuZ2V0TGlua05vZGUoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIGlmIChsaW5rTm9kZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gK2xpbmtOb2RlLmRhdGFzZXQhLmlkITtcbiAgICAvLyBTaG91bGQgYmUgaW5nb3JlIGNoaWxkcmVuIHRpdGxlIHRyaWdnZXIgZXZlbnRcbiAgICBpZiAoaXNOYU4oaWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IGl0ZW06IE5hdjtcbiAgICB0aGlzLm1lbnVTcnYudmlzaXQodGhpcy5saXN0LCAoaTogTmF2KSA9PiB7XG4gICAgICBpZiAoIWl0ZW0gJiYgaS5faWQgPT09IGlkKSB7XG4gICAgICAgIGl0ZW0gPSBpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudG8oaXRlbSEpO1xuICAgIHRoaXMuaGlkZUFsbCgpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRmxvYXRpbmcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZsb2F0aW5nRWwpIHJldHVybjtcbiAgICB0aGlzLmZsb2F0aW5nRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmZsb2F0aW5nQ2xpY2tIYW5kbGUuYmluZCh0aGlzKSk7XG4gICAgLy8gZml4IGllOiBodHRwczovL2dpdGh1Yi5jb20vbmctYWxhaW4vZGVsb24vaXNzdWVzLzUyXG4gICAgaWYgKHRoaXMuZmxvYXRpbmdFbC5oYXNPd25Qcm9wZXJ0eSgncmVtb3ZlJykpIHtcbiAgICAgIHRoaXMuZmxvYXRpbmdFbC5yZW1vdmUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmxvYXRpbmdFbC5wYXJlbnROb2RlKSB7XG4gICAgICB0aGlzLmZsb2F0aW5nRWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmZsb2F0aW5nRWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuRmxvYXRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckZsb2F0aW5nKCk7XG4gICAgdGhpcy5mbG9hdGluZ0VsID0gdGhpcy5yZW5kZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5mbG9hdGluZ0VsLmNsYXNzTGlzdC5hZGQoYCR7RkxPQVRJTkdDTFN9LWNvbnRhaW5lcmApO1xuICAgIHRoaXMuZmxvYXRpbmdFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZmxvYXRpbmdDbGlja0hhbmRsZS5iaW5kKHRoaXMpLCBmYWxzZSk7XG4gICAgdGhpcy5ib2R5RWwuYXBwZW5kQ2hpbGQodGhpcy5mbG9hdGluZ0VsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuU3ViTm9kZShsaW5rTm9kZTogSFRNTExpbmtFbGVtZW50LCBpdGVtOiBOYXYpOiBIVE1MVUxpc3RFbGVtZW50IHtcbiAgICBjb25zdCBpZCA9IGBfc2lkZWJhci1uYXYtJHtpdGVtLl9pZH1gO1xuICAgIGNvbnN0IGNoaWxkTm9kZSA9IGl0ZW0uYmFkZ2UgPyBsaW5rTm9kZS5uZXh0RWxlbWVudFNpYmxpbmchLm5leHRFbGVtZW50U2libGluZyEgOiBsaW5rTm9kZS5uZXh0RWxlbWVudFNpYmxpbmchO1xuICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGUuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XG4gICAgbm9kZS5pZCA9IGlkO1xuICAgIG5vZGUuY2xhc3NMaXN0LmFkZChGTE9BVElOR0NMUyk7XG4gICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ21vdXNlbGVhdmUnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBub2RlLmNsYXNzTGlzdC5yZW1vdmUoU0hPV0NMUyk7XG4gICAgICB9LFxuICAgICAgZmFsc2VcbiAgICApO1xuICAgIHRoaXMuZmxvYXRpbmdFbC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZUFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxOb2RlID0gdGhpcy5mbG9hdGluZ0VsLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke0ZMT0FUSU5HQ0xTfWApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsTm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgYWxsTm9kZVtpXS5jbGFzc0xpc3QucmVtb3ZlKFNIT1dDTFMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNhbGN1bGF0ZSB0aGUgbm9kZSBwb3NpdGlvbiB2YWx1ZXMuXG4gIHByaXZhdGUgY2FsUG9zKGxpbmtOb2RlOiBIVE1MTGlua0VsZW1lbnQsIG5vZGU6IEhUTUxVTGlzdEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZWN0ID0gbGlua05vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgLy8gYnVnOiBodHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lzc3Vlcy8xNDcyMTAxNS9cbiAgICBjb25zdCBzY3JvbGxUb3AgPSBNYXRoLm1heCh0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLCB0aGlzLmJvZHlFbC5zY3JvbGxUb3ApO1xuICAgIGNvbnN0IGRvY0hlaWdodCA9IE1hdGgubWF4KHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsIHRoaXMuYm9keUVsLmNsaWVudEhlaWdodCk7XG4gICAgY29uc3Qgc3BhY2luZyA9IDU7XG4gICAgbGV0IG9mZnNldEhlaWdodCA9IC1zcGFjaW5nO1xuICAgIGlmIChkb2NIZWlnaHQgPCByZWN0LnRvcCArIG5vZGUuY2xpZW50SGVpZ2h0KSB7XG4gICAgICBvZmZzZXRIZWlnaHQgPSByZWN0LnRvcCArIG5vZGUuY2xpZW50SGVpZ2h0IC0gZG9jSGVpZ2h0ICsgc3BhY2luZztcbiAgICB9XG4gICAgbm9kZS5zdHlsZS50b3AgPSBgJHtyZWN0LnRvcCArIHNjcm9sbFRvcCAtIG9mZnNldEhlaWdodH1weGA7XG4gICAgaWYgKHRoaXMuZGlyID09PSAncnRsJykge1xuICAgICAgbm9kZS5zdHlsZS5yaWdodCA9IGAke3JlY3Qud2lkdGggKyBzcGFjaW5nfXB4YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zdHlsZS5sZWZ0ID0gYCR7cmVjdC5yaWdodCArIHNwYWNpbmd9cHhgO1xuICAgIH1cbiAgfVxuXG4gIEBab25lT3V0c2lkZSgpXG4gIHNob3dTdWJNZW51KGU6IE1vdXNlRXZlbnQsIGl0ZW06IE5hdik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbGxhcHNlZCAhPT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgbGlua05vZGUgPSBlLnRhcmdldCBhcyBFbGVtZW50O1xuICAgIHRoaXMuZ2VuRmxvYXRpbmcoKTtcbiAgICBjb25zdCBzdWJOb2RlID0gdGhpcy5nZW5TdWJOb2RlKGxpbmtOb2RlIGFzIEhUTUxMaW5rRWxlbWVudCwgaXRlbSk7XG4gICAgdGhpcy5oaWRlQWxsKCk7XG4gICAgc3ViTm9kZS5jbGFzc0xpc3QuYWRkKFNIT1dDTFMpO1xuICAgIHRoaXMuY2FsUG9zKGxpbmtOb2RlIGFzIEhUTUxMaW5rRWxlbWVudCwgc3ViTm9kZSk7XG4gIH1cblxuICB0byhpdGVtOiBNZW51KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChpdGVtKTtcbiAgICBpZiAoaXRlbS5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgaWYgKGl0ZW0uZXh0ZXJuYWxMaW5rKSB7XG4gICAgICBpZiAoaXRlbS50YXJnZXQgPT09ICdfYmxhbmsnKSB7XG4gICAgICAgIHRoaXMud2luLm9wZW4oaXRlbS5leHRlcm5hbExpbmspO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53aW4ubG9jYXRpb24uaHJlZiA9IGl0ZW0uZXh0ZXJuYWxMaW5rO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChpdGVtLmxpbmshKSk7XG4gIH1cblxuICB0b2dnbGVPcGVuKGl0ZW06IE5hdik6IHZvaWQge1xuICAgIHRoaXMubWVudVNydi50b2dnbGVPcGVuKGl0ZW0pO1xuICB9XG5cbiAgX2NsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUGFkICYmIHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICB0aGlzLm9wZW5Bc2lkZShmYWxzZSk7XG4gICAgICB0aGlzLmhpZGVBbGwoKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZVN1Yk1lbnUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICB0aGlzLmhpZGVBbGwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5CeVVybCh1cmw6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCB7IG1lbnVTcnYsIHJlY3Vyc2l2ZVBhdGggfSA9IHRoaXM7XG4gICAgdGhpcy5tZW51U3J2Lm9wZW4obWVudVNydi5maW5kKHsgdXJsLCByZWN1cnNpdmU6IHJlY3Vyc2l2ZVBhdGggfSkpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBkb2MsIHJvdXRlciwgbWVudVNydiwgc2V0dGluZ3MsIGNkciB9ID0gdGhpcztcbiAgICB0aGlzLmJvZHlFbCA9IGRvYy5xdWVyeVNlbGVjdG9yPEhUTUxCb2R5RWxlbWVudD4oJ2JvZHknKSE7XG4gICAgbWVudVNydi5jaGFuZ2UucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIG1lbnVTcnYudmlzaXQoZGF0YSwgKGk6IE5hdiwgX3AsIGRlcHRoKSA9PiB7XG4gICAgICAgIGkuX3RleHQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpLnRleHQhKTtcbiAgICAgICAgaS5fbmVlZEljb24gPSBkZXB0aCEgPD0gdGhpcy5tYXhMZXZlbEljb24gJiYgISFpLmljb247XG4gICAgICAgIGlmICghaS5fYWNsUmVzdWx0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRBY2wpIHtcbiAgICAgICAgICAgIGkuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpLl9oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpY29uID0gaS5pY29uIGFzIE1lbnVJY29uO1xuICAgICAgICBpZiAoaWNvbiAmJiBpY29uLnR5cGUgPT09ICdzdmcnICYmIHR5cGVvZiBpY29uLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGljb24udmFsdWUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpY29uLnZhbHVlISEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLmhpZGVFbXB0eUNoaWxkcmVuKSB0aGlzLmZpeEhpZGUoZGF0YSk7XG4gICAgICB0aGlzLmxpc3QgPSBkYXRhLmZpbHRlcigodzogTmF2KSA9PiB3Ll9oaWRkZW4gIT09IHRydWUpO1xuICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgICByb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy5vcGVuQnlVcmwoZS51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgIHRoaXMudW5kZXJQYWQoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldHRpbmdzLm5vdGlmeVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKHQgPT4gdC50eXBlID09PSAnbGF5b3V0JyAmJiB0Lm5hbWUgPT09ICdjb2xsYXBzZWQnKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsZWFyRmxvYXRpbmcoKSk7XG4gICAgdGhpcy51bmRlclBhZCgpO1xuXG4gICAgdGhpcy5kaXIgPSB0aGlzLmRpcmVjdGlvbmFsaXR5LnZhbHVlO1xuICAgIHRoaXMuZGlyZWN0aW9uYWxpdHkuY2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoZGlyZWN0aW9uID0+IHtcbiAgICAgIHRoaXMuZGlyID0gZGlyZWN0aW9uO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHRoaXMub3BlbkJ5VXJsKHJvdXRlci51cmwpO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZ2VuRmxvYXRpbmcoKSk7XG4gIH1cblxuICBwcml2YXRlIGZpeEhpZGUobHM6IE5hdltdKTogdm9pZCB7XG4gICAgY29uc3QgaW5GbiA9IChsaXN0OiBOYXZbXSk6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaW5GbihpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICBpZiAoIWl0ZW0uX2hpZGRlbikge1xuICAgICAgICAgICAgaXRlbS5faGlkZGVuID0gaXRlbS5jaGlsZHJlbi5ldmVyeSgodjogTmF2KSA9PiB2Ll9oaWRkZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpbkZuKGxzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJGbG9hdGluZygpO1xuICB9XG5cbiAgLy8gI3JlZ2lvbiBVbmRlciBwYWRcblxuICBwcml2YXRlIGdldCBpc1BhZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kb2MuZGVmYXVsdFZpZXchLmlubmVyV2lkdGggPCA3Njg7XG4gIH1cblxuICBwcml2YXRlIHVuZGVyUGFkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9DbG9zZVVuZGVyUGFkICYmIHRoaXMuaXNQYWQgJiYgIXRoaXMuY29sbGFwc2VkKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbkFzaWRlKHRydWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5Bc2lkZShzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNldHRpbmdzLnNldExheW91dCgnY29sbGFwc2VkJywgc3RhdHVzKTtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb25cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjaWNvbiBsZXQtaT5cbiAgQGlmIChpKSB7XG4gICAgQHN3aXRjaCAoaS50eXBlKSB7XG4gICAgICBAY2FzZSAoJ2ljb24nKSB7XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uXCJcbiAgICAgICAgICBuei1pY29uXG4gICAgICAgICAgW256VHlwZV09XCJpLnZhbHVlXCJcbiAgICAgICAgICBbbnpUaGVtZV09XCJpLnRoZW1lXCJcbiAgICAgICAgICBbbnpTcGluXT1cImkuc3BpblwiXG4gICAgICAgICAgW256VHdvdG9uZUNvbG9yXT1cImkudHdvVG9uZUNvbG9yXCJcbiAgICAgICAgICBbbnpJY29uZm9udF09XCJpLmljb25mb250XCJcbiAgICAgICAgICBbbnpSb3RhdGVdPVwiaS5yb3RhdGVcIlxuICAgICAgICA+PC9pPlxuICAgICAgfVxuICAgICAgQGNhc2UgKCdpY29uZm9udCcpIHtcbiAgICAgICAgPGkgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uXCIgbnotaWNvbiBbbnpJY29uZm9udF09XCJpLmljb25mb250XCI+PC9pPlxuICAgICAgfVxuICAgICAgQGNhc2UgKCdpbWcnKSB7XG4gICAgICAgIDxpbWcgW3NyY109XCJpLnZhbHVlXCIgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uIHNpZGViYXItbmF2X19pdGVtLWltZ1wiIC8+XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ3N2ZycpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uIHNpZGViYXItbmF2X19pdGVtLXN2Z1wiIFtpbm5lckhUTUxdPVwiaS52YWx1ZVwiPjwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgPGkgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uIHt7IGkudmFsdWUgfX1cIj48L2k+XG4gICAgICB9XG4gICAgfVxuICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN0cmVlIGxldC1scz5cbiAgQGZvciAoaSBvZiBsczsgdHJhY2sgJGluZGV4KSB7XG4gICAgQGlmIChpLl9oaWRkZW4gIT09IHRydWUpIHtcbiAgICAgIDxsaSBjbGFzcz1cInNpZGViYXItbmF2X19pdGVtXCIgW2NsYXNzLnNpZGViYXItbmF2X19zZWxlY3RlZF09XCJpLl9zZWxlY3RlZFwiIFtjbGFzcy5zaWRlYmFyLW5hdl9fb3Blbl09XCJpLm9wZW5cIj5cbiAgICAgICAgPCEtLSBsaW5rIC0tPlxuICAgICAgICBAaWYgKGkuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIChjbGljayk9XCJ0byhpKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cImkuX2lkXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1uYXZfX2l0ZW0tbGlua1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzaWRlYmFyLW5hdl9faXRlbS1kaXNhYmxlZCc6IGkuZGlzYWJsZWQgfVwiXG4gICAgICAgICAgICAobW91c2VlbnRlcik9XCJjbG9zZVN1Yk1lbnUoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpLl9uZWVkSWNvbikge1xuICAgICAgICAgICAgICBAaWYgKGNvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgIDxzcGFuIG56LXRvb2x0aXAgbnpUb29sdGlwUGxhY2VtZW50PVwicmlnaHRcIiBbbnpUb29sdGlwVGl0bGVdPVwiaS50ZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaWNvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaS5pY29uIH1cIiAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGkuaWNvbiB9XCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJpLl90ZXh0XCIgW2F0dHIudGl0bGVdPVwiaS50ZXh0XCI+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIGhhcyBjaGlsZHJlbiBsaW5rIC0tPlxuICAgICAgICBAaWYgKGkuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxhIChjbGljayk9XCJ0b2dnbGVPcGVuKGkpXCIgKG1vdXNlZW50ZXIpPVwic2hvd1N1Yk1lbnUoJGV2ZW50LCBpKVwiIGNsYXNzPVwic2lkZWJhci1uYXZfX2l0ZW0tbGlua1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGkuaWNvbiB9XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2lkZWJhci1uYXZfX2l0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaS5fdGV4dFwiIFthdHRyLnRpdGxlXT1cImkudGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwic2lkZWJhci1uYXZfX3N1Yi1hcnJvd1wiPjwvaT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBiYWRnZSAtLT5cbiAgICAgICAgQGlmIChpLmJhZGdlKSB7XG4gICAgICAgICAgPG56LWJhZGdlIFtuekNvdW50XT1cImkuYmFkZ2VcIiBbbnpEb3RdPVwiaS5iYWRnZURvdFwiIG56U3RhbmRhbG9uZSBbbnpPdmVyZmxvd0NvdW50XT1cIjlcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgPHVsIGNsYXNzPVwic2lkZWJhci1uYXYgc2lkZWJhci1uYXZfX3N1YiBzaWRlYmFyLW5hdl9fZGVwdGh7eyBpLl9kZXB0aCB9fVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGkuY2hpbGRyZW4gfVwiIC8+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgfVxuICAgICAgPC9saT5cbiAgICB9XG4gIH1cbjwvbmctdGVtcGxhdGU+XG48dWwgY2xhc3M9XCJzaWRlYmFyLW5hdlwiPlxuICBAZm9yIChncm91cCBvZiBsaXN0OyB0cmFjayAkaW5kZXgpIHtcbiAgICBAaWYgKGdyb3VwLmdyb3VwKSB7XG4gICAgICA8bGkgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbSBzaWRlYmFyLW5hdl9fZ3JvdXAtdGl0bGVcIj5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJncm91cC5fdGV4dFwiPjwvc3Bhbj5cbiAgICAgIDwvbGk+XG4gICAgfVxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBncm91cC5jaGlsZHJlbiB9XCIgLz5cbiAgfVxuPC91bD5cbiJdfQ==
@@ -1,33 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, booleanAttribute } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class LayoutDefaultTopMenuItemComponent {
4
- constructor() {
5
- this.selected = false;
6
- this.disabled = false;
7
- }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultTopMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.7", type: LayoutDefaultTopMenuItemComponent, selector: "layout-default-top-menu-item", inputs: { selected: ["selected", "selected", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, host: { properties: { "class.alain-default__nav-item": "true", "class.alain-default__top-menu-item": "true", "class.alain-default__top-menu-item-selected": "selected", "class.alain-default__top-menu-item-disabled": "disabled" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LayoutDefaultTopMenuItemComponent, decorators: [{
12
- type: Component,
13
- args: [{
14
- selector: 'layout-default-top-menu-item',
15
- template: `<ng-content />`,
16
- host: {
17
- '[class.alain-default__nav-item]': `true`,
18
- '[class.alain-default__top-menu-item]': `true`,
19
- '[class.alain-default__top-menu-item-selected]': `selected`,
20
- '[class.alain-default__top-menu-item-disabled]': `disabled`
21
- },
22
- preserveWhitespaces: false,
23
- changeDetection: ChangeDetectionStrategy.OnPush,
24
- encapsulation: ViewEncapsulation.None
25
- }]
26
- }], propDecorators: { selected: [{
27
- type: Input,
28
- args: [{ transform: booleanAttribute }]
29
- }], disabled: [{
30
- type: Input,
31
- args: [{ transform: booleanAttribute }]
32
- }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXRvcC1tZW51LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9sYXlvdXQtZGVmYXVsdC9sYXlvdXQtdG9wLW1lbnUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFlL0csTUFBTSxPQUFPLGlDQUFpQztJQWI5QztRQWMwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7S0FDMUQ7OEdBSFksaUNBQWlDO2tHQUFqQyxpQ0FBaUMseUZBQ3hCLGdCQUFnQixzQ0FDaEIsZ0JBQWdCLG9RQWIxQixnQkFBZ0I7OzJGQVdmLGlDQUFpQztrQkFiN0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixJQUFJLEVBQUU7d0JBQ0osaUNBQWlDLEVBQUUsTUFBTTt3QkFDekMsc0NBQXNDLEVBQUUsTUFBTTt3QkFDOUMsK0NBQStDLEVBQUUsVUFBVTt3QkFDM0QsK0NBQStDLEVBQUUsVUFBVTtxQkFDNUQ7b0JBQ0QsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0Qzs4QkFFeUMsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xheW91dC1kZWZhdWx0LXRvcC1tZW51LWl0ZW0nLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50IC8+YCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYWxhaW4tZGVmYXVsdF9fbmF2LWl0ZW1dJzogYHRydWVgLFxuICAgICdbY2xhc3MuYWxhaW4tZGVmYXVsdF9fdG9wLW1lbnUtaXRlbV0nOiBgdHJ1ZWAsXG4gICAgJ1tjbGFzcy5hbGFpbi1kZWZhdWx0X190b3AtbWVudS1pdGVtLXNlbGVjdGVkXSc6IGBzZWxlY3RlZGAsXG4gICAgJ1tjbGFzcy5hbGFpbi1kZWZhdWx0X190b3AtbWVudS1pdGVtLWRpc2FibGVkXSc6IGBkaXNhYmxlZGBcbiAgfSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIExheW91dERlZmF1bHRUb3BNZW51SXRlbUNvbXBvbmVudCB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcbn1cbiJdfQ==