@litigiovirtual/ius-design-components 1.0.178 → 1.0.179

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.
@@ -1,50 +1,86 @@
1
- import { Component, EventEmitter, HostListener, Output } from '@angular/core';
1
+ import { Component, EventEmitter, Output, ViewChild } from '@angular/core';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
2
3
  import { ButtonSquaredTertiaryComponent } from "../button-squared-tertiary";
3
4
  import { ButtonDynamicComponent } from "../button-dynamic";
4
5
  import { ButtonStandardSecondaryComponent } from "../button-standard-secondary";
5
6
  import { ButtonCircleTertiaryComponent } from "../button-circle-tertiary";
6
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
7
9
  export class ButtonFilterComponent {
8
- constructor(_el) {
10
+ get showFilter() {
11
+ return this._overlayRef !== null;
12
+ }
13
+ constructor(_el, _overlay, _vcr) {
9
14
  this._el = _el;
15
+ this._overlay = _overlay;
16
+ this._vcr = _vcr;
10
17
  this.clickFilter = new EventEmitter();
11
18
  this.clickDeleteFilter = new EventEmitter();
12
19
  this.clickClose = new EventEmitter();
13
- this.showFilter = false;
20
+ this._overlayRef = null;
14
21
  }
15
22
  showListFilter() {
16
- this.showFilter = !this.showFilter;
23
+ this.showFilter ? this._closePanel() : this._openPanel();
24
+ }
25
+ _openPanel() {
26
+ const positionStrategy = this._overlay
27
+ .position()
28
+ .flexibleConnectedTo(this._el)
29
+ .withFlexibleDimensions(false)
30
+ .withPush(false)
31
+ .withPositions([
32
+ // 1. Abajo + alineado izquierda
33
+ { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },
34
+ // 2. Abajo + alineado derecha
35
+ { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },
36
+ // 3. Derecha + alineado centro
37
+ { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 4 },
38
+ // 4. Izquierda + alineado centro
39
+ { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -4 },
40
+ // 5. Arriba + alineado izquierda
41
+ { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },
42
+ ]);
43
+ this._overlayRef = this._overlay.create({
44
+ positionStrategy,
45
+ hasBackdrop: true,
46
+ backdropClass: 'cdk-overlay-transparent-backdrop',
47
+ scrollStrategy: this._overlay.scrollStrategies.reposition(),
48
+ });
49
+ this._overlayRef.backdropClick().subscribe(() => this._closePanel());
50
+ this._overlayRef.attach(new TemplatePortal(this.filterPanel, this._vcr));
51
+ }
52
+ _closePanel() {
53
+ this._overlayRef?.dispose();
54
+ this._overlayRef = null;
17
55
  }
18
- onDocumentClick(event) {
19
- if (this.showFilter && !this._el.nativeElement.contains(event.target)) {
20
- this.showFilter = false;
21
- }
56
+ ngOnDestroy() {
57
+ this._closePanel();
22
58
  }
23
59
  onClickFilter(event) {
24
60
  this.clickFilter.emit(event);
25
- this.showFilter = false;
61
+ this._closePanel();
26
62
  }
27
63
  onClickDeleteFilter(event) {
28
64
  this.clickDeleteFilter.emit(event);
29
65
  }
30
66
  onClickClose(event) {
31
- this.showFilter = false;
67
+ this._closePanel();
32
68
  this.clickClose.emit(event);
33
69
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonFilterComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ButtonFilterComponent, isStandalone: true, selector: "ius-button-filter", outputs: { clickFilter: "clickFilter", clickDeleteFilter: "clickDeleteFilter", clickClose: "clickClose" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-filter-list\"\r\n (buttonClicked)=\"showListFilter()\"></ius-button-squared-tertiary>\r\n <div class=\"ctn-filter color-pry\" [class.active]=\"showFilter\">\r\n <div class=\"content\">\r\n <div class=\"head-fl\">\r\n <span class=\"label-large color-pry\">Filtrar por:</span>\r\n <ius-button-circle-tertiary iconName=\"icon-close\" (buttonClicked)=\"onClickClose($event)\"></ius-button-circle-tertiary>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ctn-btns\">\r\n <ius-button-dynamic labelDefault=\"Filtrar\" (buttonClicked)=\"onClickFilter($event)\">\r\n </ius-button-dynamic>\r\n <ius-button-standard-secondary (buttonClicked)=\"onClickDeleteFilter($event)\">Borrar\r\n filtros</ius-button-standard-secondary>\r\n </div>\r\n </div>\r\n</div>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-filter{position:absolute;display:flex;top:48px;left:0;width:372px;box-sizing:border-box;padding:16px 0 4px;flex-direction:column;gap:32px;z-index:1000;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;opacity:0;transform:translateY(-10px);pointer-events:none;transition:opacity .25s ease,transform .25s ease}.ctn-filter.active{opacity:1;transform:translateY(0);pointer-events:all}.color-pry{color:#333}.ctn-btns{display:flex;padding:8px 16px;flex-direction:column;gap:4px}.content{padding:0 16px}.head-fl{display:flex;height:48px;align-items:center;gap:4px}.head-fl span{display:flex;padding:8px;flex-direction:column;align-items:flex-start;flex:1 0 0}\n"], dependencies: [{ kind: "component", type: ButtonSquaredTertiaryComponent, selector: "ius-button-squared-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonDynamicComponent, selector: "ius-button-dynamic", inputs: ["labelDefault", "labelSuccess", "labelError", "disabled", "loading", "result", "autoReset", "autoResetDelay"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonStandardSecondaryComponent, selector: "ius-button-standard-secondary", inputs: ["disabled"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonCircleTertiaryComponent, selector: "ius-button-circle-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }] }); }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonFilterComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ButtonFilterComponent, isStandalone: true, selector: "ius-button-filter", outputs: { clickFilter: "clickFilter", clickDeleteFilter: "clickDeleteFilter", clickClose: "clickClose" }, viewQueries: [{ propertyName: "filterPanel", first: true, predicate: ["filterPanel"], descendants: true }], ngImport: i0, template: "<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-filter-list\"\r\n (buttonClicked)=\"showListFilter()\"></ius-button-squared-tertiary>\r\n</div>\r\n\r\n<ng-template #filterPanel>\r\n <div class=\"ctn-filter color-pry\">\r\n <div class=\"head-fl\">\r\n <span class=\"label-large color-pry\">Filtrar por:</span>\r\n <ius-button-circle-tertiary iconName=\"icon-close\" (buttonClicked)=\"onClickClose($event)\"></ius-button-circle-tertiary>\r\n </div>\r\n <div class=\"content scrollable\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ctn-btns\">\r\n <ius-button-dynamic labelDefault=\"Filtrar\" (buttonClicked)=\"onClickFilter($event)\">\r\n </ius-button-dynamic>\r\n <ius-button-standard-secondary (buttonClicked)=\"onClickDeleteFilter($event)\">Borrar\r\n filtros</ius-button-standard-secondary>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-filter{display:flex;width:372px;max-height:70vh;box-sizing:border-box;padding:16px 0 4px;flex-direction:column;gap:0;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;animation:ius-filter-enter .25s ease}@keyframes ius-filter-enter{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.color-pry{color:#333}.ctn-btns{display:flex;flex-shrink:0;padding:8px 16px;flex-direction:column;gap:4px;margin-top:16px}.content{padding:0 16px;flex:1 1 auto}.scrollable{overflow-y:auto;overflow-x:hidden}.scrollable::-webkit-scrollbar{-webkit-appearance:none}.scrollable::-webkit-scrollbar:vertical{width:7px}.scrollable::-webkit-scrollbar-thumb{background-color:#d8d6d6;border-radius:20px}.head-fl{display:flex;height:48px;padding:0 16px;align-items:center;gap:4px}.head-fl span{display:flex;padding:8px;flex-direction:column;align-items:flex-start;flex:1 0 0}\n"], dependencies: [{ kind: "component", type: ButtonSquaredTertiaryComponent, selector: "ius-button-squared-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonDynamicComponent, selector: "ius-button-dynamic", inputs: ["labelDefault", "labelSuccess", "labelError", "disabled", "loading", "result", "autoReset", "autoResetDelay"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonStandardSecondaryComponent, selector: "ius-button-standard-secondary", inputs: ["disabled"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonCircleTertiaryComponent, selector: "ius-button-circle-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }] }); }
36
72
  }
37
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonFilterComponent, decorators: [{
38
74
  type: Component,
39
- args: [{ selector: 'ius-button-filter', standalone: true, imports: [ButtonSquaredTertiaryComponent, ButtonDynamicComponent, ButtonStandardSecondaryComponent, ButtonCircleTertiaryComponent], template: "<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-filter-list\"\r\n (buttonClicked)=\"showListFilter()\"></ius-button-squared-tertiary>\r\n <div class=\"ctn-filter color-pry\" [class.active]=\"showFilter\">\r\n <div class=\"content\">\r\n <div class=\"head-fl\">\r\n <span class=\"label-large color-pry\">Filtrar por:</span>\r\n <ius-button-circle-tertiary iconName=\"icon-close\" (buttonClicked)=\"onClickClose($event)\"></ius-button-circle-tertiary>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ctn-btns\">\r\n <ius-button-dynamic labelDefault=\"Filtrar\" (buttonClicked)=\"onClickFilter($event)\">\r\n </ius-button-dynamic>\r\n <ius-button-standard-secondary (buttonClicked)=\"onClickDeleteFilter($event)\">Borrar\r\n filtros</ius-button-standard-secondary>\r\n </div>\r\n </div>\r\n</div>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-filter{position:absolute;display:flex;top:48px;left:0;width:372px;box-sizing:border-box;padding:16px 0 4px;flex-direction:column;gap:32px;z-index:1000;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;opacity:0;transform:translateY(-10px);pointer-events:none;transition:opacity .25s ease,transform .25s ease}.ctn-filter.active{opacity:1;transform:translateY(0);pointer-events:all}.color-pry{color:#333}.ctn-btns{display:flex;padding:8px 16px;flex-direction:column;gap:4px}.content{padding:0 16px}.head-fl{display:flex;height:48px;align-items:center;gap:4px}.head-fl span{display:flex;padding:8px;flex-direction:column;align-items:flex-start;flex:1 0 0}\n"] }]
40
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickFilter: [{
75
+ args: [{ selector: 'ius-button-filter', standalone: true, imports: [ButtonSquaredTertiaryComponent, ButtonDynamicComponent, ButtonStandardSecondaryComponent, ButtonCircleTertiaryComponent], template: "<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-filter-list\"\r\n (buttonClicked)=\"showListFilter()\"></ius-button-squared-tertiary>\r\n</div>\r\n\r\n<ng-template #filterPanel>\r\n <div class=\"ctn-filter color-pry\">\r\n <div class=\"head-fl\">\r\n <span class=\"label-large color-pry\">Filtrar por:</span>\r\n <ius-button-circle-tertiary iconName=\"icon-close\" (buttonClicked)=\"onClickClose($event)\"></ius-button-circle-tertiary>\r\n </div>\r\n <div class=\"content scrollable\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ctn-btns\">\r\n <ius-button-dynamic labelDefault=\"Filtrar\" (buttonClicked)=\"onClickFilter($event)\">\r\n </ius-button-dynamic>\r\n <ius-button-standard-secondary (buttonClicked)=\"onClickDeleteFilter($event)\">Borrar\r\n filtros</ius-button-standard-secondary>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-filter{display:flex;width:372px;max-height:70vh;box-sizing:border-box;padding:16px 0 4px;flex-direction:column;gap:0;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;animation:ius-filter-enter .25s ease}@keyframes ius-filter-enter{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.color-pry{color:#333}.ctn-btns{display:flex;flex-shrink:0;padding:8px 16px;flex-direction:column;gap:4px;margin-top:16px}.content{padding:0 16px;flex:1 1 auto}.scrollable{overflow-y:auto;overflow-x:hidden}.scrollable::-webkit-scrollbar{-webkit-appearance:none}.scrollable::-webkit-scrollbar:vertical{width:7px}.scrollable::-webkit-scrollbar-thumb{background-color:#d8d6d6;border-radius:20px}.head-fl{display:flex;height:48px;padding:0 16px;align-items:center;gap:4px}.head-fl span{display:flex;padding:8px;flex-direction:column;align-items:flex-start;flex:1 0 0}\n"] }]
76
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }], propDecorators: { clickFilter: [{
41
77
  type: Output
42
78
  }], clickDeleteFilter: [{
43
79
  type: Output
44
80
  }], clickClose: [{
45
81
  type: Output
46
- }], onDocumentClick: [{
47
- type: HostListener,
48
- args: ['document:click', ['$event']]
82
+ }], filterPanel: [{
83
+ type: ViewChild,
84
+ args: ['filterPanel']
49
85
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdXMtZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9idXR0b24tZmlsdGVyL2J1dHRvbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWZpbHRlci9idXR0b24tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBUzFFLE1BQU0sT0FBTyxxQkFBcUI7SUFPaEMsWUFBb0IsR0FBZTtRQUFmLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFMekIsZ0JBQVcsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxzQkFBaUIsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1RCxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0QsZUFBVSxHQUFZLEtBQUssQ0FBQztJQUNXLENBQUM7SUFFeEMsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFHRCxlQUFlLENBQUMsS0FBWTtRQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWTtRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQWhDVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw4UENibEMsbytCQWtCTSw0ekVEVE0sOEJBQThCLHNJQUFFLHNCQUFzQixtTkFBRSxnQ0FBZ0MsNEhBQUUsNkJBQTZCOzs0RkFJdEgscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyw4QkFBOEIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSw2QkFBNkIsQ0FBQzsrRUFNeEgsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFVUCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnV0dG9uU3F1YXJlZFRlcnRpYXJ5Q29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi1zcXVhcmVkLXRlcnRpYXJ5XCI7XHJcbmltcG9ydCB7IEJ1dHRvbkR5bmFtaWNDb21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uLWR5bmFtaWNcIjtcclxuaW1wb3J0IHsgQnV0dG9uU3RhbmRhcmRTZWNvbmRhcnlDb21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uLXN0YW5kYXJkLXNlY29uZGFyeVwiO1xyXG5pbXBvcnQgeyBCdXR0b25DaXJjbGVUZXJ0aWFyeUNvbXBvbmVudCB9IGZyb20gXCIuLi9idXR0b24tY2lyY2xlLXRlcnRpYXJ5XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2l1cy1idXR0b24tZmlsdGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCdXR0b25TcXVhcmVkVGVydGlhcnlDb21wb25lbnQsIEJ1dHRvbkR5bmFtaWNDb21wb25lbnQsIEJ1dHRvblN0YW5kYXJkU2Vjb25kYXJ5Q29tcG9uZW50LCBCdXR0b25DaXJjbGVUZXJ0aWFyeUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9idXR0b24tZmlsdGVyLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uRmlsdGVyQ29tcG9uZW50IHtcclxuXHJcbiAgQE91dHB1dCgpIGNsaWNrRmlsdGVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja0RlbGV0ZUZpbHRlcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xpY2tDbG9zZTogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgc2hvd0xpc3RGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXIgPSAhdGhpcy5zaG93RmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNob3dGaWx0ZXIgJiYgIXRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLnNob3dGaWx0ZXIgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmNsaWNrRmlsdGVyLmVtaXQoZXZlbnQpO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrRGVsZXRlRmlsdGVyKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jbGlja0RlbGV0ZUZpbHRlci5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tDbG9zZShldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuc2hvd0ZpbHRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbGlja0Nsb3NlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaXVzLWJ0blwiPlxyXG4gICAgPGl1cy1idXR0b24tc3F1YXJlZC10ZXJ0aWFyeSBpY29uTmFtZT1cImljb24tZmlsdGVyLWxpc3RcIlxyXG4gICAgICAgIChidXR0b25DbGlja2VkKT1cInNob3dMaXN0RmlsdGVyKClcIj48L2l1cy1idXR0b24tc3F1YXJlZC10ZXJ0aWFyeT5cclxuICAgIDxkaXYgY2xhc3M9XCJjdG4tZmlsdGVyIGNvbG9yLXByeVwiIFtjbGFzcy5hY3RpdmVdPVwic2hvd0ZpbHRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkLWZsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWxhcmdlIGNvbG9yLXByeVwiPkZpbHRyYXIgcG9yOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpdXMtYnV0dG9uLWNpcmNsZS10ZXJ0aWFyeSBpY29uTmFtZT1cImljb24tY2xvc2VcIiAoYnV0dG9uQ2xpY2tlZCk9XCJvbkNsaWNrQ2xvc2UoJGV2ZW50KVwiPjwvaXVzLWJ1dHRvbi1jaXJjbGUtdGVydGlhcnk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN0bi1idG5zXCI+XHJcbiAgICAgICAgICAgIDxpdXMtYnV0dG9uLWR5bmFtaWMgbGFiZWxEZWZhdWx0PVwiRmlsdHJhclwiIChidXR0b25DbGlja2VkKT1cIm9uQ2xpY2tGaWx0ZXIoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2l1cy1idXR0b24tZHluYW1pYz5cclxuICAgICAgICAgICAgPGl1cy1idXR0b24tc3RhbmRhcmQtc2Vjb25kYXJ5IChidXR0b25DbGlja2VkKT1cIm9uQ2xpY2tEZWxldGVGaWx0ZXIoJGV2ZW50KVwiPkJvcnJhclxyXG4gICAgICAgICAgICAgICAgZmlsdHJvczwvaXVzLWJ1dHRvbi1zdGFuZGFyZC1zZWNvbmRhcnk+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdXMtZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9idXR0b24tZmlsdGVyL2J1dHRvbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWZpbHRlci9idXR0b24tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFhLE1BQU0sRUFBZSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRWpJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBUzFFLE1BQU0sT0FBTyxxQkFBcUI7SUFVaEMsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFDbUIsR0FBZSxFQUNmLFFBQWlCLEVBQ2pCLElBQXNCO1FBRnRCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBZi9CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUN4QyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxJQUFJLFlBQVks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QUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQTNFVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixvU0NmbEMscS9CQXFCYyx5aEZEVkYsOEJBQThCLHNJQUFFLHNCQUFzQixtTkFBRSxnQ0FBZ0MsNEhBQUUsNkJBQTZCOzs0RkFJdEgscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyw4QkFBOEIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSw2QkFBNkIsQ0FBQztvSUFNeEgsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFbUIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IEJ1dHRvblNxdWFyZWRUZXJ0aWFyeUNvbXBvbmVudCB9IGZyb20gXCIuLi9idXR0b24tc3F1YXJlZC10ZXJ0aWFyeVwiO1xyXG5pbXBvcnQgeyBCdXR0b25EeW5hbWljQ29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi1keW5hbWljXCI7XHJcbmltcG9ydCB7IEJ1dHRvblN0YW5kYXJkU2Vjb25kYXJ5Q29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi1zdGFuZGFyZC1zZWNvbmRhcnlcIjtcclxuaW1wb3J0IHsgQnV0dG9uQ2lyY2xlVGVydGlhcnlDb21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uLWNpcmNsZS10ZXJ0aWFyeVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdXMtYnV0dG9uLWZpbHRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQnV0dG9uU3F1YXJlZFRlcnRpYXJ5Q29tcG9uZW50LCBCdXR0b25EeW5hbWljQ29tcG9uZW50LCBCdXR0b25TdGFuZGFyZFNlY29uZGFyeUNvbXBvbmVudCwgQnV0dG9uQ2lyY2xlVGVydGlhcnlDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYnV0dG9uLWZpbHRlci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIEBPdXRwdXQoKSBjbGlja0ZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGNsaWNrRGVsZXRlRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgY2xpY2tDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlclBhbmVsJykgZmlsdGVyUGFuZWwhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuXHJcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgc2hvd0ZpbHRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92Y3I6IFZpZXdDb250YWluZXJSZWZcclxuICApIHt9XHJcblxyXG4gIHNob3dMaXN0RmlsdGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93RmlsdGVyID8gdGhpcy5fY2xvc2VQYW5lbCgpIDogdGhpcy5fb3BlblBhbmVsKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vcGVuUGFuZWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxyXG4gICAgICAucG9zaXRpb24oKVxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbClcclxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXHJcbiAgICAgIC53aXRoUHVzaChmYWxzZSlcclxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgIC8vIDEuIEFiYWpvICsgYWxpbmVhZG8gaXpxdWllcmRhXHJcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJywgICAgb2Zmc2V0WTogIDQgfSxcclxuICAgICAgICAvLyAyLiBBYmFqbyArIGFsaW5lYWRvIGRlcmVjaGFcclxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCAgIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ2VuZCcsICAgb3ZlcmxheVk6ICd0b3AnLCAgICBvZmZzZXRZOiAgNCB9LFxyXG4gICAgICAgIC8vIDMuIERlcmVjaGEgKyBhbGluZWFkbyBjZW50cm9cclxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCAgIG9yaWdpblk6ICdjZW50ZXInLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdjZW50ZXInLCBvZmZzZXRYOiAgNCB9LFxyXG4gICAgICAgIC8vIDQuIEl6cXVpZXJkYSArIGFsaW5lYWRvIGNlbnRyb1xyXG4gICAgICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnZW5kJywgICBvdmVybGF5WTogJ2NlbnRlcicsIG9mZnNldFg6IC00IH0sXHJcbiAgICAgICAgLy8gNS4gQXJyaWJhICsgYWxpbmVhZG8gaXpxdWllcmRhXHJcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgICAgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogLTQgfSxcclxuICAgICAgXSk7XHJcblxyXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Nsb3NlUGFuZWwoKSk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5maWx0ZXJQYW5lbCwgdGhpcy5fdmNyKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZVBhbmVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Nsb3NlUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tGaWx0ZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNsaWNrRmlsdGVyLmVtaXQoZXZlbnQpO1xyXG4gICAgdGhpcy5fY2xvc2VQYW5lbCgpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0RlbGV0ZUZpbHRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpY2tEZWxldGVGaWx0ZXIuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2xvc2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbG9zZVBhbmVsKCk7XHJcbiAgICB0aGlzLmNsaWNrQ2xvc2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpdXMtYnRuXCI+XHJcbiAgICA8aXVzLWJ1dHRvbi1zcXVhcmVkLXRlcnRpYXJ5IGljb25OYW1lPVwiaWNvbi1maWx0ZXItbGlzdFwiXHJcbiAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwic2hvd0xpc3RGaWx0ZXIoKVwiPjwvaXVzLWJ1dHRvbi1zcXVhcmVkLXRlcnRpYXJ5PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZmlsdGVyUGFuZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY3RuLWZpbHRlciBjb2xvci1wcnlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1mbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLWxhcmdlIGNvbG9yLXByeVwiPkZpbHRyYXIgcG9yOjwvc3Bhbj5cclxuICAgICAgICAgICAgPGl1cy1idXR0b24tY2lyY2xlLXRlcnRpYXJ5IGljb25OYW1lPVwiaWNvbi1jbG9zZVwiIChidXR0b25DbGlja2VkKT1cIm9uQ2xpY2tDbG9zZSgkZXZlbnQpXCI+PC9pdXMtYnV0dG9uLWNpcmNsZS10ZXJ0aWFyeT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudCBzY3JvbGxhYmxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3RuLWJ0bnNcIj5cclxuICAgICAgICAgICAgPGl1cy1idXR0b24tZHluYW1pYyBsYWJlbERlZmF1bHQ9XCJGaWx0cmFyXCIgKGJ1dHRvbkNsaWNrZWQpPVwib25DbGlja0ZpbHRlcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvaXVzLWJ1dHRvbi1keW5hbWljPlxyXG4gICAgICAgICAgICA8aXVzLWJ1dHRvbi1zdGFuZGFyZC1zZWNvbmRhcnkgKGJ1dHRvbkNsaWNrZWQpPVwib25DbGlja0RlbGV0ZUZpbHRlcigkZXZlbnQpXCI+Qm9ycmFyXHJcbiAgICAgICAgICAgICAgICBmaWx0cm9zPC9pdXMtYnV0dG9uLXN0YW5kYXJkLXNlY29uZGFyeT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,39 +1,75 @@
1
- import { Component, Input, HostListener, EventEmitter, Output } from '@angular/core';
1
+ import { Component, Input, EventEmitter, Output, ViewChild } from '@angular/core';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
2
3
  import { ButtonSquaredTertiaryComponent } from "../button-squared-tertiary";
3
4
  import { IconSmComponent } from '../icon-sm/icon-sm.component';
4
5
  import { SimpleDividerComponent } from "../simple-divider";
5
6
  import { OptionItemComponent } from "../option-item";
6
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
7
9
  export class ButtonOrderComponent {
8
- constructor(_el) {
10
+ get showOrder() {
11
+ return this._overlayRef !== null;
12
+ }
13
+ constructor(_el, _overlay, _vcr) {
9
14
  this._el = _el;
15
+ this._overlay = _overlay;
16
+ this._vcr = _vcr;
10
17
  this.orderChange = new EventEmitter();
11
- this.showOrder = false;
18
+ this._overlayRef = null;
12
19
  }
13
20
  showListOrder() {
14
- this.showOrder = !this.showOrder;
21
+ this.showOrder ? this._closePanel() : this._openPanel();
22
+ }
23
+ _openPanel() {
24
+ const positionStrategy = this._overlay
25
+ .position()
26
+ .flexibleConnectedTo(this._el)
27
+ .withFlexibleDimensions(false)
28
+ .withPush(false)
29
+ .withPositions([
30
+ // 1. Abajo + alineado izquierda
31
+ { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },
32
+ // 2. Abajo + alineado derecha
33
+ { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },
34
+ // 3. Derecha + alineado centro
35
+ { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 4 },
36
+ // 4. Izquierda + alineado centro
37
+ { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -4 },
38
+ // 5. Arriba + alineado izquierda
39
+ { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },
40
+ ]);
41
+ this._overlayRef = this._overlay.create({
42
+ positionStrategy,
43
+ hasBackdrop: true,
44
+ backdropClass: 'cdk-overlay-transparent-backdrop',
45
+ scrollStrategy: this._overlay.scrollStrategies.reposition(),
46
+ });
47
+ this._overlayRef.backdropClick().subscribe(() => this._closePanel());
48
+ this._overlayRef.attach(new TemplatePortal(this.orderPanel, this._vcr));
49
+ }
50
+ _closePanel() {
51
+ this._overlayRef?.dispose();
52
+ this._overlayRef = null;
15
53
  }
16
- onDocumentClick(event) {
17
- if (this.showOrder && !this._el.nativeElement.contains(event.target)) {
18
- this.showOrder = false;
19
- }
54
+ ngOnDestroy() {
55
+ this._closePanel();
20
56
  }
21
57
  onClickOrderChange(title, label) {
22
- this.orderChange.emit({ title: title, value: label });
23
- this.showOrder = false;
58
+ this.orderChange.emit({ title, value: label });
59
+ this._closePanel();
24
60
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonOrderComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ButtonOrderComponent, isStandalone: true, selector: "ius-button-order", inputs: { orderData: "orderData" }, outputs: { orderChange: "orderChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "@if(orderData){\r\n<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-low-priority\"\r\n (buttonClicked)=\"showListOrder()\"></ius-button-squared-tertiary>\r\n <div class=\"ctn-order color-pry\" [class.active]=\"showOrder\">\r\n @for (itemOrder of orderData; track $index) {\r\n <div class=\"title caption-sm \">\r\n <ius-icon-sm [iconName]=\"itemOrder.iconName\" class=\"color-pry\"></ius-icon-sm>\r\n <span>{{itemOrder.title}}</span>\r\n </div>\r\n @for (label of itemOrder.values; track $index) {\r\n <ius-option-item (optionClick)=\"onClickOrderChange(itemOrder.title, label)\">{{label}}</ius-option-item>\r\n }\r\n @if (itemOrder != orderData[orderData.length - 1]) {\r\n <ius-simple-divider></ius-simple-divider>\r\n }\r\n }\r\n </div>\r\n</div>\r\n}", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-order{position:absolute;display:flex;top:48px;left:0;width:348px;box-sizing:border-box;padding:4px;flex-direction:column;justify-content:center;gap:4px;z-index:1000;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;opacity:0;transform:translateY(-10px);pointer-events:none;transition:opacity .25s ease,transform .25s ease}.ctn-order.active{opacity:1;transform:translateY(0);pointer-events:all}.title{display:flex;height:38px;box-sizing:border-box;padding:8px 20px 8px 12px;align-items:center;gap:8px}.color-pry{color:#333}\n"], dependencies: [{ kind: "component", type: ButtonSquaredTertiaryComponent, selector: "ius-button-squared-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }, { kind: "component", type: IconSmComponent, selector: "ius-icon-sm", inputs: ["iconName", "color"] }, { kind: "component", type: SimpleDividerComponent, selector: "ius-simple-divider" }, { kind: "component", type: OptionItemComponent, selector: "ius-option-item", inputs: ["checked", "disabled", "iconName"], outputs: ["optionClick"] }] }); }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonOrderComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ButtonOrderComponent, isStandalone: true, selector: "ius-button-order", inputs: { orderData: "orderData" }, outputs: { orderChange: "orderChange" }, viewQueries: [{ propertyName: "orderPanel", first: true, predicate: ["orderPanel"], descendants: true }], ngImport: i0, template: "@if(orderData){\r\n<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-low-priority\"\r\n (buttonClicked)=\"showListOrder()\"></ius-button-squared-tertiary>\r\n</div>\r\n\r\n<ng-template #orderPanel>\r\n <div class=\"ctn-order color-pry\">\r\n <div class=\"scrollable\">\r\n @for (itemOrder of orderData!; track $index) {\r\n <div class=\"title caption-sm\">\r\n <ius-icon-sm [iconName]=\"itemOrder.iconName\" class=\"color-pry\"></ius-icon-sm>\r\n <span>{{itemOrder.title}}</span>\r\n </div>\r\n @for (label of itemOrder.values; track $index) {\r\n <div class=\"ctn-option\">\r\n <ius-option-item (optionClick)=\"onClickOrderChange(itemOrder.title, label)\">{{label}}</ius-option-item>\r\n </div>\r\n }\r\n @if (itemOrder != orderData![orderData!.length - 1]) {\r\n <ius-simple-divider></ius-simple-divider>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n}", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-order{display:flex;width:348px;max-height:70vh;box-sizing:border-box;padding:4px;flex-direction:column;justify-content:center;gap:4px;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;animation:ius-order-enter .25s ease}.scrollable{flex:1 1 auto;overflow-y:auto;overflow-x:hidden}.scrollable::-webkit-scrollbar{width:7px}.scrollable::-webkit-scrollbar-track{background:transparent}.scrollable::-webkit-scrollbar-thumb{background-color:#d8d6d6;border-radius:20px}@keyframes ius-order-enter{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.title{display:flex;height:38px;box-sizing:border-box;padding:8px 20px 8px 12px;align-items:center;gap:8px}.color-pry{color:#333}.ctn-option{margin-bottom:4px}\n"], dependencies: [{ kind: "component", type: ButtonSquaredTertiaryComponent, selector: "ius-button-squared-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }, { kind: "component", type: IconSmComponent, selector: "ius-icon-sm", inputs: ["iconName", "color"] }, { kind: "component", type: SimpleDividerComponent, selector: "ius-simple-divider" }, { kind: "component", type: OptionItemComponent, selector: "ius-option-item", inputs: ["checked", "disabled", "iconName"], outputs: ["optionClick"] }] }); }
27
63
  }
28
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonOrderComponent, decorators: [{
29
65
  type: Component,
30
- args: [{ selector: 'ius-button-order', standalone: true, imports: [ButtonSquaredTertiaryComponent, IconSmComponent, SimpleDividerComponent, OptionItemComponent], template: "@if(orderData){\r\n<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-low-priority\"\r\n (buttonClicked)=\"showListOrder()\"></ius-button-squared-tertiary>\r\n <div class=\"ctn-order color-pry\" [class.active]=\"showOrder\">\r\n @for (itemOrder of orderData; track $index) {\r\n <div class=\"title caption-sm \">\r\n <ius-icon-sm [iconName]=\"itemOrder.iconName\" class=\"color-pry\"></ius-icon-sm>\r\n <span>{{itemOrder.title}}</span>\r\n </div>\r\n @for (label of itemOrder.values; track $index) {\r\n <ius-option-item (optionClick)=\"onClickOrderChange(itemOrder.title, label)\">{{label}}</ius-option-item>\r\n }\r\n @if (itemOrder != orderData[orderData.length - 1]) {\r\n <ius-simple-divider></ius-simple-divider>\r\n }\r\n }\r\n </div>\r\n</div>\r\n}", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-order{position:absolute;display:flex;top:48px;left:0;width:348px;box-sizing:border-box;padding:4px;flex-direction:column;justify-content:center;gap:4px;z-index:1000;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;opacity:0;transform:translateY(-10px);pointer-events:none;transition:opacity .25s ease,transform .25s ease}.ctn-order.active{opacity:1;transform:translateY(0);pointer-events:all}.title{display:flex;height:38px;box-sizing:border-box;padding:8px 20px 8px 12px;align-items:center;gap:8px}.color-pry{color:#333}\n"] }]
31
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { orderData: [{
66
+ args: [{ selector: 'ius-button-order', standalone: true, imports: [ButtonSquaredTertiaryComponent, IconSmComponent, SimpleDividerComponent, OptionItemComponent], template: "@if(orderData){\r\n<div class=\"ius-btn\">\r\n <ius-button-squared-tertiary iconName=\"icon-low-priority\"\r\n (buttonClicked)=\"showListOrder()\"></ius-button-squared-tertiary>\r\n</div>\r\n\r\n<ng-template #orderPanel>\r\n <div class=\"ctn-order color-pry\">\r\n <div class=\"scrollable\">\r\n @for (itemOrder of orderData!; track $index) {\r\n <div class=\"title caption-sm\">\r\n <ius-icon-sm [iconName]=\"itemOrder.iconName\" class=\"color-pry\"></ius-icon-sm>\r\n <span>{{itemOrder.title}}</span>\r\n </div>\r\n @for (label of itemOrder.values; track $index) {\r\n <div class=\"ctn-option\">\r\n <ius-option-item (optionClick)=\"onClickOrderChange(itemOrder.title, label)\">{{label}}</ius-option-item>\r\n </div>\r\n }\r\n @if (itemOrder != orderData![orderData!.length - 1]) {\r\n <ius-simple-divider></ius-simple-divider>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n}", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ctn-order{display:flex;width:348px;max-height:70vh;box-sizing:border-box;padding:4px;flex-direction:column;justify-content:center;gap:4px;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a;animation:ius-order-enter .25s ease}.scrollable{flex:1 1 auto;overflow-y:auto;overflow-x:hidden}.scrollable::-webkit-scrollbar{width:7px}.scrollable::-webkit-scrollbar-track{background:transparent}.scrollable::-webkit-scrollbar-thumb{background-color:#d8d6d6;border-radius:20px}@keyframes ius-order-enter{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.title{display:flex;height:38px;box-sizing:border-box;padding:8px 20px 8px 12px;align-items:center;gap:8px}.color-pry{color:#333}.ctn-option{margin-bottom:4px}\n"] }]
67
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }], propDecorators: { orderData: [{
32
68
  type: Input
33
69
  }], orderChange: [{
34
70
  type: Output
35
- }], onDocumentClick: [{
36
- type: HostListener,
37
- args: ['document:click', ['$event']]
71
+ }], orderPanel: [{
72
+ type: ViewChild,
73
+ args: ['orderPanel']
38
74
  }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2J1dHRvbi1vcmRlci9idXR0b24tb3JkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLW9yZGVyL2J1dHRvbi1vcmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBV3JELE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsWUFBb0IsR0FBZTtRQUFmLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFIekIsZ0JBQVcsR0FBb0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1RixjQUFTLEdBQVksS0FBSyxDQUFDO0lBQ1ksQ0FBQztJQUV4QyxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUdELGVBQWUsQ0FBQyxLQUFZO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDOytHQXRCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwrTkNmakMsdzNCQW1CQywwckVEUlcsOEJBQThCLHNJQUFFLGVBQWUsdUZBQUUsc0JBQXNCLCtEQUFFLG1CQUFtQjs7NEZBSTNGLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsOEJBQThCLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixDQUFDOytFQU05RixTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBVVAsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25TcXVhcmVkVGVydGlhcnlDb21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uLXNxdWFyZWQtdGVydGlhcnlcIjtcclxuaW1wb3J0IHsgSWNvblNtQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi1zbS9pY29uLXNtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbXBsZURpdmlkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vc2ltcGxlLWRpdmlkZXJcIjtcclxuaW1wb3J0IHsgT3B0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi9vcHRpb24taXRlbVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgT3JkZXJEYXRhID0geyB0aXRsZTogc3RyaW5nOyBpY29uTmFtZTogc3RyaW5nOyB2YWx1ZXM6IHN0cmluZ1tdOyB9O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdXMtYnV0dG9uLW9yZGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCdXR0b25TcXVhcmVkVGVydGlhcnlDb21wb25lbnQsIEljb25TbUNvbXBvbmVudCwgU2ltcGxlRGl2aWRlckNvbXBvbmVudCwgT3B0aW9uSXRlbUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi1vcmRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi1vcmRlci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbk9yZGVyQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgb3JkZXJEYXRhPzogT3JkZXJEYXRhW107XHJcbiAgQE91dHB1dCgpIG9yZGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyB0aXRsZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgc2hvd09yZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWw6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICBzaG93TGlzdE9yZGVyKCkge1xyXG4gICAgdGhpcy5zaG93T3JkZXIgPSAhdGhpcy5zaG93T3JkZXI7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd09yZGVyICYmICF0aGlzLl9lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5zaG93T3JkZXIgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tPcmRlckNoYW5nZSh0aXRsZTogc3RyaW5nLCBsYWJlbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLmVtaXQoeyB0aXRsZTogdGl0bGUsIHZhbHVlOiBsYWJlbCB9KTtcclxuICAgIHRoaXMuc2hvd09yZGVyID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIkBpZihvcmRlckRhdGEpe1xyXG48ZGl2IGNsYXNzPVwiaXVzLWJ0blwiPlxyXG4gICAgPGl1cy1idXR0b24tc3F1YXJlZC10ZXJ0aWFyeSBpY29uTmFtZT1cImljb24tbG93LXByaW9yaXR5XCJcclxuICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJzaG93TGlzdE9yZGVyKClcIj48L2l1cy1idXR0b24tc3F1YXJlZC10ZXJ0aWFyeT5cclxuICAgIDxkaXYgY2xhc3M9XCJjdG4tb3JkZXIgY29sb3ItcHJ5XCIgW2NsYXNzLmFjdGl2ZV09XCJzaG93T3JkZXJcIj5cclxuICAgICAgICBAZm9yIChpdGVtT3JkZXIgb2Ygb3JkZXJEYXRhOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgY2FwdGlvbi1zbSBcIj5cclxuICAgICAgICAgICAgPGl1cy1pY29uLXNtIFtpY29uTmFtZV09XCJpdGVtT3JkZXIuaWNvbk5hbWVcIiBjbGFzcz1cImNvbG9yLXByeVwiPjwvaXVzLWljb24tc20+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7aXRlbU9yZGVyLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgQGZvciAobGFiZWwgb2YgaXRlbU9yZGVyLnZhbHVlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPGl1cy1vcHRpb24taXRlbSAob3B0aW9uQ2xpY2spPVwib25DbGlja09yZGVyQ2hhbmdlKGl0ZW1PcmRlci50aXRsZSwgbGFiZWwpXCI+e3tsYWJlbH19PC9pdXMtb3B0aW9uLWl0ZW0+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoaXRlbU9yZGVyICE9IG9yZGVyRGF0YVtvcmRlckRhdGEubGVuZ3RoIC0gMV0pIHtcclxuICAgICAgICA8aXVzLXNpbXBsZS1kaXZpZGVyPjwvaXVzLXNpbXBsZS1kaXZpZGVyPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbn0iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLW9yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2J1dHRvbi1vcmRlci9idXR0b24tb3JkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLW9yZGVyL2J1dHRvbi1vcmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQWEsTUFBTSxFQUFlLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFeEksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBV3JELE1BQU0sT0FBTyxvQkFBb0I7SUFTL0IsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFDbUIsR0FBZSxFQUNmLFFBQWlCLEVBQ2pCLElBQXNCO1FBRnRCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBYi9CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFDLENBQUM7UUFJdEUsZ0JBQVcsR0FBc0IsSUFBSSxDQUFDO0lBVTNDLENBQUM7SUFFSixhQUFhO1FBQ1gsSUFBSSxD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QW1CLENBQUM7b0lBTTlGLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFa0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBCdXR0b25TcXVhcmVkVGVydGlhcnlDb21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uLXNxdWFyZWQtdGVydGlhcnlcIjtcclxuaW1wb3J0IHsgSWNvblNtQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi1zbS9pY29uLXNtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpbXBsZURpdmlkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vc2ltcGxlLWRpdmlkZXJcIjtcclxuaW1wb3J0IHsgT3B0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi9vcHRpb24taXRlbVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgT3JkZXJEYXRhID0geyB0aXRsZTogc3RyaW5nOyBpY29uTmFtZTogc3RyaW5nOyB2YWx1ZXM6IHN0cmluZ1tdOyB9O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdXMtYnV0dG9uLW9yZGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCdXR0b25TcXVhcmVkVGVydGlhcnlDb21wb25lbnQsIEljb25TbUNvbXBvbmVudCwgU2ltcGxlRGl2aWRlckNvbXBvbmVudCwgT3B0aW9uSXRlbUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi1vcmRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi1vcmRlci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbk9yZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgb3JkZXJEYXRhPzogT3JkZXJEYXRhW107XHJcbiAgQE91dHB1dCgpIG9yZGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRpdGxlOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IH0+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ29yZGVyUGFuZWwnKSBvcmRlclBhbmVsITogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IHNob3dPcmRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92Y3I6IFZpZXdDb250YWluZXJSZWZcclxuICApIHt9XHJcblxyXG4gIHNob3dMaXN0T3JkZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dPcmRlciA/IHRoaXMuX2Nsb3NlUGFuZWwoKSA6IHRoaXMuX29wZW5QYW5lbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb3BlblBhbmVsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcclxuICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWwpXHJcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxyXG4gICAgICAud2l0aFB1c2goZmFsc2UpXHJcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcclxuICAgICAgICAvLyAxLiBBYmFqbyArIGFsaW5lYWRvIGl6cXVpZXJkYVxyXG4gICAgICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcsICAgIG9mZnNldFk6ICA0IH0sXHJcbiAgICAgICAgLy8gMi4gQWJham8gKyBhbGluZWFkbyBkZXJlY2hhXHJcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgICBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCAgIG92ZXJsYXlZOiAndG9wJywgICAgb2Zmc2V0WTogIDQgfSxcclxuICAgICAgICAvLyAzLiBEZXJlY2hhICsgYWxpbmVhZG8gY2VudHJvXHJcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgICBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnY2VudGVyJywgb2Zmc2V0WDogIDQgfSxcclxuICAgICAgICAvLyA0LiBJenF1aWVyZGEgKyBhbGluZWFkbyBjZW50cm9cclxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdjZW50ZXInLCBvdmVybGF5WDogJ2VuZCcsICAgb3ZlcmxheVk6ICdjZW50ZXInLCBvZmZzZXRYOiAtNCB9LFxyXG4gICAgICAgIC8vIDUuIEFycmliYSArIGFsaW5lYWRvIGl6cXVpZXJkYVxyXG4gICAgICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ3RvcCcsICAgIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScsIG9mZnNldFk6IC00IH0sXHJcbiAgICAgIF0pO1xyXG5cclxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jbG9zZVBhbmVsKCkpO1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMub3JkZXJQYW5lbCwgdGhpcy5fdmNyKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZVBhbmVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Nsb3NlUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tPcmRlckNoYW5nZSh0aXRsZTogc3RyaW5nLCBsYWJlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLmVtaXQoeyB0aXRsZSwgdmFsdWU6IGxhYmVsIH0pO1xyXG4gICAgdGhpcy5fY2xvc2VQYW5lbCgpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYob3JkZXJEYXRhKXtcclxuPGRpdiBjbGFzcz1cIml1cy1idG5cIj5cclxuICAgIDxpdXMtYnV0dG9uLXNxdWFyZWQtdGVydGlhcnkgaWNvbk5hbWU9XCJpY29uLWxvdy1wcmlvcml0eVwiXHJcbiAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwic2hvd0xpc3RPcmRlcigpXCI+PC9pdXMtYnV0dG9uLXNxdWFyZWQtdGVydGlhcnk+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNvcmRlclBhbmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImN0bi1vcmRlciBjb2xvci1wcnlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsYWJsZVwiPlxyXG4gICAgICAgICAgICBAZm9yIChpdGVtT3JkZXIgb2Ygb3JkZXJEYXRhITsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBjYXB0aW9uLXNtXCI+XHJcbiAgICAgICAgICAgICAgICA8aXVzLWljb24tc20gW2ljb25OYW1lXT1cIml0ZW1PcmRlci5pY29uTmFtZVwiIGNsYXNzPVwiY29sb3ItcHJ5XCI+PC9pdXMtaWNvbi1zbT5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbU9yZGVyLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBAZm9yIChsYWJlbCBvZiBpdGVtT3JkZXIudmFsdWVzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN0bi1vcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIDxpdXMtb3B0aW9uLWl0ZW0gKG9wdGlvbkNsaWNrKT1cIm9uQ2xpY2tPcmRlckNoYW5nZShpdGVtT3JkZXIudGl0bGUsIGxhYmVsKVwiPnt7bGFiZWx9fTwvaXVzLW9wdGlvbi1pdGVtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYgKGl0ZW1PcmRlciAhPSBvcmRlckRhdGEhW29yZGVyRGF0YSEubGVuZ3RoIC0gMV0pIHtcclxuICAgICAgICAgICAgPGl1cy1zaW1wbGUtZGl2aWRlcj48L2l1cy1zaW1wbGUtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxufSJdfQ==