@onecx/angular-accelerator 4.43.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/{esm2020 → esm2022}/lib/angular-accelerator-primeng.module.mjs +53 -53
  2. package/esm2022/lib/angular-accelerator.module.mjs +168 -0
  3. package/esm2022/lib/components/column-group-selection/column-group-selection.component.mjs +72 -0
  4. package/esm2022/lib/components/custom-group-column-selector/custom-group-column-selector.component.mjs +109 -0
  5. package/esm2022/lib/components/data-layout-selection/data-layout-selection.component.mjs +46 -0
  6. package/esm2022/lib/components/data-list-grid/data-list-grid.component.mjs +399 -0
  7. package/esm2022/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.mjs +92 -0
  8. package/esm2022/lib/components/data-sort-base/data-sort-base.mjs +110 -0
  9. package/esm2022/lib/components/data-table/data-table.component.mjs +401 -0
  10. package/esm2022/lib/components/data-view/data-view.component.mjs +407 -0
  11. package/esm2022/lib/components/diagram/diagram.component.mjs +137 -0
  12. package/esm2022/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +109 -0
  13. package/esm2022/lib/components/interactive-data-view/interactive-data-view.component.mjs +375 -0
  14. package/esm2022/lib/components/page-header/page-header.component.mjs +232 -0
  15. package/{esm2020 → esm2022}/lib/components/search-config/search-config.component.mjs +4 -4
  16. package/esm2022/lib/components/search-header/search-header.component.mjs +136 -0
  17. package/esm2022/lib/directives/advanced.directive.mjs +36 -0
  18. package/esm2022/lib/directives/if-breakpoint.directive.mjs +39 -0
  19. package/esm2022/lib/directives/if-permission.directive.mjs +80 -0
  20. package/esm2022/lib/directives/src.directive.mjs +59 -0
  21. package/esm2022/lib/functions/flatten-object.mjs +20 -0
  22. package/{esm2020 → esm2022}/lib/model/breadcrumb-menu-item.model.mjs +1 -1
  23. package/esm2022/lib/pipes/dynamic.pipe.mjs +58 -0
  24. package/esm2022/lib/pipes/ocxtimeago.pipe.mjs +107 -0
  25. package/esm2022/lib/services/app-config-service.mjs +43 -0
  26. package/esm2022/lib/services/breadcrumb.service.mjs +113 -0
  27. package/esm2022/lib/services/translation-cache.service.mjs +41 -0
  28. package/esm2022/lib/utils/async-translate-loader.utils.mjs +12 -0
  29. package/esm2022/lib/utils/caching-translate-loader.utils.mjs +15 -0
  30. package/{esm2020 → esm2022}/lib/utils/colorutils.mjs +1 -1
  31. package/{esm2020 → esm2022}/lib/utils/dateutils.mjs +6 -6
  32. package/esm2022/lib/utils/objectutils.mjs +30 -0
  33. package/{esm2020 → esm2022}/lib/utils/translate.combined.loader.mjs +1 -1
  34. package/{esm2020 → esm2022}/testing/column-group-selection.harness.mjs +2 -2
  35. package/esm2022/testing/custom-group-column-selector.harness.mjs +31 -0
  36. package/esm2022/testing/data-layout-selection.harness.mjs +33 -0
  37. package/esm2022/testing/data-list-grid.harness.mjs +47 -0
  38. package/esm2022/testing/data-table.harness.mjs +63 -0
  39. package/{esm2020 → esm2022}/testing/data-view.harness.mjs +2 -2
  40. package/esm2022/testing/default-grid-item.harness.mjs +24 -0
  41. package/esm2022/testing/default-list-item.harness.mjs +24 -0
  42. package/esm2022/testing/diagram.harness.mjs +22 -0
  43. package/{esm2020 → esm2022}/testing/group-by-count-diagram.harness.mjs +2 -2
  44. package/{esm2020 → esm2022}/testing/interactive-data-view.harness.mjs +2 -2
  45. package/esm2022/testing/more-actions-menu-button.harness.mjs +35 -0
  46. package/esm2022/testing/page-header.harness.mjs +78 -0
  47. package/{esm2020 → esm2022}/testing/search-config.harness.mjs +2 -2
  48. package/{esm2020 → esm2022}/testing/search-header.harness.mjs +2 -2
  49. package/{fesm2020 → fesm2022}/onecx-angular-accelerator-testing.mjs +34 -28
  50. package/fesm2022/onecx-angular-accelerator-testing.mjs.map +1 -0
  51. package/{fesm2020 → fesm2022}/onecx-angular-accelerator.mjs +244 -224
  52. package/fesm2022/onecx-angular-accelerator.mjs.map +1 -0
  53. package/lib/components/column-group-selection/column-group-selection.component.d.ts +1 -1
  54. package/lib/components/custom-group-column-selector/custom-group-column-selector.component.d.ts +1 -1
  55. package/lib/components/data-layout-selection/data-layout-selection.component.d.ts +1 -1
  56. package/lib/components/data-list-grid/data-list-grid.component.d.ts +1 -1
  57. package/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.d.ts +1 -1
  58. package/lib/components/data-table/data-table.component.d.ts +1 -1
  59. package/lib/components/data-view/data-view.component.d.ts +2 -2
  60. package/lib/components/diagram/diagram.component.d.ts +2 -2
  61. package/lib/components/group-by-count-diagram/group-by-count-diagram.component.d.ts +1 -1
  62. package/lib/components/interactive-data-view/interactive-data-view.component.d.ts +1 -1
  63. package/lib/components/page-header/page-header.component.d.ts +1 -1
  64. package/lib/components/search-config/search-config.component.d.ts +1 -1
  65. package/lib/components/search-header/search-header.component.d.ts +1 -1
  66. package/lib/directives/if-breakpoint.directive.d.ts +1 -1
  67. package/lib/directives/if-permission.directive.d.ts +14 -5
  68. package/lib/directives/src.directive.d.ts +1 -1
  69. package/lib/model/breadcrumb-menu-item.model.d.ts +2 -2
  70. package/package.json +20 -28
  71. package/testing/data-list-grid.harness.d.ts +1 -1
  72. package/esm2020/lib/angular-accelerator.module.mjs +0 -160
  73. package/esm2020/lib/components/column-group-selection/column-group-selection.component.mjs +0 -72
  74. package/esm2020/lib/components/custom-group-column-selector/custom-group-column-selector.component.mjs +0 -109
  75. package/esm2020/lib/components/data-layout-selection/data-layout-selection.component.mjs +0 -45
  76. package/esm2020/lib/components/data-list-grid/data-list-grid.component.mjs +0 -399
  77. package/esm2020/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.mjs +0 -92
  78. package/esm2020/lib/components/data-sort-base/data-sort-base.mjs +0 -110
  79. package/esm2020/lib/components/data-table/data-table.component.mjs +0 -401
  80. package/esm2020/lib/components/data-view/data-view.component.mjs +0 -407
  81. package/esm2020/lib/components/diagram/diagram.component.mjs +0 -137
  82. package/esm2020/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +0 -109
  83. package/esm2020/lib/components/interactive-data-view/interactive-data-view.component.mjs +0 -375
  84. package/esm2020/lib/components/page-header/page-header.component.mjs +0 -232
  85. package/esm2020/lib/components/search-header/search-header.component.mjs +0 -136
  86. package/esm2020/lib/directives/advanced.directive.mjs +0 -36
  87. package/esm2020/lib/directives/if-breakpoint.directive.mjs +0 -39
  88. package/esm2020/lib/directives/if-permission.directive.mjs +0 -70
  89. package/esm2020/lib/directives/src.directive.mjs +0 -59
  90. package/esm2020/lib/functions/flatten-object.mjs +0 -20
  91. package/esm2020/lib/pipes/dynamic.pipe.mjs +0 -58
  92. package/esm2020/lib/pipes/ocxtimeago.pipe.mjs +0 -107
  93. package/esm2020/lib/services/app-config-service.mjs +0 -43
  94. package/esm2020/lib/services/breadcrumb.service.mjs +0 -113
  95. package/esm2020/lib/services/translation-cache.service.mjs +0 -41
  96. package/esm2020/lib/utils/async-translate-loader.utils.mjs +0 -12
  97. package/esm2020/lib/utils/caching-translate-loader.utils.mjs +0 -15
  98. package/esm2020/lib/utils/objectutils.mjs +0 -30
  99. package/esm2020/testing/custom-group-column-selector.harness.mjs +0 -31
  100. package/esm2020/testing/data-layout-selection.harness.mjs +0 -33
  101. package/esm2020/testing/data-list-grid.harness.mjs +0 -47
  102. package/esm2020/testing/data-table.harness.mjs +0 -57
  103. package/esm2020/testing/default-grid-item.harness.mjs +0 -24
  104. package/esm2020/testing/default-list-item.harness.mjs +0 -24
  105. package/esm2020/testing/diagram.harness.mjs +0 -22
  106. package/esm2020/testing/more-actions-menu-button.harness.mjs +0 -35
  107. package/esm2020/testing/page-header.harness.mjs +0 -78
  108. package/fesm2015/onecx-angular-accelerator-testing.mjs +0 -541
  109. package/fesm2015/onecx-angular-accelerator-testing.mjs.map +0 -1
  110. package/fesm2015/onecx-angular-accelerator.mjs +0 -3563
  111. package/fesm2015/onecx-angular-accelerator.mjs.map +0 -1
  112. package/fesm2020/onecx-angular-accelerator-testing.mjs.map +0 -1
  113. package/fesm2020/onecx-angular-accelerator.mjs.map +0 -1
  114. /package/{esm2020 → esm2022}/index.mjs +0 -0
  115. /package/{esm2020 → esm2022}/lib/model/column-type.model.mjs +0 -0
  116. /package/{esm2020 → esm2022}/lib/model/data-action.mjs +0 -0
  117. /package/{esm2020 → esm2022}/lib/model/data-column-name-id.model.mjs +0 -0
  118. /package/{esm2020 → esm2022}/lib/model/data-sort-direction.mjs +0 -0
  119. /package/{esm2020 → esm2022}/lib/model/data-table-column.model.mjs +0 -0
  120. /package/{esm2020 → esm2022}/lib/model/diagram-column.mjs +0 -0
  121. /package/{esm2020 → esm2022}/lib/model/diagram-data.mjs +0 -0
  122. /package/{esm2020 → esm2022}/lib/model/diagram-type.mjs +0 -0
  123. /package/{esm2020 → esm2022}/lib/model/search-config-info.mjs +0 -0
  124. /package/{esm2020 → esm2022}/lib/utils/create-remote-component-translate-loader.utils.mjs +0 -0
  125. /package/{esm2020 → esm2022}/lib/utils/create-translate-loader.utils.mjs +0 -0
  126. /package/{esm2020 → esm2022}/lib/utils/enum-to-dropdown-options.utils.mjs +0 -0
  127. /package/{esm2020 → esm2022}/lib/utils/primeicon.utils.mjs +0 -0
  128. /package/{esm2020 → esm2022}/onecx-angular-accelerator.mjs +0 -0
  129. /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
  130. /package/{esm2020 → esm2022}/testing/onecx-angular-accelerator-testing.mjs +0 -0
@@ -0,0 +1,39 @@
1
+ import { Directive, HostListener, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class IfBreakpointDirective {
4
+ constructor(viewContainer, templateRef) {
5
+ this.viewContainer = viewContainer;
6
+ this.templateRef = templateRef;
7
+ }
8
+ ngOnInit() {
9
+ this.onResize();
10
+ }
11
+ onResize() {
12
+ const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point');
13
+ const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches;
14
+ const isDesktop = !isMobile;
15
+ if ((this.breakpoint === 'mobile' && isMobile) || (this.breakpoint === 'desktop' && isDesktop)) {
16
+ if (this.templateRef && !this.viewContainer.length) {
17
+ this.viewContainer.createEmbeddedView(this.templateRef);
18
+ }
19
+ }
20
+ else {
21
+ this.viewContainer.clear();
22
+ }
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfBreakpointDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
25
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: IfBreakpointDirective, selector: "[ocxIfBreakpoint]", inputs: { breakpoint: ["ocxIfBreakpoint", "breakpoint"] }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfBreakpointDirective, decorators: [{
28
+ type: Directive,
29
+ args: [{ selector: '[ocxIfBreakpoint]' }]
30
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef, decorators: [{
31
+ type: Optional
32
+ }] }], propDecorators: { breakpoint: [{
33
+ type: Input,
34
+ args: ['ocxIfBreakpoint']
35
+ }], onResize: [{
36
+ type: HostListener,
37
+ args: ['window:resize']
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtYnJlYWtwb2ludC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLWJyZWFrcG9pbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBOztBQUcvRyxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQW9CLGFBQStCLEVBQXNCLFdBQWtDO1FBQXZGLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFzQixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7SUFBRyxDQUFDO0lBRS9HLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDakIsQ0FBQztJQUdELFFBQVE7UUFDTixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQy9HLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFBO1FBQ2pGLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFBO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0YsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDekQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixDQUFDO0lBQ0gsQ0FBQzs4R0FyQlUscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7OzBCQUlZLFFBQVE7eUNBRnBDLFVBQVU7c0JBQW5DLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVN4QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbb2N4SWZCcmVha3BvaW50XScgfSlcbmV4cG9ydCBjbGFzcyBJZkJyZWFrcG9pbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ29jeElmQnJlYWtwb2ludCcpIGJyZWFrcG9pbnQ6ICdtb2JpbGUnIHwgJ2Rlc2t0b3AnIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBAT3B0aW9uYWwoKSBwcml2YXRlIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj4pIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vblJlc2l6ZSgpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKSB7XG4gICAgY29uc3QgbW9iaWxlQnJlYWtwb2ludFZhciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLW1vYmlsZS1icmVhay1wb2ludCcpXG4gICAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHttb2JpbGVCcmVha3BvaW50VmFyfSlgKS5tYXRjaGVzXG4gICAgY29uc3QgaXNEZXNrdG9wID0gIWlzTW9iaWxlXG4gICAgaWYgKCh0aGlzLmJyZWFrcG9pbnQgPT09ICdtb2JpbGUnICYmIGlzTW9iaWxlKSB8fCAodGhpcy5icmVha3BvaW50ID09PSAnZGVza3RvcCcgJiYgaXNEZXNrdG9wKSkge1xuICAgICAgaWYgKHRoaXMudGVtcGxhdGVSZWYgJiYgIXRoaXMudmlld0NvbnRhaW5lci5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,80 @@
1
+ import { Directive, ElementRef, Inject, InjectionToken, Input, Optional, Renderer2, TemplateRef, ViewContainerRef, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * This checker always returns true, basically disabling the permission system on the UI side
5
+ */
6
+ export class AlwaysGrantPermissionChecker {
7
+ hasPermission(_permissionKey) {
8
+ return true;
9
+ }
10
+ }
11
+ export const HAS_PERMISSION_CHECKER = new InjectionToken('hasPermission');
12
+ export class IfPermissionDirective {
13
+ set notPermission(value) {
14
+ this.permission = value;
15
+ this.negate = true;
16
+ }
17
+ set ocxIfNotPermissionPermissions(value) {
18
+ this.ocxIfPermissionPermissions = value;
19
+ }
20
+ constructor(renderer, el, viewContainer, permissionChecker, templateRef) {
21
+ this.renderer = renderer;
22
+ this.el = el;
23
+ this.viewContainer = viewContainer;
24
+ this.permissionChecker = permissionChecker;
25
+ this.templateRef = templateRef;
26
+ this.onMissingPermission = 'hide';
27
+ this.negate = false;
28
+ }
29
+ ngOnInit() {
30
+ if (this.permission) {
31
+ if (this.negate === this.hasPermission(this.permission)) {
32
+ if (this.onMissingPermission === 'disable') {
33
+ this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');
34
+ }
35
+ else {
36
+ this.viewContainer.clear();
37
+ }
38
+ }
39
+ else {
40
+ if (this.templateRef) {
41
+ this.viewContainer.createEmbeddedView(this.templateRef);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ hasPermission(permission) {
47
+ if (this.ocxIfPermissionPermissions) {
48
+ const result = this.ocxIfPermissionPermissions.includes(permission);
49
+ if (!result) {
50
+ console.log('👮‍♀️ No permission in overwrites for: `', permission);
51
+ }
52
+ return result;
53
+ }
54
+ return this.permissionChecker.hasPermission(permission);
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: HAS_PERMISSION_CHECKER }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
57
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: { permission: ["ocxIfPermission", "permission"], notPermission: ["ocxIfNotPermission", "notPermission"], onMissingPermission: "onMissingPermission", ocxIfPermissionPermissions: "ocxIfPermissionPermissions", ocxIfNotPermissionPermissions: "ocxIfNotPermissionPermissions" }, ngImport: i0 }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IfPermissionDirective, decorators: [{
60
+ type: Directive,
61
+ args: [{ selector: '[ocxIfPermission], [ocxIfNotPermission]' }]
62
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
63
+ type: Inject,
64
+ args: [HAS_PERMISSION_CHECKER]
65
+ }] }, { type: i0.TemplateRef, decorators: [{
66
+ type: Optional
67
+ }] }], propDecorators: { permission: [{
68
+ type: Input,
69
+ args: ['ocxIfPermission']
70
+ }], notPermission: [{
71
+ type: Input,
72
+ args: ['ocxIfNotPermission']
73
+ }], onMissingPermission: [{
74
+ type: Input
75
+ }], ocxIfPermissionPermissions: [{
76
+ type: Input
77
+ }], ocxIfNotPermissionPermissions: [{
78
+ type: Input
79
+ }] } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtcGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLXBlcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQTs7QUFNdEI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLGFBQWEsQ0FBQyxjQUFzQjtRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUF1QixlQUFlLENBQUMsQ0FBQTtBQUcvRixNQUFNLE9BQU8scUJBQXFCO0lBRWhDLElBQWlDLGFBQWEsQ0FBQyxLQUF5QjtRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtJQUNwQixDQUFDO0lBS0QsSUFDSSw2QkFBNkIsQ0FBQyxLQUEyQjtRQUMzRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFBO0lBQ3pDLENBQUM7SUFJRCxZQUNVLFFBQW1CLEVBQ25CLEVBQWMsRUFDZCxhQUErQixFQUUvQixpQkFBdUMsRUFDM0IsV0FBOEI7UUFMMUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBRS9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBaEIzQyx3QkFBbUIsR0FBdUIsTUFBTSxDQUFBO1FBUXpELFdBQU0sR0FBRyxLQUFLLENBQUE7SUFTWCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO2dCQUMzRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtnQkFDNUIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQ3pELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsVUFBa0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDekQsQ0FBQzs4R0FuRFUscUJBQXFCLHFHQXFCdEIsc0JBQXNCO2tHQXJCckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHlDQUF5QyxFQUFFOzswQkFzQjdELE1BQU07MkJBQUMsc0JBQXNCOzswQkFFN0IsUUFBUTt5Q0F0QmUsVUFBVTtzQkFBbkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ1MsYUFBYTtzQkFBN0MsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBS2xCLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBRUYsNkJBQTZCO3NCQURoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuZXhwb3J0IGludGVyZmFjZSBIYXNQZXJtaXNzaW9uQ2hlY2tlciB7XG4gIGhhc1Blcm1pc3Npb24ocGVybWlzc2lvbktleTogc3RyaW5nKTogYm9vbGVhblxufVxuXG4vKipcbiAqIFRoaXMgY2hlY2tlciBhbHdheXMgcmV0dXJucyB0cnVlLCBiYXNpY2FsbHkgZGlzYWJsaW5nIHRoZSBwZXJtaXNzaW9uIHN5c3RlbSBvbiB0aGUgVUkgc2lkZVxuICovXG5leHBvcnQgY2xhc3MgQWx3YXlzR3JhbnRQZXJtaXNzaW9uQ2hlY2tlciBpbXBsZW1lbnRzIEhhc1Blcm1pc3Npb25DaGVja2VyIHtcbiAgaGFzUGVybWlzc2lvbihfcGVybWlzc2lvbktleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEhBU19QRVJNSVNTSU9OX0NIRUNLRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48SGFzUGVybWlzc2lvbkNoZWNrZXI+KCdoYXNQZXJtaXNzaW9uJylcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW29jeElmUGVybWlzc2lvbl0sIFtvY3hJZk5vdFBlcm1pc3Npb25dJyB9KVxuZXhwb3J0IGNsYXNzIElmUGVybWlzc2lvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnb2N4SWZQZXJtaXNzaW9uJykgcGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgnb2N4SWZOb3RQZXJtaXNzaW9uJykgc2V0IG5vdFBlcm1pc3Npb24odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGVybWlzc2lvbiA9IHZhbHVlXG4gICAgdGhpcy5uZWdhdGUgPSB0cnVlXG4gIH1cblxuICBASW5wdXQoKSBvbk1pc3NpbmdQZXJtaXNzaW9uOiAnaGlkZScgfCAnZGlzYWJsZScgPSAnaGlkZSdcblxuICBASW5wdXQoKSBvY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9uczogc3RyaW5nW10gfCB1bmRlZmluZWRcbiAgQElucHV0KClcbiAgc2V0IG9jeElmTm90UGVybWlzc2lvblBlcm1pc3Npb25zKHZhbHVlOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMub2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnMgPSB2YWx1ZVxuICB9XG5cbiAgbmVnYXRlID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQEluamVjdChIQVNfUEVSTUlTU0lPTl9DSEVDS0VSKVxuICAgIHByaXZhdGUgcGVybWlzc2lvbkNoZWNrZXI6IEhhc1Blcm1pc3Npb25DaGVja2VyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGVtcGxhdGVSZWY/OiBUZW1wbGF0ZVJlZjxhbnk+XG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uKSB7XG4gICAgICBpZiAodGhpcy5uZWdhdGUgPT09IHRoaXMuaGFzUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb24pKSB7XG4gICAgICAgIGlmICh0aGlzLm9uTWlzc2luZ1Blcm1pc3Npb24gPT09ICdkaXNhYmxlJykge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZVJlZikge1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24ocGVybWlzc2lvbjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMub2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMub2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnMuaW5jbHVkZXMocGVybWlzc2lvbilcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCfwn5Gu4oCN4pmA77iPIE5vIHBlcm1pc3Npb24gaW4gb3ZlcndyaXRlcyBmb3I6IGAnLCBwZXJtaXNzaW9uKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uQ2hlY2tlci5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,59 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ export class SrcDirective {
6
+ get ocxSrc() {
7
+ return this._src;
8
+ }
9
+ set ocxSrc(value) {
10
+ if (value && this._src !== value) {
11
+ try {
12
+ if (new URL(value, window.location.origin).hostname === window.location.hostname) {
13
+ this.httpClient.get(value, { responseType: 'blob' }).subscribe({
14
+ next: (blob) => {
15
+ const url = URL.createObjectURL(blob);
16
+ this.el.nativeElement.onload = () => {
17
+ URL.revokeObjectURL(url);
18
+ };
19
+ this.el.nativeElement.src = url;
20
+ this.el.nativeElement.style.visibility = 'initial';
21
+ },
22
+ error: () => {
23
+ this.error.emit();
24
+ this.el.nativeElement.style.visibility = 'initial';
25
+ },
26
+ });
27
+ }
28
+ else {
29
+ this.el.nativeElement.src = value;
30
+ this.el.nativeElement.style.visibility = 'initial';
31
+ }
32
+ }
33
+ catch (error) {
34
+ console.log('Cannot parse URL ', value, error);
35
+ this.el.nativeElement.src = value;
36
+ this.el.nativeElement.style.visibility = 'initial';
37
+ }
38
+ this._src = value;
39
+ }
40
+ }
41
+ constructor(el, httpClient) {
42
+ this.el = el;
43
+ this.httpClient = httpClient;
44
+ // eslint-disable-next-line @angular-eslint/no-output-native
45
+ this.error = new EventEmitter();
46
+ this.el.nativeElement.style.visibility = 'hidden';
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SrcDirective, deps: [{ token: i0.ElementRef }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: SrcDirective, selector: "[ocxSrc]", inputs: { ocxSrc: "ocxSrc" }, outputs: { error: "error" }, ngImport: i0 }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SrcDirective, decorators: [{
52
+ type: Directive,
53
+ args: [{ selector: '[ocxSrc]' }]
54
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.HttpClient }], propDecorators: { error: [{
55
+ type: Output
56
+ }], ocxSrc: [{
57
+ type: Input
58
+ }] } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2RpcmVjdGl2ZXMvc3JjLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7OztBQUdsRixNQUFNLE9BQU8sWUFBWTtJQU12QixJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQXlCO1FBQ2xDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDO2dCQUNILElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2pGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQzt3QkFDN0QsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7NEJBQ2IsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTs0QkFDckMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQ0FDbEMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTs0QkFDMUIsQ0FBQyxDQUFBOzRCQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7NEJBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO3dCQUNwRCxDQUFDO3dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7NEJBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTs0QkFDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7d0JBQ3BELENBQUM7cUJBQ0YsQ0FBQyxDQUFBO2dCQUNKLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFBO29CQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtnQkFDcEQsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUM5QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtZQUNwRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUE7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFvQixFQUFjLEVBQVUsVUFBc0I7UUFBOUMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUF0Q2xFLDREQUE0RDtRQUNsRCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQXNDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUE7SUFDbkQsQ0FBQzs4R0EzQ1UsWUFBWTtrR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTt3R0FLdkIsS0FBSztzQkFBZCxNQUFNO2dCQUdILE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW29jeFNyY10nIH0pXG5leHBvcnQgY2xhc3MgU3JjRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBfc3JjOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgQElucHV0KClcbiAgZ2V0IG9jeFNyYygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zcmNcbiAgfVxuICBzZXQgb2N4U3JjKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5fc3JjICE9PSB2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKG5ldyBVUkwodmFsdWUsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pLmhvc3RuYW1lID09PSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpIHtcbiAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KHZhbHVlLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoYmxvYikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYyA9IHVybFxuICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdpbml0aWFsJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdCgpXG4gICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2luaXRpYWwnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYyA9IHZhbHVlXG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaW5pdGlhbCdcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0Nhbm5vdCBwYXJzZSBVUkwgJywgdmFsdWUsIGVycm9yKVxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3JjID0gdmFsdWVcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaW5pdGlhbCdcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NyYyA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJ1xuICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ export function flattenObject(ob) {
2
+ const toReturn = {};
3
+ for (const i in ob) {
4
+ if (!Object.prototype.hasOwnProperty.call(ob, i))
5
+ continue;
6
+ if (!!ob[i] && typeof ob[i] == 'object' && !(ob[i] instanceof Date) && !Array.isArray(ob[i])) {
7
+ const flatObject = flattenObject(ob[i]);
8
+ for (const x in flatObject) {
9
+ if (!Object.prototype.hasOwnProperty.call(flatObject, x))
10
+ continue;
11
+ toReturn[i + '.' + x] = flatObject[x];
12
+ }
13
+ }
14
+ else {
15
+ toReturn[i] = ob[i];
16
+ }
17
+ }
18
+ return toReturn;
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi1vYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9mdW5jdGlvbnMvZmxhdHRlbi1vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEJBLE1BQU0sVUFBVSxhQUFhLENBQW9DLEVBQUs7SUFDcEUsTUFBTSxRQUFRLEdBQTRCLEVBQUUsQ0FBQTtJQUU1QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUFFLFNBQVE7UUFFMUQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdGLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUE0QixDQUFDLENBQUE7WUFDbEUsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO29CQUFFLFNBQVE7Z0JBRWxFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFJLFVBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sUUFBcUIsQ0FBQTtBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBFeHRlbmQ8VE9iaiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBLIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW1RLZXkgaW4ga2V5b2YgVE9iaiAmIHN0cmluZyBhcyBgJHtLfSR7VEtleX1gXTogVE9ialtUS2V5XSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgPyBFeHRlbmQ8VE9ialtUS2V5XSwgYCR7S30ke1RLZXl9LmA+XG4gICAgOiBUT2JqW1RLZXldXG59XG5cbnR5cGUgTm9uT2JqZWN0S2V5c09mPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEFycmF5PGFueT4gPyBLIDogVFtLXSBleHRlbmRzIG9iamVjdCA/IChUW0tdIGV4dGVuZHMgRGF0ZSA/IEsgOiBuZXZlcikgOiBLXG59W2tleW9mIFRdXG5cbnR5cGUgT2JqZWN0S2V5c09mPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEFycmF5PGFueT4gPyBuZXZlciA6IFRbS10gZXh0ZW5kcyBvYmplY3QgPyBLIDogbmV2ZXJcbn1ba2V5b2YgVF1cblxudHlwZSBGaWx0ZXI8VE9iaiBleHRlbmRzIG9iamVjdCwgVEtleSA9IGtleW9mIFRPYmo+ID0gVEtleSBleHRlbmRzIGtleW9mIFRPYmpcbiAgPyBUT2JqW1RLZXldIGV4dGVuZHMgQXJyYXk8YW55PlxuICAgID8gVE9ialxuICAgIDogVE9ialtUS2V5XSBleHRlbmRzIG9iamVjdFxuICAgID8gRmlsdGVyPFRPYmpbVEtleV0+XG4gICAgOiBQaWNrPFRPYmosIE5vbk9iamVjdEtleXNPZjxUT2JqPj4gfCBGaWx0ZXI8UGljazxUT2JqLCBPYmplY3RLZXlzT2Y8VE9iaj4+PlxuICA6IG5ldmVyXG5cbnR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxVPiA9IChVIGV4dGVuZHMgYW55ID8gKGs6IFUpID0+IHZvaWQgOiBuZXZlcikgZXh0ZW5kcyAoazogaW5mZXIgSSkgPT4gdm9pZCA/IEkgOiBuZXZlclxuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VE9iaiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IFVuaW9uVG9JbnRlcnNlY3Rpb248RmlsdGVyPEV4dGVuZDxUT2JqLCAnJz4+PlxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbk9iamVjdDxPIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9iOiBPKTogUmVzdWx0PE8+IHtcbiAgY29uc3QgdG9SZXR1cm46IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cblxuICBmb3IgKGNvbnN0IGkgaW4gb2IpIHtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYiwgaSkpIGNvbnRpbnVlXG5cbiAgICBpZiAoISFvYltpXSAmJiB0eXBlb2Ygb2JbaV0gPT0gJ29iamVjdCcgJiYgIShvYltpXSBpbnN0YW5jZW9mIERhdGUpICYmICFBcnJheS5pc0FycmF5KG9iW2ldKSkge1xuICAgICAgY29uc3QgZmxhdE9iamVjdCA9IGZsYXR0ZW5PYmplY3Qob2JbaV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICBmb3IgKGNvbnN0IHggaW4gZmxhdE9iamVjdCkge1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmbGF0T2JqZWN0LCB4KSkgY29udGludWVcblxuICAgICAgICB0b1JldHVybltpICsgJy4nICsgeF0gPSAoZmxhdE9iamVjdCBhcyBhbnkpW3hdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvUmV0dXJuW2ldID0gb2JbaV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvUmV0dXJuIGFzIFJlc3VsdDxPPlxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1tZW51LWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlQYXJhbXNIYW5kbGluZyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkQ3J1bWJNZW51SXRlbSB7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgbGFiZWxLZXkgaW5zdGVhZCAqL1xuICBsYWJlbD86IHN0cmluZ1xuICBsYWJlbEtleT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIGNvbW1hbmQ/OiAoZXZlbnQ/OiBhbnkpID0+IHZvaWRcbiAgdXJsPzogc3RyaW5nXG4gIGl0ZW1zPzogTWVudUl0ZW1bXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHZpc2libGU/OiBib29sZWFuXG4gIHRhcmdldD86IHN0cmluZ1xuICBlc2NhcGU/OiBib29sZWFuXG4gIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zPzogYW55XG4gIHNlcGFyYXRvcj86IGJvb2xlYW5cbiAgYmFkZ2U/OiBzdHJpbmdcbiAgdG9vbHRpcD86IHN0cmluZ1xuICB0b29sdGlwUG9zaXRpb24/OiBzdHJpbmdcbiAgYmFkZ2VTdHlsZUNsYXNzPzogc3RyaW5nXG4gIHN0eWxlPzogYW55XG4gIHN0eWxlQ2xhc3M/OiBzdHJpbmdcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSB0aXRsZUtleSBpbnN0ZWFkICovXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRpdGxlS2V5Pzogc3RyaW5nXG4gIGlkPzogc3RyaW5nXG4gIGF1dG9tYXRpb25JZD86IGFueVxuICB0YWJpbmRleD86IHN0cmluZ1xuICByb3V0ZXJMaW5rPzogYW55XG4gIHF1ZXJ5UGFyYW1zPzoge1xuICAgIFtrOiBzdHJpbmddOiBhbnlcbiAgfVxuICBmcmFnbWVudD86IHN0cmluZ1xuICBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZ1xuICBwcmVzZXJ2ZUZyYWdtZW50PzogYm9vbGVhblxuICBza2lwTG9jYXRpb25DaGFuZ2U/OiBib29sZWFuXG4gIHJlcGxhY2VVcmw/OiBib29sZWFuXG4gIGljb25TdHlsZT86IGFueVxuICBpY29uQ2xhc3M/OiBzdHJpbmdcbiAgc3RhdGU/OiB7XG4gICAgW2s6IHN0cmluZ106IGFueVxuICB9XG4gIHRvb2x0aXBPcHRpb25zPzoge1xuICAgIHRvb2x0aXBMYWJlbD86IHN0cmluZ1xuICAgIHRvb2x0aXBQb3NpdGlvbj86IHN0cmluZ1xuICAgIHRvb2x0aXBFdmVudD86IHN0cmluZ1xuICAgIGFwcGVuZFRvPzogYW55XG4gICAgcG9zaXRpb25TdHlsZT86IHN0cmluZ1xuICAgIHRvb2x0aXBTdHlsZUNsYXNzPzogc3RyaW5nXG4gICAgdG9vbHRpcFpJbmRleD86IHN0cmluZ1xuICAgIGVzY2FwZT86IGJvb2xlYW5cbiAgICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgICBwb3NpdGlvblRvcD86IG51bWJlclxuICAgIHBvc2l0aW9uTGVmdD86IG51bWJlclxuICAgIHNob3dEZWxheT86IG51bWJlclxuICAgIGhpZGVEZWxheT86IG51bWJlclxuICAgIGxpZmU/OiBudW1iZXJcbiAgfVxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1tZW51LWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlQYXJhbXNIYW5kbGluZyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkQ3J1bWJNZW51SXRlbSB7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgbGFiZWxLZXkgaW5zdGVhZCAqL1xuICBsYWJlbD86IHN0cmluZ1xuICBsYWJlbEtleT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIGNvbW1hbmQ/OiAoZXZlbnQ/OiBhbnkpID0+IHZvaWRcbiAgdXJsPzogc3RyaW5nXG4gIGl0ZW1zPzogTWVudUl0ZW1bXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHZpc2libGU/OiBib29sZWFuXG4gIHRhcmdldD86IHN0cmluZ1xuICBlc2NhcGU/OiBib29sZWFuXG4gIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zPzogYW55XG4gIHNlcGFyYXRvcj86IGJvb2xlYW5cbiAgYmFkZ2U/OiBzdHJpbmdcbiAgdG9vbHRpcD86IHN0cmluZ1xuICB0b29sdGlwUG9zaXRpb24/OiBzdHJpbmdcbiAgYmFkZ2VTdHlsZUNsYXNzPzogc3RyaW5nXG4gIHN0eWxlPzogYW55XG4gIHN0eWxlQ2xhc3M/OiBzdHJpbmdcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSB0aXRsZUtleSBpbnN0ZWFkICovXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRpdGxlS2V5Pzogc3RyaW5nXG4gIGlkPzogc3RyaW5nXG4gIGF1dG9tYXRpb25JZD86IGFueVxuICB0YWJpbmRleD86IHN0cmluZ1xuICByb3V0ZXJMaW5rPzogYW55XG4gIHF1ZXJ5UGFyYW1zPzoge1xuICAgIFtrOiBzdHJpbmddOiBhbnlcbiAgfVxuICBmcmFnbWVudD86IHN0cmluZ1xuICBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZ1xuICBwcmVzZXJ2ZUZyYWdtZW50PzogYm9vbGVhblxuICBza2lwTG9jYXRpb25DaGFuZ2U/OiBib29sZWFuXG4gIHJlcGxhY2VVcmw/OiBib29sZWFuXG4gIGljb25TdHlsZT86IGFueVxuICBpY29uQ2xhc3M/OiBzdHJpbmdcbiAgc3RhdGU/OiB7XG4gICAgW2s6IHN0cmluZ106IGFueVxuICB9XG4gIHRvb2x0aXBPcHRpb25zPzoge1xuICAgIHRvb2x0aXBMYWJlbD86IHN0cmluZ1xuICAgIHRvb2x0aXBQb3NpdGlvbj86ICdyaWdodCcgfCAnbGVmdCcgfCAndG9wJyB8ICdib3R0b20nXG4gICAgdG9vbHRpcEV2ZW50PzogJ2hvdmVyJyB8ICdmb2N1cydcbiAgICBhcHBlbmRUbz86IGFueVxuICAgIHBvc2l0aW9uU3R5bGU/OiBzdHJpbmdcbiAgICB0b29sdGlwU3R5bGVDbGFzcz86IHN0cmluZ1xuICAgIHRvb2x0aXBaSW5kZXg/OiBzdHJpbmdcbiAgICBlc2NhcGU/OiBib29sZWFuXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuXG4gICAgcG9zaXRpb25Ub3A/OiBudW1iZXJcbiAgICBwb3NpdGlvbkxlZnQ/OiBudW1iZXJcbiAgICBzaG93RGVsYXk/OiBudW1iZXJcbiAgICBoaWRlRGVsYXk/OiBudW1iZXJcbiAgICBsaWZlPzogbnVtYmVyXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
2
+ import { Inject, Injector, LOCALE_ID, Pipe } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class DynamicPipe {
5
+ constructor(locale, injector) {
6
+ this.injector = injector;
7
+ this.knownPipes = {};
8
+ this.knownPipes = {
9
+ currency: new CurrencyPipe(locale),
10
+ decimal: new DecimalPipe(locale),
11
+ date: new DatePipe(locale),
12
+ };
13
+ }
14
+ transform(value, requiredPipe, pipeArgs) {
15
+ if (!requiredPipe) {
16
+ return value;
17
+ }
18
+ const injector = Injector.create({
19
+ name: 'DynamicPipe',
20
+ parent: this.injector,
21
+ providers: [{ provide: requiredPipe }],
22
+ });
23
+ const pipe = injector.get(requiredPipe);
24
+ return pipe.transform(value, pipeArgs);
25
+ }
26
+ transform2(value, pipeToken, ...pipeArgs) {
27
+ if (!pipeToken) {
28
+ return value;
29
+ }
30
+ else {
31
+ // eslint-disable-next-line no-prototype-builtins
32
+ if (pipeToken && this.knownPipes.hasOwnProperty(pipeToken)) {
33
+ const pipe = this.knownPipes[pipeToken];
34
+ if (Array.isArray(pipeArgs)) {
35
+ return pipe.transform(value, ...pipeArgs);
36
+ }
37
+ else {
38
+ return pipe.transform(value, pipeArgs);
39
+ }
40
+ }
41
+ else {
42
+ return value;
43
+ }
44
+ }
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: DynamicPipe, deps: [{ token: LOCALE_ID }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
47
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: DynamicPipe, name: "dynamicPipe" }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: DynamicPipe, decorators: [{
50
+ type: Pipe,
51
+ args: [{
52
+ name: 'dynamicPipe',
53
+ }]
54
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
55
+ type: Inject,
56
+ args: [LOCALE_ID]
57
+ }] }, { type: i0.Injector }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvcGlwZXMvZHluYW1pYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQXVCLE1BQU0sZUFBZSxDQUFBOztBQUt0RixNQUFNLE9BQU8sV0FBVztJQUV0QixZQUFzQyxNQUFjLEVBQVUsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQURoRixlQUFVLEdBQXNDLEVBQUUsQ0FBQTtRQUVoRCxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFFBQVEsRUFBRSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDbEMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDO1NBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxZQUF3QixFQUFFLFFBQWM7UUFDNUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQTtRQUNGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVUsRUFBRSxTQUFjLEVBQUUsR0FBRyxRQUFlO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixpREFBaUQ7WUFDakQsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDdkMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQTtnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxLQUFLLENBQUE7WUFDZCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBeENVLFdBQVcsa0JBRUssU0FBUzs0R0FGekIsV0FBVzs7MkZBQVgsV0FBVztrQkFIdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtpQkFDcEI7OzBCQUdxQixNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlLCBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0b3IsIExPQ0FMRV9JRCwgUGlwZSwgUGlwZVRyYW5zZm9ybSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBQaXBlKHtcbiAgbmFtZTogJ2R5bmFtaWNQaXBlJyxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAga25vd25QaXBlczogeyBbbmFtZTogc3RyaW5nXTogUGlwZVRyYW5zZm9ybSB9ID0ge31cbiAgcHVibGljIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZywgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLmtub3duUGlwZXMgPSB7XG4gICAgICBjdXJyZW5jeTogbmV3IEN1cnJlbmN5UGlwZShsb2NhbGUpLFxuICAgICAgZGVjaW1hbDogbmV3IERlY2ltYWxQaXBlKGxvY2FsZSksXG4gICAgICBkYXRlOiBuZXcgRGF0ZVBpcGUobG9jYWxlKSxcbiAgICB9XG4gIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgcmVxdWlyZWRQaXBlPzogVHlwZTxhbnk+LCBwaXBlQXJncz86IGFueSk6IGFueSB7XG4gICAgaWYgKCFyZXF1aXJlZFBpcGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIG5hbWU6ICdEeW5hbWljUGlwZScsXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IHJlcXVpcmVkUGlwZSB9XSxcbiAgICB9KVxuICAgIGNvbnN0IHBpcGUgPSBpbmplY3Rvci5nZXQocmVxdWlyZWRQaXBlKVxuICAgIHJldHVybiBwaXBlLnRyYW5zZm9ybSh2YWx1ZSwgcGlwZUFyZ3MpXG4gIH1cblxuICB0cmFuc2Zvcm0yKHZhbHVlOiBhbnksIHBpcGVUb2tlbjogYW55LCAuLi5waXBlQXJnczogYW55W10pOiBhbnkge1xuICAgIGlmICghcGlwZVRva2VuKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgaWYgKHBpcGVUb2tlbiAmJiB0aGlzLmtub3duUGlwZXMuaGFzT3duUHJvcGVydHkocGlwZVRva2VuKSkge1xuICAgICAgICBjb25zdCBwaXBlID0gdGhpcy5rbm93blBpcGVzW3BpcGVUb2tlbl1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGlwZUFyZ3MpKSB7XG4gICAgICAgICAgcmV0dXJuIHBpcGUudHJhbnNmb3JtKHZhbHVlLCAuLi5waXBlQXJncylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcGlwZS50cmFuc2Zvcm0odmFsdWUsIHBpcGVBcmdzKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,107 @@
1
+ import { ChangeDetectorRef, NgZone, Pipe } from '@angular/core';
2
+ import { TranslatePipe, TranslateService } from '@ngx-translate/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ngx-translate/core";
5
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
6
+ export class OcxTimeAgoPipe extends TranslatePipe {
7
+ constructor(changeDetectorRef, ngZone, translateService) {
8
+ super(translateService, changeDetectorRef);
9
+ this.changeDetectorRef = changeDetectorRef;
10
+ this.ngZone = ngZone;
11
+ this.translateService = translateService;
12
+ }
13
+ transform(value) {
14
+ this.removeTimer();
15
+ const d = new Date(value);
16
+ const now = new Date();
17
+ const seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000));
18
+ const timeToUpdate = Number.isNaN(seconds) ? 1000 : this.getSecondsUntilUpdate(seconds) * 1000;
19
+ this.timer = this.ngZone.runOutsideAngular(() => {
20
+ if (typeof window !== 'undefined') {
21
+ return window.setTimeout(() => {
22
+ this.ngZone.run(() => this.changeDetectorRef.markForCheck());
23
+ }, timeToUpdate);
24
+ }
25
+ return null;
26
+ });
27
+ const minutes = Math.round(Math.abs(seconds / 60));
28
+ const hours = Math.round(Math.abs(minutes / 60));
29
+ const days = Math.round(Math.abs(hours / 24));
30
+ const months = Math.round(Math.abs(days / 30.416));
31
+ const years = Math.round(Math.abs(days / 365));
32
+ let translationKey = 'UNKNOWN';
33
+ if (Number.isNaN(seconds)) {
34
+ translationKey = 'NAN';
35
+ }
36
+ else if (seconds <= 45) {
37
+ translationKey = 'A_FEW_SECONDS_AGO';
38
+ }
39
+ else if (seconds <= 90) {
40
+ translationKey = 'A_MINUTE_AGO';
41
+ }
42
+ else if (minutes <= 45) {
43
+ translationKey = 'MINUTES_AGO';
44
+ }
45
+ else if (minutes <= 90) {
46
+ translationKey = 'AN_HOUR_AGO';
47
+ }
48
+ else if (hours <= 22) {
49
+ translationKey = 'HOURS_AGO';
50
+ }
51
+ else if (hours <= 36) {
52
+ translationKey = 'A_DAY_AGO';
53
+ }
54
+ else if (days <= 25) {
55
+ translationKey = 'DAYS_AGO';
56
+ }
57
+ else if (days <= 45) {
58
+ translationKey = 'A_MONTH_AGO';
59
+ }
60
+ else if (days <= 345) {
61
+ translationKey = 'MONTHS_AGO';
62
+ }
63
+ else if (days <= 545) {
64
+ translationKey = 'A_YEAR_AGO';
65
+ }
66
+ else {
67
+ translationKey = 'YEARS_AGO';
68
+ }
69
+ return super.transform('OCX_TIMEAGO.' + translationKey, { minutes, hours, days, months, years });
70
+ }
71
+ ngOnDestroy() {
72
+ this.removeTimer();
73
+ super.ngOnDestroy();
74
+ }
75
+ removeTimer() {
76
+ if (this.timer) {
77
+ window.clearTimeout(this.timer);
78
+ this.timer = null;
79
+ }
80
+ }
81
+ getSecondsUntilUpdate(seconds) {
82
+ const min = 60;
83
+ const hr = min * 60;
84
+ const day = hr * 24;
85
+ if (seconds < min) {
86
+ return 2;
87
+ }
88
+ else if (seconds < hr) {
89
+ return 30;
90
+ }
91
+ else if (seconds < day) {
92
+ return 300;
93
+ }
94
+ else {
95
+ return 3600;
96
+ }
97
+ }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OcxTimeAgoPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
99
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: OcxTimeAgoPipe, name: "timeago" }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OcxTimeAgoPipe, decorators: [{
102
+ type: Pipe,
103
+ args: [{
104
+ name: 'timeago',
105
+ }]
106
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.TranslateService }] });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2N4dGltZWFnby5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvcGlwZXMvb2N4dGltZWFnby5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQWEsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQTtBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7OztBQUtyRSx3RUFBd0U7QUFDeEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBRS9DLFlBQ1UsaUJBQW9DLEVBQ3BDLE1BQWMsRUFDZCxnQkFBa0M7UUFFMUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFKbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUc1QyxDQUFDO0lBQ1EsU0FBUyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDMUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMs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LEtBQUssRUFBRSxDQUFDLENBQUE7SUFDbEcsQ0FBQztJQUNRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBQ08sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBQ08scUJBQXFCLENBQUMsT0FBZTtRQUMzQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUE7UUFDZCxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ25CLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFDbkIsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUM7OEdBL0VVLGNBQWM7NEdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgTmdab25lLCBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RpbWVhZ28nLFxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdXNlLXBpcGUtdHJhbnNmb3JtLWludGVyZmFjZVxuZXhwb3J0IGNsYXNzIE9jeFRpbWVBZ29QaXBlIGV4dGVuZHMgVHJhbnNsYXRlUGlwZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgdGltZXI6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGxcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXG4gIH1cbiAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlbW92ZVRpbWVyKClcbiAgICBjb25zdCBkID0gbmV3IERhdGUodmFsdWUpXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKChub3cuZ2V0VGltZSgpIC0gZC5nZXRUaW1lKCkpIC8gMTAwMCkpXG4gICAgY29uc3QgdGltZVRvVXBkYXRlID0gTnVtYmVyLmlzTmFOKHNlY29uZHMpID8gMTAwMCA6IHRoaXMuZ2V0U2Vjb25kc1VudGlsVXBkYXRlKHNlY29uZHMpICogMTAwMFxuICAgIHRoaXMudGltZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSlcbiAgICAgICAgfSwgdGltZVRvVXBkYXRlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9KVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKHNlY29uZHMgLyA2MCkpXG4gICAgY29uc3QgaG91cnMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKG1pbnV0ZXMgLyA2MCkpXG4gICAgY29uc3QgZGF5cyA9IE1hdGgucm91bmQoTWF0aC5hYnMoaG91cnMgLyAyNCkpXG4gICAgY29uc3QgbW9udGhzID0gTWF0aC5yb3VuZChNYXRoLmFicyhkYXlzIC8gMzAuNDE2KSlcbiAgICBjb25zdCB5ZWFycyA9IE1hdGgucm91bmQoTWF0aC5hYnMoZGF5cyAvIDM2NSkpXG4gICAgbGV0IHRyYW5zbGF0aW9uS2V5ID0gJ1VOS05PV04nXG4gICAgaWYgKE51bWJlci5pc05hTihzZWNvbmRzKSkge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnTkFOJ1xuICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8PSA0NSkge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnQV9GRVdfU0VDT05EU19BR08nXG4gICAgfSBlbHNlIGlmIChzZWNvbmRzIDw9IDkwKSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdBX01JTlVURV9BR08nXG4gICAgfSBlbHNlIGlmIChtaW51dGVzIDw9IDQ1KSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdNSU5VVEVTX0FHTydcbiAgICB9IGVsc2UgaWYgKG1pbnV0ZXMgPD0gOTApIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ0FOX0hPVVJfQUdPJ1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPD0gMjIpIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ0hPVVJTX0FHTydcbiAgICB9IGVsc2UgaWYgKGhvdXJzIDw9IDM2KSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdBX0RBWV9BR08nXG4gICAgfSBlbHNlIGlmIChkYXlzIDw9IDI1KSB7XG4gICAgICB0cmFuc2xhdGlvbktleSA9ICdEQVlTX0FHTydcbiAgICB9IGVsc2UgaWYgKGRheXMgPD0gNDUpIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ0FfTU9OVEhfQUdPJ1xuICAgIH0gZWxzZSBpZiAoZGF5cyA8PSAzNDUpIHtcbiAgICAgIHRyYW5zbGF0aW9uS2V5ID0gJ01PTlRIU19BR08nXG4gICAgfSBlbHNlIGlmIChkYXlzIDw9IDU0NSkge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnQV9ZRUFSX0FHTydcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNsYXRpb25LZXkgPSAnWUVBUlNfQUdPJ1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKCdPQ1hfVElNRUFHTy4nICsgdHJhbnNsYXRpb25LZXksIHsgbWludXRlcywgaG91cnMsIGRheXMsIG1vbnRocywgeWVhcnMgfSlcbiAgfVxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVRpbWVyKClcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpXG4gIH1cbiAgcHJpdmF0ZSByZW1vdmVUaW1lcigpIHtcbiAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKVxuICAgICAgdGhpcy50aW1lciA9IG51bGxcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXRTZWNvbmRzVW50aWxVcGRhdGUoc2Vjb25kczogbnVtYmVyKSB7XG4gICAgY29uc3QgbWluID0gNjBcbiAgICBjb25zdCBociA9IG1pbiAqIDYwXG4gICAgY29uc3QgZGF5ID0gaHIgKiAyNFxuICAgIGlmIChzZWNvbmRzIDwgbWluKSB7XG4gICAgICByZXR1cm4gMlxuICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8IGhyKSB7XG4gICAgICByZXR1cm4gMzBcbiAgICB9IGVsc2UgaWYgKHNlY29uZHMgPCBkYXkpIHtcbiAgICAgIHJldHVybiAzMDBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDM2MDBcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Location } from '@angular/common';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Injectable } from '@angular/core';
4
+ import { BehaviorSubject, firstValueFrom } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class AppConfigService {
8
+ constructor(http) {
9
+ this.http = http;
10
+ this.config$ = new BehaviorSubject({});
11
+ }
12
+ init(baseUrl) {
13
+ return new Promise((resolve, reject) => {
14
+ const loadConfigPromise = firstValueFrom(this.http.get(Location.joinWithSlash(baseUrl, 'assets/env.json')));
15
+ loadConfigPromise
16
+ .then(async (config) => {
17
+ if (config) {
18
+ this.config$.next(config);
19
+ resolve();
20
+ }
21
+ })
22
+ .catch((e) => {
23
+ console.log(`Failed to load env configuration`);
24
+ reject(e);
25
+ });
26
+ });
27
+ }
28
+ getProperty(key) {
29
+ return this.config$.getValue()?.[key];
30
+ }
31
+ setProperty(key, val) {
32
+ this.config$.next({ ...this.config$.value, [key]: val });
33
+ }
34
+ getConfig() {
35
+ return this.config$.getValue();
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AppConfigService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AppConfigService }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: AppConfigService, decorators: [{
41
+ type: Injectable
42
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvc2VydmljZXMvYXBwLWNvbmZpZy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7O0FBR3RELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUZwQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQTRCLEVBQUUsQ0FBQyxDQUFBO0lBRXJCLENBQUM7SUFFakMsSUFBSSxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLGlCQUFpQixHQUFvQixjQUFjLENBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FDMUUsQ0FBQTtZQUVELGlCQUFpQjtpQkFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNyQixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUN6QixPQUFPLEVBQUUsQ0FBQTtnQkFDWCxDQUFDO1lBQ0gsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtnQkFDL0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ1gsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxXQUFXLENBQUMsR0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDaEMsQ0FBQzs4R0FuQ1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnQG9uZWN4L2ludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXBwQ29uZmlnU2VydmljZSB7XG4gIGNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+KHt9KVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBwdWJsaWMgaW5pdChiYXNlVXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgbG9hZENvbmZpZ1Byb21pc2U6IFByb21pc2U8Q29uZmlnPiA9IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmh0dHAuZ2V0PENvbmZpZz4oTG9jYXRpb24uam9pbldpdGhTbGFzaChiYXNlVXJsLCAnYXNzZXRzL2Vudi5qc29uJykpXG4gICAgICApXG5cbiAgICAgIGxvYWRDb25maWdQcm9taXNlXG4gICAgICAgIC50aGVuKGFzeW5jIChjb25maWcpID0+IHtcbiAgICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZyQubmV4dChjb25maWcpXG4gICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gbG9hZCBlbnYgY29uZmlndXJhdGlvbmApXG4gICAgICAgICAgcmVqZWN0KGUpXG4gICAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcm9wZXJ0eShrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnJC5nZXRWYWx1ZSgpPy5ba2V5XVxuICB9XG5cbiAgcHVibGljIHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWw6IHN0cmluZykge1xuICAgIHRoaXMuY29uZmlnJC5uZXh0KHsgLi4udGhpcy5jb25maWckLnZhbHVlLCBba2V5XTogdmFsIH0pXG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyQuZ2V0VmFsdWUoKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,113 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
4
+ import { TranslateService } from '@ngx-translate/core';
5
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
6
+ import { BehaviorSubject, filter } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ import * as i2 from "@ngx-translate/core";
10
+ let BreadcrumbService = class BreadcrumbService {
11
+ constructor(router, activeRoute, translateService) {
12
+ this.router = router;
13
+ this.activeRoute = activeRoute;
14
+ this.translateService = translateService;
15
+ this.itemsSource = new BehaviorSubject([]);
16
+ this.generatedItemsSource = new BehaviorSubject([]);
17
+ this.itemsHandler = this.itemsSource.asObservable();
18
+ this.generateBreadcrumbs(this.activeRoute.snapshot);
19
+ this.router.events
20
+ .pipe(untilDestroyed(this), filter((e) => e instanceof NavigationEnd))
21
+ .subscribe(() => {
22
+ const root = this.router.routerState.snapshot.root;
23
+ this.generateBreadcrumbs(root);
24
+ });
25
+ }
26
+ generateBreadcrumbs(route) {
27
+ if (route?.data['mfeInfo']) {
28
+ const breadcrumbs = [
29
+ {
30
+ label: route.data['mfeInfo'].productName,
31
+ routerLink: route.data['mfeInfo'].baseHref,
32
+ },
33
+ ];
34
+ const baseUrl = route.data['mfeInfo'].baseHref.split('/').filter((value) => value);
35
+ const parentUrl = route.url.map((url) => url.path);
36
+ const isUsingMatcher = !parentUrl.every((item) => baseUrl.includes(item));
37
+ if (isUsingMatcher) {
38
+ this.createBreadcrumb(route, parentUrl, breadcrumbs);
39
+ }
40
+ this.addBreadcrumb(route.firstChild, parentUrl, breadcrumbs);
41
+ this.generatedItemsSource.next(breadcrumbs);
42
+ }
43
+ else if (route?.data['breadcrumb']) {
44
+ const breadcrumbs = [];
45
+ this.addBreadcrumb(route, [], breadcrumbs);
46
+ this.generatedItemsSource.next(breadcrumbs);
47
+ }
48
+ else if (route) {
49
+ this.generateBreadcrumbs(route.firstChild);
50
+ }
51
+ }
52
+ addBreadcrumb(route, parentUrl, breadcrumbs) {
53
+ if (route && route.url) {
54
+ const routeUrl = parentUrl.concat(route.url.map((url) => url.path));
55
+ if (route.routeConfig?.path) {
56
+ this.createBreadcrumb(route, routeUrl, breadcrumbs);
57
+ }
58
+ this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
59
+ }
60
+ }
61
+ createBreadcrumb(route, routeUrl, breadcrumbs) {
62
+ if (route.data['breadcrumb']) {
63
+ const breadcrumb = {
64
+ label: this.getLabel(route.data, route.paramMap),
65
+ routerLink: '/' + routeUrl.join('/'),
66
+ };
67
+ breadcrumbs.push(breadcrumb);
68
+ }
69
+ else {
70
+ const breadcrumb = {
71
+ label: 'NA',
72
+ routerLink: '/' + routeUrl.join('/'),
73
+ };
74
+ breadcrumbs.push(breadcrumb);
75
+ }
76
+ }
77
+ getLabel(data, params) {
78
+ if (typeof data['breadcrumbFn'] === 'function') {
79
+ return data['breadcrumbFn'](data, params);
80
+ }
81
+ return data['breadcrumb'];
82
+ }
83
+ setItems(items) {
84
+ const translationKeys = [
85
+ ...items.map((i) => i.labelKey || '').filter((l) => !!l),
86
+ ...items.map((i) => i.titleKey || '').filter((l) => !!l),
87
+ ];
88
+ if (translationKeys.length) {
89
+ this.translateService.get(translationKeys).subscribe((translations) => {
90
+ this.itemsSource.next(items.map((i) => ({
91
+ ...i,
92
+ label: translations[i.labelKey || ''] || i.label,
93
+ title: translations[i.titleKey || ''] || i.title,
94
+ })));
95
+ });
96
+ }
97
+ else {
98
+ this.itemsSource.next(items);
99
+ }
100
+ }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BreadcrumbService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
102
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BreadcrumbService, providedIn: 'any' }); }
103
+ };
104
+ BreadcrumbService = __decorate([
105
+ UntilDestroy(),
106
+ __metadata("design:paramtypes", [Router, ActivatedRoute, TranslateService])
107
+ ], BreadcrumbService);
108
+ export { BreadcrumbService };
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BreadcrumbService, decorators: [{
110
+ type: Injectable,
111
+ args: [{ providedIn: 'any' }]
112
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }] });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvc2VydmljZXMvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQWdDLGFBQWEsRUFBWSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7O0FBTXZDLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBTTVCLFlBQW9CLE1BQWMsRUFBVSxXQUEyQixFQUFVLGdCQUFrQztRQUEvRixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUwzRyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBQ3pELHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBRTFELGlCQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUc1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDZixJQUFJLENBQ0gsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVB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QyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RCxDQUFBO1FBQ0QsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNuQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQixHQUFHLENBQUM7b0JBQ0osS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO29CQUNoRCxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7aUJBQ2pELENBQUMsQ0FBQyxDQUNKLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsQ0FBQztJQUNILENBQUM7OEdBaEdVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRkosS0FBSzs7QUFFbEIsaUJBQWlCO0lBRDdCLFlBQVksRUFBRTtxQ0FPZSxNQUFNLEVBQXVCLGNBQWMsRUFBNEIsZ0JBQWdCO0dBTnhHLGlCQUFpQixDQWlHN0I7OzJGQWpHWSxpQkFBaUI7a0JBRjdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1NYXAsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBCcmVhZENydW1iTWVudUl0ZW0gfSBmcm9tICcuLi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbCdcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuQFVudGlsRGVzdHJveSgpXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYlNlcnZpY2Uge1xuICBwcml2YXRlIGl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSlcbiAgZ2VuZXJhdGVkSXRlbXNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+KFtdKVxuXG4gIGl0ZW1zSGFuZGxlciA9IHRoaXMuaXRlbXNTb3VyY2UuYXNPYnNlcnZhYmxlKClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGFjdGl2ZVJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QpXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcyksXG4gICAgICAgIGZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3RcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvb3QpXG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCkge1xuICAgIGlmIChyb3V0ZT8uZGF0YVsnbWZlSW5mbyddKSB7XG4gICAgICBjb25zdCBicmVhZGNydW1iczogTWVudUl0ZW1bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiByb3V0ZS5kYXRhWydtZmVJbmZvJ10ucHJvZHVjdE5hbWUsXG4gICAgICAgICAgcm91dGVyTGluazogcm91dGUuZGF0YVsnbWZlSW5mbyddLmJhc2VIcmVmLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgY29uc3QgYmFzZVVybDogc3RyaW5nW10gPSAocm91dGUuZGF0YVsnbWZlSW5mbyddLmJhc2VIcmVmIGFzIHN0cmluZykuc3BsaXQoJy8nKS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSlcbiAgICAgIGNvbnN0IHBhcmVudFVybDogc3RyaW5nW10gPSByb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKVxuICAgICAgY29uc3QgaXNVc2luZ01hdGNoZXIgPSAhcGFyZW50VXJsLmV2ZXJ5KChpdGVtKSA9PiBiYXNlVXJsLmluY2x1ZGVzKGl0ZW0pKVxuICAgICAgaWYgKGlzVXNpbmdNYXRjaGVyKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZSwgcGFyZW50VXJsLCBicmVhZGNydW1icylcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCBwYXJlbnRVcmwsIGJyZWFkY3J1bWJzKVxuICAgICAgdGhpcy5nZW5lcmF0ZWRJdGVtc1NvdXJjZS5uZXh0KGJyZWFkY3J1bWJzKVxuICAgIH0gZWxzZSBpZiAocm91dGU/LmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXVxuICAgICAgdGhpcy5hZGRCcmVhZGNydW1iKHJvdXRlLCBbXSwgYnJlYWRjcnVtYnMpXG4gICAgICB0aGlzLmdlbmVyYXRlZEl0ZW1zU291cmNlLm5leHQoYnJlYWRjcnVtYnMpXG4gICAgfSBlbHNlIGlmIChyb3V0ZSkge1xuICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlLmZpcnN0Q2hpbGQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCwgcGFyZW50VXJsOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10pIHtcbiAgICBpZiAocm91dGUgJiYgcm91dGUudXJsKSB7XG4gICAgICBjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCgodXJsKSA9PiB1cmwucGF0aCkpXG4gICAgICBpZiAocm91dGUucm91dGVDb25maWc/LnBhdGgpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlLCByb3V0ZVVybCwgYnJlYWRjcnVtYnMpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCByb3V0ZVVybCwgYnJlYWRjcnVtYnMpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByb3V0ZVVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBNZW51SXRlbVtdKSB7XG4gICAgaWYgKHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYjogTWVudUl0ZW0gPSB7XG4gICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsKHJvdXRlLmRhdGEsIHJvdXRlLnBhcmFtTWFwKSxcbiAgICAgICAgcm91dGVyTGluazogJy8nICsgcm91dGVVcmwuam9pbignLycpLFxuICAgICAgfVxuICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBicmVhZGNydW1iOiBNZW51SXRlbSA9IHtcbiAgICAgICAgbGFiZWw6ICdOQScsXG4gICAgICAgIHJvdXRlckxpbms6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKSxcbiAgICAgIH1cbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYilcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsKGRhdGE6IERhdGEsIHBhcmFtczogUGFyYW1NYXApIHtcbiAgICBpZiAodHlwZW9mIGRhdGFbJ2JyZWFkY3J1bWJGbiddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gZGF0YVsnYnJlYWRjcnVtYkZuJ10oZGF0YSwgcGFyYW1zKVxuICAgIH1cbiAgICByZXR1cm4gZGF0YVsnYnJlYWRjcnVtYiddXG4gIH1cblxuICBzZXRJdGVtcyhpdGVtczogQnJlYWRDcnVtYk1lbnVJdGVtW10pIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleXMgPSBbXG4gICAgICAuLi5pdGVtcy5tYXAoKGkpID0+IGkubGFiZWxLZXkgfHwgJycpLmZpbHRlcigobCkgPT4gISFsKSxcbiAgICAgIC4uLml0ZW1zLm1hcCgoaSkgPT4gaS50aXRsZUtleSB8fCAnJykuZmlsdGVyKChsKSA9PiAhIWwpLFxuICAgIF1cbiAgICBpZiAodHJhbnNsYXRpb25LZXlzLmxlbmd0aCkge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0cmFuc2xhdGlvbktleXMpLnN1YnNjcmliZSgodHJhbnNsYXRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtc1NvdXJjZS5uZXh0KFxuICAgICAgICAgIGl0ZW1zLm1hcCgoaSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmksXG4gICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW2kubGFiZWxLZXkgfHwgJyddIHx8IGkubGFiZWwsXG4gICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRpb25zW2kudGl0bGVLZXkgfHwgJyddIHx8IGkudGl0bGUsXG4gICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXNTb3VyY2UubmV4dChpdGVtcylcbiAgICB9XG4gIH1cbn1cbiJdfQ==