ng-prime-tools 1.0.45 → 1.0.46

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,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvbWVudS1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uU3R5bGUgfSBmcm9tICcuL2ljb24tc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFN0eWxlIH0gZnJvbSAnLi90ZXh0LXN0eWxlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbSBleHRlbmRzIFRleHRTdHlsZSB7XG4gIGljb24/OiBzdHJpbmcgfCBJY29uU3R5bGU7XG4gIGFjdGlvbjogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvbWVudS1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uU3R5bGUgfSBmcm9tICcuL2ljb24tc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFN0eWxlIH0gZnJvbSAnLi90ZXh0LXN0eWxlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbSBleHRlbmRzIFRleHRTdHlsZSB7XG4gIGljb24/OiBzdHJpbmcgfCBJY29uU3R5bGU7XG4gIGFjdGlvbj86ICgpID0+IHZvaWQ7XG4gIC8qKiDinIUgb3B0aW9uYWw6IHJlbmRlciBidXQgZG8gbm90IGFsbG93IGNsaWNrICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKiog4pyFIG9wdGlvbmFsOiByZW5kZXIgYXMgYSBoZWFkZXIgKHVzZXJuYW1lIGxpbmUpICovXG4gIGlzSGVhZGVyPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -69,6 +69,13 @@ export class PTMenuComponent {
69
69
  fontSize: item.fontSize || PTMenuComponent.DEFAULT_TEXT_FONT_SIZE,
70
70
  };
71
71
  }
72
+ onItemClick(item) {
73
+ if (item?.disabled)
74
+ return;
75
+ if (typeof item?.action === 'function') {
76
+ item.action();
77
+ }
78
+ }
72
79
  onDocumentClick(event) {
73
80
  const clickedInside = event.target.closest('.pt-menu');
74
81
  if (!clickedInside) {
@@ -76,15 +83,15 @@ export class PTMenuComponent {
76
83
  }
77
84
  }
78
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
80
87
  }
81
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, decorators: [{
82
89
  type: Component,
83
- args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"] }]
90
+ args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"] }]
84
91
  }], propDecorators: { config: [{
85
92
  type: Input
86
93
  }], onDocumentClick: [{
87
94
  type: HostListener,
88
95
  args: ['document:click', ['$event']]
89
96
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUvcHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUvcHQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVEvRCxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1XLFdBQU0sR0FBZTtZQUM1QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ25FLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCLENBQUM7UUFVRixXQUFNLEdBQUcsS0FBSyxDQUFDO0tBMkVoQjthQW5GeUIsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsc0JBQWlCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBRWhELHFCQUFnQixHQUEyQixJQUFJLEFBQS9CLENBQWdDO0lBSS9ELFVBQVU7UUFDUixJQUNFLGVBQWUsQ0FBQyxnQkFBZ0I7WUFDaEMsZUFBZSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFDekMsQ0FBQztZQUNELGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMxQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxlQUFlLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQWM7UUFDakMsK0RBQStEO1FBQy9ELE9BQU8sT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFjO1FBQ2xDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLGVBQWUsQ0FBQyxrQkFBa0I7Z0JBQzdELFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxlQUFlLENBQUMsc0JBQXNCO2FBQ3hFLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTztZQUNMLEtBQUssRUFBRSxlQUFlLENBQUMsa0JBQWtCO1lBQ3pDLFFBQVEsRUFBRSxlQUFlLENBQUMsc0JBQXNCO1NBQ2pELENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztJQUNyRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU87WUFDTCxLQUFLLEVBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLO2dCQUN2QixlQUFlLENBQUMsa0JBQWtCO1lBQ3BDLFFBQVEsRUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVE7Z0JBQzFCLGVBQWUsQ0FBQyxzQkFBc0I7U0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBYztRQUMxQixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksZUFBZSxDQUFDLGtCQUFrQjtZQUN2RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxlQUFlLENBQUMsc0JBQXNCO1NBQ2xFLENBQUM7SUFDSixDQUFDO0lBR0QsZUFBZSxDQUFDLEtBQWlCO1FBQy9CLE1BQU0sYUFBYSxHQUFJLEtBQUssQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDOytHQXhGVSxlQUFlO21HQUFmLGVBQWUsbUpDUjVCLDJzQkE0QkE7OzRGRHBCYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFNBQVM7OEJBS1YsTUFBTTtzQkFBZCxLQUFLO2dCQWtGTixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZW51Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbWVudS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUTWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWVudUNvbmZpZyA9IHtcbiAgICBpY29uOiB7IGNvZGU6ICdwaSBwaS1lbGxpcHNpcy12JywgY29sb3I6ICcjMDAwJywgZm9udFNpemU6ICcxNXB4JyB9LFxuICAgIG1lbnVEaXJlY3Rpb246ICdyaWdodCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9URVhUX0NPTE9SID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RFWFRfRk9OVF9TSVpFID0gJzE1cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzAwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9GT05UX1NJWkUgPSAnMTVweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0RFID0gJ3BpIHBpLWVsbGlwc2lzLXYnO1xuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5NZW51SW5zdGFuY2U6IFBUTWVudUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHRvZ2dsZU1lbnUoKSB7XG4gICAgaWYgKFxuICAgICAgUFRNZW51Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgJiZcbiAgICAgIFBUTWVudUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICE9PSB0aGlzXG4gICAgKSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZS5jbG9zZU1lbnUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcblxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgUFRNZW51Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPSB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgaWYgKFBUTWVudUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlID09PSB0aGlzKSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcge1xuICAgIC8vIEFzc3VtaW5nIHRoYXQgaWNvbnMgc3RhcnRpbmcgd2l0aCBcImZhXCIgYXJlIEZvbnRBd2Vzb21lIGljb25zXG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtLmljb24gPT09ICdzdHJpbmcnID8gaXRlbS5pY29uIDogaXRlbS5pY29uPy5jb2RlIHx8ICcnO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1JY29uU3R5bGVzKGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtLmljb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogaXRlbS5pY29uPy5jb2xvciB8fCBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTogaXRlbS5pY29uPy5mb250U2l6ZSB8fCBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0SWNvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmljb24/LmNvZGUgfHwgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0RFO1xuICB9XG5cbiAgZ2V0SWNvblN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMuY29uZmlnLmNvbG9yIHx8XG4gICAgICAgIHRoaXMuY29uZmlnLmljb24/LmNvbG9yIHx8XG4gICAgICAgIFBUTWVudUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICBmb250U2l6ZTpcbiAgICAgICAgdGhpcy5jb25maWcuZm9udFNpemUgfHxcbiAgICAgICAgdGhpcy5jb25maWcuaWNvbj8uZm9udFNpemUgfHxcbiAgICAgICAgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9GT05UX1NJWkUsXG4gICAgfTtcbiAgfVxuXG4gIGdldFRleHRTdHlsZXMoaXRlbTogTWVudUl0ZW0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IGl0ZW0uY29sb3IgfHwgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfVEVYVF9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBpdGVtLmZvbnRTaXplIHx8IFBUTWVudUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcucHQtbWVudScpO1xuICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwie1xuICAgIG9wZW46IGlzT3BlbixcbiAgICAnbWVudS1sZWZ0JzogY29uZmlnLm1lbnVEaXJlY3Rpb24gPT09ICdsZWZ0JyxcbiAgICAnbWVudS1yaWdodCc6IGNvbmZpZy5tZW51RGlyZWN0aW9uID09PSAncmlnaHQnXG4gIH1cIlxuICBjbGFzcz1cInB0LW1lbnVcIlxuPlxuICA8aVxuICAgIGNsYXNzPVwibWVudS1pY29uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCJcbiAgICBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoKVwiXG4gICAgW25nU3R5bGVdPVwiZ2V0SWNvblN0eWxlcygpXCJcbiAgPjwvaT5cbiAgPGRpdiBjbGFzcz1cIm1lbnUtZHJvcGRvd25cIiAqbmdJZj1cImlzT3BlblwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibWVudS1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy5tZW51SXRlbXNcIlxuICAgICAgKGNsaWNrKT1cIml0ZW0uYWN0aW9uKClcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldE1lbnVJdGVtSWNvbkNsYXNzKGl0ZW0pXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWVudUl0ZW1JY29uU3R5bGVzKGl0ZW0pXCJcbiAgICAgID48L2k+XG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJnZXRUZXh0U3R5bGVzKGl0ZW0pXCI+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUvcHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUvcHQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVEvRCxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1XLFdBQU0sR0FBZTtZQUM1QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ25FLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCLENBQUM7UUFVRixXQUFNLEdBQUcsS0FBSyxDQUFDO0tBa0ZoQjthQTFGeUIsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsc0JBQWlCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBRWhELHFCQUFnQixHQUEyQixJQUFJLEFBQS9CLENBQWdDO0lBSS9ELFVBQVU7UUFDUixJQUNFLGVBQWUsQ0FBQyxnQkFBZ0I7WUFDaEMsZUFBZSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFDekMsQ0FBQztZQUNELGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMxQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxlQUFlLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQWM7UUFDakMsK0RBQStEO1FBQy9ELE9BQU8sT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFjO1FBQ2xDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLGVBQWUsQ0FBQyxrQkFBa0I7Z0JBQzdELFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxlQUFlLENBQUMsc0JBQXNCO2FBQ3hFLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTztZQUNMLEtBQUssRUFBRSxlQUFlLENBQUMsa0JBQWtCO1lBQ3pDLFFBQVEsRUFBRSxlQUFlLENBQUMsc0JBQXNCO1NBQ2pELENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztJQUNyRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU87WUFDTCxLQUFLLEVBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLO2dCQUN2QixlQUFlLENBQUMsa0JBQWtCO1lBQ3BDLFFBQVEsRUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVE7Z0JBQzFCLGVBQWUsQ0FBQyxzQkFBc0I7U0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBYztRQUMxQixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksZUFBZSxDQUFDLGtCQUFrQjtZQUN2RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxlQUFlLENBQUMsc0JBQXNCO1NBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWM7UUFDeEIsSUFBSSxJQUFJLEVBQUUsUUFBUTtZQUFFLE9BQU87UUFDM0IsSUFBSSxPQUFPLElBQUksRUFBRSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBR0QsZUFBZSxDQUFDLEtBQWlCO1FBQy9CLE1BQU0sYUFBYSxHQUFJLEtBQUssQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDOytHQS9GVSxlQUFlO21HQUFmLGVBQWUsbUpDUjVCLGsxQkErQkE7OzRGRHZCYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFNBQVM7OEJBS1YsTUFBTTtzQkFBZCxLQUFLO2dCQXlGTixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZW51Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbWVudS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUTWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWVudUNvbmZpZyA9IHtcbiAgICBpY29uOiB7IGNvZGU6ICdwaSBwaS1lbGxpcHNpcy12JywgY29sb3I6ICcjMDAwJywgZm9udFNpemU6ICcxNXB4JyB9LFxuICAgIG1lbnVEaXJlY3Rpb246ICdyaWdodCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9URVhUX0NPTE9SID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RFWFRfRk9OVF9TSVpFID0gJzE1cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzAwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9GT05UX1NJWkUgPSAnMTVweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0RFID0gJ3BpIHBpLWVsbGlwc2lzLXYnO1xuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5NZW51SW5zdGFuY2U6IFBUTWVudUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHRvZ2dsZU1lbnUoKSB7XG4gICAgaWYgKFxuICAgICAgUFRNZW51Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgJiZcbiAgICAgIFBUTWVudUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICE9PSB0aGlzXG4gICAgKSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZS5jbG9zZU1lbnUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcblxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgUFRNZW51Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPSB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgaWYgKFBUTWVudUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlID09PSB0aGlzKSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcge1xuICAgIC8vIEFzc3VtaW5nIHRoYXQgaWNvbnMgc3RhcnRpbmcgd2l0aCBcImZhXCIgYXJlIEZvbnRBd2Vzb21lIGljb25zXG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtLmljb24gPT09ICdzdHJpbmcnID8gaXRlbS5pY29uIDogaXRlbS5pY29uPy5jb2RlIHx8ICcnO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1JY29uU3R5bGVzKGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtLmljb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogaXRlbS5pY29uPy5jb2xvciB8fCBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTogaXRlbS5pY29uPy5mb250U2l6ZSB8fCBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0SWNvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmljb24/LmNvZGUgfHwgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0RFO1xuICB9XG5cbiAgZ2V0SWNvblN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMuY29uZmlnLmNvbG9yIHx8XG4gICAgICAgIHRoaXMuY29uZmlnLmljb24/LmNvbG9yIHx8XG4gICAgICAgIFBUTWVudUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICBmb250U2l6ZTpcbiAgICAgICAgdGhpcy5jb25maWcuZm9udFNpemUgfHxcbiAgICAgICAgdGhpcy5jb25maWcuaWNvbj8uZm9udFNpemUgfHxcbiAgICAgICAgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9GT05UX1NJWkUsXG4gICAgfTtcbiAgfVxuXG4gIGdldFRleHRTdHlsZXMoaXRlbTogTWVudUl0ZW0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IGl0ZW0uY29sb3IgfHwgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfVEVYVF9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBpdGVtLmZvbnRTaXplIHx8IFBUTWVudUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cblxuICBvbkl0ZW1DbGljayhpdGVtOiBNZW51SXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtPy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICh0eXBlb2YgaXRlbT8uYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpdGVtLmFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5wdC1tZW51Jyk7XG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJ7XG4gICAgb3BlbjogaXNPcGVuLFxuICAgICdtZW51LWxlZnQnOiBjb25maWcubWVudURpcmVjdGlvbiA9PT0gJ2xlZnQnLFxuICAgICdtZW51LXJpZ2h0JzogY29uZmlnLm1lbnVEaXJlY3Rpb24gPT09ICdyaWdodCdcbiAgfVwiXG4gIGNsYXNzPVwicHQtbWVudVwiXG4+XG4gIDxpXG4gICAgY2xhc3M9XCJtZW51LWljb25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVNZW51KClcIlxuICAgIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcygpXCJcbiAgICBbbmdTdHlsZV09XCJnZXRJY29uU3R5bGVzKClcIlxuICA+PC9pPlxuICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93blwiICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtZW51LWl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29uZmlnLm1lbnVJdGVtc1wiXG4gICAgICBbY2xhc3MubWVudS1pdGVtLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzLm1lbnUtaXRlbS1oZWFkZXJdPVwiaXRlbS5pc0hlYWRlclwiXG4gICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbSlcIlxuICAgICAgICBbbmdTdHlsZV09XCJnZXRNZW51SXRlbUljb25TdHlsZXMoaXRlbSlcIlxuICAgICAgPjwvaT5cbiAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cImdldFRleHRTdHlsZXMoaXRlbSlcIj57eyBpdGVtLnRleHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -75,6 +75,15 @@ export class PTMenuFancyComponent {
75
75
  fontSize: item.fontSize || PTMenuFancyComponent.DEFAULT_TEXT_FONT_SIZE,
76
76
  };
77
77
  }
78
+ isItemDisabled(item) {
79
+ return !!item?.disabled || !!item?.isHeader || !item?.action;
80
+ }
81
+ onItemClick(item) {
82
+ if (this.isItemDisabled(item))
83
+ return;
84
+ item.action?.();
85
+ this.closeMenu(); // optional UX: close after click
86
+ }
78
87
  onDocumentClick(event) {
79
88
  const clickedInside = event.target.closest('.pt-menu-fancy');
80
89
  if (!clickedInside) {
@@ -82,15 +91,15 @@ export class PTMenuFancyComponent {
82
91
  }
83
92
  }
84
93
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:100%;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:3;border-radius:5px;overflow:hidden;opacity:0;transform:translateY(-20px);transition:transform .3s ease-out,opacity .3s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0)}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu-fancy .menu-item i{margin-right:10px}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.PTCardComponent, selector: "pt-card", inputs: ["config"] }] }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.PTCardComponent, selector: "pt-card", inputs: ["config"] }] }); }
86
95
  }
87
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, decorators: [{
88
97
  type: Component,
89
- args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:100%;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:3;border-radius:5px;overflow:hidden;opacity:0;transform:translateY(-20px);transition:transform .3s ease-out,opacity .3s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0)}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu-fancy .menu-item i{margin-right:10px}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}\n"] }]
98
+ args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"] }]
90
99
  }], propDecorators: { config: [{
91
100
  type: Input
92
101
  }], onDocumentClick: [{
93
102
  type: HostListener,
94
103
  args: ['document:click', ['$event']]
95
104
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWVudS1mYW5jeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUtZmFuY3kvcHQtbWVudS1mYW5jeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUtZmFuY3kvcHQtbWVudS1mYW5jeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRL0QsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFdBQU0sR0FBZTtZQUM1QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ25FLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCLENBQUM7UUFFRixtQkFBYyxHQUFlO1lBQzNCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFLEdBQUc7WUFDWCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFVRixXQUFNLEdBQUcsS0FBSyxDQUFDO0tBOEVoQjthQXRGeUIsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsc0JBQWlCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBRWhELHFCQUFnQixHQUFnQyxJQUFJLEFBQXBDLENBQXFDO0lBSXBFLFVBQVU7UUFDUixJQUNFLG9CQUFvQixDQUFDLGdCQUFnQjtZQUNyQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsS0FBSyxJ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bnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudUNvbmZpZywgQ2FyZENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LW1lbnUtZmFuY3knLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbWVudS1mYW5jeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LW1lbnUtZmFuY3kuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVE1lbnVGYW5jeUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWVudUNvbmZpZyA9IHtcbiAgICBpY29uOiB7IGNvZGU6ICdwaSBwaS1lbGxpcHNpcy12JywgY29sb3I6ICcjMDAwJywgZm9udFNpemU6ICcxNXB4JyB9LFxuICAgIG1lbnVEaXJlY3Rpb246ICdyaWdodCcsXG4gIH07XG5cbiAgY2FyZE1lbnVDb25maWc6IENhcmRDb25maWcgPSB7XG4gICAgbm9Cb3JkZXI6IHRydWUsXG4gICAgbWFyZ2luOiAnMCcsXG4gICAgcGFkZGluZzogJzVweCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9URVhUX0NPTE9SID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RFWFRfRk9OVF9TSVpFID0gJzE1cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzAwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9GT05UX1NJWkUgPSAnMTVweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0RFID0gJ3BpIHBpLWVsbGlwc2lzLXYnO1xuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5NZW51SW5zdGFuY2U6IFBUTWVudUZhbmN5Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAoXG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICYmXG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICE9PSB0aGlzXG4gICAgKSB7XG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlLmNsb3NlTWVudSgpO1xuICAgIH1cblxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgUFRNZW51RmFuY3lDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgaWYgKFBUTWVudUZhbmN5Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPT09IHRoaXMpIHtcbiAgICAgIFBUTWVudUZhbmN5Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldE1lbnVJdGVtSWNvbkNsYXNzKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nIHtcbiAgICAvLyBBc3N1bWluZyB0aGF0IGljb25zIHN0YXJ0aW5nIHdpdGggXCJmYVwiIGFyZSBGb250QXdlc29tZSBpY29uc1xuICAgIHJldHVybiB0eXBlb2YgaXRlbS5pY29uID09PSAnc3RyaW5nJyA/IGl0ZW0uaWNvbiA6IGl0ZW0uaWNvbj8uY29kZSB8fCAnJztcbiAgfVxuXG4gIGdldE1lbnVJdGVtSWNvblN0eWxlcyhpdGVtOiBNZW51SXRlbSkge1xuICAgIGlmICh0eXBlb2YgaXRlbS5pY29uICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IGl0ZW0uaWNvbj8uY29sb3IgfHwgUFRNZW51RmFuY3lDb21wb25lbnQuREVGQVVMVF9JQ09OX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTpcbiAgICAgICAgICBpdGVtLmljb24/LmZvbnRTaXplIHx8IFBUTWVudUZhbmN5Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9GT05UX1NJWkUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IFBUTWVudUZhbmN5Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cblxuICBnZXRJY29uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuaWNvbj8uY29kZSB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09ERTtcbiAgfVxuXG4gIGdldEljb25TdHlsZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOlxuICAgICAgICB0aGlzLmNvbmZpZy5jb2xvciB8fFxuICAgICAgICB0aGlzLmNvbmZpZy5pY29uPy5jb2xvciB8fFxuICAgICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICBmb250U2l6ZTpcbiAgICAgICAgdGhpcy5jb25maWcuZm9udFNpemUgfHxcbiAgICAgICAgdGhpcy5jb25maWcuaWNvbj8uZm9udFNpemUgfHxcbiAgICAgICAgUFRNZW51RmFuY3lDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VGV4dFN0eWxlcyhpdGVtOiBNZW51SXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogaXRlbS5jb2xvciB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfQ09MT1IsXG4gICAgICBmb250U2l6ZTogaXRlbS5mb250U2l6ZSB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFxuICAgICAgJy5wdC1tZW51LWZhbmN5J1xuICAgICk7XG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJ7XG4gICAgb3BlbjogaXNPcGVuLFxuICAgICdtZW51LWxlZnQnOiBjb25maWcubWVudURpcmVjdGlvbiA9PT0gJ2xlZnQnLFxuICAgICdtZW51LXJpZ2h0JzogY29uZmlnLm1lbnVEaXJlY3Rpb24gPT09ICdyaWdodCdcbiAgfVwiXG4gIGNsYXNzPVwicHQtbWVudS1mYW5jeVwiXG4+XG4gIDxpXG4gICAgY2xhc3M9XCJtZW51LWljb25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVNZW51KClcIlxuICAgIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcygpXCJcbiAgICBbbmdTdHlsZV09XCJnZXRJY29uU3R5bGVzKClcIlxuICA+PC9pPlxuICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93blwiICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgPHB0LWNhcmQgW2NvbmZpZ109XCJjYXJkTWVudUNvbmZpZ1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy5tZW51SXRlbXNcIlxuICAgICAgICAoY2xpY2spPVwiaXRlbS5hY3Rpb24oKVwiXG4gICAgICA+XG4gICAgICAgIDxpXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbSlcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVJdGVtSWNvblN0eWxlcyhpdGVtKVwiXG4gICAgICAgID48L2k+XG4gICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cImdldFRleHRTdHlsZXMoaXRlbSlcIj57eyBpdGVtLnRleHQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L3B0LWNhcmQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWVudS1mYW5jeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUtZmFuY3kvcHQtbWVudS1mYW5jeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUtZmFuY3kvcHQtbWVudS1mYW5jeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRL0QsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFdBQU0sR0FBZTtZQUM1QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ25FLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCLENBQUM7UUFFRixtQkFBYyxHQUFlO1lBQzNCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFLEdBQUc7WUFDWCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFVRixXQUFNLEdBQUcsS0FBSyxDQUFDO0tBdUZoQjthQS9GeUIsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsc0JBQWlCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBRWhELHFCQUFnQixHQUFnQyxJQUFJLEFBQXBDLENBQXFDO0lBSXBFLFVBQVU7UUFDUixJQUNFLG9CQUFvQixDQUFDLGdCQUFnQjtZQUNyQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsS0FBSyxJ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LENBQUMsT0FBTyxDQUN6RCxnQkFBZ0IsQ0FDakIsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7K0dBMUdVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHlKQ1JqQywyOEJBbUNBOzs0RkQzQmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7OEJBS2hCLE1BQU07c0JBQWQsS0FBSztnQkFrR04sZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudUNvbmZpZywgQ2FyZENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LW1lbnUtZmFuY3knLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbWVudS1mYW5jeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LW1lbnUtZmFuY3kuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVE1lbnVGYW5jeUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWVudUNvbmZpZyA9IHtcbiAgICBpY29uOiB7IGNvZGU6ICdwaSBwaS1lbGxpcHNpcy12JywgY29sb3I6ICcjMDAwJywgZm9udFNpemU6ICcxNXB4JyB9LFxuICAgIG1lbnVEaXJlY3Rpb246ICdyaWdodCcsXG4gIH07XG5cbiAgY2FyZE1lbnVDb25maWc6IENhcmRDb25maWcgPSB7XG4gICAgbm9Cb3JkZXI6IHRydWUsXG4gICAgbWFyZ2luOiAnMCcsXG4gICAgcGFkZGluZzogJzVweCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9URVhUX0NPTE9SID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RFWFRfRk9OVF9TSVpFID0gJzE1cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzAwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9GT05UX1NJWkUgPSAnMTVweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0RFID0gJ3BpIHBpLWVsbGlwc2lzLXYnO1xuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5NZW51SW5zdGFuY2U6IFBUTWVudUZhbmN5Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAoXG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICYmXG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICE9PSB0aGlzXG4gICAgKSB7XG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlLmNsb3NlTWVudSgpO1xuICAgIH1cblxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgUFRNZW51RmFuY3lDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgaWYgKFBUTWVudUZhbmN5Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPT09IHRoaXMpIHtcbiAgICAgIFBUTWVudUZhbmN5Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldE1lbnVJdGVtSWNvbkNsYXNzKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nIHtcbiAgICAvLyBBc3N1bWluZyB0aGF0IGljb25zIHN0YXJ0aW5nIHdpdGggXCJmYVwiIGFyZSBGb250QXdlc29tZSBpY29uc1xuICAgIHJldHVybiB0eXBlb2YgaXRlbS5pY29uID09PSAnc3RyaW5nJyA/IGl0ZW0uaWNvbiA6IGl0ZW0uaWNvbj8uY29kZSB8fCAnJztcbiAgfVxuXG4gIGdldE1lbnVJdGVtSWNvblN0eWxlcyhpdGVtOiBNZW51SXRlbSkge1xuICAgIGlmICh0eXBlb2YgaXRlbS5pY29uICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IGl0ZW0uaWNvbj8uY29sb3IgfHwgUFRNZW51RmFuY3lDb21wb25lbnQuREVGQVVMVF9JQ09OX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTpcbiAgICAgICAgICBpdGVtLmljb24/LmZvbnRTaXplIHx8IFBUTWVudUZhbmN5Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9GT05UX1NJWkUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IFBUTWVudUZhbmN5Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cblxuICBnZXRJY29uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuaWNvbj8uY29kZSB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09ERTtcbiAgfVxuXG4gIGdldEljb25TdHlsZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOlxuICAgICAgICB0aGlzLmNvbmZpZy5jb2xvciB8fFxuICAgICAgICB0aGlzLmNvbmZpZy5pY29uPy5jb2xvciB8fFxuICAgICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICBmb250U2l6ZTpcbiAgICAgICAgdGhpcy5jb25maWcuZm9udFNpemUgfHxcbiAgICAgICAgdGhpcy5jb25maWcuaWNvbj8uZm9udFNpemUgfHxcbiAgICAgICAgUFRNZW51RmFuY3lDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VGV4dFN0eWxlcyhpdGVtOiBNZW51SXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogaXRlbS5jb2xvciB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfQ09MT1IsXG4gICAgICBmb250U2l6ZTogaXRlbS5mb250U2l6ZSB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cbiAgaXNJdGVtRGlzYWJsZWQoaXRlbTogTWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFpdGVtPy5kaXNhYmxlZCB8fCAhIWl0ZW0/LmlzSGVhZGVyIHx8ICFpdGVtPy5hY3Rpb247XG4gIH1cblxuICBvbkl0ZW1DbGljayhpdGVtOiBNZW51SXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSXRlbURpc2FibGVkKGl0ZW0pKSByZXR1cm47XG4gICAgaXRlbS5hY3Rpb24/LigpO1xuICAgIHRoaXMuY2xvc2VNZW51KCk7IC8vIG9wdGlvbmFsIFVYOiBjbG9zZSBhZnRlciBjbGlja1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcbiAgICAgICcucHQtbWVudS1mYW5jeSdcbiAgICApO1xuICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwie1xuICAgIG9wZW46IGlzT3BlbixcbiAgICAnbWVudS1sZWZ0JzogY29uZmlnLm1lbnVEaXJlY3Rpb24gPT09ICdsZWZ0JyxcbiAgICAnbWVudS1yaWdodCc6IGNvbmZpZy5tZW51RGlyZWN0aW9uID09PSAncmlnaHQnXG4gIH1cIlxuICBjbGFzcz1cInB0LW1lbnUtZmFuY3lcIlxuPlxuICA8aVxuICAgIGNsYXNzPVwibWVudS1pY29uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCJcbiAgICBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoKVwiXG4gICAgW25nU3R5bGVdPVwiZ2V0SWNvblN0eWxlcygpXCJcbiAgPjwvaT5cblxuICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93blwiICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgPHB0LWNhcmQgW2NvbmZpZ109XCJjYXJkTWVudUNvbmZpZ1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy5tZW51SXRlbXNcIlxuICAgICAgICBbY2xhc3MubWVudS1pdGVtLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgW2NsYXNzLm1lbnUtaXRlbS1oZWFkZXJdPVwiaXRlbS5pc0hlYWRlclwiXG4gICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDxpXG4gICAgICAgICAgKm5nSWY9XCJnZXRNZW51SXRlbUljb25DbGFzcyhpdGVtKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbSlcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVJdGVtSWNvblN0eWxlcyhpdGVtKVwiXG4gICAgICAgID48L2k+XG5cbiAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwiZ2V0VGV4dFN0eWxlcyhpdGVtKVwiPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcHQtY2FyZD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -2942,6 +2942,13 @@ class PTMenuComponent {
2942
2942
  fontSize: item.fontSize || PTMenuComponent.DEFAULT_TEXT_FONT_SIZE,
2943
2943
  };
2944
2944
  }
2945
+ onItemClick(item) {
2946
+ if (item?.disabled)
2947
+ return;
2948
+ if (typeof item?.action === 'function') {
2949
+ item.action();
2950
+ }
2951
+ }
2945
2952
  onDocumentClick(event) {
2946
2953
  const clickedInside = event.target.closest('.pt-menu');
2947
2954
  if (!clickedInside) {
@@ -2949,11 +2956,11 @@ class PTMenuComponent {
2949
2956
  }
2950
2957
  }
2951
2958
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2952
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2959
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2953
2960
  }
2954
2961
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, decorators: [{
2955
2962
  type: Component,
2956
- args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"] }]
2963
+ args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"] }]
2957
2964
  }], propDecorators: { config: [{
2958
2965
  type: Input
2959
2966
  }], onDocumentClick: [{
@@ -3264,6 +3271,15 @@ class PTMenuFancyComponent {
3264
3271
  fontSize: item.fontSize || PTMenuFancyComponent.DEFAULT_TEXT_FONT_SIZE,
3265
3272
  };
3266
3273
  }
3274
+ isItemDisabled(item) {
3275
+ return !!item?.disabled || !!item?.isHeader || !item?.action;
3276
+ }
3277
+ onItemClick(item) {
3278
+ if (this.isItemDisabled(item))
3279
+ return;
3280
+ item.action?.();
3281
+ this.closeMenu(); // optional UX: close after click
3282
+ }
3267
3283
  onDocumentClick(event) {
3268
3284
  const clickedInside = event.target.closest('.pt-menu-fancy');
3269
3285
  if (!clickedInside) {
@@ -3271,11 +3287,11 @@ class PTMenuFancyComponent {
3271
3287
  }
3272
3288
  }
3273
3289
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3274
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:100%;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:3;border-radius:5px;overflow:hidden;opacity:0;transform:translateY(-20px);transition:transform .3s ease-out,opacity .3s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0)}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu-fancy .menu-item i{margin-right:10px}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PTCardComponent, selector: "pt-card", inputs: ["config"] }] }); }
3290
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PTCardComponent, selector: "pt-card", inputs: ["config"] }] }); }
3275
3291
  }
3276
3292
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, decorators: [{
3277
3293
  type: Component,
3278
- args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:100%;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:3;border-radius:5px;overflow:hidden;opacity:0;transform:translateY(-20px);transition:transform .3s ease-out,opacity .3s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0)}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu-fancy .menu-item i{margin-right:10px}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}\n"] }]
3294
+ args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"] }]
3279
3295
  }], propDecorators: { config: [{
3280
3296
  type: Input
3281
3297
  }], onDocumentClick: [{