ngx-cho-common 0.0.4 → 1.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 (121) hide show
  1. package/esm2022/lib/directives/cho-auto-focus.directive.mjs +21 -0
  2. package/esm2022/lib/directives/cho-form-focus.directive.mjs +40 -0
  3. package/esm2022/lib/directives/cho-key-press-enter.directive.mjs +28 -0
  4. package/esm2022/lib/directives/cho-key-press-escape.directive.mjs +28 -0
  5. package/esm2022/lib/guards/cho-feature.guard.mjs +32 -0
  6. package/esm2022/lib/guards/cho-unsaved-changes.guard.mjs +13 -0
  7. package/esm2022/lib/models/address.model.mjs +2 -0
  8. package/esm2022/lib/models/app-file.model.mjs +2 -0
  9. package/esm2022/lib/models/basic-search-filter.model.mjs +2 -0
  10. package/esm2022/lib/models/contact-info.model.mjs +2 -0
  11. package/esm2022/lib/models/email-info.model.mjs +2 -0
  12. package/esm2022/lib/models/note-info.model.mjs +2 -0
  13. package/esm2022/lib/models/note.model.mjs +2 -0
  14. package/esm2022/lib/models/phone-info.model.mjs +2 -0
  15. package/esm2022/lib/pipes/cho-active-filter.pipe.mjs +27 -0
  16. package/esm2022/lib/pipes/cho-boolean.pipe.mjs +17 -0
  17. package/esm2022/lib/pipes/cho-date.pipe.mjs +29 -0
  18. package/esm2022/lib/pipes/cho-filter.pipe.mjs +20 -0
  19. package/esm2022/lib/pipes/cho-format-key.pipe.mjs +23 -0
  20. package/esm2022/lib/pipes/cho-lower-kebab-case.pipe.mjs +21 -0
  21. package/esm2022/lib/pipes/cho-sum-by.pipe.mjs +17 -0
  22. package/esm2022/lib/pipes/cho-text-filter.pipe.mjs +30 -0
  23. package/esm2022/lib/services/cho-date.service.mjs +40 -0
  24. package/esm2022/lib/services/cho-download.service.mjs +49 -0
  25. package/esm2022/lib/services/cho-feature.service.mjs +67 -0
  26. package/esm2022/lib/services/cho-interval.service.mjs +115 -0
  27. package/esm2022/lib/services/cho-local-storage.service.mjs +29 -0
  28. package/esm2022/lib/services/cho-modal.service.mjs +34 -0
  29. package/esm2022/lib/services/cho-navigation.service.mjs +45 -0
  30. package/esm2022/lib/services/cho-object.service.mjs +33 -0
  31. package/esm2022/lib/services/cho-rest-client.service.mjs +136 -0
  32. package/esm2022/lib/services/cho-route-param.service.mjs +53 -0
  33. package/esm2022/lib/services/cho-session-storage.service.mjs +29 -0
  34. package/esm2022/public-api.mjs +26 -28
  35. package/fesm2022/ngx-cho-common.mjs +575 -807
  36. package/fesm2022/ngx-cho-common.mjs.map +1 -1
  37. package/lib/directives/cho-auto-focus.directive.d.ts +9 -0
  38. package/lib/directives/cho-form-focus.directive.d.ts +11 -0
  39. package/lib/directives/cho-key-press-enter.directive.d.ts +8 -0
  40. package/lib/directives/cho-key-press-escape.directive.d.ts +8 -0
  41. package/lib/guards/cho-feature.guard.d.ts +14 -0
  42. package/lib/guards/{unsaved-changes.guard.d.ts → cho-unsaved-changes.guard.d.ts} +3 -3
  43. package/lib/models/address.model.d.ts +9 -0
  44. package/lib/models/app-file.model.d.ts +8 -0
  45. package/lib/models/basic-search-filter.model.d.ts +4 -0
  46. package/lib/models/contact-info.model.d.ts +5 -0
  47. package/lib/models/email-info.model.d.ts +6 -0
  48. package/lib/models/note-info.model.d.ts +4 -0
  49. package/lib/models/note.model.d.ts +6 -0
  50. package/lib/models/phone-info.model.d.ts +6 -0
  51. package/lib/pipes/cho-active-filter.pipe.d.ts +7 -0
  52. package/lib/pipes/cho-boolean.pipe.d.ts +7 -0
  53. package/lib/pipes/cho-date.pipe.d.ts +10 -0
  54. package/lib/pipes/cho-filter.pipe.d.ts +7 -0
  55. package/lib/pipes/cho-format-key.pipe.d.ts +7 -0
  56. package/lib/pipes/cho-lower-kebab-case.pipe.d.ts +7 -0
  57. package/lib/pipes/cho-sum-by.pipe.d.ts +7 -0
  58. package/lib/pipes/cho-text-filter.pipe.d.ts +7 -0
  59. package/lib/services/{date.service.d.ts → cho-date.service.d.ts} +3 -3
  60. package/lib/services/{download.service.d.ts → cho-download.service.d.ts} +3 -3
  61. package/lib/services/{feature.service.d.ts → cho-feature.service.d.ts} +5 -5
  62. package/lib/services/{interval.service.d.ts → cho-interval.service.d.ts} +3 -3
  63. package/lib/services/{session-storage.service.d.ts → cho-local-storage.service.d.ts} +3 -3
  64. package/lib/services/{modal.service.d.ts → cho-modal.service.d.ts} +3 -3
  65. package/lib/services/{navigation.service.d.ts → cho-navigation.service.d.ts} +3 -3
  66. package/lib/services/{object.service.d.ts → cho-object.service.d.ts} +3 -3
  67. package/lib/services/{rest-client.service.d.ts → cho-rest-client.service.d.ts} +3 -3
  68. package/lib/services/{route-param.service.d.ts → cho-route-param.service.d.ts} +3 -3
  69. package/lib/services/{local-storage.service.d.ts → cho-session-storage.service.d.ts} +3 -3
  70. package/package.json +2 -3
  71. package/public-api.d.ts +33 -30
  72. package/esm2022/lib/guards/feature-guard.service.mjs +0 -32
  73. package/esm2022/lib/guards/unsaved-changes.guard.mjs +0 -13
  74. package/esm2022/lib/logging/console-logger.sink.mjs +0 -27
  75. package/esm2022/lib/logging/logger-sink-configuration.interface.mjs +0 -2
  76. package/esm2022/lib/logging/logger-sink.interface.mjs +0 -2
  77. package/esm2022/lib/logging/logger.model.mjs +0 -3
  78. package/esm2022/lib/logging/logger.service.mjs +0 -127
  79. package/esm2022/lib/logging/models/client-log-entry.interface.mjs +0 -2
  80. package/esm2022/lib/logging/models/severity-level.enum.mjs +0 -9
  81. package/esm2022/lib/logging/server-logger.sink.mjs +0 -51
  82. package/esm2022/lib/security/auth-callback/auth-callback.component.mjs +0 -18
  83. package/esm2022/lib/security/cho-security.config.mjs +0 -3
  84. package/esm2022/lib/security/models/auth-user.model.mjs +0 -84
  85. package/esm2022/lib/security/models/authorization-context.model.mjs +0 -6
  86. package/esm2022/lib/security/models/security-policy.model.mjs +0 -15
  87. package/esm2022/lib/security/services/auth-guard.service.mjs +0 -32
  88. package/esm2022/lib/security/services/auth.service.mjs +0 -129
  89. package/esm2022/lib/security/signin/signin.component.mjs +0 -18
  90. package/esm2022/lib/security/signout/signout.component.mjs +0 -18
  91. package/esm2022/lib/services/date.service.mjs +0 -40
  92. package/esm2022/lib/services/download.service.mjs +0 -49
  93. package/esm2022/lib/services/feature.service.mjs +0 -67
  94. package/esm2022/lib/services/interval.service.mjs +0 -115
  95. package/esm2022/lib/services/local-storage.service.mjs +0 -29
  96. package/esm2022/lib/services/modal.service.mjs +0 -34
  97. package/esm2022/lib/services/navigation.service.mjs +0 -45
  98. package/esm2022/lib/services/object.service.mjs +0 -33
  99. package/esm2022/lib/services/rest-client.service.mjs +0 -136
  100. package/esm2022/lib/services/route-param.service.mjs +0 -53
  101. package/esm2022/lib/services/session-storage.service.mjs +0 -29
  102. package/esm2022/lib/types/indexable.type.mjs +0 -2
  103. package/lib/guards/feature-guard.service.d.ts +0 -14
  104. package/lib/logging/console-logger.sink.d.ts +0 -10
  105. package/lib/logging/logger-sink-configuration.interface.d.ts +0 -14
  106. package/lib/logging/logger-sink.interface.d.ts +0 -7
  107. package/lib/logging/logger.model.d.ts +0 -10
  108. package/lib/logging/logger.service.d.ts +0 -29
  109. package/lib/logging/models/client-log-entry.interface.d.ts +0 -10
  110. package/lib/logging/models/severity-level.enum.d.ts +0 -7
  111. package/lib/logging/server-logger.sink.d.ts +0 -27
  112. package/lib/security/auth-callback/auth-callback.component.d.ts +0 -10
  113. package/lib/security/cho-security.config.d.ts +0 -8
  114. package/lib/security/models/auth-user.model.d.ts +0 -57
  115. package/lib/security/models/authorization-context.model.d.ts +0 -5
  116. package/lib/security/models/security-policy.model.d.ts +0 -9
  117. package/lib/security/services/auth-guard.service.d.ts +0 -12
  118. package/lib/security/services/auth.service.d.ts +0 -60
  119. package/lib/security/signin/signin.component.d.ts +0 -10
  120. package/lib/security/signout/signout.component.d.ts +0 -10
  121. package/lib/types/indexable.type.d.ts +0 -6
@@ -0,0 +1,21 @@
1
+ // from https://stackblitz.com/edit/angular-inline-edit?file=src%2Fapp%2Fautofocus.directive.ts
2
+ import { Directive } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class ChoAutoFocusDirective {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ }
8
+ ngOnInit() {
9
+ this.elementRef.nativeElement.focus();
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoAutoFocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
12
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ChoAutoFocusDirective, isStandalone: true, selector: "[appChoAutoFocus]", ngImport: i0 }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoAutoFocusDirective, decorators: [{
15
+ type: Directive,
16
+ args: [{
17
+ selector: '[appChoAutoFocus]',
18
+ standalone: true,
19
+ }]
20
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWF1dG8tZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2Noby1hdXRvLWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrRkFBK0Y7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7O0FBTTlELE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFOUMsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7K0dBTFEscUJBQXFCO21HQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZnJvbSBodHRwczovL3N0YWNrYmxpdHouY29tL2VkaXQvYW5ndWxhci1pbmxpbmUtZWRpdD9maWxlPXNyYyUyRmFwcCUyRmF1dG9mb2N1cy5kaXJlY3RpdmUudHNcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2FwcENob0F1dG9Gb2N1c10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob0F1dG9Gb2N1c0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,40 @@
1
+ // from https://timdeschryver.dev/blog/auto-focus-a-form-control-with-an-angular-directive
2
+ import { Directive, HostListener } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class ChoFormFocusDirective {
5
+ constructor(element) {
6
+ this.element = element;
7
+ this.focusables = ['input', 'select', 'textarea'];
8
+ }
9
+ ngAfterViewInit() {
10
+ const input = this.element.nativeElement.querySelector(this.focusables.join(','));
11
+ if (input) {
12
+ input.focus();
13
+ return;
14
+ }
15
+ // focus on first available button if no other focusable element
16
+ const button = this.element.nativeElement.querySelector('button');
17
+ if (button) {
18
+ button.focus();
19
+ }
20
+ }
21
+ submit() {
22
+ const input = this.element.nativeElement.querySelector(this.focusables.map(x => `${x}.ng-invalid`).join(','));
23
+ if (input) {
24
+ input.focus();
25
+ }
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFormFocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ChoFormFocusDirective, isStandalone: true, selector: "[appChoFormFocus]", host: { listeners: { "submit": "submit()" } }, ngImport: i0 }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFormFocusDirective, decorators: [{
31
+ type: Directive,
32
+ args: [{
33
+ selector: '[appChoFormFocus]',
34
+ standalone: true,
35
+ }]
36
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { submit: [{
37
+ type: HostListener,
38
+ args: ['submit']
39
+ }] } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWZvcm0tZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2Noby1mb3JtLWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRkFBMEY7QUFDMUYsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1uRixNQUFNLE9BQU8scUJBQXFCO0lBRzlCLFlBQW9CLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFGdkMsZUFBVSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVILENBQUM7SUFFM0MsZUFBZTtRQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxGLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1gsQ0FBQztRQUVELGdFQUFnRTtRQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQUdELE1BQU07UUFDRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDeEQsQ0FBQztRQUNGLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7K0dBNUJRLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFzQkcsTUFBTTtzQkFETCxZQUFZO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmcm9tIGh0dHBzOi8vdGltZGVzY2hyeXZlci5kZXYvYmxvZy9hdXRvLWZvY3VzLWEtZm9ybS1jb250cm9sLXdpdGgtYW4tYW5ndWxhci1kaXJlY3RpdmVcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2FwcENob0Zvcm1Gb2N1c10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob0Zvcm1Gb2N1c0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIGZvY3VzYWJsZXMgPSBbJ2lucHV0JywgJ3NlbGVjdCcsICd0ZXh0YXJlYSddO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5mb2N1c2FibGVzLmpvaW4oJywnKSk7XG5cbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9jdXMgb24gZmlyc3QgYXZhaWxhYmxlIGJ1dHRvbiBpZiBubyBvdGhlciBmb2N1c2FibGUgZWxlbWVudFxuICAgICAgICBjb25zdCBidXR0b24gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTtcbiAgICAgICAgaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgYnV0dG9uLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdzdWJtaXQnKVxuICAgIHN1Ym1pdCgpIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGVzLm1hcCh4ID0+IGAke3h9Lm5nLWludmFsaWRgKS5qb2luKCcsJylcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { Directive, HostListener, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoKeyPressEnterDirective {
4
+ constructor() {
5
+ this.emitter = new EventEmitter();
6
+ }
7
+ keyEvent(event) {
8
+ if (event.key === 'Enter') {
9
+ this.emitter.emit();
10
+ }
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoKeyPressEnterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ChoKeyPressEnterDirective, isStandalone: true, selector: "[appChoKeyPressEnter]", outputs: { emitter: "appKeyPressEnter" }, host: { listeners: { "window:keypress": "keyEvent($event)" } }, ngImport: i0 }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoKeyPressEnterDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ selector: '[appChoKeyPressEnter]',
19
+ standalone: true,
20
+ }]
21
+ }], propDecorators: { emitter: [{
22
+ type: Output,
23
+ args: ['appKeyPressEnter']
24
+ }], keyEvent: [{
25
+ type: HostListener,
26
+ args: ['window:keypress', ['$event']]
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWtleS1wcmVzcy1lbnRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvY2hvLWtleS1wcmVzcy1lbnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNOUUsTUFBTSxPQUFPLHlCQUF5QjtJQUp0QztRQUtnQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQVE1RDtJQUxHLFFBQVEsQ0FBQyxLQUFvQjtRQUN6QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQzsrR0FSUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBRStCLE9BQU87c0JBQWxDLE1BQU07dUJBQUMsa0JBQWtCO2dCQUcxQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYXBwQ2hvS2V5UHJlc3NFbnRlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob0tleVByZXNzRW50ZXJEaXJlY3RpdmUge1xuICAgIEBPdXRwdXQoJ2FwcEtleVByZXNzRW50ZXInKSBlbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXByZXNzJywgWyckZXZlbnQnXSlcbiAgICBrZXlFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLmVtaXR0ZXIuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoKeyPressEscapeDirective {
4
+ constructor() {
5
+ this.emitter = new EventEmitter();
6
+ }
7
+ keyEvent(event) {
8
+ if (event.key === 'Escape') {
9
+ this.emitter.emit();
10
+ }
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoKeyPressEscapeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ChoKeyPressEscapeDirective, isStandalone: true, selector: "[appChoKeyPressEscape]", outputs: { emitter: "appKeyPressEscape" }, host: { listeners: { "window:keydown": "keyEvent($event)" } }, ngImport: i0 }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoKeyPressEscapeDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ selector: '[appChoKeyPressEscape]',
19
+ standalone: true,
20
+ }]
21
+ }], propDecorators: { emitter: [{
22
+ type: Output,
23
+ args: ['appKeyPressEscape']
24
+ }], keyEvent: [{
25
+ type: HostListener,
26
+ args: ['window:keydown', ['$event']]
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWtleS1wcmVzcy1lc2NhcGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2Noby1rZXktcHJlc3MtZXNjYXBlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU05RSxNQUFNLE9BQU8sMEJBQTBCO0lBSnZDO1FBS2lDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBUTdEO0lBTEcsUUFBUSxDQUFDLEtBQW9CO1FBQ3pCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUM7SUFDTCxDQUFDOytHQVJRLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFFZ0MsT0FBTztzQkFBbkMsTUFBTTt1QkFBQyxtQkFBbUI7Z0JBRzNCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1thcHBDaG9LZXlQcmVzc0VzY2FwZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob0tleVByZXNzRXNjYXBlRGlyZWN0aXZlIHtcbiAgICBAT3V0cHV0KCdhcHBLZXlQcmVzc0VzY2FwZScpIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdHRlci5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../services/cho-feature.service";
4
+ import * as i2 from "../services/cho-navigation.service";
5
+ import * as i3 from "ngx-toastr";
6
+ export class ChoFeatureGuard {
7
+ constructor(featureService, navigationService, toastr) {
8
+ this.featureService = featureService;
9
+ this.navigationService = navigationService;
10
+ this.toastr = toastr;
11
+ }
12
+ async canActivate(route) {
13
+ const routeFeature = route.data['feature'];
14
+ if (!routeFeature) {
15
+ return true;
16
+ }
17
+ await this.featureService.checkEnabledFeatures();
18
+ if (!this.featureService.checkFeatureIsEnabled(routeFeature)) {
19
+ this.toastr.error("Oops! It doesn't look like this feature has been enabled.");
20
+ this.navigationService.goBack();
21
+ return false;
22
+ }
23
+ return true;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, deps: [{ token: i1.ChoFeatureService }, { token: i2.ChoNavigationService }, { token: i3.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, providedIn: 'root' }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, decorators: [{
29
+ type: Injectable,
30
+ args: [{ providedIn: 'root' }]
31
+ }], ctorParameters: () => [{ type: i1.ChoFeatureService }, { type: i2.ChoNavigationService }, { type: i3.ToastrService }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWZlYXR1cmUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL2d1YXJkcy9jaG8tZmVhdHVyZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVEzQyxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUNxQixjQUFpQyxFQUNqQyxpQkFBdUMsRUFDdkMsTUFBcUI7UUFGckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUN2QyxDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUE2QjtRQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBVyxDQUFDO1FBRXJELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1lBRS9FLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVoQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0F6QlEsZUFBZTttSEFBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IENob0ZlYXR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2hvLWZlYXR1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBDaG9OYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Noby1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENob0ZlYXR1cmVHdWFyZCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZVNlcnZpY2U6IENob0ZlYXR1cmVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25TZXJ2aWNlOiBDaG9OYXZpZ2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdHI6IFRvYXN0clNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3Qgcm91dGVGZWF0dXJlID0gcm91dGUuZGF0YVsnZmVhdHVyZSddIGFzIHN0cmluZztcblxuICAgICAgICBpZiAoIXJvdXRlRmVhdHVyZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLmZlYXR1cmVTZXJ2aWNlLmNoZWNrRW5hYmxlZEZlYXR1cmVzKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZlYXR1cmVTZXJ2aWNlLmNoZWNrRmVhdHVyZUlzRW5hYmxlZChyb3V0ZUZlYXR1cmUpKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIk9vcHMhIEl0IGRvZXNuJ3QgbG9vayBsaWtlIHRoaXMgZmVhdHVyZSBoYXMgYmVlbiBlbmFibGVkLlwiKTtcblxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nb0JhY2soKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoUnsavedChangesGuard {
4
+ canDeactivate(component) {
5
+ return component.onDeactivate ? component.onDeactivate() : true;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoUnsavedChangesGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoUnsavedChangesGuard }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoUnsavedChangesGuard, decorators: [{
11
+ type: Injectable
12
+ }] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLXVuc2F2ZWQtY2hhbmdlcy5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvZ3VhcmRzL2Noby11bnNhdmVkLWNoYW5nZXMuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLHNCQUFzQjtJQUkvQixhQUFhLENBQUMsU0FBeUI7UUFDbkMsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRSxDQUFDOytHQU5RLHNCQUFzQjttSEFBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJRGVhY3RpdmF0YWJsZSB9IGZyb20gJy4uL21vZGVscy9kZWFjdGl2YXRhYmxlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaG9VbnNhdmVkQ2hhbmdlc0d1YXJkIHtcbiAgICBjb21wb25lbnQ6IElEZWFjdGl2YXRhYmxlIHwgdW5kZWZpbmVkO1xuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgdW5kZWZpbmVkO1xuXG4gICAgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IElEZWFjdGl2YXRhYmxlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5vbkRlYWN0aXZhdGUgPyBjb21wb25lbnQub25EZWFjdGl2YXRlKCkgOiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbW9kZWxzL2FkZHJlc3MubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUFkZHJlc3Mge1xuICAgIGFkZHJlc3NJZDogbnVtYmVyO1xuICAgIGFkZHJlc3NMaW5lMTogc3RyaW5nO1xuICAgIGFkZHJlc3NMaW5lMjogc3RyaW5nO1xuICAgIGNpdHk6IHN0cmluZztcbiAgICBzdGF0ZVByb3ZpbmNlQ29kZTogc3RyaW5nO1xuICAgIHBvc3RhbENvZGU6IHN0cmluZztcbiAgICBjb3VudHJ5UmVnaW9uQ29kZTogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZpbGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL21vZGVscy9hcHAtZmlsZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBcHBGaWxlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHJvd0d1aWQ6IHN0cmluZztcbiAgICBjcmVhdGVkRGF0ZVRpbWU6IHN0cmluZztcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIGZpbGVFeHRlbnNpb246IHN0cmluZztcbiAgICBjYXB0aW9uOiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtc2VhcmNoLWZpbHRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbW9kZWxzL2Jhc2ljLXNlYXJjaC1maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQmFzaWNTZWFyY2hGaWx0ZXIge1xuICAgIHNob3dJbmFjdGl2ZTogYm9vbGVhbjtcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9tb2RlbHMvY29udGFjdC1pbmZvLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElDb250YWN0SW5mbyB7XG4gICAgY29udGFjdElkPzogbnVtYmVyO1xuICAgIGNvbnRhY3RUeXBlQ29kZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtaW5mby5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbW9kZWxzL2VtYWlsLWluZm8ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUVtYWlsSW5mbyB7XG4gICAgZW1haWxUeXBlSWQ/OiBudW1iZXI7XG4gICAgZW1haWxUeXBlQ29kZT86IHN0cmluZztcbiAgICBlbWFpbEFkZHJlc3M/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9tb2RlbHMvbm90ZS1pbmZvLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOb3RlSW5mbyB7XG4gICAgbm90ZVRleHQ6IHN0cmluZztcbiAgICBjcmVhdGVkRGF0ZVRpbWU6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbW9kZWxzL25vdGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSU5vdGUge1xuICAgIG5vdGVUZXh0OiBzdHJpbmc7XG4gICAgbm90ZVR5cGU6IHN0cmluZztcbiAgICBjcmVhdGVkRGF0ZVRpbWU6IHN0cmluZztcbiAgICBjcmVhdGVkQnk6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5mby5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbW9kZWxzL3Bob25lLWluZm8ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVBob25lSW5mbyB7XG4gICAgcGhvbmVUeXBlSWQ/OiBudW1iZXI7XG4gICAgcGhvbmVUeXBlQ29kZT86IHN0cmluZztcbiAgICBwaG9uZU51bWJlcj86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Pipe } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class ChoActiveFilterPipe {
5
+ transform(value, property) {
6
+ if (value?.length === 0) {
7
+ return value;
8
+ }
9
+ const filteredItems = [];
10
+ for (const item of value) {
11
+ if (item[property || 'isActive']) {
12
+ filteredItems.push(item);
13
+ }
14
+ }
15
+ return filteredItems;
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoActiveFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
18
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoActiveFilterPipe, isStandalone: true, name: "choActiveFilter" }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoActiveFilterPipe, decorators: [{
21
+ type: Pipe,
22
+ args: [{
23
+ name: 'choActiveFilter',
24
+ standalone: true,
25
+ }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWFjdGl2ZS1maWx0ZXIucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvcGlwZXMvY2hvLWFjdGl2ZS1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxtQkFBbUI7SUFDNUIsU0FBUyxDQUFDLEtBQVksRUFBRSxRQUFpQjtRQUNyQyxJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUVoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUMvQixhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQzsrR0FmUSxtQkFBbUI7NkdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsaUJBQWlCO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnY2hvQWN0aXZlRmlsdGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDaG9BY3RpdmVGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnlbXSwgcHJvcGVydHk/OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGl0ZW1bcHJvcGVydHkgfHwgJ2lzQWN0aXZlJ10pIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWRJdGVtcztcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoBooleanPipe {
4
+ transform(value) {
5
+ return value ? 'Yes' : 'No';
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoBooleanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoBooleanPipe, isStandalone: true, name: "choBoolean" }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoBooleanPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'choBoolean',
14
+ standalone: true,
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWJvb2xlYW4ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvcGlwZXMvY2hvLWJvb2xlYW4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGNBQWM7SUFDdkIsU0FBUyxDQUFDLEtBQWM7UUFDcEIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7K0dBSFEsY0FBYzs2R0FBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxZQUFZO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnY2hvQm9vbGVhbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvQm9vbGVhblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID8gJ1llcycgOiAnTm8nO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ChoDatePipe {
5
+ constructor(datePipe) {
6
+ this.datePipe = datePipe;
7
+ }
8
+ transform(value, format, timezone, locale) {
9
+ switch (format) {
10
+ case 'short':
11
+ format = 'MM/dd/yyyy, hh:mm a';
12
+ break;
13
+ case 'shortDate':
14
+ format = 'MM/dd/yyyy';
15
+ break;
16
+ }
17
+ return this.datePipe.transform(value, format, timezone, locale);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDatePipe, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe }); }
20
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoDatePipe, isStandalone: true, name: "choDate" }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDatePipe, decorators: [{
23
+ type: Pipe,
24
+ args: [{
25
+ name: 'choDate',
26
+ standalone: true,
27
+ }]
28
+ }], ctorParameters: () => [{ type: i1.DatePipe }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWRhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvcGlwZXMvY2hvLWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBTXBELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQW1CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBQ3pDLFNBQVMsQ0FDTCxLQUE2QixFQUM3QixNQUFlLEVBQ2YsUUFBaUIsRUFDakIsTUFBZTtRQUVmLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDYixLQUFLLE9BQU87Z0JBQ1IsTUFBTSxHQUFHLHFCQUFxQixDQUFDO2dCQUMvQixNQUFNO1lBRVYsS0FBSyxXQUFXO2dCQUNaLE1BQU0sR0FBRyxZQUFZLENBQUM7Z0JBQ3RCLE1BQU07UUFDZCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDOytHQW5CUSxXQUFXOzZHQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBSnZCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2Nob0RhdGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob0RhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSkge31cbiAgICB0cmFuc2Zvcm0oXG4gICAgICAgIHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgICAgICBmb3JtYXQ/OiBzdHJpbmcsXG4gICAgICAgIHRpbWV6b25lPzogc3RyaW5nLFxuICAgICAgICBsb2NhbGU/OiBzdHJpbmdcbiAgICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Nob3J0JzpcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSAnTU0vZGQveXl5eSwgaGg6bW0gYSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Nob3J0RGF0ZSc6XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gJ01NL2RkL3l5eXknO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQsIHRpbWV6b25lLCBsb2NhbGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoFilterPipe {
4
+ transform(items, callback) {
5
+ if (!items || !callback) {
6
+ return items;
7
+ }
8
+ return items.filter(item => callback(item));
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoFilterPipe, isStandalone: true, name: "choFilter" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFilterPipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'choFilter',
17
+ standalone: true,
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9waXBlcy9jaG8tZmlsdGVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxhQUFhO0lBQ3RCLFNBQVMsQ0FBQyxLQUFZLEVBQUUsUUFBZ0M7UUFDcEQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDOytHQU5RLGFBQWE7NkdBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsV0FBVztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2Nob0ZpbHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShpdGVtczogYW55W10sIGNhbGxiYWNrOiAoaXRlbTogYW55KSA9PiBib29sZWFuKTogYW55IHtcbiAgICAgICAgaWYgKCFpdGVtcyB8fCAhY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gY2FsbGJhY2soaXRlbSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoFormatKeyPipe {
4
+ transform(key) {
5
+ let result = '';
6
+ const tokenized = key.split(/(?=[A-Z])/);
7
+ tokenized.forEach(item => {
8
+ const uppercase = item.charAt(0).toUpperCase() + item.slice(1);
9
+ result += uppercase + ' ';
10
+ });
11
+ return result;
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFormatKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
14
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoFormatKeyPipe, isStandalone: true, name: "choFormatKey" }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFormatKeyPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{
19
+ name: 'choFormatKey',
20
+ standalone: true,
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWZvcm1hdC1rZXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvcGlwZXMvY2hvLWZvcm1hdC1rZXkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixTQUFTLENBQUMsR0FBVztRQUNqQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6QyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRCxNQUFNLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7K0dBWFEsZ0JBQWdCOzZHQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBSjVCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdjaG9Gb3JtYXRLZXknLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob0Zvcm1hdEtleVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgIGNvbnN0IHRva2VuaXplZCA9IGtleS5zcGxpdCgvKD89W0EtWl0pLyk7XG5cbiAgICAgICAgdG9rZW5pemVkLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cHBlcmNhc2UgPSBpdGVtLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgaXRlbS5zbGljZSgxKTtcbiAgICAgICAgICAgIHJlc3VsdCArPSB1cHBlcmNhc2UgKyAnICc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoLowerKebabCasePipe {
4
+ transform(value) {
5
+ //take string and convert to lower kebab case
6
+ return value
7
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
8
+ .replace(/\s+/g, '-')
9
+ .toLowerCase();
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoLowerKebabCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoLowerKebabCasePipe, isStandalone: true, name: "choLowerKebabCase" }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoLowerKebabCasePipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{
17
+ name: 'choLowerKebabCase',
18
+ standalone: true,
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWxvd2VyLWtlYmFiLWNhc2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvcGlwZXMvY2hvLWxvd2VyLWtlYmFiLWNhc2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixTQUFTLENBQUMsS0FBYTtRQUNuQiw2Q0FBNkM7UUFDN0MsT0FBTyxLQUFLO2FBQ1AsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQzthQUNuQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQzthQUNwQixXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDOytHQVBRLHFCQUFxQjs2R0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxtQkFBbUI7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdjaG9Mb3dlcktlYmFiQ2FzZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvTG93ZXJLZWJhYkNhc2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvL3Rha2Ugc3RyaW5nIGFuZCBjb252ZXJ0IHRvIGxvd2VyIGtlYmFiIGNhc2VcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxLSQyJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICctJylcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoSumByPipe {
4
+ transform(items, attr) {
5
+ return items.reduce((a, b) => a + (b[attr] || 0), 0);
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoSumByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoSumByPipe, isStandalone: true, name: "choSumBy" }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoSumByPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'choSumBy',
14
+ standalone: true,
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLXN1bS1ieS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9waXBlcy9jaG8tc3VtLWJ5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFNBQVMsQ0FBQyxLQUFZLEVBQUUsSUFBWTtRQUNoQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzsrR0FIUSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBSnhCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdjaG9TdW1CeScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvU3VtQnlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGl0ZW1zOiBhbnlbXSwgYXR0cjogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgoYSwgYikgPT4gYSArIChiW2F0dHJdIHx8IDApLCAwKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ChoTextFilterPipe {
4
+ transform(value, filterString, properties) {
5
+ if (value?.length === 0 || !filterString || !properties?.length) {
6
+ return value;
7
+ }
8
+ const filteredItems = [];
9
+ filterString = filterString.toLowerCase();
10
+ for (const item of value) {
11
+ for (const property of properties) {
12
+ if (item[property] && item[property].toLowerCase().includes(filterString)) {
13
+ filteredItems.push(item);
14
+ break;
15
+ }
16
+ }
17
+ }
18
+ return filteredItems;
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoTextFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
21
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ChoTextFilterPipe, isStandalone: true, name: "choTextFilter" }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoTextFilterPipe, decorators: [{
24
+ type: Pipe,
25
+ args: [{
26
+ name: 'choTextFilter',
27
+ standalone: true,
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLXRleHQtZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL3BpcGVzL2Noby10ZXh0LWZpbHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFNBQVMsQ0FBQyxLQUFZLEVBQUUsWUFBdUMsRUFBRSxVQUFvQjtRQUNqRixJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzlELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBVSxFQUFFLENBQUM7UUFDaEMsWUFBWSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUxQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDeEUsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDekIsTUFBTTtnQkFDVixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDOytHQW5CUSxpQkFBaUI7NkdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFKN0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2Nob1RleHRGaWx0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob1RleHRGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnlbXSwgZmlsdGVyU3RyaW5nOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPT09IDAgfHwgIWZpbHRlclN0cmluZyB8fCAhcHJvcGVydGllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgICAgICBmaWx0ZXJTdHJpbmcgPSBmaWx0ZXJTdHJpbmcudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtW3Byb3BlcnR5XSAmJiBpdGVtW3Byb3BlcnR5XS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclN0cmluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWRJdGVtcztcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { Injectable } from '@angular/core';
2
+ import moment from 'moment';
3
+ import * as i0 from "@angular/core";
4
+ export class ChoDateService {
5
+ getMonthItems(startMonth = 1, endMonth = 12) {
6
+ const items = [];
7
+ const d = moment().startOf('year');
8
+ let i = startMonth;
9
+ while (i <= endMonth) {
10
+ d.set('month', i - 1);
11
+ items.push({ value: i, name: d.format('MMMM') });
12
+ i++;
13
+ }
14
+ return items;
15
+ }
16
+ getYearItems(startYear, endYear) {
17
+ startYear = startYear || moment().year();
18
+ endYear = endYear || moment().year();
19
+ const items = [];
20
+ let i = startYear;
21
+ while (i <= endYear) {
22
+ items.push({ value: i, name: i.toString() });
23
+ i++;
24
+ }
25
+ return items;
26
+ }
27
+ toDateString(input) {
28
+ return moment(input).format('yyyy-MM-DD');
29
+ }
30
+ toISOString(input) {
31
+ return moment(input).toISOString();
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDateService, providedIn: 'root' }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDateService, decorators: [{
37
+ type: Injectable,
38
+ args: [{ providedIn: 'root' }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWRhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvc2VydmljZXMvY2hvLWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7QUFLNUIsTUFBTSxPQUFPLGNBQWM7SUFDaEIsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUU7UUFDOUMsTUFBTSxLQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUMxQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBRW5CLE9BQU8sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsQ0FBQyxFQUFFLENBQUM7UUFDUixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFrQixFQUFFLE9BQWdCO1FBQ3BELFNBQVMsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsT0FBTyxHQUFHLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyQyxNQUFNLEtBQUssR0FBNEIsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUVsQixPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsQ0FBQztRQUNSLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQXlCO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQXlCO1FBQ3hDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7K0dBcENRLGNBQWM7bUhBQWQsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuaW1wb3J0IHsgTmFtZVZhbHVlSXRlbSB9IGZyb20gJy4uL3R5cGVzL25hbWUtdmFsdWUtaXRlbS50eXBlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDaG9EYXRlU2VydmljZSB7XG4gICAgcHVibGljIGdldE1vbnRoSXRlbXMoc3RhcnRNb250aCA9IDEsIGVuZE1vbnRoID0gMTIpOiBOYW1lVmFsdWVJdGVtPG51bWJlcj5bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBOYW1lVmFsdWVJdGVtPG51bWJlcj5bXSA9IFtdO1xuICAgICAgICBjb25zdCBkID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpO1xuICAgICAgICBsZXQgaSA9IHN0YXJ0TW9udGg7XG5cbiAgICAgICAgd2hpbGUgKGkgPD0gZW5kTW9udGgpIHtcbiAgICAgICAgICAgIGQuc2V0KCdtb250aCcsIGkgLSAxKTtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goeyB2YWx1ZTogaSwgbmFtZTogZC5mb3JtYXQoJ01NTU0nKSB9KTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0WWVhckl0ZW1zKHN0YXJ0WWVhcj86IG51bWJlciwgZW5kWWVhcj86IG51bWJlcik6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdIHtcbiAgICAgICAgc3RhcnRZZWFyID0gc3RhcnRZZWFyIHx8IG1vbWVudCgpLnllYXIoKTtcbiAgICAgICAgZW5kWWVhciA9IGVuZFllYXIgfHwgbW9tZW50KCkueWVhcigpO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBOYW1lVmFsdWVJdGVtPG51bWJlcj5bXSA9IFtdO1xuICAgICAgICBsZXQgaSA9IHN0YXJ0WWVhcjtcblxuICAgICAgICB3aGlsZSAoaSA8PSBlbmRZZWFyKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHsgdmFsdWU6IGksIG5hbWU6IGkudG9TdHJpbmcoKSB9KTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9EYXRlU3RyaW5nKGlucHV0OiBtb21lbnQuTW9tZW50SW5wdXQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbW9tZW50KGlucHV0KS5mb3JtYXQoJ3l5eXktTU0tREQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9JU09TdHJpbmcoaW5wdXQ6IG1vbWVudC5Nb21lbnRJbnB1dCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtb21lbnQoaW5wdXQpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,49 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { shareReplay } from 'rxjs';
3
+ import { saveAs } from 'file-saver';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ export class ChoDownloadService {
7
+ constructor(httpClient) {
8
+ this.httpClient = httpClient;
9
+ this.octetStreamMime = 'application/octet-stream';
10
+ }
11
+ downloadFile(url, params) {
12
+ const download$ = this.httpClient
13
+ .get(url, {
14
+ responseType: 'arraybuffer',
15
+ observe: 'response',
16
+ params: params,
17
+ })
18
+ .pipe(shareReplay());
19
+ download$.subscribe(r => this.processDownload(r));
20
+ return download$;
21
+ }
22
+ processDownload(response) {
23
+ const filename = this.getFileNameFromResponse(response);
24
+ const contentType = response.headers.get('content-type') || this.octetStreamMime;
25
+ if (response.body) {
26
+ const blob = new Blob([response.body], { type: contentType });
27
+ saveAs(blob, filename);
28
+ }
29
+ }
30
+ getFileNameFromResponse(response) {
31
+ // attempt to get from response headers
32
+ let fileName = response.headers.get('x-filename') || response.headers.get('filename');
33
+ if (!fileName) {
34
+ // attempt to get from content disposition
35
+ const disposition = response.headers.get('content-disposition');
36
+ if (disposition) {
37
+ fileName = disposition.split(';')[1].split('=')[1].replace(/"/g, '');
38
+ }
39
+ }
40
+ return fileName || 'download.bin';
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDownloadService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDownloadService, providedIn: 'any' }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoDownloadService, decorators: [{
46
+ type: Injectable,
47
+ args: [{ providedIn: 'any' }]
48
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWRvd25sb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Noby1kb3dubG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFHcEMsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRWxDLG9CQUFlLEdBQUcsMEJBQTBCLENBQUM7SUFGUixDQUFDO0lBSXZDLFlBQVksQ0FBQyxHQUFXLEVBQUUsTUFBbUI7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVU7YUFDNUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNOLFlBQVksRUFBRSxhQUFhO1lBQzNCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUM7YUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV6QixTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxlQUFlLENBQUMsUUFBbUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFakYsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsUUFBbUM7UUFDL0QsdUNBQXVDO1FBQ3ZDLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNaLDBDQUEwQztZQUMxQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRWhFLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2QsUUFBUSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekUsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFFBQVEsSUFBSSxjQUFjLENBQUM7SUFDdEMsQ0FBQzsrR0EzQ1Esa0JBQWtCO21IQUFsQixrQkFBa0IsY0FETCxLQUFLOzs0RkFDbEIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuZXhwb3J0IGNsYXNzIENob0Rvd25sb2FkU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7fVxuXG4gICAgcHJpdmF0ZSBvY3RldFN0cmVhbU1pbWUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGUodXJsOiBzdHJpbmcsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheUJ1ZmZlcj4+IHtcbiAgICAgICAgY29uc3QgZG93bmxvYWQkID0gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHVybCwge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKHNoYXJlUmVwbGF5KCkpO1xuXG4gICAgICAgIGRvd25sb2FkJC5zdWJzY3JpYmUociA9PiB0aGlzLnByb2Nlc3NEb3dubG9hZChyKSk7XG5cbiAgICAgICAgcmV0dXJuIGRvd25sb2FkJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEb3dubG9hZChyZXNwb25zZTogSHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPik6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHRoaXMuZ2V0RmlsZU5hbWVGcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSB8fCB0aGlzLm9jdGV0U3RyZWFtTWltZTtcblxuICAgICAgICBpZiAocmVzcG9uc2UuYm9keSkge1xuICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZS5ib2R5XSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcbiAgICAgICAgICAgIHNhdmVBcyhibG9iLCBmaWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbGVOYW1lRnJvbVJlc3BvbnNlKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8QXJyYXlCdWZmZXI+KTogc3RyaW5nIHtcbiAgICAgICAgLy8gYXR0ZW1wdCB0byBnZXQgZnJvbSByZXNwb25zZSBoZWFkZXJzXG4gICAgICAgIGxldCBmaWxlTmFtZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCd4LWZpbGVuYW1lJykgfHwgcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2ZpbGVuYW1lJyk7XG5cbiAgICAgICAgaWYgKCFmaWxlTmFtZSkge1xuICAgICAgICAgICAgLy8gYXR0ZW1wdCB0byBnZXQgZnJvbSBjb250ZW50IGRpc3Bvc2l0aW9uXG4gICAgICAgICAgICBjb25zdCBkaXNwb3NpdGlvbiA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJyk7XG5cbiAgICAgICAgICAgIGlmIChkaXNwb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZGlzcG9zaXRpb24uc3BsaXQoJzsnKVsxXS5zcGxpdCgnPScpWzFdLnJlcGxhY2UoL1wiL2csICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWxlTmFtZSB8fCAnZG93bmxvYWQuYmluJztcbiAgICB9XG59XG4iXX0=