@kirbydesign/designsystem 11.4.0 → 11.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/action-group/index.d.ts.map +1 -1
  2. package/badge/index.d.ts.map +1 -1
  3. package/button/index.d.ts.map +1 -1
  4. package/calendar/index.d.ts.map +1 -1
  5. package/card/index.d.ts.map +1 -1
  6. package/chart/index.d.ts.map +1 -1
  7. package/config/index.d.ts.map +1 -1
  8. package/dropdown/index.d.ts +2 -2
  9. package/dropdown/index.d.ts.map +1 -1
  10. package/fesm2022/kirbydesign-designsystem-accordion.mjs +10 -10
  11. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  12. package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
  13. package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
  14. package/fesm2022/kirbydesign-designsystem-avatar.mjs +3 -3
  15. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  16. package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
  17. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  18. package/fesm2022/kirbydesign-designsystem-button.mjs +3 -3
  19. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  20. package/fesm2022/kirbydesign-designsystem-calendar.mjs +3 -3
  21. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  22. package/fesm2022/kirbydesign-designsystem-card.mjs +16 -16
  23. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  24. package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
  25. package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
  26. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +3 -3
  27. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  28. package/fesm2022/kirbydesign-designsystem-config.mjs.map +1 -1
  29. package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
  30. package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
  31. package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
  32. package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
  33. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +16 -14
  34. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  35. package/fesm2022/kirbydesign-designsystem-empty-state.mjs +7 -7
  36. package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
  37. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
  38. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
  39. package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
  40. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  41. package/fesm2022/kirbydesign-designsystem-form-field.mjs +28 -28
  42. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  43. package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
  44. package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
  45. package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
  46. package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
  47. package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
  48. package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
  49. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  50. package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
  51. package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
  52. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
  53. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  54. package/fesm2022/kirbydesign-designsystem-item.mjs +10 -10
  55. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  56. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
  57. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
  58. package/fesm2022/kirbydesign-designsystem-list.mjs +42 -42
  59. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  60. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
  61. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
  62. package/fesm2022/kirbydesign-designsystem-menu.mjs +3 -3
  63. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  64. package/fesm2022/kirbydesign-designsystem-modal.mjs +42 -42
  65. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  66. package/fesm2022/kirbydesign-designsystem-page.mjs +40 -40
  67. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  68. package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
  69. package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
  70. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
  71. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
  72. package/fesm2022/kirbydesign-designsystem-radio.mjs +15 -15
  73. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  74. package/fesm2022/kirbydesign-designsystem-range.mjs +8 -5
  75. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  76. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +3 -3
  77. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
  78. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
  79. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  80. package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
  81. package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
  82. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
  83. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  84. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
  85. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
  86. package/fesm2022/kirbydesign-designsystem-shared.mjs +18 -18
  87. package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
  88. package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
  89. package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
  90. package/fesm2022/kirbydesign-designsystem-slide.mjs +13 -13
  91. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  92. package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
  93. package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
  94. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +10 -10
  95. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  96. package/fesm2022/kirbydesign-designsystem-tabs.mjs +13 -13
  97. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  98. package/fesm2022/kirbydesign-designsystem-testing-base.mjs +286 -286
  99. package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  100. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
  101. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  102. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
  103. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  104. package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
  105. package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
  106. package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
  107. package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
  108. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +8 -7
  109. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
  110. package/fesm2022/kirbydesign-designsystem-toggle.mjs +5 -4
  111. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  112. package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
  113. package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
  114. package/fesm2022/kirbydesign-designsystem.mjs +32 -29
  115. package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
  116. package/flag/index.d.ts.map +1 -1
  117. package/form-field/index.d.ts.map +1 -1
  118. package/icon/index.d.ts.map +1 -1
  119. package/index.d.ts +3 -1
  120. package/index.d.ts.map +1 -1
  121. package/item-sliding/index.d.ts.map +1 -1
  122. package/list/index.d.ts.map +1 -1
  123. package/modal/index.d.ts.map +1 -1
  124. package/package.json +2 -2
  125. package/page/index.d.ts.map +1 -1
  126. package/radio/index.d.ts +2 -2
  127. package/radio/index.d.ts.map +1 -1
  128. package/range/index.d.ts +3 -2
  129. package/range/index.d.ts.map +1 -1
  130. package/shared/floating/index.d.ts.map +1 -1
  131. package/shared/index.d.ts.map +1 -1
  132. package/slide/index.d.ts.map +1 -1
  133. package/testing/index.d.ts.map +1 -1
  134. package/testing-base/index.d.ts.map +1 -1
  135. package/toast/index.d.ts.map +1 -1
  136. package/toggle/index.d.ts.map +1 -1
  137. package/toggle-button/index.d.ts.map +1 -1
  138. package/types/index.d.ts.map +1 -1
@@ -131,12 +131,12 @@ class PopoverComponent {
131
131
  this.renderer.setStyle(this.targetElement, 'pointer-events', 'none');
132
132
  }
133
133
  }
134
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
135
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.13", type: PopoverComponent, isStandalone: true, selector: "kirby-popover", inputs: { popout: "popout", target: "target" }, outputs: { willHide: "willHide" }, host: { listeners: { "window:resize": "_onWindowResize()" } }, viewQueries: [{ propertyName: "wrapperElement", first: true, predicate: ["wrapper"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `
134
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
135
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: PopoverComponent, isStandalone: true, selector: "kirby-popover", inputs: { popout: "popout", target: "target" }, outputs: { willHide: "willHide" }, host: { listeners: { "window:resize": "_onWindowResize()" } }, viewQueries: [{ propertyName: "wrapperElement", first: true, predicate: ["wrapper"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `
136
136
  <div #wrapper class="wrapper"><ng-content></ng-content></div>
137
137
  `, isInline: true, styles: [":host{display:none;position:fixed;inset:0;z-index:850}:host(.is-opening){display:block;visibility:hidden}:host(.is-open){display:block}.wrapper{position:fixed;margin-top:4px;margin-bottom:4px}\n"] }); }
138
138
  }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PopoverComponent, decorators: [{
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PopoverComponent, decorators: [{
140
140
  type: Component,
141
141
  args: [{ selector: 'kirby-popover', template: `
142
142
  <div #wrapper class="wrapper"><ng-content></ng-content></div>
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-popover.mjs","sources":["../tmp-esm2022/popover/popover.component.js","../tmp-esm2022/popover/kirbydesign-designsystem-popover.js"],"sourcesContent":["import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';\nimport { DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\nimport * as i0 from \"@angular/core\";\nexport var HorizontalDirection;\n(function (HorizontalDirection) {\n HorizontalDirection[\"right\"] = \"right\";\n HorizontalDirection[\"left\"] = \"left\";\n})(HorizontalDirection || (HorizontalDirection = {}));\nexport class PopoverComponent {\n get targetElement() {\n if (this.target instanceof ElementRef) {\n return this.target.nativeElement;\n }\n else {\n return this.target;\n }\n }\n _onWindowResize() {\n this.hide();\n }\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n // removeEventListener same instance of event handler & options\n this.preventScrollEventListenerOptions = {\n passive: false,\n };\n this.POPOVER_BODY_PADDING = 12;\n this.isShowing = false;\n this.popout = HorizontalDirection.right;\n this.willHide = new EventEmitter();\n this.document = elementRef.nativeElement.ownerDocument;\n }\n ngAfterViewInit() {\n this.placePopoverAboveClosestModal();\n this.renderer.removeChild(this.elementRef.nativeElement.parentElement, this.elementRef.nativeElement);\n }\n ngOnDestroy() {\n this.hide();\n }\n placePopoverAboveClosestModal() {\n const closestIonModal = this.elementRef.nativeElement.closest('ion-modal');\n if (closestIonModal) {\n this.zIndex = parseInt(closestIonModal.style.zIndex) + 1;\n this.elementRef.nativeElement.style.zIndex = `${this.zIndex}`;\n }\n else {\n this.zIndex = parseInt(DesignTokenHelper.zLayer('popover'));\n }\n }\n static preventEventOutsidePopover(event) {\n if (event.target instanceof HTMLElement) {\n const targetIsInPopover = !!event.target.closest('kirby-popover');\n if (!targetIsInPopover) {\n event.preventDefault();\n }\n }\n }\n preventScroll() {\n this.isFirstToLockScroll = !this.document.body.classList.contains('backdrop-no-scroll');\n if (this.isFirstToLockScroll) {\n this.renderer.addClass(this.document.body, 'backdrop-no-scroll');\n }\n this.disposeTouchMoveListener = this.renderer.listen(this.document, 'touchmove', PopoverComponent.preventEventOutsidePopover, this.preventScrollEventListenerOptions);\n }\n releaseScroll() {\n if (this.isFirstToLockScroll) {\n this.renderer.removeClass(this.document.body, 'backdrop-no-scroll');\n }\n this.disposeTouchMoveListener?.();\n }\n show() {\n this.renderer.addClass(this.elementRef.nativeElement, 'is-opening');\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n this.preventScroll();\n this.positionWrapper();\n this.renderer.addClass(this.elementRef.nativeElement, 'is-open');\n this.renderer.removeClass(this.elementRef.nativeElement, 'is-opening');\n this.isShowing = true;\n }\n hide() {\n if (!this.isShowing)\n return;\n this.willHide.emit();\n this.renderer.removeChild(this.elementRef.nativeElement.parentElement, this.elementRef.nativeElement);\n this.releaseScroll();\n this.renderer.removeStyle(this.targetElement, 'z-index');\n this.renderer.removeStyle(this.targetElement, 'pointer-events');\n this.isShowing = false;\n }\n positionWrapper() {\n const targetDimensions = this.targetElement.getBoundingClientRect();\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n const wrapperElement = this.wrapperElement.nativeElement;\n const wrapperDimensions = wrapperElement.getBoundingClientRect();\n const viewport = wrapperElement.ownerDocument.defaultView;\n this.positionHorizontally(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n this.positionVertically(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n }\n positionHorizontally(viewPort, wrapperElement, targetDimensions, wrapperDimensions) {\n const viewPortWidth = viewPort.innerWidth;\n const contentWidth = wrapperDimensions.width;\n const availableSpaceRight = viewPortWidth - targetDimensions.left;\n const availableSpaceLeft = targetDimensions.right;\n const contentCanFitRightOfTarget = availableSpaceRight >= contentWidth + this.POPOVER_BODY_PADDING;\n const openRight = contentCanFitRightOfTarget || availableSpaceRight >= availableSpaceLeft;\n const [direction, oppositeDirection] = this.popout === HorizontalDirection.left || !openRight\n ? ['left', 'right']\n : ['right', 'left'];\n const pxValue = direction === 'left' ? viewPortWidth - targetDimensions.right : targetDimensions.left;\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n }\n positionVertically(viewPort, wrapperElement, targetDimensions, wrapperDimensions) {\n const viewPortHeight = viewPort.innerHeight;\n const contentHeight = wrapperDimensions.height;\n const availableSpaceDown = viewPortHeight - targetDimensions.bottom;\n const availableSpaceUp = targetDimensions.top;\n const contentCanFitBelowTarget = availableSpaceDown >= contentHeight + this.POPOVER_BODY_PADDING;\n const isAvailableSpaceBelow = contentCanFitBelowTarget || availableSpaceDown >= availableSpaceUp;\n const [direction, oppositeDirection] = isAvailableSpaceBelow\n ? ['bottom', 'top']\n : ['top', 'bottom'];\n const pxValue = direction === 'bottom' ? targetDimensions.bottom : viewPortHeight - targetDimensions.top;\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n if (direction === 'top') {\n // Ensure target is elevated above shadows in popover, i.e. content wrapped in Card:\n this.renderer.setStyle(this.targetElement, 'z-index', `${this.zIndex + 1}`);\n this.renderer.setStyle(this.targetElement, 'pointer-events', 'none');\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.13\", type: PopoverComponent, isStandalone: true, selector: \"kirby-popover\", inputs: { popout: \"popout\", target: \"target\" }, outputs: { willHide: \"willHide\" }, host: { listeners: { \"window:resize\": \"_onWindowResize()\" } }, viewQueries: [{ propertyName: \"wrapperElement\", first: true, predicate: [\"wrapper\"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `\n <div #wrapper class=\"wrapper\"><ng-content></ng-content></div>\n `, isInline: true, styles: [\":host{display:none;position:fixed;inset:0;z-index:850}:host(.is-opening){display:block;visibility:hidden}:host(.is-open){display:block}.wrapper{position:fixed;margin-top:4px;margin-bottom:4px}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: PopoverComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kirby-popover', template: `\n <div #wrapper class=\"wrapper\"><ng-content></ng-content></div>\n `, styles: [\":host{display:none;position:fixed;inset:0;z-index:850}:host(.is-opening){display:block;visibility:hidden}:host(.is-open){display:block}.wrapper{position:fixed;margin-top:4px;margin-bottom:4px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { wrapperElement: [{\n type: ViewChild,\n args: ['wrapper', { static: true, read: ElementRef }]\n }], popout: [{\n type: Input\n }], target: [{\n type: Input\n }], willHide: [{\n type: Output\n }], _onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wb3BvdmVyL3NyYy9wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUV0RSxNQUFNLENBQU4sSUFBWSxtQkFHWDtBQUhELFdBQVksbUJBQW1CO0lBQzdCLHNDQUFlLENBQUE7SUFDZixvQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUFTRCxNQUFNLE9BQU8sZ0JBQWdCO0lBeUIzQixJQUFZLGFBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFHRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUlELFlBQ1UsVUFBbUMsRUFDbkMsUUFBbUI7UUFEbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQXpDN0IsK0RBQStEO1FBQzlDLHNDQUFpQyxHQUFHO1lBQ25ELE9BQU8sRUFBRSxLQUFLO1NBQ1MsQ0FBQztRQUVULHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUVuQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBU25DLFdBQU0sR0FBbUQsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1FBTW5GLGFBQVEsR0FB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QUksQ0FBQyxDQUFDO1FBRTFFLElBQUksU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3hCLG9GQUFvRjtZQUNwRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDO2tJQXBNVSxnQkFBZ0I7c0hBQWhCLGdCQUFnQixpVEFhaUIsVUFBVSwyQ0FsQjVDOztHQUVUOzs0RkFHVSxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsZUFBZSxZQUNmOztHQUVUOztzQkFnQkEsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7O3NCQUd2RCxLQUFLOztzQkFHTCxLQUFLOztzQkFHTCxNQUFNOztzQkFXTixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3R5cGVzJztcbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcblxuZXhwb3J0IGVudW0gSG9yaXpvbnRhbERpcmVjdGlvbiB7XG4gIHJpZ2h0ID0gJ3JpZ2h0JyxcbiAgbGVmdCA9ICdsZWZ0Jyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcG9wb3ZlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjd3JhcHBlciBjbGFzcz1cIndyYXBwZXJcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8vIHJlbW92ZUV2ZW50TGlzdGVuZXIgc2FtZSBpbnN0YW5jZSBvZiBldmVudCBoYW5kbGVyICYgb3B0aW9uc1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXZlbnRTY3JvbGxFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgfSBhcyBFdmVudExpc3RlbmVyT3B0aW9ucztcblxuICBwcml2YXRlIHJlYWRvbmx5IFBPUE9WRVJfQk9EWV9QQURESU5HID0gMTI7XG5cbiAgcHJpdmF0ZSBpc1Nob3dpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc0ZpcnN0VG9Mb2NrU2Nyb2xsOiBib29sZWFuO1xuICBwcml2YXRlIHpJbmRleDogbnVtYmVyO1xuICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcblxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgd3JhcHBlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHBvcG91dDogSG9yaXpvbnRhbERpcmVjdGlvbiB8IGAke0hvcml6b250YWxEaXJlY3Rpb259YCA9IEhvcml6b250YWxEaXJlY3Rpb24ucmlnaHQ7XG5cbiAgQElucHV0KClcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBPdXRwdXQoKVxuICB3aWxsSGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGdldCB0YXJnZXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBpZiAodGhpcy50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy50YXJnZXQubmF0aXZlRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBfb25XaW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc3Bvc2VUb3VjaE1vdmVMaXN0ZW5lcjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wbGFjZVBvcG92ZXJBYm92ZUNsb3Nlc3RNb2RhbCgpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIHBsYWNlUG9wb3ZlckFib3ZlQ2xvc2VzdE1vZGFsKCkge1xuICAgIGNvbnN0IGNsb3Nlc3RJb25Nb2RhbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2lvbi1tb2RhbCcpO1xuICAgIGlmIChjbG9zZXN0SW9uTW9kYWwpIHtcbiAgICAgIHRoaXMuekluZGV4ID0gcGFyc2VJbnQoKGNsb3Nlc3RJb25Nb2RhbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuekluZGV4KSArIDE7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS56SW5kZXggPSBgJHt0aGlzLnpJbmRleH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnpJbmRleCA9IHBhcnNlSW50KERlc2lnblRva2VuSGVscGVyLnpMYXllcigncG9wb3ZlcicpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwcmV2ZW50RXZlbnRPdXRzaWRlUG9wb3ZlcihldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0SXNJblBvcG92ZXIgPSAhIWV2ZW50LnRhcmdldC5jbG9zZXN0KCdraXJieS1wb3BvdmVyJyk7XG4gICAgICBpZiAoIXRhcmdldElzSW5Qb3BvdmVyKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcmV2ZW50U2Nyb2xsKCkge1xuICAgIHRoaXMuaXNGaXJzdFRvTG9ja1Njcm9sbCA9ICF0aGlzLmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdiYWNrZHJvcC1uby1zY3JvbGwnKTtcbiAgICBpZiAodGhpcy5pc0ZpcnN0VG9Mb2NrU2Nyb2xsKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ2JhY2tkcm9wLW5vLXNjcm9sbCcpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcG9zZVRvdWNoTW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXG4gICAgICB0aGlzLmRvY3VtZW50LFxuICAgICAgJ3RvdWNobW92ZScsXG4gICAgICBQb3BvdmVyQ29tcG9uZW50LnByZXZlbnRFdmVudE91dHNpZGVQb3BvdmVyLFxuICAgICAgdGhpcy5wcmV2ZW50U2Nyb2xsRXZlbnRMaXN0ZW5lck9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxlYXNlU2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLmlzRmlyc3RUb0xvY2tTY3JvbGwpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCAnYmFja2Ryb3Atbm8tc2Nyb2xsJyk7XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwb3NlVG91Y2hNb3ZlTGlzdGVuZXI/LigpO1xuICB9XG5cbiAgc2hvdygpIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaXMtb3BlbmluZycpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLnByZXZlbnRTY3JvbGwoKTtcbiAgICB0aGlzLnBvc2l0aW9uV3JhcHBlcigpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2lzLW9wZW4nKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaXMtb3BlbmluZycpO1xuXG4gICAgdGhpcy5pc1Nob3dpbmcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNTaG93aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLndpbGxIaWRlLmVtaXQoKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCxcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgKTtcbiAgICB0aGlzLnJlbGVhc2VTY3JvbGwoKTtcblxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy50YXJnZXRFbGVtZW50LCAnei1pbmRleCcpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy50YXJnZXRFbGVtZW50LCAncG9pbnRlci1ldmVudHMnKTtcbiAgICB0aGlzLmlzU2hvd2luZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvbldyYXBwZXIoKSB7XG4gICAgY29uc3QgdGFyZ2V0RGltZW5zaW9ucyA9IHRoaXMudGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICBjb25zdCB3cmFwcGVyRWxlbWVudCA9IHRoaXMud3JhcHBlckVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB3cmFwcGVyRGltZW5zaW9ucyA9IHdyYXBwZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gd3JhcHBlckVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcbiAgICB0aGlzLnBvc2l0aW9uSG9yaXpvbnRhbGx5KHZpZXdwb3J0LCB3cmFwcGVyRWxlbWVudCwgdGFyZ2V0RGltZW5zaW9ucywgd3JhcHBlckRpbWVuc2lvbnMpO1xuICAgIHRoaXMucG9zaXRpb25WZXJ0aWNhbGx5KHZpZXdwb3J0LCB3cmFwcGVyRWxlbWVudCwgdGFyZ2V0RGltZW5zaW9ucywgd3JhcHBlckRpbWVuc2lvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvbkhvcml6b250YWxseShcbiAgICB2aWV3UG9ydDogV2luZG93LFxuICAgIHdyYXBwZXJFbGVtZW50OiBIVE1MRGl2RWxlbWVudCxcbiAgICB0YXJnZXREaW1lbnNpb25zOiBET01SZWN0LFxuICAgIHdyYXBwZXJEaW1lbnNpb25zOiBET01SZWN0XG4gICkge1xuICAgIGNvbnN0IHZpZXdQb3J0V2lkdGggPSB2aWV3UG9ydC5pbm5lcldpZHRoO1xuICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHdyYXBwZXJEaW1lbnNpb25zLndpZHRoO1xuICAgIGNvbnN0IGF2YWlsYWJsZVNwYWNlUmlnaHQgPSB2aWV3UG9ydFdpZHRoIC0gdGFyZ2V0RGltZW5zaW9ucy5sZWZ0O1xuICAgIGNvbnN0IGF2YWlsYWJsZVNwYWNlTGVmdCA9IHRhcmdldERpbWVuc2lvbnMucmlnaHQ7XG4gICAgY29uc3QgY29udGVudENhbkZpdFJpZ2h0T2ZUYXJnZXQgPVxuICAgICAgYXZhaWxhYmxlU3BhY2VSaWdodCA+PSBjb250ZW50V2lkdGggKyB0aGlzLlBPUE9WRVJfQk9EWV9QQURESU5HO1xuICAgIGNvbnN0IG9wZW5SaWdodCA9IGNvbnRlbnRDYW5GaXRSaWdodE9mVGFyZ2V0IHx8IGF2YWlsYWJsZVNwYWNlUmlnaHQgPj0gYXZhaWxhYmxlU3BhY2VMZWZ0O1xuXG4gICAgY29uc3QgW2RpcmVjdGlvbiwgb3Bwb3NpdGVEaXJlY3Rpb25dID1cbiAgICAgIHRoaXMucG9wb3V0ID09PSBIb3Jpem9udGFsRGlyZWN0aW9uLmxlZnQgfHwgIW9wZW5SaWdodFxuICAgICAgICA/IFsnbGVmdCcsICdyaWdodCddXG4gICAgICAgIDogWydyaWdodCcsICdsZWZ0J107XG5cbiAgICBjb25zdCBweFZhbHVlID1cbiAgICAgIGRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gdmlld1BvcnRXaWR0aCAtIHRhcmdldERpbWVuc2lvbnMucmlnaHQgOiB0YXJnZXREaW1lbnNpb25zLmxlZnQ7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHdyYXBwZXJFbGVtZW50LCBkaXJlY3Rpb24pO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUod3JhcHBlckVsZW1lbnQsIG9wcG9zaXRlRGlyZWN0aW9uLCBgJHtweFZhbHVlfXB4YCk7XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uVmVydGljYWxseShcbiAgICB2aWV3UG9ydDogV2luZG93LFxuICAgIHdyYXBwZXJFbGVtZW50OiBIVE1MRGl2RWxlbWVudCxcbiAgICB0YXJnZXREaW1lbnNpb25zOiBET01SZWN0LFxuICAgIHdyYXBwZXJEaW1lbnNpb25zOiBET01SZWN0XG4gICkge1xuICAgIGNvbnN0IHZpZXdQb3J0SGVpZ2h0ID0gdmlld1BvcnQuaW5uZXJIZWlnaHQ7XG4gICAgY29uc3QgY29udGVudEhlaWdodCA9IHdyYXBwZXJEaW1lbnNpb25zLmhlaWdodDtcbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZURvd24gPSB2aWV3UG9ydEhlaWdodCAtIHRhcmdldERpbWVuc2lvbnMuYm90dG9tO1xuICAgIGNvbnN0IGF2YWlsYWJsZVNwYWNlVXAgPSB0YXJnZXREaW1lbnNpb25zLnRvcDtcbiAgICBjb25zdCBjb250ZW50Q2FuRml0QmVsb3dUYXJnZXQgPVxuICAgICAgYXZhaWxhYmxlU3BhY2VEb3duID49IGNvbnRlbnRIZWlnaHQgKyB0aGlzLlBPUE9WRVJfQk9EWV9QQURESU5HO1xuXG4gICAgY29uc3QgaXNBdmFpbGFibGVTcGFjZUJlbG93ID1cbiAgICAgIGNvbnRlbnRDYW5GaXRCZWxvd1RhcmdldCB8fCBhdmFpbGFibGVTcGFjZURvd24gPj0gYXZhaWxhYmxlU3BhY2VVcDtcbiAgICBjb25zdCBbZGlyZWN0aW9uLCBvcHBvc2l0ZURpcmVjdGlvbl0gPSBpc0F2YWlsYWJsZVNwYWNlQmVsb3dcbiAgICAgID8gWydib3R0b20nLCAndG9wJ11cbiAgICAgIDogWyd0b3AnLCAnYm90dG9tJ107XG5cbiAgICBjb25zdCBweFZhbHVlID1cbiAgICAgIGRpcmVjdGlvbiA9PT0gJ2JvdHRvbScgPyB0YXJnZXREaW1lbnNpb25zLmJvdHRvbSA6IHZpZXdQb3J0SGVpZ2h0IC0gdGFyZ2V0RGltZW5zaW9ucy50b3A7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHdyYXBwZXJFbGVtZW50LCBkaXJlY3Rpb24pO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUod3JhcHBlckVsZW1lbnQsIG9wcG9zaXRlRGlyZWN0aW9uLCBgJHtweFZhbHVlfXB4YCk7XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAndG9wJykge1xuICAgICAgLy8gRW5zdXJlIHRhcmdldCBpcyBlbGV2YXRlZCBhYm92ZSBzaGFkb3dzIGluIHBvcG92ZXIsIGkuZS4gY29udGVudCB3cmFwcGVkIGluIENhcmQ6XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFyZ2V0RWxlbWVudCwgJ3otaW5kZXgnLCBgJHt0aGlzLnpJbmRleCArIDF9YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFyZ2V0RWxlbWVudCwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLXBvcG92ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wb3BvdmVyL3NyYy9raXJieWRlc2lnbi1kZXNpZ25zeXN0ZW0tcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-popover.mjs","sources":["../../popover/src/popover.component.ts","../../popover/src/kirbydesign-designsystem-popover.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { EventListenerDisposeFn } from '@kirbydesign/designsystem/types';\nimport { DesignTokenHelper } from '@kirbydesign/designsystem/helpers';\n\nexport enum HorizontalDirection {\n right = 'right',\n left = 'left',\n}\n\n@Component({\n selector: 'kirby-popover',\n template: `\n <div #wrapper class=\"wrapper\"><ng-content></ng-content></div>\n `,\n styleUrls: ['./popover.component.scss'],\n})\nexport class PopoverComponent implements AfterViewInit, OnDestroy {\n // removeEventListener same instance of event handler & options\n private readonly preventScrollEventListenerOptions = {\n passive: false,\n } as EventListenerOptions;\n\n private readonly POPOVER_BODY_PADDING = 12;\n\n private isShowing: boolean = false;\n private isFirstToLockScroll: boolean;\n private zIndex: number;\n private document: Document;\n\n @ViewChild('wrapper', { static: true, read: ElementRef })\n wrapperElement: ElementRef<HTMLDivElement>;\n\n @Input()\n popout: HorizontalDirection | `${HorizontalDirection}` = HorizontalDirection.right;\n\n @Input()\n target: HTMLElement | ElementRef<HTMLElement>;\n\n @Output()\n willHide = new EventEmitter<void>();\n\n private get targetElement(): HTMLElement {\n if (this.target instanceof ElementRef) {\n return this.target.nativeElement;\n } else {\n return this.target;\n }\n }\n\n @HostListener('window:resize')\n _onWindowResize() {\n this.hide();\n }\n\n private disposeTouchMoveListener: EventListenerDisposeFn;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {\n this.document = elementRef.nativeElement.ownerDocument;\n }\n\n ngAfterViewInit(): void {\n this.placePopoverAboveClosestModal();\n this.renderer.removeChild(\n this.elementRef.nativeElement.parentElement,\n this.elementRef.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n private placePopoverAboveClosestModal() {\n const closestIonModal = this.elementRef.nativeElement.closest('ion-modal');\n if (closestIonModal) {\n this.zIndex = parseInt((closestIonModal as HTMLElement).style.zIndex) + 1;\n this.elementRef.nativeElement.style.zIndex = `${this.zIndex}`;\n } else {\n this.zIndex = parseInt(DesignTokenHelper.zLayer('popover'));\n }\n }\n\n private static preventEventOutsidePopover(event: TouchEvent) {\n if (event.target instanceof HTMLElement) {\n const targetIsInPopover = !!event.target.closest('kirby-popover');\n if (!targetIsInPopover) {\n event.preventDefault();\n }\n }\n }\n\n private preventScroll() {\n this.isFirstToLockScroll = !this.document.body.classList.contains('backdrop-no-scroll');\n if (this.isFirstToLockScroll) {\n this.renderer.addClass(this.document.body, 'backdrop-no-scroll');\n }\n\n this.disposeTouchMoveListener = this.renderer.listen(\n this.document,\n 'touchmove',\n PopoverComponent.preventEventOutsidePopover,\n this.preventScrollEventListenerOptions\n );\n }\n\n private releaseScroll() {\n if (this.isFirstToLockScroll) {\n this.renderer.removeClass(this.document.body, 'backdrop-no-scroll');\n }\n\n this.disposeTouchMoveListener?.();\n }\n\n show() {\n this.renderer.addClass(this.elementRef.nativeElement, 'is-opening');\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n this.preventScroll();\n this.positionWrapper();\n\n this.renderer.addClass(this.elementRef.nativeElement, 'is-open');\n this.renderer.removeClass(this.elementRef.nativeElement, 'is-opening');\n\n this.isShowing = true;\n }\n\n hide() {\n if (!this.isShowing) return;\n\n this.willHide.emit();\n this.renderer.removeChild(\n this.elementRef.nativeElement.parentElement,\n this.elementRef.nativeElement\n );\n this.releaseScroll();\n\n this.renderer.removeStyle(this.targetElement, 'z-index');\n this.renderer.removeStyle(this.targetElement, 'pointer-events');\n this.isShowing = false;\n }\n\n private positionWrapper() {\n const targetDimensions = this.targetElement.getBoundingClientRect();\n\n this.renderer.appendChild(this.document.body, this.elementRef.nativeElement);\n\n const wrapperElement = this.wrapperElement.nativeElement;\n const wrapperDimensions = wrapperElement.getBoundingClientRect();\n const viewport = wrapperElement.ownerDocument.defaultView;\n this.positionHorizontally(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n this.positionVertically(viewport, wrapperElement, targetDimensions, wrapperDimensions);\n }\n\n private positionHorizontally(\n viewPort: Window,\n wrapperElement: HTMLDivElement,\n targetDimensions: DOMRect,\n wrapperDimensions: DOMRect\n ) {\n const viewPortWidth = viewPort.innerWidth;\n const contentWidth = wrapperDimensions.width;\n const availableSpaceRight = viewPortWidth - targetDimensions.left;\n const availableSpaceLeft = targetDimensions.right;\n const contentCanFitRightOfTarget =\n availableSpaceRight >= contentWidth + this.POPOVER_BODY_PADDING;\n const openRight = contentCanFitRightOfTarget || availableSpaceRight >= availableSpaceLeft;\n\n const [direction, oppositeDirection] =\n this.popout === HorizontalDirection.left || !openRight\n ? ['left', 'right']\n : ['right', 'left'];\n\n const pxValue =\n direction === 'left' ? viewPortWidth - targetDimensions.right : targetDimensions.left;\n\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n }\n\n private positionVertically(\n viewPort: Window,\n wrapperElement: HTMLDivElement,\n targetDimensions: DOMRect,\n wrapperDimensions: DOMRect\n ) {\n const viewPortHeight = viewPort.innerHeight;\n const contentHeight = wrapperDimensions.height;\n const availableSpaceDown = viewPortHeight - targetDimensions.bottom;\n const availableSpaceUp = targetDimensions.top;\n const contentCanFitBelowTarget =\n availableSpaceDown >= contentHeight + this.POPOVER_BODY_PADDING;\n\n const isAvailableSpaceBelow =\n contentCanFitBelowTarget || availableSpaceDown >= availableSpaceUp;\n const [direction, oppositeDirection] = isAvailableSpaceBelow\n ? ['bottom', 'top']\n : ['top', 'bottom'];\n\n const pxValue =\n direction === 'bottom' ? targetDimensions.bottom : viewPortHeight - targetDimensions.top;\n\n this.renderer.removeStyle(wrapperElement, direction);\n this.renderer.setStyle(wrapperElement, oppositeDirection, `${pxValue}px`);\n\n if (direction === 'top') {\n // Ensure target is elevated above shadows in popover, i.e. content wrapped in Card:\n this.renderer.setStyle(this.targetElement, 'z-index', `${this.zIndex + 1}`);\n this.renderer.setStyle(this.targetElement, 'pointer-events', 'none');\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -34,10 +34,10 @@ class ProgressCircleRingComponent {
34
34
  return 0;
35
35
  return this.strokeWidth;
36
36
  }
37
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: ProgressCircleRingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.13", type: ProgressCircleRingComponent, isStandalone: true, selector: "kirby-progress-circle-ring", inputs: { radius: "radius", value: "value", themeColor: "themeColor", strokeWidth: "strokeWidth", upperBound: "upperBound" }, host: { properties: { "class.view-initialized": "this.viewInitialized", "style.width.px": "this._diameter", "style.height.px": "this._diameter" } }, ngImport: i0, template: "<svg [attr.width]=\"_diameter\" [attr.height]=\"_diameter\" aria-hidden=\"true\">\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"circle\"\n fill=\"transparent\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n />\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"progress\"\n fill=\"transparent\"\n stroke-linecap=\"round\"\n [attr.stroke-width]=\"_progressStrokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.stroke-dasharray]=\"[_progress, _remainder]\"\n />\n</svg>\n", styles: ["svg{rotate:-90deg}.circle{stroke:var(--kirby-semi-light)}:host.success{--kirby-progress-circle-stroke-color: var(--kirby-success-shade)}:host.warning{--kirby-progress-circle-stroke-color: var(--kirby-warning-shade)}:host.danger{--kirby-progress-circle-stroke-color: var(--kirby-danger)}:host.view-initialized .progress{transition-property:stroke-dasharray,stroke;transition-duration:1s;transition-timing-function:ease;transform-origin:50% 50%;stroke:var(--kirby-progress-circle-stroke-color, var(--kirby-success))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ProgressCircleRingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: ProgressCircleRingComponent, isStandalone: true, selector: "kirby-progress-circle-ring", inputs: { radius: "radius", value: "value", themeColor: "themeColor", strokeWidth: "strokeWidth", upperBound: "upperBound" }, host: { properties: { "class.view-initialized": "this.viewInitialized", "style.width.px": "this._diameter", "style.height.px": "this._diameter" } }, ngImport: i0, template: "<svg [attr.width]=\"_diameter\" [attr.height]=\"_diameter\" aria-hidden=\"true\">\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"circle\"\n fill=\"transparent\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n />\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"progress\"\n fill=\"transparent\"\n stroke-linecap=\"round\"\n [attr.stroke-width]=\"_progressStrokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.stroke-dasharray]=\"[_progress, _remainder]\"\n />\n</svg>\n", styles: ["svg{rotate:-90deg}.circle{stroke:var(--kirby-semi-light)}:host.success{--kirby-progress-circle-stroke-color: var(--kirby-success-shade)}:host.warning{--kirby-progress-circle-stroke-color: var(--kirby-warning-shade)}:host.danger{--kirby-progress-circle-stroke-color: var(--kirby-danger)}:host.view-initialized .progress{transition-property:stroke-dasharray,stroke;transition-duration:1s;transition-timing-function:ease;transform-origin:50% 50%;stroke:var(--kirby-progress-circle-stroke-color, var(--kirby-success))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: ProgressCircleRingComponent, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ProgressCircleRingComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{ selector: 'kirby-progress-circle-ring', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg [attr.width]=\"_diameter\" [attr.height]=\"_diameter\" aria-hidden=\"true\">\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"circle\"\n fill=\"transparent\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n />\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"progress\"\n fill=\"transparent\"\n stroke-linecap=\"round\"\n [attr.stroke-width]=\"_progressStrokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.stroke-dasharray]=\"[_progress, _remainder]\"\n />\n</svg>\n", styles: ["svg{rotate:-90deg}.circle{stroke:var(--kirby-semi-light)}:host.success{--kirby-progress-circle-stroke-color: var(--kirby-success-shade)}:host.warning{--kirby-progress-circle-stroke-color: var(--kirby-warning-shade)}:host.danger{--kirby-progress-circle-stroke-color: var(--kirby-danger)}:host.view-initialized .progress{transition-property:stroke-dasharray,stroke;transition-duration:1s;transition-timing-function:ease;transform-origin:50% 50%;stroke:var(--kirby-progress-circle-stroke-color, var(--kirby-success))}\n"] }]
43
43
  }], propDecorators: { radius: [{
@@ -122,10 +122,10 @@ class ProgressCircleComponent {
122
122
  // This is needed to make sure that an input value close to 100 is not shown as 100
123
123
  return this.SIZE_CONFIG[this.size].upperBound;
124
124
  }
125
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: ProgressCircleComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
126
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.13", type: ProgressCircleComponent, isStandalone: true, selector: "kirby-progress-circle", inputs: { value: "value", size: "size", themeColor: "themeColor" }, host: { properties: { "attr.role": "this.role", "attr.aria-valuenow": "this.value", "class": "this._cssSize", "style.width.px": "this._diameter", "style.height.px": "this._diameter" } }, ngImport: i0, template: "<div class=\"transcluded-content\">\n <ng-content></ng-content>\n</div>\n<kirby-progress-circle-ring\n [themeColor]=\"themeColor\"\n [value]=\"_shownValue\"\n [radius]=\"_radius\"\n [strokeWidth]=\"_strokeWidth\"\n [upperBound]=\"_upperBound\"\n></kirby-progress-circle-ring>\n", styles: [":host{display:inline-block;position:relative}.transcluded-content,kirby-progress-circle-ring{position:absolute;top:0;left:0}kirby-progress-circle-ring{z-index:2}.transcluded-content{width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1;border-radius:50%;overflow:hidden}\n"], dependencies: [{ kind: "component", type: ProgressCircleRingComponent, selector: "kirby-progress-circle-ring", inputs: ["radius", "value", "themeColor", "strokeWidth", "upperBound"] }, { kind: "directive", type: ThemeColorDirective, selector: "kirby-avatar[themeColor], kirby-card[themeColor], kirby-icon[themeColor], kirby-progress-circle-ring[themeColor], kirby-modal-footer[themeColor], kirby-empty-state[themeColor]", inputs: ["themeColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
125
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ProgressCircleComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
126
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: ProgressCircleComponent, isStandalone: true, selector: "kirby-progress-circle", inputs: { value: "value", size: "size", themeColor: "themeColor" }, host: { properties: { "attr.role": "this.role", "attr.aria-valuenow": "this.value", "class": "this._cssSize", "style.width.px": "this._diameter", "style.height.px": "this._diameter" } }, ngImport: i0, template: "<div class=\"transcluded-content\">\n <ng-content></ng-content>\n</div>\n<kirby-progress-circle-ring\n [themeColor]=\"themeColor\"\n [value]=\"_shownValue\"\n [radius]=\"_radius\"\n [strokeWidth]=\"_strokeWidth\"\n [upperBound]=\"_upperBound\"\n></kirby-progress-circle-ring>\n", styles: [":host{display:inline-block;position:relative}.transcluded-content,kirby-progress-circle-ring{position:absolute;top:0;left:0}kirby-progress-circle-ring{z-index:2}.transcluded-content{width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1;border-radius:50%;overflow:hidden}\n"], dependencies: [{ kind: "component", type: ProgressCircleRingComponent, selector: "kirby-progress-circle-ring", inputs: ["radius", "value", "themeColor", "strokeWidth", "upperBound"] }, { kind: "directive", type: ThemeColorDirective, selector: "kirby-avatar[themeColor], kirby-card[themeColor], kirby-icon[themeColor], kirby-progress-circle-ring[themeColor], kirby-modal-footer[themeColor], kirby-empty-state[themeColor]", inputs: ["themeColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: ProgressCircleComponent, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ProgressCircleComponent, decorators: [{
129
129
  type: Component,
130
130
  args: [{ imports: [ProgressCircleRingComponent, ThemeColorDirective], selector: 'kirby-progress-circle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"transcluded-content\">\n <ng-content></ng-content>\n</div>\n<kirby-progress-circle-ring\n [themeColor]=\"themeColor\"\n [value]=\"_shownValue\"\n [radius]=\"_radius\"\n [strokeWidth]=\"_strokeWidth\"\n [upperBound]=\"_upperBound\"\n></kirby-progress-circle-ring>\n", styles: [":host{display:inline-block;position:relative}.transcluded-content,kirby-progress-circle-ring{position:absolute;top:0;left:0}kirby-progress-circle-ring{z-index:2}.transcluded-content{width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1;border-radius:50%;overflow:hidden}\n"] }]
131
131
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { role: [{
@@ -1 +1 @@
1
- {"version":3,"file":"kirbydesign-designsystem-progress-circle.mjs","sources":["../tmp-esm2022/progress-circle/progress-circle-ring.component.js","../tmp-esm2022/progress-circle/progress-circle.component.js","../tmp-esm2022/progress-circle/kirbydesign-designsystem-progress-circle.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ProgressCircleRingComponent {\n constructor() {\n this.value = 0;\n this.themeColor = 'success';\n }\n ngAfterViewInit() {\n this.viewInitialized = true;\n }\n get _diameter() {\n return this.radius * 2;\n }\n get _centerRadius() {\n return this.radius - this.strokeWidth / 2;\n }\n get _centerCircumference() {\n return this._centerRadius * 2 * Math.PI;\n }\n get _progress() {\n const valueWithinBounds = this.value < this.upperBound || this.value > 99;\n const _value = valueWithinBounds ? this.value : this.upperBound;\n const progressPercentage = _value / 100;\n return this._centerCircumference * progressPercentage;\n }\n get _remainder() {\n return this._centerCircumference - this._progress;\n }\n get _progressStrokeWidth() {\n // Do not render stroke if progress is 0, otherwise it will show as a dot\n if (this._progress === 0)\n return 0;\n return this.strokeWidth;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: ProgressCircleRingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.13\", type: ProgressCircleRingComponent, isStandalone: true, selector: \"kirby-progress-circle-ring\", inputs: { radius: \"radius\", value: \"value\", themeColor: \"themeColor\", strokeWidth: \"strokeWidth\", upperBound: \"upperBound\" }, host: { properties: { \"class.view-initialized\": \"this.viewInitialized\", \"style.width.px\": \"this._diameter\", \"style.height.px\": \"this._diameter\" } }, ngImport: i0, template: \"<svg [attr.width]=\\\"_diameter\\\" [attr.height]=\\\"_diameter\\\" aria-hidden=\\\"true\\\">\\n <circle\\n shape-rendering=\\\"geometricPrecision\\\"\\n class=\\\"circle\\\"\\n fill=\\\"transparent\\\"\\n [attr.stroke-width]=\\\"strokeWidth\\\"\\n [attr.r]=\\\"_centerRadius\\\"\\n [attr.cx]=\\\"radius\\\"\\n [attr.cy]=\\\"radius\\\"\\n />\\n <circle\\n shape-rendering=\\\"geometricPrecision\\\"\\n class=\\\"progress\\\"\\n fill=\\\"transparent\\\"\\n stroke-linecap=\\\"round\\\"\\n [attr.stroke-width]=\\\"_progressStrokeWidth\\\"\\n [attr.r]=\\\"_centerRadius\\\"\\n [attr.cx]=\\\"radius\\\"\\n [attr.cy]=\\\"radius\\\"\\n [attr.stroke-dasharray]=\\\"[_progress, _remainder]\\\"\\n />\\n</svg>\\n\", styles: [\"svg{rotate:-90deg}.circle{stroke:var(--kirby-semi-light)}:host.success{--kirby-progress-circle-stroke-color: var(--kirby-success-shade)}:host.warning{--kirby-progress-circle-stroke-color: var(--kirby-warning-shade)}:host.danger{--kirby-progress-circle-stroke-color: var(--kirby-danger)}:host.view-initialized .progress{transition-property:stroke-dasharray,stroke;transition-duration:1s;transition-timing-function:ease;transform-origin:50% 50%;stroke:var(--kirby-progress-circle-stroke-color, var(--kirby-success))}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: ProgressCircleRingComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kirby-progress-circle-ring', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<svg [attr.width]=\\\"_diameter\\\" [attr.height]=\\\"_diameter\\\" aria-hidden=\\\"true\\\">\\n <circle\\n shape-rendering=\\\"geometricPrecision\\\"\\n class=\\\"circle\\\"\\n fill=\\\"transparent\\\"\\n [attr.stroke-width]=\\\"strokeWidth\\\"\\n [attr.r]=\\\"_centerRadius\\\"\\n [attr.cx]=\\\"radius\\\"\\n [attr.cy]=\\\"radius\\\"\\n />\\n <circle\\n shape-rendering=\\\"geometricPrecision\\\"\\n class=\\\"progress\\\"\\n fill=\\\"transparent\\\"\\n stroke-linecap=\\\"round\\\"\\n [attr.stroke-width]=\\\"_progressStrokeWidth\\\"\\n [attr.r]=\\\"_centerRadius\\\"\\n [attr.cx]=\\\"radius\\\"\\n [attr.cy]=\\\"radius\\\"\\n [attr.stroke-dasharray]=\\\"[_progress, _remainder]\\\"\\n />\\n</svg>\\n\", styles: [\"svg{rotate:-90deg}.circle{stroke:var(--kirby-semi-light)}:host.success{--kirby-progress-circle-stroke-color: var(--kirby-success-shade)}:host.warning{--kirby-progress-circle-stroke-color: var(--kirby-warning-shade)}:host.danger{--kirby-progress-circle-stroke-color: var(--kirby-danger)}:host.view-initialized .progress{transition-property:stroke-dasharray,stroke;transition-duration:1s;transition-timing-function:ease;transform-origin:50% 50%;stroke:var(--kirby-progress-circle-stroke-color, var(--kirby-success))}\\n\"] }]\n }], propDecorators: { radius: [{\n type: Input\n }], value: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], upperBound: [{\n type: Input\n }], viewInitialized: [{\n type: HostBinding,\n args: ['class.view-initialized']\n }], _diameter: [{\n type: HostBinding,\n args: ['style.width.px']\n }, {\n type: HostBinding,\n args: ['style.height.px']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtY2lyY2xlLXJpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvZ3Jlc3MtY2lyY2xlL3NyYy9wcm9ncmVzcy1jaXJjbGUtcmluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9wcm9ncmVzcy1jaXJjbGUvc3JjL3Byb2dyZXNzLWNpcmNsZS1yaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7O0FBUXZCLE1BQU0sT0FBTywyQkFBMkI7SUFOeEM7UUFRVyxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLGVBQVUsR0FBcUMsU0FBUyxDQUFDO0tBMENuRTtJQW5DQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELElBRUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMxRSxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNoRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsa0JBQWtCLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLHlFQUF5RTtRQUN6RSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO2tJQTVDVSwyQkFBMkI7c0hBQTNCLDJCQUEyQix5V0NkeEMsbXBCQXNCQTs7NEZEUmEsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs7c0JBRzlDLEtBQUs7O3NCQUNMLEtBQUs7O3NCQUNMLEtBQUs7O3NCQUNMLEtBQUs7O3NCQUNMLEtBQUs7O3NCQUVMLFdBQVc7dUJBQUMsd0JBQXdCOztzQkFPcEMsV0FBVzt1QkFBQyxnQkFBZ0I7O3NCQUM1QixXQUFXO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXByb2dyZXNzLWNpcmNsZS1yaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLWNpcmNsZS1yaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3MtY2lyY2xlLXJpbmcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQ2lyY2xlUmluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSByYWRpdXM6IG51bWJlcjsgLy8gVGhlIGRlc2lyZWQgb3V0ZXIgcmFkaXVzIG9mIHRoZSBTVkcgY2lyY2xlXG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSB0aGVtZUNvbG9yOiAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZGFuZ2VyJyA9ICdzdWNjZXNzJztcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGg6IG51bWJlcjtcbiAgQElucHV0KCkgdXBwZXJCb3VuZDogbnVtYmVyO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mudmlldy1pbml0aWFsaXplZCcpXG4gIHZpZXdJbml0aWFsaXplZDtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3SW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aC5weCcpXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LnB4JylcbiAgZ2V0IF9kaWFtZXRlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJhZGl1cyAqIDI7XG4gIH1cblxuICBnZXQgX2NlbnRlclJhZGl1cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJhZGl1cyAtIHRoaXMuc3Ryb2tlV2lkdGggLyAyO1xuICB9XG5cbiAgZ2V0IF9jZW50ZXJDaXJjdW1mZXJlbmNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbnRlclJhZGl1cyAqIDIgKiBNYXRoLlBJO1xuICB9XG5cbiAgZ2V0IF9wcm9ncmVzcygpOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbHVlV2l0aGluQm91bmRzID0gdGhpcy52YWx1ZSA8IHRoaXMudXBwZXJCb3VuZCB8fCB0aGlzLnZhbHVlID4gOTk7XG4gICAgY29uc3QgX3ZhbHVlID0gdmFsdWVXaXRoaW5Cb3VuZHMgPyB0aGlzLnZhbHVlIDogdGhpcy51cHBlckJvdW5kO1xuICAgIGNvbnN0IHByb2dyZXNzUGVyY2VudGFnZSA9IF92YWx1ZSAvIDEwMDtcbiAgICByZXR1cm4gdGhpcy5fY2VudGVyQ2lyY3VtZmVyZW5jZSAqIHByb2dyZXNzUGVyY2VudGFnZTtcbiAgfVxuXG4gIGdldCBfcmVtYWluZGVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbnRlckNpcmN1bWZlcmVuY2UgLSB0aGlzLl9wcm9ncmVzcztcbiAgfVxuXG4gIGdldCBfcHJvZ3Jlc3NTdHJva2VXaWR0aCgpOiBudW1iZXIge1xuICAgIC8vIERvIG5vdCByZW5kZXIgc3Ryb2tlIGlmIHByb2dyZXNzIGlzIDAsIG90aGVyd2lzZSBpdCB3aWxsIHNob3cgYXMgYSBkb3RcbiAgICBpZiAodGhpcy5fcHJvZ3Jlc3MgPT09IDApIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGg7XG4gIH1cbn1cbiIsIjxzdmcgW2F0dHIud2lkdGhdPVwiX2RpYW1ldGVyXCIgW2F0dHIuaGVpZ2h0XT1cIl9kaWFtZXRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICA8Y2lyY2xlXG4gICAgc2hhcGUtcmVuZGVyaW5nPVwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICBjbGFzcz1cImNpcmNsZVwiXG4gICAgZmlsbD1cInRyYW5zcGFyZW50XCJcbiAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic3Ryb2tlV2lkdGhcIlxuICAgIFthdHRyLnJdPVwiX2NlbnRlclJhZGl1c1wiXG4gICAgW2F0dHIuY3hdPVwicmFkaXVzXCJcbiAgICBbYXR0ci5jeV09XCJyYWRpdXNcIlxuICAvPlxuICA8Y2lyY2xlXG4gICAgc2hhcGUtcmVuZGVyaW5nPVwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICBjbGFzcz1cInByb2dyZXNzXCJcbiAgICBmaWxsPVwidHJhbnNwYXJlbnRcIlxuICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJfcHJvZ3Jlc3NTdHJva2VXaWR0aFwiXG4gICAgW2F0dHIucl09XCJfY2VudGVyUmFkaXVzXCJcbiAgICBbYXR0ci5jeF09XCJyYWRpdXNcIlxuICAgIFthdHRyLmN5XT1cInJhZGl1c1wiXG4gICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJbX3Byb2dyZXNzLCBfcmVtYWluZGVyXVwiXG4gIC8+XG48L3N2Zz5cbiJdfQ==","import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { ProgressCircleRingComponent } from './progress-circle-ring.component';\nimport * as i0 from \"@angular/core\";\nexport class ProgressCircleComponent {\n get _cssSize() {\n return this.size;\n }\n constructor(elementRef, changeDetectorRef) {\n this.elementRef = elementRef;\n this.changeDetectorRef = changeDetectorRef;\n this.SIZE_CONFIG = {\n sm: { diameter: 40, strokeWidth: 3, upperBound: 95 },\n md: { diameter: 56, strokeWidth: 4, upperBound: 96 },\n lg: { diameter: 96, strokeWidth: 6, upperBound: 97 },\n };\n this.role = 'progressbar';\n this.value = 0;\n this.size = 'md';\n this.themeColor = 'success';\n this.onIntersectionChange = (entries) => {\n this.hasElementBeenVisible = entries && entries.some((entry) => entry.isIntersecting);\n if (this.hasElementBeenVisible) {\n this.unobserve();\n this.changeDetectorRef.markForCheck();\n }\n };\n }\n ngAfterViewInit() {\n if (!this.observer) {\n this.observer = new IntersectionObserver(this.onIntersectionChange, {\n threshold: 0.5,\n });\n this.observer.observe(this.elementRef.nativeElement);\n }\n }\n ngOnDestroy() {\n this.unobserve();\n }\n unobserve() {\n if (this.observer) {\n this.observer.unobserve(this.elementRef.nativeElement);\n // Safari does not support \"disconnect\", see: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Browser_compatibility\n if (typeof this.observer.disconnect === 'function') {\n this.observer.disconnect();\n }\n }\n }\n get _diameter() {\n return this.SIZE_CONFIG[this.size].diameter;\n }\n get _shownValue() {\n // This is needed to make an animation [0 -> value] when element is shown to the user\n return this.hasElementBeenVisible ? this.value : 0;\n }\n get _radius() {\n return this._diameter / 2;\n }\n get _strokeWidth() {\n return this.SIZE_CONFIG[this.size].strokeWidth;\n }\n get _upperBound() {\n // This is needed to make sure that an input value close to 100 is not shown as 100\n return this.SIZE_CONFIG[this.size].upperBound;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: ProgressCircleComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.13\", type: ProgressCircleComponent, isStandalone: true, selector: \"kirby-progress-circle\", inputs: { value: \"value\", size: \"size\", themeColor: \"themeColor\" }, host: { properties: { \"attr.role\": \"this.role\", \"attr.aria-valuenow\": \"this.value\", \"class\": \"this._cssSize\", \"style.width.px\": \"this._diameter\", \"style.height.px\": \"this._diameter\" } }, ngImport: i0, template: \"<div class=\\\"transcluded-content\\\">\\n <ng-content></ng-content>\\n</div>\\n<kirby-progress-circle-ring\\n [themeColor]=\\\"themeColor\\\"\\n [value]=\\\"_shownValue\\\"\\n [radius]=\\\"_radius\\\"\\n [strokeWidth]=\\\"_strokeWidth\\\"\\n [upperBound]=\\\"_upperBound\\\"\\n></kirby-progress-circle-ring>\\n\", styles: [\":host{display:inline-block;position:relative}.transcluded-content,kirby-progress-circle-ring{position:absolute;top:0;left:0}kirby-progress-circle-ring{z-index:2}.transcluded-content{width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1;border-radius:50%;overflow:hidden}\\n\"], dependencies: [{ kind: \"component\", type: ProgressCircleRingComponent, selector: \"kirby-progress-circle-ring\", inputs: [\"radius\", \"value\", \"themeColor\", \"strokeWidth\", \"upperBound\"] }, { kind: \"directive\", type: ThemeColorDirective, selector: \"kirby-avatar[themeColor], kirby-card[themeColor], kirby-icon[themeColor], kirby-progress-circle-ring[themeColor], kirby-modal-footer[themeColor], kirby-empty-state[themeColor]\", inputs: [\"themeColor\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.13\", ngImport: i0, type: ProgressCircleComponent, decorators: [{\n type: Component,\n args: [{ imports: [ProgressCircleRingComponent, ThemeColorDirective], selector: 'kirby-progress-circle', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"transcluded-content\\\">\\n <ng-content></ng-content>\\n</div>\\n<kirby-progress-circle-ring\\n [themeColor]=\\\"themeColor\\\"\\n [value]=\\\"_shownValue\\\"\\n [radius]=\\\"_radius\\\"\\n [strokeWidth]=\\\"_strokeWidth\\\"\\n [upperBound]=\\\"_upperBound\\\"\\n></kirby-progress-circle-ring>\\n\", styles: [\":host{display:inline-block;position:relative}.transcluded-content,kirby-progress-circle-ring{position:absolute;top:0;left:0}kirby-progress-circle-ring{z-index:2}.transcluded-content{width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1;border-radius:50%;overflow:hidden}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { role: [{\n type: HostBinding,\n args: ['attr.role']\n }], value: [{\n type: HostBinding,\n args: ['attr.aria-valuenow']\n }, {\n type: Input\n }], size: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], _cssSize: [{\n type: HostBinding,\n args: ['class']\n }], _diameter: [{\n type: HostBinding,\n args: ['style.width.px']\n }, {\n type: HostBinding,\n args: ['style.height.px']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtY2lyY2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2dyZXNzLWNpcmNsZS9zcmMvcHJvZ3Jlc3MtY2lyY2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3Byb2dyZXNzLWNpcmNsZS9zcmMvcHJvZ3Jlc3MtY2lyY2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBUy9FLE1BQU0sT0FBTyx1QkFBdUI7SUFjbEMsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFLRCxZQUNVLFVBQW1DLEVBQ25DLGlCQUFvQztRQURwQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBdkJyQyxnQkFBVyxHQUFHO1lBQ3JCLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO1lBQ3BELEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO1lBQ3BELEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFO1NBQ3JELENBQUM7UUFFaUMsU0FBSSxHQUFHLGFBQWEsQ0FBQztRQUd4RCxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ1QsU0FBSSxHQUF1QixJQUFJLENBQUM7UUFDaEMsZUFBVSxHQUFxQyxTQUFTLENBQUM7UUE0QjFELHlCQUFvQixHQUFHLENBQUMsT0FBb0MsRUFBRSxFQUFFO1lBQ3RFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RGLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDLENBQUM7SUFyQkMsQ0FBQztJQUVKLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ2xFLFNBQVMsRUFBRSxHQUFHO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQVVPLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZELDhJQUE4STtZQUM5SSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFFSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLHFGQUFxRjtRQUNyRixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsbUZBQW1GO1FBQ25GLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7a0lBaEZVLHVCQUF1QjtzSEFBdkIsdUJBQXVCLGdWQ3BCcEMsNlJBVUEsNFdESVksMkJBQTJCLCtJQUFFLG1CQUFtQjs7NEZBTS9DLHVCQUF1QjtrQkFQbkMsU0FBUzs4QkFDQyxDQUFDLDJCQUEyQixFQUFFLG1CQUFtQixDQUFDLFlBQ2pELHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTs7c0JBUzlDLFdBQVc7dUJBQUMsV0FBVzs7c0JBQ3ZCLFdBQVc7dUJBQUMsb0JBQW9COztzQkFDaEMsS0FBSzs7c0JBRUwsS0FBSzs7c0JBQ0wsS0FBSzs7c0JBRUwsV0FBVzt1QkFBQyxPQUFPOztzQkE0Q25CLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFDNUIsV0FBVzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVDb2xvckRpcmVjdGl2ZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IFByb2dyZXNzQ2lyY2xlUmluZ0NvbXBvbmVudCB9IGZyb20gJy4vcHJvZ3Jlc3MtY2lyY2xlLXJpbmcuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtQcm9ncmVzc0NpcmNsZVJpbmdDb21wb25lbnQsIFRoZW1lQ29sb3JEaXJlY3RpdmVdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LXByb2dyZXNzLWNpcmNsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9ncmVzcy1jaXJjbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmVzcy1jaXJjbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQ2lyY2xlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgU0laRV9DT05GSUcgPSB7XG4gICAgc206IHsgZGlhbWV0ZXI6IDQwLCBzdHJva2VXaWR0aDogMywgdXBwZXJCb3VuZDogOTUgfSxcbiAgICBtZDogeyBkaWFtZXRlcjogNTYsIHN0cm9rZVdpZHRoOiA0LCB1cHBlckJvdW5kOiA5NiB9LFxuICAgIGxnOiB7IGRpYW1ldGVyOiA5Niwgc3Ryb2tlV2lkdGg6IDYsIHVwcGVyQm91bmQ6IDk3IH0sXG4gIH07XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByZWFkb25seSByb2xlID0gJ3Byb2dyZXNzYmFyJztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtdmFsdWVub3cnKVxuICBASW5wdXQoKVxuICB2YWx1ZTogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnID0gJ21kJztcbiAgQElucHV0KCkgdGhlbWVDb2xvcjogJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgPSAnc3VjY2Vzcyc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfY3NzU2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNFbGVtZW50QmVlblZpc2libGU/OiBib29sZWFuO1xuICBwcml2YXRlIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9ic2VydmVyKSB7XG4gICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMub25JbnRlcnNlY3Rpb25DaGFuZ2UsIHtcbiAgICAgICAgdGhyZXNob2xkOiAwLjUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bm9ic2VydmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25JbnRlcnNlY3Rpb25DaGFuZ2UgPSAoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgdGhpcy5oYXNFbGVtZW50QmVlblZpc2libGUgPSBlbnRyaWVzICYmIGVudHJpZXMuc29tZSgoZW50cnkpID0+IGVudHJ5LmlzSW50ZXJzZWN0aW5nKTtcbiAgICBpZiAodGhpcy5oYXNFbGVtZW50QmVlblZpc2libGUpIHtcbiAgICAgIHRoaXMudW5vYnNlcnZlKCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHVub2JzZXJ2ZSgpIHtcbiAgICBpZiAodGhpcy5vYnNlcnZlcikge1xuICAgICAgdGhpcy5vYnNlcnZlci51bm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgLy8gU2FmYXJpIGRvZXMgbm90IHN1cHBvcnQgXCJkaXNjb25uZWN0XCIsIHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ludGVyc2VjdGlvbl9PYnNlcnZlcl9BUEkjQnJvd3Nlcl9jb21wYXRpYmlsaXR5XG4gICAgICBpZiAodHlwZW9mIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JylcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQucHgnKVxuICBnZXQgX2RpYW1ldGVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuU0laRV9DT05GSUdbdGhpcy5zaXplXS5kaWFtZXRlcjtcbiAgfVxuXG4gIGdldCBfc2hvd25WYWx1ZSgpIHtcbiAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBtYWtlIGFuIGFuaW1hdGlvbiBbMCAtPiB2YWx1ZV0gd2hlbiBlbGVtZW50IGlzIHNob3duIHRvIHRoZSB1c2VyXG4gICAgcmV0dXJuIHRoaXMuaGFzRWxlbWVudEJlZW5WaXNpYmxlID8gdGhpcy52YWx1ZSA6IDA7XG4gIH1cblxuICBnZXQgX3JhZGl1cygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlhbWV0ZXIgLyAyO1xuICB9XG5cbiAgZ2V0IF9zdHJva2VXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5TSVpFX0NPTkZJR1t0aGlzLnNpemVdLnN0cm9rZVdpZHRoO1xuICB9XG5cbiAgZ2V0IF91cHBlckJvdW5kKCkge1xuICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFuIGlucHV0IHZhbHVlIGNsb3NlIHRvIDEwMCBpcyBub3Qgc2hvd24gYXMgMTAwXG4gICAgcmV0dXJuIHRoaXMuU0laRV9DT05GSUdbdGhpcy5zaXplXS51cHBlckJvdW5kO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidHJhbnNjbHVkZWQtY29udGVudFwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxraXJieS1wcm9ncmVzcy1jaXJjbGUtcmluZ1xuICBbdGhlbWVDb2xvcl09XCJ0aGVtZUNvbG9yXCJcbiAgW3ZhbHVlXT1cIl9zaG93blZhbHVlXCJcbiAgW3JhZGl1c109XCJfcmFkaXVzXCJcbiAgW3N0cm9rZVdpZHRoXT1cIl9zdHJva2VXaWR0aFwiXG4gIFt1cHBlckJvdW5kXT1cIl91cHBlckJvdW5kXCJcbj48L2tpcmJ5LXByb2dyZXNzLWNpcmNsZS1yaW5nPlxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLXByb2dyZXNzLWNpcmNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2dyZXNzLWNpcmNsZS9zcmMva2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLXByb2dyZXNzLWNpcmNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kirbydesign-designsystem-progress-circle.mjs","sources":["../../progress-circle/src/progress-circle-ring.component.ts","../../progress-circle/src/progress-circle-ring.component.html","../../progress-circle/src/progress-circle.component.ts","../../progress-circle/src/progress-circle.component.html","../../progress-circle/src/kirbydesign-designsystem-progress-circle.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'kirby-progress-circle-ring',\n templateUrl: './progress-circle-ring.component.html',\n styleUrls: ['./progress-circle-ring.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleRingComponent implements AfterViewInit {\n @Input() radius: number; // The desired outer radius of the SVG circle\n @Input() value: number = 0;\n @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n @Input() strokeWidth: number;\n @Input() upperBound: number;\n\n @HostBinding('class.view-initialized')\n viewInitialized;\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n }\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get _diameter(): number {\n return this.radius * 2;\n }\n\n get _centerRadius(): number {\n return this.radius - this.strokeWidth / 2;\n }\n\n get _centerCircumference(): number {\n return this._centerRadius * 2 * Math.PI;\n }\n\n get _progress(): number {\n const valueWithinBounds = this.value < this.upperBound || this.value > 99;\n const _value = valueWithinBounds ? this.value : this.upperBound;\n const progressPercentage = _value / 100;\n return this._centerCircumference * progressPercentage;\n }\n\n get _remainder(): number {\n return this._centerCircumference - this._progress;\n }\n\n get _progressStrokeWidth(): number {\n // Do not render stroke if progress is 0, otherwise it will show as a dot\n if (this._progress === 0) return 0;\n\n return this.strokeWidth;\n }\n}\n","<svg [attr.width]=\"_diameter\" [attr.height]=\"_diameter\" aria-hidden=\"true\">\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"circle\"\n fill=\"transparent\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n />\n <circle\n shape-rendering=\"geometricPrecision\"\n class=\"progress\"\n fill=\"transparent\"\n stroke-linecap=\"round\"\n [attr.stroke-width]=\"_progressStrokeWidth\"\n [attr.r]=\"_centerRadius\"\n [attr.cx]=\"radius\"\n [attr.cy]=\"radius\"\n [attr.stroke-dasharray]=\"[_progress, _remainder]\"\n />\n</svg>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { ProgressCircleRingComponent } from './progress-circle-ring.component';\n\n@Component({\n imports: [ProgressCircleRingComponent, ThemeColorDirective],\n selector: 'kirby-progress-circle',\n templateUrl: './progress-circle.component.html',\n styleUrls: ['./progress-circle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCircleComponent implements AfterViewInit, OnDestroy {\n readonly SIZE_CONFIG = {\n sm: { diameter: 40, strokeWidth: 3, upperBound: 95 },\n md: { diameter: 56, strokeWidth: 4, upperBound: 96 },\n lg: { diameter: 96, strokeWidth: 6, upperBound: 97 },\n };\n\n @HostBinding('attr.role') readonly role = 'progressbar';\n @HostBinding('attr.aria-valuenow')\n @Input()\n value: number = 0;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() themeColor: 'success' | 'warning' | 'danger' = 'success';\n\n @HostBinding('class')\n get _cssSize() {\n return this.size;\n }\n\n private hasElementBeenVisible?: boolean;\n private observer: IntersectionObserver;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.observer) {\n this.observer = new IntersectionObserver(this.onIntersectionChange, {\n threshold: 0.5,\n });\n this.observer.observe(this.elementRef.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n this.unobserve();\n }\n\n private onIntersectionChange = (entries: IntersectionObserverEntry[]) => {\n this.hasElementBeenVisible = entries && entries.some((entry) => entry.isIntersecting);\n if (this.hasElementBeenVisible) {\n this.unobserve();\n this.changeDetectorRef.markForCheck();\n }\n };\n\n private unobserve() {\n if (this.observer) {\n this.observer.unobserve(this.elementRef.nativeElement);\n // Safari does not support \"disconnect\", see: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Browser_compatibility\n if (typeof this.observer.disconnect === 'function') {\n this.observer.disconnect();\n }\n }\n }\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get _diameter(): number {\n return this.SIZE_CONFIG[this.size].diameter;\n }\n\n get _shownValue() {\n // This is needed to make an animation [0 -> value] when element is shown to the user\n return this.hasElementBeenVisible ? this.value : 0;\n }\n\n get _radius() {\n return this._diameter / 2;\n }\n\n get _strokeWidth() {\n return this.SIZE_CONFIG[this.size].strokeWidth;\n }\n\n get _upperBound() {\n // This is needed to make sure that an input value close to 100 is not shown as 100\n return this.SIZE_CONFIG[this.size].upperBound;\n }\n}\n","<div class=\"transcluded-content\">\n <ng-content></ng-content>\n</div>\n<kirby-progress-circle-ring\n [themeColor]=\"themeColor\"\n [value]=\"_shownValue\"\n [radius]=\"_radius\"\n [strokeWidth]=\"_strokeWidth\"\n [upperBound]=\"_upperBound\"\n></kirby-progress-circle-ring>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -52,10 +52,10 @@ class RadioComponent {
52
52
  focus() {
53
53
  this.ionRadioElement?.nativeElement.focus();
54
54
  }
55
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RadioComponent, deps: [{ token: i0.ElementRef }, { token: i1.IonicElementPartHelper }], target: i0.ɵɵFactoryTarget.Component }); }
56
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.13", type: RadioComponent, isStandalone: true, selector: "kirby-radio", inputs: { value: "value", text: "text", size: "size", disabled: "disabled" }, host: { properties: { "class": "this.size", "attr.disabled": "this._isDisabled", "class.has-hidden-label": "this._labelText" } }, providers: [IonicElementPartHelper], viewQueries: [{ propertyName: "ionRadioElement", first: true, predicate: IonRadio, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<ion-radio\n [value]=\"value\"\n [disabled]=\"disabled\"\n mode=\"md\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n @if (_labelText) {\n <span class=\"hidden-label\">{{ _labelText }}</span>\n }\n @if (text) {\n <span [attr.aria-hidden]=\"_labelText ? true : undefined\">{{ text }}</span>\n }\n <span class=\"default-content\" [attr.aria-hidden]=\"_labelText ? true : undefined\">\n <ng-content></ng-content>\n </span>\n</ion-radio>\n", styles: [":host{display:flex}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-radio{--color: var(--kirby-medium);--color-checked: var(--kirby-medium)}:host[disabled] ion-radio::part(container){background-color:var(--kirby-semi-light)}:host[disabled] ion-radio::part(mark){--color-checked: var(--kirby-semi-dark)}:host[disabled] ion-radio::part(label-text-wrapper){opacity:1}:host[disabled] ion-radio::part(native-wrapper){opacity:1}:host:has(ion-radio.in-item.radio-justify-space-between){width:100%}:host.has-hidden-label:has(ion-radio.in-item){position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio{position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio::part(label){position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio.radio-label-placement-start::part(label-text-wrapper),:host.has-hidden-label:has(ion-radio.in-item) ion-radio.radio-label-placement-end::part(label-text-wrapper){margin-inline:0}:host.has-hidden-label[slot=end] ion-radio{margin-inline-start:12px}:host.has-hidden-label .hidden-label{position:absolute;inset:0;opacity:0}:host.xs ion-radio:not(.in-item)::part(label){padding-block:4px}:host.sm ion-radio:not(.in-item)::part(label){padding-block:10px}:host.md ion-radio:not(.in-item)::part(label){padding-block:16px}@media (hover: hover) and (pointer: fine){ion-radio:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}ion-radio{box-sizing:border-box;--border-width: 1px;--color: var(--kirby-semi-dark);--color-checked: var(--kirby-success)}@media (hover: hover){ion-radio:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}ion-radio:hover::part(container){background-color:#ebebeb}}ion-radio:active,ion-radio.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--color-checked: rgb(52.6486343612, 207.7113656388, 125.2311894273)}ion-radio:active::part(container),ion-radio.interaction-state-active::part(container){background-color:#e0e0e0}ion-radio::part(container){transition:all 80ms linear 0ms;transition-property:background-color;background-color:var(--kirby-white);margin:2px}ion-radio::part(mark){width:12px;height:12px}ion-radio::part(label){align-items:start;padding-inline:16px 12px;line-height:24px}ion-radio::part(label-text-wrapper){margin-inline:12px 0;white-space:pre-line}ion-radio.in-item::part(label){align-items:center;padding-inline:0}ion-radio.in-item::part(label-text-wrapper){margin-block:0}ion-radio.in-item.radio-label-placement-start::part(label-text-wrapper){margin-inline:0 8px}ion-radio.in-item.radio-label-placement-end::part(label-text-wrapper){margin-inline:8px 0}ion-radio :host-context(kirby-radio-group.error) ion-radio,ion-radio :host-context(kirby-radio-group.error) ion-radio:active,ion-radio :host-context(kirby-radio-group.ng-touched.ng-invalid) ion-radio,ion-radio :host-context(kirby-radio-group.ng-touched.ng-invalid) ion-radio:active{--color: var(--kirby-danger)}ion-radio.radio-checked:not(:focus,.radio-disabled)::part(container){box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26}ion-radio.radio-checked:not(.radio-disabled)::part(container){border-color:var(--kirby-semi-dark)}:host-context(kirby-item){z-index:1}:host-context(kirby-item) ion-radio{margin:0}:host-context(kirby-item)[slot=start]{margin-block:0;margin-inline-end:12px}\n"], dependencies: [{ kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RadioComponent, deps: [{ token: i0.ElementRef }, { token: i1.IonicElementPartHelper }], target: i0.ɵɵFactoryTarget.Component }); }
56
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: RadioComponent, isStandalone: true, selector: "kirby-radio", inputs: { value: "value", text: "text", size: "size", disabled: "disabled" }, host: { properties: { "class": "this.size", "attr.disabled": "this._isDisabled", "class.has-hidden-label": "this._labelText" } }, providers: [IonicElementPartHelper], viewQueries: [{ propertyName: "ionRadioElement", first: true, predicate: IonRadio, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<ion-radio\n [value]=\"value\"\n [disabled]=\"disabled\"\n mode=\"md\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n @if (_labelText) {\n <span class=\"hidden-label\">{{ _labelText }}</span>\n }\n @if (text) {\n <span [attr.aria-hidden]=\"_labelText ? true : undefined\">{{ text }}</span>\n }\n <span class=\"default-content\" [attr.aria-hidden]=\"_labelText ? true : undefined\">\n <ng-content></ng-content>\n </span>\n</ion-radio>\n", styles: [":host{display:flex}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-radio{--color: var(--kirby-medium);--color-checked: var(--kirby-medium)}:host[disabled] ion-radio::part(container){background-color:var(--kirby-semi-light)}:host[disabled] ion-radio::part(mark){--color-checked: var(--kirby-semi-dark)}:host[disabled] ion-radio::part(label-text-wrapper){opacity:1}:host[disabled] ion-radio::part(native-wrapper){opacity:1}:host:has(ion-radio.in-item.radio-justify-space-between){width:100%}:host.has-hidden-label:has(ion-radio.in-item){position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio{position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio::part(label){position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio.radio-label-placement-start::part(label-text-wrapper),:host.has-hidden-label:has(ion-radio.in-item) ion-radio.radio-label-placement-end::part(label-text-wrapper){margin-inline:0}:host.has-hidden-label[slot=end] ion-radio{margin-inline-start:12px}:host.has-hidden-label .hidden-label{position:absolute;inset:0;opacity:0}:host.xs ion-radio:not(.in-item)::part(label){padding-block:4px}:host.sm ion-radio:not(.in-item)::part(label){padding-block:10px}:host.md ion-radio:not(.in-item)::part(label){padding-block:16px}@media (hover: hover) and (pointer: fine){ion-radio:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}ion-radio{box-sizing:border-box;--border-width: 1px;--color: var(--kirby-semi-dark);--color-checked: var(--kirby-success)}@media (hover: hover){ion-radio:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}ion-radio:hover::part(container){background-color:#ebebeb}}ion-radio:active,ion-radio.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--color-checked: rgb(52.6486343612, 207.7113656388, 125.2311894273)}ion-radio:active::part(container),ion-radio.interaction-state-active::part(container){background-color:#e0e0e0}ion-radio::part(container){transition:all 80ms linear 0ms;transition-property:background-color;background-color:var(--kirby-white);margin:2px}ion-radio::part(mark){width:12px;height:12px}ion-radio::part(label){align-items:start;padding-inline:16px 12px;line-height:24px}ion-radio::part(label-text-wrapper){margin-inline:12px 0;white-space:pre-line}ion-radio.in-item::part(label){align-items:center;padding-inline:0}ion-radio.in-item::part(label-text-wrapper){margin-block:0}ion-radio.in-item.radio-label-placement-start::part(label-text-wrapper){margin-inline:0 8px}ion-radio.in-item.radio-label-placement-end::part(label-text-wrapper){margin-inline:8px 0}ion-radio :host-context(kirby-radio-group.error) ion-radio,ion-radio :host-context(kirby-radio-group.error) ion-radio:active,ion-radio :host-context(kirby-radio-group.ng-touched.ng-invalid) ion-radio,ion-radio :host-context(kirby-radio-group.ng-touched.ng-invalid) ion-radio:active{--color: var(--kirby-danger)}ion-radio.radio-checked:not(:focus,.radio-disabled)::part(container){box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26}ion-radio.radio-checked:not(.radio-disabled)::part(container){border-color:var(--kirby-semi-dark)}:host-context(kirby-item){z-index:1}:host-context(kirby-item) ion-radio{margin:0}:host-context(kirby-item)[slot=start]{margin-block:0;margin-inline-end:12px}\n"], dependencies: [{ kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RadioComponent, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RadioComponent, decorators: [{
59
59
  type: Component,
60
60
  args: [{ selector: 'kirby-radio', changeDetection: ChangeDetectionStrategy.OnPush, providers: [IonicElementPartHelper], imports: [IonRadio], template: "<ion-radio\n [value]=\"value\"\n [disabled]=\"disabled\"\n mode=\"md\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n @if (_labelText) {\n <span class=\"hidden-label\">{{ _labelText }}</span>\n }\n @if (text) {\n <span [attr.aria-hidden]=\"_labelText ? true : undefined\">{{ text }}</span>\n }\n <span class=\"default-content\" [attr.aria-hidden]=\"_labelText ? true : undefined\">\n <ng-content></ng-content>\n </span>\n</ion-radio>\n", styles: [":host{display:flex}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-radio{--color: var(--kirby-medium);--color-checked: var(--kirby-medium)}:host[disabled] ion-radio::part(container){background-color:var(--kirby-semi-light)}:host[disabled] ion-radio::part(mark){--color-checked: var(--kirby-semi-dark)}:host[disabled] ion-radio::part(label-text-wrapper){opacity:1}:host[disabled] ion-radio::part(native-wrapper){opacity:1}:host:has(ion-radio.in-item.radio-justify-space-between){width:100%}:host.has-hidden-label:has(ion-radio.in-item){position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio{position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio::part(label){position:initial}:host.has-hidden-label:has(ion-radio.in-item) ion-radio.radio-label-placement-start::part(label-text-wrapper),:host.has-hidden-label:has(ion-radio.in-item) ion-radio.radio-label-placement-end::part(label-text-wrapper){margin-inline:0}:host.has-hidden-label[slot=end] ion-radio{margin-inline-start:12px}:host.has-hidden-label .hidden-label{position:absolute;inset:0;opacity:0}:host.xs ion-radio:not(.in-item)::part(label){padding-block:4px}:host.sm ion-radio:not(.in-item)::part(label){padding-block:10px}:host.md ion-radio:not(.in-item)::part(label){padding-block:16px}@media (hover: hover) and (pointer: fine){ion-radio:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}ion-radio{box-sizing:border-box;--border-width: 1px;--color: var(--kirby-semi-dark);--color-checked: var(--kirby-success)}@media (hover: hover){ion-radio:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}ion-radio:hover::part(container){background-color:#ebebeb}}ion-radio:active,ion-radio.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--color-checked: rgb(52.6486343612, 207.7113656388, 125.2311894273)}ion-radio:active::part(container),ion-radio.interaction-state-active::part(container){background-color:#e0e0e0}ion-radio::part(container){transition:all 80ms linear 0ms;transition-property:background-color;background-color:var(--kirby-white);margin:2px}ion-radio::part(mark){width:12px;height:12px}ion-radio::part(label){align-items:start;padding-inline:16px 12px;line-height:24px}ion-radio::part(label-text-wrapper){margin-inline:12px 0;white-space:pre-line}ion-radio.in-item::part(label){align-items:center;padding-inline:0}ion-radio.in-item::part(label-text-wrapper){margin-block:0}ion-radio.in-item.radio-label-placement-start::part(label-text-wrapper){margin-inline:0 8px}ion-radio.in-item.radio-label-placement-end::part(label-text-wrapper){margin-inline:8px 0}ion-radio :host-context(kirby-radio-group.error) ion-radio,ion-radio :host-context(kirby-radio-group.error) ion-radio:active,ion-radio :host-context(kirby-radio-group.ng-touched.ng-invalid) ion-radio,ion-radio :host-context(kirby-radio-group.ng-touched.ng-invalid) ion-radio:active{--color: var(--kirby-danger)}ion-radio.radio-checked:not(:focus,.radio-disabled)::part(container){box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26}ion-radio.radio-checked:not(.radio-disabled)::part(container){border-color:var(--kirby-semi-dark)}:host-context(kirby-item){z-index:1}:host-context(kirby-item) ion-radio{margin:0}:host-context(kirby-item)[slot=start]{margin-block:0;margin-inline-end:12px}\n"] }]
61
61
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.IonicElementPartHelper }], propDecorators: { ionRadioElement: [{
@@ -81,8 +81,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImpo
81
81
  }] } });
82
82
 
83
83
  class RadioGroupComponent {
84
- constructor(changeDetectionRef, element, renderer) {
85
- this.changeDetectionRef = changeDetectionRef;
84
+ constructor(cdr, element, renderer) {
85
+ this.cdr = cdr;
86
86
  this.element = element;
87
87
  this.renderer = renderer;
88
88
  this._hasError = false;
@@ -179,11 +179,11 @@ class RadioGroupComponent {
179
179
  }
180
180
  setDisabledState(isDisabled) {
181
181
  this.disabled = isDisabled;
182
- this.changeDetectionRef.markForCheck();
182
+ this.cdr.markForCheck();
183
183
  }
184
184
  writeValue(value) {
185
185
  this.value = value;
186
- this.changeDetectionRef.markForCheck();
186
+ this.cdr.markForCheck();
187
187
  }
188
188
  // #endregion public methods
189
189
  // #region "protected" methods used by template
@@ -269,7 +269,7 @@ class RadioGroupComponent {
269
269
  refreshStateFromProjectedContent() {
270
270
  if (this._customItemTemplate)
271
271
  return; // Only refresh on changes to projected content, not when re-rendering custom template
272
- this.changeDetectionRef.markForCheck(); // Ensure changes to projected content gets checked in next change detection cycle
272
+ this.cdr.markForCheck(); // Ensure changes to projected content gets checked in next change detection cycle
273
273
  this.refreshSelectionState(); // Sync selected index and value from projected radios
274
274
  }
275
275
  setSelectedItem(value) {
@@ -286,8 +286,8 @@ class RadioGroupComponent {
286
286
  radio.disabled = isDisabled || this._getDisabledStateFromItem(this.items[index]);
287
287
  });
288
288
  }
289
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RadioGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
290
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.13", type: RadioGroupComponent, isStandalone: true, selector: "kirby-radio-group", inputs: { disabled: "disabled", hasError: "hasError", items: "items", itemTextProperty: "itemTextProperty", itemDisabledProperty: "itemDisabledProperty", selectedIndex: "selectedIndex", value: "value" }, outputs: { hasErrorChange: "hasErrorChange", valueChange: "valueChange" }, host: { listeners: { "ionBlur": "_onRadioBlur()" }, properties: { "class.error": "this.hasError" } }, providers: [
289
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RadioGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
290
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: RadioGroupComponent, isStandalone: true, selector: "kirby-radio-group", inputs: { disabled: "disabled", hasError: "hasError", items: "items", itemTextProperty: "itemTextProperty", itemDisabledProperty: "itemDisabledProperty", selectedIndex: "selectedIndex", value: "value" }, outputs: { hasErrorChange: "hasErrorChange", valueChange: "valueChange" }, host: { listeners: { "ionBlur": "_onRadioBlur()" }, properties: { "class.error": "this.hasError" } }, providers: [
291
291
  {
292
292
  provide: NG_VALUE_ACCESSOR,
293
293
  useExisting: RadioGroupComponent,
@@ -295,7 +295,7 @@ class RadioGroupComponent {
295
295
  },
296
296
  ], queries: [{ propertyName: "_customItemTemplate", first: true, predicate: ListItemTemplateDirective, descendants: true, read: TemplateRef }, { propertyName: "projectedRadioButtons", predicate: RadioComponent, descendants: true }], viewQueries: [{ propertyName: "radioButtons", predicate: RadioComponent, descendants: true }], ngImport: i0, template: "@if (_hasItems) {\n <ion-radio-group\n [value]=\"value\"\n (ionChange)=\"_onChange($event.detail.value)\"\n [attr.aria-invalid]=\"hasError\"\n >\n @if (!items || !items.length) {\n <ng-content></ng-content>\n } @else {\n @for (item of items; track _getTextFromItem(item)) {\n <ng-container\n *ngTemplateOutlet=\"\n _customItemTemplate || defaultItemTemplate;\n context: { $implicit: item, selected: $index === selectedIndex, index: $index }\n \"\n ></ng-container>\n }\n }\n </ion-radio-group>\n}\n\n<ng-template #defaultItemTemplate let-item>\n <kirby-radio\n [value]=\"item\"\n [disabled]=\"disabled || _getDisabledStateFromItem(item)\"\n [text]=\"_getTextFromItem(item)\"\n ></kirby-radio>\n</ng-template>\n", styles: ["ion-radio-group{display:inherit;flex-wrap:inherit}\n"], dependencies: [{ kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: RadioComponent, selector: "kirby-radio", inputs: ["value", "text", "size", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
297
297
  }
298
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RadioGroupComponent, decorators: [{
298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RadioGroupComponent, decorators: [{
299
299
  type: Component,
300
300
  args: [{ selector: 'kirby-radio-group', providers: [
301
301
  {
@@ -341,11 +341,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImpo
341
341
 
342
342
  const declarations = [RadioComponent, RadioGroupComponent];
343
343
  class RadioModule {
344
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
345
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.13", ngImport: i0, type: RadioModule, imports: [CommonModule, IonRadio, IonRadioGroup, RadioComponent, RadioGroupComponent], exports: [RadioComponent, RadioGroupComponent] }); }
346
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RadioModule, imports: [CommonModule, IonRadio, IonRadioGroup, declarations] }); }
344
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
345
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: RadioModule, imports: [CommonModule, IonRadio, IonRadioGroup, RadioComponent, RadioGroupComponent], exports: [RadioComponent, RadioGroupComponent] }); }
346
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RadioModule, imports: [CommonModule, IonRadio, IonRadioGroup, declarations] }); }
347
347
  }
348
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RadioModule, decorators: [{
348
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RadioModule, decorators: [{
349
349
  type: NgModule,
350
350
  args: [{
351
351
  imports: [CommonModule, IonRadio, IonRadioGroup, ...declarations],