@kirbydesign/designsystem 8.7.0 → 8.8.0

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.
Files changed (74) hide show
  1. package/action-group/action-group.component.d.ts +3 -4
  2. package/data-table/table-row/table-row.component.d.ts +2 -0
  3. package/dropdown/dropdown.component.d.ts +1 -2
  4. package/esm2020/action-group/action-group.component.mjs +14 -17
  5. package/esm2020/button/button.component.mjs +3 -3
  6. package/esm2020/calendar/calendar.component.mjs +2 -2
  7. package/esm2020/data-table/table-row/table-row.component.mjs +9 -1
  8. package/esm2020/dropdown/dropdown.component.mjs +4 -15
  9. package/esm2020/header/header.component.mjs +5 -3
  10. package/esm2020/menu/menu.component.mjs +23 -12
  11. package/esm2020/page/page.component.mjs +18 -7
  12. package/esm2020/router-outlet/router-outlet.component.mjs +7 -3
  13. package/esm2020/shared/floating/floating.directive.mjs +2 -2
  14. package/esm2020/slide/slides.component.mjs +14 -7
  15. package/esm2020/testing-base/lib/components/mock.dropdown.component.mjs +2 -4
  16. package/esm2020/types/event-listener-dispose-fn.mjs +2 -0
  17. package/esm2020/types/public_api.mjs +2 -1
  18. package/fesm2015/kirbydesign-designsystem-action-group.mjs +13 -16
  19. package/fesm2015/kirbydesign-designsystem-action-group.mjs.map +1 -1
  20. package/fesm2015/kirbydesign-designsystem-button.mjs +2 -2
  21. package/fesm2015/kirbydesign-designsystem-button.mjs.map +1 -1
  22. package/fesm2015/kirbydesign-designsystem-calendar.mjs +1 -1
  23. package/fesm2015/kirbydesign-designsystem-calendar.mjs.map +1 -1
  24. package/fesm2015/kirbydesign-designsystem-data-table.mjs +8 -0
  25. package/fesm2015/kirbydesign-designsystem-data-table.mjs.map +1 -1
  26. package/fesm2015/kirbydesign-designsystem-dropdown.mjs +3 -14
  27. package/fesm2015/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  28. package/fesm2015/kirbydesign-designsystem-header.mjs +4 -2
  29. package/fesm2015/kirbydesign-designsystem-header.mjs.map +1 -1
  30. package/fesm2015/kirbydesign-designsystem-menu.mjs +23 -11
  31. package/fesm2015/kirbydesign-designsystem-menu.mjs.map +1 -1
  32. package/fesm2015/kirbydesign-designsystem-page.mjs +17 -6
  33. package/fesm2015/kirbydesign-designsystem-page.mjs.map +1 -1
  34. package/fesm2015/kirbydesign-designsystem-router-outlet.mjs +8 -5
  35. package/fesm2015/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  36. package/fesm2015/kirbydesign-designsystem-shared-floating.mjs +1 -1
  37. package/fesm2015/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  38. package/fesm2015/kirbydesign-designsystem-slide.mjs +13 -5
  39. package/fesm2015/kirbydesign-designsystem-slide.mjs.map +1 -1
  40. package/fesm2015/kirbydesign-designsystem-testing-base.mjs +1 -3
  41. package/fesm2015/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  42. package/fesm2020/kirbydesign-designsystem-action-group.mjs +13 -16
  43. package/fesm2020/kirbydesign-designsystem-action-group.mjs.map +1 -1
  44. package/fesm2020/kirbydesign-designsystem-button.mjs +2 -2
  45. package/fesm2020/kirbydesign-designsystem-button.mjs.map +1 -1
  46. package/fesm2020/kirbydesign-designsystem-calendar.mjs +1 -1
  47. package/fesm2020/kirbydesign-designsystem-calendar.mjs.map +1 -1
  48. package/fesm2020/kirbydesign-designsystem-data-table.mjs +8 -0
  49. package/fesm2020/kirbydesign-designsystem-data-table.mjs.map +1 -1
  50. package/fesm2020/kirbydesign-designsystem-dropdown.mjs +3 -14
  51. package/fesm2020/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  52. package/fesm2020/kirbydesign-designsystem-header.mjs +4 -2
  53. package/fesm2020/kirbydesign-designsystem-header.mjs.map +1 -1
  54. package/fesm2020/kirbydesign-designsystem-menu.mjs +22 -11
  55. package/fesm2020/kirbydesign-designsystem-menu.mjs.map +1 -1
  56. package/fesm2020/kirbydesign-designsystem-page.mjs +17 -6
  57. package/fesm2020/kirbydesign-designsystem-page.mjs.map +1 -1
  58. package/fesm2020/kirbydesign-designsystem-router-outlet.mjs +8 -5
  59. package/fesm2020/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  60. package/fesm2020/kirbydesign-designsystem-shared-floating.mjs +1 -1
  61. package/fesm2020/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  62. package/fesm2020/kirbydesign-designsystem-slide.mjs +12 -5
  63. package/fesm2020/kirbydesign-designsystem-slide.mjs.map +1 -1
  64. package/fesm2020/kirbydesign-designsystem-testing-base.mjs +1 -3
  65. package/fesm2020/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  66. package/header/header.component.d.ts +2 -1
  67. package/menu/menu.component.d.ts +9 -5
  68. package/package.json +2 -2
  69. package/page/page.component.d.ts +3 -3
  70. package/router-outlet/router-outlet.component.d.ts +1 -0
  71. package/slide/slides.component.d.ts +5 -3
  72. package/testing-base/lib/components/mock.dropdown.component.d.ts +1 -2
  73. package/types/event-listener-dispose-fn.d.ts +1 -0
  74. package/types/public_api.d.ts +1 -0
@@ -224,7 +224,7 @@ export class FloatingDirective {
224
224
  middleware.push(offset(this.offset));
225
225
  middleware.push(flip());
226
226
  if (this.shift) {
227
- middleware.push(shift());
227
+ middleware.push(shift({ padding: parseInt(DesignTokenHelper.size('s')) }));
228
228
  }
229
229
  if (this.autoPlacement) {
230
230
  middleware.push(autoPlacement());
@@ -375,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
375
375
  type: HostListener,
376
376
  args: ['document:keydown.escape', ['$event']]
377
377
  }] } });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2hhcmVkL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixlQUFlLEVBQ2YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBSTFFLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsbURBQVEsQ0FBQTtJQUNSLHFEQUFTLENBQUE7SUFDVCx1REFBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gsMkJBQVMsQ0FBQTtJQUNULGlDQUFlLENBQUE7SUFDZiwrQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBY0Q7Ozs7Ozs7R0FPRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUEwSzVCLFlBQ1UsVUFBbUMsRUFDbkMsUUFBbUIsRUFDbkIsZUFBZ0M7UUFGaEMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztR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S0FBSztnQkFLVSxNQUFNO3NCQUFyQixLQUFLO2dCQU1VLEtBQUs7c0JBQXBCLEtBQUs7Z0JBS1UsYUFBYTtzQkFBNUIsS0FBSztnQkFLVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtXLGNBQWM7c0JBQTlCLE1BQU07Z0JBR0Esa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhdXRvUGxhY2VtZW50LFxuICBhdXRvVXBkYXRlLFxuICBjb21wdXRlUG9zaXRpb24sXG4gIGZsaXAsXG4gIG9mZnNldCxcbiAgc2hpZnQsXG4gIFN0cmF0ZWd5LFxufSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IENvbXB1dGVQb3NpdGlvbkNvbmZpZywgTWlkZGxld2FyZSwgUGxhY2VtZW50IH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUvc3JjL3R5cGVzJztcbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2NvcmUnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9ydGFsRGlyZWN0aXZlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zaGFyZWQvcG9ydGFsJztcblxuZXhwb3J0IHR5cGUgVHJpZ2dlckV2ZW50ID0gJ2hvdmVyJyB8ICdjbGljaycgfCAnZm9jdXMnO1xuXG5leHBvcnQgZW51bSBGbG9hdGluZ09mZnNldCB7XG4gIG5vbmUgPSAwLFxuICBzbWFsbCA9IDQsXG4gIG1lZGl1bSA9IDgsXG59XG5cbmV4cG9ydCBlbnVtIE91dGxldFNlbGVjdG9yIHtcbiAgdGFnID0gJ3RhZycsXG4gIGlkID0gJ2lkJyxcbiAgY2xhc3MgPSAnY2xhc3MnLFxuICBuYW1lID0gJ25hbWUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRhbE91dGxldENvbmZpZyB7XG4gIHNlbGVjdG9yOiBPdXRsZXRTZWxlY3RvcjtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEV2ZW50TWV0aG9kcyB7XG4gIGV2ZW50OiBzdHJpbmc7XG4gIG1ldGhvZDogKCkgPT4gdm9pZDtcbn1cblxudHlwZSBFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gKCkgPT4gdm9pZDtcblxuLyoqXG4gKiBAc3VtbWFyeSBGbG9hdGluZ0RpcmVjdGl2ZSBpcyBhIHV0aWxpdHkgdGhhdCBsZXRzIHlvdSBkZWNsYXJhdGl2ZSBhbmNob3IgXCJwb3B1cFwiIGNvbnRhaW5lcnMgdG8gYW5vdGhlciBlbGVtZW50LlxuICpcbiAqIFVzZXMgZmxvYXRpbmctdWksIHdpdGggdGhpcyBkaXJlY3RpdmUgd3JhcHMgdGhlIGZ1bmN0aW9uYWxpdHk6IGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZ2V0dGluZy1zdGFydGVkXG4gKlxuICogVXNlcyBQb3J0YWxEaXJlY3RpdmUgdG8gZW5hYmxlIGZ1bmN0aW9uYWxpdHkgZm9yIHBvcnRhbGluZyB0aGUgZmxvYXRlZCBjb250ZW50LiBUaGlzIHNob3VsZCBiZSB1c2VkIHdoZW4gbmVlZGVkXG4gKiBhbmQgbm90IGFzIHRoZSBkZWZhdWx0IG9wdGlvbi5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5RmxvYXRpbmddJyxcbiAgcHJvdmlkZXJzOiBbUG9ydGFsRGlyZWN0aXZlXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtQb3J0YWxEaXJlY3RpdmVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGbG9hdGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBmb3Igd2hpY2ggdGhlIGhvc3Qgc2hvdWxkIGFuY2hvciB0b1xuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHJlZmVyZW5jZShyZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy50ZWFyRG93blJlZmVyZW5jZUVsZW1lbnRFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gcmVmO1xuICAgIHRoaXMuc2V0dXBFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5hdXRvVXBkYXRlUG9zaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmZXJlbmNlKCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmZXJlbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvdyB0aGUgaG9zdCBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSByZWZlcmVuY2UuIENhbiBiZSBhZmZlY3RlZCBieSBtaWRkbGV3YXJlXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcGxhY2VtZW50KHBsYWNlbWVudDogUGxhY2VtZW50KSB7XG4gICAgdGhpcy5fcGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBwbGFjZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RyYXRlZ3kgZm9yIGhvdyB0aGUgaG9zdCBzaG91bGQgYmUgcG9zaXRpb25lZC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBzdHJhdGVneShzdHJhdGVneTogU3RyYXRlZ3kpIHtcbiAgICB0aGlzLl9zdHJhdGVneSA9IHN0cmF0ZWd5O1xuICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJhdGVneSgpOiBTdHJhdGVneSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hlbiB0aGUgaG9zdCBzaG91bGQgYmUgZGlzcGxheWVkL2hpZGRlbiwgaS5lLiBjbGljayB3aWxsIGF0dGFjaCBhIGNsaWNrIGxpc3RlbmVyIHRvIHRoZSByZWZlcmVuY2VcbiAgICogdGhhdCBtYWtlcyB0aGUgaG9zdCB0b2dnbGUgZGlzcGxheS4gU3VwcG9ydHMgbXVsdGlwbGUgdHJpZ2dlcnMsIHRvIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBmb3IgY29tYmluYXRpb25zXG4gICAqIGxpa2UgY2xpY2svZm9jdXMuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdHJpZ2dlcnMoZXZlbnRUcmlnZ2VyczogQXJyYXk8VHJpZ2dlckV2ZW50Pikge1xuICAgIHRoaXMuX3RyaWdnZXJzID0gZXZlbnRUcmlnZ2VycztcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnNldHVwRXZlbnRIYW5kbGluZygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VycygpOiBBcnJheTxUcmlnZ2VyRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlcnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IGZvciB3aGljaCB0aGUgY29udGVudCBzaG91bGQgcG9ydGFsIGludG8uXG4gICAqIFByb3ZpZGluZyBhbiBvdXRsZXQgZW5hYmxlcyB0aGUgcG9ydGFsLCBpZiBub3RoaW5nIGlzIHByb3ZpZGVkLCB0aGUgcHJvdmlkZWQgc3RyYXRlZ3kgaXMgdXNlZC5cbiAgICogVGhpcyBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZXJlJ3MgaXNzdWVzIHdpdGggdGhlIHN0YWNraW5nIGNvbnRleHQsIGFuZCBub3QgYXMgYSBkZWZhdWx0IG9wdGlvbi5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBET01Qb3J0YWxPdXRsZXQob3V0bGV0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3Byb3ZpZGVkUG9ydGFsT3V0bGV0ID0gb3V0bGV0O1xuICAgIHRoaXMucG9ydGFsRGlyZWN0aXZlLm91dGxldCA9XG4gICAgICB0aGlzLkRPTVBvcnRhbE91dGxldCA/PyB0aGlzLmdldE91dGxldEVsZW1lbnQodGhpcy5wb3J0YWxPdXRsZXRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIGdldCBET01Qb3J0YWxPdXRsZXQoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wcm92aWRlZFBvcnRhbE91dGxldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGhvdyB0byBhdXRvbWF0aWNhbGx5IGZpbmQgYW5kIGFzc2lnbiBET01Qb3J0YWxPdXRsZXQgaWYgbm9uZSBpcyBwcm92aWRlZCBpbiBET01Qb3J0YWxPdXRsZXQuXG4gICAqIElmIG5vdGhpbmcgaXMgcHJvdmlkZWQgaGVyZSBhbmQgaW4gRE9NUG9ydGFsT3V0bGV0LCB0aGUgcHJvdmlkZWQgc3RyYXRlZ3kgaXMgdXNlZFxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHBvcnRhbE91dGxldENvbmZpZyhjb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BvcnRhbE91dGxldENvbmZpZyA9IGNvbmZpZztcblxuICAgIGlmICghdGhpcy5ET01Qb3J0YWxPdXRsZXQpIHtcbiAgICAgIHRoaXMucG9ydGFsRGlyZWN0aXZlLm91dGxldCA9IHRoaXMuZ2V0T3V0bGV0RWxlbWVudChjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9ydGFsT3V0bGV0Q29uZmlnKCk6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2ZW50IGhvc3QgZnJvbSBiZWluZyB0b2dnbGVkIGlmIHNldC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGlzcGxhY2VzIHRoZSBmbG9hdGluZyBlbGVtZW50IGZyb20gaXRzIGNvcmUgcGxhY2VtZW50IGFsb25nIHRoZSBzcGVjaWZpZWQgYXhlcy5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIG9mZnNldDogRmxvYXRpbmdPZmZzZXQgPSBGbG9hdGluZ09mZnNldC5ub25lO1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGUgc3BlY2lmaWVkIGF4ZXMgaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3LlxuICAgKiBUaGlzIGRvZXMgbm90IGFsd2F5cyB3b3JrIGFzIGV4cGVjdGVkLCBzbyBkb24ndCBcImp1c3RcIiBzZXQgaXQuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzaGlmdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDaG9vc2VzIHRoZSBwbGFjZW1lbnQgdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHkuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvUGxhY2VtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgaGlkaW5nIHRoZSBob3N0IGJ5IGV2ZW50cy4gU2VlIHZhcmlhYmxlIG5hbWVzLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uRXNjYXBlS2V5OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGNsb3NlT25CYWNrZHJvcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIG9wdGlvbiB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBob3N0IGNoYW5nZXMgZGlzcGxheS4gVGhlIG5ldyBkaXNwbGF5IHZhbHVlIGlzIHByb3ZpZGVkLlxuICAgKiAqL1xuICBAT3V0cHV0KCkgcHVibGljIGRpc3BsYXlDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Fc2NhcGVLZXlQcmVzc2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT25Fc2NhcGVLZXkpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgcHJpdmF0ZSBfc3RyYXRlZ3k6IFN0cmF0ZWd5ID0gJ2Fic29sdXRlJztcblxuICBwcml2YXRlIF9wcm92aWRlZFBvcnRhbE91dGxldDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfcG9ydGFsT3V0bGV0Q29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcnM6IEFycmF5PFRyaWdnZXJFdmVudD4gPSBbJ2NsaWNrJ107XG5cbiAgcHJpdmF0ZSBfcmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGF1dG9VcGRhdGVyUmVmOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGlzU2hvd246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZuczogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbltdID0gW107XG4gIHByaXZhdGUgZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm47XG4gIHByaXZhdGUgaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjtcbiAgcHJpdmF0ZSB0cmlnZ2VyRXZlbnRNYXA6IE1hcDxUcmlnZ2VyRXZlbnQsIEV2ZW50TWV0aG9kc1tdPiA9IG5ldyBNYXAoW1xuICAgIFsnY2xpY2snLCBbeyBldmVudDogJ2NsaWNrJywgbWV0aG9kOiB0aGlzLnRvZ2dsZVNob3cuYmluZCh0aGlzKSB9XV0sXG4gICAgW1xuICAgICAgJ2hvdmVyJyxcbiAgICAgIFtcbiAgICAgICAgeyBldmVudDogJ21vdXNlZW50ZXInLCBtZXRob2Q6IHRoaXMuc2hvdy5iaW5kKHRoaXMpIH0sXG4gICAgICAgIHsgZXZlbnQ6ICdtb3VzZWxlYXZlJywgbWV0aG9kOiB0aGlzLmhpZGUuYmluZCh0aGlzKSB9LFxuICAgICAgXSxcbiAgICBdLFxuICAgIFtcbiAgICAgICdmb2N1cycsXG4gICAgICBbXG4gICAgICAgIHsgZXZlbnQ6ICdmb2N1cycsIG1ldGhvZDogdGhpcy5zaG93LmJpbmQodGhpcykgfSxcbiAgICAgICAgeyBldmVudDogJ2JsdXInLCBtZXRob2Q6IHRoaXMuaGlkZS5iaW5kKHRoaXMpIH0sXG4gICAgICBdLFxuICAgIF0sXG4gIF0pO1xuXG4gIHByaXZhdGUgSFRNTEVsZW1lbnRzOiB7XG4gICAgW2tleSBpbiBPdXRsZXRTZWxlY3RvciB8ICdkZWZhdWx0J106ICh2YWx1ZT86IHN0cmluZykgPT4gQXJyYXk8RWxlbWVudD4gfCBudWxsO1xuICB9ID0ge1xuICAgIGlkOiAodmFsdWUpID0+IEFycmF5Lm9mKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHZhbHVlKSksXG4gICAgY2xhc3M6ICh2YWx1ZSkgPT4gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHZhbHVlKSksXG4gICAgbmFtZTogKHZhbHVlKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHZhbHVlKSksXG4gICAgdGFnOiAodmFsdWUpID0+IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodmFsdWUpKSxcbiAgICBkZWZhdWx0OiAoKSA9PiBudWxsLFxuICB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHBvcnRhbERpcmVjdGl2ZTogUG9ydGFsRGlyZWN0aXZlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRGbG9hdFN0eWxpbmdUb0hvc3RFbGVtZW50KCk7XG4gICAgdGhpcy51cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cblxuICAvKiBTaG91bGQgYmUgYWNjZXNzaWJsZSBmb3IgcHJvZ3JhbW1hdGljYWxseSBzZXR0aW5nIGRpc3BsYXkgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXR0YWNoRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxlcigpO1xuICAgIHRoaXMuYXR0YWNoSG9zdENsaWNrRXZlbnRIYW5kbGVyKCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICB0aGlzLmlzU2hvd24gPSB0cnVlO1xuICAgIHRoaXMuZGlzcGxheUNoYW5nZWQuZW1pdCh0aGlzLmlzU2hvd24pO1xuICB9XG5cbiAgLyogU2hvdWxkIGJlIGFjY2Vzc2libGUgZm9yIHByb2dyYW1tYXRpY2FsbHkgc2V0dGluZyBkaXNwbGF5ICovXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQgfHwgIXRoaXMuaXNTaG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGVhckRvd25Eb2N1bWVudENsaWNrRXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB0aGlzLmlzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLmRpc3BsYXlDaGFuZ2VkLmVtaXQodGhpcy5pc1Nob3duKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgdG9nZ2xlU2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1Nob3duKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRGbG9hdFN0eWxpbmdUb0hvc3RFbGVtZW50KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYDBweGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgMHB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3Bvc2l0aW9uJywgdGhpcy5zdHJhdGVneSk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ3otaW5kZXgnLFxuICAgICAgRGVzaWduVG9rZW5IZWxwZXIuekxheWVyKCdwb3BvdmVyJylcbiAgICApO1xuICAgIHRoaXMuc2V0RGlzcGxheVN0eWxpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzcGxheVN0eWxpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2Rpc3BsYXknLFxuICAgICAgdGhpcy5pc1Nob3duID8gYGJsb2NrYCA6IGBub25lYFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZzogQ29tcHV0ZVBvc2l0aW9uQ29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCxcbiAgICAgIG1pZGRsZXdhcmU6IHRoaXMuZ2V0TWlkZGxld2FyZUNvbmZpZygpLFxuICAgICAgc3RyYXRlZ3k6IHRoaXMuc3RyYXRlZ3ksXG4gICAgfSBhcyBDb21wdXRlUG9zaXRpb25Db25maWc7XG5cbiAgICBmcm9tKFxuICAgICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY29uZmlnKVxuICAgICkuc3Vic2NyaWJlKCh7IHgsIHkgfSkgPT4gdGhpcy5zZXRQb3NpdGlvblN0eWxpbmdPbkhvc3RFbGVtZW50KHgsIHkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWlkZGxld2FyZUNvbmZpZygpOiBBcnJheTxNaWRkbGV3YXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IGZhbHNlPiB7XG4gICAgY29uc3QgbWlkZGxld2FyZTogQXJyYXk8TWlkZGxld2FyZSB8IG51bGwgfCB1bmRlZmluZWQgfCBmYWxzZT4gPSBbXTtcbiAgICBtaWRkbGV3YXJlLnB1c2gob2Zmc2V0KHRoaXMub2Zmc2V0KSk7XG4gICAgbWlkZGxld2FyZS5wdXNoKGZsaXAoKSk7XG5cbiAgICBpZiAodGhpcy5zaGlmdCkge1xuICAgICAgbWlkZGxld2FyZS5wdXNoKHNoaWZ0KCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF1dG9QbGFjZW1lbnQpIHtcbiAgICAgIG1pZGRsZXdhcmUucHVzaChhdXRvUGxhY2VtZW50KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBtaWRkbGV3YXJlO1xuICB9XG5cbiAgcHJpdmF0ZSBhdXRvVXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVBdXRvVXBkYXRlclJlZigpO1xuXG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b1VwZGF0ZXJSZWYgPSBhdXRvVXBkYXRlKFxuICAgICAgdGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbi5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UG9zaXRpb25TdHlsaW5nT25Ib3N0RWxlbWVudCh4UG9zaXRpb246IG51bWJlciwgeVBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGVmdCcsIGAke3hQb3NpdGlvbn1weGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHt5UG9zaXRpb259cHhgKTtcbiAgICB0aGlzLnNldERpc3BsYXlTdHlsaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRIYW5kbGluZygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVmZXJlbmNlIHx8ICF0aGlzLnRyaWdnZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2Vycy5mb3JFYWNoKCh0cmlnZ2VyOiBUcmlnZ2VyRXZlbnQpID0+XG4gICAgICB0aGlzLmF0dGFjaFRyaWdnZXJFdmVudFRvUmVmZXJlbmNlRWxlbWVudCh0cmlnZ2VyKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaERvY3VtZW50Q2xpY2tFdmVudEhhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICAnZG9jdW1lbnQnLFxuICAgICAgJ21vdXNlZG93bicsXG4gICAgICAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlSG9zdEVsZW1lbnQoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoSG9zdENsaWNrRXZlbnRIYW5kbGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4gfHwgIXRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnY2xpY2snLFxuICAgICAgKCkgPT4gdGhpcy5oYW5kbGVDbGlja0luc2lkZUhvc3RFbGVtZW50KClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hUcmlnZ2VyRXZlbnRUb1JlZmVyZW5jZUVsZW1lbnQodHJpZ2dlcjogVHJpZ2dlckV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRzOiBFdmVudE1ldGhvZHNbXSB8IHVuZGVmaW5lZCA9IHRoaXMudHJpZ2dlckV2ZW50TWFwLmdldCh0cmlnZ2VyKTtcblxuICAgIGlmICghZXZlbnRzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dHJpZ2dlcn0gaXMgbWlzc2luZyBldmVudCBkZWZpbml0aW9uKHMpYCk7XG4gICAgfVxuXG4gICAgZXZlbnRzLmZvckVhY2goKGV2ZW50OiBFdmVudE1ldGhvZHMpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50TGlzdGVuZXJEaXNwb3NlRm46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgdGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIGV2ZW50LmV2ZW50LFxuICAgICAgICBldmVudC5tZXRob2RcbiAgICAgICk7XG4gICAgICB0aGlzLnJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zLnB1c2goZXZlbnRMaXN0ZW5lckRpc3Bvc2VGbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsaWNrSW5zaWRlSG9zdEVsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGlja091dHNpZGVIb3N0RWxlbWVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgY29uc3QgY2xpY2tlZE9uSG9zdDogYm9vbGVhbiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICBpZiAoY2xpY2tlZE9uSG9zdCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBjbGlja2VkT25SZWZlcmVuY2VXaXRoQ2xpY2tUcmlnZ2VyRW5hYmxlZDogYm9vbGVhbiA9XG4gICAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgdGhpcy50cmlnZ2Vycy5pbmNsdWRlcygnY2xpY2snKTtcblxuICAgICAgaWYgKHRoaXMuY2xvc2VPbkJhY2tkcm9wICYmICFjbGlja2VkT25SZWZlcmVuY2VXaXRoQ2xpY2tUcmlnZ2VyRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE91dGxldEVsZW1lbnQoY29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuc2VsZWN0b3IgfHwgIWNvbmZpZy52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHM6IEFycmF5PEVsZW1lbnQ+IHwgbnVsbCA9IHRoaXMuZ2V0SFRNTEVsZW1lbnRzKGNvbmZpZyk7XG5cbiAgICBpZiAoIWVsZW1lbnRzIHx8IGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgRXJyb3IoYENvdWxkIG5vdCBsb2NhdGUgSFRNTEVsZW1lbnQgZm9yICR7Y29uZmlnLnNlbGVjdG9yfS4gRGlkIHlvdSBtaXNzcGVsbCBpdD9gKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBNdWx0aXBsZSBIVE1MRWxlbWVudHMgZm91bmQgZm9yICR7Y29uZmlnLnNlbGVjdG9yfS5cbiAgICAgICAgIFRoaXMgY2FuIGxlYWQgdG8gdW5pbnRlbmRlZCBiZWhhdmlvdXJzLiBQcm92aWRlIGFuIHVuaXF1ZSBvdXRsZXRgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50c1swXSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SFRNTEVsZW1lbnRzKGNvbmZpZzogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkKTogQXJyYXk8RWxlbWVudD4gfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5IVE1MRWxlbWVudHNbY29uZmlnLnNlbGVjdG9yXShjb25maWcudmFsdWUpIHx8IHRoaXMuSFRNTEVsZW1lbnRzWydkZWZhdWx0J10oY29uZmlnLnZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZucy5mb3JFYWNoKFxuICAgICAgKGV2ZW50TGlzdGVuZXJEaXNwb3NlRnVuY3Rpb246IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4pID0+IHtcbiAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJEaXNwb3NlRnVuY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgIGV2ZW50TGlzdGVuZXJEaXNwb3NlRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5yZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZucyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZWFyRG93bkRvY3VtZW50Q2xpY2tFdmVudEhhbmRsaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKSB7XG4gICAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKCk7XG4gICAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKSB7XG4gICAgICB0aGlzLmhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4oKTtcbiAgICAgIHRoaXMuaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBdXRvVXBkYXRlclJlZigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvVXBkYXRlclJlZikge1xuICAgICAgdGhpcy5hdXRvVXBkYXRlclJlZigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRlYXJEb3duRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnJlbW92ZUF1dG9VcGRhdGVyUmVmKCk7XG4gIH1cbn1cbiJdfQ==
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2hhcmVkL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixlQUFlLEVBQ2YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBSTFFLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsbURBQVEsQ0FBQTtJQUNSLHFEQUFTLENBQUE7SUFDVCx1REFBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gsMkJBQVMsQ0FBQTtJQUNULGlDQUFlLENBQUE7SUFDZiwrQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBY0Q7Ozs7Ozs7R0FPRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUEwSzVCLFlBQ1UsVUFBbUMsRUFDbkMsUUFBbUIsRUFDbkIsZUFBZ0M7UUFGaEMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUF4RjFDOzthQUVLO1FBQ1csZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1Qzs7YUFFSztRQUNXLFdBQU0sR0FBbUIsY0FBYyxDQUFDLElBQUksQ0FBQztRQUU3RDs7O2FBR0s7UUFDVyxVQUFLLEdBQVksS0FBSyxDQUFDO1FBRXZDOzthQUVLO1FBQ1csa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFL0M7O2FBRUs7UUFDVyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFaEQ7O2FBRUs7UUFDWSxtQkFBYyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBUzdFLGVBQVUsR0FBYyxjQUFjLENBQUM7UUFFdkMsY0FBUyxHQUFhLFVBQVUsQ0FBQztRQU1qQyxjQUFTLEdBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFLM0MsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixxQ0FBZ0MsR0FBNkIsRUFBRSxDQUFDO1FBR2hFLG9CQUFlLEdBQXNDLElBQUksR0FBRyxDQUFDO1lBQ25FLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkU7Z0JBQ0UsT0FBTztnQkFDUDtvQkFDRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyRCxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2lCQUN0RDthQUNGO1lBQ0Q7Z0JBQ0UsT0FBTztnQkFDUDtvQkFDRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNoRCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2lCQUNoRDthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUssaUJBQVksR0FFaEI7WUFDRixFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtTQUNwQixDQUFDO0lBTUMsQ0FBQztJQTdLSjs7U0FFSztJQUNMLElBQW9CLFNBQVMsQ0FBQyxHQUF3QztRQUNwRSxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O1NBRUs7SUFDTCxJQUFvQixTQUFTLENBQUMsU0FBb0I7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOztTQUVLO0lBQ0wsSUFBb0IsUUFBUSxDQUFDLFFBQWtCO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztTQUlLO0lBQ0wsSUFBb0IsUUFBUSxDQUFDLGFBQWtDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDO1FBQy9CLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztTQUlLO0lBQ0wsSUFBb0IsZUFBZSxDQUFDLE1BQStCO1FBQ2pFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNO1lBQ3pCLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7U0FHSztJQUNMLElBQW9CLGtCQUFrQixDQUFDLE1BQXNDO1FBQzNFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUM7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFvQ00sa0JBQWtCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQXFETSxRQUFRO1FBQ2IsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELCtEQUErRDtJQUN4RCxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELCtEQUErRDtJQUN4RCxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNwQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCwrREFBK0Q7SUFDeEQsVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQzdCLFNBQVMsRUFDVCxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDN0IsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxNQUFNLE1BQU0sR0FBMEI7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ0MsQ0FBQztRQUUzQixJQUFJLENBQ0YsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUN0RixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLFVBQVUsR0FBaUQsRUFBRSxDQUFDO1FBQ3BFLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUM3QixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVPLCtCQUErQixDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDMUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFLENBQzlDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxPQUFPLENBQUMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTywrQkFBK0I7UUFDckMsSUFBSSxJQUFJLENBQUMsbUNBQW1DLEVBQUU7WUFDNUMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUM3RCxVQUFVLEVBQ1YsV0FBVyxFQUNYLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQ3JELENBQUM7SUFDSixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksSUFBSSxDQUFDLCtCQUErQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUM3QixPQUFPLEVBQ1AsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQzFDLENBQUM7SUFDSixDQUFDO0lBRU8sb0NBQW9DLENBQUMsT0FBcUI7UUFDaEUsTUFBTSxNQUFNLEdBQStCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsT0FBTyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQzlEO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUNyQyxNQUFNLHNCQUFzQixHQUEyQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FDekUsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQzdCLEtBQUssQ0FBQyxLQUFLLEVBQ1gsS0FBSyxDQUFDLE1BQU0sQ0FDYixDQUFDO1lBQ0YsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU8sNkJBQTZCLENBQUMsS0FBWTtRQUNoRCxJQUFJLEtBQUssQ0FBQyxNQUFNLFlBQVksSUFBSSxFQUFFO1lBQ2hDLE1BQU0sYUFBYSxHQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEYsSUFBSSxhQUFhO2dCQUFFLE9BQU87WUFFMUIsTUFBTSx5Q0FBeUMsR0FDN0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUxRixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyx5Q0FBeUMsRUFBRTtnQkFDdEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFzQztRQUM3RCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sUUFBUSxHQUEwQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEMsTUFBTSxLQUFLLENBQUMsb0NBQW9DLE1BQU0sQ0FBQyxRQUFRLHdCQUF3QixDQUFDLENBQUM7U0FDMUY7UUFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sS0FBSyxDQUNULG1DQUFtQyxNQUFNLENBQUMsUUFBUTswRUFDZ0IsQ0FDbkUsQ0FBQztTQUNIO1FBRUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFnQixDQUFDO0lBQ3BDLENBQUM7SUFFTyxlQUFlLENBQUMsTUFBc0M7UUFDNUQsT0FBTyxDQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDL0YsQ0FBQztJQUNKLENBQUM7SUFFTyxxQ0FBcUM7UUFDM0MsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FDM0MsQ0FBQyw0QkFBb0QsRUFBRSxFQUFFO1lBQ3ZELElBQUksNEJBQTRCLElBQUksSUFBSSxFQUFFO2dCQUN4Qyw0QkFBNEIsRUFBRSxDQUFDO2FBQ2hDO1FBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFTyxrQ0FBa0M7UUFDeEMsSUFBSSxJQUFJLENBQUMsbUNBQW1DLEVBQUU7WUFDNUMsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLElBQUksQ0FBQztTQUNqRDtRQUVELElBQUksSUFBSSxDQUFDLCtCQUErQixFQUFFO1lBQ3hDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDOztpSUFsYVUsaUJBQWlCO3FIQUFqQixpQkFBaUIsMmpCQUpqQixDQUFDLGVBQWUsQ0FBQzsyRkFJakIsaUJBQWlCO2tCQU43QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDNUIsY0FBYyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7dUpBS3FCLFNBQVM7c0JBQTVCLEtBQUs7Z0JBY2MsU0FBUztzQkFBNUIsS0FBSztnQkFZYyxRQUFRO3NCQUEzQixLQUFLO2dCQWNjLFFBQVE7c0JBQTNCLEtBQUs7Z0JBZWMsZUFBZTtzQkFBbEMsS0FBSztnQkFjYyxrQkFBa0I7c0JBQXJDLEtBQUs7Z0JBZVUsVUFBVTtzQkFBekIsS0FBSztnQkFLVSxNQUFNO3NCQUFyQixLQUFLO2dCQU1VLEtBQUs7c0JBQXBCLEtBQUs7Z0JBS1UsYUFBYTtzQkFBNUIsS0FBSztnQkFLVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtXLGNBQWM7c0JBQTlCLE1BQU07Z0JBR0Esa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhdXRvUGxhY2VtZW50LFxuICBhdXRvVXBkYXRlLFxuICBjb21wdXRlUG9zaXRpb24sXG4gIGZsaXAsXG4gIG9mZnNldCxcbiAgc2hpZnQsXG4gIFN0cmF0ZWd5LFxufSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IENvbXB1dGVQb3NpdGlvbkNvbmZpZywgTWlkZGxld2FyZSwgUGxhY2VtZW50IH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUvc3JjL3R5cGVzJztcbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2NvcmUnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9ydGFsRGlyZWN0aXZlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zaGFyZWQvcG9ydGFsJztcblxuZXhwb3J0IHR5cGUgVHJpZ2dlckV2ZW50ID0gJ2hvdmVyJyB8ICdjbGljaycgfCAnZm9jdXMnO1xuXG5leHBvcnQgZW51bSBGbG9hdGluZ09mZnNldCB7XG4gIG5vbmUgPSAwLFxuICBzbWFsbCA9IDQsXG4gIG1lZGl1bSA9IDgsXG59XG5cbmV4cG9ydCBlbnVtIE91dGxldFNlbGVjdG9yIHtcbiAgdGFnID0gJ3RhZycsXG4gIGlkID0gJ2lkJyxcbiAgY2xhc3MgPSAnY2xhc3MnLFxuICBuYW1lID0gJ25hbWUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvcnRhbE91dGxldENvbmZpZyB7XG4gIHNlbGVjdG9yOiBPdXRsZXRTZWxlY3RvcjtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEV2ZW50TWV0aG9kcyB7XG4gIGV2ZW50OiBzdHJpbmc7XG4gIG1ldGhvZDogKCkgPT4gdm9pZDtcbn1cblxudHlwZSBFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gKCkgPT4gdm9pZDtcblxuLyoqXG4gKiBAc3VtbWFyeSBGbG9hdGluZ0RpcmVjdGl2ZSBpcyBhIHV0aWxpdHkgdGhhdCBsZXRzIHlvdSBkZWNsYXJhdGl2ZSBhbmNob3IgXCJwb3B1cFwiIGNvbnRhaW5lcnMgdG8gYW5vdGhlciBlbGVtZW50LlxuICpcbiAqIFVzZXMgZmxvYXRpbmctdWksIHdpdGggdGhpcyBkaXJlY3RpdmUgd3JhcHMgdGhlIGZ1bmN0aW9uYWxpdHk6IGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZ2V0dGluZy1zdGFydGVkXG4gKlxuICogVXNlcyBQb3J0YWxEaXJlY3RpdmUgdG8gZW5hYmxlIGZ1bmN0aW9uYWxpdHkgZm9yIHBvcnRhbGluZyB0aGUgZmxvYXRlZCBjb250ZW50LiBUaGlzIHNob3VsZCBiZSB1c2VkIHdoZW4gbmVlZGVkXG4gKiBhbmQgbm90IGFzIHRoZSBkZWZhdWx0IG9wdGlvbi5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5RmxvYXRpbmddJyxcbiAgcHJvdmlkZXJzOiBbUG9ydGFsRGlyZWN0aXZlXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtQb3J0YWxEaXJlY3RpdmVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGbG9hdGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBmb3Igd2hpY2ggdGhlIGhvc3Qgc2hvdWxkIGFuY2hvciB0b1xuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHJlZmVyZW5jZShyZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy50ZWFyRG93blJlZmVyZW5jZUVsZW1lbnRFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gcmVmO1xuICAgIHRoaXMuc2V0dXBFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5hdXRvVXBkYXRlUG9zaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmZXJlbmNlKCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmZXJlbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvdyB0aGUgaG9zdCBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSByZWZlcmVuY2UuIENhbiBiZSBhZmZlY3RlZCBieSBtaWRkbGV3YXJlXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcGxhY2VtZW50KHBsYWNlbWVudDogUGxhY2VtZW50KSB7XG4gICAgdGhpcy5fcGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBwbGFjZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RyYXRlZ3kgZm9yIGhvdyB0aGUgaG9zdCBzaG91bGQgYmUgcG9zaXRpb25lZC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBzdHJhdGVneShzdHJhdGVneTogU3RyYXRlZ3kpIHtcbiAgICB0aGlzLl9zdHJhdGVneSA9IHN0cmF0ZWd5O1xuICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJhdGVneSgpOiBTdHJhdGVneSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hlbiB0aGUgaG9zdCBzaG91bGQgYmUgZGlzcGxheWVkL2hpZGRlbiwgaS5lLiBjbGljayB3aWxsIGF0dGFjaCBhIGNsaWNrIGxpc3RlbmVyIHRvIHRoZSByZWZlcmVuY2VcbiAgICogdGhhdCBtYWtlcyB0aGUgaG9zdCB0b2dnbGUgZGlzcGxheS4gU3VwcG9ydHMgbXVsdGlwbGUgdHJpZ2dlcnMsIHRvIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBmb3IgY29tYmluYXRpb25zXG4gICAqIGxpa2UgY2xpY2svZm9jdXMuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdHJpZ2dlcnMoZXZlbnRUcmlnZ2VyczogQXJyYXk8VHJpZ2dlckV2ZW50Pikge1xuICAgIHRoaXMuX3RyaWdnZXJzID0gZXZlbnRUcmlnZ2VycztcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnNldHVwRXZlbnRIYW5kbGluZygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0cmlnZ2VycygpOiBBcnJheTxUcmlnZ2VyRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlcnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IGZvciB3aGljaCB0aGUgY29udGVudCBzaG91bGQgcG9ydGFsIGludG8uXG4gICAqIFByb3ZpZGluZyBhbiBvdXRsZXQgZW5hYmxlcyB0aGUgcG9ydGFsLCBpZiBub3RoaW5nIGlzIHByb3ZpZGVkLCB0aGUgcHJvdmlkZWQgc3RyYXRlZ3kgaXMgdXNlZC5cbiAgICogVGhpcyBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZXJlJ3MgaXNzdWVzIHdpdGggdGhlIHN0YWNraW5nIGNvbnRleHQsIGFuZCBub3QgYXMgYSBkZWZhdWx0IG9wdGlvbi5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBET01Qb3J0YWxPdXRsZXQob3V0bGV0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3Byb3ZpZGVkUG9ydGFsT3V0bGV0ID0gb3V0bGV0O1xuICAgIHRoaXMucG9ydGFsRGlyZWN0aXZlLm91dGxldCA9XG4gICAgICB0aGlzLkRPTVBvcnRhbE91dGxldCA/PyB0aGlzLmdldE91dGxldEVsZW1lbnQodGhpcy5wb3J0YWxPdXRsZXRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIGdldCBET01Qb3J0YWxPdXRsZXQoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wcm92aWRlZFBvcnRhbE91dGxldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGhvdyB0byBhdXRvbWF0aWNhbGx5IGZpbmQgYW5kIGFzc2lnbiBET01Qb3J0YWxPdXRsZXQgaWYgbm9uZSBpcyBwcm92aWRlZCBpbiBET01Qb3J0YWxPdXRsZXQuXG4gICAqIElmIG5vdGhpbmcgaXMgcHJvdmlkZWQgaGVyZSBhbmQgaW4gRE9NUG9ydGFsT3V0bGV0LCB0aGUgcHJvdmlkZWQgc3RyYXRlZ3kgaXMgdXNlZFxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHBvcnRhbE91dGxldENvbmZpZyhjb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BvcnRhbE91dGxldENvbmZpZyA9IGNvbmZpZztcblxuICAgIGlmICghdGhpcy5ET01Qb3J0YWxPdXRsZXQpIHtcbiAgICAgIHRoaXMucG9ydGFsRGlyZWN0aXZlLm91dGxldCA9IHRoaXMuZ2V0T3V0bGV0RWxlbWVudChjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9ydGFsT3V0bGV0Q29uZmlnKCk6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2ZW50IGhvc3QgZnJvbSBiZWluZyB0b2dnbGVkIGlmIHNldC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGlzcGxhY2VzIHRoZSBmbG9hdGluZyBlbGVtZW50IGZyb20gaXRzIGNvcmUgcGxhY2VtZW50IGFsb25nIHRoZSBzcGVjaWZpZWQgYXhlcy5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIG9mZnNldDogRmxvYXRpbmdPZmZzZXQgPSBGbG9hdGluZ09mZnNldC5ub25lO1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGUgc3BlY2lmaWVkIGF4ZXMgaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3LlxuICAgKiBUaGlzIGRvZXMgbm90IGFsd2F5cyB3b3JrIGFzIGV4cGVjdGVkLCBzbyBkb24ndCBcImp1c3RcIiBzZXQgaXQuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzaGlmdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDaG9vc2VzIHRoZSBwbGFjZW1lbnQgdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHkuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvUGxhY2VtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgaGlkaW5nIHRoZSBob3N0IGJ5IGV2ZW50cy4gU2VlIHZhcmlhYmxlIG5hbWVzLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uRXNjYXBlS2V5OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGNsb3NlT25CYWNrZHJvcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIG9wdGlvbiB0byBiZSBub3RpZmllZCB3aGVuIHRoZSBob3N0IGNoYW5nZXMgZGlzcGxheS4gVGhlIG5ldyBkaXNwbGF5IHZhbHVlIGlzIHByb3ZpZGVkLlxuICAgKiAqL1xuICBAT3V0cHV0KCkgcHVibGljIGRpc3BsYXlDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Fc2NhcGVLZXlQcmVzc2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT25Fc2NhcGVLZXkpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgcHJpdmF0ZSBfc3RyYXRlZ3k6IFN0cmF0ZWd5ID0gJ2Fic29sdXRlJztcblxuICBwcml2YXRlIF9wcm92aWRlZFBvcnRhbE91dGxldDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfcG9ydGFsT3V0bGV0Q29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcnM6IEFycmF5PFRyaWdnZXJFdmVudD4gPSBbJ2NsaWNrJ107XG5cbiAgcHJpdmF0ZSBfcmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGF1dG9VcGRhdGVyUmVmOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIGlzU2hvd246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZuczogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbltdID0gW107XG4gIHByaXZhdGUgZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm47XG4gIHByaXZhdGUgaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjtcbiAgcHJpdmF0ZSB0cmlnZ2VyRXZlbnRNYXA6IE1hcDxUcmlnZ2VyRXZlbnQsIEV2ZW50TWV0aG9kc1tdPiA9IG5ldyBNYXAoW1xuICAgIFsnY2xpY2snLCBbeyBldmVudDogJ2NsaWNrJywgbWV0aG9kOiB0aGlzLnRvZ2dsZVNob3cuYmluZCh0aGlzKSB9XV0sXG4gICAgW1xuICAgICAgJ2hvdmVyJyxcbiAgICAgIFtcbiAgICAgICAgeyBldmVudDogJ21vdXNlZW50ZXInLCBtZXRob2Q6IHRoaXMuc2hvdy5iaW5kKHRoaXMpIH0sXG4gICAgICAgIHsgZXZlbnQ6ICdtb3VzZWxlYXZlJywgbWV0aG9kOiB0aGlzLmhpZGUuYmluZCh0aGlzKSB9LFxuICAgICAgXSxcbiAgICBdLFxuICAgIFtcbiAgICAgICdmb2N1cycsXG4gICAgICBbXG4gICAgICAgIHsgZXZlbnQ6ICdmb2N1cycsIG1ldGhvZDogdGhpcy5zaG93LmJpbmQodGhpcykgfSxcbiAgICAgICAgeyBldmVudDogJ2JsdXInLCBtZXRob2Q6IHRoaXMuaGlkZS5iaW5kKHRoaXMpIH0sXG4gICAgICBdLFxuICAgIF0sXG4gIF0pO1xuXG4gIHByaXZhdGUgSFRNTEVsZW1lbnRzOiB7XG4gICAgW2tleSBpbiBPdXRsZXRTZWxlY3RvciB8ICdkZWZhdWx0J106ICh2YWx1ZT86IHN0cmluZykgPT4gQXJyYXk8RWxlbWVudD4gfCBudWxsO1xuICB9ID0ge1xuICAgIGlkOiAodmFsdWUpID0+IEFycmF5Lm9mKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHZhbHVlKSksXG4gICAgY2xhc3M6ICh2YWx1ZSkgPT4gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHZhbHVlKSksXG4gICAgbmFtZTogKHZhbHVlKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHZhbHVlKSksXG4gICAgdGFnOiAodmFsdWUpID0+IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodmFsdWUpKSxcbiAgICBkZWZhdWx0OiAoKSA9PiBudWxsLFxuICB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHBvcnRhbERpcmVjdGl2ZTogUG9ydGFsRGlyZWN0aXZlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRGbG9hdFN0eWxpbmdUb0hvc3RFbGVtZW50KCk7XG4gICAgdGhpcy51cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cblxuICAvKiBTaG91bGQgYmUgYWNjZXNzaWJsZSBmb3IgcHJvZ3JhbW1hdGljYWxseSBzZXR0aW5nIGRpc3BsYXkgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXR0YWNoRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxlcigpO1xuICAgIHRoaXMuYXR0YWNoSG9zdENsaWNrRXZlbnRIYW5kbGVyKCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICB0aGlzLmlzU2hvd24gPSB0cnVlO1xuICAgIHRoaXMuZGlzcGxheUNoYW5nZWQuZW1pdCh0aGlzLmlzU2hvd24pO1xuICB9XG5cbiAgLyogU2hvdWxkIGJlIGFjY2Vzc2libGUgZm9yIHByb2dyYW1tYXRpY2FsbHkgc2V0dGluZyBkaXNwbGF5ICovXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQgfHwgIXRoaXMuaXNTaG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGVhckRvd25Eb2N1bWVudENsaWNrRXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICB0aGlzLmlzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLmRpc3BsYXlDaGFuZ2VkLmVtaXQodGhpcy5pc1Nob3duKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgdG9nZ2xlU2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1Nob3duKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRGbG9hdFN0eWxpbmdUb0hvc3RFbGVtZW50KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYDBweGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgMHB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3Bvc2l0aW9uJywgdGhpcy5zdHJhdGVneSk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ3otaW5kZXgnLFxuICAgICAgRGVzaWduVG9rZW5IZWxwZXIuekxheWVyKCdwb3BvdmVyJylcbiAgICApO1xuICAgIHRoaXMuc2V0RGlzcGxheVN0eWxpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzcGxheVN0eWxpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2Rpc3BsYXknLFxuICAgICAgdGhpcy5pc1Nob3duID8gYGJsb2NrYCA6IGBub25lYFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZzogQ29tcHV0ZVBvc2l0aW9uQ29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCxcbiAgICAgIG1pZGRsZXdhcmU6IHRoaXMuZ2V0TWlkZGxld2FyZUNvbmZpZygpLFxuICAgICAgc3RyYXRlZ3k6IHRoaXMuc3RyYXRlZ3ksXG4gICAgfSBhcyBDb21wdXRlUG9zaXRpb25Db25maWc7XG5cbiAgICBmcm9tKFxuICAgICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY29uZmlnKVxuICAgICkuc3Vic2NyaWJlKCh7IHgsIHkgfSkgPT4gdGhpcy5zZXRQb3NpdGlvblN0eWxpbmdPbkhvc3RFbGVtZW50KHgsIHkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWlkZGxld2FyZUNvbmZpZygpOiBBcnJheTxNaWRkbGV3YXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IGZhbHNlPiB7XG4gICAgY29uc3QgbWlkZGxld2FyZTogQXJyYXk8TWlkZGxld2FyZSB8IG51bGwgfCB1bmRlZmluZWQgfCBmYWxzZT4gPSBbXTtcbiAgICBtaWRkbGV3YXJlLnB1c2gob2Zmc2V0KHRoaXMub2Zmc2V0KSk7XG4gICAgbWlkZGxld2FyZS5wdXNoKGZsaXAoKSk7XG5cbiAgICBpZiAodGhpcy5zaGlmdCkge1xuICAgICAgbWlkZGxld2FyZS5wdXNoKHNoaWZ0KHsgcGFkZGluZzogcGFyc2VJbnQoRGVzaWduVG9rZW5IZWxwZXIuc2l6ZSgncycpKSB9KSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXV0b1BsYWNlbWVudCkge1xuICAgICAgbWlkZGxld2FyZS5wdXNoKGF1dG9QbGFjZW1lbnQoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pZGRsZXdhcmU7XG4gIH1cblxuICBwcml2YXRlIGF1dG9VcGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUF1dG9VcGRhdGVyUmVmKCk7XG5cbiAgICBpZiAoIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdXRvVXBkYXRlclJlZiA9IGF1dG9VcGRhdGUoXG4gICAgICB0aGlzLnJlZmVyZW5jZT8ubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy51cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uLmJpbmQodGhpcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQb3NpdGlvblN0eWxpbmdPbkhvc3RFbGVtZW50KHhQb3NpdGlvbjogbnVtYmVyLCB5UG9zaXRpb246IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgYCR7eFBvc2l0aW9ufXB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RvcCcsIGAke3lQb3NpdGlvbn1weGApO1xuICAgIHRoaXMuc2V0RGlzcGxheVN0eWxpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBFdmVudEhhbmRsaW5nKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UgfHwgIXRoaXMudHJpZ2dlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXI6IFRyaWdnZXJFdmVudCkgPT5cbiAgICAgIHRoaXMuYXR0YWNoVHJpZ2dlckV2ZW50VG9SZWZlcmVuY2VFbGVtZW50KHRyaWdnZXIpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICdkb2N1bWVudCcsXG4gICAgICAnbW91c2Vkb3duJyxcbiAgICAgIChldmVudCkgPT4gdGhpcy5oYW5kbGVDbGlja091dHNpZGVIb3N0RWxlbWVudChldmVudClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hIb3N0Q2xpY2tFdmVudEhhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiB8fCAhdGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ob3N0Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdjbGljaycsXG4gICAgICAoKSA9PiB0aGlzLmhhbmRsZUNsaWNrSW5zaWRlSG9zdEVsZW1lbnQoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaFRyaWdnZXJFdmVudFRvUmVmZXJlbmNlRWxlbWVudCh0cmlnZ2VyOiBUcmlnZ2VyRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudHM6IEV2ZW50TWV0aG9kc1tdIHwgdW5kZWZpbmVkID0gdGhpcy50cmlnZ2VyRXZlbnRNYXAuZ2V0KHRyaWdnZXIpO1xuXG4gICAgaWYgKCFldmVudHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0cmlnZ2VyfSBpcyBtaXNzaW5nIGV2ZW50IGRlZmluaXRpb24ocylgKTtcbiAgICB9XG5cbiAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQ6IEV2ZW50TWV0aG9kcykgPT4ge1xuICAgICAgY29uc3QgZXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgICB0aGlzLnJlZmVyZW5jZT8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgZXZlbnQuZXZlbnQsXG4gICAgICAgIGV2ZW50Lm1ldGhvZFxuICAgICAgKTtcbiAgICAgIHRoaXMucmVmZXJlbmNlRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbnMucHVzaChldmVudExpc3RlbmVyRGlzcG9zZUZuKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xpY2tJbnNpZGVIb3N0RWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsaWNrT3V0c2lkZUhvc3RFbGVtZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBOb2RlKSB7XG4gICAgICBjb25zdCBjbGlja2VkT25Ib3N0OiBib29sZWFuID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgIGlmIChjbGlja2VkT25Ib3N0KSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGNsaWNrZWRPblJlZmVyZW5jZVdpdGhDbGlja1RyaWdnZXJFbmFibGVkOiBib29sZWFuID1cbiAgICAgICAgdGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiB0aGlzLnRyaWdnZXJzLmluY2x1ZGVzKCdjbGljaycpO1xuXG4gICAgICBpZiAodGhpcy5jbG9zZU9uQmFja2Ryb3AgJiYgIWNsaWNrZWRPblJlZmVyZW5jZVdpdGhDbGlja1RyaWdnZXJFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3V0bGV0RWxlbWVudChjb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy5zZWxlY3RvciB8fCAhY29uZmlnLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50czogQXJyYXk8RWxlbWVudD4gfCBudWxsID0gdGhpcy5nZXRIVE1MRWxlbWVudHMoY29uZmlnKTtcblxuICAgIGlmICghZWxlbWVudHMgfHwgZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ291bGQgbm90IGxvY2F0ZSBIVE1MRWxlbWVudCBmb3IgJHtjb25maWcuc2VsZWN0b3J9LiBEaWQgeW91IG1pc3NwZWxsIGl0P2ApO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYE11bHRpcGxlIEhUTUxFbGVtZW50cyBmb3VuZCBmb3IgJHtjb25maWcuc2VsZWN0b3J9LlxuICAgICAgICAgVGhpcyBjYW4gbGVhZCB0byB1bmludGVuZGVkIGJlaGF2aW91cnMuIFByb3ZpZGUgYW4gdW5pcXVlIG91dGxldGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRzWzBdIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIVE1MRWxlbWVudHMoY29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQpOiBBcnJheTxFbGVtZW50PiB8IG51bGwge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLkhUTUxFbGVtZW50c1tjb25maWcuc2VsZWN0b3JdKGNvbmZpZy52YWx1ZSkgfHwgdGhpcy5IVE1MRWxlbWVudHNbJ2RlZmF1bHQnXShjb25maWcudmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdGVhckRvd25SZWZlcmVuY2VFbGVtZW50RXZlbnRIYW5kbGluZygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zLmZvckVhY2goXG4gICAgICAoZXZlbnRMaXN0ZW5lckRpc3Bvc2VGdW5jdGlvbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbikgPT4ge1xuICAgICAgICBpZiAoZXZlbnRMaXN0ZW5lckRpc3Bvc2VGdW5jdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgZXZlbnRMaXN0ZW5lckRpc3Bvc2VGdW5jdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zID0gW107XG4gIH1cblxuICBwcml2YXRlIHRlYXJEb3duRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4pIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4oKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4pIHtcbiAgICAgIHRoaXMuaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbigpO1xuICAgICAgdGhpcy5ob3N0Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUF1dG9VcGRhdGVyUmVmKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9VcGRhdGVyUmVmKSB7XG4gICAgICB0aGlzLmF1dG9VcGRhdGVyUmVmKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudGVhckRvd25Eb2N1bWVudENsaWNrRXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMudGVhckRvd25SZWZlcmVuY2VFbGVtZW50RXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMucmVtb3ZlQXV0b1VwZGF0ZXJSZWYoKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
2
2
  import { register } from 'swiper/element/bundle';
3
3
  import { DesignTokenHelper, PlatformService, UniqueIdGenerator, } from '@kirbydesign/designsystem/helpers';
4
4
  import { SlideDirective } from './slide.directive';
@@ -12,8 +12,9 @@ import * as i4 from "@kirbydesign/designsystem/icon";
12
12
  // https://swiperjs.com/element
13
13
  register();
14
14
  export class SlidesComponent {
15
- constructor(platform) {
15
+ constructor(platform, cdr) {
16
16
  this.platform = platform;
17
+ this.cdr = cdr;
17
18
  /**
18
19
  * @deprecated Will be removed in next major version. Use `slideChange` instead.
19
20
  */
@@ -43,6 +44,12 @@ export class SlidesComponent {
43
44
  slideTo(index) {
44
45
  this.swiperContainer.nativeElement.swiper.slideTo(index);
45
46
  }
47
+ ngOnChanges(changes) {
48
+ if (changes.slides?.firstChange === false) {
49
+ this.cdr.detectChanges();
50
+ this.swiperContainer.nativeElement.swiper.updateSlides();
51
+ }
52
+ }
46
53
  getDefaultConfig() {
47
54
  const desktopBreakpoint = parseInt(DesignTokenHelper.breakpoints.medium); // TODO RK: Subtract 1 when breakpoint medium is fixed to 769px...
48
55
  const spaceBetween = parseInt(DesignTokenHelper.size('s'));
@@ -87,12 +94,12 @@ export class SlidesComponent {
87
94
  return { ...this.getDefaultConfig(), pagination: false, navigation: false };
88
95
  }
89
96
  }
90
- /** @nocollapse */ SlidesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlidesComponent, deps: [{ token: i1.PlatformService }], target: i0.ɵɵFactoryTarget.Component });
91
- /** @nocollapse */ SlidesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SlidesComponent, selector: "kirby-slides", inputs: { slidesOptions: "slidesOptions", title: "title", slides: "slides", showNavigation: "showNavigation" }, outputs: { selectedSlide: "selectedSlide", slideChange: "slideChange" }, queries: [{ propertyName: "slideTemplate", first: true, predicate: SlideDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "swiperContainer", first: true, predicate: ["swiperContainer"], descendants: true }], ngImport: i0, template: "<div class=\"navigation\" *ngIf=\"showNavigation || title !== undefined\">\n <span class=\"kirby-text-medium\">{{ title }}</span>\n\n <div\n class=\"navigation-inner\"\n *ngIf=\"\n showNavigation &&\n (!slidesOptions ||\n slidesOptions?.navigation === undefined ||\n slidesOptions?.pagination === undefined)\n \"\n >\n <div\n class=\"pagination\"\n [ngClass]=\"_paginationId\"\n *ngIf=\"!slidesOptions || slidesOptions?.pagination === undefined\"\n ></div>\n <div\n class=\"buttons\"\n *ngIf=\"!_isTouch && (!slidesOptions || slidesOptions?.navigation === undefined)\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-prev swiper-button-prev\"\n [ngClass]=\"_prevButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-back\"></kirby-icon>\n </button>\n\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-next swiper-button-next\"\n [ngClass]=\"_nextButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-more\"></kirby-icon>\n </button>\n\n <ng-content select=\"button[kirby-button]\"></ng-content>\n </div>\n </div>\n</div>\n\n<!-- We need to prevent Swiper from initialization by setting init=\"false\" until we pass all required parameters\n https://swiperjs.com/element#parameters-as-props -->\n<swiper-container init=\"false\" #swiperContainer>\n <swiper-slide *ngFor=\"let slide of slides; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"slideTemplate; context: { $implicit: slide, index: i }\"\n ></ng-container>\n </swiper-slide>\n</swiper-container>\n", styles: [":host{--swiper-navigation-sides-offset: 0;--swiper-pagination-bullet-width: 10px;--swiper-pagination-bullet-height: 6px;--swiper-pagination-bullet-border-radius: 3px;--swiper-pagination-bullet-horizontal-gap: 4px;--swiper-pagination-color: var(--kirby-black);--swiper-pagination-bullet-inactive-color: var(--kirby-black);--swiper-pagination-bullet-inactive-opacity: .2}:host .navigation{display:flex;justify-content:space-between;align-items:center;margin-block:16px;margin-inline:16px}:host .navigation-inner{display:flex;align-items:center}:host .pagination{display:flex;align-items:center;width:auto;margin-inline-end:16px}:host .pagination ::ng-deep .swiper-pagination-bullet:last-of-type{margin-inline-end:0}:host .buttons{display:none}@media (min-width: 768px){:host .buttons{display:block}}:host .buttons .swiper-button-prev{margin-block:0;margin-inline-start:0}:host .buttons .swiper-button-next{margin-block:0;margin-inline-end:0}:host .buttons ::ng-deep>button[kirby-button]{margin-inline:8px 0}:host .swiper-button-lock{display:none}@media (max-width: 767px){:host swiper-container{padding-inline:16px;margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}:host .navigation,:host .pagination{margin-inline-end:0}}:host .swiper-button-next.swiper-button-disabled,:host .swiper-button-prev.swiper-button-disabled{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
97
+ /** @nocollapse */ SlidesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlidesComponent, deps: [{ token: i1.PlatformService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
98
+ /** @nocollapse */ SlidesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SlidesComponent, selector: "kirby-slides", inputs: { slidesOptions: "slidesOptions", title: "title", slides: "slides", showNavigation: "showNavigation" }, outputs: { selectedSlide: "selectedSlide", slideChange: "slideChange" }, queries: [{ propertyName: "slideTemplate", first: true, predicate: SlideDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "swiperContainer", first: true, predicate: ["swiperContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"navigation\" *ngIf=\"showNavigation || title !== undefined\">\n <span class=\"kirby-text-medium\">{{ title }}</span>\n\n <div\n class=\"navigation-inner\"\n *ngIf=\"\n showNavigation &&\n (!slidesOptions ||\n slidesOptions?.navigation === undefined ||\n slidesOptions?.pagination === undefined)\n \"\n >\n <div\n class=\"pagination\"\n [ngClass]=\"_paginationId\"\n *ngIf=\"!slidesOptions || slidesOptions?.pagination === undefined\"\n ></div>\n <div\n class=\"buttons\"\n *ngIf=\"!_isTouch && (!slidesOptions || slidesOptions?.navigation === undefined)\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-prev swiper-button-prev\"\n [ngClass]=\"_prevButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-back\"></kirby-icon>\n </button>\n\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-next swiper-button-next\"\n [ngClass]=\"_nextButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-more\"></kirby-icon>\n </button>\n\n <ng-content select=\"button[kirby-button]\"></ng-content>\n </div>\n </div>\n</div>\n\n<!-- We need to prevent Swiper from initialization by setting init=\"false\" until we pass all required parameters\n https://swiperjs.com/element#parameters-as-props -->\n<swiper-container init=\"false\" #swiperContainer>\n <swiper-slide *ngFor=\"let slide of slides; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"slideTemplate; context: { $implicit: slide, index: i }\"\n ></ng-container>\n </swiper-slide>\n</swiper-container>\n", styles: [":host{--swiper-navigation-sides-offset: 0;--swiper-pagination-bullet-width: 10px;--swiper-pagination-bullet-height: 6px;--swiper-pagination-bullet-border-radius: 3px;--swiper-pagination-bullet-horizontal-gap: 4px;--swiper-pagination-color: var(--kirby-black);--swiper-pagination-bullet-inactive-color: var(--kirby-black);--swiper-pagination-bullet-inactive-opacity: .2}:host .navigation{display:flex;justify-content:space-between;align-items:center;margin-block:16px;margin-inline:16px}:host .navigation-inner{display:flex;align-items:center}:host .pagination{display:flex;align-items:center;width:auto;margin-inline-end:16px}:host .pagination ::ng-deep .swiper-pagination-bullet:last-of-type{margin-inline-end:0}:host .buttons{display:none;z-index:1}@media (min-width: 768px){:host .buttons{display:block}}:host .buttons .swiper-button-prev{margin-block:0;margin-inline-start:0}:host .buttons .swiper-button-next{margin-block:0;margin-inline-end:0}:host .buttons ::ng-deep>button[kirby-button]{margin-inline:8px 0}:host .swiper-button-lock{display:none}@media (max-width: 767px){:host swiper-container{padding-inline:16px;margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}:host .navigation,:host .pagination{margin-inline-end:0}}:host .swiper-button-next.swiper-button-disabled,:host .swiper-button-prev.swiper-button-disabled{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
92
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlidesComponent, decorators: [{
93
100
  type: Component,
94
- args: [{ selector: 'kirby-slides', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"navigation\" *ngIf=\"showNavigation || title !== undefined\">\n <span class=\"kirby-text-medium\">{{ title }}</span>\n\n <div\n class=\"navigation-inner\"\n *ngIf=\"\n showNavigation &&\n (!slidesOptions ||\n slidesOptions?.navigation === undefined ||\n slidesOptions?.pagination === undefined)\n \"\n >\n <div\n class=\"pagination\"\n [ngClass]=\"_paginationId\"\n *ngIf=\"!slidesOptions || slidesOptions?.pagination === undefined\"\n ></div>\n <div\n class=\"buttons\"\n *ngIf=\"!_isTouch && (!slidesOptions || slidesOptions?.navigation === undefined)\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-prev swiper-button-prev\"\n [ngClass]=\"_prevButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-back\"></kirby-icon>\n </button>\n\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-next swiper-button-next\"\n [ngClass]=\"_nextButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-more\"></kirby-icon>\n </button>\n\n <ng-content select=\"button[kirby-button]\"></ng-content>\n </div>\n </div>\n</div>\n\n<!-- We need to prevent Swiper from initialization by setting init=\"false\" until we pass all required parameters\n https://swiperjs.com/element#parameters-as-props -->\n<swiper-container init=\"false\" #swiperContainer>\n <swiper-slide *ngFor=\"let slide of slides; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"slideTemplate; context: { $implicit: slide, index: i }\"\n ></ng-container>\n </swiper-slide>\n</swiper-container>\n", styles: [":host{--swiper-navigation-sides-offset: 0;--swiper-pagination-bullet-width: 10px;--swiper-pagination-bullet-height: 6px;--swiper-pagination-bullet-border-radius: 3px;--swiper-pagination-bullet-horizontal-gap: 4px;--swiper-pagination-color: var(--kirby-black);--swiper-pagination-bullet-inactive-color: var(--kirby-black);--swiper-pagination-bullet-inactive-opacity: .2}:host .navigation{display:flex;justify-content:space-between;align-items:center;margin-block:16px;margin-inline:16px}:host .navigation-inner{display:flex;align-items:center}:host .pagination{display:flex;align-items:center;width:auto;margin-inline-end:16px}:host .pagination ::ng-deep .swiper-pagination-bullet:last-of-type{margin-inline-end:0}:host .buttons{display:none}@media (min-width: 768px){:host .buttons{display:block}}:host .buttons .swiper-button-prev{margin-block:0;margin-inline-start:0}:host .buttons .swiper-button-next{margin-block:0;margin-inline-end:0}:host .buttons ::ng-deep>button[kirby-button]{margin-inline:8px 0}:host .swiper-button-lock{display:none}@media (max-width: 767px){:host swiper-container{padding-inline:16px;margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}:host .navigation,:host .pagination{margin-inline-end:0}}:host .swiper-button-next.swiper-button-disabled,:host .swiper-button-prev.swiper-button-disabled{opacity:1}\n"] }]
95
- }], ctorParameters: function () { return [{ type: i1.PlatformService }]; }, propDecorators: { swiperContainer: [{
101
+ args: [{ selector: 'kirby-slides', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"navigation\" *ngIf=\"showNavigation || title !== undefined\">\n <span class=\"kirby-text-medium\">{{ title }}</span>\n\n <div\n class=\"navigation-inner\"\n *ngIf=\"\n showNavigation &&\n (!slidesOptions ||\n slidesOptions?.navigation === undefined ||\n slidesOptions?.pagination === undefined)\n \"\n >\n <div\n class=\"pagination\"\n [ngClass]=\"_paginationId\"\n *ngIf=\"!slidesOptions || slidesOptions?.pagination === undefined\"\n ></div>\n <div\n class=\"buttons\"\n *ngIf=\"!_isTouch && (!slidesOptions || slidesOptions?.navigation === undefined)\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-prev swiper-button-prev\"\n [ngClass]=\"_prevButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-back\"></kirby-icon>\n </button>\n\n <button\n kirby-button\n attentionLevel=\"3\"\n class=\"nav-next swiper-button-next\"\n [ngClass]=\"_nextButtonId\"\n size=\"xs\"\n >\n <kirby-icon name=\"arrow-more\"></kirby-icon>\n </button>\n\n <ng-content select=\"button[kirby-button]\"></ng-content>\n </div>\n </div>\n</div>\n\n<!-- We need to prevent Swiper from initialization by setting init=\"false\" until we pass all required parameters\n https://swiperjs.com/element#parameters-as-props -->\n<swiper-container init=\"false\" #swiperContainer>\n <swiper-slide *ngFor=\"let slide of slides; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"slideTemplate; context: { $implicit: slide, index: i }\"\n ></ng-container>\n </swiper-slide>\n</swiper-container>\n", styles: [":host{--swiper-navigation-sides-offset: 0;--swiper-pagination-bullet-width: 10px;--swiper-pagination-bullet-height: 6px;--swiper-pagination-bullet-border-radius: 3px;--swiper-pagination-bullet-horizontal-gap: 4px;--swiper-pagination-color: var(--kirby-black);--swiper-pagination-bullet-inactive-color: var(--kirby-black);--swiper-pagination-bullet-inactive-opacity: .2}:host .navigation{display:flex;justify-content:space-between;align-items:center;margin-block:16px;margin-inline:16px}:host .navigation-inner{display:flex;align-items:center}:host .pagination{display:flex;align-items:center;width:auto;margin-inline-end:16px}:host .pagination ::ng-deep .swiper-pagination-bullet:last-of-type{margin-inline-end:0}:host .buttons{display:none;z-index:1}@media (min-width: 768px){:host .buttons{display:block}}:host .buttons .swiper-button-prev{margin-block:0;margin-inline-start:0}:host .buttons .swiper-button-next{margin-block:0;margin-inline-end:0}:host .buttons ::ng-deep>button[kirby-button]{margin-inline:8px 0}:host .swiper-button-lock{display:none}@media (max-width: 767px){:host swiper-container{padding-inline:16px;margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}:host .navigation,:host .pagination{margin-inline-end:0}}:host .swiper-button-next.swiper-button-disabled,:host .swiper-button-prev.swiper-button-disabled{opacity:1}\n"] }]
102
+ }], ctorParameters: function () { return [{ type: i1.PlatformService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { swiperContainer: [{
96
103
  type: ViewChild,
97
104
  args: ['swiperContainer']
98
105
  }], slideTemplate: [{
@@ -111,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
111
118
  }], slideChange: [{
112
119
  type: Output
113
120
  }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NsaWRlL3NyYy9zbGlkZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2xpZGUvc3JjL3NsaWRlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBRW5ELG9DQUFvQztBQUNwQyxxRUFBcUU7QUFDckUsK0JBQStCO0FBQy9CLFFBQVEsRUFBRSxDQUFDO0FBZ0JYLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBWTdDOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRTFELGtCQUFhLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEUsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMs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QUM7SUFFTyxtQkFBbUI7UUFDekIsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDOUUsQ0FBQzs7K0hBakdVLGVBQWU7bUhBQWYsZUFBZSx3UkFJWixjQUFjLDJCQUF3QixXQUFXLCtKQzdDakUsZ3JEQXVEQTsyRkRkYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTtzR0FLakIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBRXJCLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUd4RCxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN3aXBlciwgU3dpcGVyT3B0aW9ucyB9IGZyb20gJ3N3aXBlcic7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gJ3N3aXBlci9lbGVtZW50L2J1bmRsZSc7XG5pbXBvcnQge1xuICBEZXNpZ25Ub2tlbkhlbHBlcixcbiAgUGxhdGZvcm1TZXJ2aWNlLFxuICBVbmlxdWVJZEdlbmVyYXRvcixcbn0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IFNsaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9zbGlkZS5kaXJlY3RpdmUnO1xuXG4vLyBTd2lwZXIgaXMgbm90IGFuIEFuZ3VsYXIgbGlicmFyeSxcbi8vIHNvIHdlIG5lZWQgdG8gdXNlIHRoZWlyIHdlYiBjb21wb25lbnRzIGFuZCByZWdpc3RlciB0aGVtIG1hbnVhbGx5LlxuLy8gaHR0cHM6Ly9zd2lwZXJqcy5jb20vZWxlbWVudFxucmVnaXN0ZXIoKTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWRTbGlkZSA9IHtcbiAgc2xpZGU6IGFueTtcbiAgaW5kZXg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEtpcmJ5U3dpcGVyT3B0aW9ucyA9IFN3aXBlck9wdGlvbnM7XG50eXBlIFN3aXBlckNvbnRhaW5lciA9IEhUTUxFbGVtZW50ICYgeyBpbml0aWFsaXplOiAoKSA9PiB2b2lkOyBzd2lwZXI6IFN3aXBlciB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1zbGlkZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UpIHt9XG5cbiAgQFZpZXdDaGlsZCgnc3dpcGVyQ29udGFpbmVyJykgc3dpcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPFN3aXBlckNvbnRhaW5lcj47XG4gIEBDb250ZW50Q2hpbGQoU2xpZGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgc2xpZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8U2xpZGVEaXJlY3RpdmU+O1xuXG4gIEBJbnB1dCgpIHNsaWRlc09wdGlvbnM/OiBLaXJieVN3aXBlck9wdGlvbnM7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNsaWRlczogdW5rbm93bltdO1xuXG4gIEBJbnB1dCgpIHNob3dOYXZpZ2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gVXNlIGBzbGlkZUNoYW5nZWAgaW5zdGVhZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFNsaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RlZFNsaWRlPigpO1xuICBAT3V0cHV0KCkgc2xpZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGVkU2xpZGU+KCk7XG5cbiAgX3BhZ2luYXRpb25JZCA9IFVuaXF1ZUlkR2VuZXJhdG9yLnNjb3BlZFRvKCdwYWdpbmF0aW9uJykubmV4dCgpO1xuICBfcHJldkJ1dHRvbklkID0gVW5pcXVlSWRHZW5lcmF0b3Iuc2NvcGVkVG8oJ3N3aXBlci1idXR0b24tcHJldicpLm5leHQoKTtcbiAgX25leHRCdXR0b25JZCA9IFVuaXF1ZUlkR2VuZXJhdG9yLnNjb3BlZFRvKCdzd2lwZXItYnV0dG9uLW5leHQnKS5uZXh0KCk7XG4gIF9pc1RvdWNoOiBib29sZWFuO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2lzVG91Y2ggPSB0aGlzLnBsYXRmb3JtLmlzVG91Y2goKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFNsaWRlLm9ic2VydmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdEZXByZWNhdGlvbiB3YXJuaW5nOiBgc2VsZWN0ZWRTbGlkZWAgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gVXNlIGBzbGlkZUNoYW5nZWAgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93TmF2aWdhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdXYXJuaW5nOiBraXJieS1zbGlkZXMuc2hvd05hdmlnYXRpb24gd2lsbCBkZWZhdWx0IHRvIGB0cnVlYCBpbiBuZXh0IG1ham9yIHZlcnNpb24gYW5kIHNob3cgbmF2aWdhdGlvbiBhbmQgcGFnaW5hdGlvbiBjb250cm9scyBvdXQgb2YgdGhlIGJveC4gUGxlYXNlIHNldCB0aGlzIHByb3BlcnR5IHRvIGBmYWxzZWAgbm93IGlmIHlvdSB3YW50IHRvIG9wdC1vdXQgb2YgdGhpcyBmdXR1cmUgZGVmYXVsdC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gdGhpcy5zaG93TmF2aWdhdGlvblxuICAgICAgPyB0aGlzLmdldERlZmF1bHRDb25maWcoKVxuICAgICAgOiB0aGlzLmdldE5vQ29udHJvbHNDb25maWcoKTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHsgLi4uZGVmYXVsdENvbmZpZywgLi4udGhpcy5zbGlkZXNPcHRpb25zIH07XG5cbiAgICBPYmplY3QuYXNzaWduKHRoaXMuc3dpcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZyk7XG5cbiAgICB0aGlzLnN3aXBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzbGlkZVRvKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnN3aXBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN3aXBlci5zbGlkZVRvKGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENvbmZpZygpOiBLaXJieVN3aXBlck9wdGlvbnMge1xuICAgIGNvbnN0IGRlc2t0b3BCcmVha3BvaW50ID0gcGFyc2VJbnQoRGVzaWduVG9rZW5IZWxwZXIuYnJlYWtwb2ludHMubWVkaXVtKTsgLy8gVE9ETyBSSzogU3VidHJhY3QgMSB3aGVuIGJyZWFrcG9pbnQgbWVkaXVtIGlzIGZpeGVkIHRvIDc2OXB4Li4uXG4gICAgY29uc3Qgc3BhY2VCZXR3ZWVuID0gcGFyc2VJbnQoRGVzaWduVG9rZW5IZWxwZXIuc2l6ZSgncycpKTtcbiAgICBjb25zdCB0cmFuc2l0aW9uRHVyYXRpb24gPSBwYXJzZUludChEZXNpZ25Ub2tlbkhlbHBlci50cmFuc2l0aW9uRHVyYXRpb24oJ2xvbmcnKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLFxuICAgICAgY2VudGVyZWRTbGlkZXNCb3VuZHM6IHRydWUsXG4gICAgICBzbGlkZXNQZXJWaWV3OiAxLjIsXG4gICAgICBzbGlkZXNQZXJHcm91cDogMSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIFtkZXNrdG9wQnJlYWtwb2ludF06IHtcbiAgICAgICAgICBjZW50ZXJlZFNsaWRlczogZmFsc2UsXG4gICAgICAgICAgc2xpZGVzUGVyVmlldzogMyxcbiAgICAgICAgICBzbGlkZXNQZXJHcm91cDogMyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzcGFjZUJldHdlZW46IHNwYWNlQmV0d2VlbixcbiAgICAgIHNwZWVkOiB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIGVsOiBgLiR7dGhpcy5fcGFnaW5hdGlvbklkfWAsXG4gICAgICAgIHR5cGU6ICdidWxsZXRzJyxcbiAgICAgIH0sXG4gICAgICBuYXZpZ2F0aW9uOiB7XG4gICAgICAgIG5leHRFbDogYC4ke3RoaXMuX25leHRCdXR0b25JZH1gLFxuICAgICAgICBwcmV2RWw6IGAuJHt0aGlzLl9wcmV2QnV0dG9uSWR9YCxcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBzbGlkZUNoYW5nZTogKHN3aXBlcikgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTbGlkZS5lbWl0KHtcbiAgICAgICAgICAgIHNsaWRlOiB0aGlzLnNsaWRlc1tzd2lwZXIuYWN0aXZlSW5kZXhdLFxuICAgICAgICAgICAgaW5kZXg6IHN3aXBlci5hY3RpdmVJbmRleCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNsaWRlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgc2xpZGU6IHRoaXMuc2xpZGVzW3N3aXBlci5hY3RpdmVJbmRleF0sXG4gICAgICAgICAgICBpbmRleDogc3dpcGVyLmFjdGl2ZUluZGV4LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROb0NvbnRyb2xzQ29uZmlnKCk6IEtpcmJ5U3dpcGVyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5nZXREZWZhdWx0Q29uZmlnKCksIHBhZ2luYXRpb246IGZhbHNlLCBuYXZpZ2F0aW9uOiBmYWxzZSB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibmF2aWdhdGlvblwiICpuZ0lmPVwic2hvd05hdmlnYXRpb24gfHwgdGl0bGUgIT09IHVuZGVmaW5lZFwiPlxuICA8c3BhbiBjbGFzcz1cImtpcmJ5LXRleHQtbWVkaXVtXCI+e3sgdGl0bGUgfX08L3NwYW4+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmF2aWdhdGlvbi1pbm5lclwiXG4gICAgKm5nSWY9XCJcbiAgICAgIHNob3dOYXZpZ2F0aW9uICYmXG4gICAgICAoIXNsaWRlc09wdGlvbnMgfHxcbiAgICAgICAgc2xpZGVzT3B0aW9ucz8ubmF2aWdhdGlvbiA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHNsaWRlc09wdGlvbnM/LnBhZ2luYXRpb24gPT09IHVuZGVmaW5lZClcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwYWdpbmF0aW9uXCJcbiAgICAgIFtuZ0NsYXNzXT1cIl9wYWdpbmF0aW9uSWRcIlxuICAgICAgKm5nSWY9XCIhc2xpZGVzT3B0aW9ucyB8fCBzbGlkZXNPcHRpb25zPy5wYWdpbmF0aW9uID09PSB1bmRlZmluZWRcIlxuICAgID48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImJ1dHRvbnNcIlxuICAgICAgKm5nSWY9XCIhX2lzVG91Y2ggJiYgKCFzbGlkZXNPcHRpb25zIHx8IHNsaWRlc09wdGlvbnM/Lm5hdmlnYXRpb24gPT09IHVuZGVmaW5lZClcIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAga2lyYnktYnV0dG9uXG4gICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgIGNsYXNzPVwibmF2LXByZXYgc3dpcGVyLWJ1dHRvbi1wcmV2XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiX3ByZXZCdXR0b25JZFwiXG4gICAgICAgIHNpemU9XCJ4c1wiXG4gICAgICA+XG4gICAgICAgIDxraXJieS1pY29uIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9raXJieS1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAga2lyYnktYnV0dG9uXG4gICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgIGNsYXNzPVwibmF2LW5leHQgc3dpcGVyLWJ1dHRvbi1uZXh0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiX25leHRCdXR0b25JZFwiXG4gICAgICAgIHNpemU9XCJ4c1wiXG4gICAgICA+XG4gICAgICAgIDxraXJieS1pY29uIG5hbWU9XCJhcnJvdy1tb3JlXCI+PC9raXJieS1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvbltraXJieS1idXR0b25dXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIFdlIG5lZWQgdG8gcHJldmVudCBTd2lwZXIgZnJvbSBpbml0aWFsaXphdGlvbiBieSBzZXR0aW5nIGluaXQ9XCJmYWxzZVwiIHVudGlsIHdlIHBhc3MgYWxsIHJlcXVpcmVkIHBhcmFtZXRlcnNcbiAgICAgaHR0cHM6Ly9zd2lwZXJqcy5jb20vZWxlbWVudCNwYXJhbWV0ZXJzLWFzLXByb3BzIC0tPlxuPHN3aXBlci1jb250YWluZXIgaW5pdD1cImZhbHNlXCIgI3N3aXBlckNvbnRhaW5lcj5cbiAgPHN3aXBlci1zbGlkZSAqbmdGb3I9XCJsZXQgc2xpZGUgb2Ygc2xpZGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbGlkZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2xpZGUsIGluZGV4OiBpIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9zd2lwZXItc2xpZGU+XG48L3N3aXBlci1jb250YWluZXI+XG4iXX0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NsaWRlL3NyYy9zbGlkZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2xpZGUvc3JjL3NsaWRlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixpQkFBaUIsR0FDbEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7OztBQUVuRCxvQ0FBb0M7QUFDcEMscUVBQXFFO0FBQ3JFLCtCQUErQjtBQUMvQixRQUFRLEVBQUUsQ0FBQztBQWdCWCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUF5QixFQUFVLEdBQXNCO1FBQXpELGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFZN0U7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQ2xELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFMUQsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEUsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJ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Q0FBQyxXQUFXLENBQUM7d0JBQ3RDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVztxQkFDMUIsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO3dCQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO3dCQUN0QyxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVc7cUJBQzFCLENBQUMsQ0FBQztnQkFDTCxDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM5RSxDQUFDOzsrSEF4R1UsZUFBZTttSEFBZixlQUFlLHdSQUlaLGNBQWMsMkJBQXdCLFdBQVcsb0xDaERqRSxnckRBdURBOzJGRFhhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNO3NJQUtqQixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFckIsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3hELGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3dpcGVyLCBTd2lwZXJPcHRpb25zIH0gZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IHJlZ2lzdGVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcbmltcG9ydCB7XG4gIERlc2lnblRva2VuSGVscGVyLFxuICBQbGF0Zm9ybVNlcnZpY2UsXG4gIFVuaXF1ZUlkR2VuZXJhdG9yLFxufSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2xpZGVEaXJlY3RpdmUgfSBmcm9tICcuL3NsaWRlLmRpcmVjdGl2ZSc7XG5cbi8vIFN3aXBlciBpcyBub3QgYW4gQW5ndWxhciBsaWJyYXJ5LFxuLy8gc28gd2UgbmVlZCB0byB1c2UgdGhlaXIgd2ViIGNvbXBvbmVudHMgYW5kIHJlZ2lzdGVyIHRoZW0gbWFudWFsbHkuXG4vLyBodHRwczovL3N3aXBlcmpzLmNvbS9lbGVtZW50XG5yZWdpc3RlcigpO1xuXG5leHBvcnQgdHlwZSBTZWxlY3RlZFNsaWRlID0ge1xuICBzbGlkZTogYW55O1xuICBpbmRleDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgS2lyYnlTd2lwZXJPcHRpb25zID0gU3dpcGVyT3B0aW9ucztcbnR5cGUgU3dpcGVyQ29udGFpbmVyID0gSFRNTEVsZW1lbnQgJiB7IGluaXRpYWxpemU6ICgpID0+IHZvaWQ7IHN3aXBlcjogU3dpcGVyIH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXNsaWRlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbGlkZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgQFZpZXdDaGlsZCgnc3dpcGVyQ29udGFpbmVyJykgc3dpcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPFN3aXBlckNvbnRhaW5lcj47XG4gIEBDb250ZW50Q2hpbGQoU2xpZGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgc2xpZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8U2xpZGVEaXJlY3RpdmU+O1xuXG4gIEBJbnB1dCgpIHNsaWRlc09wdGlvbnM/OiBLaXJieVN3aXBlck9wdGlvbnM7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNsaWRlczogdW5rbm93bltdO1xuXG4gIEBJbnB1dCgpIHNob3dOYXZpZ2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gVXNlIGBzbGlkZUNoYW5nZWAgaW5zdGVhZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFNsaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RlZFNsaWRlPigpO1xuICBAT3V0cHV0KCkgc2xpZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGVkU2xpZGU+KCk7XG5cbiAgX3BhZ2luYXRpb25JZCA9IFVuaXF1ZUlkR2VuZXJhdG9yLnNjb3BlZFRvKCdwYWdpbmF0aW9uJykubmV4dCgpO1xuICBfcHJldkJ1dHRvbklkID0gVW5pcXVlSWRHZW5lcmF0b3Iuc2NvcGVkVG8oJ3N3aXBlci1idXR0b24tcHJldicpLm5leHQoKTtcbiAgX25leHRCdXR0b25JZCA9IFVuaXF1ZUlkR2VuZXJhdG9yLnNjb3BlZFRvKCdzd2lwZXItYnV0dG9uLW5leHQnKS5uZXh0KCk7XG4gIF9pc1RvdWNoOiBib29sZWFuO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2lzVG91Y2ggPSB0aGlzLnBsYXRmb3JtLmlzVG91Y2goKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFNsaWRlLm9ic2VydmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdEZXByZWNhdGlvbiB3YXJuaW5nOiBgc2VsZWN0ZWRTbGlkZWAgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gVXNlIGBzbGlkZUNoYW5nZWAgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93TmF2aWdhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdXYXJuaW5nOiBraXJieS1zbGlkZXMuc2hvd05hdmlnYXRpb24gd2lsbCBkZWZhdWx0IHRvIGB0cnVlYCBpbiBuZXh0IG1ham9yIHZlcnNpb24gYW5kIHNob3cgbmF2aWdhdGlvbiBhbmQgcGFnaW5hdGlvbiBjb250cm9scyBvdXQgb2YgdGhlIGJveC4gUGxlYXNlIHNldCB0aGlzIHByb3BlcnR5IHRvIGBmYWxzZWAgbm93IGlmIHlvdSB3YW50IHRvIG9wdC1vdXQgb2YgdGhpcyBmdXR1cmUgZGVmYXVsdC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gdGhpcy5zaG93TmF2aWdhdGlvblxuICAgICAgPyB0aGlzLmdldERlZmF1bHRDb25maWcoKVxuICAgICAgOiB0aGlzLmdldE5vQ29udHJvbHNDb25maWcoKTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHsgLi4uZGVmYXVsdENvbmZpZywgLi4udGhpcy5zbGlkZXNPcHRpb25zIH07XG5cbiAgICBPYmplY3QuYXNzaWduKHRoaXMuc3dpcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZyk7XG5cbiAgICB0aGlzLnN3aXBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzbGlkZVRvKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnN3aXBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN3aXBlci5zbGlkZVRvKGluZGV4KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zbGlkZXM/LmZpcnN0Q2hhbmdlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5zd2lwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5zd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q29uZmlnKCk6IEtpcmJ5U3dpcGVyT3B0aW9ucyB7XG4gICAgY29uc3QgZGVza3RvcEJyZWFrcG9pbnQgPSBwYXJzZUludChEZXNpZ25Ub2tlbkhlbHBlci5icmVha3BvaW50cy5tZWRpdW0pOyAvLyBUT0RPIFJLOiBTdWJ0cmFjdCAxIHdoZW4gYnJlYWtwb2ludCBtZWRpdW0gaXMgZml4ZWQgdG8gNzY5cHguLi5cbiAgICBjb25zdCBzcGFjZUJldHdlZW4gPSBwYXJzZUludChEZXNpZ25Ub2tlbkhlbHBlci5zaXplKCdzJykpO1xuICAgIGNvbnN0IHRyYW5zaXRpb25EdXJhdGlvbiA9IHBhcnNlSW50KERlc2lnblRva2VuSGVscGVyLnRyYW5zaXRpb25EdXJhdGlvbignbG9uZycpKTtcbiAgICByZXR1cm4ge1xuICAgICAgY2VudGVyZWRTbGlkZXM6IHRydWUsXG4gICAgICBjZW50ZXJlZFNsaWRlc0JvdW5kczogdHJ1ZSxcbiAgICAgIHNsaWRlc1BlclZpZXc6IDEuMixcbiAgICAgIHNsaWRlc1Blckdyb3VwOiAxLFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgW2Rlc2t0b3BCcmVha3BvaW50XToge1xuICAgICAgICAgIGNlbnRlcmVkU2xpZGVzOiBmYWxzZSxcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAzLFxuICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiAzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNwYWNlQmV0d2Vlbjogc3BhY2VCZXR3ZWVuLFxuICAgICAgc3BlZWQ6IHRyYW5zaXRpb25EdXJhdGlvbixcbiAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgZWw6IGAuJHt0aGlzLl9wYWdpbmF0aW9uSWR9YCxcbiAgICAgICAgdHlwZTogJ2J1bGxldHMnLFxuICAgICAgfSxcbiAgICAgIG5hdmlnYXRpb246IHtcbiAgICAgICAgbmV4dEVsOiBgLiR7dGhpcy5fbmV4dEJ1dHRvbklkfWAsXG4gICAgICAgIHByZXZFbDogYC4ke3RoaXMuX3ByZXZCdXR0b25JZH1gLFxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIHNsaWRlQ2hhbmdlOiAoc3dpcGVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFNsaWRlLmVtaXQoe1xuICAgICAgICAgICAgc2xpZGU6IHRoaXMuc2xpZGVzW3N3aXBlci5hY3RpdmVJbmRleF0sXG4gICAgICAgICAgICBpbmRleDogc3dpcGVyLmFjdGl2ZUluZGV4LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc2xpZGVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBzbGlkZTogdGhpcy5zbGlkZXNbc3dpcGVyLmFjdGl2ZUluZGV4XSxcbiAgICAgICAgICAgIGluZGV4OiBzd2lwZXIuYWN0aXZlSW5kZXgsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldE5vQ29udHJvbHNDb25maWcoKTogS2lyYnlTd2lwZXJPcHRpb25zIHtcbiAgICByZXR1cm4geyAuLi50aGlzLmdldERlZmF1bHRDb25maWcoKSwgcGFnaW5hdGlvbjogZmFsc2UsIG5hdmlnYXRpb246IGZhbHNlIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuYXZpZ2F0aW9uXCIgKm5nSWY9XCJzaG93TmF2aWdhdGlvbiB8fCB0aXRsZSAhPT0gdW5kZWZpbmVkXCI+XG4gIDxzcGFuIGNsYXNzPVwia2lyYnktdGV4dC1tZWRpdW1cIj57eyB0aXRsZSB9fTwvc3Bhbj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJuYXZpZ2F0aW9uLWlubmVyXCJcbiAgICAqbmdJZj1cIlxuICAgICAgc2hvd05hdmlnYXRpb24gJiZcbiAgICAgICghc2xpZGVzT3B0aW9ucyB8fFxuICAgICAgICBzbGlkZXNPcHRpb25zPy5uYXZpZ2F0aW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgc2xpZGVzT3B0aW9ucz8ucGFnaW5hdGlvbiA9PT0gdW5kZWZpbmVkKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBhZ2luYXRpb25cIlxuICAgICAgW25nQ2xhc3NdPVwiX3BhZ2luYXRpb25JZFwiXG4gICAgICAqbmdJZj1cIiFzbGlkZXNPcHRpb25zIHx8IHNsaWRlc09wdGlvbnM/LnBhZ2luYXRpb24gPT09IHVuZGVmaW5lZFwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYnV0dG9uc1wiXG4gICAgICAqbmdJZj1cIiFfaXNUb3VjaCAmJiAoIXNsaWRlc09wdGlvbnMgfHwgc2xpZGVzT3B0aW9ucz8ubmF2aWdhdGlvbiA9PT0gdW5kZWZpbmVkKVwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBraXJieS1idXR0b25cbiAgICAgICAgYXR0ZW50aW9uTGV2ZWw9XCIzXCJcbiAgICAgICAgY2xhc3M9XCJuYXYtcHJldiBzd2lwZXItYnV0dG9uLXByZXZcIlxuICAgICAgICBbbmdDbGFzc109XCJfcHJldkJ1dHRvbklkXCJcbiAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgID5cbiAgICAgICAgPGtpcmJ5LWljb24gbmFtZT1cImFycm93LWJhY2tcIj48L2tpcmJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBraXJieS1idXR0b25cbiAgICAgICAgYXR0ZW50aW9uTGV2ZWw9XCIzXCJcbiAgICAgICAgY2xhc3M9XCJuYXYtbmV4dCBzd2lwZXItYnV0dG9uLW5leHRcIlxuICAgICAgICBbbmdDbGFzc109XCJfbmV4dEJ1dHRvbklkXCJcbiAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgID5cbiAgICAgICAgPGtpcmJ5LWljb24gbmFtZT1cImFycm93LW1vcmVcIj48L2tpcmJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW2tpcmJ5LWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gV2UgbmVlZCB0byBwcmV2ZW50IFN3aXBlciBmcm9tIGluaXRpYWxpemF0aW9uIGJ5IHNldHRpbmcgaW5pdD1cImZhbHNlXCIgdW50aWwgd2UgcGFzcyBhbGwgcmVxdWlyZWQgcGFyYW1ldGVyc1xuICAgICBodHRwczovL3N3aXBlcmpzLmNvbS9lbGVtZW50I3BhcmFtZXRlcnMtYXMtcHJvcHMgLS0+XG48c3dpcGVyLWNvbnRhaW5lciBpbml0PVwiZmFsc2VcIiAjc3dpcGVyQ29udGFpbmVyPlxuICA8c3dpcGVyLXNsaWRlICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNsaWRlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzbGlkZSwgaW5kZXg6IGkgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L3N3aXBlci1zbGlkZT5cbjwvc3dpcGVyLWNvbnRhaW5lcj5cbiJdfQ==
@@ -8,7 +8,7 @@ export class MockDropdownComponent {
8
8
  }
9
9
  }
10
10
  /** @nocollapse */ MockDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MockDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- /** @nocollapse */ MockDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MockDropdownComponent, selector: "kirby-dropdown", inputs: { items: "items", selectedIndex: "selectedIndex", focusedIndex: "focusedIndex", itemTextProperty: "itemTextProperty", placeholder: "placeholder", popout: "popout", attentionLevel: "attentionLevel", expand: "expand", disabled: "disabled", hasError: "hasError", size: "size", tabindex: "tabindex", usePopover: "usePopover", _isMoreMenu: "_isMoreMenu" }, outputs: { change: "change" }, providers: [
11
+ /** @nocollapse */ MockDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MockDropdownComponent, selector: "kirby-dropdown", inputs: { items: "items", selectedIndex: "selectedIndex", focusedIndex: "focusedIndex", itemTextProperty: "itemTextProperty", placeholder: "placeholder", popout: "popout", attentionLevel: "attentionLevel", expand: "expand", disabled: "disabled", hasError: "hasError", size: "size", tabindex: "tabindex", usePopover: "usePopover" }, outputs: { change: "change" }, providers: [
12
12
  {
13
13
  provide: DropdownComponent,
14
14
  useExisting: forwardRef((() => MockDropdownComponent)),
@@ -52,9 +52,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
52
52
  type: Input
53
53
  }], usePopover: [{
54
54
  type: Input
55
- }], _isMoreMenu: [{
56
- type: Input
57
55
  }], change: [{
58
56
  type: Output
59
57
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS90ZXN0aW5nLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL21vY2suZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUd2RSw2REFBNkQ7QUFXN0QsTUFBTSxPQUFPLHFCQUFxQjtJQVZsQztRQXlCWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7S0FDckQ7O3FJQWhCWSxxQkFBcUI7eUhBQXJCLHFCQUFxQixnYkFQckI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBQztTQUNyRDtLQUNGLDBCQU5TLDJCQUEyQjsyRkFRMUIscUJBQXFCO2tCQVZqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxzQkFBc0IsRUFBQzt5QkFDckQ7cUJBQ0Y7aUJBQ0Y7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vZHJvcGRvd24nO1xuaW1wb3J0IHsgSG9yaXpvbnRhbERpcmVjdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vcG9wb3Zlcic7XG5cbi8vICNyZWdpb24gQVVUTy1HRU5FUkFURUQgLSBQTEVBU0UgRE9OJ1QgRURJVCBDT05URU5UIFdJVEhJTiFcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRHJvcGRvd25Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNb2NrRHJvcGRvd25Db21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tEcm9wZG93bkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW1zOiBzdHJpbmdbXSB8IGFueVtdO1xuICBASW5wdXQoKSBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGZvY3VzZWRJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBpdGVtVGV4dFByb3BlcnR5OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBvcG91dDogSG9yaXpvbnRhbERpcmVjdGlvbiB8IGAke0hvcml6b250YWxEaXJlY3Rpb259YDtcbiAgQElucHV0KCkgYXR0ZW50aW9uTGV2ZWw6ICcxJyB8ICcyJyB8ICczJztcbiAgQElucHV0KCkgZXhwYW5kPzogJ2Jsb2NrJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhhc0Vycm9yOiBib29sZWFuO1xuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJztcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgdXNlUG9wb3ZlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgX2lzTW9yZU1lbnU6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IGFueT4oKTtcbn1cblxuLy8gI2VuZHJlZ2lvblxuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS90ZXN0aW5nLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL21vY2suZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUd2RSw2REFBNkQ7QUFXN0QsTUFBTSxPQUFPLHFCQUFxQjtJQVZsQztRQXdCWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7S0FDckQ7O3FJQWZZLHFCQUFxQjt5SEFBckIscUJBQXFCLG9aQVByQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFDO1NBQ3JEO0tBQ0YsMEJBTlMsMkJBQTJCOzJGQVExQixxQkFBcUI7a0JBVmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHNCQUFzQixFQUFDO3lCQUNyRDtxQkFDRjtpQkFDRjs4QkFFVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vZHJvcGRvd24nO1xuaW1wb3J0IHsgSG9yaXpvbnRhbERpcmVjdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vcG9wb3Zlcic7XG5cbi8vICNyZWdpb24gQVVUTy1HRU5FUkFURUQgLSBQTEVBU0UgRE9OJ1QgRURJVCBDT05URU5UIFdJVEhJTiFcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRHJvcGRvd25Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNb2NrRHJvcGRvd25Db21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tEcm9wZG93bkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW1zOiBzdHJpbmdbXSB8IGFueVtdO1xuICBASW5wdXQoKSBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGZvY3VzZWRJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBpdGVtVGV4dFByb3BlcnR5OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBvcG91dDogSG9yaXpvbnRhbERpcmVjdGlvbiB8IGAke0hvcml6b250YWxEaXJlY3Rpb259YDtcbiAgQElucHV0KCkgYXR0ZW50aW9uTGV2ZWw6ICcxJyB8ICcyJyB8ICczJztcbiAgQElucHV0KCkgZXhwYW5kPzogJ2Jsb2NrJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhhc0Vycm9yOiBib29sZWFuO1xuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJztcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgdXNlUG9wb3ZlcjogYm9vbGVhbjtcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PigpO1xufVxuXG4vLyAjZW5kcmVnaW9uXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbGlzdGVuZXItZGlzcG9zZS1mbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3R5cGVzL3NyYy9ldmVudC1saXN0ZW5lci1kaXNwb3NlLWZuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gKCkgPT4gdm9pZDtcbiJdfQ==
@@ -1,2 +1,3 @@
1
1
  export * from './window-ref';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3R5cGVzL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi93aW5kb3ctcmVmJztcbiJdfQ==
2
+ export * from './event-listener-dispose-fn';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3R5cGVzL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dpbmRvdy1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudC1saXN0ZW5lci1kaXNwb3NlLWZuJztcbiJdfQ==
@@ -1,9 +1,11 @@
1
+ import * as i1 from '@angular/common';
1
2
  import { CommonModule } from '@angular/common';
2
3
  import * as i0 from '@angular/core';
3
4
  import { InjectionToken, ElementRef, Component, ChangeDetectionStrategy, Optional, Inject, Input, ContentChildren, ViewChild, HostBinding } from '@angular/core';
4
5
  import { ButtonComponent } from '@kirbydesign/designsystem/button';
5
- import * as i1 from '@kirbydesign/designsystem/dropdown';
6
- import { DropdownComponent, DropdownModule } from '@kirbydesign/designsystem/dropdown';
6
+ import * as i2 from '@kirbydesign/designsystem/item';
7
+ import { ItemModule } from '@kirbydesign/designsystem/item';
8
+ import { MenuComponent } from '@kirbydesign/designsystem/menu';
7
9
 
8
10
  const ACTIONGROUP_CONFIG = new InjectionToken('action-group.config');
9
11
  class ActionGroupComponent {
@@ -41,8 +43,6 @@ class ActionGroupComponent {
41
43
  }
42
44
  }
43
45
  onActionSelect(action) {
44
- // Dropdown should not persist selected item, we want it to be re-selectable
45
- this.dropdown.selectedIndex = -1;
46
46
  const event = new PointerEvent('click', {
47
47
  bubbles: true,
48
48
  cancelable: true,
@@ -71,26 +71,26 @@ class ActionGroupComponent {
71
71
  if (this.buttonElements.length <= this.collapseThreshold)
72
72
  return;
73
73
  this.moveButtons();
74
- this.populateDropdown();
75
- this.toggleDropdown();
74
+ this.populateMenu();
75
+ this.toggleMenu();
76
76
  }
77
77
  moveButtons() {
78
78
  const buttonsToShow = [...this.buttonElements]
79
79
  .slice(0, this.visibleActions)
80
80
  .filter((btn) => btn.nativeElement.parentElement === this.hiddenLayer.nativeElement);
81
81
  buttonsToShow.forEach((button) => {
82
- this.renderer.insertBefore(this.elementRef.nativeElement, button.nativeElement, this.dropdownElement.nativeElement);
82
+ this.renderer.insertBefore(this.elementRef.nativeElement, button.nativeElement, this.menuElement.nativeElement);
83
83
  });
84
84
  const buttonsToHide = [...this.buttonElements].slice(this.visibleActions);
85
85
  buttonsToHide.forEach((button) => {
86
86
  this.renderer.appendChild(this.hiddenLayer.nativeElement, button.nativeElement);
87
87
  });
88
88
  }
89
- toggleDropdown() {
89
+ toggleMenu() {
90
90
  const hasHiddenButtons = this.hiddenLayer.nativeElement.childElementCount > 0;
91
91
  this._isCollapsed = hasHiddenButtons;
92
92
  }
93
- populateDropdown() {
93
+ populateMenu() {
94
94
  const hiddenButtons = Array.from(this.hiddenLayer.nativeElement.children);
95
95
  this._collapsedActions = hiddenButtons.map((button) => ({
96
96
  button,
@@ -99,10 +99,10 @@ class ActionGroupComponent {
99
99
  }
100
100
  }
101
101
  /** @nocollapse */ ActionGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ActionGroupComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ACTIONGROUP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
102
- /** @nocollapse */ ActionGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ActionGroupComponent, isStandalone: true, selector: "kirby-action-group", inputs: { visibleActions: "visibleActions", align: "align" }, host: { properties: { "class.is-collapsed": "this._isCollapsed", "class": "this._align" } }, queries: [{ propertyName: "buttonElements", predicate: ButtonComponent, read: ElementRef }, { propertyName: "buttons", predicate: ButtonComponent }], viewQueries: [{ propertyName: "hiddenLayer", first: true, predicate: ["hiddenLayer"], descendants: true, read: ElementRef, static: true }, { propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true }, { propertyName: "dropdownElement", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}kirby-dropdown{margin:4px;display:none;z-index:1}:host(.is-collapsed) kirby-dropdown{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i1.DropdownComponent, selector: "kirby-dropdown", inputs: ["items", "selectedIndex", "focusedIndex", "itemTextProperty", "placeholder", "popout", "attentionLevel", "expand", "disabled", "hasError", "size", "tabindex", "usePopover", "_isMoreMenu"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
+ /** @nocollapse */ ActionGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ActionGroupComponent, isStandalone: true, selector: "kirby-action-group", inputs: { visibleActions: "visibleActions", align: "align" }, host: { properties: { "class.is-collapsed": "this._isCollapsed", "class": "this._align" } }, queries: [{ propertyName: "buttonElements", predicate: ButtonComponent, read: ElementRef }, { propertyName: "buttons", predicate: ButtonComponent }], viewQueries: [{ propertyName: "hiddenLayer", first: true, predicate: ["hiddenLayer"], descendants: true, read: ElementRef, static: true }, { propertyName: "menuElement", first: true, predicate: MenuComponent, descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-menu [placement]=\"'bottom-end'\">\n <kirby-item\n *ngFor=\"let action of _collapsedActions\"\n [selectable]=\"true\"\n (click)=\"onActionSelect(action)\"\n >\n {{ action.text }}\n </kirby-item>\n</kirby-menu>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}kirby-menu{display:none;z-index:1}:host(.is-collapsed) kirby-menu{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ItemModule }, { kind: "component", type: i2.ItemComponent, selector: "kirby-item", inputs: ["disabled", "selected", "disclosure", "selectable", "reorderable", "size"] }, { kind: "component", type: MenuComponent, selector: "kirby-menu", inputs: ["isDisabled", "buttonSize", "placement", "attentionLevel", "triggers", "DOMPortalOutlet", "portalOutletConfig", "autoPlacement", "closeOnSelect", "closeOnEscapeKey", "closeOnBackdrop", "shift", "minWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ActionGroupComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ selector: 'kirby-action-group', standalone: true, imports: [CommonModule, ButtonComponent, DropdownModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}kirby-dropdown{margin:4px;display:none;z-index:1}:host(.is-collapsed) kirby-dropdown{display:inline-block}\n"] }]
105
+ args: [{ selector: 'kirby-action-group', standalone: true, imports: [CommonModule, ButtonComponent, ItemModule, MenuComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-menu [placement]=\"'bottom-end'\">\n <kirby-item\n *ngFor=\"let action of _collapsedActions\"\n [selectable]=\"true\"\n (click)=\"onActionSelect(action)\"\n >\n {{ action.text }}\n </kirby-item>\n</kirby-menu>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n", styles: [":host{display:flex;position:relative}:host(.align-end){justify-content:flex-end}:host(.align-end) .hidden-layer{order:-1}.hidden-layer{display:none;visibility:hidden}kirby-menu{display:none;z-index:1}:host(.is-collapsed) kirby-menu{display:inline-block}\n"] }]
106
106
  }], ctorParameters: function () {
107
107
  return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
108
108
  type: Optional
@@ -123,12 +123,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
123
123
  }], hiddenLayer: [{
124
124
  type: ViewChild,
125
125
  args: ['hiddenLayer', { read: ElementRef, static: true }]
126
- }], dropdown: [{
126
+ }], menuElement: [{
127
127
  type: ViewChild,
128
- args: [DropdownComponent]
129
- }], dropdownElement: [{
130
- type: ViewChild,
131
- args: [DropdownComponent, { read: ElementRef, static: true }]
128
+ args: [MenuComponent, { read: ElementRef, static: true }]
132
129
  }], _isCollapsed: [{
133
130
  type: HostBinding,
134
131
  args: ['class.is-collapsed']
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-action-group.mjs","sources":["../../../../libs/designsystem/action-group/src/action-group.component.ts","../../../../libs/designsystem/action-group/src/action-group.component.html","../../../../libs/designsystem/action-group/src/kirbydesign-designsystem-action-group.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n Optional,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { DropdownComponent, DropdownModule } from '@kirbydesign/designsystem/dropdown';\n\nexport type ActionGroupConfig = {\n isCondensed?: boolean;\n defaultVisibleActions?: number;\n maxVisibleActions?: number;\n};\nexport const ACTIONGROUP_CONFIG = new InjectionToken<ActionGroupConfig>('action-group.config');\n\ntype CollapsedAction = { button: HTMLButtonElement; text: string };\n\n@Component({\n selector: 'kirby-action-group',\n standalone: true,\n imports: [CommonModule, ButtonComponent, DropdownModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './action-group.component.html',\n styleUrls: ['./action-group.component.scss'],\n})\nexport class ActionGroupComponent implements AfterContentInit, OnChanges {\n @Input() visibleActions?: number;\n\n @Input()\n align: 'start' | 'end' = 'end';\n\n @ContentChildren(ButtonComponent, { read: ElementRef }) private buttonElements?: QueryList<\n ElementRef<HTMLButtonElement>\n >;\n @ContentChildren(ButtonComponent) private buttons?: QueryList<ButtonComponent>;\n @ViewChild('hiddenLayer', { read: ElementRef, static: true })\n private hiddenLayer!: ElementRef<HTMLElement>;\n /*\n * TEMPORARY MORE-MENU\n * dropdown ViewChild is only used for temporary more-menu\n */\n @ViewChild(DropdownComponent) private dropdown!: DropdownComponent;\n @ViewChild(DropdownComponent, { read: ElementRef, static: true })\n private dropdownElement!: ElementRef<HTMLElement>;\n\n @HostBinding('class.is-collapsed')\n _isCollapsed: boolean;\n _collapsedActions: CollapsedAction[] = [];\n\n @HostBinding('class')\n get _align() {\n return 'align-' + this.align;\n }\n\n private collapseThreshold = 2;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @Optional() @Inject(ACTIONGROUP_CONFIG) private config: ActionGroupConfig\n ) {}\n\n ngAfterContentInit(): void {\n // Ensure we collapse according to visibleActions if lower than our default threshold (2).\n // I.e. if there are 2 buttons and visibleActions = 1 we'll collapse the 2nd button into the menu:\n if (this.visibleActions < this.collapseThreshold) {\n this.collapseThreshold = this.visibleActions;\n }\n\n this.initializeFromConfig();\n\n if (this.visibleActions !== undefined) {\n this.initializeCollapsing();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.visibleActions && !changes.visibleActions.firstChange) {\n const satifiesMaxVisibleActions =\n this.config?.maxVisibleActions === undefined ||\n this.config?.maxVisibleActions === null ||\n changes.visibleActions.currentValue <= this.config?.maxVisibleActions;\n if (satifiesMaxVisibleActions) {\n this.initializeCollapsing();\n }\n }\n }\n\n onActionSelect(action: CollapsedAction) {\n // Dropdown should not persist selected item, we want it to be re-selectable\n this.dropdown.selectedIndex = -1;\n\n const event = new PointerEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n\n action.button.dispatchEvent(event);\n }\n\n private initializeFromConfig() {\n if (!this.config) return;\n\n if (this.visibleActions === undefined && this.config.defaultVisibleActions !== undefined) {\n this.visibleActions = this.config.defaultVisibleActions;\n }\n\n if (this.config.maxVisibleActions !== undefined) {\n // Don't overwrite visibleActions value if configured lower than maxVisibleActions:\n if (!(this.visibleActions < this.config.maxVisibleActions)) {\n this.visibleActions = this.config.maxVisibleActions;\n }\n }\n\n if (this.config.isCondensed) {\n this.buttons?.forEach((button) => (button.showIconOnly = true));\n }\n }\n\n private initializeCollapsing() {\n if (this.buttonElements.length <= this.collapseThreshold) return;\n\n this.moveButtons();\n this.populateDropdown();\n this.toggleDropdown();\n }\n\n private moveButtons() {\n const buttonsToShow = [...this.buttonElements]\n .slice(0, this.visibleActions)\n .filter((btn) => btn.nativeElement.parentElement === this.hiddenLayer.nativeElement);\n buttonsToShow.forEach((button) => {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n button.nativeElement,\n this.dropdownElement.nativeElement\n );\n });\n\n const buttonsToHide = [...this.buttonElements].slice(this.visibleActions);\n buttonsToHide.forEach((button) => {\n this.renderer.appendChild(this.hiddenLayer.nativeElement, button.nativeElement);\n });\n }\n\n private toggleDropdown() {\n const hasHiddenButtons = this.hiddenLayer.nativeElement.childElementCount > 0;\n this._isCollapsed = hasHiddenButtons;\n }\n\n private populateDropdown() {\n const hiddenButtons = Array.from(\n this.hiddenLayer.nativeElement.children\n ) as HTMLButtonElement[];\n\n this._collapsedActions = hiddenButtons.map((button) => ({\n button,\n text: button.textContent.trim(),\n }));\n }\n}\n","<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-dropdown\n [items]=\"_collapsedActions\"\n [usePopover]=\"true\"\n [_isMoreMenu]=\"true\"\n popout=\"left\"\n (change)=\"onActionSelect($event)\"\n></kirby-dropdown>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;MA0Ba,kBAAkB,GAAG,IAAI,cAAc,CAAoB,qBAAqB,EAAE;MAYlF,oBAAoB,CAAA;AA+B/B,IAAA,WAAA,CACU,UAAmC,EACnC,QAAmB,EACqB,MAAyB,EAAA;AAFjE,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;AACnC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACqB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;AA9B3E,QAAA,IAAK,CAAA,KAAA,GAAoB,KAAK,CAAC;AAkB/B,QAAA,IAAiB,CAAA,iBAAA,GAAsB,EAAE,CAAC;AAOlC,QAAA,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC;KAM1B;AAXJ,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;KAC9B;IAUD,kBAAkB,GAAA;;;AAGhB,QAAA,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAChD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;AAC9C,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;;QAChC,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE;YACjE,MAAM,yBAAyB,GAC7B,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,MAAK,SAAS;AAC5C,gBAAA,CAAA,MAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,MAAK,IAAI;AACvC,gBAAA,OAAO,CAAC,cAAc,CAAC,YAAY,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,CAAA,CAAC;AACxE,YAAA,IAAI,yBAAyB,EAAE;gBAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,aAAA;AACF,SAAA;KACF;AAED,IAAA,cAAc,CAAC,MAAuB,EAAA;;AAEpC,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;AAEjC,QAAA,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE;AACtC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACpC;IAEO,oBAAoB,GAAA;;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;AAEzB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,KAAK,SAAS,EAAE;YACxF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;AACzD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;;AAE/C,YAAA,IAAI,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;gBAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACrD,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;AACjE,SAAA;KACF;IAEO,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,WAAW,GAAA;AACjB,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC3C,aAAA,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;AAC7B,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACvF,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC/B,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,MAAM,CAAC,aAAa,EACpB,IAAI,CAAC,eAAe,CAAC,aAAa,CACnC,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1E,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;AAClF,SAAC,CAAC,CAAC;KACJ;IAEO,cAAc,GAAA;QACpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;KACtC;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CACjB,CAAC;AAEzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;YACtD,MAAM;AACN,YAAA,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;AAChC,SAAA,CAAC,CAAC,CAAC;KACL;;AAvIU,mBAAA,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,qEAkCT,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlC7B,mBAAA,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wQAMd,eAAe,EAAA,IAAA,EAAU,UAAU,EAGnC,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAe,oHACE,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMjC,iBAAiB,EACjB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iBAAiB,2BAAU,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDlD,qSAWA,EDsBY,MAAA,EAAA,CAAA,oRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAmB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAK5C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAClB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC,EACvC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qSAAA,EAAA,MAAA,EAAA,CAAA,oRAAA,CAAA,EAAA,CAAA;;;8BAsC5C,QAAQ;;8BAAI,MAAM;+BAAC,kBAAkB,CAAA;;yBAjC/B,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAGN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAG0D,cAAc,EAAA,CAAA;sBAA7E,eAAe;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAGZ,OAAO,EAAA,CAAA;sBAAhD,eAAe;uBAAC,eAAe,CAAA;gBAExB,WAAW,EAAA,CAAA;sBADlB,SAAS;uBAAC,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAMtB,QAAQ,EAAA,CAAA;sBAA7C,SAAS;uBAAC,iBAAiB,CAAA;gBAEpB,eAAe,EAAA,CAAA;sBADtB,SAAS;uBAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIhE,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,oBAAoB,CAAA;gBAK7B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,OAAO,CAAA;;;AE9DtB;;AAEG;;;;"}
1
+ {"version":3,"file":"kirbydesign-designsystem-action-group.mjs","sources":["../../../../libs/designsystem/action-group/src/action-group.component.ts","../../../../libs/designsystem/action-group/src/action-group.component.html","../../../../libs/designsystem/action-group/src/kirbydesign-designsystem-action-group.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n Optional,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { ItemModule } from '@kirbydesign/designsystem/item';\nimport { MenuComponent } from '@kirbydesign/designsystem/menu';\n\nexport type ActionGroupConfig = {\n isCondensed?: boolean;\n defaultVisibleActions?: number;\n maxVisibleActions?: number;\n};\nexport const ACTIONGROUP_CONFIG = new InjectionToken<ActionGroupConfig>('action-group.config');\n\ntype CollapsedAction = { button: HTMLButtonElement; text: string };\n\n@Component({\n selector: 'kirby-action-group',\n standalone: true,\n imports: [CommonModule, ButtonComponent, ItemModule, MenuComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './action-group.component.html',\n styleUrls: ['./action-group.component.scss'],\n})\nexport class ActionGroupComponent implements AfterContentInit, OnChanges {\n @Input() visibleActions?: number;\n\n @Input()\n align: 'start' | 'end' = 'end';\n\n @ContentChildren(ButtonComponent, { read: ElementRef }) private buttonElements?: QueryList<\n ElementRef<HTMLButtonElement>\n >;\n @ContentChildren(ButtonComponent) private buttons?: QueryList<ButtonComponent>;\n @ViewChild('hiddenLayer', { read: ElementRef, static: true })\n private hiddenLayer!: ElementRef<HTMLElement>;\n\n @ViewChild(MenuComponent, { read: ElementRef, static: true })\n private menuElement!: ElementRef<HTMLElement>;\n\n @HostBinding('class.is-collapsed')\n _isCollapsed: boolean;\n _collapsedActions: CollapsedAction[] = [];\n\n @HostBinding('class')\n get _align() {\n return 'align-' + this.align;\n }\n\n private collapseThreshold = 2;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @Optional() @Inject(ACTIONGROUP_CONFIG) private config: ActionGroupConfig\n ) {}\n\n ngAfterContentInit(): void {\n // Ensure we collapse according to visibleActions if lower than our default threshold (2).\n // I.e. if there are 2 buttons and visibleActions = 1 we'll collapse the 2nd button into the menu:\n if (this.visibleActions < this.collapseThreshold) {\n this.collapseThreshold = this.visibleActions;\n }\n\n this.initializeFromConfig();\n\n if (this.visibleActions !== undefined) {\n this.initializeCollapsing();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.visibleActions && !changes.visibleActions.firstChange) {\n const satifiesMaxVisibleActions =\n this.config?.maxVisibleActions === undefined ||\n this.config?.maxVisibleActions === null ||\n changes.visibleActions.currentValue <= this.config?.maxVisibleActions;\n if (satifiesMaxVisibleActions) {\n this.initializeCollapsing();\n }\n }\n }\n\n onActionSelect(action: CollapsedAction) {\n const event = new PointerEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n\n action.button.dispatchEvent(event);\n }\n\n private initializeFromConfig() {\n if (!this.config) return;\n\n if (this.visibleActions === undefined && this.config.defaultVisibleActions !== undefined) {\n this.visibleActions = this.config.defaultVisibleActions;\n }\n\n if (this.config.maxVisibleActions !== undefined) {\n // Don't overwrite visibleActions value if configured lower than maxVisibleActions:\n if (!(this.visibleActions < this.config.maxVisibleActions)) {\n this.visibleActions = this.config.maxVisibleActions;\n }\n }\n\n if (this.config.isCondensed) {\n this.buttons?.forEach((button) => (button.showIconOnly = true));\n }\n }\n\n private initializeCollapsing() {\n if (this.buttonElements.length <= this.collapseThreshold) return;\n\n this.moveButtons();\n this.populateMenu();\n this.toggleMenu();\n }\n\n private moveButtons() {\n const buttonsToShow = [...this.buttonElements]\n .slice(0, this.visibleActions)\n .filter((btn) => btn.nativeElement.parentElement === this.hiddenLayer.nativeElement);\n buttonsToShow.forEach((button) => {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n button.nativeElement,\n this.menuElement.nativeElement\n );\n });\n\n const buttonsToHide = [...this.buttonElements].slice(this.visibleActions);\n buttonsToHide.forEach((button) => {\n this.renderer.appendChild(this.hiddenLayer.nativeElement, button.nativeElement);\n });\n }\n\n private toggleMenu() {\n const hasHiddenButtons = this.hiddenLayer.nativeElement.childElementCount > 0;\n this._isCollapsed = hasHiddenButtons;\n }\n\n private populateMenu() {\n const hiddenButtons = Array.from(\n this.hiddenLayer.nativeElement.children\n ) as HTMLButtonElement[];\n\n this._collapsedActions = hiddenButtons.map((button) => ({\n button,\n text: button.textContent.trim(),\n }));\n }\n}\n","<ng-content select=\"button[kirby-button]\"></ng-content>\n\n<kirby-menu [placement]=\"'bottom-end'\">\n <kirby-item\n *ngFor=\"let action of _collapsedActions\"\n [selectable]=\"true\"\n (click)=\"onActionSelect(action)\"\n >\n {{ action.text }}\n </kirby-item>\n</kirby-menu>\n\n<div class=\"hidden-layer\" #hiddenLayer></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}