@acorex/components 18.10.16 → 18.11.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -76,4 +76,4 @@ export class AXSelectionValueChangedEvent extends AXValueChangedEvent {
76
76
  */
77
77
  export class AXRangeChangedEvent extends AXEvent {
78
78
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbW1vbi9zcmMvbGliL2NsYXNzZXMvZXZlbnRzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBVUUsc0JBQWlCLEdBQWEsS0FBSyxDQUFDO0lBQ3RDLENBQUM7Q0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFxQyxTQUFRLE9BQU87Q0FFaEU7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQTZCLFNBQVEsT0FBTztDQUl4RDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxvQkFBOEIsU0FBUSxPQUFPO0NBSXpEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUF1QjtJQUF6RDs7UUFDRTs7V0FFRztRQUNILFNBQUksR0FBUyxJQUFJLENBQUM7UUFFVCxnQkFBVyxHQUFTLElBQUksQ0FBQztJQUNwQyxDQUFDO0NBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsWUFBWTtDQUVuRDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxZQUFZO0NBRzFEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUF1QjtDQUFHO0FBRTVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBZ0M7SUFBbEY7O1FBQ1csVUFBSyxHQUFTLElBQUksQ0FBQztRQUNuQixhQUFRLEdBQVMsSUFBSSxDQUFDO1FBQy9CLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxtQkFBdUIsU0FBUSxPQUFPO0NBU2xEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29udGFpbnMgbmF0aXZlIGV2ZW50XG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEV2ZW50IHtcbiAgLyoqXG4gICAqICBUaGUgc2VuZGVyIGNvbXBvbmVudFxuICAgKi9cbiAgY29tcG9uZW50OiBhbnk7XG4gIC8qKlxuICAgKiAgVGhlIHJvb3QgbmF0aXZlIGVsZW1lbnRcbiAgICovXG4gIGh0bWxFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG5cbiAgaXNVc2VySW50ZXJhY3Rpb24/OiBib29sZWFuID0gZmFsc2U7XG59XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhIdG1sRXZlbnQ8RSBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IGV4dGVuZHMgQVhFdmVudCB7XG4gIG5hdGl2ZUV2ZW50PzogRTtcbn1cblxuLyoqXG4gKiAgQ29udGFpbnMgbmF0aXZlIGV2ZW50XG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFZhbHVlQ2hhbmdlZEV2ZW50PFQgPSBhbnk+IGV4dGVuZHMgQVhFdmVudCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogVDtcbiAgb2xkVmFsdWU/OiBUO1xufVxuXG4vKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYT3B0aW9uQ2hhbmdlZEV2ZW50PFQgPSBhbnk+IGV4dGVuZHMgQVhFdmVudCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIG5ld1ZhbHVlPzogVDtcbiAgb2xkVmFsdWU/OiBUO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWENsaWNrRXZlbnQgZXh0ZW5kcyBBWEh0bWxFdmVudDxNb3VzZUV2ZW50PiB7XG4gIC8qKlxuICAgKiAgdXNlcyBmb3IgZXh0cmEgZGF0YVxuICAgKi9cbiAgZGF0YT86IGFueSA9IG51bGw7XG5cbiAgb3ZlcnJpZGUgbmF0aXZlRXZlbnQ/OiBhbnkgPSBudWxsO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEJ1dHRvbkNsaWNrRXZlbnQgZXh0ZW5kcyBBWENsaWNrRXZlbnQge1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGljayB0aGUgZWxlbWVudC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYSXRlbUNsaWNrRXZlbnQ8VCA9IGFueT4gZXh0ZW5kcyBBWENsaWNrRXZlbnQge1xuICBuYW1lPzogc3RyaW5nO1xuICBpdGVtOiBUO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIGNvbXBvbmVudCBnZXRzIGZvY3VzZWQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEZvY3VzRXZlbnQgZXh0ZW5kcyBBWEh0bWxFdmVudDxGb2N1c0V2ZW50PiB7fVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgYW4gaXRlbSBvciBtdWx0aXBsZSBpdGVtcyBzZWxlY3RlZCBieSB0aGUgdXNlciBvciB2YWx1ZS5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYU2VsZWN0aW9uVmFsdWVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueSB8IGFueVtdPiB7XG4gIG92ZXJyaWRlIHZhbHVlPzogYW55ID0gbnVsbDtcbiAgb3ZlcnJpZGUgb2xkVmFsdWU/OiBhbnkgPSBudWxsO1xuICBzZWxlY3RlZEtleXM/OiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZEl0ZW1zPzogYW55W10gPSBbXTtcbn1cblxuLyoqXG4gKiAgQ29udGFpbnMgcmFuZ2Ugc3RhcnQgJiBlbmQgdmFsdWVzXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFJhbmdlQ2hhbmdlZEV2ZW50PFQ+IGV4dGVuZHMgQVhFdmVudCB7XG4gIC8qKlxuICAgKiAgVGhlIHJhbmdlIHN0YXJ0IHZhbHVlXG4gICAqL1xuICBzdGFydD86IFQ7XG4gIC8qKlxuICAgKiAgVGhlIHJhbmdlIGVuZCB2YWx1ZVxuICAgKi9cbiAgZW5kPzogVDtcbn1cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbW1vbi9zcmMvbGliL2NsYXNzZXMvZXZlbnRzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBVUUsc0JBQWlCLEdBQWEsS0FBSyxDQUFDO0lBQ3RDLENBQUM7Q0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFxQyxTQUFRLE9BQU87Q0FFaEU7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQTZCLFNBQVEsT0FBTztDQUl4RDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxvQkFBOEIsU0FBUSxPQUFPO0NBSXpEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUF1QjtJQUF6RDs7UUFDRTs7V0FFRztRQUNILFNBQUksR0FBUyxJQUFJLENBQUM7UUFFVCxnQkFBVyxHQUFTLElBQUksQ0FBQztJQUNwQyxDQUFDO0NBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsWUFBWTtDQUVuRDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxZQUFZO0NBRzFEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUF1QjtDQUFJO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBZ0M7SUFBbEY7O1FBQ1csVUFBSyxHQUFTLElBQUksQ0FBQztRQUNuQixhQUFRLEdBQVMsSUFBSSxDQUFDO1FBQy9CLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxtQkFBdUIsU0FBUSxPQUFPO0NBU2xEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29udGFpbnMgbmF0aXZlIGV2ZW50XG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEV2ZW50IHtcbiAgLyoqXG4gICAqICBUaGUgc2VuZGVyIGNvbXBvbmVudFxuICAgKi9cbiAgY29tcG9uZW50OiBhbnk7XG4gIC8qKlxuICAgKiAgVGhlIHJvb3QgbmF0aXZlIGVsZW1lbnRcbiAgICovXG4gIGh0bWxFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG5cbiAgaXNVc2VySW50ZXJhY3Rpb24/OiBib29sZWFuID0gZmFsc2U7XG59XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhIdG1sRXZlbnQ8RSBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IGV4dGVuZHMgQVhFdmVudCB7XG4gIG5hdGl2ZUV2ZW50PzogRTtcbn1cblxuLyoqXG4gKiAgQ29udGFpbnMgbmF0aXZlIGV2ZW50XG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFZhbHVlQ2hhbmdlZEV2ZW50PFQgPSBhbnk+IGV4dGVuZHMgQVhFdmVudCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogVDtcbiAgb2xkVmFsdWU/OiBUO1xufVxuXG4vKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYT3B0aW9uQ2hhbmdlZEV2ZW50PFQgPSBhbnk+IGV4dGVuZHMgQVhFdmVudCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIG5ld1ZhbHVlPzogVDtcbiAgb2xkVmFsdWU/OiBUO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWENsaWNrRXZlbnQgZXh0ZW5kcyBBWEh0bWxFdmVudDxNb3VzZUV2ZW50PiB7XG4gIC8qKlxuICAgKiAgdXNlcyBmb3IgZXh0cmEgZGF0YVxuICAgKi9cbiAgZGF0YT86IGFueSA9IG51bGw7XG5cbiAgb3ZlcnJpZGUgbmF0aXZlRXZlbnQ/OiBhbnkgPSBudWxsO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEJ1dHRvbkNsaWNrRXZlbnQgZXh0ZW5kcyBBWENsaWNrRXZlbnQge1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGljayB0aGUgZWxlbWVudC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYSXRlbUNsaWNrRXZlbnQ8VCA9IGFueT4gZXh0ZW5kcyBBWENsaWNrRXZlbnQge1xuICBuYW1lPzogc3RyaW5nO1xuICBpdGVtOiBUO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIGNvbXBvbmVudCBnZXRzIGZvY3VzZWQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEZvY3VzRXZlbnQgZXh0ZW5kcyBBWEh0bWxFdmVudDxGb2N1c0V2ZW50PiB7IH1cblxuLyoqXG4gKiAgRmlyZXMgZWFjaCB0aW1lIGFuIGl0ZW0gb3IgbXVsdGlwbGUgaXRlbXMgc2VsZWN0ZWQgYnkgdGhlIHVzZXIgb3IgdmFsdWUuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFNlbGVjdGlvblZhbHVlQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQVhWYWx1ZUNoYW5nZWRFdmVudDxhbnkgfCBhbnlbXT4ge1xuICBvdmVycmlkZSB2YWx1ZT86IGFueSA9IG51bGw7XG4gIG92ZXJyaWRlIG9sZFZhbHVlPzogYW55ID0gbnVsbDtcbiAgc2VsZWN0ZWRLZXlzPzogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRJdGVtcz86IGFueVtdID0gW107XG59XG5cbi8qKlxuICogIENvbnRhaW5zIHJhbmdlIHN0YXJ0ICYgZW5kIHZhbHVlc1xuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhSYW5nZUNoYW5nZWRFdmVudDxUPiBleHRlbmRzIEFYRXZlbnQge1xuICAvKipcbiAgICogIFRoZSByYW5nZSBzdGFydCB2YWx1ZVxuICAgKi9cbiAgc3RhcnQ/OiBUO1xuICAvKipcbiAgICogIFRoZSByYW5nZSBlbmQgdmFsdWVcbiAgICovXG4gIGVuZD86IFQ7XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- export * from './lib/class/popover.class';
2
- export * from './lib/class/root-menu.class';
3
- export * from './lib/menu-item/menu-item.component';
1
+ export * from './lib/menu.types';
2
+ export * from './lib/menu-item.component';
3
+ export * from './lib/context-menu.component';
4
4
  export * from './lib/menu.component';
5
5
  export * from './lib/menu.module';
6
6
  export * from './lib/menu.service';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbWVudS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzcy9wb3BvdmVyLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzL3Jvb3QtbWVudS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51LnNlcnZpY2UnO1xuIl19
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbWVudS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9tZW51LnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGV4dC1tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51LnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,181 @@
1
+ import { MXBaseComponent } from '@acorex/components/common';
2
+ import { afterNextRender, ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, input, output, Renderer2, signal, ViewEncapsulation, } from '@angular/core';
3
+ import { AXRootMenu } from './menu.types';
4
+ import { AXMenuService } from './menu.service';
5
+ import { AXHtmlUtil } from '@acorex/core/utils';
6
+ import { cloneDeep } from 'lodash-es';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@acorex/components/decorators";
10
+ import * as i3 from "./menu-item.component";
11
+ /**
12
+ * Represents a menu component that displays context menu.
13
+ * @category Components
14
+ */
15
+ export class AXContextMenuComponent extends MXBaseComponent {
16
+ // Constructor (Dependency Injection)
17
+ /** @ignore */
18
+ constructor(renderer) {
19
+ super();
20
+ this.renderer = renderer;
21
+ // Inputs and Outputs
22
+ this.orientation = input('vertical');
23
+ this.openOn = input('hover');
24
+ this.closeOn = input('click');
25
+ this.orginalItems = input([], { alias: "items" });
26
+ this.target = input();
27
+ this.onItemClick = output();
28
+ this.onOpening = output();
29
+ // Injected Services
30
+ this.service = inject(AXMenuService);
31
+ // Private Properties
32
+ this.scrollableParents = [];
33
+ this.items = signal([]);
34
+ afterNextRender(() => {
35
+ if (this.target()) {
36
+ this.target().addEventListener('contextmenu', this.handleContextMenu.bind(this));
37
+ }
38
+ this.bindScrollEvents();
39
+ });
40
+ this.service.closeAllContextMenu$.subscribe(() => {
41
+ this.service.closeAll$.next();
42
+ this.close();
43
+ });
44
+ this.service.openContextMenu$.subscribe((e) => {
45
+ if (e.sender == this) {
46
+ this.internalShowAt(e.point);
47
+ }
48
+ });
49
+ }
50
+ // Lifecycle Hooks
51
+ ngOnDestroy() {
52
+ this.removeScrollEvents();
53
+ }
54
+ // Public Methods
55
+ showAt(point) {
56
+ const sender = this;
57
+ this.service.closeAllContextMenu$.next({ sender });
58
+ this.service.openContextMenu$.next({ sender, point });
59
+ }
60
+ close() {
61
+ const elementRef = this.getHostElement();
62
+ elementRef.classList.remove('ax-state-open');
63
+ }
64
+ // Private Methods (Internal Logic)
65
+ /** @ignore */
66
+ handleContextMenu(e) {
67
+ e.preventDefault();
68
+ e.stopPropagation();
69
+ //
70
+ const event = {
71
+ component: this,
72
+ htmlElement: this.getHostElement(),
73
+ nativeEvent: e,
74
+ canceled: false,
75
+ items: cloneDeep(this.orginalItems()),
76
+ };
77
+ this.onOpening.emit(event);
78
+ this.items.set(event.items);
79
+ //
80
+ if (!event.canceled) {
81
+ this.showAt({ x: e.clientX, y: e.clientY });
82
+ }
83
+ }
84
+ internalShowAt(point) {
85
+ const elementRef = this.getHostElement();
86
+ elementRef.classList.add('ax-state-open');
87
+ const itemRect = elementRef.getBoundingClientRect();
88
+ const windowWidth = window.innerWidth;
89
+ const windowHeight = window.innerHeight;
90
+ // Detect RTL (Right-To-Left) mode
91
+ const isRtl = AXHtmlUtil.isRtl(this.getHostElement());
92
+ let left;
93
+ if (isRtl) {
94
+ left = point.x - itemRect.width;
95
+ if (left < 0) {
96
+ left = point.x;
97
+ }
98
+ }
99
+ else {
100
+ left = point.x;
101
+ if (left + itemRect.width > windowWidth) {
102
+ left = point.x - itemRect.width;
103
+ }
104
+ }
105
+ const bottom = point.y + itemRect.height;
106
+ let top;
107
+ if (bottom > windowHeight) {
108
+ top = point.y - itemRect.height;
109
+ if (top < 0) {
110
+ top = 0;
111
+ }
112
+ }
113
+ else {
114
+ top = point.y;
115
+ }
116
+ this.renderer.setStyle(elementRef, 'left', `${left}px`);
117
+ this.renderer.setStyle(elementRef, 'top', `${top}px`);
118
+ this.renderer.setStyle(elementRef, 'position', 'fixed');
119
+ }
120
+ bindScrollEvents() {
121
+ this.scrollableParents = AXHtmlUtil.getScrollableParents(this.getHostElement());
122
+ this.scrollableParents.forEach((parent) => {
123
+ parent.addEventListener('scroll', this.onContainerScroll.bind(this));
124
+ });
125
+ }
126
+ removeScrollEvents() {
127
+ this.scrollableParents.forEach((parent) => {
128
+ parent.removeEventListener('scroll', this.onContainerScroll.bind(this));
129
+ });
130
+ }
131
+ onContainerScroll() {
132
+ this.service.closeAllContextMenu$.next({ sender: this });
133
+ }
134
+ // Host Listeners (UI Interaction Handling)
135
+ /** @ignore */
136
+ onClickOutside(event) {
137
+ const hostElement = this.getHostElement();
138
+ if (!hostElement.contains(event.target)) {
139
+ const sender = this;
140
+ this.service.closeAllContextMenu$.next({ sender });
141
+ }
142
+ }
143
+ onContextMenuOutside(event) {
144
+ if (!this.target().contains(event.target)) {
145
+ const sender = this;
146
+ this.service.closeAllContextMenu$.next({ sender });
147
+ }
148
+ }
149
+ /** @ignore */
150
+ get __hostClass() {
151
+ return ['ax-menu-container', `ax-orientation-${this.orientation()}`];
152
+ }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXContextMenuComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXContextMenuComponent, selector: "ax-context-menu", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, openOn: { classPropertyName: "openOn", publicName: "openOn", isSignal: true, isRequired: false, transformFunction: null }, closeOn: { classPropertyName: "closeOn", publicName: "closeOn", isSignal: true, isRequired: false, transformFunction: null }, orginalItems: { classPropertyName: "orginalItems", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onItemClick: "onItemClick", onOpening: "onOpening" }, host: { listeners: { "document:click": "onClickOutside($event)", "document:contextmenu": "onContextMenuOutside($event)" }, properties: { "class": "this.__hostClass" } }, providers: [
155
+ AXMenuService,
156
+ {
157
+ provide: AXRootMenu,
158
+ useExisting: AXContextMenuComponent
159
+ }
160
+ ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-menu-item,ax-title,ng-container\"></ng-content>\n\n<ng-container *ngFor=\"let node of items()\" [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\">\n</ng-container>\n<ng-template #Recursion let-item>\n @if(item.group?.title)\n {\n <ax-title>{{item.group?.title}}</ax-title>\n }\n <ax-menu-item [name]=\"item.name\" [data]=\"item.data\" [disabled]=\"item.disabled\" [color]=\"item.color\">\n <ax-prefix>\n @if(item.icon)\n {\n <ax-icon [icon]=\"item.icon\">\n </ax-icon>\n }\n </ax-prefix>\n @if(item.text)\n {\n <ax-text>{{ item.text }}</ax-text>\n }\n @if(item.suffix)\n {\n <ax-suffix>\n <ax-text>{{ item.suffix.text }}</ax-text>\n </ax-suffix>\n }\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n </ax-menu-item>\n @if(item.break)\n {\n <ax-divider></ax-divider>\n }\n</ng-template>", styles: ["ax-context-menu,ax-menu{width:100%;color:inherit;display:flex;width:max-content}ax-context-menu.ax-orientation-horizontal,ax-menu.ax-orientation-horizontal{flex-direction:row!important}ax-context-menu.ax-orientation-vertical,ax-menu.ax-orientation-vertical{flex-direction:column!important}ax-context-menu ax-title,ax-menu ax-title{display:block;padding-inline:1rem;padding-block:.25rem;font-size:.75rem;line-height:1rem;font-weight:bolder;text-transform:uppercase;opacity:.5}ax-context-menu ax-divider,ax-menu ax-divider{margin-top:.25rem;margin-bottom:.25rem;height:.5px;width:100%;background-color:rgba(var(--ax-color-border-default))}ax-context-menu ax-menu-item,ax-menu ax-menu-item{display:flex;align-items:center;font-size:.875rem;line-height:1.25rem;justify-content:space-between;color:rgba(var(--ax-color-text-default));height:2.25rem;cursor:pointer}ax-context-menu ax-menu-item>.ax-menu-item-prefix,ax-menu ax-menu-item>.ax-menu-item-prefix{display:flex;gap:.5rem}ax-context-menu ax-menu-item.ax-state-disabled,ax-menu ax-menu-item.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-context-menu ax-menu-item ax-suffix ax-text,ax-menu ax-menu-item ax-suffix ax-text{color:rgba(var(--ax-color-text-default))!important;opacity:.5!important;font-weight:200!important;padding-inline-start:2rem}ax-context-menu.ax-menu-container,ax-context-menu .ax-menu-items,ax-menu.ax-menu-container,ax-menu .ax-menu-items{padding-block:.5rem;display:flex;opacity:0;visibility:hidden;transition:opacity .3s;width:max-content;min-width:12rem;height:max-content;position:fixed;flex-direction:column;border-radius:0;border-width:1px;border-color:rgba(var(--ax-color-border-default));background-color:rgba(var(--ax-color-surface));--ax-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ax-shadow-colored: 0 4px 6px -1px var(--ax-shadow-color), 0 2px 4px -2px var(--ax-shadow-color);box-shadow:var(--ax-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-shadow);border-radius:var(--ax-rounded-border-default);z-index:9999}ax-context-menu.ax-menu-container.ax-state-open,ax-context-menu .ax-menu-items.ax-state-open,ax-menu.ax-menu-container.ax-state-open,ax-menu .ax-menu-items.ax-state-open{opacity:1;visibility:visible}ax-context-menu.ax-menu-container ax-menu-item,ax-context-menu .ax-menu-items ax-menu-item,ax-menu.ax-menu-container ax-menu-item,ax-menu .ax-menu-items ax-menu-item{padding-inline:1rem;padding-block:.5rem}ax-context-menu.ax-menu-container ax-menu-item ax-prefix,ax-context-menu .ax-menu-items ax-menu-item ax-prefix,ax-menu.ax-menu-container ax-menu-item ax-prefix,ax-menu .ax-menu-items ax-menu-item ax-prefix{width:1rem}ax-context-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled),ax-context-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled),ax-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled),ax-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled){background-color:rgba(var(--ax-color-on-surface))}ax-context-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-context-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix,ax-context-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-context-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix,ax-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix,ax-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix{opacity:1}ax-context-menu.ax-orientation-horizontal{padding-inline:1rem}ax-menu.ax-orientation-horizontal{min-width:12rem;gap:.875rem}ax-menu.ax-orientation-horizontal>ax-menu-item{font-weight:500}ax-menu.ax-orientation-vertical{width:max-content;min-width:12rem}ax-menu.ax-orientation-vertical>ax-menu-item{padding-inline:1rem;font-weight:500}ax-menu>ax-menu-item{padding-block:.5rem}ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-icon,ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-text{color:rgba(var(--ax-color-primary-500))}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i3.AXMenuItemComponent, selector: "ax-menu-item", inputs: ["name", "data", "disabled", "color"], outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXContextMenuComponent, decorators: [{
163
+ type: Component,
164
+ args: [{ selector: 'ax-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
165
+ AXMenuService,
166
+ {
167
+ provide: AXRootMenu,
168
+ useExisting: AXContextMenuComponent
169
+ }
170
+ ], template: "<ng-content select=\"ax-menu-item,ax-title,ng-container\"></ng-content>\n\n<ng-container *ngFor=\"let node of items()\" [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\">\n</ng-container>\n<ng-template #Recursion let-item>\n @if(item.group?.title)\n {\n <ax-title>{{item.group?.title}}</ax-title>\n }\n <ax-menu-item [name]=\"item.name\" [data]=\"item.data\" [disabled]=\"item.disabled\" [color]=\"item.color\">\n <ax-prefix>\n @if(item.icon)\n {\n <ax-icon [icon]=\"item.icon\">\n </ax-icon>\n }\n </ax-prefix>\n @if(item.text)\n {\n <ax-text>{{ item.text }}</ax-text>\n }\n @if(item.suffix)\n {\n <ax-suffix>\n <ax-text>{{ item.suffix.text }}</ax-text>\n </ax-suffix>\n }\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n </ax-menu-item>\n @if(item.break)\n {\n <ax-divider></ax-divider>\n }\n</ng-template>", styles: ["ax-context-menu,ax-menu{width:100%;color:inherit;display:flex;width:max-content}ax-context-menu.ax-orientation-horizontal,ax-menu.ax-orientation-horizontal{flex-direction:row!important}ax-context-menu.ax-orientation-vertical,ax-menu.ax-orientation-vertical{flex-direction:column!important}ax-context-menu ax-title,ax-menu ax-title{display:block;padding-inline:1rem;padding-block:.25rem;font-size:.75rem;line-height:1rem;font-weight:bolder;text-transform:uppercase;opacity:.5}ax-context-menu ax-divider,ax-menu ax-divider{margin-top:.25rem;margin-bottom:.25rem;height:.5px;width:100%;background-color:rgba(var(--ax-color-border-default))}ax-context-menu ax-menu-item,ax-menu ax-menu-item{display:flex;align-items:center;font-size:.875rem;line-height:1.25rem;justify-content:space-between;color:rgba(var(--ax-color-text-default));height:2.25rem;cursor:pointer}ax-context-menu ax-menu-item>.ax-menu-item-prefix,ax-menu ax-menu-item>.ax-menu-item-prefix{display:flex;gap:.5rem}ax-context-menu ax-menu-item.ax-state-disabled,ax-menu ax-menu-item.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-context-menu ax-menu-item ax-suffix ax-text,ax-menu ax-menu-item ax-suffix ax-text{color:rgba(var(--ax-color-text-default))!important;opacity:.5!important;font-weight:200!important;padding-inline-start:2rem}ax-context-menu.ax-menu-container,ax-context-menu .ax-menu-items,ax-menu.ax-menu-container,ax-menu .ax-menu-items{padding-block:.5rem;display:flex;opacity:0;visibility:hidden;transition:opacity .3s;width:max-content;min-width:12rem;height:max-content;position:fixed;flex-direction:column;border-radius:0;border-width:1px;border-color:rgba(var(--ax-color-border-default));background-color:rgba(var(--ax-color-surface));--ax-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ax-shadow-colored: 0 4px 6px -1px var(--ax-shadow-color), 0 2px 4px -2px var(--ax-shadow-color);box-shadow:var(--ax-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-shadow);border-radius:var(--ax-rounded-border-default);z-index:9999}ax-context-menu.ax-menu-container.ax-state-open,ax-context-menu .ax-menu-items.ax-state-open,ax-menu.ax-menu-container.ax-state-open,ax-menu .ax-menu-items.ax-state-open{opacity:1;visibility:visible}ax-context-menu.ax-menu-container ax-menu-item,ax-context-menu .ax-menu-items ax-menu-item,ax-menu.ax-menu-container ax-menu-item,ax-menu .ax-menu-items ax-menu-item{padding-inline:1rem;padding-block:.5rem}ax-context-menu.ax-menu-container ax-menu-item ax-prefix,ax-context-menu .ax-menu-items ax-menu-item ax-prefix,ax-menu.ax-menu-container ax-menu-item ax-prefix,ax-menu .ax-menu-items ax-menu-item ax-prefix{width:1rem}ax-context-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled),ax-context-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled),ax-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled),ax-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled){background-color:rgba(var(--ax-color-on-surface))}ax-context-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-context-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix,ax-context-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-context-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix,ax-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-menu.ax-menu-container ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix,ax-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-prefix,ax-menu .ax-menu-items ax-menu-item:hover:not(ax-context-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-context-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled,ax-menu.ax-menu-container ax-menu-item:hover.ax-state-disabled,ax-menu .ax-menu-items ax-menu-item:hover.ax-state-disabled) ax-suffix{opacity:1}ax-context-menu.ax-orientation-horizontal{padding-inline:1rem}ax-menu.ax-orientation-horizontal{min-width:12rem;gap:.875rem}ax-menu.ax-orientation-horizontal>ax-menu-item{font-weight:500}ax-menu.ax-orientation-vertical{width:max-content;min-width:12rem}ax-menu.ax-orientation-vertical>ax-menu-item{padding-inline:1rem;font-weight:500}ax-menu>ax-menu-item{padding-block:.5rem}ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-icon,ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-text{color:rgba(var(--ax-color-primary-500))}\n"] }]
171
+ }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { onClickOutside: [{
172
+ type: HostListener,
173
+ args: ['document:click', ['$event']]
174
+ }], onContextMenuOutside: [{
175
+ type: HostListener,
176
+ args: ['document:contextmenu', ['$event']]
177
+ }], __hostClass: [{
178
+ type: HostBinding,
179
+ args: ['class']
180
+ }] } });
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNFLE9BQU8sRUFDSCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04saUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBc0csVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFXLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFFdEM7OztHQUdHO0FBZUgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGVBQWU7SUFpQnZELHFDQUFxQztJQUVyQyxjQUFjO0lBQ2QsWUFBb0IsUUFBbUI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFEUSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbEJ2QyxxQkFBcUI7UUFFckIsZ0JBQVcsR0FBRyxLQUFLLENBQWdCLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLFdBQU0sR0FBRyxLQUFLLENBQW9CLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxLQUFLLENBQXFCLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLGlCQUFZLEdBQUcsS0FB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Q0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNQLGFBQWE7d0JBQ2I7NEJBQ0ksT0FBTyxFQUFFLFVBQVU7NEJBQ25CLFdBQVcsd0JBQXdCO3lCQUN0QztxQkFDSjs4RUF1Sk8sY0FBYztzQkFEckIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVbEMsb0JBQW9CO3NCQUQzQixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVU1QyxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYT3JpZW50YXRpb24sIE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgb3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBzaWduYWwsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCwgQVhNZW51Q2xvc2VUcmlnZ2VyLCBBWE1lbnVJdGVtLCBBWE1lbnVJdGVtQ2xpY2tFdmVudCwgQVhNZW51T3BlblRyaWdnZXIsIEFYUm9vdE1lbnUgfSBmcm9tICcuL21lbnUudHlwZXMnO1xuaW1wb3J0IHsgQVhNZW51U2VydmljZSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYUG9pbnQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWVudSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBjb250ZXh0IG1lbnUuXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4LWNvbnRleHQtbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBBWE1lbnVTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWFJvb3RNZW51LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEFYQ29udGV4dE1lbnVDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQVhDb250ZXh0TWVudUNvbXBvbmVudCBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG5cbiAgICAvLyBJbnB1dHMgYW5kIE91dHB1dHNcblxuICAgIG9yaWVudGF0aW9uID0gaW5wdXQ8QVhPcmllbnRhdGlvbj4oJ3ZlcnRpY2FsJyk7XG4gICAgb3Blbk9uID0gaW5wdXQ8QVhNZW51T3BlblRyaWdnZXI+KCdob3ZlcicpO1xuICAgIGNsb3NlT24gPSBpbnB1dDxBWE1lbnVDbG9zZVRyaWdnZXI+KCdjbGljaycpO1xuICAgIG9yZ2luYWxJdGVtcyA9IGlucHV0PEFYTWVudUl0ZW1bXT4oW10sIHsgYWxpYXM6IFwiaXRlbXNcIiB9KTtcbiAgICB0YXJnZXQgPSBpbnB1dDxIVE1MRWxlbWVudD4oKTtcblxuICAgIG9uSXRlbUNsaWNrID0gb3V0cHV0PEFYTWVudUl0ZW1DbGlja0V2ZW50PigpO1xuICAgIG9uT3BlbmluZyA9IG91dHB1dDxBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50PigpO1xuXG4gICAgLy8gSW5qZWN0ZWQgU2VydmljZXNcblxuICAgIHNlcnZpY2UgPSBpbmplY3QoQVhNZW51U2VydmljZSk7XG5cbiAgICAvLyBDb25zdHJ1Y3RvciAoRGVwZW5kZW5jeSBJbmplY3Rpb24pXG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgdGhpcy5oYW5kbGVDb250ZXh0TWVudS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbEV2ZW50cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGxDb250ZXh0TWVudSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5jbG9zZUFsbCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlcnZpY2Uub3BlbkNvbnRleHRNZW51JC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChlLnNlbmRlciBhcyBhbnkgPT0gdGhpcykge1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTaG93QXQoZS5wb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIExpZmVjeWNsZSBIb29rc1xuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlU2Nyb2xsRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgLy8gUHVibGljIE1ldGhvZHNcblxuICAgIHB1YmxpYyBzaG93QXQocG9pbnQ6IEFYUG9pbnQpIHtcbiAgICAgICAgY29uc3Qgc2VuZGVyID0gdGhpcyBhcyBhbnkgYXMgQVhSb290TWVudTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXIgfSk7XG4gICAgICAgIHRoaXMuc2VydmljZS5vcGVuQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXIsIHBvaW50IH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlZiA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgZWxlbWVudFJlZi5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1vcGVuJyk7XG4gICAgfVxuXG4gICAgLy8gUHJpdmF0ZSBQcm9wZXJ0aWVzXG5cbiAgICBwcml2YXRlIHNjcm9sbGFibGVQYXJlbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgICBwcm90ZWN0ZWQgaXRlbXMgPSBzaWduYWw8QVhNZW51SXRlbVtdPihbXSk7XG5cbiAgICAvLyBQcml2YXRlIE1ldGhvZHMgKEludGVybmFsIExvZ2ljKVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGhhbmRsZUNvbnRleHRNZW51KGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAvL1xuICAgICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgICAgICAgIGNhbmNlbGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGl0ZW1zOiBjbG9uZURlZXAodGhpcy5vcmdpbmFsSXRlbXMoKSksXG4gICAgICAgIH0gYXMgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudDtcbiAgICAgICAgdGhpcy5vbk9wZW5pbmcuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMuaXRlbXMuc2V0KGV2ZW50Lml0ZW1zKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKCFldmVudC5jYW5jZWxlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93QXQoeyB4OiBlLmNsaWVudFgsIHk6IGUuY2xpZW50WSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW50ZXJuYWxTaG93QXQocG9pbnQ6IEFYUG9pbnQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlZiA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgZWxlbWVudFJlZi5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1vcGVuJyk7XG4gICAgICAgIGNvbnN0IGl0ZW1SZWN0ID0gZWxlbWVudFJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgICAgIC8vIERldGVjdCBSVEwgKFJpZ2h0LVRvLUxlZnQpIG1vZGVcbiAgICAgICAgY29uc3QgaXNSdGwgPSBBWEh0bWxVdGlsLmlzUnRsKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG5cbiAgICAgICAgbGV0IGxlZnQ6IG51bWJlcjtcbiAgICAgICAgaWYgKGlzUnRsKSB7XG4gICAgICAgICAgICBsZWZ0ID0gcG9pbnQueCAtIGl0ZW1SZWN0LndpZHRoO1xuICAgICAgICAgICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICAgICAgICAgICAgbGVmdCA9IHBvaW50Lng7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZWZ0ID0gcG9pbnQueDtcbiAgICAgICAgICAgIGlmIChsZWZ0ICsgaXRlbVJlY3Qud2lkdGggPiB3aW5kb3dXaWR0aCkge1xuICAgICAgICAgICAgICAgIGxlZnQgPSBwb2ludC54IC0gaXRlbVJlY3Qud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBib3R0b20gPSBwb2ludC55ICsgaXRlbVJlY3QuaGVpZ2h0O1xuICAgICAgICBsZXQgdG9wOiBudW1iZXI7XG5cbiAgICAgICAgaWYgKGJvdHRvbSA+IHdpbmRvd0hlaWdodCkge1xuICAgICAgICAgICAgdG9wID0gcG9pbnQueSAtIGl0ZW1SZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgdG9wID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvcCA9IHBvaW50Lnk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICdsZWZ0JywgYCR7bGVmdH1weGApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICd0b3AnLCBgJHt0b3B9cHhgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLCAncG9zaXRpb24nLCAnZml4ZWQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRTY3JvbGxFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZVBhcmVudHMgPSBBWEh0bWxVdGlsLmdldFNjcm9sbGFibGVQYXJlbnRzKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZVBhcmVudHMuZm9yRWFjaCgocGFyZW50KSA9PiB7XG4gICAgICAgICAgICBwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRhaW5lclNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVTY3JvbGxFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZVBhcmVudHMuZm9yRWFjaCgocGFyZW50KSA9PiB7XG4gICAgICAgICAgICBwYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRhaW5lclNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNvbnRhaW5lclNjcm9sbCgpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXI6IHRoaXMgYXMgYW55IGFzIEFYUm9vdE1lbnUgfSk7XG4gICAgfVxuXG4gICAgLy8gSG9zdCBMaXN0ZW5lcnMgKFVJIEludGVyYWN0aW9uIEhhbmRsaW5nKVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHJpdmF0ZSBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgaWYgKCFob3N0RWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbmRlciA9IHRoaXMgYXMgYW55IGFzIEFYUm9vdE1lbnU7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGxDb250ZXh0TWVudSQubmV4dCh7IHNlbmRlciB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNvbnRleHRtZW51JywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIG9uQ29udGV4dE1lbnVPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy50YXJnZXQoKS5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbmRlciA9IHRoaXMgYXMgYW55IGFzIEFYUm9vdE1lbnU7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGxDb250ZXh0TWVudSQubmV4dCh7IHNlbmRlciB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IF9faG9zdENsYXNzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiBbJ2F4LW1lbnUtY29udGFpbmVyJywgYGF4LW9yaWVudGF0aW9uLSR7dGhpcy5vcmllbnRhdGlvbigpfWBdO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LW1lbnUtaXRlbSxheC10aXRsZSxuZy1jb250YWluZXJcIj48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5vZGUgb2YgaXRlbXMoKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlJlY3Vyc2lvblwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNSZWN1cnNpb24gbGV0LWl0ZW0+XG4gICAgQGlmKGl0ZW0uZ3JvdXA/LnRpdGxlKVxuICAgIHtcbiAgICA8YXgtdGl0bGU+e3tpdGVtLmdyb3VwPy50aXRsZX19PC9heC10aXRsZT5cbiAgICB9XG4gICAgPGF4LW1lbnUtaXRlbSBbbmFtZV09XCJpdGVtLm5hbWVcIiBbZGF0YV09XCJpdGVtLmRhdGFcIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIFtjb2xvcl09XCJpdGVtLmNvbG9yXCI+XG4gICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICBAaWYoaXRlbS5pY29uKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICBAaWYoaXRlbS50ZXh0KVxuICAgICAgICB7XG4gICAgICAgIDxheC10ZXh0Pnt7IGl0ZW0udGV4dCB9fTwvYXgtdGV4dD5cbiAgICAgICAgfVxuICAgICAgICBAaWYoaXRlbS5zdWZmaXgpXG4gICAgICAgIHtcbiAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgIDxheC10ZXh0Pnt7IGl0ZW0uc3VmZml4LnRleHQgfX08L2F4LXRleHQ+XG4gICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICB9XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW5cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJSZWN1cnNpb25cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjaGlsZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9heC1tZW51LWl0ZW0+XG4gICAgQGlmKGl0ZW0uYnJlYWspXG4gICAge1xuICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICB9XG48L25nLXRlbXBsYXRlPiJdfQ==