@design-factory/design-factory 16.0.0 → 16.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ import { RouterModule } from '@angular/router';
6
6
  import { DfMediaModule } from '../mediaqueries/media.module';
7
7
  import { DfSideNavCollapseModule } from './dfSideNavCollapse.module';
8
8
  import { DfManageSideNavDirective } from './manage-sidenav.directive';
9
+ import { DfTitleTruncateDirective } from '../utils/titleTruncate.directive';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@angular/common";
11
12
  import * as i2 from "@ng-bootstrap/ng-bootstrap";
@@ -31,11 +32,19 @@ export class DfSideNavListComponent {
31
32
  return `df-sidenav-id-${uniqueId};`;
32
33
  }
33
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavListComponent, isStandalone: true, selector: "df-sidenavlist", inputs: { items: "items", tplIcon: "tplIcon", tplItem: "tplItem", currentItem: "currentItem", id: "id" }, ngImport: i0, template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-truncate text-uppercase text-muted\">{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n", dependencies: [{ kind: "component", type: DfSideNavListComponent, selector: "df-sidenavlist", inputs: ["items", "tplIcon", "tplItem", "currentItem", "id"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: NgbCollapseModule }, { kind: "directive", type: i2.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: DfMediaModule }, { kind: "directive", type: i4.DfIfMediaDirective, selector: "[dfIfMedia]", inputs: ["dfIfMedia"] }, { kind: "ngmodule", type: DfSideNavCollapseModule }, { kind: "directive", type: DfManageSideNavDirective, selector: "[dfManageSideNav]" }] }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavListComponent, isStandalone: true, selector: "df-sidenavlist", inputs: { items: "items", tplIcon: "tplIcon", tplItem: "tplItem", currentItem: "currentItem", id: "id" }, ngImport: i0, template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-uppercase text-muted\" dfTitleTruncate>{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n", dependencies: [{ kind: "component", type: DfSideNavListComponent, selector: "df-sidenavlist", inputs: ["items", "tplIcon", "tplItem", "currentItem", "id"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: NgbCollapseModule }, { kind: "directive", type: i2.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: DfMediaModule }, { kind: "directive", type: i4.DfIfMediaDirective, selector: "[dfIfMedia]", inputs: ["dfIfMedia"] }, { kind: "ngmodule", type: DfSideNavCollapseModule }, { kind: "directive", type: DfManageSideNavDirective, selector: "[dfManageSideNav]" }, { kind: "directive", type: DfTitleTruncateDirective, selector: "[dfTitleTruncate]", exportAs: ["dfTitleTruncate"] }] }); }
35
36
  }
36
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavListComponent, decorators: [{
37
38
  type: Component,
38
- args: [{ selector: 'df-sidenavlist', standalone: true, imports: [CommonModule, NgbCollapseModule, RouterModule, DfMediaModule, DfSideNavCollapseModule, DfManageSideNavDirective], template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-truncate text-uppercase text-muted\">{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n" }]
39
+ args: [{ selector: 'df-sidenavlist', standalone: true, imports: [
40
+ CommonModule,
41
+ NgbCollapseModule,
42
+ RouterModule,
43
+ DfMediaModule,
44
+ DfSideNavCollapseModule,
45
+ DfManageSideNavDirective,
46
+ DfTitleTruncateDirective
47
+ ], template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-uppercase text-muted\" dfTitleTruncate>{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n" }]
39
48
  }], propDecorators: { items: [{
40
49
  type: Input
41
50
  }], tplIcon: [{
@@ -47,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
47
56
  }], id: [{
48
57
  type: Input
49
58
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdmxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdmxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdmxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFFdEUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRWpCOzs7Ozs7OztHQVFHO0FBT0gsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQVlFLHVCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FNM0M7SUFKQyxxQkFBcUI7UUFDbkIsUUFBUSxFQUFFLENBQUE7UUFDVixPQUFPLGlCQUFpQixRQUFRLEdBQUcsQ0FBQTtJQUNyQyxDQUFDOzhHQVpVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLG9MQzVCbkMscXhOQXlKQSw0Q0Q3SGEsc0JBQXNCLHdIQUZ2QixZQUFZLGtyQkFBRSxpQkFBaUIsd09BQUUsWUFBWSx3ZUFBRSxhQUFhLGtJQUFFLHVCQUF1QiwrQkFBRSx3QkFBd0I7OzJGQUU5RyxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBRWQsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLENBQUM7OEJBR2pILEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERmU2lkZU5hdlNlcnZpY2UgfSBmcm9tICcuL3NpZGVuYXYuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdiQ29sbGFwc2VNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGZNZWRpYU1vZHVsZSB9IGZyb20gJy4uL21lZGlhcXVlcmllcy9tZWRpYS5tb2R1bGUnO1xuaW1wb3J0IHsgRGZTaWRlTmF2Q29sbGFwc2VNb2R1bGUgfSBmcm9tICcuL2RmU2lkZU5hdkNvbGxhcHNlLm1vZHVsZSc7XG5pbXBvcnQgdHlwZSB7IERmU2lkZU5hdkl0ZW0gfSBmcm9tICcuL3NpZGVuYXYuc2VydmljZSc7XG5pbXBvcnQgeyBEZlNpZGVOYXZJY29uRGlyZWN0aXZlLCBEZlNpZGVOYXZJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9zaWRlbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZk1hbmFnZVNpZGVOYXZEaXJlY3RpdmUgfSBmcm9tICcuL21hbmFnZS1zaWRlbmF2LmRpcmVjdGl2ZSc7XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5cbi8qKlxuICogU2lkZU5hdiBpcyBhIGNvbXBvbmVudCB0byBwcm92aWRlIG5hdmlnYXRpb24gZmVhdHVyZSB3aXRoIGEgcGFuZWwgb24gdGhlIHNpZGUgb2YgeW91ciBwYWdlXG4gKlxuICogSXQgc3VwcG9ydHMgc2V2ZXJhbCBvcHRpb25zIGFzOlxuICogIC0gQmVpbmcgaW4gYW4gb3ZlcmxheSBtZW51IG9yIG5vdFxuICogIC0gQmVpbmcgY29sbGFwc2VkIG9yIG5vdFxuICogIC0gQ2FuIGJlIHVzZWQgd2l0aCBvciB3aXRob3V0IEFuZ3VsYXIgUm91dGVyXG4gKiAgLSBDYW4gYmUgdXNlZCB3aXRoIG1lZGlhIHF1ZXJpZXMgdG8gYWRqdXN0IGJlaGF2aW9yIHRvIGRpZmZlcmVudCBicmVha3BvaW50cyAoc2VlIG1lZGlhIHNlY3Rpb24pXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RmLXNpZGVuYXZsaXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGVuYXZsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdiQ29sbGFwc2VNb2R1bGUsIFJvdXRlck1vZHVsZSwgRGZNZWRpYU1vZHVsZSwgRGZTaWRlTmF2Q29sbGFwc2VNb2R1bGUsIERmTWFuYWdlU2lkZU5hdkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRGZTaWRlTmF2TGlzdENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW1zICE6IERmU2lkZU5hdkl0ZW1bXTtcbiAgQElucHV0KCkgdHBsSWNvbiAhOiBEZlNpZGVOYXZJY29uRGlyZWN0aXZlO1xuICBASW5wdXQoKSB0cGxJdGVtICE6IERmU2lkZU5hdkl0ZW1EaXJlY3RpdmU7XG4gIEBJbnB1dCgpIGN1cnJlbnRJdGVtIDogRGZTaWRlTmF2SXRlbSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaWQgOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnRyb2xsZWRVbmlxdWVJZCA9IHRoaXMuZ2V0Q29udHJvbGxlZFVuaXF1ZUlkKCk7XG4gIHNpZGVOYXZTZXJ2aWNlID0gaW5qZWN0KERmU2lkZU5hdlNlcnZpY2UpO1xuXG4gIGdldENvbnRyb2xsZWRVbmlxdWVJZCgpIDogc3RyaW5nIHsgXG4gICAgdW5pcXVlSWQrK1xuICAgIHJldHVybiBgZGYtc2lkZW5hdi1pZC0ke3VuaXF1ZUlkfTtgXG4gIH1cbn1cbiIsIjx1bCBjbGFzcz1cImRmLXNpZGVuYXYtbGlzdFwiIFtuZ2JDb2xsYXBzZV09XCJjdXJyZW50SXRlbT8uaXNDb2xsYXBzZWQgPz8gZmFsc2VcIiBbYXR0ci5pZF09XCJpZFwiPlxuICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIiBbbmdTd2l0Y2hdPVwiaXRlbS50eXBlXCIgZGZNYW5hZ2VTaWRlTmF2PlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInNpZGVOYXZTZXJ2aWNlLnR5cGUuc3ViTWVudXNcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc3ViTWVudXM+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImRmLXNpZGVuYXYtaXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwic2lkZU5hdlNlcnZpY2UudG9nZ2xlKGl0ZW0pXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIiFpdGVtLmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIidzaWRlbmF2Q29udHJvbCcgKyBjb250cm9sbGVkVW5pcXVlSWQudG9TdHJpbmcoKSArICctJyArIGlcIlxuICAgICAgICAgIFtjbGFzcy5kZi1zaWRlbmF2LWl0ZW0td2l0aGljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJ0cGxJY29uICYmIGl0ZW0uaWNvbjsgZWxzZSBlbHNlSWNvblwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxJY29uLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VJY29uPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fSBkZi1zaWRlbmF2LWljb25cIj48L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtZ3Jvdy0xIHRleHQtbm93cmFwIHRleHQtdHJ1bmNhdGVcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1zLTNcIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2hldnJvbi1kb3duXT1cIml0ZW0uaXNDb2xsYXBzZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2hldnJvbi11cF09XCIhaXRlbS5pc0NvbGxhcHNlZFwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICA8IS0tIHB1dCB0aGUgY2hldnJvbiBhcyBpY29uIGRpcmVjdGx5IGluIHRoZSBtZW51IC0tPlxuICAgICAgICAgIDwhLS0gdG9kbyB0aGUgaWNvbiBhbmQgdGhlIG1pbmltaXplZCAtLT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwhLS0gd2UgZG9uJ3QgcGFzcyB0aGUgaWNvbnMgYXMgdGhleSBhcmUgbm90IHN1cHBvc2UgdG8gaGF2ZSBvbmVzID8/LS0+XG4gICAgICAgIDxkZi1zaWRlbmF2bGlzdFxuICAgICAgICAgIFtpdGVtc109XCJpdGVtLnN1Yk1lbnVzID8/IFtdXCJcbiAgICAgICAgICBbdHBsSXRlbV09XCJ0cGxJdGVtXCJcbiAgICAgICAgICBbY3VycmVudEl0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgW2lkXT1cIidzaWRlbmF2Q29udHJvbCcgKyBjb250cm9sbGVkVW5pcXVlSWQudG9TdHJpbmcoKSArICctJyArIGlcIlxuICAgICAgICA+PC9kZi1zaWRlbmF2bGlzdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uYnJlYWtwb2ludHM7IGVsc2UgZWxzZVN1Yk1lbnVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJNZW51c1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VTdWJNZW51cz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGZJZk1lZGlhPVwiaXRlbS5icmVha3BvaW50cyFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3ViTWVudXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGZTaWRlTmF2SXRlbUNvbnRlbnQ+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgKm5nSWY9XCJ0cGxJY29uICYmIGl0ZW0uaWNvbjsgZWxzZSBlbHNlSWNvblwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRwbEljb24udGVtcGxhdGVSZWZcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUljb24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX0gZGYtc2lkZW5hdi1pY29uIG1lLTVcIj48L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4LWdyb3ctMSB0ZXh0LW5vd3JhcCB0ZXh0LXRydW5jYXRlXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInNpZGVOYXZTZXJ2aWNlLnR5cGUuYWN0aW9uQnV0dG9uXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RmU2lkZU5hdkl0ZW1CdXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImRmLXNpZGVuYXYtaXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtbm93cmFwXCJcbiAgICAgICAgICAoY2xpY2spPVwic2lkZU5hdlNlcnZpY2UuYWN0aXZlSXRlbShpdGVtKVwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmlzQWN0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZlNpZGVOYXZJdGVtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uYnJlYWtwb2ludHM7IGVsc2UgZWxzZUFjdGlvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZTaWRlTmF2SXRlbUJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VBY3Rpb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmRmSWZNZWRpYT1cIml0ZW0uYnJlYWtwb2ludHMhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRmU2lkZU5hdkl0ZW1CdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGZSb3V0ZXJUZW1wbGF0ZT5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiZGYtc2lkZW5hdi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1ub3dyYXBcIlxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgICAgcm91dGVyTGluaz1cInt7IGl0ZW0udmFsdWUgfX1cIlxuICAgICAgICBhcmlhQ3VycmVudFdoZW5BY3RpdmU9XCJwYWdlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRmU2lkZU5hdkl0ZW1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzaWRlTmF2U2VydmljZS50eXBlLnJvdXRlckxpbmtcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5icmVha3BvaW50czsgZWxzZSBlbHNlUm91dGVyTGlua1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZSb3V0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VSb3V0ZXJMaW5rPlxuICAgICAgICA8bmctY29udGFpbmVyICpkZklmTWVkaWE9XCJpdGVtLmJyZWFrcG9pbnRzIVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZlJvdXRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzaWRlTmF2U2VydmljZS50eXBlLnNlcGFyYXRvclwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZlNlcGFyYXRvclRtcD5cbiAgICAgICAgPGhyIGNsYXNzPVwic3BhY2luZy0wMVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmJyZWFrcG9pbnRzOyBlbHNlIGVsc2VTZXBhcmF0b3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRmU2VwYXJhdG9yVG1wXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVNlcGFyYXRvcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGZJZk1lZGlhPVwiaXRlbS5icmVha3BvaW50cyFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZTZXBhcmF0b3JUbXBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInNpZGVOYXZTZXJ2aWNlLnR5cGUudGVtcGxhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdJZj1cInRwbEl0ZW1cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxJdGVtLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic2lkZU5hdlNlcnZpY2UudHlwZS50aXRsZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZlRpdGxlVG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGYtc2lkZW5hdi1pdGVtIGRmLXNpZGVuYXYtdGl0bGUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ub3dyYXAgdGV4dC10cnVuY2F0ZSB0ZXh0LXVwcGVyY2FzZSB0ZXh0LW11dGVkXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmJyZWFrcG9pbnRzOyBlbHNlIGVsc2VUaXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZUaXRsZVRtcFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUaXRsZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGZJZk1lZGlhPVwiaXRlbS5icmVha3BvaW50cyFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZUaXRsZVRtcFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgPG5nLXRlbXBsYXRlICNkZkxpbmtEZWZhdWx0VG1wPlxuICAgICAgICA8YVxuICAgICAgICAgIGNsYXNzPVwiZGYtc2lkZW5hdi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1ub3dyYXBcIlxuICAgICAgICAgIGhyZWY9XCJ7eyBpdGVtLnZhbHVlIH19XCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIml0ZW0uaXNBY3RpdmUgJiYgaXRlbS50eXBlID09PSBzaWRlTmF2U2VydmljZS50eXBlLmxpbmtcIlxuICAgICAgICAgIFthdHRyLnRhcmdldF09XCJpdGVtLnR5cGUgPT09IHNpZGVOYXZTZXJ2aWNlLnR5cGUuZXh0ZXJuYWxMaW5rID8gJ19ibGFuaycgOiAnJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZTaWRlTmF2SXRlbUNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5icmVha3BvaW50czsgZWxzZSBlbHNlRGVmYXVsdFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZMaW5rRGVmYXVsdFRtcFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VEZWZhdWx0PlxuICAgICAgICA8bmctY29udGFpbmVyICpkZklmTWVkaWE9XCJpdGVtLmJyZWFrcG9pbnRzIVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZkxpbmtEZWZhdWx0VG1wXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdmxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdmxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdmxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFFNUUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRWpCOzs7Ozs7OztHQVFHO0FBZUgsTUFBTSxPQUFPLHNCQUFzQjtJQWRuQztRQW9CRSx1QkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBTTNDO0lBSkMscUJBQXFCO1FBQ25CLFFBQVEsRUFBRSxDQUFDO1FBQ1gsT0FBTyxpQkFBaUIsUUFBUSxHQUFHLENBQUM7SUFDdEMsQ0FBQzs4R0FaVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvTENyQ25DLDJ4TkF5SkEsNENEcEhhLHNCQUFzQix3SEFUL0IsWUFBWSxrckJBQ1osaUJBQWlCLHdPQUNqQixZQUFZLHdlQUNaLGFBQWEsa0lBQ2IsdUJBQXVCLCtCQUN2Qix3QkFBd0IsOERBQ3hCLHdCQUF3Qjs7MkZBR2Ysc0JBQXNCO2tCQWRsQyxTQUFTOytCQUNFLGdCQUFnQixjQUVkLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCOzhCQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZlNpZGVOYXZTZXJ2aWNlIH0gZnJvbSAnLi9zaWRlbmF2LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nYkNvbGxhcHNlTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERmTWVkaWFNb2R1bGUgfSBmcm9tICcuLi9tZWRpYXF1ZXJpZXMvbWVkaWEubW9kdWxlJztcbmltcG9ydCB7IERmU2lkZU5hdkNvbGxhcHNlTW9kdWxlIH0gZnJvbSAnLi9kZlNpZGVOYXZDb2xsYXBzZS5tb2R1bGUnO1xuaW1wb3J0IHR5cGUgeyBEZlNpZGVOYXZJdGVtIH0gZnJvbSAnLi9zaWRlbmF2LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGZTaWRlTmF2SWNvbkRpcmVjdGl2ZSwgRGZTaWRlTmF2SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vc2lkZW5hdi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGZNYW5hZ2VTaWRlTmF2RGlyZWN0aXZlIH0gZnJvbSAnLi9tYW5hZ2Utc2lkZW5hdi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGZUaXRsZVRydW5jYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vdXRpbHMvdGl0bGVUcnVuY2F0ZS5kaXJlY3RpdmUnO1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFNpZGVOYXYgaXMgYSBjb21wb25lbnQgdG8gcHJvdmlkZSBuYXZpZ2F0aW9uIGZlYXR1cmUgd2l0aCBhIHBhbmVsIG9uIHRoZSBzaWRlIG9mIHlvdXIgcGFnZVxuICpcbiAqIEl0IHN1cHBvcnRzIHNldmVyYWwgb3B0aW9ucyBhczpcbiAqICAtIEJlaW5nIGluIGFuIG92ZXJsYXkgbWVudSBvciBub3RcbiAqICAtIEJlaW5nIGNvbGxhcHNlZCBvciBub3RcbiAqICAtIENhbiBiZSB1c2VkIHdpdGggb3Igd2l0aG91dCBBbmd1bGFyIFJvdXRlclxuICogIC0gQ2FuIGJlIHVzZWQgd2l0aCBtZWRpYSBxdWVyaWVzIHRvIGFkanVzdCBiZWhhdmlvciB0byBkaWZmZXJlbnQgYnJlYWtwb2ludHMgKHNlZSBtZWRpYSBzZWN0aW9uKVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi1zaWRlbmF2bGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlbmF2bGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTmdiQ29sbGFwc2VNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIERmTWVkaWFNb2R1bGUsXG4gICAgRGZTaWRlTmF2Q29sbGFwc2VNb2R1bGUsXG4gICAgRGZNYW5hZ2VTaWRlTmF2RGlyZWN0aXZlLFxuICAgIERmVGl0bGVUcnVuY2F0ZURpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERmU2lkZU5hdkxpc3RDb21wb25lbnQge1xuICBASW5wdXQoKSBpdGVtcyE6IERmU2lkZU5hdkl0ZW1bXTtcbiAgQElucHV0KCkgdHBsSWNvbiE6IERmU2lkZU5hdkljb25EaXJlY3RpdmU7XG4gIEBJbnB1dCgpIHRwbEl0ZW0hOiBEZlNpZGVOYXZJdGVtRGlyZWN0aXZlO1xuICBASW5wdXQoKSBjdXJyZW50SXRlbTogRGZTaWRlTmF2SXRlbSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29udHJvbGxlZFVuaXF1ZUlkID0gdGhpcy5nZXRDb250cm9sbGVkVW5pcXVlSWQoKTtcbiAgc2lkZU5hdlNlcnZpY2UgPSBpbmplY3QoRGZTaWRlTmF2U2VydmljZSk7XG5cbiAgZ2V0Q29udHJvbGxlZFVuaXF1ZUlkKCk6IHN0cmluZyB7XG4gICAgdW5pcXVlSWQrKztcbiAgICByZXR1cm4gYGRmLXNpZGVuYXYtaWQtJHt1bmlxdWVJZH07YDtcbiAgfVxufVxuIiwiPHVsIGNsYXNzPVwiZGYtc2lkZW5hdi1saXN0XCIgW25nYkNvbGxhcHNlXT1cImN1cnJlbnRJdGVtPy5pc0NvbGxhcHNlZCA/PyBmYWxzZVwiIFthdHRyLmlkXT1cImlkXCI+XG4gIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiIFtuZ1N3aXRjaF09XCJpdGVtLnR5cGVcIiBkZk1hbmFnZVNpZGVOYXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic2lkZU5hdlNlcnZpY2UudHlwZS5zdWJNZW51c1wiPlxuICAgICAgPG5nLXRlbXBsYXRlICNzdWJNZW51cz5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiZGYtc2lkZW5hdi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJzaWRlTmF2U2VydmljZS50b2dnbGUoaXRlbSlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWl0ZW0uaXNDb2xsYXBzZWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiJ3NpZGVuYXZDb250cm9sJyArIGNvbnRyb2xsZWRVbmlxdWVJZC50b1N0cmluZygpICsgJy0nICsgaVwiXG4gICAgICAgICAgW2NsYXNzLmRmLXNpZGVuYXYtaXRlbS13aXRoaWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cInRwbEljb24gJiYgaXRlbS5pY29uOyBlbHNlIGVsc2VJY29uXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRwbEljb24udGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUljb24+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19IGRmLXNpZGVuYXYtaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1ncm93LTEgdGV4dC1ub3dyYXBcIiBkZlRpdGxlVHJ1bmNhdGU+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJtcy0zXCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNoZXZyb24tZG93bl09XCJpdGVtLmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNoZXZyb24tdXBdPVwiIWl0ZW0uaXNDb2xsYXBzZWRcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPCEtLSBwdXQgdGhlIGNoZXZyb24gYXMgaWNvbiBkaXJlY3RseSBpbiB0aGUgbWVudSAtLT5cbiAgICAgICAgICA8IS0tIHRvZG8gdGhlIGljb24gYW5kIHRoZSBtaW5pbWl6ZWQgLS0+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8IS0tIHdlIGRvbid0IHBhc3MgdGhlIGljb25zIGFzIHRoZXkgYXJlIG5vdCBzdXBwb3NlIHRvIGhhdmUgb25lcyA/Py0tPlxuICAgICAgICA8ZGYtc2lkZW5hdmxpc3RcbiAgICAgICAgICBbaXRlbXNdPVwiaXRlbS5zdWJNZW51cyA/PyBbXVwiXG4gICAgICAgICAgW3RwbEl0ZW1dPVwidHBsSXRlbVwiXG4gICAgICAgICAgW2N1cnJlbnRJdGVtXT1cIml0ZW1cIlxuICAgICAgICAgIFtpZF09XCInc2lkZW5hdkNvbnRyb2wnICsgY29udHJvbGxlZFVuaXF1ZUlkLnRvU3RyaW5nKCkgKyAnLScgKyBpXCJcbiAgICAgICAgPjwvZGYtc2lkZW5hdmxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmJyZWFrcG9pbnRzOyBlbHNlIGVsc2VTdWJNZW51c1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3ViTWVudXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNlbHNlU3ViTWVudXM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmRmSWZNZWRpYT1cIml0ZW0uYnJlYWtwb2ludHMhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1Yk1lbnVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RmU2lkZU5hdkl0ZW1Db250ZW50PlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ0lmPVwidHBsSWNvbiAmJiBpdGVtLmljb247IGVsc2UgZWxzZUljb25cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxJY29uLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VJY29uPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19IGRmLXNpZGVuYXYtaWNvbiBtZS01XCI+PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1ncm93LTEgdGV4dC1ub3dyYXBcIiBkZlRpdGxlVHJ1bmNhdGU+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInNpZGVOYXZTZXJ2aWNlLnR5cGUuYWN0aW9uQnV0dG9uXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RmU2lkZU5hdkl0ZW1CdXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImRmLXNpZGVuYXYtaXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtbm93cmFwXCJcbiAgICAgICAgICAoY2xpY2spPVwic2lkZU5hdlNlcnZpY2UuYWN0aXZlSXRlbShpdGVtKVwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmlzQWN0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZlNpZGVOYXZJdGVtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uYnJlYWtwb2ludHM7IGVsc2UgZWxzZUFjdGlvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZTaWRlTmF2SXRlbUJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VBY3Rpb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmRmSWZNZWRpYT1cIml0ZW0uYnJlYWtwb2ludHMhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRmU2lkZU5hdkl0ZW1CdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGZSb3V0ZXJUZW1wbGF0ZT5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiZGYtc2lkZW5hdi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1ub3dyYXBcIlxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgICAgcm91dGVyTGluaz1cInt7IGl0ZW0udmFsdWUgfX1cIlxuICAgICAgICBhcmlhQ3VycmVudFdoZW5BY3RpdmU9XCJwYWdlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRmU2lkZU5hdkl0ZW1Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzaWRlTmF2U2VydmljZS50eXBlLnJvdXRlckxpbmtcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5icmVha3BvaW50czsgZWxzZSBlbHNlUm91dGVyTGlua1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZSb3V0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vsc2VSb3V0ZXJMaW5rPlxuICAgICAgICA8bmctY29udGFpbmVyICpkZklmTWVkaWE9XCJpdGVtLmJyZWFrcG9pbnRzIVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZlJvdXRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzaWRlTmF2U2VydmljZS50eXBlLnNlcGFyYXRvclwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZlNlcGFyYXRvclRtcD5cbiAgICAgICAgPGhyIGNsYXNzPVwic3BhY2luZy0wMVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmJyZWFrcG9pbnRzOyBlbHNlIGVsc2VTZXBhcmF0b3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRmU2VwYXJhdG9yVG1wXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVNlcGFyYXRvcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGZJZk1lZGlhPVwiaXRlbS5icmVha3BvaW50cyFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGZTZXBhcmF0b3JUbXBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInNpZGVOYXZTZXJ2aWNlLnR5cGUudGVtcGxhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdJZj1cInRwbEl0ZW1cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxJdGVtLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic2lkZU5hdlNlcnZpY2UudHlwZS50aXRsZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZlRpdGxlVG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGYtc2lkZW5hdi1pdGVtIGRmLXNpZGVuYXYtdGl0bGUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ub3dyYXAgdGV4dC11cHBlcmNhc2UgdGV4dC1tdXRlZFwiIGRmVGl0bGVUcnVuY2F0ZT57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uYnJlYWtwb2ludHM7IGVsc2UgZWxzZVRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZlRpdGxlVG1wXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRpdGxlPlxuICAgICAgICA8bmctY29udGFpbmVyICpkZklmTWVkaWE9XCJpdGVtLmJyZWFrcG9pbnRzIVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZlRpdGxlVG1wXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICA8bmctdGVtcGxhdGUgI2RmTGlua0RlZmF1bHRUbXA+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJkZi1zaWRlbmF2LWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LW5vd3JhcFwiXG4gICAgICAgICAgaHJlZj1cInt7IGl0ZW0udmFsdWUgfX1cIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXRlbS5pc0FjdGl2ZSAmJiBpdGVtLnR5cGUgPT09IHNpZGVOYXZTZXJ2aWNlLnR5cGUubGlua1wiXG4gICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIml0ZW0udHlwZSA9PT0gc2lkZU5hdlNlcnZpY2UudHlwZS5leHRlcm5hbExpbmsgPyAnX2JsYW5rJyA6ICcnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZlNpZGVOYXZJdGVtQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmJyZWFrcG9pbnRzOyBlbHNlIGVsc2VEZWZhdWx0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZkxpbmtEZWZhdWx0VG1wXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZURlZmF1bHQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmRmSWZNZWRpYT1cIml0ZW0uYnJlYWtwb2ludHMhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRmTGlua0RlZmF1bHRUbXBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2xpPlxuPC91bD5cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { Directive } from '@angular/core';
2
+ import { hasOverflow } from '../../utils/html-element-helper';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@ng-bootstrap/ng-bootstrap";
4
5
  /**
@@ -14,10 +15,7 @@ export class DfTooltipTruncateDirective {
14
15
  this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');
15
16
  }
16
17
  ngDoCheck() {
17
- this.tooltip.disableTooltip = !this.hasOverflow(this.elementRef.nativeElement);
18
- }
19
- hasOverflow(element) {
20
- return element?.offsetHeight < element?.scrollHeight || element?.offsetWidth < element?.scrollWidth;
18
+ this.tooltip.disableTooltip = !hasOverflow(this.elementRef.nativeElement);
21
19
  }
22
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfTooltipTruncateDirective, deps: [{ token: i1.NgbTooltip }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
23
21
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfTooltipTruncateDirective, isStandalone: true, selector: "[dfTooltipTruncate]", exportAs: ["dfTooltipTruncate"], ngImport: i0 }); }
@@ -30,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
30
28
  standalone: true
31
29
  }]
32
30
  }], ctorParameters: function () { return [{ type: i1.NgbTooltip }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcFRydW5jYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci90b29sdGlwL3RydW5jYXRlL3Rvb2x0aXBUcnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7OztBQUdsRjs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFDckMsWUFDbUIsT0FBbUIsRUFDbkIsVUFBbUMsRUFDbkMsUUFBbUI7UUFGbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ25DLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQW9CO1FBQ3RDLE9BQU8sT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLEVBQUUsWUFBWSxJQUFJLE9BQU8sRUFBRSxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsQ0FBQztJQUN0RyxDQUFDOzhHQWpCVSwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vKipcbiAqIE15IGRmVG9vbHRpcFRydW5jYXRlIGRpcmVjdGl2ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgZXhwb3J0QXM6ICdkZlRvb2x0aXBUcnVuY2F0ZScsXG4gIHNlbGVjdG9yOiAnW2RmVG9vbHRpcFRydW5jYXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZUb29sdGlwVHJ1bmNhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2x0aXA6IE5nYlRvb2x0aXAsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0ZXh0LXRydW5jYXRlJyk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy50b29sdGlwLmRpc2FibGVUb29sdGlwID0gIXRoaXMuaGFzT3ZlcmZsb3codGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNPdmVyZmxvdyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50Py5vZmZzZXRIZWlnaHQgPCBlbGVtZW50Py5zY3JvbGxIZWlnaHQgfHwgZWxlbWVudD8ub2Zmc2V0V2lkdGggPCBlbGVtZW50Py5zY3JvbGxXaWR0aDtcbiAgfVxufVxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcFRydW5jYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci90b29sdGlwL3RydW5jYXRlL3Rvb2x0aXBUcnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFOUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQ21CLE9BQW1CLEVBQ25CLFVBQW1DLEVBQ25DLFFBQW1CO1FBRm5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUNuQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RSxDQUFDOzhHQWJVLDBCQUEwQjtrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBoYXNPdmVyZmxvdyB9IGZyb20gJy4uLy4uL3V0aWxzL2h0bWwtZWxlbWVudC1oZWxwZXInO1xuXG4vKipcbiAqIE15IGRmVG9vbHRpcFRydW5jYXRlIGRpcmVjdGl2ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgZXhwb3J0QXM6ICdkZlRvb2x0aXBUcnVuY2F0ZScsXG4gIHNlbGVjdG9yOiAnW2RmVG9vbHRpcFRydW5jYXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZUb29sdGlwVHJ1bmNhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2x0aXA6IE5nYlRvb2x0aXAsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0ZXh0LXRydW5jYXRlJyk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy50b29sdGlwLmRpc2FibGVUb29sdGlwID0gIWhhc092ZXJmbG93KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @param element the HTML element
3
+ * @returns whether the element is overflowing
4
+ */
5
+ export function hasOverflow(element) {
6
+ return element?.offsetHeight < element?.scrollHeight || element?.offsetWidth < element?.scrollWidth;
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lbGVtZW50LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci91dGlscy9odG1sLWVsZW1lbnQtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBb0I7SUFDOUMsT0FBTyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sRUFBRSxZQUFZLElBQUksT0FBTyxFQUFFLFdBQVcsR0FBRyxPQUFPLEVBQUUsV0FBVyxDQUFDO0FBQ3RHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBIVE1MIGVsZW1lbnRcbiAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc092ZXJmbG93KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBlbGVtZW50Py5vZmZzZXRIZWlnaHQgPCBlbGVtZW50Py5zY3JvbGxIZWlnaHQgfHwgZWxlbWVudD8ub2Zmc2V0V2lkdGggPCBlbGVtZW50Py5zY3JvbGxXaWR0aDtcbn1cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Directive } from '@angular/core';
2
+ import { hasOverflow } from './html-element-helper';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * DfTitleTruncate directive
6
+ * It adds the title attribute with the element's inner text as value
7
+ * when the element is truncated.
8
+ */
9
+ export class DfTitleTruncateDirective {
10
+ constructor(elementRef, renderer) {
11
+ this.elementRef = elementRef;
12
+ this.renderer = renderer;
13
+ }
14
+ ngOnInit() {
15
+ this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');
16
+ }
17
+ ngDoCheck() {
18
+ const { nativeElement } = this.elementRef;
19
+ const titleAttributeName = 'title';
20
+ if (hasOverflow(nativeElement)) {
21
+ const value = nativeElement.innerText;
22
+ nativeElement.setAttribute(titleAttributeName, value);
23
+ }
24
+ else if (nativeElement.getAttribute(titleAttributeName)) {
25
+ nativeElement.removeAttribute(titleAttributeName);
26
+ }
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfTitleTruncateDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
29
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfTitleTruncateDirective, isStandalone: true, selector: "[dfTitleTruncate]", exportAs: ["dfTitleTruncate"], ngImport: i0 }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfTitleTruncateDirective, decorators: [{
32
+ type: Directive,
33
+ args: [{
34
+ exportAs: 'dfTitleTruncate',
35
+ selector: '[dfTitleTruncate]',
36
+ standalone: true
37
+ }]
38
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGVUcnVuY2F0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvdXRpbHMvdGl0bGVUcnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVwRDs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNtQixVQUFtQyxFQUNuQyxRQUFtQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ25DLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztRQUNuQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUM5QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1lBQ3RDLGFBQWEsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkQ7YUFBTSxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUN6RCxhQUFhLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDOzhHQW5CVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBoYXNPdmVyZmxvdyB9IGZyb20gJy4vaHRtbC1lbGVtZW50LWhlbHBlcic7XG5cbi8qKlxuICogRGZUaXRsZVRydW5jYXRlIGRpcmVjdGl2ZVxuICogSXQgYWRkcyB0aGUgdGl0bGUgYXR0cmlidXRlIHdpdGggdGhlIGVsZW1lbnQncyBpbm5lciB0ZXh0IGFzIHZhbHVlXG4gKiB3aGVuIHRoZSBlbGVtZW50IGlzIHRydW5jYXRlZC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIGV4cG9ydEFzOiAnZGZUaXRsZVRydW5jYXRlJyxcbiAgc2VsZWN0b3I6ICdbZGZUaXRsZVRydW5jYXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZUaXRsZVRydW5jYXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0ZXh0LXRydW5jYXRlJyk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgY29uc3QgeyBuYXRpdmVFbGVtZW50IH0gPSB0aGlzLmVsZW1lbnRSZWY7XG4gICAgY29uc3QgdGl0bGVBdHRyaWJ1dGVOYW1lID0gJ3RpdGxlJztcbiAgICBpZiAoaGFzT3ZlcmZsb3cobmF0aXZlRWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgICBuYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSh0aXRsZUF0dHJpYnV0ZU5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKG5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKHRpdGxlQXR0cmlidXRlTmFtZSkpIHtcbiAgICAgIG5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKHRpdGxlQXR0cmlidXRlTmFtZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -84,4 +84,6 @@ export { DfManageCardSelectionDirective } from './angular/card/manage-card-selec
84
84
  export { DfAdvancedCardModule } from './angular/card/card-advanced.module';
85
85
  // Global
86
86
  export { DfModule } from './angular/df.module';
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3RkFBd0YsQ0FBQztBQUVySSxRQUFRO0FBQ1IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdELFFBQVE7QUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0QsYUFBYTtBQUNiLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLFNBQVM7QUFDVCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTztBQUNQLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVwRixTQUFTO0FBQ1QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sMkNBQTJDLENBQUM7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFL0UsUUFBUTtBQUNSLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxVQUFVO0FBQ1YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxjQUFjO0FBQ2QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFckYscUJBQXFCO0FBQ3JCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2pHLE9BQU8sRUFDTCwwQkFBMEIsRUFFM0IsTUFBTSx1REFBdUQsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBRUwsOEJBQThCLEVBQzlCLGlDQUFpQyxFQUNqQyxxQ0FBcUMsRUFDckMsa0NBQWtDLEVBQ25DLE1BQU0sc0RBQXNELENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDM0YsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDMUgsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDeEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFMUcsTUFBTTtBQUNOLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3pCLE1BQU0sb0RBQW9ELENBQUM7QUFFNUQsU0FBUztBQUNULE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdkIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLFVBQVU7QUFDVixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsVUFBVTtBQUNWLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWMsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixVQUFVO0FBQ1YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSW5FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsa0JBQWtCO0FBQ2xCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXZGLGNBQWM7QUFDZCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDaEIsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRCxnQkFBZ0I7QUFDaEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRSxPQUFPO0FBQ1AsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsU0FBUztBQUNULE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFjY2Vzc2liaWxpdHlcbmV4cG9ydCB7IERmQWNjZXNzaWJpbGl0eU1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9hY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHkubW9kdWxlJztcbmV4cG9ydCB7IFNraXBMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL2FjY2Vzc2liaWxpdHkvZGlyZWN0aXZlcy9za2lwLWxpbmsuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFNraXBMaW5rc0NvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci9hY2Nlc3NpYmlsaXR5L2NvbXBvbmVudHMvc2tpcC1saW5rcy1jb250YWluZXIvc2tpcC1saW5rcy1jb250YWluZXIuY29tcG9uZW50JztcblxuLy8gVG9hc3RcbmV4cG9ydCB7IERmVG9hc3RNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvdG9hc3QvdG9hc3QubW9kdWxlJztcblxuLy8gQWxlcnRcbmV4cG9ydCB7IERmQWxlcnRNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvYWxlcnQvYWxlcnQubW9kdWxlJztcblxuLy8gRGF0ZXBpY2tlclxuZXhwb3J0IHsgQ2xvc2VJbnB1dERhdGVQaWNrZXJEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvZGF0ZXBpY2tlci9jbG9zZWRhdGVwaWNrZXIuZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlJztcbmV4cG9ydCB7IERmRGF0ZXBpY2tlclJhbmdlRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1yYW5nZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZEYXRlcGlja2VyUmFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi9hbmd1bGFyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1yYW5nZS5zZXJ2aWNlJztcblxuLy8gRm9vdGVyXG5leHBvcnQgeyBEZkZvb3Rlck1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9mb290ZXIvZm9vdGVyLm1vZHVsZSc7XG5cbi8vIEljb25cbmV4cG9ydCB7IERmSWNvbk1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9pY29uL2ljb24ubW9kdWxlJztcbmV4cG9ydCB7IERmSW5zZXJ0SWNvbk1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9pY29uL2luc2VydC9pbnNlcnQtaWNvbi5tb2R1bGUnO1xuZXhwb3J0IHsgRGZBbWFkZXVzSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci9pY29uL2FtYWRldXMtaWNvbic7XG5leHBvcnQgeyBEZkluc2VydEljb25EaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvaWNvbi9pbnNlcnQvaW5zZXJ0LWljb24uZGlyZWN0aXZlJztcblxuLy8gSW5wdXRzXG5leHBvcnQgeyBEZlRyaWdnZXJDbGlja0RpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9pbnB1dHMvY2xpY2svdHJpZ2dlci1jbGljay5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZJbnB1dEljb25EaXJlY3RpdmUsIERmRGlyZWN0aW9uIH0gZnJvbSAnLi9hbmd1bGFyL2lucHV0cy9pY29uL2lucHV0aWNvbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZBZHZhbmNlZElucHV0TW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL2lucHV0cy9pbnB1dC1hZHZhbmNlZC5tb2R1bGUnO1xuXG4vLyBNb2RhbFxuZXhwb3J0IHsgRGZNb2RhbFNlcnZpY2UgfSBmcm9tICcuL2FuZ3VsYXIvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5cbi8vIFBvcG92ZXJcbmV4cG9ydCB7IERmUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcbmV4cG9ydCB7IERmUG9wb3ZlckNvbmZpZyB9IGZyb20gJy4vYW5ndWxhci9wb3BvdmVyL2NvbmZpZy9wb3BvdmVyLmNvbmZpZyc7XG5cbi8vIFByb2dyZXNzYmFyXG5leHBvcnQgeyBEZlByb2dyZXNzYmFyTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLm1vZHVsZSc7XG5leHBvcnQgeyBEZlByb2dyZXNzYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLmNvbXBvbmVudCc7XG5cbi8vIFByb2dyZXNzIGluZGljYXRvclxuZXhwb3J0IHsgRGZQcm9ncmVzc0luZGljYXRvck1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9wcm9ncmVzc2luZGljYXRvci9wcm9ncmVzc2luZGljYXRvci5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgRGZQcm9ncmVzc0luZGljYXRvclNlcnZpY2UsXG4gIERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250ZW50XG59IGZyb20gJy4vYW5ndWxhci9wcm9ncmVzc2luZGljYXRvci9wcm9ncmVzc2luZGljYXRvci5zZXJ2aWNlJztcbmV4cG9ydCB7IERmUHJvZ3Jlc3NJbmRpY2F0b3JEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvcHJvZ3Jlc3NpbmRpY2F0b3IuZGlyZWN0aXZlJztcbmV4cG9ydCB7XG4gIERmUHJvZ3Jlc3NJbmRpY2F0b3JPcHRpb25zLFxuICBEZlByb2dyZXNzSW5kaWNhdG9yQ29udGVudFR5cGUsXG4gIERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250ZW50U3Bpbm5lcixcbiAgRGZQcm9ncmVzc0luZGljYXRvckNvbnRlbnRQcm9ncmVzc0JhcixcbiAgRGZQcm9ncmVzc0luZGljYXRvckNvbnRlbnRQb3NpdGlvblxufSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvcHJvZ3Jlc3NpbmRpY2F0b3ItY29uZmlnJztcbmV4cG9ydCB7IERmUHJvZ3Jlc3NJbmRpY2F0b3JSZWYgfSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvcHJvZ3Jlc3NpbmRpY2F0b3ItcmVmJztcbmV4cG9ydCB7IERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvcHJvZ3Jlc3NpbmRpY2F0b3ItY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBEZlByb2dyZXNzSW5kaWNhdG9yQmFja2Ryb3BDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvcHJvZ3Jlc3NpbmRpY2F0b3ItYmFja2Ryb3AuY29tcG9uZW50JztcbmV4cG9ydCB7IERmRGVmYXVsdFNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvZGVmYXVsdC9kZWZhdWx0LXNwaW5uZXIuY29tcG9uZW50JztcblxuLy8gUlRMXG5leHBvcnQge1xuICBEZkRpcmVjdGlvbkRldGVjdGlvblNlcnZpY2UsXG4gIFJpZ2h0VG9MZWZ0RGlyZWN0aW9uRW51bVxufSBmcm9tICcuL2FuZ3VsYXIvcmlnaHQtdG8tbGVmdC9kaXJlY3Rpb25EZXRlY3Rpb24uc2VydmljZSc7XG5cbi8vIFNsaWRlclxuZXhwb3J0IHsgRGZTbGlkZXJNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvc2xpZGVyL3NsaWRlci5tb2R1bGUnO1xuZXhwb3J0IHsgRGZTbGlkZXJEaXJlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc2xpZGVyL2RpcmVjdGlvbi9zbGlkZXJkaXJlY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCB7XG4gIERmU2lkZU5hdkhlYWRlckRpcmVjdGl2ZSxcbiAgRGZTaWRlTmF2SXRlbURpcmVjdGl2ZSxcbiAgRGZTaWRlTmF2SWNvbkRpcmVjdGl2ZVxufSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudCc7XG5leHBvcnQgeyBEZk1hbmFnZVNpZGVOYXZEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9tYW5hZ2Utc2lkZW5hdi5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZFeGNsdWRlVHJhcERpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9zaWRlbmF2L2V4Y2x1ZGVUcmFwLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBDaGFuZ2VDb250ZXh0IH0gZnJvbSAnLi9hbmd1bGFyL3NsaWRlci9saWIvY2hhbmdlLWNvbnRleHQnO1xuZXhwb3J0IHsgUG9pbnRlclR5cGUgfSBmcm9tICcuL2FuZ3VsYXIvc2xpZGVyL2xpYi9wb2ludGVyLXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmd1bGFyL3NsaWRlci9saWIvb3B0aW9ucyc7XG5leHBvcnQgeyBTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXIvc2xpZGVyL2xpYi9zbGlkZXIuY29tcG9uZW50JztcblxuLy8gU2VsZWN0c1xuZXhwb3J0IHsgRGZNYW5hZ2VOYXZTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc2VsZWN0cy9uYXYvbWFuYWdlLW5hdi1zZWxlY3QuZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmT3B0aW9uSGlnaGxpZ2h0RGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL3NlbGVjdHMvb3B0aW9uLWhpZ2hsaWdodC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZNYW5hZ2VCYWRnZUV2ZW50c0RpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9zZWxlY3RzL2V2ZW50cy9tYW5hZ2UtYmFkZ2UtZXZlbnRzLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBEZlNlbGVjdE1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9zZWxlY3RzL3NlbGVjdC5tb2R1bGUnO1xuXG4vLyBTdGVwcGVyXG5leHBvcnQgeyBEZlN0ZXBwZXJEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc3RlcHBlci9zdGVwcGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBEZlN0ZXBwZXJTdGVwQ29udGVudERpcmVjdGl2ZSwgRGZTdGVwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgRGZTdGVwcGVyU3RlcERpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9zdGVwcGVyL3N0ZXBwZXIuZGlyZWN0aXZlJztcbmV4cG9ydCB0eXBlIHtcbiAgRGZTdGVwcGVyU3RlcCxcbiAgRGZTdGVwcGVyU3RhdGUsXG4gIERmU3RlcHBlck5vcm1hbGl6ZWRTdGF0ZSxcbiAgRGZTdGVwcGVyTm9ybWFsaXplZFN0ZXBcbn0gZnJvbSAnLi9hbmd1bGFyL3N0ZXBwZXIvc3RlcHBlci5zZXJ2aWNlJztcbmV4cG9ydCB7IERmU3RlcHBlck1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9zdGVwcGVyL3N0ZXBwZXIubW9kdWxlJztcbmV4cG9ydCB7IERmU3RlcHBlclNlcnZpY2UsIERmU3RlcFR5cGUgfSBmcm9tICcuL2FuZ3VsYXIvc3RlcHBlci9zdGVwcGVyLnNlcnZpY2UnO1xuXG4vLyBUb29sdGlwXG5leHBvcnQgeyBEZlRvb2x0aXBUcnVuY2F0ZURpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci90b29sdGlwL3RydW5jYXRlL3Rvb2x0aXBUcnVuY2F0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuXG4vLyBTaWRlbmF2XG5leHBvcnQgeyBEZlNpZGVOYXZJdGVtIH0gZnJvbSAnLi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5zZXJ2aWNlJztcbmV4cG9ydCB7IERmU2lkZU5hdlNlcnZpY2UgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9zaWRlbmF2LnNlcnZpY2UnO1xuZXhwb3J0IHsgRGZJZk1lZGlhRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL21lZGlhcXVlcmllcy9pZk1lZGlhLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBEZlNpZGVOYXZNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9zaWRlbmF2Lm1vZHVsZSc7XG5leHBvcnQgeyBEZlNpZGVOYXZDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudCc7XG5leHBvcnQgeyBEZk5hdkl0ZW1UeXBlIH0gZnJvbSAnLi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5zZXJ2aWNlJztcblxuLy8gU2lkZU5hdkNvbGxhcHNlXG5leHBvcnQgeyBEZlNpZGVOYXZDb2xsYXBzZU1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9zaWRlbmF2L2RmU2lkZU5hdkNvbGxhcHNlLm1vZHVsZSc7XG5leHBvcnQgeyBEZlNpZGVOYXZDb2xsYXBzZURpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9zaWRlbmF2L2RmU2lkZU5hdkNvbGxhcHNlJztcbmV4cG9ydCB7IERmU2lkZU5hdkNvbGxhcHNlU2VydmljZSB9IGZyb20gJy4vYW5ndWxhci9zaWRlbmF2L2RmU2lkZU5hdkNvbGxhcHNlLnNlcnZpY2UnO1xuXG4vLyBNZWRpYSBVdGlsc1xuZXhwb3J0IHtcbiAgQlJFQUtQT0lOVFNfVkFSUyxcbiAgREZfQlJFQUtQT0lOVFNfVkFSX0RFRkFVTFQsXG4gIERmQnJlYWtwb2ludHMsXG4gIERmTWVkaWFRdWVyeSxcbiAgRGZNZWRpYU9ic2VydmVyXG59IGZyb20gJy4vYW5ndWxhci9tZWRpYXF1ZXJpZXMvbWVkaWFVdGlscy5zZXJ2aWNlJztcblxuLy8gTWVkaWEgc2VydmljZVxuZXhwb3J0IHsgRGZNZWRpYSB9IGZyb20gJy4vYW5ndWxhci9tZWRpYXF1ZXJpZXMvbWVkaWEuc2VydmljZSc7XG5leHBvcnQgeyBEZk1lZGlhTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL21lZGlhcXVlcmllcy9tZWRpYS5tb2R1bGUnO1xuXG4vLyBDYXJkXG5leHBvcnQgeyBEZk1hbmFnZUNhcmRTZWxlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvY2FyZC9tYW5hZ2UtY2FyZC1zZWxlY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmQWR2YW5jZWRDYXJkTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL2NhcmQvY2FyZC1hZHZhbmNlZC5tb2R1bGUnO1xuXG4vLyBHbG9iYWxcbmV4cG9ydCB7IERmTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL2RmLm1vZHVsZSc7XG4iXX0=
87
+ // Title truncate
88
+ export { DfTitleTruncateDirective } from './angular/utils/titleTruncate.directive';
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3RkFBd0YsQ0FBQztBQUVySSxRQUFRO0FBQ1IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdELFFBQVE7QUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0QsYUFBYTtBQUNiLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLFNBQVM7QUFDVCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTztBQUNQLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVwRixTQUFTO0FBQ1QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sMkNBQTJDLENBQUM7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFL0UsUUFBUTtBQUNSLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxVQUFVO0FBQ1YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxjQUFjO0FBQ2QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFckYscUJBQXFCO0FBQ3JCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2pHLE9BQU8sRUFDTCwwQkFBMEIsRUFFM0IsTUFBTSx1REFBdUQsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBRUwsOEJBQThCLEVBQzlCLGlDQUFpQyxFQUNqQyxxQ0FBcUMsRUFDckMsa0NBQWtDLEVBQ25DLE1BQU0sc0RBQXNELENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDM0YsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDMUgsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDeEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFMUcsTUFBTTtBQUNOLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3pCLE1BQU0sb0RBQW9ELENBQUM7QUFFNUQsU0FBUztBQUNULE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdkIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLFVBQVU7QUFDVixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsVUFBVTtBQUNWLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWMsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixVQUFVO0FBQ1YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSW5FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbEUsa0JBQWtCO0FBQ2xCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXZGLGNBQWM7QUFDZCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDaEIsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRCxnQkFBZ0I7QUFDaEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRSxPQUFPO0FBQ1AsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsU0FBUztBQUNULE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvQyxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBY2Nlc3NpYmlsaXR5XG5leHBvcnQgeyBEZkFjY2Vzc2liaWxpdHlNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5Lm1vZHVsZSc7XG5leHBvcnQgeyBTa2lwTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9hY2Nlc3NpYmlsaXR5L2RpcmVjdGl2ZXMvc2tpcC1saW5rLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBTa2lwTGlua3NDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXIvYWNjZXNzaWJpbGl0eS9jb21wb25lbnRzL3NraXAtbGlua3MtY29udGFpbmVyL3NraXAtbGlua3MtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbi8vIFRvYXN0XG5leHBvcnQgeyBEZlRvYXN0TW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL3RvYXN0L3RvYXN0Lm1vZHVsZSc7XG5cbi8vIEFsZXJ0XG5leHBvcnQgeyBEZkFsZXJ0TW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL2FsZXJ0L2FsZXJ0Lm1vZHVsZSc7XG5cbi8vIERhdGVwaWNrZXJcbmV4cG9ydCB7IENsb3NlSW5wdXREYXRlUGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL2RhdGVwaWNrZXIvY2xvc2VkYXRlcGlja2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBEZkRhdGVQaWNrZXJNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLm1vZHVsZSc7XG5leHBvcnQgeyBEZkRhdGVwaWNrZXJSYW5nZURpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9kYXRlcGlja2VyL2RhdGVwaWNrZXItcmFuZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmRGF0ZXBpY2tlclJhbmdlU2VydmljZSB9IGZyb20gJy4vYW5ndWxhci9kYXRlcGlja2VyL2RhdGVwaWNrZXItcmFuZ2Uuc2VydmljZSc7XG5cbi8vIEZvb3RlclxuZXhwb3J0IHsgRGZGb290ZXJNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvZm9vdGVyL2Zvb3Rlci5tb2R1bGUnO1xuXG4vLyBJY29uXG5leHBvcnQgeyBEZkljb25Nb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvaWNvbi9pY29uLm1vZHVsZSc7XG5leHBvcnQgeyBEZkluc2VydEljb25Nb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvaWNvbi9pbnNlcnQvaW5zZXJ0LWljb24ubW9kdWxlJztcbmV4cG9ydCB7IERmQW1hZGV1c0ljb25Db21wb25lbnQgfSBmcm9tICcuL2FuZ3VsYXIvaWNvbi9hbWFkZXVzLWljb24nO1xuZXhwb3J0IHsgRGZJbnNlcnRJY29uRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL2ljb24vaW5zZXJ0L2luc2VydC1pY29uLmRpcmVjdGl2ZSc7XG5cbi8vIElucHV0c1xuZXhwb3J0IHsgRGZUcmlnZ2VyQ2xpY2tEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvaW5wdXRzL2NsaWNrL3RyaWdnZXItY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmSW5wdXRJY29uRGlyZWN0aXZlLCBEZkRpcmVjdGlvbiB9IGZyb20gJy4vYW5ndWxhci9pbnB1dHMvaWNvbi9pbnB1dGljb24uZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmQWR2YW5jZWRJbnB1dE1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9pbnB1dHMvaW5wdXQtYWR2YW5jZWQubW9kdWxlJztcblxuLy8gTW9kYWxcbmV4cG9ydCB7IERmTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9hbmd1bGFyL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuXG4vLyBQb3BvdmVyXG5leHBvcnQgeyBEZlBvcG92ZXJNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZSc7XG5leHBvcnQgeyBEZlBvcG92ZXJDb25maWcgfSBmcm9tICcuL2FuZ3VsYXIvcG9wb3Zlci9jb25maWcvcG9wb3Zlci5jb25maWcnO1xuXG4vLyBQcm9ncmVzc2JhclxuZXhwb3J0IHsgRGZQcm9ncmVzc2Jhck1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5tb2R1bGUnO1xuZXhwb3J0IHsgRGZQcm9ncmVzc2JhckNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5jb21wb25lbnQnO1xuXG4vLyBQcm9ncmVzcyBpbmRpY2F0b3JcbmV4cG9ydCB7IERmUHJvZ3Jlc3NJbmRpY2F0b3JNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvcHJvZ3Jlc3NpbmRpY2F0b3IubW9kdWxlJztcbmV4cG9ydCB7XG4gIERmUHJvZ3Jlc3NJbmRpY2F0b3JTZXJ2aWNlLFxuICBEZlByb2dyZXNzSW5kaWNhdG9yQ29udGVudFxufSBmcm9tICcuL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvcHJvZ3Jlc3NpbmRpY2F0b3Iuc2VydmljZSc7XG5leHBvcnQgeyBEZlByb2dyZXNzSW5kaWNhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL3Byb2dyZXNzaW5kaWNhdG9yLmRpcmVjdGl2ZSc7XG5leHBvcnQge1xuICBEZlByb2dyZXNzSW5kaWNhdG9yT3B0aW9ucyxcbiAgRGZQcm9ncmVzc0luZGljYXRvckNvbnRlbnRUeXBlLFxuICBEZlByb2dyZXNzSW5kaWNhdG9yQ29udGVudFNwaW5uZXIsXG4gIERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250ZW50UHJvZ3Jlc3NCYXIsXG4gIERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250ZW50UG9zaXRpb25cbn0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL3Byb2dyZXNzaW5kaWNhdG9yLWNvbmZpZyc7XG5leHBvcnQgeyBEZlByb2dyZXNzSW5kaWNhdG9yUmVmIH0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL3Byb2dyZXNzaW5kaWNhdG9yLXJlZic7XG5leHBvcnQgeyBEZlByb2dyZXNzSW5kaWNhdG9yQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL3Byb2dyZXNzaW5kaWNhdG9yLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0IHsgRGZQcm9ncmVzc0luZGljYXRvckJhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL3Byb2dyZXNzaW5kaWNhdG9yLWJhY2tkcm9wLmNvbXBvbmVudCc7XG5leHBvcnQgeyBEZkRlZmF1bHRTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL2RlZmF1bHQvZGVmYXVsdC1zcGlubmVyLmNvbXBvbmVudCc7XG5cbi8vIFJUTFxuZXhwb3J0IHtcbiAgRGZEaXJlY3Rpb25EZXRlY3Rpb25TZXJ2aWNlLFxuICBSaWdodFRvTGVmdERpcmVjdGlvbkVudW1cbn0gZnJvbSAnLi9hbmd1bGFyL3JpZ2h0LXRvLWxlZnQvZGlyZWN0aW9uRGV0ZWN0aW9uLnNlcnZpY2UnO1xuXG4vLyBTbGlkZXJcbmV4cG9ydCB7IERmU2xpZGVyTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL3NsaWRlci9zbGlkZXIubW9kdWxlJztcbmV4cG9ydCB7IERmU2xpZGVyRGlyZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL3NsaWRlci9kaXJlY3Rpb24vc2xpZGVyZGlyZWN0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQge1xuICBEZlNpZGVOYXZIZWFkZXJEaXJlY3RpdmUsXG4gIERmU2lkZU5hdkl0ZW1EaXJlY3RpdmUsXG4gIERmU2lkZU5hdkljb25EaXJlY3RpdmVcbn0gZnJvbSAnLi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQnO1xuZXhwb3J0IHsgRGZNYW5hZ2VTaWRlTmF2RGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL3NpZGVuYXYvbWFuYWdlLXNpZGVuYXYuZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmRXhjbHVkZVRyYXBEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9leGNsdWRlVHJhcC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ2hhbmdlQ29udGV4dCB9IGZyb20gJy4vYW5ndWxhci9zbGlkZXIvbGliL2NoYW5nZS1jb250ZXh0JztcbmV4cG9ydCB7IFBvaW50ZXJUeXBlIH0gZnJvbSAnLi9hbmd1bGFyL3NsaWRlci9saWIvcG9pbnRlci10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vYW5ndWxhci9zbGlkZXIvbGliL29wdGlvbnMnO1xuZXhwb3J0IHsgU2xpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyL3NsaWRlci9saWIvc2xpZGVyLmNvbXBvbmVudCc7XG5cbi8vIFNlbGVjdHNcbmV4cG9ydCB7IERmTWFuYWdlTmF2U2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL3NlbGVjdHMvbmF2L21hbmFnZS1uYXYtc2VsZWN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBEZk9wdGlvbkhpZ2hsaWdodERpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9zZWxlY3RzL29wdGlvbi1oaWdobGlnaHQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmTWFuYWdlQmFkZ2VFdmVudHNEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc2VsZWN0cy9ldmVudHMvbWFuYWdlLWJhZGdlLWV2ZW50cy5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZTZWxlY3RNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvc2VsZWN0cy9zZWxlY3QubW9kdWxlJztcblxuLy8gU3RlcHBlclxuZXhwb3J0IHsgRGZTdGVwcGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL3N0ZXBwZXIvc3RlcHBlci5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZTdGVwcGVyU3RlcENvbnRlbnREaXJlY3RpdmUsIERmU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJy4vYW5ndWxhci9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IERmU3RlcHBlclN0ZXBEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc3RlcHBlci9zdGVwcGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgdHlwZSB7XG4gIERmU3RlcHBlclN0ZXAsXG4gIERmU3RlcHBlclN0YXRlLFxuICBEZlN0ZXBwZXJOb3JtYWxpemVkU3RhdGUsXG4gIERmU3RlcHBlck5vcm1hbGl6ZWRTdGVwXG59IGZyb20gJy4vYW5ndWxhci9zdGVwcGVyL3N0ZXBwZXIuc2VydmljZSc7XG5leHBvcnQgeyBEZlN0ZXBwZXJNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvc3RlcHBlci9zdGVwcGVyLm1vZHVsZSc7XG5leHBvcnQgeyBEZlN0ZXBwZXJTZXJ2aWNlLCBEZlN0ZXBUeXBlIH0gZnJvbSAnLi9hbmd1bGFyL3N0ZXBwZXIvc3RlcHBlci5zZXJ2aWNlJztcblxuLy8gVG9vbHRpcFxuZXhwb3J0IHsgRGZUb29sdGlwVHJ1bmNhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvdG9vbHRpcC90cnVuY2F0ZS90b29sdGlwVHJ1bmNhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci90b29sdGlwL3Rvb2x0aXAubW9kdWxlJztcblxuLy8gU2lkZW5hdlxuZXhwb3J0IHsgRGZTaWRlTmF2SXRlbSB9IGZyb20gJy4vYW5ndWxhci9zaWRlbmF2L3NpZGVuYXYuc2VydmljZSc7XG5leHBvcnQgeyBEZlNpZGVOYXZTZXJ2aWNlIH0gZnJvbSAnLi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5zZXJ2aWNlJztcbmV4cG9ydCB7IERmSWZNZWRpYURpcmVjdGl2ZSB9IGZyb20gJy4vYW5ndWxhci9tZWRpYXF1ZXJpZXMvaWZNZWRpYS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgRGZTaWRlTmF2TW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5tb2R1bGUnO1xuZXhwb3J0IHsgRGZTaWRlTmF2Q29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQnO1xuZXhwb3J0IHsgRGZOYXZJdGVtVHlwZSB9IGZyb20gJy4vYW5ndWxhci9zaWRlbmF2L3NpZGVuYXYuc2VydmljZSc7XG5cbi8vIFNpZGVOYXZDb2xsYXBzZVxuZXhwb3J0IHsgRGZTaWRlTmF2Q29sbGFwc2VNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9kZlNpZGVOYXZDb2xsYXBzZS5tb2R1bGUnO1xuZXhwb3J0IHsgRGZTaWRlTmF2Q29sbGFwc2VEaXJlY3RpdmUgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9kZlNpZGVOYXZDb2xsYXBzZSc7XG5leHBvcnQgeyBEZlNpZGVOYXZDb2xsYXBzZVNlcnZpY2UgfSBmcm9tICcuL2FuZ3VsYXIvc2lkZW5hdi9kZlNpZGVOYXZDb2xsYXBzZS5zZXJ2aWNlJztcblxuLy8gTWVkaWEgVXRpbHNcbmV4cG9ydCB7XG4gIEJSRUFLUE9JTlRTX1ZBUlMsXG4gIERGX0JSRUFLUE9JTlRTX1ZBUl9ERUZBVUxULFxuICBEZkJyZWFrcG9pbnRzLFxuICBEZk1lZGlhUXVlcnksXG4gIERmTWVkaWFPYnNlcnZlclxufSBmcm9tICcuL2FuZ3VsYXIvbWVkaWFxdWVyaWVzL21lZGlhVXRpbHMuc2VydmljZSc7XG5cbi8vIE1lZGlhIHNlcnZpY2VcbmV4cG9ydCB7IERmTWVkaWEgfSBmcm9tICcuL2FuZ3VsYXIvbWVkaWFxdWVyaWVzL21lZGlhLnNlcnZpY2UnO1xuZXhwb3J0IHsgRGZNZWRpYU1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9tZWRpYXF1ZXJpZXMvbWVkaWEubW9kdWxlJztcblxuLy8gQ2FyZFxuZXhwb3J0IHsgRGZNYW5hZ2VDYXJkU2VsZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL2NhcmQvbWFuYWdlLWNhcmQtc2VsZWN0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBEZkFkdmFuY2VkQ2FyZE1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9jYXJkL2NhcmQtYWR2YW5jZWQubW9kdWxlJztcblxuLy8gR2xvYmFsXG5leHBvcnQgeyBEZk1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci9kZi5tb2R1bGUnO1xuXG4vLyBUaXRsZSB0cnVuY2F0ZVxuZXhwb3J0IHsgRGZUaXRsZVRydW5jYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmd1bGFyL3V0aWxzL3RpdGxlVHJ1bmNhdGUuZGlyZWN0aXZlJztcbiJdfQ==
@@ -5029,6 +5029,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
5029
5029
  }]
5030
5030
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; } });
5031
5031
 
5032
+ /**
5033
+ * @param element the HTML element
5034
+ * @returns whether the element is overflowing
5035
+ */
5036
+ function hasOverflow(element) {
5037
+ return element?.offsetHeight < element?.scrollHeight || element?.offsetWidth < element?.scrollWidth;
5038
+ }
5039
+
5040
+ /**
5041
+ * DfTitleTruncate directive
5042
+ * It adds the title attribute with the element's inner text as value
5043
+ * when the element is truncated.
5044
+ */
5045
+ class DfTitleTruncateDirective {
5046
+ constructor(elementRef, renderer) {
5047
+ this.elementRef = elementRef;
5048
+ this.renderer = renderer;
5049
+ }
5050
+ ngOnInit() {
5051
+ this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');
5052
+ }
5053
+ ngDoCheck() {
5054
+ const { nativeElement } = this.elementRef;
5055
+ const titleAttributeName = 'title';
5056
+ if (hasOverflow(nativeElement)) {
5057
+ const value = nativeElement.innerText;
5058
+ nativeElement.setAttribute(titleAttributeName, value);
5059
+ }
5060
+ else if (nativeElement.getAttribute(titleAttributeName)) {
5061
+ nativeElement.removeAttribute(titleAttributeName);
5062
+ }
5063
+ }
5064
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfTitleTruncateDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
5065
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfTitleTruncateDirective, isStandalone: true, selector: "[dfTitleTruncate]", exportAs: ["dfTitleTruncate"], ngImport: i0 }); }
5066
+ }
5067
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfTitleTruncateDirective, decorators: [{
5068
+ type: Directive,
5069
+ args: [{
5070
+ exportAs: 'dfTitleTruncate',
5071
+ selector: '[dfTitleTruncate]',
5072
+ standalone: true
5073
+ }]
5074
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; } });
5075
+
5032
5076
  let uniqueId = 0;
5033
5077
  /**
5034
5078
  * SideNav is a component to provide navigation feature with a panel on the side of your page
@@ -5049,11 +5093,19 @@ class DfSideNavListComponent {
5049
5093
  return `df-sidenav-id-${uniqueId};`;
5050
5094
  }
5051
5095
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5052
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavListComponent, isStandalone: true, selector: "df-sidenavlist", inputs: { items: "items", tplIcon: "tplIcon", tplItem: "tplItem", currentItem: "currentItem", id: "id" }, ngImport: i0, template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-truncate text-uppercase text-muted\">{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n", dependencies: [{ kind: "component", type: DfSideNavListComponent, selector: "df-sidenavlist", inputs: ["items", "tplIcon", "tplItem", "currentItem", "id"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: NgbCollapseModule }, { kind: "directive", type: i1.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: DfMediaModule }, { kind: "directive", type: DfIfMediaDirective, selector: "[dfIfMedia]", inputs: ["dfIfMedia"] }, { kind: "ngmodule", type: DfSideNavCollapseModule }, { kind: "directive", type: DfManageSideNavDirective, selector: "[dfManageSideNav]" }] }); }
5096
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavListComponent, isStandalone: true, selector: "df-sidenavlist", inputs: { items: "items", tplIcon: "tplIcon", tplItem: "tplItem", currentItem: "currentItem", id: "id" }, ngImport: i0, template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-uppercase text-muted\" dfTitleTruncate>{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n", dependencies: [{ kind: "component", type: DfSideNavListComponent, selector: "df-sidenavlist", inputs: ["items", "tplIcon", "tplItem", "currentItem", "id"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: NgbCollapseModule }, { kind: "directive", type: i1.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse", "horizontal"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: DfMediaModule }, { kind: "directive", type: DfIfMediaDirective, selector: "[dfIfMedia]", inputs: ["dfIfMedia"] }, { kind: "ngmodule", type: DfSideNavCollapseModule }, { kind: "directive", type: DfManageSideNavDirective, selector: "[dfManageSideNav]" }, { kind: "directive", type: DfTitleTruncateDirective, selector: "[dfTitleTruncate]", exportAs: ["dfTitleTruncate"] }] }); }
5053
5097
  }
5054
5098
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavListComponent, decorators: [{
5055
5099
  type: Component,
5056
- args: [{ selector: 'df-sidenavlist', standalone: true, imports: [CommonModule, NgbCollapseModule, RouterModule, DfMediaModule, DfSideNavCollapseModule, DfManageSideNavDirective], template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap text-truncate\">{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-truncate text-uppercase text-muted\">{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n" }]
5100
+ args: [{ selector: 'df-sidenavlist', standalone: true, imports: [
5101
+ CommonModule,
5102
+ NgbCollapseModule,
5103
+ RouterModule,
5104
+ DfMediaModule,
5105
+ DfSideNavCollapseModule,
5106
+ DfManageSideNavDirective,
5107
+ DfTitleTruncateDirective
5108
+ ], template: "<ul class=\"df-sidenav-list\" [ngbCollapse]=\"currentItem?.isCollapsed ?? false\" [attr.id]=\"id\">\n <li *ngFor=\"let item of items; let i = index\" [ngSwitch]=\"item.type\" dfManageSideNav>\n <ng-container *ngSwitchCase=\"sideNavService.type.subMenus\">\n <ng-template #subMenus>\n <button\n class=\"df-sidenav-item d-flex align-items-center\"\n (click)=\"sideNavService.toggle(item)\"\n type=\"button\"\n [attr.aria-expanded]=\"!item.isCollapsed\"\n [attr.aria-controls]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n [class.df-sidenav-item-withicon]=\"item.icon\"\n >\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n <span\n class=\"ms-3\"\n [class.icon-chevron-down]=\"item.isCollapsed\"\n [class.icon-chevron-up]=\"!item.isCollapsed\"\n ></span>\n <!-- put the chevron as icon directly in the menu -->\n <!-- todo the icon and the minimized -->\n </button>\n <!-- we don't pass the icons as they are not suppose to have ones ??-->\n <df-sidenavlist\n [items]=\"item.subMenus ?? []\"\n [tplItem]=\"tplItem\"\n [currentItem]=\"item\"\n [id]=\"'sidenavControl' + controlledUniqueId.toString() + '-' + i\"\n ></df-sidenavlist>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSubMenus\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n <ng-template #elseSubMenus>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"subMenus\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfSideNavItemContent>\n <ng-template\n *ngIf=\"tplIcon && item.icon; else elseIcon\"\n [ngTemplateOutlet]=\"tplIcon.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n <ng-template #elseIcon>\n <span *ngIf=\"item.icon\" aria-hidden=\"true\" class=\"{{ item.icon }} df-sidenav-icon me-5\"></span>\n </ng-template>\n <span class=\"flex-grow-1 text-nowrap\" dfTitleTruncate>{{ item.title }}</span>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.actionButton\">\n <ng-template #dfSideNavItemButton>\n <button\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n (click)=\"sideNavService.activeItem(item)\"\n [class.active]=\"item.isActive\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </button>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseAction\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n <ng-template #elseAction>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSideNavItemButton\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template #dfRouterTemplate>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n routerLinkActive=\"active\"\n routerLink=\"{{ item.value }}\"\n ariaCurrentWhenActive=\"page\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngSwitchCase=\"sideNavService.type.routerLink\">\n <ng-container *ngIf=\"!item.breakpoints; else elseRouterLink\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n <ng-template #elseRouterLink>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfRouterTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.separator\">\n <ng-template #dfSeparatorTmp>\n <hr class=\"spacing-01\" />\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseSeparator\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n <ng-template #elseSeparator>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfSeparatorTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.template\">\n <ng-template\n *ngIf=\"tplItem\"\n [ngTemplateOutlet]=\"tplItem.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"sideNavService.type.title\">\n <ng-template #dfTitleTmp>\n <div class=\"df-sidenav-item df-sidenav-title d-flex align-items-center flex-grow-1\">\n <span class=\"text-nowrap text-uppercase text-muted\" dfTitleTruncate>{{ item.title }}</span>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseTitle\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n <ng-template #elseTitle>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfTitleTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template #dfLinkDefaultTmp>\n <a\n class=\"df-sidenav-item d-flex align-items-center flex-nowrap\"\n href=\"{{ item.value }}\"\n [class.active]=\"item.isActive && item.type === sideNavService.type.link\"\n [attr.target]=\"item.type === sideNavService.type.externalLink ? '_blank' : ''\"\n >\n <ng-container *ngTemplateOutlet=\"dfSideNavItemContent\"></ng-container>\n </a>\n </ng-template>\n <ng-container *ngIf=\"!item.breakpoints; else elseDefault\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n <ng-template #elseDefault>\n <ng-container *dfIfMedia=\"item.breakpoints!\">\n <ng-container *ngTemplateOutlet=\"dfLinkDefaultTmp\"></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n </li>\n</ul>\n" }]
5057
5109
  }], propDecorators: { items: [{
5058
5110
  type: Input
5059
5111
  }], tplIcon: [{
@@ -5897,10 +5949,7 @@ class DfTooltipTruncateDirective {
5897
5949
  this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');
5898
5950
  }
5899
5951
  ngDoCheck() {
5900
- this.tooltip.disableTooltip = !this.hasOverflow(this.elementRef.nativeElement);
5901
- }
5902
- hasOverflow(element) {
5903
- return element?.offsetHeight < element?.scrollHeight || element?.offsetWidth < element?.scrollWidth;
5952
+ this.tooltip.disableTooltip = !hasOverflow(this.elementRef.nativeElement);
5904
5953
  }
5905
5954
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfTooltipTruncateDirective, deps: [{ token: i1.NgbTooltip }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
5906
5955
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfTooltipTruncateDirective, isStandalone: true, selector: "[dfTooltipTruncate]", exportAs: ["dfTooltipTruncate"], ngImport: i0 }); }
@@ -6120,5 +6169,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
6120
6169
  * Generated bundle index. Do not edit.
6121
6170
  */
6122
6171
 
6123
- export { BREAKPOINTS_VARS, ChangeContext, CloseInputDatePickerDirective, DF_BREAKPOINTS_VAR_DEFAULT, DfAccessibilityModule, DfAdvancedCardModule, DfAdvancedInputModule, DfAlertModule, DfAmadeusIconComponent, DfBreakpoints, DfDatePickerModule, DfDatepickerRangeDirective, DfDatepickerRangeService, DfDefaultSpinnerComponent, DfDirectionDetectionService, DfExcludeTrapDirective, DfFooterModule, DfIconModule, DfIfMediaDirective, DfInputIconDirective, DfInsertIconDirective, DfInsertIconModule, DfManageBadgeEventsDirective, DfManageCardSelectionDirective, DfManageNavSelectDirective, DfManageSideNavDirective, DfMedia, DfMediaModule, DfMediaObserver, DfMediaQuery, DfModalService, DfModule, DfNavItemType, DfOptionHighlightDirective, DfPopoverConfig, DfPopoverModule, DfProgressIndicatorBackdropComponent, DfProgressIndicatorContainerComponent, DfProgressIndicatorContentPosition, DfProgressIndicatorContentProgressBar, DfProgressIndicatorContentSpinner, DfProgressIndicatorContentType, DfProgressIndicatorDirective, DfProgressIndicatorModule, DfProgressIndicatorRef, DfProgressIndicatorService, DfProgressbarComponent, DfProgressbarModule, DfSelectModule, DfSideNavCollapseDirective, DfSideNavCollapseModule, DfSideNavCollapseService, DfSideNavComponent, DfSideNavHeaderDirective, DfSideNavIconDirective, DfSideNavItemDirective, DfSideNavModule, DfSideNavService, DfSliderDirectionDirective, DfSliderModule, DfStepperComponent, DfStepperDirective, DfStepperModule, DfStepperService, DfStepperStepContentDirective, DfStepperStepDirective, DfToastModule, DfTooltipModule, DfTooltipTruncateDirective, DfTriggerClickDirective, LabelType, Options, PointerType, RightToLeftDirectionEnum, SkipLinkDirective, SkipLinksContainerComponent, SliderComponent };
6172
+ export { BREAKPOINTS_VARS, ChangeContext, CloseInputDatePickerDirective, DF_BREAKPOINTS_VAR_DEFAULT, DfAccessibilityModule, DfAdvancedCardModule, DfAdvancedInputModule, DfAlertModule, DfAmadeusIconComponent, DfBreakpoints, DfDatePickerModule, DfDatepickerRangeDirective, DfDatepickerRangeService, DfDefaultSpinnerComponent, DfDirectionDetectionService, DfExcludeTrapDirective, DfFooterModule, DfIconModule, DfIfMediaDirective, DfInputIconDirective, DfInsertIconDirective, DfInsertIconModule, DfManageBadgeEventsDirective, DfManageCardSelectionDirective, DfManageNavSelectDirective, DfManageSideNavDirective, DfMedia, DfMediaModule, DfMediaObserver, DfMediaQuery, DfModalService, DfModule, DfNavItemType, DfOptionHighlightDirective, DfPopoverConfig, DfPopoverModule, DfProgressIndicatorBackdropComponent, DfProgressIndicatorContainerComponent, DfProgressIndicatorContentPosition, DfProgressIndicatorContentProgressBar, DfProgressIndicatorContentSpinner, DfProgressIndicatorContentType, DfProgressIndicatorDirective, DfProgressIndicatorModule, DfProgressIndicatorRef, DfProgressIndicatorService, DfProgressbarComponent, DfProgressbarModule, DfSelectModule, DfSideNavCollapseDirective, DfSideNavCollapseModule, DfSideNavCollapseService, DfSideNavComponent, DfSideNavHeaderDirective, DfSideNavIconDirective, DfSideNavItemDirective, DfSideNavModule, DfSideNavService, DfSliderDirectionDirective, DfSliderModule, DfStepperComponent, DfStepperDirective, DfStepperModule, DfStepperService, DfStepperStepContentDirective, DfStepperStepDirective, DfTitleTruncateDirective, DfToastModule, DfTooltipModule, DfTooltipTruncateDirective, DfTriggerClickDirective, LabelType, Options, PointerType, RightToLeftDirectionEnum, SkipLinkDirective, SkipLinksContainerComponent, SliderComponent };
6124
6173
  //# sourceMappingURL=design-factory.mjs.map