pdm-ui-kit 0.1.12 → 0.1.13

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.
@@ -4,20 +4,54 @@ import * as i1 from "@angular/common";
4
4
  export class PdmButtonGroupComponent {
5
5
  constructor() {
6
6
  this.variant = 'default';
7
- this.items = ['Archive', 'Report'];
7
+ this.direction = 'horizontal';
8
+ this.separated = true;
8
9
  this.className = '';
9
10
  }
11
+ get rootClasses() {
12
+ const isVertical = this.variant === 'orientation' || this.direction === 'vertical';
13
+ const isAttached = this.variant !== 'default' && !this.separated;
14
+ const isSeparator = this.variant === 'separator';
15
+ return [
16
+ 'inline-flex w-fit',
17
+ isVertical ? 'flex-col items-stretch' : 'items-center',
18
+ this.variant === 'default' || this.separated ? 'gap-2' : 'gap-0',
19
+ isAttached
20
+ ? isVertical
21
+ ? [
22
+ '[&>*]:rounded-none',
23
+ '[&>*:first-child]:rounded-t-md',
24
+ '[&>*:last-child]:rounded-b-md',
25
+ '[&>*:not(:first-child)]:border-t-0',
26
+ '[&>*:not(:first-child)]:-mt-px'
27
+ ].join(' ')
28
+ : [
29
+ '[&>*]:rounded-none',
30
+ '[&>*:first-child]:rounded-l-md',
31
+ '[&>*:last-child]:rounded-r-md',
32
+ '[&>*:not(:first-child)]:border-l-0',
33
+ '[&>*:not(:first-child)]:-ml-px'
34
+ ].join(' ')
35
+ : '',
36
+ isSeparator
37
+ ? 'overflow-hidden rounded-md border border-border bg-secondary shadow-sm'
38
+ : '',
39
+ this.className
40
+ ];
41
+ }
10
42
  }
11
43
  PdmButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- PdmButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmButtonGroupComponent, selector: "pdm-button-group", inputs: { variant: "variant", items: "items", className: "className" }, ngImport: i0, template: "<div\n [ngClass]=\"[\n variant === 'group'\n ? 'inline-flex w-fit items-stretch gap-0 [&>*]:rounded-none [&>*:first-child]:rounded-l-lg [&>*:last-child]:rounded-r-lg [&>*:not(:first-child)]:border-l-0 [&>*:not(:first-child)]:-ml-px [&>input]:flex-1 *:focus-visible:z-10 *:focus-visible:relative'\n : 'inline-flex items-center gap-2',\n className\n ]\"\n>\n <ng-container [ngSwitch]=\"variant\">\n <ng-container *ngSwitchCase=\"'group'\">\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngSwitchCase=\"'orientation'\">\n <div class=\"inline-flex flex-col overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-9 w-9 items-center justify-center border-b border-border text-foreground\">+</button>\n <button type=\"button\" class=\"inline-flex h-9 w-9 items-center justify-center text-foreground\">-</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-muted shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-8 items-center justify-center border-r border-border px-3 text-sm font-medium text-foreground\">Copy</button>\n <button type=\"button\" class=\"inline-flex h-8 items-center justify-center px-3 text-sm font-medium text-foreground\">Paste</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'nested'\">\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button *ngFor=\"let item of ['1', '2', '3', '4', '5']; let last = last\" type=\"button\" [ngClass]=\"['inline-flex h-8 items-center justify-center px-3 text-sm font-medium text-foreground', !last ? 'border-r border-border' : '']\">{{ item }}</button>\n </div>\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-8 w-8 items-center justify-center border-r border-border text-foreground\">\u2190</button>\n <button type=\"button\" class=\"inline-flex h-8 w-8 items-center justify-center text-foreground\">\u2192</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <div class=\"inline-flex h-9 w-9 items-center justify-center overflow-hidden rounded-md border border-border bg-background shadow-sm text-foreground\">\u2190</div>\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button *ngFor=\"let item of items; let last = last\" type=\"button\" [ngClass]=\"['inline-flex h-9 items-center justify-center px-4 text-sm font-medium text-foreground', !last ? 'border-r border-border' : '']\">{{ item }}</button>\n </div>\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-9 items-center justify-center border-r border-border px-4 text-sm font-medium text-foreground\">Snooze</button>\n <button type=\"button\" class=\"inline-flex h-9 w-9 items-center justify-center text-foreground\">\u2026</button>\n </div>\n </ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
+ PdmButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmButtonGroupComponent, selector: "pdm-button-group", inputs: { variant: "variant", direction: "direction", separated: "separated", className: "className" }, ngImport: i0, template: "<div\n role=\"group\"\n [attr.aria-orientation]=\"variant === 'orientation' || direction === 'vertical' ? 'vertical' : 'horizontal'\"\n [ngClass]=\"rootClasses\"\n>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmButtonGroupComponent, decorators: [{
14
46
  type: Component,
15
- args: [{ selector: 'pdm-button-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"[\n variant === 'group'\n ? 'inline-flex w-fit items-stretch gap-0 [&>*]:rounded-none [&>*:first-child]:rounded-l-lg [&>*:last-child]:rounded-r-lg [&>*:not(:first-child)]:border-l-0 [&>*:not(:first-child)]:-ml-px [&>input]:flex-1 *:focus-visible:z-10 *:focus-visible:relative'\n : 'inline-flex items-center gap-2',\n className\n ]\"\n>\n <ng-container [ngSwitch]=\"variant\">\n <ng-container *ngSwitchCase=\"'group'\">\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngSwitchCase=\"'orientation'\">\n <div class=\"inline-flex flex-col overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-9 w-9 items-center justify-center border-b border-border text-foreground\">+</button>\n <button type=\"button\" class=\"inline-flex h-9 w-9 items-center justify-center text-foreground\">-</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'separator'\">\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-muted shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-8 items-center justify-center border-r border-border px-3 text-sm font-medium text-foreground\">Copy</button>\n <button type=\"button\" class=\"inline-flex h-8 items-center justify-center px-3 text-sm font-medium text-foreground\">Paste</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'nested'\">\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button *ngFor=\"let item of ['1', '2', '3', '4', '5']; let last = last\" type=\"button\" [ngClass]=\"['inline-flex h-8 items-center justify-center px-3 text-sm font-medium text-foreground', !last ? 'border-r border-border' : '']\">{{ item }}</button>\n </div>\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-8 w-8 items-center justify-center border-r border-border text-foreground\">\u2190</button>\n <button type=\"button\" class=\"inline-flex h-8 w-8 items-center justify-center text-foreground\">\u2192</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <div class=\"inline-flex h-9 w-9 items-center justify-center overflow-hidden rounded-md border border-border bg-background shadow-sm text-foreground\">\u2190</div>\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button *ngFor=\"let item of items; let last = last\" type=\"button\" [ngClass]=\"['inline-flex h-9 items-center justify-center px-4 text-sm font-medium text-foreground', !last ? 'border-r border-border' : '']\">{{ item }}</button>\n </div>\n <div class=\"inline-flex overflow-hidden rounded-md border border-border bg-background shadow-sm\">\n <button type=\"button\" class=\"inline-flex h-9 items-center justify-center border-r border-border px-4 text-sm font-medium text-foreground\">Snooze</button>\n <button type=\"button\" class=\"inline-flex h-9 w-9 items-center justify-center text-foreground\">\u2026</button>\n </div>\n </ng-container>\n </ng-container>\n</div>\n" }]
47
+ args: [{ selector: 'pdm-button-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n role=\"group\"\n [attr.aria-orientation]=\"variant === 'orientation' || direction === 'vertical' ? 'vertical' : 'horizontal'\"\n [ngClass]=\"rootClasses\"\n>\n <ng-content></ng-content>\n</div>\n" }]
16
48
  }], propDecorators: { variant: [{
17
49
  type: Input
18
- }], items: [{
50
+ }], direction: [{
51
+ type: Input
52
+ }], separated: [{
19
53
  type: Input
20
54
  }], className: [{
21
55
  type: Input
22
56
  }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTMUUsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU1XLFlBQU8sR0FBMEIsU0FBUyxDQUFDO1FBQzNDLFVBQUssR0FBYSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsRUFBRSxDQUFDO0tBQ3pCOztvSEFKWSx1QkFBdUI7d0dBQXZCLHVCQUF1QixnSUNUcEMscXhHQWdEQTsyRkR2Q2EsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQixtQkFFWCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1CdXR0b25Hcm91cFZhcmlhbnQgPSAnZGVmYXVsdCcgfCAnb3JpZW50YXRpb24nIHwgJ3NlcGFyYXRvcicgfCAnbmVzdGVkJyB8ICdncm91cCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkbS1idXR0b24tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQnV0dG9uR3JvdXBDb21wb25lbnQge1xuICBASW5wdXQoKSB2YXJpYW50OiBQZG1CdXR0b25Hcm91cFZhcmlhbnQgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIGl0ZW1zOiBzdHJpbmdbXSA9IFsnQXJjaGl2ZScsICdSZXBvcnQnXTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG59XG4iLCI8ZGl2XG4gIFtuZ0NsYXNzXT1cIltcbiAgICB2YXJpYW50ID09PSAnZ3JvdXAnXG4gICAgICA/ICdpbmxpbmUtZmxleCB3LWZpdCBpdGVtcy1zdHJldGNoIGdhcC0wIFsmPipdOnJvdW5kZWQtbm9uZSBbJj4qOmZpcnN0LWNoaWxkXTpyb3VuZGVkLWwtbGcgWyY+KjpsYXN0LWNoaWxkXTpyb3VuZGVkLXItbGcgWyY+Kjpub3QoOmZpcnN0LWNoaWxkKV06Ym9yZGVyLWwtMCBbJj4qOm5vdCg6Zmlyc3QtY2hpbGQpXTotbWwtcHggWyY+aW5wdXRdOmZsZXgtMSAqOmZvY3VzLXZpc2libGU6ei0xMCAqOmZvY3VzLXZpc2libGU6cmVsYXRpdmUnXG4gICAgICA6ICdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTInLFxuICAgIGNsYXNzTmFtZVxuICBdXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidmFyaWFudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidncm91cCdcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInb3JpZW50YXRpb24nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5saW5lLWZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBzaGFkb3ctc21cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTkgdy05IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXItYiBib3JkZXItYm9yZGVyIHRleHQtZm9yZWdyb3VuZFwiPis8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTkgdy05IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWZvcmVncm91bmRcIj4tPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZXBhcmF0b3InXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5saW5lLWZsZXggb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctbXV0ZWQgc2hhZG93LXNtXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaW5saW5lLWZsZXggaC04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXItciBib3JkZXItYm9yZGVyIHB4LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmRcIj5Db3B5PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaW5saW5lLWZsZXggaC04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kXCI+UGFzdGU8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ25lc3RlZCdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtZmxleCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHNoYWRvdy1zbVwiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIFsnMScsICcyJywgJzMnLCAnNCcsICc1J107IGxldCBsYXN0ID0gbGFzdFwiIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJbJ2lubGluZS1mbGV4IGgtOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCcsICFsYXN0ID8gJ2JvcmRlci1yIGJvcmRlci1ib3JkZXInIDogJyddXCI+e3sgaXRlbSB9fTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5saW5lLWZsZXggb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBzaGFkb3ctc21cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTggdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXItciBib3JkZXItYm9yZGVyIHRleHQtZm9yZWdyb3VuZFwiPuKGkDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtZm9yZWdyb3VuZFwiPuKGkjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5saW5lLWZsZXggaC05IHctOSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBzaGFkb3ctc20gdGV4dC1mb3JlZ3JvdW5kXCI+4oaQPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5saW5lLWZsZXggb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBzaGFkb3ctc21cIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGxhc3QgPSBsYXN0XCIgdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnaW5saW5lLWZsZXggaC05IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kJywgIWxhc3QgPyAnYm9yZGVyLXIgYm9yZGVyLWJvcmRlcicgOiAnJ11cIj57eyBpdGVtIH19PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtZmxleCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHNoYWRvdy1zbVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImlubGluZS1mbGV4IGgtOSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLXIgYm9yZGVyLWJvcmRlciBweC00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kXCI+U25vb3plPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaW5saW5lLWZsZXggaC05IHctOSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1mb3JlZ3JvdW5kXCI+4oCmPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFVMUUsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU1XLFlBQU8sR0FBMEIsU0FBUyxDQUFDO1FBQzNDLGNBQVMsR0FBNEIsWUFBWSxDQUFDO1FBQ2xELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztLQWtDekI7SUFoQ0MsSUFBSSxXQUFXO1FBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUM7UUFDbkYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxDQUFDO1FBRWpELE9BQU87WUFDTCxtQkFBbUI7WUFDbkIsVUFBVSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsY0FBYztZQUN0RCxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDaEUsVUFBVTtnQkFDUixDQUFDLENBQUMsVUFBVTtvQkFDVixDQUFDLENBQUM7d0JBQ0Usb0JBQW9CO3dCQUNwQixnQ0FBZ0M7d0JBQ2hDLCtCQUErQjt3QkFDL0Isb0NBQW9DO3dCQUNwQyxnQ0FBZ0M7cUJBQ2pDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztvQkFDYixDQUFDLENBQUM7d0JBQ0Usb0JBQW9CO3dCQUNwQixnQ0FBZ0M7d0JBQ2hDLCtCQUErQjt3QkFDL0Isb0NBQW9DO3dCQUNwQyxnQ0FBZ0M7cUJBQ2pDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDZixDQUFDLENBQUMsRUFBRTtZQUNOLFdBQVc7Z0JBQ1QsQ0FBQyxDQUFDLHdFQUF3RTtnQkFDMUUsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsU0FBUztTQUNmLENBQUM7SUFDSixDQUFDOztvSEFyQ1UsdUJBQXVCO3dHQUF2Qix1QkFBdUIsZ0tDVnBDLGdOQU9BOzJGREdhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgUGRtQnV0dG9uR3JvdXBWYXJpYW50ID0gJ2RlZmF1bHQnIHwgJ2dyb3VwJyB8ICdvcmllbnRhdGlvbicgfCAnc2VwYXJhdG9yJztcbmV4cG9ydCB0eXBlIFBkbUJ1dHRvbkdyb3VwRGlyZWN0aW9uID0gJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWJ1dHRvbi1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1CdXR0b25Hcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbUJ1dHRvbkdyb3VwVmFyaWFudCA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgZGlyZWN0aW9uOiBQZG1CdXR0b25Hcm91cERpcmVjdGlvbiA9ICdob3Jpem9udGFsJztcbiAgQElucHV0KCkgc2VwYXJhdGVkID0gdHJ1ZTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgZ2V0IHJvb3RDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBpc1ZlcnRpY2FsID0gdGhpcy52YXJpYW50ID09PSAnb3JpZW50YXRpb24nIHx8IHRoaXMuZGlyZWN0aW9uID09PSAndmVydGljYWwnO1xuICAgIGNvbnN0IGlzQXR0YWNoZWQgPSB0aGlzLnZhcmlhbnQgIT09ICdkZWZhdWx0JyAmJiAhdGhpcy5zZXBhcmF0ZWQ7XG4gICAgY29uc3QgaXNTZXBhcmF0b3IgPSB0aGlzLnZhcmlhbnQgPT09ICdzZXBhcmF0b3InO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgICdpbmxpbmUtZmxleCB3LWZpdCcsXG4gICAgICBpc1ZlcnRpY2FsID8gJ2ZsZXgtY29sIGl0ZW1zLXN0cmV0Y2gnIDogJ2l0ZW1zLWNlbnRlcicsXG4gICAgICB0aGlzLnZhcmlhbnQgPT09ICdkZWZhdWx0JyB8fCB0aGlzLnNlcGFyYXRlZCA/ICdnYXAtMicgOiAnZ2FwLTAnLFxuICAgICAgaXNBdHRhY2hlZFxuICAgICAgICA/IGlzVmVydGljYWxcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgJ1smPipdOnJvdW5kZWQtbm9uZScsXG4gICAgICAgICAgICAgICdbJj4qOmZpcnN0LWNoaWxkXTpyb3VuZGVkLXQtbWQnLFxuICAgICAgICAgICAgICAnWyY+KjpsYXN0LWNoaWxkXTpyb3VuZGVkLWItbWQnLFxuICAgICAgICAgICAgICAnWyY+Kjpub3QoOmZpcnN0LWNoaWxkKV06Ym9yZGVyLXQtMCcsXG4gICAgICAgICAgICAgICdbJj4qOm5vdCg6Zmlyc3QtY2hpbGQpXTotbXQtcHgnXG4gICAgICAgICAgICBdLmpvaW4oJyAnKVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAnWyY+Kl06cm91bmRlZC1ub25lJyxcbiAgICAgICAgICAgICAgJ1smPio6Zmlyc3QtY2hpbGRdOnJvdW5kZWQtbC1tZCcsXG4gICAgICAgICAgICAgICdbJj4qOmxhc3QtY2hpbGRdOnJvdW5kZWQtci1tZCcsXG4gICAgICAgICAgICAgICdbJj4qOm5vdCg6Zmlyc3QtY2hpbGQpXTpib3JkZXItbC0wJyxcbiAgICAgICAgICAgICAgJ1smPio6bm90KDpmaXJzdC1jaGlsZCldOi1tbC1weCdcbiAgICAgICAgICAgIF0uam9pbignICcpXG4gICAgICAgIDogJycsXG4gICAgICBpc1NlcGFyYXRvclxuICAgICAgICA/ICdvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1zZWNvbmRhcnkgc2hhZG93LXNtJ1xuICAgICAgICA6ICcnLFxuICAgICAgdGhpcy5jbGFzc05hbWVcbiAgICBdO1xuICB9XG59XG4iLCI8ZGl2XG4gIHJvbGU9XCJncm91cFwiXG4gIFthdHRyLmFyaWEtb3JpZW50YXRpb25dPVwidmFyaWFudCA9PT0gJ29yaWVudGF0aW9uJyB8fCBkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnXCJcbiAgW25nQ2xhc3NdPVwicm9vdENsYXNzZXNcIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
@@ -5,9 +5,10 @@ export class PdmCarouselComponent {
5
5
  constructor() {
6
6
  this.variant = 'default';
7
7
  this.className = '';
8
- this.slides = [1, 2, 3, 4, 5];
8
+ this.slides = [];
9
9
  this.startIndex = 0;
10
10
  this.loop = false;
11
+ this.showCounter = false;
11
12
  this.indexChange = new EventEmitter();
12
13
  this._index = 0;
13
14
  }
@@ -27,25 +28,25 @@ export class PdmCarouselComponent {
27
28
  if (this.slides.length === 0) {
28
29
  return 0;
29
30
  }
30
- if (this.variant === 'sizes') {
31
- return Math.max(0, this.slides.length - 3);
32
- }
33
- if (this.variant === 'orientation') {
34
- return Math.max(0, this.slides.length - 2);
35
- }
36
- return Math.max(0, this.slides.length - 1);
31
+ return Math.max(0, this.slides.length - this.currentWindowSize);
37
32
  }
38
33
  get visibleSlides() {
39
34
  if (this.slides.length === 0) {
40
35
  return [];
41
36
  }
37
+ return this.sliceWindow(this.currentWindowSize);
38
+ }
39
+ get currentWindowSize() {
40
+ if (typeof this.windowSize === 'number' && this.windowSize > 0) {
41
+ return Math.max(1, Math.floor(this.windowSize));
42
+ }
42
43
  if (this.variant === 'sizes') {
43
- return this.sliceWindow(3);
44
+ return 3;
44
45
  }
45
46
  if (this.variant === 'orientation') {
46
- return this.sliceWindow(2);
47
+ return 2;
47
48
  }
48
- return [this.slides[this._index]];
49
+ return 1;
49
50
  }
50
51
  onPrev() {
51
52
  if (!this.canPrev) {
@@ -77,10 +78,10 @@ export class PdmCarouselComponent {
77
78
  }
78
79
  }
79
80
  PdmCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- PdmCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmCarouselComponent, selector: "pdm-carousel", inputs: { variant: "variant", className: "className", slides: "slides", startIndex: "startIndex", loop: "loop" }, outputs: { indexChange: "indexChange" }, ngImport: i0, template: "<section [ngClass]=\"[className]\">\n <div *ngIf=\"variant !== 'orientation'\" class=\"flex items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <ng-container [ngSwitch]=\"variant\">\n <div *ngSwitchCase=\"'sizes'\" class=\"flex items-center\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex items-center\" [ngClass]=\"i > 0 ? 'pl-4' : ''\">\n <div class=\"flex h-40 w-32 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchDefault class=\"flex flex-col items-center justify-center\">\n <div class=\"flex h-80 w-80 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-3xl font-semibold text-foreground\">{{ visibleSlides[0] }}</div>\n </div>\n </div>\n <p *ngIf=\"variant === 'api'\" class=\"m-0 pt-2 text-sm font-medium text-muted-foreground\">Slide {{ index + 1 }} of {{ slides.length }}</p>\n </div>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <div *ngIf=\"variant === 'orientation'\" class=\"flex flex-col items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 15L12 9L6 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex w-80 flex-col\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex h-36 w-full items-center p-1\" [ngClass]=\"i > 0 ? 'pt-1' : ''\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
81
+ PdmCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmCarouselComponent, selector: "pdm-carousel", inputs: { variant: "variant", className: "className", slides: "slides", startIndex: "startIndex", loop: "loop", windowSize: "windowSize", showCounter: "showCounter" }, outputs: { indexChange: "indexChange" }, ngImport: i0, template: "<section [ngClass]=\"[className]\">\n <div *ngIf=\"variant !== 'orientation'\" class=\"flex items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex items-center\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex items-center\" [ngClass]=\"i > 0 ? 'pl-4' : ''\">\n <div class=\"flex h-40 w-32 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <p *ngIf=\"variant !== 'orientation' && showCounter\" class=\"m-0 pt-2 text-sm font-medium text-muted-foreground\">\n {{ slides.length ? (index + 1) : 0 }} / {{ slides.length }}\n </p>\n\n <div *ngIf=\"variant === 'orientation'\" class=\"flex flex-col items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 15L12 9L6 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex w-80 flex-col\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex h-36 w-full items-center p-1\" [ngClass]=\"i > 0 ? 'pt-1' : ''\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
81
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmCarouselComponent, decorators: [{
82
83
  type: Component,
83
- args: [{ selector: 'pdm-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section [ngClass]=\"[className]\">\n <div *ngIf=\"variant !== 'orientation'\" class=\"flex items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <ng-container [ngSwitch]=\"variant\">\n <div *ngSwitchCase=\"'sizes'\" class=\"flex items-center\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex items-center\" [ngClass]=\"i > 0 ? 'pl-4' : ''\">\n <div class=\"flex h-40 w-32 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngSwitchDefault class=\"flex flex-col items-center justify-center\">\n <div class=\"flex h-80 w-80 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-3xl font-semibold text-foreground\">{{ visibleSlides[0] }}</div>\n </div>\n </div>\n <p *ngIf=\"variant === 'api'\" class=\"m-0 pt-2 text-sm font-medium text-muted-foreground\">Slide {{ index + 1 }} of {{ slides.length }}</p>\n </div>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <div *ngIf=\"variant === 'orientation'\" class=\"flex flex-col items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 15L12 9L6 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex w-80 flex-col\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex h-36 w-full items-center p-1\" [ngClass]=\"i > 0 ? 'pt-1' : ''\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n</section>\n" }]
84
+ args: [{ selector: 'pdm-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section [ngClass]=\"[className]\">\n <div *ngIf=\"variant !== 'orientation'\" class=\"flex items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex items-center\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex items-center\" [ngClass]=\"i > 0 ? 'pl-4' : ''\">\n <div class=\"flex h-40 w-32 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <p *ngIf=\"variant !== 'orientation' && showCounter\" class=\"m-0 pt-2 text-sm font-medium text-muted-foreground\">\n {{ slides.length ? (index + 1) : 0 }} / {{ slides.length }}\n </p>\n\n <div *ngIf=\"variant === 'orientation'\" class=\"flex flex-col items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 15L12 9L6 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex w-80 flex-col\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex h-36 w-full items-center p-1\" [ngClass]=\"i > 0 ? 'pt-1' : ''\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n</section>\n" }]
84
85
  }], propDecorators: { variant: [{
85
86
  type: Input
86
87
  }], className: [{
@@ -91,7 +92,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
91
92
  type: Input
92
93
  }], loop: [{
93
94
  type: Input
95
+ }], windowSize: [{
96
+ type: Input
97
+ }], showCounter: [{
98
+ type: Input
94
99
  }], indexChange: [{
95
100
  type: Output
96
101
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFlBQU8sR0FBdUIsU0FBUyxDQUFDO1FBQ3hDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixXQUFNLEdBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFWixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFM0MsV0FBTSxHQUFHLENBQUMsQ0FBQztLQWlGcEI7SUEvRUMsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJ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QU0sR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDOztpSEF6RlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsK01DVGpDLGtzSUFzRkE7MkZEN0VhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBkbUNhcm91c2VsVmFyaWFudCA9ICdkZWZhdWx0JyB8ICdzaXplcycgfCAnb3JpZW50YXRpb24nIHwgJ2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkbS1jYXJvdXNlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbUNhcm91c2VsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFyaWFudDogUGRtQ2Fyb3VzZWxWYXJpYW50ID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgc2xpZGVzOiBudW1iZXJbXSA9IFsxLCAyLCAzLCA0LCA1XTtcbiAgQElucHV0KCkgc3RhcnRJbmRleCA9IDA7XG4gIEBJbnB1dCgpIGxvb3AgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgaW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwcml2YXRlIF9pbmRleCA9IDA7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5kZXggPSB0aGlzLm5vcm1hbGl6ZUluZGV4KHRoaXMuc3RhcnRJbmRleCk7XG4gIH1cblxuICBnZXQgaW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faW5kZXg7XG4gIH1cblxuICBnZXQgY2FuUHJldigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb29wIHx8IHRoaXMuX2luZGV4ID4gMDtcbiAgfVxuXG4gIGdldCBjYW5OZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvb3AgfHwgdGhpcy5faW5kZXggPCB0aGlzLm1heEluZGV4O1xuICB9XG5cbiAgZ2V0IG1heEluZGV4KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc2xpZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdzaXplcycpIHtcbiAgICAgIHJldHVybiBNYXRoLm1heCgwLCB0aGlzLnNsaWRlcy5sZW5ndGggLSAzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ29yaWVudGF0aW9uJykge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIHRoaXMuc2xpZGVzLmxlbmd0aCAtIDIpO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgdGhpcy5zbGlkZXMubGVuZ3RoIC0gMSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZVNsaWRlcygpOiBudW1iZXJbXSB7XG4gICAgaWYgKHRoaXMuc2xpZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdzaXplcycpIHtcbiAgICAgIHJldHVybiB0aGlzLnNsaWNlV2luZG93KDMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdvcmllbnRhdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLnNsaWNlV2luZG93KDIpO1xuICAgIH1cblxuICAgIHJldHVybiBbdGhpcy5zbGlkZXNbdGhpcy5faW5kZXhdXTtcbiAgfVxuXG4gIG9uUHJldigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuUHJldikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHQgPSB0aGlzLl9pbmRleCAtIDE7XG4gICAgdGhpcy5zZXRJbmRleCh0aGlzLmxvb3AgJiYgbmV4dCA8IDAgPyB0aGlzLm1heEluZGV4IDogbmV4dCk7XG4gIH1cblxuICBvbk5leHQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhbk5leHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0ID0gdGhpcy5faW5kZXggKyAxO1xuICAgIHRoaXMuc2V0SW5kZXgodGhpcy5sb29wICYmIG5leHQgPiB0aGlzLm1heEluZGV4ID8gMCA6IG5leHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbmRleCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplSW5kZXgodmFsdWUpO1xuICAgIHRoaXMuX2luZGV4ID0gbm9ybWFsaXplZDtcbiAgICB0aGlzLmluZGV4Q2hhbmdlLmVtaXQodGhpcy5faW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVJbmRleCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5zbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMubWF4SW5kZXgsIE1hdGgubWF4KDAsIHZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIHNsaWNlV2luZG93KHNpemU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5zbGlkZXMuc2xpY2UodGhpcy5faW5kZXgsIHRoaXMuX2luZGV4ICsgc2l6ZSk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIFtuZ0NsYXNzXT1cIltjbGFzc05hbWVdXCI+XG4gIDxkaXYgKm5nSWY9XCJ2YXJpYW50ICE9PSAnb3JpZW50YXRpb24nXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTggdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHAtMi41XCJcbiAgICAgIFtuZ0NsYXNzXT1cIiFjYW5QcmV2ID8gJ29wYWNpdHktNTAnIDogJydcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5QcmV2XCJcbiAgICAgIChjbGljayk9XCJvblByZXYoKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXMgc2xpZGVcIlxuICAgID5cbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNCB0ZXh0LWZvcmVncm91bmRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xNSAxOEw5IDEyTDE1IDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInZhcmlhbnRcIj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidzaXplcydcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNsaWRlIG9mIHZpc2libGVTbGlkZXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCIgW25nQ2xhc3NdPVwiaSA+IDAgPyAncGwtNCcgOiAnJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtNDAgdy0zMiBpdGVtcy1jZW50ZXIgcC0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLWZ1bGwgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgcHktNiBzaGFkb3ctc21cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kXCI+e3sgc2xpZGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLTgwIHctODAgaXRlbXMtY2VudGVyIHAtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtZnVsbCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBweS02IHNoYWRvdy1zbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kXCI+e3sgdmlzaWJsZVNsaWRlc1swXSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgKm5nSWY9XCJ2YXJpYW50ID09PSAnYXBpJ1wiIGNsYXNzPVwibS0wIHB0LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5TbGlkZSB7eyBpbmRleCArIDEgfX0gb2Yge3sgc2xpZGVzLmxlbmd0aCB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcC0yLjVcIlxuICAgICAgW25nQ2xhc3NdPVwiIWNhbk5leHQgPyAnb3BhY2l0eS01MCcgOiAnJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbk5leHRcIlxuICAgICAgKGNsaWNrKT1cIm9uTmV4dCgpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IHNsaWRlXCJcbiAgICA+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTQgdGV4dC1mb3JlZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cInZhcmlhbnQgPT09ICdvcmllbnRhdGlvbidcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcC0yLjVcIlxuICAgICAgW25nQ2xhc3NdPVwiIWNhblByZXYgPyAnb3BhY2l0eS01MCcgOiAnJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhblByZXZcIlxuICAgICAgKGNsaWNrKT1cIm9uUHJldigpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBzbGlkZVwiXG4gICAgPlxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgY2xhc3M9XCJoLTQgdy00IHRleHQtZm9yZWdyb3VuZFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTE4IDE1TDEyIDlMNiAxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggdy04MCBmbGV4LWNvbFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2xpZGUgb2YgdmlzaWJsZVNsaWRlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZmxleCBoLTM2IHctZnVsbCBpdGVtcy1jZW50ZXIgcC0xXCIgW25nQ2xhc3NdPVwiaSA+IDAgPyAncHQtMScgOiAnJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLWZ1bGwgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgcHktNiBzaGFkb3ctc21cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWZvcmVncm91bmRcIj57eyBzbGlkZSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcC0yLjVcIlxuICAgICAgW25nQ2xhc3NdPVwiIWNhbk5leHQgPyAnb3BhY2l0eS01MCcgOiAnJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbk5leHRcIlxuICAgICAgKGNsaWNrKT1cIm9uTmV4dCgpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IHNsaWRlXCJcbiAgICA+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTQgdGV4dC1mb3JlZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNNiA5TDEyIDE1TDE4IDlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTaEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFlBQU8sR0FBdUIsU0FBUyxDQUFDO1FBQ3hDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixXQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUNwQyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUzQyxXQUFNLEdBQUcsQ0FBQyxDQUFDO0tBZ0ZwQjtJQTlFQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDbEQs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LG1CQUVQLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1DYXJvdXNlbFZhcmlhbnQgPSAnZGVmYXVsdCcgfCAnc2l6ZXMnIHwgJ29yaWVudGF0aW9uJyB8ICdhcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tY2Fyb3VzZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1DYXJvdXNlbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbUNhcm91c2VsVmFyaWFudCA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIHNsaWRlczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9IFtdO1xuICBASW5wdXQoKSBzdGFydEluZGV4ID0gMDtcbiAgQElucHV0KCkgbG9vcCA9IGZhbHNlO1xuICBASW5wdXQoKSB3aW5kb3dTaXplPzogbnVtYmVyO1xuICBASW5wdXQoKSBzaG93Q291bnRlciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBpbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgX2luZGV4ID0gMDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbmRleCA9IHRoaXMubm9ybWFsaXplSW5kZXgodGhpcy5zdGFydEluZGV4KTtcbiAgfVxuXG4gIGdldCBpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pbmRleDtcbiAgfVxuXG4gIGdldCBjYW5QcmV2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvb3AgfHwgdGhpcy5faW5kZXggPiAwO1xuICB9XG5cbiAgZ2V0IGNhbk5leHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9vcCB8fCB0aGlzLl9pbmRleCA8IHRoaXMubWF4SW5kZXg7XG4gIH1cblxuICBnZXQgbWF4SW5kZXgoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5zbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIHRoaXMuc2xpZGVzLmxlbmd0aCAtIHRoaXMuY3VycmVudFdpbmRvd1NpemUpO1xuICB9XG5cbiAgZ2V0IHZpc2libGVTbGlkZXMoKTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB7XG4gICAgaWYgKHRoaXMuc2xpZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNsaWNlV2luZG93KHRoaXMuY3VycmVudFdpbmRvd1NpemUpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRXaW5kb3dTaXplKCk6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLndpbmRvd1NpemUgPT09ICdudW1iZXInICYmIHRoaXMud2luZG93U2l6ZSA+IDApIHtcbiAgICAgIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHRoaXMud2luZG93U2l6ZSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy52YXJpYW50ID09PSAnc2l6ZXMnKSB7XG4gICAgICByZXR1cm4gMztcbiAgICB9XG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ29yaWVudGF0aW9uJykge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9XG5cbiAgb25QcmV2KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5QcmV2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuX2luZGV4IC0gMTtcbiAgICB0aGlzLnNldEluZGV4KHRoaXMubG9vcCAmJiBuZXh0IDwgMCA/IHRoaXMubWF4SW5kZXggOiBuZXh0KTtcbiAgfVxuXG4gIG9uTmV4dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuTmV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHQgPSB0aGlzLl9pbmRleCArIDE7XG4gICAgdGhpcy5zZXRJbmRleCh0aGlzLmxvb3AgJiYgbmV4dCA+IHRoaXMubWF4SW5kZXggPyAwIDogbmV4dCk7XG4gIH1cblxuICBwcml2YXRlIHNldEluZGV4KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVJbmRleCh2YWx1ZSk7XG4gICAgdGhpcy5faW5kZXggPSBub3JtYWxpemVkO1xuICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdCh0aGlzLl9pbmRleCk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZUluZGV4KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnNsaWRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5tYXhJbmRleCwgTWF0aC5tYXgoMCwgdmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2xpY2VXaW5kb3coc2l6ZTogbnVtYmVyKTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuc2xpZGVzLnNsaWNlKHRoaXMuX2luZGV4LCB0aGlzLl9pbmRleCArIHNpemUpO1xuICB9XG59XG4iLCI8c2VjdGlvbiBbbmdDbGFzc109XCJbY2xhc3NOYW1lXVwiPlxuICA8ZGl2ICpuZ0lmPVwidmFyaWFudCAhPT0gJ29yaWVudGF0aW9uJ1wiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCBwLTIuNVwiXG4gICAgICBbbmdDbGFzc109XCIhY2FuUHJldiA/ICdvcGFjaXR5LTUwJyA6ICcnXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY2FuUHJldlwiXG4gICAgICAoY2xpY2spPVwib25QcmV2KClcIlxuICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIHNsaWRlXCJcbiAgICA+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTQgdGV4dC1mb3JlZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTUgMThMOSAxMkwxNSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNsaWRlIG9mIHZpc2libGVTbGlkZXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCIgW25nQ2xhc3NdPVwiaSA+IDAgPyAncGwtNCcgOiAnJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLTQwIHctMzIgaXRlbXMtY2VudGVyIHAtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtZnVsbCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBweS02IHNoYWRvdy1zbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kXCI+e3sgc2xpZGUgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTggdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHAtMi41XCJcbiAgICAgIFtuZ0NsYXNzXT1cIiFjYW5OZXh0ID8gJ29wYWNpdHktNTAnIDogJydcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5OZXh0XCJcbiAgICAgIChjbGljayk9XCJvbk5leHQoKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiTmV4dCBzbGlkZVwiXG4gICAgPlxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgY2xhc3M9XCJoLTQgdy00IHRleHQtZm9yZWdyb3VuZFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxwICpuZ0lmPVwidmFyaWFudCAhPT0gJ29yaWVudGF0aW9uJyAmJiBzaG93Q291bnRlclwiIGNsYXNzPVwibS0wIHB0LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICB7eyBzbGlkZXMubGVuZ3RoID8gKGluZGV4ICsgMSkgOiAwIH19IC8ge3sgc2xpZGVzLmxlbmd0aCB9fVxuICA8L3A+XG5cbiAgPGRpdiAqbmdJZj1cInZhcmlhbnQgPT09ICdvcmllbnRhdGlvbidcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcC0yLjVcIlxuICAgICAgW25nQ2xhc3NdPVwiIWNhblByZXYgPyAnb3BhY2l0eS01MCcgOiAnJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhblByZXZcIlxuICAgICAgKGNsaWNrKT1cIm9uUHJldigpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBzbGlkZVwiXG4gICAgPlxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgY2xhc3M9XCJoLTQgdy00IHRleHQtZm9yZWdyb3VuZFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTE4IDE1TDEyIDlMNiAxNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggdy04MCBmbGV4LWNvbFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2xpZGUgb2YgdmlzaWJsZVNsaWRlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZmxleCBoLTM2IHctZnVsbCBpdGVtcy1jZW50ZXIgcC0xXCIgW25nQ2xhc3NdPVwiaSA+IDAgPyAncHQtMScgOiAnJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLWZ1bGwgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgcHktNiBzaGFkb3ctc21cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWZvcmVncm91bmRcIj57eyBzbGlkZSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcC0yLjVcIlxuICAgICAgW25nQ2xhc3NdPVwiIWNhbk5leHQgPyAnb3BhY2l0eS01MCcgOiAnJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbk5leHRcIlxuICAgICAgKGNsaWNrKT1cIm9uTmV4dCgpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IHNsaWRlXCJcbiAgICA+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTQgdGV4dC1mb3JlZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNNiA5TDEyIDE1TDE4IDlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=