otimus-library 0.2.51 → 0.2.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/oc-tabs/oc-tabs.component.mjs +3 -3
- package/esm2022/lib/components/oc-toggle/oc-toggle.component.mjs +7 -4
- package/esm2022/lib/directives/oc-tooltip/oc-tooltip.directive.mjs +90 -64
- package/fesm2022/otimus-library.mjs +97 -68
- package/fesm2022/otimus-library.mjs.map +1 -1
- package/lib/components/oc-tabs/oc-tabs.component.d.ts +1 -1
- package/lib/components/oc-toggle/oc-toggle.component.d.ts +2 -1
- package/lib/directives/oc-tooltip/oc-tooltip.directive.d.ts +10 -7
- package/package.json +1 -1
|
@@ -26,11 +26,11 @@ export class OcTabsComponent {
|
|
|
26
26
|
this.ocClick.emit();
|
|
27
27
|
}
|
|
28
28
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OcTabsComponent, deps: [{ token: i1.StyleThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: OcTabsComponent, isStandalone: true, selector: "oc-tabs", inputs: { ocStyle: "ocStyle" }, outputs: { ocClick: "ocClick" }, queries: [{ propertyName: "ocTabs", predicate: OcTabComponent }], ngImport: i0, template: "<div class=\"oc-tabs\" [ngClass]=\"{\n shui: ocStyle === 'shui'\n}\">\n <div class=\"row\">\n @for(tab of ocTabs; track $index) {\n <button [ngClass]=\"{\n 'oc-selected': tab.tabIndex === activeTabIndex\n }\" class=\"oc-tab\" (click)=\"selectTab(tab.tabIndex); \n handleTabClick()\" type=\"button\">{{tab.ocTitle}}</button>\n }\n </div>\n <ng-content></ng-content>\n</div>", styles: [".oc-tabs .row{display:flex;gap:1px}.oc-tab{border:none;padding:.75rem 1.3rem;cursor:pointer;border-radius:8px 8px 0 0;background-color:transparent;border-bottom:2px solid #f7f7f7;transition:.15s ease;color:#7e8485}.oc-tab:hover{background-color:#f8f9ff}.oc-tab.oc-selected{border-bottom:2px solid #5505a2;background-color:#f8f9ff;color:#5505a2}.row{max-width:100%;transform:rotateX(180deg);overflow-x:auto}.row .oc-tab{transform:rotateX(180deg)}::-webkit-scrollbar{height:3px}.oc-tabs.shui .row{display:flex;gap:1rem}.oc-tabs.shui .oc-tab{border-bottom:3px solid transparent;font-weight:600;color:#00000080}.oc-tabs.shui .oc-tab:hover{background-color:transparent;border-bottom:3px solid #0169b2}.oc-tabs.shui .oc-tab.oc-selected{border-bottom:3px solid #0169b2;background-color:transparent;color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
29
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: OcTabsComponent, isStandalone: true, selector: "oc-tabs", inputs: { ocStyle: "ocStyle" }, outputs: { ocClick: "ocClick" }, queries: [{ propertyName: "ocTabs", predicate: OcTabComponent }], ngImport: i0, template: "<div class=\"oc-tabs\" [ngClass]=\"{\n shui: ocStyle === 'shui'\n}\">\n <div class=\"row\">\n @for(tab of ocTabs; track $index) {\n <button [ngClass]=\"{\n 'oc-selected': tab.tabIndex === activeTabIndex\n }\" class=\"oc-tab\" (click)=\"selectTab(tab.tabIndex); \n handleTabClick()\" type=\"button\">{{tab.ocTitle}}</button>\n }\n <div class=\"row-content\">\n <ng-content select=\"[row]\"></ng-content>\n </div>\n </div>\n <ng-content></ng-content>\n</div>", styles: [".oc-tabs .row{display:flex;gap:1px}.oc-tab{border:none;padding:.75rem 1.3rem;cursor:pointer;border-radius:8px 8px 0 0;background-color:transparent;border-bottom:2px solid #f7f7f7;transition:.15s ease;color:#7e8485}.oc-tab:hover{background-color:#f8f9ff}.oc-tab.oc-selected{border-bottom:2px solid #5505a2;background-color:#f8f9ff;color:#5505a2}.row{max-width:100%;transform:rotateX(180deg);overflow-x:auto}.row .oc-tab{transform:rotateX(180deg);white-space:nowrap}.row .row-content{width:100%;transform:rotateX(180deg)}::-webkit-scrollbar{height:3px}.oc-tabs.shui .row{display:flex;gap:1rem}.oc-tabs.shui .oc-tab{border-bottom:3px solid transparent;font-weight:600;color:#00000080}.oc-tabs.shui .oc-tab:hover{background-color:transparent;border-bottom:3px solid #0169b2}.oc-tabs.shui .oc-tab.oc-selected{border-bottom:3px solid #0169b2;background-color:transparent;color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
30
30
|
}
|
|
31
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OcTabsComponent, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
|
-
args: [{ selector: 'oc-tabs', standalone: true, imports: [CommonModule], template: "<div class=\"oc-tabs\" [ngClass]=\"{\n shui: ocStyle === 'shui'\n}\">\n <div class=\"row\">\n @for(tab of ocTabs; track $index) {\n <button [ngClass]=\"{\n 'oc-selected': tab.tabIndex === activeTabIndex\n }\" class=\"oc-tab\" (click)=\"selectTab(tab.tabIndex); \n handleTabClick()\" type=\"button\">{{tab.ocTitle}}</button>\n }\n </div>\n <ng-content></ng-content>\n</div>", styles: [".oc-tabs .row{display:flex;gap:1px}.oc-tab{border:none;padding:.75rem 1.3rem;cursor:pointer;border-radius:8px 8px 0 0;background-color:transparent;border-bottom:2px solid #f7f7f7;transition:.15s ease;color:#7e8485}.oc-tab:hover{background-color:#f8f9ff}.oc-tab.oc-selected{border-bottom:2px solid #5505a2;background-color:#f8f9ff;color:#5505a2}.row{max-width:100%;transform:rotateX(180deg);overflow-x:auto}.row .oc-tab{transform:rotateX(180deg)}::-webkit-scrollbar{height:3px}.oc-tabs.shui .row{display:flex;gap:1rem}.oc-tabs.shui .oc-tab{border-bottom:3px solid transparent;font-weight:600;color:#00000080}.oc-tabs.shui .oc-tab:hover{background-color:transparent;border-bottom:3px solid #0169b2}.oc-tabs.shui .oc-tab.oc-selected{border-bottom:3px solid #0169b2;background-color:transparent;color:#00000080}\n"] }]
|
|
33
|
+
args: [{ selector: 'oc-tabs', standalone: true, imports: [CommonModule], template: "<div class=\"oc-tabs\" [ngClass]=\"{\n shui: ocStyle === 'shui'\n}\">\n <div class=\"row\">\n @for(tab of ocTabs; track $index) {\n <button [ngClass]=\"{\n 'oc-selected': tab.tabIndex === activeTabIndex\n }\" class=\"oc-tab\" (click)=\"selectTab(tab.tabIndex); \n handleTabClick()\" type=\"button\">{{tab.ocTitle}}</button>\n }\n <div class=\"row-content\">\n <ng-content select=\"[row]\"></ng-content>\n </div>\n </div>\n <ng-content></ng-content>\n</div>", styles: [".oc-tabs .row{display:flex;gap:1px}.oc-tab{border:none;padding:.75rem 1.3rem;cursor:pointer;border-radius:8px 8px 0 0;background-color:transparent;border-bottom:2px solid #f7f7f7;transition:.15s ease;color:#7e8485}.oc-tab:hover{background-color:#f8f9ff}.oc-tab.oc-selected{border-bottom:2px solid #5505a2;background-color:#f8f9ff;color:#5505a2}.row{max-width:100%;transform:rotateX(180deg);overflow-x:auto}.row .oc-tab{transform:rotateX(180deg);white-space:nowrap}.row .row-content{width:100%;transform:rotateX(180deg)}::-webkit-scrollbar{height:3px}.oc-tabs.shui .row{display:flex;gap:1rem}.oc-tabs.shui .oc-tab{border-bottom:3px solid transparent;font-weight:600;color:#00000080}.oc-tabs.shui .oc-tab:hover{background-color:transparent;border-bottom:3px solid #0169b2}.oc-tabs.shui .oc-tab.oc-selected{border-bottom:3px solid #0169b2;background-color:transparent;color:#00000080}\n"] }]
|
|
34
34
|
}], ctorParameters: () => [{ type: i1.StyleThemeService }], propDecorators: { ocTabs: [{
|
|
35
35
|
type: ContentChildren,
|
|
36
36
|
args: [OcTabComponent]
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39
39
|
}], ocClick: [{
|
|
40
40
|
type: Output
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vdGltdXMtbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvb2MtdGFicy9vYy10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy10YWJzL29jLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBR2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7OztBQVc5QyxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUUvQyxZQUFPLEdBQXFCLFFBQVEsQ0FBQTtRQUNuQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUU1QyxtQkFBYyxHQUFXLENBQUMsQ0FBQTtJQUxpQyxDQUFDO0lBTzVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFBO1lBQ2hCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO0lBQzdCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNyQixDQUFDOytHQXZCVSxlQUFlO21HQUFmLGVBQWUsMkpBRVQsY0FBYyw2QkN2QmpDLG1mQWVNLDQ2QkRFTSxZQUFZOzs0RkFJWCxlQUFlO2tCQVAzQixTQUFTOytCQUNFLFNBQVMsY0FDUCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7c0ZBTVUsTUFBTTtzQkFBdEMsZUFBZTt1QkFBQyxjQUFjO2dCQUN0QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE9jVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vb2MtdGFiL29jLXRhYi5jb21wb25lbnQnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBTdHlsZVRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0eWxlLXRoZW1lLnNlcnZpY2UnXG5pbXBvcnQgeyBPY1N0eWxlVGhlbWVUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9vYy1zdHlsZS10aGVtZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2MtdGFicycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vb2MtdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vYy10YWJzLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgT2NUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3R5bGVUaGVtZVNlcnZpY2U6IFN0eWxlVGhlbWVTZXJ2aWNlKSB7fVxuICBAQ29udGVudENoaWxkcmVuKE9jVGFiQ29tcG9uZW50KSBvY1RhYnMhOiBRdWVyeUxpc3Q8T2NUYWJDb21wb25lbnQ+XG4gIEBJbnB1dCgpIG9jU3R5bGU6IE9jU3R5bGVUaGVtZVR5cGUgPSAnb3RpbXVzJ1xuICBAT3V0cHV0KCkgb2NDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIGFjdGl2ZVRhYkluZGV4OiBudW1iZXIgPSAwXG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub2NTdHlsZSA9IHRoaXMuc3R5bGVUaGVtZVNlcnZpY2UuZ2V0U3R5bGVUaGVtZSgpIHx8IHRoaXMub2NTdHlsZVxuICAgIHRoaXMuc2VsZWN0VGFiKDApXG4gIH1cblxuICBzZWxlY3RUYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMub2NUYWJzLnRvQXJyYXkoKS5mb3JFYWNoKCh0YWIsIGkpID0+IHtcbiAgICAgIHRhYi50YWJJbmRleCA9IGlcbiAgICAgIHRhYi5vY0lzQWN0aXZlID0gaSA9PT0gaW5kZXhcbiAgICB9KVxuICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleFxuICB9XG5cbiAgaGFuZGxlVGFiQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vY0NsaWNrLmVtaXQoKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib2MtdGFic1wiIFtuZ0NsYXNzXT1cIntcbiAgc2h1aTogb2NTdHlsZSA9PT0gJ3NodWknXG59XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICBAZm9yKHRhYiBvZiBvY1RhYnM7IHRyYWNrICRpbmRleCkge1xuICAgIDxidXR0b24gW25nQ2xhc3NdPVwie1xuICAgICAgICAnb2Mtc2VsZWN0ZWQnOiB0YWIudGFiSW5kZXggPT09IGFjdGl2ZVRhYkluZGV4XG4gICAgICB9XCIgY2xhc3M9XCJvYy10YWJcIiAoY2xpY2spPVwic2VsZWN0VGFiKHRhYi50YWJJbmRleCk7IFxuICAgICAgaGFuZGxlVGFiQ2xpY2soKVwiIHR5cGU9XCJidXR0b25cIj57e3RhYi5vY1RpdGxlfX08L2J1dHRvbj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcm93XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PiJdfQ==
|
|
@@ -5,6 +5,7 @@ import * as i1 from "@angular/common";
|
|
|
5
5
|
export class OcToggleComponent {
|
|
6
6
|
constructor() {
|
|
7
7
|
this._ocChecked = false;
|
|
8
|
+
this.ocSize = 'medium';
|
|
8
9
|
this.ocColor = 'green';
|
|
9
10
|
this.ocCheckedChange = new EventEmitter();
|
|
10
11
|
}
|
|
@@ -19,16 +20,18 @@ export class OcToggleComponent {
|
|
|
19
20
|
this.ocChecked = !this.ocChecked;
|
|
20
21
|
}
|
|
21
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OcToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OcToggleComponent, isStandalone: true, selector: "oc-toggle", inputs: { ocChecked: "ocChecked", ocColor: "ocColor" }, outputs: { ocCheckedChange: "ocCheckedChange" }, ngImport: i0, template: "<label class=\"switch\">\n <input [checked]=\"ocChecked\" (click)=\"toggleChecked()\" type=\"checkbox\">\n <span class=\"slider round\" [ngClass]=\"[ocColor]\"></span>\n</label>", styles: [".switch{position:relative;display:inline-block;width:60px;height:33px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OcToggleComponent, isStandalone: true, selector: "oc-toggle", inputs: { ocSize: "ocSize", ocChecked: "ocChecked", ocColor: "ocColor" }, outputs: { ocCheckedChange: "ocCheckedChange" }, ngImport: i0, template: "<label class=\"switch\" [ngClass]=\"{\n large: ocSize ==='large',\n medium: ocSize ==='medium',\n}\">\n <input [checked]=\"ocChecked\" (click)=\"toggleChecked()\" type=\"checkbox\">\n <span class=\"slider round\" [ngClass]=\"[ocColor]\"></span>\n</label>", styles: [".switch{position:relative;display:inline-block;width:48px;height:28px}.switch input:checked+.slider:before{-webkit-transform:translateX(18px);-ms-transform:translateX(18px);transform:translate(18px);box-shadow:0 0 16px #00dda3}.switch input:checked+.slider.purple:before{box-shadow:0 0 16px #7866e9}.switch.large{width:60px;height:33px}.switch.large input:checked+.slider:before{-webkit-transform:translateX(25px);-ms-transform:translateX(25px);transform:translate(25px)}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s;border:1px solid #ffffff}.slider:before{position:absolute;content:\"\";height:21px;width:21px;left:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s;bottom:2.5px}.switch.large .slider:before{height:26px;width:26px}input:checked+.slider.purple{background-color:#5505a2}input:checked+.slider.green{background-color:#00dda3}input:focus+.slider{box-shadow:0 0 1px #00dda3}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
23
24
|
}
|
|
24
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OcToggleComponent, decorators: [{
|
|
25
26
|
type: Component,
|
|
26
|
-
args: [{ selector: 'oc-toggle', standalone: true, imports: [CommonModule], template: "<label class=\"switch\">\n <input [checked]=\"ocChecked\" (click)=\"toggleChecked()\" type=\"checkbox\">\n <span class=\"slider round\" [ngClass]=\"[ocColor]\"></span>\n</label>", styles: [".switch{position:relative;display:inline-block;width:60px;height:33px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;
|
|
27
|
-
}], propDecorators: {
|
|
27
|
+
args: [{ selector: 'oc-toggle', standalone: true, imports: [CommonModule], template: "<label class=\"switch\" [ngClass]=\"{\n large: ocSize ==='large',\n medium: ocSize ==='medium',\n}\">\n <input [checked]=\"ocChecked\" (click)=\"toggleChecked()\" type=\"checkbox\">\n <span class=\"slider round\" [ngClass]=\"[ocColor]\"></span>\n</label>", styles: [".switch{position:relative;display:inline-block;width:48px;height:28px}.switch input:checked+.slider:before{-webkit-transform:translateX(18px);-ms-transform:translateX(18px);transform:translate(18px);box-shadow:0 0 16px #00dda3}.switch input:checked+.slider.purple:before{box-shadow:0 0 16px #7866e9}.switch.large{width:60px;height:33px}.switch.large input:checked+.slider:before{-webkit-transform:translateX(25px);-ms-transform:translateX(25px);transform:translate(25px)}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s;border:1px solid #ffffff}.slider:before{position:absolute;content:\"\";height:21px;width:21px;left:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s;bottom:2.5px}.switch.large .slider:before{height:26px;width:26px}input:checked+.slider.purple{background-color:#5505a2}input:checked+.slider.green{background-color:#00dda3}input:focus+.slider{box-shadow:0 0 1px #00dda3}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}\n"] }]
|
|
28
|
+
}], propDecorators: { ocSize: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], ocChecked: [{
|
|
28
31
|
type: Input
|
|
29
32
|
}], ocColor: [{
|
|
30
33
|
type: Input
|
|
31
34
|
}], ocCheckedChange: [{
|
|
32
35
|
type: Output
|
|
33
36
|
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy10b2dnbGUvb2MtdG9nZ2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy10b2dnbGUvb2MtdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7QUFTdEUsTUFBTSxPQUFPLGlCQUFpQjtJQVA5QjtRQVFFLGVBQVUsR0FBWSxLQUFLLENBQUE7UUFFbEIsV0FBTSxHQUF1QixRQUFRLENBQUE7UUFVckMsWUFBTyxHQUF1QixPQUFPLENBQUE7UUFFcEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFBO0tBS3hEO0lBaEJDLElBQWEsU0FBUyxDQUFDLEtBQWM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDeEIsQ0FBQztJQU1ELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUNsQyxDQUFDOytHQW5CVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixnTUNWOUIsb1FBTVEsOG1DREFJLFlBQVk7OzRGQUlYLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzhCQU9kLE1BQU07c0JBQWQsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQVNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvYy10b2dnbGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL29jLXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vYy10b2dnbGUuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBPY1RvZ2dsZUNvbXBvbmVudCB7XG4gIF9vY0NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIEBJbnB1dCgpIG9jU2l6ZTogJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSdcbiAgQElucHV0KCkgc2V0IG9jQ2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX29jQ2hlY2tlZCA9IHZhbHVlXG4gICAgdGhpcy5vY0NoZWNrZWRDaGFuZ2UuZW1pdCh0aGlzLl9vY0NoZWNrZWQpXG4gIH1cblxuICBnZXQgb2NDaGVja2VkKCkge1xuICAgIHJldHVybiB0aGlzLl9vY0NoZWNrZWRcbiAgfVxuXG4gIEBJbnB1dCgpIG9jQ29sb3I6ICdwdXJwbGUnIHwgJ2dyZWVuJyA9ICdncmVlbidcblxuICBAT3V0cHV0KCkgb2NDaGVja2VkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG5cbiAgdG9nZ2xlQ2hlY2tlZCgpIHtcbiAgICB0aGlzLm9jQ2hlY2tlZCA9ICF0aGlzLm9jQ2hlY2tlZFxuICB9XG59XG4iLCI8bGFiZWwgY2xhc3M9XCJzd2l0Y2hcIiBbbmdDbGFzc109XCJ7XG4gIGxhcmdlOiBvY1NpemUgPT09J2xhcmdlJyxcbiAgbWVkaXVtOiBvY1NpemUgPT09J21lZGl1bScsXG59XCI+XG4gIDxpbnB1dCBbY2hlY2tlZF09XCJvY0NoZWNrZWRcIiAoY2xpY2spPVwidG9nZ2xlQ2hlY2tlZCgpXCIgdHlwZT1cImNoZWNrYm94XCI+XG4gIDxzcGFuIGNsYXNzPVwic2xpZGVyIHJvdW5kXCIgW25nQ2xhc3NdPVwiW29jQ29sb3JdXCI+PC9zcGFuPlxuPC9sYWJlbD4iXX0=
|
|
@@ -1,23 +1,37 @@
|
|
|
1
|
-
import { Directive,
|
|
1
|
+
import { Directive, Input, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class OcTooltipDirective {
|
|
4
|
-
constructor(elRef, renderer) {
|
|
4
|
+
constructor(elRef, renderer, zone, cdr) {
|
|
5
5
|
this.elRef = elRef;
|
|
6
6
|
this.renderer = renderer;
|
|
7
|
+
this.zone = zone;
|
|
8
|
+
this.cdr = cdr;
|
|
7
9
|
this.content = '';
|
|
8
10
|
this.side = 'mouse';
|
|
9
|
-
this.created = false;
|
|
10
11
|
this.tooltip = null;
|
|
11
|
-
this.
|
|
12
|
+
this.moveScheduled = false;
|
|
13
|
+
this.zone.runOutsideAngular(() => {
|
|
14
|
+
this.setupEvents();
|
|
15
|
+
});
|
|
12
16
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
setupEvents() {
|
|
18
|
+
this.elRef.nativeElement.addEventListener('mouseover', (e) => this.onMouseOver(e));
|
|
19
|
+
this.elRef.nativeElement.addEventListener('mousemove', (e) => this.onMouseMove(e));
|
|
20
|
+
this.elRef.nativeElement.addEventListener('mouseout', (e) => this.onMouseOut(e));
|
|
21
|
+
}
|
|
22
|
+
createTooltip() {
|
|
23
|
+
if (!this.tooltip) {
|
|
24
|
+
this.tooltip = this.renderer.createElement('div');
|
|
25
|
+
this.renderer.addClass(this.tooltip, 'oc-tooltip');
|
|
26
|
+
this.renderer.setStyle(this.tooltip, 'position', 'absolute');
|
|
27
|
+
this.renderer.setStyle(this.tooltip, 'pointer-events', 'none');
|
|
28
|
+
this.renderer.setStyle(this.tooltip, 'z-index', '1000');
|
|
29
|
+
this.renderer.setStyle(this.tooltip, 'display', 'none');
|
|
30
|
+
this.renderer.appendChild(document.body, this.tooltip);
|
|
16
31
|
}
|
|
17
|
-
this.tooltip =
|
|
18
|
-
const
|
|
19
|
-
if (
|
|
20
|
-
this.content = this.content.replace('>', ' style="margin: 0">');
|
|
32
|
+
this.tooltip.innerHTML = '';
|
|
33
|
+
const isHTML = new DOMParser().parseFromString(this.content, 'text/html').body.children.length > 0;
|
|
34
|
+
if (isHTML) {
|
|
21
35
|
this.renderer.setProperty(this.tooltip, 'innerHTML', this.content);
|
|
22
36
|
}
|
|
23
37
|
else {
|
|
@@ -25,74 +39,95 @@ export class OcTooltipDirective {
|
|
|
25
39
|
this.renderer.appendChild(this.tooltip, text);
|
|
26
40
|
this.renderer.setStyle(this.tooltip, 'color', '#7E8485');
|
|
27
41
|
}
|
|
28
|
-
this.renderer.addClass(this.tooltip, 'oc-tooltip');
|
|
29
42
|
if (this.side === 'mouse') {
|
|
30
43
|
this.renderer.addClass(this.tooltip, 'mouse-tracking');
|
|
31
44
|
}
|
|
32
|
-
this.renderer.setStyle(this.tooltip, 'position', 'absolute');
|
|
33
|
-
this.renderer.setStyle(this.tooltip, 'pointer-events', 'none');
|
|
34
|
-
this.renderer.setStyle(this.tooltip, 'z-index', '1000');
|
|
35
|
-
document.body.appendChild(this.tooltip);
|
|
36
|
-
this.created = true;
|
|
37
45
|
return this.tooltip;
|
|
38
46
|
}
|
|
39
47
|
onMouseOver(event) {
|
|
40
|
-
if (!this.content)
|
|
48
|
+
if (!this.content)
|
|
41
49
|
return;
|
|
50
|
+
if (!this.tooltip)
|
|
51
|
+
this.createTooltip();
|
|
52
|
+
this.renderer.setStyle(this.tooltip, 'display', 'block');
|
|
53
|
+
if (this.side === 'mouse') {
|
|
54
|
+
this.updateTooltipPosition(event);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.positionTooltipFixed();
|
|
42
58
|
}
|
|
43
|
-
this.
|
|
44
|
-
this.updateTooltipPosition(event);
|
|
59
|
+
this.cdr.markForCheck();
|
|
45
60
|
}
|
|
46
61
|
onMouseMove(event) {
|
|
47
|
-
if (this.tooltip)
|
|
48
|
-
|
|
62
|
+
if (!this.tooltip || this.side !== 'mouse')
|
|
63
|
+
return;
|
|
64
|
+
if (!this.moveScheduled) {
|
|
65
|
+
this.moveScheduled = true;
|
|
66
|
+
requestAnimationFrame(() => {
|
|
49
67
|
this.updateTooltipPosition(event);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
this.positionTooltipFixed();
|
|
53
|
-
}
|
|
68
|
+
this.moveScheduled = false;
|
|
69
|
+
});
|
|
54
70
|
}
|
|
55
71
|
}
|
|
56
|
-
|
|
72
|
+
onMouseOut(event) {
|
|
73
|
+
if (this.tooltip &&
|
|
74
|
+
event.relatedTarget instanceof Node &&
|
|
75
|
+
this.tooltip.contains(event.relatedTarget)) {
|
|
76
|
+
return; // evita flicker se mouse entra no tooltip
|
|
77
|
+
}
|
|
57
78
|
if (this.tooltip) {
|
|
58
|
-
this.renderer.setStyle(this.tooltip, '
|
|
59
|
-
this.renderer.setStyle(this.tooltip, 'top', `${event.pageY + 12}px`);
|
|
79
|
+
this.renderer.setStyle(this.tooltip, 'display', 'none');
|
|
60
80
|
}
|
|
81
|
+
this.cdr.markForCheck();
|
|
82
|
+
}
|
|
83
|
+
updateTooltipPosition(event) {
|
|
84
|
+
if (!this.tooltip)
|
|
85
|
+
return;
|
|
86
|
+
const left = event.pageX + 12;
|
|
87
|
+
const top = event.pageY + 12;
|
|
88
|
+
this.renderer.setStyle(this.tooltip, 'left', `${left}px`);
|
|
89
|
+
this.renderer.setStyle(this.tooltip, 'top', `${top}px`);
|
|
61
90
|
}
|
|
62
91
|
positionTooltipFixed() {
|
|
63
|
-
if (!this.tooltip)
|
|
92
|
+
if (!this.tooltip)
|
|
64
93
|
return;
|
|
65
|
-
}
|
|
66
94
|
const rect = this.elRef.nativeElement.getBoundingClientRect();
|
|
67
95
|
const width = this.elRef.nativeElement.offsetWidth;
|
|
68
96
|
const height = this.elRef.nativeElement.offsetHeight;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
97
|
+
const scrollX = window.scrollX;
|
|
98
|
+
const scrollY = window.scrollY;
|
|
99
|
+
let left = 0;
|
|
100
|
+
let top = 0;
|
|
101
|
+
switch (this.side) {
|
|
102
|
+
case 'right':
|
|
103
|
+
left = scrollX + rect.right + 10;
|
|
104
|
+
top = scrollY + rect.top + height / 2;
|
|
105
|
+
break;
|
|
106
|
+
case 'left':
|
|
107
|
+
left = scrollX + rect.left - this.tooltip.offsetWidth - 10;
|
|
108
|
+
top = scrollY + rect.top + height / 2;
|
|
109
|
+
break;
|
|
110
|
+
case 'upon':
|
|
111
|
+
case 'top':
|
|
112
|
+
left = scrollX + rect.left + width / 2;
|
|
113
|
+
top = scrollY + rect.top - this.tooltip.offsetHeight - 10;
|
|
114
|
+
break;
|
|
115
|
+
case 'bottom':
|
|
116
|
+
left = scrollX + rect.left + width / 2;
|
|
117
|
+
top = scrollY + rect.bottom + 10;
|
|
118
|
+
break;
|
|
84
119
|
}
|
|
120
|
+
this.renderer.setStyle(this.tooltip, 'left', `${left}px`);
|
|
121
|
+
this.renderer.setStyle(this.tooltip, 'top', `${top}px`);
|
|
85
122
|
}
|
|
86
|
-
|
|
87
|
-
if (this.tooltip) {
|
|
88
|
-
|
|
89
|
-
this.created = false;
|
|
123
|
+
ngOnDestroy() {
|
|
124
|
+
if (this.tooltip && this.tooltip.parentNode) {
|
|
125
|
+
this.tooltip.parentNode.removeChild(this.tooltip);
|
|
90
126
|
this.tooltip = null;
|
|
91
127
|
}
|
|
92
|
-
this.mouseingInterval = null;
|
|
93
128
|
}
|
|
94
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OcTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
95
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: OcTooltipDirective, isStandalone: true, selector: "[ocTooltip]", inputs: { content: "content", side: "side" },
|
|
129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OcTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
130
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: OcTooltipDirective, isStandalone: true, selector: "[ocTooltip]", inputs: { content: "content", side: "side" }, ngImport: i0 }); }
|
|
96
131
|
}
|
|
97
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OcTooltipDirective, decorators: [{
|
|
98
133
|
type: Directive,
|
|
@@ -100,18 +135,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
100
135
|
selector: '[ocTooltip]',
|
|
101
136
|
standalone: true,
|
|
102
137
|
}]
|
|
103
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { content: [{
|
|
138
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { content: [{
|
|
104
139
|
type: Input
|
|
105
140
|
}], side: [{
|
|
106
141
|
type: Input
|
|
107
|
-
}], onMouseOver: [{
|
|
108
|
-
type: HostListener,
|
|
109
|
-
args: ['mouseover', ['$event']]
|
|
110
|
-
}], onMouseMove: [{
|
|
111
|
-
type: HostListener,
|
|
112
|
-
args: ['mousemove', ['$event']]
|
|
113
|
-
}], onMouseOut: [{
|
|
114
|
-
type: HostListener,
|
|
115
|
-
args: ['mouseout']
|
|
116
142
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtdG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vdGltdXMtbGlicmFyeS9zcmMvbGliL2RpcmVjdGl2ZXMvb2MtdG9vbHRpcC9vYy10b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUE7O0FBTXJGLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxLQUFpQixFQUNqQixRQUFtQjtRQURuQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFHcEIsWUFBTyxHQUFXLEVBQUUsQ0FBQTtRQUNwQixTQUFJLEdBQTJELE9BQU8sQ0FBQTtRQUV2RSxZQUFPLEdBQVksS0FBSyxDQUFBO1FBQ3hCLFlBQU8sR0FBdUIsSUFBSSxDQUFBO1FBdUMxQyxxQkFBZ0IsR0FBZSxJQUFJLENBQUE7SUE3Q2hDLENBQUM7SUFRSixhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsT0FBUSxDQUFBO1FBQ3RCLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pELE1BQU0sU0FBUyxHQUFHLHdDQUF3QyxDQUFBO1FBQzFELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFBO1lBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FB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Q2xELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQTtRQUVwRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDOUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQy9GLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBR0QsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQTtJQUM5QixDQUFDOytHQXBHVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3VHQU9VLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBa0NOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV3JDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMENyQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW29jVG9vbHRpcF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBPY1Rvb2x0aXBEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgQElucHV0KCkgY29udGVudDogc3RyaW5nID0gJydcbiAgQElucHV0KCkgc2lkZTogJ2JvdHRvbScgfCAndXBvbicgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnbW91c2UnID0gJ21vdXNlJ1xuXG4gIHByaXZhdGUgY3JlYXRlZDogYm9vbGVhbiA9IGZhbHNlXG4gIHByaXZhdGUgdG9vbHRpcDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbFxuXG4gIGNyZWF0ZVRvb2xUaXAoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5jcmVhdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwIVxuICAgIH1cblxuICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICBjb25zdCBodG1sUmVnZXggPSAvPChbYS16XVthLXowLTldKilcXGJbXj5dKj4oLio/KTxcXC9cXDE+L2lzXG4gICAgaWYgKGh0bWxSZWdleC50ZXN0KHRoaXMuY29udGVudCkpIHtcbiAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuY29udGVudC5yZXBsYWNlKCc+JywgJyBzdHlsZT1cIm1hcmdpbjogMFwiPicpXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMudG9vbHRpcCwgJ2lubmVySFRNTCcsIHRoaXMuY29udGVudClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLmNvbnRlbnQpXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcCwgdGV4dClcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnY29sb3InLCAnIzdFODQ4NScpXG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnb2MtdG9vbHRpcCcpXG4gICAgaWYgKHRoaXMuc2lkZSA9PT0gJ21vdXNlJykge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdtb3VzZS10cmFja2luZycpXG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAncG9pbnRlci1ldmVudHMnLCAnbm9uZScpXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd6LWluZGV4JywgJzEwMDAnKVxuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXAgYXMgYW55KVxuICAgIHRoaXMuY3JlYXRlZCA9IHRydWVcbiAgICByZXR1cm4gdGhpcy50b29sdGlwXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInLCBbJyRldmVudCddKVxuICBvbk1vdXNlT3ZlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy50b29sdGlwID0gdGhpcy5jcmVhdGVUb29sVGlwKClcbiAgICB0aGlzLnVwZGF0ZVRvb2x0aXBQb3NpdGlvbihldmVudClcbiAgfVxuXG4gIG1vdXNlaW5nSW50ZXJ2YWw6IGFueSB8IG51bGwgPSBudWxsXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbHRpcCkge1xuICAgICAgaWYgKHRoaXMuc2lkZSA9PT0gJ21vdXNlJykge1xuICAgICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBQb3NpdGlvbihldmVudClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25Ub29sdGlwRml4ZWQoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbHRpcCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgYCR7ZXZlbnQucGFnZVggKyAxMn1weGApXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIGAke2V2ZW50LnBhZ2VZICsgMTJ9cHhgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Ub29sdGlwRml4ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0XG5cbiAgICBpZiAodGhpcy5zaWRlID09PSAncmlnaHQnKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2xlZnQnLCBgJHtyZWN0LnJpZ2h0ICsgMTB9cHhgKVxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0b3AnLCBgJHtyZWN0LnRvcCArIGhlaWdodCAvIDJ9cHhgKVxuICAgIH0gZWxzZSBpZiAodGhpcy5zaWRlID09PSAnbGVmdCcpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnbGVmdCcsIGAke3JlY3QubGVmdCAtIHRoaXMudG9vbHRpcC5vZmZzZXRXaWR0aCAtIDEwfXB4YClcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAndG9wJywgYCR7cmVjdC50b3AgKyBoZWlnaHQgLyAyfXB4YClcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2lkZSA9PT0gJ3Vwb24nIHx8IHRoaXMuc2lkZSA9PT0gJ3RvcCcpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnbGVmdCcsIGAke3JlY3QubGVmdCArIHdpZHRoIC8gMn1weGApXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIGAke3JlY3QudG9wIC0gdGhpcy50b29sdGlwLm9mZnNldEhlaWdodCAtIDEwfXB4YClcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnbGVmdCcsIGAke3JlY3QubGVmdCArIHdpZHRoIC8gMn1weGApXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3RvcCcsIGAke3JlY3QuYm90dG9tICsgMTB9cHhgKVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3V0JylcbiAgb25Nb3VzZU91dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcClcbiAgICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlXG4gICAgICB0aGlzLnRvb2x0aXAgPSBudWxsXG4gICAgfVxuXG4gICAgdGhpcy5tb3VzZWluZ0ludGVydmFsID0gbnVsbFxuICB9XG59XG4iXX0=
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtdG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vdGltdXMtbGlicmFyeS9zcmMvbGliL2RpcmVjdGl2ZXMvb2MtdG9vbHRpcC9vYy10b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQTs7QUFNdEIsTUFBTSxPQUFPLGtCQUFrQjtJQU83QixZQUNVLEtBQWlCLEVBQ2pCLFFBQW1CLEVBQ25CLElBQVksRUFDWixHQUFzQjtRQUh0QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBVnZCLFlBQU8sR0FBVyxFQUFFLENBQUE7UUFDcEIsU0FBSSxHQUEyRCxPQUFPLENBQUE7UUFFdkUsWUFBTyxHQUF1QixJQUFJLENBQUE7UUFDbEMsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFRM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFD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LEVBQUUsSUFBSTtpQkFDakI7NEpBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFJlbmRlcmVyMixcbiAgTmdab25lLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbb2NUb29sdGlwXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE9jVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIHNpZGU6ICdib3R0b20nIHwgJ3Vwb24nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ21vdXNlJyA9ICdtb3VzZSdcblxuICBwcml2YXRlIHRvb2x0aXA6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBtb3ZlU2NoZWR1bGVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBFdmVudHMoKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRzKCkge1xuICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5vbk1vdXNlT3ZlcihlKSlcbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMub25Nb3VzZU1vdmUoZSkpXG4gICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMub25Nb3VzZU91dChlKSlcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVG9vbHRpcCgpOiBIVE1MRWxlbWVudCB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXApIHtcbiAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JykgYXMgSFRNTEVsZW1lbnRcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnb2MtdG9vbHRpcCcpXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJylcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAncG9pbnRlci1ldmVudHMnLCAnbm9uZScpXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ3otaW5kZXgnLCAnMTAwMCcpXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2Rpc3BsYXknLCAnbm9uZScpXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMudG9vbHRpcClcbiAgICB9XG5cbiAgICB0aGlzLnRvb2x0aXAuaW5uZXJIVE1MID0gJydcblxuICAgIGNvbnN0IGlzSFRNTCA9XG4gICAgICBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHRoaXMuY29udGVudCwgJ3RleHQvaHRtbCcpLmJvZHkuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICAgIGlmIChpc0hUTUwpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy50b29sdGlwLCAnaW5uZXJIVE1MJywgdGhpcy5jb250ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRoaXMuY29udGVudClcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwLCB0ZXh0KVxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdjb2xvcicsICcjN0U4NDg1JylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaWRlID09PSAnbW91c2UnKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ21vdXNlLXRyYWNraW5nJylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b29sdGlwXG4gIH1cblxuICBvbk1vdXNlT3ZlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50KSByZXR1cm5cblxuICAgIGlmICghdGhpcy50b29sdGlwKSB0aGlzLmNyZWF0ZVRvb2x0aXAoKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnZGlzcGxheScsICdibG9jaycpXG5cbiAgICBpZiAodGhpcy5zaWRlID09PSAnbW91c2UnKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBQb3NpdGlvbihldmVudClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3NpdGlvblRvb2x0aXBGaXhlZCgpXG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKClcbiAgfVxuXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXAgfHwgdGhpcy5zaWRlICE9PSAnbW91c2UnKSByZXR1cm5cblxuICAgIGlmICghdGhpcy5tb3ZlU2NoZWR1bGVkKSB7XG4gICAgICB0aGlzLm1vdmVTY2hlZHVsZWQgPSB0cnVlXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBQb3NpdGlvbihldmVudClcbiAgICAgICAgdGhpcy5tb3ZlU2NoZWR1bGVkID0gZmFsc2VcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgb25Nb3VzZU91dChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudG9vbHRpcCAmJlxuICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiZcbiAgICAgIHRoaXMudG9vbHRpcC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KVxuICAgICkge1xuICAgICAgcmV0dXJuIC8vIGV2aXRhIGZsaWNrZXIgc2UgbW91c2UgZW50cmEgbm8gdG9vbHRpcFxuICAgIH1cblxuICAgIGlmICh0aGlzLnRvb2x0aXApIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnZGlzcGxheScsICdub25lJylcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwUG9zaXRpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudG9vbHRpcCkgcmV0dXJuXG5cbiAgICBjb25zdCBsZWZ0ID0gZXZlbnQucGFnZVggKyAxMlxuICAgIGNvbnN0IHRvcCA9IGV2ZW50LnBhZ2VZICsgMTJcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnbGVmdCcsIGAke2xlZnR9cHhgKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAndG9wJywgYCR7dG9wfXB4YClcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Ub29sdGlwRml4ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXApIHJldHVyblxuXG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxuXG4gICAgY29uc3Qgc2Nyb2xsWCA9IHdpbmRvdy5zY3JvbGxYXG4gICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZXG5cbiAgICBsZXQgbGVmdCA9IDBcbiAgICBsZXQgdG9wID0gMFxuXG4gICAgc3dpdGNoICh0aGlzLnNpZGUpIHtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgbGVmdCA9IHNjcm9sbFggKyByZWN0LnJpZ2h0ICsgMTBcbiAgICAgICAgdG9wID0gc2Nyb2xsWSArIHJlY3QudG9wICsgaGVpZ2h0IC8gMlxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGxlZnQgPSBzY3JvbGxYICsgcmVjdC5sZWZ0IC0gdGhpcy50b29sdGlwLm9mZnNldFdpZHRoIC0gMTBcbiAgICAgICAgdG9wID0gc2Nyb2xsWSArIHJlY3QudG9wICsgaGVpZ2h0IC8gMlxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndXBvbic6XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBsZWZ0ID0gc2Nyb2xsWCArIHJlY3QubGVmdCArIHdpZHRoIC8gMlxuICAgICAgICB0b3AgPSBzY3JvbGxZICsgcmVjdC50b3AgLSB0aGlzLnRvb2x0aXAub2Zmc2V0SGVpZ2h0IC0gMTBcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIGxlZnQgPSBzY3JvbGxYICsgcmVjdC5sZWZ0ICsgd2lkdGggLyAyXG4gICAgICAgIHRvcCA9IHNjcm9sbFkgKyByZWN0LmJvdHRvbSArIDEwXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgYCR7bGVmdH1weGApXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0b3AnLCBgJHt0b3B9cHhgKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbHRpcCAmJiB0aGlzLnRvb2x0aXAucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy50b29sdGlwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy50b29sdGlwKVxuICAgICAgdGhpcy50b29sdGlwID0gbnVsbFxuICAgIH1cbiAgfVxufVxuIl19
|