@edm-sdui/sdui 1.0.67 → 1.0.68

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.
Binary file
@@ -1,12 +1,16 @@
1
- import { Component, ElementRef, Inject, Renderer2, ViewChild, } from '@angular/core';
1
+ import { Component, ElementRef, Inject, NgZone, Renderer2, ViewChild, } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  import * as i2 from "../uicomponent.component";
5
5
  import * as i3 from "../../../directives/uiview.directive";
6
6
  export class ScrollableRowComponent {
7
- constructor(uiComponent, renderer) {
7
+ constructor(uiComponent, renderer, zone) {
8
8
  this.uiComponent = uiComponent;
9
9
  this.renderer = renderer;
10
+ this.zone = zone;
11
+ this.canScroll = false;
12
+ this.canPrev = false;
13
+ this.canNext = false;
10
14
  }
11
15
  ngOnInit() {
12
16
  }
@@ -15,10 +19,74 @@ export class ScrollableRowComponent {
15
19
  this.applyElement(this.uiComponent.element);
16
20
  }
17
21
  this.scroll();
22
+ setTimeout(() => this.updateTrackState(), 0);
23
+ this.resizeListener = () => this.updateTrackState();
24
+ window.addEventListener('resize', this.resizeListener);
25
+ if (typeof ResizeObserver !== 'undefined' && this.scrollableRowElementRef?.nativeElement) {
26
+ this.zone.runOutsideAngular(() => {
27
+ this.resizeObserver = new ResizeObserver(() => {
28
+ this.zone.run(() => this.updateTrackState());
29
+ });
30
+ this.resizeObserver.observe(this.scrollableRowElementRef.nativeElement);
31
+ });
32
+ }
33
+ }
34
+ ngOnDestroy() {
35
+ if (this.resizeListener) {
36
+ window.removeEventListener('resize', this.resizeListener);
37
+ }
38
+ this.resizeObserver?.disconnect();
39
+ }
40
+ onTrackScroll() {
41
+ this.updateTrackState();
42
+ }
43
+ prev() {
44
+ this.scrollByStep(-1);
45
+ }
46
+ next() {
47
+ this.scrollByStep(1);
18
48
  }
19
49
  applyElement(element) {
20
50
  console.log(element);
21
51
  }
52
+ updateTrackState() {
53
+ const track = this.scrollableRowElementRef?.nativeElement;
54
+ if (!track) {
55
+ this.canScroll = false;
56
+ this.canPrev = false;
57
+ this.canNext = false;
58
+ return;
59
+ }
60
+ const maxLeft = Math.max(0, track.scrollWidth - track.clientWidth);
61
+ const left = Math.max(0, track.scrollLeft);
62
+ const tolerance = 2;
63
+ this.canScroll = maxLeft > tolerance;
64
+ this.canPrev = this.canScroll && left > tolerance;
65
+ this.canNext = this.canScroll && left < maxLeft - tolerance;
66
+ }
67
+ scrollByStep(direction) {
68
+ const track = this.scrollableRowElementRef?.nativeElement;
69
+ if (!track)
70
+ return;
71
+ const maxLeft = Math.max(0, track.scrollWidth - track.clientWidth);
72
+ const step = this.getTrackStep(track);
73
+ const targetLeft = Math.max(0, Math.min(maxLeft, track.scrollLeft + step * direction));
74
+ track.scrollTo({ left: targetLeft, behavior: 'smooth' });
75
+ setTimeout(() => this.updateTrackState(), 260);
76
+ }
77
+ getTrackStep(track) {
78
+ const firstItem = track.firstElementChild;
79
+ if (!firstItem)
80
+ return Math.max(1, track.clientWidth * 0.92);
81
+ const itemWidth = firstItem.getBoundingClientRect().width;
82
+ const styles = getComputedStyle(track);
83
+ const gapRaw = styles.columnGap || styles.gap || '0';
84
+ const gap = Number.parseFloat(gapRaw) || 0;
85
+ const cardStep = Math.max(1, itemWidth + gap);
86
+ const viewportStep = track.clientWidth * 0.92;
87
+ const cardsPerJump = Math.max(2, Math.floor(viewportStep / cardStep));
88
+ return Math.max(cardStep * cardsPerJump, viewportStep);
89
+ }
22
90
  scroll() {
23
91
  const scrollContainer = this.scrollableRowElementRef.nativeElement;
24
92
  let isDown = false;
@@ -47,17 +115,17 @@ export class ScrollableRowComponent {
47
115
  scrollContainer.scrollLeft = scrollLeft - walk;
48
116
  });
49
117
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableRowComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ScrollableRowComponent, isStandalone: false, selector: "edm-sdui-scrollable-row", viewQueries: [{ propertyName: "scrollableRowElementRef", first: true, predicate: ["scrollableRowElement"], descendants: true }], ngImport: i0, template: "<div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableRowComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ScrollableRowComponent, isStandalone: false, selector: "edm-sdui-scrollable-row", viewQueries: [{ propertyName: "scrollableRowElementRef", first: true, predicate: ["scrollableRowElement"], descendants: true }], ngImport: i0, template: "<div\n class=\"scrollable-row-shell\"\n [class.can-scroll]=\"canScroll\"\n [class.track-scrolled]=\"canPrev\"\n [class.track-at-end]=\"canScroll && !canNext\"\n *ngIf=\"uiComponent\"\n>\n <div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n (scroll)=\"onTrackScroll()\"\n >\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n </div>\n\n <button\n *ngIf=\"canScroll && canPrev\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--prev\"\n (click)=\"prev()\"\n aria-label=\"Anterior\"\n >\n &#8592;\n </button>\n <button\n *ngIf=\"canScroll && canNext\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--next\"\n (click)=\"next()\"\n aria-label=\"Pr\u00F3ximo\"\n >\n &#8594;\n </button>\n</div>\n", styles: [":host{display:contents}.scrollable-row-shell{position:relative;width:100%}.scrollable-row-shell:before,.scrollable-row-shell:after{content:\"\";position:absolute;top:0;bottom:0;width:clamp(1.5rem,4vw,2.625rem);pointer-events:none;z-index:4;opacity:0;transition:opacity .2s ease}.scrollable-row-shell:before{left:0;background:linear-gradient(90deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell:after{right:0;background:linear-gradient(270deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell.can-scroll:after{opacity:1}.scrollable-row-shell.track-scrolled:before{opacity:1}.scrollable-row-shell.track-at-end:after{opacity:0}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-behavior:smooth;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}.scrollable-row-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:1px solid rgba(255,255,255,.34);background:#070a10c7;color:#f4f6fb;font-size:1.4rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:5;transition:opacity .18s ease,background-color .2s ease,border-color .2s ease}.scrollable-row-nav:hover,.scrollable-row-nav:focus{background:#121622e6;border-color:#ffffff8a;outline:none}.scrollable-row-nav--prev{left:-.75rem}.scrollable-row-nav--next{right:-.75rem}:host-context(.rounded) .scrollable-row-nav{border-radius:3.75rem}:host-context(.square) .scrollable-row-nav{border-radius:10px}::ng-deep .column:has(.scrollable-row-shell){overflow:visible}@media (max-width: 767px){.scrollable-row-nav{display:none}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
52
120
  }
53
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableRowComponent, decorators: [{
54
122
  type: Component,
55
- args: [{ selector: 'edm-sdui-scrollable-row', standalone: false, template: "<div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}\n"] }]
123
+ args: [{ selector: 'edm-sdui-scrollable-row', standalone: false, template: "<div\n class=\"scrollable-row-shell\"\n [class.can-scroll]=\"canScroll\"\n [class.track-scrolled]=\"canPrev\"\n [class.track-at-end]=\"canScroll && !canNext\"\n *ngIf=\"uiComponent\"\n>\n <div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n (scroll)=\"onTrackScroll()\"\n >\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n </div>\n\n <button\n *ngIf=\"canScroll && canPrev\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--prev\"\n (click)=\"prev()\"\n aria-label=\"Anterior\"\n >\n &#8592;\n </button>\n <button\n *ngIf=\"canScroll && canNext\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--next\"\n (click)=\"next()\"\n aria-label=\"Pr\u00F3ximo\"\n >\n &#8594;\n </button>\n</div>\n", styles: [":host{display:contents}.scrollable-row-shell{position:relative;width:100%}.scrollable-row-shell:before,.scrollable-row-shell:after{content:\"\";position:absolute;top:0;bottom:0;width:clamp(1.5rem,4vw,2.625rem);pointer-events:none;z-index:4;opacity:0;transition:opacity .2s ease}.scrollable-row-shell:before{left:0;background:linear-gradient(90deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell:after{right:0;background:linear-gradient(270deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell.can-scroll:after{opacity:1}.scrollable-row-shell.track-scrolled:before{opacity:1}.scrollable-row-shell.track-at-end:after{opacity:0}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-behavior:smooth;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}.scrollable-row-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:1px solid rgba(255,255,255,.34);background:#070a10c7;color:#f4f6fb;font-size:1.4rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:5;transition:opacity .18s ease,background-color .2s ease,border-color .2s ease}.scrollable-row-nav:hover,.scrollable-row-nav:focus{background:#121622e6;border-color:#ffffff8a;outline:none}.scrollable-row-nav--prev{left:-.75rem}.scrollable-row-nav--next{right:-.75rem}:host-context(.rounded) .scrollable-row-nav{border-radius:3.75rem}:host-context(.square) .scrollable-row-nav{border-radius:10px}::ng-deep .column:has(.scrollable-row-shell){overflow:visible}@media (max-width: 767px){.scrollable-row-nav{display:none}}\n"] }]
56
124
  }], ctorParameters: () => [{ type: undefined, decorators: [{
57
125
  type: Inject,
58
126
  args: ['uiComponent']
59
- }] }, { type: i0.Renderer2 }], propDecorators: { scrollableRowElementRef: [{
127
+ }] }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { scrollableRowElementRef: [{
60
128
  type: ViewChild,
61
129
  args: ['scrollableRowElement']
62
130
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9zY3JvbGxhYmxlLXJvdy9zY3JvbGxhYmxlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3Njcm9sbGFibGUtcm93L3Njcm9sbGFibGUtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7OztBQWN2QixNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFlBQ2dDLFdBQXdCLEVBQzlDLFFBQW1CO1FBREcsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUN6QixDQUFDO0lBRUwsUUFBUTtJQUNSLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBa0I7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBR08sTUFBTTtRQUNaLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUM7UUFDbkUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUVuQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBYSxFQUFFLEVBQUU7WUFDbkUsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNkLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7WUFDOUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUN2RCxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2YsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNwRCxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2YsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBYSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUNoQyxlQUFlLENBQUMsVUFBVSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXJEVSxzQkFBc0Isa0JBSXZCLGFBQWE7bUdBSlosc0JBQXNCLHFOQ3RCbkMsd1JBWUE7OzRGRFVhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FHdkIsS0FBSzs7MEJBTWQsTUFBTTsyQkFBQyxhQUFhO2lFQUhZLHVCQUF1QjtzQkFBekQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWljb21wb25lbnQnO1xuaW1wb3J0IHsgVUlFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWVsZW1lbnQnO1xuaW1wb3J0IHsgY29sb3JNYXBwaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvY29sb3ItbWFwcGluZyc7XG5pbXBvcnQgeyBGb250U2l6ZU1hcHBpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9mb250LXNpemUtbWFwcGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IGFzc2V0TWFwcGluZyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2Fzc2V0LW1hcHBpbmcnO1xuaW1wb3J0IHsgVUlBc3NldCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWFzc2V0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWRtLXNkdWktc2Nyb2xsYWJsZS1yb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nyb2xsYWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc2Nyb2xsYWJsZS1yb3cuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsYWJsZVJvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGFibGVSb3dFbGVtZW50Jykgc2Nyb2xsYWJsZVJvd0VsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCd1aUNvbXBvbmVudCcpIHB1YmxpYyB1aUNvbXBvbmVudDogVUlDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50KHRoaXMudWlDb21wb25lbnQuZWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuc2Nyb2xsKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RWxlbWVudChlbGVtZW50OiBVSUVsZW1lbnQpIHtcbiAgICBjb25zb2xlLmxvZyhlbGVtZW50KVxuICB9XG5cblxuICBwcml2YXRlIHNjcm9sbCgpIHtcbiAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSB0aGlzLnNjcm9sbGFibGVSb3dFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgbGV0IGlzRG93biA9IGZhbHNlO1xuICAgIGxldCBzdGFydFggPSAwO1xuICAgIGxldCBzY3JvbGxMZWZ0ID0gMDtcblxuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKHNjcm9sbENvbnRhaW5lciwgJ21vdXNlZG93bicsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpc0Rvd24gPSB0cnVlO1xuICAgICAgc2Nyb2xsQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ3Njcm9sbGluZycpO1xuICAgICAgc3RhcnRYID0gZS5wYWdlWCAtIHNjcm9sbENvbnRhaW5lci5vZmZzZXRMZWZ0O1xuICAgICAgc2Nyb2xsTGVmdCA9IHNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oc2Nyb2xsQ29udGFpbmVyLCAnbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgIGlzRG93biA9IGZhbHNlO1xuICAgICAgc2Nyb2xsQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ3Njcm9sbGluZycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oc2Nyb2xsQ29udGFpbmVyLCAnbW91c2V1cCcsICgpID0+IHtcbiAgICAgIGlzRG93biA9IGZhbHNlO1xuICAgICAgc2Nyb2xsQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ3Njcm9sbGluZycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oc2Nyb2xsQ29udGFpbmVyLCAnbW91c2Vtb3ZlJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNEb3duKSByZXR1cm47XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCB4ID0gZS5wYWdlWCAtIHNjcm9sbENvbnRhaW5lci5vZmZzZXRMZWZ0O1xuICAgICAgY29uc3Qgd2FsayA9ICh4IC0gc3RhcnRYKSAqIDEuNTtcbiAgICAgIHNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdCAtIHdhbGs7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3Njcm9sbGFibGVSb3dFbGVtZW50XG4gIFtlZG1TZHVpVmlld109XCJ1aUNvbXBvbmVudC5lbGVtZW50XCJcbiAgY2xhc3M9XCJzY3JvbGxhYmxlLXJvd1wiXG4gICpuZ0lmPVwidWlDb21wb25lbnRcIlxuPlxuICA8ZWRtLXNkdWktY29tcG9uZW50XG4gICAgKm5nRm9yPVwibGV0IGNvbXBvbmVudCBvZiB1aUNvbXBvbmVudC5jb21wb25lbnRzXCJcbiAgICBbdWlDb21wb25lbnRdPVwiY29tcG9uZW50XCJcbiAgPlxuICA8L2VkbS1zZHVpLWNvbXBvbmVudD5cbjwvZGl2PlxuIl19
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9zY3JvbGxhYmxlLXJvdy9zY3JvbGxhYmxlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3Njcm9sbGFibGUtcm93L3Njcm9sbGFibGUtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBR04sU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVdkIsTUFBTSxPQUFPLHNCQUFzQjtJQVVqQyxZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixJQUFZO1FBRlUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBVmYsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFlBQU8sR0FBWSxLQUFLLENBQUM7SUFTNUIsQ0FBQztJQUVMLFFBQVE7SUFDUixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLFVBQVUsQ0FBQyxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVu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TUFBTSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFhLEVBQUUsRUFBRTtZQUNuRSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7WUFDL0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ2hDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBL0lVLHNCQUFzQixrQkFXdkIsYUFBYTttR0FYWixzQkFBc0IscU5DcEJuQywyNkJBdUNBOzs0RkRuQmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLHlCQUF5QixjQUd2QixLQUFLOzswQkFhZCxNQUFNOzJCQUFDLGFBQWE7c0ZBVlksdUJBQXVCO3NCQUF6RCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWljb21wb25lbnQnO1xuaW1wb3J0IHsgVUlFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWVsZW1lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlZG0tc2R1aS1zY3JvbGxhYmxlLXJvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JvbGxhYmxlLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zY3JvbGxhYmxlLXJvdy5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxhYmxlUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdzY3JvbGxhYmxlUm93RWxlbWVudCcpIHNjcm9sbGFibGVSb3dFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgcHVibGljIGNhblNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgY2FuUHJldjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgY2FuTmV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVzaXplTGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgndWlDb21wb25lbnQnKSBwdWJsaWMgdWlDb21wb25lbnQ6IFVJQ29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KSB7XG4gICAgICB0aGlzLmFwcGx5RWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbCgpO1xuICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy51cGRhdGVUcmFja1N0YXRlKCksIDApO1xuXG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlVHJhY2tTdGF0ZSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcblxuICAgIGlmICh0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc2Nyb2xsYWJsZVJvd0VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCk6IHZvaWQgPT4gdGhpcy51cGRhdGVUcmFja1N0YXRlKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciEub2JzZXJ2ZSh0aGlzLnNjcm9sbGFibGVSb3dFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICB9XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgb25UcmFja1Njcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVRyYWNrU3RhdGUoKTtcbiAgfVxuXG4gIHByZXYoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxCeVN0ZXAoLTEpO1xuICB9XG5cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbEJ5U3RlcCgxKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICAgIGNvbnNvbGUubG9nKGVsZW1lbnQpXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRyYWNrU3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgdHJhY2sgPSB0aGlzLnNjcm9sbGFibGVSb3dFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghdHJhY2spIHtcbiAgICAgIHRoaXMuY2FuU2Nyb2xsID0gZmFsc2U7XG4gICAgICB0aGlzLmNhblByZXYgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2FuTmV4dCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1heExlZnQ6IG51bWJlciA9IE1hdGgubWF4KDAsIHRyYWNrLnNjcm9sbFdpZHRoIC0gdHJhY2suY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IGxlZnQ6IG51bWJlciA9IE1hdGgubWF4KDAsIHRyYWNrLnNjcm9sbExlZnQpO1xuICAgIGNvbnN0IHRvbGVyYW5jZTogbnVtYmVyID0gMjtcblxuICAgIHRoaXMuY2FuU2Nyb2xsID0gbWF4TGVmdCA+IHRvbGVyYW5jZTtcbiAgICB0aGlzLmNhblByZXYgPSB0aGlzLmNhblNjcm9sbCAmJiBsZWZ0ID4gdG9sZXJhbmNlO1xuICAgIHRoaXMuY2FuTmV4dCA9IHRoaXMuY2FuU2Nyb2xsICYmIGxlZnQgPCBtYXhMZWZ0IC0gdG9sZXJhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxCeVN0ZXAoZGlyZWN0aW9uOiAxIHwgLTEpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFjayA9IHRoaXMuc2Nyb2xsYWJsZVJvd0VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCF0cmFjaykgcmV0dXJuO1xuXG4gICAgY29uc3QgbWF4TGVmdDogbnVtYmVyID0gTWF0aC5tYXgoMCwgdHJhY2suc2Nyb2xsV2lkdGggLSB0cmFjay5jbGllbnRXaWR0aCk7XG4gICAgY29uc3Qgc3RlcDogbnVtYmVyID0gdGhpcy5nZXRUcmFja1N0ZXAodHJhY2spO1xuICAgIGNvbnN0IHRhcmdldExlZnQ6IG51bWJlciA9IE1hdGgubWF4KFxuICAgICAgMCxcbiAgICAgIE1hdGgubWluKG1heExlZnQsIHRyYWNrLnNjcm9sbExlZnQgKyBzdGVwICogZGlyZWN0aW9uKSxcbiAgICApO1xuXG4gICAgdHJhY2suc2Nyb2xsVG8oeyBsZWZ0OiB0YXJnZXRMZWZ0LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB0aGlzLnVwZGF0ZVRyYWNrU3RhdGUoKSwgMjYwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJhY2tTdGVwKHRyYWNrOiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgY29uc3QgZmlyc3RJdGVtID0gdHJhY2suZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICghZmlyc3RJdGVtKSByZXR1cm4gTWF0aC5tYXgoMSwgdHJhY2suY2xpZW50V2lkdGggKiAwLjkyKTtcblxuICAgIGNvbnN0IGl0ZW1XaWR0aDogbnVtYmVyID0gZmlyc3RJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGNvbnN0IHN0eWxlczogQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IGdldENvbXB1dGVkU3R5bGUodHJhY2spO1xuICAgIGNvbnN0IGdhcFJhdzogc3RyaW5nID0gc3R5bGVzLmNvbHVtbkdhcCB8fCBzdHlsZXMuZ2FwIHx8ICcwJztcbiAgICBjb25zdCBnYXA6IG51bWJlciA9IE51bWJlci5wYXJzZUZsb2F0KGdhcFJhdykgfHwgMDtcbiAgICBjb25zdCBjYXJkU3RlcDogbnVtYmVyID0gTWF0aC5tYXgoMSwgaXRlbVdpZHRoICsgZ2FwKTtcbiAgICBjb25zdCB2aWV3cG9ydFN0ZXA6IG51bWJlciA9IHRyYWNrLmNsaWVudFdpZHRoICogMC45MjtcbiAgICBjb25zdCBjYXJkc1Blckp1bXA6IG51bWJlciA9IE1hdGgubWF4KFxuICAgICAgMixcbiAgICAgIE1hdGguZmxvb3Iodmlld3BvcnRTdGVwIC8gY2FyZFN0ZXApLFxuICAgICk7XG5cbiAgICByZXR1cm4gTWF0aC5tYXgoY2FyZFN0ZXAgKiBjYXJkc1Blckp1bXAsIHZpZXdwb3J0U3RlcCk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbCgpIHtcbiAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSB0aGlzLnNjcm9sbGFibGVSb3dFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgbGV0IGlzRG93biA9IGZhbHNlO1xuICAgIGxldCBzdGFydFggPSAwO1xuICAgIGxldCBzY3JvbGxMZWZ0ID0gMDtcblxuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKHNjcm9sbENvbnRhaW5lciwgJ21vdXNlZG93bicsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpc0Rvd24gPSB0cnVlO1xuICAgICAgc2Nyb2xsQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ3Njcm9sbGluZycpO1xuICAgICAgc3RhcnRYID0gZS5wYWdlWCAtIHNjcm9sbENvbnRhaW5lci5vZmZzZXRMZWZ0O1xuICAgICAgc2Nyb2xsTGVmdCA9IHNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oc2Nyb2xsQ29udGFpbmVyLCAnbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgIGlzRG93biA9IGZhbHNlO1xuICAgICAgc2Nyb2xsQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ3Njcm9sbGluZycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oc2Nyb2xsQ29udGFpbmVyLCAnbW91c2V1cCcsICgpID0+IHtcbiAgICAgIGlzRG93biA9IGZhbHNlO1xuICAgICAgc2Nyb2xsQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ3Njcm9sbGluZycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oc2Nyb2xsQ29udGFpbmVyLCAnbW91c2Vtb3ZlJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNEb3duKSByZXR1cm47XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCB4ID0gZS5wYWdlWCAtIHNjcm9sbENvbnRhaW5lci5vZmZzZXRMZWZ0O1xuICAgICAgY29uc3Qgd2FsayA9ICh4IC0gc3RhcnRYKSAqIDEuNTtcbiAgICAgIHNjcm9sbENvbnRhaW5lci5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdCAtIHdhbGs7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzY3JvbGxhYmxlLXJvdy1zaGVsbFwiXG4gIFtjbGFzcy5jYW4tc2Nyb2xsXT1cImNhblNjcm9sbFwiXG4gIFtjbGFzcy50cmFjay1zY3JvbGxlZF09XCJjYW5QcmV2XCJcbiAgW2NsYXNzLnRyYWNrLWF0LWVuZF09XCJjYW5TY3JvbGwgJiYgIWNhbk5leHRcIlxuICAqbmdJZj1cInVpQ29tcG9uZW50XCJcbj5cbiAgPGRpdlxuICAgICNzY3JvbGxhYmxlUm93RWxlbWVudFxuICAgIFtlZG1TZHVpVmlld109XCJ1aUNvbXBvbmVudC5lbGVtZW50XCJcbiAgICBjbGFzcz1cInNjcm9sbGFibGUtcm93XCJcbiAgICAoc2Nyb2xsKT1cIm9uVHJhY2tTY3JvbGwoKVwiXG4gID5cbiAgICA8ZWRtLXNkdWktY29tcG9uZW50XG4gICAgICAqbmdGb3I9XCJsZXQgY29tcG9uZW50IG9mIHVpQ29tcG9uZW50LmNvbXBvbmVudHNcIlxuICAgICAgW3VpQ29tcG9uZW50XT1cImNvbXBvbmVudFwiXG4gICAgPlxuICAgIDwvZWRtLXNkdWktY29tcG9uZW50PlxuICA8L2Rpdj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJjYW5TY3JvbGwgJiYgY2FuUHJldlwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJzY3JvbGxhYmxlLXJvdy1uYXYgc2Nyb2xsYWJsZS1yb3ctbmF2LS1wcmV2XCJcbiAgICAoY2xpY2spPVwicHJldigpXCJcbiAgICBhcmlhLWxhYmVsPVwiQW50ZXJpb3JcIlxuICA+XG4gICAgJiM4NTkyO1xuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwiY2FuU2Nyb2xsICYmIGNhbk5leHRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwic2Nyb2xsYWJsZS1yb3ctbmF2IHNjcm9sbGFibGUtcm93LW5hdi0tbmV4dFwiXG4gICAgKGNsaWNrKT1cIm5leHQoKVwiXG4gICAgYXJpYS1sYWJlbD1cIlByw7N4aW1vXCJcbiAgPlxuICAgICYjODU5NDtcbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -4131,9 +4131,13 @@ var picker_component = /*#__PURE__*/Object.freeze({
4131
4131
  });
4132
4132
 
4133
4133
  class ScrollableRowComponent {
4134
- constructor(uiComponent, renderer) {
4134
+ constructor(uiComponent, renderer, zone) {
4135
4135
  this.uiComponent = uiComponent;
4136
4136
  this.renderer = renderer;
4137
+ this.zone = zone;
4138
+ this.canScroll = false;
4139
+ this.canPrev = false;
4140
+ this.canNext = false;
4137
4141
  }
4138
4142
  ngOnInit() {
4139
4143
  }
@@ -4142,10 +4146,74 @@ class ScrollableRowComponent {
4142
4146
  this.applyElement(this.uiComponent.element);
4143
4147
  }
4144
4148
  this.scroll();
4149
+ setTimeout(() => this.updateTrackState(), 0);
4150
+ this.resizeListener = () => this.updateTrackState();
4151
+ window.addEventListener('resize', this.resizeListener);
4152
+ if (typeof ResizeObserver !== 'undefined' && this.scrollableRowElementRef?.nativeElement) {
4153
+ this.zone.runOutsideAngular(() => {
4154
+ this.resizeObserver = new ResizeObserver(() => {
4155
+ this.zone.run(() => this.updateTrackState());
4156
+ });
4157
+ this.resizeObserver.observe(this.scrollableRowElementRef.nativeElement);
4158
+ });
4159
+ }
4160
+ }
4161
+ ngOnDestroy() {
4162
+ if (this.resizeListener) {
4163
+ window.removeEventListener('resize', this.resizeListener);
4164
+ }
4165
+ this.resizeObserver?.disconnect();
4166
+ }
4167
+ onTrackScroll() {
4168
+ this.updateTrackState();
4169
+ }
4170
+ prev() {
4171
+ this.scrollByStep(-1);
4172
+ }
4173
+ next() {
4174
+ this.scrollByStep(1);
4145
4175
  }
4146
4176
  applyElement(element) {
4147
4177
  console.log(element);
4148
4178
  }
4179
+ updateTrackState() {
4180
+ const track = this.scrollableRowElementRef?.nativeElement;
4181
+ if (!track) {
4182
+ this.canScroll = false;
4183
+ this.canPrev = false;
4184
+ this.canNext = false;
4185
+ return;
4186
+ }
4187
+ const maxLeft = Math.max(0, track.scrollWidth - track.clientWidth);
4188
+ const left = Math.max(0, track.scrollLeft);
4189
+ const tolerance = 2;
4190
+ this.canScroll = maxLeft > tolerance;
4191
+ this.canPrev = this.canScroll && left > tolerance;
4192
+ this.canNext = this.canScroll && left < maxLeft - tolerance;
4193
+ }
4194
+ scrollByStep(direction) {
4195
+ const track = this.scrollableRowElementRef?.nativeElement;
4196
+ if (!track)
4197
+ return;
4198
+ const maxLeft = Math.max(0, track.scrollWidth - track.clientWidth);
4199
+ const step = this.getTrackStep(track);
4200
+ const targetLeft = Math.max(0, Math.min(maxLeft, track.scrollLeft + step * direction));
4201
+ track.scrollTo({ left: targetLeft, behavior: 'smooth' });
4202
+ setTimeout(() => this.updateTrackState(), 260);
4203
+ }
4204
+ getTrackStep(track) {
4205
+ const firstItem = track.firstElementChild;
4206
+ if (!firstItem)
4207
+ return Math.max(1, track.clientWidth * 0.92);
4208
+ const itemWidth = firstItem.getBoundingClientRect().width;
4209
+ const styles = getComputedStyle(track);
4210
+ const gapRaw = styles.columnGap || styles.gap || '0';
4211
+ const gap = Number.parseFloat(gapRaw) || 0;
4212
+ const cardStep = Math.max(1, itemWidth + gap);
4213
+ const viewportStep = track.clientWidth * 0.92;
4214
+ const cardsPerJump = Math.max(2, Math.floor(viewportStep / cardStep));
4215
+ return Math.max(cardStep * cardsPerJump, viewportStep);
4216
+ }
4149
4217
  scroll() {
4150
4218
  const scrollContainer = this.scrollableRowElementRef.nativeElement;
4151
4219
  let isDown = false;
@@ -4174,16 +4242,16 @@ class ScrollableRowComponent {
4174
4242
  scrollContainer.scrollLeft = scrollLeft - walk;
4175
4243
  });
4176
4244
  }
4177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableRowComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
4178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ScrollableRowComponent, isStandalone: false, selector: "edm-sdui-scrollable-row", viewQueries: [{ propertyName: "scrollableRowElementRef", first: true, predicate: ["scrollableRowElement"], descendants: true }], ngImport: i0, template: "<div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
4245
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableRowComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
4246
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ScrollableRowComponent, isStandalone: false, selector: "edm-sdui-scrollable-row", viewQueries: [{ propertyName: "scrollableRowElementRef", first: true, predicate: ["scrollableRowElement"], descendants: true }], ngImport: i0, template: "<div\n class=\"scrollable-row-shell\"\n [class.can-scroll]=\"canScroll\"\n [class.track-scrolled]=\"canPrev\"\n [class.track-at-end]=\"canScroll && !canNext\"\n *ngIf=\"uiComponent\"\n>\n <div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n (scroll)=\"onTrackScroll()\"\n >\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n </div>\n\n <button\n *ngIf=\"canScroll && canPrev\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--prev\"\n (click)=\"prev()\"\n aria-label=\"Anterior\"\n >\n &#8592;\n </button>\n <button\n *ngIf=\"canScroll && canNext\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--next\"\n (click)=\"next()\"\n aria-label=\"Pr\u00F3ximo\"\n >\n &#8594;\n </button>\n</div>\n", styles: [":host{display:contents}.scrollable-row-shell{position:relative;width:100%}.scrollable-row-shell:before,.scrollable-row-shell:after{content:\"\";position:absolute;top:0;bottom:0;width:clamp(1.5rem,4vw,2.625rem);pointer-events:none;z-index:4;opacity:0;transition:opacity .2s ease}.scrollable-row-shell:before{left:0;background:linear-gradient(90deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell:after{right:0;background:linear-gradient(270deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell.can-scroll:after{opacity:1}.scrollable-row-shell.track-scrolled:before{opacity:1}.scrollable-row-shell.track-at-end:after{opacity:0}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-behavior:smooth;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}.scrollable-row-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:1px solid rgba(255,255,255,.34);background:#070a10c7;color:#f4f6fb;font-size:1.4rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:5;transition:opacity .18s ease,background-color .2s ease,border-color .2s ease}.scrollable-row-nav:hover,.scrollable-row-nav:focus{background:#121622e6;border-color:#ffffff8a;outline:none}.scrollable-row-nav--prev{left:-.75rem}.scrollable-row-nav--next{right:-.75rem}:host-context(.rounded) .scrollable-row-nav{border-radius:3.75rem}:host-context(.square) .scrollable-row-nav{border-radius:10px}::ng-deep .column:has(.scrollable-row-shell){overflow:visible}@media (max-width: 767px){.scrollable-row-nav{display:none}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
4179
4247
  }
4180
4248
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScrollableRowComponent, decorators: [{
4181
4249
  type: Component,
4182
- args: [{ selector: 'edm-sdui-scrollable-row', standalone: false, template: "<div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}\n"] }]
4250
+ args: [{ selector: 'edm-sdui-scrollable-row', standalone: false, template: "<div\n class=\"scrollable-row-shell\"\n [class.can-scroll]=\"canScroll\"\n [class.track-scrolled]=\"canPrev\"\n [class.track-at-end]=\"canScroll && !canNext\"\n *ngIf=\"uiComponent\"\n>\n <div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n (scroll)=\"onTrackScroll()\"\n >\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n </div>\n\n <button\n *ngIf=\"canScroll && canPrev\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--prev\"\n (click)=\"prev()\"\n aria-label=\"Anterior\"\n >\n &#8592;\n </button>\n <button\n *ngIf=\"canScroll && canNext\"\n type=\"button\"\n class=\"scrollable-row-nav scrollable-row-nav--next\"\n (click)=\"next()\"\n aria-label=\"Pr\u00F3ximo\"\n >\n &#8594;\n </button>\n</div>\n", styles: [":host{display:contents}.scrollable-row-shell{position:relative;width:100%}.scrollable-row-shell:before,.scrollable-row-shell:after{content:\"\";position:absolute;top:0;bottom:0;width:clamp(1.5rem,4vw,2.625rem);pointer-events:none;z-index:4;opacity:0;transition:opacity .2s ease}.scrollable-row-shell:before{left:0;background:linear-gradient(90deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell:after{right:0;background:linear-gradient(270deg,var(--bg) 0%,transparent 100%)}.scrollable-row-shell.can-scroll:after{opacity:1}.scrollable-row-shell.track-scrolled:before{opacity:1}.scrollable-row-shell.track-at-end:after{opacity:0}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer;scroll-behavior:smooth;scroll-padding-left:var(--sdui-content-inset-left, 0px);scroll-padding-right:var(--sdui-content-inset-right, 0px)}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}.scrollable-row-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:1px solid rgba(255,255,255,.34);background:#070a10c7;color:#f4f6fb;font-size:1.4rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:5;transition:opacity .18s ease,background-color .2s ease,border-color .2s ease}.scrollable-row-nav:hover,.scrollable-row-nav:focus{background:#121622e6;border-color:#ffffff8a;outline:none}.scrollable-row-nav--prev{left:-.75rem}.scrollable-row-nav--next{right:-.75rem}:host-context(.rounded) .scrollable-row-nav{border-radius:3.75rem}:host-context(.square) .scrollable-row-nav{border-radius:10px}::ng-deep .column:has(.scrollable-row-shell){overflow:visible}@media (max-width: 767px){.scrollable-row-nav{display:none}}\n"] }]
4183
4251
  }], ctorParameters: () => [{ type: undefined, decorators: [{
4184
4252
  type: Inject,
4185
4253
  args: ['uiComponent']
4186
- }] }, { type: i0.Renderer2 }], propDecorators: { scrollableRowElementRef: [{
4254
+ }] }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { scrollableRowElementRef: [{
4187
4255
  type: ViewChild,
4188
4256
  args: ['scrollableRowElement']
4189
4257
  }] } });