@tilde-nlp/ngx-menu 4.1.3 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/esm2022/lib/assets/menu-logo.svg.mjs +1 -1
  2. package/esm2022/lib/components/menu-columns/menu-columns.component.mjs +66 -66
  3. package/esm2022/lib/components/menu-icon/menu-icon.component.mjs +23 -23
  4. package/esm2022/lib/components/menu-item-icon/menu-item-icon.component.mjs +74 -74
  5. package/esm2022/lib/components/menu-item-icon/menu.model.mjs +3 -3
  6. package/esm2022/lib/components/menu-item-icon/models/menu-dialog-settings.model.mjs +1 -1
  7. package/esm2022/lib/components/menu-item-icon/models/menu-item-settings.model.mjs +1 -1
  8. package/esm2022/lib/components/menu-item-icon/models/menu-title-placement.model.mjs +6 -6
  9. package/esm2022/lib/components/menu-item-link/menu-item-link.component.mjs +52 -52
  10. package/esm2022/lib/components/menu-item-list/menu-item-list.component.mjs +62 -62
  11. package/esm2022/lib/components/modal-nav-menu/modal-nav-menu.component.mjs +39 -39
  12. package/esm2022/lib/components/nav-base/models/index.mjs +1 -1
  13. package/esm2022/lib/components/nav-base/models/strapi-data-location.enum.mjs +6 -6
  14. package/esm2022/lib/components/nav-base/nav-base.component.mjs +32 -32
  15. package/esm2022/lib/components/side-nav-menu/index.mjs +2 -2
  16. package/esm2022/lib/components/side-nav-menu/models/index.mjs +1 -1
  17. package/esm2022/lib/components/side-nav-menu/models/side-nav-settings.model.mjs +1 -1
  18. package/esm2022/lib/components/side-nav-menu/side-nav-menu.component.mjs +93 -93
  19. package/esm2022/lib/injection-tokens/index.mjs +1 -1
  20. package/esm2022/lib/injection-tokens/menu-shared-config.token.mjs +1 -1
  21. package/esm2022/lib/menu.module.mjs +113 -113
  22. package/esm2022/lib/models/active-menu-item-config.model.mjs +1 -1
  23. package/esm2022/lib/models/active-menu-items.model.mjs +1 -1
  24. package/esm2022/lib/models/custom-menu-item.mjs +1 -1
  25. package/esm2022/lib/models/index.mjs +7 -7
  26. package/esm2022/lib/models/menu-icon-strapi-extension.const.mjs +1 -1
  27. package/esm2022/lib/models/menu-item-group.model.mjs +1 -1
  28. package/esm2022/lib/models/menu-layout-direction.model.mjs +5 -5
  29. package/esm2022/lib/models/menu-shared-config.model.mjs +1 -1
  30. package/esm2022/lib/services/index.mjs +2 -2
  31. package/esm2022/lib/services/menu-items.service.mjs +125 -125
  32. package/esm2022/lib/services/strapi.service.mjs +93 -93
  33. package/esm2022/public-api.mjs +15 -15
  34. package/esm2022/tilde-nlp-ngx-menu.mjs +4 -4
  35. package/fesm2022/tilde-nlp-ngx-menu.mjs +659 -659
  36. package/fesm2022/tilde-nlp-ngx-menu.mjs.map +1 -1
  37. package/index.d.ts +5 -5
  38. package/lib/assets/menu-logo.svg.d.ts +1 -1
  39. package/lib/components/menu-columns/menu-columns.component.d.ts +28 -28
  40. package/lib/components/menu-icon/menu-icon.component.d.ts +10 -10
  41. package/lib/components/menu-item-icon/menu-item-icon.component.d.ts +29 -29
  42. package/lib/components/menu-item-icon/menu.model.d.ts +3 -3
  43. package/lib/components/menu-item-icon/models/menu-dialog-settings.model.d.ts +8 -8
  44. package/lib/components/menu-item-icon/models/menu-item-settings.model.d.ts +6 -6
  45. package/lib/components/menu-item-icon/models/menu-title-placement.model.d.ts +5 -5
  46. package/lib/components/menu-item-link/menu-item-link.component.d.ts +25 -25
  47. package/lib/components/menu-item-list/menu-item-list.component.d.ts +22 -22
  48. package/lib/components/modal-nav-menu/modal-nav-menu.component.d.ts +15 -15
  49. package/lib/components/nav-base/models/index.d.ts +1 -1
  50. package/lib/components/nav-base/models/strapi-data-location.enum.d.ts +5 -5
  51. package/lib/components/nav-base/nav-base.component.d.ts +19 -19
  52. package/lib/components/side-nav-menu/index.d.ts +2 -2
  53. package/lib/components/side-nav-menu/models/index.d.ts +1 -1
  54. package/lib/components/side-nav-menu/models/side-nav-settings.model.d.ts +7 -7
  55. package/lib/components/side-nav-menu/side-nav-menu.component.d.ts +33 -33
  56. package/lib/injection-tokens/index.d.ts +1 -1
  57. package/lib/injection-tokens/menu-shared-config.token.d.ts +1 -1
  58. package/lib/menu.module.d.ts +29 -29
  59. package/lib/models/active-menu-item-config.model.d.ts +4 -4
  60. package/lib/models/active-menu-items.model.d.ts +6 -6
  61. package/lib/models/custom-menu-item.d.ts +20 -20
  62. package/lib/models/index.d.ts +7 -7
  63. package/lib/models/menu-icon-strapi-extension.const.d.ts +1 -1
  64. package/lib/models/menu-item-group.model.d.ts +9 -9
  65. package/lib/models/menu-layout-direction.model.d.ts +4 -4
  66. package/lib/models/menu-shared-config.model.d.ts +21 -21
  67. package/lib/services/index.d.ts +2 -2
  68. package/lib/services/menu-items.service.d.ts +38 -38
  69. package/lib/services/strapi.service.d.ts +20 -20
  70. package/package.json +8 -8
  71. package/public-api.d.ts +12 -12
@@ -1,6 +1,6 @@
1
- export var MenuLayoutDirection;
2
- (function (MenuLayoutDirection) {
3
- MenuLayoutDirection["column"] = "column";
4
- MenuLayoutDirection["row"] = "row";
5
- })(MenuLayoutDirection || (MenuLayoutDirection = {}));
1
+ export var MenuLayoutDirection;
2
+ (function (MenuLayoutDirection) {
3
+ MenuLayoutDirection["column"] = "column";
4
+ MenuLayoutDirection["row"] = "row";
5
+ })(MenuLayoutDirection || (MenuLayoutDirection = {}));
6
6
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1sYXlvdXQtZGlyZWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9tb2RlbHMvbWVudS1sYXlvdXQtZGlyZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sQ0FBTixJQUFZLG1CQUdYO0FBSEQsV0FBWSxtQkFBbUI7SUFDN0Isd0NBQWlCLENBQUE7SUFDakIsa0NBQVcsQ0FBQTtBQUNiLENBQUMsRUFIVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRzlCIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBlbnVtIE1lbnVMYXlvdXREaXJlY3Rpb24ge1xyXG4gIGNvbHVtbiA9IFwiY29sdW1uXCIsXHJcbiAgcm93ID0gXCJyb3dcIlxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zaGFyZWQtY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9tb2RlbHMvbWVudS1zaGFyZWQtY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJc0FjdGl2ZU1hdGNoT3B0aW9ucyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTWVudUl0ZW1Hcm91cCB9IGZyb20gXCIuL21lbnUtaXRlbS1ncm91cC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTdHJhcGlEYXRhTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy9uYXYtYmFzZS9tb2RlbHNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudVNoYXJlZENvbmZpZyB7XHJcbiAgLyoqIGJhc2UgdXJsIGZvciBtZW51IGl0ZW1zIHdpdGggcmVsYXRpdmUgdXJsICovXHJcbiAgYmFzZVVybD86IHN0cmluZztcclxuICAvKiogQ3VzdG9tIGFwcCBJRCBzbyB0aGF0IG1lbnUga25vd3Mgd2hpY2ggZWxlbWVudCBpcyBhY3RpdmUsIGlmIG5vIHJvdXRlciBsaW5rIGlzIGFjdGl2ZSAqL1xyXG4gIGN1c3RvbUlkPzogc3RyaW5nO1xyXG4gIC8qKiBGb3Igc2VsZWN0aW5nIGFjdGl2ZSBlbGVtZW50LCBhY3RpdmUgbWF0Y2ggb3B0aW9ucyBtaWdodCBkcGVuZCBmcm9tIHByb2plY3Qgc3BlY2lmaWNzICovXHJcbiAgYWN0aXZlTWF0Y2hPcHRpb25zPzogSXNBY3RpdmVNYXRjaE9wdGlvbnM7XHJcbiAgLyoqIERpc2FibGluZyBzdHJhcGkgZm9yIGFsbCBtZW51cy4gKi9cclxuICBkaXNhYmxlU3RyYXBpPzogYm9vbGVhbjtcclxuICAvKiogTWVudSBpdGVtIGdyb3VwcyBjb21pbmcgZnJvbSBhcHAuICovXHJcbiAgaXRlbUdyb3Vwcz86IE1lbnVJdGVtR3JvdXBbXTtcclxuICAvKiogU3RyYXBpIGdyb3VwIGJhc2UgKi9cclxuICBzdHJhcGlHcm91cEJhc2U/OiBNZW51SXRlbUdyb3VwW11cclxuICAvKiogSGlkZXMgZWxlbWVudCBpZiBjdXN0b21JZCBpcyB0aGUgc2FtZSBhcyBlbGVtZW50IGN1c3RvbUlEICovXHJcbiAgaGlkZVNlbGVjdGVkQ3VzdG9tSWQ/OiBib29sZWFuO1xyXG4gIC8qKiBXaGVyZSBzdHJhcGkgZGF0YSBzaG91bGQgYmUgcGxhY2VkICovXHJcbiAgc3RyYXBpRGF0YUxvY2F0aW9uPzogU3RyYXBpRGF0YUxvY2F0aW9uO1xyXG59XHJcbiJdfQ==
@@ -1,3 +1,3 @@
1
- export * from './menu-items.service';
2
- export * from './strapi.service';
1
+ export * from './menu-items.service';
2
+ export * from './strapi.service';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVudS1pdGVtcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zdHJhcGkuc2VydmljZSc7Il19
@@ -1,125 +1,125 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
- import { NavigationEnd } from '@angular/router';
3
- import { BehaviorSubject, filter } from 'rxjs';
4
- import { StrapiDataLocation } from '../components/nav-base/models';
5
- import { MENU_SHARED_CONFIG } from '../injection-tokens';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- import * as i2 from "./strapi.service";
9
- export class MenuItemsService {
10
- get activeElements() { return this._activeElements.asObservable(); }
11
- get allRootItems() { return this._allRootItems; }
12
- get strapiGroup() { return this._strapiGroup; }
13
- get customId() { return this.menuSharedConfig?.customId; }
14
- get hideSelectedCustomId() { return this.menuSharedConfig?.hideSelectedCustomId; }
15
- get strapiGroupBase() { return this.menuSharedConfig?.strapiGroupBase; }
16
- get strapiDataLocation() { return this.menuSharedConfig?.strapiDataLocation ?? StrapiDataLocation.END; }
17
- get mergedGroups() { return this._mergedGroups; }
18
- get menuItemGroups() { return this.menuSharedConfig.itemGroups; }
19
- constructor(router, menuSharedConfig, strapiService) {
20
- this.router = router;
21
- this.menuSharedConfig = menuSharedConfig;
22
- this.strapiService = strapiService;
23
- this._activeElements = new BehaviorSubject({});
24
- this.strapiItems = [];
25
- this.isActiveMatchOptions = {
26
- matrixParams: 'exact',
27
- queryParams: 'exact',
28
- paths: 'exact',
29
- fragment: 'exact'
30
- };
31
- this._mergedGroups = [];
32
- this.getStrapiData();
33
- this.subscribeToRouteChanges();
34
- }
35
- subscribeToRouteChanges() {
36
- this.router.events
37
- .pipe(filter(e => e instanceof NavigationEnd))
38
- .subscribe(() => { this.updateActive(); });
39
- }
40
- updateActive() {
41
- const items = this.allRootItems;
42
- const root = this.findActiveElement(items, false);
43
- const child = this.findActiveElement(items, true);
44
- this._activeElements.next({ root, child });
45
- }
46
- /** Finds active element from whole list. RouterLink has priority over custom Id. */
47
- // at this version, child elements should not have customId, since that property comes from strapi and strapi provides only one level structure
48
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
- findActiveElement(items, includeChildren) {
50
- if (!items?.length) {
51
- return undefined;
52
- }
53
- let customIdElement;
54
- for (const item of items) {
55
- // Child element has priority over parent, so need to check if any child is active
56
- if (this.isElementRouterLinkActive(item)) {
57
- // If has children and they are visible, return active child or current item
58
- return includeChildren ? this.findActiveElement(item.children, includeChildren) ?? item : item;
59
- }
60
- // if selected custom id element is hidden, no need to look for it and set it to active;
61
- else if (!this.hideSelectedCustomId && this.isElementCustomIdActive(item)) {
62
- customIdElement = item;
63
- }
64
- else if (includeChildren && item.children?.length) {
65
- const activeChild = this.findActiveElement(item.children, includeChildren);
66
- if (activeChild) {
67
- return activeChild;
68
- }
69
- }
70
- }
71
- return customIdElement;
72
- }
73
- getStrapiData() {
74
- if (!this.menuSharedConfig?.disableStrapi) {
75
- this.strapiService.getMenuItems().subscribe(this.loadData.bind(this));
76
- }
77
- else {
78
- this.loadData([]);
79
- }
80
- }
81
- loadData(data) {
82
- // hide custom id based on input param
83
- this.strapiItems = (this.hideSelectedCustomId && this.customId) ? data.filter(item => item.customId !== this.customId) : data;
84
- this._strapiGroup = {
85
- ...this.strapiGroupBase,
86
- items: this.strapiItems
87
- };
88
- if (this.strapiDataLocation === StrapiDataLocation.START) {
89
- this._mergedGroups = [this.strapiGroup, ...this.menuItemGroups ?? []];
90
- }
91
- else if (this.strapiDataLocation === StrapiDataLocation.END) {
92
- this._mergedGroups = [...this.menuItemGroups ?? [], this.strapiGroup];
93
- }
94
- const allItems = this.mergedGroups.map(map => map.items);
95
- let newArray = [];
96
- allItems.forEach((array) => { newArray = newArray.concat(array); });
97
- this._allRootItems = newArray;
98
- this.updateActive();
99
- }
100
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
- // private isMenuItem(item: any): item is MenuItems {
102
- // return item.customId;
103
- // }
104
- isElementCustomIdActive(element) {
105
- return this.customId && element.customId === this.customId;
106
- }
107
- isElementRouterLinkActive(element) {
108
- const routerLinkActiveOptions = element.routerLinkActiveOptions ?? this.menuSharedConfig.activeMatchOptions ?? this.isActiveMatchOptions;
109
- return this.router.isActive(element.link, routerLinkActiveOptions);
110
- }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuItemsService, deps: [{ token: i1.Router }, { token: MENU_SHARED_CONFIG, optional: true }, { token: i2.StarpiMenuService }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuItemsService, providedIn: 'root' }); }
113
- }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuItemsService, decorators: [{
115
- type: Injectable,
116
- args: [{
117
- providedIn: 'root'
118
- }]
119
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: undefined, decorators: [{
120
- type: Optional
121
- }, {
122
- type: Inject,
123
- args: [MENU_SHARED_CONFIG]
124
- }] }, { type: i2.StarpiMenuService }]; } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBd0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFVekQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBT3BFLElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFakQsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQVMvQyxJQUFZLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLElBQVksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQzFGLElBQVksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBWSxrQkFBa0IsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsSUFBSSxrQkFBa0Is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QyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLFFBQVEsR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFFOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQscURBQXFEO0lBQ3JELDBCQUEwQjtJQUMxQixJQUFJO0lBRUksdUJBQXVCLENBQUMsT0FBdUI7UUFDckQsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM3RCxDQUFDO0lBRU8seUJBQXlCLENBQUMsT0FBdUI7UUFDdkQsTUFBTSx1QkFBdUIsR0FBMEIsT0FBMEIsQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBRW5MLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBN0hVLGdCQUFnQix3Q0ErQkwsa0JBQWtCO21IQS9CN0IsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0NJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJc0FjdGl2ZU1hdGNoT3B0aW9ucywgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RyYXBpRGF0YUxvY2F0aW9uIH0gZnJvbSAnLi4vY29tcG9uZW50cy9uYXYtYmFzZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNRU5VX1NIQVJFRF9DT05GSUcgfSBmcm9tICcuLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgU3RhcnBpTWVudVNlcnZpY2UgfSBmcm9tICcuL3N0cmFwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZlTWVudUl0ZW1zIH0gZnJvbSAnLi4vbW9kZWxzL2FjdGl2ZS1tZW51LWl0ZW1zLm1vZGVsJztcclxuaW1wb3J0IHsgQ3VzdG9tTWVudUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvY3VzdG9tLW1lbnUtaXRlbSc7XHJcbmltcG9ydCB7IE1lbnVTaGFyZWRDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvbWVudS1zaGFyZWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgTWVudUl0ZW1Hcm91cCB9IGZyb20gJy4uL21vZGVscy9tZW51LWl0ZW0tZ3JvdXAubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUl0ZW1zU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZUVsZW1lbnRzOiBCZWhhdmlvclN1YmplY3Q8QWN0aXZlTWVudUl0ZW1zPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xyXG4gIGdldCBhY3RpdmVFbGVtZW50cygpIHsgcmV0dXJuIHRoaXMuX2FjdGl2ZUVsZW1lbnRzLmFzT2JzZXJ2YWJsZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgc3RyYXBpSXRlbXM6IEN1c3RvbU1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RyYXBpR3JvdXAhOiBNZW51SXRlbUdyb3VwO1xyXG5cclxuICBwcml2YXRlIF9hbGxSb290SXRlbXMhOiBDdXN0b21NZW51SXRlbVtdO1xyXG4gIGdldCBhbGxSb290SXRlbXMoKSB7IHJldHVybiB0aGlzLl9hbGxSb290SXRlbXM7IH1cclxuXHJcbiAgZ2V0IHN0cmFwaUdyb3VwKCkgeyByZXR1cm4gdGhpcy5fc3RyYXBpR3JvdXA7IH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc0FjdGl2ZU1hdGNoT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSB7XHJcbiAgICBtYXRyaXhQYXJhbXM6ICdleGFjdCcsXHJcbiAgICBxdWVyeVBhcmFtczogJ2V4YWN0JyxcclxuICAgIHBhdGhzOiAnZXhhY3QnLFxyXG4gICAgZnJhZ21lbnQ6ICdleGFjdCdcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldCBjdXN0b21JZCgpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uY3VzdG9tSWQ7IH1cclxuICBwcml2YXRlIGdldCBoaWRlU2VsZWN0ZWRDdXN0b21JZCgpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uaGlkZVNlbGVjdGVkQ3VzdG9tSWQ7IH1cclxuICBwcml2YXRlIGdldCBzdHJhcGlHcm91cEJhc2UoKSB7IHJldHVybiB0aGlzLm1lbnVTaGFyZWRDb25maWc/LnN0cmFwaUdyb3VwQmFzZTsgfVxyXG4gIHByaXZhdGUgZ2V0IHN0cmFwaURhdGFMb2NhdGlvbigpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uc3RyYXBpRGF0YUxvY2F0aW9uID8/IFN0cmFwaURhdGFMb2NhdGlvbi5FTkQgfVxyXG4gIHByaXZhdGUgX21lcmdlZEdyb3VwczogTWVudUl0ZW1Hcm91cFtdID0gW107XHJcbiAgZ2V0IG1lcmdlZEdyb3VwcygpIHsgcmV0dXJuIHRoaXMuX21lcmdlZEdyb3VwczsgfVxyXG5cclxuICBwcml2YXRlIGdldCBtZW51SXRlbUdyb3VwcygpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZy5pdGVtR3JvdXBzIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9TSEFSRURfQ09ORklHKSBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudVNoYXJlZENvbmZpZzogTWVudVNoYXJlZENvbmZpZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyYXBpU2VydmljZTogU3RhcnBpTWVudVNlcnZpY2UpIHtcclxuICAgIHRoaXMuZ2V0U3RyYXBpRGF0YSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1JvdXRlQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1JvdXRlQ2hhbmdlcygpIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZShmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLnVwZGF0ZUFjdGl2ZSgpOyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQWN0aXZlKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmFsbFJvb3RJdGVtcztcclxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmZpbmRBY3RpdmVFbGVtZW50KGl0ZW1zLCBmYWxzZSk7XHJcbiAgICBjb25zdCBjaGlsZCA9IHRoaXMuZmluZEFjdGl2ZUVsZW1lbnQoaXRlbXMsIHRydWUpO1xyXG4gICAgdGhpcy5fYWN0aXZlRWxlbWVudHMubmV4dCh7IHJvb3QsIGNoaWxkIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEZpbmRzIGFjdGl2ZSBlbGVtZW50IGZyb20gd2hvbGUgbGlzdC4gUm91dGVyTGluayBoYXMgcHJpb3JpdHkgb3ZlciBjdXN0b20gSWQuICovXHJcbiAgLy8gYXQgdGhpcyB2ZXJzaW9uLCBjaGlsZCBlbGVtZW50cyBzaG91bGQgbm90IGhhdmUgY3VzdG9tSWQsIHNpbmNlIHRoYXQgcHJvcGVydHkgY29tZXMgZnJvbSBzdHJhcGkgYW5kIHN0cmFwaSBwcm92aWRlcyBvbmx5IG9uZSBsZXZlbCBzdHJ1Y3R1cmVcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbiAgcHJpdmF0ZSBmaW5kQWN0aXZlRWxlbWVudChpdGVtczogQ3VzdG9tTWVudUl0ZW1bXSB8IHVuZGVmaW5lZCwgaW5jbHVkZUNoaWxkcmVuOiBib29sZWFuKTogQ3VzdG9tTWVudUl0ZW0gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGN1c3RvbUlkRWxlbWVudDogQ3VzdG9tTWVudUl0ZW0gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIC8vIENoaWxkIGVsZW1lbnQgaGFzIHByaW9yaXR5IG92ZXIgcGFyZW50LCBzbyBuZWVkIHRvIGNoZWNrIGlmIGFueSBjaGlsZCBpcyBhY3RpdmVcclxuICAgICAgaWYgKHRoaXMuaXNFbGVtZW50Um91dGVyTGlua0FjdGl2ZShpdGVtKSkge1xyXG4gICAgICAgIC8vIElmIGhhcyBjaGlsZHJlbiBhbmQgdGhleSBhcmUgdmlzaWJsZSwgcmV0dXJuIGFjdGl2ZSBjaGlsZCBvciBjdXJyZW50IGl0ZW1cclxuICAgICAgICByZXR1cm4gaW5jbHVkZUNoaWxkcmVuID8gdGhpcy5maW5kQWN0aXZlRWxlbWVudChpdGVtLmNoaWxkcmVuLCBpbmNsdWRlQ2hpbGRyZW4pID8/IGl0ZW0gOiBpdGVtO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIHNlbGVjdGVkIGN1c3RvbSBpZCBlbGVtZW50IGlzIGhpZGRlbiwgbm8gbmVlZCB0byBsb29rIGZvciBpdCBhbmQgc2V0IGl0IHRvIGFjdGl2ZTtcclxuICAgICAgZWxzZSBpZiAoIXRoaXMuaGlkZVNlbGVjdGVkQ3VzdG9tSWQgJiYgdGhpcy5pc0VsZW1lbnRDdXN0b21JZEFjdGl2ZShpdGVtKSkge1xyXG4gICAgICAgIGN1c3RvbUlkRWxlbWVudCA9IGl0ZW07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaW5jbHVkZUNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGFjdGl2ZUNoaWxkID0gdGhpcy5maW5kQWN0aXZlRWxlbWVudChpdGVtLmNoaWxkcmVuLCBpbmNsdWRlQ2hpbGRyZW4pO1xyXG4gICAgICAgIGlmIChhY3RpdmVDaGlsZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZUNoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1c3RvbUlkRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U3RyYXBpRGF0YSgpIHtcclxuICAgIGlmICghdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5kaXNhYmxlU3RyYXBpKSB7XHJcbiAgICAgIHRoaXMuc3RyYXBpU2VydmljZS5nZXRNZW51SXRlbXMoKS5zdWJzY3JpYmUodGhpcy5sb2FkRGF0YS5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWREYXRhKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZERhdGEoZGF0YTogQ3VzdG9tTWVudUl0ZW1bXSkge1xyXG4gICAgLy8gaGlkZSBjdXN0b20gaWQgYmFzZWQgb24gaW5wdXQgcGFyYW1cclxuICAgIHRoaXMuc3RyYXBpSXRlbXMgPSAodGhpcy5oaWRlU2VsZWN0ZWRDdXN0b21JZCAmJiB0aGlzLmN1c3RvbUlkKSA/IGRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5jdXN0b21JZCAhPT0gdGhpcy5jdXN0b21JZCkgOiBkYXRhO1xyXG4gICAgdGhpcy5fc3RyYXBpR3JvdXAgPSB7XHJcbiAgICAgIC4uLnRoaXMuc3RyYXBpR3JvdXBCYXNlLFxyXG4gICAgICBpdGVtczogdGhpcy5zdHJhcGlJdGVtc1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnN0cmFwaURhdGFMb2NhdGlvbiA9PT0gU3RyYXBpRGF0YUxvY2F0aW9uLlNUQVJUKSB7XHJcbiAgICAgIHRoaXMuX21lcmdlZEdyb3VwcyA9IFt0aGlzLnN0cmFwaUdyb3VwLCAuLi50aGlzLm1lbnVJdGVtR3JvdXBzID8/IFtdXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc3RyYXBpRGF0YUxvY2F0aW9uID09PSBTdHJhcGlEYXRhTG9jYXRpb24uRU5EKSB7XHJcbiAgICAgIHRoaXMuX21lcmdlZEdyb3VwcyA9IFsuLi50aGlzLm1lbnVJdGVtR3JvdXBzID8/IFtdLCB0aGlzLnN0cmFwaUdyb3VwXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhbGxJdGVtcyA9IHRoaXMubWVyZ2VkR3JvdXBzLm1hcChtYXAgPT4gbWFwLml0ZW1zKTtcclxuICAgIGxldCBuZXdBcnJheTogQ3VzdG9tTWVudUl0ZW1bXSA9IFtdO1xyXG4gICAgYWxsSXRlbXMuZm9yRWFjaCgoYXJyYXkpID0+IHsgbmV3QXJyYXkgPSBuZXdBcnJheS5jb25jYXQoYXJyYXkpIH0pO1xyXG4gICAgdGhpcy5fYWxsUm9vdEl0ZW1zID0gbmV3QXJyYXk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVBY3RpdmUoKTtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgLy8gcHJpdmF0ZSBpc01lbnVJdGVtKGl0ZW06IGFueSk6IGl0ZW0gaXMgTWVudUl0ZW1zIHtcclxuICAvLyAgIHJldHVybiBpdGVtLmN1c3RvbUlkO1xyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0VsZW1lbnRDdXN0b21JZEFjdGl2ZShlbGVtZW50OiBDdXN0b21NZW51SXRlbSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tSWQgJiYgZWxlbWVudC5jdXN0b21JZCA9PT0gdGhpcy5jdXN0b21JZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFbGVtZW50Um91dGVyTGlua0FjdGl2ZShlbGVtZW50OiBDdXN0b21NZW51SXRlbSkge1xyXG4gICAgY29uc3Qgcm91dGVyTGlua0FjdGl2ZU9wdGlvbnM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0gKGVsZW1lbnQgYXMgQ3VzdG9tTWVudUl0ZW0pLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zID8/IHRoaXMubWVudVNoYXJlZENvbmZpZy5hY3RpdmVNYXRjaE9wdGlvbnMgPz8gdGhpcy5pc0FjdGl2ZU1hdGNoT3B0aW9ucztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuaXNBY3RpdmUoZWxlbWVudC5saW5rLCByb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import { BehaviorSubject, filter } from 'rxjs';
4
+ import { StrapiDataLocation } from '../components/nav-base/models';
5
+ import { MENU_SHARED_CONFIG } from '../injection-tokens';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "./strapi.service";
9
+ export class MenuItemsService {
10
+ get activeElements() { return this._activeElements.asObservable(); }
11
+ get allRootItems() { return this._allRootItems; }
12
+ get strapiGroup() { return this._strapiGroup; }
13
+ get customId() { return this.menuSharedConfig?.customId; }
14
+ get hideSelectedCustomId() { return this.menuSharedConfig?.hideSelectedCustomId; }
15
+ get strapiGroupBase() { return this.menuSharedConfig?.strapiGroupBase; }
16
+ get strapiDataLocation() { return this.menuSharedConfig?.strapiDataLocation ?? StrapiDataLocation.END; }
17
+ get mergedGroups() { return this._mergedGroups; }
18
+ get menuItemGroups() { return this.menuSharedConfig.itemGroups; }
19
+ constructor(router, menuSharedConfig, strapiService) {
20
+ this.router = router;
21
+ this.menuSharedConfig = menuSharedConfig;
22
+ this.strapiService = strapiService;
23
+ this._activeElements = new BehaviorSubject({});
24
+ this.strapiItems = [];
25
+ this.isActiveMatchOptions = {
26
+ matrixParams: 'exact',
27
+ queryParams: 'exact',
28
+ paths: 'exact',
29
+ fragment: 'exact'
30
+ };
31
+ this._mergedGroups = [];
32
+ this.getStrapiData();
33
+ this.subscribeToRouteChanges();
34
+ }
35
+ subscribeToRouteChanges() {
36
+ this.router.events
37
+ .pipe(filter(e => e instanceof NavigationEnd))
38
+ .subscribe(() => { this.updateActive(); });
39
+ }
40
+ updateActive() {
41
+ const items = this.allRootItems;
42
+ const root = this.findActiveElement(items, false);
43
+ const child = this.findActiveElement(items, true);
44
+ this._activeElements.next({ root, child });
45
+ }
46
+ /** Finds active element from whole list. RouterLink has priority over custom Id. */
47
+ // at this version, child elements should not have customId, since that property comes from strapi and strapi provides only one level structure
48
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
+ findActiveElement(items, includeChildren) {
50
+ if (!items?.length) {
51
+ return undefined;
52
+ }
53
+ let customIdElement;
54
+ for (const item of items) {
55
+ // Child element has priority over parent, so need to check if any child is active
56
+ if (this.isElementRouterLinkActive(item)) {
57
+ // If has children and they are visible, return active child or current item
58
+ return includeChildren ? this.findActiveElement(item.children, includeChildren) ?? item : item;
59
+ }
60
+ // if selected custom id element is hidden, no need to look for it and set it to active;
61
+ else if (!this.hideSelectedCustomId && this.isElementCustomIdActive(item)) {
62
+ customIdElement = item;
63
+ }
64
+ else if (includeChildren && item.children?.length) {
65
+ const activeChild = this.findActiveElement(item.children, includeChildren);
66
+ if (activeChild) {
67
+ return activeChild;
68
+ }
69
+ }
70
+ }
71
+ return customIdElement;
72
+ }
73
+ getStrapiData() {
74
+ if (!this.menuSharedConfig?.disableStrapi) {
75
+ this.strapiService.getMenuItems().subscribe(this.loadData.bind(this));
76
+ }
77
+ else {
78
+ this.loadData([]);
79
+ }
80
+ }
81
+ loadData(data) {
82
+ // hide custom id based on input param
83
+ this.strapiItems = (this.hideSelectedCustomId && this.customId) ? data.filter(item => item.customId !== this.customId) : data;
84
+ this._strapiGroup = {
85
+ ...this.strapiGroupBase,
86
+ items: this.strapiItems
87
+ };
88
+ if (this.strapiDataLocation === StrapiDataLocation.START) {
89
+ this._mergedGroups = [this.strapiGroup, ...this.menuItemGroups ?? []];
90
+ }
91
+ else if (this.strapiDataLocation === StrapiDataLocation.END) {
92
+ this._mergedGroups = [...this.menuItemGroups ?? [], this.strapiGroup];
93
+ }
94
+ const allItems = this.mergedGroups.map(map => map.items);
95
+ let newArray = [];
96
+ allItems.forEach((array) => { newArray = newArray.concat(array); });
97
+ this._allRootItems = newArray;
98
+ this.updateActive();
99
+ }
100
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
+ // private isMenuItem(item: any): item is MenuItems {
102
+ // return item.customId;
103
+ // }
104
+ isElementCustomIdActive(element) {
105
+ return this.customId && element.customId === this.customId;
106
+ }
107
+ isElementRouterLinkActive(element) {
108
+ const routerLinkActiveOptions = element.routerLinkActiveOptions ?? this.menuSharedConfig.activeMatchOptions ?? this.isActiveMatchOptions;
109
+ return this.router.isActive(element.link, routerLinkActiveOptions);
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuItemsService, deps: [{ token: i1.Router }, { token: MENU_SHARED_CONFIG, optional: true }, { token: i2.StarpiMenuService }], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuItemsService, providedIn: 'root' }); }
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuItemsService, decorators: [{
115
+ type: Injectable,
116
+ args: [{
117
+ providedIn: 'root'
118
+ }]
119
+ }], ctorParameters: () => [{ type: i1.Router }, { type: undefined, decorators: [{
120
+ type: Optional
121
+ }, {
122
+ type: Inject,
123
+ args: [MENU_SHARED_CONFIG]
124
+ }] }, { type: i2.StarpiMenuService }] });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBd0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFVekQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBT3BFLElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFakQsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQVMvQyxJQUFZLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLElBQVksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQzFGLElBQVksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBWSxrQkFBa0IsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsSUFBSSxrQkFBa0Is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IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdHJhcGlEYXRhTG9jYXRpb24gfSBmcm9tICcuLi9jb21wb25lbnRzL25hdi1iYXNlL21vZGVscyc7XHJcbmltcG9ydCB7IE1FTlVfU0hBUkVEX0NPTkZJRyB9IGZyb20gJy4uL2luamVjdGlvbi10b2tlbnMnO1xyXG5pbXBvcnQgeyBTdGFycGlNZW51U2VydmljZSB9IGZyb20gJy4vc3RyYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmVNZW51SXRlbXMgfSBmcm9tICcuLi9tb2RlbHMvYWN0aXZlLW1lbnUtaXRlbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBDdXN0b21NZW51SXRlbSB9IGZyb20gJy4uL21vZGVscy9jdXN0b20tbWVudS1pdGVtJztcclxuaW1wb3J0IHsgTWVudVNoYXJlZENvbmZpZyB9IGZyb20gJy4uL21vZGVscy9tZW51LXNoYXJlZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBNZW51SXRlbUdyb3VwIH0gZnJvbSAnLi4vbW9kZWxzL21lbnUtaXRlbS1ncm91cC5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51SXRlbXNTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlRWxlbWVudHM6IEJlaGF2aW9yU3ViamVjdDxBY3RpdmVNZW51SXRlbXM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XHJcbiAgZ2V0IGFjdGl2ZUVsZW1lbnRzKCkgeyByZXR1cm4gdGhpcy5fYWN0aXZlRWxlbWVudHMuYXNPYnNlcnZhYmxlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBzdHJhcGlJdGVtczogQ3VzdG9tTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9zdHJhcGlHcm91cCE6IE1lbnVJdGVtR3JvdXA7XHJcblxyXG4gIHByaXZhdGUgX2FsbFJvb3RJdGVtcyE6IEN1c3RvbU1lbnVJdGVtW107XHJcbiAgZ2V0IGFsbFJvb3RJdGVtcygpIHsgcmV0dXJuIHRoaXMuX2FsbFJvb3RJdGVtczsgfVxyXG5cclxuICBnZXQgc3RyYXBpR3JvdXAoKSB7IHJldHVybiB0aGlzLl9zdHJhcGlHcm91cDsgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGlzQWN0aXZlTWF0Y2hPcHRpb25zOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICAgIG1hdHJpeFBhcmFtczogJ2V4YWN0JyxcclxuICAgIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gICAgcGF0aHM6ICdleGFjdCcsXHJcbiAgICBmcmFnbWVudDogJ2V4YWN0J1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0IGN1c3RvbUlkKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5jdXN0b21JZDsgfVxyXG4gIHByaXZhdGUgZ2V0IGhpZGVTZWxlY3RlZEN1c3RvbUlkKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5oaWRlU2VsZWN0ZWRDdXN0b21JZDsgfVxyXG4gIHByaXZhdGUgZ2V0IHN0cmFwaUdyb3VwQmFzZSgpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uc3RyYXBpR3JvdXBCYXNlOyB9XHJcbiAgcHJpdmF0ZSBnZXQgc3RyYXBpRGF0YUxvY2F0aW9uKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5zdHJhcGlEYXRhTG9jYXRpb24gPz8gU3RyYXBpRGF0YUxvY2F0aW9uLkVORCB9XHJcbiAgcHJpdmF0ZSBfbWVyZ2VkR3JvdXBzOiBNZW51SXRlbUdyb3VwW10gPSBbXTtcclxuICBnZXQgbWVyZ2VkR3JvdXBzKCkgeyByZXR1cm4gdGhpcy5fbWVyZ2VkR3JvdXBzOyB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IG1lbnVJdGVtR3JvdXBzKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnLml0ZW1Hcm91cHMgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNRU5VX1NIQVJFRF9DT05GSUcpIHByb3RlY3RlZCByZWFkb25seSBtZW51U2hhcmVkQ29uZmlnOiBNZW51U2hhcmVkQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHJhcGlTZXJ2aWNlOiBTdGFycGlNZW51U2VydmljZSkge1xyXG4gICAgdGhpcy5nZXRTdHJhcGlEYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvUm91dGVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvUm91dGVDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMudXBkYXRlQWN0aXZlKCk7IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuYWxsUm9vdEl0ZW1zO1xyXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZmluZEFjdGl2ZUVsZW1lbnQoaXRlbXMsIGZhbHNlKTtcclxuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5maW5kQWN0aXZlRWxlbWVudChpdGVtcywgdHJ1ZSk7XHJcbiAgICB0aGlzLl9hY3RpdmVFbGVtZW50cy5uZXh0KHsgcm9vdCwgY2hpbGQgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogRmluZHMgYWN0aXZlIGVsZW1lbnQgZnJvbSB3aG9sZSBsaXN0LiBSb3V0ZXJMaW5rIGhhcyBwcmlvcml0eSBvdmVyIGN1c3RvbSBJZC4gKi9cclxuICAvLyBhdCB0aGlzIHZlcnNpb24sIGNoaWxkIGVsZW1lbnRzIHNob3VsZCBub3QgaGF2ZSBjdXN0b21JZCwgc2luY2UgdGhhdCBwcm9wZXJ0eSBjb21lcyBmcm9tIHN0cmFwaSBhbmQgc3RyYXBpIHByb3ZpZGVzIG9ubHkgb25lIGxldmVsIHN0cnVjdHVyZVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICBwcml2YXRlIGZpbmRBY3RpdmVFbGVtZW50KGl0ZW1zOiBDdXN0b21NZW51SXRlbVtdIHwgdW5kZWZpbmVkLCBpbmNsdWRlQ2hpbGRyZW46IGJvb2xlYW4pOiBDdXN0b21NZW51SXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY3VzdG9tSWRFbGVtZW50OiBDdXN0b21NZW51SXRlbSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgLy8gQ2hpbGQgZWxlbWVudCBoYXMgcHJpb3JpdHkgb3ZlciBwYXJlbnQsIHNvIG5lZWQgdG8gY2hlY2sgaWYgYW55IGNoaWxkIGlzIGFjdGl2ZVxyXG4gICAgICBpZiAodGhpcy5pc0VsZW1lbnRSb3V0ZXJMaW5rQWN0aXZlKGl0ZW0pKSB7XHJcbiAgICAgICAgLy8gSWYgaGFzIGNoaWxkcmVuIGFuZCB0aGV5IGFyZSB2aXNpYmxlLCByZXR1cm4gYWN0aXZlIGNoaWxkIG9yIGN1cnJlbnQgaXRlbVxyXG4gICAgICAgIHJldHVybiBpbmNsdWRlQ2hpbGRyZW4gPyB0aGlzLmZpbmRBY3RpdmVFbGVtZW50KGl0ZW0uY2hpbGRyZW4sIGluY2x1ZGVDaGlsZHJlbikgPz8gaXRlbSA6IGl0ZW07XHJcbiAgICAgIH1cclxuICAgICAgLy8gaWYgc2VsZWN0ZWQgY3VzdG9tIGlkIGVsZW1lbnQgaXMgaGlkZGVuLCBubyBuZWVkIHRvIGxvb2sgZm9yIGl0IGFuZCBzZXQgaXQgdG8gYWN0aXZlO1xyXG4gICAgICBlbHNlIGlmICghdGhpcy5oaWRlU2VsZWN0ZWRDdXN0b21JZCAmJiB0aGlzLmlzRWxlbWVudEN1c3RvbUlkQWN0aXZlKGl0ZW0pKSB7XHJcbiAgICAgICAgY3VzdG9tSWRFbGVtZW50ID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpbmNsdWRlQ2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlQ2hpbGQgPSB0aGlzLmZpbmRBY3RpdmVFbGVtZW50KGl0ZW0uY2hpbGRyZW4sIGluY2x1ZGVDaGlsZHJlbik7XHJcbiAgICAgICAgaWYgKGFjdGl2ZUNoaWxkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYWN0aXZlQ2hpbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3VzdG9tSWRFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdHJhcGlEYXRhKCkge1xyXG4gICAgaWYgKCF0aGlzLm1lbnVTaGFyZWRDb25maWc/LmRpc2FibGVTdHJhcGkpIHtcclxuICAgICAgdGhpcy5zdHJhcGlTZXJ2aWNlLmdldE1lbnVJdGVtcygpLnN1YnNjcmliZSh0aGlzLmxvYWREYXRhLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZERhdGEoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGF0YShkYXRhOiBDdXN0b21NZW51SXRlbVtdKSB7XHJcbiAgICAvLyBoaWRlIGN1c3RvbSBpZCBiYXNlZCBvbiBpbnB1dCBwYXJhbVxyXG4gICAgdGhpcy5zdHJhcGlJdGVtcyA9ICh0aGlzLmhpZGVTZWxlY3RlZEN1c3RvbUlkICYmIHRoaXMuY3VzdG9tSWQpID8gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmN1c3RvbUlkICE9PSB0aGlzLmN1c3RvbUlkKSA6IGRhdGE7XHJcbiAgICB0aGlzLl9zdHJhcGlHcm91cCA9IHtcclxuICAgICAgLi4udGhpcy5zdHJhcGlHcm91cEJhc2UsXHJcbiAgICAgIGl0ZW1zOiB0aGlzLnN0cmFwaUl0ZW1zXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RyYXBpRGF0YUxvY2F0aW9uID09PSBTdHJhcGlEYXRhTG9jYXRpb24uU1RBUlQpIHtcclxuICAgICAgdGhpcy5fbWVyZ2VkR3JvdXBzID0gW3RoaXMuc3RyYXBpR3JvdXAsIC4uLnRoaXMubWVudUl0ZW1Hcm91cHMgPz8gW11dO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zdHJhcGlEYXRhTG9jYXRpb24gPT09IFN0cmFwaURhdGFMb2NhdGlvbi5FTkQpIHtcclxuICAgICAgdGhpcy5fbWVyZ2VkR3JvdXBzID0gWy4uLnRoaXMubWVudUl0ZW1Hcm91cHMgPz8gW10sIHRoaXMuc3RyYXBpR3JvdXBdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFsbEl0ZW1zID0gdGhpcy5tZXJnZWRHcm91cHMubWFwKG1hcCA9PiBtYXAuaXRlbXMpO1xyXG4gICAgbGV0IG5ld0FycmF5OiBDdXN0b21NZW51SXRlbVtdID0gW107XHJcbiAgICBhbGxJdGVtcy5mb3JFYWNoKChhcnJheSkgPT4geyBuZXdBcnJheSA9IG5ld0FycmF5LmNvbmNhdChhcnJheSkgfSk7XHJcbiAgICB0aGlzLl9hbGxSb290SXRlbXMgPSBuZXdBcnJheTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUFjdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAvLyBwcml2YXRlIGlzTWVudUl0ZW0oaXRlbTogYW55KTogaXRlbSBpcyBNZW51SXRlbXMge1xyXG4gIC8vICAgcmV0dXJuIGl0ZW0uY3VzdG9tSWQ7XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIGlzRWxlbWVudEN1c3RvbUlkQWN0aXZlKGVsZW1lbnQ6IEN1c3RvbU1lbnVJdGVtKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXN0b21JZCAmJiBlbGVtZW50LmN1c3RvbUlkID09PSB0aGlzLmN1c3RvbUlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0VsZW1lbnRSb3V0ZXJMaW5rQWN0aXZlKGVsZW1lbnQ6IEN1c3RvbU1lbnVJdGVtKSB7XHJcbiAgICBjb25zdCByb3V0ZXJMaW5rQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSAoZWxlbWVudCBhcyBDdXN0b21NZW51SXRlbSkucm91dGVyTGlua0FjdGl2ZU9wdGlvbnMgPz8gdGhpcy5tZW51U2hhcmVkQ29uZmlnLmFjdGl2ZU1hdGNoT3B0aW9ucyA/PyB0aGlzLmlzQWN0aXZlTWF0Y2hPcHRpb25zO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZShlbGVtZW50LmxpbmssIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,93 +1,93 @@
1
- import { Inject, Injectable, Optional } from "@angular/core";
2
- import { STRAPI_API_CONFIG_TOKEN } from "@tilde-nlp/ngx-strapi";
3
- import { map } from "rxjs";
4
- import { CollectionTypes } from "@tilde-nlp/strapi-models";
5
- import { MENU_ICON_STRAPI_EXTENSION } from "../models/menu-icon-strapi-extension.const";
6
- import { MENU_SHARED_CONFIG } from "../injection-tokens/menu-shared-config.token";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@tilde-nlp/ngx-strapi";
9
- import * as i2 from "@tilde-nlp/ngx-common";
10
- export class StarpiMenuService {
11
- constructor(strapiSubscription, menuConfig, strapiConfig, iconService) {
12
- this.strapiSubscription = strapiSubscription;
13
- this.menuConfig = menuConfig;
14
- this.iconService = iconService;
15
- this.svgIconNamePrefix = "strapi-menu-icon-";
16
- this.imgBaseUrl = '';
17
- this.imgBaseUrl = strapiConfig.apiUrl;
18
- }
19
- getMenuItems() {
20
- const responseObs = this.strapiSubscription.subscribeCollectionType(CollectionTypes.MENU_ITEMS)
21
- .pipe(map((items) => {
22
- // Remove disabled items so they are not processed later.
23
- const convertedItems = [];
24
- if (!items || items.length === 0) {
25
- return convertedItems;
26
- }
27
- items = items.filter(item => !item.disabled);
28
- items.forEach((menu) => {
29
- menu.link = this.addBaseUrlIfNecessary(menu.link);
30
- const originalMenuIcon = menu.icon.data.attributes;
31
- if (originalMenuIcon.url.startsWith('/')) {
32
- originalMenuIcon.url = this.imgBaseUrl + originalMenuIcon.url;
33
- }
34
- if (originalMenuIcon.ext === MENU_ICON_STRAPI_EXTENSION) {
35
- // add custom prefix so that it is not easy to mix with other icons in registry
36
- menu.icon.data.attributes.name = this.svgIconNamePrefix + originalMenuIcon.name;
37
- this.iconService.registerIconFromUrl(originalMenuIcon.name, originalMenuIcon.url);
38
- }
39
- convertedItems.push(this.convertToCustomMenuItem(menu));
40
- });
41
- return convertedItems;
42
- }));
43
- return responseObs;
44
- }
45
- unsubscribe() {
46
- this.strapiSubscription.unsubscribe(CollectionTypes.MENU_ITEMS);
47
- }
48
- addBaseUrlIfNecessary(link) {
49
- if (!this.menuConfig?.baseUrl) {
50
- return link;
51
- }
52
- try {
53
- new URL(link);
54
- // eslint-disable-next-line no-empty
55
- }
56
- catch { }
57
- try {
58
- return new URL(link, this.menuConfig.baseUrl).href;
59
- }
60
- catch {
61
- return link;
62
- }
63
- }
64
- convertToCustomMenuItem(item) {
65
- return {
66
- icon: item.icon.data.attributes.name,
67
- link: item.link,
68
- title: item.title,
69
- externalLink: item.externalLink,
70
- // Material icons should not come from strapi
71
- materialIcon: false,
72
- plausibleEvent: item.plausibleEvent,
73
- customId: item.customId
74
- };
75
- }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StarpiMenuService, deps: [{ token: i1.StrapiSubscriptionService }, { token: MENU_SHARED_CONFIG, optional: true }, { token: STRAPI_API_CONFIG_TOKEN }, { token: i2.IconService }], target: i0.ɵɵFactoryTarget.Injectable }); }
77
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StarpiMenuService, providedIn: 'root' }); }
78
- }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StarpiMenuService, decorators: [{
80
- type: Injectable,
81
- args: [{
82
- providedIn: 'root'
83
- }]
84
- }], ctorParameters: function () { return [{ type: i1.StrapiSubscriptionService }, { type: undefined, decorators: [{
85
- type: Optional
86
- }, {
87
- type: Inject,
88
- args: [MENU_SHARED_CONFIG]
89
- }] }, { type: undefined, decorators: [{
90
- type: Inject,
91
- args: [STRAPI_API_CONFIG_TOKEN]
92
- }] }, { type: i2.IconService }]; } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL3NlcnZpY2VzL3N0cmFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQThDLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUcsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFLbEYsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUE2QixrQkFBNkMsRUFDZixVQUE0QixFQUNwRCxZQUE2QixFQUM3QyxXQUF3QjtRQUhkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUVwRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQU5sQyxzQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztRQUNqRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBTWQsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFZLGVBQWUsQ0FBQyxVQUFVLENBQUM7YUFDdkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQXlCLEVBQUUsRUFBRTtZQUN0Qyx5REFBeUQ7WUFFekQsTUFBTSxjQUFjLEdBQXFCLEVBQUUsQ0FBQztZQUM1QyxJ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Q29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tIFwiQHRpbGRlLW5scC9uZ3gtY29tbW9uXCI7XHJcbmltcG9ydCB7IFN0cmFwaUFwaUNvbmZpZywgU3RyYXBpU3Vic2NyaXB0aW9uU2VydmljZSwgU1RSQVBJX0FQSV9DT05GSUdfVE9LRU4gfSBmcm9tIFwiQHRpbGRlLW5scC9uZ3gtc3RyYXBpXCI7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbGxlY3Rpb25UeXBlcywgTWVudUl0ZW1zIH0gZnJvbSBcIkB0aWxkZS1ubHAvc3RyYXBpLW1vZGVsc1wiO1xyXG5pbXBvcnQgeyBDdXN0b21NZW51SXRlbSB9IGZyb20gXCIuLi9tb2RlbHMvY3VzdG9tLW1lbnUtaXRlbVwiO1xyXG5pbXBvcnQgeyBNRU5VX0lDT05fU1RSQVBJX0VYVEVOU0lPTiB9IGZyb20gXCIuLi9tb2RlbHMvbWVudS1pY29uLXN0cmFwaS1leHRlbnNpb24uY29uc3RcIjtcclxuaW1wb3J0IHsgTWVudVNoYXJlZENvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvbWVudS1zaGFyZWQtY29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IE1FTlVfU0hBUkVEX0NPTkZJRyB9IGZyb20gXCIuLi9pbmplY3Rpb24tdG9rZW5zL21lbnUtc2hhcmVkLWNvbmZpZy50b2tlblwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RhcnBpTWVudVNlcnZpY2Uge1xyXG4gIHJlYWRvbmx5IHN2Z0ljb25OYW1lUHJlZml4ID0gXCJzdHJhcGktbWVudS1pY29uLVwiO1xyXG4gIGltZ0Jhc2VVcmwgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdHJhcGlTdWJzY3JpcHRpb246IFN0cmFwaVN1YnNjcmlwdGlvblNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1FTlVfU0hBUkVEX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBtZW51Q29uZmlnOiBNZW51U2hhcmVkQ29uZmlnLFxyXG4gICAgQEluamVjdChTVFJBUElfQVBJX0NPTkZJR19UT0tFTikgc3RyYXBpQ29uZmlnOiBTdHJhcGlBcGlDb25maWcsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSkge1xyXG4gICAgdGhpcy5pbWdCYXNlVXJsID0gc3RyYXBpQ29uZmlnLmFwaVVybDtcclxuICB9XHJcblxyXG4gIGdldE1lbnVJdGVtcygpOiBPYnNlcnZhYmxlPEN1c3RvbU1lbnVJdGVtW10+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlT2JzID0gdGhpcy5zdHJhcGlTdWJzY3JpcHRpb24uc3Vic2NyaWJlQ29sbGVjdGlvblR5cGU8TWVudUl0ZW1zPihDb2xsZWN0aW9uVHlwZXMuTUVOVV9JVEVNUylcclxuICAgICAgLnBpcGUobWFwKChpdGVtczogTWVudUl0ZW1zW10gfCBudWxsKSA9PiB7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGRpc2FibGVkIGl0ZW1zIHNvIHRoZXkgYXJlIG5vdCBwcm9jZXNzZWQgbGF0ZXIuXHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW1zOiBDdXN0b21NZW51SXRlbVtdID0gW107XHJcbiAgICAgICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWRJdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCk7XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgobWVudTogTWVudUl0ZW1zKSA9PiB7XHJcbiAgICAgICAgICBtZW51LmxpbmsgPSB0aGlzLmFkZEJhc2VVcmxJZk5lY2Vzc2FyeShtZW51LmxpbmspO1xyXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxNZW51SWNvbiA9IG1lbnUuaWNvbi5kYXRhLmF0dHJpYnV0ZXM7XHJcbiAgICAgICAgICBpZiAob3JpZ2luYWxNZW51SWNvbi51cmwuc3RhcnRzV2l0aCgnLycpKSB7XHJcbiAgICAgICAgICAgIG9yaWdpbmFsTWVudUljb24udXJsID0gdGhpcy5pbWdCYXNlVXJsICsgb3JpZ2luYWxNZW51SWNvbi51cmw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG9yaWdpbmFsTWVudUljb24uZXh0ID09PSBNRU5VX0lDT05fU1RSQVBJX0VYVEVOU0lPTikge1xyXG4gICAgICAgICAgICAvLyBhZGQgY3VzdG9tIHByZWZpeCBzbyB0aGF0IGl0IGlzIG5vdCBlYXN5IHRvIG1peCB3aXRoIG90aGVyIGljb25zIGluIHJlZ2lzdHJ5XHJcbiAgICAgICAgICAgIG1lbnUuaWNvbi5kYXRhLmF0dHJpYnV0ZXMubmFtZSA9IHRoaXMuc3ZnSWNvbk5hbWVQcmVmaXggKyBvcmlnaW5hbE1lbnVJY29uLm5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJJY29uRnJvbVVybChvcmlnaW5hbE1lbnVJY29uLm5hbWUsIG9yaWdpbmFsTWVudUljb24udXJsKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb252ZXJ0ZWRJdGVtcy5wdXNoKHRoaXMuY29udmVydFRvQ3VzdG9tTWVudUl0ZW0obWVudSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjb252ZXJ0ZWRJdGVtcztcclxuICAgICAgfSkpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlT2JzO1xyXG4gIH1cclxuXHJcbiAgdW5zdWJzY3JpYmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0cmFwaVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZShDb2xsZWN0aW9uVHlwZXMuTUVOVV9JVEVNUyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEJhc2VVcmxJZk5lY2Vzc2FyeShsaW5rOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLm1lbnVDb25maWc/LmJhc2VVcmwpIHtcclxuICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICBuZXcgVVJMKGxpbmspO1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcclxuICAgIH0gY2F0Y2ggeyB9XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gbmV3IFVSTChsaW5rLCB0aGlzLm1lbnVDb25maWcuYmFzZVVybCkuaHJlZjtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gbGluaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29udmVydFRvQ3VzdG9tTWVudUl0ZW0oaXRlbTogTWVudUl0ZW1zKTogQ3VzdG9tTWVudUl0ZW0ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWNvbjogaXRlbS5pY29uLmRhdGEuYXR0cmlidXRlcy5uYW1lLFxyXG4gICAgICBsaW5rOiBpdGVtLmxpbmssXHJcbiAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxyXG4gICAgICBleHRlcm5hbExpbms6IGl0ZW0uZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAvLyBNYXRlcmlhbCBpY29ucyBzaG91bGQgbm90IGNvbWUgZnJvbSBzdHJhcGlcclxuICAgICAgbWF0ZXJpYWxJY29uOiBmYWxzZSxcclxuICAgICAgcGxhdXNpYmxlRXZlbnQ6IGl0ZW0ucGxhdXNpYmxlRXZlbnQsXHJcbiAgICAgIGN1c3RvbUlkOiBpdGVtLmN1c3RvbUlkXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Inject, Injectable, Optional } from "@angular/core";
2
+ import { STRAPI_API_CONFIG_TOKEN } from "@tilde-nlp/ngx-strapi";
3
+ import { map } from "rxjs";
4
+ import { CollectionTypes } from "@tilde-nlp/strapi-models";
5
+ import { MENU_ICON_STRAPI_EXTENSION } from "../models/menu-icon-strapi-extension.const";
6
+ import { MENU_SHARED_CONFIG } from "../injection-tokens/menu-shared-config.token";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@tilde-nlp/ngx-strapi";
9
+ import * as i2 from "@tilde-nlp/ngx-common";
10
+ export class StarpiMenuService {
11
+ constructor(strapiSubscription, menuConfig, strapiConfig, iconService) {
12
+ this.strapiSubscription = strapiSubscription;
13
+ this.menuConfig = menuConfig;
14
+ this.iconService = iconService;
15
+ this.svgIconNamePrefix = "strapi-menu-icon-";
16
+ this.imgBaseUrl = '';
17
+ this.imgBaseUrl = strapiConfig.apiUrl;
18
+ }
19
+ getMenuItems() {
20
+ const responseObs = this.strapiSubscription.subscribeCollectionType(CollectionTypes.MENU_ITEMS)
21
+ .pipe(map((items) => {
22
+ // Remove disabled items so they are not processed later.
23
+ const convertedItems = [];
24
+ if (!items || items.length === 0) {
25
+ return convertedItems;
26
+ }
27
+ items = items.filter(item => !item.disabled);
28
+ items.forEach((menu) => {
29
+ menu.link = this.addBaseUrlIfNecessary(menu.link);
30
+ const originalMenuIcon = menu.icon.data.attributes;
31
+ if (originalMenuIcon.url.startsWith('/')) {
32
+ originalMenuIcon.url = this.imgBaseUrl + originalMenuIcon.url;
33
+ }
34
+ if (originalMenuIcon.ext === MENU_ICON_STRAPI_EXTENSION) {
35
+ // add custom prefix so that it is not easy to mix with other icons in registry
36
+ menu.icon.data.attributes.name = this.svgIconNamePrefix + originalMenuIcon.name;
37
+ this.iconService.registerIconFromUrl(originalMenuIcon.name, originalMenuIcon.url);
38
+ }
39
+ convertedItems.push(this.convertToCustomMenuItem(menu));
40
+ });
41
+ return convertedItems;
42
+ }));
43
+ return responseObs;
44
+ }
45
+ unsubscribe() {
46
+ this.strapiSubscription.unsubscribe(CollectionTypes.MENU_ITEMS);
47
+ }
48
+ addBaseUrlIfNecessary(link) {
49
+ if (!this.menuConfig?.baseUrl) {
50
+ return link;
51
+ }
52
+ try {
53
+ new URL(link);
54
+ // eslint-disable-next-line no-empty
55
+ }
56
+ catch { }
57
+ try {
58
+ return new URL(link, this.menuConfig.baseUrl).href;
59
+ }
60
+ catch {
61
+ return link;
62
+ }
63
+ }
64
+ convertToCustomMenuItem(item) {
65
+ return {
66
+ icon: item.icon.data.attributes.name,
67
+ link: item.link,
68
+ title: item.title,
69
+ externalLink: item.externalLink,
70
+ // Material icons should not come from strapi
71
+ materialIcon: false,
72
+ plausibleEvent: item.plausibleEvent,
73
+ customId: item.customId
74
+ };
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StarpiMenuService, deps: [{ token: i1.StrapiSubscriptionService }, { token: MENU_SHARED_CONFIG, optional: true }, { token: STRAPI_API_CONFIG_TOKEN }, { token: i2.IconService }], target: i0.ɵɵFactoryTarget.Injectable }); }
77
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StarpiMenuService, providedIn: 'root' }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StarpiMenuService, decorators: [{
80
+ type: Injectable,
81
+ args: [{
82
+ providedIn: 'root'
83
+ }]
84
+ }], ctorParameters: () => [{ type: i1.StrapiSubscriptionService }, { type: undefined, decorators: [{
85
+ type: Optional
86
+ }, {
87
+ type: Inject,
88
+ args: [MENU_SHARED_CONFIG]
89
+ }] }, { type: undefined, decorators: [{
90
+ type: Inject,
91
+ args: [STRAPI_API_CONFIG_TOKEN]
92
+ }] }, { type: i2.IconService }] });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL3NlcnZpY2VzL3N0cmFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQThDLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUcsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFLbEYsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUE2QixrQkFBNkMsRUFDZixVQUE0QixFQUNwRCxZQUE2QixFQUM3QyxXQUF3QjtRQUhkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUVwRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQU5sQyxzQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztRQUNqRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBTWQsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFZLGVBQWUsQ0FBQyxVQUFVLENBQUM7YUFDdkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQXlCLEVBQUUsRUFBRTtZQUN0Qyx5REFBeUQ7WUFFekQsTUFBTSxjQUFjLEdBQXFCLEVBQUUsQ0FBQztZQUM1QyxJ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O2lCQUNuQjs7MEJBTUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUNyQyxNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gXCJAdGlsZGUtbmxwL25neC1jb21tb25cIjtcclxuaW1wb3J0IHsgU3RyYXBpQXBpQ29uZmlnLCBTdHJhcGlTdWJzY3JpcHRpb25TZXJ2aWNlLCBTVFJBUElfQVBJX0NPTkZJR19UT0tFTiB9IGZyb20gXCJAdGlsZGUtbmxwL25neC1zdHJhcGlcIjtcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ29sbGVjdGlvblR5cGVzLCBNZW51SXRlbXMgfSBmcm9tIFwiQHRpbGRlLW5scC9zdHJhcGktbW9kZWxzXCI7XHJcbmltcG9ydCB7IEN1c3RvbU1lbnVJdGVtIH0gZnJvbSBcIi4uL21vZGVscy9jdXN0b20tbWVudS1pdGVtXCI7XHJcbmltcG9ydCB7IE1FTlVfSUNPTl9TVFJBUElfRVhURU5TSU9OIH0gZnJvbSBcIi4uL21vZGVscy9tZW51LWljb24tc3RyYXBpLWV4dGVuc2lvbi5jb25zdFwiO1xyXG5pbXBvcnQgeyBNZW51U2hhcmVkQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9tZW51LXNoYXJlZC1jb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgTUVOVV9TSEFSRURfQ09ORklHIH0gZnJvbSBcIi4uL2luamVjdGlvbi10b2tlbnMvbWVudS1zaGFyZWQtY29uZmlnLnRva2VuXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGFycGlNZW51U2VydmljZSB7XHJcbiAgcmVhZG9ubHkgc3ZnSWNvbk5hbWVQcmVmaXggPSBcInN0cmFwaS1tZW51LWljb24tXCI7XHJcbiAgaW1nQmFzZVVybCA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0cmFwaVN1YnNjcmlwdGlvbjogU3RyYXBpU3Vic2NyaXB0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9TSEFSRURfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IG1lbnVDb25maWc6IE1lbnVTaGFyZWRDb25maWcsXHJcbiAgICBASW5qZWN0KFNUUkFQSV9BUElfQ09ORklHX1RPS0VOKSBzdHJhcGlDb25maWc6IFN0cmFwaUFwaUNvbmZpZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmltZ0Jhc2VVcmwgPSBzdHJhcGlDb25maWcuYXBpVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWVudUl0ZW1zKCk6IE9ic2VydmFibGU8Q3VzdG9tTWVudUl0ZW1bXT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2VPYnMgPSB0aGlzLnN0cmFwaVN1YnNjcmlwdGlvbi5zdWJzY3JpYmVDb2xsZWN0aW9uVHlwZTxNZW51SXRlbXM+KENvbGxlY3Rpb25UeXBlcy5NRU5VX0lURU1TKVxyXG4gICAgICAucGlwZShtYXAoKGl0ZW1zOiBNZW51SXRlbXNbXSB8IG51bGwpID0+IHtcclxuICAgICAgICAvLyBSZW1vdmUgZGlzYWJsZWQgaXRlbXMgc28gdGhleSBhcmUgbm90IHByb2Nlc3NlZCBsYXRlci5cclxuXHJcbiAgICAgICAgY29uc3QgY29udmVydGVkSXRlbXM6IEN1c3RvbU1lbnVJdGVtW10gPSBbXTtcclxuICAgICAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZEl0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKTtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChtZW51OiBNZW51SXRlbXMpID0+IHtcclxuICAgICAgICAgIG1lbnUubGluayA9IHRoaXMuYWRkQmFzZVVybElmTmVjZXNzYXJ5KG1lbnUubGluayk7XHJcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbE1lbnVJY29uID0gbWVudS5pY29uLmRhdGEuYXR0cmlidXRlcztcclxuICAgICAgICAgIGlmIChvcmlnaW5hbE1lbnVJY29uLnVybC5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAgICAgICAgb3JpZ2luYWxNZW51SWNvbi51cmwgPSB0aGlzLmltZ0Jhc2VVcmwgKyBvcmlnaW5hbE1lbnVJY29uLnVybDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAob3JpZ2luYWxNZW51SWNvbi5leHQgPT09IE1FTlVfSUNPTl9TVFJBUElfRVhURU5TSU9OKSB7XHJcbiAgICAgICAgICAgIC8vIGFkZCBjdXN0b20gcHJlZml4IHNvIHRoYXQgaXQgaXMgbm90IGVhc3kgdG8gbWl4IHdpdGggb3RoZXIgaWNvbnMgaW4gcmVnaXN0cnlcclxuICAgICAgICAgICAgbWVudS5pY29uLmRhdGEuYXR0cmlidXRlcy5uYW1lID0gdGhpcy5zdmdJY29uTmFtZVByZWZpeCArIG9yaWdpbmFsTWVudUljb24ubmFtZTtcclxuICAgICAgICAgICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3Rlckljb25Gcm9tVXJsKG9yaWdpbmFsTWVudUljb24ubmFtZSwgb3JpZ2luYWxNZW51SWNvbi51cmwpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnZlcnRlZEl0ZW1zLnB1c2godGhpcy5jb252ZXJ0VG9DdXN0b21NZW51SXRlbShtZW51KSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRlZEl0ZW1zO1xyXG4gICAgICB9KSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2VPYnM7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RyYXBpU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKENvbGxlY3Rpb25UeXBlcy5NRU5VX0lURU1TKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQmFzZVVybElmTmVjZXNzYXJ5KGxpbms6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMubWVudUNvbmZpZz8uYmFzZVVybCkge1xyXG4gICAgICByZXR1cm4gbGluaztcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIG5ldyBVUkwobGluayk7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxyXG4gICAgfSBjYXRjaCB7IH1cclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBuZXcgVVJMKGxpbmssIHRoaXMubWVudUNvbmZpZy5iYXNlVXJsKS5ocmVmO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBsaW5rO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9DdXN0b21NZW51SXRlbShpdGVtOiBNZW51SXRlbXMpOiBDdXN0b21NZW51SXRlbSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpY29uOiBpdGVtLmljb24uZGF0YS5hdHRyaWJ1dGVzLm5hbWUsXHJcbiAgICAgIGxpbms6IGl0ZW0ubGluayxcclxuICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgICAgIGV4dGVybmFsTGluazogaXRlbS5leHRlcm5hbExpbmssXHJcbiAgICAgIC8vIE1hdGVyaWFsIGljb25zIHNob3VsZCBub3QgY29tZSBmcm9tIHN0cmFwaVxyXG4gICAgICBtYXRlcmlhbEljb246IGZhbHNlLFxyXG4gICAgICBwbGF1c2libGVFdmVudDogaXRlbS5wbGF1c2libGVFdmVudCxcclxuICAgICAgY3VzdG9tSWQ6IGl0ZW0uY3VzdG9tSWRcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,16 +1,16 @@
1
- /*
2
- * Public API Surface of ngx-menu
3
- */
4
- export * from './lib/components/side-nav-menu';
5
- export * from './lib/injection-tokens';
6
- export * from './lib/models';
7
- export * from './lib/menu.module';
8
- export * from './lib/components/menu-item-icon/menu.model';
9
- export * from './lib/components/side-nav-menu/side-nav-menu.component';
10
- export * from './lib/components/modal-nav-menu/modal-nav-menu.component';
11
- export * from './lib/components/menu-item-icon/menu-item-icon.component';
12
- export * from './lib/components/menu-columns/menu-columns.component';
13
- export * from './lib/components/nav-base/nav-base.component';
14
- export * from './lib/components/nav-base/models';
15
- export * from "./lib/services";
1
+ /*
2
+ * Public API Surface of ngx-menu
3
+ */
4
+ export * from './lib/components/side-nav-menu';
5
+ export * from './lib/injection-tokens';
6
+ export * from './lib/models';
7
+ export * from './lib/menu.module';
8
+ export * from './lib/components/menu-item-icon/menu.model';
9
+ export * from './lib/components/side-nav-menu/side-nav-menu.component';
10
+ export * from './lib/components/modal-nav-menu/modal-nav-menu.component';
11
+ export * from './lib/components/menu-item-icon/menu-item-icon.component';
12
+ export * from './lib/components/menu-columns/menu-columns.component';
13
+ export * from './lib/components/nav-base/nav-base.component';
14
+ export * from './lib/components/nav-base/models';
15
+ export * from "./lib/services";
16
16
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1tZW51XHJcbiAqL1xyXG5cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luamVjdGlvbi10b2tlbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS1pdGVtLWljb24vbWVudS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwtbmF2LW1lbnUvbW9kYWwtbmF2LW1lbnUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tZW51LWl0ZW0taWNvbi9tZW51LWl0ZW0taWNvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbnUtY29sdW1ucy9tZW51LWNvbHVtbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25hdi1iYXNlL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlc1wiO1xyXG4iXX0=
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZGUtbmxwLW5neC1tZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL3RpbGRlLW5scC1uZ3gtbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19