@mediusinc/mng-commons 0.0.1-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +19 -0
  2. package/esm2020/lib/api/models/builders/query-param.builder.mjs +49 -0
  3. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -0
  4. package/esm2020/lib/api/models/filter-param.model.mjs +46 -0
  5. package/esm2020/lib/api/models/index.mjs +9 -0
  6. package/esm2020/lib/api/models/mappers.mjs +17 -0
  7. package/esm2020/lib/api/models/query-mode.model.mjs +19 -0
  8. package/esm2020/lib/api/models/query-param.model.mjs +69 -0
  9. package/esm2020/lib/api/models/query-result.model.mjs +45 -0
  10. package/esm2020/lib/api/models/serialization.model.mjs +2 -0
  11. package/esm2020/lib/api/services/abstract-crud-api.service.mjs +72 -0
  12. package/esm2020/lib/api/services/index.mjs +2 -0
  13. package/esm2020/lib/api/utils/index.mjs +3 -0
  14. package/esm2020/lib/api/utils/medius-rest.util.mjs +70 -0
  15. package/esm2020/lib/api/utils/object-serializer.util.mjs +226 -0
  16. package/esm2020/lib/components/action/action.component.mjs +63 -0
  17. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +148 -0
  18. package/esm2020/lib/components/action/index.mjs +4 -0
  19. package/esm2020/lib/components/action/route/action-route.component.mjs +144 -0
  20. package/esm2020/lib/components/form/editor/form-editor.component.mjs +140 -0
  21. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +58 -0
  22. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +51 -0
  23. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +16 -0
  24. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +26 -0
  25. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +94 -0
  26. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +124 -0
  27. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -0
  28. package/esm2020/lib/components/form/formly/fields/index.mjs +8 -0
  29. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +17 -0
  30. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +16 -0
  31. package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -0
  32. package/esm2020/lib/components/form/index.mjs +2 -0
  33. package/esm2020/lib/components/layout/app.breadcrumb.component.mjs +27 -0
  34. package/esm2020/lib/components/layout/app.footer.component.mjs +35 -0
  35. package/esm2020/lib/components/layout/app.main.component.mjs +25 -0
  36. package/esm2020/lib/components/layout/app.main.component.service.mjs +133 -0
  37. package/esm2020/lib/components/layout/app.menu.component.mjs +38 -0
  38. package/esm2020/lib/components/layout/app.menuitem.component.mjs +243 -0
  39. package/esm2020/lib/components/layout/app.topbar.component.mjs +135 -0
  40. package/esm2020/lib/components/layout/index.mjs +7 -0
  41. package/esm2020/lib/components/tableview/index.mjs +4 -0
  42. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +31 -0
  43. package/esm2020/lib/components/tableview/table/table.component.mjs +173 -0
  44. package/esm2020/lib/components/tableview/tableview.component.mjs +82 -0
  45. package/esm2020/lib/components/tableview/tableview.component.service.mjs +18 -0
  46. package/esm2020/lib/config/formly.config.mjs +165 -0
  47. package/esm2020/lib/config/index.mjs +2 -0
  48. package/esm2020/lib/directives/index.mjs +2 -0
  49. package/esm2020/lib/directives/template.directive.mjs +25 -0
  50. package/esm2020/lib/mng-commons.module.mjs +338 -0
  51. package/esm2020/lib/models/action/action.model.mjs +58 -0
  52. package/esm2020/lib/models/action/index.mjs +2 -0
  53. package/esm2020/lib/models/config/index.mjs +2 -0
  54. package/esm2020/lib/models/config/mng-config.model.mjs +3 -0
  55. package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +283 -0
  56. package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +647 -0
  57. package/esm2020/lib/models/descriptors/index.mjs +6 -0
  58. package/esm2020/lib/models/descriptors/model-descriptor.model.mjs +34 -0
  59. package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +123 -0
  60. package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +124 -0
  61. package/esm2020/lib/models/events/editor-event.model.mjs +14 -0
  62. package/esm2020/lib/models/events/index.mjs +3 -0
  63. package/esm2020/lib/models/events/table-event.model.mjs +16 -0
  64. package/esm2020/lib/models/interfaces/confirmation-service.model.mjs +2 -0
  65. package/esm2020/lib/models/interfaces/index.mjs +2 -0
  66. package/esm2020/lib/models/providers/data-provider.model.mjs +86 -0
  67. package/esm2020/lib/models/providers/index.mjs +2 -0
  68. package/esm2020/lib/models/types/index.mjs +3 -0
  69. package/esm2020/lib/models/types/type.decorator.mjs +8 -0
  70. package/esm2020/lib/models/types/type.model.mjs +2 -0
  71. package/esm2020/lib/models/validators/field.validator.mjs +21 -0
  72. package/esm2020/lib/models/validators/index.mjs +2 -0
  73. package/esm2020/lib/pipes/index.mjs +2 -0
  74. package/esm2020/lib/pipes/property-path.pipe.mjs +36 -0
  75. package/esm2020/lib/services/action.service.mjs +239 -0
  76. package/esm2020/lib/services/breadcrumb.service.mjs +21 -0
  77. package/esm2020/lib/services/configuration.service.mjs +77 -0
  78. package/esm2020/lib/services/index.mjs +7 -0
  79. package/esm2020/lib/services/menu.service.mjs +26 -0
  80. package/esm2020/lib/services/navigation.service.mjs +49 -0
  81. package/esm2020/lib/services/providers/config-service.provider.mjs +12 -0
  82. package/esm2020/lib/services/providers/formly-config.provider.mjs +31 -0
  83. package/esm2020/lib/services/providers/index.mjs +3 -0
  84. package/esm2020/lib/services/settings.service.mjs +40 -0
  85. package/esm2020/lib/utils/editor-formly.util.mjs +165 -0
  86. package/esm2020/lib/utils/i18n.util.mjs +75 -0
  87. package/esm2020/lib/utils/index.mjs +5 -0
  88. package/esm2020/lib/utils/model.util.mjs +38 -0
  89. package/esm2020/lib/utils/type.util.mjs +43 -0
  90. package/esm2020/mediusinc-mng-commons.mjs +5 -0
  91. package/esm2020/public-api.mjs +33 -0
  92. package/fesm2015/mediusinc-mng-commons.mjs +5056 -0
  93. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -0
  94. package/fesm2020/mediusinc-mng-commons.mjs +5012 -0
  95. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -0
  96. package/lib/api/models/builders/query-param.builder.d.ts +11 -0
  97. package/lib/api/models/filter-match-type.model.d.ts +21 -0
  98. package/lib/api/models/filter-param.model.d.ts +23 -0
  99. package/lib/api/models/index.d.ts +8 -0
  100. package/lib/api/models/mappers.d.ts +6 -0
  101. package/lib/api/models/query-mode.model.d.ts +16 -0
  102. package/lib/api/models/query-param.model.d.ts +31 -0
  103. package/lib/api/models/query-result.model.d.ts +36 -0
  104. package/lib/api/models/serialization.model.d.ts +8 -0
  105. package/lib/api/services/abstract-crud-api.service.d.ts +23 -0
  106. package/lib/api/services/index.d.ts +1 -0
  107. package/lib/api/utils/index.d.ts +2 -0
  108. package/lib/api/utils/medius-rest.util.d.ts +6 -0
  109. package/lib/api/utils/object-serializer.util.d.ts +30 -0
  110. package/lib/components/action/action.component.d.ts +36 -0
  111. package/lib/components/action/dialog/action-dialog.component.d.ts +48 -0
  112. package/lib/components/action/index.d.ts +3 -0
  113. package/lib/components/action/route/action-route.component.d.ts +32 -0
  114. package/lib/components/form/editor/form-editor.component.d.ts +37 -0
  115. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +21 -0
  116. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +19 -0
  117. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +6 -0
  118. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +12 -0
  119. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +17 -0
  120. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +36 -0
  121. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -0
  122. package/lib/components/form/formly/fields/index.d.ts +7 -0
  123. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +8 -0
  124. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +8 -0
  125. package/lib/components/form/formly/wrappers/index.d.ts +2 -0
  126. package/lib/components/form/index.d.ts +1 -0
  127. package/lib/components/layout/app.breadcrumb.component.d.ts +16 -0
  128. package/lib/components/layout/app.footer.component.d.ts +8 -0
  129. package/lib/components/layout/app.main.component.d.ts +12 -0
  130. package/lib/components/layout/app.main.component.service.d.ts +40 -0
  131. package/lib/components/layout/app.menu.component.d.ts +14 -0
  132. package/lib/components/layout/app.menuitem.component.d.ts +31 -0
  133. package/lib/components/layout/app.topbar.component.d.ts +16 -0
  134. package/lib/components/layout/index.d.ts +6 -0
  135. package/lib/components/tableview/index.d.ts +3 -0
  136. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +15 -0
  137. package/lib/components/tableview/table/table.component.d.ts +47 -0
  138. package/lib/components/tableview/tableview.component.d.ts +36 -0
  139. package/lib/components/tableview/tableview.component.service.d.ts +11 -0
  140. package/lib/config/formly.config.d.ts +8 -0
  141. package/lib/config/index.d.ts +1 -0
  142. package/lib/directives/index.d.ts +1 -0
  143. package/lib/directives/template.directive.d.ts +11 -0
  144. package/lib/mng-commons.module.d.ts +74 -0
  145. package/lib/models/action/action.model.d.ts +53 -0
  146. package/lib/models/action/index.d.ts +1 -0
  147. package/lib/models/config/index.d.ts +1 -0
  148. package/lib/models/config/mng-config.model.d.ts +19 -0
  149. package/lib/models/descriptors/action-descriptor.model.d.ts +124 -0
  150. package/lib/models/descriptors/editor-descriptor.model.d.ts +248 -0
  151. package/lib/models/descriptors/index.d.ts +5 -0
  152. package/lib/models/descriptors/model-descriptor.model.d.ts +15 -0
  153. package/lib/models/descriptors/table-descriptor.model.d.ts +45 -0
  154. package/lib/models/descriptors/tableview-descriptor.model.d.ts +38 -0
  155. package/lib/models/events/editor-event.model.d.ts +11 -0
  156. package/lib/models/events/index.d.ts +2 -0
  157. package/lib/models/events/table-event.model.d.ts +17 -0
  158. package/lib/models/interfaces/confirmation-service.model.d.ts +6 -0
  159. package/lib/models/interfaces/index.d.ts +1 -0
  160. package/lib/models/providers/data-provider.model.d.ts +62 -0
  161. package/lib/models/providers/index.d.ts +1 -0
  162. package/lib/models/types/index.d.ts +2 -0
  163. package/lib/models/types/type.decorator.d.ts +2 -0
  164. package/lib/models/types/type.model.d.ts +10 -0
  165. package/lib/models/validators/field.validator.d.ts +18 -0
  166. package/lib/models/validators/index.d.ts +1 -0
  167. package/lib/pipes/index.d.ts +1 -0
  168. package/lib/pipes/property-path.pipe.d.ts +7 -0
  169. package/lib/services/action.service.d.ts +92 -0
  170. package/lib/services/breadcrumb.service.d.ts +9 -0
  171. package/lib/services/configuration.service.d.ts +35 -0
  172. package/lib/services/index.d.ts +6 -0
  173. package/lib/services/menu.service.d.ts +11 -0
  174. package/lib/services/navigation.service.d.ts +14 -0
  175. package/lib/services/providers/config-service.provider.d.ts +5 -0
  176. package/lib/services/providers/formly-config.provider.d.ts +4 -0
  177. package/lib/services/providers/index.d.ts +2 -0
  178. package/lib/services/settings.service.d.ts +18 -0
  179. package/lib/utils/editor-formly.util.d.ts +9 -0
  180. package/lib/utils/i18n.util.d.ts +14 -0
  181. package/lib/utils/index.d.ts +4 -0
  182. package/lib/utils/model.util.d.ts +5 -0
  183. package/lib/utils/type.util.d.ts +15 -0
  184. package/mediusinc-mng-commons-0.0.1-rc.2.tgz +0 -0
  185. package/mediusinc-mng-commons.d.ts +5 -0
  186. package/package.json +38 -0
  187. package/public-api.d.ts +22 -0
@@ -0,0 +1,133 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/settings.service";
4
+ import * as i2 from "../../services/menu.service";
5
+ export class AppMainComponentService {
6
+ constructor(appSettings, menuService) {
7
+ this.appSettings = appSettings;
8
+ this.menuService = menuService;
9
+ this.overlayMenuActive = false;
10
+ this.staticMenuDesktopInactive = false;
11
+ this.staticMenuMobileActive = false;
12
+ this.sidebarActive = true;
13
+ this.sidebarStatic = true;
14
+ this.menuClick = false;
15
+ this.menuHoverActive = false;
16
+ this.topbarMenuActive = false;
17
+ this.topbarItemClick = false;
18
+ this.configActive = false;
19
+ this.configClick = false;
20
+ this.rightMenuActive = false;
21
+ this.rightMenuClick = false;
22
+ this.searchActive = false;
23
+ this.searchClick = false;
24
+ this.pinActive = true;
25
+ }
26
+ onLayoutClick() {
27
+ if (!this.topbarItemClick) {
28
+ this.activeTopbarItem = null;
29
+ this.topbarMenuActive = false;
30
+ }
31
+ if (this.configActive && !this.configClick) {
32
+ this.configActive = false;
33
+ }
34
+ if (this.rightMenuActive && !this.rightMenuClick) {
35
+ this.rightMenuActive = false;
36
+ }
37
+ if (this.searchActive && !this.searchClick) {
38
+ this.searchActive = false;
39
+ }
40
+ if (!this.menuClick) {
41
+ if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.isMobile()) {
42
+ this.menuService.reset();
43
+ this.menuHoverActive = false;
44
+ }
45
+ if (this.overlayMenuActive || this.staticMenuMobileActive) {
46
+ this.overlayMenuActive = false;
47
+ this.staticMenuMobileActive = false;
48
+ }
49
+ }
50
+ this.configClick = false;
51
+ this.rightMenuClick = false;
52
+ this.searchClick = false;
53
+ this.menuClick = false;
54
+ this.topbarItemClick = false;
55
+ }
56
+ onSidebarClick(event) {
57
+ this.menuClick = true;
58
+ }
59
+ onToggleMenu(event) {
60
+ this.menuClick = true;
61
+ if (this.overlayMenuActive) {
62
+ this.overlayMenuActive = false;
63
+ }
64
+ if (this.sidebarActive) {
65
+ this.sidebarStatic = !this.sidebarStatic;
66
+ }
67
+ event.preventDefault();
68
+ }
69
+ onSidebarMouseOver(event) {
70
+ if (this.appSettings.menuMode === 'sidebar' && !this.sidebarStatic) {
71
+ this.sidebarActive = this.isDesktop();
72
+ setTimeout(() => {
73
+ this.pinActive = this.isDesktop();
74
+ }, 200);
75
+ }
76
+ }
77
+ onSidebarMouseLeave(event) {
78
+ if (this.appSettings.menuMode === 'sidebar' && !this.sidebarStatic) {
79
+ setTimeout(() => {
80
+ this.sidebarActive = false;
81
+ this.pinActive = false;
82
+ }, 250);
83
+ }
84
+ }
85
+ onMenuButtonClick(event) {
86
+ this.menuClick = true;
87
+ if (this.appSettings.isOverlay()) {
88
+ this.overlayMenuActive = !this.overlayMenuActive;
89
+ }
90
+ if (this.isDesktop()) {
91
+ this.staticMenuDesktopInactive = !this.staticMenuDesktopInactive;
92
+ }
93
+ else {
94
+ this.staticMenuMobileActive = !this.staticMenuMobileActive;
95
+ }
96
+ event.preventDefault();
97
+ }
98
+ onTopbarItemClick(event, item) {
99
+ this.topbarItemClick = true;
100
+ if (this.activeTopbarItem === item) {
101
+ this.activeTopbarItem = null;
102
+ }
103
+ else {
104
+ this.activeTopbarItem = item;
105
+ }
106
+ event.preventDefault();
107
+ }
108
+ onTopbarSubItemClick(event) {
109
+ event.preventDefault();
110
+ }
111
+ onConfigClick(event) {
112
+ this.configClick = true;
113
+ }
114
+ onRightMenuButtonClick() {
115
+ this.rightMenuClick = true;
116
+ this.rightMenuActive = true;
117
+ }
118
+ onRightMenuClick(event) {
119
+ this.rightMenuClick = true;
120
+ }
121
+ isDesktop() {
122
+ return window.innerWidth > 991;
123
+ }
124
+ isMobile() {
125
+ return window.innerWidth <= 991;
126
+ }
127
+ }
128
+ AppMainComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMainComponentService, deps: [{ token: i1.AppSettingsService }, { token: i2.MenuService }], target: i0.ɵɵFactoryTarget.Injectable });
129
+ AppMainComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMainComponentService });
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMainComponentService, decorators: [{
131
+ type: Injectable
132
+ }], ctorParameters: function () { return [{ type: i1.AppSettingsService }, { type: i2.MenuService }]; } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1haW4uY29tcG9uZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L2FwcC5tYWluLmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFNekMsTUFBTSxPQUFPLHVCQUF1QjtJQW9DaEMsWUFBb0IsV0FBK0IsRUFBVSxXQUF3QjtRQUFqRSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWxDckYsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRW5DLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUVsQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFFeEMsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFFbEMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFJakMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0Isb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsY0FBUyxHQUFZLElBQUksQ0FBQztJQUU4RCxDQUFDO0lBR3pGLGFBQWE7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFB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QUVELFFBQVE7UUFDSixPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ3BDLENBQUM7O29IQW5LUSx1QkFBdUI7d0hBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtBcHBTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtNZW51U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFwcE1haW5Db21wb25lbnRTZXJ2aWNlIHtcblxuICAgIG92ZXJsYXlNZW51QWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzdGF0aWNNZW51RGVza3RvcEluYWN0aXZlID0gZmFsc2U7XG5cbiAgICBzdGF0aWNNZW51TW9iaWxlQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzaWRlYmFyQWN0aXZlID0gdHJ1ZTtcblxuICAgIHNpZGViYXJTdGF0aWMgPSB0cnVlO1xuXG4gICAgbWVudUNsaWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBtZW51SG92ZXJBY3RpdmUgPSBmYWxzZTtcblxuICAgIHRvcGJhck1lbnVBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHRvcGJhckl0ZW1DbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYWN0aXZlVG9wYmFySXRlbTogYW55O1xuXG4gICAgY29uZmlnQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25maWdDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcmlnaHRNZW51QWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByaWdodE1lbnVDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgc2VhcmNoQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzZWFyY2hDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcGluQWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwU2V0dGluZ3M6IEFwcFNldHRpbmdzU2VydmljZSwgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UpIHt9XG5cblxuICAgIG9uTGF5b3V0Q2xpY2soKSB7XG4gICAgICAgIGlmICghdGhpcy50b3BiYXJJdGVtQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVG9wYmFySXRlbSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnRvcGJhck1lbnVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ0FjdGl2ZSAmJiAhdGhpcy5jb25maWdDbGljaykge1xuICAgICAgICAgICAgdGhpcy5jb25maWdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJpZ2h0TWVudUFjdGl2ZSAmJiAhdGhpcy5yaWdodE1lbnVDbGljaykge1xuICAgICAgICAgICAgdGhpcy5yaWdodE1lbnVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaEFjdGl2ZSAmJiAhdGhpcy5zZWFyY2hDbGljaykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5tZW51Q2xpY2spIHtcbiAgICAgICAgICAgIGlmICgodGhpcy5hcHBTZXR0aW5ncy5pc1NsaW0oKSB8fCB0aGlzLmFwcFNldHRpbmdzLmlzSG9yaXpvbnRhbCgpKSAmJiAhdGhpcy5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51U2VydmljZS5yZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUhvdmVyQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlNZW51QWN0aXZlIHx8IHRoaXMuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheU1lbnVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yaWdodE1lbnVDbGljayA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlYXJjaENsaWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUNsaWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9wYmFySXRlbUNsaWNrID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25TaWRlYmFyQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLm1lbnVDbGljayA9IHRydWU7XG4gICAgfVxuXG4gICAgb25Ub2dnbGVNZW51KGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5tZW51Q2xpY2sgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlNZW51QWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaWRlYmFyQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnNpZGViYXJTdGF0aWMgPSAhdGhpcy5zaWRlYmFyU3RhdGljO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblNpZGViYXJNb3VzZU92ZXIoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5hcHBTZXR0aW5ncy5tZW51TW9kZSA9PT0gJ3NpZGViYXInICYmICF0aGlzLnNpZGViYXJTdGF0aWMpIHtcbiAgICAgICAgICAgIHRoaXMuc2lkZWJhckFjdGl2ZSA9IHRoaXMuaXNEZXNrdG9wKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbkFjdGl2ZSA9IHRoaXMuaXNEZXNrdG9wKCk7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TaWRlYmFyTW91c2VMZWF2ZShldmVudDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmFwcFNldHRpbmdzLm1lbnVNb2RlID09PSAnc2lkZWJhcicgJiYgIXRoaXMuc2lkZWJhclN0YXRpYykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5waW5BY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDI1MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1lbnVCdXR0b25DbGljayhldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMubWVudUNsaWNrID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5hcHBTZXR0aW5ncy5pc092ZXJsYXkoKSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5TWVudUFjdGl2ZSA9ICF0aGlzLm92ZXJsYXlNZW51QWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZXNrdG9wKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGljTWVudURlc2t0b3BJbmFjdGl2ZSA9ICF0aGlzLnN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSAhdGhpcy5zdGF0aWNNZW51TW9iaWxlQWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblRvcGJhckl0ZW1DbGljayhldmVudDogYW55LCBpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy50b3BiYXJJdGVtQ2xpY2sgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVRvcGJhckl0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVG9wYmFySXRlbSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRvcGJhckl0ZW0gPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblRvcGJhclN1Ykl0ZW1DbGljayhldmVudDogYW55KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Db25maWdDbGljayhldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuY29uZmlnQ2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uUmlnaHRNZW51QnV0dG9uQ2xpY2soKSB7XG4gICAgICAgIHRoaXMucmlnaHRNZW51Q2xpY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnJpZ2h0TWVudUFjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgb25SaWdodE1lbnVDbGljayhldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMucmlnaHRNZW51Q2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIGlzRGVza3RvcCgpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID4gOTkxO1xuICAgIH1cblxuICAgIGlzTW9iaWxlKCkge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gOTkxO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/settings.service";
4
+ import * as i2 from "./app.main.component.service";
5
+ import * as i3 from "./app.menuitem.component";
6
+ import * as i4 from "@angular/common";
7
+ export class AppMenuComponent {
8
+ constructor(appSettings, appMainService) {
9
+ this.appSettings = appSettings;
10
+ this.appMainService = appMainService;
11
+ this.model = [];
12
+ }
13
+ ngOnInit() {
14
+ this.model = [
15
+ {
16
+ label: 'pages.dashboard.name', icon: 'pi pi-home', routerLink: ['/dashboard'],
17
+ },
18
+ {
19
+ label: 'pages.publicServices.name', icon: 'pi pi-fw pi-book', routerLink: ['/public-services']
20
+ },
21
+ {
22
+ label: 'pages.codelists.name', icon: 'pi pi-fw pi-list', routerLink: ['/codelists'],
23
+ items: [
24
+ {
25
+ label: 'pages.publicOrganizations.name', icon: 'pi pi-fw pi-globe', routerLink: ['/codelists/public-organizations']
26
+ }
27
+ ]
28
+ }
29
+ ];
30
+ }
31
+ }
32
+ AppMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuComponent, deps: [{ token: i1.AppSettingsService }, { token: i2.AppMainComponentService }], target: i0.ɵɵFactoryTarget.Component });
33
+ AppMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AppMenuComponent, selector: "app-menu", ngImport: i0, template: "<div class=\"layout-menu-wrapper\" [ngClass]=\"{'layout-sidebar-active': appMainService.sidebarActive}\"\n (click)=\"appMainService.onSidebarClick($event)\" (mouseover)=\"appMainService.onSidebarMouseOver($event)\" (mouseleave)=\"appMainService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\" *ngIf=\"!appSettings.isHorizontal() || appMainService.isMobile()\">\n\n <a href=\"#\" class=\"logo\">\n <img [src]=\"'assets/layout/images/logo-'+ (appSettings.colorScheme === 'light' ? 'dark' : 'light') + '.png'\">\n </a>\n\n <a href=\"#\" class=\"app-name\" *ngIf=\"!appSettings.isSlim() || appMainService.isMobile()\">\n <img [src]=\"'assets/layout/images/appname-'+ (appSettings.colorScheme === 'light' ? 'dark' : 'light') + '.png'\"/>\n </a>\n<!-- <a href=\"#\" class=\"menu-pin\" (click)=\"appMain.onToggleMenu($event)\">-->\n<!-- <span *ngIf=\"appMain.isOverlay()\" class=\"pi pi-times\"></span>-->\n<!-- <span *ngIf=\"appMain.isSidebar() && !appMain.sidebarStatic && appMain.pinActive\" class=\"pi pi-unlock\"></span>-->\n<!-- <span *ngIf=\"appMain.isSidebar() && appMain.sidebarStatic && appMain.pinActive\" class=\"pi pi-lock\"></span>-->\n<!-- </a>-->\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of model; let i = index;\">\n <li app-menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"menu-separator\"></li>\n </ng-container>\n </ul>\n </div>\n</div>\n", components: [{ type: i3.AppMenuitemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'app-menu', template: "<div class=\"layout-menu-wrapper\" [ngClass]=\"{'layout-sidebar-active': appMainService.sidebarActive}\"\n (click)=\"appMainService.onSidebarClick($event)\" (mouseover)=\"appMainService.onSidebarMouseOver($event)\" (mouseleave)=\"appMainService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\" *ngIf=\"!appSettings.isHorizontal() || appMainService.isMobile()\">\n\n <a href=\"#\" class=\"logo\">\n <img [src]=\"'assets/layout/images/logo-'+ (appSettings.colorScheme === 'light' ? 'dark' : 'light') + '.png'\">\n </a>\n\n <a href=\"#\" class=\"app-name\" *ngIf=\"!appSettings.isSlim() || appMainService.isMobile()\">\n <img [src]=\"'assets/layout/images/appname-'+ (appSettings.colorScheme === 'light' ? 'dark' : 'light') + '.png'\"/>\n </a>\n<!-- <a href=\"#\" class=\"menu-pin\" (click)=\"appMain.onToggleMenu($event)\">-->\n<!-- <span *ngIf=\"appMain.isOverlay()\" class=\"pi pi-times\"></span>-->\n<!-- <span *ngIf=\"appMain.isSidebar() && !appMain.sidebarStatic && appMain.pinActive\" class=\"pi pi-unlock\"></span>-->\n<!-- <span *ngIf=\"appMain.isSidebar() && appMain.sidebarStatic && appMain.pinActive\" class=\"pi pi-lock\"></span>-->\n<!-- </a>-->\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of model; let i = index;\">\n <li app-menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"menu-separator\"></li>\n </ng-container>\n </ul>\n </div>\n</div>\n" }]
37
+ }], ctorParameters: function () { return [{ type: i1.AppSettingsService }, { type: i2.AppMainComponentService }]; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW5nLWNvbW1vbnMvc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9hcHAubWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L2FwcC5tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVdoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBSXpCLFlBQW1CLFdBQStCLEVBQy9CLGNBQXVDO1FBRHZDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFIbkQsVUFBSyxHQUFlLEVBQUUsQ0FBQztJQUcrQixDQUFDO0lBRTlELFFBQVE7UUFDSixJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1Q7Z0JBQ0ksS0FBSyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ2hGO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNqRztZQUNEO2dCQUNJLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUNuRixLQUFLLEVBQUU7b0JBQ0g7d0JBQ0ksS0FBSyxFQUFFLGdDQUFnQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztxQkFDdEg7aUJBQ0o7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOzs2R0F4QlEsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsZ0RDWDdCLDRwREEyQkE7MkZEaEJhLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDSSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0FwcFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0FwcE1haW5Db21wb25lbnRTZXJ2aWNlfSBmcm9tICcuL2FwcC5tYWluLmNvbXBvbmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC5tZW51LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBcHBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBtb2RlbDogTWVudUl0ZW1bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHVibGljIGFwcE1haW5TZXJ2aWNlOiBBcHBNYWluQ29tcG9uZW50U2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm1vZGVsID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAncGFnZXMuZGFzaGJvYXJkLm5hbWUnLCBpY29uOiAncGkgcGktaG9tZScsIHJvdXRlckxpbms6IFsnL2Rhc2hib2FyZCddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ3BhZ2VzLnB1YmxpY1NlcnZpY2VzLm5hbWUnLCBpY29uOiAncGkgcGktZncgcGktYm9vaycsIHJvdXRlckxpbms6IFsnL3B1YmxpYy1zZXJ2aWNlcyddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAncGFnZXMuY29kZWxpc3RzLm5hbWUnLCBpY29uOiAncGkgcGktZncgcGktbGlzdCcsIHJvdXRlckxpbms6IFsnL2NvZGVsaXN0cyddLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAncGFnZXMucHVibGljT3JnYW5pemF0aW9ucy5uYW1lJywgaWNvbjogJ3BpIHBpLWZ3IHBpLWdsb2JlJywgcm91dGVyTGluazogWycvY29kZWxpc3RzL3B1YmxpYy1vcmdhbml6YXRpb25zJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LW1lbnUtd3JhcHBlclwiIFtuZ0NsYXNzXT1cInsnbGF5b3V0LXNpZGViYXItYWN0aXZlJzogYXBwTWFpblNlcnZpY2Uuc2lkZWJhckFjdGl2ZX1cIlxuICAgICAoY2xpY2spPVwiYXBwTWFpblNlcnZpY2Uub25TaWRlYmFyQ2xpY2soJGV2ZW50KVwiIChtb3VzZW92ZXIpPVwiYXBwTWFpblNlcnZpY2Uub25TaWRlYmFyTW91c2VPdmVyKCRldmVudClcIiAobW91c2VsZWF2ZSk9XCJhcHBNYWluU2VydmljZS5vblNpZGViYXJNb3VzZUxlYXZlKCRldmVudClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWVudS1sb2dvXCIgKm5nSWY9XCIhYXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkgfHwgYXBwTWFpblNlcnZpY2UuaXNNb2JpbGUoKVwiPlxuXG4gICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJsb2dvXCI+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tJysgKGFwcFNldHRpbmdzLmNvbG9yU2NoZW1lID09PSAnbGlnaHQnID8gJ2RhcmsnIDogJ2xpZ2h0JykgKyAnLnBuZydcIj5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJhcHAtbmFtZVwiICpuZ0lmPVwiIWFwcFNldHRpbmdzLmlzU2xpbSgpIHx8IGFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKClcIj5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCInYXNzZXRzL2xheW91dC9pbWFnZXMvYXBwbmFtZS0nKyAoYXBwU2V0dGluZ3MuY29sb3JTY2hlbWUgPT09ICdsaWdodCcgPyAnZGFyaycgOiAnbGlnaHQnKSArICcucG5nJ1wiLz5cbiAgICAgICAgPC9hPlxuPCEtLSAgICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cIm1lbnUtcGluXCIgKGNsaWNrKT1cImFwcE1haW4ub25Ub2dnbGVNZW51KCRldmVudClcIj4tLT5cbjwhLS0gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFwcE1haW4uaXNPdmVybGF5KClcIiBjbGFzcz1cInBpIHBpLXRpbWVzXCI+PC9zcGFuPi0tPlxuPCEtLSAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXBwTWFpbi5pc1NpZGViYXIoKSAmJiAhYXBwTWFpbi5zaWRlYmFyU3RhdGljICYmIGFwcE1haW4ucGluQWN0aXZlXCIgY2xhc3M9XCJwaSBwaS11bmxvY2tcIj48L3NwYW4+LS0+XG48IS0tICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhcHBNYWluLmlzU2lkZWJhcigpICYmIGFwcE1haW4uc2lkZWJhclN0YXRpYyAmJiBhcHBNYWluLnBpbkFjdGl2ZVwiIGNsYXNzPVwicGkgcGktbG9ja1wiPjwvc3Bhbj4tLT5cbjwhLS0gICAgICAgIDwvYT4tLT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtbWVudS1jb250YWluZXJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwibGF5b3V0LW1lbnVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbW9kZWw7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgPGxpIGFwcC1tZW51aXRlbSAqbmdJZj1cIiFpdGVtLnNlcGFyYXRvclwiIFtpdGVtXT1cIml0ZW1cIiBbaW5kZXhdPVwiaVwiIFtyb290XT1cInRydWVcIj48L2xpPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIml0ZW0uc2VwYXJhdG9yXCIgY2xhc3M9XCJtZW51LXNlcGFyYXRvclwiPjwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,243 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import { trigger, state, style, transition, animate } from '@angular/animations';
4
+ import { filter } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../services/settings.service";
7
+ import * as i2 from "./app.main.component.service";
8
+ import * as i3 from "@angular/router";
9
+ import * as i4 from "../../services/menu.service";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "primeng/ripple";
12
+ import * as i7 from "@ngx-translate/core";
13
+ export class AppMenuitemComponent {
14
+ constructor(appSettings, appMainService, router, cd, menuService) {
15
+ this.appSettings = appSettings;
16
+ this.appMainService = appMainService;
17
+ this.router = router;
18
+ this.cd = cd;
19
+ this.menuService = menuService;
20
+ this.index = 0;
21
+ this.root = false;
22
+ this.parentKey = null;
23
+ this.active = false;
24
+ this.hover = false;
25
+ this.key = '';
26
+ // TODO: remove ignore
27
+ // @ts-ignore
28
+ this.menuSourceSubscription = this.menuService.menuSource$.subscribe(key => {
29
+ // deactivate current active menu
30
+ if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {
31
+ this.active = false;
32
+ }
33
+ });
34
+ this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {
35
+ this.active = false;
36
+ });
37
+ this.router.events.pipe(filter(event => event instanceof NavigationEnd))
38
+ .subscribe(params => {
39
+ if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()) {
40
+ this.active = false;
41
+ }
42
+ else {
43
+ if (this.item.routerLink) {
44
+ this.updateActiveStateFromRoute();
45
+ }
46
+ else {
47
+ this.active = false;
48
+ }
49
+ }
50
+ });
51
+ }
52
+ ngOnInit() {
53
+ if (!(this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.item.routerLink) {
54
+ this.updateActiveStateFromRoute();
55
+ }
56
+ this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
57
+ }
58
+ updateActiveStateFromRoute() {
59
+ this.active = this.router.isActive(this.item.routerLink[0], this.item.items ? false : true);
60
+ }
61
+ itemClick(event) {
62
+ // avoid processing disabled items
63
+ if (this.item.disabled) {
64
+ event.preventDefault();
65
+ return;
66
+ }
67
+ // navigate with hover in horizontal mode
68
+ if (this.root) {
69
+ this.appMainService.menuHoverActive = !this.appMainService.menuHoverActive;
70
+ }
71
+ // notify other items
72
+ this.menuService.onMenuStateChange(this.key);
73
+ // execute command
74
+ if (this.item.command) {
75
+ this.item.command({ originalEvent: event, item: this.item });
76
+ }
77
+ // toggle active state
78
+ if (this.item.items) {
79
+ this.active = !this.active;
80
+ }
81
+ else {
82
+ // activate item
83
+ this.active = true;
84
+ if (this.appMainService.isMobile()) {
85
+ this.appMainService.staticMenuMobileActive = false;
86
+ }
87
+ if (this.appSettings.isOverlay()) {
88
+ this.appMainService.overlayMenuActive = false;
89
+ }
90
+ // reset horizontal menu
91
+ if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()) {
92
+ this.menuService.reset();
93
+ this.appMainService.menuHoverActive = false;
94
+ }
95
+ }
96
+ }
97
+ onMouseEnter() {
98
+ // activate item on hover
99
+ if (this.root && this.appMainService.menuHoverActive && (this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.appMainService.isDesktop()) {
100
+ this.menuService.onMenuStateChange(this.key);
101
+ this.active = true;
102
+ }
103
+ }
104
+ ngOnDestroy() {
105
+ if (this.menuSourceSubscription) {
106
+ this.menuSourceSubscription.unsubscribe();
107
+ }
108
+ if (this.menuResetSubscription) {
109
+ this.menuResetSubscription.unsubscribe();
110
+ }
111
+ }
112
+ }
113
+ AppMenuitemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuitemComponent, deps: [{ token: i1.AppSettingsService }, { token: i2.AppMainComponentService }, { token: i3.Router }, { token: i0.ChangeDetectorRef }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
114
+ AppMenuitemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AppMenuitemComponent, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active" } }, ngImport: i0, template: `
115
+ <ng-container>
116
+ <div *ngIf="root && item.visible !== false" class="layout-menuitem-root-text">{{ item.label | translate }}</div>
117
+ <a [attr.href]="item.url" (click)="itemClick($event)" *ngIf="(!item.routerLink || item.items) && item.visible !== false"
118
+ (mouseenter)="onMouseEnter()" (keydown.enter)="itemClick($event)"
119
+ [attr.target]="item.target" [attr.tabindex]="0" [ngClass]="item.class" pRipple>
120
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
121
+ <span class="layout-menuitem-text">{{ item.label | translate }}</span>
122
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
123
+ <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
124
+ </a>
125
+ <a (click)="itemClick($event)" (mouseenter)="hover=true" (mouseleave)="hover=false"
126
+ *ngIf="(item.routerLink && !item.items) && item.visible !== false"
127
+ [routerLink]="item.routerLink" routerLinkActive="active-menuitem-routerlink"
128
+ [routerLinkActiveOptions]="{exact: true}" [attr.target]="item.target" [attr.tabindex]="0"
129
+ [ngClass]="item.class" pRipple>
130
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
131
+ <span class="layout-menuitem-text">{{ item.label | translate }}</span>
132
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
133
+ <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
134
+ </a>
135
+ <ul *ngIf="((item.items && active) || (item.items && appSettings.isStatic() && (root || active))) && item.visible !== false" [@children]="(
136
+ (appSettings.isSlim()||appSettings.isHorizontal()) && !appMainService.isMobile() && root) ?
137
+ (active ? 'visible' : 'hidden') :
138
+ (appSettings.isStatic() && root && !appMainService.isMobile() ? 'visible' : (active ? 'visibleAnimated' : 'hiddenAnimated'))">
139
+ <ng-template ngFor let-child let-i="index" [ngForOf]="item.items">
140
+ <li app-menuitem [item]="child" [index]="i" [parentKey]="key" [class]="child.badgeClass"></li>
141
+ </ng-template>
142
+ </ul>
143
+ </ng-container>
144
+ `, isInline: true, components: [{ type: AppMenuitemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.Ripple, selector: "[pRipple]" }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i7.TranslatePipe }, animations: [
145
+ trigger('children', [
146
+ state('void', style({
147
+ height: '0px'
148
+ })),
149
+ state('hiddenAnimated', style({
150
+ height: '0px'
151
+ })),
152
+ state('visibleAnimated', style({
153
+ height: '*'
154
+ })),
155
+ state('visible', style({
156
+ height: '*',
157
+ 'z-index': 100
158
+ })),
159
+ state('hidden', style({
160
+ height: '0px',
161
+ 'z-index': '*'
162
+ })),
163
+ transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
164
+ transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
165
+ transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
166
+ ])
167
+ ] });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuitemComponent, decorators: [{
169
+ type: Component,
170
+ args: [{
171
+ /* tslint:disable:component-selector */
172
+ selector: '[app-menuitem]',
173
+ /* tslint:enable:component-selector */
174
+ template: `
175
+ <ng-container>
176
+ <div *ngIf="root && item.visible !== false" class="layout-menuitem-root-text">{{ item.label | translate }}</div>
177
+ <a [attr.href]="item.url" (click)="itemClick($event)" *ngIf="(!item.routerLink || item.items) && item.visible !== false"
178
+ (mouseenter)="onMouseEnter()" (keydown.enter)="itemClick($event)"
179
+ [attr.target]="item.target" [attr.tabindex]="0" [ngClass]="item.class" pRipple>
180
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
181
+ <span class="layout-menuitem-text">{{ item.label | translate }}</span>
182
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
183
+ <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
184
+ </a>
185
+ <a (click)="itemClick($event)" (mouseenter)="hover=true" (mouseleave)="hover=false"
186
+ *ngIf="(item.routerLink && !item.items) && item.visible !== false"
187
+ [routerLink]="item.routerLink" routerLinkActive="active-menuitem-routerlink"
188
+ [routerLinkActiveOptions]="{exact: true}" [attr.target]="item.target" [attr.tabindex]="0"
189
+ [ngClass]="item.class" pRipple>
190
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
191
+ <span class="layout-menuitem-text">{{ item.label | translate }}</span>
192
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
193
+ <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
194
+ </a>
195
+ <ul *ngIf="((item.items && active) || (item.items && appSettings.isStatic() && (root || active))) && item.visible !== false" [@children]="(
196
+ (appSettings.isSlim()||appSettings.isHorizontal()) && !appMainService.isMobile() && root) ?
197
+ (active ? 'visible' : 'hidden') :
198
+ (appSettings.isStatic() && root && !appMainService.isMobile() ? 'visible' : (active ? 'visibleAnimated' : 'hiddenAnimated'))">
199
+ <ng-template ngFor let-child let-i="index" [ngForOf]="item.items">
200
+ <li app-menuitem [item]="child" [index]="i" [parentKey]="key" [class]="child.badgeClass"></li>
201
+ </ng-template>
202
+ </ul>
203
+ </ng-container>
204
+ `,
205
+ host: {
206
+ '[class.layout-root-menuitem]': 'root',
207
+ '[class.active-menuitem]': 'active'
208
+ },
209
+ animations: [
210
+ trigger('children', [
211
+ state('void', style({
212
+ height: '0px'
213
+ })),
214
+ state('hiddenAnimated', style({
215
+ height: '0px'
216
+ })),
217
+ state('visibleAnimated', style({
218
+ height: '*'
219
+ })),
220
+ state('visible', style({
221
+ height: '*',
222
+ 'z-index': 100
223
+ })),
224
+ state('hidden', style({
225
+ height: '0px',
226
+ 'z-index': '*'
227
+ })),
228
+ transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
229
+ transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
230
+ transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
231
+ ])
232
+ ]
233
+ }]
234
+ }], ctorParameters: function () { return [{ type: i1.AppSettingsService }, { type: i2.AppMainComponentService }, { type: i3.Router }, { type: i0.ChangeDetectorRef }, { type: i4.MenuService }]; }, propDecorators: { item: [{
235
+ type: Input
236
+ }], index: [{
237
+ type: Input
238
+ }], root: [{
239
+ type: Input
240
+ }], parentKey: [{
241
+ type: Input
242
+ }] } });
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnVpdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvYXBwLm1lbnVpdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHL0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFzRXRDLE1BQU0sT0FBTyxvQkFBb0I7SUFvQjdCLFlBQW1CLFdBQStCLEVBQVMsY0FBdUMsRUFBUyxNQUFjLEVBQVUsRUFBcUIsRUFBVSxXQUF3QjtRQUF2SyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWhCakwsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXRCLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBRXZDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixVQUFLLEdBQVksS0FBSyxDQUFDO1FBTXZCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFHYixzQkFBc0I7UUFDdEIsYUFBYTtRQUNiLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7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LElBQUk7c0JBQVosS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlciwgTmF2aWdhdGlvbkVuZH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7dHJpZ2dlciwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNZW51U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7QXBwU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7QXBwTWFpbkNvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4vYXBwLm1haW4uY29tcG9uZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpjb21wb25lbnQtc2VsZWN0b3IgKi9cbiAgICBzZWxlY3RvcjogJ1thcHAtbWVudWl0ZW1dJyxcbiAgICAvKiB0c2xpbnQ6ZW5hYmxlOmNvbXBvbmVudC1zZWxlY3RvciAqL1xuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm9vdCAmJiBpdGVtLnZpc2libGUgIT09IGZhbHNlXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0tcm9vdC10ZXh0XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGEgW2F0dHIuaHJlZl09XCJpdGVtLnVybFwiIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiICpuZ0lmPVwiKCFpdGVtLnJvdXRlckxpbmsgfHwgaXRlbS5pdGVtcykgJiYgaXRlbS52aXNpYmxlICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiIChrZXlkb3duLmVudGVyKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiIFthdHRyLnRhYmluZGV4XT1cIjBcIiBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJpdGVtLmljb25cIiBjbGFzcz1cImxheW91dC1tZW51aXRlbS1pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXRleHRcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktYW5nbGUtZG93biBsYXlvdXQtc3VibWVudS10b2dnbGVyXCIgKm5nSWY9XCJpdGVtLml0ZW1zXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIj57e2l0ZW0uYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiIChtb3VzZWVudGVyKT1cImhvdmVyPXRydWVcIiAobW91c2VsZWF2ZSk9XCJob3Zlcj1mYWxzZVwiXG4gICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtLnJvdXRlckxpbmsgJiYgIWl0ZW0uaXRlbXMpICYmIGl0ZW0udmlzaWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZS1tZW51aXRlbS1yb3V0ZXJsaW5rXCJcbiAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6IHRydWV9XCIgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJpdGVtLmljb25cIiBjbGFzcz1cImxheW91dC1tZW51aXRlbS1pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXRleHRcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktYW5nbGUtZG93biBsYXlvdXQtc3VibWVudS10b2dnbGVyXCIgKm5nSWY9XCJpdGVtLml0ZW1zXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudWl0ZW0tYmFkZ2VcIiAqbmdJZj1cIml0ZW0uYmFkZ2VcIj57e2l0ZW0uYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDx1bCAqbmdJZj1cIigoaXRlbS5pdGVtcyAmJiBhY3RpdmUpIHx8IChpdGVtLml0ZW1zICYmIGFwcFNldHRpbmdzLmlzU3RhdGljKCkgJiYgKHJvb3QgfHwgYWN0aXZlKSkpICYmIGl0ZW0udmlzaWJsZSAhPT0gZmFsc2VcIiBbQGNoaWxkcmVuXT1cIihcbiAgICAgICAgICAgIChhcHBTZXR0aW5ncy5pc1NsaW0oKXx8YXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkpICYmICFhcHBNYWluU2VydmljZS5pc01vYmlsZSgpICYmIHJvb3QpID9cbiAgICAgICAgICAgIChhY3RpdmUgPyAndmlzaWJsZScgOiAnaGlkZGVuJykgOlxuICAgICAgICAgICAgKGFwcFNldHRpbmdzLmlzU3RhdGljKCkgJiYgcm9vdCAmJiAhYXBwTWFpblNlcnZpY2UuaXNNb2JpbGUoKSA/ICd2aXNpYmxlJyA6IChhY3RpdmUgPyAndmlzaWJsZUFuaW1hdGVkJyA6ICdoaWRkZW5BbmltYXRlZCcpKVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtY2hpbGQgbGV0LWk9XCJpbmRleFwiIFtuZ0Zvck9mXT1cIml0ZW0uaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBhcHAtbWVudWl0ZW0gW2l0ZW1dPVwiY2hpbGRcIiBbaW5kZXhdPVwiaVwiIFtwYXJlbnRLZXldPVwia2V5XCIgW2NsYXNzXT1cImNoaWxkLmJhZGdlQ2xhc3NcIj48L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBgLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5sYXlvdXQtcm9vdC1tZW51aXRlbV0nOiAncm9vdCcsXG4gICAgICAgICdbY2xhc3MuYWN0aXZlLW1lbnVpdGVtXSc6ICdhY3RpdmUnXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2NoaWxkcmVuJywgW1xuICAgICAgICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMHB4J1xuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ2hpZGRlbkFuaW1hdGVkJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCdcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCd2aXNpYmxlQW5pbWF0ZWQnLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnKidcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCd2aXNpYmxlJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJyonLFxuICAgICAgICAgICAgICAgICd6LWluZGV4JzogMTAwXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnaGlkZGVuJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCcsXG4gICAgICAgICAgICAgICAgJ3otaW5kZXgnOiAnKidcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGVBbmltYXRlZCA9PiBoaWRkZW5BbmltYXRlZCcsIGFuaW1hdGUoJzQwMG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKScpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2hpZGRlbkFuaW1hdGVkID0+IHZpc2libGVBbmltYXRlZCcsIGFuaW1hdGUoJzQwMG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKScpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gdmlzaWJsZUFuaW1hdGVkLCB2aXNpYmxlQW5pbWF0ZWQgPT4gdm9pZCcsIGFuaW1hdGUoJzQwMG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKScpKVxuICAgICAgICBdKVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwTWVudWl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XG5cbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHJvb3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHBhcmVudEtleTogc3RyaW5nfG51bGwgPSBudWxsO1xuXG4gICAgYWN0aXZlID0gZmFsc2U7XG5cbiAgICBob3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbWVudVNvdXJjZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgbWVudVJlc2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBrZXk6IHN0cmluZyA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5nc1NlcnZpY2UsIHB1YmxpYyBhcHBNYWluU2VydmljZTogQXBwTWFpbkNvbXBvbmVudFNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlKSB7XG4gICAgICAgIC8vIFRPRE86IHJlbW92ZSBpZ25vcmVcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLm1lbnVTb3VyY2VTdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVTZXJ2aWNlLm1lbnVTb3VyY2UkLnN1YnNjcmliZShrZXkgPT4ge1xuICAgICAgICAgICAgLy8gZGVhY3RpdmF0ZSBjdXJyZW50IGFjdGl2ZSBtZW51XG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmUgJiYgdGhpcy5rZXkgIT09IGtleSAmJiBrZXkuaW5kZXhPZih0aGlzLmtleSkgIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1lbnVSZXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubWVudVNlcnZpY2UucmVzZXRTb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuYXBwU2V0dGluZ3MuaXNTbGltKCkgfHwgdGhpcy5hcHBTZXR0aW5ncy5pc0hvcml6b250YWwoKSkgJiYgIXRoaXMuYXBwTWFpblNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVTdGF0ZUZyb21Sb3V0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoISh0aGlzLmFwcFNldHRpbmdzLmlzU2xpbSgpIHx8IHRoaXMuYXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkpICYmIHRoaXMuaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmtleSA9IHRoaXMucGFyZW50S2V5ID8gdGhpcy5wYXJlbnRLZXkgKyAnLScgKyB0aGlzLmluZGV4IDogU3RyaW5nKHRoaXMuaW5kZXgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMucm91dGVyLmlzQWN0aXZlKHRoaXMuaXRlbS5yb3V0ZXJMaW5rWzBdLCB0aGlzLml0ZW0uaXRlbXMgPyBmYWxzZSA6IHRydWUpO1xuICAgIH1cblxuICAgIGl0ZW1DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gYXZvaWQgcHJvY2Vzc2luZyBkaXNhYmxlZCBpdGVtc1xuICAgICAgICBpZiAodGhpcy5pdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbmF2aWdhdGUgd2l0aCBob3ZlciBpbiBob3Jpem9udGFsIG1vZGVcbiAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmUgPSAhdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBub3RpZnkgb3RoZXIgaXRlbXNcbiAgICAgICAgdGhpcy5tZW51U2VydmljZS5vbk1lbnVTdGF0ZUNoYW5nZSh0aGlzLmtleSk7XG5cbiAgICAgICAgLy8gZXhlY3V0ZSBjb21tYW5kXG4gICAgICAgIGlmICh0aGlzLml0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgdGhpcy5pdGVtLmNvbW1hbmQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtOiB0aGlzLml0ZW19KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvZ2dsZSBhY3RpdmUgc3RhdGVcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSAhdGhpcy5hY3RpdmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBhY3RpdmF0ZSBpdGVtXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwU2V0dGluZ3MuaXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLm92ZXJsYXlNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlc2V0IGhvcml6b250YWwgbWVudVxuICAgICAgICAgICAgaWYgKCh0aGlzLmFwcFNldHRpbmdzLmlzU2xpbSgpIHx8IHRoaXMuYXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkpICYmICF0aGlzLmFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkpe1xuICAgICAgICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLm1lbnVIb3ZlckFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICAvLyBhY3RpdmF0ZSBpdGVtIG9uIGhvdmVyXG4gICAgICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmUgJiYgKHRoaXMuYXBwU2V0dGluZ3MuaXNTbGltKCkgfHwgdGhpcy5hcHBTZXR0aW5ncy5pc0hvcml6b250YWwoKSkgJiYgdGhpcy5hcHBNYWluU2VydmljZS5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgdGhpcy5tZW51U2VydmljZS5vbk1lbnVTdGF0ZUNoYW5nZSh0aGlzLmtleSk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tZW51U291cmNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubWVudVJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=