@indice/ng-components 0.3.12 → 0.4.0-beta.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 (169) hide show
  1. package/fesm2022/indice-ng-components.mjs +314 -279
  2. package/fesm2022/indice-ng-components.mjs.map +1 -1
  3. package/index.d.ts +1894 -3
  4. package/package.json +8 -10
  5. package/esm2022/indice-ng-components.mjs +0 -5
  6. package/esm2022/lib/controls/advanced-search/advanced-search.component.mjs +0 -161
  7. package/esm2022/lib/controls/advanced-search/models.mjs +0 -109
  8. package/esm2022/lib/controls/avatar-initials/avatar-initials.component.mjs +0 -48
  9. package/esm2022/lib/controls/breadcrumb/breadcrumb-item.mjs +0 -14
  10. package/esm2022/lib/controls/breadcrumb/breadcrumb.component.mjs +0 -26
  11. package/esm2022/lib/controls/collapsible-panel/collapsible-panel.component.mjs +0 -20
  12. package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -118
  13. package/esm2022/lib/controls/content-tile/content-tile.component.mjs +0 -91
  14. package/esm2022/lib/controls/date-picker/date-picker.component.mjs +0 -300
  15. package/esm2022/lib/controls/drop-down-menu/drop-down-menu.component.mjs +0 -72
  16. package/esm2022/lib/controls/enhanced-combobox/enhanced-combobox.component.mjs +0 -115
  17. package/esm2022/lib/controls/kpi-tile/kpi-tile.component.mjs +0 -43
  18. package/esm2022/lib/controls/language-selection/language-selection.component.mjs +0 -31
  19. package/esm2022/lib/controls/list-view/list-column.component.mjs +0 -25
  20. package/esm2022/lib/controls/list-view/list-details-section.component.mjs +0 -17
  21. package/esm2022/lib/controls/list-view/list-tile.component.mjs +0 -17
  22. package/esm2022/lib/controls/list-view/list-view-empty-state.component.mjs +0 -29
  23. package/esm2022/lib/controls/list-view/list-view.component.mjs +0 -211
  24. package/esm2022/lib/controls/nav-links-list/nav-links-list.component.mjs +0 -54
  25. package/esm2022/lib/controls/notifications-indicator/notifications-indicator.component.mjs +0 -79
  26. package/esm2022/lib/controls/pager/pager.component.mjs +0 -130
  27. package/esm2022/lib/controls/progress-bar/progress-bar.component.mjs +0 -46
  28. package/esm2022/lib/controls/side-pane/side-pane.component.mjs +0 -106
  29. package/esm2022/lib/controls/skeleton-loader/skeleton-loader.component.mjs +0 -29
  30. package/esm2022/lib/controls/stats-grid/stats-grid.component.mjs +0 -49
  31. package/esm2022/lib/controls/stepper/lib-step-info.directive.mjs +0 -16
  32. package/esm2022/lib/controls/stepper/lib-step-label.directive.mjs +0 -16
  33. package/esm2022/lib/controls/stepper/lib-step.component.mjs +0 -81
  34. package/esm2022/lib/controls/stepper/lib-stepper.component.mjs +0 -108
  35. package/esm2022/lib/controls/stepper/types/step-selected-event.mjs +0 -4
  36. package/esm2022/lib/controls/stepper/types/stepper-type.mjs +0 -12
  37. package/esm2022/lib/controls/tabs/lib-tab-group.component.mjs +0 -66
  38. package/esm2022/lib/controls/tabs/lib-tab-label.directive.mjs +0 -16
  39. package/esm2022/lib/controls/tabs/lib-tab.component.mjs +0 -64
  40. package/esm2022/lib/controls/toaster/toaster-container.component.mjs +0 -28
  41. package/esm2022/lib/controls/toaster/toaster.component.mjs +0 -31
  42. package/esm2022/lib/controls/toggle/toggle.component.mjs +0 -64
  43. package/esm2022/lib/controls/toggle-button/toggle-button.component.mjs +0 -87
  44. package/esm2022/lib/controls/toggle-buttons-list/toggle-buttons-list.component.mjs +0 -34
  45. package/esm2022/lib/controls/user-profile-menu/user-profile-menu.component.mjs +0 -75
  46. package/esm2022/lib/directives/click-outside.directive.mjs +0 -189
  47. package/esm2022/lib/directives/dynamic-component-host.directive.mjs +0 -17
  48. package/esm2022/lib/helpers/base-list.component.mjs +0 -235
  49. package/esm2022/lib/icons.mjs +0 -36
  50. package/esm2022/lib/layouts/shell/shell-footer/shell-footer.component.mjs +0 -19
  51. package/esm2022/lib/layouts/shell/shell-header/shell-header.component.mjs +0 -138
  52. package/esm2022/lib/layouts/shell/shell-layout/shell-layout.component.mjs +0 -92
  53. package/esm2022/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +0 -54
  54. package/esm2022/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +0 -45
  55. package/esm2022/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +0 -33
  56. package/esm2022/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +0 -24
  57. package/esm2022/lib/layouts/views/form-layout/form-layout.component.mjs +0 -86
  58. package/esm2022/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +0 -103
  59. package/esm2022/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +0 -106
  60. package/esm2022/lib/layouts/views/view-layout/view-layout.component.mjs +0 -104
  61. package/esm2022/lib/ng-components.module.mjs +0 -324
  62. package/esm2022/lib/pages/auth/auth-callback/auth-callback.component.mjs +0 -30
  63. package/esm2022/lib/pages/auth/auth-renew/auth-renew.component.mjs +0 -31
  64. package/esm2022/lib/pages/auth/logged-out/logged-out.component.mjs +0 -28
  65. package/esm2022/lib/pages/http-status/error/error.component.mjs +0 -17
  66. package/esm2022/lib/pages/http-status/page-not-found/page-not-found.component.mjs +0 -15
  67. package/esm2022/lib/pages/http-status/unauthorized/unauthorized.component.mjs +0 -14
  68. package/esm2022/lib/pipes/address.pipe.mjs +0 -21
  69. package/esm2022/lib/pipes/duration-format.pipe.mjs +0 -64
  70. package/esm2022/lib/pipes/short-number.pipe.mjs +0 -43
  71. package/esm2022/lib/services/breadcrumb.service.mjs +0 -181
  72. package/esm2022/lib/services/component-loader/component-loader-options.class.mjs +0 -8
  73. package/esm2022/lib/services/component-loader/component-loader.class.mjs +0 -188
  74. package/esm2022/lib/services/component-loader/component-loader.factory.mjs +0 -32
  75. package/esm2022/lib/services/component-loader/content-ref.class.mjs +0 -13
  76. package/esm2022/lib/services/modal-service/modal-backdrop-component.mjs +0 -44
  77. package/esm2022/lib/services/modal-service/modal-container-component.mjs +0 -126
  78. package/esm2022/lib/services/modal-service/modal-options.class.mjs +0 -35
  79. package/esm2022/lib/services/modal-service/modal-service.mjs +0 -220
  80. package/esm2022/lib/services/modal-service/modal-styles.class.mjs +0 -11
  81. package/esm2022/lib/services/modal-service/modal.class.mjs +0 -27
  82. package/esm2022/lib/services/toaster.service.mjs +0 -26
  83. package/esm2022/lib/services/user-settings.service.mjs +0 -35
  84. package/esm2022/lib/services/utilities.service.mjs +0 -47
  85. package/esm2022/lib/tokens.mjs +0 -8
  86. package/esm2022/lib/types.mjs +0 -143
  87. package/esm2022/public-api.mjs +0 -77
  88. package/lib/controls/advanced-search/advanced-search.component.d.ts +0 -42
  89. package/lib/controls/advanced-search/models.d.ts +0 -92
  90. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +0 -14
  91. package/lib/controls/breadcrumb/breadcrumb-item.d.ts +0 -7
  92. package/lib/controls/breadcrumb/breadcrumb.component.d.ts +0 -12
  93. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +0 -10
  94. package/lib/controls/combobox/combobox.component.d.ts +0 -34
  95. package/lib/controls/content-tile/content-tile.component.d.ts +0 -34
  96. package/lib/controls/date-picker/date-picker.component.d.ts +0 -53
  97. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +0 -26
  98. package/lib/controls/enhanced-combobox/enhanced-combobox.component.d.ts +0 -37
  99. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +0 -15
  100. package/lib/controls/language-selection/language-selection.component.d.ts +0 -14
  101. package/lib/controls/list-view/list-column.component.d.ts +0 -9
  102. package/lib/controls/list-view/list-details-section.component.d.ts +0 -7
  103. package/lib/controls/list-view/list-tile.component.d.ts +0 -7
  104. package/lib/controls/list-view/list-view-empty-state.component.d.ts +0 -11
  105. package/lib/controls/list-view/list-view.component.d.ts +0 -62
  106. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +0 -21
  107. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +0 -22
  108. package/lib/controls/pager/pager.component.d.ts +0 -36
  109. package/lib/controls/progress-bar/progress-bar.component.d.ts +0 -16
  110. package/lib/controls/side-pane/side-pane.component.d.ts +0 -28
  111. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +0 -12
  112. package/lib/controls/stats-grid/stats-grid.component.d.ts +0 -16
  113. package/lib/controls/stepper/lib-step-info.directive.d.ts +0 -8
  114. package/lib/controls/stepper/lib-step-label.directive.d.ts +0 -8
  115. package/lib/controls/stepper/lib-step.component.d.ts +0 -34
  116. package/lib/controls/stepper/lib-stepper.component.d.ts +0 -43
  117. package/lib/controls/stepper/types/step-selected-event.d.ts +0 -12
  118. package/lib/controls/stepper/types/stepper-type.d.ts +0 -10
  119. package/lib/controls/tabs/lib-tab-group.component.d.ts +0 -21
  120. package/lib/controls/tabs/lib-tab-label.directive.d.ts +0 -8
  121. package/lib/controls/tabs/lib-tab.component.d.ts +0 -24
  122. package/lib/controls/toaster/toaster-container.component.d.ts +0 -13
  123. package/lib/controls/toaster/toaster.component.d.ts +0 -15
  124. package/lib/controls/toggle/toggle.component.d.ts +0 -19
  125. package/lib/controls/toggle-button/toggle-button.component.d.ts +0 -25
  126. package/lib/controls/toggle-buttons-list/toggle-buttons-list.component.d.ts +0 -15
  127. package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +0 -25
  128. package/lib/directives/click-outside.directive.d.ts +0 -40
  129. package/lib/directives/dynamic-component-host.directive.d.ts +0 -9
  130. package/lib/helpers/base-list.component.d.ts +0 -55
  131. package/lib/icons.d.ts +0 -34
  132. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +0 -8
  133. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +0 -40
  134. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +0 -27
  135. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +0 -20
  136. package/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.d.ts +0 -14
  137. package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +0 -16
  138. package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +0 -11
  139. package/lib/layouts/views/form-layout/form-layout.component.d.ts +0 -26
  140. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +0 -44
  141. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +0 -29
  142. package/lib/layouts/views/view-layout/view-layout.component.d.ts +0 -31
  143. package/lib/ng-components.module.d.ts +0 -70
  144. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +0 -13
  145. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +0 -12
  146. package/lib/pages/auth/logged-out/logged-out.component.d.ts +0 -12
  147. package/lib/pages/http-status/error/error.component.d.ts +0 -8
  148. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +0 -8
  149. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +0 -8
  150. package/lib/pipes/address.pipe.d.ts +0 -8
  151. package/lib/pipes/duration-format.pipe.d.ts +0 -8
  152. package/lib/pipes/short-number.pipe.d.ts +0 -7
  153. package/lib/services/breadcrumb.service.d.ts +0 -29
  154. package/lib/services/component-loader/component-loader-options.class.d.ts +0 -30
  155. package/lib/services/component-loader/component-loader.class.d.ts +0 -92
  156. package/lib/services/component-loader/component-loader.factory.d.ts +0 -24
  157. package/lib/services/component-loader/content-ref.class.d.ts +0 -12
  158. package/lib/services/modal-service/modal-backdrop-component.d.ts +0 -20
  159. package/lib/services/modal-service/modal-container-component.d.ts +0 -33
  160. package/lib/services/modal-service/modal-options.class.d.ts +0 -81
  161. package/lib/services/modal-service/modal-service.d.ts +0 -58
  162. package/lib/services/modal-service/modal-styles.class.d.ts +0 -10
  163. package/lib/services/modal-service/modal.class.d.ts +0 -43
  164. package/lib/services/toaster.service.d.ts +0 -11
  165. package/lib/services/user-settings.service.d.ts +0 -13
  166. package/lib/services/utilities.service.d.ts +0 -11
  167. package/lib/tokens.d.ts +0 -10
  168. package/lib/types.d.ts +0 -188
  169. package/public-api.d.ts +0 -67
@@ -1,64 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DurationFormatPipe {
4
- transform(value, arg1, arg2) {
5
- let days;
6
- let seconds;
7
- let minutes;
8
- let hours;
9
- if (arg1 === 'ms' && arg2 === 'hhmmss') {
10
- seconds = Math.floor((value / 1000) % 60);
11
- minutes = Math.floor(((value / (1000 * 60)) % 60));
12
- hours = Math.floor((value / (1000 * 60 * 60)));
13
- return this.format(arg2, seconds, minutes, hours, days);
14
- }
15
- else if (arg1 === 's' && arg2 === 'hhmmss') {
16
- seconds = Math.floor((value % 60));
17
- minutes = Math.floor(((value / 60) % 60));
18
- hours = Math.floor(((value / 60) / 60));
19
- return this.format(arg2, seconds, minutes, hours, days);
20
- }
21
- else if (arg1 === 'ms' && (arg2 === 'ddhhmmss' || arg2 === 'ddhhmmssLong')) {
22
- seconds = Math.floor(((value / 1000) % 60));
23
- minutes = Math.floor((value / (1000 * 60) % 60));
24
- hours = Math.floor((value / (1000 * 60 * 60) % 24));
25
- days = Math.floor((value / (1000 * 60 * 60 * 24)));
26
- return this.format(arg2, seconds, minutes, hours, days);
27
- }
28
- else if (arg1 === 's' && (arg2 === 'ddhhmmss' || arg2 === 'ddhhmmssLong')) {
29
- seconds = Math.floor(value % 60);
30
- minutes = Math.floor(((value / 60) % 60));
31
- hours = Math.floor(((value / 60) / 60) % 24);
32
- days = Math.floor((((value / 60) / 60) / 24));
33
- return this.format(arg2, seconds, minutes, hours, days);
34
- }
35
- else {
36
- return value;
37
- }
38
- }
39
- format(arg2, seconds, minutes, hours, days) {
40
- (days < 10) ? days = '0' + days : days;
41
- (hours < 10) ? hours = '0' + hours : hours;
42
- (minutes < 10) ? minutes = '0' + minutes : minutes;
43
- (seconds < 10) ? seconds = '0' + seconds : seconds;
44
- switch (arg2) {
45
- case 'hhmmss':
46
- return `${hours}:${minutes}:${seconds}`;
47
- case 'ddhhmmss':
48
- return `${days}d, ${hours}h, ${minutes}m, ${seconds}s`;
49
- case 'ddhhmmssLong':
50
- return `${days} days, ${hours} hours, ${minutes} minutes, ${seconds} seconds`;
51
- }
52
- return undefined;
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DurationFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
55
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: DurationFormatPipe, name: "durationFormat", pure: false }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DurationFormatPipe, decorators: [{
58
- type: Pipe,
59
- args: [{
60
- name: 'durationFormat',
61
- pure: false
62
- }]
63
- }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24tZm9ybWF0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvcGlwZXMvZHVyYXRpb24tZm9ybWF0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFTLEVBQUUsSUFBUztRQUV4QyxJQUFJLElBQVMsQ0FBQztRQUNkLElBQUksT0FBWSxDQUFDO1FBQ2pCLElBQUksT0FBWSxDQUFDO1FBQ2pCLElBQUksS0FBVSxDQUFDO1FBRWYsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFMUQsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFMUQsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxRCxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLEtBQUssY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUM1RSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxRCxDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsSUFBWSxFQUFFLE9BQVksRUFBRSxPQUFZLEVBQUUsS0FBVSxFQUFFLElBQVM7UUFDNUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0MsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbkQsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFbkQsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssUUFBUTtnQkFDWCxPQUFPLEdBQUcsS0FBSyxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUUxQyxLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxHQUFHLElBQUksTUFBTSxLQUFLLE1BQU0sT0FBTyxNQUFNLE9BQU8sR0FBRyxDQUFDO1lBRXpELEtBQUssY0FBYztnQkFDakIsT0FBTyxHQUFHLElBQUksVUFBVSxLQUFLLFdBQVcsT0FBTyxhQUFhLE9BQU8sVUFBVSxDQUFDO1FBQ2xGLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzhHQTFEVSxrQkFBa0I7NEdBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFKOUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZHVyYXRpb25Gb3JtYXQnLFxyXG4gIHB1cmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEdXJhdGlvbkZvcm1hdFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZzE6IGFueSwgYXJnMjogYW55KTogc3RyaW5nIHtcclxuXHJcbiAgICBsZXQgZGF5czogYW55O1xyXG4gICAgbGV0IHNlY29uZHM6IGFueTtcclxuICAgIGxldCBtaW51dGVzOiBhbnk7XHJcbiAgICBsZXQgaG91cnM6IGFueTtcclxuXHJcbiAgICBpZiAoYXJnMSA9PT0gJ21zJyAmJiBhcmcyID09PSAnaGhtbXNzJykge1xyXG4gICAgICBzZWNvbmRzID0gTWF0aC5mbG9vcigodmFsdWUgLyAxMDAwKSAlIDYwKTtcclxuICAgICAgbWludXRlcyA9IE1hdGguZmxvb3IoKCh2YWx1ZSAvICgxMDAwICogNjApKSAlIDYwKSk7XHJcbiAgICAgIGhvdXJzID0gTWF0aC5mbG9vcigodmFsdWUgLyAoMTAwMCAqIDYwICogNjApKSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdChhcmcyLCBzZWNvbmRzLCBtaW51dGVzLCBob3VycywgZGF5cyk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChhcmcxID09PSAncycgJiYgYXJnMiA9PT0gJ2hobW1zcycpIHtcclxuICAgICAgc2Vjb25kcyA9IE1hdGguZmxvb3IoKHZhbHVlICUgNjApKTtcclxuICAgICAgbWludXRlcyA9IE1hdGguZmxvb3IoKCh2YWx1ZSAvIDYwKSAlIDYwKSk7XHJcbiAgICAgIGhvdXJzID0gTWF0aC5mbG9vcigoKHZhbHVlIC8gNjApIC8gNjApKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KGFyZzIsIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCBkYXlzKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGFyZzEgPT09ICdtcycgJiYgKGFyZzIgPT09ICdkZGhobW1zcycgfHwgYXJnMiA9PT0gJ2RkaGhtbXNzTG9uZycpKSB7XHJcbiAgICAgIHNlY29uZHMgPSBNYXRoLmZsb29yKCgodmFsdWUgLyAxMDAwKSAlIDYwKSk7XHJcbiAgICAgIG1pbnV0ZXMgPSBNYXRoLmZsb29yKCh2YWx1ZSAvICgxMDAwICogNjApICUgNjApKTtcclxuICAgICAgaG91cnMgPSBNYXRoLmZsb29yKCh2YWx1ZSAvICgxMDAwICogNjAgKiA2MCkgJSAyNCkpO1xyXG4gICAgICBkYXlzID0gTWF0aC5mbG9vcigodmFsdWUgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0KGFyZzIsIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCBkYXlzKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGFyZzEgPT09ICdzJyAmJiAoYXJnMiA9PT0gJ2RkaGhtbXNzJyB8fCBhcmcyID09PSAnZGRoaG1tc3NMb25nJykpIHtcclxuICAgICAgc2Vjb25kcyA9IE1hdGguZmxvb3IodmFsdWUgJSA2MCk7XHJcbiAgICAgIG1pbnV0ZXMgPSBNYXRoLmZsb29yKCgodmFsdWUgLyA2MCkgJSA2MCkpO1xyXG4gICAgICBob3VycyA9IE1hdGguZmxvb3IoKCh2YWx1ZSAvIDYwKSAvIDYwKSAlIDI0KTtcclxuICAgICAgZGF5cyA9IE1hdGguZmxvb3IoKCgodmFsdWUgLyA2MCkgLyA2MCkgLyAyNCkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXQoYXJnMiwgc2Vjb25kcywgbWludXRlcywgaG91cnMsIGRheXMpO1xyXG5cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChhcmcyOiBzdHJpbmcsIHNlY29uZHM6IGFueSwgbWludXRlczogYW55LCBob3VyczogYW55LCBkYXlzOiBhbnkpOiBhbnkge1xyXG4gICAgKGRheXMgPCAxMCkgPyBkYXlzID0gJzAnICsgZGF5cyA6IGRheXM7XHJcbiAgICAoaG91cnMgPCAxMCkgPyBob3VycyA9ICcwJyArIGhvdXJzIDogaG91cnM7XHJcbiAgICAobWludXRlcyA8IDEwKSA/IG1pbnV0ZXMgPSAnMCcgKyBtaW51dGVzIDogbWludXRlcztcclxuICAgIChzZWNvbmRzIDwgMTApID8gc2Vjb25kcyA9ICcwJyArIHNlY29uZHMgOiBzZWNvbmRzO1xyXG5cclxuICAgIHN3aXRjaCAoYXJnMikge1xyXG4gICAgICBjYXNlICdoaG1tc3MnOlxyXG4gICAgICAgIHJldHVybiBgJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9YDtcclxuXHJcbiAgICAgIGNhc2UgJ2RkaGhtbXNzJzpcclxuICAgICAgICByZXR1cm4gYCR7ZGF5c31kLCAke2hvdXJzfWgsICR7bWludXRlc31tLCAke3NlY29uZHN9c2A7XHJcblxyXG4gICAgICBjYXNlICdkZGhobW1zc0xvbmcnOlxyXG4gICAgICAgIHJldHVybiBgJHtkYXlzfSBkYXlzLCAke2hvdXJzfSBob3VycywgJHttaW51dGVzfSBtaW51dGVzLCAke3NlY29uZHN9IHNlY29uZHNgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,43 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ShortNumberPipe {
4
- transform(number, args) {
5
- if (isNaN(number))
6
- return null; // will only work value is a number
7
- if (number === null)
8
- return null;
9
- if (number === 0)
10
- return null;
11
- let abs = Math.abs(number);
12
- const rounder = Math.pow(10, 1);
13
- const isNegative = number < 0; // will also work for Negative numbers
14
- let key = '';
15
- const powers = [
16
- { key: 'Q', value: Math.pow(10, 15) },
17
- { key: 'T', value: Math.pow(10, 12) },
18
- { key: 'B', value: Math.pow(10, 9) },
19
- { key: 'M', value: Math.pow(10, 6) },
20
- { key: 'K', value: 1000 }
21
- ];
22
- for (let i = 0; i < powers.length; i++) {
23
- let reduced = abs / powers[i].value;
24
- reduced = Math.round(reduced * rounder) / rounder;
25
- if (reduced >= 1) {
26
- abs = reduced;
27
- key = powers[i].key;
28
- break;
29
- }
30
- }
31
- return (isNegative ? '-' : '') + abs + key;
32
- }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ShortNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
34
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: ShortNumberPipe, name: "shortNumber", pure: false }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ShortNumberPipe, decorators: [{
37
- type: Pipe,
38
- args: [{
39
- name: 'shortNumber',
40
- pure: false
41
- }]
42
- }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnQtbnVtYmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvcGlwZXMvc2hvcnQtbnVtYmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxlQUFlO0lBRXhCLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBVTtRQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLG1DQUFtQztRQUNuRSxJQUFJLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDakMsSUFBSSxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzlCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztRQUNyRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFYixNQUFNLE1BQU0sR0FBRztZQUNYLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUM7WUFDbkMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQztZQUNuQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDO1lBQ2xDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUM7WUFDbEMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDMUIsQ0FBQztRQUVGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxPQUFPLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDcEMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztZQUNsRCxJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixHQUFHLEdBQUcsT0FBTyxDQUFDO2dCQUNkLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNwQixNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDL0MsQ0FBQzs4R0E3QlEsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUozQixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxhQUFhO29CQUNuQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6ICdzaG9ydE51bWJlcicsXHJcbiAgICBwdXJlOiBmYWxzZVxyXG4gIH0pXHJcbmV4cG9ydCBjbGFzcyBTaG9ydE51bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICB0cmFuc2Zvcm0obnVtYmVyOiBudW1iZXIsIGFyZ3M/OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmIChpc05hTihudW1iZXIpKSByZXR1cm4gbnVsbDsgLy8gd2lsbCBvbmx5IHdvcmsgdmFsdWUgaXMgYSBudW1iZXJcclxuICAgICAgICBpZiAobnVtYmVyID09PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAobnVtYmVyID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBsZXQgYWJzID0gTWF0aC5hYnMobnVtYmVyKTtcclxuICAgICAgICBjb25zdCByb3VuZGVyID0gTWF0aC5wb3coMTAsIDEpO1xyXG4gICAgICAgIGNvbnN0IGlzTmVnYXRpdmUgPSBudW1iZXIgPCAwOyAvLyB3aWxsIGFsc28gd29yayBmb3IgTmVnYXRpdmUgbnVtYmVyc1xyXG4gICAgICAgIGxldCBrZXkgPSAnJztcclxuXHJcbiAgICAgICAgY29uc3QgcG93ZXJzID0gW1xyXG4gICAgICAgICAgICB7a2V5OiAnUScsIHZhbHVlOiBNYXRoLnBvdygxMCwgMTUpfSxcclxuICAgICAgICAgICAge2tleTogJ1QnLCB2YWx1ZTogTWF0aC5wb3coMTAsIDEyKX0sXHJcbiAgICAgICAgICAgIHtrZXk6ICdCJywgdmFsdWU6IE1hdGgucG93KDEwLCA5KX0sXHJcbiAgICAgICAgICAgIHtrZXk6ICdNJywgdmFsdWU6IE1hdGgucG93KDEwLCA2KX0sXHJcbiAgICAgICAgICAgIHtrZXk6ICdLJywgdmFsdWU6IDEwMDB9XHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3dlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHJlZHVjZWQgPSBhYnMgLyBwb3dlcnNbaV0udmFsdWU7XHJcbiAgICAgICAgICAgIHJlZHVjZWQgPSBNYXRoLnJvdW5kKHJlZHVjZWQgKiByb3VuZGVyKSAvIHJvdW5kZXI7XHJcbiAgICAgICAgICAgIGlmIChyZWR1Y2VkID49IDEpIHtcclxuICAgICAgICAgICAgICAgIGFicyA9IHJlZHVjZWQ7XHJcbiAgICAgICAgICAgICAgICBrZXkgPSBwb3dlcnNbaV0ua2V5O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChpc05lZ2F0aXZlID8gJy0nIDogJycpICsgYWJzICsga2V5O1xyXG4gICAgfVxyXG59Il19
@@ -1,181 +0,0 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
- import { NavigationEnd } from '@angular/router';
3
- import { Subject } from 'rxjs';
4
- import { distinctUntilChanged, filter } from 'rxjs/operators';
5
- import { BreadcrumbItem } from '../controls/breadcrumb/breadcrumb-item';
6
- import { SHELL_CONFIG } from '../tokens';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/router";
9
- import * as i2 from "./utilities.service";
10
- export class BreadcrumbService {
11
- constructor(_router, _utilities, _shellConfig) {
12
- this._router = _router;
13
- this._utilities = _utilities;
14
- this._shellConfig = _shellConfig;
15
- this._breadcrumb$ = new Subject();
16
- this.breadcrumb = this._breadcrumb$.asObservable();
17
- if (_shellConfig?.breadcrumb) {
18
- this._defaultHome = this._getDefaultHomeItem();
19
- this._router
20
- .events
21
- .pipe(filter(event => event instanceof NavigationEnd), distinctUntilChanged())
22
- .subscribe(_ => {
23
- const breadcrumb = this._buildBreadcrumb();
24
- this._breadcrumb$.next(breadcrumb);
25
- });
26
- }
27
- }
28
- _getDefaultHomeItem() {
29
- const routerConfig = this._router.config;
30
- const declaredHomeRoutes = routerConfig.filter((route) => route.data?.breadcrumb?.isHome === true);
31
- if (declaredHomeRoutes.length > 1) {
32
- throw new Error('You can declare only one route as home.');
33
- }
34
- let homeRoute;
35
- if (declaredHomeRoutes.length === 1) {
36
- homeRoute = declaredHomeRoutes[0];
37
- }
38
- else {
39
- homeRoute = routerConfig.find((route) => route.path === '');
40
- if (!homeRoute) {
41
- return undefined;
42
- }
43
- const redirectionUrl = homeRoute.redirectTo;
44
- if (!homeRoute?.data?.breadcrumb?.title && redirectionUrl) {
45
- homeRoute = routerConfig.find((route) => route.path === redirectionUrl);
46
- if (!homeRoute) {
47
- return undefined;
48
- }
49
- }
50
- }
51
- return new BreadcrumbItem(this._getRouteTitle(homeRoute), homeRoute.path || '');
52
- }
53
- _getRouteTitle(route) {
54
- return route?.data?.breadcrumb?.title || route.component?.name.replace('Component', '');
55
- }
56
- _buildBreadcrumb() {
57
- const breadcrumb = [];
58
- if (this._defaultHome) {
59
- breadcrumb.push(this._defaultHome);
60
- }
61
- const url = this._router.url;
62
- const path = this._utilities.getPathFromUrl(url) || '';
63
- const activeRoute = this._findRouteFromUrl(path);
64
- const parentRoutes = this._findParentRoutes(activeRoute);
65
- breadcrumb.push(...parentRoutes);
66
- if (activeRoute && activeRoute?.path !== this._defaultHome?.url) {
67
- const routeData = this._getBreadcrumbRouteData(activeRoute);
68
- breadcrumb.push(new BreadcrumbItem(this._getRouteTitle(activeRoute), (routeData._fullPath || activeRoute.path || '')));
69
- }
70
- return breadcrumb.map((route) => {
71
- const routeSegments = route.url?.split('/') || [];
72
- routeSegments.forEach((segment, index) => {
73
- if (segment.startsWith(':')) {
74
- route.url = route.url?.replace(segment, url.split('/')[index + 1]);
75
- }
76
- });
77
- return route;
78
- });
79
- }
80
- _findRouteFromUrl(url) {
81
- let urlSegments = url.replace(/\(.+\)/, '') // remove any secondary outlet segments and focus on primary outlet that is the main route
82
- .split('/') // split the URL into segments
83
- .filter((segment) => segment !== '');
84
- const outletRegex = new RegExp("\\(([^()]+)\\)");
85
- var outletPart = url.match(outletRegex)?.[1];
86
- //if (outletPart) {
87
- //urlSegments = outletPart.replace(/.+:/, '').split('/') // split the URL into segments
88
- // .filter((segment: string) => segment !== '');
89
- //}
90
- const routerConfig = this._router.config;
91
- const flattenedRouterConfig = this._flattenRoutes(routerConfig);
92
- const filteredRouterConfig = flattenedRouterConfig.filter((route) => {
93
- const routeData = this._getBreadcrumbRouteData(route);
94
- return (routeData._fullPath || route.path)?.split('/').length === urlSegments.length;
95
- });
96
- const route = filteredRouterConfig.find((route) => {
97
- const routeData = this._getBreadcrumbRouteData(route);
98
- const routeSegments = (routeData._fullPath || route.path)?.split('/') || [];
99
- let segmentsMatched = false;
100
- for (let i = 0; i < routeSegments.length; i++) {
101
- const currentSegment = routeSegments[i];
102
- const isDynamicSegment = currentSegment.startsWith(':');
103
- if (!isDynamicSegment) {
104
- segmentsMatched = currentSegment === urlSegments[i];
105
- }
106
- }
107
- return segmentsMatched ? route : undefined;
108
- });
109
- return route;
110
- }
111
- _findParentRoutes(activeRoute, items = []) {
112
- if (!activeRoute) {
113
- return [];
114
- }
115
- const routeData = this._getBreadcrumbRouteData(activeRoute);
116
- let urlSegments = (routeData._fullPath || activeRoute.path)?.split('/').filter((segment) => segment !== '') || [];
117
- if (urlSegments?.length <= 1) {
118
- return [...items];
119
- }
120
- const previousUrl = urlSegments.slice(0, -1).join('/');
121
- const route = this._findRouteFromUrl(previousUrl);
122
- if (route) {
123
- const routeData = this._getBreadcrumbRouteData(route);
124
- if (routeData._level > 0 || (!route.children || route.children.length === 0)) {
125
- items = this._findParentRoutes(route, [new BreadcrumbItem(this._getRouteTitle(route), routeData._fullPath || route.path), ...items]);
126
- }
127
- }
128
- return [...items];
129
- }
130
- _flattenRoutes(routes, level) {
131
- let children = [];
132
- level = level || 0;
133
- return routes.map((route) => {
134
- const routeData = this._getBreadcrumbRouteData(route);
135
- routeData._level = level;
136
- if (route.children && route.children.length) {
137
- route.children.forEach((child) => {
138
- const childRouteData = this._getBreadcrumbRouteData(child);
139
- const routePath = routeData._fullPath || route.path || '';
140
- const childPath = child.path?.endsWith('/') ? child.path.slice(0, -1) : child.path;
141
- childRouteData._fullPath = childPath?.indexOf(routePath) === -1 ? `${routePath}/${childPath}` : childPath;
142
- });
143
- children = [...children, ...route.children];
144
- }
145
- return route;
146
- }).concat(children.length ? this._flattenRoutes(children, level + 1) : children);
147
- }
148
- _getBreadcrumbRouteData(route) {
149
- if (!route) {
150
- throw new Error('No route was found');
151
- }
152
- if (!route.data?.breadcrumb) {
153
- if (!route.data) {
154
- route.data = {};
155
- }
156
- route.data.breadcrumb = new BreadcrumbRouteData(0, false, undefined);
157
- }
158
- return route.data.breadcrumb;
159
- }
160
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: BreadcrumbService, deps: [{ token: i1.Router }, { token: i2.UtilitiesService }, { token: SHELL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
161
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: BreadcrumbService, providedIn: 'root' }); }
162
- }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: BreadcrumbService, decorators: [{
164
- type: Injectable,
165
- args: [{
166
- providedIn: 'root'
167
- }]
168
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.UtilitiesService }, { type: undefined, decorators: [{
169
- type: Optional
170
- }, {
171
- type: Inject,
172
- args: [SHELL_CONFIG]
173
- }] }] });
174
- export class BreadcrumbRouteData {
175
- constructor(_level, isHome, _fullPath) {
176
- this._level = _level;
177
- this.isHome = isHome;
178
- this._fullPath = _fullPath;
179
- }
180
- }
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2JyZWFkY3J1bWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFRLGFBQWEsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQU16QyxNQUFNLE9BQU8saUJBQWlCO0lBSTFCLFlBQ1ksT0FBZSxFQUNmLFVBQTRCLEVBQ0ssWUFBa0I7UUFGbkQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQ0ssaUJBQVksR0FBWixZQUFZLENBQU07UUFMdkQsaUJBQVksR0FBOEIsSUFBSSxPQUFPLEVBQW9CLENBQUM7UUFzQjNFLGVBQVUsR0FBaUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQWYvRSxJQUFJLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxPQUFPO2lCQUNQLE1BQU07aUJBQ04sSUFBSSxDQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsRUFDL0Msb0JBQW9CLEVBQUUsQ0FD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QUM7UUFDekUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDakMsQ0FBQzs4R0FuS1EsaUJBQWlCLHdFQU9GLFlBQVk7a0hBUDNCLGlCQUFpQixjQUZkLE1BQU07OzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQVFRLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWTs7QUErSnhDLE1BQU0sT0FBTyxtQkFBbUI7SUFDNUIsWUFBbUIsTUFBYyxFQUFTLE1BQWUsRUFBUyxTQUE4QjtRQUE3RSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUFTLGNBQVMsR0FBVCxTQUFTLENBQXFCO0lBQUksQ0FBQztDQUN4RyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YSwgTmF2aWdhdGlvbkVuZCwgUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi4vY29udHJvbHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLWl0ZW0nO1xyXG5pbXBvcnQgeyBTSEVMTF9DT05GSUcgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBVdGlsaXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi91dGlsaXRpZXMuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX2RlZmF1bHRIb21lOiBCcmVhZGNydW1iSXRlbSB8IHVuZGVmaW5lZDtcclxuICAgIHByaXZhdGUgX2JyZWFkY3J1bWIkOiBTdWJqZWN0PEJyZWFkY3J1bWJJdGVtW10+ID0gbmV3IFN1YmplY3Q8QnJlYWRjcnVtYkl0ZW1bXT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIF91dGlsaXRpZXM6IFV0aWxpdGllc1NlcnZpY2UsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChTSEVMTF9DT05GSUcpIHB1YmxpYyBfc2hlbGxDb25maWc/OiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIGlmIChfc2hlbGxDb25maWc/LmJyZWFkY3J1bWIpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEhvbWUgPSB0aGlzLl9nZXREZWZhdWx0SG9tZUl0ZW0oKTtcclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyXHJcbiAgICAgICAgICAgICAgICAuZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLl9idWlsZEJyZWFkY3J1bWIoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9icmVhZGNydW1iJC5uZXh0KGJyZWFkY3J1bWIpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBicmVhZGNydW1iOiBPYnNlcnZhYmxlPEJyZWFkY3J1bWJJdGVtW10+ID0gdGhpcy5fYnJlYWRjcnVtYiQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0RGVmYXVsdEhvbWVJdGVtKCk6IEJyZWFkY3J1bWJJdGVtIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCByb3V0ZXJDb25maWcgPSB0aGlzLl9yb3V0ZXIuY29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGRlY2xhcmVkSG9tZVJvdXRlcyA9IHJvdXRlckNvbmZpZy5maWx0ZXIoKHJvdXRlOiBSb3V0ZSkgPT4gcm91dGUuZGF0YT8uYnJlYWRjcnVtYj8uaXNIb21lID09PSB0cnVlKTtcclxuICAgICAgICBpZiAoZGVjbGFyZWRIb21lUm91dGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgY2FuIGRlY2xhcmUgb25seSBvbmUgcm91dGUgYXMgaG9tZS4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGhvbWVSb3V0ZTogUm91dGUgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKGRlY2xhcmVkSG9tZVJvdXRlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgaG9tZVJvdXRlID0gZGVjbGFyZWRIb21lUm91dGVzWzBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGhvbWVSb3V0ZSA9IHJvdXRlckNvbmZpZy5maW5kKChyb3V0ZTogUm91dGUpID0+IHJvdXRlLnBhdGggPT09ICcnKTtcclxuICAgICAgICAgICAgaWYgKCFob21lUm91dGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVkaXJlY3Rpb25VcmwgPSBob21lUm91dGUucmVkaXJlY3RUbztcclxuICAgICAgICAgICAgaWYgKCFob21lUm91dGU/LmRhdGE/LmJyZWFkY3J1bWI/LnRpdGxlICYmIHJlZGlyZWN0aW9uVXJsKSB7XHJcbiAgICAgICAgICAgICAgICBob21lUm91dGUgPSByb3V0ZXJDb25maWcuZmluZCgocm91dGU6IFJvdXRlKSA9PiByb3V0ZS5wYXRoID09PSByZWRpcmVjdGlvblVybCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhvbWVSb3V0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCcmVhZGNydW1iSXRlbSh0aGlzLl9nZXRSb3V0ZVRpdGxlKGhvbWVSb3V0ZSksIGhvbWVSb3V0ZS5wYXRoIHx8ICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRSb3V0ZVRpdGxlKHJvdXRlOiBSb3V0ZSkge1xyXG4gICAgICAgIHJldHVybiByb3V0ZT8uZGF0YT8uYnJlYWRjcnVtYj8udGl0bGUgfHwgcm91dGUuY29tcG9uZW50Py5uYW1lLnJlcGxhY2UoJ0NvbXBvbmVudCcsICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9idWlsZEJyZWFkY3J1bWIoKTogQnJlYWRjcnVtYkl0ZW1bXSB7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW1bXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLl9kZWZhdWx0SG9tZSkge1xyXG4gICAgICAgICAgICBicmVhZGNydW1iLnB1c2godGhpcy5fZGVmYXVsdEhvbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLl9yb3V0ZXIudXJsO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLl91dGlsaXRpZXMuZ2V0UGF0aEZyb21VcmwodXJsKSB8fCAnJztcclxuICAgICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMuX2ZpbmRSb3V0ZUZyb21VcmwocGF0aCk7XHJcbiAgICAgICAgY29uc3QgcGFyZW50Um91dGVzID0gdGhpcy5fZmluZFBhcmVudFJvdXRlcyhhY3RpdmVSb3V0ZSk7XHJcbiAgICAgICAgYnJlYWRjcnVtYi5wdXNoKC4uLnBhcmVudFJvdXRlcyk7XHJcbiAgICAgICAgaWYgKGFjdGl2ZVJvdXRlICYmIGFjdGl2ZVJvdXRlPy5wYXRoICE9PSB0aGlzLl9kZWZhdWx0SG9tZT8udXJsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMuX2dldEJyZWFkY3J1bWJSb3V0ZURhdGEoYWN0aXZlUm91dGUpO1xyXG4gICAgICAgICAgICBicmVhZGNydW1iLnB1c2gobmV3IEJyZWFkY3J1bWJJdGVtKHRoaXMuX2dldFJvdXRlVGl0bGUoYWN0aXZlUm91dGUpLCAocm91dGVEYXRhLl9mdWxsUGF0aCB8fCBhY3RpdmVSb3V0ZS5wYXRoIHx8ICcnKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnJlYWRjcnVtYi5tYXAoKHJvdXRlOiBCcmVhZGNydW1iSXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZVNlZ21lbnRzID0gcm91dGUudXJsPy5zcGxpdCgnLycpIHx8IFtdO1xyXG4gICAgICAgICAgICByb3V0ZVNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQuc3RhcnRzV2l0aCgnOicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm91dGUudXJsID0gcm91dGUudXJsPy5yZXBsYWNlKHNlZ21lbnQsIHVybC5zcGxpdCgnLycpW2luZGV4ICsgMV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJvdXRlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2ZpbmRSb3V0ZUZyb21VcmwodXJsOiBzdHJpbmcpOiBSb3V0ZSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgbGV0IHVybFNlZ21lbnRzID0gdXJsLnJlcGxhY2UoL1xcKC4rXFwpLywgJycpIC8vIHJlbW92ZSBhbnkgc2Vjb25kYXJ5IG91dGxldCBzZWdtZW50cyBhbmQgZm9jdXMgb24gcHJpbWFyeSBvdXRsZXQgdGhhdCBpcyB0aGUgbWFpbiByb3V0ZVxyXG4gICAgICAgICAgICAuc3BsaXQoJy8nKSAvLyBzcGxpdCB0aGUgVVJMIGludG8gc2VnbWVudHNcclxuICAgICAgICAgICAgLmZpbHRlcigoc2VnbWVudDogc3RyaW5nKSA9PiBzZWdtZW50ICE9PSAnJyk7XHJcblxyXG4gICAgICAgIGNvbnN0IG91dGxldFJlZ2V4ID0gbmV3IFJlZ0V4cChcIlxcXFwoKFteKCldKylcXFxcKVwiKTtcclxuICAgICAgICB2YXIgb3V0bGV0UGFydCA9IHVybC5tYXRjaChvdXRsZXRSZWdleCk/LlsxXTtcclxuICAgICAgICAvL2lmIChvdXRsZXRQYXJ0KSB7XHJcbiAgICAgICAgLy91cmxTZWdtZW50cyA9IG91dGxldFBhcnQucmVwbGFjZSgvLis6LywgJycpLnNwbGl0KCcvJykgLy8gc3BsaXQgdGhlIFVSTCBpbnRvIHNlZ21lbnRzXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChzZWdtZW50OiBzdHJpbmcpID0+IHNlZ21lbnQgIT09ICcnKTtcclxuICAgICAgICAvL31cclxuICAgICAgICBjb25zdCByb3V0ZXJDb25maWcgPSB0aGlzLl9yb3V0ZXIuY29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZFJvdXRlckNvbmZpZyA9IHRoaXMuX2ZsYXR0ZW5Sb3V0ZXMocm91dGVyQ29uZmlnKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZFJvdXRlckNvbmZpZyA9IGZsYXR0ZW5lZFJvdXRlckNvbmZpZy5maWx0ZXIoKHJvdXRlOiBSb3V0ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZURhdGEgPSB0aGlzLl9nZXRCcmVhZGNydW1iUm91dGVEYXRhKHJvdXRlKTtcclxuICAgICAgICAgICAgcmV0dXJuIChyb3V0ZURhdGEuX2Z1bGxQYXRoIHx8IHJvdXRlLnBhdGgpPy5zcGxpdCgnLycpLmxlbmd0aCA9PT0gdXJsU2VnbWVudHMubGVuZ3RoO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHJvdXRlID0gZmlsdGVyZWRSb3V0ZXJDb25maWcuZmluZCgocm91dGU6IFJvdXRlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMuX2dldEJyZWFkY3J1bWJSb3V0ZURhdGEocm91dGUpO1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZVNlZ21lbnRzID0gKHJvdXRlRGF0YS5fZnVsbFBhdGggfHwgcm91dGUucGF0aCk/LnNwbGl0KCcvJykgfHwgW107XHJcbiAgICAgICAgICAgIGxldCBzZWdtZW50c01hdGNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZVNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VnbWVudCA9IHJvdXRlU2VnbWVudHNbaV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0R5bmFtaWNTZWdtZW50ID0gY3VycmVudFNlZ21lbnQuc3RhcnRzV2l0aCgnOicpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0R5bmFtaWNTZWdtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudHNNYXRjaGVkID0gY3VycmVudFNlZ21lbnQgPT09IHVybFNlZ21lbnRzW2ldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzZWdtZW50c01hdGNoZWQgPyByb3V0ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcm91dGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZmluZFBhcmVudFJvdXRlcyhhY3RpdmVSb3V0ZTogUm91dGUgfCB1bmRlZmluZWQsIGl0ZW1zOiBCcmVhZGNydW1iSXRlbVtdID0gW10pOiBCcmVhZGNydW1iSXRlbVtdIHtcclxuICAgICAgICBpZiAoIWFjdGl2ZVJvdXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gdGhpcy5fZ2V0QnJlYWRjcnVtYlJvdXRlRGF0YShhY3RpdmVSb3V0ZSk7XHJcbiAgICAgICAgbGV0IHVybFNlZ21lbnRzID0gKHJvdXRlRGF0YS5fZnVsbFBhdGggfHwgYWN0aXZlUm91dGUucGF0aCk/LnNwbGl0KCcvJykuZmlsdGVyKChzZWdtZW50OiBzdHJpbmcpID0+IHNlZ21lbnQgIT09ICcnKSB8fCBbXTtcclxuICAgICAgICBpZiAodXJsU2VnbWVudHM/Lmxlbmd0aCA8PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwcmV2aW91c1VybCA9IHVybFNlZ21lbnRzLnNsaWNlKDAsIC0xKS5qb2luKCcvJyk7XHJcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLl9maW5kUm91dGVGcm9tVXJsKHByZXZpb3VzVXJsKTtcclxuICAgICAgICBpZiAocm91dGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gdGhpcy5fZ2V0QnJlYWRjcnVtYlJvdXRlRGF0YShyb3V0ZSk7XHJcbiAgICAgICAgICAgIGlmIChyb3V0ZURhdGEuX2xldmVsID4gMCB8fCAoIXJvdXRlLmNoaWxkcmVuIHx8IHJvdXRlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5fZmluZFBhcmVudFJvdXRlcyhyb3V0ZSwgW25ldyBCcmVhZGNydW1iSXRlbSh0aGlzLl9nZXRSb3V0ZVRpdGxlKHJvdXRlKSwgcm91dGVEYXRhLl9mdWxsUGF0aCB8fCByb3V0ZS5wYXRoKSwgLi4uaXRlbXNdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9mbGF0dGVuUm91dGVzKHJvdXRlczogUm91dGVbXSwgbGV2ZWw/OiBudW1iZXIpOiBSb3V0ZVtdIHtcclxuICAgICAgICBsZXQgY2hpbGRyZW46IFJvdXRlW10gPSBbXTtcclxuICAgICAgICBsZXZlbCA9IGxldmVsIHx8IDA7XHJcbiAgICAgICAgcmV0dXJuIHJvdXRlcy5tYXAoKHJvdXRlOiBSb3V0ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZURhdGEgPSB0aGlzLl9nZXRCcmVhZGNydW1iUm91dGVEYXRhKHJvdXRlKTtcclxuICAgICAgICAgICAgcm91dGVEYXRhLl9sZXZlbCA9IGxldmVsITtcclxuICAgICAgICAgICAgaWYgKHJvdXRlLmNoaWxkcmVuICYmIHJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgcm91dGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IFJvdXRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRSb3V0ZURhdGEgPSB0aGlzLl9nZXRCcmVhZGNydW1iUm91dGVEYXRhKGNoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVBhdGggPSByb3V0ZURhdGEuX2Z1bGxQYXRoIHx8IHJvdXRlLnBhdGggfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY2hpbGQucGF0aD8uZW5kc1dpdGgoJy8nKSA/IGNoaWxkLnBhdGguc2xpY2UoMCwgLTEpIDogY2hpbGQucGF0aDtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZFJvdXRlRGF0YS5fZnVsbFBhdGggPSBjaGlsZFBhdGg/LmluZGV4T2Yocm91dGVQYXRoKSA9PT0gLTEgPyBgJHtyb3V0ZVBhdGh9LyR7Y2hpbGRQYXRofWAgOiBjaGlsZFBhdGg7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gWy4uLmNoaWxkcmVuLCAuLi5yb3V0ZS5jaGlsZHJlbl07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJvdXRlO1xyXG4gICAgICAgIH0pLmNvbmNhdChjaGlsZHJlbi5sZW5ndGggPyB0aGlzLl9mbGF0dGVuUm91dGVzKGNoaWxkcmVuLCBsZXZlbCArIDEpIDogY2hpbGRyZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldEJyZWFkY3J1bWJSb3V0ZURhdGEocm91dGU6IFJvdXRlIHwgdW5kZWZpbmVkKTogQnJlYWRjcnVtYlJvdXRlRGF0YSB7XHJcbiAgICAgICAgaWYgKCFyb3V0ZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJvdXRlIHdhcyBmb3VuZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXJvdXRlLmRhdGE/LmJyZWFkY3J1bWIpIHtcclxuICAgICAgICAgICAgaWYgKCFyb3V0ZS5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICByb3V0ZS5kYXRhID0ge307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcm91dGUuZGF0YS5icmVhZGNydW1iID0gbmV3IEJyZWFkY3J1bWJSb3V0ZURhdGEoMCwgZmFsc2UsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByb3V0ZS5kYXRhLmJyZWFkY3J1bWI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iUm91dGVEYXRhIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBfbGV2ZWw6IG51bWJlciwgcHVibGljIGlzSG9tZTogYm9vbGVhbiwgcHVibGljIF9mdWxsUGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB9XHJcbn1cclxuIl19
@@ -1,8 +0,0 @@
1
- /**
2
- * Options passed to {@link ComponentLoader.show}.
3
- *
4
- * @internal
5
- */
6
- export class ComponentLoaderOptions {
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWxvYWRlci1vcHRpb25zLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2NvbXBvbmVudC1sb2FkZXIvY29tcG9uZW50LWxvYWRlci1vcHRpb25zLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0NBdUJsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogT3B0aW9ucyBwYXNzZWQgdG8ge0BsaW5rIENvbXBvbmVudExvYWRlci5zaG93fS5cclxuICogXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudExvYWRlck9wdGlvbnMge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBjb250ZW50IHRvIGJlIGRyYXduIGluc2lkZSBgPG5nLWNvbnRlbnQ+YCBvZiBgQ29tcG9uZW50TG9hZGVyYCBhdHRhY2hlZCBjb21wb25lbnQuXHJcblx0ICogQHJlbWFya3NcclxuXHQgKiBgY29udGVudGAgY2FuIGJlIGBDb21wb25lbnRgICwgYFRlbXBsYXRlUmVmYCBvciBgU3RyaW5nYC5cclxuICAgKi9cclxuICBjb250ZW50Pzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcbiAgLyoqXHJcbiAgICogVGhlIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHZpZXcgZm9yIGBUZW1wbGF0ZVJlZmAgY2FzZS5cclxuICAgKi9cclxuICBjb250ZXh0PzogdW5rbm93bjtcclxuICAvKipcclxuICAgKiBJbml0aWFsIGRhdGEgdG8gYmUgcGFzc2VkIHRvIGBjb250ZW50YCBmb3IgYENvbXBvbmVudGAgY2FzZS5cclxuICAgKi9cclxuICBpbml0aWFsU3RhdGU/OiB1bmtub3duO1xyXG4gIC8qKlxyXG4gICAqIE90aGVyIHByb3BlcnRpZXMgcGFzc2VkIHRvIGF0dGFjaGVkIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xyXG4gIC8qKlxyXG4gICAqIGlkYCAtIFRoZSBpZCBvZiB0aGUgYXR0YWNoZWQgY29tcG9uZW50IHJlZi5cclxuICAgKi9cclxuICBpZD86IG51bWJlciB8IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,188 +0,0 @@
1
- import { ElementRef, TemplateRef, Injector, } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { ContentRef } from './content-ref.class';
4
- /**
5
- * Provides ways of loading and handling dynamic content.
6
- *
7
- * @remarks
8
- * Do NOT use this directly, create an instance through {@link ComponentLoaderFactory}
9
- * You can use this loader in two ways:
10
- * - Attaches a component to `ViewContainerRef`.
11
- * - Attaches a component to `ViewContainerRef`. The attached component has a `<ng-content>` tag inside its view. The {@link ComponentLoaderOptions.content} will be drawn inside this tag.
12
- *
13
- * @internal
14
- */
15
- export class ComponentLoader {
16
- constructor(vcr, cfr, applicationRef, injector) {
17
- this.vcr = vcr;
18
- this.cfr = cfr;
19
- this.applicationRef = applicationRef;
20
- this.injector = injector;
21
- /**
22
- * Before content is shown event.
23
- */
24
- this.onBeforeShow = new Subject();
25
- /**
26
- * After show content event.
27
- * @returns The id of newly created component ref.
28
- */
29
- this.onShown = new Subject();
30
- /**
31
- * Before content is hidden event.
32
- * @returns The instance of attached component;
33
- */
34
- this.onBeforeHide = new Subject();
35
- /**
36
- * After content is hidden event.
37
- * @returns The id of destroyed component ref.
38
- */
39
- this.onHidden = new Subject();
40
- this.providers = [];
41
- this.containerDefaultSelector = 'body';
42
- }
43
- /**
44
- * Attaches component.
45
- * @param componentType - The type component to attach.
46
- * @returns Current instance of {@link ComponentLoader}
47
- */
48
- attach(componentType) {
49
- this.componentFactory = this.cfr.resolveComponentFactory(componentType);
50
- return this;
51
- }
52
- /**
53
- * Body will be used in nothing is provided.
54
- * @param container - The element in which dynamic content will be drawn inside to. For string case a query to the dom will be executed to find the element.
55
- * @returns Current instance of {@link ComponentLoader}
56
- */
57
- to(container) {
58
- this.container = container || this.container;
59
- return this;
60
- }
61
- /**
62
- * Adds provider to the providers array. These providers will be injected to the attached component.
63
- *
64
- * @see {@link https://angular.io/guide/glossary#di-token | Injection Token}
65
- *
66
- * @param provider - Provider to inject.
67
- * @returns Current instance of {@link ComponentLoader}
68
- */
69
- provide(provider) {
70
- this.providers.push(provider);
71
- return this;
72
- }
73
- /**
74
- * Attaches attached component to dom and any dynamic content if provided.
75
- * @remarks
76
- * Also triggers the {@link ComponentLoader.onBeforeShow} and {@link ComponentLoader.onShown} events.
77
- *
78
- * @param options - {@link ComponentLoaderOptions}.
79
- * @returns A reference to the created content.
80
- */
81
- show(options = {}) {
82
- if (this.componentRef) {
83
- throw Error('Component is already shown');
84
- }
85
- if (!this.componentFactory) {
86
- throw Error('You must attach a component');
87
- }
88
- this.onBeforeShow.next({});
89
- if (options.content) {
90
- this.contentRef = this.getContentRef(options.content, options.context, options.initialState);
91
- }
92
- this.createComponentAndAttachToView(options);
93
- this.appendContentToContainer();
94
- this.markComponentsForCheck();
95
- this.onShown.next(options.id);
96
- return this.componentRef;
97
- }
98
- /**
99
- * Removes attached component from dom.
100
- * @remarks
101
- * Also triggers the {@link ComponentLoader.onBeforeHide} and {@link ComponentLoader.onHidden} events.
102
- *
103
- * @param id - If provided it is returned through the {@link ComponentLoader.onHidden}.
104
- * @returns Current instance of {@link ComponentLoader}
105
- */
106
- hide(id, result) {
107
- if (!this.componentRef) {
108
- throw Error('No attached component found to hide');
109
- }
110
- this.onBeforeHide.next(this.componentRef.instance);
111
- const componentEl = this.componentRef.location.nativeElement;
112
- componentEl.parentNode.removeChild(componentEl);
113
- if (this.contentRef?.componentRef) {
114
- this.contentRef.componentRef.destroy();
115
- }
116
- if (this.vcr && this.contentRef?.viewRef) {
117
- this.vcr.remove(this.vcr.indexOf(this.contentRef.viewRef));
118
- }
119
- if (this.contentRef?.viewRef) {
120
- this.contentRef.viewRef.destroy();
121
- }
122
- this.contentRef = void 0;
123
- this.componentRef = void 0;
124
- this.onHidden.next(id ? { id, result } : null);
125
- return this;
126
- }
127
- getInnerComponent() {
128
- return this.innerComponent;
129
- }
130
- markComponentsForCheck() {
131
- if (this.contentRef?.componentRef) {
132
- this.innerComponent = this.contentRef.componentRef.instance;
133
- this.contentRef.componentRef.changeDetectorRef.markForCheck();
134
- this.contentRef.componentRef.changeDetectorRef.detectChanges();
135
- }
136
- this.componentRef.changeDetectorRef.markForCheck();
137
- this.componentRef.changeDetectorRef.detectChanges();
138
- }
139
- createComponentAndAttachToView(options) {
140
- const injector = Injector.create({
141
- providers: this.providers,
142
- parent: this.injector,
143
- });
144
- this.componentRef = this.componentFactory.create(injector, this.contentRef?.nodes);
145
- this.applicationRef.attachView(this.componentRef.hostView);
146
- this.instance = this.componentRef.instance;
147
- Object.assign(this.componentRef.instance, options);
148
- }
149
- appendContentToContainer() {
150
- if (this.container instanceof ElementRef) {
151
- this.container.nativeElement.appendChild(this.componentRef?.location.nativeElement);
152
- }
153
- if (typeof this.container === 'string' && typeof document !== 'undefined') {
154
- const selectedElement = document.querySelector(this.container) || document.querySelector(this.containerDefaultSelector);
155
- if (!selectedElement) {
156
- return;
157
- }
158
- selectedElement.appendChild(this.componentRef?.location.nativeElement);
159
- }
160
- }
161
- getContentRef(content, context, initialState) {
162
- //TemplateRef case
163
- if (content instanceof TemplateRef) {
164
- if (this.vcr) {
165
- const viewRef = this.vcr.createEmbeddedView(content, context);
166
- viewRef.markForCheck();
167
- return new ContentRef([viewRef.rootNodes], viewRef);
168
- }
169
- const viewRef = content.createEmbeddedView({});
170
- this.applicationRef.attachView(viewRef);
171
- return new ContentRef([viewRef.rootNodes], viewRef);
172
- }
173
- //Component case
174
- if (typeof content === 'function') {
175
- const contentCf = this.cfr.resolveComponentFactory(content);
176
- const injector = Injector.create({
177
- providers: this.providers,
178
- parent: this.injector,
179
- });
180
- const componentRef = contentCf.create(injector);
181
- // Object.assign(componentRef.instance, initialState);
182
- this.applicationRef.attachView(componentRef.hostView);
183
- return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);
184
- }
185
- throw Error('Unsupported content type');
186
- }
187
- }
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWxvYWRlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9jb21wb25lbnQtbG9hZGVyL2NvbXBvbmVudC1sb2FkZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLFVBQVUsRUFFVixXQUFXLEVBR1gsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQTZCMUIsWUFDVSxHQUFpQyxFQUNqQyxHQUE2QixFQUM3QixjQUE4QixFQUM5QixRQUFrQjtRQUhsQixRQUFHLEdBQUgsR0FBRyxDQUE4QjtRQUNqQyxRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWhDNUI7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0I7OztXQUdHO1FBQ0gsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEI7OztXQUdHO1FBQ0gsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCOzs7V0FHRztRQUNILGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBTWpCLGNBQVMsR0FBcUIsRUFBRSxDQUFDO1FBRWpDLDZCQUF3QixHQUFHLE1BQU0sQ0FBQztJQU92QyxDQUFDO0lBRUo7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxhQUFzQjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FB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QyxFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsc0RBQXNEO1lBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0RyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIENvbXBvbmVudEZhY3RvcnksXHJcbiAgVHlwZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIFN0YXRpY1Byb3ZpZGVyLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBBcHBsaWNhdGlvblJlZixcclxuICBJbmplY3RvcixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXJPcHRpb25zIH0gZnJvbSAnLi9jb21wb25lbnQtbG9hZGVyLW9wdGlvbnMuY2xhc3MnO1xyXG5pbXBvcnQgeyBDb250ZW50UmVmIH0gZnJvbSAnLi9jb250ZW50LXJlZi5jbGFzcyc7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgd2F5cyBvZiBsb2FkaW5nIGFuZCBoYW5kbGluZyBkeW5hbWljIGNvbnRlbnQuXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIERvIE5PVCB1c2UgdGhpcyBkaXJlY3RseSwgY3JlYXRlIGFuIGluc3RhbmNlIHRocm91Z2gge0BsaW5rIENvbXBvbmVudExvYWRlckZhY3Rvcnl9XHJcbiAqIFlvdSBjYW4gdXNlIHRoaXMgbG9hZGVyIGluIHR3byB3YXlzOlxyXG4gKiAtIEF0dGFjaGVzIGEgY29tcG9uZW50IHRvIGBWaWV3Q29udGFpbmVyUmVmYC5cclxuICogLSBBdHRhY2hlcyBhIGNvbXBvbmVudCB0byBgVmlld0NvbnRhaW5lclJlZmAuIFRoZSBhdHRhY2hlZCBjb21wb25lbnQgaGFzIGEgYDxuZy1jb250ZW50PmAgdGFnIGluc2lkZSBpdHMgdmlldy4gVGhlIHtAbGluayBDb21wb25lbnRMb2FkZXJPcHRpb25zLmNvbnRlbnR9IHdpbGwgYmUgZHJhd24gaW5zaWRlIHRoaXMgdGFnLlxyXG4gKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRMb2FkZXI8VCBleHRlbmRzIG9iamVjdD4ge1xyXG4gIC8qKlxyXG4gICAqIEJlZm9yZSBjb250ZW50IGlzIHNob3duIGV2ZW50LlxyXG4gICAqL1xyXG4gIG9uQmVmb3JlU2hvdyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgLyoqXHJcbiAgICogQWZ0ZXIgc2hvdyBjb250ZW50IGV2ZW50LlxyXG4gICAqIEByZXR1cm5zIFRoZSBpZCBvZiBuZXdseSBjcmVhdGVkIGNvbXBvbmVudCByZWYuXHJcbiAgICovXHJcbiAgb25TaG93biA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgLyoqXHJcbiAgICogQmVmb3JlIGNvbnRlbnQgaXMgaGlkZGVuIGV2ZW50LlxyXG4gICAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBhdHRhY2hlZCBjb21wb25lbnQ7XHJcbiAgICovXHJcbiAgb25CZWZvcmVIaWRlID0gbmV3IFN1YmplY3QoKTtcclxuICAvKipcclxuICAgKiBBZnRlciBjb250ZW50IGlzIGhpZGRlbiBldmVudC5cclxuICAgKiBAcmV0dXJucyBUaGUgaWQgb2YgZGVzdHJveWVkIGNvbXBvbmVudCByZWYuXHJcbiAgICovXHJcbiAgb25IaWRkZW4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwdWJsaWMgaW5zdGFuY2U/OiBUO1xyXG4gIHB1YmxpYyBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8VD47XHJcbiAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5PzogQ29tcG9uZW50RmFjdG9yeTxUPjtcclxuICBwcml2YXRlIGNvbnRhaW5lcjogc3RyaW5nIHwgRWxlbWVudFJlZiB8IGFueTtcclxuICBwcml2YXRlIHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtdO1xyXG4gIHByaXZhdGUgY29udGVudFJlZj86IENvbnRlbnRSZWY7XHJcbiAgcHJpdmF0ZSBjb250YWluZXJEZWZhdWx0U2VsZWN0b3IgPSAnYm9keSc7XHJcbiAgcHJpdmF0ZSBpbm5lckNvbXBvbmVudD86IENvbXBvbmVudFJlZjxUPjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdmNyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkLFxyXG4gICAgcHJpdmF0ZSBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dGFjaGVzIGNvbXBvbmVudC5cclxuICAgKiBAcGFyYW0gY29tcG9uZW50VHlwZSAtIFRoZSB0eXBlIGNvbXBvbmVudCB0byBhdHRhY2guXHJcbiAgICogQHJldHVybnMgQ3VycmVudCBpbnN0YW5jZSBvZiB7QGxpbmsgQ29tcG9uZW50TG9hZGVyfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhdHRhY2goY29tcG9uZW50VHlwZTogVHlwZTxUPik6IENvbXBvbmVudExvYWRlcjxUPiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxUPihjb21wb25lbnRUeXBlKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQm9keSB3aWxsIGJlIHVzZWQgaW4gbm90aGluZyBpcyBwcm92aWRlZC5cclxuICAgKiBAcGFyYW0gY29udGFpbmVyIC0gVGhlIGVsZW1lbnQgaW4gd2hpY2ggZHluYW1pYyBjb250ZW50IHdpbGwgYmUgZHJhd24gaW5zaWRlIHRvLiBGb3Igc3RyaW5nIGNhc2UgYSBxdWVyeSB0byB0aGUgZG9tIHdpbGwgYmUgZXhlY3V0ZWQgdG8gZmluZCB0aGUgZWxlbWVudC5cclxuICAgKiBAcmV0dXJucyBDdXJyZW50IGluc3RhbmNlIG9mIHtAbGluayBDb21wb25lbnRMb2FkZXJ9XHJcbiAgICovXHJcbiAgcHVibGljIHRvKGNvbnRhaW5lcj86IHN0cmluZyB8IEVsZW1lbnRSZWYpOiBDb21wb25lbnRMb2FkZXI8VD4ge1xyXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXIgfHwgdGhpcy5jb250YWluZXI7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgcHJvdmlkZXIgdG8gdGhlIHByb3ZpZGVycyBhcnJheS4gVGhlc2UgcHJvdmlkZXJzIHdpbGwgYmUgaW5qZWN0ZWQgdG8gdGhlIGF0dGFjaGVkIGNvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9nbG9zc2FyeSNkaS10b2tlbiB8IEluamVjdGlvbiBUb2tlbn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwcm92aWRlciAtIFByb3ZpZGVyIHRvIGluamVjdC5cclxuICAgKiBAcmV0dXJucyBDdXJyZW50IGluc3RhbmNlIG9mIHtAbGluayBDb21wb25lbnRMb2FkZXJ9XHJcbiAgICovXHJcbiAgcHVibGljIHByb3ZpZGUocHJvdmlkZXI6IFN0YXRpY1Byb3ZpZGVyKTogQ29tcG9uZW50TG9hZGVyPFQ+IHtcclxuICAgIHRoaXMucHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBdHRhY2hlcyBhdHRhY2hlZCBjb21wb25lbnQgdG8gZG9tIGFuZCBhbnkgZHluYW1pYyBjb250ZW50IGlmIHByb3ZpZGVkLlxyXG4gICAqIEByZW1hcmtzXHJcbiAgICogQWxzbyB0cmlnZ2VycyB0aGUge0BsaW5rIENvbXBvbmVudExvYWRlci5vbkJlZm9yZVNob3d9IGFuZCB7QGxpbmsgQ29tcG9uZW50TG9hZGVyLm9uU2hvd259IGV2ZW50cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBvcHRpb25zIC0ge0BsaW5rIENvbXBvbmVudExvYWRlck9wdGlvbnN9LlxyXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBjcmVhdGVkIGNvbnRlbnQuXHJcbiAgICovXHJcbiAgcHVibGljIHNob3cob3B0aW9uczogQ29tcG9uZW50TG9hZGVyT3B0aW9ucyA9IHt9KTogQ29tcG9uZW50UmVmPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aHJvdyBFcnJvcignQ29tcG9uZW50IGlzIGFscmVhZHkgc2hvd24nKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jb21wb25lbnRGYWN0b3J5KSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdZb3UgbXVzdCBhdHRhY2ggYSBjb21wb25lbnQnKTtcclxuICAgIH1cclxuICAgIHRoaXMub25CZWZvcmVTaG93Lm5leHQoe30pO1xyXG5cclxuICAgIGlmIChvcHRpb25zLmNvbnRlbnQpIHtcclxuICAgICAgdGhpcy5jb250ZW50UmVmID0gdGhpcy5nZXRDb250ZW50UmVmKG9wdGlvbnMuY29udGVudCwgb3B0aW9ucy5jb250ZXh0LCBvcHRpb25zLmluaXRpYWxTdGF0ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudEFuZEF0dGFjaFRvVmlldyhvcHRpb25zKTtcclxuICAgIHRoaXMuYXBwZW5kQ29udGVudFRvQ29udGFpbmVyKCk7XHJcbiAgICB0aGlzLm1hcmtDb21wb25lbnRzRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLm9uU2hvd24ubmV4dChvcHRpb25zLmlkKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGF0dGFjaGVkIGNvbXBvbmVudCBmcm9tIGRvbS5cclxuICAgKiBAcmVtYXJrc1xyXG4gICAqIEFsc28gdHJpZ2dlcnMgdGhlIHtAbGluayBDb21wb25lbnRMb2FkZXIub25CZWZvcmVIaWRlfSBhbmQge0BsaW5rIENvbXBvbmVudExvYWRlci5vbkhpZGRlbn0gZXZlbnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIC0gSWYgcHJvdmlkZWQgaXQgaXMgcmV0dXJuZWQgdGhyb3VnaCB0aGUge0BsaW5rIENvbXBvbmVudExvYWRlci5vbkhpZGRlbn0uXHJcbiAgICogQHJldHVybnMgQ3VycmVudCBpbnN0YW5jZSBvZiB7QGxpbmsgQ29tcG9uZW50TG9hZGVyfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBoaWRlKGlkPzogbnVtYmVyIHwgc3RyaW5nLCByZXN1bHQ/OiBhbnkpOiBDb21wb25lbnRMb2FkZXI8VD4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aHJvdyBFcnJvcignTm8gYXR0YWNoZWQgY29tcG9uZW50IGZvdW5kIHRvIGhpZGUnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQmVmb3JlSGlkZS5uZXh0KHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlKTtcclxuXHJcbiAgICBjb25zdCBjb21wb25lbnRFbCA9IHRoaXMuY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb21wb25lbnRFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbXBvbmVudEVsKTtcclxuICAgIGlmICh0aGlzLmNvbnRlbnRSZWY/LmNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLmNvbnRlbnRSZWYuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZjciAmJiB0aGlzLmNvbnRlbnRSZWY/LnZpZXdSZWYpIHtcclxuICAgICAgdGhpcy52Y3IucmVtb3ZlKHRoaXMudmNyLmluZGV4T2YodGhpcy5jb250ZW50UmVmLnZpZXdSZWYpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbnRlbnRSZWY/LnZpZXdSZWYpIHtcclxuICAgICAgdGhpcy5jb250ZW50UmVmLnZpZXdSZWYuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZW50UmVmID0gdm9pZCAwO1xyXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB2b2lkIDA7XHJcblxyXG4gICAgdGhpcy5vbkhpZGRlbi5uZXh0KGlkID8geyBpZCwgcmVzdWx0IH0gOiBudWxsKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGdldElubmVyQ29tcG9uZW50KCk6IENvbXBvbmVudFJlZjxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lckNvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFya0NvbXBvbmVudHNGb3JDaGVjaygpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnRSZWY/LmNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLmlubmVyQ29tcG9uZW50ID0gdGhpcy5jb250ZW50UmVmLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcclxuICAgICAgdGhpcy5jb250ZW50UmVmLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5jb250ZW50UmVmLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZiEuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZiEuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnRBbmRBdHRhY2hUb1ZpZXcob3B0aW9uczogQ29tcG9uZW50TG9hZGVyT3B0aW9ucykge1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICBwcm92aWRlcnM6IHRoaXMucHJvdmlkZXJzLFxyXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRGYWN0b3J5IS5jcmVhdGUoaW5qZWN0b3IsIHRoaXMuY29udGVudFJlZj8ubm9kZXMpO1xyXG4gICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBlbmRDb250ZW50VG9Db250YWluZXIoKSB7XHJcbiAgICBpZiAodGhpcy5jb250YWluZXIgaW5zdGFuY2VvZiBFbGVtZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb21wb25lbnRSZWY/LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRhaW5lciA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29udGFpbmVyKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29udGFpbmVyRGVmYXVsdFNlbGVjdG9yKTtcclxuICAgICAgaWYgKCFzZWxlY3RlZEVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgc2VsZWN0ZWRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29tcG9uZW50UmVmPy5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGVudFJlZihjb250ZW50Pzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiwgY29udGV4dD86IGFueSwgaW5pdGlhbFN0YXRlPzogYW55KTogQ29udGVudFJlZiB7XHJcbiAgICAvL1RlbXBsYXRlUmVmIGNhc2VcclxuICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcclxuICAgICAgaWYgKHRoaXMudmNyKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmNyLmNyZWF0ZUVtYmVkZGVkVmlldzxUZW1wbGF0ZVJlZjxUPj4oY29udGVudCwgY29udGV4dCk7XHJcbiAgICAgICAgdmlld1JlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICByZXR1cm4gbmV3IENvbnRlbnRSZWYoW3ZpZXdSZWYucm9vdE5vZGVzXSwgdmlld1JlZik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgdmlld1JlZiA9IGNvbnRlbnQuY3JlYXRlRW1iZWRkZWRWaWV3KHt9KTtcclxuICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHZpZXdSZWYpO1xyXG4gICAgICByZXR1cm4gbmV3IENvbnRlbnRSZWYoW3ZpZXdSZWYucm9vdE5vZGVzXSwgdmlld1JlZik7XHJcbiAgICB9XHJcblxyXG4gICAgLy9Db21wb25lbnQgY2FzZVxyXG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRDZiA9IHRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbnRlbnQpO1xyXG4gICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgcHJvdmlkZXJzOiB0aGlzLnByb3ZpZGVycyxcclxuICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb250ZW50Q2YuY3JlYXRlKGluamVjdG9yKTtcclxuICAgICAgLy8gT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIGluaXRpYWxTdGF0ZSk7XHJcbiAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgICByZXR1cm4gbmV3IENvbnRlbnRSZWYoW1tjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudF1dLCBjb21wb25lbnRSZWYuaG9zdFZpZXcsIGNvbXBvbmVudFJlZik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhyb3cgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbnRlbnQgdHlwZScpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,32 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { ComponentLoader } from './component-loader.class';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Use to create instances of {@link ComponentLoader}.
6
- *
7
- * @public
8
- */
9
- export class ComponentLoaderFactory {
10
- constructor(componentFactoryResolver, injector, applicationRef) {
11
- this.componentFactoryResolver = componentFactoryResolver;
12
- this.injector = injector;
13
- this.applicationRef = applicationRef;
14
- }
15
- /**
16
- * Returns a new instance of {@link ComponentLoader}
17
- * @param viewContainerRef - The view container the dynamic content will be attached to.
18
- * @returns A new instance of {@link ComponentLoader}.
19
- *
20
- * @public
21
- */
22
- createLoader(viewContainerRef) {
23
- return new ComponentLoader(viewContainerRef, this.componentFactoryResolver, this.applicationRef, this.injector);
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ComponentLoaderFactory, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ComponentLoaderFactory, providedIn: 'root' }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ComponentLoaderFactory, decorators: [{
29
- type: Injectable,
30
- args: [{ providedIn: 'root' }]
31
- }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWxvYWRlci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2NvbXBvbmVudC1sb2FkZXIvY29tcG9uZW50LWxvYWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEMsVUFBVSxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRTNEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1Usd0JBQWtELEVBQ2xELFFBQWtCLEVBQ2xCLGNBQThCO1FBRjlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDckMsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNILFlBQVksQ0FBbUIsZ0JBQW1DO1FBQ2hFLE9BQU8sSUFBSSxlQUFlLENBQUksZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JILENBQUM7OEdBaEJVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRFQsTUFBTTs7MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RhYmxlLCBJbmplY3RvciwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIgfSBmcm9tICcuL2NvbXBvbmVudC1sb2FkZXIuY2xhc3MnO1xyXG5cclxuLyoqXHJcbiAqIFVzZSB0byBjcmVhdGUgaW5zdGFuY2VzIG9mIHtAbGluayBDb21wb25lbnRMb2FkZXJ9LlxyXG4gKlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50TG9hZGVyRmFjdG9yeSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZlxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB7QGxpbmsgQ29tcG9uZW50TG9hZGVyfVxyXG4gICAqIEBwYXJhbSB2aWV3Q29udGFpbmVyUmVmIC0gVGhlIHZpZXcgY29udGFpbmVyIHRoZSBkeW5hbWljIGNvbnRlbnQgd2lsbCBiZSBhdHRhY2hlZCB0by5cclxuICAgKiBAcmV0dXJucyBBIG5ldyBpbnN0YW5jZSBvZiB7QGxpbmsgQ29tcG9uZW50TG9hZGVyfS5cclxuICAgKlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBjcmVhdGVMb2FkZXI8VCBleHRlbmRzIG9iamVjdD4odmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWYpOiBDb21wb25lbnRMb2FkZXI8VD4ge1xyXG4gICAgcmV0dXJuIG5ldyBDb21wb25lbnRMb2FkZXI8VD4odmlld0NvbnRhaW5lclJlZiwgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHRoaXMuYXBwbGljYXRpb25SZWYsIHRoaXMuaW5qZWN0b3IpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,13 +0,0 @@
1
- /**
2
- * Holds information about the dynamic content.
3
- * @remarks
4
- * `ComponentRef` is undefined in the case content is of `TemplateRef` type.
5
- */
6
- export class ContentRef {
7
- constructor(nodes, viewRef, componentRef) {
8
- this.nodes = nodes;
9
- this.viewRef = viewRef;
10
- this.componentRef = componentRef;
11
- }
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvY29tcG9uZW50LWxvYWRlci9jb250ZW50LXJlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFBbUIsS0FBWSxFQUFTLE9BQWlCLEVBQVMsWUFBZ0M7UUFBL0UsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7SUFBRyxDQUFDO0NBQ3ZHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGR5bmFtaWMgY29udGVudC5cclxuICogQHJlbWFya3NcclxuICogYENvbXBvbmVudFJlZmAgaXMgdW5kZWZpbmVkIGluIHRoZSBjYXNlIGNvbnRlbnQgaXMgb2YgYFRlbXBsYXRlUmVmYCB0eXBlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbnRlbnRSZWYge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub2RlczogYW55W10sIHB1YmxpYyB2aWV3UmVmPzogVmlld1JlZiwgcHVibGljIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+KSB7fVxyXG59XHJcbiJdfQ==