@fundamental-ngx/core 0.46.1-rc.2 → 0.46.1-rc.3

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.
@@ -71,15 +71,15 @@ export class PopoverService extends BasePopoverClass {
71
71
  }
72
72
  /** Closes the popover. */
73
73
  close(focusActiveElement = true) {
74
- if (this._overlayRef && this._overlayRef.hasAttached()) {
74
+ if (this._overlayRef) {
75
75
  this._overlayRef.dispose();
76
- const prevState = this.isOpen;
77
- this.isOpen = false;
78
- if (prevState !== this.isOpen) {
79
- this.isOpenChange.emit(this.isOpen);
80
- }
81
- this._focusLastActiveElementBeforeOpen(focusActiveElement);
82
76
  }
77
+ const prevState = this.isOpen;
78
+ this.isOpen = false;
79
+ if (prevState !== this.isOpen) {
80
+ this.isOpenChange.emit(this.isOpen);
81
+ }
82
+ this._focusLastActiveElementBeforeOpen(focusActiveElement);
83
83
  }
84
84
  /** Opens the popover. */
85
85
  open() {
@@ -425,4 +425,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
425
425
  }] }, { type: i3.PopoverContainerDirective, decorators: [{
426
426
  type: Optional
427
427
  }] }]; } });
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLXNlcnZpY2UvcG9wb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxPQUFPLEVBQ1AsYUFBYSxFQUViLGFBQWEsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUFZLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7OztBQUU3RixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFTL0IsTUFBTSxPQUFPLGNBQWUsU0FBUSxnQkFBZ0I7SUFpRGhELGNBQWM7SUFDZCxZQUNZLFFBQWlCLEVBQ2pCLFNBQW9CLEVBQ3BCLGNBQTZCLEVBQzdCLFNBQW1CLEVBQ1AsV0FBdUIsRUFDZCxp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Z0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3RFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7OEdBeGdCUSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQXdERixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsXG4gICAgQ29ubmVjdGVkUG9zaXRpb24sXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBPdmVybGF5UmVmLFxuICAgIFZpZXdwb3J0UnVsZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlLCBSdGxTZXJ2aWNlLCBpc09kZCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEdldERlZmF1bHRQb3NpdGlvbiwgUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmltcG9ydCB7IEJhc2VQb3BvdmVyQ2xhc3MsIFRyaWdnZXJDb25maWcgfSBmcm9tICcuLi9iYXNlL2Jhc2UtcG9wb3Zlci5jbGFzcyc7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXItYm9keS9wb3BvdmVyLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9wb3BvdmVyLWNvbnRhaW5lci9wb3BvdmVyLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuXG5jb25zdCBNQVhfQk9EWV9TSVpFID0gOTk5OTk5OTk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9wb3ZlclRlbXBsYXRlIHtcbiAgICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gICAgcG9wb3ZlckJvZHk6IFBvcG92ZXJCb2R5Q29tcG9uZW50O1xuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUG9wb3ZlclNlcnZpY2UgZXh0ZW5kcyBCYXNlUG9wb3ZlckNsYXNzIHtcbiAgICAvKiogU3RyaW5nIGNvbnRlbnQgZGlzcGxheWVkIGluc2lkZSBwb3BvdmVyIGJvZHkgKi9cbiAgICBzdHJpbmdDb250ZW50OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFRlbXBsYXRlIGNvbnRlbnQgZGlzcGxheWVkIGluc2lkZSBwb3BvdmVyIGJvZHkgKi9cbiAgICB0ZW1wbGF0ZUNvbnRlbnQ6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Mb2FkID0gbmV3IFN1YmplY3Q8RWxlbWVudFJlZj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ldmVudFJlZjogKCgpID0+IHZvaWQpW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaCQ6IE9ic2VydmFibGU8Ym9vbGVhbiB8IHZvaWQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdG9wQ2xvc2VMaXN0ZW5pbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VtZW50UmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wb3BvdmVyQm9keTogUG9wb3ZlckJvZHlDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYXN0QWN0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RlbXBsYXRlRGF0YTogTnVsbGFibGU8UG9wb3ZlclRlbXBsYXRlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGxhY2VtZW50Q29udGFpbmVyOiBCYXNlUG9wb3ZlckNsYXNzWydwbGFjZW1lbnRDb250YWluZXInXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaWdub3JlVHJpZ2dlcnMgPSBmYWxzZTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBfdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9wb3BvdmVyQ29udGFpbmVyOiBQb3BvdmVyQ29udGFpbmVyRGlyZWN0aXZlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgLyoqIE1lcmdlIG9ic2VydmFibGVzIC0gY2xvc2Ugb3IgZGVzdHJveSAqL1xuICAgICAgICB0aGlzLl9yZWZyZXNoJCA9IG1lcmdlKHRoaXMuaXNPcGVuQ2hhbmdlLCB0aGlzLl9vbkRlc3Ryb3kkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgaW5pdGlhbGlzaW5nIHRoZSBwb3BvdmVyIHNlcnZpY2UgLSBzaG91bGQgYmUgY2FsbGVkLCBhZnRlciB2aWV3IGlzIGluaXRpYWxpc2VkLCBwYXJhbXM6XG4gICAgICogLSB0cmlnZ2VyRWxlbWVudCAtIGVsZW1lbnQsIHdoaWNoIGlzIGVxdWl2YWxlbnQgZm9yIGNka092ZXJsYXlPcmlnaW4sIG9yIGZkLXBvcG92ZXItY29udHJvbCxcbiAgICAgKiAgIGJ5IGRlZmF1bHQgdG8gdGhpcyBlbGVtZW50IHRoZSBwb3BvdmVyIGJvZHkgd2lsbCBsYmUgYXBwZW5kZWQgYW5kIGV2ZW50cyBvbiB0aGlzIGVsZW1lbnQgd2lsbCB0cmlnZ2VyXG4gICAgICogICBwb3BvdmVyJ3MgIHRvZ2dsZVxuICAgICAqIC0gY29uZmlnIC0gY29uZmlndXJhdGlvbiBvYmplY3QgLSBpbiB0aGlzIGNhc2UgdGhlIGludGVudGlvbiBpcyB0byB1c2UgaW5oZXJpdGFuY2Ugb2YgQmFzZVBvcG92ZXJDbGFzcyBpbiBjb21wb25lbnRcbiAgICAgKiAtIHRlbXBsYXRlRGF0YSAtIGluIGNhc2Ugb2YgaGF2aW5nIGFscmVhZHkgUG9wb3ZlckJvZHlDb21wb25lbnQsIHRoZXJlIGlzIHdheSB0byBwYXNzIGNvbnRhaW5lciwgdGVtcGxhdGUgY29udGFpbmluZ1xuICAgICAqICAgUG9wb3ZlckNvbXBvbmVudCBhbmQgUG9wb3ZlckNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIGluaXRpYWxpc2UoXG4gICAgICAgIHRyaWdnZXJFbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBjb25maWc/OiBCYXNlUG9wb3ZlckNsYXNzLFxuICAgICAgICB0ZW1wbGF0ZURhdGE/OiBQb3BvdmVyVGVtcGxhdGUgfCBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRlbXBsYXRlRGF0YSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlQ29udGVudCA9IHRlbXBsYXRlRGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlRGF0YSA9IHRlbXBsYXRlRGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRyaWdnZXJFbGVtZW50O1xuXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbmZpZ3VyYXRpb24oY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlnZ2VyTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHdyYXBwZXIgY29udGFpbmVyIGhlaWdodCBjaGFuZ2VzIG91dHNpZGUsIHJlZnJlc2ggcG9wb3ZlciBwb3NpdGlvbi5cbiAgICAgICAgdGhpcy5fcG9wb3ZlckNvbnRhaW5lcj8ucmVmcmVzaFBvc2l0aW9uJC5waXBlKHRha2VVbnRpbCh0aGlzLl9yZWZyZXNoJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBwb3BvdmVyLiAqL1xuICAgIGNsb3NlKGZvY3VzQWN0aXZlRWxlbWVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYgJiYgdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcblxuICAgICAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5pc09wZW47XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHByZXZTdGF0ZSAhPT0gdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZm9jdXNMYXN0QWN0aXZlRWxlbWVudEJlZm9yZU9wZW4oZm9jdXNBY3RpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgcG9wb3Zlci4gKi9cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICBpZiAoKCF0aGlzLl9vdmVybGF5UmVmIHx8ICF0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpICYmICF0aGlzLmRpc2FibGVkICYmIHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuX2dldFBvc2l0aW9uU3RyYXRlZ3koKTtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9nZXRPdmVybGF5Q29uZmlnKHBvc2l0aW9uKSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9wbGFjZW1lbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGxhY2VtZW50Q29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9wbGFjZW1lbnRDb250YWluZXIubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9wbGFjZW1lbnRDb250YWluZXI7XG5cbiAgICAgICAgICAgICAgICBwbGFjZW1lbnRFbGVtZW50LmFwcGVuZCh0aGlzLl9vdmVybGF5UmVmLmhvc3RFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlRGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2F0dGFjaFRlbXBsYXRlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2F0dGFjaEJvZHlDb21wb25lbnQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fc3RvcENsb3NlTGlzdGVuaW5nJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Gb3JQb3NpdGlvbkNoYW5nZShwb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWxsQ29udHJvbE1vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9saXN0ZW5PblJlc2l6ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmlzT3BlbjtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChwcmV2U3RhdGUgIT09IHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgdGhpcy5fbGlzdGVuT25DbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpO1xuICAgICAgICAgICAgdGhpcy5fb25Mb2FkLm5leHQodGhpcy5fZ2V0UG9wb3ZlckJvZHkoKS5fZWxlbWVudFJlZik7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogbWV0aG9kIHVwZGF0aW5nIHRlbXBsYXRlIG9yIHRleHQgaW5zaWRlIHJlbmRlcmVkIFBvcG92ZXJCb2R5ICovXG4gICAgdXBkYXRlQ29udGVudChcbiAgICAgICAgc3RyaW5nQ29udGVudDogTnVsbGFibGU8c3RyaW5nPiB8IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+LFxuICAgICAgICB0ZW1wbGF0ZUNvbnRlbnQ6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+XG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRlbXBsYXRlQ29udGVudCA9ICF0ZW1wbGF0ZUNvbnRlbnRcbiAgICAgICAgICAgID8gdHlwZW9mIHN0cmluZ0NvbnRlbnQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgOiBzdHJpbmdDb250ZW50XG4gICAgICAgICAgICA6IHRlbXBsYXRlQ29udGVudDtcbiAgICAgICAgc3RyaW5nQ29udGVudCA9IHR5cGVvZiBzdHJpbmdDb250ZW50ID09PSAnc3RyaW5nJyA/IHN0cmluZ0NvbnRlbnQgOiBudWxsO1xuICAgICAgICB0aGlzLnN0cmluZ0NvbnRlbnQgPSBzdHJpbmdDb250ZW50O1xuICAgICAgICB0aGlzLnRlbXBsYXRlQ29udGVudCA9IHRlbXBsYXRlQ29udGVudDtcbiAgICAgICAgaWYgKHRoaXMuX2dldFBvcG92ZXJCb2R5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Bhc3NWYXJpYWJsZXNUb0JvZHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBwb3BvdmVyIG9wZW4gc3RhdGUgKi9cbiAgICB0b2dnbGUob3BlbkFjdGlvbiA9IHRydWUsIGNsb3NlQWN0aW9uID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIGNsb3NlQWN0aW9uICYmIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wZW5BY3Rpb24gJiYgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgY2FsbGVkIHRvIGNoYW5nZSBwb3NpdGlvbiBvZiBwb3BvdmVyLFxuICAgICAqIHJlY29tbWVuZGVkIHRvIGJlIHVzZWQgb25seSB3aGVuIHBvcG92ZXIgaXMgb3BlbmVkLCBvdGhlcndpc2UgY2hhbmdlIHBvc2l0aW9uIG9yIGNka1BsYWNlbWVudFxuICAgICAqL1xuICAgIGFwcGx5TmV3UG9zaXRpb24ocG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZlBvc2l0aW9uID0gdGhpcy5fZ2V0UG9zaXRpb25TdHJhdGVneShwb3NpdGlvbnMpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Gb3JQb3NpdGlvbkNoYW5nZShyZWZQb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMpO1xuICAgICAgICB0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kocmVmUG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHRvIHJlZnJlc2ggcG9zaXRpb24gb2Ygb3BlbmVkIHBvcG92ZXIgKi9cbiAgICByZWZyZXNoUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIFRlbXBvcmFyeSBzZXRzIHRoZSBpZ25vcmluZyBvZiB0aGUgZXZlbnQgdHJpZ2dlcnMuICovXG4gICAgc2V0SWdub3JlVHJpZ2dlcnMoaWdub3JlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lnbm9yZVRyaWdnZXJzID0gaWdub3JlO1xuICAgIH1cblxuICAgIC8qKiBFcXVpdmFsZW50IGZvciBuZ09uRGVzdHJveSBtZXRob2QsIHdoZXRoZXIgY29tcG9uZW50IGlzIGRlc3Ryb3llZCwgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCAqL1xuICAgIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcmVtb3ZlVHJpZ2dlckxpc3RlbmVycygpO1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgc2V0cyBjb25maWd1cmF0aW9uL29wdGlvbnMsIGl0IGRldGVjdHMgaWYgdGhlcmUgaXMgc29tZXRoaW5nIGNoYW5nZWQgYW5kIG92ZXJ3cml0ZXMgdGhlbVxuICAgICAqL1xuICAgIHJlZnJlc2hDb25maWd1cmF0aW9uKGNvbmZpZzogQmFzZVBvcG92ZXJDbGFzcyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wbGFjZW1lbnRDb250YWluZXIgPSBjb25maWcucGxhY2VtZW50Q29udGFpbmVyO1xuICAgICAgICBjb25zdCBvbmx5Q2hhbmdlZCA9IE9iamVjdC5rZXlzKG5ldyBCYXNlUG9wb3ZlckNsYXNzKCkpLmZpbHRlcigoa2V5KSA9PiB0aGlzW2tleV0gIT09IGNvbmZpZ1trZXldKTtcblxuICAgICAgICBpZiAob25seUNoYW5nZWQuaW5jbHVkZXMoJ2lzT3BlbicpKSB7XG4gICAgICAgICAgICBpZiAoY29uZmlnLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob25seUNoYW5nZWQuaW5jbHVkZXMoJ3BsYWNlbWVudENvbnRhaW5lcicpKSB7XG4gICAgICAgICAgICB0aGlzLl9wbGFjZW1lbnRDb250YWluZXIgPSBjb25maWcucGxhY2VtZW50Q29udGFpbmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIFRPRE9cbiAgICAgICAgICogVGhpcyBvdmVycmlkaW5nIGlzIGRhbmdlcm91cyB0aGluZyBhbmQgbGVhZHMgdG8gdW5leHBlY3RlZCBiZWhhdmlvclxuICAgICAgICAgKiBXZSBoYXZlIHRvIGF2b2lkIHRoaXMuXG4gICAgICAgICAqL1xuICAgICAgICBvbmx5Q2hhbmdlZC5mb3JFYWNoKChrZXkpID0+ICh0aGlzW2tleV0gPSBjb25maWdba2V5XSkpO1xuXG4gICAgICAgIGlmIChvbmx5Q2hhbmdlZC5pbmNsdWRlcygndHJpZ2dlcnMnKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRyaWdnZXJMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBpbiBvcmRlclxuICAgICAqIHRvIHBvc3Rwb25lIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHkgYnV0IGJlIGFibGVcbiAgICAgKiB0byBlbmFibGUgaXQgYmFjayBpbiB0aGUgZnV0dXJlIGJ5IGluaXRpYWxpc2UoKVxuICAgICAqL1xuICAgIGRlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZVRyaWdnZXJMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvKiogUmVmcmVzaCBsaXN0ZW5lcnMgb24gdHJpZ2dlciBlbGVtZW50IGV2ZW50cyAqL1xuICAgIF9yZWZyZXNoVHJpZ2dlckxpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVtb3ZlVHJpZ2dlckxpc3RlbmVycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6ZVRyaWdnZXJzKCkuZm9yRWFjaCgodHJpZ2dlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50UmVmLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLl90cmlnZ2VyRWxlbWVudC5uYXRpdmVFbGVtZW50LCB0cmlnZ2VyLnRyaWdnZXIsIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVUcmlnZ2Vycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlQWN0aW9uID0gISF0cmlnZ2VyLmNsb3NlQWN0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BlbkFjdGlvbiA9ICEhdHJpZ2dlci5vcGVuQWN0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUob3BlbkFjdGlvbiwgY2xvc2VBY3Rpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJpZ2dlci5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRyaWdnZXIgZWxlbWVudCBhbmQgcmVmcmVzaGVzIHRoZSBsaXN0ZW5lcnMuXG4gICAgICogQHBhcmFtIHRyaWdnZXIgVHJpZ2dlciBlbGVtZW50IHJlZi5cbiAgICAgKi9cbiAgICB1cGRhdGVUcmlnZ2VyRWxlbWVudCh0cmlnZ2VyOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdHJpZ2dlcjtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRyaWdnZXJMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25vcm1hbGl6ZVRyaWdnZXJzKCk6IFRyaWdnZXJDb25maWdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyaWdnZXJzLm1hcCgodHJpZ2dlciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdHJpZ2dlciA9PT0gJ29iamVjdCcgJiYgdHJpZ2dlci50cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyaWdnZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG9kZE51bWJlciA9IGlzT2RkKGluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgICAgICAgICBvcGVuQWN0aW9uOiB0aGlzLnRyaWdnZXJzLmxlbmd0aCA9PT0gMSB8fCBvZGROdW1iZXIsXG4gICAgICAgICAgICAgICAgY2xvc2VBY3Rpb246IHRoaXMudHJpZ2dlcnMubGVuZ3RoID09PSAxIHx8ICFvZGROdW1iZXIsXG4gICAgICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmYWxzZVxuICAgICAgICAgICAgfSBhcyBUcmlnZ2VyQ29uZmlnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE92ZXJsYXlDb25maWcocG9zaXRpb246IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLl9nZXREaXJlY3Rpb24oKTtcblxuICAgICAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdGhpcy5jbG9zZU9uTmF2aWdhdGlvbixcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHBvc2l0aW9uLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3kgfHwgdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3cG9ydFJ1bGVyXG4gICAgICAgICAgICAuY2hhbmdlKDE1KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3JlZnJlc2gkKSwgc3RhcnRXaXRoKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9hcHBseVdpZHRoT3ZlcmxheSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERpcmVjdGlvbigpOiAncnRsJyB8ICdsdHInIHtcbiAgICAgICAgaWYgKCF0aGlzLl9ydGxTZXJ2aWNlKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2x0cic7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZS5ydGwuZ2V0VmFsdWUoKSA/ICdydGwnIDogJ2x0cic7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRQb3NpdGlvblN0cmF0ZWd5KGZvcmNlZFBvc2l0aW9ucz86IENvbm5lY3RlZFBvc2l0aW9uW10pOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBsZXQgcmVzdWx0UG9zaXRpb24gPSBmb3JjZWRQb3NpdGlvbnMgPyBmb3JjZWRQb3NpdGlvbnMgOiB0aGlzLl9nZXRQb3NpdGlvbnMoKTtcblxuICAgICAgICBpZiAoIXRoaXMuZml4ZWRQb3NpdGlvbikge1xuICAgICAgICAgICAgcmVzdWx0UG9zaXRpb24gPSByZXN1bHRQb3NpdGlvbi5jb25jYXQoR2V0RGVmYXVsdFBvc2l0aW9uKHJlc3VsdFBvc2l0aW9uKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuYXBwZW5kVG8gfHwgdGhpcy5fdHJpZ2dlckVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhyZXN1bHRQb3NpdGlvbilcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3Blbih0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogcmVtb3ZlIGxpc3RlbmVycyBmcm9tIHRyaWdnZXIgZWxlbWVudCBldmVudHMgKi9cbiAgICBwcml2YXRlIF9yZW1vdmVUcmlnZ2VyTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ldmVudFJlZi5mb3JFYWNoKChldmVudCkgPT4gZXZlbnQoKSk7XG4gICAgICAgIHRoaXMuX2V2ZW50UmVmID0gW107XG4gICAgfVxuXG4gICAgLyoqIEF0dGFjaCB0ZW1wbGF0ZSBjb250YWluaW5nIHBvcG92ZXIgYm9keSB0byBvdmVybGF5ICovXG4gICAgcHJpdmF0ZSBfYXR0YWNoVGVtcGxhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bhc3NWYXJpYWJsZXNUb0JvZHkoKTtcbiAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuX3RlbXBsYXRlRGF0YS50ZW1wbGF0ZSwgdGhpcy5fdGVtcGxhdGVEYXRhLmNvbnRhaW5lcikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBQb3BvdmVyQm9keUNvbXBvbmVudCBhbmQgYXR0YWNoIGl0IGludG8gb3ZlcmxheSAqL1xuICAgIHByaXZhdGUgX2F0dGFjaEJvZHlDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKFBvcG92ZXJCb2R5Q29tcG9uZW50LCBudWxsLCB0aGlzLl9pbmplY3RvcikpO1xuICAgICAgICB0aGlzLl9wb3BvdmVyQm9keSA9IG92ZXJsYXkuaW5zdGFuY2U7XG4gICAgICAgIHRoaXMuX3Bhc3NWYXJpYWJsZXNUb0JvZHkoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlbkZvclBvc2l0aW9uQ2hhbmdlKHBvc2l0aW9uQ2hhbmdlOiBPYnNlcnZhYmxlPENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGxhY2VtZW50UmVmcmVzaCQubmV4dCgpO1xuICAgICAgICBwb3NpdGlvbkNoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3BsYWNlbWVudFJlZnJlc2gkKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLm5vQXJyb3cgJiYgISF0aGlzLl9nZXRQb3BvdmVyQm9keSgpKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IHByZXZpb3VzLmNvbm5lY3Rpb25QYWlyID09PSBjdXJyZW50LmNvbm5lY3Rpb25QYWlyKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX2dldFBvcG92ZXJCb2R5KCkuX3NldEFycm93U3R5bGVzKGV2ZW50LmNvbm5lY3Rpb25QYWlyLCB0aGlzLl9nZXREaXJlY3Rpb24oKSkpO1xuICAgIH1cblxuICAgIC8qKiBTdWJzY3JpYmUgdG8gY2xvc2UgZXZlbnRzIGZyb20gQ0RLIE92ZXJsYXksIHRvIHRocm93IHByb3BlciBldmVudHMsIGNoYW5nZSB2YWx1ZXMgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbG9zZUV2ZW50cyQgPSBtZXJnZShcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKSxcbiAgICAgICAgICAgIHRoaXMuX2dldFBvcG92ZXJCb2R5KCkub25DbG9zZSxcbiAgICAgICAgICAgIHRoaXMuX291dHNpZGVDbGlja3MkKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmluYWxpemVyJCA9IG1lcmdlKHRoaXMuX3N0b3BDbG9zZUxpc3RlbmluZyQsIHRoaXMuX3JlZnJlc2gkKTtcbiAgICAgICAgY2xvc2VFdmVudHMkLnBpcGUodGFrZVVudGlsKGZpbmFsaXplciQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG5cbiAgICAvKiogTGlzdGVuZXIgZm9yIGNsaWNrIGV2ZW50cyAqL1xuICAgIHByaXZhdGUgX291dHNpZGVDbGlja3MkKCk6IE9ic2VydmFibGU8TW91c2VFdmVudD4ge1xuICAgICAgICByZXR1cm4gbWVyZ2UodGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCksIHRoaXMuX292ZXJsYXlSZWYuX291dHNpZGVQb2ludGVyRXZlbnRzKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gdGhpcy5fc2hvdWxkQ2xvc2UoZXZlbnQpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hvdWxkQ2xvc2UoZXZlbnQ6IE1vdXNlRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuICYmXG4gICAgICAgICAgICB0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2sgJiZcbiAgICAgICAgICAgICF0aGlzLl90cmlnZ2VyQ29udGFpbnNUYXJnZXQoZXZlbnQpICYmXG4gICAgICAgICAgICAhdGhpcy5fdGFyZ2V0SXNQb3BvdmVyTW9iaWxlRGlhbG9nKGV2ZW50KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFyZ2V0SXNQb3BvdmVyTW9iaWxlRGlhbG9nKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9tb2JpbGUpIHtcbiAgICAgICAgICAgIGxldCBlbCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB3aGlsZSAoZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWwuaGFzQXR0cmlidXRlKCdkYXRhLW1vYmlsZS1wb3BvdmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEV2ZW50VGFyZ2V0KGV2ZW50OiBFdmVudCk6IEV2ZW50VGFyZ2V0IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGggPyBldmVudC5jb21wb3NlZFBhdGgoKVswXSA6IGV2ZW50LnRhcmdldDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyaWdnZXJDb250YWluc1RhcmdldChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlckVsZW1lbnQgPSB0aGlzLl90cmlnZ2VyRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICByZXR1cm4gdHJpZ2dlckVsZW1lbnQuY29udGFpbnModGhpcy5fZ2V0RXZlbnRUYXJnZXQoZXZlbnQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFBvc2l0aW9ucygpOiBDb25uZWN0ZWRQb3NpdGlvbltdIHtcbiAgICAgICAgaWYgKHRoaXMuY2RrUG9zaXRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jZGtQb3NpdGlvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wbGFjZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbUG9wb3ZlclBvc2l0aW9uLmdldENka1BsYWNlbWVudCh0aGlzLnBsYWNlbWVudCwgdGhpcy5fZ2V0RGlyZWN0aW9uKCkpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FwcGx5V2lkdGhPdmVybGF5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtYXhXaWR0aExpbWl0ID0gdGhpcy5tYXhXaWR0aCA/IHRoaXMubWF4V2lkdGggOiBNQVhfQk9EWV9TSVpFO1xuICAgICAgICBjb25zdCB3aWR0aCA9IE1hdGgubWluKHRoaXMuX2dldFRyaWdnZXJXaWR0aCgpLCBtYXhXaWR0aExpbWl0KTtcbiAgICAgICAgaWYgKHRoaXMuZmlsbENvbnRyb2xNb2RlID09PSAnYXQtbGVhc3QnKSB7XG4gICAgICAgICAgICB0aGlzLl9nZXRQb3BvdmVyQm9keSgpLl9wb3BvdmVyQm9keU1pbldpZHRoID0gd2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWxsQ29udHJvbE1vZGUgPT09ICdlcXVhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2dldFBvcG92ZXJCb2R5KCkuX3BvcG92ZXJCb2R5V2lkdGggPSB3aWR0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXNzVmFyaWFibGVzVG9Cb2R5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5fZ2V0UG9wb3ZlckJvZHkoKTtcbiAgICAgICAgYm9keS50ZXh0ID0gdGhpcy5zdHJpbmdDb250ZW50O1xuICAgICAgICBib2R5Ll9hZGRpdGlvbmFsQm9keUNsYXNzID0gdGhpcy5hZGRpdGlvbmFsQm9keUNsYXNzO1xuICAgICAgICBib2R5Ll9mb2N1c1RyYXBwZWQgPSB0aGlzLmZvY3VzVHJhcHBlZDtcbiAgICAgICAgYm9keS5fbWF4V2lkdGggPSB0aGlzLm1heFdpZHRoO1xuICAgICAgICBib2R5Ll9ub0Fycm93ID0gdGhpcy5ub0Fycm93O1xuICAgICAgICBib2R5Ll9mb2N1c0F1dG9DYXB0dXJlID0gdGhpcy5mb2N1c0F1dG9DYXB0dXJlO1xuICAgICAgICBib2R5Ll9kaXNhYmxlU2Nyb2xsYmFyID0gdGhpcy5kaXNhYmxlU2Nyb2xsYmFyO1xuICAgICAgICBib2R5Ll90YWJiYWJsZVNjcm9sbGJhciA9IHRoaXMudGFiYmFibGVTY3JvbGxiYXI7XG4gICAgICAgIGJvZHkuX3RlbXBsYXRlVG9EaXNwbGF5ID0gdGhpcy50ZW1wbGF0ZUNvbnRlbnQhO1xuICAgICAgICBib2R5Ll9jbG9zZU9uRXNjYXBlS2V5ID0gdGhpcy5jbG9zZU9uRXNjYXBlS2V5O1xuICAgICAgICBib2R5Ll9ib2R5Um9sZSA9IHRoaXMuX2JvZHlSb2xlO1xuICAgICAgICBib2R5Ll9ib2R5SWQgPSB0aGlzLl9ib2R5SWQ7XG4gICAgICAgIGJvZHkuX3Jlc2l6YWJsZSA9IHRoaXMucmVzaXphYmxlO1xuICAgICAgICBib2R5Ll9zZXRCb2R5Q29tcG9uZW50Q2xhc3Nlcyh0aGlzLmFkZGl0aW9uYWxCb2R5Q29tcG9uZW50Q2xhc3Nlcyk7XG4gICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFRyaWdnZXJXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFBvcG92ZXJCb2R5KCk6IFBvcG92ZXJCb2R5Q29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlRGF0YT8ucG9wb3ZlckJvZHkgfHwgdGhpcy5fcG9wb3ZlckJvZHk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZ2V0UG9wb3ZlckJvZHkoKSkge1xuICAgICAgICAgICAgdGhpcy5fZ2V0UG9wb3ZlckJvZHkoKS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoZm9jdXNMYXN0RWxlbWVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGZvY3VzTGFzdEVsZW1lbnQgJiYgdGhpcy5mb2N1c0F1dG9DYXB0dXJlKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0QWN0aXZlRWxlbWVudCA9IDxIVE1MRWxlbWVudD5kb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5fZ2V0UG9wb3ZlckJvZHkoKT8uX2ZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNMYXN0QWN0aXZlRWxlbWVudEJlZm9yZU9wZW4oZm9jdXNMYXN0RWxlbWVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGZvY3VzTGFzdEVsZW1lbnQgJiYgdGhpcy5mb2N1c0F1dG9DYXB0dXJlICYmIHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0QWN0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLXNlcnZpY2UvcG9wb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxPQUFPLEVBQ1AsYUFBYSxFQUViLGFBQWEsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUFZLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7OztBQUU3RixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFTL0IsTUFBTSxPQUFPLGNBQWUsU0FBUSxnQkFBZ0I7SUFpRGhELGNBQWM7SUFDZCxZQUNZLFFBQWlCLEVBQ2pCLFNBQW9CLEVBQ3BCLGNBQTZCLEVBQzdCLFNBQW1CLEVBQ1AsV0FBdUIsRUFDZCxp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QUFDLGtCQUFrQixFQUFFO1lBQ3RFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7OEdBeGdCUSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQXdERixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsXG4gICAgQ29ubmVjdGVkUG9zaXRpb24sXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBPdmVybGF5UmVmLFxuICAgIFZpZXdwb3J0UnVsZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlLCBSdGxTZXJ2aWNlLCBpc09kZCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEdldERlZmF1bHRQb3NpdGlvbiwgUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmltcG9ydCB7IEJhc2VQb3BvdmVyQ2xhc3MsIFRyaWdnZXJDb25maWcgfSBmcm9tICcuLi9iYXNlL2Jhc2UtcG9wb3Zlci5jbGFzcyc7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXItYm9keS9wb3BvdmVyLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9wb3BvdmVyLWNvbnRhaW5lci9wb3BvdmVyLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuXG5jb25zdCBNQVhfQk9EWV9TSVpFID0gOTk5OTk5OTk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9wb3ZlclRlbXBsYXRlIHtcbiAgICBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG4gICAgcG9wb3ZlckJvZHk6IFBvcG92ZXJCb2R5Q29tcG9uZW50O1xuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUG9wb3ZlclNlcnZpY2UgZXh0ZW5kcyBCYXNlUG9wb3ZlckNsYXNzIHtcbiAgICAvKiogU3RyaW5nIGNvbnRlbnQgZGlzcGxheWVkIGluc2lkZSBwb3BvdmVyIGJvZHkgKi9cbiAgICBzdHJpbmdDb250ZW50OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFRlbXBsYXRlIGNvbnRlbnQgZGlzcGxheWVkIGluc2lkZSBwb3BvdmVyIGJvZHkgKi9cbiAgICB0ZW1wbGF0ZUNvbnRlbnQ6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Mb2FkID0gbmV3IFN1YmplY3Q8RWxlbWVudFJlZj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ldmVudFJlZjogKCgpID0+IHZvaWQpW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaCQ6IE9ic2VydmFibGU8Ym9vbGVhbiB8IHZvaWQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdG9wQ2xvc2VMaXN0ZW5pbmckID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VtZW50UmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wb3BvdmVyQm9keTogUG9wb3ZlckJvZHlDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYXN0QWN0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RlbXBsYXRlRGF0YTogTnVsbGFibGU8UG9wb3ZlclRlbXBsYXRlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGxhY2VtZW50Q29udGFpbmVyOiBCYXNlUG9wb3ZlckNsYXNzWydwbGFjZW1lbnRDb250YWluZXInXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaWdub3JlVHJpZ2dlcnMgPSBmYWxzZTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBfdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9wb3BvdmVyQ29udGFpbmVyOiBQb3BvdmVyQ29udGFpbmVyRGlyZWN0aXZlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgLyoqIE1lcmdlIG9ic2VydmFibGVzIC0gY2xvc2Ugb3IgZGVzdHJveSAqL1xuICAgICAgICB0aGlzLl9yZWZyZXNoJCA9IG1lcmdlKHRoaXMuaXNPcGVuQ2hhbmdlLCB0aGlzLl9vbkRlc3Ryb3kkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgaW5pdGlhbGlzaW5nIHRoZSBwb3BvdmVyIHNlcnZpY2UgLSBzaG91bGQgYmUgY2FsbGVkLCBhZnRlciB2aWV3IGlzIGluaXRpYWxpc2VkLCBwYXJhbXM6XG4gICAgICogLSB0cmlnZ2VyRWxlbWVudCAtIGVsZW1lbnQsIHdoaWNoIGlzIGVxdWl2YWxlbnQgZm9yIGNka092ZXJsYXlPcmlnaW4sIG9yIGZkLXBvcG92ZXItY29udHJvbCxcbiAgICAgKiAgIGJ5IGRlZmF1bHQgdG8gdGhpcyBlbGVtZW50IHRoZSBwb3BvdmVyIGJvZHkgd2lsbCBsYmUgYXBwZW5kZWQgYW5kIGV2ZW50cyBvbiB0aGlzIGVsZW1lbnQgd2lsbCB0cmlnZ2VyXG4gICAgICogICBwb3BvdmVyJ3MgIHRvZ2dsZVxuICAgICAqIC0gY29uZmlnIC0gY29uZmlndXJhdGlvbiBvYmplY3QgLSBpbiB0aGlzIGNhc2UgdGhlIGludGVudGlvbiBpcyB0byB1c2UgaW5oZXJpdGFuY2Ugb2YgQmFzZVBvcG92ZXJDbGFzcyBpbiBjb21wb25lbnRcbiAgICAgKiAtIHRlbXBsYXRlRGF0YSAtIGluIGNhc2Ugb2YgaGF2aW5nIGFscmVhZHkgUG9wb3ZlckJvZHlDb21wb25lbnQsIHRoZXJlIGlzIHdheSB0byBwYXNzIGNvbnRhaW5lciwgdGVtcGxhdGUgY29udGFpbmluZ1xuICAgICAqICAgUG9wb3ZlckNvbXBvbmVudCBhbmQgUG9wb3ZlckNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIGluaXRpYWxpc2UoXG4gICAgICAgIHRyaWdnZXJFbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBjb25maWc/OiBCYXNlUG9wb3ZlckNsYXNzLFxuICAgICAgICB0ZW1wbGF0ZURhdGE/OiBQb3BvdmVyVGVtcGxhdGUgfCBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRlbXBsYXRlRGF0YSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlQ29udGVudCA9IHRlbXBsYXRlRGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlRGF0YSA9IHRlbXBsYXRlRGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRyaWdnZXJFbGVtZW50O1xuXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaENvbmZpZ3VyYXRpb24oY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlnZ2VyTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHdyYXBwZXIgY29udGFpbmVyIGhlaWdodCBjaGFuZ2VzIG91dHNpZGUsIHJlZnJlc2ggcG9wb3ZlciBwb3NpdGlvbi5cbiAgICAgICAgdGhpcy5fcG9wb3ZlckNvbnRhaW5lcj8ucmVmcmVzaFBvc2l0aW9uJC5waXBlKHRha2VVbnRpbCh0aGlzLl9yZWZyZXNoJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBwb3BvdmVyLiAqL1xuICAgIGNsb3NlKGZvY3VzQWN0aXZlRWxlbWVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5pc09wZW47XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIGlmIChwcmV2U3RhdGUgIT09IHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZvY3VzTGFzdEFjdGl2ZUVsZW1lbnRCZWZvcmVPcGVuKGZvY3VzQWN0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBwb3BvdmVyLiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICgoIXRoaXMuX292ZXJsYXlSZWYgfHwgIXRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkgJiYgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHRoaXMuX2dldE92ZXJsYXlDb25maWcocG9zaXRpb24pKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX3BsYWNlbWVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wbGFjZW1lbnRDb250YWluZXIgaW5zdGFuY2VvZiBFbGVtZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3BsYWNlbWVudENvbnRhaW5lci5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX3BsYWNlbWVudENvbnRhaW5lcjtcblxuICAgICAgICAgICAgICAgIHBsYWNlbWVudEVsZW1lbnQuYXBwZW5kKHRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGVEYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXR0YWNoVGVtcGxhdGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXR0YWNoQm9keUNvbXBvbmVudCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zdG9wQ2xvc2VMaXN0ZW5pbmckLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlbkZvclBvc2l0aW9uQ2hhbmdlKHBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbGxDb250cm9sTW9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuaXNPcGVuO1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHByZXZTdGF0ZSAhPT0gdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5PbkNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCk7XG4gICAgICAgICAgICB0aGlzLl9vbkxvYWQubmV4dCh0aGlzLl9nZXRQb3BvdmVyQm9keSgpLl9lbGVtZW50UmVmKTtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBtZXRob2QgdXBkYXRpbmcgdGVtcGxhdGUgb3IgdGV4dCBpbnNpZGUgcmVuZGVyZWQgUG9wb3ZlckJvZHkgKi9cbiAgICB1cGRhdGVDb250ZW50KFxuICAgICAgICBzdHJpbmdDb250ZW50OiBOdWxsYWJsZTxzdHJpbmc+IHwgTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj4sXG4gICAgICAgIHRlbXBsYXRlQ29udGVudDogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGVtcGxhdGVDb250ZW50ID0gIXRlbXBsYXRlQ29udGVudFxuICAgICAgICAgICAgPyB0eXBlb2Ygc3RyaW5nQ29udGVudCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IHN0cmluZ0NvbnRlbnRcbiAgICAgICAgICAgIDogdGVtcGxhdGVDb250ZW50O1xuICAgICAgICBzdHJpbmdDb250ZW50ID0gdHlwZW9mIHN0cmluZ0NvbnRlbnQgPT09ICdzdHJpbmcnID8gc3RyaW5nQ29udGVudCA6IG51bGw7XG4gICAgICAgIHRoaXMuc3RyaW5nQ29udGVudCA9IHN0cmluZ0NvbnRlbnQ7XG4gICAgICAgIHRoaXMudGVtcGxhdGVDb250ZW50ID0gdGVtcGxhdGVDb250ZW50O1xuICAgICAgICBpZiAodGhpcy5fZ2V0UG9wb3ZlckJvZHkoKSkge1xuICAgICAgICAgICAgdGhpcy5fcGFzc1ZhcmlhYmxlc1RvQm9keSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHBvcG92ZXIgb3BlbiBzdGF0ZSAqL1xuICAgIHRvZ2dsZShvcGVuQWN0aW9uID0gdHJ1ZSwgY2xvc2VBY3Rpb24gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgY2xvc2VBY3Rpb24gJiYgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3BlbkFjdGlvbiAmJiB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBjYWxsZWQgdG8gY2hhbmdlIHBvc2l0aW9uIG9mIHBvcG92ZXIsXG4gICAgICogcmVjb21tZW5kZWQgdG8gYmUgdXNlZCBvbmx5IHdoZW4gcG9wb3ZlciBpcyBvcGVuZWQsIG90aGVyd2lzZSBjaGFuZ2UgcG9zaXRpb24gb3IgY2RrUGxhY2VtZW50XG4gICAgICovXG4gICAgYXBwbHlOZXdQb3NpdGlvbihwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVmUG9zaXRpb24gPSB0aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9ucyk7XG4gICAgICAgIHRoaXMuX2xpc3RlbkZvclBvc2l0aW9uQ2hhbmdlKHJlZlBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcyk7XG4gICAgICAgIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneShyZWZQb3NpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQgdG8gcmVmcmVzaCBwb3NpdGlvbiBvZiBvcGVuZWQgcG9wb3ZlciAqL1xuICAgIHJlZnJlc2hQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogVGVtcG9yYXJ5IHNldHMgdGhlIGlnbm9yaW5nIG9mIHRoZSBldmVudCB0cmlnZ2Vycy4gKi9cbiAgICBzZXRJZ25vcmVUcmlnZ2VycyhpZ25vcmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faWdub3JlVHJpZ2dlcnMgPSBpZ25vcmU7XG4gICAgfVxuXG4gICAgLyoqIEVxdWl2YWxlbnQgZm9yIG5nT25EZXN0cm95IG1ldGhvZCwgd2hldGhlciBjb21wb25lbnQgaXMgZGVzdHJveWVkLCB0aGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkICovXG4gICAgb25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyTGlzdGVuZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdGhhdCBzZXRzIGNvbmZpZ3VyYXRpb24vb3B0aW9ucywgaXQgZGV0ZWN0cyBpZiB0aGVyZSBpcyBzb21ldGhpbmcgY2hhbmdlZCBhbmQgb3ZlcndyaXRlcyB0aGVtXG4gICAgICovXG4gICAgcmVmcmVzaENvbmZpZ3VyYXRpb24oY29uZmlnOiBCYXNlUG9wb3ZlckNsYXNzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BsYWNlbWVudENvbnRhaW5lciA9IGNvbmZpZy5wbGFjZW1lbnRDb250YWluZXI7XG4gICAgICAgIGNvbnN0IG9ubHlDaGFuZ2VkID0gT2JqZWN0LmtleXMobmV3IEJhc2VQb3BvdmVyQ2xhc3MoKSkuZmlsdGVyKChrZXkpID0+IHRoaXNba2V5XSAhPT0gY29uZmlnW2tleV0pO1xuXG4gICAgICAgIGlmIChvbmx5Q2hhbmdlZC5pbmNsdWRlcygnaXNPcGVuJykpIHtcbiAgICAgICAgICAgIGlmIChjb25maWcuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbmx5Q2hhbmdlZC5pbmNsdWRlcygncGxhY2VtZW50Q29udGFpbmVyJykpIHtcbiAgICAgICAgICAgIHRoaXMuX3BsYWNlbWVudENvbnRhaW5lciA9IGNvbmZpZy5wbGFjZW1lbnRDb250YWluZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogVE9ET1xuICAgICAgICAgKiBUaGlzIG92ZXJyaWRpbmcgaXMgZGFuZ2Vyb3VzIHRoaW5nIGFuZCBsZWFkcyB0byB1bmV4cGVjdGVkIGJlaGF2aW9yXG4gICAgICAgICAqIFdlIGhhdmUgdG8gYXZvaWQgdGhpcy5cbiAgICAgICAgICovXG4gICAgICAgIG9ubHlDaGFuZ2VkLmZvckVhY2goKGtleSkgPT4gKHRoaXNba2V5XSA9IGNvbmZpZ1trZXldKSk7XG5cbiAgICAgICAgaWYgKG9ubHlDaGFuZ2VkLmluY2x1ZGVzKCd0cmlnZ2VycycpKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVHJpZ2dlckxpc3RlbmVycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGluIG9yZGVyXG4gICAgICogdG8gcG9zdHBvbmUgdGhlIG1haW4gZnVuY3Rpb25hbGl0eSBidXQgYmUgYWJsZVxuICAgICAqIHRvIGVuYWJsZSBpdCBiYWNrIGluIHRoZSBmdXR1cmUgYnkgaW5pdGlhbGlzZSgpXG4gICAgICovXG4gICAgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlVHJpZ2dlckxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKiBSZWZyZXNoIGxpc3RlbmVycyBvbiB0cmlnZ2VyIGVsZW1lbnQgZXZlbnRzICovXG4gICAgX3JlZnJlc2hUcmlnZ2VyTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXplVHJpZ2dlcnMoKS5mb3JFYWNoKCh0cmlnZ2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRSZWYucHVzaChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuX3RyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRyaWdnZXIudHJpZ2dlciwgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZVRyaWdnZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VBY3Rpb24gPSAhIXRyaWdnZXIuY2xvc2VBY3Rpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGVuQWN0aW9uID0gISF0cmlnZ2VyLm9wZW5BY3Rpb247XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShvcGVuQWN0aW9uLCBjbG9zZUFjdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdHJpZ2dlciBlbGVtZW50IGFuZCByZWZyZXNoZXMgdGhlIGxpc3RlbmVycy5cbiAgICAgKiBAcGFyYW0gdHJpZ2dlciBUcmlnZ2VyIGVsZW1lbnQgcmVmLlxuICAgICAqL1xuICAgIHVwZGF0ZVRyaWdnZXJFbGVtZW50KHRyaWdnZXI6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyO1xuICAgICAgICB0aGlzLl9yZWZyZXNoVHJpZ2dlckxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbm9ybWFsaXplVHJpZ2dlcnMoKTogVHJpZ2dlckNvbmZpZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpZ2dlcnMubWFwKCh0cmlnZ2VyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0cmlnZ2VyID09PSAnb2JqZWN0JyAmJiB0cmlnZ2VyLnRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJpZ2dlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb2RkTnVtYmVyID0gaXNPZGQoaW5kZXggKyAxKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpb246IHRoaXMudHJpZ2dlcnMubGVuZ3RoID09PSAxIHx8IG9kZE51bWJlcixcbiAgICAgICAgICAgICAgICBjbG9zZUFjdGlvbjogdGhpcy50cmlnZ2Vycy5sZW5ndGggPT09IDEgfHwgIW9kZE51bWJlcixcbiAgICAgICAgICAgICAgICBzdG9wUHJvcGFnYXRpb246IGZhbHNlXG4gICAgICAgICAgICB9IGFzIFRyaWdnZXJDb25maWc7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheUNvbmZpZyhwb3NpdGlvbjogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KTogT3ZlcmxheUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuX2dldERpcmVjdGlvbigpO1xuXG4gICAgICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0aGlzLmNsb3NlT25OYXZpZ2F0aW9uLFxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogcG9zaXRpb24sXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneSB8fCB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdwb3J0UnVsZXJcbiAgICAgICAgICAgIC5jaGFuZ2UoMTUpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fcmVmcmVzaCQpLCBzdGFydFdpdGgoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2FwcGx5V2lkdGhPdmVybGF5KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlyZWN0aW9uKCk6ICdydGwnIHwgJ2x0cicge1xuICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybiAnbHRyJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlLnJ0bC5nZXRWYWx1ZSgpID8gJ3J0bCcgOiAnbHRyJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFBvc2l0aW9uU3RyYXRlZ3koZm9yY2VkUG9zaXRpb25zPzogQ29ubmVjdGVkUG9zaXRpb25bXSk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGxldCByZXN1bHRQb3NpdGlvbiA9IGZvcmNlZFBvc2l0aW9ucyA/IGZvcmNlZFBvc2l0aW9ucyA6IHRoaXMuX2dldFBvc2l0aW9ucygpO1xuXG4gICAgICAgIGlmICghdGhpcy5maXhlZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXN1bHRQb3NpdGlvbiA9IHJlc3VsdFBvc2l0aW9uLmNvbmNhdChHZXREZWZhdWx0UG9zaXRpb24ocmVzdWx0UG9zaXRpb24pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5hcHBlbmRUbyB8fCB0aGlzLl90cmlnZ2VyRWxlbWVudClcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKHJlc3VsdFBvc2l0aW9uKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKHRydWUpO1xuICAgIH1cblxuICAgIC8qKiByZW1vdmUgbGlzdGVuZXJzIGZyb20gdHJpZ2dlciBlbGVtZW50IGV2ZW50cyAqL1xuICAgIHByaXZhdGUgX3JlbW92ZVRyaWdnZXJMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2V2ZW50UmVmLmZvckVhY2goKGV2ZW50KSA9PiBldmVudCgpKTtcbiAgICAgICAgdGhpcy5fZXZlbnRSZWYgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQXR0YWNoIHRlbXBsYXRlIGNvbnRhaW5pbmcgcG9wb3ZlciBib2R5IHRvIG92ZXJsYXkgKi9cbiAgICBwcml2YXRlIF9hdHRhY2hUZW1wbGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGFzc1ZhcmlhYmxlc1RvQm9keSgpO1xuICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGVEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fdGVtcGxhdGVEYXRhLnRlbXBsYXRlLCB0aGlzLl90ZW1wbGF0ZURhdGEuY29udGFpbmVyKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIFBvcG92ZXJCb2R5Q29tcG9uZW50IGFuZCBhdHRhY2ggaXQgaW50byBvdmVybGF5ICovXG4gICAgcHJpdmF0ZSBfYXR0YWNoQm9keUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoUG9wb3ZlckJvZHlDb21wb25lbnQsIG51bGwsIHRoaXMuX2luamVjdG9yKSk7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJCb2R5ID0gb3ZlcmxheS5pbnN0YW5jZTtcbiAgICAgICAgdGhpcy5fcGFzc1ZhcmlhYmxlc1RvQm9keSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRm9yUG9zaXRpb25DaGFuZ2UocG9zaXRpb25DaGFuZ2U6IE9ic2VydmFibGU8Q29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9wbGFjZW1lbnRSZWZyZXNoJC5uZXh0KCk7XG4gICAgICAgIHBvc2l0aW9uQ2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fcGxhY2VtZW50UmVmcmVzaCQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMubm9BcnJvdyAmJiAhIXRoaXMuX2dldFBvcG92ZXJCb2R5KCkpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91cywgY3VycmVudCkgPT4gcHJldmlvdXMuY29ubmVjdGlvblBhaXIgPT09IGN1cnJlbnQuY29ubmVjdGlvblBhaXIpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5fZ2V0UG9wb3ZlckJvZHkoKS5fc2V0QXJyb3dTdHlsZXMoZXZlbnQuY29ubmVjdGlvblBhaXIsIHRoaXMuX2dldERpcmVjdGlvbigpKSk7XG4gICAgfVxuXG4gICAgLyoqIFN1YnNjcmliZSB0byBjbG9zZSBldmVudHMgZnJvbSBDREsgT3ZlcmxheSwgdG8gdGhyb3cgcHJvcGVyIGV2ZW50cywgY2hhbmdlIHZhbHVlcyAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsb3NlRXZlbnRzJCA9IG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLFxuICAgICAgICAgICAgdGhpcy5fZ2V0UG9wb3ZlckJvZHkoKS5vbkNsb3NlLFxuICAgICAgICAgICAgdGhpcy5fb3V0c2lkZUNsaWNrcyQoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaW5hbGl6ZXIkID0gbWVyZ2UodGhpcy5fc3RvcENsb3NlTGlzdGVuaW5nJCwgdGhpcy5fcmVmcmVzaCQpO1xuICAgICAgICBjbG9zZUV2ZW50cyQucGlwZSh0YWtlVW50aWwoZmluYWxpemVyJCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgIH1cblxuICAgIC8qKiBMaXN0ZW5lciBmb3IgY2xpY2sgZXZlbnRzICovXG4gICAgcHJpdmF0ZSBfb3V0c2lkZUNsaWNrcyQoKTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PiB7XG4gICAgICAgIHJldHVybiBtZXJnZSh0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKSwgdGhpcy5fb3ZlcmxheVJlZi5fb3V0c2lkZVBvaW50ZXJFdmVudHMpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiB0aGlzLl9zaG91bGRDbG9zZShldmVudCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG91bGRDbG9zZShldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbk91dHNpZGVDbGljayAmJlxuICAgICAgICAgICAgIXRoaXMuX3RyaWdnZXJDb250YWluc1RhcmdldChldmVudCkgJiZcbiAgICAgICAgICAgICF0aGlzLl90YXJnZXRJc1BvcG92ZXJNb2JpbGVEaWFsb2coZXZlbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YXJnZXRJc1BvcG92ZXJNb2JpbGVEaWFsb2coZXZlbnQ6IE1vdXNlRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX21vYmlsZSkge1xuICAgICAgICAgICAgbGV0IGVsID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIHdoaWxlIChlbCkge1xuICAgICAgICAgICAgICAgIGlmIChlbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtbW9iaWxlLXBvcG92ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RXZlbnRUYXJnZXQoZXZlbnQ6IEV2ZW50KTogRXZlbnRUYXJnZXQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmNvbXBvc2VkUGF0aCA/IGV2ZW50LmNvbXBvc2VkUGF0aCgpWzBdIDogZXZlbnQudGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJpZ2dlckNvbnRhaW5zVGFyZ2V0KGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IHRoaXMuX3RyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHJldHVybiB0cmlnZ2VyRWxlbWVudC5jb250YWlucyh0aGlzLl9nZXRFdmVudFRhcmdldChldmVudCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0UG9zaXRpb25zKCk6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICAgICAgICBpZiAodGhpcy5jZGtQb3NpdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNka1Bvc2l0aW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtQb3BvdmVyUG9zaXRpb24uZ2V0Q2RrUGxhY2VtZW50KHRoaXMucGxhY2VtZW50LCB0aGlzLl9nZXREaXJlY3Rpb24oKSldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXBwbHlXaWR0aE92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoTGltaXQgPSB0aGlzLm1heFdpZHRoID8gdGhpcy5tYXhXaWR0aCA6IE1BWF9CT0RZX1NJWkU7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5taW4odGhpcy5fZ2V0VHJpZ2dlcldpZHRoKCksIG1heFdpZHRoTGltaXQpO1xuICAgICAgICBpZiAodGhpcy5maWxsQ29udHJvbE1vZGUgPT09ICdhdC1sZWFzdCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2dldFBvcG92ZXJCb2R5KCkuX3BvcG92ZXJCb2R5TWluV2lkdGggPSB3aWR0aDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGxDb250cm9sTW9kZSA9PT0gJ2VxdWFsJykge1xuICAgICAgICAgICAgdGhpcy5fZ2V0UG9wb3ZlckJvZHkoKS5fcG9wb3ZlckJvZHlXaWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Bhc3NWYXJpYWJsZXNUb0JvZHkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9nZXRQb3BvdmVyQm9keSgpO1xuICAgICAgICBib2R5LnRleHQgPSB0aGlzLnN0cmluZ0NvbnRlbnQ7XG4gICAgICAgIGJvZHkuX2FkZGl0aW9uYWxCb2R5Q2xhc3MgPSB0aGlzLmFkZGl0aW9uYWxCb2R5Q2xhc3M7XG4gICAgICAgIGJvZHkuX2ZvY3VzVHJhcHBlZCA9IHRoaXMuZm9jdXNUcmFwcGVkO1xuICAgICAgICBib2R5Ll9tYXhXaWR0aCA9IHRoaXMubWF4V2lkdGg7XG4gICAgICAgIGJvZHkuX25vQXJyb3cgPSB0aGlzLm5vQXJyb3c7XG4gICAgICAgIGJvZHkuX2ZvY3VzQXV0b0NhcHR1cmUgPSB0aGlzLmZvY3VzQXV0b0NhcHR1cmU7XG4gICAgICAgIGJvZHkuX2Rpc2FibGVTY3JvbGxiYXIgPSB0aGlzLmRpc2FibGVTY3JvbGxiYXI7XG4gICAgICAgIGJvZHkuX3RhYmJhYmxlU2Nyb2xsYmFyID0gdGhpcy50YWJiYWJsZVNjcm9sbGJhcjtcbiAgICAgICAgYm9keS5fdGVtcGxhdGVUb0Rpc3BsYXkgPSB0aGlzLnRlbXBsYXRlQ29udGVudCE7XG4gICAgICAgIGJvZHkuX2Nsb3NlT25Fc2NhcGVLZXkgPSB0aGlzLmNsb3NlT25Fc2NhcGVLZXk7XG4gICAgICAgIGJvZHkuX2JvZHlSb2xlID0gdGhpcy5fYm9keVJvbGU7XG4gICAgICAgIGJvZHkuX2JvZHlJZCA9IHRoaXMuX2JvZHlJZDtcbiAgICAgICAgYm9keS5fcmVzaXphYmxlID0gdGhpcy5yZXNpemFibGU7XG4gICAgICAgIGJvZHkuX3NldEJvZHlDb21wb25lbnRDbGFzc2VzKHRoaXMuYWRkaXRpb25hbEJvZHlDb21wb25lbnRDbGFzc2VzKTtcbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VHJpZ2dlcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0UG9wb3ZlckJvZHkoKTogUG9wb3ZlckJvZHlDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVEYXRhPy5wb3BvdmVyQm9keSB8fCB0aGlzLl9wb3BvdmVyQm9keTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9nZXRQb3BvdmVyQm9keSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9nZXRQb3BvdmVyQm9keSgpLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudChmb2N1c0xhc3RFbGVtZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoZm9jdXNMYXN0RWxlbWVudCAmJiB0aGlzLmZvY3VzQXV0b0NhcHR1cmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50ID0gPEhUTUxFbGVtZW50PmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLl9nZXRQb3BvdmVyQm9keSgpPy5fZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c0xhc3RBY3RpdmVFbGVtZW50QmVmb3JlT3Blbihmb2N1c0xhc3RFbGVtZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoZm9jdXNMYXN0RWxlbWVudCAmJiB0aGlzLmZvY3VzQXV0b0NhcHR1cmUgJiYgdGhpcy5fbGFzdEFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -639,15 +639,15 @@ class PopoverService extends BasePopoverClass {
639
639
  }
640
640
  /** Closes the popover. */
641
641
  close(focusActiveElement = true) {
642
- if (this._overlayRef && this._overlayRef.hasAttached()) {
642
+ if (this._overlayRef) {
643
643
  this._overlayRef.dispose();
644
- const prevState = this.isOpen;
645
- this.isOpen = false;
646
- if (prevState !== this.isOpen) {
647
- this.isOpenChange.emit(this.isOpen);
648
- }
649
- this._focusLastActiveElementBeforeOpen(focusActiveElement);
650
644
  }
645
+ const prevState = this.isOpen;
646
+ this.isOpen = false;
647
+ if (prevState !== this.isOpen) {
648
+ this.isOpenChange.emit(this.isOpen);
649
+ }
650
+ this._focusLastActiveElementBeforeOpen(focusActiveElement);
651
651
  }
652
652
  /** Opens the popover. */
653
653
  open() {
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-popover.mjs","sources":["../../../../libs/core/src/lib/popover/base/base-popover.class.ts","../../../../libs/core/src/lib/popover/popover-body.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-footer.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-header.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.html","../../../../libs/core/src/lib/popover/popover-container/popover-container.directive.ts","../../../../libs/core/src/lib/popover/popover-control/popover-control.component.ts","../../../../libs/core/src/lib/popover/popover.interface.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.html","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.module.ts","../../../../libs/core/src/lib/popover/popover-service/popover.service.ts","../../../../libs/core/src/lib/popover/popover-trigger.directive.ts","../../../../libs/core/src/lib/popover/tokens.ts","../../../../libs/core/src/lib/popover/popover.component.ts","../../../../libs/core/src/lib/popover/popover.component.html","../../../../libs/core/src/lib/popover/popover.module.ts","../../../../libs/core/src/lib/popover/fundamental-ngx-core-popover.ts"],"sourcesContent":["import { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\nimport { Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Placement, PopoverFillMode } from '@fundamental-ngx/core/shared';\n\n@Directive()\nexport class BasePopoverClass {\n /** Whether to close the popover on router navigation start. */\n @Input()\n closeOnNavigation = true;\n\n /** Whether the popover is disabled. */\n @Input()\n @HostBinding('class.fd-popover-custom--disabled')\n disabled = false;\n\n /** Maximum width of popover body in px, prevents from overextending body by `fillControlMode` */\n @Input()\n maxWidth: Nullable<number> = null;\n\n /** Whether the popover should have an arrow. */\n @Input()\n noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalBodyClass: string | null = null;\n\n /** Classes that should be applied to fd-popover-body component directly. */\n @Input()\n additionalBodyComponentClasses: string | null = null;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalTriggerClass: string | null = null;\n\n /** Whether the popover should close when the escape key is pressed. */\n @Input()\n closeOnEscapeKey = true;\n\n /** Whether to wrap content with fd-scrollbar directive. */\n @Input()\n disableScrollbar = false;\n\n /** Should fd-scrollbar have tabindex*/\n @Input()\n tabbableScrollbar = true;\n\n /**\n * The placement of the popover.\n * It can be one of:\n * top, top-start, top-end, bottom, bottom-start, bottom-end,\n * right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement | null = null;\n\n /**\n * The trigger events that will open/close the popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp) or a config object for the corresponding event.\n * Using the config object allows to specify whether an event should apply both for open and close actions or only some of them.\n *\n * If array of triggers consists only of one event, it will be treated at a toggle event (open and close)\n * If array of trigger consists of more than one event, each odd event will be treated as an open event for the popover,\n * and each even event will be treated as closing event for the popover.\n *\n * Consider the following value for `triggers`:\n * ```\n * [\n * 'click' // basically it's an alias for \"{ trigger: 'click', openAction: true, closeAction: true }\"\n * ]\n * ```\n * ```\n * [\n * 'mouseenter' // Shortcut for \"{ trigger: 'mouseenter', openAction: true, closeAction: false }\", and will only open the popover.\n * 'mouseleave' // Shortcut for \"{ trigger: 'mouseleave', openAction: false, closeAction: true }\" and will only close the popover.\n * ]\n * ```\n * ```\n * [\n * { trigger: 'mouseenter', openAction: true, closeAction: true }, // \"mouseenter\" will toggle the popover.\n * { trigger: 'mouseleave', openAction: true, closeAction: true } // \"mouseleave\" will toggle the popover.\n * ]\n * ```\n *\n * @default ['click']\n */\n @Input()\n triggers: (string | TriggerConfig)[] = ['click'];\n\n /** Whether the popover is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Whether the popover should close when a click is made outside its boundaries. */\n @Input()\n closeOnOutsideClick = true;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = false;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n @Input()\n focusAutoCapture = false;\n\n /**\n * Scroll strategy, there are 4 accepted\n * - CloseScrollStrategy\n * - NoopScrollStrategy\n * - BlockScrollStrategy\n * - RepositionScrollStrategy ( default )\n */\n @Input()\n scrollStrategy: ScrollStrategy | null = null;\n\n /**\n * List of positions options for overlay defined by angular CDK.\n * Positions will be taken in order, same like on array. If first position provided doesn't fit to window,\n * another will be used\n * More information can be found in https://material.angular.io/cdk/overlay/api\n */\n @Input()\n cdkPositions: ConnectedPosition[] | null = null;\n\n /**\n * Preset options for the popover body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n @Input()\n fillControlMode: Nullable<PopoverFillMode> = null;\n\n /** The element to which the overlay is attached. By default it is body */\n @Input()\n appendTo: Nullable<ElementRef | Element> = null;\n\n /** Placement of the popover element. */\n @Input()\n placementContainer: Nullable<ElementRef | Element>;\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** Whether the popover body is resizable. */\n @Input()\n resizable = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden Aria role for the popover body. */\n _bodyRole: string | null = null;\n\n /** @hidden ID for the popover body. */\n _bodyId: string | null = null;\n}\n\n/**\n * Config for the trigger event, which allows to specify\n * whether an event should apply both for open and close actions or only some of them\n */\nexport interface TriggerConfig {\n trigger: string;\n openAction: boolean;\n closeAction: boolean;\n stopPropagation?: boolean;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBody]',\n standalone: true\n})\nexport class PopoverBodyDirective {\n /**\n * The template to be used as the popover's body.\n **/\n readonly templateRef = inject<TemplateRef<void>>(TemplateRef);\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyFooter], [fd-popover-body-footer]',\n standalone: true\n})\nexport class PopoverBodyFooterDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-footer')\n fdPopoverBodyFooterClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyHeader], [fd-popover-body-header]',\n standalone: true\n})\nexport class PopoverBodyHeaderDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-header')\n fdPopoverBodyHeaderClass = true;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { CdkScrollable, ConnectionPositionPair } from '@angular/cdk/overlay';\n\nimport { Subject } from 'rxjs';\n\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { KeyUtil, Nullable, ResizeDirective, ResizeHandleDirective } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-body',\n templateUrl: './popover-body.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./popover-body.component.scss'],\n providers: [contentDensityObserverProviders({ alwaysAddModifiers: true })],\n standalone: true,\n imports: [\n A11yModule,\n NgIf,\n CdkScrollable,\n ScrollbarDirective,\n NgTemplateOutlet,\n ResizeHandleDirective,\n ResizeDirective\n ]\n})\nexport class PopoverBodyComponent implements AfterViewInit {\n /** Minimum width of the popover body element. */\n @Input()\n minWidth: Nullable<string>;\n\n /** Maximum width of the popover body element. */\n @Input()\n maxWidth: Nullable<string>;\n\n /** Minimum height of the popover body element. */\n @Input()\n minHeight: Nullable<string>;\n\n /** Maximum height of the popover body element. */\n @Input()\n maxHeight: Nullable<string>;\n\n /** @hidden */\n @ViewChild(CdkTrapFocus)\n _cdkTrapFocus: CdkTrapFocus;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** Whether to wrap content with fd-scrollbar directive. */\n _disableScrollbar = false;\n\n /** Should fd-scrollbar have tabindex*/\n _tabbableScrollbar = true;\n\n /** Whether the popover should have an arrow. */\n _noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n _additionalBodyClass: Nullable<string>;\n\n /** Whether the popover should be focusTrapped. */\n _focusTrapped = false;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n _focusAutoCapture = false;\n\n /** @hidden Property bind to popover's body. */\n _popoverBodyWidth: number;\n\n /** @hidden Property bind to popover's body. */\n _popoverBodyMinWidth: number;\n\n /** @hidden Property bind to popover's body. */\n _maxWidth: Nullable<number>;\n\n /** @hidden Property bind to popover's body. */\n _closeOnEscapeKey = false;\n\n /** @hidden Aria role for the popover body. */\n _bodyRole: Nullable<string> = null;\n\n /** @hidden Aria role for the popover body. */\n _bodyId: Nullable<string> = null;\n\n /** Classes added to arrow element. */\n _arrowClasses = '';\n\n /** @hidden text rendered inside popover's body. */\n text: Nullable<string> = null;\n\n /** @hidden template rendered inside popover's body. */\n _templateToDisplay: TemplateRef<any>;\n\n /** @hidden Whether the popover body is resizable. */\n _resizable = false;\n\n /** @hidden */\n _resizeHandleLocation: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'bottom-right';\n\n /** Close event from popover body */\n onClose = new Subject<void>();\n\n /** @hidden */\n private _bodyComponentClasses: string | null = null;\n\n /** @hidden */\n constructor(\n readonly _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private readonly _renderer: Renderer2,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** Handler escape keydown */\n @HostListener('keyup', ['$event'])\n bodyKeyupHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE) && this._closeOnEscapeKey) {\n // In case if popover belongs to the element inside dialog\n event.stopPropagation();\n this.onClose.next();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this._scrollbar) {\n this._scrollbar._inPopover = true;\n }\n }\n\n /** @hidden */\n _setBodyComponentClasses(classes: string | null): void {\n this._bodyComponentClasses?.split(' ').forEach((klass) => {\n this._renderer.removeClass(this._elementRef.nativeElement, klass);\n });\n this._bodyComponentClasses = classes;\n if (!this._bodyComponentClasses) {\n return;\n }\n this._bodyComponentClasses.split(' ').forEach((klass) => {\n this._renderer.addClass(this._elementRef.nativeElement, klass);\n });\n }\n\n /** @hidden */\n _setArrowStyles(position: ConnectionPositionPair, rtl: 'rtl' | 'ltr'): void {\n this._resizeHandleLocation = `${position.overlayY === 'top' ? 'bottom' : 'top'}-${\n position.overlayX === 'start' ? 'right' : 'left'\n }`;\n if (this._noArrow) {\n this._arrowClasses = '';\n return;\n }\n\n let arrowClasses: string[] = [];\n\n if (\n position.overlayY !== position.originY &&\n position.originY !== 'center' &&\n position.overlayY !== 'center' &&\n position.overlayX === position.originX\n ) {\n arrowClasses = [\n `fd-popover__body--${position.overlayY === 'top' ? 'below' : 'above'}`,\n `fd-popover__body--${position.overlayX === 'start' ? 'left' : 'right'}`,\n `fd-popover__body--arrow-${position.overlayY}`,\n `fd-popover__body--arrow-x-${position.originX}`\n ];\n } else if (\n position.overlayX !== position.originX &&\n position.overlayX !== 'center' &&\n position.originX !== 'center' &&\n position.originY === position.overlayY\n ) {\n let overlayX = position.overlayX;\n if (rtl === 'rtl') {\n overlayX = position.overlayX === 'end' ? 'start' : 'end';\n }\n arrowClasses = [\n `fd-popover__body--${overlayX === 'start' ? 'after' : 'before'}`,\n `fd-popover__body--${overlayX === 'start' ? 'left' : 'right'}`,\n `fd-popover__body--${position.overlayY === 'center' ? 'middle' : position.overlayY}`,\n `fd-popover__body--arrow-${overlayX === 'start' ? 'left' : 'right'}`,\n `fd-popover__body--arrow-y-${position.originY} `\n ];\n } else {\n arrowClasses = ['fd-popover__body--no-arrow'];\n }\n\n this._arrowClasses = arrowClasses.join(' ');\n\n this.detectChanges();\n }\n\n /** @hidden */\n detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n _focusFirstTabbableElement(): void {\n if (this._focusAutoCapture) {\n this._cdkTrapFocus.focusTrap.focusFirstTabbableElement();\n }\n }\n}\n","<div\n class=\"fd-popover__body fd-popover__body--static\"\n [class.fd-popover__body--no-arrow]=\"_noArrow\"\n [class.fd-popover__body--resizable]=\"_resizable\"\n [class]=\"_arrowClasses + ' ' + (_additionalBodyClass || '')\"\n [cdkTrapFocus]=\"_focusTrapped\"\n [style.min-width]=\"_popoverBodyMinWidth ? null : minWidth\"\n [style.max-width]=\"_maxWidth ? null : maxWidth\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n [style.max-width.px]=\"_maxWidth\"\n [style.min-width.px]=\"_popoverBodyMinWidth\"\n [style.width.px]=\"_popoverBodyWidth\"\n [attr.role]=\"_bodyRole\"\n [attr.id]=\"_bodyId\"\n fdkResize\n [fdkResizeDisabled]=\"!_resizable\"\n [fdkResizeClass]=\"'fd-popover__body--disable-transitions'\"\n [fdkResizeHandleLocation]=\"_resizeHandleLocation\"\n>\n <div\n fd-scrollbar\n class=\"fd-popover__wrapper\"\n [overrideTabindex]=\"_tabbableScrollbar\"\n *ngIf=\"!_disableScrollbar; else renderer\"\n >\n <ng-container *ngTemplateOutlet=\"renderer\"></ng-container>\n </div>\n <span fdkResizeHandle *ngIf=\"_resizable\" class=\"fd-popover__resize-handle\"></span>\n</div>\n\n<ng-template #renderer>\n <ng-content select=\"[fd-popover-body-header]\"></ng-content>\n\n <ng-content select=\"[fd-popover-body-subheader]\"></ng-content>\n\n <ng-content></ng-content>\n\n {{ text }}\n\n <ng-container *ngTemplateOutlet=\"_templateToDisplay\"></ng-container>\n\n <ng-content select=\"[fd-popover-body-footer]\"></ng-content>\n</ng-template>\n","import { Directive, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[fdPopoverContainer]',\n standalone: true\n})\nexport class PopoverContainerDirective implements OnInit, OnDestroy {\n /** Subject which emits when popover position refresh is required. */\n refreshPosition$ = new Subject<void>();\n\n /** @hidden */\n private _destroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(private _elmRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnInit(): void {\n resizeObservable(this._elmRef.nativeElement)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this.refreshPosition$.next();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","import { AfterContentChecked, ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-control, [fdPopoverControl]',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class PopoverControlComponent implements AfterContentChecked {\n /** @hidden */\n _tabbable = false;\n\n /** @hidden */\n constructor(public elRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentChecked(): void {\n if (this._tabbable) {\n this.makeTabbable();\n }\n }\n\n /** @hidden */\n makeTabbable(): void {\n const elemChild = this.elRef.nativeElement.children[0];\n if (elemChild && elemChild.getAttribute('tabindex') !== '-1') {\n elemChild.tabIndex = '0';\n }\n }\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const POPOVER_COMPONENT = new InjectionToken<PopoverInterface>('PopoverInterface');\n\n/**\n * Popover Interface to have typing and avoid circular dependency between\n * PopoverComponent <==> PopoverMobileComponent\n */\nexport interface PopoverInterface extends MobileMode {\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogModule, DialogService } from '@fundamental-ngx/core/dialog';\nimport { POPOVER_COMPONENT, PopoverInterface } from '../popover.interface';\nimport { PopoverChildContent } from '../popover-child-content.interface';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\n\nlet mobilePopoverUniqueId = 0;\n\n@Component({\n selector: 'fd-popover-mobile',\n templateUrl: './popover-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [DialogModule, TitleComponent, NgIf, CdkScrollable, ScrollbarDirective, NgTemplateOutlet]\n})\nexport class PopoverMobileComponent extends MobileModeBase<PopoverInterface> implements OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('dialogTemplate')\n _dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * from mobile class can not prefix _,\n * to avoid build issues\n */\n childContent?: PopoverChildContent = undefined;\n\n /** Current popover title */\n title: string;\n /** Dialog body content */\n viewBody: TemplateRef<any> | null;\n\n /** Dialog footer content */\n viewFooter: TemplateRef<any> | null;\n\n /** @hidden */\n readonly id = 'fd-popover-mobile-' + mobilePopoverUniqueId++;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n get titleId(): string {\n return this.id + '-title';\n }\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n private _changeDetectorref: ChangeDetectorRef,\n @Inject(POPOVER_COMPONENT) _popoverComponent: PopoverInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, _popoverComponent, MobileModeControl.POPOVER, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnPopoverOpenChange();\n\n this.title = this.mobileConfig.title || '';\n this.viewBody = this.childContent?.popoverBodyContentTemplate ?? null;\n this.viewFooter = this.childContent?.popoverFooterContentTemplate ?? null;\n\n this._changeDetectorref.markForCheck();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.dialogRef?.close();\n super.onDestroy();\n this._subscriptions.unsubscribe();\n }\n\n /** Closes the Dialog and Popover component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** @hidden Opens/closes the Dialog based on Popover isOpenChange events */\n private _listenOnPopoverOpenChange(): void {\n this._subscriptions.add(\n this._component.isOpenChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => {\n if (isOpen) {\n this._openDialog();\n } else {\n this.dialogRef.hide(true);\n }\n })\n );\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this._dialogTemplate, {\n verticalPadding: true,\n horizontalPadding: true,\n ...this.dialogConfig,\n mobile: true,\n focusTrapped: true,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement,\n responsivePadding: true,\n ariaLabelledBy: this.titleId\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" data-mobile-popover>\n <fd-dialog-header>\n <h1 fd-title [id]=\"titleId\">{{ title }}</h1>\n <button fd-dialog-close-button *ngIf=\"this.mobileConfig.hasCloseButton\" (click)=\"close()\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"viewBody\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"viewFooter\">\n <ng-container *ngTemplateOutlet=\"viewFooter\"></ng-container>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverMobileComponent } from './popover-mobile.component';\n\n@NgModule({\n imports: [CommonModule, DialogModule, ButtonModule, PopoverMobileComponent],\n exports: [PopoverMobileComponent],\n providers: [DynamicComponentService]\n})\nexport class PopoverMobileModule {}\n","import {\n ConnectedOverlayPositionChange,\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ViewportRuler\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ElementRef, Injectable, Injector, Optional, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { distinctUntilChanged, filter, startWith, takeUntil } from 'rxjs/operators';\n\nimport { Nullable, RtlService, isOdd } from '@fundamental-ngx/cdk/utils';\nimport { GetDefaultPosition, PopoverPosition } from '@fundamental-ngx/core/shared';\n\nimport { BasePopoverClass, TriggerConfig } from '../base/base-popover.class';\nimport { PopoverBodyComponent } from '../popover-body/popover-body.component';\nimport { PopoverContainerDirective } from '../popover-container/popover-container.directive';\n\nconst MAX_BODY_SIZE = 99999999;\n\nexport interface PopoverTemplate {\n container: ViewContainerRef;\n popoverBody: PopoverBodyComponent;\n template: TemplateRef<any>;\n}\n\n@Injectable()\nexport class PopoverService extends BasePopoverClass {\n /** String content displayed inside popover body */\n stringContent: Nullable<string>;\n\n /** Template content displayed inside popover body */\n templateContent: Nullable<TemplateRef<any>>;\n\n /** @hidden */\n _onLoad = new Subject<ElementRef>();\n\n /** @hidden */\n _mobile = false;\n\n /** @hidden */\n private _eventRef: (() => void)[] = [];\n\n /** @hidden */\n private _overlayRef: OverlayRef;\n\n /** @hidden */\n private _refresh$: Observable<boolean | void>;\n\n /** @hidden */\n private _stopCloseListening$ = new Subject<void>();\n\n /** @hidden */\n private readonly _placementRefresh$ = new Subject<void>();\n\n /** @hidden */\n private _popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n private _triggerElement: ElementRef;\n\n /** @hidden */\n private _lastActiveElement: HTMLElement;\n\n /** @hidden */\n private _templateData: Nullable<PopoverTemplate>;\n\n /** @hidden */\n private _placementContainer: BasePopoverClass['placementContainer'];\n\n /** @hidden */\n private _ignoreTriggers = false;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _overlay: Overlay,\n private _renderer: Renderer2,\n private _viewportRuler: ViewportRuler,\n private _injector: Injector,\n @Optional() private _rtlService: RtlService,\n @Optional() private readonly _popoverContainer: PopoverContainerDirective\n ) {\n super();\n\n /** Merge observables - close or destroy */\n this._refresh$ = merge(this.isOpenChange, this._onDestroy$);\n }\n\n /**\n * Method initialising the popover service - should be called, after view is initialised, params:\n * - triggerElement - element, which is equivalent for cdkOverlayOrigin, or fd-popover-control,\n * by default to this element the popover body will lbe appended and events on this element will trigger\n * popover's toggle\n * - config - configuration object - in this case the intention is to use inheritance of BasePopoverClass in component\n * - templateData - in case of having already PopoverBodyComponent, there is way to pass container, template containing\n * PopoverComponent and PopoverComponent instance\n */\n initialise(\n triggerElement: ElementRef,\n config?: BasePopoverClass,\n templateData?: PopoverTemplate | TemplateRef<void> | null\n ): void {\n if (templateData instanceof TemplateRef) {\n this.templateContent = templateData;\n } else {\n this._templateData = templateData;\n }\n this._triggerElement = triggerElement;\n\n if (config) {\n this.refreshConfiguration(config);\n }\n\n this._refreshTriggerListeners();\n\n if (this.isOpen) {\n this.open();\n }\n\n // If wrapper container height changes outside, refresh popover position.\n this._popoverContainer?.refreshPosition$.pipe(takeUntil(this._refresh$)).subscribe(() => {\n this.refreshPosition();\n });\n }\n\n /** Closes the popover. */\n close(focusActiveElement = true): void {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.dispose();\n\n const prevState = this.isOpen;\n this.isOpen = false;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._focusLastActiveElementBeforeOpen(focusActiveElement);\n }\n }\n\n /** Opens the popover. */\n open(): void {\n if ((!this._overlayRef || !this._overlayRef.hasAttached()) && !this.disabled && this._triggerElement) {\n const position = this._getPositionStrategy();\n this._overlayRef = this._overlay.create(this._getOverlayConfig(position));\n\n if (this._placementContainer) {\n const placementElement =\n this._placementContainer instanceof ElementRef\n ? this._placementContainer.nativeElement\n : this._placementContainer;\n\n placementElement.append(this._overlayRef.hostElement);\n }\n\n if (this._templateData) {\n this._attachTemplate();\n } else {\n this._attachBodyComponent();\n }\n\n this._stopCloseListening$.next();\n this._listenForPositionChange(position.positionChanges);\n\n if (this.fillControlMode) {\n this._listenOnResize();\n }\n\n const prevState = this.isOpen;\n this.isOpen = true;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._detectChanges();\n\n this._listenOnClose();\n this._focusFirstTabbableElement();\n this._onLoad.next(this._getPopoverBody()._elementRef);\n this._overlayRef.updatePosition();\n }\n }\n\n /** method updating template or text inside rendered PopoverBody */\n updateContent(\n stringContent: Nullable<string> | Nullable<TemplateRef<any>>,\n templateContent: Nullable<TemplateRef<any>>\n ): void {\n templateContent = !templateContent\n ? typeof stringContent === 'string'\n ? null\n : stringContent\n : templateContent;\n stringContent = typeof stringContent === 'string' ? stringContent : null;\n this.stringContent = stringContent;\n this.templateContent = templateContent;\n if (this._getPopoverBody()) {\n this._passVariablesToBody();\n }\n }\n\n /** Toggles the popover open state */\n toggle(openAction = true, closeAction = true): void {\n if (this.isOpen) {\n closeAction && this.close();\n } else {\n openAction && this.open();\n }\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n const refPosition = this._getPositionStrategy(positions);\n this._listenForPositionChange(refPosition.positionChanges);\n this._overlayRef.updatePositionStrategy(refPosition);\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._overlayRef?.updatePosition();\n }\n\n /** Temporary sets the ignoring of the event triggers. */\n setIgnoreTriggers(ignore: boolean): void {\n this._ignoreTriggers = ignore;\n }\n\n /** Equivalent for ngOnDestroy method, whether component is destroyed, this method should be called */\n onDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._removeTriggerListeners();\n if (this._overlayRef) {\n this._overlayRef.detach();\n this._overlayRef.dispose();\n }\n }\n\n /**\n * Method that sets configuration/options, it detects if there is something changed and overwrites them\n */\n refreshConfiguration(config: BasePopoverClass): void {\n this._placementContainer = config.placementContainer;\n const onlyChanged = Object.keys(new BasePopoverClass()).filter((key) => this[key] !== config[key]);\n\n if (onlyChanged.includes('isOpen')) {\n if (config.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n\n if (onlyChanged.includes('placementContainer')) {\n this._placementContainer = config.placementContainer;\n }\n\n /** TODO\n * This overriding is dangerous thing and leads to unexpected behavior\n * We have to avoid this.\n */\n onlyChanged.forEach((key) => (this[key] = config[key]));\n\n if (onlyChanged.includes('triggers')) {\n this._refreshTriggerListeners();\n }\n }\n\n /**\n * This method is intended to be called in order\n * to postpone the main functionality but be able\n * to enable it back in the future by initialise()\n */\n deactivate(): void {\n this._removeTriggerListeners();\n }\n\n /** Refresh listeners on trigger element events */\n _refreshTriggerListeners(): void {\n if (!this._triggerElement) {\n return;\n }\n\n this._removeTriggerListeners();\n\n if (this.triggers?.length) {\n this._normalizeTriggers().forEach((trigger) => {\n this._eventRef.push(\n this._renderer.listen(this._triggerElement.nativeElement, trigger.trigger, (event: Event) => {\n if (this._ignoreTriggers) {\n return;\n }\n const closeAction = !!trigger.closeAction;\n const openAction = !!trigger.openAction;\n this.toggle(openAction, closeAction);\n\n if (trigger.stopPropagation) {\n event.stopImmediatePropagation();\n }\n })\n );\n });\n }\n }\n\n /**\n * Updates trigger element and refreshes the listeners.\n * @param trigger Trigger element ref.\n */\n updateTriggerElement(trigger: ElementRef): void {\n this._triggerElement = trigger;\n this._refreshTriggerListeners();\n }\n\n /** @hidden */\n private _normalizeTriggers(): TriggerConfig[] {\n return this.triggers.map((trigger, index) => {\n if (typeof trigger === 'object' && trigger.trigger) {\n return trigger;\n }\n\n const oddNumber = isOdd(index + 1);\n\n return {\n trigger,\n openAction: this.triggers.length === 1 || oddNumber,\n closeAction: this.triggers.length === 1 || !oddNumber,\n stopPropagation: false\n } as TriggerConfig;\n });\n }\n\n /** @hidden */\n private _getOverlayConfig(position: FlexibleConnectedPositionStrategy): OverlayConfig {\n const direction = this._getDirection();\n\n return new OverlayConfig({\n direction,\n disposeOnNavigation: this.closeOnNavigation,\n positionStrategy: position,\n scrollStrategy: this.scrollStrategy || this._overlay.scrollStrategies.reposition()\n });\n }\n\n /** @hidden */\n private _listenOnResize(): void {\n this._viewportRuler\n .change(15)\n .pipe(takeUntil(this._refresh$), startWith(1))\n .subscribe(() => this._applyWidthOverlay());\n }\n\n /** @hidden */\n private _getDirection(): 'rtl' | 'ltr' {\n if (!this._rtlService) {\n return 'ltr';\n }\n\n return this._rtlService.rtl.getValue() ? 'rtl' : 'ltr';\n }\n\n /** @hidden */\n private _getPositionStrategy(forcedPositions?: ConnectedPosition[]): FlexibleConnectedPositionStrategy {\n let resultPosition = forcedPositions ? forcedPositions : this._getPositions();\n\n if (!this.fixedPosition) {\n resultPosition = resultPosition.concat(GetDefaultPosition(resultPosition));\n }\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this.appendTo || this._triggerElement)\n .withPositions(resultPosition)\n .withPush(false)\n .withGrowAfterOpen(true);\n }\n\n /** remove listeners from trigger element events */\n private _removeTriggerListeners(): void {\n this._eventRef.forEach((event) => event());\n this._eventRef = [];\n }\n\n /** Attach template containing popover body to overlay */\n private _attachTemplate(): void {\n this._passVariablesToBody();\n if (this._templateData) {\n this._overlayRef.attach(new TemplatePortal(this._templateData.template, this._templateData.container));\n }\n }\n\n /** Create PopoverBodyComponent and attach it into overlay */\n private _attachBodyComponent(): void {\n const overlay = this._overlayRef.attach(new ComponentPortal(PopoverBodyComponent, null, this._injector));\n this._popoverBody = overlay.instance;\n this._passVariablesToBody();\n }\n\n /** @hidden */\n private _listenForPositionChange(positionChange: Observable<ConnectedOverlayPositionChange>): void {\n this._placementRefresh$.next();\n positionChange\n .pipe(\n takeUntil(this._placementRefresh$),\n takeUntil(this._onDestroy$),\n filter(() => !this.noArrow && !!this._getPopoverBody()),\n distinctUntilChanged((previous, current) => previous.connectionPair === current.connectionPair)\n )\n .subscribe((event) => this._getPopoverBody()._setArrowStyles(event.connectionPair, this._getDirection()));\n }\n\n /** Subscribe to close events from CDK Overlay, to throw proper events, change values */\n private _listenOnClose(): void {\n const closeEvents$ = merge(\n this._overlayRef.detachments(),\n this._getPopoverBody().onClose,\n this._outsideClicks$()\n );\n const finalizer$ = merge(this._stopCloseListening$, this._refresh$);\n closeEvents$.pipe(takeUntil(finalizer$)).subscribe(() => this.close());\n }\n\n /** Listener for click events */\n private _outsideClicks$(): Observable<MouseEvent> {\n return merge(this._overlayRef.backdropClick(), this._overlayRef._outsidePointerEvents).pipe(\n filter((event) => this._shouldClose(event))\n );\n }\n\n /** @hidden */\n private _shouldClose(event: MouseEvent): boolean {\n return (\n this.isOpen &&\n this.closeOnOutsideClick &&\n !this._triggerContainsTarget(event) &&\n !this._targetIsPopoverMobileDialog(event)\n );\n }\n\n /** @hidden */\n private _targetIsPopoverMobileDialog(event: MouseEvent): boolean {\n if (this._mobile) {\n let el = (event.target as HTMLElement).parentElement;\n while (el) {\n if (el.hasAttribute('data-mobile-popover')) {\n return true;\n } else {\n el = el.parentElement;\n }\n }\n }\n\n return false;\n }\n\n /** @hidden */\n private _getEventTarget(event: Event): EventTarget | null {\n return event.composedPath ? event.composedPath()[0] : event.target;\n }\n\n /** @hidden */\n private _triggerContainsTarget(event: Event): boolean {\n const triggerElement = this._triggerElement.nativeElement;\n return triggerElement.contains(this._getEventTarget(event));\n }\n\n /** @hidden */\n private _getPositions(): ConnectedPosition[] {\n if (this.cdkPositions) {\n return this.cdkPositions;\n }\n\n if (this.placement) {\n return [PopoverPosition.getCdkPlacement(this.placement, this._getDirection())];\n }\n\n return [];\n }\n\n /** @hidden */\n private _applyWidthOverlay(): void {\n const maxWidthLimit = this.maxWidth ? this.maxWidth : MAX_BODY_SIZE;\n const width = Math.min(this._getTriggerWidth(), maxWidthLimit);\n if (this.fillControlMode === 'at-least') {\n this._getPopoverBody()._popoverBodyMinWidth = width;\n } else if (this.fillControlMode === 'equal') {\n this._getPopoverBody()._popoverBodyWidth = width;\n }\n this._detectChanges();\n }\n\n /** @hidden */\n private _passVariablesToBody(): void {\n const body = this._getPopoverBody();\n body.text = this.stringContent;\n body._additionalBodyClass = this.additionalBodyClass;\n body._focusTrapped = this.focusTrapped;\n body._maxWidth = this.maxWidth;\n body._noArrow = this.noArrow;\n body._focusAutoCapture = this.focusAutoCapture;\n body._disableScrollbar = this.disableScrollbar;\n body._tabbableScrollbar = this.tabbableScrollbar;\n body._templateToDisplay = this.templateContent!;\n body._closeOnEscapeKey = this.closeOnEscapeKey;\n body._bodyRole = this._bodyRole;\n body._bodyId = this._bodyId;\n body._resizable = this.resizable;\n body._setBodyComponentClasses(this.additionalBodyComponentClasses);\n this._detectChanges();\n }\n\n /** @hidden */\n private _getTriggerWidth(): number {\n return this._triggerElement.nativeElement.offsetWidth;\n }\n\n /** @hidden */\n private _getPopoverBody(): PopoverBodyComponent {\n return this._templateData?.popoverBody || this._popoverBody;\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._getPopoverBody()) {\n this._getPopoverBody().detectChanges();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(focusLastElement = true): void {\n if (focusLastElement && this.focusAutoCapture) {\n this._lastActiveElement = <HTMLElement>document.activeElement;\n this._getPopoverBody()?._focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _focusLastActiveElementBeforeOpen(focusLastElement = true): void {\n if (focusLastElement && this.focusAutoCapture && this._lastActiveElement) {\n this._lastActiveElement.focus();\n }\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from './popover.component';\n\n@Directive({\n selector: '[fdPopoverTrigger], [fd-popover-trigger]',\n standalone: true\n})\nexport class PopoverTriggerDirective implements OnDestroy {\n /** Set reference to Popover Component */\n @Input('fdPopoverTrigger')\n set popover(popover: Nullable<PopoverComponent>) {\n if (popover) {\n popover.trigger = this._elementRef;\n this._listenOnExpanded(popover);\n }\n this._setAriaAttributes(popover);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _isExpandedSubscription: Subscription;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeExpandedListener();\n }\n\n /** @hidden */\n private _listenOnExpanded(popover: PopoverComponent): void {\n this._unsubscribeExpandedListener();\n if (popover) {\n this._isExpandedSubscription = popover.isOpenChange\n .pipe(startWith(popover.isOpen))\n .subscribe((isOpen) => (this.ariaExpanded = isOpen));\n }\n }\n\n /** @hidden */\n private _setAriaAttributes(popover: Nullable<PopoverComponent>): void {\n this.ariaHasPopup = !!popover;\n this.ariaControls = popover ? popover.id : null;\n }\n\n /** @hidden */\n private _unsubscribeExpandedListener(): void {\n if (this._isExpandedSubscription) {\n this._isExpandedSubscription.unsubscribe();\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_POPOVER_COMPONENT = new InjectionToken('FdPopoverComponent');\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChild,\n ElementRef,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DOWN_ARROW, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport equal from 'fast-deep-equal';\nimport { BasePopoverClass } from './base/base-popover.class';\nimport { PopoverBodyDirective } from './popover-body.directive';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\nimport { PopoverMobileComponent } from './popover-mobile/popover-mobile.component';\nimport { PopoverService, PopoverTemplate } from './popover-service/popover.service';\nimport { POPOVER_COMPONENT } from './popover.interface';\nimport { FD_POPOVER_COMPONENT } from './tokens';\n\nexport const SELECT_CLASS_NAMES = {\n selectControl: 'fd-select__control'\n};\n\nlet cdkPopoverUniqueId = 0;\n\n/**\n * The popover is a wrapping component that accepts a *control* as well as a *body*.\n * The control is what will trigger the opening of the actual popover, which is called the body.\n * By default, popovers are triggered by click. This can be customized through the *triggers* input.\n */\n@Component({\n selector: 'fd-popover',\n templateUrl: './popover.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n PopoverService,\n {\n provide: FD_POPOVER_COMPONENT,\n useExisting: PopoverComponent\n },\n contentDensityObserverProviders()\n ],\n host: {\n class: 'fd-popover-custom',\n '[class.fd-popover-custom--mobile]': 'mobile',\n '[attr.id]': 'id'\n },\n standalone: true,\n imports: [NgIf, CdkOverlayOrigin, NgTemplateOutlet]\n})\nexport class PopoverComponent\n extends BasePopoverClass\n implements AfterViewInit, AfterContentInit, OnDestroy, OnChanges\n{\n /** Tooltip for popover */\n @Input()\n title: string;\n\n /** Reference to popover trigger element */\n @Input()\n set trigger(trigger: ElementRef) {\n if (equal(trigger, this._trigger)) {\n return;\n }\n this._trigger = trigger;\n this._popoverService.updateTriggerElement(this._trigger);\n }\n\n get trigger(): ElementRef {\n return this._trigger;\n }\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** Id of the popover. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-popover-' + cdkPopoverUniqueId++;\n\n /** Whether the popover component should be displayed in mobile mode. */\n @Input()\n mobile = false;\n\n /** Config for the popover in mobile mode */\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true };\n\n /** @hidden */\n @ViewChild('templateRef', { read: TemplateRef })\n templateRef: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('container', { read: ViewContainerRef })\n container: ViewContainerRef;\n\n /** @hidden */\n @ViewChild(CdkOverlayOrigin)\n triggerOrigin: CdkOverlayOrigin;\n\n /** @hidden */\n @ContentChild(PopoverBodyComponent)\n popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n @ContentChild(PopoverBodyDirective)\n popoverBodyDirective: PopoverBodyDirective;\n\n /** @hidden */\n @ContentChild(PopoverControlComponent)\n popoverControl: PopoverControlComponent;\n\n /** @hidden - template for Dialog body content */\n @ContentChild('popoverBodyContent')\n popoverBodyContentTemplate: TemplateRef<any>;\n\n /** @hidden - template for Dialog footer content */\n @ContentChild('popoverFooterContent')\n popoverFooterContentTemplate: TemplateRef<any>;\n\n /** @hidden */\n private _trigger: ElementRef;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<PopoverMobileComponent>;\n\n /** @hidden */\n constructor(\n private readonly _popoverService: PopoverService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _rendered: Renderer2,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const activeElement = document.activeElement;\n if (\n // popoverControl will be undefined when popover is used from \"fdPopoverTrigger\"\n this.popoverControl?.elRef.nativeElement.children[0] === activeElement &&\n activeElement?.tagName !== 'INPUT' &&\n activeElement?.tagName !== 'TEXTAREA' &&\n !activeElement?.classList.contains(SELECT_CLASS_NAMES.selectControl)\n ) {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n // prevent page scrolling on Space keydown\n event.preventDefault();\n this._popoverService.toggle();\n }\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._setupView();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.popoverControl && this.triggers.includes('click')) {\n this.popoverControl._tabbable = true;\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this._popoverService.refreshConfiguration(this);\n\n if (changes.disableScrollbar && this.popoverBody && this.popoverBody._scrollbar) {\n this.popoverBody._scrollbar._inPopover = changes.disableScrollbar.currentValue;\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._popoverService.onDestroy();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Opens the popover. */\n open(): void {\n this._popoverService.open();\n this._cdr.markForCheck();\n }\n\n /** Closes the popover. */\n close(focusActiveElement = true): void {\n this._popoverService.close(focusActiveElement);\n this._cdr.markForCheck();\n }\n\n /** Temporary sets the ignoring of the event triggers. */\n setIgnoreTriggers(ignore: boolean): void {\n this._popoverService.setIgnoreTriggers(ignore);\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n this._popoverService.applyNewPosition(positions);\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** Handler for alt + arrow down keydown */\n triggerKeyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && event.altKey && !this.disabled) {\n this.open();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** @hidden Select and instantiate popover view mode */\n private _setupView(): void {\n if (!this.mobile) {\n this._popoverService._mobile = false;\n if (!this.popoverBody) {\n this._popoverService.templateContent = this.templateRef;\n }\n this._popoverService.initialise(\n this.trigger || this.triggerOrigin.elementRef,\n this,\n this._getPopoverBodyContent()\n );\n } else {\n this._setupMobileMode();\n }\n\n this._cdr.detectChanges();\n }\n\n /**\n * Depending on a used popover body type, returns a popover body content\n **/\n private _getPopoverBodyContent(): PopoverTemplate | TemplateRef<void> | null {\n if (this.popoverBody) {\n return {\n template: this.templateRef,\n container: this.container,\n popoverBody: this.popoverBody\n };\n }\n if (this.popoverBodyDirective) {\n return this.popoverBodyDirective.templateRef;\n }\n return null;\n }\n\n /** @hidden Open Popover in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: POPOVER_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._popoverService._mobile = true;\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n {\n popoverBodyContentTemplate: this.popoverBodyContentTemplate,\n popoverFooterContentTemplate: this.popoverFooterContentTemplate\n },\n PopoverMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden - Listen on popover trigger ref clicks */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile) {\n this._clickEventListener = this._rendered.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n}\n","<div\n *ngIf=\"!trigger\"\n cdkOverlayOrigin\n class=\"fd-popover__control\"\n [class]=\"additionalTriggerClass\"\n (keydown)=\"triggerKeyDownHandler($event)\"\n>\n <ng-content select=\"fd-popover-control, [fdPopoverControl]\"></ng-content>\n</div>\n\n<ng-template #templateRef>\n <ng-content select=\"fd-popover-body\"></ng-content>\n\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container #container></ng-container>\n","import { NgModule } from '@angular/core';\n\nimport { PopoverBodyFooterDirective } from './popover-body/popover-body-directives/popover-body-footer.directive';\nimport { PopoverBodyHeaderDirective } from './popover-body/popover-body-directives/popover-body-header.directive';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\n\nimport { PopoverBodyDirective } from './popover-body.directive';\nimport { PopoverContainerDirective } from './popover-container/popover-container.directive';\nimport { PopoverTriggerDirective } from './popover-trigger.directive';\nimport { PopoverComponent } from './popover.component';\n\n@NgModule({\n imports: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContainerDirective,\n PopoverBodyDirective\n ],\n exports: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContainerDirective,\n PopoverBodyDirective\n ]\n})\nexport class PopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.PopoverContainerDirective","i1.PopoverService"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-popover.mjs","sources":["../../../../libs/core/src/lib/popover/base/base-popover.class.ts","../../../../libs/core/src/lib/popover/popover-body.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-footer.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body-directives/popover-body-header.directive.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.ts","../../../../libs/core/src/lib/popover/popover-body/popover-body.component.html","../../../../libs/core/src/lib/popover/popover-container/popover-container.directive.ts","../../../../libs/core/src/lib/popover/popover-control/popover-control.component.ts","../../../../libs/core/src/lib/popover/popover.interface.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.ts","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.component.html","../../../../libs/core/src/lib/popover/popover-mobile/popover-mobile.module.ts","../../../../libs/core/src/lib/popover/popover-service/popover.service.ts","../../../../libs/core/src/lib/popover/popover-trigger.directive.ts","../../../../libs/core/src/lib/popover/tokens.ts","../../../../libs/core/src/lib/popover/popover.component.ts","../../../../libs/core/src/lib/popover/popover.component.html","../../../../libs/core/src/lib/popover/popover.module.ts","../../../../libs/core/src/lib/popover/fundamental-ngx-core-popover.ts"],"sourcesContent":["import { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\nimport { Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Placement, PopoverFillMode } from '@fundamental-ngx/core/shared';\n\n@Directive()\nexport class BasePopoverClass {\n /** Whether to close the popover on router navigation start. */\n @Input()\n closeOnNavigation = true;\n\n /** Whether the popover is disabled. */\n @Input()\n @HostBinding('class.fd-popover-custom--disabled')\n disabled = false;\n\n /** Maximum width of popover body in px, prevents from overextending body by `fillControlMode` */\n @Input()\n maxWidth: Nullable<number> = null;\n\n /** Whether the popover should have an arrow. */\n @Input()\n noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalBodyClass: string | null = null;\n\n /** Classes that should be applied to fd-popover-body component directly. */\n @Input()\n additionalBodyComponentClasses: string | null = null;\n\n /** Whether the popover container needs an extra class for styling. */\n @Input()\n additionalTriggerClass: string | null = null;\n\n /** Whether the popover should close when the escape key is pressed. */\n @Input()\n closeOnEscapeKey = true;\n\n /** Whether to wrap content with fd-scrollbar directive. */\n @Input()\n disableScrollbar = false;\n\n /** Should fd-scrollbar have tabindex*/\n @Input()\n tabbableScrollbar = true;\n\n /**\n * The placement of the popover.\n * It can be one of:\n * top, top-start, top-end, bottom, bottom-start, bottom-end,\n * right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement | null = null;\n\n /**\n * The trigger events that will open/close the popover.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp) or a config object for the corresponding event.\n * Using the config object allows to specify whether an event should apply both for open and close actions or only some of them.\n *\n * If array of triggers consists only of one event, it will be treated at a toggle event (open and close)\n * If array of trigger consists of more than one event, each odd event will be treated as an open event for the popover,\n * and each even event will be treated as closing event for the popover.\n *\n * Consider the following value for `triggers`:\n * ```\n * [\n * 'click' // basically it's an alias for \"{ trigger: 'click', openAction: true, closeAction: true }\"\n * ]\n * ```\n * ```\n * [\n * 'mouseenter' // Shortcut for \"{ trigger: 'mouseenter', openAction: true, closeAction: false }\", and will only open the popover.\n * 'mouseleave' // Shortcut for \"{ trigger: 'mouseleave', openAction: false, closeAction: true }\" and will only close the popover.\n * ]\n * ```\n * ```\n * [\n * { trigger: 'mouseenter', openAction: true, closeAction: true }, // \"mouseenter\" will toggle the popover.\n * { trigger: 'mouseleave', openAction: true, closeAction: true } // \"mouseleave\" will toggle the popover.\n * ]\n * ```\n *\n * @default ['click']\n */\n @Input()\n triggers: (string | TriggerConfig)[] = ['click'];\n\n /** Whether the popover is open. Can be used through two-way binding. */\n @Input()\n isOpen = false;\n\n /** Whether the popover should close when a click is made outside its boundaries. */\n @Input()\n closeOnOutsideClick = true;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = false;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n @Input()\n focusAutoCapture = false;\n\n /**\n * Scroll strategy, there are 4 accepted\n * - CloseScrollStrategy\n * - NoopScrollStrategy\n * - BlockScrollStrategy\n * - RepositionScrollStrategy ( default )\n */\n @Input()\n scrollStrategy: ScrollStrategy | null = null;\n\n /**\n * List of positions options for overlay defined by angular CDK.\n * Positions will be taken in order, same like on array. If first position provided doesn't fit to window,\n * another will be used\n * More information can be found in https://material.angular.io/cdk/overlay/api\n */\n @Input()\n cdkPositions: ConnectedPosition[] | null = null;\n\n /**\n * Preset options for the popover body width.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * Leave blank for no effect.\n */\n @Input()\n fillControlMode: Nullable<PopoverFillMode> = null;\n\n /** The element to which the overlay is attached. By default it is body */\n @Input()\n appendTo: Nullable<ElementRef | Element> = null;\n\n /** Placement of the popover element. */\n @Input()\n placementContainer: Nullable<ElementRef | Element>;\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** Whether the popover body is resizable. */\n @Input()\n resizable = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden Aria role for the popover body. */\n _bodyRole: string | null = null;\n\n /** @hidden ID for the popover body. */\n _bodyId: string | null = null;\n}\n\n/**\n * Config for the trigger event, which allows to specify\n * whether an event should apply both for open and close actions or only some of them\n */\nexport interface TriggerConfig {\n trigger: string;\n openAction: boolean;\n closeAction: boolean;\n stopPropagation?: boolean;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBody]',\n standalone: true\n})\nexport class PopoverBodyDirective {\n /**\n * The template to be used as the popover's body.\n **/\n readonly templateRef = inject<TemplateRef<void>>(TemplateRef);\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyFooter], [fd-popover-body-footer]',\n standalone: true\n})\nexport class PopoverBodyFooterDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-footer')\n fdPopoverBodyFooterClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdPopoverBodyHeader], [fd-popover-body-header]',\n standalone: true\n})\nexport class PopoverBodyHeaderDirective {\n /** @hidden */\n @HostBinding('class.fd-popover__body-header')\n fdPopoverBodyHeaderClass = true;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { CdkScrollable, ConnectionPositionPair } from '@angular/cdk/overlay';\n\nimport { Subject } from 'rxjs';\n\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { KeyUtil, Nullable, ResizeDirective, ResizeHandleDirective } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-body',\n templateUrl: './popover-body.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./popover-body.component.scss'],\n providers: [contentDensityObserverProviders({ alwaysAddModifiers: true })],\n standalone: true,\n imports: [\n A11yModule,\n NgIf,\n CdkScrollable,\n ScrollbarDirective,\n NgTemplateOutlet,\n ResizeHandleDirective,\n ResizeDirective\n ]\n})\nexport class PopoverBodyComponent implements AfterViewInit {\n /** Minimum width of the popover body element. */\n @Input()\n minWidth: Nullable<string>;\n\n /** Maximum width of the popover body element. */\n @Input()\n maxWidth: Nullable<string>;\n\n /** Minimum height of the popover body element. */\n @Input()\n minHeight: Nullable<string>;\n\n /** Maximum height of the popover body element. */\n @Input()\n maxHeight: Nullable<string>;\n\n /** @hidden */\n @ViewChild(CdkTrapFocus)\n _cdkTrapFocus: CdkTrapFocus;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** Whether to wrap content with fd-scrollbar directive. */\n _disableScrollbar = false;\n\n /** Should fd-scrollbar have tabindex*/\n _tabbableScrollbar = true;\n\n /** Whether the popover should have an arrow. */\n _noArrow = true;\n\n /** Whether the popover container needs an extra class for styling. */\n _additionalBodyClass: Nullable<string>;\n\n /** Whether the popover should be focusTrapped. */\n _focusTrapped = false;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n _focusAutoCapture = false;\n\n /** @hidden Property bind to popover's body. */\n _popoverBodyWidth: number;\n\n /** @hidden Property bind to popover's body. */\n _popoverBodyMinWidth: number;\n\n /** @hidden Property bind to popover's body. */\n _maxWidth: Nullable<number>;\n\n /** @hidden Property bind to popover's body. */\n _closeOnEscapeKey = false;\n\n /** @hidden Aria role for the popover body. */\n _bodyRole: Nullable<string> = null;\n\n /** @hidden Aria role for the popover body. */\n _bodyId: Nullable<string> = null;\n\n /** Classes added to arrow element. */\n _arrowClasses = '';\n\n /** @hidden text rendered inside popover's body. */\n text: Nullable<string> = null;\n\n /** @hidden template rendered inside popover's body. */\n _templateToDisplay: TemplateRef<any>;\n\n /** @hidden Whether the popover body is resizable. */\n _resizable = false;\n\n /** @hidden */\n _resizeHandleLocation: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'bottom-right';\n\n /** Close event from popover body */\n onClose = new Subject<void>();\n\n /** @hidden */\n private _bodyComponentClasses: string | null = null;\n\n /** @hidden */\n constructor(\n readonly _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private readonly _renderer: Renderer2,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** Handler escape keydown */\n @HostListener('keyup', ['$event'])\n bodyKeyupHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE) && this._closeOnEscapeKey) {\n // In case if popover belongs to the element inside dialog\n event.stopPropagation();\n this.onClose.next();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this._scrollbar) {\n this._scrollbar._inPopover = true;\n }\n }\n\n /** @hidden */\n _setBodyComponentClasses(classes: string | null): void {\n this._bodyComponentClasses?.split(' ').forEach((klass) => {\n this._renderer.removeClass(this._elementRef.nativeElement, klass);\n });\n this._bodyComponentClasses = classes;\n if (!this._bodyComponentClasses) {\n return;\n }\n this._bodyComponentClasses.split(' ').forEach((klass) => {\n this._renderer.addClass(this._elementRef.nativeElement, klass);\n });\n }\n\n /** @hidden */\n _setArrowStyles(position: ConnectionPositionPair, rtl: 'rtl' | 'ltr'): void {\n this._resizeHandleLocation = `${position.overlayY === 'top' ? 'bottom' : 'top'}-${\n position.overlayX === 'start' ? 'right' : 'left'\n }`;\n if (this._noArrow) {\n this._arrowClasses = '';\n return;\n }\n\n let arrowClasses: string[] = [];\n\n if (\n position.overlayY !== position.originY &&\n position.originY !== 'center' &&\n position.overlayY !== 'center' &&\n position.overlayX === position.originX\n ) {\n arrowClasses = [\n `fd-popover__body--${position.overlayY === 'top' ? 'below' : 'above'}`,\n `fd-popover__body--${position.overlayX === 'start' ? 'left' : 'right'}`,\n `fd-popover__body--arrow-${position.overlayY}`,\n `fd-popover__body--arrow-x-${position.originX}`\n ];\n } else if (\n position.overlayX !== position.originX &&\n position.overlayX !== 'center' &&\n position.originX !== 'center' &&\n position.originY === position.overlayY\n ) {\n let overlayX = position.overlayX;\n if (rtl === 'rtl') {\n overlayX = position.overlayX === 'end' ? 'start' : 'end';\n }\n arrowClasses = [\n `fd-popover__body--${overlayX === 'start' ? 'after' : 'before'}`,\n `fd-popover__body--${overlayX === 'start' ? 'left' : 'right'}`,\n `fd-popover__body--${position.overlayY === 'center' ? 'middle' : position.overlayY}`,\n `fd-popover__body--arrow-${overlayX === 'start' ? 'left' : 'right'}`,\n `fd-popover__body--arrow-y-${position.originY} `\n ];\n } else {\n arrowClasses = ['fd-popover__body--no-arrow'];\n }\n\n this._arrowClasses = arrowClasses.join(' ');\n\n this.detectChanges();\n }\n\n /** @hidden */\n detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n _focusFirstTabbableElement(): void {\n if (this._focusAutoCapture) {\n this._cdkTrapFocus.focusTrap.focusFirstTabbableElement();\n }\n }\n}\n","<div\n class=\"fd-popover__body fd-popover__body--static\"\n [class.fd-popover__body--no-arrow]=\"_noArrow\"\n [class.fd-popover__body--resizable]=\"_resizable\"\n [class]=\"_arrowClasses + ' ' + (_additionalBodyClass || '')\"\n [cdkTrapFocus]=\"_focusTrapped\"\n [style.min-width]=\"_popoverBodyMinWidth ? null : minWidth\"\n [style.max-width]=\"_maxWidth ? null : maxWidth\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n [style.max-width.px]=\"_maxWidth\"\n [style.min-width.px]=\"_popoverBodyMinWidth\"\n [style.width.px]=\"_popoverBodyWidth\"\n [attr.role]=\"_bodyRole\"\n [attr.id]=\"_bodyId\"\n fdkResize\n [fdkResizeDisabled]=\"!_resizable\"\n [fdkResizeClass]=\"'fd-popover__body--disable-transitions'\"\n [fdkResizeHandleLocation]=\"_resizeHandleLocation\"\n>\n <div\n fd-scrollbar\n class=\"fd-popover__wrapper\"\n [overrideTabindex]=\"_tabbableScrollbar\"\n *ngIf=\"!_disableScrollbar; else renderer\"\n >\n <ng-container *ngTemplateOutlet=\"renderer\"></ng-container>\n </div>\n <span fdkResizeHandle *ngIf=\"_resizable\" class=\"fd-popover__resize-handle\"></span>\n</div>\n\n<ng-template #renderer>\n <ng-content select=\"[fd-popover-body-header]\"></ng-content>\n\n <ng-content select=\"[fd-popover-body-subheader]\"></ng-content>\n\n <ng-content></ng-content>\n\n {{ text }}\n\n <ng-container *ngTemplateOutlet=\"_templateToDisplay\"></ng-container>\n\n <ng-content select=\"[fd-popover-body-footer]\"></ng-content>\n</ng-template>\n","import { Directive, ElementRef, OnInit, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[fdPopoverContainer]',\n standalone: true\n})\nexport class PopoverContainerDirective implements OnInit, OnDestroy {\n /** Subject which emits when popover position refresh is required. */\n refreshPosition$ = new Subject<void>();\n\n /** @hidden */\n private _destroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(private _elmRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnInit(): void {\n resizeObservable(this._elmRef.nativeElement)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this.refreshPosition$.next();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","import { AfterContentChecked, ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component used to enforce a certain layout for the popover.\n * ```html\n * <fd-popover>\n * <fd-popover-control>Control Element</fd-popover-control>\n * <fd-popover-body>Popover Body</fd-popover-body>\n * </fd-popover>\n * ```\n */\n@Component({\n selector: 'fd-popover-control, [fdPopoverControl]',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class PopoverControlComponent implements AfterContentChecked {\n /** @hidden */\n _tabbable = false;\n\n /** @hidden */\n constructor(public elRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentChecked(): void {\n if (this._tabbable) {\n this.makeTabbable();\n }\n }\n\n /** @hidden */\n makeTabbable(): void {\n const elemChild = this.elRef.nativeElement.children[0];\n if (elemChild && elemChild.getAttribute('tabindex') !== '-1') {\n elemChild.tabIndex = '0';\n }\n }\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\n\nexport const POPOVER_COMPONENT = new InjectionToken<PopoverInterface>('PopoverInterface');\n\n/**\n * Popover Interface to have typing and avoid circular dependency between\n * PopoverComponent <==> PopoverMobileComponent\n */\nexport interface PopoverInterface extends MobileMode {\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n MOBILE_MODE_CONFIG,\n MobileModeBase,\n MobileModeConfigToken,\n MobileModeControl\n} from '@fundamental-ngx/core/mobile-mode';\nimport { DialogModule, DialogService } from '@fundamental-ngx/core/dialog';\nimport { POPOVER_COMPONENT, PopoverInterface } from '../popover.interface';\nimport { PopoverChildContent } from '../popover-child-content.interface';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\n\nlet mobilePopoverUniqueId = 0;\n\n@Component({\n selector: 'fd-popover-mobile',\n templateUrl: './popover-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [DialogModule, TitleComponent, NgIf, CdkScrollable, ScrollbarDirective, NgTemplateOutlet]\n})\nexport class PopoverMobileComponent extends MobileModeBase<PopoverInterface> implements OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('dialogTemplate')\n _dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * from mobile class can not prefix _,\n * to avoid build issues\n */\n childContent?: PopoverChildContent = undefined;\n\n /** Current popover title */\n title: string;\n /** Dialog body content */\n viewBody: TemplateRef<any> | null;\n\n /** Dialog footer content */\n viewFooter: TemplateRef<any> | null;\n\n /** @hidden */\n readonly id = 'fd-popover-mobile-' + mobilePopoverUniqueId++;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n get titleId(): string {\n return this.id + '-title';\n }\n\n /** @hidden */\n constructor(\n elementRef: ElementRef,\n dialogService: DialogService,\n private _changeDetectorref: ChangeDetectorRef,\n @Inject(POPOVER_COMPONENT) _popoverComponent: PopoverInterface,\n @Optional() @Inject(MOBILE_MODE_CONFIG) mobileModes: MobileModeConfigToken[]\n ) {\n super(elementRef, dialogService, _popoverComponent, MobileModeControl.POPOVER, mobileModes);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnPopoverOpenChange();\n\n this.title = this.mobileConfig.title || '';\n this.viewBody = this.childContent?.popoverBodyContentTemplate ?? null;\n this.viewFooter = this.childContent?.popoverFooterContentTemplate ?? null;\n\n this._changeDetectorref.markForCheck();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.dialogRef?.close();\n super.onDestroy();\n this._subscriptions.unsubscribe();\n }\n\n /** Closes the Dialog and Popover component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** @hidden Opens/closes the Dialog based on Popover isOpenChange events */\n private _listenOnPopoverOpenChange(): void {\n this._subscriptions.add(\n this._component.isOpenChange.pipe(takeUntil(this._onDestroy$)).subscribe((isOpen) => {\n if (isOpen) {\n this._openDialog();\n } else {\n this.dialogRef.hide(true);\n }\n })\n );\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this._dialogTemplate, {\n verticalPadding: true,\n horizontalPadding: true,\n ...this.dialogConfig,\n mobile: true,\n focusTrapped: true,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement,\n responsivePadding: true,\n ariaLabelledBy: this.titleId\n });\n }\n}\n","<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" data-mobile-popover>\n <fd-dialog-header>\n <h1 fd-title [id]=\"titleId\">{{ title }}</h1>\n <button fd-dialog-close-button *ngIf=\"this.mobileConfig.hasCloseButton\" (click)=\"close()\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"viewBody\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"viewFooter\">\n <ng-container *ngTemplateOutlet=\"viewFooter\"></ng-container>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverMobileComponent } from './popover-mobile.component';\n\n@NgModule({\n imports: [CommonModule, DialogModule, ButtonModule, PopoverMobileComponent],\n exports: [PopoverMobileComponent],\n providers: [DynamicComponentService]\n})\nexport class PopoverMobileModule {}\n","import {\n ConnectedOverlayPositionChange,\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ViewportRuler\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ElementRef, Injectable, Injector, Optional, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { distinctUntilChanged, filter, startWith, takeUntil } from 'rxjs/operators';\n\nimport { Nullable, RtlService, isOdd } from '@fundamental-ngx/cdk/utils';\nimport { GetDefaultPosition, PopoverPosition } from '@fundamental-ngx/core/shared';\n\nimport { BasePopoverClass, TriggerConfig } from '../base/base-popover.class';\nimport { PopoverBodyComponent } from '../popover-body/popover-body.component';\nimport { PopoverContainerDirective } from '../popover-container/popover-container.directive';\n\nconst MAX_BODY_SIZE = 99999999;\n\nexport interface PopoverTemplate {\n container: ViewContainerRef;\n popoverBody: PopoverBodyComponent;\n template: TemplateRef<any>;\n}\n\n@Injectable()\nexport class PopoverService extends BasePopoverClass {\n /** String content displayed inside popover body */\n stringContent: Nullable<string>;\n\n /** Template content displayed inside popover body */\n templateContent: Nullable<TemplateRef<any>>;\n\n /** @hidden */\n _onLoad = new Subject<ElementRef>();\n\n /** @hidden */\n _mobile = false;\n\n /** @hidden */\n private _eventRef: (() => void)[] = [];\n\n /** @hidden */\n private _overlayRef: OverlayRef;\n\n /** @hidden */\n private _refresh$: Observable<boolean | void>;\n\n /** @hidden */\n private _stopCloseListening$ = new Subject<void>();\n\n /** @hidden */\n private readonly _placementRefresh$ = new Subject<void>();\n\n /** @hidden */\n private _popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n private _triggerElement: ElementRef;\n\n /** @hidden */\n private _lastActiveElement: HTMLElement;\n\n /** @hidden */\n private _templateData: Nullable<PopoverTemplate>;\n\n /** @hidden */\n private _placementContainer: BasePopoverClass['placementContainer'];\n\n /** @hidden */\n private _ignoreTriggers = false;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _overlay: Overlay,\n private _renderer: Renderer2,\n private _viewportRuler: ViewportRuler,\n private _injector: Injector,\n @Optional() private _rtlService: RtlService,\n @Optional() private readonly _popoverContainer: PopoverContainerDirective\n ) {\n super();\n\n /** Merge observables - close or destroy */\n this._refresh$ = merge(this.isOpenChange, this._onDestroy$);\n }\n\n /**\n * Method initialising the popover service - should be called, after view is initialised, params:\n * - triggerElement - element, which is equivalent for cdkOverlayOrigin, or fd-popover-control,\n * by default to this element the popover body will lbe appended and events on this element will trigger\n * popover's toggle\n * - config - configuration object - in this case the intention is to use inheritance of BasePopoverClass in component\n * - templateData - in case of having already PopoverBodyComponent, there is way to pass container, template containing\n * PopoverComponent and PopoverComponent instance\n */\n initialise(\n triggerElement: ElementRef,\n config?: BasePopoverClass,\n templateData?: PopoverTemplate | TemplateRef<void> | null\n ): void {\n if (templateData instanceof TemplateRef) {\n this.templateContent = templateData;\n } else {\n this._templateData = templateData;\n }\n this._triggerElement = triggerElement;\n\n if (config) {\n this.refreshConfiguration(config);\n }\n\n this._refreshTriggerListeners();\n\n if (this.isOpen) {\n this.open();\n }\n\n // If wrapper container height changes outside, refresh popover position.\n this._popoverContainer?.refreshPosition$.pipe(takeUntil(this._refresh$)).subscribe(() => {\n this.refreshPosition();\n });\n }\n\n /** Closes the popover. */\n close(focusActiveElement = true): void {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n\n const prevState = this.isOpen;\n this.isOpen = false;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._focusLastActiveElementBeforeOpen(focusActiveElement);\n }\n\n /** Opens the popover. */\n open(): void {\n if ((!this._overlayRef || !this._overlayRef.hasAttached()) && !this.disabled && this._triggerElement) {\n const position = this._getPositionStrategy();\n this._overlayRef = this._overlay.create(this._getOverlayConfig(position));\n\n if (this._placementContainer) {\n const placementElement =\n this._placementContainer instanceof ElementRef\n ? this._placementContainer.nativeElement\n : this._placementContainer;\n\n placementElement.append(this._overlayRef.hostElement);\n }\n\n if (this._templateData) {\n this._attachTemplate();\n } else {\n this._attachBodyComponent();\n }\n\n this._stopCloseListening$.next();\n this._listenForPositionChange(position.positionChanges);\n\n if (this.fillControlMode) {\n this._listenOnResize();\n }\n\n const prevState = this.isOpen;\n this.isOpen = true;\n if (prevState !== this.isOpen) {\n this.isOpenChange.emit(this.isOpen);\n }\n\n this._detectChanges();\n\n this._listenOnClose();\n this._focusFirstTabbableElement();\n this._onLoad.next(this._getPopoverBody()._elementRef);\n this._overlayRef.updatePosition();\n }\n }\n\n /** method updating template or text inside rendered PopoverBody */\n updateContent(\n stringContent: Nullable<string> | Nullable<TemplateRef<any>>,\n templateContent: Nullable<TemplateRef<any>>\n ): void {\n templateContent = !templateContent\n ? typeof stringContent === 'string'\n ? null\n : stringContent\n : templateContent;\n stringContent = typeof stringContent === 'string' ? stringContent : null;\n this.stringContent = stringContent;\n this.templateContent = templateContent;\n if (this._getPopoverBody()) {\n this._passVariablesToBody();\n }\n }\n\n /** Toggles the popover open state */\n toggle(openAction = true, closeAction = true): void {\n if (this.isOpen) {\n closeAction && this.close();\n } else {\n openAction && this.open();\n }\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n const refPosition = this._getPositionStrategy(positions);\n this._listenForPositionChange(refPosition.positionChanges);\n this._overlayRef.updatePositionStrategy(refPosition);\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._overlayRef?.updatePosition();\n }\n\n /** Temporary sets the ignoring of the event triggers. */\n setIgnoreTriggers(ignore: boolean): void {\n this._ignoreTriggers = ignore;\n }\n\n /** Equivalent for ngOnDestroy method, whether component is destroyed, this method should be called */\n onDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._removeTriggerListeners();\n if (this._overlayRef) {\n this._overlayRef.detach();\n this._overlayRef.dispose();\n }\n }\n\n /**\n * Method that sets configuration/options, it detects if there is something changed and overwrites them\n */\n refreshConfiguration(config: BasePopoverClass): void {\n this._placementContainer = config.placementContainer;\n const onlyChanged = Object.keys(new BasePopoverClass()).filter((key) => this[key] !== config[key]);\n\n if (onlyChanged.includes('isOpen')) {\n if (config.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n\n if (onlyChanged.includes('placementContainer')) {\n this._placementContainer = config.placementContainer;\n }\n\n /** TODO\n * This overriding is dangerous thing and leads to unexpected behavior\n * We have to avoid this.\n */\n onlyChanged.forEach((key) => (this[key] = config[key]));\n\n if (onlyChanged.includes('triggers')) {\n this._refreshTriggerListeners();\n }\n }\n\n /**\n * This method is intended to be called in order\n * to postpone the main functionality but be able\n * to enable it back in the future by initialise()\n */\n deactivate(): void {\n this._removeTriggerListeners();\n }\n\n /** Refresh listeners on trigger element events */\n _refreshTriggerListeners(): void {\n if (!this._triggerElement) {\n return;\n }\n\n this._removeTriggerListeners();\n\n if (this.triggers?.length) {\n this._normalizeTriggers().forEach((trigger) => {\n this._eventRef.push(\n this._renderer.listen(this._triggerElement.nativeElement, trigger.trigger, (event: Event) => {\n if (this._ignoreTriggers) {\n return;\n }\n const closeAction = !!trigger.closeAction;\n const openAction = !!trigger.openAction;\n this.toggle(openAction, closeAction);\n\n if (trigger.stopPropagation) {\n event.stopImmediatePropagation();\n }\n })\n );\n });\n }\n }\n\n /**\n * Updates trigger element and refreshes the listeners.\n * @param trigger Trigger element ref.\n */\n updateTriggerElement(trigger: ElementRef): void {\n this._triggerElement = trigger;\n this._refreshTriggerListeners();\n }\n\n /** @hidden */\n private _normalizeTriggers(): TriggerConfig[] {\n return this.triggers.map((trigger, index) => {\n if (typeof trigger === 'object' && trigger.trigger) {\n return trigger;\n }\n\n const oddNumber = isOdd(index + 1);\n\n return {\n trigger,\n openAction: this.triggers.length === 1 || oddNumber,\n closeAction: this.triggers.length === 1 || !oddNumber,\n stopPropagation: false\n } as TriggerConfig;\n });\n }\n\n /** @hidden */\n private _getOverlayConfig(position: FlexibleConnectedPositionStrategy): OverlayConfig {\n const direction = this._getDirection();\n\n return new OverlayConfig({\n direction,\n disposeOnNavigation: this.closeOnNavigation,\n positionStrategy: position,\n scrollStrategy: this.scrollStrategy || this._overlay.scrollStrategies.reposition()\n });\n }\n\n /** @hidden */\n private _listenOnResize(): void {\n this._viewportRuler\n .change(15)\n .pipe(takeUntil(this._refresh$), startWith(1))\n .subscribe(() => this._applyWidthOverlay());\n }\n\n /** @hidden */\n private _getDirection(): 'rtl' | 'ltr' {\n if (!this._rtlService) {\n return 'ltr';\n }\n\n return this._rtlService.rtl.getValue() ? 'rtl' : 'ltr';\n }\n\n /** @hidden */\n private _getPositionStrategy(forcedPositions?: ConnectedPosition[]): FlexibleConnectedPositionStrategy {\n let resultPosition = forcedPositions ? forcedPositions : this._getPositions();\n\n if (!this.fixedPosition) {\n resultPosition = resultPosition.concat(GetDefaultPosition(resultPosition));\n }\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this.appendTo || this._triggerElement)\n .withPositions(resultPosition)\n .withPush(false)\n .withGrowAfterOpen(true);\n }\n\n /** remove listeners from trigger element events */\n private _removeTriggerListeners(): void {\n this._eventRef.forEach((event) => event());\n this._eventRef = [];\n }\n\n /** Attach template containing popover body to overlay */\n private _attachTemplate(): void {\n this._passVariablesToBody();\n if (this._templateData) {\n this._overlayRef.attach(new TemplatePortal(this._templateData.template, this._templateData.container));\n }\n }\n\n /** Create PopoverBodyComponent and attach it into overlay */\n private _attachBodyComponent(): void {\n const overlay = this._overlayRef.attach(new ComponentPortal(PopoverBodyComponent, null, this._injector));\n this._popoverBody = overlay.instance;\n this._passVariablesToBody();\n }\n\n /** @hidden */\n private _listenForPositionChange(positionChange: Observable<ConnectedOverlayPositionChange>): void {\n this._placementRefresh$.next();\n positionChange\n .pipe(\n takeUntil(this._placementRefresh$),\n takeUntil(this._onDestroy$),\n filter(() => !this.noArrow && !!this._getPopoverBody()),\n distinctUntilChanged((previous, current) => previous.connectionPair === current.connectionPair)\n )\n .subscribe((event) => this._getPopoverBody()._setArrowStyles(event.connectionPair, this._getDirection()));\n }\n\n /** Subscribe to close events from CDK Overlay, to throw proper events, change values */\n private _listenOnClose(): void {\n const closeEvents$ = merge(\n this._overlayRef.detachments(),\n this._getPopoverBody().onClose,\n this._outsideClicks$()\n );\n const finalizer$ = merge(this._stopCloseListening$, this._refresh$);\n closeEvents$.pipe(takeUntil(finalizer$)).subscribe(() => this.close());\n }\n\n /** Listener for click events */\n private _outsideClicks$(): Observable<MouseEvent> {\n return merge(this._overlayRef.backdropClick(), this._overlayRef._outsidePointerEvents).pipe(\n filter((event) => this._shouldClose(event))\n );\n }\n\n /** @hidden */\n private _shouldClose(event: MouseEvent): boolean {\n return (\n this.isOpen &&\n this.closeOnOutsideClick &&\n !this._triggerContainsTarget(event) &&\n !this._targetIsPopoverMobileDialog(event)\n );\n }\n\n /** @hidden */\n private _targetIsPopoverMobileDialog(event: MouseEvent): boolean {\n if (this._mobile) {\n let el = (event.target as HTMLElement).parentElement;\n while (el) {\n if (el.hasAttribute('data-mobile-popover')) {\n return true;\n } else {\n el = el.parentElement;\n }\n }\n }\n\n return false;\n }\n\n /** @hidden */\n private _getEventTarget(event: Event): EventTarget | null {\n return event.composedPath ? event.composedPath()[0] : event.target;\n }\n\n /** @hidden */\n private _triggerContainsTarget(event: Event): boolean {\n const triggerElement = this._triggerElement.nativeElement;\n return triggerElement.contains(this._getEventTarget(event));\n }\n\n /** @hidden */\n private _getPositions(): ConnectedPosition[] {\n if (this.cdkPositions) {\n return this.cdkPositions;\n }\n\n if (this.placement) {\n return [PopoverPosition.getCdkPlacement(this.placement, this._getDirection())];\n }\n\n return [];\n }\n\n /** @hidden */\n private _applyWidthOverlay(): void {\n const maxWidthLimit = this.maxWidth ? this.maxWidth : MAX_BODY_SIZE;\n const width = Math.min(this._getTriggerWidth(), maxWidthLimit);\n if (this.fillControlMode === 'at-least') {\n this._getPopoverBody()._popoverBodyMinWidth = width;\n } else if (this.fillControlMode === 'equal') {\n this._getPopoverBody()._popoverBodyWidth = width;\n }\n this._detectChanges();\n }\n\n /** @hidden */\n private _passVariablesToBody(): void {\n const body = this._getPopoverBody();\n body.text = this.stringContent;\n body._additionalBodyClass = this.additionalBodyClass;\n body._focusTrapped = this.focusTrapped;\n body._maxWidth = this.maxWidth;\n body._noArrow = this.noArrow;\n body._focusAutoCapture = this.focusAutoCapture;\n body._disableScrollbar = this.disableScrollbar;\n body._tabbableScrollbar = this.tabbableScrollbar;\n body._templateToDisplay = this.templateContent!;\n body._closeOnEscapeKey = this.closeOnEscapeKey;\n body._bodyRole = this._bodyRole;\n body._bodyId = this._bodyId;\n body._resizable = this.resizable;\n body._setBodyComponentClasses(this.additionalBodyComponentClasses);\n this._detectChanges();\n }\n\n /** @hidden */\n private _getTriggerWidth(): number {\n return this._triggerElement.nativeElement.offsetWidth;\n }\n\n /** @hidden */\n private _getPopoverBody(): PopoverBodyComponent {\n return this._templateData?.popoverBody || this._popoverBody;\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._getPopoverBody()) {\n this._getPopoverBody().detectChanges();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(focusLastElement = true): void {\n if (focusLastElement && this.focusAutoCapture) {\n this._lastActiveElement = <HTMLElement>document.activeElement;\n this._getPopoverBody()?._focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _focusLastActiveElementBeforeOpen(focusLastElement = true): void {\n if (focusLastElement && this.focusAutoCapture && this._lastActiveElement) {\n this._lastActiveElement.focus();\n }\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from './popover.component';\n\n@Directive({\n selector: '[fdPopoverTrigger], [fd-popover-trigger]',\n standalone: true\n})\nexport class PopoverTriggerDirective implements OnDestroy {\n /** Set reference to Popover Component */\n @Input('fdPopoverTrigger')\n set popover(popover: Nullable<PopoverComponent>) {\n if (popover) {\n popover.trigger = this._elementRef;\n this._listenOnExpanded(popover);\n }\n this._setAriaAttributes(popover);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _isExpandedSubscription: Subscription;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeExpandedListener();\n }\n\n /** @hidden */\n private _listenOnExpanded(popover: PopoverComponent): void {\n this._unsubscribeExpandedListener();\n if (popover) {\n this._isExpandedSubscription = popover.isOpenChange\n .pipe(startWith(popover.isOpen))\n .subscribe((isOpen) => (this.ariaExpanded = isOpen));\n }\n }\n\n /** @hidden */\n private _setAriaAttributes(popover: Nullable<PopoverComponent>): void {\n this.ariaHasPopup = !!popover;\n this.ariaControls = popover ? popover.id : null;\n }\n\n /** @hidden */\n private _unsubscribeExpandedListener(): void {\n if (this._isExpandedSubscription) {\n this._isExpandedSubscription.unsubscribe();\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_POPOVER_COMPONENT = new InjectionToken('FdPopoverComponent');\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChild,\n ElementRef,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DOWN_ARROW, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport equal from 'fast-deep-equal';\nimport { BasePopoverClass } from './base/base-popover.class';\nimport { PopoverBodyDirective } from './popover-body.directive';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\nimport { PopoverMobileComponent } from './popover-mobile/popover-mobile.component';\nimport { PopoverService, PopoverTemplate } from './popover-service/popover.service';\nimport { POPOVER_COMPONENT } from './popover.interface';\nimport { FD_POPOVER_COMPONENT } from './tokens';\n\nexport const SELECT_CLASS_NAMES = {\n selectControl: 'fd-select__control'\n};\n\nlet cdkPopoverUniqueId = 0;\n\n/**\n * The popover is a wrapping component that accepts a *control* as well as a *body*.\n * The control is what will trigger the opening of the actual popover, which is called the body.\n * By default, popovers are triggered by click. This can be customized through the *triggers* input.\n */\n@Component({\n selector: 'fd-popover',\n templateUrl: './popover.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n PopoverService,\n {\n provide: FD_POPOVER_COMPONENT,\n useExisting: PopoverComponent\n },\n contentDensityObserverProviders()\n ],\n host: {\n class: 'fd-popover-custom',\n '[class.fd-popover-custom--mobile]': 'mobile',\n '[attr.id]': 'id'\n },\n standalone: true,\n imports: [NgIf, CdkOverlayOrigin, NgTemplateOutlet]\n})\nexport class PopoverComponent\n extends BasePopoverClass\n implements AfterViewInit, AfterContentInit, OnDestroy, OnChanges\n{\n /** Tooltip for popover */\n @Input()\n title: string;\n\n /** Reference to popover trigger element */\n @Input()\n set trigger(trigger: ElementRef) {\n if (equal(trigger, this._trigger)) {\n return;\n }\n this._trigger = trigger;\n this._popoverService.updateTriggerElement(this._trigger);\n }\n\n get trigger(): ElementRef {\n return this._trigger;\n }\n\n /** Whether position shouldn't change, when popover approach the corner of page */\n @Input()\n fixedPosition = false;\n\n /** Id of the popover. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-popover-' + cdkPopoverUniqueId++;\n\n /** Whether the popover component should be displayed in mobile mode. */\n @Input()\n mobile = false;\n\n /** Config for the popover in mobile mode */\n @Input()\n mobileConfig: MobileModeConfig = { hasCloseButton: true };\n\n /** @hidden */\n @ViewChild('templateRef', { read: TemplateRef })\n templateRef: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('container', { read: ViewContainerRef })\n container: ViewContainerRef;\n\n /** @hidden */\n @ViewChild(CdkOverlayOrigin)\n triggerOrigin: CdkOverlayOrigin;\n\n /** @hidden */\n @ContentChild(PopoverBodyComponent)\n popoverBody: PopoverBodyComponent;\n\n /** @hidden */\n @ContentChild(PopoverBodyDirective)\n popoverBodyDirective: PopoverBodyDirective;\n\n /** @hidden */\n @ContentChild(PopoverControlComponent)\n popoverControl: PopoverControlComponent;\n\n /** @hidden - template for Dialog body content */\n @ContentChild('popoverBodyContent')\n popoverBodyContentTemplate: TemplateRef<any>;\n\n /** @hidden - template for Dialog footer content */\n @ContentChild('popoverFooterContent')\n popoverFooterContentTemplate: TemplateRef<any>;\n\n /** @hidden */\n private _trigger: ElementRef;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<PopoverMobileComponent>;\n\n /** @hidden */\n constructor(\n private readonly _popoverService: PopoverService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _rendered: Renderer2,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _injector: Injector,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const activeElement = document.activeElement;\n if (\n // popoverControl will be undefined when popover is used from \"fdPopoverTrigger\"\n this.popoverControl?.elRef.nativeElement.children[0] === activeElement &&\n activeElement?.tagName !== 'INPUT' &&\n activeElement?.tagName !== 'TEXTAREA' &&\n !activeElement?.classList.contains(SELECT_CLASS_NAMES.selectControl)\n ) {\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n // prevent page scrolling on Space keydown\n event.preventDefault();\n this._popoverService.toggle();\n }\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._setupView();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.popoverControl && this.triggers.includes('click')) {\n this.popoverControl._tabbable = true;\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this._popoverService.refreshConfiguration(this);\n\n if (changes.disableScrollbar && this.popoverBody && this.popoverBody._scrollbar) {\n this.popoverBody._scrollbar._inPopover = changes.disableScrollbar.currentValue;\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._popoverService.onDestroy();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Opens the popover. */\n open(): void {\n this._popoverService.open();\n this._cdr.markForCheck();\n }\n\n /** Closes the popover. */\n close(focusActiveElement = true): void {\n this._popoverService.close(focusActiveElement);\n this._cdr.markForCheck();\n }\n\n /** Temporary sets the ignoring of the event triggers. */\n setIgnoreTriggers(ignore: boolean): void {\n this._popoverService.setIgnoreTriggers(ignore);\n }\n\n /**\n * Method called to change position of popover,\n * recommended to be used only when popover is opened, otherwise change position or cdkPlacement\n */\n applyNewPosition(positions: ConnectedPosition[]): void {\n this._popoverService.applyNewPosition(positions);\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** Handler for alt + arrow down keydown */\n triggerKeyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && event.altKey && !this.disabled) {\n this.open();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** @hidden Select and instantiate popover view mode */\n private _setupView(): void {\n if (!this.mobile) {\n this._popoverService._mobile = false;\n if (!this.popoverBody) {\n this._popoverService.templateContent = this.templateRef;\n }\n this._popoverService.initialise(\n this.trigger || this.triggerOrigin.elementRef,\n this,\n this._getPopoverBodyContent()\n );\n } else {\n this._setupMobileMode();\n }\n\n this._cdr.detectChanges();\n }\n\n /**\n * Depending on a used popover body type, returns a popover body content\n **/\n private _getPopoverBodyContent(): PopoverTemplate | TemplateRef<void> | null {\n if (this.popoverBody) {\n return {\n template: this.templateRef,\n container: this.container,\n popoverBody: this.popoverBody\n };\n }\n if (this.popoverBodyDirective) {\n return this.popoverBodyDirective.templateRef;\n }\n return null;\n }\n\n /** @hidden Open Popover in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: POPOVER_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._popoverService._mobile = true;\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n {\n popoverBodyContentTemplate: this.popoverBodyContentTemplate,\n popoverFooterContentTemplate: this.popoverFooterContentTemplate\n },\n PopoverMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden - Listen on popover trigger ref clicks */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile) {\n this._clickEventListener = this._rendered.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n}\n","<div\n *ngIf=\"!trigger\"\n cdkOverlayOrigin\n class=\"fd-popover__control\"\n [class]=\"additionalTriggerClass\"\n (keydown)=\"triggerKeyDownHandler($event)\"\n>\n <ng-content select=\"fd-popover-control, [fdPopoverControl]\"></ng-content>\n</div>\n\n<ng-template #templateRef>\n <ng-content select=\"fd-popover-body\"></ng-content>\n\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container #container></ng-container>\n","import { NgModule } from '@angular/core';\n\nimport { PopoverBodyFooterDirective } from './popover-body/popover-body-directives/popover-body-footer.directive';\nimport { PopoverBodyHeaderDirective } from './popover-body/popover-body-directives/popover-body-header.directive';\nimport { PopoverBodyComponent } from './popover-body/popover-body.component';\nimport { PopoverControlComponent } from './popover-control/popover-control.component';\n\nimport { PopoverBodyDirective } from './popover-body.directive';\nimport { PopoverContainerDirective } from './popover-container/popover-container.directive';\nimport { PopoverTriggerDirective } from './popover-trigger.directive';\nimport { PopoverComponent } from './popover.component';\n\n@NgModule({\n imports: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContainerDirective,\n PopoverBodyDirective\n ],\n exports: [\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyHeaderDirective,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverTriggerDirective,\n PopoverContainerDirective,\n PopoverBodyDirective\n ]\n})\nexport class PopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.PopoverContainerDirective","i1.PopoverService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core",
3
- "version": "0.46.1-rc.2",
3
+ "version": "0.46.1-rc.3",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "ng-update": {
6
6
  "migrations": "./schematics/migrations.json"
@@ -23,8 +23,8 @@
23
23
  "@angular/forms": "^16.2.0",
24
24
  "@angular/platform-browser": "^16.2.0",
25
25
  "@angular/router": "^16.2.0",
26
- "@fundamental-ngx/cdk": "0.46.1-rc.2",
27
- "@fundamental-ngx/i18n": "0.46.1-rc.2",
26
+ "@fundamental-ngx/cdk": "0.46.1-rc.3",
27
+ "@fundamental-ngx/i18n": "0.46.1-rc.3",
28
28
  "@sap-theming/theming-base-content": "^11.7.0",
29
29
  "fundamental-styles": "0.30.2",
30
30
  "rxjs": "^7.8.0"
@@ -54,21 +54,21 @@ function addExternalLibraries(options) {
54
54
  });
55
55
  }
56
56
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/i18n') ||
57
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.1-rc.2', '<')) {
57
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.1-rc.3', '<')) {
58
58
  dependencies.push({
59
59
  type: dependencies_1.NodeDependencyType.Default,
60
60
  // Will be replaced with the real version during sync-version script run
61
- version: `0.46.1-rc.2`,
61
+ version: `0.46.1-rc.3`,
62
62
  name: '@fundamental-ngx/i18n',
63
63
  overwrite: true
64
64
  });
65
65
  }
66
66
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/cdk') ||
67
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.1-rc.2', '<')) {
67
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.1-rc.3', '<')) {
68
68
  dependencies.push({
69
69
  type: dependencies_1.NodeDependencyType.Default,
70
70
  // Will be replaced with the real version during sync-version script run
71
- version: `0.46.1-rc.2`,
71
+ version: `0.46.1-rc.3`,
72
72
  name: '@fundamental-ngx/cdk',
73
73
  overwrite: true
74
74
  });