chrv-components 1.2.7 → 1.2.8

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 (53) hide show
  1. package/chrv-components-1.2.8.tgz +0 -0
  2. package/{esm2020 → esm2022}/chrv-components.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +22 -22
  4. package/{esm2020 → esm2022}/lib/chr-button/chr-button.component.mjs +51 -51
  5. package/esm2022/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
  6. package/{esm2020 → esm2022}/lib/chr-components.module.mjs +126 -126
  7. package/{esm2020 → esm2022}/lib/chr-delete-modal/chr-delete-modal.component.mjs +22 -22
  8. package/esm2022/lib/chr-form/chr-form.component.mjs +132 -0
  9. package/esm2022/lib/chr-form/chr-validators/decimal-validator.mjs +58 -0
  10. package/esm2022/lib/chr-form/chr-validators/max-date-validator.mjs +54 -0
  11. package/esm2022/lib/chr-form/chr-validators/type-validator.mjs +52 -0
  12. package/{esm2020 → esm2022}/lib/chr-paginator/chr-paginator.component.mjs +73 -73
  13. package/esm2022/lib/chr-search-select/chr-search-select.component.mjs +136 -0
  14. package/{esm2020 → esm2022}/lib/chr-searchbar/chr-searchbar.component.mjs +29 -29
  15. package/esm2022/lib/chr-separator/chr-separator.component.mjs +11 -0
  16. package/esm2022/lib/chr-table/chr-table.component.mjs +62 -0
  17. package/esm2022/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +49 -0
  18. package/{esm2020 → esm2022}/lib/services/dialog.service.mjs +29 -29
  19. package/{esm2020 → esm2022}/public-api.mjs +19 -19
  20. package/fesm2022/chrv-components.mjs +876 -0
  21. package/{fesm2015 → fesm2022}/chrv-components.mjs.map +1 -1
  22. package/index.d.ts +5 -5
  23. package/lib/chr-breadcrumb/chr-breadcrumb.component.d.ts +15 -15
  24. package/lib/chr-button/chr-button.component.d.ts +19 -19
  25. package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -13
  26. package/lib/chr-components.module.d.ts +30 -30
  27. package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -11
  28. package/lib/chr-form/chr-form.component.d.ts +57 -57
  29. package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -10
  30. package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -10
  31. package/lib/chr-form/chr-validators/type-validator.d.ts +10 -10
  32. package/lib/chr-paginator/chr-paginator.component.d.ts +26 -26
  33. package/lib/chr-search-select/chr-search-select.component.d.ts +44 -44
  34. package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -14
  35. package/lib/chr-separator/chr-separator.component.d.ts +5 -5
  36. package/lib/chr-table/chr-table.component.d.ts +42 -42
  37. package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +16 -16
  38. package/lib/services/dialog.service.d.ts +10 -10
  39. package/package.json +10 -16
  40. package/public-api.d.ts +16 -16
  41. package/chrv-components-1.2.7.tgz +0 -0
  42. package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +0 -37
  43. package/esm2020/lib/chr-form/chr-form.component.mjs +0 -132
  44. package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +0 -58
  45. package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +0 -54
  46. package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +0 -52
  47. package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +0 -136
  48. package/esm2020/lib/chr-separator/chr-separator.component.mjs +0 -11
  49. package/esm2020/lib/chr-table/chr-table.component.mjs +0 -62
  50. package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +0 -49
  51. package/fesm2015/chrv-components.mjs +0 -884
  52. package/fesm2020/chrv-components.mjs +0 -876
  53. package/fesm2020/chrv-components.mjs.map +0 -1
@@ -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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DecimalValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: DecimalValidatorDirective, selector: "[app-decimal]", inputs: { amount: "amount" }, providers: [
10
+ {
11
+ provide: NG_VALIDATORS,
12
+ useExisting: DecimalValidatorDirective,
13
+ multi: true,
14
+ },
15
+ ], ngImport: i0 }); }
16
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DecimalValidatorDirective, providedIn: 'root' }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWF4QixNQUFNLE9BQU8seUJBQXlCO0lBR3BDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDOzhHQUxVLHlCQUF5QjtrR0FBekIseUJBQXlCLHNFQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUseUJBQXlCO2dCQUN0QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7a0hBRVUseUJBQXlCLGNBWFosTUFBTTs7MkZBV25CLHlCQUF5QjtrQkFYckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsMkJBQTJCOzRCQUN0QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFFVSxNQUFNO3NCQUFkLEtBQUs7O0FBT1IsTUFBTSxVQUFVLE9BQU8sQ0FBQyxNQUFjO0lBQ3BDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXRCLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDdkIsU0FBUztZQUNQLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTTtnQkFDN0QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4QixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTTtvQkFDN0QsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVaLE9BQU8sU0FBUztZQUNkLENBQUMsQ0FBRTtnQkFDQyxPQUFPLEVBQUUsSUFBSTtnQkFDYixHQUFHLEVBQUUsTUFBTTthQUNTO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbnB1dCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgVmFsaWRhdG9yLFxyXG4gIFZhbGlkYXRvckZuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcC1kZWNpbWFsXScsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBEZWNpbWFsVmFsaWRhdG9yRGlyZWN0aXZlLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlY2ltYWxWYWxpZGF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xyXG4gIEBJbnB1dCgpIGFtb3VudDogbnVtYmVyO1xyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5hbW91bnQgPyBkZWNpbWFsKHRoaXMuYW1vdW50KShjb250cm9sKSA6IG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVjaW1hbChhbW91bnQ6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1Rvb0xvbmcgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBzdHIgPSBgJHt2YWx1ZX1gO1xyXG4gICAgaXNUb29Mb25nID1cclxuICAgICAgc3RyLmluZGV4T2YoJywnKSAhPSAtMVxyXG4gICAgICAgID8gKHN0ci5zcGxpdCgnLCcpWzFdID8gc3RyLnNwbGl0KCcsJylbMV0ubGVuZ3RoIDogMCkgPiBhbW91bnRcclxuICAgICAgICA6IHN0ci5pbmRleE9mKCcuJykgIT0gLTFcclxuICAgICAgICA/IChzdHIuc3BsaXQoJy4nKVsxXSA/IHN0ci5zcGxpdCgnLicpWzFdLmxlbmd0aCA6IDApID4gYW1vdW50XHJcbiAgICAgICAgOiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gaXNUb29Mb25nXHJcbiAgICAgID8gKHtcclxuICAgICAgICAgIGRlY2ltYWw6IHRydWUsXHJcbiAgICAgICAgICBtYXg6IGFtb3VudCxcclxuICAgICAgICB9IGFzIFZhbGlkYXRpb25FcnJvcnMpXHJcbiAgICAgIDogbnVsbDtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MaxDateValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: MaxDateValidatorDirective, selector: "[app-max-date]", inputs: { date: "date" }, providers: [
11
+ {
12
+ provide: NG_VALIDATORS,
13
+ useExisting: MaxDateValidatorDirective,
14
+ multi: true,
15
+ },
16
+ ], ngImport: i0 }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MaxDateValidatorDirective, providedIn: 'root' }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWRhdGUtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLXZhbGlkYXRvcnMvbWF4LWRhdGUtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBRUwsYUFBYSxHQUlkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBYWpDLE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hELENBQUM7OEdBTFUseUJBQXlCO2tHQUF6Qix5QkFBeUIsbUVBUnpCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSx5QkFBeUI7Z0JBQ3RDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjtrSEFFVSx5QkFBeUIsY0FYWixNQUFNOzsyRkFXbkIseUJBQXlCO2tCQVhyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7a0JBQ2pDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLDJCQUEyQjs0QkFDdEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLOztBQU9SLE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBVTtJQUNoQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFFO2dCQUNDLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNyQixNQUFNLEVBQUUsS0FBSzthQUNPO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbnB1dCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgVmFsaWRhdG9yLFxyXG4gIFZhbGlkYXRvckZuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHAtbWF4LWRhdGVdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IE1heERhdGVWYWxpZGF0b3JEaXJlY3RpdmUsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF4RGF0ZVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcbiAgQElucHV0KCkgZGF0ZTogRGF0ZTtcclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZSA/IG1heERhdGUodGhpcy5kYXRlKShjb250cm9sKSA6IG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWF4RGF0ZShkYXRlOiBEYXRlKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYXhEYXRlID0gbW9tZW50KGRhdGUpO1xyXG4gICAgY29uc3QgaW5wdXREYXRlID0gbW9tZW50KHZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gIShpbnB1dERhdGUuaXNWYWxpZCgpICYmIGlucHV0RGF0ZS5pc0JlZm9yZShtYXhEYXRlKSlcclxuICAgICAgPyAoe1xyXG4gICAgICAgICAgbWF4ZGF0ZTogdHJ1ZSxcclxuICAgICAgICAgIG1heDogbWF4RGF0ZS50b0RhdGUoKSxcclxuICAgICAgICAgIGFjdHVhbDogdmFsdWUsXHJcbiAgICAgICAgfSBhcyBWYWxpZGF0aW9uRXJyb3JzKVxyXG4gICAgICA6IG51bGw7XHJcbiAgfTtcclxufVxyXG4iXX0=
@@ -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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TypeValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: TypeValidatorDirective, selector: "[app-type]", inputs: { type: "type" }, providers: [
10
+ {
11
+ provide: NG_VALIDATORS,
12
+ useExisting: TypeValidatorDirective,
13
+ multi: true,
14
+ },
15
+ ], ngImport: i0 }); }
16
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TypeValidatorDirective, providedIn: 'root' }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWF4QixNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDOzhHQUxVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLCtEQVJ0QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsc0JBQXNCO2dCQUNuQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7a0hBRVUsc0JBQXNCLGNBWFQsTUFBTTs7MkZBV25CLHNCQUFzQjtrQkFYbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsd0JBQXdCOzRCQUNuQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFFVSxJQUFJO3NCQUFaLEtBQUs7O0FBT1IsTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFZO0lBQy9CLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO1FBRXBDLE9BQU8sQ0FBQyxNQUFNO1lBQ1osQ0FBQyxDQUFFO2dCQUNDLElBQUksRUFBRSxJQUFJO2dCQUNWLFlBQVksRUFBRSxJQUFJO2dCQUNsQixVQUFVLEVBQUUsT0FBTyxLQUFLO2FBQ0o7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXBwLXR5cGVdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID8gdHlwZSh0aGlzLnR5cGUpKGNvbnRyb2wpIDogbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0eXBlKHR5cGU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlzVHlwZSA9IHR5cGVvZiB2YWx1ZSA9PSB0eXBlO1xyXG5cclxuICAgIHJldHVybiAhaXNUeXBlXHJcbiAgICAgID8gKHtcclxuICAgICAgICAgIHR5cGU6IHRydWUsXHJcbiAgICAgICAgICByZXF1aXJlZFR5cGU6IHR5cGUsXHJcbiAgICAgICAgICBhY3R1YWxUeXBlOiB0eXBlb2YgdmFsdWUsXHJcbiAgICAgICAgfSBhcyBWYWxpZGF0aW9uRXJyb3JzKVxyXG4gICAgICA6IG51bGw7XHJcbiAgfTtcclxufVxyXG4iXX0=
@@ -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
- }
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=
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=