@kirbydesign/designsystem 9.0.0 → 9.1.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 (82) hide show
  1. package/badge/badge.component.d.ts +2 -1
  2. package/card/card-header/card-header.component.d.ts +1 -0
  3. package/checkbox/checkbox.component.d.ts +35 -1
  4. package/esm2022/avatar/avatar.component.mjs +3 -4
  5. package/esm2022/badge/badge.component.mjs +6 -5
  6. package/esm2022/card/card-header/card-header.component.mjs +9 -6
  7. package/esm2022/checkbox/checkbox.component.mjs +66 -4
  8. package/esm2022/dropdown/dropdown.component.mjs +2 -2
  9. package/esm2022/fab-sheet/fab-sheet.component.mjs +3 -3
  10. package/esm2022/flag/flag.component.mjs +3 -3
  11. package/esm2022/form-field/directives/date/date-input.directive.mjs +9 -3
  12. package/esm2022/form-field/form-field.component.mjs +18 -12
  13. package/esm2022/icon/kirby-icon-settings.mjs +5 -1
  14. package/esm2022/item/item.component.mjs +2 -2
  15. package/esm2022/item/label/label.component.mjs +2 -2
  16. package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +3 -3
  17. package/esm2022/list/list-item/list-item.component.mjs +2 -2
  18. package/esm2022/list/list.component.mjs +2 -2
  19. package/esm2022/menu/menu.component.mjs +3 -3
  20. package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +3 -3
  21. package/esm2022/modal/modal/footer/modal-footer.component.mjs +11 -6
  22. package/esm2022/modal/modal/services/modal.helper.mjs +10 -1
  23. package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +22 -13
  24. package/esm2022/modal/v2/footer/footer.component.mjs +2 -2
  25. package/esm2022/progress-circle/progress-circle-ring.component.mjs +3 -3
  26. package/esm2022/radio/radio.component.mjs +2 -2
  27. package/esm2022/shared/floating/floating.directive.mjs +1 -1
  28. package/esm2022/slide/slides.component.mjs +2 -2
  29. package/esm2022/tab-navigation/tab-navigation/tab-navigation.component.mjs +2 -2
  30. package/esm2022/tabs/tab-button/tab-button.component.mjs +2 -2
  31. package/esm2022/toggle/toggle.component.mjs +74 -8
  32. package/fesm2022/kirbydesign-designsystem-avatar.mjs +2 -3
  33. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  34. package/fesm2022/kirbydesign-designsystem-badge.mjs +5 -4
  35. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  36. package/fesm2022/kirbydesign-designsystem-card.mjs +8 -5
  37. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  38. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +65 -3
  39. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  40. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +2 -2
  41. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +2 -2
  42. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
  43. package/fesm2022/kirbydesign-designsystem-flag.mjs +2 -2
  44. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  45. package/fesm2022/kirbydesign-designsystem-form-field.mjs +25 -13
  46. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  47. package/fesm2022/kirbydesign-designsystem-icon.mjs +4 -0
  48. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  49. package/fesm2022/kirbydesign-designsystem-item.mjs +4 -4
  50. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  51. package/fesm2022/kirbydesign-designsystem-list.mjs +4 -4
  52. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  53. package/fesm2022/kirbydesign-designsystem-menu.mjs +2 -2
  54. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  55. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs +2 -2
  56. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs.map +1 -1
  57. package/fesm2022/kirbydesign-designsystem-modal.mjs +42 -18
  58. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  59. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +2 -2
  60. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
  61. package/fesm2022/kirbydesign-designsystem-radio.mjs +2 -2
  62. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  63. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  64. package/fesm2022/kirbydesign-designsystem-slide.mjs +2 -2
  65. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  66. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +2 -2
  67. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  68. package/fesm2022/kirbydesign-designsystem-tabs.mjs +2 -2
  69. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  70. package/fesm2022/kirbydesign-designsystem-toggle.mjs +73 -7
  71. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  72. package/fesm2022/kirbydesign-designsystem.mjs +2 -2
  73. package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
  74. package/icons/svg/agreement.svg +2 -0
  75. package/icons/svg/budget.svg +2 -0
  76. package/icons/svg/dot.svg +3 -0
  77. package/icons/svg/history.svg +2 -0
  78. package/modal/modal/footer/modal-footer.component.d.ts +3 -1
  79. package/modal/modal-wrapper/modal-wrapper.component.d.ts +2 -2
  80. package/package.json +4 -4
  81. package/shared/floating/floating.directive.d.ts +1 -2
  82. package/toggle/toggle.component.d.ts +38 -2
@@ -375,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
375
375
  type: HostListener,
376
376
  args: ['document:keydown.escape', ['$event']]
377
377
  }] } });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2hhcmVkL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixlQUFlLEVBQ2YsSUFBSSxFQUNKLE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBSTFFLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsbURBQVEsQ0FBQTtJQUNSLHFEQUFTLENBQUE7SUFDVCx1REFBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gsMkJBQVMsQ0FBQTtJQUNULGlDQUFlLENBQUE7SUFDZiwrQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBY0Q7Ozs7Ozs7R0FPRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7O1NBRUs7SUFDTCxJQUFvQixTQUFTLENBQUMsR0FBd0M7UUFDcEUsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FB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QUFLO2dCQWVjLGVBQWU7c0JBQWxDLEtBQUs7Z0JBY2Msa0JBQWtCO3NCQUFyQyxLQUFLO2dCQWVVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFNVSxLQUFLO3NCQUFwQixLQUFLO2dCQUtVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBS1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFLVyxjQUFjO3NCQUE5QixNQUFNO2dCQUdBLGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYXV0b1BsYWNlbWVudCxcbiAgYXV0b1VwZGF0ZSxcbiAgY29tcHV0ZVBvc2l0aW9uLFxuICBmbGlwLFxuICBvZmZzZXQsXG4gIHNoaWZ0LFxuICBTdHJhdGVneSxcbn0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBDb21wdXRlUG9zaXRpb25Db25maWcsIE1pZGRsZXdhcmUsIFBsYWNlbWVudCB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlL3NyYy90eXBlcyc7XG5pbXBvcnQgeyBEZXNpZ25Ub2tlbkhlbHBlciB9IGZyb20gJ0BraXJieWRlc2lnbi9jb3JlJztcbmltcG9ydCB7IGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBvcnRhbERpcmVjdGl2ZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkL3BvcnRhbCc7XG5cbmV4cG9ydCB0eXBlIFRyaWdnZXJFdmVudCA9ICdob3ZlcicgfCAnY2xpY2snIHwgJ2ZvY3VzJztcblxuZXhwb3J0IGVudW0gRmxvYXRpbmdPZmZzZXQge1xuICBub25lID0gMCxcbiAgc21hbGwgPSA0LFxuICBtZWRpdW0gPSA4LFxufVxuXG5leHBvcnQgZW51bSBPdXRsZXRTZWxlY3RvciB7XG4gIHRhZyA9ICd0YWcnLFxuICBpZCA9ICdpZCcsXG4gIGNsYXNzID0gJ2NsYXNzJyxcbiAgbmFtZSA9ICduYW1lJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3J0YWxPdXRsZXRDb25maWcge1xuICBzZWxlY3RvcjogT3V0bGV0U2VsZWN0b3I7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBFdmVudE1ldGhvZHMge1xuICBldmVudDogc3RyaW5nO1xuICBtZXRob2Q6ICgpID0+IHZvaWQ7XG59XG5cbnR5cGUgRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogQHN1bW1hcnkgRmxvYXRpbmdEaXJlY3RpdmUgaXMgYSB1dGlsaXR5IHRoYXQgbGV0cyB5b3UgZGVjbGFyYXRpdmUgYW5jaG9yIFwicG9wdXBcIiBjb250YWluZXJzIHRvIGFub3RoZXIgZWxlbWVudC5cbiAqXG4gKiBVc2VzIGZsb2F0aW5nLXVpLCB3aXRoIHRoaXMgZGlyZWN0aXZlIHdyYXBzIHRoZSBmdW5jdGlvbmFsaXR5OiBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2dldHRpbmctc3RhcnRlZFxuICpcbiAqIFVzZXMgUG9ydGFsRGlyZWN0aXZlIHRvIGVuYWJsZSBmdW5jdGlvbmFsaXR5IGZvciBwb3J0YWxpbmcgdGhlIGZsb2F0ZWQgY29udGVudC4gVGhpcyBzaG91bGQgYmUgdXNlZCB3aGVuIG5lZWRlZFxuICogYW5kIG5vdCBhcyB0aGUgZGVmYXVsdCBvcHRpb24uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieUZsb2F0aW5nXScsXG4gIHByb3ZpZGVyczogW1BvcnRhbERpcmVjdGl2ZV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbUG9ydGFsRGlyZWN0aXZlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBob3N0IHNob3VsZCBhbmNob3IgdG9cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCByZWZlcmVuY2UocmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudGVhckRvd25SZWZlcmVuY2VFbGVtZW50RXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMuX3JlZmVyZW5jZSA9IHJlZjtcbiAgICB0aGlzLnNldHVwRXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMuYXV0b1VwZGF0ZVBvc2l0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlZmVyZW5jZSgpOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZmVyZW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgdGhlIGhvc3Qgc2hvdWxkIGJlIHBsYWNlZCByZWxhdGl2ZSB0byB0aGUgcmVmZXJlbmNlLiBDYW4gYmUgYWZmZWN0ZWQgYnkgbWlkZGxld2FyZVxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHBsYWNlbWVudChwbGFjZW1lbnQ6IFBsYWNlbWVudCkge1xuICAgIHRoaXMuX3BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGxhY2VtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cmF0ZWd5IGZvciBob3cgdGhlIGhvc3Qgc2hvdWxkIGJlIHBvc2l0aW9uZWQuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgc3RyYXRlZ3koc3RyYXRlZ3k6IFN0cmF0ZWd5KSB7XG4gICAgdGhpcy5fc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RyYXRlZ3koKTogU3RyYXRlZ3kge1xuICAgIHJldHVybiB0aGlzLl9zdHJhdGVneTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoZW4gdGhlIGhvc3Qgc2hvdWxkIGJlIGRpc3BsYXllZC9oaWRkZW4sIGkuZS4gY2xpY2sgd2lsbCBhdHRhY2ggYSBjbGljayBsaXN0ZW5lciB0byB0aGUgcmVmZXJlbmNlXG4gICAqIHRoYXQgbWFrZXMgdGhlIGhvc3QgdG9nZ2xlIGRpc3BsYXkuIFN1cHBvcnRzIG11bHRpcGxlIHRyaWdnZXJzLCB0byBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgZm9yIGNvbWJpbmF0aW9uc1xuICAgKiBsaWtlIGNsaWNrL2ZvY3VzLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHRyaWdnZXJzKGV2ZW50VHJpZ2dlcnM6IEFycmF5PFRyaWdnZXJFdmVudD4pIHtcbiAgICB0aGlzLl90cmlnZ2VycyA9IGV2ZW50VHJpZ2dlcnM7XG4gICAgdGhpcy50ZWFyRG93blJlZmVyZW5jZUVsZW1lbnRFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5zZXR1cEV2ZW50SGFuZGxpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJpZ2dlcnMoKTogQXJyYXk8VHJpZ2dlckV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MRWxlbWVudCBmb3Igd2hpY2ggdGhlIGNvbnRlbnQgc2hvdWxkIHBvcnRhbCBpbnRvLlxuICAgKiBQcm92aWRpbmcgYW4gb3V0bGV0IGVuYWJsZXMgdGhlIHBvcnRhbCwgaWYgbm90aGluZyBpcyBwcm92aWRlZCwgdGhlIHByb3ZpZGVkIHN0cmF0ZWd5IGlzIHVzZWQuXG4gICAqIFRoaXMgc2hvdWxkIGJlIHVzZWQgd2hlbiB0aGVyZSdzIGlzc3VlcyB3aXRoIHRoZSBzdGFja2luZyBjb250ZXh0LCBhbmQgbm90IGFzIGEgZGVmYXVsdCBvcHRpb24uXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgRE9NUG9ydGFsT3V0bGV0KG91dGxldDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9wcm92aWRlZFBvcnRhbE91dGxldCA9IG91dGxldDtcbiAgICB0aGlzLnBvcnRhbERpcmVjdGl2ZS5vdXRsZXQgPVxuICAgICAgdGhpcy5ET01Qb3J0YWxPdXRsZXQgPz8gdGhpcy5nZXRPdXRsZXRFbGVtZW50KHRoaXMucG9ydGFsT3V0bGV0Q29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRE9NUG9ydGFsT3V0bGV0KCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcHJvdmlkZWRQb3J0YWxPdXRsZXQ7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBob3cgdG8gYXV0b21hdGljYWxseSBmaW5kIGFuZCBhc3NpZ24gRE9NUG9ydGFsT3V0bGV0IGlmIG5vbmUgaXMgcHJvdmlkZWQgaW4gRE9NUG9ydGFsT3V0bGV0LlxuICAgKiBJZiBub3RoaW5nIGlzIHByb3ZpZGVkIGhlcmUgYW5kIGluIERPTVBvcnRhbE91dGxldCwgdGhlIHByb3ZpZGVkIHN0cmF0ZWd5IGlzIHVzZWRcbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBwb3J0YWxPdXRsZXRDb25maWcoY29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9wb3J0YWxPdXRsZXRDb25maWcgPSBjb25maWc7XG5cbiAgICBpZiAoIXRoaXMuRE9NUG9ydGFsT3V0bGV0KSB7XG4gICAgICB0aGlzLnBvcnRhbERpcmVjdGl2ZS5vdXRsZXQgPSB0aGlzLmdldE91dGxldEVsZW1lbnQoY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBvcnRhbE91dGxldENvbmZpZygpOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wb3J0YWxPdXRsZXRDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogUHJldmVudCBob3N0IGZyb20gYmVpbmcgdG9nZ2xlZCBpZiBzZXQuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERpc3BsYWNlcyB0aGUgZmxvYXRpbmcgZWxlbWVudCBmcm9tIGl0cyBjb3JlIHBsYWNlbWVudCBhbG9uZyB0aGUgc3BlY2lmaWVkIGF4ZXMuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBvZmZzZXQ6IEZsb2F0aW5nT2Zmc2V0ID0gRmxvYXRpbmdPZmZzZXQubm9uZTtcblxuICAvKipcbiAgICogTW92ZXMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlIHNwZWNpZmllZCBheGVzIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldy5cbiAgICogVGhpcyBkb2VzIG5vdCBhbHdheXMgd29yayBhcyBleHBlY3RlZCwgc28gZG9uJ3QgXCJqdXN0XCIgc2V0IGl0LlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2hpZnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQ2hvb3NlcyB0aGUgcGxhY2VtZW50IHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgYXV0b1BsYWNlbWVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGhpZGluZyB0aGUgaG9zdCBieSBldmVudHMuIFNlZSB2YXJpYWJsZSBuYW1lcy5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIGNsb3NlT25TZWxlY3Q6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkVzY2FwZUtleTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uQmFja2Ryb3A6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIHRoZSBvcHRpb24gdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgaG9zdCBjaGFuZ2VzIGRpc3BsYXkuIFRoZSBuZXcgZGlzcGxheSB2YWx1ZSBpcyBwcm92aWRlZC5cbiAgICogKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBkaXNwbGF5Q2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRXNjYXBlS2V5UHJlc3NlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZU9uRXNjYXBlS2V5KSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wbGFjZW1lbnQ6IFBsYWNlbWVudCA9ICdib3R0b20tc3RhcnQnO1xuXG4gIHByaXZhdGUgX3N0cmF0ZWd5OiBTdHJhdGVneSA9ICdhYnNvbHV0ZSc7XG5cbiAgcHJpdmF0ZSBfcHJvdmlkZWRQb3J0YWxPdXRsZXQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgX3BvcnRhbE91dGxldENvbmZpZzogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgX3RyaWdnZXJzOiBBcnJheTxUcmlnZ2VyRXZlbnQ+ID0gWydjbGljayddO1xuXG4gIHByaXZhdGUgX3JlZmVyZW5jZTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhdXRvVXBkYXRlclJlZjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBpc1Nob3duOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmZXJlbmNlRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbnM6IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm5bXSA9IFtdO1xuICBwcml2YXRlIGRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuO1xuICBwcml2YXRlIGhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm47XG4gIHByaXZhdGUgdHJpZ2dlckV2ZW50TWFwOiBNYXA8VHJpZ2dlckV2ZW50LCBFdmVudE1ldGhvZHNbXT4gPSBuZXcgTWFwKFtcbiAgICBbJ2NsaWNrJywgW3sgZXZlbnQ6ICdjbGljaycsIG1ldGhvZDogdGhpcy50b2dnbGVTaG93LmJpbmQodGhpcykgfV1dLFxuICAgIFtcbiAgICAgICdob3ZlcicsXG4gICAgICBbXG4gICAgICAgIHsgZXZlbnQ6ICdtb3VzZWVudGVyJywgbWV0aG9kOiB0aGlzLnNob3cuYmluZCh0aGlzKSB9LFxuICAgICAgICB7IGV2ZW50OiAnbW91c2VsZWF2ZScsIG1ldGhvZDogdGhpcy5oaWRlLmJpbmQodGhpcykgfSxcbiAgICAgIF0sXG4gICAgXSxcbiAgICBbXG4gICAgICAnZm9jdXMnLFxuICAgICAgW1xuICAgICAgICB7IGV2ZW50OiAnZm9jdXMnLCBtZXRob2Q6IHRoaXMuc2hvdy5iaW5kKHRoaXMpIH0sXG4gICAgICAgIHsgZXZlbnQ6ICdibHVyJywgbWV0aG9kOiB0aGlzLmhpZGUuYmluZCh0aGlzKSB9LFxuICAgICAgXSxcbiAgICBdLFxuICBdKTtcblxuICBwcml2YXRlIEhUTUxFbGVtZW50czoge1xuICAgIFtrZXkgaW4gT3V0bGV0U2VsZWN0b3IgfCAnZGVmYXVsdCddOiAodmFsdWU/OiBzdHJpbmcpID0+IEFycmF5PEVsZW1lbnQ+IHwgbnVsbDtcbiAgfSA9IHtcbiAgICBpZDogKHZhbHVlKSA9PiBBcnJheS5vZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh2YWx1ZSkpLFxuICAgIGNsYXNzOiAodmFsdWUpID0+IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh2YWx1ZSkpLFxuICAgIG5hbWU6ICh2YWx1ZSkgPT4gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSh2YWx1ZSkpLFxuICAgIHRhZzogKHZhbHVlKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKHZhbHVlKSksXG4gICAgZGVmYXVsdDogKCkgPT4gbnVsbCxcbiAgfTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBwb3J0YWxEaXJlY3RpdmU6IFBvcnRhbERpcmVjdGl2ZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkRmxvYXRTdHlsaW5nVG9Ib3N0RWxlbWVudCgpO1xuICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpO1xuICB9XG5cbiAgLyogU2hvdWxkIGJlIGFjY2Vzc2libGUgZm9yIHByb2dyYW1tYXRpY2FsbHkgc2V0dGluZyBkaXNwbGF5ICovXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmF0dGFjaERvY3VtZW50Q2xpY2tFdmVudEhhbmRsZXIoKTtcbiAgICB0aGlzLmF0dGFjaEhvc3RDbGlja0V2ZW50SGFuZGxlcigpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgdGhpcy5pc1Nob3duID0gdHJ1ZTtcbiAgICB0aGlzLmRpc3BsYXlDaGFuZ2VkLmVtaXQodGhpcy5pc1Nob3duKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkIHx8ICF0aGlzLmlzU2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRlYXJEb3duRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gICAgdGhpcy5pc1Nob3duID0gZmFsc2U7XG4gICAgdGhpcy5kaXNwbGF5Q2hhbmdlZC5lbWl0KHRoaXMuaXNTaG93bik7XG4gIH1cblxuICAvKiBTaG91bGQgYmUgYWNjZXNzaWJsZSBmb3IgcHJvZ3JhbW1hdGljYWxseSBzZXR0aW5nIGRpc3BsYXkgKi9cbiAgcHVibGljIHRvZ2dsZVNob3coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTaG93bikge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRmxvYXRTdHlsaW5nVG9Ib3N0RWxlbWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGVmdCcsIGAwcHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYDBweGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicsIHRoaXMuc3RyYXRlZ3kpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICd6LWluZGV4JyxcbiAgICAgIERlc2lnblRva2VuSGVscGVyLnpMYXllcigncG9wb3ZlcicpXG4gICAgKTtcbiAgICB0aGlzLnNldERpc3BsYXlTdHlsaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERpc3BsYXlTdHlsaW5nKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdkaXNwbGF5JyxcbiAgICAgIHRoaXMuaXNTaG93biA/IGBibG9ja2AgOiBgbm9uZWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWc6IENvbXB1dGVQb3NpdGlvbkNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXG4gICAgICBtaWRkbGV3YXJlOiB0aGlzLmdldE1pZGRsZXdhcmVDb25maWcoKSxcbiAgICAgIHN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5LFxuICAgIH0gYXMgQ29tcHV0ZVBvc2l0aW9uQ29uZmlnO1xuXG4gICAgZnJvbShcbiAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnJlZmVyZW5jZT8ubmF0aXZlRWxlbWVudCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZylcbiAgICApLnN1YnNjcmliZSgoeyB4LCB5IH0pID0+IHRoaXMuc2V0UG9zaXRpb25TdHlsaW5nT25Ib3N0RWxlbWVudCh4LCB5KSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1pZGRsZXdhcmVDb25maWcoKTogQXJyYXk8TWlkZGxld2FyZSB8IG51bGwgfCB1bmRlZmluZWQgfCBmYWxzZT4ge1xuICAgIGNvbnN0IG1pZGRsZXdhcmU6IEFycmF5PE1pZGRsZXdhcmUgfCBudWxsIHwgdW5kZWZpbmVkIHwgZmFsc2U+ID0gW107XG4gICAgbWlkZGxld2FyZS5wdXNoKG9mZnNldCh0aGlzLm9mZnNldCkpO1xuICAgIG1pZGRsZXdhcmUucHVzaChmbGlwKCkpO1xuXG4gICAgaWYgKHRoaXMuc2hpZnQpIHtcbiAgICAgIG1pZGRsZXdhcmUucHVzaChzaGlmdCh7IHBhZGRpbmc6IHBhcnNlSW50KERlc2lnblRva2VuSGVscGVyLnNpemUoJ3MnKSkgfSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF1dG9QbGFjZW1lbnQpIHtcbiAgICAgIG1pZGRsZXdhcmUucHVzaChhdXRvUGxhY2VtZW50KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBtaWRkbGV3YXJlO1xuICB9XG5cbiAgcHJpdmF0ZSBhdXRvVXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVBdXRvVXBkYXRlclJlZigpO1xuXG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b1VwZGF0ZXJSZWYgPSBhdXRvVXBkYXRlKFxuICAgICAgdGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMudXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbi5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UG9zaXRpb25TdHlsaW5nT25Ib3N0RWxlbWVudCh4UG9zaXRpb246IG51bWJlciwgeVBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGVmdCcsIGAke3hQb3NpdGlvbn1weGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCBgJHt5UG9zaXRpb259cHhgKTtcbiAgICB0aGlzLnNldERpc3BsYXlTdHlsaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRIYW5kbGluZygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVmZXJlbmNlIHx8ICF0aGlzLnRyaWdnZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2Vycy5mb3JFYWNoKCh0cmlnZ2VyOiBUcmlnZ2VyRXZlbnQpID0+XG4gICAgICB0aGlzLmF0dGFjaFRyaWdnZXJFdmVudFRvUmVmZXJlbmNlRWxlbWVudCh0cmlnZ2VyKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaERvY3VtZW50Q2xpY2tFdmVudEhhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICAnZG9jdW1lbnQnLFxuICAgICAgJ21vdXNlZG93bicsXG4gICAgICAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlSG9zdEVsZW1lbnQoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoSG9zdENsaWNrRXZlbnRIYW5kbGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4gfHwgIXRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnY2xpY2snLFxuICAgICAgKCkgPT4gdGhpcy5oYW5kbGVDbGlja0luc2lkZUhvc3RFbGVtZW50KClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hUcmlnZ2VyRXZlbnRUb1JlZmVyZW5jZUVsZW1lbnQodHJpZ2dlcjogVHJpZ2dlckV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRzOiBFdmVudE1ldGhvZHNbXSB8IHVuZGVmaW5lZCA9IHRoaXMudHJpZ2dlckV2ZW50TWFwLmdldCh0cmlnZ2VyKTtcblxuICAgIGlmICghZXZlbnRzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dHJpZ2dlcn0gaXMgbWlzc2luZyBldmVudCBkZWZpbml0aW9uKHMpYCk7XG4gICAgfVxuXG4gICAgZXZlbnRzLmZvckVhY2goKGV2ZW50OiBFdmVudE1ldGhvZHMpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50TGlzdGVuZXJEaXNwb3NlRm46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgdGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIGV2ZW50LmV2ZW50LFxuICAgICAgICBldmVudC5tZXRob2RcbiAgICAgICk7XG4gICAgICB0aGlzLnJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zLnB1c2goZXZlbnRMaXN0ZW5lckRpc3Bvc2VGbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsaWNrSW5zaWRlSG9zdEVsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGlja091dHNpZGVIb3N0RWxlbWVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgY29uc3QgY2xpY2tlZE9uSG9zdDogYm9vbGVhbiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICBpZiAoY2xpY2tlZE9uSG9zdCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBjbGlja2VkT25SZWZlcmVuY2VXaXRoQ2xpY2tUcmlnZ2VyRW5hYmxlZDogYm9vbGVhbiA9XG4gICAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgdGhpcy50cmlnZ2Vycy5pbmNsdWRlcygnY2xpY2snKTtcblxuICAgICAgaWYgKHRoaXMuY2xvc2VPbkJhY2tkcm9wICYmICFjbGlja2VkT25SZWZlcmVuY2VXaXRoQ2xpY2tUcmlnZ2VyRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE91dGxldEVsZW1lbnQoY29uZmlnOiBQb3J0YWxPdXRsZXRDb25maWcgfCB1bmRlZmluZWQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuc2VsZWN0b3IgfHwgIWNvbmZpZy52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHM6IEFycmF5PEVsZW1lbnQ+IHwgbnVsbCA9IHRoaXMuZ2V0SFRNTEVsZW1lbnRzKGNvbmZpZyk7XG5cbiAgICBpZiAoIWVsZW1lbnRzIHx8IGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgRXJyb3IoYENvdWxkIG5vdCBsb2NhdGUgSFRNTEVsZW1lbnQgZm9yICR7Y29uZmlnLnNlbGVjdG9yfS4gRGlkIHlvdSBtaXNzcGVsbCBpdD9gKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBNdWx0aXBsZSBIVE1MRWxlbWVudHMgZm91bmQgZm9yICR7Y29uZmlnLnNlbGVjdG9yfS5cbiAgICAgICAgIFRoaXMgY2FuIGxlYWQgdG8gdW5pbnRlbmRlZCBiZWhhdmlvdXJzLiBQcm92aWRlIGFuIHVuaXF1ZSBvdXRsZXRgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50c1swXSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SFRNTEVsZW1lbnRzKGNvbmZpZzogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkKTogQXJyYXk8RWxlbWVudD4gfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5IVE1MRWxlbWVudHNbY29uZmlnLnNlbGVjdG9yXShjb25maWcudmFsdWUpIHx8IHRoaXMuSFRNTEVsZW1lbnRzWydkZWZhdWx0J10oY29uZmlnLnZhbHVlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZucy5mb3JFYWNoKFxuICAgICAgKGV2ZW50TGlzdGVuZXJEaXNwb3NlRnVuY3Rpb246IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4pID0+IHtcbiAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJEaXNwb3NlRnVuY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgIGV2ZW50TGlzdGVuZXJEaXNwb3NlRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5yZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZucyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZWFyRG93bkRvY3VtZW50Q2xpY2tFdmVudEhhbmRsaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKSB7XG4gICAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKCk7XG4gICAgICB0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKSB7XG4gICAgICB0aGlzLmhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4oKTtcbiAgICAgIHRoaXMuaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBdXRvVXBkYXRlclJlZigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvVXBkYXRlclJlZikge1xuICAgICAgdGhpcy5hdXRvVXBkYXRlclJlZigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRlYXJEb3duRG9jdW1lbnRDbGlja0V2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLnJlbW92ZUF1dG9VcGRhdGVyUmVmKCk7XG4gIH1cbn1cbiJdfQ==
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc2hhcmVkL2Zsb2F0aW5nL3NyYy9mbG9hdGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFVBQVUsRUFDVixlQUFlLEVBRWYsSUFBSSxFQUVKLE1BQU0sRUFFTixLQUFLLEdBRU4sTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBSTFFLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsbURBQVEsQ0FBQTtJQUNSLHFEQUFTLENBQUE7SUFDVCx1REFBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gsMkJBQVMsQ0FBQTtJQUNULGlDQUFlLENBQUE7SUFDZiwrQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBY0Q7Ozs7Ozs7R0FPRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7O1NBRUs7SUFDTCxJQUFvQixTQUFTLENBQUMsR0FBd0M7UUFDcEUsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FB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QUFLO2dCQWVjLGVBQWU7c0JBQWxDLEtBQUs7Z0JBY2Msa0JBQWtCO3NCQUFyQyxLQUFLO2dCQWVVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFNVSxLQUFLO3NCQUFwQixLQUFLO2dCQUtVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBS1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFLVyxjQUFjO3NCQUE5QixNQUFNO2dCQUdBLGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYXV0b1BsYWNlbWVudCxcbiAgYXV0b1VwZGF0ZSxcbiAgY29tcHV0ZVBvc2l0aW9uLFxuICBDb21wdXRlUG9zaXRpb25Db25maWcsXG4gIGZsaXAsXG4gIE1pZGRsZXdhcmUsXG4gIG9mZnNldCxcbiAgUGxhY2VtZW50LFxuICBzaGlmdCxcbiAgU3RyYXRlZ3ksXG59IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5pbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb3J0YWxEaXJlY3RpdmUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZC9wb3J0YWwnO1xuXG5leHBvcnQgdHlwZSBUcmlnZ2VyRXZlbnQgPSAnaG92ZXInIHwgJ2NsaWNrJyB8ICdmb2N1cyc7XG5cbmV4cG9ydCBlbnVtIEZsb2F0aW5nT2Zmc2V0IHtcbiAgbm9uZSA9IDAsXG4gIHNtYWxsID0gNCxcbiAgbWVkaXVtID0gOCxcbn1cblxuZXhwb3J0IGVudW0gT3V0bGV0U2VsZWN0b3Ige1xuICB0YWcgPSAndGFnJyxcbiAgaWQgPSAnaWQnLFxuICBjbGFzcyA9ICdjbGFzcycsXG4gIG5hbWUgPSAnbmFtZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGFsT3V0bGV0Q29uZmlnIHtcbiAgc2VsZWN0b3I6IE91dGxldFNlbGVjdG9yO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXZlbnRNZXRob2RzIHtcbiAgZXZlbnQ6IHN0cmluZztcbiAgbWV0aG9kOiAoKSA9PiB2b2lkO1xufVxuXG50eXBlIEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSAoKSA9PiB2b2lkO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEZsb2F0aW5nRGlyZWN0aXZlIGlzIGEgdXRpbGl0eSB0aGF0IGxldHMgeW91IGRlY2xhcmF0aXZlIGFuY2hvciBcInBvcHVwXCIgY29udGFpbmVycyB0byBhbm90aGVyIGVsZW1lbnQuXG4gKlxuICogVXNlcyBmbG9hdGluZy11aSwgd2l0aCB0aGlzIGRpcmVjdGl2ZSB3cmFwcyB0aGUgZnVuY3Rpb25hbGl0eTogaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWRcbiAqXG4gKiBVc2VzIFBvcnRhbERpcmVjdGl2ZSB0byBlbmFibGUgZnVuY3Rpb25hbGl0eSBmb3IgcG9ydGFsaW5nIHRoZSBmbG9hdGVkIGNvbnRlbnQuIFRoaXMgc2hvdWxkIGJlIHVzZWQgd2hlbiBuZWVkZWRcbiAqIGFuZCBub3QgYXMgdGhlIGRlZmF1bHQgb3B0aW9uLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlGbG9hdGluZ10nLFxuICBwcm92aWRlcnM6IFtQb3J0YWxEaXJlY3RpdmVdLFxuICBob3N0RGlyZWN0aXZlczogW1BvcnRhbERpcmVjdGl2ZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IGZvciB3aGljaCB0aGUgaG9zdCBzaG91bGQgYW5jaG9yIHRvXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVmZXJlbmNlKHJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRlYXJEb3duUmVmZXJlbmNlRWxlbWVudEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLl9yZWZlcmVuY2UgPSByZWY7XG4gICAgdGhpcy5zZXR1cEV2ZW50SGFuZGxpbmcoKTtcbiAgICB0aGlzLmF1dG9VcGRhdGVQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCByZWZlcmVuY2UoKTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9yZWZlcmVuY2U7XG4gIH1cblxuICAvKipcbiAgICogSG93IHRoZSBob3N0IHNob3VsZCBiZSBwbGFjZWQgcmVsYXRpdmUgdG8gdGhlIHJlZmVyZW5jZS4gQ2FuIGJlIGFmZmVjdGVkIGJ5IG1pZGRsZXdhcmVcbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBwbGFjZW1lbnQocGxhY2VtZW50OiBQbGFjZW1lbnQpIHtcbiAgICB0aGlzLl9wbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgdGhpcy51cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsYWNlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2VtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJhdGVneSBmb3IgaG93IHRoZSBob3N0IHNob3VsZCBiZSBwb3NpdGlvbmVkLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHN0cmF0ZWd5KHN0cmF0ZWd5OiBTdHJhdGVneSkge1xuICAgIHRoaXMuX3N0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gICAgdGhpcy51cGRhdGVIb3N0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0cmF0ZWd5KCk6IFN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB3aGVuIHRoZSBob3N0IHNob3VsZCBiZSBkaXNwbGF5ZWQvaGlkZGVuLCBpLmUuIGNsaWNrIHdpbGwgYXR0YWNoIGEgY2xpY2sgbGlzdGVuZXIgdG8gdGhlIHJlZmVyZW5jZVxuICAgKiB0aGF0IG1ha2VzIHRoZSBob3N0IHRvZ2dsZSBkaXNwbGF5LiBTdXBwb3J0cyBtdWx0aXBsZSB0cmlnZ2VycywgdG8gcHJvdmlkZSBmdW5jdGlvbmFsaXR5IGZvciBjb21iaW5hdGlvbnNcbiAgICogbGlrZSBjbGljay9mb2N1cy5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNldCB0cmlnZ2VycyhldmVudFRyaWdnZXJzOiBBcnJheTxUcmlnZ2VyRXZlbnQ+KSB7XG4gICAgdGhpcy5fdHJpZ2dlcnMgPSBldmVudFRyaWdnZXJzO1xuICAgIHRoaXMudGVhckRvd25SZWZlcmVuY2VFbGVtZW50RXZlbnRIYW5kbGluZygpO1xuICAgIHRoaXMuc2V0dXBFdmVudEhhbmRsaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRyaWdnZXJzKCk6IEFycmF5PFRyaWdnZXJFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSFRNTEVsZW1lbnQgZm9yIHdoaWNoIHRoZSBjb250ZW50IHNob3VsZCBwb3J0YWwgaW50by5cbiAgICogUHJvdmlkaW5nIGFuIG91dGxldCBlbmFibGVzIHRoZSBwb3J0YWwsIGlmIG5vdGhpbmcgaXMgcHJvdmlkZWQsIHRoZSBwcm92aWRlZCBzdHJhdGVneSBpcyB1c2VkLlxuICAgKiBUaGlzIHNob3VsZCBiZSB1c2VkIHdoZW4gdGhlcmUncyBpc3N1ZXMgd2l0aCB0aGUgc3RhY2tpbmcgY29udGV4dCwgYW5kIG5vdCBhcyBhIGRlZmF1bHQgb3B0aW9uLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IERPTVBvcnRhbE91dGxldChvdXRsZXQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcHJvdmlkZWRQb3J0YWxPdXRsZXQgPSBvdXRsZXQ7XG4gICAgdGhpcy5wb3J0YWxEaXJlY3RpdmUub3V0bGV0ID1cbiAgICAgIHRoaXMuRE9NUG9ydGFsT3V0bGV0ID8/IHRoaXMuZ2V0T3V0bGV0RWxlbWVudCh0aGlzLnBvcnRhbE91dGxldENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IERPTVBvcnRhbE91dGxldCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVkUG9ydGFsT3V0bGV0O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgaG93IHRvIGF1dG9tYXRpY2FsbHkgZmluZCBhbmQgYXNzaWduIERPTVBvcnRhbE91dGxldCBpZiBub25lIGlzIHByb3ZpZGVkIGluIERPTVBvcnRhbE91dGxldC5cbiAgICogSWYgbm90aGluZyBpcyBwcm92aWRlZCBoZXJlIGFuZCBpbiBET01Qb3J0YWxPdXRsZXQsIHRoZSBwcm92aWRlZCBzdHJhdGVneSBpcyB1c2VkXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcG9ydGFsT3V0bGV0Q29uZmlnKGNvbmZpZzogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcG9ydGFsT3V0bGV0Q29uZmlnID0gY29uZmlnO1xuXG4gICAgaWYgKCF0aGlzLkRPTVBvcnRhbE91dGxldCkge1xuICAgICAgdGhpcy5wb3J0YWxEaXJlY3RpdmUub3V0bGV0ID0gdGhpcy5nZXRPdXRsZXRFbGVtZW50KGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwb3J0YWxPdXRsZXRDb25maWcoKTogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcG9ydGFsT3V0bGV0Q29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFByZXZlbnQgaG9zdCBmcm9tIGJlaW5nIHRvZ2dsZWQgaWYgc2V0LlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEaXNwbGFjZXMgdGhlIGZsb2F0aW5nIGVsZW1lbnQgZnJvbSBpdHMgY29yZSBwbGFjZW1lbnQgYWxvbmcgdGhlIHNwZWNpZmllZCBheGVzLlxuICAgKiAqL1xuICBASW5wdXQoKSBwdWJsaWMgb2Zmc2V0OiBGbG9hdGluZ09mZnNldCA9IEZsb2F0aW5nT2Zmc2V0Lm5vbmU7XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZSBzcGVjaWZpZWQgYXhlcyBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcuXG4gICAqIFRoaXMgZG9lcyBub3QgYWx3YXlzIHdvcmsgYXMgZXhwZWN0ZWQsIHNvIGRvbid0IFwianVzdFwiIHNldCBpdC5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIHNoaWZ0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENob29zZXMgdGhlIHBsYWNlbWVudCB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseS5cbiAgICogKi9cbiAgQElucHV0KCkgcHVibGljIGF1dG9QbGFjZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5hYmxlcyBoaWRpbmcgdGhlIGhvc3QgYnkgZXZlbnRzLiBTZWUgdmFyaWFibGUgbmFtZXMuXG4gICAqICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uU2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGNsb3NlT25Fc2NhcGVLZXk6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkJhY2tkcm9wOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aGUgb3B0aW9uIHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGhvc3QgY2hhbmdlcyBkaXNwbGF5LiBUaGUgbmV3IGRpc3BsYXkgdmFsdWUgaXMgcHJvdmlkZWQuXG4gICAqICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgZGlzcGxheUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkVzY2FwZUtleVByZXNzZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPbkVzY2FwZUtleSkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcGxhY2VtZW50OiBQbGFjZW1lbnQgPSAnYm90dG9tLXN0YXJ0JztcblxuICBwcml2YXRlIF9zdHJhdGVneTogU3RyYXRlZ3kgPSAnYWJzb2x1dGUnO1xuXG4gIHByaXZhdGUgX3Byb3ZpZGVkUG9ydGFsT3V0bGV0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9wb3J0YWxPdXRsZXRDb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF90cmlnZ2VyczogQXJyYXk8VHJpZ2dlckV2ZW50PiA9IFsnY2xpY2snXTtcblxuICBwcml2YXRlIF9yZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgYXV0b1VwZGF0ZXJSZWY6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgaXNTaG93bjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHJlZmVyZW5jZUV2ZW50TGlzdGVuZXJEaXNwb3NlRm5zOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuW10gPSBbXTtcbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjtcbiAgcHJpdmF0ZSBob3N0Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuO1xuICBwcml2YXRlIHRyaWdnZXJFdmVudE1hcDogTWFwPFRyaWdnZXJFdmVudCwgRXZlbnRNZXRob2RzW10+ID0gbmV3IE1hcChbXG4gICAgWydjbGljaycsIFt7IGV2ZW50OiAnY2xpY2snLCBtZXRob2Q6IHRoaXMudG9nZ2xlU2hvdy5iaW5kKHRoaXMpIH1dXSxcbiAgICBbXG4gICAgICAnaG92ZXInLFxuICAgICAgW1xuICAgICAgICB7IGV2ZW50OiAnbW91c2VlbnRlcicsIG1ldGhvZDogdGhpcy5zaG93LmJpbmQodGhpcykgfSxcbiAgICAgICAgeyBldmVudDogJ21vdXNlbGVhdmUnLCBtZXRob2Q6IHRoaXMuaGlkZS5iaW5kKHRoaXMpIH0sXG4gICAgICBdLFxuICAgIF0sXG4gICAgW1xuICAgICAgJ2ZvY3VzJyxcbiAgICAgIFtcbiAgICAgICAgeyBldmVudDogJ2ZvY3VzJywgbWV0aG9kOiB0aGlzLnNob3cuYmluZCh0aGlzKSB9LFxuICAgICAgICB7IGV2ZW50OiAnYmx1cicsIG1ldGhvZDogdGhpcy5oaWRlLmJpbmQodGhpcykgfSxcbiAgICAgIF0sXG4gICAgXSxcbiAgXSk7XG5cbiAgcHJpdmF0ZSBIVE1MRWxlbWVudHM6IHtcbiAgICBba2V5IGluIE91dGxldFNlbGVjdG9yIHwgJ2RlZmF1bHQnXTogKHZhbHVlPzogc3RyaW5nKSA9PiBBcnJheTxFbGVtZW50PiB8IG51bGw7XG4gIH0gPSB7XG4gICAgaWQ6ICh2YWx1ZSkgPT4gQXJyYXkub2YoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodmFsdWUpKSxcbiAgICBjbGFzczogKHZhbHVlKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUodmFsdWUpKSxcbiAgICBuYW1lOiAodmFsdWUpID0+IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUodmFsdWUpKSxcbiAgICB0YWc6ICh2YWx1ZSkgPT4gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh2YWx1ZSkpLFxuICAgIGRlZmF1bHQ6ICgpID0+IG51bGwsXG4gIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcG9ydGFsRGlyZWN0aXZlOiBQb3J0YWxEaXJlY3RpdmVcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEZsb2F0U3R5bGluZ1RvSG9zdEVsZW1lbnQoKTtcbiAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIC8qIFNob3VsZCBiZSBhY2Nlc3NpYmxlIGZvciBwcm9ncmFtbWF0aWNhbGx5IHNldHRpbmcgZGlzcGxheSAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRhY2hEb2N1bWVudENsaWNrRXZlbnRIYW5kbGVyKCk7XG4gICAgdGhpcy5hdHRhY2hIb3N0Q2xpY2tFdmVudEhhbmRsZXIoKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdibG9jaycpO1xuICAgIHRoaXMuaXNTaG93biA9IHRydWU7XG4gICAgdGhpcy5kaXNwbGF5Q2hhbmdlZC5lbWl0KHRoaXMuaXNTaG93bik7XG4gIH1cblxuICAvKiBTaG91bGQgYmUgYWNjZXNzaWJsZSBmb3IgcHJvZ3JhbW1hdGljYWxseSBzZXR0aW5nIGRpc3BsYXkgKi9cbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCB8fCAhdGhpcy5pc1Nob3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50ZWFyRG93bkRvY3VtZW50Q2xpY2tFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIHRoaXMuaXNTaG93biA9IGZhbHNlO1xuICAgIHRoaXMuZGlzcGxheUNoYW5nZWQuZW1pdCh0aGlzLmlzU2hvd24pO1xuICB9XG5cbiAgLyogU2hvdWxkIGJlIGFjY2Vzc2libGUgZm9yIHByb2dyYW1tYXRpY2FsbHkgc2V0dGluZyBkaXNwbGF5ICovXG4gIHB1YmxpYyB0b2dnbGVTaG93KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2hvd24pIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZsb2F0U3R5bGluZ1RvSG9zdEVsZW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgMHB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RvcCcsIGAwcHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nLCB0aGlzLnN0cmF0ZWd5KTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnei1pbmRleCcsXG4gICAgICBEZXNpZ25Ub2tlbkhlbHBlci56TGF5ZXIoJ3BvcG92ZXInKVxuICAgICk7XG4gICAgdGhpcy5zZXREaXNwbGF5U3R5bGluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXNwbGF5U3R5bGluZygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnZGlzcGxheScsXG4gICAgICB0aGlzLmlzU2hvd24gPyBgYmxvY2tgIDogYG5vbmVgXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSG9zdEVsZW1lbnRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnOiBDb21wdXRlUG9zaXRpb25Db25maWcgPSB7XG4gICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxuICAgICAgbWlkZGxld2FyZTogdGhpcy5nZXRNaWRkbGV3YXJlQ29uZmlnKCksXG4gICAgICBzdHJhdGVneTogdGhpcy5zdHJhdGVneSxcbiAgICB9IGFzIENvbXB1dGVQb3NpdGlvbkNvbmZpZztcblxuICAgIGZyb20oXG4gICAgICBjb21wdXRlUG9zaXRpb24odGhpcy5yZWZlcmVuY2U/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjb25maWcpXG4gICAgKS5zdWJzY3JpYmUoKHsgeCwgeSB9KSA9PiB0aGlzLnNldFBvc2l0aW9uU3R5bGluZ09uSG9zdEVsZW1lbnQoeCwgeSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaWRkbGV3YXJlQ29uZmlnKCk6IEFycmF5PE1pZGRsZXdhcmUgfCBudWxsIHwgdW5kZWZpbmVkIHwgZmFsc2U+IHtcbiAgICBjb25zdCBtaWRkbGV3YXJlOiBBcnJheTxNaWRkbGV3YXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IGZhbHNlPiA9IFtdO1xuICAgIG1pZGRsZXdhcmUucHVzaChvZmZzZXQodGhpcy5vZmZzZXQpKTtcbiAgICBtaWRkbGV3YXJlLnB1c2goZmxpcCgpKTtcblxuICAgIGlmICh0aGlzLnNoaWZ0KSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goc2hpZnQoeyBwYWRkaW5nOiBwYXJzZUludChEZXNpZ25Ub2tlbkhlbHBlci5zaXplKCdzJykpIH0pKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdXRvUGxhY2VtZW50KSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goYXV0b1BsYWNlbWVudCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWlkZGxld2FyZTtcbiAgfVxuXG4gIHByaXZhdGUgYXV0b1VwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlQXV0b1VwZGF0ZXJSZWYoKTtcblxuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9VcGRhdGVyUmVmID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnVwZGF0ZUhvc3RFbGVtZW50UG9zaXRpb24uYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uU3R5bGluZ09uSG9zdEVsZW1lbnQoeFBvc2l0aW9uOiBudW1iZXIsIHlQb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHt4UG9zaXRpb259cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG9wJywgYCR7eVBvc2l0aW9ufXB4YCk7XG4gICAgdGhpcy5zZXREaXNwbGF5U3R5bGluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSB8fCAhdGhpcy50cmlnZ2Vycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlckV2ZW50KSA9PlxuICAgICAgdGhpcy5hdHRhY2hUcmlnZ2VyRXZlbnRUb1JlZmVyZW5jZUVsZW1lbnQodHJpZ2dlcilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hEb2N1bWVudENsaWNrRXZlbnRIYW5kbGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgJ2RvY3VtZW50JyxcbiAgICAgICdtb3VzZWRvd24nLFxuICAgICAgKGV2ZW50KSA9PiB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZUhvc3RFbGVtZW50KGV2ZW50KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEhvc3RDbGlja0V2ZW50SGFuZGxlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ob3N0Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuIHx8ICF0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2NsaWNrJyxcbiAgICAgICgpID0+IHRoaXMuaGFuZGxlQ2xpY2tJbnNpZGVIb3N0RWxlbWVudCgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoVHJpZ2dlckV2ZW50VG9SZWZlcmVuY2VFbGVtZW50KHRyaWdnZXI6IFRyaWdnZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50czogRXZlbnRNZXRob2RzW10gfCB1bmRlZmluZWQgPSB0aGlzLnRyaWdnZXJFdmVudE1hcC5nZXQodHJpZ2dlcik7XG5cbiAgICBpZiAoIWV2ZW50cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RyaWdnZXJ9IGlzIG1pc3NpbmcgZXZlbnQgZGVmaW5pdGlvbihzKWApO1xuICAgIH1cblxuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudDogRXZlbnRNZXRob2RzKSA9PiB7XG4gICAgICBjb25zdCBldmVudExpc3RlbmVyRGlzcG9zZUZuOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHRoaXMucmVmZXJlbmNlPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICBldmVudC5ldmVudCxcbiAgICAgICAgZXZlbnQubWV0aG9kXG4gICAgICApO1xuICAgICAgdGhpcy5yZWZlcmVuY2VFdmVudExpc3RlbmVyRGlzcG9zZUZucy5wdXNoKGV2ZW50TGlzdGVuZXJEaXNwb3NlRm4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGlja0luc2lkZUhvc3RFbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xpY2tPdXRzaWRlSG9zdEVsZW1lbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUpIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRPbkhvc3Q6IGJvb2xlYW4gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgaWYgKGNsaWNrZWRPbkhvc3QpIHJldHVybjtcblxuICAgICAgY29uc3QgY2xpY2tlZE9uUmVmZXJlbmNlV2l0aENsaWNrVHJpZ2dlckVuYWJsZWQ6IGJvb2xlYW4gPVxuICAgICAgICB0aGlzLnJlZmVyZW5jZT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmIHRoaXMudHJpZ2dlcnMuaW5jbHVkZXMoJ2NsaWNrJyk7XG5cbiAgICAgIGlmICh0aGlzLmNsb3NlT25CYWNrZHJvcCAmJiAhY2xpY2tlZE9uUmVmZXJlbmNlV2l0aENsaWNrVHJpZ2dlckVuYWJsZWQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRsZXRFbGVtZW50KGNvbmZpZzogUG9ydGFsT3V0bGV0Q29uZmlnIHwgdW5kZWZpbmVkKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLnNlbGVjdG9yIHx8ICFjb25maWcudmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzOiBBcnJheTxFbGVtZW50PiB8IG51bGwgPSB0aGlzLmdldEhUTUxFbGVtZW50cyhjb25maWcpO1xuXG4gICAgaWYgKCFlbGVtZW50cyB8fCBlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IEVycm9yKGBDb3VsZCBub3QgbG9jYXRlIEhUTUxFbGVtZW50IGZvciAke2NvbmZpZy5zZWxlY3Rvcn0uIERpZCB5b3UgbWlzc3BlbGwgaXQ/YCk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgTXVsdGlwbGUgSFRNTEVsZW1lbnRzIGZvdW5kIGZvciAke2NvbmZpZy5zZWxlY3Rvcn0uXG4gICAgICAgICBUaGlzIGNhbiBsZWFkIHRvIHVuaW50ZW5kZWQgYmVoYXZpb3Vycy4gUHJvdmlkZSBhbiB1bmlxdWUgb3V0bGV0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudHNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldEhUTUxFbGVtZW50cyhjb25maWc6IFBvcnRhbE91dGxldENvbmZpZyB8IHVuZGVmaW5lZCk6IEFycmF5PEVsZW1lbnQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuSFRNTEVsZW1lbnRzW2NvbmZpZy5zZWxlY3Rvcl0oY29uZmlnLnZhbHVlKSB8fCB0aGlzLkhUTUxFbGVtZW50c1snZGVmYXVsdCddKGNvbmZpZy52YWx1ZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZWFyRG93blJlZmVyZW5jZUVsZW1lbnRFdmVudEhhbmRsaW5nKCk6IHZvaWQge1xuICAgIHRoaXMucmVmZXJlbmNlRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbnMuZm9yRWFjaChcbiAgICAgIChldmVudExpc3RlbmVyRGlzcG9zZUZ1bmN0aW9uOiBFdmVudExpc3RlbmVyRGlzcG9zZUZuKSA9PiB7XG4gICAgICAgIGlmIChldmVudExpc3RlbmVyRGlzcG9zZUZ1bmN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICBldmVudExpc3RlbmVyRGlzcG9zZUZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMucmVmZXJlbmNlRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgdGVhckRvd25Eb2N1bWVudENsaWNrRXZlbnRIYW5kbGluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbikge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbigpO1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbiA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdENsaWNrRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbikge1xuICAgICAgdGhpcy5ob3N0Q2xpY2tFdmVudExpc3RlbmVyRGlzcG9zZUZuKCk7XG4gICAgICB0aGlzLmhvc3RDbGlja0V2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQXV0b1VwZGF0ZXJSZWYoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b1VwZGF0ZXJSZWYpIHtcbiAgICAgIHRoaXMuYXV0b1VwZGF0ZXJSZWYoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50ZWFyRG93bkRvY3VtZW50Q2xpY2tFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy50ZWFyRG93blJlZmVyZW5jZUVsZW1lbnRFdmVudEhhbmRsaW5nKCk7XG4gICAgdGhpcy5yZW1vdmVBdXRvVXBkYXRlclJlZigpO1xuICB9XG59XG4iXX0=
@@ -81,11 +81,11 @@ export class SlidesComponent {
81
81
  return { ...this.getDefaultConfig(), pagination: false, navigation: false };
82
82
  }
83
83
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SlidesComponent, deps: [{ token: i1.PlatformService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
84
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: SlidesComponent, selector: "kirby-slides", inputs: { slidesOptions: "slidesOptions", title: "title", slides: "slides", showNavigation: "showNavigation" }, outputs: { 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 }); }
84
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: SlidesComponent, selector: "kirby-slides", inputs: { slidesOptions: "slidesOptions", title: "title", slides: "slides", showNavigation: "showNavigation" }, outputs: { 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:0 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:2}@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}:host swiper-container{padding-block:24px;margin-block:-24px}@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 }); }
85
85
  }
86
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SlidesComponent, decorators: [{
87
87
  type: Component,
88
- 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"] }]
88
+ 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:0 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:2}@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}:host swiper-container{padding-block:24px;margin-block:-24px}@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"] }]
89
89
  }], ctorParameters: function () { return [{ type: i1.PlatformService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { swiperContainer: [{
90
90
  type: ViewChild,
91
91
  args: ['swiperContainer']
@@ -86,11 +86,11 @@ export class TabNavigationComponent {
86
86
  }
87
87
  }
88
88
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TabNavigationComponent, deps: [{ token: i1.WindowRef }, { token: i2.KeyboardHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
89
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TabNavigationComponent, selector: "kirby-tab-navigation", inputs: { selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, host: { listeners: { "click": "onItemSelect($event)", "keydown.enter": "onItemSelect($event)", "keydown.home": "onKeydown($event)", "keydown.end": "onKeydown($event)", "keydown.arrowright": "onKeydown($event)", "keydown.arrowleft": "onKeydown($event)" } }, queries: [{ propertyName: "tabs", predicate: TabNavigationItemComponent, read: ElementRef }], viewQueries: [{ propertyName: "tabBar", first: true, predicate: ["tabBar"], descendants: true }], ngImport: i0, template: "<div role=\"tablist\" #tabBar>\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;position:relative}@media (max-width: 767px){:host{margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}}:host:before{content:\"\";background-color:var(--kirby-medium);position:absolute;height:1px;bottom:0;z-index:1;left:0;width:100%}@media (max-width: 824px){:host:before{left:calc(-1 * var(--padding-start, 16px));width:calc(100% + var(--padding-start, 16px) * 2)}}div[role=tablist]{position:relative;margin:0 auto;display:flex;align-items:center;justify-content:left;flex-wrap:nowrap;overflow-x:scroll;-webkit-overflow-scrolling:auto;scrollbar-width:none}@media (max-width: 767px){div[role=tablist]{padding-inline:var(--padding-start) var(--padding-end)}}div[role=tablist]::-webkit-scrollbar{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
89
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TabNavigationComponent, selector: "kirby-tab-navigation", inputs: { selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, host: { listeners: { "click": "onItemSelect($event)", "keydown.enter": "onItemSelect($event)", "keydown.home": "onKeydown($event)", "keydown.end": "onKeydown($event)", "keydown.arrowright": "onKeydown($event)", "keydown.arrowleft": "onKeydown($event)" } }, queries: [{ propertyName: "tabs", predicate: TabNavigationItemComponent, read: ElementRef }], viewQueries: [{ propertyName: "tabBar", first: true, predicate: ["tabBar"], descendants: true }], ngImport: i0, template: "<div role=\"tablist\" #tabBar>\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;position:relative}@media (max-width: 767px){:host{width:100%;margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}}:host:before{content:\"\";background-color:var(--kirby-medium);position:absolute;height:1px;bottom:0;z-index:1;left:0;width:100%}@media (max-width: 824px){:host:before{left:calc(-1 * var(--padding-start, 16px));width:calc(100% + var(--padding-start, 16px) * 2)}}div[role=tablist]{position:relative;margin:0 auto;display:flex;align-items:center;justify-content:left;flex-wrap:nowrap;overflow-x:scroll;-webkit-overflow-scrolling:auto;scrollbar-width:none}@media (max-width: 767px){div[role=tablist]{padding-inline:var(--padding-start) var(--padding-end)}}div[role=tablist]::-webkit-scrollbar{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
90
90
  }
91
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TabNavigationComponent, decorators: [{
92
92
  type: Component,
93
- args: [{ selector: 'kirby-tab-navigation', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div role=\"tablist\" #tabBar>\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;position:relative}@media (max-width: 767px){:host{margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}}:host:before{content:\"\";background-color:var(--kirby-medium);position:absolute;height:1px;bottom:0;z-index:1;left:0;width:100%}@media (max-width: 824px){:host:before{left:calc(-1 * var(--padding-start, 16px));width:calc(100% + var(--padding-start, 16px) * 2)}}div[role=tablist]{position:relative;margin:0 auto;display:flex;align-items:center;justify-content:left;flex-wrap:nowrap;overflow-x:scroll;-webkit-overflow-scrolling:auto;scrollbar-width:none}@media (max-width: 767px){div[role=tablist]{padding-inline:var(--padding-start) var(--padding-end)}}div[role=tablist]::-webkit-scrollbar{display:none}\n"] }]
93
+ args: [{ selector: 'kirby-tab-navigation', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div role=\"tablist\" #tabBar>\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;position:relative}@media (max-width: 767px){:host{width:100%;margin-inline:calc(-1 * var(--padding-start)) calc(-1 * var(--padding-end))}}:host:before{content:\"\";background-color:var(--kirby-medium);position:absolute;height:1px;bottom:0;z-index:1;left:0;width:100%}@media (max-width: 824px){:host:before{left:calc(-1 * var(--padding-start, 16px));width:calc(100% + var(--padding-start, 16px) * 2)}}div[role=tablist]{position:relative;margin:0 auto;display:flex;align-items:center;justify-content:left;flex-wrap:nowrap;overflow-x:scroll;-webkit-overflow-scrolling:auto;scrollbar-width:none}@media (max-width: 767px){div[role=tablist]{padding-inline:var(--padding-start) var(--padding-end)}}div[role=tablist]::-webkit-scrollbar{display:none}\n"] }]
94
94
  }], ctorParameters: function () { return [{ type: i1.WindowRef }, { type: i2.KeyboardHandlerService }]; }, propDecorators: { tabBar: [{
95
95
  type: ViewChild,
96
96
  args: ['tabBar']
@@ -27,11 +27,11 @@ export class TabButtonComponent {
27
27
  this.renderer.appendChild(parent, button);
28
28
  }
29
29
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TabButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
30
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TabButtonComponent, selector: "kirby-tab-button", inputs: { routerLink: "routerLink", tab: "tab" }, outputs: { click: "click" }, queries: [{ propertyName: "icons", predicate: IconComponent }], ngImport: i0, template: "<ion-tab-button\n #ionTabButton\n [tab]=\"routerLink || tab\"\n (click)=\"onClick($event, ionTabButton.selected)\"\n>\n <ng-content\n *ngIf=\"icons.length === 1 || !ionTabButton.selected\"\n select=\"kirby-icon:not([selected-tab])\"\n ></ng-content>\n <ng-content *ngIf=\"ionTabButton.selected\" select=\"kirby-icon[selected-tab]\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"kirby-badge\"></ng-content>\n</ion-tab-button>\n", styles: ["ion-tab-button{transition:background-color 80ms linear 0ms;height:100%;flex:1 1 0%;max-width:168px;font-weight:500;font-size:12px;line-height:16px;--color: var(--kirby-text-color-semi-dark);--color-selected: var(--kirby-black);--padding-start: 0;--padding-end: 0;--kirby-badge-position: absolute;--kirby-badge-top: .55em;--kirby-badge-left:calc(50% + .4em)}@media (hover: hover) and (pointer: fine){ion-tab-button.ion-focused{--background: whitesmoke;--background-focused-opacity: 0}ion-tab-button.ion-focused:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){ion-tab-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--background: whitesmoke}}ion-tab-button:active,ion-tab-button.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--background: #ebebeb}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-top: .3em;--kirby-badge-left:calc(50% + .2em)}@media (min-width: 768px){ion-tab-button{flex:none;flex-direction:row;font-size:14px;line-height:20px;--padding-start: 24px;--padding-end: 24px;--kirby-badge-position: absolute;--kirby-badge-top:calc(50% - 1.35em);--kirby-badge-left: 1.6em}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-position: relative;--kirby-badge-top: 0;--kirby-badge-left: 0;margin-left:2px;margin-bottom:1px}ion-tab-button ::ng-deep>kirby-icon{--kirby-icon-margin-right: 8px}}@media (min-width: 992px) and (hover: hover) and (pointer: fine){ion-tab-button{--padding-start: 12px;--padding-end: 12px}}\n"], dependencies: [{ kind: "component", type: i1.IonTabButton, selector: "ion-tab-button", inputs: ["disabled", "download", "href", "layout", "mode", "rel", "selected", "tab", "target"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
30
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TabButtonComponent, selector: "kirby-tab-button", inputs: { routerLink: "routerLink", tab: "tab" }, outputs: { click: "click" }, queries: [{ propertyName: "icons", predicate: IconComponent }], ngImport: i0, template: "<ion-tab-button\n #ionTabButton\n [tab]=\"routerLink || tab\"\n (click)=\"onClick($event, ionTabButton.selected)\"\n>\n <ng-content\n *ngIf=\"icons.length === 1 || !ionTabButton.selected\"\n select=\"kirby-icon:not([selected-tab])\"\n ></ng-content>\n <ng-content *ngIf=\"ionTabButton.selected\" select=\"kirby-icon[selected-tab]\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"kirby-badge\"></ng-content>\n</ion-tab-button>\n", styles: ["ion-tab-button{transition:background-color 80ms linear 0ms;height:100%;flex:1 1 0%;max-width:168px;font-weight:500;font-size:12px;line-height:16px;--color: var(--kirby-text-color-semi-dark);--color-selected: var(--kirby-black);--padding-start: 0;--padding-end: 0;--kirby-badge-position: absolute;--kirby-badge-top: .55em;--kirby-badge-left: calc(50% + .4em) }@media (hover: hover) and (pointer: fine){ion-tab-button.ion-focused{--background: whitesmoke;--background-focused-opacity: 0}ion-tab-button.ion-focused:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){ion-tab-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--background: whitesmoke}}ion-tab-button:active,ion-tab-button.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--background: #ebebeb}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-top: .3em;--kirby-badge-left: calc(50% + .2em) }@media (min-width: 768px){ion-tab-button{flex:none;flex-direction:row;font-size:14px;line-height:20px;--padding-start: 24px;--padding-end: 24px;--kirby-badge-position: absolute;--kirby-badge-top: calc(50% - 1.35em) ;--kirby-badge-left: 1.6em}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-position: relative;--kirby-badge-top: 0;--kirby-badge-left: 0;margin-left:2px;margin-bottom:1px}ion-tab-button ::ng-deep>kirby-icon{--kirby-icon-margin-right: 8px}}@media (min-width: 992px) and (hover: hover) and (pointer: fine){ion-tab-button{--padding-start: 12px;--padding-end: 12px}}\n"], dependencies: [{ kind: "component", type: i1.IonTabButton, selector: "ion-tab-button", inputs: ["disabled", "download", "href", "layout", "mode", "rel", "selected", "tab", "target"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TabButtonComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ selector: 'kirby-tab-button', template: "<ion-tab-button\n #ionTabButton\n [tab]=\"routerLink || tab\"\n (click)=\"onClick($event, ionTabButton.selected)\"\n>\n <ng-content\n *ngIf=\"icons.length === 1 || !ionTabButton.selected\"\n select=\"kirby-icon:not([selected-tab])\"\n ></ng-content>\n <ng-content *ngIf=\"ionTabButton.selected\" select=\"kirby-icon[selected-tab]\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"kirby-badge\"></ng-content>\n</ion-tab-button>\n", styles: ["ion-tab-button{transition:background-color 80ms linear 0ms;height:100%;flex:1 1 0%;max-width:168px;font-weight:500;font-size:12px;line-height:16px;--color: var(--kirby-text-color-semi-dark);--color-selected: var(--kirby-black);--padding-start: 0;--padding-end: 0;--kirby-badge-position: absolute;--kirby-badge-top: .55em;--kirby-badge-left:calc(50% + .4em)}@media (hover: hover) and (pointer: fine){ion-tab-button.ion-focused{--background: whitesmoke;--background-focused-opacity: 0}ion-tab-button.ion-focused:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){ion-tab-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--background: whitesmoke}}ion-tab-button:active,ion-tab-button.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--background: #ebebeb}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-top: .3em;--kirby-badge-left:calc(50% + .2em)}@media (min-width: 768px){ion-tab-button{flex:none;flex-direction:row;font-size:14px;line-height:20px;--padding-start: 24px;--padding-end: 24px;--kirby-badge-position: absolute;--kirby-badge-top:calc(50% - 1.35em);--kirby-badge-left: 1.6em}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-position: relative;--kirby-badge-top: 0;--kirby-badge-left: 0;margin-left:2px;margin-bottom:1px}ion-tab-button ::ng-deep>kirby-icon{--kirby-icon-margin-right: 8px}}@media (min-width: 992px) and (hover: hover) and (pointer: fine){ion-tab-button{--padding-start: 12px;--padding-end: 12px}}\n"] }]
34
+ args: [{ selector: 'kirby-tab-button', template: "<ion-tab-button\n #ionTabButton\n [tab]=\"routerLink || tab\"\n (click)=\"onClick($event, ionTabButton.selected)\"\n>\n <ng-content\n *ngIf=\"icons.length === 1 || !ionTabButton.selected\"\n select=\"kirby-icon:not([selected-tab])\"\n ></ng-content>\n <ng-content *ngIf=\"ionTabButton.selected\" select=\"kirby-icon[selected-tab]\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"kirby-badge\"></ng-content>\n</ion-tab-button>\n", styles: ["ion-tab-button{transition:background-color 80ms linear 0ms;height:100%;flex:1 1 0%;max-width:168px;font-weight:500;font-size:12px;line-height:16px;--color: var(--kirby-text-color-semi-dark);--color-selected: var(--kirby-black);--padding-start: 0;--padding-end: 0;--kirby-badge-position: absolute;--kirby-badge-top: .55em;--kirby-badge-left: calc(50% + .4em) }@media (hover: hover) and (pointer: fine){ion-tab-button.ion-focused{--background: whitesmoke;--background-focused-opacity: 0}ion-tab-button.ion-focused:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){ion-tab-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--background: whitesmoke}}ion-tab-button:active,ion-tab-button.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--background: #ebebeb}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-top: .3em;--kirby-badge-left: calc(50% + .2em) }@media (min-width: 768px){ion-tab-button{flex:none;flex-direction:row;font-size:14px;line-height:20px;--padding-start: 24px;--padding-end: 24px;--kirby-badge-position: absolute;--kirby-badge-top: calc(50% - 1.35em) ;--kirby-badge-left: 1.6em}ion-tab-button ::ng-deep>kirby-badge.md{--kirby-badge-position: relative;--kirby-badge-top: 0;--kirby-badge-left: 0;margin-left:2px;margin-bottom:1px}ion-tab-button ::ng-deep>kirby-icon{--kirby-icon-margin-right: 8px}}@media (min-width: 992px) and (hover: hover) and (pointer: fine){ion-tab-button{--padding-start: 12px;--padding-end: 12px}}\n"] }]
35
35
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { routerLink: [{
36
36
  type: Input
37
37
  }], tab: [{
@@ -1,17 +1,28 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { KirbyIonicModule } from '@kirbydesign/designsystem/kirby-ionic-module';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, HostBinding, Input, Output, } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { IonicModule } from '@ionic/angular';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@ionic/angular";
6
7
  export class ToggleComponent {
7
- constructor() {
8
+ constructor(cdr) {
9
+ this.cdr = cdr;
8
10
  this.checked = false;
9
11
  this.disabled = false;
10
12
  this.checkedChange = new EventEmitter();
11
13
  this._pressed = false;
14
+ // Initialize default ControlValueAccessor callback functions (noop)
15
+ // eslint-disable-next-line no-empty-function
16
+ this._onChange = () => { };
17
+ // eslint-disable-next-line no-empty-function
18
+ this._onTouched = () => { };
19
+ }
20
+ get _isDisabled() {
21
+ return this.disabled ? 'disabled' : null;
12
22
  }
13
23
  onCheckedChange(checked) {
14
24
  this.checked = checked;
25
+ this._onChange(this.checked);
15
26
  this.checkedChange.emit(this.checked);
16
27
  }
17
28
  _onActive() {
@@ -19,18 +30,73 @@ export class ToggleComponent {
19
30
  }
20
31
  _onInactive() {
21
32
  this._pressed = false;
33
+ this._onTouched();
34
+ }
35
+ /**
36
+ * Sets the toggle's value. Part of the ControlValueAccessor interface
37
+ * required to integrate with Angular's core forms API.
38
+ *
39
+ * @param value New value to be written to the model.
40
+ */
41
+ writeValue(value) {
42
+ this.checked = value;
43
+ }
44
+ /**
45
+ * Saves a callback function to be invoked when the toggle's value
46
+ * changes from user input. Part of the ControlValueAccessor interface
47
+ * required to integrate with Angular's core forms API.
48
+ *
49
+ * @param fn Callback to be triggered when the value changes.
50
+ */
51
+ registerOnChange(fn) {
52
+ this._onChange = fn;
53
+ }
54
+ /**
55
+ * Saves a callback function to be invoked when the toggle is blurred
56
+ * by the user. Part of the ControlValueAccessor interface required
57
+ * to integrate with Angular's core forms API.
58
+ *
59
+ * @param fn Callback to be triggered when the component has been touched.
60
+ */
61
+ registerOnTouched(fn) {
62
+ this._onTouched = fn;
63
+ }
64
+ /**
65
+ * Disables the toggle. Part of the ControlValueAccessor interface required
66
+ * to integrate with Angular's core forms API.
67
+ *
68
+ * @param isDisabled Sets whether the component is disabled.
69
+ */
70
+ setDisabledState(isDisabled) {
71
+ this.disabled = isDisabled;
72
+ this.cdr.detectChanges();
22
73
  }
23
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: ToggleComponent, isStandalone: true, selector: "kirby-toggle", inputs: { checked: "checked", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [class.interaction-state-active]=\"_pressed\"\n (keydown.space)=\"_onActive()\"\n (keyup.space)=\"_onInactive()\"\n (blur)=\"_onInactive()\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n", styles: [":host{display:inline-flex}ion-toggle{--track-background: var(--kirby-semi-dark);--handle-background: var(--kirby-white);--track-background-checked: var(--kirby-success);--handle-background-checked: var(--kirby-white);--handle-transition: .2s;--handle-box-shadow: 0 1px 24px 0 rgba(28, 28, 28, .04)}@media (hover: hover) and (pointer: fine){ion-toggle{overflow:visible;contain:none}ion-toggle:focus-within::part(track){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){ion-toggle:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--track-background: #777777;--handle-background: whitesmoke;--track-background-checked: #0ee270;--handle-background-checked: whitesmoke}}ion-toggle:active,ion-toggle.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--track-background: #6c6c6c;--handle-background: #ebebeb;--track-background-checked: #0dcd65;--handle-background-checked: #ebebeb}ion-toggle.in-item.legacy-toggle{padding:0}\n"], dependencies: [{ kind: "ngmodule", type: KirbyIonicModule }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ToggleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
75
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: ToggleComponent, isStandalone: true, selector: "kirby-toggle", inputs: { checked: "checked", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, host: { properties: { "attr.disabled": "this._isDisabled" } }, providers: [
76
+ {
77
+ provide: NG_VALUE_ACCESSOR,
78
+ useExisting: forwardRef((() => ToggleComponent)),
79
+ multi: true,
80
+ },
81
+ ], ngImport: i0, template: "<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [class.interaction-state-active]=\"_pressed\"\n (keydown.space)=\"_onActive()\"\n (keyup.space)=\"_onInactive()\"\n (blur)=\"_onInactive()\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n", styles: [":host{display:inline-flex}ion-toggle{--track-background: var(--kirby-semi-dark);--handle-background: var(--kirby-white);--track-background-checked: var(--kirby-success);--handle-background-checked: var(--kirby-white);--handle-transition: .2s;--handle-box-shadow: 0 1px 24px 0 rgba(28, 28, 28, .04)}@media (hover: hover) and (pointer: fine){ion-toggle{overflow:visible;contain:none}ion-toggle:focus-within::part(track){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){ion-toggle:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--track-background: #777777;--handle-background: whitesmoke;--track-background-checked: #2dc172;--handle-background-checked: whitesmoke}}ion-toggle:active,ion-toggle.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--track-background: #6c6c6c;--handle-background: #ebebeb;--track-background-checked: #29ae67;--handle-background-checked: #ebebeb}ion-toggle.in-item.legacy-toggle{padding:0}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
82
  }
26
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ToggleComponent, decorators: [{
27
84
  type: Component,
28
- args: [{ standalone: true, imports: [KirbyIonicModule, CommonModule], selector: 'kirby-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [class.interaction-state-active]=\"_pressed\"\n (keydown.space)=\"_onActive()\"\n (keyup.space)=\"_onInactive()\"\n (blur)=\"_onInactive()\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n", styles: [":host{display:inline-flex}ion-toggle{--track-background: var(--kirby-semi-dark);--handle-background: var(--kirby-white);--track-background-checked: var(--kirby-success);--handle-background-checked: var(--kirby-white);--handle-transition: .2s;--handle-box-shadow: 0 1px 24px 0 rgba(28, 28, 28, .04)}@media (hover: hover) and (pointer: fine){ion-toggle{overflow:visible;contain:none}ion-toggle:focus-within::part(track){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){ion-toggle:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--track-background: #777777;--handle-background: whitesmoke;--track-background-checked: #0ee270;--handle-background-checked: whitesmoke}}ion-toggle:active,ion-toggle.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--track-background: #6c6c6c;--handle-background: #ebebeb;--track-background-checked: #0dcd65;--handle-background-checked: #ebebeb}ion-toggle.in-item.legacy-toggle{padding:0}\n"] }]
29
- }], propDecorators: { checked: [{
85
+ args: [{ standalone: true, imports: [IonicModule, CommonModule], selector: 'kirby-toggle', providers: [
86
+ {
87
+ provide: NG_VALUE_ACCESSOR,
88
+ useExisting: forwardRef((() => ToggleComponent)),
89
+ multi: true,
90
+ },
91
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-toggle\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [class.interaction-state-active]=\"_pressed\"\n (keydown.space)=\"_onActive()\"\n (keyup.space)=\"_onInactive()\"\n (blur)=\"_onInactive()\"\n (ionChange)=\"onCheckedChange($event.detail.checked)\"\n></ion-toggle>\n", styles: [":host{display:inline-flex}ion-toggle{--track-background: var(--kirby-semi-dark);--handle-background: var(--kirby-white);--track-background-checked: var(--kirby-success);--handle-background-checked: var(--kirby-white);--handle-transition: .2s;--handle-box-shadow: 0 1px 24px 0 rgba(28, 28, 28, .04)}@media (hover: hover) and (pointer: fine){ion-toggle{overflow:visible;contain:none}ion-toggle:focus-within::part(track){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){ion-toggle:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--track-background: #777777;--handle-background: whitesmoke;--track-background-checked: #2dc172;--handle-background-checked: whitesmoke}}ion-toggle:active,ion-toggle.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--track-background: #6c6c6c;--handle-background: #ebebeb;--track-background-checked: #29ae67;--handle-background-checked: #ebebeb}ion-toggle.in-item.legacy-toggle{padding:0}\n"] }]
92
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { checked: [{
30
93
  type: Input
31
94
  }], disabled: [{
32
95
  type: Input
96
+ }], _isDisabled: [{
97
+ type: HostBinding,
98
+ args: ['attr.disabled']
33
99
  }], checkedChange: [{
34
100
  type: Output
35
101
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3RvZ2dsZS9zcmMvdG9nZ2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3RvZ2dsZS9zcmMvdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7QUFVaEYsTUFBTSxPQUFPLGVBQWU7SUFSNUI7UUFTVyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFekIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXRELGFBQVEsR0FBRyxLQUFLLENBQUM7S0FjbEI7SUFaQyxlQUFlLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO2lJQW5CVSxlQUFlO3FIQUFmLGVBQWUsMktDWjVCLGdTQVNBLGdvQ0RIWSxnQkFBZ0IsMlRBQUUsWUFBWTs7MkZBTTdCLGVBQWU7a0JBUjNCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLFlBQy9CLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtpcmJ5SW9uaWNNb2R1bGUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2tpcmJ5LWlvbmljLW1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbS2lyYnlJb25pY01vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdraXJieS10b2dnbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9nZ2xlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUb2dnbGVDb21wb25lbnQge1xuICBASW5wdXQoKSBjaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgX3ByZXNzZWQgPSBmYWxzZTtcblxuICBvbkNoZWNrZWRDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgfVxuXG4gIF9vbkFjdGl2ZSgpIHtcbiAgICB0aGlzLl9wcmVzc2VkID0gdHJ1ZTtcbiAgfVxuXG4gIF9vbkluYWN0aXZlKCkge1xuICAgIHRoaXMuX3ByZXNzZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPGlvbi10b2dnbGVcbiAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5pbnRlcmFjdGlvbi1zdGF0ZS1hY3RpdmVdPVwiX3ByZXNzZWRcIlxuICAoa2V5ZG93bi5zcGFjZSk9XCJfb25BY3RpdmUoKVwiXG4gIChrZXl1cC5zcGFjZSk9XCJfb25JbmFjdGl2ZSgpXCJcbiAgKGJsdXIpPVwiX29uSW5hY3RpdmUoKVwiXG4gIChpb25DaGFuZ2UpPVwib25DaGVja2VkQ2hhbmdlKCRldmVudC5kZXRhaWwuY2hlY2tlZClcIlxuPjwvaW9uLXRvZ2dsZT5cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3RvZ2dsZS9zcmMvdG9nZ2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3RvZ2dsZS9zcmMvdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFpQjdDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRWpDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQU16QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFdEQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQWlCakIsb0VBQW9FO1FBQ3BFLDZDQUE2QztRQUNyQyxjQUFTLEdBQTZCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN2RCw2Q0FBNkM7UUFDckMsZUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQWhDZSxDQUFDO0lBSTlDLElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQU1ELGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBUUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ0Q7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0Q7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7aUlBekVVLGVBQWU7cUhBQWYsZUFBZSw2TkFUZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxFQUFDO2dCQUM5QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDMUJILGdTQVNBLGdvQ0RPWSxXQUFXLDJUQUFFLFlBQVk7OzJGQWF4QixlQUFlO2tCQWYzQixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsWUFDMUIsY0FBYyxhQUdiO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLGdCQUFnQixFQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTt3R0FLdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBS2xCLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uaWNNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAna2lyYnktdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRvZ2dsZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVG9nZ2xlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgQElucHV0KCkgY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBnZXQgX2lzRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBjaGVja2VkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIF9wcmVzc2VkID0gZmFsc2U7XG5cbiAgb25DaGVja2VkQ2hhbmdlKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xuICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuY2hlY2tlZCk7XG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgfVxuXG4gIF9vbkFjdGl2ZSgpIHtcbiAgICB0aGlzLl9wcmVzc2VkID0gdHJ1ZTtcbiAgfVxuXG4gIF9vbkluYWN0aXZlKCkge1xuICAgIHRoaXMuX3ByZXNzZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIC8vIEluaXRpYWxpemUgZGVmYXVsdCBDb250cm9sVmFsdWVBY2Nlc3NvciBjYWxsYmFjayBmdW5jdGlvbnMgKG5vb3ApXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIF9vbkNoYW5nZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9nZ2xlJ3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkID0gdmFsdWU7XG4gIH1cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSB0b2dnbGUncyB2YWx1ZVxuICAgKiBjaGFuZ2VzIGZyb20gdXNlciBpbnB1dC4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gICAqIHJlcXVpcmVkIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHRvZ2dsZSBpcyBibHVycmVkXG4gICAqIGJ5IHRoZSB1c2VyLiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB0b3VjaGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgdG9nZ2xlLiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxpb24tdG9nZ2xlXG4gIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuaW50ZXJhY3Rpb24tc3RhdGUtYWN0aXZlXT1cIl9wcmVzc2VkXCJcbiAgKGtleWRvd24uc3BhY2UpPVwiX29uQWN0aXZlKClcIlxuICAoa2V5dXAuc3BhY2UpPVwiX29uSW5hY3RpdmUoKVwiXG4gIChibHVyKT1cIl9vbkluYWN0aXZlKClcIlxuICAoaW9uQ2hhbmdlKT1cIm9uQ2hlY2tlZENoYW5nZSgkZXZlbnQuZGV0YWlsLmNoZWNrZWQpXCJcbj48L2lvbi10b2dnbGU+XG4iXX0=
@@ -2,7 +2,6 @@ import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';
5
- import { ThemeColorDirective } from '@kirbydesign/designsystem/shared';
6
5
 
7
6
  var AvatarSize;
8
7
  (function (AvatarSize) {
@@ -19,11 +18,11 @@ class AvatarComponent {
19
18
  return [this.themeColor, this.size].filter((cssClass) => !!cssClass);
20
19
  }
21
20
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: AvatarComponent, isStandalone: true, selector: "kirby-avatar", inputs: { imageSrc: "imageSrc", altText: "altText", stroke: "stroke", text: "text", overlay: "overlay", size: "size", themeColor: "themeColor" }, host: { properties: { "class": "this._cssClass" } }, ngImport: i0, template: "<div class=\"avatar\" [ngClass]=\"{ overlay: overlay, stroke: stroke }\">\n <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n", styles: [":host{--kirby-badge-elevation: 0 1px 24px 0 rgba(28, 28, 28, .04);--kirby-badge-position: absolute;--kirby-badge-right: -2px;--kirby-badge-top: -2px;--kirby-badge-z-index: 2;position:relative}.avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;position:relative;z-index:1;display:flex;justify-content:center;align-items:center;background-color:var(--kirby-white);color:var(--kirby-light-contrast);--kirby-icon-font-size: 24px}.avatar.stroke{border:1px solid var(--kirby-semi-light)}.avatar.overlay:before{content:\"\";background-color:var(--kirby-black);opacity:.05;width:100%;height:100%;position:absolute;top:0;left:0}.avatar img{object-fit:cover;max-width:100%;height:100%;width:100%}:host(.xs) .avatar{width:32px;height:32px;border-radius:8px}:host(.xs) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.sm) .avatar,:host(.sm) .avatar{width:40px;height:40px}:host-context(kirby-progress-circle.sm) .avatar .avatar-text,:host(.sm) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.md),:host(.md){--kirby-badge-right: 0px;--kirby-badge-top: 0px}:host-context(kirby-progress-circle.md) .avatar,:host(.md) .avatar{width:56px;height:56px;--kirby-icon-font-size: 32px}:host-context(kirby-progress-circle.md) .avatar .avatar-text,:host(.md) .avatar .avatar-text{font-size:18px}:host-context(kirby-progress-circle.lg),:host(.lg){--kirby-badge-right: 6px;--kirby-badge-top: 6px}:host-context(kirby-progress-circle.lg) .avatar,:host(.lg) .avatar{width:96px;height:96px;--kirby-icon-font-size: 56px}:host-context(kirby-progress-circle.lg) .avatar .avatar-text,:host(.lg) .avatar .avatar-text{font-size:32px}:host-context(kirby-item)[slot=start]{margin-inline-end:12px}:host-context(kirby-item)[slot=start].xs{margin-inline-end:16px}:host(.primary) .avatar{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}:host(.secondary) .avatar{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}:host(.tertiary) .avatar{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}:host(.success) .avatar{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}:host(.warning) .avatar{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}:host(.danger) .avatar{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}:host(.white-overlay) .avatar{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}:host(.light) .avatar{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}:host(.medium) .avatar{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}:host(.dark) .avatar{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}:host(.dark-overlay) .avatar{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host(.white) .avatar{background-color:var(--kirby-white);color:var(--kirby-white-contrast)}:host(.semi-light) .avatar{background-color:var(--kirby-semi-light);color:var(--kirby-semi-light-contrast)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: AvatarComponent, isStandalone: true, selector: "kirby-avatar", inputs: { imageSrc: "imageSrc", altText: "altText", stroke: "stroke", text: "text", overlay: "overlay", size: "size", themeColor: "themeColor" }, host: { properties: { "class": "this._cssClass" } }, ngImport: i0, template: "<div class=\"avatar\" [ngClass]=\"{ overlay: overlay, stroke: stroke }\">\n <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n", styles: [":host{--kirby-badge-position: absolute;--kirby-badge-right: -2px;--kirby-badge-top: -2px;--kirby-badge-z-index: 2;position:relative}.avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;position:relative;z-index:1;display:flex;justify-content:center;align-items:center;background-color:var(--kirby-white);color:var(--kirby-light-contrast);--kirby-icon-font-size: 24px}.avatar.stroke{border:1px solid var(--kirby-semi-light)}.avatar.overlay:before{content:\"\";background-color:var(--kirby-black);opacity:.05;width:100%;height:100%;position:absolute;top:0;left:0}.avatar img{object-fit:cover;max-width:100%;height:100%;width:100%}:host(.xs) .avatar{width:32px;height:32px;border-radius:8px}:host(.xs) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.sm) .avatar,:host(.sm) .avatar{width:40px;height:40px}:host-context(kirby-progress-circle.sm) .avatar .avatar-text,:host(.sm) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.md),:host(.md){--kirby-badge-right: 0px;--kirby-badge-top: 0px}:host-context(kirby-progress-circle.md) .avatar,:host(.md) .avatar{width:56px;height:56px;--kirby-icon-font-size: 32px}:host-context(kirby-progress-circle.md) .avatar .avatar-text,:host(.md) .avatar .avatar-text{font-size:18px}:host-context(kirby-progress-circle.lg),:host(.lg){--kirby-badge-right: 6px;--kirby-badge-top: 6px}:host-context(kirby-progress-circle.lg) .avatar,:host(.lg) .avatar{width:96px;height:96px;--kirby-icon-font-size: 56px}:host-context(kirby-progress-circle.lg) .avatar .avatar-text,:host(.lg) .avatar .avatar-text{font-size:32px}:host-context(kirby-item)[slot=start]{margin-inline-end:12px}:host-context(kirby-item)[slot=start].xs{margin-inline-end:16px}:host(.primary) .avatar{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}:host(.secondary) .avatar{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}:host(.tertiary) .avatar{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}:host(.success) .avatar{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}:host(.warning) .avatar{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}:host(.danger) .avatar{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}:host(.white-overlay) .avatar{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}:host(.light) .avatar{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}:host(.medium) .avatar{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}:host(.dark) .avatar{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}:host(.dark-overlay) .avatar{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host(.white) .avatar{background-color:var(--kirby-white);color:var(--kirby-white-contrast)}:host(.semi-light) .avatar{background-color:var(--kirby-semi-light);color:var(--kirby-semi-light-contrast)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
22
  }
24
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: AvatarComponent, decorators: [{
25
24
  type: Component,
26
- args: [{ standalone: true, imports: [CommonModule, ThemeColorDirective], selector: 'kirby-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"avatar\" [ngClass]=\"{ overlay: overlay, stroke: stroke }\">\n <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n", styles: [":host{--kirby-badge-elevation: 0 1px 24px 0 rgba(28, 28, 28, .04);--kirby-badge-position: absolute;--kirby-badge-right: -2px;--kirby-badge-top: -2px;--kirby-badge-z-index: 2;position:relative}.avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;position:relative;z-index:1;display:flex;justify-content:center;align-items:center;background-color:var(--kirby-white);color:var(--kirby-light-contrast);--kirby-icon-font-size: 24px}.avatar.stroke{border:1px solid var(--kirby-semi-light)}.avatar.overlay:before{content:\"\";background-color:var(--kirby-black);opacity:.05;width:100%;height:100%;position:absolute;top:0;left:0}.avatar img{object-fit:cover;max-width:100%;height:100%;width:100%}:host(.xs) .avatar{width:32px;height:32px;border-radius:8px}:host(.xs) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.sm) .avatar,:host(.sm) .avatar{width:40px;height:40px}:host-context(kirby-progress-circle.sm) .avatar .avatar-text,:host(.sm) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.md),:host(.md){--kirby-badge-right: 0px;--kirby-badge-top: 0px}:host-context(kirby-progress-circle.md) .avatar,:host(.md) .avatar{width:56px;height:56px;--kirby-icon-font-size: 32px}:host-context(kirby-progress-circle.md) .avatar .avatar-text,:host(.md) .avatar .avatar-text{font-size:18px}:host-context(kirby-progress-circle.lg),:host(.lg){--kirby-badge-right: 6px;--kirby-badge-top: 6px}:host-context(kirby-progress-circle.lg) .avatar,:host(.lg) .avatar{width:96px;height:96px;--kirby-icon-font-size: 56px}:host-context(kirby-progress-circle.lg) .avatar .avatar-text,:host(.lg) .avatar .avatar-text{font-size:32px}:host-context(kirby-item)[slot=start]{margin-inline-end:12px}:host-context(kirby-item)[slot=start].xs{margin-inline-end:16px}:host(.primary) .avatar{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}:host(.secondary) .avatar{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}:host(.tertiary) .avatar{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}:host(.success) .avatar{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}:host(.warning) .avatar{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}:host(.danger) .avatar{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}:host(.white-overlay) .avatar{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}:host(.light) .avatar{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}:host(.medium) .avatar{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}:host(.dark) .avatar{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}:host(.dark-overlay) .avatar{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host(.white) .avatar{background-color:var(--kirby-white);color:var(--kirby-white-contrast)}:host(.semi-light) .avatar{background-color:var(--kirby-semi-light);color:var(--kirby-semi-light-contrast)}\n"] }]
25
+ args: [{ standalone: true, imports: [CommonModule], selector: 'kirby-avatar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"avatar\" [ngClass]=\"{ overlay: overlay, stroke: stroke }\">\n <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n", styles: [":host{--kirby-badge-position: absolute;--kirby-badge-right: -2px;--kirby-badge-top: -2px;--kirby-badge-z-index: 2;position:relative}.avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;position:relative;z-index:1;display:flex;justify-content:center;align-items:center;background-color:var(--kirby-white);color:var(--kirby-light-contrast);--kirby-icon-font-size: 24px}.avatar.stroke{border:1px solid var(--kirby-semi-light)}.avatar.overlay:before{content:\"\";background-color:var(--kirby-black);opacity:.05;width:100%;height:100%;position:absolute;top:0;left:0}.avatar img{object-fit:cover;max-width:100%;height:100%;width:100%}:host(.xs) .avatar{width:32px;height:32px;border-radius:8px}:host(.xs) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.sm) .avatar,:host(.sm) .avatar{width:40px;height:40px}:host-context(kirby-progress-circle.sm) .avatar .avatar-text,:host(.sm) .avatar .avatar-text{font-size:14px}:host-context(kirby-progress-circle.md),:host(.md){--kirby-badge-right: 0px;--kirby-badge-top: 0px}:host-context(kirby-progress-circle.md) .avatar,:host(.md) .avatar{width:56px;height:56px;--kirby-icon-font-size: 32px}:host-context(kirby-progress-circle.md) .avatar .avatar-text,:host(.md) .avatar .avatar-text{font-size:18px}:host-context(kirby-progress-circle.lg),:host(.lg){--kirby-badge-right: 6px;--kirby-badge-top: 6px}:host-context(kirby-progress-circle.lg) .avatar,:host(.lg) .avatar{width:96px;height:96px;--kirby-icon-font-size: 56px}:host-context(kirby-progress-circle.lg) .avatar .avatar-text,:host(.lg) .avatar .avatar-text{font-size:32px}:host-context(kirby-item)[slot=start]{margin-inline-end:12px}:host-context(kirby-item)[slot=start].xs{margin-inline-end:16px}:host(.primary) .avatar{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}:host(.secondary) .avatar{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}:host(.tertiary) .avatar{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}:host(.success) .avatar{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}:host(.warning) .avatar{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}:host(.danger) .avatar{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}:host(.white-overlay) .avatar{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}:host(.light) .avatar{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}:host(.medium) .avatar{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}:host(.dark) .avatar{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}:host(.dark-overlay) .avatar{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host(.white) .avatar{background-color:var(--kirby-white);color:var(--kirby-white-contrast)}:host(.semi-light) .avatar{background-color:var(--kirby-semi-light);color:var(--kirby-semi-light-contrast)}\n"] }]
27
26
  }], propDecorators: { imageSrc: [{
28
27
  type: Input
29
28
  }], altText: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-avatar.mjs","sources":["../../../../libs/designsystem/avatar/src/avatar.component.ts","../../../../libs/designsystem/avatar/src/avatar.component.html","../../../../libs/designsystem/avatar/src/kirbydesign-designsystem-avatar.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { BrandColor, NotificationColor } from '@kirbydesign/core';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\n\nexport enum AvatarSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule, ThemeColorDirective],\n selector: 'kirby-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n @Input() imageSrc: string;\n @Input() altText: string;\n @Input() stroke: boolean;\n @Input() text: string;\n @Input() overlay: boolean;\n @Input() size: AvatarSize | `${AvatarSize}` = AvatarSize.SM;\n @Input()\n themeColor: NotificationColor | BrandColor | 'medium' | 'white' | 'dark' | 'light' | 'semi-light';\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n }\n}\n","<div class=\"avatar\" [ngClass]=\"{ overlay: overlay, stroke: stroke }\">\n <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;IAMY,WAKX;AALD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACX,CAAC,EALW,UAAU,KAAV,UAAU,GAKrB,EAAA,CAAA,CAAA,CAAA;MAUY,eAAe,CAAA;AAR5B,IAAA,WAAA,GAAA;AAcW,QAAA,IAAA,CAAA,IAAI,GAAiC,UAAU,CAAC,EAAE,CAAC;AAQ7D,KAAA;AAJC,IAAA,IACI,SAAS,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;KACtE;iIAbU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB5B,kVAMA,EAAA,MAAA,EAAA,CAAA,4gGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAMX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAClC,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kVAAA,EAAA,MAAA,EAAA,CAAA,4gGAAA,CAAA,EAAA,CAAA;8BAGtC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIF,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,OAAO,CAAA;;;AE/BtB;;AAEG;;;;"}
1
+ {"version":3,"file":"kirbydesign-designsystem-avatar.mjs","sources":["../../../../libs/designsystem/avatar/src/avatar.component.ts","../../../../libs/designsystem/avatar/src/avatar.component.html","../../../../libs/designsystem/avatar/src/kirbydesign-designsystem-avatar.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { BrandColor, NotificationColor } from '@kirbydesign/core';\n\nexport enum AvatarSize {\n XS = 'xs',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'kirby-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n @Input() imageSrc: string;\n @Input() altText: string;\n @Input() stroke: boolean;\n @Input() text: string;\n @Input() overlay: boolean;\n @Input() size: AvatarSize | `${AvatarSize}` = AvatarSize.SM;\n @Input()\n themeColor: NotificationColor | BrandColor | 'medium' | 'white' | 'dark' | 'light' | 'semi-light';\n\n @HostBinding('class')\n get _cssClass() {\n return [this.themeColor, this.size].filter((cssClass) => !!cssClass);\n }\n}\n","<div class=\"avatar\" [ngClass]=\"{ overlay: overlay, stroke: stroke }\">\n <img *ngIf=\"imageSrc\" [src]=\"imageSrc\" [attr.alt]=\"altText\" />\n <ng-content *ngIf=\"!text\" select=\"kirby-icon\"></ng-content>\n <span class=\"avatar-text\" *ngIf=\"text\">{{ text }}</span>\n</div>\n<ng-content select=\"kirby-badge\"></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;IAKY,WAKX;AALD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACX,CAAC,EALW,UAAU,KAAV,UAAU,GAKrB,EAAA,CAAA,CAAA,CAAA;MAUY,eAAe,CAAA;AAR5B,IAAA,WAAA,GAAA;AAcW,QAAA,IAAA,CAAA,IAAI,GAAiC,UAAU,CAAC,EAAE,CAAC;AAQ7D,KAAA;AAJC,IAAA,IACI,SAAS,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;KACtE;iIAbU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB5B,kVAMA,EAAA,MAAA,EAAA,CAAA,g9FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAMX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,YACb,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kVAAA,EAAA,MAAA,EAAA,CAAA,g9FAAA,CAAA,EAAA,CAAA;8BAGtC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIF,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,OAAO,CAAA;;;AE9BtB;;AAEG;;;;"}
@@ -1,21 +1,22 @@
1
- import * as i1 from '@angular/common';
1
+ import * as i2 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Component, Input, HostBinding } from '@angular/core';
5
5
  import { KirbyIonicModule } from '@kirbydesign/designsystem/kirby-ionic-module';
6
+ import * as i1 from '@kirbydesign/designsystem/shared';
6
7
  import { ThemeColorDirective } from '@kirbydesign/designsystem/shared';
7
- import * as i2 from '@ionic/angular';
8
+ import * as i3 from '@ionic/angular';
8
9
 
9
10
  class BadgeComponent {
10
11
  constructor() {
11
12
  this.size = 'md';
12
13
  }
13
14
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: BadgeComponent, isStandalone: true, selector: "kirby-badge", inputs: { text: "text", size: "size" }, host: { properties: { "class": "this.size" } }, ngImport: i0, template: "<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n", styles: [":host{position:var(--kirby-badge-position, relative);left:var(--kirby-badge-left, auto);right:var(--kirby-badge-right, auto);top:var(--kirby-badge-top, auto);z-index:var(--kirby-badge-z-index, auto);font-size:10px;line-height:1}:host ion-badge{--background: var(--kirby-badge-background-color, var(--kirby-white));--color: var(--kirby-badge-color, var(--kirby-white-contrast));box-sizing:border-box;border-radius:8px;font-size:inherit;position:relative;box-shadow:var(--kirby-badge-elevation, none)}:host ion-badge ::ng-deep>kirby-icon{--kirby-icon-font-size: 16px;position:absolute;top:0;left:0}:host(.sm) ion-badge{padding:initial;min-height:initial;min-width:initial;height:8px;width:8px}:host(.md) ion-badge{--padding-top: 3px;--padding-end: 5px;--padding-bottom: 3px;--padding-start: 5px;min-width:16px;min-height:16px}:host(.success) ion-badge{--background: var(--kirby-success);--color: var(--kirby-badge-color, var(--kirby-success-contrast))}:host(.warning) ion-badge{--background: var(--kirby-warning);--color: var(--kirby-badge-color, var(--kirby-warning-contrast))}:host(.danger) ion-badge{--background: var(--kirby-danger);--color: var(--kirby-badge-color, var(--kirby-text-color-white))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: KirbyIonicModule }, { kind: "component", type: i2.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
15
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: BadgeComponent, isStandalone: true, selector: "kirby-badge", inputs: { text: "text", size: "size" }, host: { properties: { "class": "this.size" } }, hostDirectives: [{ directive: i1.ThemeColorDirective, inputs: ["themeColor", "themeColor"] }], ngImport: i0, template: "<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n", styles: [":host{position:var(--kirby-badge-position, relative);left:var(--kirby-badge-left, auto);right:var(--kirby-badge-right, auto);top:var(--kirby-badge-top, auto);z-index:var(--kirby-badge-z-index, auto);font-size:10px;line-height:1}:host ion-badge{--background: var(--kirby-badge-background-color, var(--kirby-white));--color: var(--kirby-badge-color, var(--kirby-white-contrast));box-sizing:border-box;border-radius:8px;font-size:inherit;position:relative;box-shadow:var(--kirby-badge-elevation, none)}:host ion-badge ::ng-deep>kirby-icon{--kirby-icon-font-size: 16px;position:absolute;top:0;left:0}:host(.sm) ion-badge{padding:initial;min-height:initial;min-width:initial;height:8px;width:8px}:host(.md) ion-badge{--padding-top: 3px;--padding-end: 5px;--padding-bottom: 3px;--padding-start: 5px;min-width:16px;min-height:16px}:host(.success) ion-badge{--background: var(--kirby-success);--color: var(--kirby-badge-color, var(--kirby-success-contrast))}:host(.warning) ion-badge{--background: var(--kirby-warning);--color: var(--kirby-badge-color, var(--kirby-warning-contrast))}:host(.danger) ion-badge{--background: var(--kirby-danger);--color: var(--kirby-badge-color, var(--kirby-text-color-white))}:host(.default) ion-badge,:host(.white) ion-badge{--kirby-badge-elevation: 0 20px 30px -15px rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 12%)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: KirbyIonicModule }, { kind: "component", type: i3.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
15
16
  }
16
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: BadgeComponent, decorators: [{
17
18
  type: Component,
18
- args: [{ selector: 'kirby-badge', standalone: true, imports: [CommonModule, KirbyIonicModule, ThemeColorDirective], template: "<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n", styles: [":host{position:var(--kirby-badge-position, relative);left:var(--kirby-badge-left, auto);right:var(--kirby-badge-right, auto);top:var(--kirby-badge-top, auto);z-index:var(--kirby-badge-z-index, auto);font-size:10px;line-height:1}:host ion-badge{--background: var(--kirby-badge-background-color, var(--kirby-white));--color: var(--kirby-badge-color, var(--kirby-white-contrast));box-sizing:border-box;border-radius:8px;font-size:inherit;position:relative;box-shadow:var(--kirby-badge-elevation, none)}:host ion-badge ::ng-deep>kirby-icon{--kirby-icon-font-size: 16px;position:absolute;top:0;left:0}:host(.sm) ion-badge{padding:initial;min-height:initial;min-width:initial;height:8px;width:8px}:host(.md) ion-badge{--padding-top: 3px;--padding-end: 5px;--padding-bottom: 3px;--padding-start: 5px;min-width:16px;min-height:16px}:host(.success) ion-badge{--background: var(--kirby-success);--color: var(--kirby-badge-color, var(--kirby-success-contrast))}:host(.warning) ion-badge{--background: var(--kirby-warning);--color: var(--kirby-badge-color, var(--kirby-warning-contrast))}:host(.danger) ion-badge{--background: var(--kirby-danger);--color: var(--kirby-badge-color, var(--kirby-text-color-white))}\n"] }]
19
+ args: [{ selector: 'kirby-badge', standalone: true, imports: [CommonModule, KirbyIonicModule], hostDirectives: [{ directive: ThemeColorDirective, inputs: ['themeColor'] }], template: "<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n", styles: [":host{position:var(--kirby-badge-position, relative);left:var(--kirby-badge-left, auto);right:var(--kirby-badge-right, auto);top:var(--kirby-badge-top, auto);z-index:var(--kirby-badge-z-index, auto);font-size:10px;line-height:1}:host ion-badge{--background: var(--kirby-badge-background-color, var(--kirby-white));--color: var(--kirby-badge-color, var(--kirby-white-contrast));box-sizing:border-box;border-radius:8px;font-size:inherit;position:relative;box-shadow:var(--kirby-badge-elevation, none)}:host ion-badge ::ng-deep>kirby-icon{--kirby-icon-font-size: 16px;position:absolute;top:0;left:0}:host(.sm) ion-badge{padding:initial;min-height:initial;min-width:initial;height:8px;width:8px}:host(.md) ion-badge{--padding-top: 3px;--padding-end: 5px;--padding-bottom: 3px;--padding-start: 5px;min-width:16px;min-height:16px}:host(.success) ion-badge{--background: var(--kirby-success);--color: var(--kirby-badge-color, var(--kirby-success-contrast))}:host(.warning) ion-badge{--background: var(--kirby-warning);--color: var(--kirby-badge-color, var(--kirby-warning-contrast))}:host(.danger) ion-badge{--background: var(--kirby-danger);--color: var(--kirby-badge-color, var(--kirby-text-color-white))}:host(.default) ion-badge,:host(.white) ion-badge{--kirby-badge-elevation: 0 20px 30px -15px rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 12%)}\n"] }]
19
20
  }], propDecorators: { text: [{
20
21
  type: Input
21
22
  }], size: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-badge.mjs","sources":["../../../../libs/designsystem/badge/src/badge.component.ts","../../../../libs/designsystem/badge/src/badge.component.html","../../../../libs/designsystem/badge/src/kirbydesign-designsystem-badge.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { KirbyIonicModule } from '@kirbydesign/designsystem/kirby-ionic-module';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\n\nexport type BadgeSize = 'sm' | 'md';\n\n@Component({\n selector: 'kirby-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n standalone: true,\n imports: [CommonModule, KirbyIonicModule, ThemeColorDirective],\n})\nexport class BadgeComponent {\n @Input() text: string;\n\n @HostBinding('class')\n @Input()\n size: BadgeSize = 'md';\n}\n","<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;MAca,cAAc,CAAA;AAP3B,IAAA,WAAA,GAAA;QAYE,IAAI,CAAA,IAAA,GAAc,IAAI,CAAC;AACxB,KAAA;iIANY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,ECd3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+MAKA,EDOY,MAAA,EAAA,CAAA,orCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,kIAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAE7B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;+BACE,aAAa,EAAA,UAAA,EAGX,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+MAAA,EAAA,MAAA,EAAA,CAAA,orCAAA,CAAA,EAAA,CAAA;8BAGrD,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,OAAO,CAAA;;sBACnB,KAAK;;;AElBR;;AAEG;;;;"}
1
+ {"version":3,"file":"kirbydesign-designsystem-badge.mjs","sources":["../../../../libs/designsystem/badge/src/badge.component.ts","../../../../libs/designsystem/badge/src/badge.component.html","../../../../libs/designsystem/badge/src/kirbydesign-designsystem-badge.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { KirbyIonicModule } from '@kirbydesign/designsystem/kirby-ionic-module';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\n\nexport type BadgeSize = 'sm' | 'md';\n\n@Component({\n selector: 'kirby-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n standalone: true,\n imports: [CommonModule, KirbyIonicModule],\n hostDirectives: [{ directive: ThemeColorDirective, inputs: ['themeColor'] }],\n})\nexport class BadgeComponent {\n @Input() text: string;\n\n @HostBinding('class')\n @Input()\n size: BadgeSize = 'md';\n}\n","<ion-badge>\n <span *ngIf=\"size === 'sm'\"></span>\n <ng-content *ngIf=\"!text && size === 'md'\"></ng-content>\n <ng-container *ngIf=\"text && size === 'md'\">{{ text }}</ng-container>\n</ion-badge>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;MAea,cAAc,CAAA;AAR3B,IAAA,WAAA,GAAA;QAaE,IAAI,CAAA,IAAA,GAAc,IAAI,CAAC;AACxB,KAAA;iIANY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,ECf3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+MAKA,EDOY,MAAA,EAAA,CAAA,o0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,kIAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,aAAa,EAAA,UAAA,EAGX,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,gBAAgB,CAAC,EACzB,cAAA,EAAA,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,+MAAA,EAAA,MAAA,EAAA,CAAA,o0CAAA,CAAA,EAAA,CAAA;8BAGnE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAIN,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,OAAO,CAAA;;sBACnB,KAAK;;;AEnBR;;AAEG;;;;"}