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.
- package/chrv-components-1.3.1.tgz +0 -0
- package/{esm2020 → esm2022}/chrv-components.mjs +4 -4
- package/esm2022/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +22 -0
- package/esm2022/lib/chr-button/chr-button.component.mjs +55 -0
- package/esm2022/lib/chr-checkbox/chr-checkbox.component.mjs +37 -0
- package/esm2022/lib/chr-delete-modal/chr-delete-modal.component.mjs +30 -0
- package/esm2022/lib/chr-form/chr-form.component.mjs +143 -0
- package/esm2022/lib/chr-form/chr-validators/decimal-validator.mjs +59 -0
- package/esm2022/lib/chr-form/chr-validators/max-date-validator.mjs +55 -0
- package/esm2022/lib/chr-form/chr-validators/type-validator.mjs +53 -0
- package/esm2022/lib/chr-paginator/chr-paginator.component.mjs +80 -0
- package/esm2022/lib/chr-search-select/chr-search-select.component.mjs +145 -0
- package/esm2022/lib/chr-searchbar/chr-searchbar.component.mjs +29 -0
- package/esm2022/lib/chr-separator/chr-separator.component.mjs +11 -0
- package/esm2022/lib/chr-table/chr-table.component.mjs +93 -0
- package/esm2022/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +51 -0
- package/{esm2020 → esm2022}/lib/services/dialog.service.mjs +29 -29
- package/{esm2020 → esm2022}/public-api.mjs +21 -21
- package/fesm2022/chrv-components.mjs +842 -0
- package/fesm2022/chrv-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/chr-breadcrumb/chr-breadcrumb.component.d.ts +15 -15
- package/lib/chr-button/chr-button.component.d.ts +19 -19
- package/lib/chr-checkbox/chr-checkbox.component.d.ts +13 -13
- package/lib/chr-delete-modal/chr-delete-modal.component.d.ts +11 -11
- package/lib/chr-form/chr-form.component.d.ts +57 -57
- package/lib/chr-form/chr-validators/decimal-validator.d.ts +10 -10
- package/lib/chr-form/chr-validators/max-date-validator.d.ts +10 -10
- package/lib/chr-form/chr-validators/type-validator.d.ts +10 -10
- package/lib/chr-paginator/chr-paginator.component.d.ts +27 -27
- package/lib/chr-search-select/chr-search-select.component.d.ts +44 -44
- package/lib/chr-searchbar/chr-searchbar.component.d.ts +14 -14
- package/lib/chr-separator/chr-separator.component.d.ts +5 -5
- package/lib/chr-table/chr-table.component.d.ts +58 -58
- package/lib/chr-table-header-cell/chr-table-header-cell.component.d.ts +17 -17
- package/lib/services/dialog.service.d.ts +10 -10
- package/package.json +11 -16
- package/public-api.d.ts +17 -17
- package/chrv-components-1.2.28.tgz +0 -0
- package/esm2020/lib/chr-breadcrumb/chr-breadcrumb.component.mjs +0 -22
- package/esm2020/lib/chr-button/chr-button.component.mjs +0 -51
- package/esm2020/lib/chr-checkbox/chr-checkbox.component.mjs +0 -37
- package/esm2020/lib/chr-components.module.mjs +0 -126
- package/esm2020/lib/chr-delete-modal/chr-delete-modal.component.mjs +0 -22
- package/esm2020/lib/chr-form/chr-form.component.mjs +0 -132
- package/esm2020/lib/chr-form/chr-validators/decimal-validator.mjs +0 -58
- package/esm2020/lib/chr-form/chr-validators/max-date-validator.mjs +0 -54
- package/esm2020/lib/chr-form/chr-validators/type-validator.mjs +0 -52
- package/esm2020/lib/chr-paginator/chr-paginator.component.mjs +0 -79
- package/esm2020/lib/chr-search-select/chr-search-select.component.mjs +0 -136
- package/esm2020/lib/chr-searchbar/chr-searchbar.component.mjs +0 -29
- package/esm2020/lib/chr-separator/chr-separator.component.mjs +0 -11
- package/esm2020/lib/chr-table/chr-table.component.mjs +0 -80
- package/esm2020/lib/chr-table-header-cell/chr-table-header-cell.component.mjs +0 -51
- package/fesm2015/chrv-components.mjs +0 -911
- package/fesm2015/chrv-components.mjs.map +0 -1
- package/fesm2020/chrv-components.mjs +0 -903
- package/fesm2020/chrv-components.mjs.map +0 -1
- package/lib/chr-components.module.d.ts +0 -30
|
@@ -0,0 +1,59 @@
|
|
|
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.3.6", ngImport: i0, type: DecimalValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
9
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DecimalValidatorDirective, isStandalone: true, 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.3.6", ngImport: i0, type: DecimalValidatorDirective, providedIn: 'root' }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", 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
|
+
standalone: true,
|
|
33
|
+
}]
|
|
34
|
+
}], propDecorators: { amount: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}] } });
|
|
37
|
+
export function decimal(amount) {
|
|
38
|
+
return (control) => {
|
|
39
|
+
const value = control.value;
|
|
40
|
+
if (!value) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
let isTooLong = false;
|
|
44
|
+
const str = `${value}`;
|
|
45
|
+
isTooLong =
|
|
46
|
+
str.indexOf(',') != -1
|
|
47
|
+
? (str.split(',')[1] ? str.split(',')[1].length : 0) > amount
|
|
48
|
+
: str.indexOf('.') != -1
|
|
49
|
+
? (str.split('.')[1] ? str.split('.')[1].length : 0) > amount
|
|
50
|
+
: false;
|
|
51
|
+
return isTooLong
|
|
52
|
+
? {
|
|
53
|
+
decimal: true,
|
|
54
|
+
max: amount,
|
|
55
|
+
}
|
|
56
|
+
: null;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWN4QixNQUFNLE9BQU8seUJBQXlCO0lBR3BDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDOzhHQUxVLHlCQUF5QjtrR0FBekIseUJBQXlCLDBGQVR6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUseUJBQXlCO2dCQUN0QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7a0hBR1UseUJBQXlCLGNBWlosTUFBTTs7MkZBWW5CLHlCQUF5QjtrQkFackMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsMkJBQTJCOzRCQUN0QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsTUFBTTtzQkFBZCxLQUFLOztBQU9SLE1BQU0sVUFBVSxPQUFPLENBQUMsTUFBYztJQUNwQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV0QixNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLFNBQVM7WUFDUCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU07Z0JBQzdELENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU07b0JBQzdELENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFWixPQUFPLFNBQVM7WUFDZCxDQUFDLENBQUU7Z0JBQ0MsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxFQUFFLE1BQU07YUFDUztZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvcixcclxuICBWYWxpZGF0b3JGbixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHAtZGVjaW1hbF0nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogRGVjaW1hbFZhbGlkYXRvckRpcmVjdGl2ZSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlY2ltYWxWYWxpZGF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xyXG4gIEBJbnB1dCgpIGFtb3VudD86IG51bWJlcjtcclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuYW1vdW50ID8gZGVjaW1hbCh0aGlzLmFtb3VudCkoY29udHJvbCkgOiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlY2ltYWwoYW1vdW50OiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaXNUb29Mb25nID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3Qgc3RyID0gYCR7dmFsdWV9YDtcclxuICAgIGlzVG9vTG9uZyA9XHJcbiAgICAgIHN0ci5pbmRleE9mKCcsJykgIT0gLTFcclxuICAgICAgICA/IChzdHIuc3BsaXQoJywnKVsxXSA/IHN0ci5zcGxpdCgnLCcpWzFdLmxlbmd0aCA6IDApID4gYW1vdW50XHJcbiAgICAgICAgOiBzdHIuaW5kZXhPZignLicpICE9IC0xXHJcbiAgICAgICAgPyAoc3RyLnNwbGl0KCcuJylbMV0gPyBzdHIuc3BsaXQoJy4nKVsxXS5sZW5ndGggOiAwKSA+IGFtb3VudFxyXG4gICAgICAgIDogZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIGlzVG9vTG9uZ1xyXG4gICAgICA/ICh7XHJcbiAgICAgICAgICBkZWNpbWFsOiB0cnVlLFxyXG4gICAgICAgICAgbWF4OiBhbW91bnQsXHJcbiAgICAgICAgfSBhcyBWYWxpZGF0aW9uRXJyb3JzKVxyXG4gICAgICA6IG51bGw7XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Directive, Input, Injectable } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, } from '@angular/forms';
|
|
3
|
+
import 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.3.6", ngImport: i0, type: MaxDateValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: MaxDateValidatorDirective, isStandalone: true, 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.3.6", ngImport: i0, type: MaxDateValidatorDirective, providedIn: 'root' }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", 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
|
+
standalone: true,
|
|
34
|
+
}]
|
|
35
|
+
}], propDecorators: { date: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}] } });
|
|
38
|
+
export function maxDate(date) {
|
|
39
|
+
return (control) => {
|
|
40
|
+
const value = control.value;
|
|
41
|
+
if (!value) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const maxDate = moment(date);
|
|
45
|
+
const inputDate = moment(value);
|
|
46
|
+
return !(inputDate.isValid() && inputDate.isBefore(maxDate))
|
|
47
|
+
? {
|
|
48
|
+
maxdate: true,
|
|
49
|
+
max: maxDate.toDate(),
|
|
50
|
+
actual: value,
|
|
51
|
+
}
|
|
52
|
+
: null;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWRhdGUtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLXZhbGlkYXRvcnMvbWF4LWRhdGUtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBRUwsYUFBYSxHQUlkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOztBQWM1QixNQUFNLE9BQU8seUJBQXlCO0lBR3BDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RCxDQUFDOzhHQUxVLHlCQUF5QjtrR0FBekIseUJBQXlCLHVGQVR6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUseUJBQXlCO2dCQUN0QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7a0hBR1UseUJBQXlCLGNBWlosTUFBTTs7MkZBWW5CLHlCQUF5QjtrQkFackMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVywyQkFBMkI7NEJBQ3RDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFFVSxJQUFJO3NCQUFaLEtBQUs7O0FBT1IsTUFBTSxVQUFVLE9BQU8sQ0FBQyxJQUFVO0lBQ2hDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUU7Z0JBQ0MsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSxLQUFLO2FBQ087WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHAtbWF4LWRhdGVdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IE1heERhdGVWYWxpZGF0b3JEaXJlY3RpdmUsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXhEYXRlVmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuICBASW5wdXQoKSBkYXRlPzogRGF0ZTtcclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZSA/IG1heERhdGUodGhpcy5kYXRlKShjb250cm9sKSA6IG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWF4RGF0ZShkYXRlOiBEYXRlKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYXhEYXRlID0gbW9tZW50KGRhdGUpO1xyXG4gICAgY29uc3QgaW5wdXREYXRlID0gbW9tZW50KHZhbHVlKTtcclxuXHJcbiAgICByZXR1cm4gIShpbnB1dERhdGUuaXNWYWxpZCgpICYmIGlucHV0RGF0ZS5pc0JlZm9yZShtYXhEYXRlKSlcclxuICAgICAgPyAoe1xyXG4gICAgICAgICAgbWF4ZGF0ZTogdHJ1ZSxcclxuICAgICAgICAgIG1heDogbWF4RGF0ZS50b0RhdGUoKSxcclxuICAgICAgICAgIGFjdHVhbDogdmFsdWUsXHJcbiAgICAgICAgfSBhcyBWYWxpZGF0aW9uRXJyb3JzKVxyXG4gICAgICA6IG51bGw7XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,53 @@
|
|
|
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.3.6", ngImport: i0, type: TypeValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
9
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: TypeValidatorDirective, isStandalone: true, 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.3.6", ngImport: i0, type: TypeValidatorDirective, providedIn: 'root' }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", 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
|
+
standalone: true,
|
|
33
|
+
}]
|
|
34
|
+
}], propDecorators: { type: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}] } });
|
|
37
|
+
export function type(type) {
|
|
38
|
+
return (control) => {
|
|
39
|
+
const value = control.value;
|
|
40
|
+
if (!value) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const isType = typeof value == type;
|
|
44
|
+
return !isType
|
|
45
|
+
? {
|
|
46
|
+
type: true,
|
|
47
|
+
requiredType: type,
|
|
48
|
+
actualType: typeof value,
|
|
49
|
+
}
|
|
50
|
+
: null;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItZm9ybS9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUVMLGFBQWEsR0FJZCxNQUFNLGdCQUFnQixDQUFDOztBQWN4QixNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDOzhHQUxVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLG1GQVR0QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsc0JBQXNCO2dCQUNuQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7a0hBR1Usc0JBQXNCLGNBWlQsTUFBTTs7MkZBWW5CLHNCQUFzQjtrQkFabEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsd0JBQXdCOzRCQUNuQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsSUFBSTtzQkFBWixLQUFLOztBQU9SLE1BQU0sVUFBVSxJQUFJLENBQUMsSUFBWTtJQUMvQixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQztRQUVwQyxPQUFPLENBQUMsTUFBTTtZQUNaLENBQUMsQ0FBRTtnQkFDQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsVUFBVSxFQUFFLE9BQU8sS0FBSzthQUNKO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbnB1dCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgVmFsaWRhdG9yLFxyXG4gIFZhbGlkYXRvckZuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcC10eXBlXScsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcbiAgQElucHV0KCkgdHlwZT86IHN0cmluZztcclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZSA/IHR5cGUodGhpcy50eXBlKShjb250cm9sKSA6IG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHlwZSh0eXBlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc1R5cGUgPSB0eXBlb2YgdmFsdWUgPT0gdHlwZTtcclxuXHJcbiAgICByZXR1cm4gIWlzVHlwZVxyXG4gICAgICA/ICh7XHJcbiAgICAgICAgICB0eXBlOiB0cnVlLFxyXG4gICAgICAgICAgcmVxdWlyZWRUeXBlOiB0eXBlLFxyXG4gICAgICAgICAgYWN0dWFsVHlwZTogdHlwZW9mIHZhbHVlLFxyXG4gICAgICAgIH0gYXMgVmFsaWRhdGlvbkVycm9ycylcclxuICAgICAgOiBudWxsO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { NgIf, NgClass } from '@angular/common';
|
|
3
|
+
import { ChrFormComponent } from '../chr-form/chr-form.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ngx-pagination";
|
|
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
|
+
if (this.instance)
|
|
37
|
+
this.instance.itemsPerPage = pageSize;
|
|
38
|
+
this.pageSizeChange.emit(pageSize);
|
|
39
|
+
};
|
|
40
|
+
this.setPageSizeEventHandler = (event) => {
|
|
41
|
+
return this.setPageSize(event.target.value);
|
|
42
|
+
};
|
|
43
|
+
this.isLastPage = () => {
|
|
44
|
+
if (!this.instance?.totalItems)
|
|
45
|
+
return false;
|
|
46
|
+
return (this.currentPage ==
|
|
47
|
+
Math.ceil(this.instance.totalItems / this.instance.itemsPerPage));
|
|
48
|
+
};
|
|
49
|
+
// public pageSize = () => this.instance.itemsPerPage;
|
|
50
|
+
this.lastPage = () => this.instance?.totalItems
|
|
51
|
+
? Math.ceil(this.instance.totalItems / this.instance.itemsPerPage)
|
|
52
|
+
: 1;
|
|
53
|
+
this.emit = (page = undefined) => {
|
|
54
|
+
if (!page)
|
|
55
|
+
this.pageChange.emit(this.currentPage);
|
|
56
|
+
else
|
|
57
|
+
this.pageChange.emit(page);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
ngAfterContentChecked() {
|
|
61
|
+
//console.log(this.service, this.service.getInstance('chr_data-table'));
|
|
62
|
+
this.instance = this.service.getInstance('chr_data-table');
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() { }
|
|
65
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrPaginatorComponent, deps: [{ token: i1.PaginationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
66
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ChrPaginatorComponent, isStandalone: true, 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: "component", type: ChrFormComponent, selector: "app-chr-form", inputs: ["sections", "valid", "model", "disabled"], outputs: ["validChange", "modelChange", "valuesChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ChrPaginatorComponent, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{ selector: 'app-chr-paginator', standalone: true, imports: [ChrFormComponent, NgIf, NgClass], 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>" }]
|
|
71
|
+
}], ctorParameters: () => [{ type: i1.PaginationService }], propDecorators: { page: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], pageChange: [{
|
|
74
|
+
type: Output
|
|
75
|
+
}], pageSize: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], pageSizeChange: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaHJ2LWNvbXBvbmVudHMvc3JjL2xpYi9jaHItcGFnaW5hdG9yL2Noci1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLXBhZ2luYXRvci9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBU2xFLE1BQU0sT0FBTyxxQkFBcUI7SUFVaEMsWUFBbUIsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFUdEMsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFdEIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNoQixlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkQsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUNyQixtQkFBYyxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBYzdELGFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVLLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVLLFlBQU8sR0FBRyxDQUFD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RXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkluc3RhbmNlLCBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJ25neC1wYWdpbmF0aW9uJztcbmltcG9ydCB7IE5nSWYsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hyRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Noci1mb3JtL2Noci1mb3JtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaHItcGFnaW5hdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Noci1wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaHItcGFnaW5hdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaHJGb3JtQ29tcG9uZW50LCBOZ0lmLCBOZ0NsYXNzXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgcHVibGljIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuXG4gIEBJbnB1dCgpIHBhZ2U6IG51bWJlciA9IDE7XG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gNTA7XG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGluc3RhbmNlPzogUGFnaW5hdGlvbkluc3RhbmNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBQYWdpbmF0aW9uU2VydmljZSkge31cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgLy9jb25zb2xlLmxvZyh0aGlzLnNlcnZpY2UsIHRoaXMuc2VydmljZS5nZXRJbnN0YW5jZSgnY2hyX2RhdGEtdGFibGUnKSk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuc2VydmljZS5nZXRJbnN0YW5jZShcbiAgICAgICdjaHJfZGF0YS10YWJsZSdcbiAgICApIGFzIFBhZ2luYXRpb25JbnN0YW5jZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBwdWJsaWMgcHJldmlvdXMgPSAoKSA9PiB7XG4gICAgdGhpcy5jdXJyZW50UGFnZS0tO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9O1xuXG4gIHB1YmxpYyBuZXh0ID0gKCkgPT4ge1xuICAgIHRoaXMuY3VycmVudFBhZ2UrKztcbiAgICB0aGlzLmVtaXQoKTtcbiAgfTtcblxuICBwdWJsaWMgc2V0UGFnZSA9IChwYWdlOiBudW1iZXIpID0+IHtcbiAgICBpZiAocGFnZSA8IDEgfHwgcGFnZSA+IHRoaXMubGFzdFBhZ2UoKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMuZW1pdCgpO1xuICB9O1xuXG4gIHB1YmxpYyBzZXRQYWdlRXZlbnRIYW5kbGVyID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZXRQYWdlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcHVibGljIGlzRmlyc3RQYWdlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlID09IDE7XG4gIH07XG5cbiAgcHVibGljIHNldFBhZ2VTaXplID0gKHBhZ2VTaXplOiBudW1iZXIpID0+IHtcbiAgICB0aGlzLnNldFBhZ2UoMSk7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHRoaXMuaW5zdGFuY2UuaXRlbXNQZXJQYWdlID0gcGFnZVNpemU7XG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZS5lbWl0KHBhZ2VTaXplKTtcbiAgfTtcblxuICBwdWJsaWMgc2V0UGFnZVNpemVFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldFBhZ2VTaXplKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcHVibGljIGlzTGFzdFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlPy50b3RhbEl0ZW1zKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPT1cbiAgICAgIE1hdGguY2VpbCh0aGlzLmluc3RhbmNlLnRvdGFsSXRlbXMgLyB0aGlzLmluc3RhbmNlLml0ZW1zUGVyUGFnZSlcbiAgICApO1xuICB9O1xuXG4gIC8vIHB1YmxpYyBwYWdlU2l6ZSA9ICgpID0+IHRoaXMuaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xuXG4gIHB1YmxpYyBsYXN0UGFnZSA9ICgpID0+XG4gICAgdGhpcy5pbnN0YW5jZT8udG90YWxJdGVtc1xuICAgICAgPyBNYXRoLmNlaWwodGhpcy5pbnN0YW5jZS50b3RhbEl0ZW1zIC8gdGhpcy5pbnN0YW5jZS5pdGVtc1BlclBhZ2UpXG4gICAgICA6IDE7XG5cbiAgcHJpdmF0ZSBlbWl0ID0gKHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghcGFnZSkgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgZWxzZSB0aGlzLnBhZ2VDaGFuZ2UuZW1pdChwYWdlKTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktc3RhcnQgcHktMiBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgw4lsw6ltZW50cyBwYXIgcGFnZTpcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMjAgbWwtMVwiPlxuICAgICAgICAgICAgPGFwcC1jaHItZm9ybSAoa2V5dXAuZW50ZXIpPVwic2V0UGFnZVNpemVFdmVudEhhbmRsZXIoJGV2ZW50KVwiIFtzZWN0aW9uc109XCJbXG4gICAgICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFnZVNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhZ2VTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdyb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2NoZWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25DYWxsYmFjazogc2V0UGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgfV1cIj5cbiAgICAgICAgICAgIDwvYXBwLWNoci1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBweS0yIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFpc0ZpcnN0UGFnZSgpXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZpdCBjdXJzb3ItcG9pbnRlclwiPlByw6ljw6lkZW50PC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciBteC0yIHctZml0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yMCBtci0xXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jaHItZm9ybSAoa2V5dXAuZW50ZXIpPVwic2V0UGFnZUV2ZW50SGFuZGxlcigkZXZlbnQpXCIgW3NlY3Rpb25zXT1cIltcbiAgICAgICAgICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2N1cnJlbnRQYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdyb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdjaGVjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNhbGxiYWNrOiBzZXRQYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgICAgfV1cIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jaHItZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PiAvIHt7bGFzdFBhZ2UoKX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCIhaXNMYXN0UGFnZSgpID8gJ2N1cnNvci1wb2ludGVyJyA6ICcnIFwiIChjbGljayk9XCIhaXNMYXN0UGFnZSgpICYmIG5leHQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInctZml0XCI+U3VpdmFudDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|