chrv-components 1.2.8 → 1.2.10

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 (54) hide show
  1. package/chrv-components-1.2.10.tgz +0 -0
  2. package/{esm2022 → esm2020}/chrv-components.mjs +4 -4
  3. package/{esm2022 → esm2020}/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +22 -22
  4. package/{esm2022 → esm2020}/lib/chr-button/chr-button.component.mjs +51 -51
  5. package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
  6. package/{esm2022 → esm2020}/lib/chr-components.module.mjs +126 -126
  7. package/{esm2022 → esm2020}/lib/chr-delete-modal/chr-delete-modal.component.mjs +22 -22
  8. package/esm2020/lib/chr-form/chr-form.component.mjs +132 -0
  9. package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +58 -0
  10. package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +54 -0
  11. package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +52 -0
  12. package/{esm2022 → esm2020}/lib/chr-paginator/chr-paginator.component.mjs +73 -73
  13. package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +136 -0
  14. package/{esm2022 → esm2020}/lib/chr-searchbar/chr-searchbar.component.mjs +29 -29
  15. package/esm2020/lib/chr-separator/chr-separator.component.mjs +11 -0
  16. package/esm2020/lib/chr-table/chr-table.component.mjs +62 -0
  17. package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +49 -0
  18. package/{esm2022 → esm2020}/lib/services/dialog.service.mjs +29 -29
  19. package/esm2020/public-api.mjs +22 -0
  20. package/fesm2015/chrv-components.mjs +886 -0
  21. package/fesm2015/chrv-components.mjs.map +1 -0
  22. package/fesm2020/chrv-components.mjs +878 -0
  23. package/{fesm2022 → fesm2020}/chrv-components.mjs.map +1 -1
  24. package/index.d.ts +5 -5
  25. package/lib/chr-breadcrumb/chr-breadcrumb.component.d.ts +15 -15
  26. package/lib/chr-button/chr-button.component.d.ts +19 -19
  27. package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -13
  28. package/lib/chr-components.module.d.ts +30 -30
  29. package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -11
  30. package/lib/chr-form/chr-form.component.d.ts +57 -57
  31. package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -10
  32. package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -10
  33. package/lib/chr-form/chr-validators/type-validator.d.ts +10 -10
  34. package/lib/chr-paginator/chr-paginator.component.d.ts +26 -26
  35. package/lib/chr-search-select/chr-search-select.component.d.ts +44 -44
  36. package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -14
  37. package/lib/chr-separator/chr-separator.component.d.ts +5 -5
  38. package/lib/chr-table/chr-table.component.d.ts +42 -42
  39. package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +16 -16
  40. package/lib/services/dialog.service.d.ts +10 -10
  41. package/package.json +16 -11
  42. package/public-api.d.ts +18 -16
  43. package/chrv-components-1.2.8.tgz +0 -0
  44. package/esm2022/lib/chr-checkbox/chr-checkbox.component.mjs +0 -37
  45. package/esm2022/lib/chr-form/chr-form.component.mjs +0 -132
  46. package/esm2022/lib/chr-form/chr-validators/decimal-validator.mjs +0 -58
  47. package/esm2022/lib/chr-form/chr-validators/max-date-validator.mjs +0 -54
  48. package/esm2022/lib/chr-form/chr-validators/type-validator.mjs +0 -52
  49. package/esm2022/lib/chr-search-select/chr-search-select.component.mjs +0 -136
  50. package/esm2022/lib/chr-separator/chr-separator.component.mjs +0 -11
  51. package/esm2022/lib/chr-table/chr-table.component.mjs +0 -62
  52. package/esm2022/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +0 -49
  53. package/esm2022/public-api.mjs +0 -20
  54. package/fesm2022/chrv-components.mjs +0 -876
@@ -0,0 +1,58 @@
1
+ import { Directive, Input, Injectable } from '@angular/core';
2
+ import { NG_VALIDATORS, } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export class DecimalValidatorDirective {
5
+ validate(control) {
6
+ return this.amount ? decimal(this.amount)(control) : null;
7
+ }
8
+ }
9
+ DecimalValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DecimalValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
+ DecimalValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: DecimalValidatorDirective, selector: "[app-decimal]", inputs: { amount: "amount" }, providers: [
11
+ {
12
+ provide: NG_VALIDATORS,
13
+ useExisting: DecimalValidatorDirective,
14
+ multi: true,
15
+ },
16
+ ], ngImport: i0 });
17
+ DecimalValidatorDirective.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DecimalValidatorDirective, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DecimalValidatorDirective, decorators: [{
19
+ type: Injectable,
20
+ args: [{ providedIn: 'root' }]
21
+ }, {
22
+ type: Directive,
23
+ args: [{
24
+ selector: '[app-decimal]',
25
+ providers: [
26
+ {
27
+ provide: NG_VALIDATORS,
28
+ useExisting: DecimalValidatorDirective,
29
+ multi: true,
30
+ },
31
+ ],
32
+ }]
33
+ }], propDecorators: { amount: [{
34
+ type: Input
35
+ }] } });
36
+ export function decimal(amount) {
37
+ return (control) => {
38
+ const value = control.value;
39
+ if (!value) {
40
+ return null;
41
+ }
42
+ let isTooLong = false;
43
+ const str = `${value}`;
44
+ isTooLong =
45
+ str.indexOf(',') != -1
46
+ ? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount
47
+ : str.indexOf('.') != -1
48
+ ? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount
49
+ : false;
50
+ return isTooLong
51
+ ? {
52
+ decimal: true,
53
+ max: amount,
54
+ }
55
+ : null;
56
+ };
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWF4QixNQUFNLE9BQU8seUJBQXlCO0lBR3BDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDOzt1SEFMVSx5QkFBeUI7MkdBQXpCLHlCQUF5QixzRUFSekI7UUFDVDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSx5QkFBeUI7WUFDdEMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGOzJIQUVVLHlCQUF5QixjQVhaLE1BQU07NEZBV25CLHlCQUF5QjtrQkFYckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsMkJBQTJCOzRCQUN0QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFFVSxNQUFNO3NCQUFkLEtBQUs7O0FBT1IsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUN2QixTQUFTO1lBQ1AsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNO2dCQUM3RCxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNO29CQUM3RCxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRVosT0FBTyxTQUFTO1lBQ2QsQ0FBQyxDQUFFO2dCQUNDLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEdBQUcsRUFBRSxNQUFNO2FBQ1M7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXBwLWRlY2ltYWxdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IERlY2ltYWxWYWxpZGF0b3JEaXJlY3RpdmUsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVjaW1hbFZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcbiAgQElucHV0KCkgYW1vdW50OiBudW1iZXI7XHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmFtb3VudCA/IGRlY2ltYWwodGhpcy5hbW91bnQpKGNvbnRyb2wpIDogbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWNpbWFsKGFtb3VudDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlzVG9vTG9uZyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHN0ciA9IGAke3ZhbHVlfWA7XHJcbiAgICBpc1Rvb0xvbmcgPVxyXG4gICAgICBzdHIuaW5kZXhPZignLCcpICE9IC0xXHJcbiAgICAgICAgPyAoc3RyLnNwbGl0KCcsJylbMV0gPyBzdHIuc3BsaXQoJywnKVsxXS5sZW5ndGggOiAwKSA+IGFtb3VudFxyXG4gICAgICAgIDogc3RyLmluZGV4T2YoJy4nKSAhPSAtMVxyXG4gICAgICAgID8gKHN0ci5zcGxpdCgnLicpWzFdID8gc3RyLnNwbGl0KCcuJylbMV0ubGVuZ3RoIDogMCkgPiBhbW91bnRcclxuICAgICAgICA6IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiBpc1Rvb0xvbmdcclxuICAgICAgPyAoe1xyXG4gICAgICAgICAgZGVjaW1hbDogdHJ1ZSxcclxuICAgICAgICAgIG1heDogYW1vdW50LFxyXG4gICAgICAgIH0gYXMgVmFsaWRhdGlvbkVycm9ycylcclxuICAgICAgOiBudWxsO1xyXG4gIH07XHJcbn1cclxuIl19
@@ -0,0 +1,54 @@
1
+ import { Directive, Input, Injectable } from '@angular/core';
2
+ import { NG_VALIDATORS, } from '@angular/forms';
3
+ import * as moment from 'moment';
4
+ import * as i0 from "@angular/core";
5
+ export class MaxDateValidatorDirective {
6
+ validate(control) {
7
+ return this.date ? maxDate(this.date)(control) : null;
8
+ }
9
+ }
10
+ MaxDateValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaxDateValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
11
+ MaxDateValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: MaxDateValidatorDirective, selector: "[app-max-date]", inputs: { date: "date" }, providers: [
12
+ {
13
+ provide: NG_VALIDATORS,
14
+ useExisting: MaxDateValidatorDirective,
15
+ multi: true,
16
+ },
17
+ ], ngImport: i0 });
18
+ MaxDateValidatorDirective.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaxDateValidatorDirective, providedIn: 'root' });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MaxDateValidatorDirective, decorators: [{
20
+ type: Injectable,
21
+ args: [{ providedIn: 'root' }]
22
+ }, {
23
+ type: Directive,
24
+ args: [{
25
+ selector: '[app-max-date]',
26
+ providers: [
27
+ {
28
+ provide: NG_VALIDATORS,
29
+ useExisting: MaxDateValidatorDirective,
30
+ multi: true,
31
+ },
32
+ ],
33
+ }]
34
+ }], propDecorators: { date: [{
35
+ type: Input
36
+ }] } });
37
+ export function maxDate(date) {
38
+ return (control) => {
39
+ const value = control.value;
40
+ if (!value) {
41
+ return null;
42
+ }
43
+ const maxDate = moment(date);
44
+ const inputDate = moment(value);
45
+ return !(inputDate.isValid() && inputDate.isBefore(maxDate))
46
+ ? {
47
+ maxdate: true,
48
+ max: maxDate.toDate(),
49
+ actual: value,
50
+ }
51
+ : null;
52
+ };
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWRhdGUtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLXZhbGlkYXRvcnMvbWF4LWRhdGUtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBRUwsYUFBYSxHQUlkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBYWpDLE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hELENBQUM7O3VIQUxVLHlCQUF5QjsyR0FBekIseUJBQXlCLG1FQVJ6QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLHlCQUF5QjtZQUN0QyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Y7MkhBRVUseUJBQXlCLGNBWFosTUFBTTs0RkFXbkIseUJBQXlCO2tCQVhyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7a0JBQ2pDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLDJCQUEyQjs0QkFDdEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLOztBQU9SLE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBVTtJQUNoQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUU7Z0JBQ0MsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSxLQUFLO2FBQ087WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcC1tYXgtZGF0ZV0nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogTWF4RGF0ZVZhbGlkYXRvckRpcmVjdGl2ZSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXhEYXRlVmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuICBASW5wdXQoKSBkYXRlOiBEYXRlO1xyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlID8gbWF4RGF0ZSh0aGlzLmRhdGUpKGNvbnRyb2wpIDogbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXhEYXRlKGRhdGU6IERhdGUpOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1heERhdGUgPSBtb21lbnQoZGF0ZSk7XHJcbiAgICBjb25zdCBpbnB1dERhdGUgPSBtb21lbnQodmFsdWUpO1xyXG5cclxuICAgIHJldHVybiAhKGlucHV0RGF0ZS5pc1ZhbGlkKCkgJiYgaW5wdXREYXRlLmlzQmVmb3JlKG1heERhdGUpKVxyXG4gICAgICA/ICh7XHJcbiAgICAgICAgICBtYXhkYXRlOiB0cnVlLFxyXG4gICAgICAgICAgbWF4OiBtYXhEYXRlLnRvRGF0ZSgpLFxyXG4gICAgICAgICAgYWN0dWFsOiB2YWx1ZSxcclxuICAgICAgICB9IGFzIFZhbGlkYXRpb25FcnJvcnMpXHJcbiAgICAgIDogbnVsbDtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Directive, Input, Injectable } from '@angular/core';
2
+ import { NG_VALIDATORS, } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export class TypeValidatorDirective {
5
+ validate(control) {
6
+ return this.type ? type(this.type)(control) : null;
7
+ }
8
+ }
9
+ TypeValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TypeValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
+ TypeValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TypeValidatorDirective, selector: "[app-type]", inputs: { type: "type" }, providers: [
11
+ {
12
+ provide: NG_VALIDATORS,
13
+ useExisting: TypeValidatorDirective,
14
+ multi: true,
15
+ },
16
+ ], ngImport: i0 });
17
+ TypeValidatorDirective.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TypeValidatorDirective, providedIn: 'root' });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TypeValidatorDirective, decorators: [{
19
+ type: Injectable,
20
+ args: [{ providedIn: 'root' }]
21
+ }, {
22
+ type: Directive,
23
+ args: [{
24
+ selector: '[app-type]',
25
+ providers: [
26
+ {
27
+ provide: NG_VALIDATORS,
28
+ useExisting: TypeValidatorDirective,
29
+ multi: true,
30
+ },
31
+ ],
32
+ }]
33
+ }], propDecorators: { type: [{
34
+ type: Input
35
+ }] } });
36
+ export function type(type) {
37
+ return (control) => {
38
+ const value = control.value;
39
+ if (!value) {
40
+ return null;
41
+ }
42
+ const isType = typeof value == type;
43
+ return !isType
44
+ ? {
45
+ type: true,
46
+ requiredType: type,
47
+ actualType: typeof value,
48
+ }
49
+ : null;
50
+ };
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWF4QixNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDOztvSEFMVSxzQkFBc0I7d0dBQXRCLHNCQUFzQiwrREFSdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxzQkFBc0I7WUFDbkMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGO3dIQUVVLHNCQUFzQixjQVhULE1BQU07NEZBV25CLHNCQUFzQjtrQkFYbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsd0JBQXdCOzRCQUNuQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFFVSxJQUFJO3NCQUFaLEtBQUs7O0FBT1IsTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFZO0lBQy9CLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7UUFFcEMsT0FBTyxDQUFDLE1BQU07WUFDWixDQUFDLENBQUU7Z0JBQ0MsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFVBQVUsRUFBRSxPQUFPLEtBQUs7YUFDSjtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvcixcclxuICBWYWxpZGF0b3JGbixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHAtdHlwZV0nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUeXBlVmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPyB0eXBlKHRoaXMudHlwZSkoY29udHJvbCkgOiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHR5cGUodHlwZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXNUeXBlID0gdHlwZW9mIHZhbHVlID09IHR5cGU7XHJcblxyXG4gICAgcmV0dXJuICFpc1R5cGVcclxuICAgICAgPyAoe1xyXG4gICAgICAgICAgdHlwZTogdHJ1ZSxcclxuICAgICAgICAgIHJlcXVpcmVkVHlwZTogdHlwZSxcclxuICAgICAgICAgIGFjdHVhbFR5cGU6IHR5cGVvZiB2YWx1ZSxcclxuICAgICAgICB9IGFzIFZhbGlkYXRpb25FcnJvcnMpXHJcbiAgICAgIDogbnVsbDtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,73 +1,73 @@
1
- import { Component, EventEmitter, Output, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "ngx-pagination";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "../chr-form/chr-form.component";
6
- export class ChrPaginatorComponent {
7
- constructor(service) {
8
- this.service = service;
9
- this.currentPage = 1;
10
- this.pageChange = new EventEmitter();
11
- this.pageSizeChange = new EventEmitter();
12
- this.previous = () => {
13
- this.currentPage--;
14
- this.emit();
15
- };
16
- this.next = () => {
17
- this.currentPage++;
18
- this.emit();
19
- };
20
- this.setPage = (page) => {
21
- if (page < 1 || page > this.lastPage())
22
- return;
23
- this.currentPage = page;
24
- this.emit();
25
- };
26
- this.setPageEventHandler = (event) => {
27
- return this.setPage(event.target.value);
28
- };
29
- this.isFirstPage = () => {
30
- return this.currentPage == 1;
31
- };
32
- this.setPageSize = (pageSize) => {
33
- this.setPage(1);
34
- this.instance.itemsPerPage = pageSize;
35
- this.pageSizeChange.emit(pageSize);
36
- };
37
- this.setPageSizeEventHandler = (event) => {
38
- return this.setPageSize(event.target.value);
39
- };
40
- this.isLastPage = () => {
41
- if (!this.instance.totalItems)
42
- return false;
43
- return (this.currentPage ==
44
- Math.ceil(this.instance.totalItems / this.instance.itemsPerPage));
45
- };
46
- this.pageSize = () => this.instance.itemsPerPage;
47
- this.lastPage = () => this.instance.totalItems
48
- ? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)
49
- : 1;
50
- this.emit = (page = undefined) => {
51
- if (!page)
52
- this.pageChange.emit(this.currentPage);
53
- else
54
- this.pageChange.emit(page);
55
- };
56
- }
57
- ngAfterContentChecked() {
58
- //console.log(this.service, this.service.getInstance('chr_data-table'));
59
- this.instance = this.service.getInstance('chr_data-table');
60
- }
61
- ngOnInit() { }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ChrPaginatorComponent, deps: [{ token: i1.PaginationService }], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ChrPaginatorComponent, selector: "app-chr-paginator", outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n \u00C9l\u00E9ments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Pr\u00E9c\u00E9dent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ChrFormComponent, selector: "app-chr-form", inputs: ["sections", "valid", "model", "disabled"], outputs: ["validChange", "modelChange", "valuesChange"] }] }); }
64
- }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ChrPaginatorComponent, decorators: [{
66
- type: Component,
67
- args: [{ selector: 'app-chr-paginator', template: "<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n \u00C9l\u00E9ments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Pr\u00E9c\u00E9dent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>" }]
68
- }], ctorParameters: () => [{ type: i1.PaginationService }], propDecorators: { pageChange: [{
69
- type: Output
70
- }], pageSizeChange: [{
71
- type: Output
72
- }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItcGFnaW5hdG9yL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXBhZ2luYXRvci9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRdkIsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFtQixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUx0QyxnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUNyQixlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWM3RCxhQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFSyxTQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFSyxZQUFPLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQUUsT0FBTztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFSyx3QkFBbUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztRQUVLLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDO1FBRUssZ0JBQVcsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFSyw0QkFBdUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzlDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUVLLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM1QyxPQUFPLENBQ0wsSUFBSSxDQUFDLFdBQVc7Z0JBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FDakUsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVLLGFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUU1QyxhQUFRLEdBQUcsR0FBRyxFQUFFLENBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUEsU0FBSSxHQUFHLENBQUMsT0FBMkIsU0FBUyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLElBQUk7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOztnQkFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDO0lBL0Q4QyxDQUFDO0lBRWpELHFCQUFxQjtRQUNuQix3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdEMsZ0JBQWdCLENBQ0ssQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7OEdBZlIscUJBQXFCO2tHQUFyQixxQkFBcUIsa0lDZGxDLDgzQ0FrQ007OzJGRHBCTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO3NGQU1uQixVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkluc3RhbmNlLCBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJ25neC1wYWdpbmF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoci1wYWdpbmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hyLXBhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgcHVibGljIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGluc3RhbmNlOiBQYWdpbmF0aW9uSW5zdGFuY2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuc2VydmljZSwgdGhpcy5zZXJ2aWNlLmdldEluc3RhbmNlKCdjaHJfZGF0YS10YWJsZScpKTtcbiAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5zZXJ2aWNlLmdldEluc3RhbmNlKFxuICAgICAgJ2Nocl9kYXRhLXRhYmxlJ1xuICAgICkgYXMgUGFnaW5hdGlvbkluc3RhbmNlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHB1YmxpYyBwcmV2aW91cyA9ICgpID0+IHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLS07XG4gICAgdGhpcy5lbWl0KCk7XG4gIH07XG5cbiAgcHVibGljIG5leHQgPSAoKSA9PiB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSsrO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRQYWdlID0gKHBhZ2U6IG51bWJlcikgPT4ge1xuICAgIGlmIChwYWdlIDwgMSB8fCBwYWdlID4gdGhpcy5sYXN0UGFnZSgpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5lbWl0KCk7XG4gIH07XG5cbiAgcHVibGljIHNldFBhZ2VFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldFBhZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBwdWJsaWMgaXNGaXJzdFBhZ2UgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2UgPT0gMTtcbiAgfTtcblxuICBwdWJsaWMgc2V0UGFnZVNpemUgPSAocGFnZVNpemU6IG51bWJlcikgPT4ge1xuICAgIHRoaXMuc2V0UGFnZSgxKTtcbiAgICB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xuICAgIHRoaXMucGFnZVNpemVDaGFuZ2UuZW1pdChwYWdlU2l6ZSk7XG4gIH07XG5cbiAgcHVibGljIHNldFBhZ2VTaXplRXZlbnRIYW5kbGVyID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRQYWdlU2l6ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHB1YmxpYyBpc0xhc3RQYWdlID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPT1cbiAgICAgIE1hdGguY2VpbCh0aGlzLmluc3RhbmNlLnRvdGFsSXRlbXMgLyB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSlcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBwYWdlU2l6ZSA9ICgpID0+IHRoaXMuaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xuXG4gIHB1YmxpYyBsYXN0UGFnZSA9ICgpID0+XG4gICAgdGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zXG4gICAgICA/IE1hdGguY2VpbCh0aGlzLmluc3RhbmNlLnRvdGFsSXRlbXMgLyB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSlcbiAgICAgIDogMTtcblxuICBwcml2YXRlIGVtaXQgPSAocGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFwYWdlKSB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICBlbHNlIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1zdGFydCBweS0yIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlclwiPlxuICAgICAgICDDiWzDqW1lbnRzIHBhciBwYWdlOlxuICAgICAgICA8YXBwLWNoci1mb3JtIGNsYXNzPVwibWwtMVwiIChrZXl1cC5lbnRlcik9XCJzZXRQYWdlU2l6ZUV2ZW50SGFuZGxlcigkZXZlbnQpXCIgW3NlY3Rpb25zXT1cIltcbiAgICAgICAgeyBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICBuYW1lOiAncGFnZVNpemUnLFxuICAgICAgICAgICAgdmFsdWU6IHBhZ2VTaXplKCksXG4gICAgICAgICAgICB3aWR0aDogJ3JvdydcbiAgICAgICAgfV1cbiAgICAgICAgfV1cIj5cbiAgICAgICAgPC9hcHAtY2hyLWZvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgcHktMiBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhaXNGaXJzdFBhZ2UoKVwiIChjbGljayk9XCJwcmV2aW91cygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1maXQgY3Vyc29yLXBvaW50ZXJcIj5QcsOpY8OpZGVudDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgbXgtMiB3LWZpdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAgbXItMVwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY2hyLWZvcm0gKGtleXVwLmVudGVyKT1cInNldFBhZ2VFdmVudEhhbmRsZXIoJGV2ZW50KVwiIFtzZWN0aW9uc109XCJbXG4gICAgICAgICAgICB7IGNvbnRyb2xzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgbmFtZTogJ2N1cnJlbnRQYWdlJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgICB3aWR0aDogJ3JvdydcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9XVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWNoci1mb3JtPlxuICAgICAgICAgICAgPC9kaXY+IC8ge3tsYXN0UGFnZSgpfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIiFpc0xhc3RQYWdlKCkgPyAnY3Vyc29yLXBvaW50ZXInIDogJycgXCIgKGNsaWNrKT1cIiFpc0xhc3RQYWdlKCkgJiYgbmV4dCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1maXRcIj5TdWl2YW50PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
1
+ import { Component, EventEmitter, Output, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "ngx-pagination";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "../chr-form/chr-form.component";
6
+ export class ChrPaginatorComponent {
7
+ constructor(service) {
8
+ this.service = service;
9
+ this.currentPage = 1;
10
+ this.pageChange = new EventEmitter();
11
+ this.pageSizeChange = new EventEmitter();
12
+ this.previous = () => {
13
+ this.currentPage--;
14
+ this.emit();
15
+ };
16
+ this.next = () => {
17
+ this.currentPage++;
18
+ this.emit();
19
+ };
20
+ this.setPage = (page) => {
21
+ if (page < 1 || page > this.lastPage())
22
+ return;
23
+ this.currentPage = page;
24
+ this.emit();
25
+ };
26
+ this.setPageEventHandler = (event) => {
27
+ return this.setPage(event.target.value);
28
+ };
29
+ this.isFirstPage = () => {
30
+ return this.currentPage == 1;
31
+ };
32
+ this.setPageSize = (pageSize) => {
33
+ this.setPage(1);
34
+ this.instance.itemsPerPage = pageSize;
35
+ this.pageSizeChange.emit(pageSize);
36
+ };
37
+ this.setPageSizeEventHandler = (event) => {
38
+ return this.setPageSize(event.target.value);
39
+ };
40
+ this.isLastPage = () => {
41
+ if (!this.instance.totalItems)
42
+ return false;
43
+ return (this.currentPage ==
44
+ Math.ceil(this.instance.totalItems / this.instance.itemsPerPage));
45
+ };
46
+ this.pageSize = () => this.instance.itemsPerPage;
47
+ this.lastPage = () => this.instance.totalItems
48
+ ? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)
49
+ : 1;
50
+ this.emit = (page = undefined) => {
51
+ if (!page)
52
+ this.pageChange.emit(this.currentPage);
53
+ else
54
+ this.pageChange.emit(page);
55
+ };
56
+ }
57
+ ngAfterContentChecked() {
58
+ //console.log(this.service, this.service.getInstance('chr_data-table'));
59
+ this.instance = this.service.getInstance('chr_data-table');
60
+ }
61
+ ngOnInit() { }
62
+ }
63
+ ChrPaginatorComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChrPaginatorComponent, deps: [{ token: i1.PaginationService }], target: i0.ɵɵFactoryTarget.Component });
64
+ ChrPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ChrPaginatorComponent, selector: "app-chr-paginator", outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n \u00C9l\u00E9ments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Pr\u00E9c\u00E9dent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ChrFormComponent, selector: "app-chr-form", inputs: ["sections", "valid", "model", "disabled"], outputs: ["validChange", "modelChange", "valuesChange"] }] });
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChrPaginatorComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'app-chr-paginator', template: "<div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row justify-start py-2 items-center content-center\">\n \u00C9l\u00E9ments par page:\n <app-chr-form class=\"ml-1\" (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'pageSize',\n value: pageSize(),\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div>\n <div class=\"flex flex-row justify-end py-2 items-center content-center\">\n <button type=\"button\" *ngIf=\"!isFirstPage()\" (click)=\"previous()\"\n class=\"w-fit cursor-pointer\">Pr\u00E9c\u00E9dent</button>\n <div class=\"flex flex-row items-center content-center mx-2 w-fit\">\n <div class=\"w-10 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { controls: [\n {\n type: 'text',\n name: 'currentPage',\n value: currentPage,\n width: 'row'\n }]\n }]\">\n </app-chr-form>\n </div> / {{lastPage()}}\n </div>\n <button type=\"button\" [ngClass]=\"!isLastPage() ? 'cursor-pointer' : '' \" (click)=\"!isLastPage() && next()\"\n class=\"w-fit\">Suivant</button>\n </div>\n</div>" }]
68
+ }], ctorParameters: function () { return [{ type: i1.PaginationService }]; }, propDecorators: { pageChange: [{
69
+ type: Output
70
+ }], pageSizeChange: [{
71
+ type: Output
72
+ }] } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItcGFnaW5hdG9yL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXBhZ2luYXRvci9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRdkIsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFtQixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUx0QyxnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUNyQixlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEQsbUJBQWMsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWM3RCxhQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFSyxTQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFSyxZQUFPLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQUUsT0FBTztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFSyx3QkFBbUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQztRQUVLLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDO1FBRUssZ0JBQVcsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFSyw0QkFBdUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzlDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUVLLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM1QyxPQUFPLENBQ0wsSUFBSSxDQUFDLFdBQVc7Z0JBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FDakUsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVLLGFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUU1QyxhQUFRLEdBQUcsR0FBRyxFQUFFLENBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRUEsU0FBSSxHQUFHLENBQUMsT0FBMkIsU0FBUyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLElBQUk7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOztnQkFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDO0lBL0Q4QyxDQUFDO0lBRWpELHFCQUFxQjtRQUNuQix3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdEMsZ0JBQWdCLENBQ0ssQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7O21IQWZSLHFCQUFxQjt1R0FBckIscUJBQXFCLGtJQ2RsQyw4M0NBa0NNOzRGRHBCTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO3dHQU1uQixVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkluc3RhbmNlLCBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJ25neC1wYWdpbmF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoci1wYWdpbmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hyLXBhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgcHVibGljIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGluc3RhbmNlOiBQYWdpbmF0aW9uSW5zdGFuY2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuc2VydmljZSwgdGhpcy5zZXJ2aWNlLmdldEluc3RhbmNlKCdjaHJfZGF0YS10YWJsZScpKTtcbiAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5zZXJ2aWNlLmdldEluc3RhbmNlKFxuICAgICAgJ2Nocl9kYXRhLXRhYmxlJ1xuICAgICkgYXMgUGFnaW5hdGlvbkluc3RhbmNlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHB1YmxpYyBwcmV2aW91cyA9ICgpID0+IHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLS07XG4gICAgdGhpcy5lbWl0KCk7XG4gIH07XG5cbiAgcHVibGljIG5leHQgPSAoKSA9PiB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSsrO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRQYWdlID0gKHBhZ2U6IG51bWJlcikgPT4ge1xuICAgIGlmIChwYWdlIDwgMSB8fCBwYWdlID4gdGhpcy5sYXN0UGFnZSgpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5lbWl0KCk7XG4gIH07XG5cbiAgcHVibGljIHNldFBhZ2VFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldFBhZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBwdWJsaWMgaXNGaXJzdFBhZ2UgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2UgPT0gMTtcbiAgfTtcblxuICBwdWJsaWMgc2V0UGFnZVNpemUgPSAocGFnZVNpemU6IG51bWJlcikgPT4ge1xuICAgIHRoaXMuc2V0UGFnZSgxKTtcbiAgICB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xuICAgIHRoaXMucGFnZVNpemVDaGFuZ2UuZW1pdChwYWdlU2l6ZSk7XG4gIH07XG5cbiAgcHVibGljIHNldFBhZ2VTaXplRXZlbnRIYW5kbGVyID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRQYWdlU2l6ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHB1YmxpYyBpc0xhc3RQYWdlID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPT1cbiAgICAgIE1hdGguY2VpbCh0aGlzLmluc3RhbmNlLnRvdGFsSXRlbXMgLyB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSlcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBwYWdlU2l6ZSA9ICgpID0+IHRoaXMuaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xuXG4gIHB1YmxpYyBsYXN0UGFnZSA9ICgpID0+XG4gICAgdGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zXG4gICAgICA/IE1hdGguY2VpbCh0aGlzLmluc3RhbmNlLnRvdGFsSXRlbXMgLyB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSlcbiAgICAgIDogMTtcblxuICBwcml2YXRlIGVtaXQgPSAocGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFwYWdlKSB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICBlbHNlIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1zdGFydCBweS0yIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlclwiPlxuICAgICAgICDDiWzDqW1lbnRzIHBhciBwYWdlOlxuICAgICAgICA8YXBwLWNoci1mb3JtIGNsYXNzPVwibWwtMVwiIChrZXl1cC5lbnRlcik9XCJzZXRQYWdlU2l6ZUV2ZW50SGFuZGxlcigkZXZlbnQpXCIgW3NlY3Rpb25zXT1cIltcbiAgICAgICAgeyBjb250cm9sczogW1xuICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICBuYW1lOiAncGFnZVNpemUnLFxuICAgICAgICAgICAgdmFsdWU6IHBhZ2VTaXplKCksXG4gICAgICAgICAgICB3aWR0aDogJ3JvdydcbiAgICAgICAgfV1cbiAgICAgICAgfV1cIj5cbiAgICAgICAgPC9hcHAtY2hyLWZvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgcHktMiBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhaXNGaXJzdFBhZ2UoKVwiIChjbGljayk9XCJwcmV2aW91cygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1maXQgY3Vyc29yLXBvaW50ZXJcIj5QcsOpY8OpZGVudDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgbXgtMiB3LWZpdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAgbXItMVwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY2hyLWZvcm0gKGtleXVwLmVudGVyKT1cInNldFBhZ2VFdmVudEhhbmRsZXIoJGV2ZW50KVwiIFtzZWN0aW9uc109XCJbXG4gICAgICAgICAgICB7IGNvbnRyb2xzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgbmFtZTogJ2N1cnJlbnRQYWdlJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgICB3aWR0aDogJ3JvdydcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9XVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWNoci1mb3JtPlxuICAgICAgICAgICAgPC9kaXY+IC8ge3tsYXN0UGFnZSgpfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIiFpc0xhc3RQYWdlKCkgPyAnY3Vyc29yLXBvaW50ZXInIDogJycgXCIgKGNsaWNrKT1cIiFpc0xhc3RQYWdlKCkgJiYgbmV4dCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1maXRcIj5TdWl2YW50PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=