@js-smart/ng-kit 18.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 (72) hide show
  1. package/README.md +297 -0
  2. package/esm2022/js-smart-ng-kit.mjs +5 -0
  3. package/esm2022/lib/components/alert/alert.component.mjs +95 -0
  4. package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +172 -0
  5. package/esm2022/lib/components/buttons/base-button/base-button.component.mjs +72 -0
  6. package/esm2022/lib/components/buttons/bs-link-button/bs-link-button.component.mjs +52 -0
  7. package/esm2022/lib/components/buttons/delete-button/delete-button.component.mjs +62 -0
  8. package/esm2022/lib/components/buttons/edit-bs-button/edit-bs-button.component.mjs +55 -0
  9. package/esm2022/lib/components/buttons/edit-button/edit-button.component.mjs +49 -0
  10. package/esm2022/lib/components/buttons/edit-svg-icon-button/edit-svg-icon-button.component.mjs +51 -0
  11. package/esm2022/lib/components/buttons/excel-export-button/excel-export-button.component.mjs +14 -0
  12. package/esm2022/lib/components/buttons/manage-button/manage-button.component.mjs +49 -0
  13. package/esm2022/lib/components/buttons/pdf-export-button/pdf-export-button.component.mjs +13 -0
  14. package/esm2022/lib/components/buttons/primary-button/primary-button.component.mjs +61 -0
  15. package/esm2022/lib/components/buttons/save-primary-button/save-primary-button.component.mjs +60 -0
  16. package/esm2022/lib/components/buttons/search-button/search-button.component.mjs +52 -0
  17. package/esm2022/lib/components/buttons/success-button/success-button.component.mjs +65 -0
  18. package/esm2022/lib/components/buttons/view-button/view-button.component.mjs +41 -0
  19. package/esm2022/lib/components/buttons/view-primary-button/view-primary-button.component.mjs +49 -0
  20. package/esm2022/lib/components/confirm-dialog/confirm-dialog.component.mjs +63 -0
  21. package/esm2022/lib/components/ngx-spinner/ngx-spinner.component.mjs +195 -0
  22. package/esm2022/lib/components/ngx-spinner/ngx-spinner.enum.mjs +16 -0
  23. package/esm2022/lib/components/ngx-spinner/ngx-spinner.service.mjs +71 -0
  24. package/esm2022/lib/components/ngx-spinner/safe-html.pipe.mjs +24 -0
  25. package/esm2022/lib/components/snack-bar/error-snack-bar/error-snack-bar.component.mjs +50 -0
  26. package/esm2022/lib/components/snack-bar/success-snack-bar/success-snack-bar.component.mjs +50 -0
  27. package/esm2022/lib/components/spinner/spinner.component.mjs +31 -0
  28. package/esm2022/lib/directives/ngx-print.directive.mjs +255 -0
  29. package/esm2022/lib/directives/prevent-multiple-clicks.directive.mjs +44 -0
  30. package/esm2022/lib/pipes/type-of.pipe.mjs +17 -0
  31. package/esm2022/lib/services/mat-snack-bar.service.mjs +82 -0
  32. package/esm2022/lib/svg-icons/edit-solid-svg/edit-solid-svg.component.mjs +22 -0
  33. package/esm2022/lib/types/progress-state.mjs +2 -0
  34. package/esm2022/lib/util/progress-util.mjs +80 -0
  35. package/esm2022/public-api.mjs +33 -0
  36. package/fesm2022/js-smart-ng-kit.mjs +1872 -0
  37. package/fesm2022/js-smart-ng-kit.mjs.map +1 -0
  38. package/index.d.ts +5 -0
  39. package/lib/components/alert/alert.component.d.ts +73 -0
  40. package/lib/components/autocomplete/autocomplete.component.d.ts +115 -0
  41. package/lib/components/buttons/base-button/base-button.component.d.ts +63 -0
  42. package/lib/components/buttons/bs-link-button/bs-link-button.component.d.ts +10 -0
  43. package/lib/components/buttons/delete-button/delete-button.component.d.ts +11 -0
  44. package/lib/components/buttons/edit-bs-button/edit-bs-button.component.d.ts +9 -0
  45. package/lib/components/buttons/edit-button/edit-button.component.d.ts +10 -0
  46. package/lib/components/buttons/edit-svg-icon-button/edit-svg-icon-button.component.d.ts +10 -0
  47. package/lib/components/buttons/excel-export-button/excel-export-button.component.d.ts +5 -0
  48. package/lib/components/buttons/manage-button/manage-button.component.d.ts +10 -0
  49. package/lib/components/buttons/pdf-export-button/pdf-export-button.component.d.ts +5 -0
  50. package/lib/components/buttons/primary-button/primary-button.component.d.ts +12 -0
  51. package/lib/components/buttons/save-primary-button/save-primary-button.component.d.ts +11 -0
  52. package/lib/components/buttons/search-button/search-button.component.d.ts +11 -0
  53. package/lib/components/buttons/success-button/success-button.component.d.ts +11 -0
  54. package/lib/components/buttons/view-button/view-button.component.d.ts +9 -0
  55. package/lib/components/buttons/view-primary-button/view-primary-button.component.d.ts +10 -0
  56. package/lib/components/confirm-dialog/confirm-dialog.component.d.ts +20 -0
  57. package/lib/components/ngx-spinner/ngx-spinner.component.d.ts +109 -0
  58. package/lib/components/ngx-spinner/ngx-spinner.enum.d.ts +37 -0
  59. package/lib/components/ngx-spinner/ngx-spinner.service.d.ts +34 -0
  60. package/lib/components/ngx-spinner/safe-html.pipe.d.ts +10 -0
  61. package/lib/components/snack-bar/error-snack-bar/error-snack-bar.component.d.ts +22 -0
  62. package/lib/components/snack-bar/success-snack-bar/success-snack-bar.component.d.ts +22 -0
  63. package/lib/components/spinner/spinner.component.d.ts +22 -0
  64. package/lib/directives/ngx-print.directive.d.ts +157 -0
  65. package/lib/directives/prevent-multiple-clicks.directive.d.ts +21 -0
  66. package/lib/pipes/type-of.pipe.d.ts +7 -0
  67. package/lib/services/mat-snack-bar.service.d.ts +61 -0
  68. package/lib/svg-icons/edit-solid-svg/edit-solid-svg.component.d.ts +8 -0
  69. package/lib/types/progress-state.d.ts +7 -0
  70. package/lib/util/progress-util.d.ts +45 -0
  71. package/package.json +47 -0
  72. package/public-api.d.ts +25 -0
@@ -0,0 +1,16 @@
1
+ export const LOADERS = {
2
+ 'ball-clip-rotate': 1,
3
+ };
4
+ export const DEFAULTS = {
5
+ BD_COLOR: 'rgba(51,51,51,0.8)',
6
+ SPINNER_COLOR: '#fff',
7
+ SPINNER_TYPE: 'ball-clip-rotate',
8
+ Z_INDEX: 99999,
9
+ };
10
+ export const PRIMARY_SPINNER = 'primary';
11
+ export class NgxSpinner {
12
+ constructor(init) {
13
+ Object.assign(this, init);
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNwaW5uZXIuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmd4LXNwaW5uZXIvbmd4LXNwaW5uZXIuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDdEIsa0JBQWtCLEVBQUUsQ0FBQztDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3ZCLFFBQVEsRUFBRSxvQkFBb0I7SUFDOUIsYUFBYSxFQUFFLE1BQU07SUFDckIsWUFBWSxFQUFFLGtCQUFrQjtJQUNoQyxPQUFPLEVBQUUsS0FBSztDQUNkLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBZXpDLE1BQU0sT0FBTyxVQUFVO0lBZXRCLFlBQVksSUFBMEI7UUFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IExPQURFUlMgPSB7XG5cdCdiYWxsLWNsaXAtcm90YXRlJzogMSxcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUUyA9IHtcblx0QkRfQ09MT1I6ICdyZ2JhKDUxLDUxLDUxLDAuOCknLFxuXHRTUElOTkVSX0NPTE9SOiAnI2ZmZicsXG5cdFNQSU5ORVJfVFlQRTogJ2JhbGwtY2xpcC1yb3RhdGUnLFxuXHRaX0lOREVYOiA5OTk5OSxcbn07XG5cbmV4cG9ydCBjb25zdCBQUklNQVJZX1NQSU5ORVIgPSAncHJpbWFyeSc7XG5cbmV4cG9ydCB0eXBlIFNpemUgPSAnZGVmYXVsdCcgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwaW5uZXIge1xuXHRiZENvbG9yPzogc3RyaW5nO1xuXHRzaXplPzogU2l6ZTtcblx0Y29sb3I/OiBzdHJpbmc7XG5cdHR5cGU/OiBzdHJpbmc7XG5cdGZ1bGxTY3JlZW4/OiBib29sZWFuO1xuXHR6SW5kZXg/OiBudW1iZXI7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRzaG93U3Bpbm5lcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBOZ3hTcGlubmVyIHtcblx0bmFtZT86IHN0cmluZztcblx0YmRDb2xvcj86IHN0cmluZztcblx0c2l6ZT86IFNpemU7XG5cdGNvbG9yPzogc3RyaW5nO1xuXHR0eXBlPzogc3RyaW5nO1xuXHRjbGFzcz86IHN0cmluZztcblx0ZGl2Q291bnQ/OiBudW1iZXI7XG5cdGRpdkFycmF5PzogQXJyYXk8bnVtYmVyPjtcblx0ZnVsbFNjcmVlbj86IGJvb2xlYW47XG5cdHNob3c/OiBib29sZWFuO1xuXHR6SW5kZXg/OiBudW1iZXI7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRzaG93U3Bpbm5lcj86IGJvb2xlYW47XG5cblx0Y29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8Tmd4U3Bpbm5lcj4pIHtcblx0XHRPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { filter } from 'rxjs/operators';
4
+ import { NgxSpinner, PRIMARY_SPINNER } from './ngx-spinner.enum';
5
+ import * as i0 from "@angular/core";
6
+ export class NgxSpinnerService {
7
+ constructor() {
8
+ /**
9
+ * Spinner observable
10
+ *
11
+ * @memberof NgxSpinnerService
12
+ */
13
+ // private spinnerObservable = new ReplaySubject<NgxSpinner>(1);
14
+ this.spinnerObservable = new BehaviorSubject(undefined);
15
+ }
16
+ /**
17
+ * Creates an instance of NgxSpinnerService.
18
+ * @memberof NgxSpinnerService
19
+ */
20
+ /**
21
+ * Get subscription of desired spinner
22
+ * @memberof NgxSpinnerService
23
+ **/
24
+ getSpinner(name) {
25
+ // @ts-ignore
26
+ return this.spinnerObservable.asObservable().pipe(filter((x) => x?.name === name));
27
+ }
28
+ /**
29
+ * To show spinner
30
+ *
31
+ * @memberof NgxSpinnerService
32
+ */
33
+ show(name = PRIMARY_SPINNER, spinner) {
34
+ return new Promise((resolve, _reject) => {
35
+ setTimeout(() => {
36
+ if (spinner && Object.keys(spinner).length) {
37
+ // @ts-ignore
38
+ spinner['name'] = name;
39
+ this.spinnerObservable.next(new NgxSpinner({ ...spinner, show: true }));
40
+ resolve(true);
41
+ }
42
+ else {
43
+ this.spinnerObservable.next(new NgxSpinner({ name, show: true }));
44
+ resolve(true);
45
+ }
46
+ }, 10);
47
+ });
48
+ }
49
+ /**
50
+ * To hide spinner
51
+ *
52
+ * @memberof NgxSpinnerService
53
+ */
54
+ hide(name = PRIMARY_SPINNER, debounce = 10) {
55
+ return new Promise((resolve, _reject) => {
56
+ setTimeout(() => {
57
+ this.spinnerObservable.next(new NgxSpinner({ name, show: false }));
58
+ resolve(true);
59
+ }, debounce);
60
+ });
61
+ }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxSpinnerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxSpinnerService, providedIn: 'root' }); }
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxSpinnerService, decorators: [{
66
+ type: Injectable,
67
+ args: [{
68
+ providedIn: 'root',
69
+ }]
70
+ }] });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNwaW5uZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmd4LXNwaW5uZXIvbmd4LXNwaW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFXLE1BQU0sb0JBQW9CLENBQUM7O0FBSzFFLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFJQzs7OztXQUlHO1FBQ0gsZ0VBQWdFO1FBQ3pELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUF5QixTQUFTLENBQUMsQ0FBQztLQWtEbEY7SUFoREE7OztPQUdHO0lBRUg7OztRQUdJO0lBQ0osVUFBVSxDQUFDLElBQVk7UUFDdEIsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxPQUFlLGVBQWUsRUFBRSxPQUFpQjtRQUNyRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDNUMsYUFBYTtvQkFDYixPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDeEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNmLENBQUM7cUJBQU0sQ0FBQztvQkFDUCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDZixDQUFDO1lBQ0YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxPQUFlLGVBQWUsRUFBRSxXQUFtQixFQUFFO1FBQ3pELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdkMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F4RFcsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGakIsTUFBTTs7MkZBRU4saUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTmd4U3Bpbm5lciwgUFJJTUFSWV9TUElOTkVSLCBTcGlubmVyIH0gZnJvbSAnLi9uZ3gtc3Bpbm5lci5lbnVtJztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5neFNwaW5uZXJTZXJ2aWNlIHtcblx0LyoqXG5cdCAqIFNwaW5uZXIgb2JzZXJ2YWJsZVxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgTmd4U3Bpbm5lclNlcnZpY2Vcblx0ICovXG5cdC8vIHByaXZhdGUgc3Bpbm5lck9ic2VydmFibGUgPSBuZXcgUmVwbGF5U3ViamVjdDxOZ3hTcGlubmVyPigxKTtcblx0cHVibGljIHNwaW5uZXJPYnNlcnZhYmxlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOZ3hTcGlubmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE5neFNwaW5uZXJTZXJ2aWNlLlxuXHQgKiBAbWVtYmVyb2YgTmd4U3Bpbm5lclNlcnZpY2Vcblx0ICovXG5cblx0LyoqXG5cdCAqIEdldCBzdWJzY3JpcHRpb24gb2YgZGVzaXJlZCBzcGlubmVyXG5cdCAqIEBtZW1iZXJvZiBOZ3hTcGlubmVyU2VydmljZVxuXHQgKiovXG5cdGdldFNwaW5uZXIobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxOZ3hTcGlubmVyPiB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiB0aGlzLnNwaW5uZXJPYnNlcnZhYmxlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKCh4KSA9PiB4Py5uYW1lID09PSBuYW1lKSk7XG5cdH1cblxuXHQvKipcblx0ICogVG8gc2hvdyBzcGlubmVyXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBOZ3hTcGlubmVyU2VydmljZVxuXHQgKi9cblx0c2hvdyhuYW1lOiBzdHJpbmcgPSBQUklNQVJZX1NQSU5ORVIsIHNwaW5uZXI/OiBTcGlubmVyKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0aWYgKHNwaW5uZXIgJiYgT2JqZWN0LmtleXMoc3Bpbm5lcikubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdHNwaW5uZXJbJ25hbWUnXSA9IG5hbWU7XG5cdFx0XHRcdFx0dGhpcy5zcGlubmVyT2JzZXJ2YWJsZS5uZXh0KG5ldyBOZ3hTcGlubmVyKHsgLi4uc3Bpbm5lciwgc2hvdzogdHJ1ZSB9KSk7XG5cdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnNwaW5uZXJPYnNlcnZhYmxlLm5leHQobmV3IE5neFNwaW5uZXIoeyBuYW1lLCBzaG93OiB0cnVlIH0pKTtcblx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogVG8gaGlkZSBzcGlubmVyXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBOZ3hTcGlubmVyU2VydmljZVxuXHQgKi9cblx0aGlkZShuYW1lOiBzdHJpbmcgPSBQUklNQVJZX1NQSU5ORVIsIGRlYm91bmNlOiBudW1iZXIgPSAxMCkge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgX3JlamVjdCkgPT4ge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuc3Bpbm5lck9ic2VydmFibGUubmV4dChuZXcgTmd4U3Bpbm5lcih7IG5hbWUsIHNob3c6IGZhbHNlIH0pKTtcblx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdH0sIGRlYm91bmNlKTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/platform-browser";
4
+ export class SafeHtmlPipe {
5
+ constructor(_sanitizer) {
6
+ this._sanitizer = _sanitizer;
7
+ }
8
+ transform(v) {
9
+ if (v) {
10
+ return this._sanitizer.bypassSecurityTrustHtml(v);
11
+ }
12
+ return undefined;
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
15
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: SafeHtmlPipe, isStandalone: true, name: "safeHtml" }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SafeHtmlPipe, decorators: [{
18
+ type: Pipe,
19
+ args: [{
20
+ name: 'safeHtml',
21
+ standalone: true,
22
+ }]
23
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL25neC1zcGlubmVyL3NhZmUtaHRtbC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLFlBQVk7SUFDeEIsWUFBb0IsVUFBd0I7UUFBeEIsZUFBVSxHQUFWLFVBQVUsQ0FBYztJQUFHLENBQUM7SUFFaEQsU0FBUyxDQUFDLENBQVM7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQzs4R0FSVyxZQUFZOzRHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSnhCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuXHRuYW1lOiAnc2FmZUh0bWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTYWZlSHRtbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cblx0dHJhbnNmb3JtKHY6IHN0cmluZyk6IFNhZmVIdG1sIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodikge1xuXHRcdFx0cmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2KTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuIl19
@@ -0,0 +1,50 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/snack-bar";
8
+ import * as i2 from "@angular/material/icon";
9
+ import * as i3 from "@angular/material/button";
10
+ export class ErrorSnackBarComponent {
11
+ constructor(msb, data) {
12
+ this.msb = msb;
13
+ this.data = data;
14
+ }
15
+ /**
16
+ * Close the Snack Bar
17
+ *
18
+ * @author Pavan Kumar Jadda
19
+ * @since 2.7.18
20
+ */
21
+ close() {
22
+ this.msb.dismissWithAction();
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ErrorSnackBarComponent, deps: [{ token: i1.MatSnackBarRef }, { token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: ErrorSnackBarComponent, isStandalone: true, selector: "app-error-snack-bar", ngImport: i0, template: `
26
+ <div class="custom-flex-center error-snackbar">
27
+ <mat-icon>error</mat-icon>
28
+ <label>{{ data.message }}</label>
29
+ <button style="margin-left: auto" (click)="close()" mat-icon-button>
30
+ <mat-icon>close</mat-icon>
31
+ </button>
32
+ </div>
33
+ `, isInline: true, styles: [":root{--primary-color: #153d77;--secondary-color: #6c757d;--white-color: #fff;--success-color: #198754;--delete-color: #dc3545;--background-color: #f2f2f2}.success-snackbar{color:#fff;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.error-snackbar{color:#fff;--mdc-snackbar-container-color: var(--delete-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.light-success-snackbar{color:#155724;background-color:#d4edda;--mdc-snackbar-container-color: #d4edda;--mat-mdc-snack-bar-button-color: darkgreen}.light-error-snackbar{color:#721c24;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: darkred;border-color:#f5c6cb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ErrorSnackBarComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'app-error-snack-bar', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], template: `
38
+ <div class="custom-flex-center error-snackbar">
39
+ <mat-icon>error</mat-icon>
40
+ <label>{{ data.message }}</label>
41
+ <button style="margin-left: auto" (click)="close()" mat-icon-button>
42
+ <mat-icon>close</mat-icon>
43
+ </button>
44
+ </div>
45
+ `, styles: [":root{--primary-color: #153d77;--secondary-color: #6c757d;--white-color: #fff;--success-color: #198754;--delete-color: #dc3545;--background-color: #f2f2f2}.success-snackbar{color:#fff;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.error-snackbar{color:#fff;--mdc-snackbar-container-color: var(--delete-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.light-success-snackbar{color:#155724;background-color:#d4edda;--mdc-snackbar-container-color: #d4edda;--mat-mdc-snack-bar-button-color: darkgreen}.light-error-snackbar{color:#721c24;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: darkred;border-color:#f5c6cb}\n"] }]
46
+ }], ctorParameters: () => [{ type: i1.MatSnackBarRef }, { type: undefined, decorators: [{
47
+ type: Inject,
48
+ args: [MAT_SNACK_BAR_DATA]
49
+ }] }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3Itc25hY2stYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvc25hY2stYmFyL2Vycm9yLXNuYWNrLWJhci9lcnJvci1zbmFjay1iYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFpQjNELE1BQU0sT0FBTyxzQkFBc0I7SUFDbEMsWUFDUSxHQUEyQyxFQUNmLElBQTBDO1FBRHRFLFFBQUcsR0FBSCxHQUFHLENBQXdDO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBc0M7SUFDM0UsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsS0FBSztRQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQWRXLHNCQUFzQixnREFHekIsa0JBQWtCO2tHQUhmLHNCQUFzQiwrRUFYeEI7Ozs7Ozs7O0VBUVQsNHhCQVRTLFlBQVksOEJBQUUsYUFBYSxtTEFBRSxlQUFlOzsyRkFZMUMsc0JBQXNCO2tCQWZsQyxTQUFTOytCQUNDLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxZQUM3Qzs7Ozs7Ozs7RUFRVDs7MEJBTUMsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1BVF9TTkFDS19CQVJfREFUQSwgTWF0U25hY2tCYXJSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYXBwLWVycm9yLXNuYWNrLWJhcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGRpdiBjbGFzcz1cImN1c3RvbS1mbGV4LWNlbnRlciBlcnJvci1zbmFja2JhclwiPlxuXHRcdFx0PG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cblx0XHRcdDxsYWJlbD57eyBkYXRhLm1lc3NhZ2UgfX08L2xhYmVsPlxuXHRcdFx0PGJ1dHRvbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvXCIgKGNsaWNrKT1cImNsb3NlKClcIiBtYXQtaWNvbi1idXR0b24+XG5cdFx0XHRcdDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG5cdFx0XHQ8L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblx0YCxcblx0c3R5bGVVcmxzOiBbJy4uLy4uLy4uLy4uL2Fzc2V0cy9hcHAtbWF0LXNuYWNrLWJhci5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRXJyb3JTbmFja0JhckNvbXBvbmVudCB7XG5cdGNvbnN0cnVjdG9yKFxuXHRcdHB1YmxpYyBtc2I6IE1hdFNuYWNrQmFyUmVmPEVycm9yU25hY2tCYXJDb21wb25lbnQ+LFxuXHRcdEBJbmplY3QoTUFUX1NOQUNLX0JBUl9EQVRBKSBwdWJsaWMgZGF0YTogeyBtZXNzYWdlOiBzdHJpbmc7IGFjdGlvbj86IHN0cmluZyB9LFxuXHQpIHt9XG5cblx0LyoqXG5cdCAqIENsb3NlIHRoZSBTbmFjayBCYXJcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMi43LjE4XG5cdCAqL1xuXHRjbG9zZSgpIHtcblx0XHR0aGlzLm1zYi5kaXNtaXNzV2l0aEFjdGlvbigpO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/snack-bar";
8
+ import * as i2 from "@angular/material/button";
9
+ import * as i3 from "@angular/material/icon";
10
+ export class SuccessSnackBarComponent {
11
+ constructor(msb, data) {
12
+ this.msb = msb;
13
+ this.data = data;
14
+ }
15
+ /**
16
+ * Close the Snack Bar
17
+ *
18
+ * @author Pavan Kumar Jadda
19
+ * @since 2.7.18
20
+ */
21
+ close() {
22
+ this.msb.dismissWithAction();
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SuccessSnackBarComponent, deps: [{ token: i1.MatSnackBarRef }, { token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: SuccessSnackBarComponent, isStandalone: true, selector: "app-success-snack-bar", ngImport: i0, template: `
26
+ <div class="custom-flex-center success-snackbar">
27
+ <mat-icon>check_circle</mat-icon>
28
+ <label>{{ data.message }}</label>
29
+ <button style="margin-left: auto" (click)="close()" mat-icon-button>
30
+ <mat-icon>close</mat-icon>
31
+ </button>
32
+ </div>
33
+ `, isInline: true, styles: [":root{--primary-color: #153d77;--secondary-color: #6c757d;--white-color: #fff;--success-color: #198754;--delete-color: #dc3545;--background-color: #f2f2f2}.success-snackbar{color:#fff;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.error-snackbar{color:#fff;--mdc-snackbar-container-color: var(--delete-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.light-success-snackbar{color:#155724;background-color:#d4edda;--mdc-snackbar-container-color: #d4edda;--mat-mdc-snack-bar-button-color: darkgreen}.light-error-snackbar{color:#721c24;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: darkred;border-color:#f5c6cb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SuccessSnackBarComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'app-success-snack-bar', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], template: `
38
+ <div class="custom-flex-center success-snackbar">
39
+ <mat-icon>check_circle</mat-icon>
40
+ <label>{{ data.message }}</label>
41
+ <button style="margin-left: auto" (click)="close()" mat-icon-button>
42
+ <mat-icon>close</mat-icon>
43
+ </button>
44
+ </div>
45
+ `, styles: [":root{--primary-color: #153d77;--secondary-color: #6c757d;--white-color: #fff;--success-color: #198754;--delete-color: #dc3545;--background-color: #f2f2f2}.success-snackbar{color:#fff;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.error-snackbar{color:#fff;--mdc-snackbar-container-color: var(--delete-color);--mat-mdc-snack-bar-button-color: var(--white-color)}.light-success-snackbar{color:#155724;background-color:#d4edda;--mdc-snackbar-container-color: #d4edda;--mat-mdc-snack-bar-button-color: darkgreen}.light-error-snackbar{color:#721c24;--mdc-snackbar-container-color: var(--success-color);--mat-mdc-snack-bar-button-color: darkred;border-color:#f5c6cb}\n"] }]
46
+ }], ctorParameters: () => [{ type: i1.MatSnackBarRef }, { type: undefined, decorators: [{
47
+ type: Inject,
48
+ args: [MAT_SNACK_BAR_DATA]
49
+ }] }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VjY2Vzcy1zbmFjay1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9zbmFjay1iYXIvc3VjY2Vzcy1zbmFjay1iYXIvc3VjY2Vzcy1zbmFjay1iYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFpQnZELE1BQU0sT0FBTyx3QkFBd0I7SUFDcEMsWUFDUSxHQUE2QyxFQUNqQixJQUEwQztRQUR0RSxRQUFHLEdBQUgsR0FBRyxDQUEwQztRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFzQztJQUMzRSxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxLQUFLO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzlCLENBQUM7OEdBZFcsd0JBQXdCLGdEQUczQixrQkFBa0I7a0dBSGYsd0JBQXdCLGlGQVgxQjs7Ozs7Ozs7RUFRVCw0eEJBVFMsWUFBWSw4QkFBRSxlQUFlLDJJQUFFLGFBQWE7OzJGQVkxQyx3QkFBd0I7a0JBZnBDLFNBQVM7K0JBQ0MsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLFlBQzdDOzs7Ozs7OztFQVFUOzswQkFNQyxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTUFUX1NOQUNLX0JBUl9EQVRBLCBNYXRTbmFja0JhclJlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdhcHAtc3VjY2Vzcy1zbmFjay1iYXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxkaXYgY2xhc3M9XCJjdXN0b20tZmxleC1jZW50ZXIgc3VjY2Vzcy1zbmFja2JhclwiPlxuXHRcdFx0PG1hdC1pY29uPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XG5cdFx0XHQ8bGFiZWw+e3sgZGF0YS5tZXNzYWdlIH19PC9sYWJlbD5cblx0XHRcdDxidXR0b24gc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0b1wiIChjbGljayk9XCJjbG9zZSgpXCIgbWF0LWljb24tYnV0dG9uPlxuXHRcdFx0XHQ8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuXHRcdFx0PC9idXR0b24+XG5cdFx0PC9kaXY+XG5cdGAsXG5cdHN0eWxlVXJsczogWycuLi8uLi8uLi8uLi9hc3NldHMvYXBwLW1hdC1zbmFjay1iYXIuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN1Y2Nlc3NTbmFja0JhckNvbXBvbmVudCB7XG5cdGNvbnN0cnVjdG9yKFxuXHRcdHB1YmxpYyBtc2I6IE1hdFNuYWNrQmFyUmVmPFN1Y2Nlc3NTbmFja0JhckNvbXBvbmVudD4sXG5cdFx0QEluamVjdChNQVRfU05BQ0tfQkFSX0RBVEEpIHB1YmxpYyBkYXRhOiB7IG1lc3NhZ2U6IHN0cmluZzsgYWN0aW9uPzogc3RyaW5nIH0sXG5cdCkge31cblxuXHQvKipcblx0ICogQ2xvc2UgdGhlIFNuYWNrIEJhclxuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAyLjcuMThcblx0ICovXG5cdGNsb3NlKCkge1xuXHRcdHRoaXMubXNiLmRpc21pc3NXaXRoQWN0aW9uKCk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, input } from '@angular/core';
2
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/progress-spinner";
5
+ export class SpinnerComponent {
6
+ constructor() {
7
+ /**
8
+ * Use Boostrap Spinner. Default `true`
9
+ */
10
+ this.bootstrapSpinner = input(true);
11
+ /**
12
+ * Diameter of the Angular Material spinner
13
+ */
14
+ this.diameter = input(50);
15
+ /**
16
+ * Color of the Angular Material spinner
17
+ */
18
+ this.color = input('primary');
19
+ /**
20
+ * Stroke Width of the Angular Material spinner
21
+ */
22
+ this.strokeWidth = input(5);
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: SpinnerComponent, isStandalone: true, selector: "spinner,lib-spinner", inputs: { bootstrapSpinner: { classPropertyName: "bootstrapSpinner", publicName: "bootstrapSpinner", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<!-- Angular Material Spinner -->\n@if (!bootstrapSpinner()) {\n\t<mat-spinner [color]=\"color()\" [diameter]=\"diameter()\" [strokeWidth]=\"strokeWidth()\" class=\"mx-auto\"> </mat-spinner>\n}\n\n<!-- Bootstrap Spinner -->\n@if (bootstrapSpinner()) {\n\t<div class=\"d-flex justify-content-center\">\n\t\t<div class=\"spinner-border bs-spinner\" role=\"status\"></div>\n\t</div>\n}\n", styles: [".bs-spinner-sm{color:#3f51b5;margin-bottom:20px}.bs-spinner{color:#3f51b5;width:3rem;height:3rem;margin-bottom:20px}.bs-spinner-lg{color:#3f51b5;width:5rem;height:5rem;margin-bottom:20px}\n"], dependencies: [{ kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SpinnerComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'spinner,lib-spinner', standalone: true, imports: [MatProgressSpinnerModule], template: "<!-- Angular Material Spinner -->\n@if (!bootstrapSpinner()) {\n\t<mat-spinner [color]=\"color()\" [diameter]=\"diameter()\" [strokeWidth]=\"strokeWidth()\" class=\"mx-auto\"> </mat-spinner>\n}\n\n<!-- Bootstrap Spinner -->\n@if (bootstrapSpinner()) {\n\t<div class=\"d-flex justify-content-center\">\n\t\t<div class=\"spinner-border bs-spinner\" role=\"status\"></div>\n\t</div>\n}\n", styles: [".bs-spinner-sm{color:#3f51b5;margin-bottom:20px}.bs-spinner{color:#3f51b5;width:3rem;height:3rem;margin-bottom:20px}.bs-spinner-lg{color:#3f51b5;width:5rem;height:5rem;margin-bottom:20px}\n"] }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBUzlFLE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFRQzs7V0FFRztRQUNILHFCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQjs7V0FFRztRQUNILGFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckI7O1dBRUc7UUFDSCxVQUFLLEdBQUcsS0FBSyxDQUFlLFNBQVMsQ0FBQyxDQUFDO1FBRXZDOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdkI7OEdBcEJZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHVuQkNYN0Isa1lBV0Esc1BESlcsd0JBQXdCOzsyRkFJdEIsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNDLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3NwaW5uZXIsbGliLXNwaW5uZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9zcGlubmVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5uZXJDb21wb25lbnQge1xuXHQvKipcblx0ICogIFVzZSBCb29zdHJhcCBTcGlubmVyLiBEZWZhdWx0IGB0cnVlYFxuXHQgKi9cblx0Ym9vdHN0cmFwU3Bpbm5lciA9IGlucHV0KHRydWUpO1xuXG5cdC8qKlxuXHQgKiBEaWFtZXRlciBvZiB0aGUgQW5ndWxhciBNYXRlcmlhbCBzcGlubmVyXG5cdCAqL1xuXHRkaWFtZXRlciA9IGlucHV0KDUwKTtcblxuXHQvKipcblx0ICogIENvbG9yIG9mIHRoZSBBbmd1bGFyIE1hdGVyaWFsIHNwaW5uZXJcblx0ICovXG5cdGNvbG9yID0gaW5wdXQ8VGhlbWVQYWxldHRlPigncHJpbWFyeScpO1xuXG5cdC8qKlxuXHQgKiAgU3Ryb2tlIFdpZHRoIG9mIHRoZSBBbmd1bGFyIE1hdGVyaWFsIHNwaW5uZXJcblx0ICovXG5cdHN0cm9rZVdpZHRoID0gaW5wdXQoNSk7XG59XG4iLCI8IS0tIEFuZ3VsYXIgTWF0ZXJpYWwgU3Bpbm5lciAtLT5cbkBpZiAoIWJvb3RzdHJhcFNwaW5uZXIoKSkge1xuXHQ8bWF0LXNwaW5uZXIgW2NvbG9yXT1cImNvbG9yKClcIiBbZGlhbWV0ZXJdPVwiZGlhbWV0ZXIoKVwiIFtzdHJva2VXaWR0aF09XCJzdHJva2VXaWR0aCgpXCIgY2xhc3M9XCJteC1hdXRvXCI+IDwvbWF0LXNwaW5uZXI+XG59XG5cbjwhLS0gQm9vdHN0cmFwIFNwaW5uZXIgLS0+XG5AaWYgKGJvb3RzdHJhcFNwaW5uZXIoKSkge1xuXHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cblx0XHQ8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgYnMtc3Bpbm5lclwiIHJvbGU9XCJzdGF0dXNcIj48L2Rpdj5cblx0PC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,255 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Reusable Angular directory that prints given contents of HTML element
5
+ *
6
+ * @since 12.0.0
7
+ * @author Pavan Kumar Jadda
8
+ */
9
+ export class NgxPrintDirective {
10
+ constructor() {
11
+ /**
12
+ * If `true`, uses CSS of HTMl element, otherwise no CSS applied
13
+ *
14
+ * @since 12.0.0
15
+ * @author Pavan Kumar Jadda
16
+ */
17
+ this.useExistingCss = false;
18
+ /**
19
+ * A delay in milliseconds to force the print dialog to wait before opened. Default: 0
20
+ *
21
+ * @since 12.0.0
22
+ * @author Pavan Kumar Jadda
23
+ */
24
+ this.printDelay = 0;
25
+ /**
26
+ * ID of the Mat Paginator
27
+ *
28
+ * @since 12.0.0
29
+ * @author Pavan Kumar Jadda
30
+ */
31
+ this.paginatorId = '';
32
+ /**
33
+ * HTML tag ID of the Mat-Table Input Filter
34
+ *
35
+ * @since 12.0.0
36
+ * @author Pavan Kumar Jadda
37
+ */
38
+ this.inputFilterId = '';
39
+ /**
40
+ * If `true`, referenced table is Mat-Table
41
+ *
42
+ * @since 12.0.0
43
+ * @author Pavan Kumar Jadda
44
+ */
45
+ this.isMatTable = false;
46
+ /**
47
+ * If `true` Mat-Table paginator will be hidden
48
+ *
49
+ * @since 12.0.0
50
+ * @author Pavan Kumar Jadda
51
+ */
52
+ this.hideMatTablePaginator = false;
53
+ this.printStyleArray = [];
54
+ /**
55
+ * List of Style sheet files
56
+ *
57
+ * @since 12.0.0
58
+ * @author Pavan Kumar Jadda
59
+ */
60
+ this.styleSheetFileArray = '';
61
+ }
62
+ /**
63
+ * List of CSS properties that needs to be applied while printing the document
64
+ *
65
+ * @since 12.0.0
66
+ * @author Pavan Kumar Jadda
67
+ */
68
+ set printStyle({ values }) {
69
+ for (const key in values) {
70
+ if (values.hasOwnProperty(key)) {
71
+ // @ts-ignore
72
+ this.printStyleArray.push((key + JSON.stringify(values[key])).replace(/['"]+/g, ''));
73
+ }
74
+ }
75
+ this.returnStyleValues();
76
+ }
77
+ /**
78
+ * Sets given style sheet files to print document
79
+ *
80
+ * @param cssList Comma separated value of CSS file names
81
+ *
82
+ * @since 12.0.0
83
+ * @author Pavan Kumar Jadda
84
+ */
85
+ set styleSheetFile(cssList) {
86
+ if (cssList.indexOf(',') !== -1) {
87
+ const cssFileArray = cssList.split(',');
88
+ for (const cssFileName of cssFileArray) {
89
+ this.styleSheetFileArray = this.styleSheetFileArray + NgxPrintDirective.linkTagFn(cssFileName);
90
+ }
91
+ }
92
+ else {
93
+ this.styleSheetFileArray = NgxPrintDirective.linkTagFn(cssList);
94
+ }
95
+ }
96
+ /**
97
+ * Build link HTMl tag based on given file name
98
+ *
99
+ * @since 12.0.0
100
+ * @author Pavan Kumar Jadda
101
+ */
102
+ static linkTagFn(cssFileName) {
103
+ return `<link rel="stylesheet" type="text/css" href="${cssFileName}">`;
104
+ }
105
+ /**
106
+ * Gets HTML element by tag name
107
+ *
108
+ * @since 12.0.0
109
+ * @author Pavan Kumar Jadda
110
+ */
111
+ static getElementTag(tag) {
112
+ const html = [];
113
+ const elements = document.getElementsByTagName(tag);
114
+ // @ts-ignore
115
+ for (const element of elements) {
116
+ html.push(element.outerHTML);
117
+ }
118
+ return html.join('\r\n');
119
+ }
120
+ /**
121
+ * Print the element upon clicking the button
122
+ *
123
+ * @since 12.0.0
124
+ * @author Pavan Kumar Jadda
125
+ */
126
+ print() {
127
+ //Hide paginator for Material table
128
+ if (this.isMatTable && this.hideMatTablePaginator && this.matTableDataSource) {
129
+ this.matTableDataSource.paginator = null;
130
+ }
131
+ setTimeout(() => {
132
+ if (this.isMatTable) {
133
+ this.hideMatPaginatorBeforePrinting();
134
+ }
135
+ // Do something after
136
+ let printContents;
137
+ let popupWin;
138
+ let styles = '';
139
+ let links = '';
140
+ if (this.useExistingCss) {
141
+ styles = NgxPrintDirective.getElementTag('style');
142
+ links = NgxPrintDirective.getElementTag('link');
143
+ }
144
+ if (this.printSectionId) {
145
+ printContents = document.getElementById(this.printSectionId)?.innerHTML;
146
+ popupWin = window.open('', '_blank', 'top=0,left=0,height=auto,width=auto');
147
+ popupWin?.document.open();
148
+ popupWin?.document.write(`
149
+ <html lang="en-us">
150
+ <head>
151
+ <title>${this.printTitle ? this.printTitle : ''}</title>
152
+ ${this.returnStyleValues()}
153
+ ${this.styleSheetFileArray}
154
+ ${styles}
155
+ ${links}
156
+ </head>
157
+ <body>
158
+ ${printContents}
159
+ <script defer>
160
+ function triggerPrint() {
161
+ window.removeEventListener('load', triggerPrint, false);
162
+ setTimeout(() => {
163
+ window.print();
164
+ setTimeout(function() { window.close(); }, 0);
165
+ }, ${this.printDelay});
166
+ }
167
+ window.addEventListener('load', triggerPrint, false);
168
+ </script>
169
+ </body>
170
+ </html>`);
171
+ popupWin?.document.close();
172
+ //Revert back the mat-paginator after printing
173
+ if (this.isMatTable) {
174
+ this.showMatPaginatorAfterPrinting();
175
+ }
176
+ }
177
+ }, 1000); //1 second timeout to hide paginator
178
+ }
179
+ /**
180
+ * Hide Mat Paginator before Printing
181
+ *
182
+ * @since 12.0.1
183
+ * @author Pavan Kumar Jadda
184
+ */
185
+ hideMatPaginatorBeforePrinting() {
186
+ // @ts-ignore
187
+ document.getElementById(this.paginatorId).style.display = 'none';
188
+ if (document.getElementById(this.inputFilterId) != null) {
189
+ // @ts-ignore
190
+ document.getElementById(this.inputFilterId).style.display = 'none';
191
+ }
192
+ }
193
+ /**
194
+ * Show Mat Paginator after Printing
195
+ *
196
+ * @since 12.0.1
197
+ * @author Pavan Kumar Jadda
198
+ */
199
+ showMatPaginatorAfterPrinting() {
200
+ this.matTableDataSource.paginator = this.paginator;
201
+ // @ts-ignore
202
+ document.getElementById(this.paginatorId).style.display = 'block';
203
+ if (document.getElementById(this.inputFilterId) != null) {
204
+ // @ts-ignore
205
+ document.getElementById(this.inputFilterId).style.display = 'block';
206
+ }
207
+ }
208
+ /**
209
+ * @returns the string that create the stylesheet which will be injected later within <style></style> tag. Join/replace to transform an array objects to css-styled string
210
+ *
211
+ * @since 12.0.0
212
+ * @author Pavan Kumar Jadda
213
+ */
214
+ returnStyleValues() {
215
+ return `<style> ${this.printStyleArray.join(' ').replace(/,/g, ';')} </style>`;
216
+ }
217
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxPrintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
218
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0", type: NgxPrintDirective, isStandalone: true, selector: "button[ngxPrint], button[print]", inputs: { printSectionId: "printSectionId", printTitle: "printTitle", useExistingCss: "useExistingCss", printDelay: "printDelay", matTableDataSource: "matTableDataSource", paginator: "paginator", paginatorId: "paginatorId", inputFilterId: "inputFilterId", isMatTable: "isMatTable", hideMatTablePaginator: "hideMatTablePaginator", printStyle: "printStyle", styleSheetFile: "styleSheetFile" }, host: { listeners: { "click": "print()" } }, ngImport: i0 }); }
219
+ }
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxPrintDirective, decorators: [{
221
+ type: Directive,
222
+ args: [{
223
+ // eslint-disable-next-line @angular-eslint/directive-selector
224
+ selector: 'button[ngxPrint], button[print]',
225
+ standalone: true,
226
+ }]
227
+ }], propDecorators: { printSectionId: [{
228
+ type: Input
229
+ }], printTitle: [{
230
+ type: Input
231
+ }], useExistingCss: [{
232
+ type: Input
233
+ }], printDelay: [{
234
+ type: Input
235
+ }], matTableDataSource: [{
236
+ type: Input
237
+ }], paginator: [{
238
+ type: Input
239
+ }], paginatorId: [{
240
+ type: Input
241
+ }], inputFilterId: [{
242
+ type: Input
243
+ }], isMatTable: [{
244
+ type: Input
245
+ }], hideMatTablePaginator: [{
246
+ type: Input
247
+ }], printStyle: [{
248
+ type: Input
249
+ }], styleSheetFile: [{
250
+ type: Input
251
+ }], print: [{
252
+ type: HostListener,
253
+ args: ['click']
254
+ }] } });
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpdC9zcmMvbGliL2RpcmVjdGl2ZXMvbmd4LXByaW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSS9EOzs7OztHQUtHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQXNCQzs7Ozs7V0FLRztRQUNNLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWhDOzs7OztXQUtHO1FBQ00sZUFBVSxHQUFHLENBQUMsQ0FBQztRQWtCeEI7Ozs7O1dBS0c7UUFDTSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUUxQjs7Ozs7V0FLRztRQUNNLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRTVCOzs7OztXQUtHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBQztRQUU1Qjs7Ozs7V0FLRztRQUNNLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUVoQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUM1Qjs7Ozs7V0FLRztRQUNLLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztLQTJLakM7SUF6S0E7Ozs7O09BS0c7SUFDSCxJQUNJLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBb0I7UUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsYUFBYTtnQkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lB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QUcsT0FBTyxDQUFDO1FBQ3JFLENBQUM7SUFDRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUI7UUFDeEIsT0FBTyxXQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUNoRixDQUFDOzhHQWxRVyxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDViw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxpQ0FBaUM7b0JBQzNDLFVBQVUsRUFBRSxJQUFJO2lCQUNoQjs4QkFRUyxjQUFjO3NCQUF0QixLQUFLO2dCQVFHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBUUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxVQUFVO3NCQUFsQixLQUFLO2dCQVFHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxVQUFVO3NCQUFsQixLQUFLO2dCQVFHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFrQkYsVUFBVTtzQkFEYixLQUFLO2dCQW9CRixjQUFjO3NCQURqQixLQUFLO2dCQTZDQyxLQUFLO3NCQURYLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcblxuLyoqXG4gKiBSZXVzYWJsZSBBbmd1bGFyIGRpcmVjdG9yeSB0aGF0IHByaW50cyBnaXZlbiBjb250ZW50cyBvZiBIVE1MIGVsZW1lbnRcbiAqXG4gKiBAc2luY2UgMTIuMC4wXG4gKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG4gKi9cbkBEaXJlY3RpdmUoe1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuXHRzZWxlY3RvcjogJ2J1dHRvbltuZ3hQcmludF0sIGJ1dHRvbltwcmludF0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hQcmludERpcmVjdGl2ZSB7XG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgSFRNTCBlbGVtZW50IHRob3NlIGNvbnRlbnRzIG5lZWQgdG8gYmUgcHJpbnRlZFxuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdEBJbnB1dCgpIHByaW50U2VjdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFRpdGxlIG9mIHRoZSBIVE1MIGVsZW1lbnQgdGhvc2UgY29udGVudHMgbmVlZCB0byBiZSBwcmludGVkXG5cdCAqXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKi9cblx0QElucHV0KCkgcHJpbnRUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJZiBgdHJ1ZWAsIHVzZXMgQ1NTIG9mIEhUTWwgZWxlbWVudCwgb3RoZXJ3aXNlIG5vIENTUyBhcHBsaWVkXG5cdCAqXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKi9cblx0QElucHV0KCkgdXNlRXhpc3RpbmdDc3MgPSBmYWxzZTtcblxuXHQvKipcblx0ICogQSBkZWxheSBpbiBtaWxsaXNlY29uZHMgdG8gZm9yY2UgdGhlIHByaW50IGRpYWxvZyB0byB3YWl0IGJlZm9yZSBvcGVuZWQuIERlZmF1bHQ6IDBcblx0ICpcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqL1xuXHRASW5wdXQoKSBwcmludERlbGF5ID0gMDtcblxuXHQvKipcblx0ICogSW5zdGFuY2Ugb2YgdGhlIE1hdCBUYWJsZSBEYXRhIFNvdXJjZVxuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdEBJbnB1dCgpIG1hdFRhYmxlRGF0YVNvdXJjZSE6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xuXG5cdC8qKlxuXHQgKiBJbnN0YW5jZSBvZiB0aGUgTWF0IFBhZ2luYXRvclxuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdEBJbnB1dCgpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcblxuXHQvKipcblx0ICogSUQgb2YgdGhlIE1hdCBQYWdpbmF0b3Jcblx0ICpcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqL1xuXHRASW5wdXQoKSBwYWdpbmF0b3JJZCA9ICcnO1xuXG5cdC8qKlxuXHQgKiBIVE1MIHRhZyBJRCBvZiB0aGUgTWF0LVRhYmxlIElucHV0IEZpbHRlclxuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdEBJbnB1dCgpIGlucHV0RmlsdGVySWQgPSAnJztcblxuXHQvKipcblx0ICogSWYgYHRydWVgLCByZWZlcmVuY2VkIHRhYmxlIGlzIE1hdC1UYWJsZVxuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdEBJbnB1dCgpIGlzTWF0VGFibGUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSWYgYHRydWVgIE1hdC1UYWJsZSBwYWdpbmF0b3Igd2lsbCBiZSBoaWRkZW5cblx0ICpcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqL1xuXHRASW5wdXQoKSBoaWRlTWF0VGFibGVQYWdpbmF0b3IgPSBmYWxzZTtcblxuXHRwdWJsaWMgcHJpbnRTdHlsZUFycmF5ID0gW107XG5cdC8qKlxuXHQgKiBMaXN0IG9mIFN0eWxlIHNoZWV0IGZpbGVzXG5cdCAqXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKi9cblx0cHJpdmF0ZSBzdHlsZVNoZWV0RmlsZUFycmF5ID0gJyc7XG5cblx0LyoqXG5cdCAqIExpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdGhhdCBuZWVkcyB0byBiZSBhcHBsaWVkIHdoaWxlIHByaW50aW5nIHRoZSBkb2N1bWVudFxuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdEBJbnB1dCgpXG5cdHNldCBwcmludFN0eWxlKHsgdmFsdWVzIH06IFByaW50U3R5bGVQYXJhbXMpIHtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcblx0XHRcdGlmICh2YWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdHRoaXMucHJpbnRTdHlsZUFycmF5LnB1c2goKGtleSArIEpTT04uc3RyaW5naWZ5KHZhbHVlc1trZXldKSkucmVwbGFjZSgvWydcIl0rL2csICcnKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMucmV0dXJuU3R5bGVWYWx1ZXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIGdpdmVuIHN0eWxlIHNoZWV0IGZpbGVzIHRvIHByaW50IGRvY3VtZW50XG5cdCAqXG5cdCAqIEBwYXJhbSBjc3NMaXN0IENvbW1hIHNlcGFyYXRlZCB2YWx1ZSBvZiBDU1MgZmlsZSBuYW1lc1xuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdEBJbnB1dCgpXG5cdHNldCBzdHlsZVNoZWV0RmlsZShjc3NMaXN0OiBzdHJpbmcpIHtcblx0XHRpZiAoY3NzTGlzdC5pbmRleE9mKCcsJykgIT09IC0xKSB7XG5cdFx0XHRjb25zdCBjc3NGaWxlQXJyYXkgPSBjc3NMaXN0LnNwbGl0KCcsJyk7XG5cdFx0XHRmb3IgKGNvbnN0IGNzc0ZpbGVOYW1lIG9mIGNzc0ZpbGVBcnJheSkge1xuXHRcdFx0XHR0aGlzLnN0eWxlU2hlZXRGaWxlQXJyYXkgPSB0aGlzLnN0eWxlU2hlZXRGaWxlQXJyYXkgKyBOZ3hQcmludERpcmVjdGl2ZS5saW5rVGFnRm4oY3NzRmlsZU5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0eWxlU2hlZXRGaWxlQXJyYXkgPSBOZ3hQcmludERpcmVjdGl2ZS5saW5rVGFnRm4oY3NzTGlzdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkIGxpbmsgSFRNbCB0YWcgYmFzZWQgb24gZ2l2ZW4gZmlsZSBuYW1lXG5cdCAqXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgbGlua1RhZ0ZuKGNzc0ZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIke2Nzc0ZpbGVOYW1lfVwiPmA7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyBIVE1MIGVsZW1lbnQgYnkgdGFnIG5hbWVcblx0ICpcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqL1xuXHRwcml2YXRlIHN0YXRpYyBnZXRFbGVtZW50VGFnKHRhZzoga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwKTogc3RyaW5nIHtcblx0XHRjb25zdCBodG1sOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnKTtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG5cdFx0XHRodG1sLnB1c2goZWxlbWVudC5vdXRlckhUTUwpO1xuXHRcdH1cblx0XHRyZXR1cm4gaHRtbC5qb2luKCdcXHJcXG4nKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcmludCB0aGUgZWxlbWVudCB1cG9uIGNsaWNraW5nIHRoZSBidXR0b25cblx0ICpcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqL1xuXHRASG9zdExpc3RlbmVyKCdjbGljaycpXG5cdHB1YmxpYyBwcmludCgpOiB2b2lkIHtcblx0XHQvL0hpZGUgcGFnaW5hdG9yIGZvciBNYXRlcmlhbCB0YWJsZVxuXHRcdGlmICh0aGlzLmlzTWF0VGFibGUgJiYgdGhpcy5oaWRlTWF0VGFibGVQYWdpbmF0b3IgJiYgdGhpcy5tYXRUYWJsZURhdGFTb3VyY2UpIHtcblx0XHRcdHRoaXMubWF0VGFibGVEYXRhU291cmNlLnBhZ2luYXRvciA9IG51bGw7XG5cdFx0fVxuXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc01hdFRhYmxlKSB7XG5cdFx0XHRcdHRoaXMuaGlkZU1hdFBhZ2luYXRvckJlZm9yZVByaW50aW5nKCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERvIHNvbWV0aGluZyBhZnRlclxuXHRcdFx0bGV0IHByaW50Q29udGVudHM7XG5cdFx0XHRsZXQgcG9wdXBXaW47XG5cdFx0XHRsZXQgc3R5bGVzID0gJyc7XG5cdFx0XHRsZXQgbGlua3MgPSAnJztcblxuXHRcdFx0aWYgKHRoaXMudXNlRXhpc3RpbmdDc3MpIHtcblx0XHRcdFx0c3R5bGVzID0gTmd4UHJpbnREaXJlY3RpdmUuZ2V0RWxlbWVudFRhZygnc3R5bGUnKTtcblx0XHRcdFx0bGlua3MgPSBOZ3hQcmludERpcmVjdGl2ZS5nZXRFbGVtZW50VGFnKCdsaW5rJyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5wcmludFNlY3Rpb25JZCkge1xuXHRcdFx0XHRwcmludENvbnRlbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5wcmludFNlY3Rpb25JZCk/LmlubmVySFRNTDtcblx0XHRcdFx0cG9wdXBXaW4gPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycsICd0b3A9MCxsZWZ0PTAsaGVpZ2h0PWF1dG8sd2lkdGg9YXV0bycpO1xuXHRcdFx0XHRwb3B1cFdpbj8uZG9jdW1lbnQub3BlbigpO1xuXHRcdFx0XHRwb3B1cFdpbj8uZG9jdW1lbnQud3JpdGUoYFxuICAgICAgPGh0bWwgbGFuZz1cImVuLXVzXCI+XG4gICAgICAgIDxoZWFkPlxuICAgICAgICAgIDx0aXRsZT4ke3RoaXMucHJpbnRUaXRsZSA/IHRoaXMucHJpbnRUaXRsZSA6ICcnfTwvdGl0bGU+XG4gICAgICAgICAgJHt0aGlzLnJldHVyblN0eWxlVmFsdWVzKCl9XG4gICAgICAgICAgJHt0aGlzLnN0eWxlU2hlZXRGaWxlQXJyYXl9XG4gICAgICAgICAgJHtzdHlsZXN9XG4gICAgICAgICAgJHtsaW5rc31cbiAgICAgICAgPC9oZWFkPlxuICAgICAgICA8Ym9keT5cbiAgICAgICAgICAke3ByaW50Q29udGVudHN9XG4gICAgICAgICAgPHNjcmlwdCBkZWZlcj5cbiAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJQcmludCgpIHtcbiAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0cmlnZ2VyUHJpbnQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgd2luZG93LnByaW50KCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgd2luZG93LmNsb3NlKCk7IH0sIDApO1xuICAgICAgICAgICAgICB9LCAke3RoaXMucHJpbnREZWxheX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0cmlnZ2VyUHJpbnQsIGZhbHNlKTtcbiAgICAgICAgICA8L3NjcmlwdD5cbiAgICAgICAgPC9ib2R5PlxuICAgICAgPC9odG1sPmApO1xuXG5cdFx0XHRcdHBvcHVwV2luPy5kb2N1bWVudC5jbG9zZSgpO1xuXG5cdFx0XHRcdC8vUmV2ZXJ0IGJhY2sgdGhlIG1hdC1wYWdpbmF0b3IgYWZ0ZXIgcHJpbnRpbmdcblx0XHRcdFx0aWYgKHRoaXMuaXNNYXRUYWJsZSkge1xuXHRcdFx0XHRcdHRoaXMuc2hvd01hdFBhZ2luYXRvckFmdGVyUHJpbnRpbmcoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sIDEwMDApOyAvLzEgc2Vjb25kIHRpbWVvdXQgdG8gaGlkZSBwYWdpbmF0b3Jcblx0fVxuXG5cdC8qKlxuXHQgKiBIaWRlIE1hdCBQYWdpbmF0b3IgYmVmb3JlIFByaW50aW5nXG5cdCAqXG5cdCAqIEBzaW5jZSAxMi4wLjFcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKi9cblx0cHJpdmF0ZSBoaWRlTWF0UGFnaW5hdG9yQmVmb3JlUHJpbnRpbmcoKSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMucGFnaW5hdG9ySWQpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cdFx0aWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaW5wdXRGaWx0ZXJJZCkgIT0gbnVsbCkge1xuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pbnB1dEZpbHRlcklkKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93IE1hdCBQYWdpbmF0b3IgYWZ0ZXIgUHJpbnRpbmdcblx0ICpcblx0ICogQHNpbmNlIDEyLjAuMVxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqL1xuXHRwcml2YXRlIHNob3dNYXRQYWdpbmF0b3JBZnRlclByaW50aW5nKCkge1xuXHRcdHRoaXMubWF0VGFibGVEYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnBhZ2luYXRvcklkKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblx0XHRpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pbnB1dEZpbHRlcklkKSAhPSBudWxsKSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlucHV0RmlsdGVySWQpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB0aGUgc3RyaW5nIHRoYXQgY3JlYXRlIHRoZSBzdHlsZXNoZWV0IHdoaWNoIHdpbGwgYmUgaW5qZWN0ZWQgbGF0ZXIgd2l0aGluIDxzdHlsZT48L3N0eWxlPiB0YWcuIEpvaW4vcmVwbGFjZSB0byB0cmFuc2Zvcm0gYW4gYXJyYXkgb2JqZWN0cyB0byBjc3Mtc3R5bGVkIHN0cmluZ1xuXHQgKlxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICovXG5cdHByaXZhdGUgcmV0dXJuU3R5bGVWYWx1ZXMoKSB7XG5cdFx0cmV0dXJuIGA8c3R5bGU+ICR7dGhpcy5wcmludFN0eWxlQXJyYXkuam9pbignICcpLnJlcGxhY2UoLywvZywgJzsnKX0gPC9zdHlsZT5gO1xuXHR9XG59XG5cbmludGVyZmFjZSBQcmludFN0eWxlUGFyYW1zIHtcblx0dmFsdWVzOiB7IFtwOiBzdHJpbmddOiB7IFtwOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xufVxuIl19
@@ -0,0 +1,44 @@
1
+ import { Directive, EventEmitter, HostListener, Output, input } from '@angular/core';
2
+ import { Subject, throttleTime } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class PreventMultipleClicksDirective {
5
+ constructor() {
6
+ this.throttleTime = input(2000);
7
+ this.throttleClick = new EventEmitter();
8
+ this.clicks = new Subject();
9
+ }
10
+ /**
11
+ * Intercepts click event and stops default navigation. After first click set {@link throttleTime} to 2000 to prevent duplicate clicks
12
+ *
13
+ * @param event DOM event
14
+ *
15
+ * @author Pavan Kumar Jadda
16
+ * @since 2.3.27
17
+ */
18
+ clickEvent(event) {
19
+ event.preventDefault();
20
+ event.stopPropagation();
21
+ this.clicks.next(event);
22
+ }
23
+ ngOnInit() {
24
+ this.subscription = this.clicks.pipe(throttleTime(this.throttleTime())).subscribe((e) => this.throttleClick.emit(e));
25
+ }
26
+ ngOnDestroy() {
27
+ this.subscription?.unsubscribe();
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PreventMultipleClicksDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.0", type: PreventMultipleClicksDirective, isStandalone: true, selector: "[preventMultipleClicks]", inputs: { throttleTime: { classPropertyName: "throttleTime", publicName: "throttleTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { throttleClick: "throttleClick" }, host: { listeners: { "click": "clickEvent($event)" } }, ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PreventMultipleClicksDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{
35
+ selector: '[preventMultipleClicks]',
36
+ standalone: true,
37
+ }]
38
+ }], propDecorators: { throttleClick: [{
39
+ type: Output
40
+ }], clickEvent: [{
41
+ type: HostListener,
42
+ args: ['click', ['$event']]
43
+ }] } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1tdWx0aXBsZS1jbGlja3MuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvZGlyZWN0aXZlcy9wcmV2ZW50LW11bHRpcGxlLWNsaWNrcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFxQixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNM0QsTUFBTSxPQUFPLDhCQUE4QjtJQUozQztRQUtDLGlCQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVyQyxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQXlCL0I7SUF0QkE7Ozs7Ozs7T0FPRztJQUVILFVBQVUsQ0FBQyxLQUFVO1FBQ3BCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs4R0E1QlcsOEJBQThCO2tHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBSjFDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzhCQUdVLGFBQWE7c0JBQXRCLE1BQU07Z0JBY1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbcHJldmVudE11bHRpcGxlQ2xpY2tzXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFByZXZlbnRNdWx0aXBsZUNsaWNrc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblx0dGhyb3R0bGVUaW1lID0gaW5wdXQoMjAwMCk7XG5cdEBPdXRwdXQoKSB0aHJvdHRsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdHByaXZhdGUgY2xpY2tzID0gbmV3IFN1YmplY3QoKTtcblx0cHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogSW50ZXJjZXB0cyBjbGljayBldmVudCBhbmQgc3RvcHMgZGVmYXVsdCBuYXZpZ2F0aW9uLiBBZnRlciBmaXJzdCBjbGljayBzZXQge0BsaW5rIHRocm90dGxlVGltZX0gdG8gMjAwMCB0byBwcmV2ZW50IGR1cGxpY2F0ZSBjbGlja3Ncblx0ICpcblx0ICogQHBhcmFtIGV2ZW50IERPTSBldmVudFxuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAyLjMuMjdcblx0ICovXG5cdEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcblx0Y2xpY2tFdmVudChldmVudDogYW55KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLmNsaWNrcy5uZXh0KGV2ZW50KTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jbGlja3MucGlwZSh0aHJvdHRsZVRpbWUodGhpcy50aHJvdHRsZVRpbWUoKSkpLnN1YnNjcmliZSgoZSkgPT4gdGhpcy50aHJvdHRsZUNsaWNrLmVtaXQoZSkpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TypeOfPipe {
4
+ transform(value) {
5
+ return typeof value;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TypeOfPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: TypeOfPipe, isStandalone: true, name: "typeOf" }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TypeOfPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'typeOf',
14
+ standalone: true,
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1vZi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvcGlwZXMvdHlwZS1vZi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sVUFBVTtJQUN0QixTQUFTLENBQUMsS0FBVTtRQUNuQixPQUFPLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLENBQUM7OEdBSFcsVUFBVTs0R0FBVixVQUFVOzsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuXHRuYW1lOiAndHlwZU9mJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVHlwZU9mUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHR0cmFuc2Zvcm0odmFsdWU6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZTtcblx0fVxufVxuIl19