@kirbydesign/designsystem 8.3.0 → 8.3.1

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.
@@ -278,9 +278,11 @@ export class FloatingDirective {
278
278
  }
279
279
  }
280
280
  handleClickOutsideHostElement(event) {
281
- const clickedOnReferenceWithClickTriggerEnabled = this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');
282
- if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {
283
- this.hide();
281
+ if (event.target instanceof Node) {
282
+ const clickedOnReferenceWithClickTriggerEnabled = this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');
283
+ if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {
284
+ this.hide();
285
+ }
284
286
  }
285
287
  }
286
288
  getOutletElement(config) {
@@ -367,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
367
369
  type: HostListener,
368
370
  args: ['document:keydown.escape', ['$event']]
369
371
  }] } });
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2hhcmVkL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssR0FFTixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7QUFJMUUsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4QixtREFBUSxDQUFBO0lBQ1IscURBQVMsQ0FBQTtJQUNULHVEQUFVLENBQUE7QUFDWixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3hCLDZCQUFXLENBQUE7SUFDWCwyQkFBUyxDQUFBO0lBQ1QsaUNBQWUsQ0FBQTtJQUNmLCtCQUFhLENBQUE7QUFDZixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekI7QUFjRDs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQXlLNUIsWUFDVSxVQUFzQixFQUN0QixRQUFtQixFQUNuQixlQUFnQztRQUZoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsb0JBQWUs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QUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7O2lJQWxaVSxpQkFBaUI7cUhBQWpCLGlCQUFpQiwyakJBSmpCLENBQUMsZUFBZSxDQUFDOzJGQUlqQixpQkFBaUI7a0JBTjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUM1QixjQUFjLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt1SkFLcUIsU0FBUztzQkFBNUIsS0FBSztnQkFjYyxTQUFTO3NCQUE1QixLQUFLO2dCQVljLFFBQVE7c0JBQTNCLEtBQUs7Z0JBY2MsUUFBUTtzQkFBM0IsS0FBSztnQkFlYyxlQUFlO3NCQUFsQyxLQUFLO2dCQWNjLGtCQUFrQjtzQkFBckMsS0FBSztnQkFlVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLE1BQU07c0JBQXJCLEtBQUs7Z0JBTVUsS0FBSztzQkFBcEIsS0FBSztnQkFLVSxhQUFhO3NCQUE1QixLQUFLO2dCQUtVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBS1csY0FBYztzQkFBOUIsTUFBTTtnQkFHQSxrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGF1dG9QbGFjZW1lbnQsXG4gIGF1dG9VcGRhdGUsXG4gIGNvbXB1dGVQb3NpdGlvbixcbiAgb2Zmc2V0LFxuICBzaGlmdCxcbiAgU3RyYXRlZ3ksXG59IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgQ29tcHV0ZVBvc2l0aW9uQ29uZmlnLCBNaWRkbGV3YXJlLCBQbGFjZW1lbnQgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZS9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5pbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb3J0YWxEaXJlY3RpdmUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZC9wb3J0YWwnO1xuXG5leHBvcnQgdHlwZSBUcmlnZ2VyRXZlbnQgPSAnaG92ZXInIHwgJ2NsaWNrJyB8ICdmb2N1cyc7XG5cbmV4cG9ydCBlbnVtIEZsb2F0aW5nT2Zmc2V0IHtcbiAgbm9uZSA9IDAsXG4gIHNtYWxsID0gNCxcbiAgbWVkaXVtID0gOCxcbn1cblxuZXhwb3J0IGVudW0gT3V0bGV0U2VsZWN0b3Ige1xuICB0YWcgPSAndGFnJyxcbiAgaWQgPSAnaWQnLFxuICBjbGFzcyA9ICdjbGFzcycsXG4gIG5hbWUgPSAnbmFtZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGFsT3V0bGV0Q29uZmlnIHtcbiAgc2VsZWN0b3I6IE91dGxldFNlbGVjdG9yO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXZlbnRNZXRob2RzIHtcbiAgZXZlbnQ6IHN0cmluZztcbiAgbWV0aG9kOiAoKSA9PiB2b2lkO1xufVxuXG50eXBlIEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSAoKSA9PiB2b2lkO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEZsb2F0aW5nRGlyZWN0aXZlIGlzIGEgdXRpbGl0eSB0aGF0IGxldHMgeW91IGRlY2xhcmF0aXZlIGFuY2hvciBcInBvcHVwXCIgY29udGFpbmVycyB0byBhbm90aGVyIGVsZW1lbnQuXG4gKlxuICogVXNlcyBmbG9hdGluZy11aSwgd2l0aCB0aGlzIGRpcmVjdGl2ZSB3cmFwcyB0aGUgZnVuY3Rpb25hbGl0eTogaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWRcbiAqXG4gKiBVc2VzIFBvcnRhbERpcmVjdGl2ZSB0byBlbmFibGUgZnVuY3Rpb25hbGl0eSBmb3IgcG9ydGFsaW5nIHRoZSBmbG9hdGVkIGNvbnRlbnQuIFRoaXMgc2hvdWxkIGJlIHVzZWQgd2hlbiBuZWVkZWRcbiAqIGFuZCBub3QgYXMgdGhlIGRlZmF1bHQgb3B0aW9uLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlGbG9hdGluZ10nLFxuICBwcm92aWRlcnM6IFtQb3J0YWxEaXJlY3RpdmVdLFxuICBob3N0RGlyZWN0aXZlczogW1BvcnRhbERpcmVjdGl2ZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgaG9zdCBzaG91bGQgYW5jaG9yIHRvXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVmZXJlbmNlKHJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMudGVhckRvd25SZWZlcmVuY2VFbGVtZW50RXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMuX3JlZmVyZW5jZSA9IHJlZjtcbiAgICB0aGlzLnNldHVwRXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMuYXV0b1VwZGF0ZVBvc2l0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlZmVyZW5jZSgpOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmZXJlbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvdyB0aGUgaG9zdCBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSByZWZlcmVuY2UuIENhbiBiZSBhZmZlY3RlZCBieSBtaWRkbGV3YXJlXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcGxhY2VtZW50KHBsYWNlbWVudDogUGxhY2VtZW50KSB7XG4gICAgdGhpcy5fcGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBwbGFjZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RyYXRlZ3kgZm9yIGhvdyB0aGUgaG9zdCBzaG91bGQgYmUgcG9zaXRpb25lZC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBzdHJhdGVneShzdHJhdGVneTogU3RyYXRlZ3kpIHtcbiAgICB0aGlzLl9zdHJhdGVneSA9IHN0cmF0ZWd5O1xuICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJhdGVneSgpOiBTdHJhdGVneSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hlbiB0aGUgaG9zdCBzaG91bGQgYmUgZGlzcGxheWVkL2hpZGRlbiwgaS5lLiBjbGljayB3aWxsIGF0dGFjaCBhIGNsaWNrIGxpc3RlbmVyIHRvIHRoZSByZWZlcmVuY2VcbiAgICogdGhhdCBtYWtlcyB0aGUgaG9zdCB0b2dnbGUgZGlzcGxheS4gU3VwcG9ydHMgbXVsdGlwbGUgdHJpZ2dlcnMsIHRvIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBmb3IgY29tYmluYXRpb25zXG4gICAqIGxpa2UgY2xpY2svZm9jdXMuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdHJpZ2dlcnMoZXZlbnRUcmlnZ2VyczogQXJyYXk8VHJpZ2dlckV2ZW50Pikge1xuICAgIHRoaXMuX3RyaWdnZXJzID0gZXZlbnRUcmlnZ2VycztcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnNldHVwRXZlbnRIYW5kbGluZygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VycygpOiBBcnJheTxUcmlnZ2VyRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlcnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IGZvciB3aGljaCB0aGUgY29udGVudCBzaG91bGQgcG9ydGFsIGludG8uXG4gICAqIFByb3ZpZGluZyBhbiBvdXRsZXQgZW5hYmxlcyB0aGUgcG9ydGFsLCBpZiBub3RoaW5nIGlzIHByb3ZpZGVkLCB0aGUgcHJvdmlkZWQgc3RyYXRlZ3kgaXMgdXNlZC5cbiAgICogVGhpcyBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZXJlJ3MgaXNzdWVzIHdpdGggdGhlIHN0YWNraW5nIGNvbnRleHQsIGFuZCBub3QgYXMgYSBkZWZhdWx0IG9wdGlvbi5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBET01Qb3J0YWxPdXRsZXQob3V0bGV0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3Byb3ZpZGVkUG9ydGFsT3V0bGV0ID0gb3V0bGV0O1xuICAgIHRoaXMucG9ydGFsRGlyZWN0aXZlLm91dGxldCA9XG4gICAgICB0aGlzLkRPTVBvcnRhbE91dGxldCA/PyB0aGlzLmdldE91dGxldEVsZW1lbnQodGhpcy5wb3J0YWxPdXRsZXRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIGdldCBET01Qb3J0YWxPdXRsZXQoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wcm92aWRlZFBvcnRhbE91dGxldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGhvdyB0byBhdXRvbWF0aWNhbGx5IGZpbmQgYW5kIGFzc2lnbiBET01Qb3J0YWxPdXRsZXQgaWYgbm9uZSBpcyBwcm92aWRlZCBpbiBET01Qb3J0YWxPdXRsZXQuXG4gICAqIElmIG5vdGhpbmcgaXMgcHJvdmlkZWQgaGVyZSBhbmQgaW4gRE9NUG9ydGFsT3V0bGV0LCB0aGUgcHJvdmlkZWQgc3RyYXRlZ3kgaXMgdXNlZFxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHBvcnRhbE91dGxldENvbmZpZyhjb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BvcnRhbE91dGxldENvbmZpZyA9IGNvbmZpZztcblxuICAgIGlmICghdGhpcy5ET01Qb3J0YWxPdXRsZXQpIHtcbiAgICAgIHRoaXMucG9ydGFsRGlyZWN0aXZlLm91dGxldCA9IHRoaXMuZ2V0T3V0bGV0RWxlbWVudChjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9ydGFsT3V0bGV0Q29uZmlnKCk6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2ZW50IGhvc3QgZnJvbSBiZWluZyB0b2dnbGVkIGlmIHNldC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGlzcGxhY2VzIHRoZSBmbG9hdGluZyBlbGVtZW50IGZyb20gaXRzIGNvcmUgcGxhY2VtZW50IGFsb25nIHRoZSBzcGVjaWZpZWQgYXhlcy5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIG9mZnNldDogRmxvYXRpbmdPZmZzZXQgPSBGbG9hdGluZ09mZnNldC5ub25lO1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGUgc3BlY2lmaWVkIGF4ZXMgaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3LlxuICAgKiBUaGlzIGRvZXMgbm90IGFsd2F5cyB3b3JrIGFzIGV4cGVjdGVkLCBzbyBkb24ndCBcImp1c3RcIiBzZXQgaXQuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzaGlmdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDaG9vc2VzIHRoZSBwbGFjZW1lbnQgdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHkuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvUGxhY2VtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgaGlkaW5nIHRoZSBob3N0IGJ5IGV2ZW50cy4gU2VlIHZhcmlhYmxlIG5hbWVzLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uRXNjYXBlS2V5OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGNsb3NlT25CYWNrZHJvcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIG9wdGlvbiB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBob3N0IGNoYW5nZXMgZGlzcGxheS4gVGhlIG5ldyBkaXNwbGF5IHZhbHVlIGlzIHByb3ZpZGVkLlxuICAgKiAqL1xuICBAT3V0cHV0KCkgcHVibGljIGRpc3BsYXlDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Fc2NhcGVLZXlQcmVzc2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT25Fc2NhcGVLZXkpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgcHJpdmF0ZSBfc3RyYXRlZ3k6IFN0cmF0ZWd5ID0gJ2Fic29sdXRlJztcblxuICBwcml2YXRlIF9wcm92aWRlZFBvcnRhbE91dGxldDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfcG9ydGFsT3V0bGV0Q29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcnM6IEFycmF5PFRyaWdnZXJFdmVudD4gPSBbJ2NsaWNrJ107XG5cbiAgcHJpdmF0ZSBfcmVmZXJlbmNlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgYXV0b1VwZGF0ZXJSZWY6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgaXNTaG93bjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuW10gPSBbXTtcbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjtcbiAgcHJpdmF0ZSB0cmlnZ2VyRXZlbnRNYXA6IE1hcDxUcmlnZ2VyRXZlbnQsIEV2ZW50TWV0aG9kc1tdPiA9IG5ldyBNYXAoW1xuICAgIFsnY2xpY2snLCBbeyBldmVudDogJ2NsaWNrJywgbWV0aG9kOiB0aGlzLnRvZ2dsZVNob3cuYmluZCh0aGlzKSB9XV0sXG4gICAgW1xuICAgICAgJ2hvdmVyJyxcbiAgICAgIFtcbiAgICAgICAgeyBldmVudDogJ21vdXNlZW50ZXInLCBtZXRob2Q6IHRoaXMuc2hvdy5iaW5kKHRoaXMpIH0sXG4gICAgICAgIHsgZXZlbnQ6ICdtb3VzZWxlYXZlJywgbWV0aG9kOiB0aGlzLmhpZGUuYmluZCh0aGlzKSB9LFxuICAgICAgXSxcbiAgICBdLFxuICAgIFtcbiAgICAgICdmb2N1cycsXG4gICAgICBbXG4gICAgICAgIHsgZXZlbnQ6ICdmb2N1cycsIG1ldGhvZDogdGhpcy5zaG93LmJpbmQodGhpcykgfSxcbiAgICAgICAgeyBldmVudDogJ2JsdXInLCBtZXRob2Q6IHRoaXMuaGlkZS5iaW5kKHRoaXMpIH0sXG4gICAgICBdLFxuICAgIF0sXG4gIF0pO1xuXG4gIHByaXZhdGUgSFRNTEVsZW1lbnRzOiB7XG4gICAgW2tleSBpbiBPdXRsZXRTZWxlY3RvciB8ICdkZWZhdWx0J106ICh2YWx1ZT86IHN0cmluZykgPT4gQXJyYXk8RWxlbWVudD4gfCBudWxsO1xuICB9ID0ge1xuICAgIGlkOiAodmFsdWUpID0+IEFycmF5Lm9mKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHZhbHVlKSksXG4gICAgY2xhc3M6ICh2YWx1ZSkgPT4gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHZhbHVlKSksXG4gICAgbmFtZTogKHZhbHVlKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHZhbHVlKSksXG4gICAgdGFnOiAodmFsdWUpID0+IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodmFsdWUpKSxcbiAgICBkZWZhdWx0OiAoKSA9PiBudWxsLFxuICB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcG9ydGFsRGlyZWN0aXZlOiBQb3J0YWxEaXJlY3RpdmVcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEZsb2F0U3R5bGluZ1RvSG9zdEVsZW1lbnQoKTtcbiAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRhY2hEb2N1bWVudENsaWNrRXZlbnQoKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdibG9jaycpO1xuICAgIHRoaXMuaXNTaG93biA9IHRydWU7XG4gICAgdGhpcy5kaXNwbGF5Q2hhbmdlZC5lbWl0KHRoaXMuaXNTaG93bik7XG4gIH1cblxuICAvKiBTaG91bGQgYmUgYWNjZXNzaWJsZSBmb3IgcHJvZ3JhbW1hdGljYWxseSBzZXR0aW5nIGRpc3BsYXkgKi9cbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGVhckRvd25Eb2N1bWVudENsaWNrRXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB0aGlzLmlzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLmRpc3BsYXlDaGFuZ2VkLmVtaXQodGhpcy5pc1Nob3duKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgdG9nZ2xlU2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1Nob3duKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkRvY3VtZW50Q2xpY2tXaGlsZUhvc3RTaG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjbGlja2VkT25Ib3N0OiBib29sZWFuID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICBpZiAoY2xpY2tlZE9uSG9zdCkge1xuICAgICAgdGhpcy5oYW5kbGVDbGlja0luc2lkZUhvc3RFbGVtZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlSG9zdEVsZW1lbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRmxvYXRTdHlsaW5nVG9Ib3N0RWxlbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGVmdCcsIGAwcHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYDBweGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicsIHRoaXMuc3RyYXRlZ3kpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICd6LWluZGV4JyxcbiAgICAgIERlc2lnblRva2VuSGVscGVyLnpMYXllcigncG9wb3ZlcicpXG4gICAgKTtcbiAgICB0aGlzLnNldERpc3BsYXlTdHlsaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERpc3BsYXlTdHlsaW5nKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdkaXNwbGF5JyxcbiAgICAgIHRoaXMuaXNTaG93biA/IGBibG9ja2AgOiBgbm9uZWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWc6IENvbXB1dGVQb3NpdGlvbkNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXG4gICAgICBtaWRkbGV3YXJlOiB0aGlzLmdldE1pZGRsZXdhcmVDb25maWcoKSxcbiAgICAgIHN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5LFxuICAgIH0gYXMgQ29tcHV0ZVBvc2l0aW9uQ29uZmlnO1xuXG4gICAgZnJvbShcbiAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnJlZmVyZW5jZT8ubmF0aXZlRWxlbWVudCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZylcbiAgICApLnN1YnNjcmliZSgoeyB4LCB5IH0pID0+IHRoaXMuc2V0UG9zaXRpb25TdHlsaW5nT25Ib3N0RWxlbWVudCh4LCB5KSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1pZGRsZXdhcmVDb25maWcoKTogQXJyYXk8TWlkZGxld2FyZSB8IG51bGwgfCB1bmRlZmluZWQgfCBmYWxzZT4ge1xuICAgIGNvbnN0IG1pZGRsZXdhcmU6IEFycmF5PE1pZGRsZXdhcmUgfCBudWxsIHwgdW5kZWZpbmVkIHwgZmFsc2U+ID0gW107XG4gICAgbWlkZGxld2FyZS5wdXNoKG9mZnNldCh0aGlzLm9mZnNldCkpO1xuXG4gICAgaWYgKHRoaXMuc2hpZnQpIHtcbiAgICAgIG1pZGRsZXdhcmUucHVzaChzaGlmdCgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdXRvUGxhY2VtZW50KSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goYXV0b1BsYWNlbWVudCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWlkZGxld2FyZTtcbiAgfVxuXG4gIHByaXZhdGUgYXV0b1VwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlQXV0b1VwZGF0ZXJSZWYoKTtcblxuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9VcGRhdGVyUmVmID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24uYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uU3R5bGluZ09uSG9zdEVsZW1lbnQoeFBvc2l0aW9uOiBudW1iZXIsIHlQb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHt4UG9zaXRpb259cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYCR7eVBvc2l0aW9ufXB4YCk7XG4gICAgdGhpcy5zZXREaXNwbGF5U3R5bGluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSB8fCAhdGhpcy50cmlnZ2Vycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlckV2ZW50KSA9PlxuICAgICAgdGhpcy5hdHRhY2hUcmlnZ2VyRXZlbnRUb1JlZmVyZW5jZUVsZW1lbnQodHJpZ2dlcilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hEb2N1bWVudENsaWNrRXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICAnZG9jdW1lbnQnLFxuICAgICAgJ21vdXNlZG93bicsXG4gICAgICAoZXZlbnQpID0+IHRoaXMub25Eb2N1bWVudENsaWNrV2hpbGVIb3N0U2hvd24oZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoVHJpZ2dlckV2ZW50VG9SZWZlcmVuY2VFbGVtZW50KHRyaWdnZXI6IFRyaWdnZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50czogRXZlbnRNZXRob2RzW10gfCB1bmRlZmluZWQgPSB0aGlzLnRyaWdnZXJFdmVudE1hcC5nZXQodHJpZ2dlcik7XG5cbiAgICBpZiAoIWV2ZW50cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RyaWdnZXJ9IGlzIG1pc3NpbmcgZXZlbnQgZGVmaW5pdGlvbihzKWApO1xuICAgIH1cblxuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudDogRXZlbnRNZXRob2RzKSA9PiB7XG4gICAgICBjb25zdCBldmVudExpc3RlbmVyRGlzcG9zZUZuOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICBldmVudC5ldmVudCxcbiAgICAgICAgZXZlbnQubWV0aG9kXG4gICAgICApO1xuICAgICAgdGhpcy5yZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZucy5wdXNoKGV2ZW50TGlzdGVuZXJEaXNwb3NlRm4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGlja0luc2lkZUhvc3RFbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xpY2tPdXRzaWRlSG9zdEVsZW1lbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY2xpY2tlZE9uUmVmZXJlbmNlV2l0aENsaWNrVHJpZ2dlckVuYWJsZWQ6IGJvb2xlYW4gPVxuICAgICAgdGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiB0aGlzLnRyaWdnZXJzLmluY2x1ZGVzKCdjbGljaycpO1xuXG4gICAgaWYgKHRoaXMuY2xvc2VPbkJhY2tkcm9wICYmICFjbGlja2VkT25SZWZlcmVuY2VXaXRoQ2xpY2tUcmlnZ2VyRW5hYmxlZCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRsZXRFbGVtZW50KGNvbmZpZzogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLnNlbGVjdG9yIHx8ICFjb25maWcudmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzOiBBcnJheTxFbGVtZW50PiB8IG51bGwgPSB0aGlzLmdldEhUTUxFbGVtZW50cyhjb25maWcpO1xuXG4gICAgaWYgKCFlbGVtZW50cyB8fCBlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IEVycm9yKGBDb3VsZCBub3QgbG9jYXRlIEhUTUxFbGVtZW50IGZvciAke2NvbmZpZy5zZWxlY3Rvcn0uIERpZCB5b3UgbWlzc3BlbGwgaXQ/YCk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgTXVsdGlwbGUgSFRNTEVsZW1lbnRzIGZvdW5kIGZvciAke2NvbmZpZy5zZWxlY3Rvcn0uXG4gICAgICAgICBUaGlzIGNhbiBsZWFkIHRvIHVuaW50ZW5kZWQgYmVoYXZpb3Vycy4gUHJvdmlkZSBhbiB1bmlxdWUgb3V0bGV0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudHNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldEhUTUxFbGVtZW50cyhjb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCk6IEFycmF5PEVsZW1lbnQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuSFRNTEVsZW1lbnRzW2NvbmZpZy5zZWxlY3Rvcl0oY29uZmlnLnZhbHVlKSB8fCB0aGlzLkhUTUxFbGVtZW50c1snZGVmYXVsdCddKGNvbmZpZy52YWx1ZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZWFyRG93blJlZmVyZW5jZUVsZW1lbnRFdmVudEhhbmRsaW5nKCk6IHZvaWQge1xuICAgIHRoaXMucmVmZXJlbmNlRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbnMuZm9yRWFjaChcbiAgICAgIChldmVudExpc3RlbmVyRGlzcG9zZUZ1bmN0aW9uOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuKSA9PiB7XG4gICAgICAgIGlmIChldmVudExpc3RlbmVyRGlzcG9zZUZ1bmN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICBldmVudExpc3RlbmVyRGlzcG9zZUZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucmVmZXJlbmNlRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgdGVhckRvd25Eb2N1bWVudENsaWNrRXZlbnRIYW5kbGluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbikge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbigpO1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBdXRvVXBkYXRlclJlZigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvVXBkYXRlclJlZikge1xuICAgICAgdGhpcy5hdXRvVXBkYXRlclJlZigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRlYXJEb3duRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnJlbW92ZUF1dG9VcGRhdGVyUmVmKCk7XG4gIH1cbn1cbiJdfQ==
372
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2hhcmVkL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssR0FFTixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7QUFJMUUsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4QixtREFBUSxDQUFBO0lBQ1IscURBQVMsQ0FBQTtJQUNULHVEQUFVLENBQUE7QUFDWixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3hCLDZCQUFXLENBQUE7SUFDWCwyQkFBUyxDQUFBO0lBQ1QsaUNBQWUsQ0FBQTtJQUNmLCtCQUFhLENBQUE7QUFDZixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekI7QUFjRDs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQXlLNUIsWUFDVSxVQUFzQixFQUN0QixRQUFtQixFQUNuQixlQUFnQztRQUZoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsb0JBQWUs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SUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7O2lJQXBaVSxpQkFBaUI7cUhBQWpCLGlCQUFpQiwyakJBSmpCLENBQUMsZUFBZSxDQUFDOzJGQUlqQixpQkFBaUI7a0JBTjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUM1QixjQUFjLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt1SkFLcUIsU0FBUztzQkFBNUIsS0FBSztnQkFjYyxTQUFTO3NCQUE1QixLQUFLO2dCQVljLFFBQVE7c0JBQTNCLEtBQUs7Z0JBY2MsUUFBUTtzQkFBM0IsS0FBSztnQkFlYyxlQUFlO3NCQUFsQyxLQUFLO2dCQWNjLGtCQUFrQjtzQkFBckMsS0FBSztnQkFlVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLE1BQU07c0JBQXJCLEtBQUs7Z0JBTVUsS0FBSztzQkFBcEIsS0FBSztnQkFLVSxhQUFhO3NCQUE1QixLQUFLO2dCQUtVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBS1csY0FBYztzQkFBOUIsTUFBTTtnQkFHQSxrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGF1dG9QbGFjZW1lbnQsXG4gIGF1dG9VcGRhdGUsXG4gIGNvbXB1dGVQb3NpdGlvbixcbiAgb2Zmc2V0LFxuICBzaGlmdCxcbiAgU3RyYXRlZ3ksXG59IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgQ29tcHV0ZVBvc2l0aW9uQ29uZmlnLCBNaWRkbGV3YXJlLCBQbGFjZW1lbnQgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZS9zcmMvdHlwZXMnO1xuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5pbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb3J0YWxEaXJlY3RpdmUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZC9wb3J0YWwnO1xuXG5leHBvcnQgdHlwZSBUcmlnZ2VyRXZlbnQgPSAnaG92ZXInIHwgJ2NsaWNrJyB8ICdmb2N1cyc7XG5cbmV4cG9ydCBlbnVtIEZsb2F0aW5nT2Zmc2V0IHtcbiAgbm9uZSA9IDAsXG4gIHNtYWxsID0gNCxcbiAgbWVkaXVtID0gOCxcbn1cblxuZXhwb3J0IGVudW0gT3V0bGV0U2VsZWN0b3Ige1xuICB0YWcgPSAndGFnJyxcbiAgaWQgPSAnaWQnLFxuICBjbGFzcyA9ICdjbGFzcycsXG4gIG5hbWUgPSAnbmFtZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGFsT3V0bGV0Q29uZmlnIHtcbiAgc2VsZWN0b3I6IE91dGxldFNlbGVjdG9yO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXZlbnRNZXRob2RzIHtcbiAgZXZlbnQ6IHN0cmluZztcbiAgbWV0aG9kOiAoKSA9PiB2b2lkO1xufVxuXG50eXBlIEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSAoKSA9PiB2b2lkO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEZsb2F0aW5nRGlyZWN0aXZlIGlzIGEgdXRpbGl0eSB0aGF0IGxldHMgeW91IGRlY2xhcmF0aXZlIGFuY2hvciBcInBvcHVwXCIgY29udGFpbmVycyB0byBhbm90aGVyIGVsZW1lbnQuXG4gKlxuICogVXNlcyBmbG9hdGluZy11aSwgd2l0aCB0aGlzIGRpcmVjdGl2ZSB3cmFwcyB0aGUgZnVuY3Rpb25hbGl0eTogaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWRcbiAqXG4gKiBVc2VzIFBvcnRhbERpcmVjdGl2ZSB0byBlbmFibGUgZnVuY3Rpb25hbGl0eSBmb3IgcG9ydGFsaW5nIHRoZSBmbG9hdGVkIGNvbnRlbnQuIFRoaXMgc2hvdWxkIGJlIHVzZWQgd2hlbiBuZWVkZWRcbiAqIGFuZCBub3QgYXMgdGhlIGRlZmF1bHQgb3B0aW9uLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlGbG9hdGluZ10nLFxuICBwcm92aWRlcnM6IFtQb3J0YWxEaXJlY3RpdmVdLFxuICBob3N0RGlyZWN0aXZlczogW1BvcnRhbERpcmVjdGl2ZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgaG9zdCBzaG91bGQgYW5jaG9yIHRvXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVmZXJlbmNlKHJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLl9yZWZlcmVuY2UgPSByZWY7XG4gICAgdGhpcy5zZXR1cEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLmF1dG9VcGRhdGVQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCByZWZlcmVuY2UoKTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9yZWZlcmVuY2U7XG4gIH1cblxuICAvKipcbiAgICogSG93IHRoZSBob3N0IHNob3VsZCBiZSBwbGFjZWQgcmVsYXRpdmUgdG8gdGhlIHJlZmVyZW5jZS4gQ2FuIGJlIGFmZmVjdGVkIGJ5IG1pZGRsZXdhcmVcbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBwbGFjZW1lbnQocGxhY2VtZW50OiBQbGFjZW1lbnQpIHtcbiAgICB0aGlzLl9wbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgdGhpcy51cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsYWNlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2VtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJhdGVneSBmb3IgaG93IHRoZSBob3N0IHNob3VsZCBiZSBwb3NpdGlvbmVkLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHN0cmF0ZWd5KHN0cmF0ZWd5OiBTdHJhdGVneSkge1xuICAgIHRoaXMuX3N0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gICAgdGhpcy51cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0cmF0ZWd5KCk6IFN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB3aGVuIHRoZSBob3N0IHNob3VsZCBiZSBkaXNwbGF5ZWQvaGlkZGVuLCBpLmUuIGNsaWNrIHdpbGwgYXR0YWNoIGEgY2xpY2sgbGlzdGVuZXIgdG8gdGhlIHJlZmVyZW5jZVxuICAgKiB0aGF0IG1ha2VzIHRoZSBob3N0IHRvZ2dsZSBkaXNwbGF5LiBTdXBwb3J0cyBtdWx0aXBsZSB0cmlnZ2VycywgdG8gcHJvdmlkZSBmdW5jdGlvbmFsaXR5IGZvciBjb21iaW5hdGlvbnNcbiAgICogbGlrZSBjbGljay9mb2N1cy5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCB0cmlnZ2VycyhldmVudFRyaWdnZXJzOiBBcnJheTxUcmlnZ2VyRXZlbnQ+KSB7XG4gICAgdGhpcy5fdHJpZ2dlcnMgPSBldmVudFRyaWdnZXJzO1xuICAgIHRoaXMudGVhckRvd25SZWZlcmVuY2VFbGVtZW50RXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMuc2V0dXBFdmVudEhhbmRsaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRyaWdnZXJzKCk6IEFycmF5PFRyaWdnZXJFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSFRNTEVsZW1lbnQgZm9yIHdoaWNoIHRoZSBjb250ZW50IHNob3VsZCBwb3J0YWwgaW50by5cbiAgICogUHJvdmlkaW5nIGFuIG91dGxldCBlbmFibGVzIHRoZSBwb3J0YWwsIGlmIG5vdGhpbmcgaXMgcHJvdmlkZWQsIHRoZSBwcm92aWRlZCBzdHJhdGVneSBpcyB1c2VkLlxuICAgKiBUaGlzIHNob3VsZCBiZSB1c2VkIHdoZW4gdGhlcmUncyBpc3N1ZXMgd2l0aCB0aGUgc3RhY2tpbmcgY29udGV4dCwgYW5kIG5vdCBhcyBhIGRlZmF1bHQgb3B0aW9uLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IERPTVBvcnRhbE91dGxldChvdXRsZXQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcHJvdmlkZWRQb3J0YWxPdXRsZXQgPSBvdXRsZXQ7XG4gICAgdGhpcy5wb3J0YWxEaXJlY3RpdmUub3V0bGV0ID1cbiAgICAgIHRoaXMuRE9NUG9ydGFsT3V0bGV0ID8/IHRoaXMuZ2V0T3V0bGV0RWxlbWVudCh0aGlzLnBvcnRhbE91dGxldENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IERPTVBvcnRhbE91dGxldCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVkUG9ydGFsT3V0bGV0O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgaG93IHRvIGF1dG9tYXRpY2FsbHkgZmluZCBhbmQgYXNzaWduIERPTVBvcnRhbE91dGxldCBpZiBub25lIGlzIHByb3ZpZGVkIGluIERPTVBvcnRhbE91dGxldC5cbiAgICogSWYgbm90aGluZyBpcyBwcm92aWRlZCBoZXJlIGFuZCBpbiBET01Qb3J0YWxPdXRsZXQsIHRoZSBwcm92aWRlZCBzdHJhdGVneSBpcyB1c2VkXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcG9ydGFsT3V0bGV0Q29uZmlnKGNvbmZpZzogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcG9ydGFsT3V0bGV0Q29uZmlnID0gY29uZmlnO1xuXG4gICAgaWYgKCF0aGlzLkRPTVBvcnRhbE91dGxldCkge1xuICAgICAgdGhpcy5wb3J0YWxEaXJlY3RpdmUub3V0bGV0ID0gdGhpcy5nZXRPdXRsZXRFbGVtZW50KGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwb3J0YWxPdXRsZXRDb25maWcoKTogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcG9ydGFsT3V0bGV0Q29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFByZXZlbnQgaG9zdCBmcm9tIGJlaW5nIHRvZ2dsZWQgaWYgc2V0LlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEaXNwbGFjZXMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgZnJvbSBpdHMgY29yZSBwbGFjZW1lbnQgYWxvbmcgdGhlIHNwZWNpZmllZCBheGVzLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgb2Zmc2V0OiBGbG9hdGluZ09mZnNldCA9IEZsb2F0aW5nT2Zmc2V0Lm5vbmU7XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZSBzcGVjaWZpZWQgYXhlcyBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcuXG4gICAqIFRoaXMgZG9lcyBub3QgYWx3YXlzIHdvcmsgYXMgZXhwZWN0ZWQsIHNvIGRvbid0IFwianVzdFwiIHNldCBpdC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNoaWZ0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENob29zZXMgdGhlIHBsYWNlbWVudCB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseS5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIGF1dG9QbGFjZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5hYmxlcyBoaWRpbmcgdGhlIGhvc3QgYnkgZXZlbnRzLiBTZWUgdmFyaWFibGUgbmFtZXMuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uU2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGNsb3NlT25Fc2NhcGVLZXk6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkJhY2tkcm9wOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aGUgb3B0aW9uIHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGhvc3QgY2hhbmdlcyBkaXNwbGF5LiBUaGUgbmV3IGRpc3BsYXkgdmFsdWUgaXMgcHJvdmlkZWQuXG4gICAqICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgZGlzcGxheUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkVzY2FwZUtleVByZXNzZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPbkVzY2FwZUtleSkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcGxhY2VtZW50OiBQbGFjZW1lbnQgPSAnYm90dG9tLXN0YXJ0JztcblxuICBwcml2YXRlIF9zdHJhdGVneTogU3RyYXRlZ3kgPSAnYWJzb2x1dGUnO1xuXG4gIHByaXZhdGUgX3Byb3ZpZGVkUG9ydGFsT3V0bGV0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9wb3J0YWxPdXRsZXRDb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF90cmlnZ2VyczogQXJyYXk8VHJpZ2dlckV2ZW50PiA9IFsnY2xpY2snXTtcblxuICBwcml2YXRlIF9yZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgYXV0b1VwZGF0ZXJSZWY6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgaXNTaG93bjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuW10gPSBbXTtcbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjtcbiAgcHJpdmF0ZSB0cmlnZ2VyRXZlbnRNYXA6IE1hcDxUcmlnZ2VyRXZlbnQsIEV2ZW50TWV0aG9kc1tdPiA9IG5ldyBNYXAoW1xuICAgIFsnY2xpY2snLCBbeyBldmVudDogJ2NsaWNrJywgbWV0aG9kOiB0aGlzLnRvZ2dsZVNob3cuYmluZCh0aGlzKSB9XV0sXG4gICAgW1xuICAgICAgJ2hvdmVyJyxcbiAgICAgIFtcbiAgICAgICAgeyBldmVudDogJ21vdXNlZW50ZXInLCBtZXRob2Q6IHRoaXMuc2hvdy5iaW5kKHRoaXMpIH0sXG4gICAgICAgIHsgZXZlbnQ6ICdtb3VzZWxlYXZlJywgbWV0aG9kOiB0aGlzLmhpZGUuYmluZCh0aGlzKSB9LFxuICAgICAgXSxcbiAgICBdLFxuICAgIFtcbiAgICAgICdmb2N1cycsXG4gICAgICBbXG4gICAgICAgIHsgZXZlbnQ6ICdmb2N1cycsIG1ldGhvZDogdGhpcy5zaG93LmJpbmQodGhpcykgfSxcbiAgICAgICAgeyBldmVudDogJ2JsdXInLCBtZXRob2Q6IHRoaXMuaGlkZS5iaW5kKHRoaXMpIH0sXG4gICAgICBdLFxuICAgIF0sXG4gIF0pO1xuXG4gIHByaXZhdGUgSFRNTEVsZW1lbnRzOiB7XG4gICAgW2tleSBpbiBPdXRsZXRTZWxlY3RvciB8ICdkZWZhdWx0J106ICh2YWx1ZT86IHN0cmluZykgPT4gQXJyYXk8RWxlbWVudD4gfCBudWxsO1xuICB9ID0ge1xuICAgIGlkOiAodmFsdWUpID0+IEFycmF5Lm9mKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHZhbHVlKSksXG4gICAgY2xhc3M6ICh2YWx1ZSkgPT4gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHZhbHVlKSksXG4gICAgbmFtZTogKHZhbHVlKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHZhbHVlKSksXG4gICAgdGFnOiAodmFsdWUpID0+IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodmFsdWUpKSxcbiAgICBkZWZhdWx0OiAoKSA9PiBudWxsLFxuICB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcG9ydGFsRGlyZWN0aXZlOiBQb3J0YWxEaXJlY3RpdmVcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEZsb2F0U3R5bGluZ1RvSG9zdEVsZW1lbnQoKTtcbiAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRhY2hEb2N1bWVudENsaWNrRXZlbnQoKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdibG9jaycpO1xuICAgIHRoaXMuaXNTaG93biA9IHRydWU7XG4gICAgdGhpcy5kaXNwbGF5Q2hhbmdlZC5lbWl0KHRoaXMuaXNTaG93bik7XG4gIH1cblxuICAvKiBTaG91bGQgYmUgYWNjZXNzaWJsZSBmb3IgcHJvZ3JhbW1hdGljYWxseSBzZXR0aW5nIGRpc3BsYXkgKi9cbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGVhckRvd25Eb2N1bWVudENsaWNrRXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB0aGlzLmlzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLmRpc3BsYXlDaGFuZ2VkLmVtaXQodGhpcy5pc1Nob3duKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgdG9nZ2xlU2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1Nob3duKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkRvY3VtZW50Q2xpY2tXaGlsZUhvc3RTaG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjbGlja2VkT25Ib3N0OiBib29sZWFuID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICBpZiAoY2xpY2tlZE9uSG9zdCkge1xuICAgICAgdGhpcy5oYW5kbGVDbGlja0luc2lkZUhvc3RFbGVtZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlSG9zdEVsZW1lbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRmxvYXRTdHlsaW5nVG9Ib3N0RWxlbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGVmdCcsIGAwcHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYDBweGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicsIHRoaXMuc3RyYXRlZ3kpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICd6LWluZGV4JyxcbiAgICAgIERlc2lnblRva2VuSGVscGVyLnpMYXllcigncG9wb3ZlcicpXG4gICAgKTtcbiAgICB0aGlzLnNldERpc3BsYXlTdHlsaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERpc3BsYXlTdHlsaW5nKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdkaXNwbGF5JyxcbiAgICAgIHRoaXMuaXNTaG93biA/IGBibG9ja2AgOiBgbm9uZWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWc6IENvbXB1dGVQb3NpdGlvbkNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXG4gICAgICBtaWRkbGV3YXJlOiB0aGlzLmdldE1pZGRsZXdhcmVDb25maWcoKSxcbiAgICAgIHN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5LFxuICAgIH0gYXMgQ29tcHV0ZVBvc2l0aW9uQ29uZmlnO1xuXG4gICAgZnJvbShcbiAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnJlZmVyZW5jZT8ubmF0aXZlRWxlbWVudCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZylcbiAgICApLnN1YnNjcmliZSgoeyB4LCB5IH0pID0+IHRoaXMuc2V0UG9zaXRpb25TdHlsaW5nT25Ib3N0RWxlbWVudCh4LCB5KSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1pZGRsZXdhcmVDb25maWcoKTogQXJyYXk8TWlkZGxld2FyZSB8IG51bGwgfCB1bmRlZmluZWQgfCBmYWxzZT4ge1xuICAgIGNvbnN0IG1pZGRsZXdhcmU6IEFycmF5PE1pZGRsZXdhcmUgfCBudWxsIHwgdW5kZWZpbmVkIHwgZmFsc2U+ID0gW107XG4gICAgbWlkZGxld2FyZS5wdXNoKG9mZnNldCh0aGlzLm9mZnNldCkpO1xuXG4gICAgaWYgKHRoaXMuc2hpZnQpIHtcbiAgICAgIG1pZGRsZXdhcmUucHVzaChzaGlmdCgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdXRvUGxhY2VtZW50KSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goYXV0b1BsYWNlbWVudCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWlkZGxld2FyZTtcbiAgfVxuXG4gIHByaXZhdGUgYXV0b1VwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlQXV0b1VwZGF0ZXJSZWYoKTtcblxuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9VcGRhdGVyUmVmID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24uYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uU3R5bGluZ09uSG9zdEVsZW1lbnQoeFBvc2l0aW9uOiBudW1iZXIsIHlQb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHt4UG9zaXRpb259cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYCR7eVBvc2l0aW9ufXB4YCk7XG4gICAgdGhpcy5zZXREaXNwbGF5U3R5bGluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSB8fCAhdGhpcy50cmlnZ2Vycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlckV2ZW50KSA9PlxuICAgICAgdGhpcy5hdHRhY2hUcmlnZ2VyRXZlbnRUb1JlZmVyZW5jZUVsZW1lbnQodHJpZ2dlcilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hEb2N1bWVudENsaWNrRXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICAnZG9jdW1lbnQnLFxuICAgICAgJ21vdXNlZG93bicsXG4gICAgICAoZXZlbnQpID0+IHRoaXMub25Eb2N1bWVudENsaWNrV2hpbGVIb3N0U2hvd24oZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoVHJpZ2dlckV2ZW50VG9SZWZlcmVuY2VFbGVtZW50KHRyaWdnZXI6IFRyaWdnZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50czogRXZlbnRNZXRob2RzW10gfCB1bmRlZmluZWQgPSB0aGlzLnRyaWdnZXJFdmVudE1hcC5nZXQodHJpZ2dlcik7XG5cbiAgICBpZiAoIWV2ZW50cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RyaWdnZXJ9IGlzIG1pc3NpbmcgZXZlbnQgZGVmaW5pdGlvbihzKWApO1xuICAgIH1cblxuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudDogRXZlbnRNZXRob2RzKSA9PiB7XG4gICAgICBjb25zdCBldmVudExpc3RlbmVyRGlzcG9zZUZuOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICBldmVudC5ldmVudCxcbiAgICAgICAgZXZlbnQubWV0aG9kXG4gICAgICApO1xuICAgICAgdGhpcy5yZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZucy5wdXNoKGV2ZW50TGlzdGVuZXJEaXNwb3NlRm4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGlja0luc2lkZUhvc3RFbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xpY2tPdXRzaWRlSG9zdEVsZW1lbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUpIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRPblJlZmVyZW5jZVdpdGhDbGlja1RyaWdnZXJFbmFibGVkOiBib29sZWFuID1cbiAgICAgICAgdGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiB0aGlzLnRyaWdnZXJzLmluY2x1ZGVzKCdjbGljaycpO1xuXG4gICAgICBpZiAodGhpcy5jbG9zZU9uQmFja2Ryb3AgJiYgIWNsaWNrZWRPblJlZmVyZW5jZVdpdGhDbGlja1RyaWdnZXJFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3V0bGV0RWxlbWVudChjb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy5zZWxlY3RvciB8fCAhY29uZmlnLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50czogQXJyYXk8RWxlbWVudD4gfCBudWxsID0gdGhpcy5nZXRIVE1MRWxlbWVudHMoY29uZmlnKTtcblxuICAgIGlmICghZWxlbWVudHMgfHwgZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ291bGQgbm90IGxvY2F0ZSBIVE1MRWxlbWVudCBmb3IgJHtjb25maWcuc2VsZWN0b3J9LiBEaWQgeW91IG1pc3NwZWxsIGl0P2ApO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYE11bHRpcGxlIEhUTUxFbGVtZW50cyBmb3VuZCBmb3IgJHtjb25maWcuc2VsZWN0b3J9LlxuICAgICAgICAgVGhpcyBjYW4gbGVhZCB0byB1bmludGVuZGVkIGJlaGF2aW91cnMuIFByb3ZpZGUgYW4gdW5pcXVlIG91dGxldGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRzWzBdIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIVE1MRWxlbWVudHMoY29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQpOiBBcnJheTxFbGVtZW50PiB8IG51bGwge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLkhUTUxFbGVtZW50c1tjb25maWcuc2VsZWN0b3JdKGNvbmZpZy52YWx1ZSkgfHwgdGhpcy5IVE1MRWxlbWVudHNbJ2RlZmF1bHQnXShjb25maWcudmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdGVhckRvd25SZWZlcmVuY2VFbGVtZW50RXZlbnRIYW5kbGluZygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zLmZvckVhY2goXG4gICAgICAoZXZlbnRMaXN0ZW5lckRpc3Bvc2VGdW5jdGlvbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbikgPT4ge1xuICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lckRpc3Bvc2VGdW5jdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgZXZlbnRMaXN0ZW5lckRpc3Bvc2VGdW5jdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zID0gW107XG4gIH1cblxuICBwcml2YXRlIHRlYXJEb3duRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4pIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4oKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQXV0b1VwZGF0ZXJSZWYoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b1VwZGF0ZXJSZWYpIHtcbiAgICAgIHRoaXMuYXV0b1VwZGF0ZXJSZWYoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50ZWFyRG93bkRvY3VtZW50Q2xpY2tFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy50ZWFyRG93blJlZmVyZW5jZUVsZW1lbnRFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5yZW1vdmVBdXRvVXBkYXRlclJlZigpO1xuICB9XG59XG4iXX0=
@@ -284,9 +284,11 @@ class FloatingDirective {
284
284
  }
285
285
  handleClickOutsideHostElement(event) {
286
286
  var _a;
287
- const clickedOnReferenceWithClickTriggerEnabled = ((_a = this.reference) === null || _a === void 0 ? void 0 : _a.nativeElement.contains(event.target)) && this.triggers.includes('click');
288
- if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {
289
- this.hide();
287
+ if (event.target instanceof Node) {
288
+ const clickedOnReferenceWithClickTriggerEnabled = ((_a = this.reference) === null || _a === void 0 ? void 0 : _a.nativeElement.contains(event.target)) && this.triggers.includes('click');
289
+ if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {
290
+ this.hide();
291
+ }
290
292
  }
291
293
  }
292
294
  getOutletElement(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-shared-floating.mjs","sources":["../../../../libs/designsystem/shared/floating/src/floating.directive.ts","../../../../libs/designsystem/shared/floating/src/kirbydesign-designsystem-shared-floating.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n offset,\n shift,\n Strategy,\n} from '@floating-ui/dom';\nimport { ComputePositionConfig, Middleware, Placement } from '@floating-ui/core/src/types';\nimport { DesignTokenHelper } from '@kirbydesign/core';\nimport { from } from 'rxjs';\nimport { PortalDirective } from '@kirbydesign/designsystem/shared/portal';\n\nexport type TriggerEvent = 'hover' | 'click' | 'focus';\n\nexport enum FloatingOffset {\n none = 0,\n small = 4,\n medium = 8,\n}\n\nexport enum OutletSelector {\n tag = 'tag',\n id = 'id',\n class = 'class',\n name = 'name',\n}\n\nexport interface PortalOutletConfig {\n selector: OutletSelector;\n value: string;\n}\n\ninterface EventMethods {\n event: string;\n method: () => void;\n}\n\ntype EventListenerDisposeFn = () => void;\n\n/**\n * @summary FloatingDirective is a utility that lets you declarative anchor \"popup\" containers to another element.\n *\n * Uses floating-ui, with this directive wraps the functionality: https://floating-ui.com/docs/getting-started\n *\n * Uses PortalDirective to enable functionality for portaling the floated content. This should be used when needed\n * and not as the default option.\n */\n@Directive({\n selector: '[kirbyFloating]',\n providers: [PortalDirective],\n hostDirectives: [PortalDirective],\n standalone: true,\n})\nexport class FloatingDirective implements OnInit, OnDestroy {\n /**\n * Reference to the element for which the host should anchor to\n * */\n @Input() public set reference(ref: ElementRef) {\n this.tearDownReferenceElementEventHandling();\n this._reference = ref;\n this.setupEventHandling();\n this.autoUpdatePosition();\n }\n\n public get reference(): ElementRef | undefined {\n return this._reference;\n }\n\n /**\n * How the host should be placed relative to the reference. Can be affected by middleware\n * */\n @Input() public set placement(placement: Placement) {\n this._placement = placement;\n this.updateHostElementPosition();\n }\n\n public get placement() {\n return this._placement;\n }\n\n /**\n * The strategy for how the host should be positioned.\n * */\n @Input() public set strategy(strategy: Strategy) {\n this._strategy = strategy;\n this.updateHostElementPosition();\n }\n\n public get strategy(): Strategy {\n return this._strategy;\n }\n\n /**\n * Defines when the host should be displayed/hidden, i.e. click will attach a click listener to the reference\n * that makes the host toggle display. Supports multiple triggers, to provide functionality for combinations\n * like click/focus.\n * */\n @Input() public set triggers(eventTriggers: Array<TriggerEvent>) {\n this._triggers = eventTriggers;\n this.tearDownReferenceElementEventHandling();\n this.setupEventHandling();\n }\n\n public get triggers(): Array<TriggerEvent> {\n return this._triggers;\n }\n\n /**\n * The HTMLElement for which the content should portal into.\n * Providing an outlet enables the portal, if nothing is provided, the provided strategy is used.\n * This should be used when there's issues with the stacking context, and not as a default option.\n * */\n @Input() public set DOMPortalOutlet(outlet: HTMLElement | undefined) {\n this._providedPortalOutlet = outlet;\n this.portalDirective.outlet =\n this.DOMPortalOutlet ?? this.getOutletElement(this.portalOutletConfig);\n }\n\n public get DOMPortalOutlet(): HTMLElement | undefined {\n return this._providedPortalOutlet;\n }\n\n /**\n * Defines how to automatically find and assign DOMPortalOutlet if none is provided in DOMPortalOutlet.\n * If nothing is provided here and in DOMPortalOutlet, the provided strategy is used\n * */\n @Input() public set portalOutletConfig(config: PortalOutletConfig | undefined) {\n this._portalOutletConfig = config;\n\n if (!this.DOMPortalOutlet) {\n this.portalDirective.outlet = this.getOutletElement(config);\n }\n }\n\n public get portalOutletConfig(): PortalOutletConfig | undefined {\n return this._portalOutletConfig;\n }\n\n /**\n * Prevent host from being toggled if set.\n * */\n @Input() public isDisabled: boolean = false;\n\n /**\n * Displaces the floating element from its core placement along the specified axes.\n * */\n @Input() public offset: FloatingOffset = FloatingOffset.none;\n\n /**\n * Moves the floating element along the specified axes in order to keep it in view.\n * This does not always work as expected, so don't \"just\" set it.\n * */\n @Input() public shift: boolean = false;\n\n /**\n * Chooses the placement that has the most space available automatically.\n * */\n @Input() public autoPlacement: boolean = false;\n\n /**\n * Enables hiding the host by events. See variable names.\n * */\n @Input() public closeOnSelect: boolean = true;\n @Input() public closeOnEscapeKey: boolean = true;\n @Input() public closeOnBackdrop: boolean = true;\n\n /**\n * Enables the option to be notified when the host changes display. The new display value is provided.\n * */\n @Output() public displayChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener('document:keydown.escape', ['$event'])\n public onEscapeKeyPressed(): void {\n if (this.closeOnEscapeKey) {\n this.hide();\n }\n }\n\n private _placement: Placement = 'bottom-start';\n\n private _strategy: Strategy = 'absolute';\n\n private _providedPortalOutlet: HTMLElement | undefined;\n\n private _portalOutletConfig: PortalOutletConfig | undefined;\n\n private _triggers: Array<TriggerEvent> = ['click'];\n\n private _reference: ElementRef | undefined;\n\n private autoUpdaterRef: () => void;\n private isShown: boolean = false;\n private referenceEventListenerDisposeFns: EventListenerDisposeFn[] = [];\n private documentClickEventListenerDisposeFn: EventListenerDisposeFn;\n private triggerEventMap: Map<TriggerEvent, EventMethods[]> = new Map([\n ['click', [{ event: 'click', method: this.toggleShow.bind(this) }]],\n [\n 'hover',\n [\n { event: 'mouseenter', method: this.show.bind(this) },\n { event: 'mouseleave', method: this.hide.bind(this) },\n ],\n ],\n [\n 'focus',\n [\n { event: 'focus', method: this.show.bind(this) },\n { event: 'blur', method: this.hide.bind(this) },\n ],\n ],\n ]);\n\n private HTMLElements: {\n [key in OutletSelector | 'default']: (value?: string) => Array<Element> | null;\n } = {\n id: (value) => Array.of(document.getElementById(value)),\n class: (value) => Array.from(document.getElementsByClassName(value)),\n name: (value) => Array.from(document.getElementsByName(value)),\n tag: (value) => Array.from(document.getElementsByTagName(value)),\n default: () => null,\n };\n\n public constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private portalDirective: PortalDirective\n ) {}\n\n public ngOnInit(): void {\n this.addFloatStylingToHostElement();\n this.updateHostElementPosition();\n }\n\n /* Should be accessible for programmatically setting display */\n public show(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.attachDocumentClickEvent();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n this.isShown = true;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public hide(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.tearDownDocumentClickEventHandling();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.isShown = false;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public toggleShow(): void {\n if (this.isShown) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private onDocumentClickWhileHostShown(event: Event): void {\n const clickedOnHost: boolean = this.elementRef.nativeElement.contains(event.target);\n if (clickedOnHost) {\n this.handleClickInsideHostElement();\n } else {\n this.handleClickOutsideHostElement(event);\n }\n }\n\n private addFloatStylingToHostElement(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', this.strategy);\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'z-index',\n DesignTokenHelper.zLayer('popover')\n );\n this.setDisplayStyling();\n }\n\n private setDisplayStyling(): void {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'display',\n this.isShown ? `block` : `none`\n );\n }\n\n private updateHostElementPosition(): void {\n if (!this.reference) {\n return;\n }\n\n const config: ComputePositionConfig = {\n placement: this.placement,\n middleware: this.getMiddlewareConfig(),\n strategy: this.strategy,\n } as ComputePositionConfig;\n\n from(\n computePosition(this.reference?.nativeElement, this.elementRef.nativeElement, config)\n ).subscribe(({ x, y }) => this.setPositionStylingOnHostElement(x, y));\n }\n\n private getMiddlewareConfig(): Array<Middleware | null | undefined | false> {\n const middleware: Array<Middleware | null | undefined | false> = [];\n middleware.push(offset(this.offset));\n\n if (this.shift) {\n middleware.push(shift());\n }\n\n if (this.autoPlacement) {\n middleware.push(autoPlacement());\n }\n\n return middleware;\n }\n\n private autoUpdatePosition(): void {\n this.removeAutoUpdaterRef();\n\n if (!this.reference) {\n return;\n }\n\n this.autoUpdaterRef = autoUpdate(\n this.reference?.nativeElement,\n this.elementRef.nativeElement,\n this.updateHostElementPosition.bind(this)\n );\n }\n\n private setPositionStylingOnHostElement(xPosition: number, yPosition: number): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${xPosition}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${yPosition}px`);\n this.setDisplayStyling();\n }\n\n private setupEventHandling(): void {\n if (!this.reference || !this.triggers) {\n return;\n }\n\n this.triggers.forEach((trigger: TriggerEvent) =>\n this.attachTriggerEventToReferenceElement(trigger)\n );\n }\n\n private attachDocumentClickEvent(): void {\n if (this.documentClickEventListenerDisposeFn) {\n return;\n }\n\n this.documentClickEventListenerDisposeFn = this.renderer.listen(\n 'document',\n 'mousedown',\n (event) => this.onDocumentClickWhileHostShown(event)\n );\n }\n\n private attachTriggerEventToReferenceElement(trigger: TriggerEvent): void {\n const events: EventMethods[] | undefined = this.triggerEventMap.get(trigger);\n\n if (!events) {\n throw new Error(`${trigger} is missing event definition(s)`);\n }\n\n events.forEach((event: EventMethods) => {\n const eventListenerDisposeFn: EventListenerDisposeFn = this.renderer.listen(\n this.reference?.nativeElement,\n event.event,\n event.method\n );\n this.referenceEventListenerDisposeFns.push(eventListenerDisposeFn);\n });\n }\n\n private handleClickInsideHostElement(): void {\n if (this.closeOnSelect) {\n this.hide();\n }\n }\n\n private handleClickOutsideHostElement(event: Event): void {\n const clickedOnReferenceWithClickTriggerEnabled: boolean =\n this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');\n\n if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {\n this.hide();\n }\n }\n\n private getOutletElement(config: PortalOutletConfig | undefined): HTMLElement | null {\n if (!config || !config.selector || !config.value) {\n return null;\n }\n\n const elements: Array<Element> | null = this.getHTMLElements(config);\n\n if (!elements || elements.length === 0) {\n throw Error(`Could not locate HTMLElement for ${config.selector}. Did you misspell it?`);\n }\n\n if (elements.length > 1) {\n throw Error(\n `Multiple HTMLElements found for ${config.selector}.\n This can lead to unintended behaviours. Provide an unique outlet`\n );\n }\n\n return elements[0] as HTMLElement;\n }\n\n private getHTMLElements(config: PortalOutletConfig | undefined): Array<Element> | null {\n return (\n this.HTMLElements[config.selector](config.value) || this.HTMLElements['default'](config.value)\n );\n }\n\n private tearDownReferenceElementEventHandling(): void {\n this.referenceEventListenerDisposeFns.forEach(\n (eventListenerDisposeFunction: EventListenerDisposeFn) => {\n if (eventListenerDisposeFunction != null) {\n eventListenerDisposeFunction();\n }\n }\n );\n this.referenceEventListenerDisposeFns = [];\n }\n\n private tearDownDocumentClickEventHandling(): void {\n if (this.documentClickEventListenerDisposeFn) {\n this.documentClickEventListenerDisposeFn();\n this.documentClickEventListenerDisposeFn = null;\n }\n }\n\n private removeAutoUpdaterRef(): void {\n if (this.autoUpdaterRef) {\n this.autoUpdaterRef();\n }\n }\n\n public ngOnDestroy() {\n this.tearDownDocumentClickEventHandling();\n this.tearDownReferenceElementEventHandling();\n this.removeAutoUpdaterRef();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-shared-floating.mjs","sources":["../../../../libs/designsystem/shared/floating/src/floating.directive.ts","../../../../libs/designsystem/shared/floating/src/kirbydesign-designsystem-shared-floating.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n offset,\n shift,\n Strategy,\n} from '@floating-ui/dom';\nimport { ComputePositionConfig, Middleware, Placement } from '@floating-ui/core/src/types';\nimport { DesignTokenHelper } from '@kirbydesign/core';\nimport { from } from 'rxjs';\nimport { PortalDirective } from '@kirbydesign/designsystem/shared/portal';\n\nexport type TriggerEvent = 'hover' | 'click' | 'focus';\n\nexport enum FloatingOffset {\n none = 0,\n small = 4,\n medium = 8,\n}\n\nexport enum OutletSelector {\n tag = 'tag',\n id = 'id',\n class = 'class',\n name = 'name',\n}\n\nexport interface PortalOutletConfig {\n selector: OutletSelector;\n value: string;\n}\n\ninterface EventMethods {\n event: string;\n method: () => void;\n}\n\ntype EventListenerDisposeFn = () => void;\n\n/**\n * @summary FloatingDirective is a utility that lets you declarative anchor \"popup\" containers to another element.\n *\n * Uses floating-ui, with this directive wraps the functionality: https://floating-ui.com/docs/getting-started\n *\n * Uses PortalDirective to enable functionality for portaling the floated content. This should be used when needed\n * and not as the default option.\n */\n@Directive({\n selector: '[kirbyFloating]',\n providers: [PortalDirective],\n hostDirectives: [PortalDirective],\n standalone: true,\n})\nexport class FloatingDirective implements OnInit, OnDestroy {\n /**\n * Reference to the element for which the host should anchor to\n * */\n @Input() public set reference(ref: ElementRef<HTMLElement> | undefined) {\n this.tearDownReferenceElementEventHandling();\n this._reference = ref;\n this.setupEventHandling();\n this.autoUpdatePosition();\n }\n\n public get reference(): ElementRef<HTMLElement> | undefined {\n return this._reference;\n }\n\n /**\n * How the host should be placed relative to the reference. Can be affected by middleware\n * */\n @Input() public set placement(placement: Placement) {\n this._placement = placement;\n this.updateHostElementPosition();\n }\n\n public get placement() {\n return this._placement;\n }\n\n /**\n * The strategy for how the host should be positioned.\n * */\n @Input() public set strategy(strategy: Strategy) {\n this._strategy = strategy;\n this.updateHostElementPosition();\n }\n\n public get strategy(): Strategy {\n return this._strategy;\n }\n\n /**\n * Defines when the host should be displayed/hidden, i.e. click will attach a click listener to the reference\n * that makes the host toggle display. Supports multiple triggers, to provide functionality for combinations\n * like click/focus.\n * */\n @Input() public set triggers(eventTriggers: Array<TriggerEvent>) {\n this._triggers = eventTriggers;\n this.tearDownReferenceElementEventHandling();\n this.setupEventHandling();\n }\n\n public get triggers(): Array<TriggerEvent> {\n return this._triggers;\n }\n\n /**\n * The HTMLElement for which the content should portal into.\n * Providing an outlet enables the portal, if nothing is provided, the provided strategy is used.\n * This should be used when there's issues with the stacking context, and not as a default option.\n * */\n @Input() public set DOMPortalOutlet(outlet: HTMLElement | undefined) {\n this._providedPortalOutlet = outlet;\n this.portalDirective.outlet =\n this.DOMPortalOutlet ?? this.getOutletElement(this.portalOutletConfig);\n }\n\n public get DOMPortalOutlet(): HTMLElement | undefined {\n return this._providedPortalOutlet;\n }\n\n /**\n * Defines how to automatically find and assign DOMPortalOutlet if none is provided in DOMPortalOutlet.\n * If nothing is provided here and in DOMPortalOutlet, the provided strategy is used\n * */\n @Input() public set portalOutletConfig(config: PortalOutletConfig | undefined) {\n this._portalOutletConfig = config;\n\n if (!this.DOMPortalOutlet) {\n this.portalDirective.outlet = this.getOutletElement(config);\n }\n }\n\n public get portalOutletConfig(): PortalOutletConfig | undefined {\n return this._portalOutletConfig;\n }\n\n /**\n * Prevent host from being toggled if set.\n * */\n @Input() public isDisabled: boolean = false;\n\n /**\n * Displaces the floating element from its core placement along the specified axes.\n * */\n @Input() public offset: FloatingOffset = FloatingOffset.none;\n\n /**\n * Moves the floating element along the specified axes in order to keep it in view.\n * This does not always work as expected, so don't \"just\" set it.\n * */\n @Input() public shift: boolean = false;\n\n /**\n * Chooses the placement that has the most space available automatically.\n * */\n @Input() public autoPlacement: boolean = false;\n\n /**\n * Enables hiding the host by events. See variable names.\n * */\n @Input() public closeOnSelect: boolean = true;\n @Input() public closeOnEscapeKey: boolean = true;\n @Input() public closeOnBackdrop: boolean = true;\n\n /**\n * Enables the option to be notified when the host changes display. The new display value is provided.\n * */\n @Output() public displayChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener('document:keydown.escape', ['$event'])\n public onEscapeKeyPressed(): void {\n if (this.closeOnEscapeKey) {\n this.hide();\n }\n }\n\n private _placement: Placement = 'bottom-start';\n\n private _strategy: Strategy = 'absolute';\n\n private _providedPortalOutlet: HTMLElement | undefined;\n\n private _portalOutletConfig: PortalOutletConfig | undefined;\n\n private _triggers: Array<TriggerEvent> = ['click'];\n\n private _reference: ElementRef<HTMLElement> | undefined;\n\n private autoUpdaterRef: () => void;\n private isShown: boolean = false;\n private referenceEventListenerDisposeFns: EventListenerDisposeFn[] = [];\n private documentClickEventListenerDisposeFn: EventListenerDisposeFn;\n private triggerEventMap: Map<TriggerEvent, EventMethods[]> = new Map([\n ['click', [{ event: 'click', method: this.toggleShow.bind(this) }]],\n [\n 'hover',\n [\n { event: 'mouseenter', method: this.show.bind(this) },\n { event: 'mouseleave', method: this.hide.bind(this) },\n ],\n ],\n [\n 'focus',\n [\n { event: 'focus', method: this.show.bind(this) },\n { event: 'blur', method: this.hide.bind(this) },\n ],\n ],\n ]);\n\n private HTMLElements: {\n [key in OutletSelector | 'default']: (value?: string) => Array<Element> | null;\n } = {\n id: (value) => Array.of(document.getElementById(value)),\n class: (value) => Array.from(document.getElementsByClassName(value)),\n name: (value) => Array.from(document.getElementsByName(value)),\n tag: (value) => Array.from(document.getElementsByTagName(value)),\n default: () => null,\n };\n\n public constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private portalDirective: PortalDirective\n ) {}\n\n public ngOnInit(): void {\n this.addFloatStylingToHostElement();\n this.updateHostElementPosition();\n }\n\n /* Should be accessible for programmatically setting display */\n public show(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.attachDocumentClickEvent();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n this.isShown = true;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public hide(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.tearDownDocumentClickEventHandling();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.isShown = false;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public toggleShow(): void {\n if (this.isShown) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private onDocumentClickWhileHostShown(event: Event): void {\n const clickedOnHost: boolean = this.elementRef.nativeElement.contains(event.target);\n if (clickedOnHost) {\n this.handleClickInsideHostElement();\n } else {\n this.handleClickOutsideHostElement(event);\n }\n }\n\n private addFloatStylingToHostElement(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', this.strategy);\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'z-index',\n DesignTokenHelper.zLayer('popover')\n );\n this.setDisplayStyling();\n }\n\n private setDisplayStyling(): void {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'display',\n this.isShown ? `block` : `none`\n );\n }\n\n private updateHostElementPosition(): void {\n if (!this.reference) {\n return;\n }\n\n const config: ComputePositionConfig = {\n placement: this.placement,\n middleware: this.getMiddlewareConfig(),\n strategy: this.strategy,\n } as ComputePositionConfig;\n\n from(\n computePosition(this.reference?.nativeElement, this.elementRef.nativeElement, config)\n ).subscribe(({ x, y }) => this.setPositionStylingOnHostElement(x, y));\n }\n\n private getMiddlewareConfig(): Array<Middleware | null | undefined | false> {\n const middleware: Array<Middleware | null | undefined | false> = [];\n middleware.push(offset(this.offset));\n\n if (this.shift) {\n middleware.push(shift());\n }\n\n if (this.autoPlacement) {\n middleware.push(autoPlacement());\n }\n\n return middleware;\n }\n\n private autoUpdatePosition(): void {\n this.removeAutoUpdaterRef();\n\n if (!this.reference) {\n return;\n }\n\n this.autoUpdaterRef = autoUpdate(\n this.reference?.nativeElement,\n this.elementRef.nativeElement,\n this.updateHostElementPosition.bind(this)\n );\n }\n\n private setPositionStylingOnHostElement(xPosition: number, yPosition: number): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${xPosition}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${yPosition}px`);\n this.setDisplayStyling();\n }\n\n private setupEventHandling(): void {\n if (!this.reference || !this.triggers) {\n return;\n }\n\n this.triggers.forEach((trigger: TriggerEvent) =>\n this.attachTriggerEventToReferenceElement(trigger)\n );\n }\n\n private attachDocumentClickEvent(): void {\n if (this.documentClickEventListenerDisposeFn) {\n return;\n }\n\n this.documentClickEventListenerDisposeFn = this.renderer.listen(\n 'document',\n 'mousedown',\n (event) => this.onDocumentClickWhileHostShown(event)\n );\n }\n\n private attachTriggerEventToReferenceElement(trigger: TriggerEvent): void {\n const events: EventMethods[] | undefined = this.triggerEventMap.get(trigger);\n\n if (!events) {\n throw new Error(`${trigger} is missing event definition(s)`);\n }\n\n events.forEach((event: EventMethods) => {\n const eventListenerDisposeFn: EventListenerDisposeFn = this.renderer.listen(\n this.reference?.nativeElement,\n event.event,\n event.method\n );\n this.referenceEventListenerDisposeFns.push(eventListenerDisposeFn);\n });\n }\n\n private handleClickInsideHostElement(): void {\n if (this.closeOnSelect) {\n this.hide();\n }\n }\n\n private handleClickOutsideHostElement(event: Event): void {\n if (event.target instanceof Node) {\n const clickedOnReferenceWithClickTriggerEnabled: boolean =\n this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');\n\n if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {\n this.hide();\n }\n }\n }\n\n private getOutletElement(config: PortalOutletConfig | undefined): HTMLElement | null {\n if (!config || !config.selector || !config.value) {\n return null;\n }\n\n const elements: Array<Element> | null = this.getHTMLElements(config);\n\n if (!elements || elements.length === 0) {\n throw Error(`Could not locate HTMLElement for ${config.selector}. Did you misspell it?`);\n }\n\n if (elements.length > 1) {\n throw Error(\n `Multiple HTMLElements found for ${config.selector}.\n This can lead to unintended behaviours. Provide an unique outlet`\n );\n }\n\n return elements[0] as HTMLElement;\n }\n\n private getHTMLElements(config: PortalOutletConfig | undefined): Array<Element> | null {\n return (\n this.HTMLElements[config.selector](config.value) || this.HTMLElements['default'](config.value)\n );\n }\n\n private tearDownReferenceElementEventHandling(): void {\n this.referenceEventListenerDisposeFns.forEach(\n (eventListenerDisposeFunction: EventListenerDisposeFn) => {\n if (eventListenerDisposeFunction != null) {\n eventListenerDisposeFunction();\n }\n }\n );\n this.referenceEventListenerDisposeFns = [];\n }\n\n private tearDownDocumentClickEventHandling(): void {\n if (this.documentClickEventListenerDisposeFn) {\n this.documentClickEventListenerDisposeFn();\n this.documentClickEventListenerDisposeFn = null;\n }\n }\n\n private removeAutoUpdaterRef(): void {\n if (this.autoUpdaterRef) {\n this.autoUpdaterRef();\n }\n }\n\n public ngOnDestroy() {\n this.tearDownDocumentClickEventHandling();\n this.tearDownReferenceElementEventHandling();\n this.removeAutoUpdaterRef();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -279,9 +279,11 @@ class FloatingDirective {
279
279
  }
280
280
  }
281
281
  handleClickOutsideHostElement(event) {
282
- const clickedOnReferenceWithClickTriggerEnabled = this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');
283
- if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {
284
- this.hide();
282
+ if (event.target instanceof Node) {
283
+ const clickedOnReferenceWithClickTriggerEnabled = this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');
284
+ if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {
285
+ this.hide();
286
+ }
285
287
  }
286
288
  }
287
289
  getOutletElement(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-shared-floating.mjs","sources":["../../../../libs/designsystem/shared/floating/src/floating.directive.ts","../../../../libs/designsystem/shared/floating/src/kirbydesign-designsystem-shared-floating.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n offset,\n shift,\n Strategy,\n} from '@floating-ui/dom';\nimport { ComputePositionConfig, Middleware, Placement } from '@floating-ui/core/src/types';\nimport { DesignTokenHelper } from '@kirbydesign/core';\nimport { from } from 'rxjs';\nimport { PortalDirective } from '@kirbydesign/designsystem/shared/portal';\n\nexport type TriggerEvent = 'hover' | 'click' | 'focus';\n\nexport enum FloatingOffset {\n none = 0,\n small = 4,\n medium = 8,\n}\n\nexport enum OutletSelector {\n tag = 'tag',\n id = 'id',\n class = 'class',\n name = 'name',\n}\n\nexport interface PortalOutletConfig {\n selector: OutletSelector;\n value: string;\n}\n\ninterface EventMethods {\n event: string;\n method: () => void;\n}\n\ntype EventListenerDisposeFn = () => void;\n\n/**\n * @summary FloatingDirective is a utility that lets you declarative anchor \"popup\" containers to another element.\n *\n * Uses floating-ui, with this directive wraps the functionality: https://floating-ui.com/docs/getting-started\n *\n * Uses PortalDirective to enable functionality for portaling the floated content. This should be used when needed\n * and not as the default option.\n */\n@Directive({\n selector: '[kirbyFloating]',\n providers: [PortalDirective],\n hostDirectives: [PortalDirective],\n standalone: true,\n})\nexport class FloatingDirective implements OnInit, OnDestroy {\n /**\n * Reference to the element for which the host should anchor to\n * */\n @Input() public set reference(ref: ElementRef) {\n this.tearDownReferenceElementEventHandling();\n this._reference = ref;\n this.setupEventHandling();\n this.autoUpdatePosition();\n }\n\n public get reference(): ElementRef | undefined {\n return this._reference;\n }\n\n /**\n * How the host should be placed relative to the reference. Can be affected by middleware\n * */\n @Input() public set placement(placement: Placement) {\n this._placement = placement;\n this.updateHostElementPosition();\n }\n\n public get placement() {\n return this._placement;\n }\n\n /**\n * The strategy for how the host should be positioned.\n * */\n @Input() public set strategy(strategy: Strategy) {\n this._strategy = strategy;\n this.updateHostElementPosition();\n }\n\n public get strategy(): Strategy {\n return this._strategy;\n }\n\n /**\n * Defines when the host should be displayed/hidden, i.e. click will attach a click listener to the reference\n * that makes the host toggle display. Supports multiple triggers, to provide functionality for combinations\n * like click/focus.\n * */\n @Input() public set triggers(eventTriggers: Array<TriggerEvent>) {\n this._triggers = eventTriggers;\n this.tearDownReferenceElementEventHandling();\n this.setupEventHandling();\n }\n\n public get triggers(): Array<TriggerEvent> {\n return this._triggers;\n }\n\n /**\n * The HTMLElement for which the content should portal into.\n * Providing an outlet enables the portal, if nothing is provided, the provided strategy is used.\n * This should be used when there's issues with the stacking context, and not as a default option.\n * */\n @Input() public set DOMPortalOutlet(outlet: HTMLElement | undefined) {\n this._providedPortalOutlet = outlet;\n this.portalDirective.outlet =\n this.DOMPortalOutlet ?? this.getOutletElement(this.portalOutletConfig);\n }\n\n public get DOMPortalOutlet(): HTMLElement | undefined {\n return this._providedPortalOutlet;\n }\n\n /**\n * Defines how to automatically find and assign DOMPortalOutlet if none is provided in DOMPortalOutlet.\n * If nothing is provided here and in DOMPortalOutlet, the provided strategy is used\n * */\n @Input() public set portalOutletConfig(config: PortalOutletConfig | undefined) {\n this._portalOutletConfig = config;\n\n if (!this.DOMPortalOutlet) {\n this.portalDirective.outlet = this.getOutletElement(config);\n }\n }\n\n public get portalOutletConfig(): PortalOutletConfig | undefined {\n return this._portalOutletConfig;\n }\n\n /**\n * Prevent host from being toggled if set.\n * */\n @Input() public isDisabled: boolean = false;\n\n /**\n * Displaces the floating element from its core placement along the specified axes.\n * */\n @Input() public offset: FloatingOffset = FloatingOffset.none;\n\n /**\n * Moves the floating element along the specified axes in order to keep it in view.\n * This does not always work as expected, so don't \"just\" set it.\n * */\n @Input() public shift: boolean = false;\n\n /**\n * Chooses the placement that has the most space available automatically.\n * */\n @Input() public autoPlacement: boolean = false;\n\n /**\n * Enables hiding the host by events. See variable names.\n * */\n @Input() public closeOnSelect: boolean = true;\n @Input() public closeOnEscapeKey: boolean = true;\n @Input() public closeOnBackdrop: boolean = true;\n\n /**\n * Enables the option to be notified when the host changes display. The new display value is provided.\n * */\n @Output() public displayChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener('document:keydown.escape', ['$event'])\n public onEscapeKeyPressed(): void {\n if (this.closeOnEscapeKey) {\n this.hide();\n }\n }\n\n private _placement: Placement = 'bottom-start';\n\n private _strategy: Strategy = 'absolute';\n\n private _providedPortalOutlet: HTMLElement | undefined;\n\n private _portalOutletConfig: PortalOutletConfig | undefined;\n\n private _triggers: Array<TriggerEvent> = ['click'];\n\n private _reference: ElementRef | undefined;\n\n private autoUpdaterRef: () => void;\n private isShown: boolean = false;\n private referenceEventListenerDisposeFns: EventListenerDisposeFn[] = [];\n private documentClickEventListenerDisposeFn: EventListenerDisposeFn;\n private triggerEventMap: Map<TriggerEvent, EventMethods[]> = new Map([\n ['click', [{ event: 'click', method: this.toggleShow.bind(this) }]],\n [\n 'hover',\n [\n { event: 'mouseenter', method: this.show.bind(this) },\n { event: 'mouseleave', method: this.hide.bind(this) },\n ],\n ],\n [\n 'focus',\n [\n { event: 'focus', method: this.show.bind(this) },\n { event: 'blur', method: this.hide.bind(this) },\n ],\n ],\n ]);\n\n private HTMLElements: {\n [key in OutletSelector | 'default']: (value?: string) => Array<Element> | null;\n } = {\n id: (value) => Array.of(document.getElementById(value)),\n class: (value) => Array.from(document.getElementsByClassName(value)),\n name: (value) => Array.from(document.getElementsByName(value)),\n tag: (value) => Array.from(document.getElementsByTagName(value)),\n default: () => null,\n };\n\n public constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private portalDirective: PortalDirective\n ) {}\n\n public ngOnInit(): void {\n this.addFloatStylingToHostElement();\n this.updateHostElementPosition();\n }\n\n /* Should be accessible for programmatically setting display */\n public show(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.attachDocumentClickEvent();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n this.isShown = true;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public hide(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.tearDownDocumentClickEventHandling();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.isShown = false;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public toggleShow(): void {\n if (this.isShown) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private onDocumentClickWhileHostShown(event: Event): void {\n const clickedOnHost: boolean = this.elementRef.nativeElement.contains(event.target);\n if (clickedOnHost) {\n this.handleClickInsideHostElement();\n } else {\n this.handleClickOutsideHostElement(event);\n }\n }\n\n private addFloatStylingToHostElement(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', this.strategy);\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'z-index',\n DesignTokenHelper.zLayer('popover')\n );\n this.setDisplayStyling();\n }\n\n private setDisplayStyling(): void {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'display',\n this.isShown ? `block` : `none`\n );\n }\n\n private updateHostElementPosition(): void {\n if (!this.reference) {\n return;\n }\n\n const config: ComputePositionConfig = {\n placement: this.placement,\n middleware: this.getMiddlewareConfig(),\n strategy: this.strategy,\n } as ComputePositionConfig;\n\n from(\n computePosition(this.reference?.nativeElement, this.elementRef.nativeElement, config)\n ).subscribe(({ x, y }) => this.setPositionStylingOnHostElement(x, y));\n }\n\n private getMiddlewareConfig(): Array<Middleware | null | undefined | false> {\n const middleware: Array<Middleware | null | undefined | false> = [];\n middleware.push(offset(this.offset));\n\n if (this.shift) {\n middleware.push(shift());\n }\n\n if (this.autoPlacement) {\n middleware.push(autoPlacement());\n }\n\n return middleware;\n }\n\n private autoUpdatePosition(): void {\n this.removeAutoUpdaterRef();\n\n if (!this.reference) {\n return;\n }\n\n this.autoUpdaterRef = autoUpdate(\n this.reference?.nativeElement,\n this.elementRef.nativeElement,\n this.updateHostElementPosition.bind(this)\n );\n }\n\n private setPositionStylingOnHostElement(xPosition: number, yPosition: number): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${xPosition}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${yPosition}px`);\n this.setDisplayStyling();\n }\n\n private setupEventHandling(): void {\n if (!this.reference || !this.triggers) {\n return;\n }\n\n this.triggers.forEach((trigger: TriggerEvent) =>\n this.attachTriggerEventToReferenceElement(trigger)\n );\n }\n\n private attachDocumentClickEvent(): void {\n if (this.documentClickEventListenerDisposeFn) {\n return;\n }\n\n this.documentClickEventListenerDisposeFn = this.renderer.listen(\n 'document',\n 'mousedown',\n (event) => this.onDocumentClickWhileHostShown(event)\n );\n }\n\n private attachTriggerEventToReferenceElement(trigger: TriggerEvent): void {\n const events: EventMethods[] | undefined = this.triggerEventMap.get(trigger);\n\n if (!events) {\n throw new Error(`${trigger} is missing event definition(s)`);\n }\n\n events.forEach((event: EventMethods) => {\n const eventListenerDisposeFn: EventListenerDisposeFn = this.renderer.listen(\n this.reference?.nativeElement,\n event.event,\n event.method\n );\n this.referenceEventListenerDisposeFns.push(eventListenerDisposeFn);\n });\n }\n\n private handleClickInsideHostElement(): void {\n if (this.closeOnSelect) {\n this.hide();\n }\n }\n\n private handleClickOutsideHostElement(event: Event): void {\n const clickedOnReferenceWithClickTriggerEnabled: boolean =\n this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');\n\n if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {\n this.hide();\n }\n }\n\n private getOutletElement(config: PortalOutletConfig | undefined): HTMLElement | null {\n if (!config || !config.selector || !config.value) {\n return null;\n }\n\n const elements: Array<Element> | null = this.getHTMLElements(config);\n\n if (!elements || elements.length === 0) {\n throw Error(`Could not locate HTMLElement for ${config.selector}. Did you misspell it?`);\n }\n\n if (elements.length > 1) {\n throw Error(\n `Multiple HTMLElements found for ${config.selector}.\n This can lead to unintended behaviours. Provide an unique outlet`\n );\n }\n\n return elements[0] as HTMLElement;\n }\n\n private getHTMLElements(config: PortalOutletConfig | undefined): Array<Element> | null {\n return (\n this.HTMLElements[config.selector](config.value) || this.HTMLElements['default'](config.value)\n );\n }\n\n private tearDownReferenceElementEventHandling(): void {\n this.referenceEventListenerDisposeFns.forEach(\n (eventListenerDisposeFunction: EventListenerDisposeFn) => {\n if (eventListenerDisposeFunction != null) {\n eventListenerDisposeFunction();\n }\n }\n );\n this.referenceEventListenerDisposeFns = [];\n }\n\n private tearDownDocumentClickEventHandling(): void {\n if (this.documentClickEventListenerDisposeFn) {\n this.documentClickEventListenerDisposeFn();\n this.documentClickEventListenerDisposeFn = null;\n }\n }\n\n private removeAutoUpdaterRef(): void {\n if (this.autoUpdaterRef) {\n this.autoUpdaterRef();\n }\n }\n\n public ngOnDestroy() {\n this.tearDownDocumentClickEventHandling();\n this.tearDownReferenceElementEventHandling();\n this.removeAutoUpdaterRef();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-shared-floating.mjs","sources":["../../../../libs/designsystem/shared/floating/src/floating.directive.ts","../../../../libs/designsystem/shared/floating/src/kirbydesign-designsystem-shared-floating.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n autoPlacement,\n autoUpdate,\n computePosition,\n offset,\n shift,\n Strategy,\n} from '@floating-ui/dom';\nimport { ComputePositionConfig, Middleware, Placement } from '@floating-ui/core/src/types';\nimport { DesignTokenHelper } from '@kirbydesign/core';\nimport { from } from 'rxjs';\nimport { PortalDirective } from '@kirbydesign/designsystem/shared/portal';\n\nexport type TriggerEvent = 'hover' | 'click' | 'focus';\n\nexport enum FloatingOffset {\n none = 0,\n small = 4,\n medium = 8,\n}\n\nexport enum OutletSelector {\n tag = 'tag',\n id = 'id',\n class = 'class',\n name = 'name',\n}\n\nexport interface PortalOutletConfig {\n selector: OutletSelector;\n value: string;\n}\n\ninterface EventMethods {\n event: string;\n method: () => void;\n}\n\ntype EventListenerDisposeFn = () => void;\n\n/**\n * @summary FloatingDirective is a utility that lets you declarative anchor \"popup\" containers to another element.\n *\n * Uses floating-ui, with this directive wraps the functionality: https://floating-ui.com/docs/getting-started\n *\n * Uses PortalDirective to enable functionality for portaling the floated content. This should be used when needed\n * and not as the default option.\n */\n@Directive({\n selector: '[kirbyFloating]',\n providers: [PortalDirective],\n hostDirectives: [PortalDirective],\n standalone: true,\n})\nexport class FloatingDirective implements OnInit, OnDestroy {\n /**\n * Reference to the element for which the host should anchor to\n * */\n @Input() public set reference(ref: ElementRef<HTMLElement> | undefined) {\n this.tearDownReferenceElementEventHandling();\n this._reference = ref;\n this.setupEventHandling();\n this.autoUpdatePosition();\n }\n\n public get reference(): ElementRef<HTMLElement> | undefined {\n return this._reference;\n }\n\n /**\n * How the host should be placed relative to the reference. Can be affected by middleware\n * */\n @Input() public set placement(placement: Placement) {\n this._placement = placement;\n this.updateHostElementPosition();\n }\n\n public get placement() {\n return this._placement;\n }\n\n /**\n * The strategy for how the host should be positioned.\n * */\n @Input() public set strategy(strategy: Strategy) {\n this._strategy = strategy;\n this.updateHostElementPosition();\n }\n\n public get strategy(): Strategy {\n return this._strategy;\n }\n\n /**\n * Defines when the host should be displayed/hidden, i.e. click will attach a click listener to the reference\n * that makes the host toggle display. Supports multiple triggers, to provide functionality for combinations\n * like click/focus.\n * */\n @Input() public set triggers(eventTriggers: Array<TriggerEvent>) {\n this._triggers = eventTriggers;\n this.tearDownReferenceElementEventHandling();\n this.setupEventHandling();\n }\n\n public get triggers(): Array<TriggerEvent> {\n return this._triggers;\n }\n\n /**\n * The HTMLElement for which the content should portal into.\n * Providing an outlet enables the portal, if nothing is provided, the provided strategy is used.\n * This should be used when there's issues with the stacking context, and not as a default option.\n * */\n @Input() public set DOMPortalOutlet(outlet: HTMLElement | undefined) {\n this._providedPortalOutlet = outlet;\n this.portalDirective.outlet =\n this.DOMPortalOutlet ?? this.getOutletElement(this.portalOutletConfig);\n }\n\n public get DOMPortalOutlet(): HTMLElement | undefined {\n return this._providedPortalOutlet;\n }\n\n /**\n * Defines how to automatically find and assign DOMPortalOutlet if none is provided in DOMPortalOutlet.\n * If nothing is provided here and in DOMPortalOutlet, the provided strategy is used\n * */\n @Input() public set portalOutletConfig(config: PortalOutletConfig | undefined) {\n this._portalOutletConfig = config;\n\n if (!this.DOMPortalOutlet) {\n this.portalDirective.outlet = this.getOutletElement(config);\n }\n }\n\n public get portalOutletConfig(): PortalOutletConfig | undefined {\n return this._portalOutletConfig;\n }\n\n /**\n * Prevent host from being toggled if set.\n * */\n @Input() public isDisabled: boolean = false;\n\n /**\n * Displaces the floating element from its core placement along the specified axes.\n * */\n @Input() public offset: FloatingOffset = FloatingOffset.none;\n\n /**\n * Moves the floating element along the specified axes in order to keep it in view.\n * This does not always work as expected, so don't \"just\" set it.\n * */\n @Input() public shift: boolean = false;\n\n /**\n * Chooses the placement that has the most space available automatically.\n * */\n @Input() public autoPlacement: boolean = false;\n\n /**\n * Enables hiding the host by events. See variable names.\n * */\n @Input() public closeOnSelect: boolean = true;\n @Input() public closeOnEscapeKey: boolean = true;\n @Input() public closeOnBackdrop: boolean = true;\n\n /**\n * Enables the option to be notified when the host changes display. The new display value is provided.\n * */\n @Output() public displayChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener('document:keydown.escape', ['$event'])\n public onEscapeKeyPressed(): void {\n if (this.closeOnEscapeKey) {\n this.hide();\n }\n }\n\n private _placement: Placement = 'bottom-start';\n\n private _strategy: Strategy = 'absolute';\n\n private _providedPortalOutlet: HTMLElement | undefined;\n\n private _portalOutletConfig: PortalOutletConfig | undefined;\n\n private _triggers: Array<TriggerEvent> = ['click'];\n\n private _reference: ElementRef<HTMLElement> | undefined;\n\n private autoUpdaterRef: () => void;\n private isShown: boolean = false;\n private referenceEventListenerDisposeFns: EventListenerDisposeFn[] = [];\n private documentClickEventListenerDisposeFn: EventListenerDisposeFn;\n private triggerEventMap: Map<TriggerEvent, EventMethods[]> = new Map([\n ['click', [{ event: 'click', method: this.toggleShow.bind(this) }]],\n [\n 'hover',\n [\n { event: 'mouseenter', method: this.show.bind(this) },\n { event: 'mouseleave', method: this.hide.bind(this) },\n ],\n ],\n [\n 'focus',\n [\n { event: 'focus', method: this.show.bind(this) },\n { event: 'blur', method: this.hide.bind(this) },\n ],\n ],\n ]);\n\n private HTMLElements: {\n [key in OutletSelector | 'default']: (value?: string) => Array<Element> | null;\n } = {\n id: (value) => Array.of(document.getElementById(value)),\n class: (value) => Array.from(document.getElementsByClassName(value)),\n name: (value) => Array.from(document.getElementsByName(value)),\n tag: (value) => Array.from(document.getElementsByTagName(value)),\n default: () => null,\n };\n\n public constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private portalDirective: PortalDirective\n ) {}\n\n public ngOnInit(): void {\n this.addFloatStylingToHostElement();\n this.updateHostElementPosition();\n }\n\n /* Should be accessible for programmatically setting display */\n public show(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.attachDocumentClickEvent();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n this.isShown = true;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public hide(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.tearDownDocumentClickEventHandling();\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.isShown = false;\n this.displayChanged.emit(this.isShown);\n }\n\n /* Should be accessible for programmatically setting display */\n public toggleShow(): void {\n if (this.isShown) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private onDocumentClickWhileHostShown(event: Event): void {\n const clickedOnHost: boolean = this.elementRef.nativeElement.contains(event.target);\n if (clickedOnHost) {\n this.handleClickInsideHostElement();\n } else {\n this.handleClickOutsideHostElement(event);\n }\n }\n\n private addFloatStylingToHostElement(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `0px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', this.strategy);\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'z-index',\n DesignTokenHelper.zLayer('popover')\n );\n this.setDisplayStyling();\n }\n\n private setDisplayStyling(): void {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'display',\n this.isShown ? `block` : `none`\n );\n }\n\n private updateHostElementPosition(): void {\n if (!this.reference) {\n return;\n }\n\n const config: ComputePositionConfig = {\n placement: this.placement,\n middleware: this.getMiddlewareConfig(),\n strategy: this.strategy,\n } as ComputePositionConfig;\n\n from(\n computePosition(this.reference?.nativeElement, this.elementRef.nativeElement, config)\n ).subscribe(({ x, y }) => this.setPositionStylingOnHostElement(x, y));\n }\n\n private getMiddlewareConfig(): Array<Middleware | null | undefined | false> {\n const middleware: Array<Middleware | null | undefined | false> = [];\n middleware.push(offset(this.offset));\n\n if (this.shift) {\n middleware.push(shift());\n }\n\n if (this.autoPlacement) {\n middleware.push(autoPlacement());\n }\n\n return middleware;\n }\n\n private autoUpdatePosition(): void {\n this.removeAutoUpdaterRef();\n\n if (!this.reference) {\n return;\n }\n\n this.autoUpdaterRef = autoUpdate(\n this.reference?.nativeElement,\n this.elementRef.nativeElement,\n this.updateHostElementPosition.bind(this)\n );\n }\n\n private setPositionStylingOnHostElement(xPosition: number, yPosition: number): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${xPosition}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${yPosition}px`);\n this.setDisplayStyling();\n }\n\n private setupEventHandling(): void {\n if (!this.reference || !this.triggers) {\n return;\n }\n\n this.triggers.forEach((trigger: TriggerEvent) =>\n this.attachTriggerEventToReferenceElement(trigger)\n );\n }\n\n private attachDocumentClickEvent(): void {\n if (this.documentClickEventListenerDisposeFn) {\n return;\n }\n\n this.documentClickEventListenerDisposeFn = this.renderer.listen(\n 'document',\n 'mousedown',\n (event) => this.onDocumentClickWhileHostShown(event)\n );\n }\n\n private attachTriggerEventToReferenceElement(trigger: TriggerEvent): void {\n const events: EventMethods[] | undefined = this.triggerEventMap.get(trigger);\n\n if (!events) {\n throw new Error(`${trigger} is missing event definition(s)`);\n }\n\n events.forEach((event: EventMethods) => {\n const eventListenerDisposeFn: EventListenerDisposeFn = this.renderer.listen(\n this.reference?.nativeElement,\n event.event,\n event.method\n );\n this.referenceEventListenerDisposeFns.push(eventListenerDisposeFn);\n });\n }\n\n private handleClickInsideHostElement(): void {\n if (this.closeOnSelect) {\n this.hide();\n }\n }\n\n private handleClickOutsideHostElement(event: Event): void {\n if (event.target instanceof Node) {\n const clickedOnReferenceWithClickTriggerEnabled: boolean =\n this.reference?.nativeElement.contains(event.target) && this.triggers.includes('click');\n\n if (this.closeOnBackdrop && !clickedOnReferenceWithClickTriggerEnabled) {\n this.hide();\n }\n }\n }\n\n private getOutletElement(config: PortalOutletConfig | undefined): HTMLElement | null {\n if (!config || !config.selector || !config.value) {\n return null;\n }\n\n const elements: Array<Element> | null = this.getHTMLElements(config);\n\n if (!elements || elements.length === 0) {\n throw Error(`Could not locate HTMLElement for ${config.selector}. Did you misspell it?`);\n }\n\n if (elements.length > 1) {\n throw Error(\n `Multiple HTMLElements found for ${config.selector}.\n This can lead to unintended behaviours. Provide an unique outlet`\n );\n }\n\n return elements[0] as HTMLElement;\n }\n\n private getHTMLElements(config: PortalOutletConfig | undefined): Array<Element> | null {\n return (\n this.HTMLElements[config.selector](config.value) || this.HTMLElements['default'](config.value)\n );\n }\n\n private tearDownReferenceElementEventHandling(): void {\n this.referenceEventListenerDisposeFns.forEach(\n (eventListenerDisposeFunction: EventListenerDisposeFn) => {\n if (eventListenerDisposeFunction != null) {\n eventListenerDisposeFunction();\n }\n }\n );\n this.referenceEventListenerDisposeFns = [];\n }\n\n private tearDownDocumentClickEventHandling(): void {\n if (this.documentClickEventListenerDisposeFn) {\n this.documentClickEventListenerDisposeFn();\n this.documentClickEventListenerDisposeFn = null;\n }\n }\n\n private removeAutoUpdaterRef(): void {\n if (this.autoUpdaterRef) {\n this.autoUpdaterRef();\n }\n }\n\n public ngOnDestroy() {\n this.tearDownDocumentClickEventHandling();\n this.tearDownReferenceElementEventHandling();\n this.removeAutoUpdaterRef();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@kirbydesign/designsystem",
3
- "version": "8.3.0",
3
+ "version": "8.3.1",
4
4
  "dependencies": {
5
5
  "@floating-ui/dom": "^1.1.0",
6
+ "@angular/cdk": "^15.0.3",
6
7
  "@fontsource/roboto": "4.2.1",
7
8
  "@ionic/angular": "6.2.1",
8
9
  "@kirbydesign/core": "0.0.46",
@@ -35,8 +35,8 @@ export declare class FloatingDirective implements OnInit, OnDestroy {
35
35
  /**
36
36
  * Reference to the element for which the host should anchor to
37
37
  * */
38
- set reference(ref: ElementRef);
39
- get reference(): ElementRef | undefined;
38
+ set reference(ref: ElementRef<HTMLElement> | undefined);
39
+ get reference(): ElementRef<HTMLElement> | undefined;
40
40
  /**
41
41
  * How the host should be placed relative to the reference. Can be affected by middleware
42
42
  * */