otimus-library 0.0.70 → 0.0.72

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.
@@ -0,0 +1,48 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ export class OcCheckboxComponent {
8
+ constructor() {
9
+ this.checkBoxId = `oc-${Math.random()}`;
10
+ this.ocChange = new EventEmitter();
11
+ this.ocChecked = false;
12
+ this.ocSize = 'small';
13
+ this.ocLabel = '';
14
+ this.ocName = '';
15
+ this.ocColor = 'green';
16
+ this.ocBorderColor = 'white';
17
+ }
18
+ toggleChecked() {
19
+ this.ocChecked = !this.ocChecked;
20
+ this.ocChange.emit(this.ocChecked);
21
+ if (this.formControl) {
22
+ this.formControl.setValue(this.ocChecked);
23
+ }
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.5", type: OcCheckboxComponent, isStandalone: true, selector: "oc-checkbox", inputs: { ocChecked: "ocChecked", ocSize: "ocSize", ocLabel: "ocLabel", ocName: "ocName", ocColor: "ocColor", ocBorderColor: "ocBorderColor", formControl: "formControl" }, outputs: { ocChange: "ocChange" }, ngImport: i0, template: "<div class=\"oc-checkbox-content\">\n\n <button class=\"oc-checkbox cbx\" [ngClass]=\"{\n 'checked': ocChecked,\n 'tiny': ocSize === 'tiny',\n purple: ocColor === 'purple',\n 'gray-border': ocBorderColor === 'gray'\n }\"\n (click)=\"toggleChecked()\"\n >\n\n <span class=\"check-icon material-symbols-outlined\">check_small</span>\n </button>\n \n @if(ocLabel) {\n <button class=\"oc-checkbox-label cbx\" (click)=\"toggleChecked()\">\n {{ocLabel}}\n </button>\n }\n\n @if(formControl) {\n <input [formControl]=\"formControl\" [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n } @else {\n <input [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n }\n</div>", styles: [".oc-checkbox-content{display:flex;align-items:center;gap:.3rem}.oc-checkbox-content .oc-checkbox-label{background-color:transparent;border:none;color:#8f9596;font-weight:600}.oc-checkbox{min-width:1rem;width:1.2rem;height:1.2rem;border-radius:.3rem;background-color:#f7f7f7;border:2px solid #ffffff;display:flex;align-items:center;justify-content:center;transition:.15s ease;cursor:pointer;overflow:hidden}.oc-checkbox:hover{filter:brightness(.95)}.oc-checkbox .check-icon{font-weight:700;color:#f8f9ff;opacity:0;pointer-events:none;position:absolute;margin:0;font-size:1.15rem;transition:.2s ease;transform:translateY(15px) scale(.5)}.oc-checkbox.gray-border{border:2px solid #d1d5db}.oc-checkbox.tiny{width:1rem;height:1rem;border:1px solid #ffffff}.oc-checkbox.tiny.gray{border:1px solid #d1d5db}.checked{background-color:#00dda3;box-shadow:0 2px 10px #00dda32b;border:none!important}.checked .check-icon{transform:translateY(0) scale(1);opacity:1;color:#f8f9ff}.checked.purple{background-color:#5505a2;box-shadow:0 2px 10px #5505a233}.label{width:18.4px!important;height:18.4px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcCheckboxComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'oc-checkbox', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<div class=\"oc-checkbox-content\">\n\n <button class=\"oc-checkbox cbx\" [ngClass]=\"{\n 'checked': ocChecked,\n 'tiny': ocSize === 'tiny',\n purple: ocColor === 'purple',\n 'gray-border': ocBorderColor === 'gray'\n }\"\n (click)=\"toggleChecked()\"\n >\n\n <span class=\"check-icon material-symbols-outlined\">check_small</span>\n </button>\n \n @if(ocLabel) {\n <button class=\"oc-checkbox-label cbx\" (click)=\"toggleChecked()\">\n {{ocLabel}}\n </button>\n }\n\n @if(formControl) {\n <input [formControl]=\"formControl\" [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n } @else {\n <input [name]=\"ocName\" [checked]=\"ocChecked\" type=\"checkbox\" hidden>\n }\n</div>", styles: [".oc-checkbox-content{display:flex;align-items:center;gap:.3rem}.oc-checkbox-content .oc-checkbox-label{background-color:transparent;border:none;color:#8f9596;font-weight:600}.oc-checkbox{min-width:1rem;width:1.2rem;height:1.2rem;border-radius:.3rem;background-color:#f7f7f7;border:2px solid #ffffff;display:flex;align-items:center;justify-content:center;transition:.15s ease;cursor:pointer;overflow:hidden}.oc-checkbox:hover{filter:brightness(.95)}.oc-checkbox .check-icon{font-weight:700;color:#f8f9ff;opacity:0;pointer-events:none;position:absolute;margin:0;font-size:1.15rem;transition:.2s ease;transform:translateY(15px) scale(.5)}.oc-checkbox.gray-border{border:2px solid #d1d5db}.oc-checkbox.tiny{width:1rem;height:1rem;border:1px solid #ffffff}.oc-checkbox.tiny.gray{border:1px solid #d1d5db}.checked{background-color:#00dda3;box-shadow:0 2px 10px #00dda32b;border:none!important}.checked .check-icon{transform:translateY(0) scale(1);opacity:1;color:#f8f9ff}.checked.purple{background-color:#5505a2;box-shadow:0 2px 10px #5505a233}.label{width:18.4px!important;height:18.4px!important}\n"] }]
31
+ }], propDecorators: { ocChange: [{
32
+ type: Output
33
+ }], ocChecked: [{
34
+ type: Input
35
+ }], ocSize: [{
36
+ type: Input
37
+ }], ocLabel: [{
38
+ type: Input
39
+ }], ocName: [{
40
+ type: Input
41
+ }], ocColor: [{
42
+ type: Input
43
+ }], ocBorderColor: [{
44
+ type: Input
45
+ }], formControl: [{
46
+ type: Input
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3RpbXVzLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL29jLWNoZWNrYm94L29jLWNoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy1jaGVja2JveC9vYy1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFTL0UsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFFLGVBQVUsR0FBVyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFBO1FBRWhDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBRTlCLGNBQVMsR0FBWSxLQUFLLENBQUE7UUFDMUIsV0FBTSxHQUFxQixPQUFPLENBQUE7UUFDbEMsWUFBTyxHQUFZLEVBQUUsQ0FBQTtRQUNyQixXQUFNLEdBQVksRUFBRSxDQUFBO1FBQ3BCLFlBQU8sR0FBdUIsT0FBTyxDQUFBO1FBQ3JDLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQTtLQVluRDtJQVJDLGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFbEMsSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUMxQztJQUNILENBQUM7OEdBckJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHNSQ1hoQyxpdkJBeUJNLCtuQ0RsQk0sWUFBWSw0SEFBRSxXQUFXLHVUQUFFLG1CQUFtQjs7MkZBSTdDLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQzs4QkFPL0MsUUFBUTtzQkFBakIsTUFBTTtnQkFFRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2MtY2hlY2tib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vYy1jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9vYy1jaGVja2JveC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgT2NDaGVja2JveENvbXBvbmVudCB7XG4gIGNoZWNrQm94SWQ6IHN0cmluZyA9IGBvYy0ke01hdGgucmFuZG9tKCl9YFxuXG4gIEBPdXRwdXQoKSBvY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBJbnB1dCgpIG9jQ2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIG9jU2l6ZTogJ3RpbnknIHwgJ3NtYWxsJyA9ICdzbWFsbCdcbiAgQElucHV0KCkgb2NMYWJlbD86IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIG9jTmFtZT86IHN0cmluZyA9ICcnXG4gIEBJbnB1dCgpIG9jQ29sb3I6ICdwdXJwbGUnIHwgJ2dyZWVuJyA9ICdncmVlbidcbiAgQElucHV0KCkgb2NCb3JkZXJDb2xvcjogJ3doaXRlJyB8ICdncmF5JyA9ICd3aGl0ZSdcblxuICBASW5wdXQoKSBmb3JtQ29udHJvbD86IGFueVxuXG4gIHRvZ2dsZUNoZWNrZWQoKSB7XG4gICAgdGhpcy5vY0NoZWNrZWQgPSAhdGhpcy5vY0NoZWNrZWRcbiAgICB0aGlzLm9jQ2hhbmdlLmVtaXQodGhpcy5vY0NoZWNrZWQpXG5cbiAgICBpZih0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub2NDaGVja2VkKVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9jLWNoZWNrYm94LWNvbnRlbnRcIj5cblxuICA8YnV0dG9uIGNsYXNzPVwib2MtY2hlY2tib3ggY2J4XCIgW25nQ2xhc3NdPVwie1xuICAgICAgJ2NoZWNrZWQnOiBvY0NoZWNrZWQsXG4gICAgICAndGlueSc6IG9jU2l6ZSA9PT0gJ3RpbnknLFxuICAgICAgcHVycGxlOiBvY0NvbG9yID09PSAncHVycGxlJyxcbiAgICAgICdncmF5LWJvcmRlcic6IG9jQm9yZGVyQ29sb3IgPT09ICdncmF5J1xuICAgIH1cIlxuICAgIChjbGljayk9XCJ0b2dnbGVDaGVja2VkKClcIlxuICAgID5cblxuICAgIDxzcGFuIGNsYXNzPVwiY2hlY2staWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+Y2hlY2tfc21hbGw8L3NwYW4+XG4gIDwvYnV0dG9uPlxuICBcbiAgQGlmKG9jTGFiZWwpIHtcbiAgICA8YnV0dG9uIGNsYXNzPVwib2MtY2hlY2tib3gtbGFiZWwgY2J4XCIgKGNsaWNrKT1cInRvZ2dsZUNoZWNrZWQoKVwiPlxuICAgICAge3tvY0xhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIEBpZihmb3JtQ29udHJvbCkge1xuICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbbmFtZV09XCJvY05hbWVcIiBbY2hlY2tlZF09XCJvY0NoZWNrZWRcIiB0eXBlPVwiY2hlY2tib3hcIiBoaWRkZW4+XG4gIH0gQGVsc2Uge1xuICAgIDxpbnB1dCBbbmFtZV09XCJvY05hbWVcIiBbY2hlY2tlZF09XCJvY0NoZWNrZWRcIiB0eXBlPVwiY2hlY2tib3hcIiBoaWRkZW4+XG4gIH1cbjwvZGl2PiJdfQ==
@@ -1,17 +1,19 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { CdkMenuModule } from '@angular/cdk/menu';
3
3
  import { CommonModule } from '@angular/common';
4
+ import { OcCheckboxComponent } from '../oc-checkbox/oc-checkbox.component';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  import * as i2 from "@angular/cdk/menu";
7
8
  export class OcMenuComponent {
8
9
  constructor(renderer) {
9
10
  this.renderer = renderer;
11
+ this.ocChange = new EventEmitter();
10
12
  this.ocMenu = [];
11
13
  this.isMenuShown = false;
12
14
  }
13
15
  open() {
14
- this.isMenuShown = !this.isMenuShown;
16
+ this.isMenuShown = true;
15
17
  setTimeout(() => {
16
18
  if (this.menu) {
17
19
  const parentButton = this.findParentButton(this.menu.nativeElement);
@@ -37,7 +39,10 @@ export class OcMenuComponent {
37
39
  }
38
40
  closeOnClickOut() {
39
41
  this.renderer.listen('window', 'click', (e) => {
40
- if (!this.menu)
42
+ const isCheckbox = Array.from(e.target.classList).includes('cbx');
43
+ if (isCheckbox)
44
+ return;
45
+ else if (!this.menu)
41
46
  return;
42
47
  if (this.buttonId && e.target.id !== this.buttonId) {
43
48
  this.isMenuShown = false;
@@ -45,16 +50,32 @@ export class OcMenuComponent {
45
50
  }
46
51
  });
47
52
  }
53
+ changeCheckbox(name, checked) {
54
+ let foundItem;
55
+ this.ocMenu.forEach(item => {
56
+ if (item.name === name && typeof checked === 'boolean') {
57
+ item.checked = checked;
58
+ foundItem = item;
59
+ }
60
+ });
61
+ this.ocChange.emit(foundItem);
62
+ return foundItem;
63
+ }
64
+ typeof(key) {
65
+ return typeof key;
66
+ }
48
67
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcMenuComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.5", type: OcMenuComponent, isStandalone: true, selector: "oc-menu", inputs: { ocMenu: "ocMenu" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["ocMenuEl"], descendants: true }], ngImport: i0, template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li>\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url) {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:500;text-align:left;padding:0;margin:0;border:none;padding:.6rem;background-color:transparent;width:100%;height:100%;cursor:pointer}.oc-menu ul li .material-symbols-outlined{width:.3rem;font-size:1.1rem}.oc-menu ul li:hover{background-color:#fff}@keyframes showUp{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CdkMenuModule }, { kind: "directive", type: i2.CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }] }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.5", type: OcMenuComponent, isStandalone: true, selector: "oc-menu", inputs: { ocMenu: "ocMenu" }, outputs: { ocChange: "ocChange" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["ocMenuEl"], descendants: true }], ngImport: i0, template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li\r\n [ngClass]=\"{\r\n 'checkbox-option cbx': typeof(option.checked) === 'boolean'\r\n }\"\r\n >\r\n @if(typeof(option.checked) === 'boolean'){\r\n <div class=\"checkbox-opt cbx\">\r\n <oc-checkbox (ocChange)=\"changeCheckbox(option.name, $event)\" [ocChecked]=\"option.checked!\" class=\"cbx\" ocSize=\"tiny\" ocLabel=\"teste\" ocBorderColor=\"gray\"/>\r\n </div>\r\n }\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url && typeof(option.checked) !== 'boolean') {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li .checkbox-opt{max-width:1.3rem}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span,.oc-menu ul li .checkbox-opt{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:400;text-align:left;padding:0;margin:0;border:none;padding:.6rem;background-color:transparent;width:100%;height:100%;cursor:pointer}.oc-menu ul li .material-symbols-outlined{width:.3rem;font-size:1.1rem}.oc-menu ul li:hover{background-color:#fff}@keyframes showUp{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CdkMenuModule }, { kind: "directive", type: i2.CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "component", type: OcCheckboxComponent, selector: "oc-checkbox", inputs: ["ocChecked", "ocSize", "ocLabel", "ocName", "ocColor", "ocBorderColor", "formControl"], outputs: ["ocChange"] }] }); }
50
69
  }
51
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: OcMenuComponent, decorators: [{
52
71
  type: Component,
53
- args: [{ selector: 'oc-menu', standalone: true, imports: [CommonModule, CdkMenuModule], template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li>\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url) {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:500;text-align:left;padding:0;margin:0;border:none;padding:.6rem;background-color:transparent;width:100%;height:100%;cursor:pointer}.oc-menu ul li .material-symbols-outlined{width:.3rem;font-size:1.1rem}.oc-menu ul li:hover{background-color:#fff}@keyframes showUp{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}\n"] }]
72
+ args: [{ selector: 'oc-menu', standalone: true, imports: [CommonModule, CdkMenuModule, OcCheckboxComponent], template: "<div class=\"oc-menu\" *ngIf=\"isMenuShown\" cdkMenu #ocMenuEl>\r\n <ul>\r\n @for(option of ocMenu; track $index) {\r\n <li\r\n [ngClass]=\"{\r\n 'checkbox-option cbx': typeof(option.checked) === 'boolean'\r\n }\"\r\n >\r\n @if(typeof(option.checked) === 'boolean'){\r\n <div class=\"checkbox-opt cbx\">\r\n <oc-checkbox (ocChange)=\"changeCheckbox(option.name, $event)\" [ocChecked]=\"option.checked!\" class=\"cbx\" ocSize=\"tiny\" ocLabel=\"teste\" ocBorderColor=\"gray\"/>\r\n </div>\r\n }\r\n @if(option.icon) {\r\n <span class=\"material-symbols-outlined\">\r\n {{option.icon}}\r\n </span>\r\n } \r\n @if(option.callback){\r\n <button (click)=\"option.callback()\">{{option.name}}</button>\r\n }\r\n @if(option.url){\r\n <a [href]=\"option.url\" [target]=\"option.targetBlank ? '_blank' : ''\">{{option.name}}</a>\r\n }\r\n @if (!option.callback && !option.url && typeof(option.checked) !== 'boolean') {\r\n <span>{{option.name}}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.oc-menu{display:flex;flex-direction:column;border-radius:0 8px 8px;background-color:#f8f9ff;border:2px solid #ffffff;position:absolute;max-height:800px;box-shadow:0 4px 8.7px #00000021;animation:showUp .15s ease}.oc-menu ul{display:flex;flex-direction:column;list-style:none;margin:0;padding:0;width:100%}.oc-menu ul li{text-align:left;text-decoration:none;width:100%;max-height:30px;display:flex;align-items:center;gap:.2rem;white-space:nowrap;transition:.1s ease}.oc-menu ul li .checkbox-opt{max-width:1.3rem}.oc-menu ul li a,.oc-menu ul li button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-menu ul li a,.oc-menu ul li button,.oc-menu ul li span,.oc-menu ul li .checkbox-opt{color:#8f9596;text-decoration:none;font-size:1rem;font-weight:400;text-align:left;padding:0;margin:0;border:none;padding:.6rem;background-color:transparent;width:100%;height:100%;cursor:pointer}.oc-menu ul li .material-symbols-outlined{width:.3rem;font-size:1.1rem}.oc-menu ul li:hover{background-color:#fff}@keyframes showUp{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}\n"] }]
54
73
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { menu: [{
55
74
  type: ViewChild,
56
75
  args: ['ocMenuEl']
76
+ }], ocChange: [{
77
+ type: Output
57
78
  }], ocMenu: [{
58
79
  type: Input
59
80
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vdGltdXMtbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvb2MtbWVudS9vYy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy1tZW51L29jLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFHLFNBQVMsRUFBWSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUcsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVS9DLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFHOUIsV0FBTSxHQUFpQixFQUFFLENBQUE7UUFDbEMsZ0JBQVcsR0FBWSxLQUFLLENBQUE7SUFKYyxDQUFDO0lBTzNDLElBQUk7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUVwQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBRyxJQUFJLENBQUMsSUFBSSxFQUFDO2dCQUNYLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLFlBQVksRUFBRTtvQkFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFBO29CQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDL0Q7YUFDRjtRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNULENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFvQjtRQUNuQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ25DLE9BQU8sTUFBTSxFQUFFO1lBQ2IsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDN0MsT0FBTyxNQUEyQixDQUFDO2FBQ3BDO1lBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUssRUFBQyxFQUFFO1lBQzlDLElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFNO1lBQ3JCLElBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtnQkFDeEIsT0FBTTthQUNQO1FBRUgsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQTlDVSxlQUFlO2tHQUFmLGVBQWUsbU1DWjVCLG9zQkFzQkEseWtDRGRZLFlBQVksa0lBQUUsYUFBYTs7MkZBSTFCLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7OEVBT2YsSUFBSTtzQkFBMUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNaLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICBDb21wb25lbnQsRWxlbWVudFJlZixJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyAgQ2RrTWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgT2NNZW51VHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvb2MtbWVudSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ29jLW1lbnUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2RrTWVudU1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL29jLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29jLW1lbnUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2NNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ29jTWVudUVsJykgbWVudSE6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgb2NNZW51OiBPY01lbnVUeXBlW10gPSBbXVxyXG4gIGlzTWVudVNob3duOiBib29sZWFuID0gZmFsc2VcclxuICBidXR0b25JZD86c3RyaW5nXHJcblxyXG4gIG9wZW4oKSB7XHJcbiAgICB0aGlzLmlzTWVudVNob3duID0gIXRoaXMuaXNNZW51U2hvd25cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYodGhpcy5tZW51KXtcclxuICAgICAgICBjb25zdCBwYXJlbnRCdXR0b24gPSB0aGlzLmZpbmRQYXJlbnRCdXR0b24odGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIGlmIChwYXJlbnRCdXR0b24pIHtcclxuICAgICAgICAgIHRoaXMuYnV0dG9uSWQgPSBgb2MtJHtNYXRoLnJhbmRvbSgpfWBcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHBhcmVudEJ1dHRvbiwgJ2lkJywgdGhpcy5idXR0b25JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAxMDApXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY2xvc2VPbkNsaWNrT3V0KCkgICAgXHJcbiAgfVxyXG5cclxuICBmaW5kUGFyZW50QnV0dG9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsIHtcclxuICAgIGxldCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB3aGlsZSAocGFyZW50KSB7XHJcbiAgICAgIGlmIChwYXJlbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJykge1xyXG4gICAgICAgIHJldHVybiBwYXJlbnQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgXHJcbiAgY2xvc2VPbkNsaWNrT3V0KCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsKGU6YW55KT0+e1xyXG4gICAgICBpZighdGhpcy5tZW51KSByZXR1cm5cclxuICAgICAgaWYodGhpcy5idXR0b25JZCAmJiBlLnRhcmdldC5pZCAhPT0gdGhpcy5idXR0b25JZCkge1xyXG4gICAgICAgIHRoaXMuaXNNZW51U2hvd24gPSBmYWxzZVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm9jLW1lbnVcIiAqbmdJZj1cImlzTWVudVNob3duXCIgY2RrTWVudSAjb2NNZW51RWw+XHJcbiAgPHVsPlxyXG4gICAgQGZvcihvcHRpb24gb2Ygb2NNZW51OyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgPGxpPlxyXG4gICAgICAgIEBpZihvcHRpb24uaWNvbikge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgIHt7b3B0aW9uLmljb259fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIH0gIFxyXG4gICAgICAgIEBpZihvcHRpb24uY2FsbGJhY2spe1xyXG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3B0aW9uLmNhbGxiYWNrKClcIj57e29wdGlvbi5uYW1lfX08L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmKG9wdGlvbi51cmwpe1xyXG4gICAgICAgICAgPGEgW2hyZWZdPVwib3B0aW9uLnVybFwiIFt0YXJnZXRdPVwib3B0aW9uLnRhcmdldEJsYW5rID8gJ19ibGFuaycgOiAnJ1wiPnt7b3B0aW9uLm5hbWV9fTwvYT5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmICghb3B0aW9uLmNhbGxiYWNrICYmICFvcHRpb24udXJsKSB7XHJcbiAgICAgICAgICA8c3Bhbj57e29wdGlvbi5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgPC9saT5cclxuICB9XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2MtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vdGltdXMtbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvb2MtbWVudS9vYy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL290aW11cy1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vYy1tZW51L29jLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFHLFNBQVMsRUFBWSxZQUFZLEVBQUMsS0FBSyxFQUFVLE1BQU0sRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFHLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQVMzRSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRzdCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBQzlCLFdBQU0sR0FBaUIsRUFBRSxDQUFBO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFBO0lBTGMsQ0FBQztJQVEzQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7UUFFdkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUcsSUFBSSxDQUFDLElBQUksRUFBQztnQkFDWCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQTtvQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDVCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBb0I7UUFDbkMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNuQyxPQUFPLE1BQU0sRUFBRTtZQUNiLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQzdDLE9BQU8sTUFBMkIsQ0FBQzthQUNwQztZQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFLLEVBQUMsRUFBRTtZQUU5QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBRWpFLElBQUcsVUFBVTtnQkFBRSxPQUFNO2lCQUNoQixJQUFHLENBQUMsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTTtZQUUxQixJQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7Z0JBQ3hCLE9BQU07YUFDUDtRQUVILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBZ0I7UUFDM0MsSUFBSSxTQUFTLENBQUE7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixJQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7Z0JBRXRCLFNBQVMsR0FBRyxJQUFJLENBQUE7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdCLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBUTtRQUNiLE9BQU8sT0FBTyxHQUFHLENBQUE7SUFDbkIsQ0FBQzs4R0FyRVUsZUFBZTtrR0FBZixlQUFlLHNPQ2I1QixvcUNBK0JBLG9wQ0R0QlksWUFBWSxnT0FBRSxhQUFhLDJJQUFFLG1CQUFtQjs7MkZBSS9DLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUM7OEVBT3BDLElBQUk7c0JBQTFCLFNBQVM7dUJBQUMsVUFBVTtnQkFDWCxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICBDb21wb25lbnQsRWxlbWVudFJlZixFdmVudEVtaXR0ZXIsSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyAgQ2RrTWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgT2NNZW51VHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvb2MtbWVudSc7XHJcbmltcG9ydCB7IE9jQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9vYy1jaGVja2JveC9vYy1jaGVja2JveC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdvYy1tZW51JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENka01lbnVNb2R1bGUsIE9jQ2hlY2tib3hDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vYy1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vYy1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE9jTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxyXG5cclxuICBAVmlld0NoaWxkKCdvY01lbnVFbCcpIG1lbnUhOiBFbGVtZW50UmVmO1xyXG4gIEBPdXRwdXQoKSBvY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxyXG4gIEBJbnB1dCgpIG9jTWVudTogT2NNZW51VHlwZVtdID0gW11cclxuICBpc01lbnVTaG93bjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgYnV0dG9uSWQ/OnN0cmluZ1xyXG5cclxuICBvcGVuKCkge1xyXG4gICAgdGhpcy5pc01lbnVTaG93biA9IHRydWVcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYodGhpcy5tZW51KXtcclxuICAgICAgICBjb25zdCBwYXJlbnRCdXR0b24gPSB0aGlzLmZpbmRQYXJlbnRCdXR0b24odGhpcy5tZW51Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIGlmIChwYXJlbnRCdXR0b24pIHtcclxuICAgICAgICAgIHRoaXMuYnV0dG9uSWQgPSBgb2MtJHtNYXRoLnJhbmRvbSgpfWBcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHBhcmVudEJ1dHRvbiwgJ2lkJywgdGhpcy5idXR0b25JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAxMDApXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY2xvc2VPbkNsaWNrT3V0KClcclxuICB9XHJcblxyXG4gIGZpbmRQYXJlbnRCdXR0b24oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwge1xyXG4gICAgbGV0IHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgaWYgKHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdidXR0b24nKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcmVudCBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBcclxuICBjbG9zZU9uQ2xpY2tPdXQoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywoZTphbnkpPT57XHJcblxyXG4gICAgICBjb25zdCBpc0NoZWNrYm94ID0gQXJyYXkuZnJvbShlLnRhcmdldC5jbGFzc0xpc3QpLmluY2x1ZGVzKCdjYngnKVxyXG5cclxuICAgICAgaWYoaXNDaGVja2JveCkgcmV0dXJuXHJcbiAgICAgIGVsc2UgaWYoIXRoaXMubWVudSkgcmV0dXJuXHJcblxyXG4gICAgICBpZih0aGlzLmJ1dHRvbklkICYmIGUudGFyZ2V0LmlkICE9PSB0aGlzLmJ1dHRvbklkKSB7XHJcbiAgICAgICAgdGhpcy5pc01lbnVTaG93biA9IGZhbHNlXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ2hlY2tib3gobmFtZTogc3RyaW5nLCBjaGVja2VkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgZm91bmRJdGVtXHJcbiAgICB0aGlzLm9jTWVudS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZihpdGVtLm5hbWUgPT09IG5hbWUgJiYgdHlwZW9mIGNoZWNrZWQgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IGNoZWNrZWRcclxuXHJcbiAgICAgICAgZm91bmRJdGVtID0gaXRlbVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5vY0NoYW5nZS5lbWl0KGZvdW5kSXRlbSlcclxuICAgIHJldHVybiBmb3VuZEl0ZW1cclxuICB9XHJcblxyXG4gIHR5cGVvZihrZXk6IGFueSkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBrZXlcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm9jLW1lbnVcIiAqbmdJZj1cImlzTWVudVNob3duXCIgY2RrTWVudSAjb2NNZW51RWw+XHJcbiAgPHVsPlxyXG4gICAgQGZvcihvcHRpb24gb2Ygb2NNZW51OyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgPGxpXHJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ2NoZWNrYm94LW9wdGlvbiBjYngnOiB0eXBlb2Yob3B0aW9uLmNoZWNrZWQpID09PSAnYm9vbGVhbidcclxuICAgICAgICB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIEBpZih0eXBlb2Yob3B0aW9uLmNoZWNrZWQpID09PSAnYm9vbGVhbicpe1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LW9wdCBjYnhcIj5cclxuICAgICAgICAgICAgPG9jLWNoZWNrYm94IChvY0NoYW5nZSk9XCJjaGFuZ2VDaGVja2JveChvcHRpb24ubmFtZSwgJGV2ZW50KVwiIFtvY0NoZWNrZWRdPVwib3B0aW9uLmNoZWNrZWQhXCIgY2xhc3M9XCJjYnhcIiBvY1NpemU9XCJ0aW55XCIgb2NMYWJlbD1cInRlc3RlXCIgb2NCb3JkZXJDb2xvcj1cImdyYXlcIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmKG9wdGlvbi5pY29uKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgICAge3tvcHRpb24uaWNvbn19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfSAgXHJcbiAgICAgICAgQGlmKG9wdGlvbi5jYWxsYmFjayl7XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcHRpb24uY2FsbGJhY2soKVwiPnt7b3B0aW9uLm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYob3B0aW9uLnVybCl7XHJcbiAgICAgICAgICA8YSBbaHJlZl09XCJvcHRpb24udXJsXCIgW3RhcmdldF09XCJvcHRpb24udGFyZ2V0QmxhbmsgPyAnX2JsYW5rJyA6ICcnXCI+e3tvcHRpb24ubmFtZX19PC9hPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKCFvcHRpb24uY2FsbGJhY2sgJiYgIW9wdGlvbi51cmwgJiYgdHlwZW9mKG9wdGlvbi5jaGVja2VkKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICA8c3Bhbj57e29wdGlvbi5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgPC9saT5cclxuICB9XHJcbiAgPC91bD5cclxuPC9kaXY+XHJcbiJdfQ==