@volo/ngx-lepton-x.core 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/esm2020/index.mjs +3 -1
  2. package/esm2020/lib/abstracts/index.mjs +2 -0
  3. package/esm2020/lib/abstracts/perfect-scrollbar.mjs +8 -0
  4. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +3 -3
  5. package/esm2020/lib/components/navbar/models.mjs +1 -1
  6. package/esm2020/lib/components/navbar/navbar-routes/navbar-routes.component.mjs +26 -9
  7. package/esm2020/lib/components/navbar/navbar.component.mjs +3 -3
  8. package/esm2020/lib/components/navbar/navbar.service.mjs +13 -2
  9. package/esm2020/lib/consts/index.mjs +2 -0
  10. package/esm2020/lib/consts/others-group.mjs +2 -0
  11. package/esm2020/lib/directives/index.mjs +2 -1
  12. package/esm2020/lib/directives/perfect-scrollbar.directive.mjs +34 -0
  13. package/esm2020/lib/lepton-x-core.module.mjs +10 -3
  14. package/esm2020/lib/models/common.mjs +1 -1
  15. package/esm2020/lib/models/index.mjs +2 -1
  16. package/esm2020/lib/models/user.mjs +2 -0
  17. package/esm2020/lib/services/index.mjs +2 -1
  18. package/esm2020/lib/services/perfect-scrollbar.service.mjs +47 -0
  19. package/esm2020/lib/services/user-profile/user-profile.service.mjs +1 -1
  20. package/esm2020/lib/tokens/index.mjs +2 -1
  21. package/esm2020/lib/tokens/perfect-scrollbar.token.mjs +3 -0
  22. package/esm2020/lib/utils/common.mjs +7 -1
  23. package/esm2020/lib/utils/index.mjs +2 -1
  24. package/esm2020/lib/utils/tree-utils.mjs +21 -0
  25. package/fesm2015/volo-ngx-lepton-x.core.mjs +181 -39
  26. package/fesm2015/volo-ngx-lepton-x.core.mjs.map +1 -1
  27. package/fesm2020/volo-ngx-lepton-x.core.mjs +179 -41
  28. package/fesm2020/volo-ngx-lepton-x.core.mjs.map +1 -1
  29. package/index.d.ts +2 -0
  30. package/lib/abstracts/index.d.ts +1 -0
  31. package/lib/abstracts/perfect-scrollbar.d.ts +15 -0
  32. package/lib/components/navbar/models.d.ts +5 -0
  33. package/lib/components/navbar/navbar-routes/navbar-routes.component.d.ts +6 -2
  34. package/lib/components/navbar/navbar.service.d.ts +7 -2
  35. package/lib/consts/index.d.ts +1 -0
  36. package/lib/consts/others-group.d.ts +1 -0
  37. package/lib/directives/index.d.ts +1 -0
  38. package/lib/directives/perfect-scrollbar.directive.d.ts +12 -0
  39. package/lib/models/common.d.ts +5 -0
  40. package/lib/models/index.d.ts +1 -0
  41. package/lib/models/user.d.ts +16 -0
  42. package/lib/services/index.d.ts +1 -0
  43. package/lib/services/perfect-scrollbar.service.d.ts +15 -0
  44. package/lib/services/user-profile/user-profile.service.d.ts +1 -10
  45. package/lib/tokens/index.d.ts +1 -0
  46. package/lib/tokens/perfect-scrollbar.token.d.ts +3 -0
  47. package/lib/utils/common.d.ts +2 -0
  48. package/lib/utils/index.d.ts +1 -0
  49. package/lib/utils/tree-utils.d.ts +8 -0
  50. package/package.json +3 -2
@@ -1,14 +1,21 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, Inject, NgModule, Component, ViewEncapsulation, Input, Directive, Optional, Pipe, EventEmitter, Output, TemplateRef, ContentChild, inject, SecurityContext, HostListener, APP_INITIALIZER, Injector, SkipSelf } from '@angular/core';
2
+ import { inject, InjectionToken, Injectable, Inject, NgModule, Component, ViewEncapsulation, Input, Directive, Optional, Pipe, EventEmitter, Output, TemplateRef, ContentChild, SecurityContext, HostListener, APP_INITIALIZER, Injector, SkipSelf, ElementRef } from '@angular/core';
3
+ import * as i1$1 from '@angular/router';
4
+ import { Router, NavigationEnd, NavigationError, NavigationCancel, RouterModule } from '@angular/router';
3
5
  import * as i1 from '@angular/common';
4
6
  import { CommonModule, DOCUMENT } from '@angular/common';
5
7
  import { map, distinctUntilChanged, filter, take, tap, switchMap, startWith, distinctUntilKeyChanged } from 'rxjs/operators';
6
- import { BehaviorSubject, Subject, of, from, Observable, EMPTY, combineLatest, fromEvent, Subscription } from 'rxjs';
8
+ import { BehaviorSubject, Subject, Observable, from, of, EMPTY, filter as filter$1, combineLatest, fromEvent, Subscription } from 'rxjs';
7
9
  import { FormsModule } from '@angular/forms';
8
- import * as i1$1 from '@angular/router';
9
- import { NavigationEnd, RouterModule } from '@angular/router';
10
+ import PerfectScrollbar from 'perfect-scrollbar';
10
11
  import { DomSanitizer } from '@angular/platform-browser';
11
12
 
13
+ class LpxPerfectScrollbar {
14
+ constructor() {
15
+ this.router = inject(Router);
16
+ }
17
+ }
18
+
12
19
  const LPX_LANGUAGE = new InjectionToken('LPX_LANGUAGE');
13
20
 
14
21
  class DataStore {
@@ -294,6 +301,57 @@ const CONTENT_BEFORE_ROUTES = new InjectionToken('CONTENT_BEFORE_ROUTES');
294
301
  const CONTENT_AFTER_ROUTES = new InjectionToken('CONTENT_AFTER_ROUTES');
295
302
  const LPX_MENU_ITEMS = new InjectionToken('LPX_MENU_ITEMS');
296
303
 
304
+ function sortItems(a, b) {
305
+ if (!a.order) {
306
+ return 1;
307
+ }
308
+ if (!b.order) {
309
+ return -1;
310
+ }
311
+ return a.order - b.order;
312
+ }
313
+ function flatArrayDeepToObject(arr) {
314
+ return arr.reduce((acc, curr) => ({
315
+ ...acc,
316
+ ...(Array.isArray(curr) ? flatArrayDeepToObject(curr) : curr),
317
+ }), {});
318
+ }
319
+ function getStream$(source) {
320
+ return source instanceof Observable
321
+ ? source
322
+ : source instanceof Promise
323
+ ? from(source)
324
+ : of(source);
325
+ }
326
+ function isNullOrUndefined(obj) {
327
+ return obj === null || obj === undefined;
328
+ }
329
+ function isArray(obj) {
330
+ return Array.isArray(obj);
331
+ }
332
+
333
+ function createGroupMap(list, othersGroupKey, skipGroupCheck = false) {
334
+ if (!skipGroupCheck &&
335
+ (!isArray(list) || !list.some((node) => Boolean(node.group))))
336
+ return undefined;
337
+ const mapGroup = new Map();
338
+ for (const node of list) {
339
+ const group = node?.group || othersGroupKey;
340
+ if (typeof group !== 'string') {
341
+ throw new Error(`Invalid group: ${group}`);
342
+ }
343
+ const items = mapGroup.get(group) || [];
344
+ items.push(node);
345
+ mapGroup.set(group, items);
346
+ }
347
+ return mapGroup;
348
+ }
349
+ function getItemsFromGroup(list, pred) {
350
+ return list?.reduce((acc, { items }) => [...acc, ...(pred ? items.filter(pred) : items)], []);
351
+ }
352
+
353
+ const OTHERS_GROUP_KEY = 'AbpUi::OthersGroup';
354
+
297
355
  class NavbarService {
298
356
  constructor(menuItems, route, router) {
299
357
  this.menuItems = menuItems;
@@ -301,6 +359,15 @@ class NavbarService {
301
359
  this.router = router;
302
360
  this.store = new DataStore(this.addContainerLinks(this.menuItems));
303
361
  this.navbarItems$ = this.store.sliceState((state) => state);
362
+ this.groupedNavbarItems$ = this.store
363
+ .sliceState((state) => state)
364
+ .pipe(filter((navItems) => navItems.some((f) => !!f.group)), map((items) => {
365
+ const map = createGroupMap(items, OTHERS_GROUP_KEY) || [];
366
+ return Array.from(map, ([group, items]) => ({
367
+ group,
368
+ items,
369
+ }));
370
+ }));
304
371
  this.expandItemByLink$().pipe(take(1)).subscribe();
305
372
  }
306
373
  addNavbarItems(...menuItems) {
@@ -519,29 +586,6 @@ function checkType(value) {
519
586
  }
520
587
  }
521
588
 
522
- function sortItems(a, b) {
523
- if (!a.order) {
524
- return 1;
525
- }
526
- if (!b.order) {
527
- return -1;
528
- }
529
- return a.order - b.order;
530
- }
531
- function flatArrayDeepToObject(arr) {
532
- return arr.reduce((acc, curr) => ({
533
- ...acc,
534
- ...(Array.isArray(curr) ? flatArrayDeepToObject(curr) : curr),
535
- }), {});
536
- }
537
- function getStream$(source) {
538
- return source instanceof Observable
539
- ? source
540
- : source instanceof Promise
541
- ? from(source)
542
- : of(source);
543
- }
544
-
545
589
  class UserProfileService {
546
590
  constructor() {
547
591
  this.store = new DataStore({});
@@ -680,6 +724,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
680
724
  }]
681
725
  }], ctorParameters: function () { return []; } });
682
726
 
727
+ class LpxPerfectScrollbarService extends LpxPerfectScrollbar {
728
+ setElement(value) {
729
+ if (value) {
730
+ this.elementRef = value;
731
+ }
732
+ }
733
+ setOptions(value) {
734
+ if (value) {
735
+ this.options = value;
736
+ }
737
+ }
738
+ createScrollbar() {
739
+ this.perfectScrollbar = new PerfectScrollbar(this.elementRef.nativeElement, this.options);
740
+ }
741
+ onResize() {
742
+ this.perfectScrollbar.update();
743
+ }
744
+ afterViewInit() {
745
+ this.createScrollbar();
746
+ this.subscription?.unsubscribe();
747
+ this.subscription = this.router.events
748
+ .pipe(filter$1((event) => event instanceof NavigationEnd ||
749
+ event instanceof NavigationError ||
750
+ event instanceof NavigationCancel))
751
+ .subscribe(() => {
752
+ const { element } = this.perfectScrollbar;
753
+ const { topAfterNavigate, leftAfterNavigate } = this.options || {};
754
+ element.scrollTop = topAfterNavigate || 0;
755
+ element.scrollLeft = leftAfterNavigate || 0;
756
+ });
757
+ }
758
+ ngOnDestroy() {
759
+ this.subscription?.unsubscribe();
760
+ }
761
+ }
762
+ LpxPerfectScrollbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LpxPerfectScrollbarService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
763
+ LpxPerfectScrollbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LpxPerfectScrollbarService });
764
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LpxPerfectScrollbarService, decorators: [{
765
+ type: Injectable
766
+ }] });
767
+
683
768
  class TranslatePipe {
684
769
  constructor(lpxThemeTranslateService) {
685
770
  this.lpxThemeTranslateService = lpxThemeTranslateService;
@@ -756,18 +841,31 @@ class NavbarRoutesComponent {
756
841
  constructor(injector) {
757
842
  this.injector = injector;
758
843
  this.routeClick = new EventEmitter();
844
+ this.isExpandedOrSelected = (item) => !!(item.expanded || item.selected);
845
+ }
846
+ get itemsFromGroup() {
847
+ if (!this.groupedItems) {
848
+ return undefined;
849
+ }
850
+ return getItemsFromGroup(this.groupedItems);
759
851
  }
760
852
  onSubnavbarExpand(menuItem, menuItems) {
761
853
  if (menuItem.expanded) {
762
- menuItems
763
- ?.filter((item) => item !== menuItem)
854
+ const items = this.itemsFromGroup || menuItems;
855
+ if (!items) {
856
+ return;
857
+ }
858
+ items
859
+ .filter((item) => item !== menuItem)
764
860
  .forEach((item) => (item.expanded = false));
765
861
  }
766
862
  }
767
863
  onRouteClick(menuItem, menuItems) {
768
- const expandedItems = menuItems?.filter((item) => item.expanded || item.selected);
769
- if (expandedItems) {
770
- expandedItems
864
+ const expandedItems = menuItems?.filter(this.isExpandedOrSelected);
865
+ const expandedGroupItems = this.itemsFromGroup?.filter(this.isExpandedOrSelected);
866
+ const items = expandedGroupItems || expandedItems;
867
+ if (items) {
868
+ items
771
869
  .filter((item) => item !== menuItem)
772
870
  .reduce((acc, item) => {
773
871
  return [...acc, item, ...this.flatChildren(item.children || [])];
@@ -792,11 +890,13 @@ class NavbarRoutesComponent {
792
890
  }
793
891
  }
794
892
  NavbarRoutesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavbarRoutesComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
795
- NavbarRoutesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: NavbarRoutesComponent, selector: "lpx-navbar-routes", inputs: { navbarItems: "navbarItems", routerItem: "routerItem" }, outputs: { routeClick: "routeClick" }, ngImport: i0, template: "<ul class=\"lpx-nav-menu\">\r\n <ng-container *ngFor=\"let item of navbarItems\">\r\n <li class=\"outer-menu-item\" *lpxVisible=\"!item.visible || item.visible(item, injector)\">\r\n <lpx-sub-navbar\r\n [item]=\"item\"\r\n (expand)=\"onSubnavbarExpand($event, navbarItems)\"\r\n (routeClick)=\"onRouteClick($event, navbarItems)\"\r\n [routerItem]=\"routerItem\"\r\n ></lpx-sub-navbar>\r\n </li>\r\n </ng-container>\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: LpxVisibleDirective, selector: "[lpxVisible]", inputs: ["lpxVisible"] }, { kind: "component", type: SubNavbarComponent, selector: "lpx-sub-navbar", inputs: ["item", "routerItem"], outputs: ["routeClick", "expand"] }], encapsulation: i0.ViewEncapsulation.None });
893
+ NavbarRoutesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: NavbarRoutesComponent, selector: "lpx-navbar-routes", inputs: { groupedItems: "groupedItems", navbarItems: "navbarItems", routerItem: "routerItem" }, outputs: { routeClick: "routeClick" }, ngImport: i0, template: "<ul class=\"lpx-nav-menu\">\r\n <ng-container *ngIf=\"groupedItems; else defaultRoute\">\r\n <ng-container *ngFor=\"let item of groupedItems\">\r\n <ng-container\r\n *ngTemplateOutlet=\"groupText; context: { $implicit: item }\"\r\n ></ng-container>\r\n\r\n <ng-container *ngFor=\"let navbarItem of item.items\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: navbarItem }\"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ul>\r\n\r\n<ng-template #defaultRoute>\r\n <ng-container *ngFor=\"let item of navbarItems\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #groupText let-item>\r\n <li\r\n *ngIf=\"item.items.length > 0\"\r\n class=\"group-menu-item hidden-in-hover-trigger\"\r\n >\r\n {{ item.group | lpxTranslate | async }}\r\n </li>\r\n</ng-template>\r\n<ng-template #itemTemplate let-item>\r\n <li\r\n class=\"outer-menu-item\"\r\n *lpxVisible=\"!item.visible || item.visible(item, injector)\"\r\n >\r\n <lpx-sub-navbar\r\n [item]=\"item\"\r\n (expand)=\"onSubnavbarExpand($event, navbarItems)\"\r\n (routeClick)=\"onRouteClick($event, navbarItems)\"\r\n [routerItem]=\"routerItem\"\r\n ></lpx-sub-navbar>\r\n </li>\r\n</ng-template>\r\n", dependencies: [{ 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: LpxVisibleDirective, selector: "[lpxVisible]", inputs: ["lpxVisible"] }, { kind: "component", type: SubNavbarComponent, selector: "lpx-sub-navbar", inputs: ["item", "routerItem"], outputs: ["routeClick", "expand"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "lpxTranslate" }], encapsulation: i0.ViewEncapsulation.None });
796
894
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavbarRoutesComponent, decorators: [{
797
895
  type: Component,
798
- args: [{ selector: 'lpx-navbar-routes', encapsulation: ViewEncapsulation.None, template: "<ul class=\"lpx-nav-menu\">\r\n <ng-container *ngFor=\"let item of navbarItems\">\r\n <li class=\"outer-menu-item\" *lpxVisible=\"!item.visible || item.visible(item, injector)\">\r\n <lpx-sub-navbar\r\n [item]=\"item\"\r\n (expand)=\"onSubnavbarExpand($event, navbarItems)\"\r\n (routeClick)=\"onRouteClick($event, navbarItems)\"\r\n [routerItem]=\"routerItem\"\r\n ></lpx-sub-navbar>\r\n </li>\r\n </ng-container>\r\n</ul>\r\n" }]
799
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { navbarItems: [{
896
+ args: [{ selector: 'lpx-navbar-routes', encapsulation: ViewEncapsulation.None, template: "<ul class=\"lpx-nav-menu\">\r\n <ng-container *ngIf=\"groupedItems; else defaultRoute\">\r\n <ng-container *ngFor=\"let item of groupedItems\">\r\n <ng-container\r\n *ngTemplateOutlet=\"groupText; context: { $implicit: item }\"\r\n ></ng-container>\r\n\r\n <ng-container *ngFor=\"let navbarItem of item.items\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: navbarItem }\"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ul>\r\n\r\n<ng-template #defaultRoute>\r\n <ng-container *ngFor=\"let item of navbarItems\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #groupText let-item>\r\n <li\r\n *ngIf=\"item.items.length > 0\"\r\n class=\"group-menu-item hidden-in-hover-trigger\"\r\n >\r\n {{ item.group | lpxTranslate | async }}\r\n </li>\r\n</ng-template>\r\n<ng-template #itemTemplate let-item>\r\n <li\r\n class=\"outer-menu-item\"\r\n *lpxVisible=\"!item.visible || item.visible(item, injector)\"\r\n >\r\n <lpx-sub-navbar\r\n [item]=\"item\"\r\n (expand)=\"onSubnavbarExpand($event, navbarItems)\"\r\n (routeClick)=\"onRouteClick($event, navbarItems)\"\r\n [routerItem]=\"routerItem\"\r\n ></lpx-sub-navbar>\r\n </li>\r\n</ng-template>\r\n" }]
897
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { groupedItems: [{
898
+ type: Input
899
+ }], navbarItems: [{
800
900
  type: Input
801
901
  }], routerItem: [{
802
902
  type: Input
@@ -821,10 +921,10 @@ class NavbarComponent {
821
921
  }
822
922
  }
823
923
  NavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavbarComponent, deps: [{ token: NavbarService }, { token: i0.Injector }, { token: LayoutService }], target: i0.ɵɵFactoryTarget.Component });
824
- NavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: NavbarComponent, selector: "lpx-navbar", queries: [{ propertyName: "routesTemplate", first: true, predicate: NavbarRoutesDirective, descendants: true, read: TemplateRef }, { propertyName: "logoPanel", first: true, predicate: LogoPanelDirective, descendants: true }], ngImport: i0, template: "<nav class=\"lpx-nav\">\r\n <div class=\"lpx-logo-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"logoPanel?.template || defaultLogo\"\r\n ></ng-container>\r\n <lpx-icon\r\n class=\"menu-collapse-icon hidden-in-hover-trigger\"\r\n iconClass=\"bi bi-filter-left\"\r\n (click)=\"toggleSidebarHover()\"\r\n ></lpx-icon>\r\n </div>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentBefore }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n routesTemplate || defaultRouteTemplate;\r\n context: { $implicit: service.navbarItems$ | async }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentAfter }\r\n \"\r\n ></ng-container>\r\n</nav>\r\n\r\n<ng-template #defaultRouteTemplate let-items>\r\n <lpx-navbar-routes\r\n [navbarItems]=\"items\"\r\n [routerItem]=\"true\"\r\n ></lpx-navbar-routes>\r\n</ng-template>\r\n\r\n<ng-template #customContentTemplate let-contents>\r\n <ng-container *ngFor=\"let component of contents\">\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: injector\"\r\n ></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultLogo>\r\n <lpx-brand-logo></lpx-brand-logo>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BrandLogoComponent, selector: "lpx-brand-logo" }, { kind: "component", type: IconComponent, selector: "lpx-icon", inputs: ["iconClass"] }, { kind: "component", type: NavbarRoutesComponent, selector: "lpx-navbar-routes", inputs: ["navbarItems", "routerItem"], outputs: ["routeClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
924
+ NavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: NavbarComponent, selector: "lpx-navbar", queries: [{ propertyName: "routesTemplate", first: true, predicate: NavbarRoutesDirective, descendants: true, read: TemplateRef }, { propertyName: "logoPanel", first: true, predicate: LogoPanelDirective, descendants: true }], ngImport: i0, template: "<nav class=\"lpx-nav\">\r\n <div class=\"lpx-logo-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"logoPanel?.template || defaultLogo\"\r\n ></ng-container>\r\n <lpx-icon\r\n class=\"menu-collapse-icon hidden-in-hover-trigger\"\r\n iconClass=\"bi bi-filter-left\"\r\n (click)=\"toggleSidebarHover()\"\r\n ></lpx-icon>\r\n </div>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentBefore }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n routesTemplate || defaultRouteTemplate;\r\n context: {\r\n $implicit: service.navbarItems$ | async,\r\n groupItems: service.groupedNavbarItems$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentAfter }\r\n \"\r\n ></ng-container>\r\n</nav>\r\n\r\n<ng-template #defaultRouteTemplate let-items let-groupItems=\"groupItems\">\r\n <lpx-navbar-routes\r\n [navbarItems]=\"items\"\r\n [groupedItems]=\"groupItems\"\r\n [routerItem]=\"true\"\r\n ></lpx-navbar-routes>\r\n</ng-template>\r\n\r\n<ng-template #customContentTemplate let-contents>\r\n <ng-container *ngFor=\"let component of contents\">\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: injector\"\r\n ></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultLogo>\r\n <lpx-brand-logo></lpx-brand-logo>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BrandLogoComponent, selector: "lpx-brand-logo" }, { kind: "component", type: IconComponent, selector: "lpx-icon", inputs: ["iconClass"] }, { kind: "component", type: NavbarRoutesComponent, selector: "lpx-navbar-routes", inputs: ["groupedItems", "navbarItems", "routerItem"], outputs: ["routeClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
825
925
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavbarComponent, decorators: [{
826
926
  type: Component,
827
- args: [{ selector: 'lpx-navbar', encapsulation: ViewEncapsulation.None, template: "<nav class=\"lpx-nav\">\r\n <div class=\"lpx-logo-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"logoPanel?.template || defaultLogo\"\r\n ></ng-container>\r\n <lpx-icon\r\n class=\"menu-collapse-icon hidden-in-hover-trigger\"\r\n iconClass=\"bi bi-filter-left\"\r\n (click)=\"toggleSidebarHover()\"\r\n ></lpx-icon>\r\n </div>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentBefore }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n routesTemplate || defaultRouteTemplate;\r\n context: { $implicit: service.navbarItems$ | async }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentAfter }\r\n \"\r\n ></ng-container>\r\n</nav>\r\n\r\n<ng-template #defaultRouteTemplate let-items>\r\n <lpx-navbar-routes\r\n [navbarItems]=\"items\"\r\n [routerItem]=\"true\"\r\n ></lpx-navbar-routes>\r\n</ng-template>\r\n\r\n<ng-template #customContentTemplate let-contents>\r\n <ng-container *ngFor=\"let component of contents\">\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: injector\"\r\n ></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultLogo>\r\n <lpx-brand-logo></lpx-brand-logo>\r\n</ng-template>\r\n" }]
927
+ args: [{ selector: 'lpx-navbar', encapsulation: ViewEncapsulation.None, template: "<nav class=\"lpx-nav\">\r\n <div class=\"lpx-logo-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"logoPanel?.template || defaultLogo\"\r\n ></ng-container>\r\n <lpx-icon\r\n class=\"menu-collapse-icon hidden-in-hover-trigger\"\r\n iconClass=\"bi bi-filter-left\"\r\n (click)=\"toggleSidebarHover()\"\r\n ></lpx-icon>\r\n </div>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentBefore }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n routesTemplate || defaultRouteTemplate;\r\n context: {\r\n $implicit: service.navbarItems$ | async,\r\n groupItems: service.groupedNavbarItems$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customContentTemplate;\r\n context: { $implicit: contentAfter }\r\n \"\r\n ></ng-container>\r\n</nav>\r\n\r\n<ng-template #defaultRouteTemplate let-items let-groupItems=\"groupItems\">\r\n <lpx-navbar-routes\r\n [navbarItems]=\"items\"\r\n [groupedItems]=\"groupItems\"\r\n [routerItem]=\"true\"\r\n ></lpx-navbar-routes>\r\n</ng-template>\r\n\r\n<ng-template #customContentTemplate let-contents>\r\n <ng-container *ngFor=\"let component of contents\">\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: injector\"\r\n ></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultLogo>\r\n <lpx-brand-logo></lpx-brand-logo>\r\n</ng-template>\r\n" }]
828
928
  }], ctorParameters: function () { return [{ type: NavbarService }, { type: i0.Injector }, { type: LayoutService }]; }, propDecorators: { routesTemplate: [{
829
929
  type: ContentChild,
830
930
  args: [NavbarRoutesDirective, { read: TemplateRef }]
@@ -1049,10 +1149,10 @@ class BreadcrumbComponent {
1049
1149
  }
1050
1150
  }
1051
1151
  BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component });
1052
- BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BreadcrumbComponent, selector: "lpx-breadcrumb", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\r\n <ol class=\"lpx-breadcrumb\">\r\n <ng-container *ngFor=\"let item of service.items$ | async; last as last\">\r\n <li\r\n class=\"lpx-breadcrumb-item\"\r\n (click)=\"onClick(item)\"\r\n [class.expanded]=\"item.expanded\"\r\n (lpxClickOutside)=\"item.expanded = false\"\r\n >\r\n <lpx-icon\r\n class=\"lpx-breadcrumb-item-icon\"\r\n *ngIf=\"item.icon\"\r\n [iconClass]=\"item.icon\"\r\n ></lpx-icon>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n item.children?.length ? textTemplate : linkTemplate;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"item.children?.length && last\">\r\n <lpx-icon\r\n class=\"lpx-caret\"\r\n [iconClass]=\"item.expanded ? icon.chevronUp : icon.chevronDown\"\r\n ></lpx-icon>\r\n <div class=\"lpx-breadcrumb-dropdown\">\r\n <ul class=\"lpx-breadcrumb-dropdown-container\">\r\n <li\r\n class=\"lpx-breadcrumb-dropdown-item\"\r\n *ngFor=\"let child of item.children\"\r\n [class.active]=\"child.active\"\r\n [routerLink]=\"child.link\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n textTemplate;\r\n context: { $implicit: child }\r\n \"\r\n ></ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </li>\r\n <li *ngIf=\"!last\" class=\"lpx-breadcrumb-separator\">\r\n <lpx-icon iconClass=\"bi bi-chevron-right\"></lpx-icon>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.link\"> {{ item.text | toObservable | async }} </a>\r\n</ng-template>\r\n<ng-template #textTemplate let-item>\r\n <span class=\"lpx-breadcrumb-item-text\">\r\n {{ item.text | toObservable | async }}\r\n </span>\r\n</ng-template>\r\n", dependencies: [{ 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: "component", type: IconComponent, selector: "lpx-icon", inputs: ["iconClass"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[lpxClickOutside]", inputs: ["exceptedRefs"], outputs: ["lpxClickOutside"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: ToObservablePipe, name: "toObservable" }], encapsulation: i0.ViewEncapsulation.None });
1152
+ BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BreadcrumbComponent, selector: "lpx-breadcrumb", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\r\n <ol class=\"lpx-breadcrumb\">\r\n <ng-container *ngFor=\"let item of service.items$ | async; last as last\">\r\n <li\r\n class=\"lpx-breadcrumb-item\"\r\n (click)=\"onClick(item)\"\r\n [class.expanded]=\"item.expanded\"\r\n (lpxClickOutside)=\"item.expanded = false\"\r\n >\r\n <lpx-icon\r\n class=\"lpx-breadcrumb-item-icon\"\r\n *ngIf=\"item.icon\"\r\n [iconClass]=\"item.icon\"\r\n ></lpx-icon>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n item.children?.length ? textTemplate : linkTemplate;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n </li>\r\n <li *ngIf=\"!last\" class=\"lpx-breadcrumb-separator\">\r\n <lpx-icon iconClass=\"bi bi-chevron-right\"></lpx-icon>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.link\"> {{ item.text | toObservable | async }} </a>\r\n</ng-template>\r\n<ng-template #textTemplate let-item>\r\n <span class=\"lpx-breadcrumb-item-text\">\r\n {{ item.text | toObservable | async }}\r\n </span>\r\n</ng-template>\r\n", dependencies: [{ 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: "component", type: IconComponent, selector: "lpx-icon", inputs: ["iconClass"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[lpxClickOutside]", inputs: ["exceptedRefs"], outputs: ["lpxClickOutside"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: ToObservablePipe, name: "toObservable" }], encapsulation: i0.ViewEncapsulation.None });
1053
1153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
1054
1154
  type: Component,
1055
- args: [{ selector: 'lpx-breadcrumb', encapsulation: ViewEncapsulation.None, template: "<nav aria-label=\"breadcrumb\">\r\n <ol class=\"lpx-breadcrumb\">\r\n <ng-container *ngFor=\"let item of service.items$ | async; last as last\">\r\n <li\r\n class=\"lpx-breadcrumb-item\"\r\n (click)=\"onClick(item)\"\r\n [class.expanded]=\"item.expanded\"\r\n (lpxClickOutside)=\"item.expanded = false\"\r\n >\r\n <lpx-icon\r\n class=\"lpx-breadcrumb-item-icon\"\r\n *ngIf=\"item.icon\"\r\n [iconClass]=\"item.icon\"\r\n ></lpx-icon>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n item.children?.length ? textTemplate : linkTemplate;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"item.children?.length && last\">\r\n <lpx-icon\r\n class=\"lpx-caret\"\r\n [iconClass]=\"item.expanded ? icon.chevronUp : icon.chevronDown\"\r\n ></lpx-icon>\r\n <div class=\"lpx-breadcrumb-dropdown\">\r\n <ul class=\"lpx-breadcrumb-dropdown-container\">\r\n <li\r\n class=\"lpx-breadcrumb-dropdown-item\"\r\n *ngFor=\"let child of item.children\"\r\n [class.active]=\"child.active\"\r\n [routerLink]=\"child.link\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n textTemplate;\r\n context: { $implicit: child }\r\n \"\r\n ></ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </li>\r\n <li *ngIf=\"!last\" class=\"lpx-breadcrumb-separator\">\r\n <lpx-icon iconClass=\"bi bi-chevron-right\"></lpx-icon>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.link\"> {{ item.text | toObservable | async }} </a>\r\n</ng-template>\r\n<ng-template #textTemplate let-item>\r\n <span class=\"lpx-breadcrumb-item-text\">\r\n {{ item.text | toObservable | async }}\r\n </span>\r\n</ng-template>\r\n" }]
1155
+ args: [{ selector: 'lpx-breadcrumb', encapsulation: ViewEncapsulation.None, template: "<nav aria-label=\"breadcrumb\">\r\n <ol class=\"lpx-breadcrumb\">\r\n <ng-container *ngFor=\"let item of service.items$ | async; last as last\">\r\n <li\r\n class=\"lpx-breadcrumb-item\"\r\n (click)=\"onClick(item)\"\r\n [class.expanded]=\"item.expanded\"\r\n (lpxClickOutside)=\"item.expanded = false\"\r\n >\r\n <lpx-icon\r\n class=\"lpx-breadcrumb-item-icon\"\r\n *ngIf=\"item.icon\"\r\n [iconClass]=\"item.icon\"\r\n ></lpx-icon>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n item.children?.length ? textTemplate : linkTemplate;\r\n context: { $implicit: item }\r\n \"\r\n ></ng-container>\r\n </li>\r\n <li *ngIf=\"!last\" class=\"lpx-breadcrumb-separator\">\r\n <lpx-icon iconClass=\"bi bi-chevron-right\"></lpx-icon>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n\r\n<ng-template #linkTemplate let-item>\r\n <a [routerLink]=\"item.link\"> {{ item.text | toObservable | async }} </a>\r\n</ng-template>\r\n<ng-template #textTemplate let-item>\r\n <span class=\"lpx-breadcrumb-item-text\">\r\n {{ item.text | toObservable | async }}\r\n </span>\r\n</ng-template>\r\n" }]
1056
1156
  }], ctorParameters: function () { return [{ type: BreadcrumbService }]; } });
1057
1157
 
1058
1158
  class LpxClickOutsideModule {
@@ -1456,15 +1556,22 @@ function listenDirectionChange(languageService, styleService) {
1456
1556
  };
1457
1557
  }
1458
1558
 
1559
+ const LPX_PERFECT_SCROLLBAR = new InjectionToken('LPX_PERFECT_SCROLLBAR');
1560
+
1459
1561
  class LpxCoreModule {
1460
1562
  static forRoot(options) {
1461
1563
  return {
1462
1564
  ngModule: LpxCoreModule,
1463
1565
  providers: [
1566
+ {
1567
+ provide: LPX_PERFECT_SCROLLBAR,
1568
+ useClass: LpxPerfectScrollbarService,
1569
+ },
1464
1570
  createResponsiveProvider(options?.responsiveSettings),
1465
1571
  createWindowProvider(options?.window),
1466
1572
  LpxIconModule.forRoot(options?.iconSettings).providers,
1467
- LpxLanguageModule.forRoot(options?.languageSettings).providers,
1573
+ LpxLanguageModule.forRoot(options?.languageSettings)
1574
+ .providers,
1468
1575
  LpxNavbarModule.forRoot(options?.navbarSettings).providers,
1469
1576
  LpxBreadcrumbModule.forRoot().providers,
1470
1577
  LPX_TRANSLATE_PROVIDERS,
@@ -1561,6 +1668,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1561
1668
  }]
1562
1669
  }] });
1563
1670
 
1671
+ class PerfectScrollbarDirective {
1672
+ constructor() {
1673
+ this.elementRef = inject(ElementRef);
1674
+ this.lpxPerfectService = inject(LPX_PERFECT_SCROLLBAR);
1675
+ }
1676
+ set lpxPerfectScrollbarOptions(value) {
1677
+ this.lpxPerfectService.setOptions(value);
1678
+ }
1679
+ onResize() {
1680
+ this.lpxPerfectService.onResize();
1681
+ }
1682
+ ngAfterViewInit() {
1683
+ this.lpxPerfectService.setElement(this.elementRef);
1684
+ this.lpxPerfectService.afterViewInit();
1685
+ }
1686
+ }
1687
+ PerfectScrollbarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PerfectScrollbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1688
+ PerfectScrollbarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: PerfectScrollbarDirective, isStandalone: true, selector: "[lpxPerfectScrollbar]", inputs: { lpxPerfectScrollbarOptions: "lpxPerfectScrollbarOptions" }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 });
1689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PerfectScrollbarDirective, decorators: [{
1690
+ type: Directive,
1691
+ args: [{
1692
+ selector: '[lpxPerfectScrollbar]',
1693
+ standalone: true,
1694
+ }]
1695
+ }], propDecorators: { lpxPerfectScrollbarOptions: [{
1696
+ type: Input
1697
+ }], onResize: [{
1698
+ type: HostListener,
1699
+ args: ['window:resize']
1700
+ }] } });
1701
+
1564
1702
  class BreadcrumbPanelDirective {
1565
1703
  constructor(template) {
1566
1704
  this.template = template;
@@ -1786,5 +1924,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1786
1924
  * Generated bundle index. Do not edit.
1787
1925
  */
1788
1926
 
1789
- export { AvatarComponent, BodyService, BrandLogoComponent, BreadcrumbComponent, BreadcrumbPanelDirective, BreadcrumbRouteListenerService, BreadcrumbService, CONTENT_AFTER_ROUTES, CONTENT_BEFORE_ROUTES, ClickOutsideDirective, ContentPanelDirective, CurrentUserImagePanelDirective, CurrentUserPanelDirective, DataStore, DefaultAuthService, DefaultTranslateService, FooterComponent, FooterLinksService, FooterPanelDirective, ICON_MAP, IconComponent, LEPTON_X_ICON_SET, LPX_AUTH_SERVICE_PROVIDER, LPX_AUTH_SERVICE_TOKEN, LPX_INITIAL_STYLES, LPX_LANGUAGE, LPX_LAYOUT_STYLE_FINAL, LPX_MENU_ITEMS, LPX_RESPONSIVE_BREAKPOINTS_DEFAULTS, LPX_STYLE_FINAL, LPX_STYLE_PROVIDERS, LPX_TRANSLATE_SERVICE_TOKEN, LPX_TRANSLATE_TOKEN, LanguagePanelDirective, LanguageService, LanguageTranslateDefaults, LanguageTranslateKeys, LayoutService, LogoPanelDirective, LpxAvatarModule, LpxBrandLogoModule, LpxBreadcrumbModule, LpxClickOutsideModule, LpxCoreModule, LpxFooterModule, LpxIconModule, LpxLanguageModule, LpxLocalStorageService, LpxNavbarModule, LpxResponsiveModule, LpxThemeTranslateService, LpxTranslateModule, LpxVisibleDirective, MobileNavbarPanelDirective, NavbarComponent, NavbarPanelDirective, NavbarRoutesComponent, NavbarRoutesDirective, NavbarService, NavitemPanelDirective, PanelsModule, RESPONSIVE_BREAKPOINTS, ResponsiveDirective, ResponsiveService, SafeHtmlPipe, SettingsPanelDirective, StyleService, SubNavbarComponent, ToObservableModule, ToObservablePipe, ToolbarPanelDirective, TopNavbarPanelDirective, TranslatePipe, UserProfileService, WINDOW, breadCrumbInit, createDirectionProvider, createResponsiveProvider, createStyleFactory, createWindowProvider, exportedDeclarations, flatArrayDeepToObject, getStream$, listenDirectionChange, loadInitialStyles, sortItems, styleLoadFactory };
1927
+ export { AvatarComponent, BodyService, BrandLogoComponent, BreadcrumbComponent, BreadcrumbPanelDirective, BreadcrumbRouteListenerService, BreadcrumbService, CONTENT_AFTER_ROUTES, CONTENT_BEFORE_ROUTES, ClickOutsideDirective, ContentPanelDirective, CurrentUserImagePanelDirective, CurrentUserPanelDirective, DataStore, DefaultAuthService, DefaultTranslateService, FooterComponent, FooterLinksService, FooterPanelDirective, ICON_MAP, IconComponent, LEPTON_X_ICON_SET, LPX_AUTH_SERVICE_PROVIDER, LPX_AUTH_SERVICE_TOKEN, LPX_INITIAL_STYLES, LPX_LANGUAGE, LPX_LAYOUT_STYLE_FINAL, LPX_MENU_ITEMS, LPX_PERFECT_SCROLLBAR, LPX_RESPONSIVE_BREAKPOINTS_DEFAULTS, LPX_STYLE_FINAL, LPX_STYLE_PROVIDERS, LPX_TRANSLATE_SERVICE_TOKEN, LPX_TRANSLATE_TOKEN, LanguagePanelDirective, LanguageService, LanguageTranslateDefaults, LanguageTranslateKeys, LayoutService, LogoPanelDirective, LpxAvatarModule, LpxBrandLogoModule, LpxBreadcrumbModule, LpxClickOutsideModule, LpxCoreModule, LpxFooterModule, LpxIconModule, LpxLanguageModule, LpxLocalStorageService, LpxNavbarModule, LpxPerfectScrollbar, LpxPerfectScrollbarService, LpxResponsiveModule, LpxThemeTranslateService, LpxTranslateModule, LpxVisibleDirective, MobileNavbarPanelDirective, NavbarComponent, NavbarPanelDirective, NavbarRoutesComponent, NavbarRoutesDirective, NavbarService, NavitemPanelDirective, OTHERS_GROUP_KEY, PanelsModule, PerfectScrollbarDirective, RESPONSIVE_BREAKPOINTS, ResponsiveDirective, ResponsiveService, SafeHtmlPipe, SettingsPanelDirective, StyleService, SubNavbarComponent, ToObservableModule, ToObservablePipe, ToolbarPanelDirective, TopNavbarPanelDirective, TranslatePipe, UserProfileService, WINDOW, breadCrumbInit, createDirectionProvider, createGroupMap, createResponsiveProvider, createStyleFactory, createWindowProvider, exportedDeclarations, flatArrayDeepToObject, getItemsFromGroup, getStream$, isArray, isNullOrUndefined, listenDirectionChange, loadInitialStyles, sortItems, styleLoadFactory };
1790
1928
  //# sourceMappingURL=volo-ngx-lepton-x.core.mjs.map