chrv-components 1.2.28 → 1.3.1

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 (59) hide show
  1. package/chrv-components-1.3.1.tgz +0 -0
  2. package/{esm2020 → esm2022}/chrv-components.mjs +4 -4
  3. package/esm2022/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +22 -0
  4. package/esm2022/lib/chr-button/chr-button.component.mjs +55 -0
  5. package/esm2022/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
  6. package/esm2022/lib/chr-delete-modal/chr-delete-modal.component.mjs +30 -0
  7. package/esm2022/lib/chr-form/chr-form.component.mjs +143 -0
  8. package/esm2022/lib/chr-form/chr-validators/decimal-validator.mjs +59 -0
  9. package/esm2022/lib/chr-form/chr-validators/max-date-validator.mjs +55 -0
  10. package/esm2022/lib/chr-form/chr-validators/type-validator.mjs +53 -0
  11. package/esm2022/lib/chr-paginator/chr-paginator.component.mjs +80 -0
  12. package/esm2022/lib/chr-search-select/chr-search-select.component.mjs +145 -0
  13. package/esm2022/lib/chr-searchbar/chr-searchbar.component.mjs +29 -0
  14. package/esm2022/lib/chr-separator/chr-separator.component.mjs +11 -0
  15. package/esm2022/lib/chr-table/chr-table.component.mjs +93 -0
  16. package/esm2022/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +51 -0
  17. package/{esm2020 → esm2022}/lib/services/dialog.service.mjs +29 -29
  18. package/{esm2020 → esm2022}/public-api.mjs +21 -21
  19. package/fesm2022/chrv-components.mjs +842 -0
  20. package/fesm2022/chrv-components.mjs.map +1 -0
  21. package/index.d.ts +5 -5
  22. package/lib/chr-breadcrumb/chr-breadcrumb.component.d.ts +15 -15
  23. package/lib/chr-button/chr-button.component.d.ts +19 -19
  24. package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -13
  25. package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -11
  26. package/lib/chr-form/chr-form.component.d.ts +57 -57
  27. package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -10
  28. package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -10
  29. package/lib/chr-form/chr-validators/type-validator.d.ts +10 -10
  30. package/lib/chr-paginator/chr-paginator.component.d.ts +27 -27
  31. package/lib/chr-search-select/chr-search-select.component.d.ts +44 -44
  32. package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -14
  33. package/lib/chr-separator/chr-separator.component.d.ts +5 -5
  34. package/lib/chr-table/chr-table.component.d.ts +58 -58
  35. package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +17 -17
  36. package/lib/services/dialog.service.d.ts +10 -10
  37. package/package.json +11 -16
  38. package/public-api.d.ts +17 -17
  39. package/chrv-components-1.2.28.tgz +0 -0
  40. package/esm2020/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +0 -22
  41. package/esm2020/lib/chr-button/chr-button.component.mjs +0 -51
  42. package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +0 -37
  43. package/esm2020/lib/chr-components.module.mjs +0 -126
  44. package/esm2020/lib/chr-delete-modal/chr-delete-modal.component.mjs +0 -22
  45. package/esm2020/lib/chr-form/chr-form.component.mjs +0 -132
  46. package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +0 -58
  47. package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +0 -54
  48. package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +0 -52
  49. package/esm2020/lib/chr-paginator/chr-paginator.component.mjs +0 -79
  50. package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +0 -136
  51. package/esm2020/lib/chr-searchbar/chr-searchbar.component.mjs +0 -29
  52. package/esm2020/lib/chr-separator/chr-separator.component.mjs +0 -11
  53. package/esm2020/lib/chr-table/chr-table.component.mjs +0 -80
  54. package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +0 -51
  55. package/fesm2015/chrv-components.mjs +0 -911
  56. package/fesm2015/chrv-components.mjs.map +0 -1
  57. package/fesm2020/chrv-components.mjs +0 -903
  58. package/fesm2020/chrv-components.mjs.map +0 -1
  59. package/lib/chr-components.module.d.ts +0 -30
@@ -1,58 +0,0 @@
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
@@ -1,54 +0,0 @@
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==
@@ -1,52 +0,0 @@
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,79 +0,0 @@
1
- import { Component, EventEmitter, Input, 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.page = 1;
11
- this.pageChange = new EventEmitter();
12
- this.pageSize = 50;
13
- this.pageSizeChange = new EventEmitter();
14
- this.previous = () => {
15
- this.currentPage--;
16
- this.emit();
17
- };
18
- this.next = () => {
19
- this.currentPage++;
20
- this.emit();
21
- };
22
- this.setPage = (page) => {
23
- if (page < 1 || page > this.lastPage())
24
- return;
25
- this.currentPage = page;
26
- this.emit();
27
- };
28
- this.setPageEventHandler = (event) => {
29
- return this.setPage(event.target.value);
30
- };
31
- this.isFirstPage = () => {
32
- return this.currentPage == 1;
33
- };
34
- this.setPageSize = (pageSize) => {
35
- this.setPage(1);
36
- this.instance.itemsPerPage = pageSize;
37
- this.pageSizeChange.emit(pageSize);
38
- };
39
- this.setPageSizeEventHandler = (event) => {
40
- return this.setPageSize(event.target.value);
41
- };
42
- this.isLastPage = () => {
43
- if (!this.instance.totalItems)
44
- return false;
45
- return (this.currentPage ==
46
- Math.ceil(this.instance.totalItems / this.instance.itemsPerPage));
47
- };
48
- // public pageSize = () => this.instance.itemsPerPage;
49
- this.lastPage = () => this.instance.totalItems
50
- ? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)
51
- : 1;
52
- this.emit = (page = undefined) => {
53
- if (!page)
54
- this.pageChange.emit(this.currentPage);
55
- else
56
- this.pageChange.emit(page);
57
- };
58
- }
59
- ngAfterContentChecked() {
60
- //console.log(this.service, this.service.getInstance('chr_data-table'));
61
- this.instance = this.service.getInstance('chr_data-table');
62
- }
63
- ngOnInit() { }
64
- }
65
- ChrPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChrPaginatorComponent, deps: [{ token: i1.PaginationService }], target: i0.ɵɵFactoryTarget.Component });
66
- ChrPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ChrPaginatorComponent, selector: "app-chr-paginator", inputs: { page: "page", pageSize: "pageSize" }, 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 <div class=\"w-20 ml-1\">\n <app-chr-form (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n }]\n }]\">\n </app-chr-form>\n </div>\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-20 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'currentPage',\n value: currentPage,\n width: 'row',\n icon: 'check',\n iconCallback: setPage,\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"] }] });
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChrPaginatorComponent, decorators: [{
68
- type: Component,
69
- 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 <div class=\"w-20 ml-1\">\n <app-chr-form (keyup.enter)=\"setPageSizeEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'pageSize',\n value: pageSize,\n width: 'row',\n icon: 'check',\n iconCallback: setPageSize,\n }]\n }]\">\n </app-chr-form>\n </div>\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-20 mr-1\">\n <app-chr-form (keyup.enter)=\"setPageEventHandler($event)\" [sections]=\"[\n { \n controls: [\n {\n type: 'number',\n name: 'currentPage',\n value: currentPage,\n width: 'row',\n icon: 'check',\n iconCallback: setPage,\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>" }]
70
- }], ctorParameters: function () { return [{ type: i1.PaginationService }]; }, propDecorators: { page: [{
71
- type: Input
72
- }], pageChange: [{
73
- type: Output
74
- }], pageSize: [{
75
- type: Input
76
- }], pageSizeChange: [{
77
- type: Output
78
- }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItcGFnaW5hdG9yL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXBhZ2luYXRvci9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFVaEMsWUFBbUIsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFUdEMsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFdEIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNoQixlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkQsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUNyQixtQkFBYyxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBYzdELGFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVLLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVLLFlBQU8sR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFBRSxPQUFPO1lBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVLLHdCQUFtQixHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDO1FBRUssZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUM7UUFFSyxnQkFBVyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQztRQUVLLDRCQUF1QixHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDOUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDO1FBRUssZUFBVSxHQUFHLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzVDLE9BQU8sQ0FDTCxJQUFJLENBQUMsV0FBVztnQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUNqRSxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsc0RBQXNEO1FBRS9DLGFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFQSxTQUFJLEdBQUcsQ0FBQyxPQUEyQixTQUFTLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsSUFBSTtnQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7O2dCQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7SUEvRDhDLENBQUM7SUFFakQscUJBQXFCO1FBQ25CLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN0QyxnQkFBZ0IsQ0FDSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQzs7bUhBbkJSLHFCQUFxQjt1R0FBckIscUJBQXFCLGtMQ2ZsQyxrMURBMENNOzRGRDNCTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO3dHQU9wQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhZ2luYXRpb25JbnN0YW5jZSwgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICduZ3gtcGFnaW5hdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaHItcGFnaW5hdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Noci1wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoclBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIHB1YmxpYyBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcblxuICBASW5wdXQoKSBwYWdlOiBudW1iZXIgPSAxO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDUwO1xuICBAT3V0cHV0KCkgcGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBpbnN0YW5jZTogUGFnaW5hdGlvbkluc3RhbmNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBQYWdpbmF0aW9uU2VydmljZSkge31cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgLy9jb25zb2xlLmxvZyh0aGlzLnNlcnZpY2UsIHRoaXMuc2VydmljZS5nZXRJbnN0YW5jZSgnY2hyX2RhdGEtdGFibGUnKSk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuc2VydmljZS5nZXRJbnN0YW5jZShcbiAgICAgICdjaHJfZGF0YS10YWJsZSdcbiAgICApIGFzIFBhZ2luYXRpb25JbnN0YW5jZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBwdWJsaWMgcHJldmlvdXMgPSAoKSA9PiB7XG4gICAgdGhpcy5jdXJyZW50UGFnZS0tO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9O1xuXG4gIHB1YmxpYyBuZXh0ID0gKCkgPT4ge1xuICAgIHRoaXMuY3VycmVudFBhZ2UrKztcbiAgICB0aGlzLmVtaXQoKTtcbiAgfTtcblxuICBwdWJsaWMgc2V0UGFnZSA9IChwYWdlOiBudW1iZXIpID0+IHtcbiAgICBpZiAocGFnZSA8IDEgfHwgcGFnZSA+IHRoaXMubGFzdFBhZ2UoKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRQYWdlRXZlbnRIYW5kbGVyID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRQYWdlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcHVibGljIGlzRmlyc3RQYWdlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlID09IDE7XG4gIH07XG5cbiAgcHVibGljIHNldFBhZ2VTaXplID0gKHBhZ2VTaXplOiBudW1iZXIpID0+IHtcbiAgICB0aGlzLnNldFBhZ2UoMSk7XG4gICAgdGhpcy5pbnN0YW5jZS5pdGVtc1BlclBhZ2UgPSBwYWdlU2l6ZTtcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlLmVtaXQocGFnZVNpemUpO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRQYWdlU2l6ZUV2ZW50SGFuZGxlciA9IChldmVudDogYW55KSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0UGFnZVNpemUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBwdWJsaWMgaXNMYXN0UGFnZSA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuaW5zdGFuY2UudG90YWxJdGVtcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID09XG4gICAgICBNYXRoLmNlaWwodGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zIC8gdGhpcy5pbnN0YW5jZS5pdGVtc1BlclBhZ2UpXG4gICAgKTtcbiAgfTtcblxuICAvLyBwdWJsaWMgcGFnZVNpemUgPSAoKSA9PiB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZTtcblxuICBwdWJsaWMgbGFzdFBhZ2UgPSAoKSA9PlxuICAgIHRoaXMuaW5zdGFuY2UudG90YWxJdGVtc1xuICAgICAgPyBNYXRoLmNlaWwodGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zIC8gdGhpcy5pbnN0YW5jZS5pdGVtc1BlclBhZ2UpXG4gICAgICA6IDE7XG5cbiAgcHJpdmF0ZSBlbWl0ID0gKHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghcGFnZSkgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgZWxzZSB0aGlzLnBhZ2VDaGFuZ2UuZW1pdChwYWdlKTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktc3RhcnQgcHktMiBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgw4lsw6ltZW50cyBwYXIgcGFnZTpcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMjAgbWwtMVwiPlxuICAgICAgICAgICAgPGFwcC1jaHItZm9ybSAoa2V5dXAuZW50ZXIpPVwic2V0UGFnZVNpemVFdmVudEhhbmRsZXIoJGV2ZW50KVwiIFtzZWN0aW9uc109XCJbXG4gICAgICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFnZVNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdyb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2NoZWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25DYWxsYmFjazogc2V0UGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgfV1cIj5cbiAgICAgICAgICAgIDwvYXBwLWNoci1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBweS0yIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFpc0ZpcnN0UGFnZSgpXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZpdCBjdXJzb3ItcG9pbnRlclwiPlByw6ljw6lkZW50PC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciBteC0yIHctZml0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yMCBtci0xXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jaHItZm9ybSAoa2V5dXAuZW50ZXIpPVwic2V0UGFnZUV2ZW50SGFuZGxlcigkZXZlbnQpXCIgW3NlY3Rpb25zXT1cIltcbiAgICAgICAgICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2N1cnJlbnRQYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdyb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdjaGVjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNhbGxiYWNrOiBzZXRQYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgfV1cIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jaHItZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PiAvIHt7bGFzdFBhZ2UoKX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCIhaXNMYXN0UGFnZSgpID8gJ2N1cnNvci1wb2ludGVyJyA6ICcnIFwiIChjbGljayk9XCIhaXNMYXN0UGFnZSgpICYmIG5leHQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInctZml0XCI+U3VpdmFudDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19