@kirbydesign/designsystem 11.2.0 → 11.2.2
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.
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +11 -11
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +16 -16
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
- package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +29 -31
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
- package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item.mjs +11 -11
- package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-list.mjs +40 -40
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +42 -42
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +40 -40
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-radio.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared.mjs +18 -18
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +13 -13
- package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +13 -13
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +286 -286
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem.mjs +13 -13
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/form-field/index.d.ts.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kirbydesign-designsystem-modal.mjs","sources":["../tmp-esm2022/modal/modal.interfaces.js","../tmp-esm2022/modal/modal-wrapper/config/modal-config.helper.js","../tmp-esm2022/modal/modal-wrapper/modal-elements-mover.delegate.js","../tmp-esm2022/modal/modal/alert/alert.component.js","../tmp-esm2022/modal/modal/services/alert.helper.js","../tmp-esm2022/modal/modal/services/can-dismiss.helper.js","../tmp-esm2022/modal/modal-wrapper/modal-wrapper.component.js","../tmp-esm2022/modal/modal-wrapper/config/drawer-supplementary-action.js","../tmp-esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.js","../tmp-esm2022/modal/modal/services/modal-animation-builder.service.js","../tmp-esm2022/modal/modal-navigation.service.js","../tmp-esm2022/modal/modal/services/modal.helper.js","../tmp-esm2022/modal/modal/action-sheet/action-sheet.component.js","../tmp-esm2022/modal/modal/services/action-sheet.helper.js","../tmp-esm2022/modal/modal/services/modal.controller.js","../tmp-esm2022/modal/modal/services/can-dismiss-modal-guard.js","../tmp-esm2022/modal/modal/modal-component/modal.component.js","../tmp-esm2022/modal/modal/footer/modal-footer.component.js","../tmp-esm2022/modal/kirbydesign-designsystem-modal.js"],"sourcesContent":["import { Component, Optional } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class Modal {\n}\n/**\n * WARNING: This is for internal use only and should not be used outside of Kirby.\n */\nexport var ModalElementType;\n(function (ModalElementType) {\n ModalElementType[ModalElementType[\"PAGE_PROGRESS\"] = 0] = \"PAGE_PROGRESS\";\n ModalElementType[ModalElementType[\"FOOTER\"] = 1] = \"FOOTER\";\n ModalElementType[ModalElementType[\"TITLE\"] = 2] = \"TITLE\";\n})(ModalElementType || (ModalElementType = {}));\n/**\n * WARNING: This is for internal use only and should not be used outside of Kirby.\n */\nexport class ModalElementsAdvertiser {\n}\n/**\n * WARNING: This is for internal use only and should not be used outside of Kirby.\n */\nexport class ModalElementComponent {\n get isContainedInModal() {\n return this.modalElementsAdvertiser !== null;\n }\n constructor(modalElementType, elementRef, modalElementsAdvertiser) {\n this.modalElementType = modalElementType;\n this.elementRef = elementRef;\n this.modalElementsAdvertiser = modalElementsAdvertiser;\n }\n ngAfterViewInit() {\n if (this.isContainedInModal) {\n this.modalElementsAdvertiser.addModalElement(this.modalElementType, this.elementRef);\n }\n }\n ngOnDestroy() {\n if (this.isContainedInModal) {\n this.modalElementsAdvertiser.removeModalElement(this.modalElementType, this.elementRef);\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalElementComponent, deps: [{ token: ModalElementType }, { token: i0.ElementRef }, { token: ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.1\", type: ModalElementComponent, isStandalone: false, selector: \"ng-component\", ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalElementComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: ModalElementType }, { type: i0.ElementRef }, { type: ModalElementsAdvertiser, decorators: [{\n type: Optional\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUF5QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBc0IxRixNQUFNLE9BQWdCLEtBQUs7Q0FRMUI7QUFDRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIseUVBQWEsQ0FBQTtJQUNiLDJEQUFNLENBQUE7SUFDTix5REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsdUJBQXVCO0NBRzVDO0FBRUQ7O0dBRUc7QUFLSCxNQUFNLE9BQWdCLHFCQUFxQjtJQUN6QyxJQUFZLGtCQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQ1UsZ0JBQWtDLEVBQ2xDLFVBQW1DLEVBQ3ZCLHVCQUFnRDtRQUY1RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ3ZCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFDbkUsQ0FBQztJQUVKLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO2lJQXJCbUIscUJBQXFCO3FIQUFyQixxQkFBcUIseUVBSC9CLEVBQUU7OzJGQUdRLHFCQUFxQjtrQkFKMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OzBCQVNJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2hvd0FsZXJ0Q2FsbGJhY2sgfSBmcm9tICcuL3B1YmxpY19hcGknO1xuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5RXZlbnREZXRhaWw8VCA9IGFueT4ge1xuICBkYXRhPzogVDtcbiAgcm9sZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5IHtcbiAgZGlzbWlzczogKGRhdGE/OiBhbnkpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIG9uV2lsbERpc21pc3M6IFByb21pc2U8T3ZlcmxheUV2ZW50RGV0YWlsPjtcbiAgb25EaWREaXNtaXNzOiBQcm9taXNlPE92ZXJsYXlFdmVudERldGFpbD47XG4gIGlzRGlzbWlzc2luZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxSb3V0ZUFjdGl2YXRpb24ge1xuICByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gIGlzTmV3TW9kYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb2RhbCB7XG4gIGRpZFByZXNlbnQ6IFByb21pc2U8dm9pZD47XG4gIHdpbGxDbG9zZTogUHJvbWlzZTx2b2lkPjtcbiAgY2xvc2U6IChkYXRhPzogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzY3JvbGxUb1RvcDogKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pID0+IHZvaWQ7XG4gIHNjcm9sbFRvQm90dG9tOiAoc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikgPT4gdm9pZDtcbiAgc2Nyb2xsRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGNhbkRpc21pc3M6IFNob3dBbGVydENhbGxiYWNrO1xufVxuLyoqXG4gKiBXQVJOSU5HOiBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIG91dHNpZGUgb2YgS2lyYnkuXG4gKi9cbmV4cG9ydCBlbnVtIE1vZGFsRWxlbWVudFR5cGUge1xuICBQQUdFX1BST0dSRVNTLFxuICBGT09URVIsXG4gIFRJVExFLFxufVxuXG4vKipcbiAqIFdBUk5JTkc6IFRoaXMgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQgb3V0c2lkZSBvZiBLaXJieS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyIHtcbiAgYWRkTW9kYWxFbGVtZW50OiAodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pID0+IHZvaWQ7XG4gIHJlbW92ZU1vZGFsRWxlbWVudDogKHR5cGU6IE1vZGFsRWxlbWVudFR5cGUsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFdBUk5JTkc6IFRoaXMgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQgb3V0c2lkZSBvZiBLaXJieS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGFsRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZ2V0IGlzQ29udGFpbmVkSW5Nb2RhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlciAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWxFbGVtZW50VHlwZTogTW9kYWxFbGVtZW50VHlwZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbW9kYWxFbGVtZW50c0FkdmVydGlzZXI6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNDb250YWluZWRJbk1vZGFsKSB7XG4gICAgICB0aGlzLm1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLmFkZE1vZGFsRWxlbWVudCh0aGlzLm1vZGFsRWxlbWVudFR5cGUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuaXNDb250YWluZWRJbk1vZGFsKSB7XG4gICAgICB0aGlzLm1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLnJlbW92ZU1vZGFsRWxlbWVudCh0aGlzLm1vZGFsRWxlbWVudFR5cGUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuICB9XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const COMPONENT_PROPS = new InjectionToken('componentProps');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29uZmlnLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL2NvbmZpZy9tb2RhbC1jb25maWcuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFTLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX1BST1BTID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2NvbXBvbmVudFByb3BzJyk7XG4iXX0=","import { ElementRef } from '@angular/core';\n/*\n The ModalWrapperComponent class was growing large.\n\n Hence the functions responsible for moving modal elements around\n has been encapsulated in this class.\n*/\nexport class ModalElementsMoverDelegate {\n constructor(renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n }\n addFooter(footerElementRef) {\n // Move the footer next to ion-content\n this.moveChild(footerElementRef, this.elementRef);\n }\n removeFooter(footerElementRef) {\n this.removeChild(footerElementRef);\n }\n addPageProgress(pageProgressElementRef, ionToolbarElement) {\n this.moveChild(pageProgressElementRef, ionToolbarElement);\n }\n removePageProgress(pageProgressElementRef) {\n this.removeChild(pageProgressElementRef);\n }\n /*\n contentTitleElement & ionTitleElement has to be passed\n as arguments to the method; not part of the constructor, as they\n might reference completely different elements between calls.\n \n For example in a multi-page routed modal where the elements are destroyed\n and recreated.\n */\n addTitle(titleElementRef, contentTitleElement, hasCollapsibleTitle, ionTitleElement) {\n this.moveChild(titleElementRef, ionTitleElement);\n // If title is collapsible append it to content area; required by ionic implementation.\n if (hasCollapsibleTitle) {\n const titleElementClone = titleElementRef.nativeElement.cloneNode(true);\n this.moveChild(new ElementRef(titleElementClone), contentTitleElement);\n }\n }\n removeTitle(titleElementRef, hasCollapsibleTitle, contentTitleElement) {\n this.removeChild(titleElementRef);\n if (hasCollapsibleTitle) {\n const kirbyPageTitleElement = contentTitleElement.nativeElement.querySelector('kirby-page-title');\n this.removeChild(new ElementRef(kirbyPageTitleElement));\n }\n }\n moveChild(childElementRef, newParentElementRef) {\n const child = childElementRef.nativeElement;\n const newParent = newParentElementRef.nativeElement;\n this.renderer.removeChild(child.parentElement, child);\n this.renderer.appendChild(newParent, child);\n }\n removeChild(childElementRef, parentElement) {\n const child = childElementRef.nativeElement;\n if (child) {\n this.renderer.removeChild(parentElement || child.parentElement, child);\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZWxlbWVudHMtbW92ZXIuZGVsZWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC1lbGVtZW50cy1tb3Zlci5kZWxlZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXREOzs7OztFQUtFO0FBRUYsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNVLFFBQW1CLEVBQ25CLFVBQW1DO1FBRG5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFDMUMsQ0FBQztJQUVHLFNBQVMsQ0FBQyxnQkFBeUM7UUFDeEQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxZQUFZLENBQUMsZ0JBQXlDO1FBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sZUFBZSxDQUNwQixzQkFBK0MsRUFDL0MsaUJBQW9EO1FBRXBELElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsc0JBQStDO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7TUFPRTtJQUNLLFFBQVEsQ0FDYixlQUF3QyxFQUN4QyxtQkFBNEMsRUFDNUMsbUJBQTRCLEVBQzVCLGVBQWdEO1FBRWhELElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELHVGQUF1RjtRQUN2RixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWdCLENBQUM7WUFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFTSxXQUFXLENBQ2hCLGVBQXdDLEVBQ3hDLG1CQUE0QixFQUM1QixtQkFBNEM7UUFFNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsQyxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxxQkFBcUIsR0FDekIsbUJBQW1CLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUNmLGVBQXdDLEVBQ3hDLG1CQUE0QztRQUU1QyxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQzVDLE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLGFBQWEsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sV0FBVyxDQUNqQixlQUF3QyxFQUN4QyxhQUFxRDtRQUVyRCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qXG4gIFRoZSBNb2RhbFdyYXBwZXJDb21wb25lbnQgY2xhc3Mgd2FzIGdyb3dpbmcgbGFyZ2UuIFxuXG4gIEhlbmNlIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIG1vdmluZyBtb2RhbCBlbGVtZW50cyBhcm91bmQgXG4gIGhhcyBiZWVuIGVuY2Fwc3VsYXRlZCBpbiB0aGlzIGNsYXNzLiBcbiovXG5cbmV4cG9ydCBjbGFzcyBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge31cblxuICBwdWJsaWMgYWRkRm9vdGVyKGZvb3RlckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgLy8gTW92ZSB0aGUgZm9vdGVyIG5leHQgdG8gaW9uLWNvbnRlbnRcbiAgICB0aGlzLm1vdmVDaGlsZChmb290ZXJFbGVtZW50UmVmLCB0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZvb3Rlcihmb290ZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMucmVtb3ZlQ2hpbGQoZm9vdGVyRWxlbWVudFJlZik7XG4gIH1cblxuICBwdWJsaWMgYWRkUGFnZVByb2dyZXNzKFxuICAgIHBhZ2VQcm9ncmVzc0VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIGlvblRvb2xiYXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Ub29sYmFyRWxlbWVudD5cbiAgKSB7XG4gICAgdGhpcy5tb3ZlQ2hpbGQocGFnZVByb2dyZXNzRWxlbWVudFJlZiwgaW9uVG9vbGJhckVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVBhZ2VQcm9ncmVzcyhwYWdlUHJvZ3Jlc3NFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMucmVtb3ZlQ2hpbGQocGFnZVByb2dyZXNzRWxlbWVudFJlZik7XG4gIH1cblxuICAvKiBcbiAgICAgY29udGVudFRpdGxlRWxlbWVudCAmIGlvblRpdGxlRWxlbWVudCBoYXMgdG8gYmUgcGFzc2VkXG4gICAgIGFzIGFyZ3VtZW50cyB0byB0aGUgbWV0aG9kOyBub3QgcGFydCBvZiB0aGUgY29uc3RydWN0b3IsIGFzIHRoZXkgXG4gICAgIG1pZ2h0IHJlZmVyZW5jZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBlbGVtZW50cyBiZXR3ZWVuIGNhbGxzLiBcblxuICAgICBGb3IgZXhhbXBsZSBpbiBhIG11bHRpLXBhZ2Ugcm91dGVkIG1vZGFsIHdoZXJlIHRoZSBlbGVtZW50cyBhcmUgZGVzdHJveWVkIFxuICAgICBhbmQgcmVjcmVhdGVkLlxuICAqL1xuICBwdWJsaWMgYWRkVGl0bGUoXG4gICAgdGl0bGVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBjb250ZW50VGl0bGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBoYXNDb2xsYXBzaWJsZVRpdGxlOiBib29sZWFuLFxuICAgIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVGl0bGVFbGVtZW50PlxuICApIHtcbiAgICB0aGlzLm1vdmVDaGlsZCh0aXRsZUVsZW1lbnRSZWYsIGlvblRpdGxlRWxlbWVudCk7XG4gICAgLy8gSWYgdGl0bGUgaXMgY29sbGFwc2libGUgYXBwZW5kIGl0IHRvIGNvbnRlbnQgYXJlYTsgcmVxdWlyZWQgYnkgaW9uaWMgaW1wbGVtZW50YXRpb24uXG4gICAgaWYgKGhhc0NvbGxhcHNpYmxlVGl0bGUpIHtcbiAgICAgIGNvbnN0IHRpdGxlRWxlbWVudENsb25lID0gdGl0bGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgdGhpcy5tb3ZlQ2hpbGQobmV3IEVsZW1lbnRSZWYodGl0bGVFbGVtZW50Q2xvbmUpLCBjb250ZW50VGl0bGVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlVGl0bGUoXG4gICAgdGl0bGVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBoYXNDb2xsYXBzaWJsZVRpdGxlOiBib29sZWFuLFxuICAgIGNvbnRlbnRUaXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge1xuICAgIHRoaXMucmVtb3ZlQ2hpbGQodGl0bGVFbGVtZW50UmVmKTtcbiAgICBpZiAoaGFzQ29sbGFwc2libGVUaXRsZSkge1xuICAgICAgY29uc3Qga2lyYnlQYWdlVGl0bGVFbGVtZW50OiBIVE1MRWxlbWVudCA9XG4gICAgICAgIGNvbnRlbnRUaXRsZUVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdraXJieS1wYWdlLXRpdGxlJyk7XG4gICAgICB0aGlzLnJlbW92ZUNoaWxkKG5ldyBFbGVtZW50UmVmKGtpcmJ5UGFnZVRpdGxlRWxlbWVudCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbW92ZUNoaWxkKFxuICAgIGNoaWxkRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgbmV3UGFyZW50RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBuZXdQYXJlbnQgPSBuZXdQYXJlbnRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChjaGlsZC5wYXJlbnRFbGVtZW50LCBjaGlsZCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChuZXdQYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ2hpbGQoXG4gICAgY2hpbGRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwYXJlbnRFbGVtZW50PzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHtcbiAgICBjb25zdCBjaGlsZCA9IGNoaWxkRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChjaGlsZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnRFbGVtZW50IHx8IGNoaWxkLnBhcmVudEVsZW1lbnQsIGNoaWxkKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';\nimport { of } from 'rxjs';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { EmptyStateModule } from '@kirbydesign/designsystem/empty-state';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/types\";\nimport * as i2 from \"@kirbydesign/designsystem/shared\";\nimport * as i3 from \"@kirbydesign/designsystem/empty-state\";\nimport * as i4 from \"@angular/common\";\nexport class AlertComponent {\n set title(title) {\n this.title$ = typeof title === 'string' ? of(title) : title;\n }\n set message(message) {\n this.message$ = typeof message === 'string' ? of(message) : message;\n }\n set okBtn(okBtn) {\n this.okBtn$ = typeof okBtn === 'string' ? of(okBtn) : okBtn;\n }\n set cancelBtn(cancelBtn) {\n this.cancelBtn$ = typeof cancelBtn === 'string' ? of(cancelBtn) : cancelBtn;\n }\n constructor(elementRef, windowRef) {\n this.elementRef = elementRef;\n this.windowRef = windowRef;\n this.BLUR_WRAPPER_DELAY_IN_MS = 50;\n this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);\n }\n ngAfterViewInit() {\n setTimeout(() => {\n this.alertWrapper.nativeElement.focus();\n this.alertWrapper.nativeElement.blur();\n }, this.BLUR_WRAPPER_DELAY_IN_MS);\n }\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n onCancel() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement?.dismiss(false);\n }\n onOk() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement?.dismiss(true);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ElementRef }, { token: i1.WindowRef }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.1\", type: AlertComponent, isStandalone: true, selector: \"kirby-alert\", inputs: { title: \"title\", message: \"message\", iconName: \"iconName\", iconThemeColor: \"iconThemeColor\", okBtn: \"okBtn\", okBtnIsDestructive: \"okBtnIsDestructive\", cancelBtn: \"cancelBtn\" }, host: { properties: { \"class.ion-page\": \"false\" } }, viewQueries: [{ propertyName: \"alertWrapper\", first: true, predicate: [\"alertWrapper\"], descendants: true, static: true }], ngImport: i0, template: \"<article #alertWrapper>\\n <kirby-empty-state\\n [iconName]=\\\"iconName\\\"\\n [themeColor]=\\\"iconThemeColor\\\"\\n [title]=\\\"title$ | async\\\"\\n [subtitle]=\\\"message$ | async\\\"\\n ></kirby-empty-state>\\n <div class=\\\"buttongroup\\\">\\n @if (cancelBtn$ | async; as cancelBtn) {\\n <button kirby-button attentionLevel=\\\"3\\\" class=\\\"cancel-btn\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelBtn }}\\n </button>\\n }\\n <button\\n kirby-button\\n [size]=\\\"(cancelBtn$ | async) ? null : 'lg'\\\"\\n attentionLevel=\\\"1\\\"\\n class=\\\"ok-btn\\\"\\n [class.destructive]=\\\"okBtnIsDestructive\\\"\\n (click)=\\\"onOk()\\\"\\n >\\n {{ okBtn$ | async }}\\n </button>\\n </div>\\n</article>\\n\", styles: [\"article{overflow:hidden;padding:24px 16px 16px}@media (max-width: 320px){article{padding:8px}}.buttongroup{display:flex;justify-content:center;column-gap:8px}.buttongroup button{flex:1 1 50%;margin-inline:0}.buttongroup button:only-child{flex-grow:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: IconModule }, { kind: \"directive\", type: i2.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\"] }, { kind: \"ngmodule\", type: EmptyStateModule }, { kind: \"component\", type: i3.EmptyStateComponent, selector: \"kirby-empty-state\", inputs: [\"iconName\", \"title\", \"subtitle\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[kirby-button],Button[kirby-button],a[kirby-button]\", inputs: [\"attentionLevel\", \"noDecoration\", \"themeColor\", \"expand\", \"isFloating\", \"size\", \"showIconOnly\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: AlertComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n IconModule,\n EmptyStateModule,\n ButtonComponent,\n CommonModule,\n EmptyStateModule,\n ThemeColorDirective,\n ], selector: 'kirby-alert', host: { '[class.ion-page]': 'false' }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<article #alertWrapper>\\n <kirby-empty-state\\n [iconName]=\\\"iconName\\\"\\n [themeColor]=\\\"iconThemeColor\\\"\\n [title]=\\\"title$ | async\\\"\\n [subtitle]=\\\"message$ | async\\\"\\n ></kirby-empty-state>\\n <div class=\\\"buttongroup\\\">\\n @if (cancelBtn$ | async; as cancelBtn) {\\n <button kirby-button attentionLevel=\\\"3\\\" class=\\\"cancel-btn\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelBtn }}\\n </button>\\n }\\n <button\\n kirby-button\\n [size]=\\\"(cancelBtn$ | async) ? null : 'lg'\\\"\\n attentionLevel=\\\"1\\\"\\n class=\\\"ok-btn\\\"\\n [class.destructive]=\\\"okBtnIsDestructive\\\"\\n (click)=\\\"onOk()\\\"\\n >\\n {{ okBtn$ | async }}\\n </button>\\n </div>\\n</article>\\n\", styles: [\"article{overflow:hidden;padding:24px 16px 16px}@media (max-width: 320px){article{padding:8px}}.buttongroup{display:flex;justify-content:center;column-gap:8px}.buttongroup button{flex:1 1 50%;margin-inline:0}.buttongroup button:only-child{flex-grow:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.WindowRef }], propDecorators: { alertWrapper: [{\n type: ViewChild,\n args: ['alertWrapper', { static: true }]\n }], title: [{\n type: Input\n }], message: [{\n type: Input\n }], iconName: [{\n type: Input\n }], iconThemeColor: [{\n type: Input\n }], okBtn: [{\n type: Input\n }], okBtnIsDestructive: [{\n type: Input\n }], cancelBtn: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9hbGVydC9hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQWlCbkUsTUFBTSxPQUFPLGNBQWM7SUFNekIsSUFDSSxLQUFLLENBQUMsS0FBa0M7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFHRCxJQUNJLE9BQU8sQ0FBQyxPQUFvQztRQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDdEUsQ0FBQztJQU1ELElBQ0ksS0FBSyxDQUFDLEtBQWtDO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBSUQsSUFDSSxTQUFTLENBQUMsU0FBc0M7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlFLENBQUM7SUFFRCxZQUNVLFVBQW1DLEVBQ25DLFNBQW9CO1FBRHBCLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFsQ3JCLDZCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUUvQixZQUFPLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQWlDckUsQ0FBQztJQUVKLGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsQ0FBQyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhO1FBQ1gseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxlQUFlLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNFLGVBQWUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztpSUExRFUsY0FBYztxSEFBZCxjQUFjLGtiQ2hDM0IsMnNCQXlCQSxxVEROSSxVQUFVLG9XQUNWLGdCQUFnQiw4SkFDaEIsZUFBZSwrTUFDZixZQUFZOzsyRkFVSCxjQUFjO2tCQWYxQixTQUFTOzhCQUNDO3dCQUNQLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixtQkFBbUI7cUJBQ3BCLFlBQ1MsYUFBYSxRQUdqQixFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTt1R0FJTSxZQUFZO3NCQUFoRSxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS3ZDLEtBQUs7c0JBRFIsS0FBSztnQkFPRixPQUFPO3NCQURWLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUlGLEtBQUs7c0JBRFIsS0FBSztnQkFJRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBSUYsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90eXBlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBUaGVtZUNvbG9yIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IFRoZW1lQ29sb3JEaXJlY3RpdmUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9lbXB0eS1zdGF0ZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgSWNvbk1vZHVsZSxcbiAgICBFbXB0eVN0YXRlTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRW1wdHlTdGF0ZU1vZHVsZSxcbiAgICBUaGVtZUNvbG9yRGlyZWN0aXZlLFxuICBdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LWFsZXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDogeyAnW2NsYXNzLmlvbi1wYWdlXSc6ICdmYWxzZScgfSwgLy9FbnN1cmUgaW9uLXBhZ2UgY2xhc3MgZG9lc24ndCBnZXQgYXBwbGllZCBieSBJb25pYyBNb2RhbCBDb250cm9sbGVyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBCTFVSX1dSQVBQRVJfREVMQVlfSU5fTVMgPSA1MDtcbiAgQFZpZXdDaGlsZCgnYWxlcnRXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBhbGVydFdyYXBwZXI6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgc2Nyb2xsWTogbnVtYmVyID0gTWF0aC5hYnModGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFkpO1xuXG4gIHRpdGxlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBASW5wdXQoKVxuICBzZXQgdGl0bGUodGl0bGU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuICAgIHRoaXMudGl0bGUkID0gdHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJyA/IG9mKHRpdGxlKSA6IHRpdGxlO1xuICB9XG5cbiAgbWVzc2FnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgQElucHV0KClcbiAgc2V0IG1lc3NhZ2UobWVzc2FnZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG4gICAgdGhpcy5tZXNzYWdlJCA9IHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJyA/IG9mKG1lc3NhZ2UpIDogbWVzc2FnZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGljb25OYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb25UaGVtZUNvbG9yOiBUaGVtZUNvbG9yIHwgYCR7VGhlbWVDb2xvcn1gO1xuXG4gIG9rQnRuJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBASW5wdXQoKVxuICBzZXQgb2tCdG4ob2tCdG46IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuICAgIHRoaXMub2tCdG4kID0gdHlwZW9mIG9rQnRuID09PSAnc3RyaW5nJyA/IG9mKG9rQnRuKSA6IG9rQnRuO1xuICB9XG4gIEBJbnB1dCgpIG9rQnRuSXNEZXN0cnVjdGl2ZTogYm9vbGVhbjtcblxuICBjYW5jZWxCdG4kOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIEBJbnB1dCgpXG4gIHNldCBjYW5jZWxCdG4oY2FuY2VsQnRuOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNhbmNlbEJ0biQgPSB0eXBlb2YgY2FuY2VsQnRuID09PSAnc3RyaW5nJyA/IG9mKGNhbmNlbEJ0bikgOiBjYW5jZWxCdG47XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWxlcnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuYWxlcnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH0sIHRoaXMuQkxVUl9XUkFQUEVSX0RFTEFZX0lOX01TKTtcbiAgfVxuXG4gIG9uRm9jdXNDaGFuZ2UoKSB7XG4gICAgLy8gVGhpcyBmaXhlcyBhbiB1bmRlc2lyZWQgc2Nyb2xsIGJlaGF2aW91ciBvY2N1cnJpbmcgb24ga2V5Ym9hcmQtdGFiYmluZ1xuICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxUbyh7IHRvcDogdGhpcy5zY3JvbGxZIH0pO1xuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgY29uc3QgaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgaW9uTW9kYWxFbGVtZW50Py5kaXNtaXNzKGZhbHNlKTtcbiAgfVxuXG4gIG9uT2soKSB7XG4gICAgY29uc3QgaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgaW9uTW9kYWxFbGVtZW50Py5kaXNtaXNzKHRydWUpO1xuICB9XG59XG4iLCI8YXJ0aWNsZSAjYWxlcnRXcmFwcGVyPlxuICA8a2lyYnktZW1wdHktc3RhdGVcbiAgICBbaWNvbk5hbWVdPVwiaWNvbk5hbWVcIlxuICAgIFt0aGVtZUNvbG9yXT1cImljb25UaGVtZUNvbG9yXCJcbiAgICBbdGl0bGVdPVwidGl0bGUkIHwgYXN5bmNcIlxuICAgIFtzdWJ0aXRsZV09XCJtZXNzYWdlJCB8IGFzeW5jXCJcbiAgPjwva2lyYnktZW1wdHktc3RhdGU+XG4gIDxkaXYgY2xhc3M9XCJidXR0b25ncm91cFwiPlxuICAgIEBpZiAoY2FuY2VsQnRuJCB8IGFzeW5jOyBhcyBjYW5jZWxCdG4pIHtcbiAgICAgIDxidXR0b24ga2lyYnktYnV0dG9uIGF0dGVudGlvbkxldmVsPVwiM1wiIGNsYXNzPVwiY2FuY2VsLWJ0blwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+XG4gICAgICAgIHt7IGNhbmNlbEJ0biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIDxidXR0b25cbiAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgW3NpemVdPVwiKGNhbmNlbEJ0biQgfCBhc3luYykgPyBudWxsIDogJ2xnJ1wiXG4gICAgICBhdHRlbnRpb25MZXZlbD1cIjFcIlxuICAgICAgY2xhc3M9XCJvay1idG5cIlxuICAgICAgW2NsYXNzLmRlc3RydWN0aXZlXT1cIm9rQnRuSXNEZXN0cnVjdGl2ZVwiXG4gICAgICAoY2xpY2spPVwib25PaygpXCJcbiAgICA+XG4gICAgICB7eyBva0J0biQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvYXJ0aWNsZT5cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { isObservable } from 'rxjs';\nimport { AlertComponent } from '../alert/alert.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ionic/angular/standalone\";\nexport class AlertHelper {\n constructor(ionicModalController) {\n this.ionicModalController = ionicModalController;\n }\n async showAlert(config) {\n const ionModal = await this.ionicModalController.create({\n component: AlertComponent,\n componentProps: this.getComponentProps(config),\n cssClass: ['kirby-overlay', 'kirby-alert'],\n mode: 'ios',\n backdropDismiss: false,\n });\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n getComponentProps(config) {\n return {\n ...config,\n okBtn: this.getOkBtn(config),\n okBtnIsDestructive: this.getOkBtnIsDestructive(config),\n iconName: config.icon && config.icon.name,\n iconThemeColor: config.icon && config.icon.themeColor,\n };\n }\n getOkBtn(config) {\n let text;\n if (config.okBtn) {\n if (typeof config.okBtn === 'string' || isObservable(config.okBtn)) {\n text = config.okBtn;\n }\n else {\n text = config.okBtn?.text;\n }\n }\n return text;\n }\n getOkBtnIsDestructive(config) {\n return typeof config.okBtn === 'object' ? config.okBtn.isDestructive : undefined;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: AlertHelper, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: AlertHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: AlertHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalController }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL3NlcnZpY2VzL2FsZXJ0LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFJMUQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0Isb0JBQXFDO1FBQXJDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBaUI7SUFBRyxDQUFDO0lBRXRELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBbUI7UUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO1lBQ3RELFNBQVMsRUFBRSxjQUFjO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1lBQzlDLFFBQVEsRUFBRSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUM7WUFDMUMsSUFBSSxFQUFFLEtBQUs7WUFDWCxlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixPQUFPO1lBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN4QyxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRTtZQUN2QyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRTtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQW1CO1FBQzNDLE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDNUIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztZQUN0RCxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDekMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVO1NBQ3RELENBQUM7SUFDSixDQUFDO0lBRU8sUUFBUSxDQUFDLE1BQW1CO1FBQ2xDLElBQUksSUFBaUMsQ0FBQztRQUV0QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBTTtRQUMxQixPQUFPLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkYsQ0FBQztpSUE5Q1UsV0FBVztxSUFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9tb2RhbC5pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnRDb25maWcgfSBmcm9tICcuLi9hbGVydC9jb25maWcvYWxlcnQtY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFsZXJ0SGVscGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpb25pY01vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWxlcnQoY29uZmlnOiBBbGVydENvbmZpZyk6IFByb21pc2U8T3ZlcmxheT4ge1xuICAgIGNvbnN0IGlvbk1vZGFsID0gYXdhaXQgdGhpcy5pb25pY01vZGFsQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBBbGVydENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB0aGlzLmdldENvbXBvbmVudFByb3BzKGNvbmZpZyksXG4gICAgICBjc3NDbGFzczogWydraXJieS1vdmVybGF5JywgJ2tpcmJ5LWFsZXJ0J10sXG4gICAgICBtb2RlOiAnaW9zJyxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBpb25Nb2RhbC5wcmVzZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc21pc3M6IGlvbk1vZGFsLmRpc21pc3MuYmluZChpb25Nb2RhbCksXG4gICAgICBvbldpbGxEaXNtaXNzOiBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCksXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBvbmVudFByb3BzKGNvbmZpZzogQWxlcnRDb25maWcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgb2tCdG46IHRoaXMuZ2V0T2tCdG4oY29uZmlnKSxcbiAgICAgIG9rQnRuSXNEZXN0cnVjdGl2ZTogdGhpcy5nZXRPa0J0bklzRGVzdHJ1Y3RpdmUoY29uZmlnKSxcbiAgICAgIGljb25OYW1lOiBjb25maWcuaWNvbiAmJiBjb25maWcuaWNvbi5uYW1lLFxuICAgICAgaWNvblRoZW1lQ29sb3I6IGNvbmZpZy5pY29uICYmIGNvbmZpZy5pY29uLnRoZW1lQ29sb3IsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2tCdG4oY29uZmlnOiBBbGVydENvbmZpZyk6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgbGV0IHRleHQ6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIGlmIChjb25maWcub2tCdG4pIHtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9rQnRuID09PSAnc3RyaW5nJyB8fCBpc09ic2VydmFibGUoY29uZmlnLm9rQnRuKSkge1xuICAgICAgICB0ZXh0ID0gY29uZmlnLm9rQnRuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dCA9IGNvbmZpZy5va0J0bj8udGV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGdldE9rQnRuSXNEZXN0cnVjdGl2ZShjb25maWcpIHtcbiAgICByZXR1cm4gdHlwZW9mIGNvbmZpZy5va0J0biA9PT0gJ29iamVjdCcgPyBjb25maWcub2tCdG4uaXNEZXN0cnVjdGl2ZSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./alert.helper\";\nexport class CanDismissHelper {\n constructor(alertHelper) {\n this.alertHelper = alertHelper;\n }\n getCanDismissCallback(callback) {\n return async () => {\n const result = await callback();\n if (typeof result === 'boolean')\n return result;\n const canCloseModal = await this.showAlert(result);\n return canCloseModal;\n };\n }\n async showAlert(config) {\n const alert = await this.alertHelper.showAlert(config);\n const result = await alert.onWillDismiss;\n return result.data;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: CanDismissHelper, deps: [{ token: i1.AlertHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: CanDismissHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: CanDismissHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.AlertHelper }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRpc21pc3MuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL3NlcnZpY2VzL2Nhbi1kaXNtaXNzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFekMscUJBQXFCLENBQUMsUUFBMkI7UUFDdEQsT0FBTyxLQUFLLElBQUksRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsRUFBRSxDQUFDO1lBRWhDLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUztnQkFBRSxPQUFPLE1BQU0sQ0FBQztZQUUvQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBbUI7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7aUlBbEJVLGdCQUFnQjtxSUFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hvd0FsZXJ0Q2FsbGJhY2sgfSBmcm9tICcuLi8uLi9tb2RhbC13cmFwcGVyL2NvbmZpZyc7XG5pbXBvcnQgeyBBbGVydENvbmZpZyB9IGZyb20gJy4uL2FsZXJ0JztcbmltcG9ydCB7IEFsZXJ0SGVscGVyIH0gZnJvbSAnLi9hbGVydC5oZWxwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FuRGlzbWlzc0hlbHBlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxlcnRIZWxwZXI6IEFsZXJ0SGVscGVyKSB7fVxuXG4gIHB1YmxpYyBnZXRDYW5EaXNtaXNzQ2FsbGJhY2soY2FsbGJhY2s6IFNob3dBbGVydENhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxiYWNrKCk7XG5cbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnYm9vbGVhbicpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgIGNvbnN0IGNhbkNsb3NlTW9kYWwgPSBhd2FpdCB0aGlzLnNob3dBbGVydChyZXN1bHQpO1xuICAgICAgcmV0dXJuIGNhbkNsb3NlTW9kYWw7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWxlcnQoY29uZmlnOiBBbGVydENvbmZpZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydEhlbHBlci5zaG93QWxlcnQoY29uZmlnKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhbGVydC5vbldpbGxEaXNtaXNzO1xuICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgfVxufVxuIl19","import { Component, ContentChild, ElementRef, HostBinding, HostListener, Injector, Input, RendererStyleFlags2, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';\nimport { RouterModule, RouterOutlet } from '@angular/router';\nimport { firstValueFrom, merge, Subject } from 'rxjs';\nimport { debounceTime, first, map, takeUntil } from 'rxjs/operators';\nimport { DesignTokenHelper, getIonModalDialogAncestor } from '@kirbydesign/designsystem/helpers';\nimport { observeContent } from '@kirbydesign/designsystem/helpers';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, } from '@ionic/angular/standalone';\nimport { Modal, ModalElementsAdvertiser, ModalElementType } from '../modal.interfaces';\nimport { COMPONENT_PROPS } from './config/modal-config.helper';\nimport { ModalElementsMoverDelegate } from './modal-elements-mover.delegate';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/shared\";\nimport * as i2 from \"@kirbydesign/designsystem/types\";\nimport * as i3 from \"@kirbydesign/designsystem/helpers\";\nimport * as i4 from \"../modal/services/can-dismiss.helper\";\nimport * as i5 from \"@angular/router\";\nimport * as i6 from \"@kirbydesign/designsystem/icon\";\nimport * as i7 from \"@angular/common\";\nconst contentScrollDebounceTimeInMS = 10;\nconst contentScrolledOffsetInPixels = 4;\nexport class ModalWrapperComponent {\n get _hasCollapsibleTitle() {\n return !!this.config?.collapseTitle;\n }\n static { this.KEYBOARD_HIDE_DELAY_IN_MS = 100; }\n set scrollDisabled(disabled) {\n this.ionContent.scrollY = !disabled;\n }\n set canDismiss(callback) {\n this.ionModalElement.canDismiss = this.canDismissHelper.getCanDismissCallback(callback);\n }\n get contentTitleElement() {\n /*\n contentTitleElement has ngIf directive dependent on _hasCollapsibleTitle; trigger CD to make sure element has been queried.\n Solution taken from: https://danieleyassu.com/angular-viewchild-and-ngif/\n */\n if (!this._contentTitleElement && this._hasCollapsibleTitle) {\n this.changeDetector.detectChanges();\n }\n return this._contentTitleElement;\n }\n get intersectionObserver() {\n if (!this._intersectionObserver) {\n this._intersectionObserver = this.createModalWrapperIntersectionObserver();\n }\n return this._intersectionObserver;\n }\n get _isDrawer() {\n return this.config.flavor === 'drawer';\n }\n constructor(changeDetector, injector, elementRef, renderer, zone, resizeObserverService, windowRef, platform, canDismissHelper, environmentInjector, translations) {\n this.changeDetector = changeDetector;\n this.injector = injector;\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.zone = zone;\n this.resizeObserverService = resizeObserverService;\n this.windowRef = windowRef;\n this.platform = platform;\n this.canDismissHelper = canDismissHelper;\n this.environmentInjector = environmentInjector;\n this.translations = translations;\n this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);\n this.VIEWPORT_RESIZE_DEBOUNCE_TIME = 100;\n this.keyboardVisible = false;\n this.toolbarButtons = [];\n this.delayedClose = () => { };\n this.viewportResized = false;\n this.ionModalDidPresent = new Subject();\n this.didPresent = firstValueFrom(this.ionModalDidPresent);\n this.ionModalWillDismiss = new Subject();\n this.willClose = firstValueFrom(this.ionModalWillDismiss);\n this.viewportResize = new Subject();\n this.viewportResize$ = this.viewportResize\n .asObservable()\n .pipe(debounceTime(this.VIEWPORT_RESIZE_DEBOUNCE_TIME));\n this.destroy$ = new Subject();\n this.willClose$ = this.ionModalWillDismiss.pipe(first());\n this._currentFooter = null;\n this.setAriaLabelFromTitleContent = () => {\n const titleTextContent = this.ionTitleElement?.nativeElement.textContent;\n if (this.ionModalDialog && titleTextContent) {\n this.renderer.setAttribute(this.ionModalDialog, 'aria-label', titleTextContent);\n }\n };\n this.setViewportHeight();\n this.observeViewportResize();\n this.modalElementsMoverDelegate = new ModalElementsMoverDelegate(renderer, elementRef);\n }\n ngOnInit() {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.ionModalDialog = getIonModalDialogAncestor(this.elementRef.nativeElement);\n this.initializeSizing();\n this.initializeModalRoute();\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.listenForScroll();\n this.initializeResizeModalToModalWrapper();\n this.focusModalTitle();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n this.modalWrapperInjector = Injector.create({\n providers: [{ provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent }],\n parent: this.injector,\n });\n }\n ngAfterViewInit() {\n if (this.toolbarButtonsQuery) {\n this.toolbarButtons = this.toolbarButtonsQuery.map((buttonRef) => buttonRef.nativeElement);\n }\n this.setAriaLabel();\n }\n set currentFooter(footer) {\n if (this._currentFooter) {\n this.resizeObserverService.unobserve(this._currentFooter);\n }\n this._currentFooter = footer;\n if (footer !== null) {\n this.resizeObserverService.observe(footer, (entry) => {\n const [property, pixelValue] = [\n '--footer-height',\n `${Math.floor(entry.contentRect.height)}px`,\n ];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n this._currentFooter = footer;\n }\n get currentFooter() {\n return this._currentFooter;\n }\n addModalElement(type, modalElement) {\n const addModalElementFn = {\n [ModalElementType.FOOTER]: () => {\n this.modalElementsMoverDelegate.addFooter(modalElement);\n this.currentFooter = modalElement.nativeElement;\n },\n [ModalElementType.TITLE]: () => this.modalElementsMoverDelegate.addTitle(modalElement, this.contentTitleElement, this._hasCollapsibleTitle, this.ionTitleElement),\n [ModalElementType.PAGE_PROGRESS]: () => this.modalElementsMoverDelegate.addPageProgress(modalElement, this.ionToolbarElement),\n }[type];\n addModalElementFn();\n }\n removeModalElement(type, modalElement) {\n const removeModalElementFn = {\n [ModalElementType.FOOTER]: () => {\n this.modalElementsMoverDelegate.removeFooter(modalElement);\n this.currentFooter = null;\n },\n [ModalElementType.TITLE]: () => this.modalElementsMoverDelegate.removeTitle(modalElement, this._hasCollapsibleTitle, this.contentTitleElement),\n [ModalElementType.PAGE_PROGRESS]: () => this.modalElementsMoverDelegate.removePageProgress(modalElement),\n }[type];\n removeModalElementFn();\n }\n initializeResizeModalToModalWrapper() {\n if (this.config.flavor === 'drawer' && this.config.interactWithBackground) {\n merge(this.ionModalDidPresent, this.viewportResize$)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n // wait for template to render\n setTimeout(() => {\n const domRect = this.elementRef.nativeElement.getBoundingClientRect();\n const document = this.windowRef.nativeWindow.document.documentElement;\n const right = document.clientWidth - domRect.right;\n this.renderer.setStyle(this.ionModalElement, 'top', `${domRect.top}px`);\n this.renderer.setStyle(this.ionModalElement, 'left', `${domRect.left}px`);\n this.renderer.setStyle(this.ionModalElement, 'right', `${right}px`);\n });\n });\n }\n }\n initializeSizing() {\n if (this.config.size === 'full-height')\n return;\n this.patchScrollElementSize();\n this.observeHeaderResize();\n this.observeModalFullHeight();\n }\n initializeModalRoute() {\n if (this.config.modalRoute) {\n this.onSiblingModalRouteActivated(this.config.siblingModalRouteActivated$);\n // Load component from modal-route inside router-outlet:\n this.routerOutlet.activateWith(this.config.modalRoute, this.environmentInjector);\n }\n }\n onSiblingModalRouteActivated(siblingModalRouteActivated$) {\n if (!siblingModalRouteActivated$)\n return;\n siblingModalRouteActivated$.pipe(takeUntil(this.willClose$)).subscribe((route) => {\n if (this.routerOutlet.isActivated) {\n this.routerOutlet.deactivate();\n }\n this.routerOutlet.activateWith(route, this.environmentInjector);\n });\n }\n patchScrollElementSize() {\n const supportsCssShadowParts = 'part' in HTMLElement.prototype;\n if (supportsCssShadowParts)\n return;\n this.ionContent.getScrollElement().then((scrollElement) => {\n this.renderer.setStyle(scrollElement, 'height', '100%');\n this.renderer.setStyle(scrollElement, 'position', 'relative');\n if (this.config.flavor === 'drawer') {\n this.renderer.setStyle(scrollElement, 'transition', 'padding-bottom ' + DesignTokenHelper.softKeyboardTransitionLeave);\n }\n });\n }\n observeModalFullHeight() {\n const ionModalWrapper = this.getIonModalWrapperElement();\n if (!ionModalWrapper)\n return;\n // Start observing when modal has finished animating:\n this.didPresent.then(() => {\n this.intersectionObserver.observe(ionModalWrapper);\n });\n }\n // Extracted into function for ease of testing\n getIonModalWrapperElement() {\n return this.ionModalElement.shadowRoot.querySelector('.modal-wrapper');\n }\n observeHeaderResize() {\n this.resizeObserverService.observe(this.ionHeaderElement.nativeElement, (entry) => {\n const [property, pixelValue] = ['--header-height', `${entry.contentRect.height}px`];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n listenForScroll() {\n const query = `(min-width: ${DesignTokenHelper.breakpoints.medium})`;\n const mediaQuery = this.windowRef.nativeWindow.matchMedia(query);\n const enableScrollEvents = (listOrEvent) => {\n const isDesktop = listOrEvent.matches;\n this.scrollEventsEnabled = !isDesktop;\n };\n enableScrollEvents(mediaQuery);\n mediaQuery.onchange = enableScrollEvents;\n // Runs scroll subscription outside zone to avoid excessive amount of CD cycles\n // when ionScroll emits.\n this.zone.runOutsideAngular(() => {\n // Always subscribe as ionScroll only emits when scrollEventsEnabled is true\n this.ionContent.ionScroll\n .pipe(debounceTime(contentScrollDebounceTimeInMS), map((event) => event.detail), takeUntil(this.destroy$))\n .subscribe((scrollInfo) => {\n const contentScrolledPastOffset = scrollInfo.scrollTop > contentScrolledOffsetInPixels;\n if (contentScrolledPastOffset !== this.isContentScrolled) {\n this.isContentScrolled = contentScrolledPastOffset;\n this.changeDetector.detectChanges();\n }\n });\n });\n }\n observeTitleContentChanges() {\n this.mutationObserverUnobserveFn = observeContent(this.ionTitleElement.nativeElement, this.setAriaLabelFromTitleContent);\n }\n setAriaLabel() {\n const ariaLabel = this.config.htmlAttributes?.['aria-label'];\n const ionModalElementDialog = getIonModalDialogAncestor(this.ionModalElement);\n if (ionModalElementDialog && ariaLabel) {\n this.renderer.setAttribute(ionModalElementDialog, 'aria-label', ariaLabel);\n }\n else {\n this.setAriaLabelFromTitleContent();\n this.observeTitleContentChanges();\n }\n }\n focusModalTitle() {\n this.ionModalDidPresent.pipe(takeUntil(this.willClose$)).subscribe(() => {\n // Use queueMicrotask to defer our focus until after Ionic has saved a reference\n // to the element that should have focus restored when modal is closed.\n // https://github.com/ionic-team/ionic-framework/blob/v8.6.1/core/src/utils/overlays.ts#L592\n queueMicrotask(() => {\n const focusAlreadyInModal = this.ionModalElement?.contains(document.activeElement);\n if (focusAlreadyInModal)\n return;\n this.ionTitleElement?.nativeElement.focus();\n });\n });\n }\n scrollToTop(scrollDuration) {\n this.ionContent.scrollToTop(scrollDuration || 0);\n }\n scrollToBottom(scrollDuration) {\n this.ionContent.scrollToBottom(scrollDuration || 0);\n }\n async close(data) {\n if (!this.ionModalElement) {\n return;\n }\n if (!this.keyboardVisible || !this.viewportResized) {\n // No keyboard visible or viewport not resized:\n // Dismiss modal and return:\n clearTimeout(this.delayedCloseTimeoutId);\n await this.ionModalElement.dismiss(data);\n return;\n }\n // Keyboard visible:\n // Blur active element and wait for keyboard to hide,\n // then dismiss modal and return:\n this.blurActiveElement();\n return new Promise((resolve) => {\n this.delayedClose = async () => {\n await this.ionModalElement.dismiss(data);\n resolve();\n };\n this.delayedCloseTimeoutId = setTimeout(this.delayedClose, ModalWrapperComponent.KEYBOARD_HIDE_DELAY_IN_MS);\n });\n }\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n _onKeyboardShow(keyboardHeight) {\n this.setKeyboardVisibility(keyboardHeight);\n }\n _onKeyboardHide() {\n this.setKeyboardVisibility(0);\n }\n toggleContentMaxHeight(freeze) {\n const shouldToggleMaxHeight = this.config.flavor === 'modal' && this.platform.isPhabletOrBigger();\n if (!shouldToggleMaxHeight)\n return;\n const style = 'max-height';\n const contentElement = this.ionContentElement.nativeElement;\n this.zone.run(() => {\n if (freeze) {\n const contentHeight = contentElement.offsetHeight;\n this.renderer.setStyle(contentElement, style, `${contentHeight}px`);\n }\n else {\n this.renderer.removeStyle(contentElement, style);\n }\n });\n }\n setKeyboardVisibility(keyboardHeight) {\n const keyboardAlreadyVisible = keyboardHeight > 0 && this.keyboardVisible;\n const keyboardAlreadyHidden = keyboardHeight === 0 && !this.keyboardVisible;\n if (keyboardAlreadyVisible || keyboardAlreadyHidden)\n return;\n this.keyboardVisible = keyboardHeight > 0;\n this.toggleContentMaxHeight(this.keyboardVisible);\n this.setKeyboardOverlap(keyboardHeight);\n }\n getKeyboardOverlap(keyboardHeight, element) {\n if (keyboardHeight <= 0 || !element)\n return 0;\n const distanceFromViewportBottomToElement = Math.floor(this.windowRef.nativeWindow.innerHeight - element.getBoundingClientRect().bottom);\n return Math.max(keyboardHeight - distanceFromViewportBottomToElement, 0);\n }\n setCssVar(element, property, value) {\n this.zone.run(() => this.renderer.setStyle(element, property, value, RendererStyleFlags2.DashCase));\n }\n toggleCssClass(element, klass, condition) {\n this.zone.run(() => condition ? this.renderer.addClass(element, klass) : this.renderer.removeClass(element, klass));\n }\n setKeyboardOverlap(keyboardHeight) {\n this.toggleCssClass(this.elementRef.nativeElement, 'keyboard-visible', keyboardHeight > 0);\n const keyboardOverlap = this.getKeyboardOverlap(keyboardHeight, this.elementRef.nativeElement);\n let snapFooterToKeyboard = false;\n const embeddedFooterElement = this.currentFooter;\n if (embeddedFooterElement) {\n this.setCssVar(embeddedFooterElement, '--keyboard-offset', `${keyboardOverlap}px`);\n snapFooterToKeyboard = embeddedFooterElement.classList.contains('snap-to-keyboard');\n }\n const contentElement = this.ionContentElement.nativeElement;\n const contentKeyboardOffset = snapFooterToKeyboard\n ? keyboardOverlap\n : this.getKeyboardOverlap(keyboardHeight, contentElement);\n this.setCssVar(contentElement, '--keyboard-offset', `${contentKeyboardOffset}px`);\n }\n onHeaderTouchStart(event) {\n if (this.keyboardVisible) {\n const isToolbarButtonTouch = this.toolbarButtons.some((button) => {\n return (event.target instanceof HTMLElement &&\n (event.target === button || button.contains(event.target)));\n });\n // Prevent blur if event target is a toolbar button\n // (to allow tap event to fire):\n if (!isToolbarButtonTouch) {\n this.blurActiveElement();\n }\n }\n }\n _onWindowResize() {\n this.setViewportHeight();\n }\n setViewportHeight() {\n const vh = (this.windowRef.nativeWindow.innerHeight * 0.01).toFixed(2);\n this.setCssVar(this.elementRef.nativeElement, '--vh', `${vh}px`);\n }\n observeViewportResize() {\n this.resizeObserverService.observe(this.windowRef.nativeWindow.document.body, (entry) => this.onViewportResize(entry));\n }\n onViewportResize(entry) {\n if (!this.initialViewportHeight) {\n // Initial observe callback, register initial height:\n this.initialViewportHeight = entry.contentRect.height;\n return;\n }\n this.viewportResized = entry.contentRect.height !== this.initialViewportHeight;\n if (!this.viewportResized) {\n // We are back to initial view port height, check for pending close func:\n if (this.delayedCloseTimeoutId) {\n clearTimeout(this.delayedCloseTimeoutId);\n this.delayedClose();\n }\n }\n this.viewportResize.next();\n }\n blurActiveElement() {\n const BLUR_TARGET_SELECTOR = 'input, textarea';\n if (this.keyboardVisible) {\n if (document.activeElement instanceof HTMLElement &&\n document.activeElement.matches(BLUR_TARGET_SELECTOR)) {\n document.activeElement.blur();\n }\n }\n }\n createModalWrapperIntersectionObserver() {\n const callback = (entries) => {\n const entry = entries[0];\n const isTouchingViewport = entry.intersectionRatio < 1;\n if (isTouchingViewport) {\n this.ionModalElement.classList.add('full-height');\n }\n else {\n this.ionModalElement.classList.remove('full-height');\n }\n };\n // Set explicit viewport root if within iframe:\n const root = this.windowRef.nativeWindow.frameElement\n ? this.windowRef.nativeWindow.document // Cast to `any` as Typescript lib.d.ts doesnt support Document type yet\n : undefined;\n const options = {\n rootMargin: '0px 0px -1px 0px', // `bottom: -1px` allows checking when the modal bottom is touching the viewport\n root,\n threshold: [0.99, 1],\n };\n return new IntersectionObserver(callback, options);\n }\n ngOnDestroy() {\n if (this.routerOutlet.isActivated) {\n this.routerOutlet.deactivate();\n }\n //clean up the observer\n this.mutationObserverUnobserveFn?.();\n this.intersectionObserver.disconnect();\n delete this._intersectionObserver;\n if (this.resizeObserverService) {\n this.resizeObserverService.unobserve(this.windowRef.nativeWindow.document.body);\n this.resizeObserverService.unobserve(this.ionHeaderElement.nativeElement);\n this.resizeObserverService.unobserve(this.currentFooter);\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalWrapperComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.ResizeObserverService }, { token: i2.WindowRef }, { token: i3.PlatformService }, { token: i4.CanDismissHelper }, { token: i0.EnvironmentInjector }, { token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.1\", type: ModalWrapperComponent, isStandalone: true, selector: \"kirby-modal-wrapper\", inputs: { scrollDisabled: \"scrollDisabled\", config: \"config\", content: \"content\" }, host: { listeners: { \"window:focus\": \"onFocusChange()\", \"window:focusout\": \"onFocusChange()\", \"window:ionKeyboardDidShow\": \"_onKeyboardShow($event.detail.keyboardHeight)\", \"window:keyboardWillShow\": \"_onKeyboardShow($event.keyboardHeight)\", \"window:ionKeyboardDidHide\": \"_onKeyboardHide()\", \"window:keyboardWillHide\": \"_onKeyboardHide()\", \"window:resize\": \"_onWindowResize()\" }, properties: { \"class.collapsible-title\": \"this._hasCollapsibleTitle\", \"class.drawer\": \"this._isDrawer\" } }, providers: [\n { provide: Modal, useExisting: ModalWrapperComponent },\n { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },\n ], queries: [{ propertyName: \"templateRef\", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: \"ionContent\", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: \"ionContentElement\", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionHeaderElement\", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionToolbarElement\", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionTitleElement\", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: \"routerOutlet\", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: \"_contentTitleElement\", first: true, predicate: [\"contentTitle\"], descendants: true, read: ElementRef }, { propertyName: \"toolbarButtonsQuery\", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: \"<ion-header\\n role=\\\"presentation\\\"\\n [class.content-scrolled]=\\\"isContentScrolled\\\"\\n (touchstart)=\\\"onHeaderTouchStart($event)\\\"\\n>\\n <ion-toolbar>\\n <ion-title role=\\\"heading\\\" aria-level=\\\"2\\\" tabindex=\\\"-1\\\"></ion-title>\\n @if (config.flavor === 'drawer' && config.drawerSupplementaryAction) {\\n <ion-buttons slot=\\\"secondary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n (click)=\\\"config.drawerSupplementaryAction.action($event)\\\"\\n >\\n <kirby-icon [name]=\\\"config.drawerSupplementaryAction.iconName\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n }\\n <ion-buttons slot=\\\"primary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n [noDecoration]=\\\"config.interactWithBackground\\\"\\n [attr.aria-label]=\\\"translations.get('close')\\\"\\n (click)=\\\"close()\\\"\\n >\\n <kirby-icon name=\\\"close\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n </ion-toolbar>\\n</ion-header>\\n\\n<ion-content [scrollEvents]=\\\"scrollEventsEnabled\\\">\\n @if (_hasCollapsibleTitle) {\\n <ion-header collapse=\\\"condense\\\">\\n <ion-toolbar>\\n <span class=\\\"kirby-text-xlarge\\\" #contentTitle></span>\\n </ion-toolbar>\\n </ion-header>\\n }\\n\\n <!-- Outlet for ModalController -->\\n <ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n ></ng-container>\\n\\n <!-- Outlet for projected content -->\\n <ng-container *ngTemplateOutlet=\\\"content; injector: modalWrapperInjector\\\"></ng-container>\\n\\n <!-- Outlet for route-based modal -->\\n <router-outlet\\n name=\\\"kirbyModalWrapperOutlet\\\"\\n [style.visibility]=\\\"config.modalRoute ? 'visible' : 'hidden'\\\"\\n ></router-outlet>\\n</ion-content>\\n\", styles: [\"ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i5.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[kirby-button],Button[kirby-button],a[kirby-button]\", inputs: [\"attentionLevel\", \"noDecoration\", \"themeColor\", \"expand\", \"isFloating\", \"size\", \"showIconOnly\"] }, { kind: \"ngmodule\", type: IconModule }, { kind: \"component\", type: i6.IconComponent, selector: \"kirby-icon\", inputs: [\"size\", \"name\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i7.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"directive\", type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: IonHeader, selector: \"ion-header\", inputs: [\"collapse\", \"mode\", \"translucent\"] }, { kind: \"component\", type: IonToolbar, selector: \"ion-toolbar\", inputs: [\"color\", \"mode\"] }, { kind: \"component\", type: IonTitle, selector: \"ion-title\", inputs: [\"color\", \"size\"] }, { kind: \"component\", type: IonButtons, selector: \"ion-buttons\", inputs: [\"collapse\"] }, { kind: \"component\", type: IonContent, selector: \"ion-content\", inputs: [\"color\", \"fixedSlotPlacement\", \"forceOverscroll\", \"fullscreen\", \"scrollEvents\", \"scrollX\", \"scrollY\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalWrapperComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n RouterModule,\n ButtonComponent,\n IconModule,\n CommonModule,\n IonHeader,\n IonToolbar,\n IonTitle,\n IonButtons,\n IonContent,\n ], selector: 'kirby-modal-wrapper', providers: [\n { provide: Modal, useExisting: ModalWrapperComponent },\n { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },\n ], template: \"<ion-header\\n role=\\\"presentation\\\"\\n [class.content-scrolled]=\\\"isContentScrolled\\\"\\n (touchstart)=\\\"onHeaderTouchStart($event)\\\"\\n>\\n <ion-toolbar>\\n <ion-title role=\\\"heading\\\" aria-level=\\\"2\\\" tabindex=\\\"-1\\\"></ion-title>\\n @if (config.flavor === 'drawer' && config.drawerSupplementaryAction) {\\n <ion-buttons slot=\\\"secondary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n (click)=\\\"config.drawerSupplementaryAction.action($event)\\\"\\n >\\n <kirby-icon [name]=\\\"config.drawerSupplementaryAction.iconName\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n }\\n <ion-buttons slot=\\\"primary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n [noDecoration]=\\\"config.interactWithBackground\\\"\\n [attr.aria-label]=\\\"translations.get('close')\\\"\\n (click)=\\\"close()\\\"\\n >\\n <kirby-icon name=\\\"close\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n </ion-toolbar>\\n</ion-header>\\n\\n<ion-content [scrollEvents]=\\\"scrollEventsEnabled\\\">\\n @if (_hasCollapsibleTitle) {\\n <ion-header collapse=\\\"condense\\\">\\n <ion-toolbar>\\n <span class=\\\"kirby-text-xlarge\\\" #contentTitle></span>\\n </ion-toolbar>\\n </ion-header>\\n }\\n\\n <!-- Outlet for ModalController -->\\n <ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n ></ng-container>\\n\\n <!-- Outlet for projected content -->\\n <ng-container *ngTemplateOutlet=\\\"content; injector: modalWrapperInjector\\\"></ng-container>\\n\\n <!-- Outlet for route-based modal -->\\n <router-outlet\\n name=\\\"kirbyModalWrapperOutlet\\\"\\n [style.visibility]=\\\"config.modalRoute ? 'visible' : 'hidden'\\\"\\n ></router-outlet>\\n</ion-content>\\n\", styles: [\"ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.ResizeObserverService }, { type: i2.WindowRef }, { type: i3.PlatformService }, { type: i4.CanDismissHelper }, { type: i0.EnvironmentInjector }, { type: i1.TranslationService }], propDecorators: { _hasCollapsibleTitle: [{\n type: HostBinding,\n args: ['class.collapsible-title']\n }], scrollDisabled: [{\n type: Input\n }], config: [{\n type: Input\n }], content: [{\n type: Input\n }], templateRef: [{\n type: ContentChild,\n args: [TemplateRef]\n }], toolbarButtonsQuery: [{\n type: ViewChildren,\n args: [ButtonComponent, { read: ElementRef }]\n }], ionContent: [{\n type: ViewChild,\n args: [IonContent, { static: true }]\n }], ionContentElement: [{\n type: ViewChild,\n args: [IonContent, { static: true, read: ElementRef }]\n }], ionHeaderElement: [{\n type: ViewChild,\n args: [IonHeader, { static: true, read: ElementRef }]\n }], ionToolbarElement: [{\n type: ViewChild,\n args: [IonToolbar, { static: true, read: ElementRef }]\n }], ionTitleElement: [{\n type: ViewChild,\n args: [IonTitle, { static: true, read: ElementRef }]\n }], routerOutlet: [{\n type: ViewChild,\n args: [RouterOutlet, { static: true }]\n }], _contentTitleElement: [{\n type: ViewChild,\n args: ['contentTitle', { read: ElementRef }]\n }], _isDrawer: [{\n type: HostBinding,\n args: ['class.drawer']\n }], onFocusChange: [{\n type: HostListener,\n args: ['window:focus']\n }, {\n type: HostListener,\n args: ['window:focusout']\n }], _onKeyboardShow: [{\n type: HostListener,\n args: ['window:ionKeyboardDidShow', ['$event.detail.keyboardHeight']]\n }, {\n type: HostListener,\n args: ['window:keyboardWillShow', ['$event.keyboardHeight']]\n }], _onKeyboardHide: [{\n type: HostListener,\n args: ['window:ionKeyboardDidHide']\n }, {\n type: HostListener,\n args: ['window:keyboardWillHide']\n }], _onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFNTCxtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUlqRyxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxHQUVYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEtBQUssRUFB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SUFBSSxFQUFFLFVBQVUsRUFBRTtnQkEyQzNDLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxjQUFjO2dCQXdVM0IsYUFBYTtzQkFGWixZQUFZO3VCQUFDLGNBQWM7O3NCQUMzQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFRL0IsZUFBZTtzQkFGZCxZQUFZO3VCQUFDLDJCQUEyQixFQUFFLENBQUMsOEJBQThCLENBQUM7O3NCQUMxRSxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBT2xFLGVBQWU7c0JBRmQsWUFBWTt1QkFBQywyQkFBMkI7O3NCQUN4QyxZQUFZO3VCQUFDLHlCQUF5QjtnQkFvRnZDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlclN0eWxlRmxhZ3MyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaXJzdCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyLCBnZXRJb25Nb2RhbERpYWxvZ0FuY2VzdG9yIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcblxuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBVbm9ic2VydmVGbiwgV2luZG93UmVmIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90eXBlcyc7XG5pbXBvcnQgeyBvYnNlcnZlQ29udGVudCwgUGxhdGZvcm1TZXJ2aWNlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcblxuaW1wb3J0IHtcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25UaXRsZSxcbiAgSW9uVG9vbGJhcixcbiAgU2Nyb2xsRGV0YWlsLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE1vZGFsLCBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlciwgTW9kYWxFbGVtZW50VHlwZSB9IGZyb20gJy4uL21vZGFsLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ2FuRGlzbWlzc0hlbHBlciB9IGZyb20gJy4uL21vZGFsL3NlcnZpY2VzL2Nhbi1kaXNtaXNzLmhlbHBlcic7XG5pbXBvcnQgeyBNb2RhbENvbmZpZywgU2hvd0FsZXJ0Q2FsbGJhY2sgfSBmcm9tICcuL2NvbmZpZy9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHsgQ09NUE9ORU5UX1BST1BTIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnLmhlbHBlcic7XG5pbXBvcnQgeyBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZSB9IGZyb20gJy4vbW9kYWwtZWxlbWVudHMtbW92ZXIuZGVsZWdhdGUnO1xuXG5jb25zdCBjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyA9IDEwO1xuY29uc3QgY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHMgPSA0O1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uVGl0bGUsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Db250ZW50LFxuICBdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LW1vZGFsLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNb2RhbCwgdXNlRXhpc3Rpbmc6IE1vZGFsV3JhcHBlckNvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxXcmFwcGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgTW9kYWwsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxue1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbGxhcHNpYmxlLXRpdGxlJylcbiAgZ2V0IF9oYXNDb2xsYXBzaWJsZVRpdGxlKCkge1xuICAgIHJldHVybiAhIXRoaXMuY29uZmlnPy5jb2xsYXBzZVRpdGxlO1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IEtFWUJPQVJEX0hJREVfREVMQVlfSU5fTVMgPSAxMDA7XG5cbiAgc2Nyb2xsWTogbnVtYmVyID0gTWF0aC5hYnModGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFkpO1xuICBwcml2YXRlIHJlYWRvbmx5IFZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FID0gMTAwO1xuXG4gIEBJbnB1dCgpIHNldCBzY3JvbGxEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxZID0gIWRpc2FibGVkO1xuICB9XG5cbiAgc2V0IGNhbkRpc21pc3MoY2FsbGJhY2s6IFNob3dBbGVydENhbGxiYWNrKSB7XG4gICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuY2FuRGlzbWlzcyA9IHRoaXMuY2FuRGlzbWlzc0hlbHBlci5nZXRDYW5EaXNtaXNzQ2FsbGJhY2soY2FsbGJhY2spO1xuICB9XG5cbiAgQElucHV0KCkgY29uZmlnOiBNb2RhbENvbmZpZztcbiAgQElucHV0KCkgY29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb21wb25lbnRQcm9wc0luamVjdG9yOiBJbmplY3RvcjtcbiAgbW9kYWxXcmFwcGVySW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oQnV0dG9uQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSB0b29sYmFyQnV0dG9uc1F1ZXJ5OiBRdWVyeUxpc3Q8XG4gICAgRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD5cbiAgPjtcbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGlvbkNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25IZWFkZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25IZWFkZXJFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25Ub29sYmFyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRvb2xiYXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Ub29sYmFyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVGl0bGUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uVGl0bGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25UaXRsZUVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKFJvdXRlck91dGxldCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSByb3V0ZXJPdXRsZXQ6IFJvdXRlck91dGxldDtcblxuICBAVmlld0NoaWxkKCdjb250ZW50VGl0bGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBfY29udGVudFRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgZ2V0IGNvbnRlbnRUaXRsZUVsZW1lbnQoKTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4ge1xuICAgIC8qXG4gICAgICAgIGNvbnRlbnRUaXRsZUVsZW1lbnQgaGFzIG5nSWYgZGlyZWN0aXZlIGRlcGVuZGVudCBvbiBfaGFzQ29sbGFwc2libGVUaXRsZTsgdHJpZ2dlciBDRCB0byBtYWtlIHN1cmUgZWxlbWVudCBoYXMgYmVlbiBxdWVyaWVkLlxuICAgICAgICBTb2x1dGlvbiB0YWtlbiBmcm9tOiBodHRwczovL2RhbmllbGV5YXNzdS5jb20vYW5ndWxhci12aWV3Y2hpbGQtYW5kLW5naWYvXG4gICAgICAqL1xuICAgIGlmICghdGhpcy5fY29udGVudFRpdGxlRWxlbWVudCAmJiB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUaXRsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRvb2xiYXJCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZGVsYXllZENsb3NlID0gKCkgPT4ge307XG4gIHByaXZhdGUgZGVsYXllZENsb3NlVGltZW91dElkO1xuICBwcml2YXRlIGluaXRpYWxWaWV3cG9ydEhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlvbk1vZGFsRWxlbWVudD86IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgaW9uTW9kYWxEaWFsb2c/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbERpZFByZXNlbnQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSBkaWRQcmVzZW50ID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbERpZFByZXNlbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlvbk1vZGFsV2lsbERpc21pc3MgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSB3aWxsQ2xvc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MpO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSQgPSB0aGlzLnZpZXdwb3J0UmVzaXplXG4gICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUUpKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyVW5vYnNlcnZlRm46IFVub2JzZXJ2ZUZuO1xuICBwcml2YXRlIF9pbnRlcnNlY3Rpb25PYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgZ2V0IGludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBpZiAoIXRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuY3JlYXRlTW9kYWxXcmFwcGVySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICB9XG4gIHNjcm9sbEV2ZW50c0VuYWJsZWQ6IGJvb2xlYW47XG4gIGlzQ29udGVudFNjcm9sbGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYXdlcicpXG4gIGdldCBfaXNEcmF3ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcic7XG4gIH1cblxuICB3aWxsQ2xvc2UkID0gdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLnBpcGUoZmlyc3QoKSk7XG5cbiAgcHJpdmF0ZSBtb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZTogTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcml2YXRlIGNhbkRpc21pc3NIZWxwZXI6IENhbkRpc21pc3NIZWxwZXIsXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gICAgdGhpcy5vYnNlcnZlVmlld3BvcnRSZXNpemUoKTtcbiAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlID0gbmV3IE1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgdGhpcy5pb25Nb2RhbERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNpemluZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1vZGFsUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpO1xuICAgIHRoaXMubGlzdGVuRm9yU2Nyb2xsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpO1xuICAgIHRoaXMuZm9jdXNNb2RhbFRpdGxlKCk7XG4gICAgdGhpcy5jb21wb25lbnRQcm9wc0luamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ09NUE9ORU5UX1BST1BTLCB1c2VWYWx1ZTogdGhpcy5jb25maWcuY29tcG9uZW50UHJvcHMgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vZGFsV3JhcHBlckluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeSkge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyA9IHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeS5tYXAoKGJ1dHRvblJlZikgPT4gYnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0QXJpYUxhYmVsKCk7XG4gIH1cblxuICBwcml2YXRlIF9jdXJyZW50Rm9vdGVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc2V0IGN1cnJlbnRGb290ZXIoZm9vdGVyOiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEZvb3Rlcikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuX2N1cnJlbnRGb290ZXIpO1xuICAgIH1cbiAgICB0aGlzLl9jdXJyZW50Rm9vdGVyID0gZm9vdGVyO1xuICAgIGlmIChmb290ZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUoZm9vdGVyLCAoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFtcbiAgICAgICAgICAnLS1mb290ZXItaGVpZ2h0JyxcbiAgICAgICAgICBgJHtNYXRoLmZsb29yKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCl9cHhgLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudEZvb3RlciA9IGZvb3RlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnJlbnRGb290ZXIoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEZvb3RlcjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IGFkZE1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLmFkZEZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBtb2RhbEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5USVRMRV06ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUuYWRkVGl0bGUoXG4gICAgICAgICAgbW9kYWxFbGVtZW50LFxuICAgICAgICAgIHRoaXMuY29udGVudFRpdGxlRWxlbWVudCxcbiAgICAgICAgICB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlLFxuICAgICAgICAgIHRoaXMuaW9uVGl0bGVFbGVtZW50XG4gICAgICAgICksXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5hZGRQYWdlUHJvZ3Jlc3MobW9kYWxFbGVtZW50LCB0aGlzLmlvblRvb2xiYXJFbGVtZW50KSxcbiAgICB9W3R5cGVdO1xuXG4gICAgYWRkTW9kYWxFbGVtZW50Rm4oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHJlbW92ZU1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZUZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlRJVExFXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5yZW1vdmVUaXRsZShcbiAgICAgICAgICBtb2RhbEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5faGFzQ29sbGFwc2libGVUaXRsZSxcbiAgICAgICAgICB0aGlzLmNvbnRlbnRUaXRsZUVsZW1lbnRcbiAgICAgICAgKSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlBBR0VfUFJPR1JFU1NdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZVBhZ2VQcm9ncmVzcyhtb2RhbEVsZW1lbnQpLFxuICAgIH1bdHlwZV07XG5cbiAgICByZW1vdmVNb2RhbEVsZW1lbnRGbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiB0aGlzLmNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBtZXJnZSh0aGlzLmlvbk1vZGFsRGlkUHJlc2VudCwgdGhpcy52aWV3cG9ydFJlc2l6ZSQpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gd2FpdCBmb3IgdGVtcGxhdGUgdG8gcmVuZGVyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNsaWVudFdpZHRoIC0gZG9tUmVjdC5yaWdodDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICd0b3AnLCBgJHtkb21SZWN0LnRvcH1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ2xlZnQnLCBgJHtkb21SZWN0LmxlZnR9cHhgKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICdyaWdodCcsIGAke3JpZ2h0fXB4YCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNpemluZygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2l6ZSA9PT0gJ2Z1bGwtaGVpZ2h0JykgcmV0dXJuO1xuICAgIHRoaXMucGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZUhlYWRlclJlc2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTW9kYWxSb3V0ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcubW9kYWxSb3V0ZSkge1xuICAgICAgdGhpcy5vblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHRoaXMuY29uZmlnLnNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCk7XG4gICAgICAvLyBMb2FkIGNvbXBvbmVudCBmcm9tIG1vZGFsLXJvdXRlIGluc2lkZSByb3V0ZXItb3V0bGV0OlxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHRoaXMuY29uZmlnLm1vZGFsUm91dGUsIHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJD86IE9ic2VydmFibGU8QWN0aXZhdGVkUm91dGU+KSB7XG4gICAgaWYgKCFzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQpIHJldHVybjtcbiAgICBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQucGlwZSh0YWtlVW50aWwodGhpcy53aWxsQ2xvc2UkKSkuc3Vic2NyaWJlKChyb3V0ZSkgPT4ge1xuICAgICAgaWYgKHRoaXMucm91dGVyT3V0bGV0LmlzQWN0aXZhdGVkKSB7XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmFjdGl2YXRlV2l0aChyb3V0ZSwgdGhpcy5lbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzID0gJ3BhcnQnIGluIEhUTUxFbGVtZW50LnByb3RvdHlwZTtcbiAgICBpZiAoc3VwcG9ydHNDc3NTaGFkb3dQYXJ0cykgcmV0dXJuO1xuICAgIHRoaXMuaW9uQ29udGVudC5nZXRTY3JvbGxFbGVtZW50KCkudGhlbigoc2Nyb2xsRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2Nyb2xsRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XG4gICAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIHNjcm9sbEVsZW1lbnQsXG4gICAgICAgICAgJ3RyYW5zaXRpb24nLFxuICAgICAgICAgICdwYWRkaW5nLWJvdHRvbSAnICsgRGVzaWduVG9rZW5IZWxwZXIuc29mdEtleWJvYXJkVHJhbnNpdGlvbkxlYXZlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNb2RhbEZ1bGxIZWlnaHQoKSB7XG4gICAgY29uc3QgaW9uTW9kYWxXcmFwcGVyID0gdGhpcy5nZXRJb25Nb2RhbFdyYXBwZXJFbGVtZW50KCk7XG5cbiAgICBpZiAoIWlvbk1vZGFsV3JhcHBlcikgcmV0dXJuO1xuICAgIC8vIFN0YXJ0IG9ic2VydmluZyB3aGVuIG1vZGFsIGhhcyBmaW5pc2hlZCBhbmltYXRpbmc6XG4gICAgdGhpcy5kaWRQcmVzZW50LnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKGlvbk1vZGFsV3JhcHBlcik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBFeHRyYWN0ZWQgaW50byBmdW5jdGlvbiBmb3IgZWFzZSBvZiB0ZXN0aW5nXG4gIHByaXZhdGUgZ2V0SW9uTW9kYWxXcmFwcGVyRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuaW9uTW9kYWxFbGVtZW50LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLm1vZGFsLXdyYXBwZXInKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUhlYWRlclJlc2l6ZSgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LCAoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IFtwcm9wZXJ0eSwgcGl4ZWxWYWx1ZV0gPSBbJy0taGVhZGVyLWhlaWdodCcsIGAke2VudHJ5LmNvbnRlbnRSZWN0LmhlaWdodH1weGBdO1xuICAgICAgdGhpcy5zZXRDc3NWYXIodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHByb3BlcnR5LCBwaXhlbFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCkge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW9kYWxEaWRQcmVzZW50JywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50LmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcklvbk1vZGFsV2lsbERpc21pc3MoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbFdpbGxEaXNtaXNzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MubmV4dCgpO1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yU2Nyb2xsKCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gYChtaW4td2lkdGg6ICR7RGVzaWduVG9rZW5IZWxwZXIuYnJlYWtwb2ludHMubWVkaXVtfSlgO1xuICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG4gICAgY29uc3QgZW5hYmxlU2Nyb2xsRXZlbnRzID0gKGxpc3RPckV2ZW50OiBNZWRpYVF1ZXJ5TGlzdCB8IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGlzRGVza3RvcCA9IGxpc3RPckV2ZW50Lm1hdGNoZXM7XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50c0VuYWJsZWQgPSAhaXNEZXNrdG9wO1xuICAgIH07XG5cbiAgICBlbmFibGVTY3JvbGxFdmVudHMobWVkaWFRdWVyeSk7XG4gICAgbWVkaWFRdWVyeS5vbmNoYW5nZSA9IGVuYWJsZVNjcm9sbEV2ZW50cztcblxuICAgIC8vIFJ1bnMgc2Nyb2xsIHN1YnNjcmlwdGlvbiBvdXRzaWRlIHpvbmUgdG8gYXZvaWQgZXhjZXNzaXZlIGFtb3VudCBvZiBDRCBjeWNsZXNcbiAgICAvLyB3aGVuIGlvblNjcm9sbCBlbWl0cy5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgLy8gQWx3YXlzIHN1YnNjcmliZSBhcyBpb25TY3JvbGwgb25seSBlbWl0cyB3aGVuIHNjcm9sbEV2ZW50c0VuYWJsZWQgaXMgdHJ1ZVxuICAgICAgdGhpcy5pb25Db250ZW50LmlvblNjcm9sbFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMpLFxuICAgICAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LmRldGFpbCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsSW5mbzogU2Nyb2xsRGV0YWlsKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGVudFNjcm9sbGVkUGFzdE9mZnNldCA9IHNjcm9sbEluZm8uc2Nyb2xsVG9wID4gY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHM7XG5cbiAgICAgICAgICBpZiAoY29udGVudFNjcm9sbGVkUGFzdE9mZnNldCAhPT0gdGhpcy5pc0NvbnRlbnRTY3JvbGxlZCkge1xuICAgICAgICAgICAgdGhpcy5pc0NvbnRlbnRTY3JvbGxlZCA9IGNvbnRlbnRTY3JvbGxlZFBhc3RPZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVGl0bGVDb250ZW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJVbm9ic2VydmVGbiA9IG9ic2VydmVDb250ZW50KFxuICAgICAgdGhpcy5pb25UaXRsZUVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMuc2V0QXJpYUxhYmVsRnJvbVRpdGxlQ29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEFyaWFMYWJlbEZyb21UaXRsZUNvbnRlbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgdGl0bGVUZXh0Q29udGVudCA9IHRoaXMuaW9uVGl0bGVFbGVtZW50Py5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50O1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRGlhbG9nICYmIHRpdGxlVGV4dENvbnRlbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaW9uTW9kYWxEaWFsb2csICdhcmlhLWxhYmVsJywgdGl0bGVUZXh0Q29udGVudCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc2V0QXJpYUxhYmVsKCkge1xuICAgIGNvbnN0IGFyaWFMYWJlbCA9IHRoaXMuY29uZmlnLmh0bWxBdHRyaWJ1dGVzPy5bJ2FyaWEtbGFiZWwnXTtcbiAgICBjb25zdCBpb25Nb2RhbEVsZW1lbnREaWFsb2cgPSBnZXRJb25Nb2RhbERpYWxvZ0FuY2VzdG9yKHRoaXMuaW9uTW9kYWxFbGVtZW50KTtcblxuICAgIGlmIChpb25Nb2RhbEVsZW1lbnREaWFsb2cgJiYgYXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShpb25Nb2RhbEVsZW1lbnREaWFsb2csICdhcmlhLWxhYmVsJywgYXJpYUxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBcmlhTGFiZWxGcm9tVGl0bGVDb250ZW50KCk7XG4gICAgICB0aGlzLm9ic2VydmVUaXRsZUNvbnRlbnRDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c01vZGFsVGl0bGUoKSB7XG4gICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQucGlwZSh0YWtlVW50aWwodGhpcy53aWxsQ2xvc2UkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIFVzZSBxdWV1ZU1pY3JvdGFzayB0byBkZWZlciBvdXIgZm9jdXMgdW50aWwgYWZ0ZXIgSW9uaWMgaGFzIHNhdmVkIGEgcmVmZXJlbmNlXG4gICAgICAvLyB0byB0aGUgZWxlbWVudCB0aGF0IHNob3VsZCBoYXZlIGZvY3VzIHJlc3RvcmVkIHdoZW4gbW9kYWwgaXMgY2xvc2VkLlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lvbmljLXRlYW0vaW9uaWMtZnJhbWV3b3JrL2Jsb2IvdjguNi4xL2NvcmUvc3JjL3V0aWxzL292ZXJsYXlzLnRzI0w1OTJcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgZm9jdXNBbHJlYWR5SW5Nb2RhbCA9IHRoaXMuaW9uTW9kYWxFbGVtZW50Py5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgaWYgKGZvY3VzQWxyZWFkeUluTW9kYWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLmlvblRpdGxlRWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5rZXlib2FyZFZpc2libGUgfHwgIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBObyBrZXlib2FyZCB2aXNpYmxlIG9yIHZpZXdwb3J0IG5vdCByZXNpemVkOlxuICAgICAgLy8gRGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgdmlzaWJsZTpcbiAgICAvLyBCbHVyIGFjdGl2ZSBlbGVtZW50IGFuZCB3YWl0IGZvciBrZXlib2FyZCB0byBoaWRlLFxuICAgIC8vIHRoZW4gZGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZENsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmlvbk1vZGFsRWxlbWVudC5kaXNtaXNzKGRhdGEpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSxcbiAgICAgICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LktFWUJPQVJEX0hJREVfREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRTaG93JywgWyckZXZlbnQuZGV0YWlsLmtleWJvYXJkSGVpZ2h0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQua2V5Ym9hcmRIZWlnaHQnXSlcbiAgX29uS2V5Ym9hcmRTaG93KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eShrZXlib2FyZEhlaWdodCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRIaWRlJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZEhpZGUoKSB7XG4gICAgdGhpcy5zZXRLZXlib2FyZFZpc2liaWxpdHkoMCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQoZnJlZXplOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2hvdWxkVG9nZ2xlTWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyAmJiB0aGlzLnBsYXRmb3JtLmlzUGhhYmxldE9yQmlnZ2VyKCk7XG4gICAgaWYgKCFzaG91bGRUb2dnbGVNYXhIZWlnaHQpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9ICdtYXgtaGVpZ2h0JztcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGlmIChmcmVlemUpIHtcbiAgICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUsIGAke2NvbnRlbnRIZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGVudEVsZW1lbnQsIHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlib2FyZEFscmVhZHlWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwICYmIHRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeUhpZGRlbiA9IGtleWJvYXJkSGVpZ2h0ID09PSAwICYmICF0aGlzLmtleWJvYXJkVmlzaWJsZTtcbiAgICBpZiAoa2V5Ym9hcmRBbHJlYWR5VmlzaWJsZSB8fCBrZXlib2FyZEFscmVhZHlIaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmtleWJvYXJkVmlzaWJsZSA9IGtleWJvYXJkSGVpZ2h0ID4gMDtcbiAgICB0aGlzLnRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQodGhpcy5rZXlib2FyZFZpc2libGUpO1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAoa2V5Ym9hcmRIZWlnaHQgPD0gMCB8fCAhZWxlbWVudCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQgPSBNYXRoLmZsb29yKFxuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b21cbiAgICApO1xuICAgIHJldHVybiBNYXRoLm1heChrZXlib2FyZEhlaWdodCAtIGRpc3RhbmNlRnJvbVZpZXdwb3J0Qm90dG9tVG9FbGVtZW50LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3NzVmFyKGVsZW1lbnQ6IEVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDc3NDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBrbGFzczogc3RyaW5nLCBjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBjb25kaXRpb24gPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGtsYXNzKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwga2xhc3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvZ2dsZUNzc0NsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQtdmlzaWJsZScsIGtleWJvYXJkSGVpZ2h0ID4gMCk7XG4gICAgY29uc3Qga2V5Ym9hcmRPdmVybGFwID0gdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICBsZXQgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBmYWxzZTtcbiAgICBjb25zdCBlbWJlZGRlZEZvb3RlckVsZW1lbnQgPSB0aGlzLmN1cnJlbnRGb290ZXI7XG4gICAgaWYgKGVtYmVkZGVkRm9vdGVyRWxlbWVudCkge1xuICAgICAgdGhpcy5zZXRDc3NWYXIoZW1iZWRkZWRGb290ZXJFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtrZXlib2FyZE92ZXJsYXB9cHhgKTtcbiAgICAgIHNuYXBGb290ZXJUb0tleWJvYXJkID0gZW1iZWRkZWRGb290ZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc25hcC10by1rZXlib2FyZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRlbnRLZXlib2FyZE9mZnNldCA9IHNuYXBGb290ZXJUb0tleWJvYXJkXG4gICAgICA/IGtleWJvYXJkT3ZlcmxhcFxuICAgICAgOiB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgY29udGVudEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKGNvbnRlbnRFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtjb250ZW50S2V5Ym9hcmRPZmZzZXR9cHhgKTtcbiAgfVxuXG4gIG9uSGVhZGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgY29uc3QgaXNUb29sYmFyQnV0dG9uVG91Y2ggPSB0aGlzLnRvb2xiYXJCdXR0b25zLnNvbWUoKGJ1dHRvbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gYnV0dG9uIHx8IGJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICAvLyBQcmV2ZW50IGJsdXIgaWYgZXZlbnQgdGFyZ2V0IGlzIGEgdG9vbGJhciBidXR0b25cbiAgICAgIC8vICh0byBhbGxvdyB0YXAgZXZlbnQgdG8gZmlyZSk6XG4gICAgICBpZiAoIWlzVG9vbGJhckJ1dHRvblRvdWNoKSB7XG4gICAgICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgY29uc3QgdmggPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0ICogMC4wMSkudG9GaXhlZCgyKTtcbiAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJy0tdmgnLCBgJHt2aH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVmlld3BvcnRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSwgKGVudHJ5KSA9PlxuICAgICAgdGhpcy5vblZpZXdwb3J0UmVzaXplKGVudHJ5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVmlld3BvcnRSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAvLyBJbml0aWFsIG9ic2VydmUgY2FsbGJhY2ssIHJlZ2lzdGVyIGluaXRpYWwgaGVpZ2h0OlxuICAgICAgdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemVkID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ICE9PSB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBXZSBhcmUgYmFjayB0byBpbml0aWFsIHZpZXcgcG9ydCBoZWlnaHQsIGNoZWNrIGZvciBwZW5kaW5nIGNsb3NlIGZ1bmM6XG4gICAgICBpZiAodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgICAgdGhpcy5kZWxheWVkQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZS5uZXh0KCk7XG4gIH1cblxuICBibHVyQWN0aXZlRWxlbWVudCgpIHtcbiAgICBjb25zdCBCTFVSX1RBUkdFVF9TRUxFQ1RPUiA9ICdpbnB1dCwgdGV4dGFyZWEnO1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5tYXRjaGVzKEJMVVJfVEFSR0VUX1NFTEVDVE9SKVxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNyZWF0ZU1vZGFsV3JhcHBlckludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBjb25zdCBpc1RvdWNoaW5nVmlld3BvcnQgPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDE7XG4gICAgICBpZiAoaXNUb3VjaGluZ1ZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmdWxsLWhlaWdodCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXQgZXhwbGljaXQgdmlld3BvcnQgcm9vdCBpZiB3aXRoaW4gaWZyYW1lOlxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZnJhbWVFbGVtZW50XG4gICAgICA/ICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQgYXMgYW55KSAvLyBDYXN0IHRvIGBhbnlgIGFzIFR5cGVzY3JpcHQgbGliLmQudHMgZG9lc250IHN1cHBvcnQgRG9jdW1lbnQgdHlwZSB5ZXRcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMHB4IC0xcHggMHB4JywgLy8gYGJvdHRvbTogLTFweGAgYWxsb3dzIGNoZWNraW5nIHdoZW4gdGhlIG1vZGFsIGJvdHRvbSBpcyB0b3VjaGluZyB0aGUgdmlld3BvcnRcbiAgICAgIHJvb3QsXG4gICAgICB0aHJlc2hvbGQ6IFswLjk5LCAxXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgLy9jbGVhbiB1cCB0aGUgb2JzZXJ2ZXJcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJVbm9ic2VydmVGbj8uKCk7XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgZGVsZXRlIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZSkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5jdXJyZW50Rm9vdGVyKTtcbiAgICB9XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlclxuICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgW2NsYXNzLmNvbnRlbnQtc2Nyb2xsZWRdPVwiaXNDb250ZW50U2Nyb2xsZWRcIlxuICAodG91Y2hzdGFydCk9XCJvbkhlYWRlclRvdWNoU3RhcnQoJGV2ZW50KVwiXG4+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLXRpdGxlIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1sZXZlbD1cIjJcIiB0YWJpbmRleD1cIi0xXCI+PC9pb24tdGl0bGU+XG4gICAgQGlmIChjb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiBjb25maWcuZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbikge1xuICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgICAoY2xpY2spPVwiY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24uYWN0aW9uKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGtpcmJ5LWljb24gW25hbWVdPVwiY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24uaWNvbk5hbWVcIj48L2tpcmJ5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICB9XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJwcmltYXJ5XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICBhdHRlbnRpb25MZXZlbD1cIjNcIlxuICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICBbbm9EZWNvcmF0aW9uXT1cImNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmFuc2xhdGlvbnMuZ2V0KCdjbG9zZScpXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgPlxuICAgICAgICA8a2lyYnktaWNvbiBuYW1lPVwiY2xvc2VcIj48L2tpcmJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgW3Njcm9sbEV2ZW50c109XCJzY3JvbGxFdmVudHNFbmFibGVkXCI+XG4gIEBpZiAoX2hhc0NvbGxhcHNpYmxlVGl0bGUpIHtcbiAgICA8aW9uLWhlYWRlciBjb2xsYXBzZT1cImNvbmRlbnNlXCI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwia2lyYnktdGV4dC14bGFyZ2VcIiAjY29udGVudFRpdGxlPjwvc3Bhbj5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICB9XG5cbiAgPCEtLSBPdXRsZXQgZm9yIE1vZGFsQ29udHJvbGxlciAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbmZpZy5jb21wb25lbnQ7IGluamVjdG9yOiBjb21wb25lbnRQcm9wc0luamVjdG9yXCJcbiAgPjwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciBwcm9qZWN0ZWQgY29udGVudCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQ7IGluamVjdG9yOiBtb2RhbFdyYXBwZXJJbmplY3RvclwiPjwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciByb3V0ZS1iYXNlZCBtb2RhbCAtLT5cbiAgPHJvdXRlci1vdXRsZXRcbiAgICBuYW1lPVwia2lyYnlNb2RhbFdyYXBwZXJPdXRsZXRcIlxuICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cImNvbmZpZy5tb2RhbFJvdXRlID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxuICA+PC9yb3V0ZXItb3V0bGV0PlxuPC9pb24tY29udGVudD5cbiJdfQ==","export class DrawerSupplementaryAction {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLXN1cHBsZW1lbnRhcnktYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsLXdyYXBwZXIvY29uZmlnL2RyYXdlci1zdXBwbGVtZW50YXJ5LWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8seUJBQXlCO0NBSXJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24ge1xuICBpY29uTmFtZTogc3RyaW5nO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlXG4gIGFjdGlvbjogRnVuY3Rpb247XG59XG4iXX0=","import { Component, HostListener, Injector, Input, } from '@angular/core';\nimport { firstValueFrom, Subject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { getIonModalDialogAncestor } from '@kirbydesign/designsystem/helpers';\nimport { COMPONENT_PROPS } from '../config/modal-config.helper';\nimport { Modal } from '../../modal.interfaces';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/types\";\nimport * as i2 from \"../../modal/services/can-dismiss.helper\";\nimport * as i3 from \"@angular/common\";\nexport class ModalCompactWrapperComponent {\n constructor(injector, elementRef, windowRef, canDismissHelper, renderer) {\n this.injector = injector;\n this.elementRef = elementRef;\n this.windowRef = windowRef;\n this.canDismissHelper = canDismissHelper;\n this.renderer = renderer;\n this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);\n this.scrollDisabled = false;\n this.ionModalDidPresent = new Subject();\n this.ionModalWillDismiss = new Subject();\n this.didPresent = firstValueFrom(this.ionModalDidPresent);\n this.willClose = firstValueFrom(this.ionModalWillDismiss);\n }\n ngOnInit() {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.setAriaLabel();\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n }\n listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n setAriaLabel() {\n const ionModalElementDialog = getIonModalDialogAncestor(this.ionModalElement);\n const ariaLabel = this.config.htmlAttributes?.['aria-label'];\n if (ionModalElementDialog && ariaLabel) {\n this.renderer.setAttribute(ionModalElementDialog, 'aria-label', ariaLabel);\n }\n }\n async close(data) {\n if (this.ionModalElement) {\n await this.ionModalElement.dismiss(data);\n }\n }\n set canDismiss(callback) {\n this.ionModalElement.canDismiss = this.canDismissHelper.getCanDismissCallback(callback);\n }\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalCompactWrapperComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.WindowRef }, { token: i2.CanDismissHelper }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.1\", type: ModalCompactWrapperComponent, isStandalone: true, selector: \"kirby-modal-compact-wrapper\", inputs: { config: \"config\", content: \"content\" }, host: { listeners: { \"window:focus\": \"onFocusChange()\", \"window:focusout\": \"onFocusChange()\" }, properties: { \"class.ion-page\": \"false\" } }, providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }], ngImport: i0, template: \"<!-- Outlet for ModalController -->\\n<ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n></ng-container>\\n\\n<!-- Outlet for projected content -->\\n<ng-container *ngTemplateOutlet=\\\"content\\\"></ng-container>\\n\", styles: [\":host{display:block;padding:24px 16px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i3.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"directive\", type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalCompactWrapperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kirby-modal-compact-wrapper', providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }], imports: [CommonModule], host: { '[class.ion-page]': 'false' }, template: \"<!-- Outlet for ModalController -->\\n<ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n></ng-container>\\n\\n<!-- Outlet for projected content -->\\n<ng-container *ngTemplateOutlet=\\\"content\\\"></ng-container>\\n\", styles: [\":host{display:block;padding:24px 16px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.WindowRef }, { type: i2.CanDismissHelper }, { type: i0.Renderer2 }], propDecorators: { config: [{\n type: Input\n }], content: [{\n type: Input\n }], onFocusChange: [{\n type: HostListener,\n args: ['window:focus']\n }, {\n type: HostListener,\n args: ['window:focusout']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL2NvbXBhY3QvbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL2NvbXBhY3QvbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBVy9DLE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxRQUFrQixFQUNsQixVQUFtQyxFQUNuQyxTQUFvQixFQUNwQixnQkFBa0MsRUFDbEMsUUFBbUI7UUFKbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWY3QixZQUFPLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxtQkFBYyxHQUFH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QTRCLEVBQUUsQ0FBQywwQkN4QjVFLDJQQU9BLGlHRGtCWSxZQUFZOzsyRkFHWCw0QkFBNEI7a0JBUnhDLFNBQVM7K0JBQ0UsNkJBQTZCLGFBRzVCLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsOEJBQThCLEVBQUUsQ0FBQyxXQUNqRSxDQUFDLFlBQVksQ0FBQyxRQUNqQixFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRTtxTEFHNUIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkF5RU4sYUFBYTtzQkFGWixZQUFZO3VCQUFDLGNBQWM7O3NCQUMzQixZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90eXBlcyc7XG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBnZXRJb25Nb2RhbERpYWxvZ0FuY2VzdG9yIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IE1vZGFsQ29uZmlnLCBTaG93QWxlcnRDYWxsYmFjayB9IGZyb20gJy4uL2NvbmZpZy9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHsgQ09NUE9ORU5UX1BST1BTIH0gZnJvbSAnLi4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuLi8uLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhbkRpc21pc3NIZWxwZXIgfSBmcm9tICcuLi8uLi9tb2RhbC9zZXJ2aWNlcy9jYW4tZGlzbWlzcy5oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC1jb21wYWN0LXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbENvbXBhY3RXcmFwcGVyQ29tcG9uZW50IH1dLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgaG9zdDogeyAnW2NsYXNzLmlvbi1wYWdlXSc6ICdmYWxzZScgfSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wYWN0V3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1vZGFsLCBPbkluaXQge1xuICBASW5wdXQoKSBjb25maWc6IE1vZGFsQ29uZmlnO1xuICBASW5wdXQoKSBjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgc2Nyb2xsRGlzYWJsZWQgPSBmYWxzZTtcbiAgY29tcG9uZW50UHJvcHNJbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgcHJpdmF0ZSBpb25Nb2RhbEVsZW1lbnQ6IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9uTW9kYWxEaWRQcmVzZW50ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbFdpbGxEaXNtaXNzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgZGlkUHJlc2VudCA9IGZpcnN0VmFsdWVGcm9tKHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50KTtcbiAgcmVhZG9ubHkgd2lsbENsb3NlID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBjYW5EaXNtaXNzSGVscGVyOiBDYW5EaXNtaXNzSGVscGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0KCdpb24tbW9kYWwnKTtcbiAgICB0aGlzLnNldEFyaWFMYWJlbCgpO1xuXG4gICAgdGhpcy5saXN0ZW5Gb3JJb25Nb2RhbERpZFByZXNlbnQoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsV2lsbERpc21pc3MoKTtcbiAgICB0aGlzLmNvbXBvbmVudFByb3BzSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDT01QT05FTlRfUFJPUFMsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZy5jb21wb25lbnRQcm9wcyB9XSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCkge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW9kYWxEaWRQcmVzZW50JywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50LmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcklvbk1vZGFsV2lsbERpc21pc3MoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbFdpbGxEaXNtaXNzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MubmV4dCgpO1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QXJpYUxhYmVsKCkge1xuICAgIGNvbnN0IGlvbk1vZGFsRWxlbWVudERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5pb25Nb2RhbEVsZW1lbnQpO1xuICAgIGNvbnN0IGFyaWFMYWJlbCA9IHRoaXMuY29uZmlnLmh0bWxBdHRyaWJ1dGVzPy5bJ2FyaWEtbGFiZWwnXTtcbiAgICBpZiAoaW9uTW9kYWxFbGVtZW50RGlhbG9nICYmIGFyaWFMYWJlbCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW9uTW9kYWxFbGVtZW50RGlhbG9nLCAnYXJpYS1sYWJlbCcsIGFyaWFMYWJlbCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xvc2UoZGF0YT86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgYXdhaXQgdGhpcy5pb25Nb2RhbEVsZW1lbnQuZGlzbWlzcyhkYXRhKTtcbiAgICB9XG4gIH1cblxuICBzZXQgY2FuRGlzbWlzcyhjYWxsYmFjazogU2hvd0FsZXJ0Q2FsbGJhY2spIHtcbiAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jYW5EaXNtaXNzID0gdGhpcy5jYW5EaXNtaXNzSGVscGVyLmdldENhbkRpc21pc3NDYWxsYmFjayhjYWxsYmFjayk7XG4gIH1cblxuICBzY3JvbGxUb1RvcDogKF8/OiBhbnkpID0+IHZvaWQ7XG4gIHNjcm9sbFRvQm90dG9tOiAoXz86IGFueSkgPT4gdm9pZDtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cbn1cbiIsIjwhLS0gT3V0bGV0IGZvciBNb2RhbENvbnRyb2xsZXIgLS0+XG48bmctY29udGFpbmVyXG4gICpuZ0NvbXBvbmVudE91dGxldD1cImNvbmZpZy5jb21wb25lbnQ7IGluamVjdG9yOiBjb21wb25lbnRQcm9wc0luamVjdG9yXCJcbj48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBPdXRsZXQgZm9yIHByb2plY3RlZCBjb250ZW50IC0tPlxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { createAnimation } from '@ionic/angular/standalone';\nimport { KirbyAnimation } from '@kirbydesign/designsystem/helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/helpers\";\nexport class ModalAnimationBuilderService {\n constructor(platform) {\n this.platform = platform;\n this.easingEnter = KirbyAnimation.Easing.modal.enter;\n this.easingLeave = KirbyAnimation.Easing.modal.exit;\n this.duration = KirbyAnimation.Duration.LONG;\n this.SwipeToCloseDefaults = {\n MIN_PRESENTING_SCALE: 0.93,\n };\n this.createEnterAnimation = () => {\n const backdropAnimation = createAnimation()\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .beforeStyles({\n 'pointer-events': 'none',\n })\n .afterClearStyles(['pointer-events']);\n const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');\n return { backdropAnimation, wrapperAnimation };\n };\n this.createLeaveAnimation = () => {\n const backdropAnimation = createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);\n const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');\n return { backdropAnimation, wrapperAnimation };\n };\n /**\n * Gets the root context of a shadow dom element\n * On newer browsers this will be the shadowRoot,\n * but for older browser this may just be the\n * element itself.\n *\n * Useful for whenever you need to explicitly\n * do \"myElement.shadowRoot!.querySelector(...)\".\n */\n this.getElementRoot = (el, fallback = el) => {\n return el.shadowRoot || fallback;\n };\n }\n enterAnimation(currentBackdrop) {\n return (baseEl, opts) => {\n const { presentingEl } = opts;\n const root = this.getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = this.createEnterAnimation();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation\n .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))\n .beforeStyles({ opacity: 1 });\n const baseAnimation = createAnimation('entering-base')\n .addElement(baseEl)\n .easing(this.easingEnter)\n .duration(this.duration)\n .addAnimation(wrapperAnimation);\n let currentBackdropAnimation;\n if (currentBackdrop) {\n currentBackdropAnimation = createAnimation()\n .addElement(currentBackdrop)\n .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);\n }\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&\n presentingEl.presentingElement !== undefined;\n const presentingElRoot = this.getElementRoot(presentingEl);\n const presentingAnimation = createAnimation().beforeStyles({\n transform: 'translateY(0)',\n 'transform-origin': 'top center',\n overflow: 'hidden',\n });\n const bodyEl = document.body;\n if (isMobile) {\n /**\n * Fallback for browsers that does not support `max()` (ex: Firefox)\n * No need to worry about statusbar padding since engines like Gecko\n * are not used as the engine for standalone Cordova/Capacitor apps\n */\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))\n .addElement(presentingEl)\n .keyframes([\n {\n offset: 0,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n {\n offset: 1,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '0', '1');\n }\n else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingElRoot.querySelector('.modal-wrapper'))\n .keyframes([\n { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },\n ]);\n const shadowAnimation = createAnimation()\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingElRoot.querySelector('.modal-shadow'))\n .keyframes([\n { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },\n { offset: 1, opacity: '0', transform: finalTransform },\n ]);\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n return baseAnimation;\n };\n }\n leaveAnimation(currentBackdrop) {\n return (baseEl, opts, duration = this.duration) => {\n const { presentingEl } = opts;\n const root = this.getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = this.createLeaveAnimation();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation\n .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))\n .beforeStyles({ opacity: 1 });\n const baseAnimation = createAnimation('leaving-base')\n .addElement(baseEl)\n .easing(this.easingLeave)\n .duration(duration)\n .addAnimation(wrapperAnimation);\n let currentBackdropAnimation;\n if (currentBackdrop) {\n currentBackdropAnimation = createAnimation()\n .addElement(currentBackdrop)\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .afterStyles({ opacity: 'var(--backdrop-opacity)' }); //Ensures backdrop is reset to default opacity after swipe to close\n }\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&\n presentingEl.presentingElement !== undefined;\n const presentingElRoot = this.getElementRoot(presentingEl);\n const presentingAnimation = createAnimation()\n .beforeClearStyles(['transform'])\n .afterClearStyles(['transform'])\n .onFinish((currentStep) => {\n // only reset background color if this is the last card-style modal\n if (currentStep !== 1) {\n return;\n }\n presentingEl.style.setProperty('overflow', '');\n const numModals = Array.from(bodyEl.querySelectorAll('ion-modal')).filter((m) => m.presentingElement !== undefined).length;\n if (numModals <= 1) {\n bodyEl.style.setProperty('background-color', '');\n }\n });\n const bodyEl = document.body;\n if (isMobile) {\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n presentingAnimation.addElement(presentingEl).keyframes([\n {\n offset: 0,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n {\n offset: 1,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '1', '0');\n }\n else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n presentingAnimation\n .addElement(presentingElRoot.querySelector('.modal-wrapper'))\n .afterStyles({\n transform: 'translate3d(0, 0, 0)',\n })\n .keyframes([\n { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },\n { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n ]);\n const shadowAnimation = createAnimation()\n .addElement(presentingElRoot.querySelector('.modal-shadow'))\n .afterStyles({\n transform: 'translateY(0) scale(1)',\n })\n .keyframes([\n { offset: 0, opacity: '0', transform: finalTransform },\n { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },\n ]);\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n return baseAnimation;\n };\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalAnimationBuilderService, deps: [{ token: i1.PlatformService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalAnimationBuilderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalAnimationBuilderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.PlatformService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYW5pbWF0aW9uLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC1hbmltYXRpb24tYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQUduRSxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQW9CLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRTVCLGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQy9DLGFBQVEsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRztZQUN0QyxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7UUFnUU0seUJBQW9CLEdBQUcsR0FBRyxFQUFFO1lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxFQUFFO2lCQUN4QyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSx5QkFBeUIsQ0FBQztpQkFDbEQsWUFBWSxDQUFDO2dCQUNaLGdCQUFnQixFQUFFLE1BQU07YUFDekIsQ0FBQztpQkFDRCxnQkFBZ0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUV4QyxNQUFNLGdCQUFnQixHQUFHLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FDL0MsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixpQkFBaUIsQ0FDbEIsQ0FBQztZQUVGLE9BQU8s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ckUsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDOUMsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO29CQUM3QixhQUFhLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztpSUF0UVUsNEJBQTRCO3FJQUE1Qiw0QkFBNEIsY0FEZixNQUFNOzsyRkFDbkIsNEJBQTRCO2tCQUR4QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuaW1hdGlvbiwgQW5pbWF0aW9uQnVpbGRlciwgY3JlYXRlQW5pbWF0aW9uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxBbmltYXRpb25CdWlsZGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSkge31cblxuICBwcml2YXRlIHJlYWRvbmx5IGVhc2luZ0VudGVyID0gS2lyYnlBbmltYXRpb24uRWFzaW5nLm1vZGFsLmVudGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGVhc2luZ0xlYXZlID0gS2lyYnlBbmltYXRpb24uRWFzaW5nLm1vZGFsLmV4aXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgZHVyYXRpb24gPSBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbi5MT05HO1xuICBwcml2YXRlIHJlYWRvbmx5IFN3aXBlVG9DbG9zZURlZmF1bHRzID0ge1xuICAgIE1JTl9QUkVTRU5USU5HX1NDQUxFOiAwLjkzLFxuICB9O1xuXG4gIHB1YmxpYyBlbnRlckFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3A/OiBIVE1MSW9uQmFja2Ryb3BFbGVtZW50KTogQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIChiYXNlRWw6IEhUTUxFbGVtZW50LCBvcHRzOiB7IHByZXNlbnRpbmdFbD86IEhUTUxFbGVtZW50IH0pOiBBbmltYXRpb24gPT4ge1xuICAgICAgY29uc3QgeyBwcmVzZW50aW5nRWwgfSA9IG9wdHM7XG4gICAgICBjb25zdCByb290ID0gdGhpcy5nZXRFbGVtZW50Um9vdChiYXNlRWwpO1xuICAgICAgY29uc3QgeyB3cmFwcGVyQW5pbWF0aW9uLCBiYWNrZHJvcEFuaW1hdGlvbiB9ID0gdGhpcy5jcmVhdGVFbnRlckFuaW1hdGlvbigpO1xuXG4gICAgICBiYWNrZHJvcEFuaW1hdGlvbi5hZGRFbGVtZW50KHJvb3QucXVlcnlTZWxlY3RvcignaW9uLWJhY2tkcm9wJykhKTtcblxuICAgICAgd3JhcHBlckFuaW1hdGlvblxuICAgICAgICAuYWRkRWxlbWVudChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2RhbC13cmFwcGVyLCAubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAuYmVmb3JlU3R5bGVzKHsgb3BhY2l0eTogMSB9KTtcblxuICAgICAgY29uc3QgYmFzZUFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbignZW50ZXJpbmctYmFzZScpXG4gICAgICAgIC5hZGRFbGVtZW50KGJhc2VFbClcbiAgICAgICAgLmVhc2luZyh0aGlzLmVhc2luZ0VudGVyKVxuICAgICAgICAuZHVyYXRpb24odGhpcy5kdXJhdGlvbilcbiAgICAgICAgLmFkZEFuaW1hdGlvbih3cmFwcGVyQW5pbWF0aW9uKTtcblxuICAgICAgbGV0IGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbjogQW5pbWF0aW9uO1xuICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcCkge1xuICAgICAgICBjdXJyZW50QmFja2Ryb3BBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKVxuICAgICAgICAgIC5hZGRFbGVtZW50KGN1cnJlbnRCYWNrZHJvcClcbiAgICAgICAgICAuZnJvbVRvKCdvcGFjaXR5JywgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJywgMC4wMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVzZW50aW5nRWwpIHtcbiAgICAgICAgY29uc3QgaXNNb2JpbGUgPSAhdGhpcy5wbGF0Zm9ybS5pc1BoYWJsZXRPckJpZ2dlcigpO1xuICAgICAgICBjb25zdCBoYXNDYXJkTW9kYWwgPVxuICAgICAgICAgIHByZXNlbnRpbmdFbC50YWdOYW1lID09PSAnSU9OLU1PREFMJyAmJlxuICAgICAgICAgIChwcmVzZW50aW5nRWwgYXMgSFRNTElvbk1vZGFsRWxlbWVudCkucHJlc2VudGluZ0VsZW1lbnQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcHJlc2VudGluZ0VsUm9vdCA9IHRoaXMuZ2V0RWxlbWVudFJvb3QocHJlc2VudGluZ0VsKTtcblxuICAgICAgICBjb25zdCBwcmVzZW50aW5nQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKCkuYmVmb3JlU3R5bGVzKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyxcbiAgICAgICAgICAndHJhbnNmb3JtLW9yaWdpbic6ICd0b3AgY2VudGVyJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGJvZHlFbCA9IGRvY3VtZW50LmJvZHk7XG5cbiAgICAgICAgaWYgKGlzTW9iaWxlKSB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRmFsbGJhY2sgZm9yIGJyb3dzZXJzIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBgbWF4KClgIChleDogRmlyZWZveClcbiAgICAgICAgICAgKiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0YXR1c2JhciBwYWRkaW5nIHNpbmNlIGVuZ2luZXMgbGlrZSBHZWNrb1xuICAgICAgICAgICAqIGFyZSBub3QgdXNlZCBhcyB0aGUgZW5naW5lIGZvciBzdGFuZGFsb25lIENvcmRvdmEvQ2FwYWNpdG9yIGFwcHNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1PZmZzZXQgPSAhQ1NTLnN1cHBvcnRzKCd3aWR0aCcsICdtYXgoMHB4LCAxcHgpJylcbiAgICAgICAgICAgID8gJzMwcHgnXG4gICAgICAgICAgICA6ICdtYXgoMzBweCwgdmFyKC0taW9uLXNhZmUtYXJlYS10b3ApKSc7XG4gICAgICAgICAgY29uc3QgbW9kYWxUcmFuc2Zvcm0gPSBoYXNDYXJkTW9kYWwgPyAnLTEwcHgnIDogdHJhbnNmb3JtT2Zmc2V0O1xuICAgICAgICAgIGNvbnN0IHRvUHJlc2VudGluZ1NjYWxlID0gdGhpcy5Td2lwZVRvQ2xvc2VEZWZhdWx0cy5NSU5fUFJFU0VOVElOR19TQ0FMRTtcbiAgICAgICAgICBjb25zdCBmaW5hbFRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7bW9kYWxUcmFuc2Zvcm19KSBzY2FsZSgke3RvUHJlc2VudGluZ1NjYWxlfSlgO1xuXG4gICAgICAgICAgcHJlc2VudGluZ0FuaW1hdGlvblxuICAgICAgICAgICAgLmFmdGVyU3R5bGVzKHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYmVmb3JlQWRkV3JpdGUoKCkgPT4gYm9keUVsLnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kLWNvbG9yJywgJ2JsYWNrJykpXG4gICAgICAgICAgICAuYWRkRWxlbWVudChwcmVzZW50aW5nRWwpXG4gICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICdjb250cmFzdCgxKScsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwcHgpIHNjYWxlKDEpJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcwcHgnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogJ2NvbnRyYXN0KDAuODUpJyxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzEwcHggMTBweCAwIDAnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihwcmVzZW50aW5nQW5pbWF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihiYWNrZHJvcEFuaW1hdGlvbik7XG5cbiAgICAgICAgICBpZiAoY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghaGFzQ2FyZE1vZGFsKSB7XG4gICAgICAgICAgICB3cmFwcGVyQW5pbWF0aW9uLmZyb21Ubygnb3BhY2l0eScsICcwJywgJzEnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG9QcmVzZW50aW5nU2NhbGUgPSBoYXNDYXJkTW9kYWxcbiAgICAgICAgICAgICAgPyB0aGlzLlN3aXBlVG9DbG9zZURlZmF1bHRzLk1JTl9QUkVTRU5USU5HX1NDQUxFXG4gICAgICAgICAgICAgIDogMTtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsVHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoLTEwcHgpIHNjYWxlKCR7dG9QcmVzZW50aW5nU2NhbGV9KWA7XG5cbiAgICAgICAgICAgIHByZXNlbnRpbmdBbmltYXRpb25cbiAgICAgICAgICAgICAgLmFmdGVyU3R5bGVzKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYWRkRWxlbWVudChwcmVzZW50aW5nRWxSb290LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC13cmFwcGVyJykhKVxuICAgICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMCwgZmlsdGVyOiAnY29udHJhc3QoMSknLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApIHNjYWxlKDEpJyB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBmaWx0ZXI6ICdjb250cmFzdCgwLjg1KScsIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0gfSxcbiAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNoYWRvd0FuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpXG4gICAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsUm9vdC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMCwgb3BhY2l0eTogJzEnLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApIHNjYWxlKDEpJyB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBvcGFjaXR5OiAnMCcsIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0gfSxcbiAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKFtwcmVzZW50aW5nQW5pbWF0aW9uLCBzaGFkb3dBbmltYXRpb25dKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbikge1xuICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJhc2VBbmltYXRpb247XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBsZWF2ZUFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3A/OiBIVE1MSW9uQmFja2Ryb3BFbGVtZW50KTogQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIGJhc2VFbDogSFRNTEVsZW1lbnQsXG4gICAgICBvcHRzOiB7IHByZXNlbnRpbmdFbD86IEhUTUxFbGVtZW50IH0sXG4gICAgICBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb25cbiAgICApOiBBbmltYXRpb24gPT4ge1xuICAgICAgY29uc3QgeyBwcmVzZW50aW5nRWwgfSA9IG9wdHM7XG4gICAgICBjb25zdCByb290ID0gdGhpcy5nZXRFbGVtZW50Um9vdChiYXNlRWwpO1xuICAgICAgY29uc3QgeyB3cmFwcGVyQW5pbWF0aW9uLCBiYWNrZHJvcEFuaW1hdGlvbiB9ID0gdGhpcy5jcmVhdGVMZWF2ZUFuaW1hdGlvbigpO1xuXG4gICAgICBiYWNrZHJvcEFuaW1hdGlvbi5hZGRFbGVtZW50KHJvb3QucXVlcnlTZWxlY3RvcignaW9uLWJhY2tkcm9wJykhKTtcblxuICAgICAgd3JhcHBlckFuaW1hdGlvblxuICAgICAgICAuYWRkRWxlbWVudChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2RhbC13cmFwcGVyLCAubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAuYmVmb3JlU3R5bGVzKHsgb3BhY2l0eTogMSB9KTtcblxuICAgICAgY29uc3QgYmFzZUFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbignbGVhdmluZy1iYXNlJylcbiAgICAgICAgLmFkZEVsZW1lbnQoYmFzZUVsKVxuICAgICAgICAuZWFzaW5nKHRoaXMuZWFzaW5nTGVhdmUpXG4gICAgICAgIC5kdXJhdGlvbihkdXJhdGlvbilcbiAgICAgICAgLmFkZEFuaW1hdGlvbih3cmFwcGVyQW5pbWF0aW9uKTtcblxuICAgICAgbGV0IGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbjogQW5pbWF0aW9uO1xuICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcCkge1xuICAgICAgICBjdXJyZW50QmFja2Ryb3BBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKVxuICAgICAgICAgIC5hZGRFbGVtZW50KGN1cnJlbnRCYWNrZHJvcClcbiAgICAgICAgICAuZnJvbVRvKCdvcGFjaXR5JywgMC4wMSwgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJylcbiAgICAgICAgICAuYWZ0ZXJTdHlsZXMoeyBvcGFjaXR5OiAndmFyKC0tYmFja2Ryb3Atb3BhY2l0eSknIH0pOyAvL0Vuc3VyZXMgYmFja2Ryb3AgaXMgcmVzZXQgdG8gZGVmYXVsdCBvcGFjaXR5IGFmdGVyIHN3aXBlIHRvIGNsb3NlXG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVzZW50aW5nRWwpIHtcbiAgICAgICAgY29uc3QgaXNNb2JpbGUgPSAhdGhpcy5wbGF0Zm9ybS5pc1BoYWJsZXRPckJpZ2dlcigpO1xuICAgICAgICBjb25zdCBoYXNDYXJkTW9kYWwgPVxuICAgICAgICAgIHByZXNlbnRpbmdFbC50YWdOYW1lID09PSAnSU9OLU1PREFMJyAmJlxuICAgICAgICAgIChwcmVzZW50aW5nRWwgYXMgSFRNTElvbk1vZGFsRWxlbWVudCkucHJlc2VudGluZ0VsZW1lbnQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcHJlc2VudGluZ0VsUm9vdCA9IHRoaXMuZ2V0RWxlbWVudFJvb3QocHJlc2VudGluZ0VsKTtcblxuICAgICAgICBjb25zdCBwcmVzZW50aW5nQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKClcbiAgICAgICAgICAuYmVmb3JlQ2xlYXJTdHlsZXMoWyd0cmFuc2Zvcm0nXSlcbiAgICAgICAgICAuYWZ0ZXJDbGVhclN0eWxlcyhbJ3RyYW5zZm9ybSddKVxuICAgICAgICAgIC5vbkZpbmlzaCgoY3VycmVudFN0ZXApID0+IHtcbiAgICAgICAgICAgIC8vIG9ubHkgcmVzZXQgYmFja2dyb3VuZCBjb2xvciBpZiB0aGlzIGlzIHRoZSBsYXN0IGNhcmQtc3R5bGUgbW9kYWxcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCAhPT0gMSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByZXNlbnRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IG51bU1vZGFscyA9IEFycmF5LmZyb20oYm9keUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lvbi1tb2RhbCcpKS5maWx0ZXIoXG4gICAgICAgICAgICAgIChtKSA9PiBtLnByZXNlbnRpbmdFbGVtZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICkubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG51bU1vZGFscyA8PSAxKSB7XG4gICAgICAgICAgICAgIGJvZHlFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnYmFja2dyb3VuZC1jb2xvcicsICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBib2R5RWwgPSBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgIGlmIChpc01vYmlsZSkge1xuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybU9mZnNldCA9ICFDU1Muc3VwcG9ydHMoJ3dpZHRoJywgJ21heCgwcHgsIDFweCknKVxuICAgICAgICAgICAgPyAnMzBweCdcbiAgICAgICAgICAgIDogJ21heCgzMHB4LCB2YXIoLS1pb24tc2FmZS1hcmVhLXRvcCkpJztcbiAgICAgICAgICBjb25zdCBtb2RhbFRyYW5zZm9ybSA9IGhhc0NhcmRNb2RhbCA/ICctMTBweCcgOiB0cmFuc2Zvcm1PZmZzZXQ7XG4gICAgICAgICAgY29uc3QgdG9QcmVzZW50aW5nU2NhbGUgPSB0aGlzLlN3aXBlVG9DbG9zZURlZmF1bHRzLk1JTl9QUkVTRU5USU5HX1NDQUxFO1xuICAgICAgICAgIGNvbnN0IGZpbmFsVHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoJHttb2RhbFRyYW5zZm9ybX0pIHNjYWxlKCR7dG9QcmVzZW50aW5nU2NhbGV9KWA7XG5cbiAgICAgICAgICBwcmVzZW50aW5nQW5pbWF0aW9uLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsKS5rZXlmcmFtZXMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICAgIGZpbHRlcjogJ2NvbnRyYXN0KDAuODUpJyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTBweCAxMHB4IDAgMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgIGZpbHRlcjogJ2NvbnRyYXN0KDEpJyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwcHgpIHNjYWxlKDEpJyxcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMHB4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG5cbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihwcmVzZW50aW5nQW5pbWF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihiYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbikge1xuICAgICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWhhc0NhcmRNb2RhbCkge1xuICAgICAgICAgICAgd3JhcHBlckFuaW1hdGlvbi5mcm9tVG8oJ29wYWNpdHknLCAnMScsICcwJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRvUHJlc2VudGluZ1NjYWxlID0gaGFzQ2FyZE1vZGFsXG4gICAgICAgICAgICAgID8gdGhpcy5Td2lwZVRvQ2xvc2VEZWZhdWx0cy5NSU5fUFJFU0VOVElOR19TQ0FMRVxuICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICBjb25zdCBmaW5hbFRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKC0xMHB4KSBzY2FsZSgke3RvUHJlc2VudGluZ1NjYWxlfSlgO1xuXG4gICAgICAgICAgICBwcmVzZW50aW5nQW5pbWF0aW9uXG4gICAgICAgICAgICAgIC5hZGRFbGVtZW50KHByZXNlbnRpbmdFbFJvb3QucXVlcnlTZWxlY3RvcignLm1vZGFsLXdyYXBwZXInKSEpXG4gICAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMCwgMCknLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMCwgZmlsdGVyOiAnY29udHJhc3QoMC44NSknLCB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtIH0sXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDEsIGZpbHRlcjogJ2NvbnRyYXN0KDEpJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSBzY2FsZSgxKScgfSxcbiAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNoYWRvd0FuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpXG4gICAgICAgICAgICAgIC5hZGRFbGVtZW50KHByZXNlbnRpbmdFbFJvb3QucXVlcnlTZWxlY3RvcignLm1vZGFsLXNoYWRvdycpISlcbiAgICAgICAgICAgICAgLmFmdGVyU3R5bGVzKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApIHNjYWxlKDEpJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDAsIG9wYWNpdHk6ICcwJywgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBvcGFjaXR5OiAnMScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCkgc2NhbGUoMSknIH0sXG4gICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihbcHJlc2VudGluZ0FuaW1hdGlvbiwgc2hhZG93QW5pbWF0aW9uXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihiYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgIGlmIChjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pIHtcbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYXNlQW5pbWF0aW9uO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUVudGVyQW5pbWF0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGJhY2tkcm9wQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKClcbiAgICAgIC5mcm9tVG8oJ29wYWNpdHknLCAwLjAxLCAndmFyKC0tYmFja2Ryb3Atb3BhY2l0eSknKVxuICAgICAgLmJlZm9yZVN0eWxlcyh7XG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6ICdub25lJyxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbGVhclN0eWxlcyhbJ3BvaW50ZXItZXZlbnRzJ10pO1xuXG4gICAgY29uc3Qgd3JhcHBlckFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpLmZyb21UbyhcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgJ3RyYW5zbGF0ZVkoMTAwdmgpJyxcbiAgICAgICd0cmFuc2xhdGVZKDB2aCknXG4gICAgKTtcblxuICAgIHJldHVybiB7IGJhY2tkcm9wQW5pbWF0aW9uLCB3cmFwcGVyQW5pbWF0aW9uIH07XG4gIH07XG5cbiAgcHJpdmF0ZSBjcmVhdGVMZWF2ZUFuaW1hdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCBiYWNrZHJvcEFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpLmZyb21Ubygnb3BhY2l0eScsICd2YXIoLS1iYWNrZHJvcC1vcGFjaXR5KScsIDApO1xuXG4gICAgY29uc3Qgd3JhcHBlckFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpLmZyb21UbyhcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgJ3RyYW5zbGF0ZVkoMHZoKScsXG4gICAgICAndHJhbnNsYXRlWSgxMDB2aCknXG4gICAgKTtcblxuICAgIHJldHVybiB7IGJhY2tkcm9wQW5pbWF0aW9uLCB3cmFwcGVyQW5pbWF0aW9uIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJvb3QgY29udGV4dCBvZiBhIHNoYWRvdyBkb20gZWxlbWVudFxuICAgKiBPbiBuZXdlciBicm93c2VycyB0aGlzIHdpbGwgYmUgdGhlIHNoYWRvd1Jvb3QsXG4gICAqIGJ1dCBmb3Igb2xkZXIgYnJvd3NlciB0aGlzIG1heSBqdXN0IGJlIHRoZVxuICAgKiBlbGVtZW50IGl0c2VsZi5cbiAgICpcbiAgICogVXNlZnVsIGZvciB3aGVuZXZlciB5b3UgbmVlZCB0byBleHBsaWNpdGx5XG4gICAqIGRvIFwibXlFbGVtZW50LnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoLi4uKVwiLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFbGVtZW50Um9vdCA9IChlbDogSFRNTEVsZW1lbnQsIGZhbGxiYWNrOiBIVE1MRWxlbWVudCA9IGVsKSA9PiB7XG4gICAgcmV0dXJuIGVsLnNoYWRvd1Jvb3QgfHwgZmFsbGJhY2s7XG4gIH07XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { NavigationEnd, NavigationStart, } from '@angular/router';\nimport { EMPTY, firstValueFrom } from 'rxjs';\nimport { filter, map, pairwise, skipUntil, startWith, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class ModalNavigationService {\n constructor(router, route) {\n this.router = router;\n this.route = route;\n this.navigationEndListener$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));\n }\n isModalRoute(url) {\n return url.includes('(modal:');\n }\n getCurrentActivatedRoute() {\n let childRoute = this.route.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n return childRoute;\n }\n async getModalRoutes(routeConfig, moduleRootRoutePath) {\n const flattenedRoutes = [].concat(...routeConfig);\n let modalRoutes = [];\n const moduleRootPaths = await this.getModuleRootPath(flattenedRoutes, moduleRootRoutePath);\n if (moduleRootPaths) {\n modalRoutes = this.getModalRoutePaths(flattenedRoutes, moduleRootPaths);\n }\n return modalRoutes;\n }\n async getModuleRootPath(routes, moduleRootRoutePath) {\n if (moduleRootRoutePath) {\n const trimmedPaths = moduleRootRoutePath\n .trim()\n .split('/')\n .filter((path) => !!path);\n const rootPath = [''];\n return rootPath.concat(trimmedPaths);\n }\n const currentRoutePaths = await this.getCurrentRoutePaths();\n const moduleRootPaths = this.getRoutePathsWithoutChildSegments(currentRoutePaths, routes);\n return moduleRootPaths;\n }\n async getCurrentRoutePaths() {\n const rootPath = [''];\n const currentNavigation = this.router.getCurrentNavigation();\n if (!this.router.navigated && !currentNavigation) {\n // If router hasn't navigated yet and we are not in the middle of navigating, assume root:\n return rootPath;\n }\n if (currentNavigation) {\n // Wait for current navigation to finish:\n await firstValueFrom(this.navigationEndListener$);\n }\n let childRoute = this.route.snapshot.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n const currentBackdropRoutePath = childRoute.pathFromRoot.filter((route) => route.outlet !== 'modal');\n return rootPath.concat(...currentBackdropRoutePath.map((route) => route.url.filter((segment) => !!segment.path).map((segment) => segment.path)));\n }\n getRoutePathsWithoutChildSegments(routePaths, routes) {\n if (!routePaths.length)\n return routePaths;\n const matchedChildRoute = this.findChildRouteForUrl(routePaths.join('/'), routes);\n if (!matchedChildRoute)\n return routePaths;\n const startSlashRegex = /^\\//;\n const relativeChildRoute = matchedChildRoute.replace(startSlashRegex, '');\n const childSegmentCount = relativeChildRoute.split('/').length;\n const routePathsWithoutChildSegments = routePaths.slice(0, -childSegmentCount); // Remove child segments from end of route path array\n return routePathsWithoutChildSegments;\n }\n findChildRouteForUrl(url, routes) {\n const moduleRelativePaths = this.getRoutePaths(routes, ['']).sort().reverse(); // Ensure child paths are evaluated first\n let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));\n if (!matchedChildRoute) {\n // No static child route found matching current route - look for child route with url params:\n const exactMatch = false;\n matchedChildRoute = moduleRelativePaths.find((path) => path.includes('/:') && this.pathContainsChildRouteWithUrlParams(url, path, exactMatch));\n }\n return matchedChildRoute;\n }\n pathContainsChildRouteWithUrlParams(path, childRouteWithUrlParams, exactMatch) {\n const pathSegments = path.split('/');\n const startSlashRegex = /^\\//;\n let childRouteToMatch = childRouteWithUrlParams;\n if (!exactMatch) {\n const relativeChildRoute = childRouteWithUrlParams.replace(startSlashRegex, '');\n childRouteToMatch = relativeChildRoute;\n }\n const childRouteSegments = childRouteToMatch.split('/');\n // Match each child route segment against url\n // Match backwards from end to start of child route, i.e. \"url ends with child route\":\n const pathContainsChildRoute = childRouteSegments.reverse().every((childRouteSegment) => {\n const pathSegment = pathSegments.pop();\n // url params (e.g. `/:id/`) are treated as a match:\n return childRouteSegment.startsWith(':') || childRouteSegment === pathSegment;\n });\n if (exactMatch) {\n // Only match if we've reached the start of the url to match against:\n return pathSegments.length === 0 && pathContainsChildRoute;\n }\n return pathContainsChildRoute;\n }\n getRoutePaths(routes, parentPath) {\n return Array.isArray(routes)\n ? [].concat(...routes.map((route) => this.getRoutePath(route, parentPath)))\n : [];\n }\n getRoutePath(route, parentPath) {\n const routes = [];\n if (route.outlet)\n return routes; // Don't return relative paths for outlet routes\n const currentPath = [...parentPath];\n if (route.path) {\n currentPath.push(route.path);\n routes.push(currentPath.join('/'));\n }\n return routes.concat(this.getRoutePaths(route.children, currentPath));\n }\n getModalRoutePath(route, parentPath) {\n const modalOutletName = 'modal';\n if (!!route.path && route.outlet === modalOutletName) {\n const modalOutletPath = `(${modalOutletName}:${route.path})`;\n const modalRoutePath = [...parentPath, modalOutletPath].join('/');\n return [modalRoutePath];\n }\n const currentPath = [...parentPath];\n if (route.path) {\n currentPath.push(route.path);\n }\n return [].concat(...this.getModalRoutePaths(route.children, currentPath));\n }\n getModalRoutePaths(routes, parentPath) {\n return Array.isArray(routes)\n ? [].concat(...routes.map((route) => this.getModalRoutePath(route, parentPath)))\n : [];\n }\n isNewModalWindow(navigationEnd) {\n const currentNavigation = this.router.getCurrentNavigation();\n if (!currentNavigation || !currentNavigation.previousNavigation) {\n return true;\n }\n const previousRoutePath = (currentNavigation.previousNavigation.finalUrl ||\n currentNavigation.previousNavigation.extractedUrl).toString();\n const wasModalRoute = this.isModalRoute(previousRoutePath);\n const isModalRoute = this.isModalRoute(navigationEnd.urlAfterRedirects);\n if (!wasModalRoute && isModalRoute) {\n return true;\n }\n const currentModalRouteParent = navigationEnd.urlAfterRedirects.split('/(modal:')[0];\n const previousModalRouteParent = previousRoutePath.split('/(modal:')[0];\n return previousModalRouteParent !== currentModalRouteParent;\n }\n async waitForCurrentThenGetNavigationEndStream() {\n if (this.router.getCurrentNavigation()) {\n const currentNavigationEnd = await firstValueFrom(this.navigationEndListener$);\n return this.navigationEndListener$.pipe(startWith(currentNavigationEnd));\n }\n return this.navigationEndListener$;\n }\n modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams) {\n return navigationEnd$.pipe(filter((navigationEnd) => this.modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams)), map((navigationEnd) => {\n return {\n route: this.getCurrentActivatedRoute(),\n isNewModal: this.isNewModalWindow(navigationEnd),\n };\n }));\n }\n modalRouteDeactivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams) {\n return navigationEnd$.pipe(pairwise(), \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n filter(([prevNavigation, _]) => this.modalRouteSetContainsPath(modalRouteSet, prevNavigation, modalRoutesContainsUrlParams)), // Only emit if previous route was modal\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n map(([_, currentNavigation]) => {\n const isNewModalRoute = this.isModalRoute(currentNavigation.urlAfterRedirects);\n // Deactivate modal route if new route is NOT modal OR is outside current parent route:\n return !isNewModalRoute || this.isNewModalWindow(currentNavigation);\n }), filter((isDeactivation) => isDeactivation));\n }\n modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams) {\n const pathname = navigationEnd.urlAfterRedirects.split('?')[0];\n let hasRoute = modalRouteSet.has(pathname);\n if (!hasRoute && modalRoutesContainsUrlParams) {\n // Use `for ... of` instead of `forEach` so we can break out of the loop if route is found:\n for (const route of modalRouteSet) {\n const exactMatch = true;\n const routeMatchesPath = this.pathContainsChildRouteWithUrlParams(pathname, route, exactMatch);\n if (routeMatchesPath) {\n hasRoute = true;\n break;\n }\n }\n }\n return hasRoute;\n }\n async getModalNavigation(routeConfig, moduleRootRoutePath) {\n if (Array.isArray(routeConfig)) {\n const navigationEnd$ = await this.waitForCurrentThenGetNavigationEndStream();\n const modalRoutes = await this.getModalRoutes(routeConfig, moduleRootRoutePath);\n const hasModalRoutes = modalRoutes.length > 0;\n if (hasModalRoutes) {\n const modalRoutesContainsUrlParams = modalRoutes.some((route) => route.includes('/:'));\n const modalRouteSet = new Set(modalRoutes);\n const activated$ = this.modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);\n const deactivated$ = this.modalRouteDeactivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);\n return { activated$, deactivated$ };\n }\n }\n return { activated$: EMPTY, deactivated$: EMPTY };\n }\n async navigateToModal(path, queryParams) {\n const commands = Array.isArray(path) ? [...path] : path.split('/');\n const childPath = commands.pop();\n const result = await this.router.navigate([...commands, { outlets: { modal: [childPath] } }], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n return result;\n }\n async navigateWithinModal(relativePath, queryParams) {\n return this.router.navigate([relativePath], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n }\n async navigateOutOfModalOutlet() {\n const currentActivatedRoute = this.getCurrentActivatedRoute();\n const currentNavigationFinalUrl = this.router.getCurrentNavigation()?.finalUrl?.toString();\n const isCurrentlyNavigatingOutOfModalOutlet = currentNavigationFinalUrl && !this.isModalRoute(currentNavigationFinalUrl);\n if (currentActivatedRoute.outlet !== 'modal' || isCurrentlyNavigatingOutOfModalOutlet) {\n // Nothing to do here, bail out:\n return Promise.resolve(true);\n }\n const parentRoute = this.getBackdropRoute(currentActivatedRoute);\n return this.router.navigate(['./'], {\n relativeTo: parentRoute,\n });\n }\n getBackdropRoute(currentActivatedRoute) {\n let parentRoute = currentActivatedRoute.parent;\n while (parentRoute && !parentRoute.component && !!parentRoute.parent) {\n parentRoute = parentRoute.parent;\n }\n return parentRoute;\n }\n handleBrowserBackButton(modal) {\n const popstateNavigationStart$ = this.router.events.pipe(filter((event) => event instanceof NavigationStart && event.navigationTrigger === 'popstate'));\n const navigationEnd$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));\n navigationEnd$\n .pipe(skipUntil(popstateNavigationStart$), takeUntil(modal.onWillDismiss()))\n .subscribe(() => {\n modal.dismiss();\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalNavigationService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalNavigationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalNavigationService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFFTCxhQUFhLEVBQ2IsZUFBZSxHQUtoQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLeEYsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUNVLE1BQWMsRUFDZCxLQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUEyTHZCLDJCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdEQsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEwQixFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUMxRSxDQUFDO0lBNUxDLENBQUM7SUFFSixZQUFZLENBQUMsR0FBVztRQUN0QixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNqQyxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxj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Q0FBQyxDQUFDO2FBQzNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO2lJQS9WVSxzQkFBc0I7cUlBQXRCLHNCQUFzQixjQURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGUsXG4gIE5hdmlnYXRpb25FbmQsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgUGFyYW1zLFxuICBSb3V0ZSxcbiAgUm91dGVyLFxuICBSb3V0ZXMsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFTVBUWSwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBwYWlyd2lzZSwgc2tpcFVudGlsLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTW9kYWxSb3V0ZUFjdGl2YXRpb24gfSBmcm9tICcuL21vZGFsLmludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsTmF2aWdhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBpc01vZGFsUm91dGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXJsLmluY2x1ZGVzKCcobW9kYWw6Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpOiBBY3RpdmF0ZWRSb3V0ZSB7XG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkUm91dGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1vZGFsUm91dGVzKFxuICAgIHJvdXRlQ29uZmlnOiBSb3V0ZXNbXSxcbiAgICBtb2R1bGVSb290Um91dGVQYXRoPzogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBmbGF0dGVuZWRSb3V0ZXM6IFJvdXRlcyA9IFtdLmNvbmNhdCguLi5yb3V0ZUNvbmZpZyk7XG4gICAgbGV0IG1vZGFsUm91dGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG1vZHVsZVJvb3RQYXRocyA9IGF3YWl0IHRoaXMuZ2V0TW9kdWxlUm9vdFBhdGgoZmxhdHRlbmVkUm91dGVzLCBtb2R1bGVSb290Um91dGVQYXRoKTtcbiAgICBpZiAobW9kdWxlUm9vdFBhdGhzKSB7XG4gICAgICBtb2RhbFJvdXRlcyA9IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKGZsYXR0ZW5lZFJvdXRlcywgbW9kdWxlUm9vdFBhdGhzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsUm91dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRNb2R1bGVSb290UGF0aChyb3V0ZXM6IFJvdXRlcywgbW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAobW9kdWxlUm9vdFJvdXRlUGF0aCkge1xuICAgICAgY29uc3QgdHJpbW1lZFBhdGhzID0gbW9kdWxlUm9vdFJvdXRlUGF0aFxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5maWx0ZXIoKHBhdGgpID0+ICEhcGF0aCk7XG4gICAgICBjb25zdCByb290UGF0aCA9IFsnJ107XG4gICAgICByZXR1cm4gcm9vdFBhdGguY29uY2F0KHRyaW1tZWRQYXRocyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJvdXRlUGF0aHMgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRSb3V0ZVBhdGhzKCk7XG4gICAgY29uc3QgbW9kdWxlUm9vdFBhdGhzID0gdGhpcy5nZXRSb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHMoY3VycmVudFJvdXRlUGF0aHMsIHJvdXRlcyk7XG4gICAgcmV0dXJuIG1vZHVsZVJvb3RQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q3VycmVudFJvdXRlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gWycnXTtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMucm91dGVyLm5hdmlnYXRlZCAmJiAhY3VycmVudE5hdmlnYXRpb24pIHtcbiAgICAgIC8vIElmIHJvdXRlciBoYXNuJ3QgbmF2aWdhdGVkIHlldCBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIGFzc3VtZSByb290OlxuICAgICAgcmV0dXJuIHJvb3RQYXRoO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TmF2aWdhdGlvbikge1xuICAgICAgLy8gV2FpdCBmb3IgY3VycmVudCBuYXZpZ2F0aW9uIHRvIGZpbmlzaDpcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJCk7XG4gICAgfVxuXG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEJhY2tkcm9wUm91dGVQYXRoID0gY2hpbGRSb3V0ZS5wYXRoRnJvbVJvb3QuZmlsdGVyKFxuICAgICAgKHJvdXRlKSA9PiByb3V0ZS5vdXRsZXQgIT09ICdtb2RhbCdcbiAgICApO1xuXG4gICAgcmV0dXJuIHJvb3RQYXRoLmNvbmNhdChcbiAgICAgIC4uLmN1cnJlbnRCYWNrZHJvcFJvdXRlUGF0aC5tYXAoKHJvdXRlKSA9PlxuICAgICAgICByb3V0ZS51cmwuZmlsdGVyKChzZWdtZW50KSA9PiAhIXNlZ21lbnQucGF0aCkubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzKHJvdXRlUGF0aHM6IHN0cmluZ1tdLCByb3V0ZXM6IFJvdXRlcyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXJvdXRlUGF0aHMubGVuZ3RoKSByZXR1cm4gcm91dGVQYXRocztcblxuICAgIGNvbnN0IG1hdGNoZWRDaGlsZFJvdXRlID0gdGhpcy5maW5kQ2hpbGRSb3V0ZUZvclVybChyb3V0ZVBhdGhzLmpvaW4oJy8nKSwgcm91dGVzKTtcblxuICAgIGlmICghbWF0Y2hlZENoaWxkUm91dGUpIHJldHVybiByb3V0ZVBhdGhzO1xuXG4gICAgY29uc3Qgc3RhcnRTbGFzaFJlZ2V4ID0gL15cXC8vO1xuICAgIGNvbnN0IHJlbGF0aXZlQ2hpbGRSb3V0ZSA9IG1hdGNoZWRDaGlsZFJvdXRlLnJlcGxhY2Uoc3RhcnRTbGFzaFJlZ2V4LCAnJyk7XG4gICAgY29uc3QgY2hpbGRTZWdtZW50Q291bnQgPSByZWxhdGl2ZUNoaWxkUm91dGUuc3BsaXQoJy8nKS5sZW5ndGg7XG4gICAgY29uc3Qgcm91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzID0gcm91dGVQYXRocy5zbGljZSgwLCAtY2hpbGRTZWdtZW50Q291bnQpOyAvLyBSZW1vdmUgY2hpbGQgc2VnbWVudHMgZnJvbSBlbmQgb2Ygcm91dGUgcGF0aCBhcnJheVxuICAgIHJldHVybiByb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHM7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDaGlsZFJvdXRlRm9yVXJsKHVybDogc3RyaW5nLCByb3V0ZXM6IFJvdXRlcykge1xuICAgIGNvbnN0IG1vZHVsZVJlbGF0aXZlUGF0aHMgPSB0aGlzLmdldFJvdXRlUGF0aHMocm91dGVzLCBbJyddKS5zb3J0KCkucmV2ZXJzZSgpOyAvLyBFbnN1cmUgY2hpbGQgcGF0aHMgYXJlIGV2YWx1YXRlZCBmaXJzdFxuICAgIGxldCBtYXRjaGVkQ2hpbGRSb3V0ZSA9IG1vZHVsZVJlbGF0aXZlUGF0aHMuZmluZCgocGF0aCkgPT4gdXJsLmVuZHNXaXRoKHBhdGgpKTtcbiAgICBpZiAoIW1hdGNoZWRDaGlsZFJvdXRlKSB7XG4gICAgICAvLyBObyBzdGF0aWMgY2hpbGQgcm91dGUgZm91bmQgbWF0Y2hpbmcgY3VycmVudCByb3V0ZSAtIGxvb2sgZm9yIGNoaWxkIHJvdXRlIHdpdGggdXJsIHBhcmFtczpcbiAgICAgIGNvbnN0IGV4YWN0TWF0Y2ggPSBmYWxzZTtcbiAgICAgIG1hdGNoZWRDaGlsZFJvdXRlID0gbW9kdWxlUmVsYXRpdmVQYXRocy5maW5kKFxuICAgICAgICAocGF0aCkgPT5cbiAgICAgICAgICBwYXRoLmluY2x1ZGVzKCcvOicpICYmIHRoaXMucGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXModXJsLCBwYXRoLCBleGFjdE1hdGNoKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZWRDaGlsZFJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRoQ29udGFpbnNDaGlsZFJvdXRlV2l0aFVybFBhcmFtcyhcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM6IHN0cmluZyxcbiAgICBleGFjdE1hdGNoOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCBzdGFydFNsYXNoUmVnZXggPSAvXlxcLy87XG4gICAgbGV0IGNoaWxkUm91dGVUb01hdGNoID0gY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM7XG4gICAgaWYgKCFleGFjdE1hdGNoKSB7XG4gICAgICBjb25zdCByZWxhdGl2ZUNoaWxkUm91dGUgPSBjaGlsZFJvdXRlV2l0aFVybFBhcmFtcy5yZXBsYWNlKHN0YXJ0U2xhc2hSZWdleCwgJycpO1xuICAgICAgY2hpbGRSb3V0ZVRvTWF0Y2ggPSByZWxhdGl2ZUNoaWxkUm91dGU7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUm91dGVTZWdtZW50cyA9IGNoaWxkUm91dGVUb01hdGNoLnNwbGl0KCcvJyk7XG4gICAgLy8gTWF0Y2ggZWFjaCBjaGlsZCByb3V0ZSBzZWdtZW50IGFnYWluc3QgdXJsXG4gICAgLy8gTWF0Y2ggYmFja3dhcmRzIGZyb20gZW5kIHRvIHN0YXJ0IG9mIGNoaWxkIHJvdXRlLCBpLmUuIFwidXJsIGVuZHMgd2l0aCBjaGlsZCByb3V0ZVwiOlxuICAgIGNvbnN0IHBhdGhDb250YWluc0NoaWxkUm91dGUgPSBjaGlsZFJvdXRlU2VnbWVudHMucmV2ZXJzZSgpLmV2ZXJ5KChjaGlsZFJvdXRlU2VnbWVudCkgPT4ge1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSBwYXRoU2VnbWVudHMucG9wKCk7XG4gICAgICAvLyB1cmwgcGFyYW1zIChlLmcuIGAvOmlkL2ApIGFyZSB0cmVhdGVkIGFzIGEgbWF0Y2g6XG4gICAgICByZXR1cm4gY2hpbGRSb3V0ZVNlZ21lbnQuc3RhcnRzV2l0aCgnOicpIHx8IGNoaWxkUm91dGVTZWdtZW50ID09PSBwYXRoU2VnbWVudDtcbiAgICB9KTtcbiAgICBpZiAoZXhhY3RNYXRjaCkge1xuICAgICAgLy8gT25seSBtYXRjaCBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBzdGFydCBvZiB0aGUgdXJsIHRvIG1hdGNoIGFnYWluc3Q6XG4gICAgICByZXR1cm4gcGF0aFNlZ21lbnRzLmxlbmd0aCA9PT0gMCAmJiBwYXRoQ29udGFpbnNDaGlsZFJvdXRlO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aENvbnRhaW5zQ2hpbGRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRocyhyb3V0ZXM6IFJvdXRlcywgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocm91dGVzKVxuICAgICAgPyAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi5yb3V0ZXMubWFwKChyb3V0ZSkgPT4gdGhpcy5nZXRSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGF0aChyb3V0ZTogUm91dGUsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJvdXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocm91dGUub3V0bGV0KSByZXR1cm4gcm91dGVzOyAvLyBEb24ndCByZXR1cm4gcmVsYXRpdmUgcGF0aHMgZm9yIG91dGxldCByb3V0ZXNcblxuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gWy4uLnBhcmVudFBhdGhdO1xuICAgIGlmIChyb3V0ZS5wYXRoKSB7XG4gICAgICBjdXJyZW50UGF0aC5wdXNoKHJvdXRlLnBhdGgpO1xuICAgICAgcm91dGVzLnB1c2goY3VycmVudFBhdGguam9pbignLycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGVzLmNvbmNhdCh0aGlzLmdldFJvdXRlUGF0aHMocm91dGUuY2hpbGRyZW4sIGN1cnJlbnRQYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGFsUm91dGVQYXRoKHJvdXRlOiBSb3V0ZSwgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbW9kYWxPdXRsZXROYW1lID0gJ21vZGFsJztcbiAgICBpZiAoISFyb3V0ZS5wYXRoICYmIHJvdXRlLm91dGxldCA9PT0gbW9kYWxPdXRsZXROYW1lKSB7XG4gICAgICBjb25zdCBtb2RhbE91dGxldFBhdGggPSBgKCR7bW9kYWxPdXRsZXROYW1lfToke3JvdXRlLnBhdGh9KWA7XG4gICAgICBjb25zdCBtb2RhbFJvdXRlUGF0aCA9IFsuLi5wYXJlbnRQYXRoLCBtb2RhbE91dGxldFBhdGhdLmpvaW4oJy8nKTtcbiAgICAgIHJldHVybiBbbW9kYWxSb3V0ZVBhdGhdO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IFsuLi5wYXJlbnRQYXRoXTtcbiAgICBpZiAocm91dGUucGF0aCkge1xuICAgICAgY3VycmVudFBhdGgucHVzaChyb3V0ZS5wYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLnRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKHJvdXRlLmNoaWxkcmVuLCBjdXJyZW50UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2RhbFJvdXRlUGF0aHMocm91dGVzOiBSb3V0ZXMsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvdXRlcylcbiAgICAgID8gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4ucm91dGVzLm1hcCgocm91dGUpID0+IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGlzTmV3TW9kYWxXaW5kb3cobmF2aWdhdGlvbkVuZDogTmF2aWdhdGlvbkVuZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICBpZiAoIWN1cnJlbnROYXZpZ2F0aW9uIHx8ICFjdXJyZW50TmF2aWdhdGlvbi5wcmV2aW91c05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91c1JvdXRlUGF0aCA9IChcbiAgICAgIGN1cnJlbnROYXZpZ2F0aW9uLnByZXZpb3VzTmF2aWdhdGlvbi5maW5hbFVybCB8fFxuICAgICAgY3VycmVudE5hdmlnYXRpb24ucHJldmlvdXNOYXZpZ2F0aW9uLmV4dHJhY3RlZFVybFxuICAgICkudG9TdHJpbmcoKTtcbiAgICBjb25zdCB3YXNNb2RhbFJvdXRlID0gdGhpcy5pc01vZGFsUm91dGUocHJldmlvdXNSb3V0ZVBhdGgpO1xuICAgIGNvbnN0IGlzTW9kYWxSb3V0ZSA9IHRoaXMuaXNNb2RhbFJvdXRlKG5hdmlnYXRpb25FbmQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgIGlmICghd2FzTW9kYWxSb3V0ZSAmJiBpc01vZGFsUm91dGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50ID0gbmF2aWdhdGlvbkVuZC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnLyhtb2RhbDonKVswXTtcbiAgICBjb25zdCBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgPSBwcmV2aW91c1JvdXRlUGF0aC5zcGxpdCgnLyhtb2RhbDonKVswXTtcblxuICAgIHJldHVybiBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgIT09IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kTGlzdGVuZXIkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE5hdmlnYXRpb25FbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICApO1xuXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckN1cnJlbnRUaGVuR2V0TmF2aWdhdGlvbkVuZFN0cmVhbSgpOiBQcm9taXNlPE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD4+IHtcbiAgICBpZiAodGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkge1xuICAgICAgY29uc3QgY3VycmVudE5hdmlnYXRpb25FbmQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm5hdmlnYXRpb25FbmRMaXN0ZW5lciQpO1xuICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJC5waXBlKHN0YXJ0V2l0aChjdXJyZW50TmF2aWdhdGlvbkVuZCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uRW5kTGlzdGVuZXIkO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlQWN0aXZhdGVkRm9yKFxuICAgIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+LFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxNb2RhbFJvdXRlQWN0aXZhdGlvbj4ge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uRW5kJC5waXBlKFxuICAgICAgZmlsdGVyKChuYXZpZ2F0aW9uRW5kKSA9PlxuICAgICAgICB0aGlzLm1vZGFsUm91dGVTZXRDb250YWluc1BhdGgobW9kYWxSb3V0ZVNldCwgbmF2aWdhdGlvbkVuZCwgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcylcbiAgICAgICksXG4gICAgICBtYXAoKG5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZTogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICAgICAgICBpc05ld01vZGFsOiB0aGlzLmlzTmV3TW9kYWxXaW5kb3cobmF2aWdhdGlvbkVuZCksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1vZGFsUm91dGVEZWFjdGl2YXRlZEZvcihcbiAgICBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPixcbiAgICBtb2RhbFJvdXRlU2V0OiBTZXQ8c3RyaW5nPixcbiAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zOiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uRW5kJC5waXBlKFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGZpbHRlcigoW3ByZXZOYXZpZ2F0aW9uLCBfXSkgPT5cbiAgICAgICAgdGhpcy5tb2RhbFJvdXRlU2V0Q29udGFpbnNQYXRoKG1vZGFsUm91dGVTZXQsIHByZXZOYXZpZ2F0aW9uLCBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zKVxuICAgICAgKSwgLy8gT25seSBlbWl0IGlmIHByZXZpb3VzIHJvdXRlIHdhcyBtb2RhbFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgbWFwKChbXywgY3VycmVudE5hdmlnYXRpb25dKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTmV3TW9kYWxSb3V0ZSA9IHRoaXMuaXNNb2RhbFJvdXRlKGN1cnJlbnROYXZpZ2F0aW9uLnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICAgICAgLy8gRGVhY3RpdmF0ZSBtb2RhbCByb3V0ZSBpZiBuZXcgcm91dGUgaXMgTk9UIG1vZGFsIE9SIGlzIG91dHNpZGUgY3VycmVudCBwYXJlbnQgcm91dGU6XG4gICAgICAgIHJldHVybiAhaXNOZXdNb2RhbFJvdXRlIHx8IHRoaXMuaXNOZXdNb2RhbFdpbmRvdyhjdXJyZW50TmF2aWdhdGlvbik7XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcigoaXNEZWFjdGl2YXRpb24pID0+IGlzRGVhY3RpdmF0aW9uKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1vZGFsUm91dGVTZXRDb250YWluc1BhdGgoXG4gICAgbW9kYWxSb3V0ZVNldDogU2V0PHN0cmluZz4sXG4gICAgbmF2aWdhdGlvbkVuZDogTmF2aWdhdGlvbkVuZCxcbiAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHBhdGhuYW1lID0gbmF2aWdhdGlvbkVuZC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnPycpWzBdO1xuICAgIGxldCBoYXNSb3V0ZSA9IG1vZGFsUm91dGVTZXQuaGFzKHBhdGhuYW1lKTtcbiAgICBpZiAoIWhhc1JvdXRlICYmIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXMpIHtcbiAgICAgIC8vIFVzZSBgZm9yIC4uLiBvZmAgaW5zdGVhZCBvZiBgZm9yRWFjaGAgc28gd2UgY2FuIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBpZiByb3V0ZSBpcyBmb3VuZDpcbiAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgbW9kYWxSb3V0ZVNldCkge1xuICAgICAgICBjb25zdCBleGFjdE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgcm91dGVNYXRjaGVzUGF0aCA9IHRoaXMucGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXMoXG4gICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgZXhhY3RNYXRjaFxuICAgICAgICApO1xuICAgICAgICBpZiAocm91dGVNYXRjaGVzUGF0aCkge1xuICAgICAgICAgIGhhc1JvdXRlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFzUm91dGU7XG4gIH1cblxuICBhc3luYyBnZXRNb2RhbE5hdmlnYXRpb24oXG4gICAgcm91dGVDb25maWc6IFJvdXRlc1tdLFxuICAgIG1vZHVsZVJvb3RSb3V0ZVBhdGg/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IGFjdGl2YXRlZCQ6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+OyBkZWFjdGl2YXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gfT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvdXRlQ29uZmlnKSkge1xuICAgICAgY29uc3QgbmF2aWdhdGlvbkVuZCQgPSBhd2FpdCB0aGlzLndhaXRGb3JDdXJyZW50VGhlbkdldE5hdmlnYXRpb25FbmRTdHJlYW0oKTtcbiAgICAgIGNvbnN0IG1vZGFsUm91dGVzID0gYXdhaXQgdGhpcy5nZXRNb2RhbFJvdXRlcyhyb3V0ZUNvbmZpZywgbW9kdWxlUm9vdFJvdXRlUGF0aCk7XG4gICAgICBjb25zdCBoYXNNb2RhbFJvdXRlcyA9IG1vZGFsUm91dGVzLmxlbmd0aCA+IDA7XG4gICAgICBpZiAoaGFzTW9kYWxSb3V0ZXMpIHtcbiAgICAgICAgY29uc3QgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcyA9IG1vZGFsUm91dGVzLnNvbWUoKHJvdXRlKSA9PiByb3V0ZS5pbmNsdWRlcygnLzonKSk7XG4gICAgICAgIGNvbnN0IG1vZGFsUm91dGVTZXQgPSBuZXcgU2V0KG1vZGFsUm91dGVzKTtcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkJCA9IHRoaXMubW9kYWxSb3V0ZUFjdGl2YXRlZEZvcihcbiAgICAgICAgICBuYXZpZ2F0aW9uRW5kJCxcbiAgICAgICAgICBtb2RhbFJvdXRlU2V0LFxuICAgICAgICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXNcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVhY3RpdmF0ZWQkID0gdGhpcy5tb2RhbFJvdXRlRGVhY3RpdmF0ZWRGb3IoXG4gICAgICAgICAgbmF2aWdhdGlvbkVuZCQsXG4gICAgICAgICAgbW9kYWxSb3V0ZVNldCxcbiAgICAgICAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IGFjdGl2YXRlZCQsIGRlYWN0aXZhdGVkJCB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGFjdGl2YXRlZCQ6IEVNUFRZLCBkZWFjdGl2YXRlZCQ6IEVNUFRZIH07XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZVRvTW9kYWwocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tbWFuZHMgPSBBcnJheS5pc0FycmF5KHBhdGgpID8gWy4uLnBhdGhdIDogcGF0aC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbW1hbmRzLnBvcCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi5jb21tYW5kcywgeyBvdXRsZXRzOiB7IG1vZGFsOiBbY2hpbGRQYXRoXSB9IH1dLCB7XG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCksXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlV2l0aGluTW9kYWwocmVsYXRpdmVQYXRoOiBzdHJpbmcsIHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyZWxhdGl2ZVBhdGhdLCB7XG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZU91dE9mTW9kYWxPdXRsZXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3VycmVudEFjdGl2YXRlZFJvdXRlID0gdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKTtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbkZpbmFsVXJsID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKT8uZmluYWxVcmw/LnRvU3RyaW5nKCk7XG4gICAgY29uc3QgaXNDdXJyZW50bHlOYXZpZ2F0aW5nT3V0T2ZNb2RhbE91dGxldCA9XG4gICAgICBjdXJyZW50TmF2aWdhdGlvbkZpbmFsVXJsICYmICF0aGlzLmlzTW9kYWxSb3V0ZShjdXJyZW50TmF2aWdhdGlvbkZpbmFsVXJsKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZhdGVkUm91dGUub3V0bGV0ICE9PSAnbW9kYWwnIHx8IGlzQ3VycmVudGx5TmF2aWdhdGluZ091dE9mTW9kYWxPdXRsZXQpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSwgYmFpbCBvdXQ6XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudFJvdXRlID0gdGhpcy5nZXRCYWNrZHJvcFJvdXRlKGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xuICAgICAgcmVsYXRpdmVUbzogcGFyZW50Um91dGUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEJhY2tkcm9wUm91dGUoY3VycmVudEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIGxldCBwYXJlbnRSb3V0ZSA9IGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZS5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudFJvdXRlICYmICFwYXJlbnRSb3V0ZS5jb21wb25lbnQgJiYgISFwYXJlbnRSb3V0ZS5wYXJlbnQpIHtcbiAgICAgIHBhcmVudFJvdXRlID0gcGFyZW50Um91dGUucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50Um91dGU7XG4gIH1cblxuICBoYW5kbGVCcm93c2VyQmFja0J1dHRvbihtb2RhbDogSFRNTElvbk1vZGFsRWxlbWVudCkge1xuICAgIGNvbnN0IHBvcHN0YXRlTmF2aWdhdGlvblN0YXJ0JCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uU3RhcnQgPT5cbiAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCAmJiBldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJ1xuICAgICAgKVxuICAgICk7XG4gICAgY29uc3QgbmF2aWdhdGlvbkVuZCQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICApO1xuICAgIG5hdmlnYXRpb25FbmQkXG4gICAgICAucGlwZShza2lwVW50aWwocG9wc3RhdGVOYXZpZ2F0aW9uU3RhcnQkKSwgdGFrZVVudGlsKG1vZGFsLm9uV2lsbERpc21pc3MoKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgbW9kYWwuZGlzbWlzcygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { ModalCompactWrapperComponent, ModalWrapperComponent, } from '../../modal-wrapper';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ionic/angular/standalone\";\nimport * as i2 from \"./modal-animation-builder.service\";\nimport * as i3 from \"../../modal-navigation.service\";\nimport * as i4 from \"@kirbydesign/designsystem/types\";\nimport * as i5 from \"./can-dismiss.helper\";\nexport class ModalHelper {\n constructor(ionicModalController, modalAnimationBuilder, modalNavigationService, windowRef, canDismissHelper) {\n this.ionicModalController = ionicModalController;\n this.modalAnimationBuilder = modalAnimationBuilder;\n this.modalNavigationService = modalNavigationService;\n this.windowRef = windowRef;\n this.canDismissHelper = canDismissHelper;\n /*\n isModalOpening is used to prevent additional instantiations\n of modals, while a modal is already being instatiated, but not completed.\n This is the recommended approach by one of the maintainers of Ionic:\n https://github.com/ionic-team/ionic-framework/issues/23327#issuecomment-847028058\n */\n this.isModalOpening = false;\n }\n async showModalWindow(config) {\n if (this.isModalOpening)\n return;\n config.flavor = config.flavor || 'modal';\n let currentBackdrop;\n const topMostModal = await this.ionicModalController.getTop();\n if (topMostModal) {\n currentBackdrop =\n topMostModal.shadowRoot.querySelector('ion-backdrop');\n }\n const enterAnimation = this.modalAnimationBuilder.enterAnimation(currentBackdrop);\n const leaveAnimation = this.modalAnimationBuilder.leaveAnimation(currentBackdrop);\n const defaultModalSize = config.interactWithBackground ? null : 'medium';\n const modalSize = config.size || defaultModalSize;\n const allow_scroll_class = 'allow-background-scroll';\n let customCssClasses = [];\n if (config.cssClass) {\n customCssClasses = Array.isArray(config.cssClass) ? config.cssClass : [config.cssClass];\n }\n if (config.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.add(allow_scroll_class);\n }\n let canDismiss = true;\n if (config.canDismiss) {\n canDismiss = this.canDismissHelper.getCanDismissCallback(config.canDismiss);\n }\n this.isModalOpening = true;\n const ionModal = await this.ionicModalController.create({\n component: config.flavor === 'compact' ? ModalCompactWrapperComponent : ModalWrapperComponent,\n cssClass: [\n 'kirby-overlay',\n 'kirby-modal',\n modalSize ? `kirby-modal-${modalSize}` : null,\n config.flavor === 'drawer' ? 'kirby-drawer' : null,\n config.flavor === 'compact' ? 'kirby-modal-compact' : null,\n config.interactWithBackground ? 'interact-with-background' : null,\n ...customCssClasses,\n ],\n backdropDismiss: config.flavor === 'compact' || config.interactWithBackground ? false : true,\n showBackdrop: !config.interactWithBackground,\n componentProps: { config: config },\n htmlAttributes: { ...config.htmlAttributes },\n keyboardClose: false,\n canDismiss,\n enterAnimation,\n leaveAnimation,\n });\n if (config.interactWithBackground) {\n ionModal.onDidDismiss().then(() => {\n this.windowRef.nativeWindow.document.body.classList.remove(allow_scroll_class);\n });\n }\n if (config.customHeight) {\n ionModal.style.setProperty('--kirby-modal-height', config.customHeight);\n }\n const onWillDismiss = ionModal.onWillDismiss();\n const overlay = {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss,\n onDidDismiss: ionModal.onDidDismiss(),\n isDismissing: false,\n };\n onWillDismiss.then(() => {\n overlay.isDismissing = true;\n });\n await ionModal.present();\n /**\n * Due to somewhat unexpected behavior of the ion-modal not being focused when keyboardClose\n * is set to false we manually focus it, but only if focus is not already inside the modal\n * See here: https://github.com/ionic-team/ionic-framework/issues/28775#issuecomment-1875475739\n */\n const focusedElementWithinModal = ionModal.contains(document.activeElement);\n if (!focusedElementWithinModal) {\n ionModal.focus();\n }\n // Back button should only be handled manually\n // if the modal is not instantiated through a route.\n if (!config.modalRoute) {\n this.modalNavigationService.handleBrowserBackButton(ionModal);\n }\n this.isModalOpening = false;\n return overlay;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalHelper, deps: [{ token: i1.ModalController }, { token: i2.ModalAnimationBuilderService }, { token: i3.ModalNavigationService }, { token: i4.WindowRef }, { token: i5.CanDismissHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalController }, { type: i2.ModalAnimationBuilderService }, { type: i3.ModalNavigationService }, { type: i4.WindowRef }, { type: i5.CanDismissHelper }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL3NlcnZpY2VzL21vZGFsLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFDTCw0QkFBNEIsRUFHNUIscUJBQXFCLEdBQ3RCLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNN0IsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDVSxvQkFBcUMsRUFDckMscUJBQW1ELEVBQ25ELHNCQUE4QyxFQUM5QyxTQUFvQixFQUNwQixnQkFBa0M7UUFKbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFpQjtRQUNyQywwQkFBcUIsR0FBckIscUJBQXFCLENBQThCO1FBQ25ELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRzVDOzs7OztVQUtFO1FBQ00sbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFSNUIsQ0FBQztJQVVHLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBbUI7UUFDOUMsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztRQUV6QyxJQUFJLGVBQXVDLENBQUM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixlQUFlO2dCQUNiLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUF5QixjQUFjLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNB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ZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdHlwZXMnO1xuXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vLi4vbW9kYWwuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1vZGFsQ29tcGFjdFdyYXBwZXJDb21wb25lbnQsXG4gIE1vZGFsQ29uZmlnLFxuICBNb2RhbFNpemUsXG4gIE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vbW9kYWwtd3JhcHBlcic7XG5cbmltcG9ydCB7IE1vZGFsQW5pbWF0aW9uQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWFuaW1hdGlvbi1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FuRGlzbWlzc0hlbHBlciB9IGZyb20gJy4vY2FuLWRpc21pc3MuaGVscGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsSGVscGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpb25pY01vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyLFxuICAgIHByaXZhdGUgbW9kYWxBbmltYXRpb25CdWlsZGVyOiBNb2RhbEFuaW1hdGlvbkJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxOYXZpZ2F0aW9uU2VydmljZTogTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgY2FuRGlzbWlzc0hlbHBlcjogQ2FuRGlzbWlzc0hlbHBlclxuICApIHt9XG5cbiAgLyogXG4gICAgaXNNb2RhbE9wZW5pbmcgaXMgdXNlZCB0byBwcmV2ZW50IGFkZGl0aW9uYWwgaW5zdGFudGlhdGlvbnNcbiAgICBvZiBtb2RhbHMsIHdoaWxlIGEgbW9kYWwgaXMgYWxyZWFkeSBiZWluZyBpbnN0YXRpYXRlZCwgYnV0IG5vdCBjb21wbGV0ZWQuXG4gICAgVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggYnkgb25lIG9mIHRoZSBtYWludGFpbmVycyBvZiBJb25pYzpcbiAgICBodHRwczovL2dpdGh1Yi5jb20vaW9uaWMtdGVhbS9pb25pYy1mcmFtZXdvcmsvaXNzdWVzLzIzMzI3I2lzc3VlY29tbWVudC04NDcwMjgwNThcbiAgKi9cbiAgcHJpdmF0ZSBpc01vZGFsT3BlbmluZyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBhc3luYyBzaG93TW9kYWxXaW5kb3coY29uZmlnOiBNb2RhbENvbmZpZyk6IFByb21pc2U8T3ZlcmxheT4ge1xuICAgIGlmICh0aGlzLmlzTW9kYWxPcGVuaW5nKSByZXR1cm47XG5cbiAgICBjb25maWcuZmxhdm9yID0gY29uZmlnLmZsYXZvciB8fCAnbW9kYWwnO1xuXG4gICAgbGV0IGN1cnJlbnRCYWNrZHJvcDogSFRNTElvbkJhY2tkcm9wRWxlbWVudDtcbiAgICBjb25zdCB0b3BNb3N0TW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgIGlmICh0b3BNb3N0TW9kYWwpIHtcbiAgICAgIGN1cnJlbnRCYWNrZHJvcCA9XG4gICAgICAgIHRvcE1vc3RNb2RhbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3I8SFRNTElvbkJhY2tkcm9wRWxlbWVudD4oJ2lvbi1iYWNrZHJvcCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGVyQW5pbWF0aW9uID0gdGhpcy5tb2RhbEFuaW1hdGlvbkJ1aWxkZXIuZW50ZXJBbmltYXRpb24oY3VycmVudEJhY2tkcm9wKTtcbiAgICBjb25zdCBsZWF2ZUFuaW1hdGlvbiA9IHRoaXMubW9kYWxBbmltYXRpb25CdWlsZGVyLmxlYXZlQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcCk7XG5cbiAgICBjb25zdCBkZWZhdWx0TW9kYWxTaXplOiBNb2RhbFNpemUgPSBjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCA/IG51bGwgOiAnbWVkaXVtJztcbiAgICBjb25zdCBtb2RhbFNpemUgPSBjb25maWcuc2l6ZSB8fCBkZWZhdWx0TW9kYWxTaXplO1xuXG4gICAgY29uc3QgYWxsb3dfc2Nyb2xsX2NsYXNzID0gJ2FsbG93LWJhY2tncm91bmQtc2Nyb2xsJztcblxuICAgIGxldCBjdXN0b21Dc3NDbGFzc2VzID0gW107XG4gICAgaWYgKGNvbmZpZy5jc3NDbGFzcykge1xuICAgICAgY3VzdG9tQ3NzQ2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoY29uZmlnLmNzc0NsYXNzKSA/IGNvbmZpZy5jc3NDbGFzcyA6IFtjb25maWcuY3NzQ2xhc3NdO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCkge1xuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChhbGxvd19zY3JvbGxfY2xhc3MpO1xuICAgIH1cblxuICAgIGxldCBjYW5EaXNtaXNzOiBib29sZWFuIHwgKCgpID0+IFByb21pc2U8Ym9vbGVhbj4pID0gdHJ1ZTtcblxuICAgIGlmIChjb25maWcuY2FuRGlzbWlzcykge1xuICAgICAgY2FuRGlzbWlzcyA9IHRoaXMuY2FuRGlzbWlzc0hlbHBlci5nZXRDYW5EaXNtaXNzQ2FsbGJhY2soY29uZmlnLmNhbkRpc21pc3MpO1xuICAgIH1cblxuICAgIHRoaXMuaXNNb2RhbE9wZW5pbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgaW9uTW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IGNvbmZpZy5mbGF2b3IgPT09ICdjb21wYWN0JyA/IE1vZGFsQ29tcGFjdFdyYXBwZXJDb21wb25lbnQgOiBNb2RhbFdyYXBwZXJDb21wb25lbnQsXG4gICAgICBjc3NDbGFzczogW1xuICAgICAgICAna2lyYnktb3ZlcmxheScsXG4gICAgICAgICdraXJieS1tb2RhbCcsXG4gICAgICAgIG1vZGFsU2l6ZSA/IGBraXJieS1tb2RhbC0ke21vZGFsU2l6ZX1gIDogbnVsbCxcbiAgICAgICAgY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicgPyAna2lyYnktZHJhd2VyJyA6IG51bGwsXG4gICAgICAgIGNvbmZpZy5mbGF2b3IgPT09ICdjb21wYWN0JyA/ICdraXJieS1tb2RhbC1jb21wYWN0JyA6IG51bGwsXG4gICAgICAgIGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kID8gJ2ludGVyYWN0LXdpdGgtYmFja2dyb3VuZCcgOiBudWxsLFxuICAgICAgICAuLi5jdXN0b21Dc3NDbGFzc2VzLFxuICAgICAgXSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogY29uZmlnLmZsYXZvciA9PT0gJ2NvbXBhY3QnIHx8IGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kID8gZmFsc2UgOiB0cnVlLFxuICAgICAgc2hvd0JhY2tkcm9wOiAhY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmQsXG4gICAgICBjb21wb25lbnRQcm9wczogeyBjb25maWc6IGNvbmZpZyB9LFxuICAgICAgaHRtbEF0dHJpYnV0ZXM6IHsgLi4uY29uZmlnLmh0bWxBdHRyaWJ1dGVzIH0sXG4gICAgICBrZXlib2FyZENsb3NlOiBmYWxzZSxcbiAgICAgIGNhbkRpc21pc3MsXG4gICAgICBlbnRlckFuaW1hdGlvbixcbiAgICAgIGxlYXZlQW5pbWF0aW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBpb25Nb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShhbGxvd19zY3JvbGxfY2xhc3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jdXN0b21IZWlnaHQpIHtcbiAgICAgIGlvbk1vZGFsLnN0eWxlLnNldFByb3BlcnR5KCctLWtpcmJ5LW1vZGFsLWhlaWdodCcsIGNvbmZpZy5jdXN0b21IZWlnaHQpO1xuICAgIH1cblxuICAgIGNvbnN0IG9uV2lsbERpc21pc3MgPSBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCk7XG5cbiAgICBjb25zdCBvdmVybGF5OiBPdmVybGF5ID0ge1xuICAgICAgZGlzbWlzczogaW9uTW9kYWwuZGlzbWlzcy5iaW5kKGlvbk1vZGFsKSxcbiAgICAgIG9uV2lsbERpc21pc3MsXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgICAgaXNEaXNtaXNzaW5nOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgb25XaWxsRGlzbWlzcy50aGVuKCgpID0+IHtcbiAgICAgIG92ZXJsYXkuaXNEaXNtaXNzaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGlvbk1vZGFsLnByZXNlbnQoKTtcblxuICAgIC8qKlxuICAgICAqIER1ZSB0byBzb21ld2hhdCB1bmV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBpb24tbW9kYWwgbm90IGJlaW5nIGZvY3VzZWQgd2hlbiBrZXlib2FyZENsb3NlXG4gICAgICogaXMgc2V0IHRvIGZhbHNlIHdlIG1hbnVhbGx5IGZvY3VzIGl0LCBidXQgb25seSBpZiBmb2N1cyBpcyBub3QgYWxyZWFkeSBpbnNpZGUgdGhlIG1vZGFsXG4gICAgICogU2VlIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pb25pYy10ZWFtL2lvbmljLWZyYW1ld29yay9pc3N1ZXMvMjg3NzUjaXNzdWVjb21tZW50LTE4NzU0NzU3MzlcbiAgICAgKi9cbiAgICBjb25zdCBmb2N1c2VkRWxlbWVudFdpdGhpbk1vZGFsID0gaW9uTW9kYWwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gICAgaWYgKCFmb2N1c2VkRWxlbWVudFdpdGhpbk1vZGFsKSB7XG4gICAgICBpb25Nb2RhbC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8vIEJhY2sgYnV0dG9uIHNob3VsZCBvbmx5IGJlIGhhbmRsZWQgbWFudWFsbHlcbiAgICAvLyBpZiB0aGUgbW9kYWwgaXMgbm90IGluc3RhbnRpYXRlZCB0aHJvdWdoIGEgcm91dGUuXG4gICAgaWYgKCFjb25maWcubW9kYWxSb3V0ZSkge1xuICAgICAgdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmhhbmRsZUJyb3dzZXJCYWNrQnV0dG9uKGlvbk1vZGFsKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzTW9kYWxPcGVuaW5nID0gZmFsc2U7XG5cbiAgICByZXR1cm4gb3ZlcmxheTtcbiAgfVxufVxuIl19","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { CardModule } from '@kirbydesign/designsystem/card';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/card\";\nconst KIRBY_ACTION_SHEET_DEPRECATION_WARNING = '[Kirby action sheet] Deprecated - Use Menu component instead';\nexport class ActionSheetComponent {\n constructor() {\n this.cancelButtonText = 'Cancel';\n this.hideCancel = false;\n this.disabled = false;\n this.cancel = new EventEmitter();\n this.itemSelect = new EventEmitter();\n console.warn(KIRBY_ACTION_SHEET_DEPRECATION_WARNING);\n }\n onItemSelect(selection) {\n this.itemSelect.emit(selection);\n }\n onCancel() {\n this.cancel.emit();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ActionSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.1\", type: ActionSheetComponent, isStandalone: true, selector: \"kirby-action-sheet\", inputs: { cancelButtonText: \"cancelButtonText\", hideCancel: \"hideCancel\", disabled: \"disabled\", header: \"header\", subheader: \"subheader\", items: \"items\" }, outputs: { cancel: \"cancel\", itemSelect: \"itemSelect\" }, ngImport: i0, template: \"<kirby-card>\\n @if (header) {\\n <kirby-card-header\\n [title]=\\\"header\\\"\\n [isTitleBold]=\\\"true\\\"\\n [subtitle]=\\\"subheader\\\"\\n ></kirby-card-header>\\n }\\n @for (item of items; track item.id) {\\n <button\\n kirby-button\\n expand=\\\"block\\\"\\n size=\\\"lg\\\"\\n [noDecoration]=\\\"true\\\"\\n (click)=\\\"onItemSelect(item)\\\"\\n >\\n {{ item.text }}\\n </button>\\n }\\n</kirby-card>\\n@if (!hideCancel) {\\n <button kirby-button class=\\\"cancel-btn\\\" size=\\\"lg\\\" attentionLevel=\\\"3\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelButtonText }}\\n </button>\\n}\\n\", styles: [\":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CardModule }, { kind: \"component\", type: i1.CardComponent, selector: \"kirby-card\", inputs: [\"title\", \"subtitle\", \"backgroundImageUrl\", \"hasPadding\", \"sizes\", \"variant\"] }, { kind: \"component\", type: i1.CardHeaderComponent, selector: \"kirby-card-header\", inputs: [\"title\", \"subtitle\", \"isTitleBold\", \"flagged\", \"hasPadding\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[kirby-button],Button[kirby-button],a[kirby-button]\", inputs: [\"attentionLevel\", \"noDecoration\", \"themeColor\", \"expand\", \"isFloating\", \"size\", \"showIconOnly\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ActionSheetComponent, decorators: [{\n type: Component,\n args: [{ imports: [CardModule, ButtonComponent], selector: 'kirby-action-sheet', template: \"<kirby-card>\\n @if (header) {\\n <kirby-card-header\\n [title]=\\\"header\\\"\\n [isTitleBold]=\\\"true\\\"\\n [subtitle]=\\\"subheader\\\"\\n ></kirby-card-header>\\n }\\n @for (item of items; track item.id) {\\n <button\\n kirby-button\\n expand=\\\"block\\\"\\n size=\\\"lg\\\"\\n [noDecoration]=\\\"true\\\"\\n (click)=\\\"onItemSelect(item)\\\"\\n >\\n {{ item.text }}\\n </button>\\n }\\n</kirby-card>\\n@if (!hideCancel) {\\n <button kirby-button class=\\\"cancel-btn\\\" size=\\\"lg\\\" attentionLevel=\\\"3\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelButtonText }}\\n </button>\\n}\\n\", styles: [\":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { cancelButtonText: [{\n type: Input\n }], hideCancel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], header: [{\n type: Input\n }], subheader: [{\n type: Input\n }], items: [{\n type: Input\n }], cancel: [{\n type: Output\n }], itemSelect: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXNoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9hY3Rpb24tc2hlZXQvYWN0aW9uLXNoZWV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9hY3Rpb24tc2hlZXQvYWN0aW9uLXNoZWV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBSTVELE1BQU0sc0NBQXNDLEdBQzFDLDhEQUE4RCxDQUFDO0FBUWpFLE1BQU0sT0FBTyxvQkFBb0I7SUFVL0I7UUFUUyxxQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBSXpCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBa0MsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFHeEYsT0FBTyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUFZLENBQUMsU0FBMEI7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7aUlBcEJVLG9CQUFvQjtxSEFBcEIsb0JBQW9CLG1TQ2ZqQyxvbEJBeUJBLHNrRERmWSxVQUFVLHdWQUFFLGVBQWU7OzJGQUsxQixvQkFBb0I7a0JBTmhDLFNBQVM7OEJBQ0MsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLFlBQzVCLG9CQUFvQjt3REFLckIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9idXR0b24nO1xuaW1wb3J0IHsgQ2FyZE1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vY2FyZCc7XG5cbmltcG9ydCB7IEFjdGlvblNoZWV0SXRlbSB9IGZyb20gJy4vY29uZmlnL2FjdGlvbi1zaGVldC1pdGVtJztcblxuY29uc3QgS0lSQllfQUNUSU9OX1NIRUVUX0RFUFJFQ0FUSU9OX1dBUk5JTkcgPVxuICAnW0tpcmJ5IGFjdGlvbiBzaGVldF0gRGVwcmVjYXRlZCAtIFVzZSBNZW51IGNvbXBvbmVudCBpbnN0ZWFkJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtDYXJkTW9kdWxlLCBCdXR0b25Db21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LWFjdGlvbi1zaGVldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tc2hlZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tc2hlZXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uU2hlZXRDb21wb25lbnQge1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25UZXh0ID0gJ0NhbmNlbCc7XG4gIEBJbnB1dCgpIGhpZGVDYW5jZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1YmhlYWRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpdGVtczogQXJyYXk8QWN0aW9uU2hlZXRJdGVtPjtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3Q6IEV2ZW50RW1pdHRlcjxBY3Rpb25TaGVldEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25TaGVldEl0ZW0+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc29sZS53YXJuKEtJUkJZX0FDVElPTl9TSEVFVF9ERVBSRUNBVElPTl9XQVJOSU5HKTtcbiAgfVxuXG4gIG9uSXRlbVNlbGVjdChzZWxlY3Rpb246IEFjdGlvblNoZWV0SXRlbSkge1xuICAgIHRoaXMuaXRlbVNlbGVjdC5lbWl0KHNlbGVjdGlvbik7XG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxraXJieS1jYXJkPlxuICBAaWYgKGhlYWRlcikge1xuICAgIDxraXJieS1jYXJkLWhlYWRlclxuICAgICAgW3RpdGxlXT1cImhlYWRlclwiXG4gICAgICBbaXNUaXRsZUJvbGRdPVwidHJ1ZVwiXG4gICAgICBbc3VidGl0bGVdPVwic3ViaGVhZGVyXCJcbiAgICA+PC9raXJieS1jYXJkLWhlYWRlcj5cbiAgfVxuICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgPGJ1dHRvblxuICAgICAga2lyYnktYnV0dG9uXG4gICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICBzaXplPVwibGdcIlxuICAgICAgW25vRGVjb3JhdGlvbl09XCJ0cnVlXCJcbiAgICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoaXRlbSlcIlxuICAgID5cbiAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgIDwvYnV0dG9uPlxuICB9XG48L2tpcmJ5LWNhcmQ+XG5AaWYgKCFoaWRlQ2FuY2VsKSB7XG4gIDxidXR0b24ga2lyYnktYnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ0blwiIHNpemU9XCJsZ1wiIGF0dGVudGlvbkxldmVsPVwiM1wiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+XG4gICAge3sgY2FuY2VsQnV0dG9uVGV4dCB9fVxuICA8L2J1dHRvbj5cbn1cbiJdfQ==","import { EventEmitter, Injectable } from '@angular/core';\nimport { ActionSheetComponent } from '../action-sheet/action-sheet.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ionic/angular/standalone\";\nexport class ActionSheetHelper {\n constructor(ionicModalController) {\n this.ionicModalController = ionicModalController;\n }\n async showActionSheet(config) {\n const cancel = new EventEmitter();\n const itemSelect = new EventEmitter();\n const ionModal = await this.ionicModalController.create({\n component: ActionSheetComponent,\n cssClass: ['kirby-overlay', 'kirby-action-sheet'],\n componentProps: {\n ...config,\n cancel: cancel,\n itemSelect: itemSelect,\n },\n backdropDismiss: true,\n });\n // Remove 'modal-shadow' element as we are no longer able to hide it with CSS in Ionic 6.\n // We need to remove it so it does not obstruct the backdrop-click to dismiss functionality.\n ionModal.shadowRoot.querySelector('.modal-shadow').remove();\n const cancelSubscription = cancel.subscribe(() => ionModal.dismiss());\n const itemSelectSubscription = itemSelect.subscribe((item) => ionModal.dismiss(item));\n const onDidDismiss = ionModal.onDidDismiss();\n onDidDismiss.then(() => {\n cancelSubscription.unsubscribe();\n itemSelectSubscription.unsubscribe();\n });\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ActionSheetHelper, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ActionSheetHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ActionSheetHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalController }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXNoZWV0LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9hY3Rpb24tc2hlZXQuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFLOUUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFvQixvQkFBcUM7UUFBckMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFpQjtJQUFHLENBQUM7SUFFdEQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUF5QjtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRXZELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUN0RCxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFFBQVEsRUFBRSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztZQUNqRCxjQUFjLEVBQUU7Z0JBQ2QsR0FBRyxNQUFNO2dCQUNULE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCO1lBQ0QsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBRUgseUZBQXlGO1FBQ3pGLDRGQUE0RjtRQUM1RixRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUU1RCxNQUFNLGtCQUFrQixHQUFpQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sc0JBQXNCLEdBQWlCLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN6RSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUN2QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JCLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsT0FBTztZQUNMLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDdkMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUU7U0FDdEMsQ0FBQztJQUNKLENBQUM7aUlBdENVLGlCQUFpQjtxSUFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uL21vZGFsLmludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBBY3Rpb25TaGVldENvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1zaGVldC9hY3Rpb24tc2hlZXQuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvblNoZWV0Q29uZmlnIH0gZnJvbSAnLi4vYWN0aW9uLXNoZWV0L2NvbmZpZy9hY3Rpb24tc2hlZXQtY29uZmlnJztcbmltcG9ydCB7IEFjdGlvblNoZWV0SXRlbSB9IGZyb20gJy4uL2FjdGlvbi1zaGVldC9jb25maWcvYWN0aW9uLXNoZWV0LWl0ZW0nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aW9uU2hlZXRIZWxwZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlvbmljTW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIpIHt9XG5cbiAgcHVibGljIGFzeW5jIHNob3dBY3Rpb25TaGVldChjb25maWc6IEFjdGlvblNoZWV0Q29uZmlnKTogUHJvbWlzZTxPdmVybGF5PiB7XG4gICAgY29uc3QgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIGNvbnN0IGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvblNoZWV0SXRlbT4oKTtcblxuICAgIGNvbnN0IGlvbk1vZGFsID0gYXdhaXQgdGhpcy5pb25pY01vZGFsQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBBY3Rpb25TaGVldENvbXBvbmVudCxcbiAgICAgIGNzc0NsYXNzOiBbJ2tpcmJ5LW92ZXJsYXknLCAna2lyYnktYWN0aW9uLXNoZWV0J10sXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIGNhbmNlbDogY2FuY2VsLFxuICAgICAgICBpdGVtU2VsZWN0OiBpdGVtU2VsZWN0LFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIFJlbW92ZSAnbW9kYWwtc2hhZG93JyBlbGVtZW50IGFzIHdlIGFyZSBubyBsb25nZXIgYWJsZSB0byBoaWRlIGl0IHdpdGggQ1NTIGluIElvbmljIDYuXG4gICAgLy8gV2UgbmVlZCB0byByZW1vdmUgaXQgc28gaXQgZG9lcyBub3Qgb2JzdHJ1Y3QgdGhlIGJhY2tkcm9wLWNsaWNrIHRvIGRpc21pc3MgZnVuY3Rpb25hbGl0eS5cbiAgICBpb25Nb2RhbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1zaGFkb3cnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IGNhbmNlbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gY2FuY2VsLnN1YnNjcmliZSgoKSA9PiBpb25Nb2RhbC5kaXNtaXNzKCkpO1xuICAgIGNvbnN0IGl0ZW1TZWxlY3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IGl0ZW1TZWxlY3Quc3Vic2NyaWJlKChpdGVtKSA9PlxuICAgICAgaW9uTW9kYWwuZGlzbWlzcyhpdGVtKVxuICAgICk7XG4gICAgY29uc3Qgb25EaWREaXNtaXNzID0gaW9uTW9kYWwub25EaWREaXNtaXNzKCk7XG4gICAgb25EaWREaXNtaXNzLnRoZW4oKCkgPT4ge1xuICAgICAgY2FuY2VsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICBpdGVtU2VsZWN0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBpb25Nb2RhbC5wcmVzZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc21pc3M6IGlvbk1vZGFsLmRpc21pc3MuYmluZChpb25Nb2RhbCksXG4gICAgICBvbldpbGxEaXNtaXNzOiBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCksXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./modal.helper\";\nimport * as i2 from \"./action-sheet.helper\";\nimport * as i3 from \"./alert.helper\";\nimport * as i4 from \"../../modal-navigation.service\";\nexport class ModalController {\n constructor(modalHelper, actionSheetHelper, alertHelper, modalNavigationService, routeConfig) {\n this.modalHelper = modalHelper;\n this.actionSheetHelper = actionSheetHelper;\n this.alertHelper = alertHelper;\n this.modalNavigationService = modalNavigationService;\n this.routeConfig = routeConfig;\n this.overlays = [];\n this.noOverlayRegisteredErrorMessage = 'No modal overlays are currently registered';\n this.destroy$ = new Subject();\n }\n async initialize(moduleRootRoutePath) {\n const modalNavigation = await this.modalNavigationService.getModalNavigation(this.routeConfig, moduleRootRoutePath);\n this.onModalRouteActivated(modalNavigation.activated$);\n this.onModalRouteDeactivated(modalNavigation.deactivated$);\n }\n onModalRouteActivated(modalRouteActivated$) {\n const navigateOnWillClose = () => {\n this.modalNavigationService.navigateOutOfModalOutlet();\n };\n const siblingModalRouteActivated$ = modalRouteActivated$.pipe(filter((modalRouteActivation) => !modalRouteActivation.isNewModal), map((modalRouteActivation) => modalRouteActivation.route));\n modalRouteActivated$\n .pipe(takeUntil(this.destroy$), filter(() => this.overlays.length === 0))\n .subscribe(async (modalRouteActivation) => {\n if (modalRouteActivation.isNewModal) {\n await this.showModalRoute(modalRouteActivation.route, siblingModalRouteActivated$, navigateOnWillClose);\n }\n });\n }\n onModalRouteDeactivated(modalRouteDeactivated$) {\n modalRouteDeactivated$\n .pipe(takeUntil(this.destroy$), filter(() => this.overlays.some((overlay) => overlay.isDismissing !== true)))\n .subscribe(async () => {\n await this.hideAll();\n });\n }\n async showModal(config, onClose) {\n await this.showAndRegisterOverlay(() => this.modalHelper.showModalWindow(config), onClose);\n }\n async navigateToModal(path, queryParams) {\n return this.modalNavigationService.navigateToModal(path, queryParams);\n }\n async navigateWithinModal(relativePath, queryParams) {\n return this.modalNavigationService.navigateWithinModal(relativePath, queryParams);\n }\n async showModalRoute(modalRoute, siblingModalRouteActivated$, onWillClose) {\n const config = {\n ...modalRoute.snapshot.data.modalConfig,\n component: null,\n modalRoute: modalRoute,\n siblingModalRouteActivated$: siblingModalRouteActivated$,\n };\n await this.showAndRegisterOverlay(() => this.modalHelper.showModalWindow(config), null, onWillClose);\n }\n async showActionSheet(config, onClose) {\n await this.showAndRegisterOverlay(() => this.actionSheetHelper.showActionSheet(config), onClose);\n }\n async showAlert(config, onClose) {\n await this.showAndRegisterOverlay(() => this.alertHelper.showAlert(config), onClose);\n }\n async showAndRegisterOverlay(showOverlay, onCloseOverlay, onWillCloseOverlay) {\n const overlay = await showOverlay();\n if (!overlay)\n return;\n this.overlays.push(overlay);\n if (typeof onWillCloseOverlay === 'function') {\n overlay.onWillDismiss.then((event) => onWillCloseOverlay(event.data));\n }\n overlay.onDidDismiss.then((event) => {\n this.overlays.pop();\n if (typeof onCloseOverlay === 'function') {\n onCloseOverlay(event.data);\n }\n });\n }\n async hideTopmost(data) {\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n return overlay.dismiss(data);\n }\n async hideAll() {\n await Promise.all(this.overlays\n .filter((overlay) => overlay.isDismissing !== true)\n .map(async (overlay) => {\n await overlay.dismiss();\n }));\n }\n getTopMost() {\n return this.overlays[this.overlays.length - 1];\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalController, deps: [{ token: i1.ModalHelper }, { token: i2.ActionSheetHelper }, { token: i3.AlertHelper }, { token: i4.ModalNavigationService }, { token: ROUTES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalController }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalController, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalHelper }, { type: i2.ActionSheetHelper }, { type: i3.AlertHelper }, { type: i4.ModalNavigationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ROUTES]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWF4RCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNVLFdBQXdCLEVBQ3hCLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixzQkFBOEMsRUFDbEIsV0FBcUI7UUFKakQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO1FBVG5ELGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDaEIsb0NBQStCLEdBQUcsNENBQTRDLENBQUM7UUFDeEYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRcEMsQ0FBQztJQUVKLEtBQUssQ0FBQyxVQUFVLENBQUMsbUJBQTRCO1FBQzNDLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUMxRSxJQUFJLENBQUMsV0FBVyxFQUNoQixtQkFBbUIsQ0FDcEIsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsSUFBSSxD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QUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMsUUFBUTthQUNWLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUM7YUFDbEQsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNyQixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztpSUF0SlUsZUFBZSwrSUFVSixNQUFNO3FJQVZqQixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFXTixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlcywgUk9VVEVTIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1vZGFsUm91dGVBY3RpdmF0aW9uLCBPdmVybGF5IH0gZnJvbSAnLi4vLi4vbW9kYWwuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBY3Rpb25TaGVldENvbmZpZyB9IGZyb20gJy4uL2FjdGlvbi1zaGVldC9jb25maWcvYWN0aW9uLXNoZWV0LWNvbmZpZyc7XG5pbXBvcnQgeyBBbGVydENvbmZpZyB9IGZyb20gJy4uL2FsZXJ0L2NvbmZpZy9hbGVydC1jb25maWcnO1xuXG5pbXBvcnQgeyBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kYWwtd3JhcHBlcic7XG5pbXBvcnQgeyBBY3Rpb25TaGVldEhlbHBlciB9IGZyb20gJy4vYWN0aW9uLXNoZWV0LmhlbHBlcic7XG5pbXBvcnQgeyBBbGVydEhlbHBlciB9IGZyb20gJy4vYWxlcnQuaGVscGVyJztcbmltcG9ydCB7IE1vZGFsSGVscGVyIH0gZnJvbSAnLi9tb2RhbC5oZWxwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9kYWxDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBvdmVybGF5czogT3ZlcmxheVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9PdmVybGF5UmVnaXN0ZXJlZEVycm9yTWVzc2FnZSA9ICdObyBtb2RhbCBvdmVybGF5cyBhcmUgY3VycmVudGx5IHJlZ2lzdGVyZWQnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsSGVscGVyOiBNb2RhbEhlbHBlcixcbiAgICBwcml2YXRlIGFjdGlvblNoZWV0SGVscGVyOiBBY3Rpb25TaGVldEhlbHBlcixcbiAgICBwcml2YXRlIGFsZXJ0SGVscGVyOiBBbGVydEhlbHBlcixcbiAgICBwcml2YXRlIG1vZGFsTmF2aWdhdGlvblNlcnZpY2U6IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChST1VURVMpIHByaXZhdGUgcm91dGVDb25maWc6IFJvdXRlc1tdXG4gICkge31cblxuICBhc3luYyBpbml0aWFsaXplKG1vZHVsZVJvb3RSb3V0ZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtb2RhbE5hdmlnYXRpb24gPSBhd2FpdCB0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuZ2V0TW9kYWxOYXZpZ2F0aW9uKFxuICAgICAgdGhpcy5yb3V0ZUNvbmZpZyxcbiAgICAgIG1vZHVsZVJvb3RSb3V0ZVBhdGhcbiAgICApO1xuICAgIHRoaXMub25Nb2RhbFJvdXRlQWN0aXZhdGVkKG1vZGFsTmF2aWdhdGlvbi5hY3RpdmF0ZWQkKTtcbiAgICB0aGlzLm9uTW9kYWxSb3V0ZURlYWN0aXZhdGVkKG1vZGFsTmF2aWdhdGlvbi5kZWFjdGl2YXRlZCQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vZGFsUm91dGVBY3RpdmF0ZWQobW9kYWxSb3V0ZUFjdGl2YXRlZCQ6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+KSB7XG4gICAgY29uc3QgbmF2aWdhdGVPbldpbGxDbG9zZSA9ICgpID0+IHtcbiAgICAgIHRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5uYXZpZ2F0ZU91dE9mTW9kYWxPdXRsZXQoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkID0gbW9kYWxSb3V0ZUFjdGl2YXRlZCQucGlwZShcbiAgICAgIGZpbHRlcigobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+ICFtb2RhbFJvdXRlQWN0aXZhdGlvbi5pc05ld01vZGFsKSxcbiAgICAgIG1hcCgobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+IG1vZGFsUm91dGVBY3RpdmF0aW9uLnJvdXRlKVxuICAgICk7XG5cbiAgICBtb2RhbFJvdXRlQWN0aXZhdGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMub3ZlcmxheXMubGVuZ3RoID09PSAwKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG1vZGFsUm91dGVBY3RpdmF0aW9uLmlzTmV3TW9kYWwpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNob3dNb2RhbFJvdXRlKFxuICAgICAgICAgICAgbW9kYWxSb3V0ZUFjdGl2YXRpb24ucm91dGUsXG4gICAgICAgICAgICBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQsXG4gICAgICAgICAgICBuYXZpZ2F0ZU9uV2lsbENsb3NlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTW9kYWxSb3V0ZURlYWN0aXZhdGVkKG1vZGFsUm91dGVEZWFjdGl2YXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pIHtcbiAgICBtb2RhbFJvdXRlRGVhY3RpdmF0ZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5vdmVybGF5cy5zb21lKChvdmVybGF5KSA9PiBvdmVybGF5LmlzRGlzbWlzc2luZyAhPT0gdHJ1ZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oaWRlQWxsKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93TW9kYWwoY29uZmlnOiBNb2RhbENvbmZpZywgb25DbG9zZT86IChkYXRhPzogYW55KSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zaG93QW5kUmVnaXN0ZXJPdmVybGF5KCgpID0+IHRoaXMubW9kYWxIZWxwZXIuc2hvd01vZGFsV2luZG93KGNvbmZpZyksIG9uQ2xvc2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG5hdmlnYXRlVG9Nb2RhbChwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgcXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLm5hdmlnYXRlVG9Nb2RhbChwYXRoLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbmF2aWdhdGVXaXRoaW5Nb2RhbChyZWxhdGl2ZVBhdGg6IHN0cmluZywgcXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLm5hdmlnYXRlV2l0aGluTW9kYWwocmVsYXRpdmVQYXRoLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dNb2RhbFJvdXRlKFxuICAgIG1vZGFsUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZT4sXG4gICAgb25XaWxsQ2xvc2U6IChkYXRhPzogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZzogTW9kYWxDb25maWcgPSB7XG4gICAgICAuLi5tb2RhbFJvdXRlLnNuYXBzaG90LmRhdGEubW9kYWxDb25maWcsXG4gICAgICBjb21wb25lbnQ6IG51bGwsXG4gICAgICBtb2RhbFJvdXRlOiBtb2RhbFJvdXRlLFxuICAgICAgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkOiBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQsXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLnNob3dBbmRSZWdpc3Rlck92ZXJsYXkoXG4gICAgICAoKSA9PiB0aGlzLm1vZGFsSGVscGVyLnNob3dNb2RhbFdpbmRvdyhjb25maWcpLFxuICAgICAgbnVsbCxcbiAgICAgIG9uV2lsbENsb3NlXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWN0aW9uU2hlZXQoXG4gICAgY29uZmlnOiBBY3Rpb25TaGVldENvbmZpZyxcbiAgICBvbkNsb3NlPzogKGRhdGE/OiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zaG93QW5kUmVnaXN0ZXJPdmVybGF5KFxuICAgICAgKCkgPT4gdGhpcy5hY3Rpb25TaGVldEhlbHBlci5zaG93QWN0aW9uU2hlZXQoY29uZmlnKSxcbiAgICAgIG9uQ2xvc2VcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dBbGVydChjb25maWc6IEFsZXJ0Q29uZmlnLCBvbkNsb3NlPzogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheSgoKSA9PiB0aGlzLmFsZXJ0SGVscGVyLnNob3dBbGVydChjb25maWcpLCBvbkNsb3NlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheShcbiAgICBzaG93T3ZlcmxheTogKCkgPT4gUHJvbWlzZTxPdmVybGF5PixcbiAgICBvbkNsb3NlT3ZlcmxheT86IChkYXRhPzogYW55KSA9PiB2b2lkLFxuICAgIG9uV2lsbENsb3NlT3ZlcmxheT86IChkYXRhPzogYW55KSA9PiB2b2lkXG4gICkge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBhd2FpdCBzaG93T3ZlcmxheSgpO1xuICAgIGlmICghb3ZlcmxheSkgcmV0dXJuO1xuXG4gICAgdGhpcy5vdmVybGF5cy5wdXNoKG92ZXJsYXkpO1xuXG4gICAgaWYgKHR5cGVvZiBvbldpbGxDbG9zZU92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG92ZXJsYXkub25XaWxsRGlzbWlzcy50aGVuKChldmVudCkgPT4gb25XaWxsQ2xvc2VPdmVybGF5KGV2ZW50LmRhdGEpKTtcbiAgICB9XG5cbiAgICBvdmVybGF5Lm9uRGlkRGlzbWlzcy50aGVuKChldmVudCkgPT4ge1xuICAgICAgdGhpcy5vdmVybGF5cy5wb3AoKTtcbiAgICAgIGlmICh0eXBlb2Ygb25DbG9zZU92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25DbG9zZU92ZXJsYXkoZXZlbnQuZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGlkZVRvcG1vc3QoZGF0YT86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlzW3RoaXMub3ZlcmxheXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5ub092ZXJsYXlSZWdpc3RlcmVkRXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIG92ZXJsYXkuZGlzbWlzcyhkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoaWRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy5vdmVybGF5c1xuICAgICAgICAuZmlsdGVyKChvdmVybGF5KSA9PiBvdmVybGF5LmlzRGlzbWlzc2luZyAhPT0gdHJ1ZSlcbiAgICAgICAgLm1hcChhc3luYyAob3ZlcmxheSkgPT4ge1xuICAgICAgICAgIGF3YWl0IG92ZXJsYXkuZGlzbWlzcygpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9wTW9zdCgpOiBPdmVybGF5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheXNbdGhpcy5vdmVybGF5cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { ModalController as IonicModalController } from '@ionic/angular/standalone';\nimport { ModalNavigationService } from '../../modal-navigation.service';\nimport { ModalController } from './modal.controller';\nexport const CanDismissModalGuard = async (_component, _currentRoute, currentState, nextState) => {\n const modalNavService = inject(ModalNavigationService);\n const currentRouteIsModal = modalNavService.isModalRoute(currentState.url);\n const nextRouteIsModal = modalNavService.isModalRoute(nextState.url);\n const isNavigatingWithinModal = currentRouteIsModal && nextRouteIsModal;\n if (isNavigatingWithinModal) {\n return true;\n }\n const modalController = inject(ModalController);\n const topMostModal = modalController.getTopMost();\n if (topMostModal) {\n if (topMostModal.isDismissing) {\n return true;\n }\n return topMostModal.dismiss();\n }\n else {\n // Declarative modals are not created through Kirby Modalcontroller, let's try Ionic:\n const ionicModalController = inject(IonicModalController);\n const ionModal = await ionicModalController.getTop();\n if (ionModal) {\n return ionModal.dismiss();\n }\n }\n return true;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRpc21pc3MtbW9kYWwtZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwvc2VydmljZXMvY2FuLWRpc21pc3MtbW9kYWwtZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2QyxPQUFPLEVBQUUsZUFBZSxJQUFJLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUE2QixLQUFLLEVBQ2pFLFVBQWEsRUFDYixhQUFxQyxFQUNyQyxZQUFpQyxFQUNqQyxTQUE4QixFQUM5QixFQUFFO0lBQ0YsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdkQsTUFBTSxtQkFBbUIsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRSxNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXJFLE1BQU0sdUJBQXVCLEdBQUcsbUJBQW1CLElBQUksZ0JBQWdCLENBQUM7SUFDeEUsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixJQUFJLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO1NBQU0sQ0FBQztRQUNOLHFGQUFxRjtRQUNyRixNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkRlYWN0aXZhdGVGbiwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciBhcyBJb25pY01vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL21vZGFsLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICcuL21vZGFsLmNvbnRyb2xsZXInO1xuXG5leHBvcnQgY29uc3QgQ2FuRGlzbWlzc01vZGFsR3VhcmQ6IENhbkRlYWN0aXZhdGVGbjx1bmtub3duPiA9IGFzeW5jIDxUPihcbiAgX2NvbXBvbmVudDogVCxcbiAgX2N1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBuZXh0U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbikgPT4ge1xuICBjb25zdCBtb2RhbE5hdlNlcnZpY2UgPSBpbmplY3QoTW9kYWxOYXZpZ2F0aW9uU2VydmljZSk7XG4gIGNvbnN0IGN1cnJlbnRSb3V0ZUlzTW9kYWwgPSBtb2RhbE5hdlNlcnZpY2UuaXNNb2RhbFJvdXRlKGN1cnJlbnRTdGF0ZS51cmwpO1xuICBjb25zdCBuZXh0Um91dGVJc01vZGFsID0gbW9kYWxOYXZTZXJ2aWNlLmlzTW9kYWxSb3V0ZShuZXh0U3RhdGUudXJsKTtcblxuICBjb25zdCBpc05hdmlnYXRpbmdXaXRoaW5Nb2RhbCA9IGN1cnJlbnRSb3V0ZUlzTW9kYWwgJiYgbmV4dFJvdXRlSXNNb2RhbDtcbiAgaWYgKGlzTmF2aWdhdGluZ1dpdGhpbk1vZGFsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBtb2RhbENvbnRyb2xsZXIgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgY29uc3QgdG9wTW9zdE1vZGFsID0gbW9kYWxDb250cm9sbGVyLmdldFRvcE1vc3QoKTtcbiAgaWYgKHRvcE1vc3RNb2RhbCkge1xuICAgIGlmICh0b3BNb3N0TW9kYWwuaXNEaXNtaXNzaW5nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRvcE1vc3RNb2RhbC5kaXNtaXNzKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gRGVjbGFyYXRpdmUgbW9kYWxzIGFyZSBub3QgY3JlYXRlZCB0aHJvdWdoIEtpcmJ5IE1vZGFsY29udHJvbGxlciwgbGV0J3MgdHJ5IElvbmljOlxuICAgIGNvbnN0IGlvbmljTW9kYWxDb250cm9sbGVyID0gaW5qZWN0KElvbmljTW9kYWxDb250cm9sbGVyKTtcbiAgICBjb25zdCBpb25Nb2RhbCA9IGF3YWl0IGlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgIGlmIChpb25Nb2RhbCkge1xuICAgICAgcmV0dXJuIGlvbk1vZGFsLmRpc21pc3MoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';\nimport { IonContent, IonModal } from '@ionic/angular/standalone';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { inheritAriaLabelText } from '@kirbydesign/designsystem/shared';\nimport { ModalCompactWrapperComponent, ModalWrapperComponent, } from '../../modal-wrapper';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services\";\nimport * as i2 from \"../../modal-navigation.service\";\nimport * as i3 from \"@kirbydesign/designsystem/types\";\nimport * as i4 from \"@angular/common\";\nexport class ModalComponent {\n set canDismiss(canDismiss) {\n typeof canDismiss === 'boolean'\n ? (this._canDismiss = canDismiss)\n : (this._canDismiss = this.canDismissHelper.getCanDismissCallback(canDismiss));\n }\n constructor(canDismissHelper, modalNavigationService, windowRef, elementRef) {\n this.canDismissHelper = canDismissHelper;\n this.modalNavigationService = modalNavigationService;\n this.windowRef = windowRef;\n this.elementRef = elementRef;\n this.isOpen = false;\n this.size = 'medium';\n this.scrollDisabled = false;\n // NOTE: input properties forwarded to modal-wrapper ModalConfig\n this.collapseTitle = false;\n this.customHeight = undefined;\n this.flavor = 'modal';\n this.drawerSupplementaryAction = undefined;\n this.interactWithBackground = false;\n // end NOTE\n this.willPresent = new EventEmitter();\n this.didPresent = new EventEmitter();\n this.didDismiss = new EventEmitter();\n this.willDismiss = new EventEmitter();\n /**\n * We populate the ModalConfig with defaults here. This ensures that we can\n * guard for `if (key in this._config)` and only update the config when any of these\n * inputs change.\n */\n this._config = {\n collapseTitle: this.collapseTitle,\n customHeight: this.customHeight,\n flavor: this.flavor,\n drawerSupplementaryAction: this.drawerSupplementaryAction,\n interactWithBackground: this.interactWithBackground,\n };\n this._canDismiss = true;\n }\n ngOnInit() {\n this.forwardAriaLabel();\n }\n ngOnChanges(changes) {\n this.updateModalConfigOnChange(changes);\n }\n scrollToTop(scrollDuration) {\n this.ionContent.scrollToTop(scrollDuration);\n }\n scrollToBottom(scrollDuration) {\n this.ionContent.scrollToBottom(scrollDuration);\n }\n _onWillPresent(event) {\n this.willPresent.emit(event);\n if (this.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.add('allow-background-scroll');\n }\n }\n _onDidPresent(event) {\n this.modalNavigationService.handleBrowserBackButton(this.modalElement.nativeElement);\n this.didPresent.emit(event);\n }\n _onWillDismiss(event) {\n if (this.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.remove('allow-background-scroll');\n }\n this.willDismiss.emit(event);\n }\n _onDidDismiss(event) {\n this.didDismiss.emit(event);\n }\n updateModalConfigOnChange(changes) {\n Object.entries(changes).forEach(([key]) => {\n const isModalConfigProperty = key in this._config;\n if (isModalConfigProperty) {\n this._config[key] = changes[key].currentValue;\n }\n });\n }\n forwardAriaLabel() {\n // Instead of setting aria label on ion-modal in the template we forward it to modal-wrapper for consistency\n // and so we do not start listening for title changes in the modal-wrapper.\n this._config.htmlAttributes = {\n 'aria-label': inheritAriaLabelText(this.elementRef.nativeElement),\n };\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalComponent, deps: [{ token: i1.CanDismissHelper }, { token: i2.ModalNavigationService }, { token: i3.WindowRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.1\", type: ModalComponent, isStandalone: true, selector: \"kirby-modal\", inputs: { isOpen: \"isOpen\", trigger: \"trigger\", size: \"size\", scrollDisabled: \"scrollDisabled\", canDismiss: \"canDismiss\", collapseTitle: \"collapseTitle\", customHeight: \"customHeight\", flavor: \"flavor\", drawerSupplementaryAction: \"drawerSupplementaryAction\", interactWithBackground: \"interactWithBackground\" }, outputs: { willPresent: \"willPresent\", didPresent: \"didPresent\", didDismiss: \"didDismiss\", willDismiss: \"willDismiss\" }, queries: [{ propertyName: \"template\", first: true, predicate: TemplateRef, descendants: true, static: true }], viewQueries: [{ propertyName: \"modalElement\", first: true, predicate: IonModal, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionContent\", first: true, predicate: IonContent, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<ion-modal\\n class=\\\"kirby-modal kirby-overlay kirby-modal-{{ size }}\\\"\\n [ngClass]=\\\"[\\n flavor === 'compact' ? 'kirby-modal-compact' : 'kirby-' + flavor,\\n interactWithBackground ? 'interact-with-background' : '',\\n ]\\\"\\n [isOpen]=\\\"isOpen\\\"\\n [trigger]=\\\"trigger\\\"\\n [canDismiss]=\\\"_canDismiss\\\"\\n [showBackdrop]=\\\"!interactWithBackground\\\"\\n [style.--kirby-modal-height]=\\\"customHeight\\\"\\n (willPresent)=\\\"_onWillPresent($event)\\\"\\n (didPresent)=\\\"_onDidPresent($event)\\\"\\n (willDismiss)=\\\"_onWillDismiss($event)\\\"\\n (didDismiss)=\\\"_onDidDismiss($event)\\\"\\n>\\n <ng-template>\\n @if (flavor === 'compact') {\\n <kirby-modal-compact-wrapper\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n ></kirby-modal-compact-wrapper>\\n } @else {\\n <kirby-modal-wrapper\\n class=\\\"ion-page\\\"\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n [scrollDisabled]=\\\"scrollDisabled\\\"\\n ></kirby-modal-wrapper>\\n }\\n </ng-template>\\n</ion-modal>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: IconModule }, { kind: \"component\", type: IonModal, selector: \"ion-modal\" }, { kind: \"component\", type: ModalWrapperComponent, selector: \"kirby-modal-wrapper\", inputs: [\"scrollDisabled\", \"config\", \"content\"] }, { kind: \"component\", type: ModalCompactWrapperComponent, selector: \"kirby-modal-compact-wrapper\", inputs: [\"config\", \"content\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kirby-modal', imports: [\n CommonModule,\n IconModule,\n IonModal,\n ModalWrapperComponent,\n ModalCompactWrapperComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ion-modal\\n class=\\\"kirby-modal kirby-overlay kirby-modal-{{ size }}\\\"\\n [ngClass]=\\\"[\\n flavor === 'compact' ? 'kirby-modal-compact' : 'kirby-' + flavor,\\n interactWithBackground ? 'interact-with-background' : '',\\n ]\\\"\\n [isOpen]=\\\"isOpen\\\"\\n [trigger]=\\\"trigger\\\"\\n [canDismiss]=\\\"_canDismiss\\\"\\n [showBackdrop]=\\\"!interactWithBackground\\\"\\n [style.--kirby-modal-height]=\\\"customHeight\\\"\\n (willPresent)=\\\"_onWillPresent($event)\\\"\\n (didPresent)=\\\"_onDidPresent($event)\\\"\\n (willDismiss)=\\\"_onWillDismiss($event)\\\"\\n (didDismiss)=\\\"_onDidDismiss($event)\\\"\\n>\\n <ng-template>\\n @if (flavor === 'compact') {\\n <kirby-modal-compact-wrapper\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n ></kirby-modal-compact-wrapper>\\n } @else {\\n <kirby-modal-wrapper\\n class=\\\"ion-page\\\"\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n [scrollDisabled]=\\\"scrollDisabled\\\"\\n ></kirby-modal-wrapper>\\n }\\n </ng-template>\\n</ion-modal>\\n\" }]\n }], ctorParameters: () => [{ type: i1.CanDismissHelper }, { type: i2.ModalNavigationService }, { type: i3.WindowRef }, { type: i0.ElementRef }], propDecorators: { modalElement: [{\n type: ViewChild,\n args: [IonModal, { static: true, read: ElementRef }]\n }], ionContent: [{\n type: ViewChild,\n args: [IonContent]\n }], template: [{\n type: ContentChild,\n args: [TemplateRef, { static: true }]\n }], isOpen: [{\n type: Input\n }], trigger: [{\n type: Input\n }], size: [{\n type: Input\n }], scrollDisabled: [{\n type: Input\n }], canDismiss: [{\n type: Input\n }], collapseTitle: [{\n type: Input\n }], customHeight: [{\n type: Input\n }], flavor: [{\n type: Input\n }], drawerSupplementaryAction: [{\n type: Input\n }], interactWithBackground: [{\n type: Input\n }], willPresent: [{\n type: Output\n }], didPresent: [{\n type: Output\n }], didDismiss: [{\n type: Output\n }], willDismiss: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL21vZGFsLWNvbXBvbmVudC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwvbW9kYWwtY29tcG9uZW50L21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFeEUsT0FBTyxFQUVMLDRCQUE0QixFQUk1QixxQkFBcUIsR0FFdEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBZTdCLE1BQU0sT0FBTyxjQUFjO0lBVXpCLElBQWEsVUFBVSxDQUFDLFVBQXVDO1FBQzdELE9BQU8sVUFBVSxLQUFLLFNBQVM7WUFDN0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBNkJELFlBQ1UsZ0JBQWtDLEVBQ2xDLHNCQUE4QyxFQUM5QyxTQUFvQixFQUNwQixVQUFzQjtRQUh0QixxQkFBZ0Is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QUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDTyxVQUFVO3NCQUF0QixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25Db250ZW50LCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgT3ZlcmxheUV2ZW50RGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdHlwZXMnO1xuXG5pbXBvcnQgeyBpbmhlcml0QXJpYUxhYmVsVGV4dCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2RhbC1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbixcbiAgTW9kYWxDb21wYWN0V3JhcHBlckNvbXBvbmVudCxcbiAgTW9kYWxDb25maWcsXG4gIE1vZGFsRmxhdm9yLFxuICBNb2RhbFNpemUsXG4gIE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbiAgU2hvd0FsZXJ0Q2FsbGJhY2ssXG59IGZyb20gJy4uLy4uL21vZGFsLXdyYXBwZXInO1xuaW1wb3J0IHsgQ2FuRGlzbWlzc0hlbHBlciB9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgSW9uTW9kYWwsXG4gICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxuICAgIE1vZGFsQ29tcGFjdFdyYXBwZXJDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChJb25Nb2RhbCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Nb2RhbEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQpIGlvbkNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdHJpZ2dlcjogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBNb2RhbFNpemUgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgc2Nyb2xsRGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IGNhbkRpc21pc3MoY2FuRGlzbWlzczogU2hvd0FsZXJ0Q2FsbGJhY2sgfCBib29sZWFuKSB7XG4gICAgdHlwZW9mIGNhbkRpc21pc3MgPT09ICdib29sZWFuJ1xuICAgICAgPyAodGhpcy5fY2FuRGlzbWlzcyA9IGNhbkRpc21pc3MpXG4gICAgICA6ICh0aGlzLl9jYW5EaXNtaXNzID0gdGhpcy5jYW5EaXNtaXNzSGVscGVyLmdldENhbkRpc21pc3NDYWxsYmFjayhjYW5EaXNtaXNzKSk7XG4gIH1cblxuICAvLyBOT1RFOiBpbnB1dCBwcm9wZXJ0aWVzIGZvcndhcmRlZCB0byBtb2RhbC13cmFwcGVyIE1vZGFsQ29uZmlnXG4gIEBJbnB1dCgpIGNvbGxhcHNlVGl0bGUgPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tSGVpZ2h0OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZsYXZvcjogTW9kYWxGbGF2b3IgPSAnbW9kYWwnO1xuICBASW5wdXQoKSBkcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uPzogRHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaW50ZXJhY3RXaXRoQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBlbmQgTk9URVxuXG4gIEBPdXRwdXQoKSB3aWxsUHJlc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8T3ZlcmxheUV2ZW50RGV0YWlsPj4oKTtcbiAgQE91dHB1dCgpIGRpZFByZXNlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4+KCk7XG4gIEBPdXRwdXQoKSBkaWREaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+PigpO1xuICBAT3V0cHV0KCkgd2lsbERpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4+KCk7XG5cbiAgLyoqXG4gICAqIFdlIHBvcHVsYXRlIHRoZSBNb2RhbENvbmZpZyB3aXRoIGRlZmF1bHRzIGhlcmUuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGNhblxuICAgKiBndWFyZCBmb3IgYGlmIChrZXkgaW4gdGhpcy5fY29uZmlnKWAgYW5kIG9ubHkgdXBkYXRlIHRoZSBjb25maWcgd2hlbiBhbnkgb2YgdGhlc2VcbiAgICogaW5wdXRzIGNoYW5nZS5cbiAgICovXG4gIF9jb25maWc6IE1vZGFsQ29uZmlnID0ge1xuICAgIGNvbGxhcHNlVGl0bGU6IHRoaXMuY29sbGFwc2VUaXRsZSxcbiAgICBjdXN0b21IZWlnaHQ6IHRoaXMuY3VzdG9tSGVpZ2h0LFxuICAgIGZsYXZvcjogdGhpcy5mbGF2b3IsXG4gICAgZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbjogdGhpcy5kcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uLFxuICAgIGludGVyYWN0V2l0aEJhY2tncm91bmQ6IHRoaXMuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCxcbiAgfTtcbiAgX2NhbkRpc21pc3M6IFNob3dBbGVydENhbGxiYWNrIHwgYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjYW5EaXNtaXNzSGVscGVyOiBDYW5EaXNtaXNzSGVscGVyLFxuICAgIHByaXZhdGUgbW9kYWxOYXZpZ2F0aW9uU2VydmljZTogTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3J3YXJkQXJpYUxhYmVsKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNb2RhbENvbmZpZ09uQ2hhbmdlKGNoYW5nZXMpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3Aoc2Nyb2xsRHVyYXRpb24pO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFRvQm90dG9tKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24pO1xuICB9XG5cbiAgcHVibGljIF9vbldpbGxQcmVzZW50KGV2ZW50OiBDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+KSB7XG4gICAgdGhpcy53aWxsUHJlc2VudC5lbWl0KGV2ZW50KTtcblxuICAgIGlmICh0aGlzLmludGVyYWN0V2l0aEJhY2tncm91bmQpIHtcbiAgICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2FsbG93LWJhY2tncm91bmQtc2Nyb2xsJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIF9vbkRpZFByZXNlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4pIHtcbiAgICB0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaGFuZGxlQnJvd3NlckJhY2tCdXR0b24odGhpcy5tb2RhbEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5kaWRQcmVzZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIF9vbldpbGxEaXNtaXNzKGV2ZW50OiBDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+KSB7XG4gICAgaWYgKHRoaXMuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCkge1xuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnYWxsb3ctYmFja2dyb3VuZC1zY3JvbGwnKTtcbiAgICB9XG5cbiAgICB0aGlzLndpbGxEaXNtaXNzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIF9vbkRpZERpc21pc3MoZXZlbnQ6IEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4pIHtcbiAgICB0aGlzLmRpZERpc21pc3MuZW1pdChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGFsQ29uZmlnT25DaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIE9iamVjdC5lbnRyaWVzKGNoYW5nZXMpLmZvckVhY2goKFtrZXldKSA9PiB7XG4gICAgICBjb25zdCBpc01vZGFsQ29uZmlnUHJvcGVydHkgPSBrZXkgaW4gdGhpcy5fY29uZmlnO1xuICAgICAgaWYgKGlzTW9kYWxDb25maWdQcm9wZXJ0eSkge1xuICAgICAgICB0aGlzLl9jb25maWdba2V5XSA9IGNoYW5nZXNba2V5XS5jdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvcndhcmRBcmlhTGFiZWwoKSB7XG4gICAgLy8gSW5zdGVhZCBvZiBzZXR0aW5nIGFyaWEgbGFiZWwgb24gaW9uLW1vZGFsIGluIHRoZSB0ZW1wbGF0ZSB3ZSBmb3J3YXJkIGl0IHRvIG1vZGFsLXdyYXBwZXIgZm9yIGNvbnNpc3RlbmN5XG4gICAgLy8gYW5kIHNvIHdlIGRvIG5vdCBzdGFydCBsaXN0ZW5pbmcgZm9yIHRpdGxlIGNoYW5nZXMgaW4gdGhlIG1vZGFsLXdyYXBwZXIuXG4gICAgdGhpcy5fY29uZmlnLmh0bWxBdHRyaWJ1dGVzID0ge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBpbmhlcml0QXJpYUxhYmVsVGV4dCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCksXG4gICAgfTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbFxuICBjbGFzcz1cImtpcmJ5LW1vZGFsIGtpcmJ5LW92ZXJsYXkga2lyYnktbW9kYWwte3sgc2l6ZSB9fVwiXG4gIFtuZ0NsYXNzXT1cIltcbiAgICBmbGF2b3IgPT09ICdjb21wYWN0JyA/ICdraXJieS1tb2RhbC1jb21wYWN0JyA6ICdraXJieS0nICsgZmxhdm9yLFxuICAgIGludGVyYWN0V2l0aEJhY2tncm91bmQgPyAnaW50ZXJhY3Qtd2l0aC1iYWNrZ3JvdW5kJyA6ICcnLFxuICBdXCJcbiAgW2lzT3Blbl09XCJpc09wZW5cIlxuICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgW2NhbkRpc21pc3NdPVwiX2NhbkRpc21pc3NcIlxuICBbc2hvd0JhY2tkcm9wXT1cIiFpbnRlcmFjdFdpdGhCYWNrZ3JvdW5kXCJcbiAgW3N0eWxlLi0ta2lyYnktbW9kYWwtaGVpZ2h0XT1cImN1c3RvbUhlaWdodFwiXG4gICh3aWxsUHJlc2VudCk9XCJfb25XaWxsUHJlc2VudCgkZXZlbnQpXCJcbiAgKGRpZFByZXNlbnQpPVwiX29uRGlkUHJlc2VudCgkZXZlbnQpXCJcbiAgKHdpbGxEaXNtaXNzKT1cIl9vbldpbGxEaXNtaXNzKCRldmVudClcIlxuICAoZGlkRGlzbWlzcyk9XCJfb25EaWREaXNtaXNzKCRldmVudClcIlxuPlxuICA8bmctdGVtcGxhdGU+XG4gICAgQGlmIChmbGF2b3IgPT09ICdjb21wYWN0Jykge1xuICAgICAgPGtpcmJ5LW1vZGFsLWNvbXBhY3Qtd3JhcHBlclxuICAgICAgICBbY29uZmlnXT1cIl9jb25maWdcIlxuICAgICAgICBbY29udGVudF09XCJ0ZW1wbGF0ZVwiXG4gICAgICA+PC9raXJieS1tb2RhbC1jb21wYWN0LXdyYXBwZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8a2lyYnktbW9kYWwtd3JhcHBlclxuICAgICAgICBjbGFzcz1cImlvbi1wYWdlXCJcbiAgICAgICAgW2NvbmZpZ109XCJfY29uZmlnXCJcbiAgICAgICAgW2NvbnRlbnRdPVwidGVtcGxhdGVcIlxuICAgICAgICBbc2Nyb2xsRGlzYWJsZWRdPVwic2Nyb2xsRGlzYWJsZWRcIlxuICAgICAgPjwva2lyYnktbW9kYWwtd3JhcHBlcj5cbiAgICB9XG4gIDwvbmctdGVtcGxhdGU+XG48L2lvbi1tb2RhbD5cbiJdfQ==","import { ChangeDetectionStrategy, Component, HostBinding, Input, Optional, } from '@angular/core';\nimport { IonFooter } from '@ionic/angular/standalone';\nimport { ModalElementComponent, ModalElementType, } from '../../modal.interfaces';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../modal.interfaces\";\nexport class ModalFooterComponent extends ModalElementComponent {\n get _cssClass() {\n return [this.themeColor, this.type].filter((cssClass) => !!cssClass);\n }\n constructor(elementRef, modalElementsAdvertiser) {\n super(ModalElementType.FOOTER, elementRef, modalElementsAdvertiser);\n this.snapToKeyboard = false;\n this.type = 'fixed';\n this.themeColor = 'white';\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalFooterComponent, deps: [{ token: i0.ElementRef }, { token: i1.ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.1\", type: ModalFooterComponent, isStandalone: true, selector: \"kirby-modal-footer\", inputs: { snapToKeyboard: \"snapToKeyboard\", type: \"type\", themeColor: \"themeColor\" }, host: { properties: { \"class.snap-to-keyboard\": \"this.snapToKeyboard\", \"class\": \"this._cssClass\" } }, usesInheritance: true, ngImport: i0, template: \"<ion-footer role=\\\"presentation\\\">\\n <ng-content></ng-content>\\n</ion-footer>\\n\", styles: [\"ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;box-sizing:inherit;display:flex;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:16px;padding-bottom:calc(12px + var(--kirby-modal-footer-safe-area-bottom, 0px))}@media (min-width: 768px){ion-footer{padding:24px}}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box;display:block}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background-color:var(--kirby-background-color)}:host(.inline) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\\n\"], dependencies: [{ kind: \"component\", type: IonFooter, selector: \"ion-footer\", inputs: [\"collapse\", \"mode\", \"translucent\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.1\", ngImport: i0, type: ModalFooterComponent, decorators: [{\n type: Component,\n args: [{ imports: [IonFooter], selector: 'kirby-modal-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ion-footer role=\\\"presentation\\\">\\n <ng-content></ng-content>\\n</ion-footer>\\n\", styles: [\"ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;box-sizing:inherit;display:flex;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:16px;padding-bottom:calc(12px + var(--kirby-modal-footer-safe-area-bottom, 0px))}@media (min-width: 768px){ion-footer{padding:24px}}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box;display:block}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background-color:var(--kirby-background-color)}:host(.inline) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ModalElementsAdvertiser, decorators: [{\n type: Optional\n }] }], propDecorators: { snapToKeyboard: [{\n type: HostBinding,\n args: ['class.snap-to-keyboard']\n }, {\n type: Input\n }], type: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], _cssClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9mb290ZXIvbW9kYWwtZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9mb290ZXIvbW9kYWwtZm9vdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wscUJBQXFCLEVBRXJCLGdCQUFnQixHQUNqQixNQUFNLHdCQUF3QixDQUFDOzs7QUFTaEMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHFCQUFxQjtJQVc3RCxJQUNJLFNBQVM7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFlBQ0UsVUFBbUMsRUFDdkIsdUJBQWdEO1FBRTVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFqQnRFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLFNBQUksR0FBdUIsT0FBTyxDQUFDO1FBR25DLGVBQVUsR0FBc0IsT0FBTyxDQUFDO0lBWXhDLENBQUM7aUlBckJVLG9CQUFvQjtxSEFBcEIsb0JBQW9CLGlTQ3RCakMsa0ZBR0Esb3NIRGFZLFNBQVM7OzJGQU1SLG9CQUFvQjtrQkFQaEMsU0FBUzs4QkFDQyxDQUFDLFNBQVMsQ0FBQyxZQUNWLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzswQkFvQjVDLFFBQVE7eUNBZlgsY0FBYztzQkFGYixXQUFXO3VCQUFDLHdCQUF3Qjs7c0JBQ3BDLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJRixTQUFTO3NCQURaLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uRm9vdGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQge1xuICBNb2RhbEVsZW1lbnRDb21wb25lbnQsXG4gIE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLFxuICBNb2RhbEVsZW1lbnRUeXBlLFxufSBmcm9tICcuLi8uLi9tb2RhbC5pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtJb25Gb290ZXJdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LW1vZGFsLWZvb3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC1mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC1mb290ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsRm9vdGVyQ29tcG9uZW50IGV4dGVuZHMgTW9kYWxFbGVtZW50Q29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbmFwLXRvLWtleWJvYXJkJylcbiAgQElucHV0KClcbiAgc25hcFRvS2V5Ym9hcmQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB0eXBlOiAnaW5saW5lJyB8ICdmaXhlZCcgPSAnZml4ZWQnO1xuXG4gIEBJbnB1dCgpXG4gIHRoZW1lQ29sb3I6ICd3aGl0ZScgfCAnbGlnaHQnID0gJ3doaXRlJztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9jc3NDbGFzcygpIHtcbiAgICByZXR1cm4gW3RoaXMudGhlbWVDb2xvciwgdGhpcy50eXBlXS5maWx0ZXIoKGNzc0NsYXNzKSA9PiAhIWNzc0NsYXNzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxuICApIHtcbiAgICBzdXBlcihNb2RhbEVsZW1lbnRUeXBlLkZPT1RFUiwgZWxlbWVudFJlZiwgbW9kYWxFbGVtZW50c0FkdmVydGlzZXIpO1xuICB9XG59XG4iLCI8aW9uLWZvb3RlciByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLW1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbW9kYWwvc3JjL2tpcmJ5ZGVzaWduLWRlc2lnbnN5c3RlbS1tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":["i2","i4","i1","i1.AlertHelper","i3","i4.CanDismissHelper","i5","i2.CanDismissHelper","i2.ModalAnimationBuilderService","i3.ModalNavigationService","i5.CanDismissHelper","i1.ModalHelper","i2.ActionSheetHelper","i3.AlertHelper","i4.ModalNavigationService","IonicModalController","i1.CanDismissHelper","i2.ModalNavigationService","i1.ModalElementsAdvertiser"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kirbydesign-designsystem-modal.mjs","sources":["../tmp-esm2022/modal/modal.interfaces.js","../tmp-esm2022/modal/modal-wrapper/config/modal-config.helper.js","../tmp-esm2022/modal/modal-wrapper/modal-elements-mover.delegate.js","../tmp-esm2022/modal/modal/alert/alert.component.js","../tmp-esm2022/modal/modal/services/alert.helper.js","../tmp-esm2022/modal/modal/services/can-dismiss.helper.js","../tmp-esm2022/modal/modal-wrapper/modal-wrapper.component.js","../tmp-esm2022/modal/modal-wrapper/config/drawer-supplementary-action.js","../tmp-esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.js","../tmp-esm2022/modal/modal/services/modal-animation-builder.service.js","../tmp-esm2022/modal/modal-navigation.service.js","../tmp-esm2022/modal/modal/services/modal.helper.js","../tmp-esm2022/modal/modal/action-sheet/action-sheet.component.js","../tmp-esm2022/modal/modal/services/action-sheet.helper.js","../tmp-esm2022/modal/modal/services/modal.controller.js","../tmp-esm2022/modal/modal/services/can-dismiss-modal-guard.js","../tmp-esm2022/modal/modal/modal-component/modal.component.js","../tmp-esm2022/modal/modal/footer/modal-footer.component.js","../tmp-esm2022/modal/kirbydesign-designsystem-modal.js"],"sourcesContent":["import { Component, Optional } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class Modal {\n}\n/**\n * WARNING: This is for internal use only and should not be used outside of Kirby.\n */\nexport var ModalElementType;\n(function (ModalElementType) {\n ModalElementType[ModalElementType[\"PAGE_PROGRESS\"] = 0] = \"PAGE_PROGRESS\";\n ModalElementType[ModalElementType[\"FOOTER\"] = 1] = \"FOOTER\";\n ModalElementType[ModalElementType[\"TITLE\"] = 2] = \"TITLE\";\n})(ModalElementType || (ModalElementType = {}));\n/**\n * WARNING: This is for internal use only and should not be used outside of Kirby.\n */\nexport class ModalElementsAdvertiser {\n}\n/**\n * WARNING: This is for internal use only and should not be used outside of Kirby.\n */\nexport class ModalElementComponent {\n get isContainedInModal() {\n return this.modalElementsAdvertiser !== null;\n }\n constructor(modalElementType, elementRef, modalElementsAdvertiser) {\n this.modalElementType = modalElementType;\n this.elementRef = elementRef;\n this.modalElementsAdvertiser = modalElementsAdvertiser;\n }\n ngAfterViewInit() {\n if (this.isContainedInModal) {\n this.modalElementsAdvertiser.addModalElement(this.modalElementType, this.elementRef);\n }\n }\n ngOnDestroy() {\n if (this.isContainedInModal) {\n this.modalElementsAdvertiser.removeModalElement(this.modalElementType, this.elementRef);\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalElementComponent, deps: [{ token: ModalElementType }, { token: i0.ElementRef }, { token: ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.2\", type: ModalElementComponent, isStandalone: false, selector: \"ng-component\", ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalElementComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: ModalElementType }, { type: i0.ElementRef }, { type: ModalElementsAdvertiser, decorators: [{\n type: Optional\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUF5QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBc0IxRixNQUFNLE9BQWdCLEtBQUs7Q0FRMUI7QUFDRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIseUVBQWEsQ0FBQTtJQUNiLDJEQUFNLENBQUE7SUFDTix5REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsdUJBQXVCO0NBRzVDO0FBRUQ7O0dBRUc7QUFLSCxNQUFNLE9BQWdCLHFCQUFxQjtJQUN6QyxJQUFZLGtCQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQ1UsZ0JBQWtDLEVBQ2xDLFVBQW1DLEVBQ3ZCLHVCQUFnRDtRQUY1RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ3ZCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7SUFDbkUsQ0FBQztJQUVKLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO2lJQXJCbUIscUJBQXFCO3FIQUFyQixxQkFBcUIseUVBSC9CLEVBQUU7OzJGQUdRLHFCQUFxQjtrQkFKMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OzBCQVNJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2hvd0FsZXJ0Q2FsbGJhY2sgfSBmcm9tICcuL3B1YmxpY19hcGknO1xuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5RXZlbnREZXRhaWw8VCA9IGFueT4ge1xuICBkYXRhPzogVDtcbiAgcm9sZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5IHtcbiAgZGlzbWlzczogKGRhdGE/OiBhbnkpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIG9uV2lsbERpc21pc3M6IFByb21pc2U8T3ZlcmxheUV2ZW50RGV0YWlsPjtcbiAgb25EaWREaXNtaXNzOiBQcm9taXNlPE92ZXJsYXlFdmVudERldGFpbD47XG4gIGlzRGlzbWlzc2luZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxSb3V0ZUFjdGl2YXRpb24ge1xuICByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gIGlzTmV3TW9kYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNb2RhbCB7XG4gIGRpZFByZXNlbnQ6IFByb21pc2U8dm9pZD47XG4gIHdpbGxDbG9zZTogUHJvbWlzZTx2b2lkPjtcbiAgY2xvc2U6IChkYXRhPzogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzY3JvbGxUb1RvcDogKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pID0+IHZvaWQ7XG4gIHNjcm9sbFRvQm90dG9tOiAoc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikgPT4gdm9pZDtcbiAgc2Nyb2xsRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGNhbkRpc21pc3M6IFNob3dBbGVydENhbGxiYWNrO1xufVxuLyoqXG4gKiBXQVJOSU5HOiBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIG91dHNpZGUgb2YgS2lyYnkuXG4gKi9cbmV4cG9ydCBlbnVtIE1vZGFsRWxlbWVudFR5cGUge1xuICBQQUdFX1BST0dSRVNTLFxuICBGT09URVIsXG4gIFRJVExFLFxufVxuXG4vKipcbiAqIFdBUk5JTkc6IFRoaXMgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQgb3V0c2lkZSBvZiBLaXJieS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyIHtcbiAgYWRkTW9kYWxFbGVtZW50OiAodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pID0+IHZvaWQ7XG4gIHJlbW92ZU1vZGFsRWxlbWVudDogKHR5cGU6IE1vZGFsRWxlbWVudFR5cGUsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFdBUk5JTkc6IFRoaXMgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQgb3V0c2lkZSBvZiBLaXJieS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGFsRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZ2V0IGlzQ29udGFpbmVkSW5Nb2RhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlciAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWxFbGVtZW50VHlwZTogTW9kYWxFbGVtZW50VHlwZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbW9kYWxFbGVtZW50c0FkdmVydGlzZXI6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNDb250YWluZWRJbk1vZGFsKSB7XG4gICAgICB0aGlzLm1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLmFkZE1vZGFsRWxlbWVudCh0aGlzLm1vZGFsRWxlbWVudFR5cGUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuaXNDb250YWluZWRJbk1vZGFsKSB7XG4gICAgICB0aGlzLm1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLnJlbW92ZU1vZGFsRWxlbWVudCh0aGlzLm1vZGFsRWxlbWVudFR5cGUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuICB9XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const COMPONENT_PROPS = new InjectionToken('componentProps');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29uZmlnLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL2NvbmZpZy9tb2RhbC1jb25maWcuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFTLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX1BST1BTID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2NvbXBvbmVudFByb3BzJyk7XG4iXX0=","import { ElementRef } from '@angular/core';\n/*\n The ModalWrapperComponent class was growing large.\n\n Hence the functions responsible for moving modal elements around\n has been encapsulated in this class.\n*/\nexport class ModalElementsMoverDelegate {\n constructor(renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n }\n addFooter(footerElementRef) {\n // Move the footer next to ion-content\n this.moveChild(footerElementRef, this.elementRef);\n }\n removeFooter(footerElementRef) {\n this.removeChild(footerElementRef);\n }\n addPageProgress(pageProgressElementRef, ionToolbarElement) {\n this.moveChild(pageProgressElementRef, ionToolbarElement);\n }\n removePageProgress(pageProgressElementRef) {\n this.removeChild(pageProgressElementRef);\n }\n /*\n contentTitleElement & ionTitleElement has to be passed\n as arguments to the method; not part of the constructor, as they\n might reference completely different elements between calls.\n \n For example in a multi-page routed modal where the elements are destroyed\n and recreated.\n */\n addTitle(titleElementRef, contentTitleElement, hasCollapsibleTitle, ionTitleElement) {\n this.moveChild(titleElementRef, ionTitleElement);\n // If title is collapsible append it to content area; required by ionic implementation.\n if (hasCollapsibleTitle) {\n const titleElementClone = titleElementRef.nativeElement.cloneNode(true);\n this.moveChild(new ElementRef(titleElementClone), contentTitleElement);\n }\n }\n removeTitle(titleElementRef, hasCollapsibleTitle, contentTitleElement) {\n this.removeChild(titleElementRef);\n if (hasCollapsibleTitle) {\n const kirbyPageTitleElement = contentTitleElement.nativeElement.querySelector('kirby-page-title');\n this.removeChild(new ElementRef(kirbyPageTitleElement));\n }\n }\n moveChild(childElementRef, newParentElementRef) {\n const child = childElementRef.nativeElement;\n const newParent = newParentElementRef.nativeElement;\n this.renderer.removeChild(child.parentElement, child);\n this.renderer.appendChild(newParent, child);\n }\n removeChild(childElementRef, parentElement) {\n const child = childElementRef.nativeElement;\n if (child) {\n this.renderer.removeChild(parentElement || child.parentElement, child);\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZWxlbWVudHMtbW92ZXIuZGVsZWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC1lbGVtZW50cy1tb3Zlci5kZWxlZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXREOzs7OztFQUtFO0FBRUYsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNVLFFBQW1CLEVBQ25CLFVBQW1DO1FBRG5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFDMUMsQ0FBQztJQUVHLFNBQVMsQ0FBQyxnQkFBeUM7UUFDeEQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxZQUFZLENBQUMsZ0JBQXlDO1FBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sZUFBZSxDQUNwQixzQkFBK0MsRUFDL0MsaUJBQW9EO1FBRXBELElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsc0JBQStDO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7TUFPRTtJQUNLLFFBQVEsQ0FDYixlQUF3QyxFQUN4QyxtQkFBNEMsRUFDNUMsbUJBQTRCLEVBQzVCLGVBQWdEO1FBRWhELElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELHVGQUF1RjtRQUN2RixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWdCLENBQUM7WUFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFTSxXQUFXLENBQ2hCLGVBQXdDLEVBQ3hDLG1CQUE0QixFQUM1QixtQkFBNEM7UUFFNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsQyxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsTUFBTSxxQkFBcUIsR0FDekIsbUJBQW1CLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUNmLGVBQXdDLEVBQ3hDLG1CQUE0QztRQUU1QyxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQzVDLE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLGFBQWEsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sV0FBVyxDQUNqQixlQUF3QyxFQUN4QyxhQUFxRDtRQUVyRCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qXG4gIFRoZSBNb2RhbFdyYXBwZXJDb21wb25lbnQgY2xhc3Mgd2FzIGdyb3dpbmcgbGFyZ2UuIFxuXG4gIEhlbmNlIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIG1vdmluZyBtb2RhbCBlbGVtZW50cyBhcm91bmQgXG4gIGhhcyBiZWVuIGVuY2Fwc3VsYXRlZCBpbiB0aGlzIGNsYXNzLiBcbiovXG5cbmV4cG9ydCBjbGFzcyBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge31cblxuICBwdWJsaWMgYWRkRm9vdGVyKGZvb3RlckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgLy8gTW92ZSB0aGUgZm9vdGVyIG5leHQgdG8gaW9uLWNvbnRlbnRcbiAgICB0aGlzLm1vdmVDaGlsZChmb290ZXJFbGVtZW50UmVmLCB0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZvb3Rlcihmb290ZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMucmVtb3ZlQ2hpbGQoZm9vdGVyRWxlbWVudFJlZik7XG4gIH1cblxuICBwdWJsaWMgYWRkUGFnZVByb2dyZXNzKFxuICAgIHBhZ2VQcm9ncmVzc0VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIGlvblRvb2xiYXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Ub29sYmFyRWxlbWVudD5cbiAgKSB7XG4gICAgdGhpcy5tb3ZlQ2hpbGQocGFnZVByb2dyZXNzRWxlbWVudFJlZiwgaW9uVG9vbGJhckVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVBhZ2VQcm9ncmVzcyhwYWdlUHJvZ3Jlc3NFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMucmVtb3ZlQ2hpbGQocGFnZVByb2dyZXNzRWxlbWVudFJlZik7XG4gIH1cblxuICAvKiBcbiAgICAgY29udGVudFRpdGxlRWxlbWVudCAmIGlvblRpdGxlRWxlbWVudCBoYXMgdG8gYmUgcGFzc2VkXG4gICAgIGFzIGFyZ3VtZW50cyB0byB0aGUgbWV0aG9kOyBub3QgcGFydCBvZiB0aGUgY29uc3RydWN0b3IsIGFzIHRoZXkgXG4gICAgIG1pZ2h0IHJlZmVyZW5jZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBlbGVtZW50cyBiZXR3ZWVuIGNhbGxzLiBcblxuICAgICBGb3IgZXhhbXBsZSBpbiBhIG11bHRpLXBhZ2Ugcm91dGVkIG1vZGFsIHdoZXJlIHRoZSBlbGVtZW50cyBhcmUgZGVzdHJveWVkIFxuICAgICBhbmQgcmVjcmVhdGVkLlxuICAqL1xuICBwdWJsaWMgYWRkVGl0bGUoXG4gICAgdGl0bGVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBjb250ZW50VGl0bGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBoYXNDb2xsYXBzaWJsZVRpdGxlOiBib29sZWFuLFxuICAgIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVGl0bGVFbGVtZW50PlxuICApIHtcbiAgICB0aGlzLm1vdmVDaGlsZCh0aXRsZUVsZW1lbnRSZWYsIGlvblRpdGxlRWxlbWVudCk7XG4gICAgLy8gSWYgdGl0bGUgaXMgY29sbGFwc2libGUgYXBwZW5kIGl0IHRvIGNvbnRlbnQgYXJlYTsgcmVxdWlyZWQgYnkgaW9uaWMgaW1wbGVtZW50YXRpb24uXG4gICAgaWYgKGhhc0NvbGxhcHNpYmxlVGl0bGUpIHtcbiAgICAgIGNvbnN0IHRpdGxlRWxlbWVudENsb25lID0gdGl0bGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgdGhpcy5tb3ZlQ2hpbGQobmV3IEVsZW1lbnRSZWYodGl0bGVFbGVtZW50Q2xvbmUpLCBjb250ZW50VGl0bGVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlVGl0bGUoXG4gICAgdGl0bGVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBoYXNDb2xsYXBzaWJsZVRpdGxlOiBib29sZWFuLFxuICAgIGNvbnRlbnRUaXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge1xuICAgIHRoaXMucmVtb3ZlQ2hpbGQodGl0bGVFbGVtZW50UmVmKTtcbiAgICBpZiAoaGFzQ29sbGFwc2libGVUaXRsZSkge1xuICAgICAgY29uc3Qga2lyYnlQYWdlVGl0bGVFbGVtZW50OiBIVE1MRWxlbWVudCA9XG4gICAgICAgIGNvbnRlbnRUaXRsZUVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdraXJieS1wYWdlLXRpdGxlJyk7XG4gICAgICB0aGlzLnJlbW92ZUNoaWxkKG5ldyBFbGVtZW50UmVmKGtpcmJ5UGFnZVRpdGxlRWxlbWVudCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbW92ZUNoaWxkKFxuICAgIGNoaWxkRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgbmV3UGFyZW50RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBuZXdQYXJlbnQgPSBuZXdQYXJlbnRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChjaGlsZC5wYXJlbnRFbGVtZW50LCBjaGlsZCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChuZXdQYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ2hpbGQoXG4gICAgY2hpbGRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwYXJlbnRFbGVtZW50PzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHtcbiAgICBjb25zdCBjaGlsZCA9IGNoaWxkRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChjaGlsZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnRFbGVtZW50IHx8IGNoaWxkLnBhcmVudEVsZW1lbnQsIGNoaWxkKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';\nimport { of } from 'rxjs';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { ThemeColorDirective } from '@kirbydesign/designsystem/shared';\nimport { EmptyStateModule } from '@kirbydesign/designsystem/empty-state';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/types\";\nimport * as i2 from \"@kirbydesign/designsystem/shared\";\nimport * as i3 from \"@kirbydesign/designsystem/empty-state\";\nimport * as i4 from \"@angular/common\";\nexport class AlertComponent {\n set title(title) {\n this.title$ = typeof title === 'string' ? of(title) : title;\n }\n set message(message) {\n this.message$ = typeof message === 'string' ? of(message) : message;\n }\n set okBtn(okBtn) {\n this.okBtn$ = typeof okBtn === 'string' ? of(okBtn) : okBtn;\n }\n set cancelBtn(cancelBtn) {\n this.cancelBtn$ = typeof cancelBtn === 'string' ? of(cancelBtn) : cancelBtn;\n }\n constructor(elementRef, windowRef) {\n this.elementRef = elementRef;\n this.windowRef = windowRef;\n this.BLUR_WRAPPER_DELAY_IN_MS = 50;\n this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);\n }\n ngAfterViewInit() {\n setTimeout(() => {\n this.alertWrapper.nativeElement.focus();\n this.alertWrapper.nativeElement.blur();\n }, this.BLUR_WRAPPER_DELAY_IN_MS);\n }\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n onCancel() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement?.dismiss(false);\n }\n onOk() {\n const ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n ionModalElement?.dismiss(true);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ElementRef }, { token: i1.WindowRef }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: AlertComponent, isStandalone: true, selector: \"kirby-alert\", inputs: { title: \"title\", message: \"message\", iconName: \"iconName\", iconThemeColor: \"iconThemeColor\", okBtn: \"okBtn\", okBtnIsDestructive: \"okBtnIsDestructive\", cancelBtn: \"cancelBtn\" }, host: { properties: { \"class.ion-page\": \"false\" } }, viewQueries: [{ propertyName: \"alertWrapper\", first: true, predicate: [\"alertWrapper\"], descendants: true, static: true }], ngImport: i0, template: \"<article #alertWrapper>\\n <kirby-empty-state\\n [iconName]=\\\"iconName\\\"\\n [themeColor]=\\\"iconThemeColor\\\"\\n [title]=\\\"title$ | async\\\"\\n [subtitle]=\\\"message$ | async\\\"\\n ></kirby-empty-state>\\n <div class=\\\"buttongroup\\\">\\n @if (cancelBtn$ | async; as cancelBtn) {\\n <button kirby-button attentionLevel=\\\"3\\\" class=\\\"cancel-btn\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelBtn }}\\n </button>\\n }\\n <button\\n kirby-button\\n [size]=\\\"(cancelBtn$ | async) ? null : 'lg'\\\"\\n attentionLevel=\\\"1\\\"\\n class=\\\"ok-btn\\\"\\n [class.destructive]=\\\"okBtnIsDestructive\\\"\\n (click)=\\\"onOk()\\\"\\n >\\n {{ okBtn$ | async }}\\n </button>\\n </div>\\n</article>\\n\", styles: [\"article{overflow:hidden;padding:24px 16px 16px}@media (max-width: 320px){article{padding:8px}}.buttongroup{display:flex;justify-content:center;column-gap:8px}.buttongroup button{flex:1 1 50%;margin-inline:0}.buttongroup button:only-child{flex-grow:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: IconModule }, { kind: \"directive\", type: i2.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\"] }, { kind: \"ngmodule\", type: EmptyStateModule }, { kind: \"component\", type: i3.EmptyStateComponent, selector: \"kirby-empty-state\", inputs: [\"iconName\", \"title\", \"subtitle\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[kirby-button],Button[kirby-button],a[kirby-button]\", inputs: [\"attentionLevel\", \"noDecoration\", \"themeColor\", \"expand\", \"isFloating\", \"size\", \"showIconOnly\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AlertComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n IconModule,\n EmptyStateModule,\n ButtonComponent,\n CommonModule,\n EmptyStateModule,\n ThemeColorDirective,\n ], selector: 'kirby-alert', host: { '[class.ion-page]': 'false' }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<article #alertWrapper>\\n <kirby-empty-state\\n [iconName]=\\\"iconName\\\"\\n [themeColor]=\\\"iconThemeColor\\\"\\n [title]=\\\"title$ | async\\\"\\n [subtitle]=\\\"message$ | async\\\"\\n ></kirby-empty-state>\\n <div class=\\\"buttongroup\\\">\\n @if (cancelBtn$ | async; as cancelBtn) {\\n <button kirby-button attentionLevel=\\\"3\\\" class=\\\"cancel-btn\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelBtn }}\\n </button>\\n }\\n <button\\n kirby-button\\n [size]=\\\"(cancelBtn$ | async) ? null : 'lg'\\\"\\n attentionLevel=\\\"1\\\"\\n class=\\\"ok-btn\\\"\\n [class.destructive]=\\\"okBtnIsDestructive\\\"\\n (click)=\\\"onOk()\\\"\\n >\\n {{ okBtn$ | async }}\\n </button>\\n </div>\\n</article>\\n\", styles: [\"article{overflow:hidden;padding:24px 16px 16px}@media (max-width: 320px){article{padding:8px}}.buttongroup{display:flex;justify-content:center;column-gap:8px}.buttongroup button{flex:1 1 50%;margin-inline:0}.buttongroup button:only-child{flex-grow:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.WindowRef }], propDecorators: { alertWrapper: [{\n type: ViewChild,\n args: ['alertWrapper', { static: true }]\n }], title: [{\n type: Input\n }], message: [{\n type: Input\n }], iconName: [{\n type: Input\n }], iconThemeColor: [{\n type: Input\n }], okBtn: [{\n type: Input\n }], okBtnIsDestructive: [{\n type: Input\n }], cancelBtn: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9hbGVydC9hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQWlCbkUsTUFBTSxPQUFPLGNBQWM7SUFNekIsSUFDSSxLQUFLLENBQUMsS0FBa0M7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFHRCxJQUNJLE9BQU8sQ0FBQyxPQUFvQztRQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDdEUsQ0FBQztJQU1ELElBQ0ksS0FBSyxDQUFDLEtBQWtDO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBSUQsSUFDSSxTQUFTLENBQUMsU0FBc0M7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlFLENBQUM7SUFFRCxZQUNVLFVBQW1DLEVBQ25DLFNBQW9CO1FBRHBCLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFsQ3JCLDZCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUUvQixZQUFPLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQWlDckUsQ0FBQztJQUVKLGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsQ0FBQyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhO1FBQ1gseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxlQUFlLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNFLGVBQWUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztpSUExRFUsY0FBYztxSEFBZCxjQUFjLGtiQ2hDM0IsMnNCQXlCQSxxVEROSSxVQUFVLG9XQUNWLGdCQUFnQiw4SkFDaEIsZUFBZSwrTUFDZixZQUFZOzsyRkFVSCxjQUFjO2tCQWYxQixTQUFTOzhCQUNDO3dCQUNQLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixtQkFBbUI7cUJBQ3BCLFlBQ1MsYUFBYSxRQUdqQixFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTt1R0FJTSxZQUFZO3NCQUFoRSxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS3ZDLEtBQUs7c0JBRFIsS0FBSztnQkFPRixPQUFPO3NCQURWLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUlGLEtBQUs7c0JBRFIsS0FBSztnQkFJRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBSUYsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90eXBlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBUaGVtZUNvbG9yIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IFRoZW1lQ29sb3JEaXJlY3RpdmUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9lbXB0eS1zdGF0ZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgSWNvbk1vZHVsZSxcbiAgICBFbXB0eVN0YXRlTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRW1wdHlTdGF0ZU1vZHVsZSxcbiAgICBUaGVtZUNvbG9yRGlyZWN0aXZlLFxuICBdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LWFsZXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDogeyAnW2NsYXNzLmlvbi1wYWdlXSc6ICdmYWxzZScgfSwgLy9FbnN1cmUgaW9uLXBhZ2UgY2xhc3MgZG9lc24ndCBnZXQgYXBwbGllZCBieSBJb25pYyBNb2RhbCBDb250cm9sbGVyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBCTFVSX1dSQVBQRVJfREVMQVlfSU5fTVMgPSA1MDtcbiAgQFZpZXdDaGlsZCgnYWxlcnRXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBhbGVydFdyYXBwZXI6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgc2Nyb2xsWTogbnVtYmVyID0gTWF0aC5hYnModGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFkpO1xuXG4gIHRpdGxlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBASW5wdXQoKVxuICBzZXQgdGl0bGUodGl0bGU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuICAgIHRoaXMudGl0bGUkID0gdHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJyA/IG9mKHRpdGxlKSA6IHRpdGxlO1xuICB9XG5cbiAgbWVzc2FnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgQElucHV0KClcbiAgc2V0IG1lc3NhZ2UobWVzc2FnZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG4gICAgdGhpcy5tZXNzYWdlJCA9IHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJyA/IG9mKG1lc3NhZ2UpIDogbWVzc2FnZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGljb25OYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb25UaGVtZUNvbG9yOiBUaGVtZUNvbG9yIHwgYCR7VGhlbWVDb2xvcn1gO1xuXG4gIG9rQnRuJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBASW5wdXQoKVxuICBzZXQgb2tCdG4ob2tCdG46IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuICAgIHRoaXMub2tCdG4kID0gdHlwZW9mIG9rQnRuID09PSAnc3RyaW5nJyA/IG9mKG9rQnRuKSA6IG9rQnRuO1xuICB9XG4gIEBJbnB1dCgpIG9rQnRuSXNEZXN0cnVjdGl2ZTogYm9vbGVhbjtcblxuICBjYW5jZWxCdG4kOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIEBJbnB1dCgpXG4gIHNldCBjYW5jZWxCdG4oY2FuY2VsQnRuOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNhbmNlbEJ0biQgPSB0eXBlb2YgY2FuY2VsQnRuID09PSAnc3RyaW5nJyA/IG9mKGNhbmNlbEJ0bikgOiBjYW5jZWxCdG47XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWxlcnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuYWxlcnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH0sIHRoaXMuQkxVUl9XUkFQUEVSX0RFTEFZX0lOX01TKTtcbiAgfVxuXG4gIG9uRm9jdXNDaGFuZ2UoKSB7XG4gICAgLy8gVGhpcyBmaXhlcyBhbiB1bmRlc2lyZWQgc2Nyb2xsIGJlaGF2aW91ciBvY2N1cnJpbmcgb24ga2V5Ym9hcmQtdGFiYmluZ1xuICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxUbyh7IHRvcDogdGhpcy5zY3JvbGxZIH0pO1xuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgY29uc3QgaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgaW9uTW9kYWxFbGVtZW50Py5kaXNtaXNzKGZhbHNlKTtcbiAgfVxuXG4gIG9uT2soKSB7XG4gICAgY29uc3QgaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgaW9uTW9kYWxFbGVtZW50Py5kaXNtaXNzKHRydWUpO1xuICB9XG59XG4iLCI8YXJ0aWNsZSAjYWxlcnRXcmFwcGVyPlxuICA8a2lyYnktZW1wdHktc3RhdGVcbiAgICBbaWNvbk5hbWVdPVwiaWNvbk5hbWVcIlxuICAgIFt0aGVtZUNvbG9yXT1cImljb25UaGVtZUNvbG9yXCJcbiAgICBbdGl0bGVdPVwidGl0bGUkIHwgYXN5bmNcIlxuICAgIFtzdWJ0aXRsZV09XCJtZXNzYWdlJCB8IGFzeW5jXCJcbiAgPjwva2lyYnktZW1wdHktc3RhdGU+XG4gIDxkaXYgY2xhc3M9XCJidXR0b25ncm91cFwiPlxuICAgIEBpZiAoY2FuY2VsQnRuJCB8IGFzeW5jOyBhcyBjYW5jZWxCdG4pIHtcbiAgICAgIDxidXR0b24ga2lyYnktYnV0dG9uIGF0dGVudGlvbkxldmVsPVwiM1wiIGNsYXNzPVwiY2FuY2VsLWJ0blwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+XG4gICAgICAgIHt7IGNhbmNlbEJ0biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIDxidXR0b25cbiAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgW3NpemVdPVwiKGNhbmNlbEJ0biQgfCBhc3luYykgPyBudWxsIDogJ2xnJ1wiXG4gICAgICBhdHRlbnRpb25MZXZlbD1cIjFcIlxuICAgICAgY2xhc3M9XCJvay1idG5cIlxuICAgICAgW2NsYXNzLmRlc3RydWN0aXZlXT1cIm9rQnRuSXNEZXN0cnVjdGl2ZVwiXG4gICAgICAoY2xpY2spPVwib25PaygpXCJcbiAgICA+XG4gICAgICB7eyBva0J0biQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvYXJ0aWNsZT5cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { isObservable } from 'rxjs';\nimport { AlertComponent } from '../alert/alert.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ionic/angular/standalone\";\nexport class AlertHelper {\n constructor(ionicModalController) {\n this.ionicModalController = ionicModalController;\n }\n async showAlert(config) {\n const ionModal = await this.ionicModalController.create({\n component: AlertComponent,\n componentProps: this.getComponentProps(config),\n cssClass: ['kirby-overlay', 'kirby-alert'],\n mode: 'ios',\n backdropDismiss: false,\n });\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n getComponentProps(config) {\n return {\n ...config,\n okBtn: this.getOkBtn(config),\n okBtnIsDestructive: this.getOkBtnIsDestructive(config),\n iconName: config.icon && config.icon.name,\n iconThemeColor: config.icon && config.icon.themeColor,\n };\n }\n getOkBtn(config) {\n let text;\n if (config.okBtn) {\n if (typeof config.okBtn === 'string' || isObservable(config.okBtn)) {\n text = config.okBtn;\n }\n else {\n text = config.okBtn?.text;\n }\n }\n return text;\n }\n getOkBtnIsDestructive(config) {\n return typeof config.okBtn === 'object' ? config.okBtn.isDestructive : undefined;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AlertHelper, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AlertHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AlertHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalController }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL3NlcnZpY2VzL2FsZXJ0LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFJMUQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0Isb0JBQXFDO1FBQXJDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBaUI7SUFBRyxDQUFDO0lBRXRELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBbUI7UUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO1lBQ3RELFNBQVMsRUFBRSxjQUFjO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1lBQzlDLFFBQVEsRUFBRSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUM7WUFDMUMsSUFBSSxFQUFFLEtBQUs7WUFDWCxlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixPQUFPO1lBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN4QyxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRTtZQUN2QyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRTtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQW1CO1FBQzNDLE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDNUIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztZQUN0RCxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDekMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVO1NBQ3RELENBQUM7SUFDSixDQUFDO0lBRU8sUUFBUSxDQUFDLE1BQW1CO1FBQ2xDLElBQUksSUFBaUMsQ0FBQztRQUV0QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBTTtRQUMxQixPQUFPLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkYsQ0FBQztpSUE5Q1UsV0FBVztxSUFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9tb2RhbC5pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnRDb25maWcgfSBmcm9tICcuLi9hbGVydC9jb25maWcvYWxlcnQtY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFsZXJ0SGVscGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpb25pY01vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWxlcnQoY29uZmlnOiBBbGVydENvbmZpZyk6IFByb21pc2U8T3ZlcmxheT4ge1xuICAgIGNvbnN0IGlvbk1vZGFsID0gYXdhaXQgdGhpcy5pb25pY01vZGFsQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBBbGVydENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB0aGlzLmdldENvbXBvbmVudFByb3BzKGNvbmZpZyksXG4gICAgICBjc3NDbGFzczogWydraXJieS1vdmVybGF5JywgJ2tpcmJ5LWFsZXJ0J10sXG4gICAgICBtb2RlOiAnaW9zJyxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBpb25Nb2RhbC5wcmVzZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc21pc3M6IGlvbk1vZGFsLmRpc21pc3MuYmluZChpb25Nb2RhbCksXG4gICAgICBvbldpbGxEaXNtaXNzOiBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCksXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBvbmVudFByb3BzKGNvbmZpZzogQWxlcnRDb25maWcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgb2tCdG46IHRoaXMuZ2V0T2tCdG4oY29uZmlnKSxcbiAgICAgIG9rQnRuSXNEZXN0cnVjdGl2ZTogdGhpcy5nZXRPa0J0bklzRGVzdHJ1Y3RpdmUoY29uZmlnKSxcbiAgICAgIGljb25OYW1lOiBjb25maWcuaWNvbiAmJiBjb25maWcuaWNvbi5uYW1lLFxuICAgICAgaWNvblRoZW1lQ29sb3I6IGNvbmZpZy5pY29uICYmIGNvbmZpZy5pY29uLnRoZW1lQ29sb3IsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2tCdG4oY29uZmlnOiBBbGVydENvbmZpZyk6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgbGV0IHRleHQ6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIGlmIChjb25maWcub2tCdG4pIHtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9rQnRuID09PSAnc3RyaW5nJyB8fCBpc09ic2VydmFibGUoY29uZmlnLm9rQnRuKSkge1xuICAgICAgICB0ZXh0ID0gY29uZmlnLm9rQnRuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dCA9IGNvbmZpZy5va0J0bj8udGV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGdldE9rQnRuSXNEZXN0cnVjdGl2ZShjb25maWcpIHtcbiAgICByZXR1cm4gdHlwZW9mIGNvbmZpZy5va0J0biA9PT0gJ29iamVjdCcgPyBjb25maWcub2tCdG4uaXNEZXN0cnVjdGl2ZSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./alert.helper\";\nexport class CanDismissHelper {\n constructor(alertHelper) {\n this.alertHelper = alertHelper;\n }\n getCanDismissCallback(callback) {\n return async () => {\n const result = await callback();\n if (typeof result === 'boolean')\n return result;\n const canCloseModal = await this.showAlert(result);\n return canCloseModal;\n };\n }\n async showAlert(config) {\n const alert = await this.alertHelper.showAlert(config);\n const result = await alert.onWillDismiss;\n return result.data;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CanDismissHelper, deps: [{ token: i1.AlertHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CanDismissHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CanDismissHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.AlertHelper }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRpc21pc3MuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL3NlcnZpY2VzL2Nhbi1kaXNtaXNzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFekMscUJBQXFCLENBQUMsUUFBMkI7UUFDdEQsT0FBTyxLQUFLLElBQUksRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsRUFBRSxDQUFDO1lBRWhDLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUztnQkFBRSxPQUFPLE1BQU0sQ0FBQztZQUUvQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBbUI7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7aUlBbEJVLGdCQUFnQjtxSUFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hvd0FsZXJ0Q2FsbGJhY2sgfSBmcm9tICcuLi8uLi9tb2RhbC13cmFwcGVyL2NvbmZpZyc7XG5pbXBvcnQgeyBBbGVydENvbmZpZyB9IGZyb20gJy4uL2FsZXJ0JztcbmltcG9ydCB7IEFsZXJ0SGVscGVyIH0gZnJvbSAnLi9hbGVydC5oZWxwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FuRGlzbWlzc0hlbHBlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxlcnRIZWxwZXI6IEFsZXJ0SGVscGVyKSB7fVxuXG4gIHB1YmxpYyBnZXRDYW5EaXNtaXNzQ2FsbGJhY2soY2FsbGJhY2s6IFNob3dBbGVydENhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxiYWNrKCk7XG5cbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnYm9vbGVhbicpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgIGNvbnN0IGNhbkNsb3NlTW9kYWwgPSBhd2FpdCB0aGlzLnNob3dBbGVydChyZXN1bHQpO1xuICAgICAgcmV0dXJuIGNhbkNsb3NlTW9kYWw7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWxlcnQoY29uZmlnOiBBbGVydENvbmZpZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydEhlbHBlci5zaG93QWxlcnQoY29uZmlnKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhbGVydC5vbldpbGxEaXNtaXNzO1xuICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgfVxufVxuIl19","import { Component, ContentChild, ElementRef, HostBinding, HostListener, Injector, Input, RendererStyleFlags2, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';\nimport { RouterModule, RouterOutlet } from '@angular/router';\nimport { firstValueFrom, merge, Subject } from 'rxjs';\nimport { debounceTime, first, map, takeUntil } from 'rxjs/operators';\nimport { DesignTokenHelper, getIonModalDialogAncestor } from '@kirbydesign/designsystem/helpers';\nimport { observeContent } from '@kirbydesign/designsystem/helpers';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, } from '@ionic/angular/standalone';\nimport { Modal, ModalElementsAdvertiser, ModalElementType } from '../modal.interfaces';\nimport { COMPONENT_PROPS } from './config/modal-config.helper';\nimport { ModalElementsMoverDelegate } from './modal-elements-mover.delegate';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/shared\";\nimport * as i2 from \"@kirbydesign/designsystem/types\";\nimport * as i3 from \"@kirbydesign/designsystem/helpers\";\nimport * as i4 from \"../modal/services/can-dismiss.helper\";\nimport * as i5 from \"@angular/router\";\nimport * as i6 from \"@kirbydesign/designsystem/icon\";\nimport * as i7 from \"@angular/common\";\nconst contentScrollDebounceTimeInMS = 10;\nconst contentScrolledOffsetInPixels = 4;\nexport class ModalWrapperComponent {\n get _hasCollapsibleTitle() {\n return !!this.config?.collapseTitle;\n }\n static { this.KEYBOARD_HIDE_DELAY_IN_MS = 100; }\n set scrollDisabled(disabled) {\n this.ionContent.scrollY = !disabled;\n }\n set canDismiss(callback) {\n this.ionModalElement.canDismiss = this.canDismissHelper.getCanDismissCallback(callback);\n }\n get contentTitleElement() {\n /*\n contentTitleElement has ngIf directive dependent on _hasCollapsibleTitle; trigger CD to make sure element has been queried.\n Solution taken from: https://danieleyassu.com/angular-viewchild-and-ngif/\n */\n if (!this._contentTitleElement && this._hasCollapsibleTitle) {\n this.changeDetector.detectChanges();\n }\n return this._contentTitleElement;\n }\n get intersectionObserver() {\n if (!this._intersectionObserver) {\n this._intersectionObserver = this.createModalWrapperIntersectionObserver();\n }\n return this._intersectionObserver;\n }\n get _isDrawer() {\n return this.config.flavor === 'drawer';\n }\n constructor(changeDetector, injector, elementRef, renderer, zone, resizeObserverService, windowRef, platform, canDismissHelper, environmentInjector, translations) {\n this.changeDetector = changeDetector;\n this.injector = injector;\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.zone = zone;\n this.resizeObserverService = resizeObserverService;\n this.windowRef = windowRef;\n this.platform = platform;\n this.canDismissHelper = canDismissHelper;\n this.environmentInjector = environmentInjector;\n this.translations = translations;\n this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);\n this.VIEWPORT_RESIZE_DEBOUNCE_TIME = 100;\n this.keyboardVisible = false;\n this.toolbarButtons = [];\n this.delayedClose = () => { };\n this.viewportResized = false;\n this.ionModalDidPresent = new Subject();\n this.didPresent = firstValueFrom(this.ionModalDidPresent);\n this.ionModalWillDismiss = new Subject();\n this.willClose = firstValueFrom(this.ionModalWillDismiss);\n this.viewportResize = new Subject();\n this.viewportResize$ = this.viewportResize\n .asObservable()\n .pipe(debounceTime(this.VIEWPORT_RESIZE_DEBOUNCE_TIME));\n this.destroy$ = new Subject();\n this.willClose$ = this.ionModalWillDismiss.pipe(first());\n this._currentFooter = null;\n this.setAriaLabelFromTitleContent = () => {\n const titleTextContent = this.ionTitleElement?.nativeElement.textContent;\n if (this.ionModalDialog && titleTextContent) {\n this.renderer.setAttribute(this.ionModalDialog, 'aria-label', titleTextContent);\n }\n };\n this.setViewportHeight();\n this.observeViewportResize();\n this.modalElementsMoverDelegate = new ModalElementsMoverDelegate(renderer, elementRef);\n }\n ngOnInit() {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.ionModalDialog = getIonModalDialogAncestor(this.elementRef.nativeElement);\n this.initializeSizing();\n this.initializeModalRoute();\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.listenForScroll();\n this.initializeResizeModalToModalWrapper();\n this.focusModalTitle();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n this.modalWrapperInjector = Injector.create({\n providers: [{ provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent }],\n parent: this.injector,\n });\n }\n ngAfterViewInit() {\n if (this.toolbarButtonsQuery) {\n this.toolbarButtons = this.toolbarButtonsQuery.map((buttonRef) => buttonRef.nativeElement);\n }\n this.setAriaLabel();\n }\n set currentFooter(footer) {\n if (this._currentFooter) {\n this.resizeObserverService.unobserve(this._currentFooter);\n }\n this._currentFooter = footer;\n if (footer !== null) {\n this.resizeObserverService.observe(footer, (entry) => {\n const [property, pixelValue] = [\n '--footer-height',\n `${Math.floor(entry.contentRect.height)}px`,\n ];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n this._currentFooter = footer;\n }\n get currentFooter() {\n return this._currentFooter;\n }\n addModalElement(type, modalElement) {\n const addModalElementFn = {\n [ModalElementType.FOOTER]: () => {\n this.modalElementsMoverDelegate.addFooter(modalElement);\n this.currentFooter = modalElement.nativeElement;\n },\n [ModalElementType.TITLE]: () => this.modalElementsMoverDelegate.addTitle(modalElement, this.contentTitleElement, this._hasCollapsibleTitle, this.ionTitleElement),\n [ModalElementType.PAGE_PROGRESS]: () => this.modalElementsMoverDelegate.addPageProgress(modalElement, this.ionToolbarElement),\n }[type];\n addModalElementFn();\n }\n removeModalElement(type, modalElement) {\n const removeModalElementFn = {\n [ModalElementType.FOOTER]: () => {\n this.modalElementsMoverDelegate.removeFooter(modalElement);\n this.currentFooter = null;\n },\n [ModalElementType.TITLE]: () => this.modalElementsMoverDelegate.removeTitle(modalElement, this._hasCollapsibleTitle, this.contentTitleElement),\n [ModalElementType.PAGE_PROGRESS]: () => this.modalElementsMoverDelegate.removePageProgress(modalElement),\n }[type];\n removeModalElementFn();\n }\n initializeResizeModalToModalWrapper() {\n if (this.config.flavor === 'drawer' && this.config.interactWithBackground) {\n merge(this.ionModalDidPresent, this.viewportResize$)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n // wait for template to render\n setTimeout(() => {\n const domRect = this.elementRef.nativeElement.getBoundingClientRect();\n const document = this.windowRef.nativeWindow.document.documentElement;\n const right = document.clientWidth - domRect.right;\n this.renderer.setStyle(this.ionModalElement, 'top', `${domRect.top}px`);\n this.renderer.setStyle(this.ionModalElement, 'left', `${domRect.left}px`);\n this.renderer.setStyle(this.ionModalElement, 'right', `${right}px`);\n });\n });\n }\n }\n initializeSizing() {\n if (this.config.size === 'full-height')\n return;\n this.patchScrollElementSize();\n this.observeHeaderResize();\n this.observeModalFullHeight();\n }\n initializeModalRoute() {\n if (this.config.modalRoute) {\n this.onSiblingModalRouteActivated(this.config.siblingModalRouteActivated$);\n // Load component from modal-route inside router-outlet:\n this.routerOutlet.activateWith(this.config.modalRoute, this.environmentInjector);\n }\n }\n onSiblingModalRouteActivated(siblingModalRouteActivated$) {\n if (!siblingModalRouteActivated$)\n return;\n siblingModalRouteActivated$.pipe(takeUntil(this.willClose$)).subscribe((route) => {\n if (this.routerOutlet.isActivated) {\n this.routerOutlet.deactivate();\n }\n this.routerOutlet.activateWith(route, this.environmentInjector);\n });\n }\n patchScrollElementSize() {\n const supportsCssShadowParts = 'part' in HTMLElement.prototype;\n if (supportsCssShadowParts)\n return;\n this.ionContent.getScrollElement().then((scrollElement) => {\n this.renderer.setStyle(scrollElement, 'height', '100%');\n this.renderer.setStyle(scrollElement, 'position', 'relative');\n if (this.config.flavor === 'drawer') {\n this.renderer.setStyle(scrollElement, 'transition', 'padding-bottom ' + DesignTokenHelper.softKeyboardTransitionLeave);\n }\n });\n }\n observeModalFullHeight() {\n const ionModalWrapper = this.getIonModalWrapperElement();\n if (!ionModalWrapper)\n return;\n // Start observing when modal has finished animating:\n this.didPresent.then(() => {\n this.intersectionObserver.observe(ionModalWrapper);\n });\n }\n // Extracted into function for ease of testing\n getIonModalWrapperElement() {\n return this.ionModalElement.shadowRoot.querySelector('.modal-wrapper');\n }\n observeHeaderResize() {\n this.resizeObserverService.observe(this.ionHeaderElement.nativeElement, (entry) => {\n const [property, pixelValue] = ['--header-height', `${entry.contentRect.height}px`];\n this.setCssVar(this.elementRef.nativeElement, property, pixelValue);\n });\n }\n listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n listenForScroll() {\n const query = `(min-width: ${DesignTokenHelper.breakpoints.medium})`;\n const mediaQuery = this.windowRef.nativeWindow.matchMedia(query);\n const enableScrollEvents = (listOrEvent) => {\n const isDesktop = listOrEvent.matches;\n this.scrollEventsEnabled = !isDesktop;\n };\n enableScrollEvents(mediaQuery);\n mediaQuery.onchange = enableScrollEvents;\n // Runs scroll subscription outside zone to avoid excessive amount of CD cycles\n // when ionScroll emits.\n this.zone.runOutsideAngular(() => {\n // Always subscribe as ionScroll only emits when scrollEventsEnabled is true\n this.ionContent.ionScroll\n .pipe(debounceTime(contentScrollDebounceTimeInMS), map((event) => event.detail), takeUntil(this.destroy$))\n .subscribe((scrollInfo) => {\n const contentScrolledPastOffset = scrollInfo.scrollTop > contentScrolledOffsetInPixels;\n if (contentScrolledPastOffset !== this.isContentScrolled) {\n this.isContentScrolled = contentScrolledPastOffset;\n this.changeDetector.detectChanges();\n }\n });\n });\n }\n observeTitleContentChanges() {\n this.mutationObserverUnobserveFn = observeContent(this.ionTitleElement.nativeElement, this.setAriaLabelFromTitleContent);\n }\n setAriaLabel() {\n const ariaLabel = this.config.htmlAttributes?.['aria-label'];\n const ionModalElementDialog = getIonModalDialogAncestor(this.ionModalElement);\n if (ionModalElementDialog && ariaLabel) {\n this.renderer.setAttribute(ionModalElementDialog, 'aria-label', ariaLabel);\n }\n else {\n this.setAriaLabelFromTitleContent();\n this.observeTitleContentChanges();\n }\n }\n focusModalTitle() {\n this.ionModalDidPresent.pipe(takeUntil(this.willClose$)).subscribe(() => {\n // Use queueMicrotask to defer our focus until after Ionic has saved a reference\n // to the element that should have focus restored when modal is closed.\n // https://github.com/ionic-team/ionic-framework/blob/v8.6.1/core/src/utils/overlays.ts#L592\n queueMicrotask(() => {\n const focusAlreadyInModal = this.ionModalElement?.contains(document.activeElement);\n if (focusAlreadyInModal)\n return;\n this.ionTitleElement?.nativeElement.focus();\n });\n });\n }\n scrollToTop(scrollDuration) {\n this.ionContent.scrollToTop(scrollDuration || 0);\n }\n scrollToBottom(scrollDuration) {\n this.ionContent.scrollToBottom(scrollDuration || 0);\n }\n async close(data) {\n if (!this.ionModalElement) {\n return;\n }\n if (!this.keyboardVisible || !this.viewportResized) {\n // No keyboard visible or viewport not resized:\n // Dismiss modal and return:\n clearTimeout(this.delayedCloseTimeoutId);\n await this.ionModalElement.dismiss(data);\n return;\n }\n // Keyboard visible:\n // Blur active element and wait for keyboard to hide,\n // then dismiss modal and return:\n this.blurActiveElement();\n return new Promise((resolve) => {\n this.delayedClose = async () => {\n await this.ionModalElement.dismiss(data);\n resolve();\n };\n this.delayedCloseTimeoutId = setTimeout(this.delayedClose, ModalWrapperComponent.KEYBOARD_HIDE_DELAY_IN_MS);\n });\n }\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n _onKeyboardShow(keyboardHeight) {\n this.setKeyboardVisibility(keyboardHeight);\n }\n _onKeyboardHide() {\n this.setKeyboardVisibility(0);\n }\n toggleContentMaxHeight(freeze) {\n const shouldToggleMaxHeight = this.config.flavor === 'modal' && this.platform.isPhabletOrBigger();\n if (!shouldToggleMaxHeight)\n return;\n const style = 'max-height';\n const contentElement = this.ionContentElement.nativeElement;\n this.zone.run(() => {\n if (freeze) {\n const contentHeight = contentElement.offsetHeight;\n this.renderer.setStyle(contentElement, style, `${contentHeight}px`);\n }\n else {\n this.renderer.removeStyle(contentElement, style);\n }\n });\n }\n setKeyboardVisibility(keyboardHeight) {\n const keyboardAlreadyVisible = keyboardHeight > 0 && this.keyboardVisible;\n const keyboardAlreadyHidden = keyboardHeight === 0 && !this.keyboardVisible;\n if (keyboardAlreadyVisible || keyboardAlreadyHidden)\n return;\n this.keyboardVisible = keyboardHeight > 0;\n this.toggleContentMaxHeight(this.keyboardVisible);\n this.setKeyboardOverlap(keyboardHeight);\n }\n getKeyboardOverlap(keyboardHeight, element) {\n if (keyboardHeight <= 0 || !element)\n return 0;\n const distanceFromViewportBottomToElement = Math.floor(this.windowRef.nativeWindow.innerHeight - element.getBoundingClientRect().bottom);\n return Math.max(keyboardHeight - distanceFromViewportBottomToElement, 0);\n }\n setCssVar(element, property, value) {\n this.zone.run(() => this.renderer.setStyle(element, property, value, RendererStyleFlags2.DashCase));\n }\n toggleCssClass(element, klass, condition) {\n this.zone.run(() => condition ? this.renderer.addClass(element, klass) : this.renderer.removeClass(element, klass));\n }\n setKeyboardOverlap(keyboardHeight) {\n this.toggleCssClass(this.elementRef.nativeElement, 'keyboard-visible', keyboardHeight > 0);\n const keyboardOverlap = this.getKeyboardOverlap(keyboardHeight, this.elementRef.nativeElement);\n let snapFooterToKeyboard = false;\n const embeddedFooterElement = this.currentFooter;\n if (embeddedFooterElement) {\n this.setCssVar(embeddedFooterElement, '--keyboard-offset', `${keyboardOverlap}px`);\n snapFooterToKeyboard = embeddedFooterElement.classList.contains('snap-to-keyboard');\n }\n const contentElement = this.ionContentElement.nativeElement;\n const contentKeyboardOffset = snapFooterToKeyboard\n ? keyboardOverlap\n : this.getKeyboardOverlap(keyboardHeight, contentElement);\n this.setCssVar(contentElement, '--keyboard-offset', `${contentKeyboardOffset}px`);\n }\n onHeaderTouchStart(event) {\n if (this.keyboardVisible) {\n const isToolbarButtonTouch = this.toolbarButtons.some((button) => {\n return (event.target instanceof HTMLElement &&\n (event.target === button || button.contains(event.target)));\n });\n // Prevent blur if event target is a toolbar button\n // (to allow tap event to fire):\n if (!isToolbarButtonTouch) {\n this.blurActiveElement();\n }\n }\n }\n _onWindowResize() {\n this.setViewportHeight();\n }\n setViewportHeight() {\n const vh = (this.windowRef.nativeWindow.innerHeight * 0.01).toFixed(2);\n this.setCssVar(this.elementRef.nativeElement, '--vh', `${vh}px`);\n }\n observeViewportResize() {\n this.resizeObserverService.observe(this.windowRef.nativeWindow.document.body, (entry) => this.onViewportResize(entry));\n }\n onViewportResize(entry) {\n if (!this.initialViewportHeight) {\n // Initial observe callback, register initial height:\n this.initialViewportHeight = entry.contentRect.height;\n return;\n }\n this.viewportResized = entry.contentRect.height !== this.initialViewportHeight;\n if (!this.viewportResized) {\n // We are back to initial view port height, check for pending close func:\n if (this.delayedCloseTimeoutId) {\n clearTimeout(this.delayedCloseTimeoutId);\n this.delayedClose();\n }\n }\n this.viewportResize.next();\n }\n blurActiveElement() {\n const BLUR_TARGET_SELECTOR = 'input, textarea';\n if (this.keyboardVisible) {\n if (document.activeElement instanceof HTMLElement &&\n document.activeElement.matches(BLUR_TARGET_SELECTOR)) {\n document.activeElement.blur();\n }\n }\n }\n createModalWrapperIntersectionObserver() {\n const callback = (entries) => {\n const entry = entries[0];\n const isTouchingViewport = entry.intersectionRatio < 1;\n if (isTouchingViewport) {\n this.ionModalElement.classList.add('full-height');\n }\n else {\n this.ionModalElement.classList.remove('full-height');\n }\n };\n // Set explicit viewport root if within iframe:\n const root = this.windowRef.nativeWindow.frameElement\n ? this.windowRef.nativeWindow.document // Cast to `any` as Typescript lib.d.ts doesnt support Document type yet\n : undefined;\n const options = {\n rootMargin: '0px 0px -1px 0px', // `bottom: -1px` allows checking when the modal bottom is touching the viewport\n root,\n threshold: [0.99, 1],\n };\n return new IntersectionObserver(callback, options);\n }\n ngOnDestroy() {\n if (this.routerOutlet.isActivated) {\n this.routerOutlet.deactivate();\n }\n //clean up the observer\n this.mutationObserverUnobserveFn?.();\n this.intersectionObserver.disconnect();\n delete this._intersectionObserver;\n if (this.resizeObserverService) {\n this.resizeObserverService.unobserve(this.windowRef.nativeWindow.document.body);\n this.resizeObserverService.unobserve(this.ionHeaderElement.nativeElement);\n this.resizeObserverService.unobserve(this.currentFooter);\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalWrapperComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.ResizeObserverService }, { token: i2.WindowRef }, { token: i3.PlatformService }, { token: i4.CanDismissHelper }, { token: i0.EnvironmentInjector }, { token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: ModalWrapperComponent, isStandalone: true, selector: \"kirby-modal-wrapper\", inputs: { scrollDisabled: \"scrollDisabled\", config: \"config\", content: \"content\" }, host: { listeners: { \"window:focus\": \"onFocusChange()\", \"window:focusout\": \"onFocusChange()\", \"window:ionKeyboardDidShow\": \"_onKeyboardShow($event.detail.keyboardHeight)\", \"window:keyboardWillShow\": \"_onKeyboardShow($event.keyboardHeight)\", \"window:ionKeyboardDidHide\": \"_onKeyboardHide()\", \"window:keyboardWillHide\": \"_onKeyboardHide()\", \"window:resize\": \"_onWindowResize()\" }, properties: { \"class.collapsible-title\": \"this._hasCollapsibleTitle\", \"class.drawer\": \"this._isDrawer\" } }, providers: [\n { provide: Modal, useExisting: ModalWrapperComponent },\n { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },\n ], queries: [{ propertyName: \"templateRef\", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: \"ionContent\", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: \"ionContentElement\", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionHeaderElement\", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionToolbarElement\", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionTitleElement\", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: \"routerOutlet\", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: \"_contentTitleElement\", first: true, predicate: [\"contentTitle\"], descendants: true, read: ElementRef }, { propertyName: \"toolbarButtonsQuery\", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: \"<ion-header\\n role=\\\"presentation\\\"\\n [class.content-scrolled]=\\\"isContentScrolled\\\"\\n (touchstart)=\\\"onHeaderTouchStart($event)\\\"\\n>\\n <ion-toolbar>\\n <ion-title role=\\\"heading\\\" aria-level=\\\"2\\\" tabindex=\\\"-1\\\"></ion-title>\\n @if (config.flavor === 'drawer' && config.drawerSupplementaryAction) {\\n <ion-buttons slot=\\\"secondary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n (click)=\\\"config.drawerSupplementaryAction.action($event)\\\"\\n >\\n <kirby-icon [name]=\\\"config.drawerSupplementaryAction.iconName\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n }\\n <ion-buttons slot=\\\"primary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n [noDecoration]=\\\"config.interactWithBackground\\\"\\n [attr.aria-label]=\\\"translations.get('close')\\\"\\n (click)=\\\"close()\\\"\\n >\\n <kirby-icon name=\\\"close\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n </ion-toolbar>\\n</ion-header>\\n\\n<ion-content [scrollEvents]=\\\"scrollEventsEnabled\\\">\\n @if (_hasCollapsibleTitle) {\\n <ion-header collapse=\\\"condense\\\">\\n <ion-toolbar>\\n <span class=\\\"kirby-text-xlarge\\\" #contentTitle></span>\\n </ion-toolbar>\\n </ion-header>\\n }\\n\\n <!-- Outlet for ModalController -->\\n <ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n ></ng-container>\\n\\n <!-- Outlet for projected content -->\\n <ng-container *ngTemplateOutlet=\\\"content; injector: modalWrapperInjector\\\"></ng-container>\\n\\n <!-- Outlet for route-based modal -->\\n <router-outlet\\n name=\\\"kirbyModalWrapperOutlet\\\"\\n [style.visibility]=\\\"config.modalRoute ? 'visible' : 'hidden'\\\"\\n ></router-outlet>\\n</ion-content>\\n\", styles: [\"ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i5.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[kirby-button],Button[kirby-button],a[kirby-button]\", inputs: [\"attentionLevel\", \"noDecoration\", \"themeColor\", \"expand\", \"isFloating\", \"size\", \"showIconOnly\"] }, { kind: \"ngmodule\", type: IconModule }, { kind: \"component\", type: i6.IconComponent, selector: \"kirby-icon\", inputs: [\"size\", \"name\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i7.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"directive\", type: i7.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: IonHeader, selector: \"ion-header\", inputs: [\"collapse\", \"mode\", \"translucent\"] }, { kind: \"component\", type: IonToolbar, selector: \"ion-toolbar\", inputs: [\"color\", \"mode\"] }, { kind: \"component\", type: IonTitle, selector: \"ion-title\", inputs: [\"color\", \"size\"] }, { kind: \"component\", type: IonButtons, selector: \"ion-buttons\", inputs: [\"collapse\"] }, { kind: \"component\", type: IonContent, selector: \"ion-content\", inputs: [\"color\", \"fixedSlotPlacement\", \"forceOverscroll\", \"fullscreen\", \"scrollEvents\", \"scrollX\", \"scrollY\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalWrapperComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n RouterModule,\n ButtonComponent,\n IconModule,\n CommonModule,\n IonHeader,\n IonToolbar,\n IonTitle,\n IonButtons,\n IonContent,\n ], selector: 'kirby-modal-wrapper', providers: [\n { provide: Modal, useExisting: ModalWrapperComponent },\n { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },\n ], template: \"<ion-header\\n role=\\\"presentation\\\"\\n [class.content-scrolled]=\\\"isContentScrolled\\\"\\n (touchstart)=\\\"onHeaderTouchStart($event)\\\"\\n>\\n <ion-toolbar>\\n <ion-title role=\\\"heading\\\" aria-level=\\\"2\\\" tabindex=\\\"-1\\\"></ion-title>\\n @if (config.flavor === 'drawer' && config.drawerSupplementaryAction) {\\n <ion-buttons slot=\\\"secondary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n (click)=\\\"config.drawerSupplementaryAction.action($event)\\\"\\n >\\n <kirby-icon [name]=\\\"config.drawerSupplementaryAction.iconName\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n }\\n <ion-buttons slot=\\\"primary\\\">\\n <button\\n kirby-button\\n attentionLevel=\\\"3\\\"\\n size=\\\"md\\\"\\n [noDecoration]=\\\"config.interactWithBackground\\\"\\n [attr.aria-label]=\\\"translations.get('close')\\\"\\n (click)=\\\"close()\\\"\\n >\\n <kirby-icon name=\\\"close\\\"></kirby-icon>\\n </button>\\n </ion-buttons>\\n </ion-toolbar>\\n</ion-header>\\n\\n<ion-content [scrollEvents]=\\\"scrollEventsEnabled\\\">\\n @if (_hasCollapsibleTitle) {\\n <ion-header collapse=\\\"condense\\\">\\n <ion-toolbar>\\n <span class=\\\"kirby-text-xlarge\\\" #contentTitle></span>\\n </ion-toolbar>\\n </ion-header>\\n }\\n\\n <!-- Outlet for ModalController -->\\n <ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n ></ng-container>\\n\\n <!-- Outlet for projected content -->\\n <ng-container *ngTemplateOutlet=\\\"content; injector: modalWrapperInjector\\\"></ng-container>\\n\\n <!-- Outlet for route-based modal -->\\n <router-outlet\\n name=\\\"kirbyModalWrapperOutlet\\\"\\n [style.visibility]=\\\"config.modalRoute ? 'visible' : 'hidden'\\\"\\n ></router-outlet>\\n</ion-content>\\n\", styles: [\"ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\\\"100%\\\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.ResizeObserverService }, { type: i2.WindowRef }, { type: i3.PlatformService }, { type: i4.CanDismissHelper }, { type: i0.EnvironmentInjector }, { type: i1.TranslationService }], propDecorators: { _hasCollapsibleTitle: [{\n type: HostBinding,\n args: ['class.collapsible-title']\n }], scrollDisabled: [{\n type: Input\n }], config: [{\n type: Input\n }], content: [{\n type: Input\n }], templateRef: [{\n type: ContentChild,\n args: [TemplateRef]\n }], toolbarButtonsQuery: [{\n type: ViewChildren,\n args: [ButtonComponent, { read: ElementRef }]\n }], ionContent: [{\n type: ViewChild,\n args: [IonContent, { static: true }]\n }], ionContentElement: [{\n type: ViewChild,\n args: [IonContent, { static: true, read: ElementRef }]\n }], ionHeaderElement: [{\n type: ViewChild,\n args: [IonHeader, { static: true, read: ElementRef }]\n }], ionToolbarElement: [{\n type: ViewChild,\n args: [IonToolbar, { static: true, read: ElementRef }]\n }], ionTitleElement: [{\n type: ViewChild,\n args: [IonTitle, { static: true, read: ElementRef }]\n }], routerOutlet: [{\n type: ViewChild,\n args: [RouterOutlet, { static: true }]\n }], _contentTitleElement: [{\n type: ViewChild,\n args: ['contentTitle', { read: ElementRef }]\n }], _isDrawer: [{\n type: HostBinding,\n args: ['class.drawer']\n }], onFocusChange: [{\n type: HostListener,\n args: ['window:focus']\n }, {\n type: HostListener,\n args: ['window:focusout']\n }], _onKeyboardShow: [{\n type: HostListener,\n args: ['window:ionKeyboardDidShow', ['$event.detail.keyboardHeight']]\n }, {\n type: HostListener,\n args: ['window:keyboardWillShow', ['$event.keyboardHeight']]\n }], _onKeyboardHide: [{\n type: HostListener,\n args: ['window:ionKeyboardDidHide']\n }, {\n type: HostListener,\n args: ['window:keyboardWillHide']\n }], _onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFNTCxtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUlqRyxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE9BQU8sRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxHQUVYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEtBQUssRUFB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SUFBSSxFQUFFLFVBQVUsRUFBRTtnQkEyQzNDLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxjQUFjO2dCQXdVM0IsYUFBYTtzQkFGWixZQUFZO3VCQUFDLGNBQWM7O3NCQUMzQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFRL0IsZUFBZTtzQkFGZCxZQUFZO3VCQUFDLDJCQUEyQixFQUFFLENBQUMsOEJBQThCLENBQUM7O3NCQUMxRSxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBT2xFLGVBQWU7c0JBRmQsWUFBWTt1QkFBQywyQkFBMkI7O3NCQUN4QyxZQUFZO3VCQUFDLHlCQUF5QjtnQkFvRnZDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlclN0eWxlRmxhZ3MyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaXJzdCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyLCBnZXRJb25Nb2RhbERpYWxvZ0FuY2VzdG9yIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcblxuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBVbm9ic2VydmVGbiwgV2luZG93UmVmIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90eXBlcyc7XG5pbXBvcnQgeyBvYnNlcnZlQ29udGVudCwgUGxhdGZvcm1TZXJ2aWNlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcblxuaW1wb3J0IHtcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25UaXRsZSxcbiAgSW9uVG9vbGJhcixcbiAgU2Nyb2xsRGV0YWlsLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE1vZGFsLCBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlciwgTW9kYWxFbGVtZW50VHlwZSB9IGZyb20gJy4uL21vZGFsLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ2FuRGlzbWlzc0hlbHBlciB9IGZyb20gJy4uL21vZGFsL3NlcnZpY2VzL2Nhbi1kaXNtaXNzLmhlbHBlcic7XG5pbXBvcnQgeyBNb2RhbENvbmZpZywgU2hvd0FsZXJ0Q2FsbGJhY2sgfSBmcm9tICcuL2NvbmZpZy9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHsgQ09NUE9ORU5UX1BST1BTIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnLmhlbHBlcic7XG5pbXBvcnQgeyBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZSB9IGZyb20gJy4vbW9kYWwtZWxlbWVudHMtbW92ZXIuZGVsZWdhdGUnO1xuXG5jb25zdCBjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyA9IDEwO1xuY29uc3QgY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHMgPSA0O1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uVGl0bGUsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25Db250ZW50LFxuICBdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LW1vZGFsLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNb2RhbCwgdXNlRXhpc3Rpbmc6IE1vZGFsV3JhcHBlckNvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxXcmFwcGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgTW9kYWwsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxue1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbGxhcHNpYmxlLXRpdGxlJylcbiAgZ2V0IF9oYXNDb2xsYXBzaWJsZVRpdGxlKCkge1xuICAgIHJldHVybiAhIXRoaXMuY29uZmlnPy5jb2xsYXBzZVRpdGxlO1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IEtFWUJPQVJEX0hJREVfREVMQVlfSU5fTVMgPSAxMDA7XG5cbiAgc2Nyb2xsWTogbnVtYmVyID0gTWF0aC5hYnModGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFkpO1xuICBwcml2YXRlIHJlYWRvbmx5IFZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FID0gMTAwO1xuXG4gIEBJbnB1dCgpIHNldCBzY3JvbGxEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxZID0gIWRpc2FibGVkO1xuICB9XG5cbiAgc2V0IGNhbkRpc21pc3MoY2FsbGJhY2s6IFNob3dBbGVydENhbGxiYWNrKSB7XG4gICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuY2FuRGlzbWlzcyA9IHRoaXMuY2FuRGlzbWlzc0hlbHBlci5nZXRDYW5EaXNtaXNzQ2FsbGJhY2soY2FsbGJhY2spO1xuICB9XG5cbiAgQElucHV0KCkgY29uZmlnOiBNb2RhbENvbmZpZztcbiAgQElucHV0KCkgY29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb21wb25lbnRQcm9wc0luamVjdG9yOiBJbmplY3RvcjtcbiAgbW9kYWxXcmFwcGVySW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oQnV0dG9uQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSB0b29sYmFyQnV0dG9uc1F1ZXJ5OiBRdWVyeUxpc3Q8XG4gICAgRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD5cbiAgPjtcbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGlvbkNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25IZWFkZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25IZWFkZXJFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25Ub29sYmFyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRvb2xiYXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Ub29sYmFyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVGl0bGUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uVGl0bGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25UaXRsZUVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKFJvdXRlck91dGxldCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSByb3V0ZXJPdXRsZXQ6IFJvdXRlck91dGxldDtcblxuICBAVmlld0NoaWxkKCdjb250ZW50VGl0bGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBfY29udGVudFRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgZ2V0IGNvbnRlbnRUaXRsZUVsZW1lbnQoKTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4ge1xuICAgIC8qXG4gICAgICAgIGNvbnRlbnRUaXRsZUVsZW1lbnQgaGFzIG5nSWYgZGlyZWN0aXZlIGRlcGVuZGVudCBvbiBfaGFzQ29sbGFwc2libGVUaXRsZTsgdHJpZ2dlciBDRCB0byBtYWtlIHN1cmUgZWxlbWVudCBoYXMgYmVlbiBxdWVyaWVkLlxuICAgICAgICBTb2x1dGlvbiB0YWtlbiBmcm9tOiBodHRwczovL2RhbmllbGV5YXNzdS5jb20vYW5ndWxhci12aWV3Y2hpbGQtYW5kLW5naWYvXG4gICAgICAqL1xuICAgIGlmICghdGhpcy5fY29udGVudFRpdGxlRWxlbWVudCAmJiB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUaXRsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRvb2xiYXJCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZGVsYXllZENsb3NlID0gKCkgPT4ge307XG4gIHByaXZhdGUgZGVsYXllZENsb3NlVGltZW91dElkO1xuICBwcml2YXRlIGluaXRpYWxWaWV3cG9ydEhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlvbk1vZGFsRWxlbWVudD86IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgaW9uTW9kYWxEaWFsb2c/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbERpZFByZXNlbnQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSBkaWRQcmVzZW50ID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbERpZFByZXNlbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlvbk1vZGFsV2lsbERpc21pc3MgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSB3aWxsQ2xvc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MpO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSQgPSB0aGlzLnZpZXdwb3J0UmVzaXplXG4gICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUUpKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyVW5vYnNlcnZlRm46IFVub2JzZXJ2ZUZuO1xuICBwcml2YXRlIF9pbnRlcnNlY3Rpb25PYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgZ2V0IGludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBpZiAoIXRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuY3JlYXRlTW9kYWxXcmFwcGVySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICB9XG4gIHNjcm9sbEV2ZW50c0VuYWJsZWQ6IGJvb2xlYW47XG4gIGlzQ29udGVudFNjcm9sbGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYXdlcicpXG4gIGdldCBfaXNEcmF3ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcic7XG4gIH1cblxuICB3aWxsQ2xvc2UkID0gdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLnBpcGUoZmlyc3QoKSk7XG5cbiAgcHJpdmF0ZSBtb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZTogTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcml2YXRlIGNhbkRpc21pc3NIZWxwZXI6IENhbkRpc21pc3NIZWxwZXIsXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gICAgdGhpcy5vYnNlcnZlVmlld3BvcnRSZXNpemUoKTtcbiAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlID0gbmV3IE1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgdGhpcy5pb25Nb2RhbERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNpemluZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1vZGFsUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpO1xuICAgIHRoaXMubGlzdGVuRm9yU2Nyb2xsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpO1xuICAgIHRoaXMuZm9jdXNNb2RhbFRpdGxlKCk7XG4gICAgdGhpcy5jb21wb25lbnRQcm9wc0luamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ09NUE9ORU5UX1BST1BTLCB1c2VWYWx1ZTogdGhpcy5jb25maWcuY29tcG9uZW50UHJvcHMgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vZGFsV3JhcHBlckluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeSkge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyA9IHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeS5tYXAoKGJ1dHRvblJlZikgPT4gYnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0QXJpYUxhYmVsKCk7XG4gIH1cblxuICBwcml2YXRlIF9jdXJyZW50Rm9vdGVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgc2V0IGN1cnJlbnRGb290ZXIoZm9vdGVyOiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEZvb3Rlcikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuX2N1cnJlbnRGb290ZXIpO1xuICAgIH1cbiAgICB0aGlzLl9jdXJyZW50Rm9vdGVyID0gZm9vdGVyO1xuICAgIGlmIChmb290ZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUoZm9vdGVyLCAoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFtcbiAgICAgICAgICAnLS1mb290ZXItaGVpZ2h0JyxcbiAgICAgICAgICBgJHtNYXRoLmZsb29yKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCl9cHhgLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudEZvb3RlciA9IGZvb3RlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnJlbnRGb290ZXIoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEZvb3RlcjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IGFkZE1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLmFkZEZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBtb2RhbEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5USVRMRV06ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUuYWRkVGl0bGUoXG4gICAgICAgICAgbW9kYWxFbGVtZW50LFxuICAgICAgICAgIHRoaXMuY29udGVudFRpdGxlRWxlbWVudCxcbiAgICAgICAgICB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlLFxuICAgICAgICAgIHRoaXMuaW9uVGl0bGVFbGVtZW50XG4gICAgICAgICksXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5hZGRQYWdlUHJvZ3Jlc3MobW9kYWxFbGVtZW50LCB0aGlzLmlvblRvb2xiYXJFbGVtZW50KSxcbiAgICB9W3R5cGVdO1xuXG4gICAgYWRkTW9kYWxFbGVtZW50Rm4oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHJlbW92ZU1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZUZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlRJVExFXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5yZW1vdmVUaXRsZShcbiAgICAgICAgICBtb2RhbEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5faGFzQ29sbGFwc2libGVUaXRsZSxcbiAgICAgICAgICB0aGlzLmNvbnRlbnRUaXRsZUVsZW1lbnRcbiAgICAgICAgKSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlBBR0VfUFJPR1JFU1NdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZVBhZ2VQcm9ncmVzcyhtb2RhbEVsZW1lbnQpLFxuICAgIH1bdHlwZV07XG5cbiAgICByZW1vdmVNb2RhbEVsZW1lbnRGbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiB0aGlzLmNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBtZXJnZSh0aGlzLmlvbk1vZGFsRGlkUHJlc2VudCwgdGhpcy52aWV3cG9ydFJlc2l6ZSQpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gd2FpdCBmb3IgdGVtcGxhdGUgdG8gcmVuZGVyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNsaWVudFdpZHRoIC0gZG9tUmVjdC5yaWdodDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICd0b3AnLCBgJHtkb21SZWN0LnRvcH1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ2xlZnQnLCBgJHtkb21SZWN0LmxlZnR9cHhgKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICdyaWdodCcsIGAke3JpZ2h0fXB4YCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNpemluZygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2l6ZSA9PT0gJ2Z1bGwtaGVpZ2h0JykgcmV0dXJuO1xuICAgIHRoaXMucGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZUhlYWRlclJlc2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTW9kYWxSb3V0ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcubW9kYWxSb3V0ZSkge1xuICAgICAgdGhpcy5vblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHRoaXMuY29uZmlnLnNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCk7XG4gICAgICAvLyBMb2FkIGNvbXBvbmVudCBmcm9tIG1vZGFsLXJvdXRlIGluc2lkZSByb3V0ZXItb3V0bGV0OlxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHRoaXMuY29uZmlnLm1vZGFsUm91dGUsIHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJD86IE9ic2VydmFibGU8QWN0aXZhdGVkUm91dGU+KSB7XG4gICAgaWYgKCFzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQpIHJldHVybjtcbiAgICBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQucGlwZSh0YWtlVW50aWwodGhpcy53aWxsQ2xvc2UkKSkuc3Vic2NyaWJlKChyb3V0ZSkgPT4ge1xuICAgICAgaWYgKHRoaXMucm91dGVyT3V0bGV0LmlzQWN0aXZhdGVkKSB7XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmFjdGl2YXRlV2l0aChyb3V0ZSwgdGhpcy5lbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzID0gJ3BhcnQnIGluIEhUTUxFbGVtZW50LnByb3RvdHlwZTtcbiAgICBpZiAoc3VwcG9ydHNDc3NTaGFkb3dQYXJ0cykgcmV0dXJuO1xuICAgIHRoaXMuaW9uQ29udGVudC5nZXRTY3JvbGxFbGVtZW50KCkudGhlbigoc2Nyb2xsRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2Nyb2xsRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XG4gICAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIHNjcm9sbEVsZW1lbnQsXG4gICAgICAgICAgJ3RyYW5zaXRpb24nLFxuICAgICAgICAgICdwYWRkaW5nLWJvdHRvbSAnICsgRGVzaWduVG9rZW5IZWxwZXIuc29mdEtleWJvYXJkVHJhbnNpdGlvbkxlYXZlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNb2RhbEZ1bGxIZWlnaHQoKSB7XG4gICAgY29uc3QgaW9uTW9kYWxXcmFwcGVyID0gdGhpcy5nZXRJb25Nb2RhbFdyYXBwZXJFbGVtZW50KCk7XG5cbiAgICBpZiAoIWlvbk1vZGFsV3JhcHBlcikgcmV0dXJuO1xuICAgIC8vIFN0YXJ0IG9ic2VydmluZyB3aGVuIG1vZGFsIGhhcyBmaW5pc2hlZCBhbmltYXRpbmc6XG4gICAgdGhpcy5kaWRQcmVzZW50LnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKGlvbk1vZGFsV3JhcHBlcik7XG4gICAgfSk7XG4gIH1cblxuICAvLyBFeHRyYWN0ZWQgaW50byBmdW5jdGlvbiBmb3IgZWFzZSBvZiB0ZXN0aW5nXG4gIHByaXZhdGUgZ2V0SW9uTW9kYWxXcmFwcGVyRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuaW9uTW9kYWxFbGVtZW50LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLm1vZGFsLXdyYXBwZXInKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUhlYWRlclJlc2l6ZSgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LCAoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IFtwcm9wZXJ0eSwgcGl4ZWxWYWx1ZV0gPSBbJy0taGVhZGVyLWhlaWdodCcsIGAke2VudHJ5LmNvbnRlbnRSZWN0LmhlaWdodH1weGBdO1xuICAgICAgdGhpcy5zZXRDc3NWYXIodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHByb3BlcnR5LCBwaXhlbFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCkge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW9kYWxEaWRQcmVzZW50JywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50LmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcklvbk1vZGFsV2lsbERpc21pc3MoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbFdpbGxEaXNtaXNzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MubmV4dCgpO1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yU2Nyb2xsKCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gYChtaW4td2lkdGg6ICR7RGVzaWduVG9rZW5IZWxwZXIuYnJlYWtwb2ludHMubWVkaXVtfSlgO1xuICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG4gICAgY29uc3QgZW5hYmxlU2Nyb2xsRXZlbnRzID0gKGxpc3RPckV2ZW50OiBNZWRpYVF1ZXJ5TGlzdCB8IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGlzRGVza3RvcCA9IGxpc3RPckV2ZW50Lm1hdGNoZXM7XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50c0VuYWJsZWQgPSAhaXNEZXNrdG9wO1xuICAgIH07XG5cbiAgICBlbmFibGVTY3JvbGxFdmVudHMobWVkaWFRdWVyeSk7XG4gICAgbWVkaWFRdWVyeS5vbmNoYW5nZSA9IGVuYWJsZVNjcm9sbEV2ZW50cztcblxuICAgIC8vIFJ1bnMgc2Nyb2xsIHN1YnNjcmlwdGlvbiBvdXRzaWRlIHpvbmUgdG8gYXZvaWQgZXhjZXNzaXZlIGFtb3VudCBvZiBDRCBjeWNsZXNcbiAgICAvLyB3aGVuIGlvblNjcm9sbCBlbWl0cy5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgLy8gQWx3YXlzIHN1YnNjcmliZSBhcyBpb25TY3JvbGwgb25seSBlbWl0cyB3aGVuIHNjcm9sbEV2ZW50c0VuYWJsZWQgaXMgdHJ1ZVxuICAgICAgdGhpcy5pb25Db250ZW50LmlvblNjcm9sbFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMpLFxuICAgICAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LmRldGFpbCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsSW5mbzogU2Nyb2xsRGV0YWlsKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGVudFNjcm9sbGVkUGFzdE9mZnNldCA9IHNjcm9sbEluZm8uc2Nyb2xsVG9wID4gY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHM7XG5cbiAgICAgICAgICBpZiAoY29udGVudFNjcm9sbGVkUGFzdE9mZnNldCAhPT0gdGhpcy5pc0NvbnRlbnRTY3JvbGxlZCkge1xuICAgICAgICAgICAgdGhpcy5pc0NvbnRlbnRTY3JvbGxlZCA9IGNvbnRlbnRTY3JvbGxlZFBhc3RPZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVGl0bGVDb250ZW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJVbm9ic2VydmVGbiA9IG9ic2VydmVDb250ZW50KFxuICAgICAgdGhpcy5pb25UaXRsZUVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMuc2V0QXJpYUxhYmVsRnJvbVRpdGxlQ29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEFyaWFMYWJlbEZyb21UaXRsZUNvbnRlbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgdGl0bGVUZXh0Q29udGVudCA9IHRoaXMuaW9uVGl0bGVFbGVtZW50Py5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50O1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRGlhbG9nICYmIHRpdGxlVGV4dENvbnRlbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaW9uTW9kYWxEaWFsb2csICdhcmlhLWxhYmVsJywgdGl0bGVUZXh0Q29udGVudCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgc2V0QXJpYUxhYmVsKCkge1xuICAgIGNvbnN0IGFyaWFMYWJlbCA9IHRoaXMuY29uZmlnLmh0bWxBdHRyaWJ1dGVzPy5bJ2FyaWEtbGFiZWwnXTtcbiAgICBjb25zdCBpb25Nb2RhbEVsZW1lbnREaWFsb2cgPSBnZXRJb25Nb2RhbERpYWxvZ0FuY2VzdG9yKHRoaXMuaW9uTW9kYWxFbGVtZW50KTtcblxuICAgIGlmIChpb25Nb2RhbEVsZW1lbnREaWFsb2cgJiYgYXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShpb25Nb2RhbEVsZW1lbnREaWFsb2csICdhcmlhLWxhYmVsJywgYXJpYUxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBcmlhTGFiZWxGcm9tVGl0bGVDb250ZW50KCk7XG4gICAgICB0aGlzLm9ic2VydmVUaXRsZUNvbnRlbnRDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c01vZGFsVGl0bGUoKSB7XG4gICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQucGlwZSh0YWtlVW50aWwodGhpcy53aWxsQ2xvc2UkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIFVzZSBxdWV1ZU1pY3JvdGFzayB0byBkZWZlciBvdXIgZm9jdXMgdW50aWwgYWZ0ZXIgSW9uaWMgaGFzIHNhdmVkIGEgcmVmZXJlbmNlXG4gICAgICAvLyB0byB0aGUgZWxlbWVudCB0aGF0IHNob3VsZCBoYXZlIGZvY3VzIHJlc3RvcmVkIHdoZW4gbW9kYWwgaXMgY2xvc2VkLlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lvbmljLXRlYW0vaW9uaWMtZnJhbWV3b3JrL2Jsb2IvdjguNi4xL2NvcmUvc3JjL3V0aWxzL292ZXJsYXlzLnRzI0w1OTJcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgZm9jdXNBbHJlYWR5SW5Nb2RhbCA9IHRoaXMuaW9uTW9kYWxFbGVtZW50Py5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgaWYgKGZvY3VzQWxyZWFkeUluTW9kYWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLmlvblRpdGxlRWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5rZXlib2FyZFZpc2libGUgfHwgIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBObyBrZXlib2FyZCB2aXNpYmxlIG9yIHZpZXdwb3J0IG5vdCByZXNpemVkOlxuICAgICAgLy8gRGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgdmlzaWJsZTpcbiAgICAvLyBCbHVyIGFjdGl2ZSBlbGVtZW50IGFuZCB3YWl0IGZvciBrZXlib2FyZCB0byBoaWRlLFxuICAgIC8vIHRoZW4gZGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZENsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmlvbk1vZGFsRWxlbWVudC5kaXNtaXNzKGRhdGEpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSxcbiAgICAgICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LktFWUJPQVJEX0hJREVfREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRTaG93JywgWyckZXZlbnQuZGV0YWlsLmtleWJvYXJkSGVpZ2h0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQua2V5Ym9hcmRIZWlnaHQnXSlcbiAgX29uS2V5Ym9hcmRTaG93KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eShrZXlib2FyZEhlaWdodCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRIaWRlJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZEhpZGUoKSB7XG4gICAgdGhpcy5zZXRLZXlib2FyZFZpc2liaWxpdHkoMCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQoZnJlZXplOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2hvdWxkVG9nZ2xlTWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyAmJiB0aGlzLnBsYXRmb3JtLmlzUGhhYmxldE9yQmlnZ2VyKCk7XG4gICAgaWYgKCFzaG91bGRUb2dnbGVNYXhIZWlnaHQpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9ICdtYXgtaGVpZ2h0JztcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGlmIChmcmVlemUpIHtcbiAgICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUsIGAke2NvbnRlbnRIZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGVudEVsZW1lbnQsIHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlib2FyZEFscmVhZHlWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwICYmIHRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeUhpZGRlbiA9IGtleWJvYXJkSGVpZ2h0ID09PSAwICYmICF0aGlzLmtleWJvYXJkVmlzaWJsZTtcbiAgICBpZiAoa2V5Ym9hcmRBbHJlYWR5VmlzaWJsZSB8fCBrZXlib2FyZEFscmVhZHlIaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmtleWJvYXJkVmlzaWJsZSA9IGtleWJvYXJkSGVpZ2h0ID4gMDtcbiAgICB0aGlzLnRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQodGhpcy5rZXlib2FyZFZpc2libGUpO1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAoa2V5Ym9hcmRIZWlnaHQgPD0gMCB8fCAhZWxlbWVudCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQgPSBNYXRoLmZsb29yKFxuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b21cbiAgICApO1xuICAgIHJldHVybiBNYXRoLm1heChrZXlib2FyZEhlaWdodCAtIGRpc3RhbmNlRnJvbVZpZXdwb3J0Qm90dG9tVG9FbGVtZW50LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3NzVmFyKGVsZW1lbnQ6IEVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDc3NDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBrbGFzczogc3RyaW5nLCBjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBjb25kaXRpb24gPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGtsYXNzKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwga2xhc3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvZ2dsZUNzc0NsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQtdmlzaWJsZScsIGtleWJvYXJkSGVpZ2h0ID4gMCk7XG4gICAgY29uc3Qga2V5Ym9hcmRPdmVybGFwID0gdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICBsZXQgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBmYWxzZTtcbiAgICBjb25zdCBlbWJlZGRlZEZvb3RlckVsZW1lbnQgPSB0aGlzLmN1cnJlbnRGb290ZXI7XG4gICAgaWYgKGVtYmVkZGVkRm9vdGVyRWxlbWVudCkge1xuICAgICAgdGhpcy5zZXRDc3NWYXIoZW1iZWRkZWRGb290ZXJFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtrZXlib2FyZE92ZXJsYXB9cHhgKTtcbiAgICAgIHNuYXBGb290ZXJUb0tleWJvYXJkID0gZW1iZWRkZWRGb290ZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc25hcC10by1rZXlib2FyZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRlbnRLZXlib2FyZE9mZnNldCA9IHNuYXBGb290ZXJUb0tleWJvYXJkXG4gICAgICA/IGtleWJvYXJkT3ZlcmxhcFxuICAgICAgOiB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgY29udGVudEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKGNvbnRlbnRFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtjb250ZW50S2V5Ym9hcmRPZmZzZXR9cHhgKTtcbiAgfVxuXG4gIG9uSGVhZGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgY29uc3QgaXNUb29sYmFyQnV0dG9uVG91Y2ggPSB0aGlzLnRvb2xiYXJCdXR0b25zLnNvbWUoKGJ1dHRvbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gYnV0dG9uIHx8IGJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICAvLyBQcmV2ZW50IGJsdXIgaWYgZXZlbnQgdGFyZ2V0IGlzIGEgdG9vbGJhciBidXR0b25cbiAgICAgIC8vICh0byBhbGxvdyB0YXAgZXZlbnQgdG8gZmlyZSk6XG4gICAgICBpZiAoIWlzVG9vbGJhckJ1dHRvblRvdWNoKSB7XG4gICAgICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgY29uc3QgdmggPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0ICogMC4wMSkudG9GaXhlZCgyKTtcbiAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJy0tdmgnLCBgJHt2aH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVmlld3BvcnRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSwgKGVudHJ5KSA9PlxuICAgICAgdGhpcy5vblZpZXdwb3J0UmVzaXplKGVudHJ5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVmlld3BvcnRSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAvLyBJbml0aWFsIG9ic2VydmUgY2FsbGJhY2ssIHJlZ2lzdGVyIGluaXRpYWwgaGVpZ2h0OlxuICAgICAgdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemVkID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ICE9PSB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBXZSBhcmUgYmFjayB0byBpbml0aWFsIHZpZXcgcG9ydCBoZWlnaHQsIGNoZWNrIGZvciBwZW5kaW5nIGNsb3NlIGZ1bmM6XG4gICAgICBpZiAodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgICAgdGhpcy5kZWxheWVkQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZS5uZXh0KCk7XG4gIH1cblxuICBibHVyQWN0aXZlRWxlbWVudCgpIHtcbiAgICBjb25zdCBCTFVSX1RBUkdFVF9TRUxFQ1RPUiA9ICdpbnB1dCwgdGV4dGFyZWEnO1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5tYXRjaGVzKEJMVVJfVEFSR0VUX1NFTEVDVE9SKVxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNyZWF0ZU1vZGFsV3JhcHBlckludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBjb25zdCBpc1RvdWNoaW5nVmlld3BvcnQgPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDE7XG4gICAgICBpZiAoaXNUb3VjaGluZ1ZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmdWxsLWhlaWdodCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXQgZXhwbGljaXQgdmlld3BvcnQgcm9vdCBpZiB3aXRoaW4gaWZyYW1lOlxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZnJhbWVFbGVtZW50XG4gICAgICA/ICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQgYXMgYW55KSAvLyBDYXN0IHRvIGBhbnlgIGFzIFR5cGVzY3JpcHQgbGliLmQudHMgZG9lc250IHN1cHBvcnQgRG9jdW1lbnQgdHlwZSB5ZXRcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMHB4IC0xcHggMHB4JywgLy8gYGJvdHRvbTogLTFweGAgYWxsb3dzIGNoZWNraW5nIHdoZW4gdGhlIG1vZGFsIGJvdHRvbSBpcyB0b3VjaGluZyB0aGUgdmlld3BvcnRcbiAgICAgIHJvb3QsXG4gICAgICB0aHJlc2hvbGQ6IFswLjk5LCAxXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgLy9jbGVhbiB1cCB0aGUgb2JzZXJ2ZXJcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJVbm9ic2VydmVGbj8uKCk7XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgZGVsZXRlIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZSkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5jdXJyZW50Rm9vdGVyKTtcbiAgICB9XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlclxuICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgW2NsYXNzLmNvbnRlbnQtc2Nyb2xsZWRdPVwiaXNDb250ZW50U2Nyb2xsZWRcIlxuICAodG91Y2hzdGFydCk9XCJvbkhlYWRlclRvdWNoU3RhcnQoJGV2ZW50KVwiXG4+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLXRpdGxlIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1sZXZlbD1cIjJcIiB0YWJpbmRleD1cIi0xXCI+PC9pb24tdGl0bGU+XG4gICAgQGlmIChjb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiBjb25maWcuZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbikge1xuICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgICAoY2xpY2spPVwiY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24uYWN0aW9uKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGtpcmJ5LWljb24gW25hbWVdPVwiY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24uaWNvbk5hbWVcIj48L2tpcmJ5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICB9XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJwcmltYXJ5XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICBhdHRlbnRpb25MZXZlbD1cIjNcIlxuICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICBbbm9EZWNvcmF0aW9uXT1cImNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmFuc2xhdGlvbnMuZ2V0KCdjbG9zZScpXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgPlxuICAgICAgICA8a2lyYnktaWNvbiBuYW1lPVwiY2xvc2VcIj48L2tpcmJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgW3Njcm9sbEV2ZW50c109XCJzY3JvbGxFdmVudHNFbmFibGVkXCI+XG4gIEBpZiAoX2hhc0NvbGxhcHNpYmxlVGl0bGUpIHtcbiAgICA8aW9uLWhlYWRlciBjb2xsYXBzZT1cImNvbmRlbnNlXCI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwia2lyYnktdGV4dC14bGFyZ2VcIiAjY29udGVudFRpdGxlPjwvc3Bhbj5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICB9XG5cbiAgPCEtLSBPdXRsZXQgZm9yIE1vZGFsQ29udHJvbGxlciAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbmZpZy5jb21wb25lbnQ7IGluamVjdG9yOiBjb21wb25lbnRQcm9wc0luamVjdG9yXCJcbiAgPjwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciBwcm9qZWN0ZWQgY29udGVudCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQ7IGluamVjdG9yOiBtb2RhbFdyYXBwZXJJbmplY3RvclwiPjwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciByb3V0ZS1iYXNlZCBtb2RhbCAtLT5cbiAgPHJvdXRlci1vdXRsZXRcbiAgICBuYW1lPVwia2lyYnlNb2RhbFdyYXBwZXJPdXRsZXRcIlxuICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cImNvbmZpZy5tb2RhbFJvdXRlID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxuICA+PC9yb3V0ZXItb3V0bGV0PlxuPC9pb24tY29udGVudD5cbiJdfQ==","export class DrawerSupplementaryAction {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLXN1cHBsZW1lbnRhcnktYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsLXdyYXBwZXIvY29uZmlnL2RyYXdlci1zdXBwbGVtZW50YXJ5LWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8seUJBQXlCO0NBSXJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24ge1xuICBpY29uTmFtZTogc3RyaW5nO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlXG4gIGFjdGlvbjogRnVuY3Rpb247XG59XG4iXX0=","import { Component, HostListener, Injector, Input, } from '@angular/core';\nimport { firstValueFrom, Subject } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { getIonModalDialogAncestor } from '@kirbydesign/designsystem/helpers';\nimport { COMPONENT_PROPS } from '../config/modal-config.helper';\nimport { Modal } from '../../modal.interfaces';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/types\";\nimport * as i2 from \"../../modal/services/can-dismiss.helper\";\nimport * as i3 from \"@angular/common\";\nexport class ModalCompactWrapperComponent {\n constructor(injector, elementRef, windowRef, canDismissHelper, renderer) {\n this.injector = injector;\n this.elementRef = elementRef;\n this.windowRef = windowRef;\n this.canDismissHelper = canDismissHelper;\n this.renderer = renderer;\n this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);\n this.scrollDisabled = false;\n this.ionModalDidPresent = new Subject();\n this.ionModalWillDismiss = new Subject();\n this.didPresent = firstValueFrom(this.ionModalDidPresent);\n this.willClose = firstValueFrom(this.ionModalWillDismiss);\n }\n ngOnInit() {\n this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');\n this.setAriaLabel();\n this.listenForIonModalDidPresent();\n this.listenForIonModalWillDismiss();\n this.componentPropsInjector = Injector.create({\n providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],\n parent: this.injector,\n });\n }\n listenForIonModalDidPresent() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalDidPresent', () => {\n this.ionModalDidPresent.next();\n this.ionModalDidPresent.complete();\n });\n }\n }\n listenForIonModalWillDismiss() {\n if (this.ionModalElement) {\n this.ionModalElement.addEventListener('ionModalWillDismiss', () => {\n this.ionModalWillDismiss.next();\n this.ionModalWillDismiss.complete();\n });\n }\n }\n setAriaLabel() {\n const ionModalElementDialog = getIonModalDialogAncestor(this.ionModalElement);\n const ariaLabel = this.config.htmlAttributes?.['aria-label'];\n if (ionModalElementDialog && ariaLabel) {\n this.renderer.setAttribute(ionModalElementDialog, 'aria-label', ariaLabel);\n }\n }\n async close(data) {\n if (this.ionModalElement) {\n await this.ionModalElement.dismiss(data);\n }\n }\n set canDismiss(callback) {\n this.ionModalElement.canDismiss = this.canDismissHelper.getCanDismissCallback(callback);\n }\n onFocusChange() {\n // This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):\n this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalCompactWrapperComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i1.WindowRef }, { token: i2.CanDismissHelper }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.2\", type: ModalCompactWrapperComponent, isStandalone: true, selector: \"kirby-modal-compact-wrapper\", inputs: { config: \"config\", content: \"content\" }, host: { listeners: { \"window:focus\": \"onFocusChange()\", \"window:focusout\": \"onFocusChange()\" }, properties: { \"class.ion-page\": \"false\" } }, providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }], ngImport: i0, template: \"<!-- Outlet for ModalController -->\\n<ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n></ng-container>\\n\\n<!-- Outlet for projected content -->\\n<ng-container *ngTemplateOutlet=\\\"content\\\"></ng-container>\\n\", styles: [\":host{display:block;padding:24px 16px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i3.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"directive\", type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalCompactWrapperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kirby-modal-compact-wrapper', providers: [{ provide: Modal, useExisting: ModalCompactWrapperComponent }], imports: [CommonModule], host: { '[class.ion-page]': 'false' }, template: \"<!-- Outlet for ModalController -->\\n<ng-container\\n *ngComponentOutlet=\\\"config.component; injector: componentPropsInjector\\\"\\n></ng-container>\\n\\n<!-- Outlet for projected content -->\\n<ng-container *ngTemplateOutlet=\\\"content\\\"></ng-container>\\n\", styles: [\":host{display:block;padding:24px 16px}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i1.WindowRef }, { type: i2.CanDismissHelper }, { type: i0.Renderer2 }], propDecorators: { config: [{\n type: Input\n }], content: [{\n type: Input\n }], onFocusChange: [{\n type: HostListener,\n args: ['window:focus']\n }, {\n type: HostListener,\n args: ['window:focusout']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL2NvbXBhY3QvbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL2NvbXBhY3QvbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBVy9DLE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxRQUFrQixFQUNsQixVQUFtQyxFQUNuQyxTQUFvQixFQUNwQixnQkFBa0MsRUFDbEMsUUFBbUI7UUFKbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWY3QixZQUFPLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxtQkFBYyxHQUFH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QTRCLEVBQUUsQ0FBQywwQkN4QjVFLDJQQU9BLGlHRGtCWSxZQUFZOzsyRkFHWCw0QkFBNEI7a0JBUnhDLFNBQVM7K0JBQ0UsNkJBQTZCLGFBRzVCLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsOEJBQThCLEVBQUUsQ0FBQyxXQUNqRSxDQUFDLFlBQVksQ0FBQyxRQUNqQixFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRTtxTEFHNUIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkF5RU4sYUFBYTtzQkFGWixZQUFZO3VCQUFDLGNBQWM7O3NCQUMzQixZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90eXBlcyc7XG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBnZXRJb25Nb2RhbERpYWxvZ0FuY2VzdG9yIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IE1vZGFsQ29uZmlnLCBTaG93QWxlcnRDYWxsYmFjayB9IGZyb20gJy4uL2NvbmZpZy9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHsgQ09NUE9ORU5UX1BST1BTIH0gZnJvbSAnLi4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuLi8uLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhbkRpc21pc3NIZWxwZXIgfSBmcm9tICcuLi8uLi9tb2RhbC9zZXJ2aWNlcy9jYW4tZGlzbWlzcy5oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC1jb21wYWN0LXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbENvbXBhY3RXcmFwcGVyQ29tcG9uZW50IH1dLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgaG9zdDogeyAnW2NsYXNzLmlvbi1wYWdlXSc6ICdmYWxzZScgfSxcbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wYWN0V3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1vZGFsLCBPbkluaXQge1xuICBASW5wdXQoKSBjb25maWc6IE1vZGFsQ29uZmlnO1xuICBASW5wdXQoKSBjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgc2Nyb2xsRGlzYWJsZWQgPSBmYWxzZTtcbiAgY29tcG9uZW50UHJvcHNJbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgcHJpdmF0ZSBpb25Nb2RhbEVsZW1lbnQ6IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9uTW9kYWxEaWRQcmVzZW50ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbFdpbGxEaXNtaXNzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgZGlkUHJlc2VudCA9IGZpcnN0VmFsdWVGcm9tKHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50KTtcbiAgcmVhZG9ubHkgd2lsbENsb3NlID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBjYW5EaXNtaXNzSGVscGVyOiBDYW5EaXNtaXNzSGVscGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0KCdpb24tbW9kYWwnKTtcbiAgICB0aGlzLnNldEFyaWFMYWJlbCgpO1xuXG4gICAgdGhpcy5saXN0ZW5Gb3JJb25Nb2RhbERpZFByZXNlbnQoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsV2lsbERpc21pc3MoKTtcbiAgICB0aGlzLmNvbXBvbmVudFByb3BzSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDT01QT05FTlRfUFJPUFMsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZy5jb21wb25lbnRQcm9wcyB9XSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCkge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW9kYWxEaWRQcmVzZW50JywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50LmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcklvbk1vZGFsV2lsbERpc21pc3MoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbFdpbGxEaXNtaXNzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MubmV4dCgpO1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QXJpYUxhYmVsKCkge1xuICAgIGNvbnN0IGlvbk1vZGFsRWxlbWVudERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5pb25Nb2RhbEVsZW1lbnQpO1xuICAgIGNvbnN0IGFyaWFMYWJlbCA9IHRoaXMuY29uZmlnLmh0bWxBdHRyaWJ1dGVzPy5bJ2FyaWEtbGFiZWwnXTtcbiAgICBpZiAoaW9uTW9kYWxFbGVtZW50RGlhbG9nICYmIGFyaWFMYWJlbCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW9uTW9kYWxFbGVtZW50RGlhbG9nLCAnYXJpYS1sYWJlbCcsIGFyaWFMYWJlbCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xvc2UoZGF0YT86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgYXdhaXQgdGhpcy5pb25Nb2RhbEVsZW1lbnQuZGlzbWlzcyhkYXRhKTtcbiAgICB9XG4gIH1cblxuICBzZXQgY2FuRGlzbWlzcyhjYWxsYmFjazogU2hvd0FsZXJ0Q2FsbGJhY2spIHtcbiAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jYW5EaXNtaXNzID0gdGhpcy5jYW5EaXNtaXNzSGVscGVyLmdldENhbkRpc21pc3NDYWxsYmFjayhjYWxsYmFjayk7XG4gIH1cblxuICBzY3JvbGxUb1RvcDogKF8/OiBhbnkpID0+IHZvaWQ7XG4gIHNjcm9sbFRvQm90dG9tOiAoXz86IGFueSkgPT4gdm9pZDtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cbn1cbiIsIjwhLS0gT3V0bGV0IGZvciBNb2RhbENvbnRyb2xsZXIgLS0+XG48bmctY29udGFpbmVyXG4gICpuZ0NvbXBvbmVudE91dGxldD1cImNvbmZpZy5jb21wb25lbnQ7IGluamVjdG9yOiBjb21wb25lbnRQcm9wc0luamVjdG9yXCJcbj48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBPdXRsZXQgZm9yIHByb2plY3RlZCBjb250ZW50IC0tPlxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { createAnimation } from '@ionic/angular/standalone';\nimport { KirbyAnimation } from '@kirbydesign/designsystem/helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/helpers\";\nexport class ModalAnimationBuilderService {\n constructor(platform) {\n this.platform = platform;\n this.easingEnter = KirbyAnimation.Easing.modal.enter;\n this.easingLeave = KirbyAnimation.Easing.modal.exit;\n this.duration = KirbyAnimation.Duration.LONG;\n this.SwipeToCloseDefaults = {\n MIN_PRESENTING_SCALE: 0.93,\n };\n this.createEnterAnimation = () => {\n const backdropAnimation = createAnimation()\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .beforeStyles({\n 'pointer-events': 'none',\n })\n .afterClearStyles(['pointer-events']);\n const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');\n return { backdropAnimation, wrapperAnimation };\n };\n this.createLeaveAnimation = () => {\n const backdropAnimation = createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);\n const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');\n return { backdropAnimation, wrapperAnimation };\n };\n /**\n * Gets the root context of a shadow dom element\n * On newer browsers this will be the shadowRoot,\n * but for older browser this may just be the\n * element itself.\n *\n * Useful for whenever you need to explicitly\n * do \"myElement.shadowRoot!.querySelector(...)\".\n */\n this.getElementRoot = (el, fallback = el) => {\n return el.shadowRoot || fallback;\n };\n }\n enterAnimation(currentBackdrop) {\n return (baseEl, opts) => {\n const { presentingEl } = opts;\n const root = this.getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = this.createEnterAnimation();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation\n .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))\n .beforeStyles({ opacity: 1 });\n const baseAnimation = createAnimation('entering-base')\n .addElement(baseEl)\n .easing(this.easingEnter)\n .duration(this.duration)\n .addAnimation(wrapperAnimation);\n let currentBackdropAnimation;\n if (currentBackdrop) {\n currentBackdropAnimation = createAnimation()\n .addElement(currentBackdrop)\n .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);\n }\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&\n presentingEl.presentingElement !== undefined;\n const presentingElRoot = this.getElementRoot(presentingEl);\n const presentingAnimation = createAnimation().beforeStyles({\n transform: 'translateY(0)',\n 'transform-origin': 'top center',\n overflow: 'hidden',\n });\n const bodyEl = document.body;\n if (isMobile) {\n /**\n * Fallback for browsers that does not support `max()` (ex: Firefox)\n * No need to worry about statusbar padding since engines like Gecko\n * are not used as the engine for standalone Cordova/Capacitor apps\n */\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))\n .addElement(presentingEl)\n .keyframes([\n {\n offset: 0,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n {\n offset: 1,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '0', '1');\n }\n else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingElRoot.querySelector('.modal-wrapper'))\n .keyframes([\n { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },\n ]);\n const shadowAnimation = createAnimation()\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingElRoot.querySelector('.modal-shadow'))\n .keyframes([\n { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },\n { offset: 1, opacity: '0', transform: finalTransform },\n ]);\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n return baseAnimation;\n };\n }\n leaveAnimation(currentBackdrop) {\n return (baseEl, opts, duration = this.duration) => {\n const { presentingEl } = opts;\n const root = this.getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = this.createLeaveAnimation();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation\n .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))\n .beforeStyles({ opacity: 1 });\n const baseAnimation = createAnimation('leaving-base')\n .addElement(baseEl)\n .easing(this.easingLeave)\n .duration(duration)\n .addAnimation(wrapperAnimation);\n let currentBackdropAnimation;\n if (currentBackdrop) {\n currentBackdropAnimation = createAnimation()\n .addElement(currentBackdrop)\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .afterStyles({ opacity: 'var(--backdrop-opacity)' }); //Ensures backdrop is reset to default opacity after swipe to close\n }\n if (presentingEl) {\n const isMobile = !this.platform.isPhabletOrBigger();\n const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&\n presentingEl.presentingElement !== undefined;\n const presentingElRoot = this.getElementRoot(presentingEl);\n const presentingAnimation = createAnimation()\n .beforeClearStyles(['transform'])\n .afterClearStyles(['transform'])\n .onFinish((currentStep) => {\n // only reset background color if this is the last card-style modal\n if (currentStep !== 1) {\n return;\n }\n presentingEl.style.setProperty('overflow', '');\n const numModals = Array.from(bodyEl.querySelectorAll('ion-modal')).filter((m) => m.presentingElement !== undefined).length;\n if (numModals <= 1) {\n bodyEl.style.setProperty('background-color', '');\n }\n });\n const bodyEl = document.body;\n if (isMobile) {\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)')\n ? '30px'\n : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n presentingAnimation.addElement(presentingEl).keyframes([\n {\n offset: 0,\n filter: 'contrast(0.85)',\n transform: finalTransform,\n borderRadius: '10px 10px 0 0',\n },\n {\n offset: 1,\n filter: 'contrast(1)',\n transform: 'translateY(0px) scale(1)',\n borderRadius: '0px',\n },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '1', '0');\n }\n else {\n const toPresentingScale = hasCardModal\n ? this.SwipeToCloseDefaults.MIN_PRESENTING_SCALE\n : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n presentingAnimation\n .addElement(presentingElRoot.querySelector('.modal-wrapper'))\n .afterStyles({\n transform: 'translate3d(0, 0, 0)',\n })\n .keyframes([\n { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },\n { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n ]);\n const shadowAnimation = createAnimation()\n .addElement(presentingElRoot.querySelector('.modal-shadow'))\n .afterStyles({\n transform: 'translateY(0) scale(1)',\n })\n .keyframes([\n { offset: 0, opacity: '0', transform: finalTransform },\n { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },\n ]);\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (currentBackdropAnimation) {\n baseAnimation.addAnimation(currentBackdropAnimation);\n }\n }\n return baseAnimation;\n };\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalAnimationBuilderService, deps: [{ token: i1.PlatformService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalAnimationBuilderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalAnimationBuilderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.PlatformService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYW5pbWF0aW9uLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC1hbmltYXRpb24tYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQUduRSxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQW9CLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRTVCLGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQy9DLGFBQVEsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRztZQUN0QyxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7UUFnUU0seUJBQW9CLEdBQUcsR0FBRyxFQUFFO1lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxFQUFFO2lCQUN4QyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSx5QkFBeUIsQ0FBQztpQkFDbEQsWUFBWSxDQUFDO2dCQUNaLGdCQUFnQixFQUFFLE1BQU07YUFDekIsQ0FBQztpQkFDRCxnQkFBZ0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUV4QyxNQUFNLGdCQUFnQixHQUFHLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FDL0MsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixpQkFBaUIsQ0FDbEIsQ0FBQztZQUVGLE9BQU8s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ckUsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDOUMsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO29CQUM3QixhQUFhLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztpSUF0UVUsNEJBQTRCO3FJQUE1Qiw0QkFBNEIsY0FEZixNQUFNOzsyRkFDbkIsNEJBQTRCO2tCQUR4QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuaW1hdGlvbiwgQW5pbWF0aW9uQnVpbGRlciwgY3JlYXRlQW5pbWF0aW9uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxBbmltYXRpb25CdWlsZGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSkge31cblxuICBwcml2YXRlIHJlYWRvbmx5IGVhc2luZ0VudGVyID0gS2lyYnlBbmltYXRpb24uRWFzaW5nLm1vZGFsLmVudGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGVhc2luZ0xlYXZlID0gS2lyYnlBbmltYXRpb24uRWFzaW5nLm1vZGFsLmV4aXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgZHVyYXRpb24gPSBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbi5MT05HO1xuICBwcml2YXRlIHJlYWRvbmx5IFN3aXBlVG9DbG9zZURlZmF1bHRzID0ge1xuICAgIE1JTl9QUkVTRU5USU5HX1NDQUxFOiAwLjkzLFxuICB9O1xuXG4gIHB1YmxpYyBlbnRlckFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3A/OiBIVE1MSW9uQmFja2Ryb3BFbGVtZW50KTogQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIChiYXNlRWw6IEhUTUxFbGVtZW50LCBvcHRzOiB7IHByZXNlbnRpbmdFbD86IEhUTUxFbGVtZW50IH0pOiBBbmltYXRpb24gPT4ge1xuICAgICAgY29uc3QgeyBwcmVzZW50aW5nRWwgfSA9IG9wdHM7XG4gICAgICBjb25zdCByb290ID0gdGhpcy5nZXRFbGVtZW50Um9vdChiYXNlRWwpO1xuICAgICAgY29uc3QgeyB3cmFwcGVyQW5pbWF0aW9uLCBiYWNrZHJvcEFuaW1hdGlvbiB9ID0gdGhpcy5jcmVhdGVFbnRlckFuaW1hdGlvbigpO1xuXG4gICAgICBiYWNrZHJvcEFuaW1hdGlvbi5hZGRFbGVtZW50KHJvb3QucXVlcnlTZWxlY3RvcignaW9uLWJhY2tkcm9wJykhKTtcblxuICAgICAgd3JhcHBlckFuaW1hdGlvblxuICAgICAgICAuYWRkRWxlbWVudChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2RhbC13cmFwcGVyLCAubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAuYmVmb3JlU3R5bGVzKHsgb3BhY2l0eTogMSB9KTtcblxuICAgICAgY29uc3QgYmFzZUFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbignZW50ZXJpbmctYmFzZScpXG4gICAgICAgIC5hZGRFbGVtZW50KGJhc2VFbClcbiAgICAgICAgLmVhc2luZyh0aGlzLmVhc2luZ0VudGVyKVxuICAgICAgICAuZHVyYXRpb24odGhpcy5kdXJhdGlvbilcbiAgICAgICAgLmFkZEFuaW1hdGlvbih3cmFwcGVyQW5pbWF0aW9uKTtcblxuICAgICAgbGV0IGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbjogQW5pbWF0aW9uO1xuICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcCkge1xuICAgICAgICBjdXJyZW50QmFja2Ryb3BBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKVxuICAgICAgICAgIC5hZGRFbGVtZW50KGN1cnJlbnRCYWNrZHJvcClcbiAgICAgICAgICAuZnJvbVRvKCdvcGFjaXR5JywgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJywgMC4wMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVzZW50aW5nRWwpIHtcbiAgICAgICAgY29uc3QgaXNNb2JpbGUgPSAhdGhpcy5wbGF0Zm9ybS5pc1BoYWJsZXRPckJpZ2dlcigpO1xuICAgICAgICBjb25zdCBoYXNDYXJkTW9kYWwgPVxuICAgICAgICAgIHByZXNlbnRpbmdFbC50YWdOYW1lID09PSAnSU9OLU1PREFMJyAmJlxuICAgICAgICAgIChwcmVzZW50aW5nRWwgYXMgSFRNTElvbk1vZGFsRWxlbWVudCkucHJlc2VudGluZ0VsZW1lbnQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcHJlc2VudGluZ0VsUm9vdCA9IHRoaXMuZ2V0RWxlbWVudFJvb3QocHJlc2VudGluZ0VsKTtcblxuICAgICAgICBjb25zdCBwcmVzZW50aW5nQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKCkuYmVmb3JlU3R5bGVzKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyxcbiAgICAgICAgICAndHJhbnNmb3JtLW9yaWdpbic6ICd0b3AgY2VudGVyJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGJvZHlFbCA9IGRvY3VtZW50LmJvZHk7XG5cbiAgICAgICAgaWYgKGlzTW9iaWxlKSB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRmFsbGJhY2sgZm9yIGJyb3dzZXJzIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBgbWF4KClgIChleDogRmlyZWZveClcbiAgICAgICAgICAgKiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0YXR1c2JhciBwYWRkaW5nIHNpbmNlIGVuZ2luZXMgbGlrZSBHZWNrb1xuICAgICAgICAgICAqIGFyZSBub3QgdXNlZCBhcyB0aGUgZW5naW5lIGZvciBzdGFuZGFsb25lIENvcmRvdmEvQ2FwYWNpdG9yIGFwcHNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1PZmZzZXQgPSAhQ1NTLnN1cHBvcnRzKCd3aWR0aCcsICdtYXgoMHB4LCAxcHgpJylcbiAgICAgICAgICAgID8gJzMwcHgnXG4gICAgICAgICAgICA6ICdtYXgoMzBweCwgdmFyKC0taW9uLXNhZmUtYXJlYS10b3ApKSc7XG4gICAgICAgICAgY29uc3QgbW9kYWxUcmFuc2Zvcm0gPSBoYXNDYXJkTW9kYWwgPyAnLTEwcHgnIDogdHJhbnNmb3JtT2Zmc2V0O1xuICAgICAgICAgIGNvbnN0IHRvUHJlc2VudGluZ1NjYWxlID0gdGhpcy5Td2lwZVRvQ2xvc2VEZWZhdWx0cy5NSU5fUFJFU0VOVElOR19TQ0FMRTtcbiAgICAgICAgICBjb25zdCBmaW5hbFRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7bW9kYWxUcmFuc2Zvcm19KSBzY2FsZSgke3RvUHJlc2VudGluZ1NjYWxlfSlgO1xuXG4gICAgICAgICAgcHJlc2VudGluZ0FuaW1hdGlvblxuICAgICAgICAgICAgLmFmdGVyU3R5bGVzKHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYmVmb3JlQWRkV3JpdGUoKCkgPT4gYm9keUVsLnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kLWNvbG9yJywgJ2JsYWNrJykpXG4gICAgICAgICAgICAuYWRkRWxlbWVudChwcmVzZW50aW5nRWwpXG4gICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICdjb250cmFzdCgxKScsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwcHgpIHNjYWxlKDEpJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcwcHgnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogJ2NvbnRyYXN0KDAuODUpJyxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzEwcHggMTBweCAwIDAnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihwcmVzZW50aW5nQW5pbWF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihiYWNrZHJvcEFuaW1hdGlvbik7XG5cbiAgICAgICAgICBpZiAoY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghaGFzQ2FyZE1vZGFsKSB7XG4gICAgICAgICAgICB3cmFwcGVyQW5pbWF0aW9uLmZyb21Ubygnb3BhY2l0eScsICcwJywgJzEnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG9QcmVzZW50aW5nU2NhbGUgPSBoYXNDYXJkTW9kYWxcbiAgICAgICAgICAgICAgPyB0aGlzLlN3aXBlVG9DbG9zZURlZmF1bHRzLk1JTl9QUkVTRU5USU5HX1NDQUxFXG4gICAgICAgICAgICAgIDogMTtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsVHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoLTEwcHgpIHNjYWxlKCR7dG9QcmVzZW50aW5nU2NhbGV9KWA7XG5cbiAgICAgICAgICAgIHByZXNlbnRpbmdBbmltYXRpb25cbiAgICAgICAgICAgICAgLmFmdGVyU3R5bGVzKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYWRkRWxlbWVudChwcmVzZW50aW5nRWxSb290LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC13cmFwcGVyJykhKVxuICAgICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMCwgZmlsdGVyOiAnY29udHJhc3QoMSknLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApIHNjYWxlKDEpJyB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBmaWx0ZXI6ICdjb250cmFzdCgwLjg1KScsIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0gfSxcbiAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNoYWRvd0FuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpXG4gICAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsUm9vdC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMCwgb3BhY2l0eTogJzEnLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApIHNjYWxlKDEpJyB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBvcGFjaXR5OiAnMCcsIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0gfSxcbiAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKFtwcmVzZW50aW5nQW5pbWF0aW9uLCBzaGFkb3dBbmltYXRpb25dKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbikge1xuICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJhc2VBbmltYXRpb247XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBsZWF2ZUFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3A/OiBIVE1MSW9uQmFja2Ryb3BFbGVtZW50KTogQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIGJhc2VFbDogSFRNTEVsZW1lbnQsXG4gICAgICBvcHRzOiB7IHByZXNlbnRpbmdFbD86IEhUTUxFbGVtZW50IH0sXG4gICAgICBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb25cbiAgICApOiBBbmltYXRpb24gPT4ge1xuICAgICAgY29uc3QgeyBwcmVzZW50aW5nRWwgfSA9IG9wdHM7XG4gICAgICBjb25zdCByb290ID0gdGhpcy5nZXRFbGVtZW50Um9vdChiYXNlRWwpO1xuICAgICAgY29uc3QgeyB3cmFwcGVyQW5pbWF0aW9uLCBiYWNrZHJvcEFuaW1hdGlvbiB9ID0gdGhpcy5jcmVhdGVMZWF2ZUFuaW1hdGlvbigpO1xuXG4gICAgICBiYWNrZHJvcEFuaW1hdGlvbi5hZGRFbGVtZW50KHJvb3QucXVlcnlTZWxlY3RvcignaW9uLWJhY2tkcm9wJykhKTtcblxuICAgICAgd3JhcHBlckFuaW1hdGlvblxuICAgICAgICAuYWRkRWxlbWVudChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2RhbC13cmFwcGVyLCAubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAuYmVmb3JlU3R5bGVzKHsgb3BhY2l0eTogMSB9KTtcblxuICAgICAgY29uc3QgYmFzZUFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbignbGVhdmluZy1iYXNlJylcbiAgICAgICAgLmFkZEVsZW1lbnQoYmFzZUVsKVxuICAgICAgICAuZWFzaW5nKHRoaXMuZWFzaW5nTGVhdmUpXG4gICAgICAgIC5kdXJhdGlvbihkdXJhdGlvbilcbiAgICAgICAgLmFkZEFuaW1hdGlvbih3cmFwcGVyQW5pbWF0aW9uKTtcblxuICAgICAgbGV0IGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbjogQW5pbWF0aW9uO1xuICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcCkge1xuICAgICAgICBjdXJyZW50QmFja2Ryb3BBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKVxuICAgICAgICAgIC5hZGRFbGVtZW50KGN1cnJlbnRCYWNrZHJvcClcbiAgICAgICAgICAuZnJvbVRvKCdvcGFjaXR5JywgMC4wMSwgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJylcbiAgICAgICAgICAuYWZ0ZXJTdHlsZXMoeyBvcGFjaXR5OiAndmFyKC0tYmFja2Ryb3Atb3BhY2l0eSknIH0pOyAvL0Vuc3VyZXMgYmFja2Ryb3AgaXMgcmVzZXQgdG8gZGVmYXVsdCBvcGFjaXR5IGFmdGVyIHN3aXBlIHRvIGNsb3NlXG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVzZW50aW5nRWwpIHtcbiAgICAgICAgY29uc3QgaXNNb2JpbGUgPSAhdGhpcy5wbGF0Zm9ybS5pc1BoYWJsZXRPckJpZ2dlcigpO1xuICAgICAgICBjb25zdCBoYXNDYXJkTW9kYWwgPVxuICAgICAgICAgIHByZXNlbnRpbmdFbC50YWdOYW1lID09PSAnSU9OLU1PREFMJyAmJlxuICAgICAgICAgIChwcmVzZW50aW5nRWwgYXMgSFRNTElvbk1vZGFsRWxlbWVudCkucHJlc2VudGluZ0VsZW1lbnQgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcHJlc2VudGluZ0VsUm9vdCA9IHRoaXMuZ2V0RWxlbWVudFJvb3QocHJlc2VudGluZ0VsKTtcblxuICAgICAgICBjb25zdCBwcmVzZW50aW5nQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKClcbiAgICAgICAgICAuYmVmb3JlQ2xlYXJTdHlsZXMoWyd0cmFuc2Zvcm0nXSlcbiAgICAgICAgICAuYWZ0ZXJDbGVhclN0eWxlcyhbJ3RyYW5zZm9ybSddKVxuICAgICAgICAgIC5vbkZpbmlzaCgoY3VycmVudFN0ZXApID0+IHtcbiAgICAgICAgICAgIC8vIG9ubHkgcmVzZXQgYmFja2dyb3VuZCBjb2xvciBpZiB0aGlzIGlzIHRoZSBsYXN0IGNhcmQtc3R5bGUgbW9kYWxcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcCAhPT0gMSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByZXNlbnRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IG51bU1vZGFscyA9IEFycmF5LmZyb20oYm9keUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lvbi1tb2RhbCcpKS5maWx0ZXIoXG4gICAgICAgICAgICAgIChtKSA9PiBtLnByZXNlbnRpbmdFbGVtZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICkubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG51bU1vZGFscyA8PSAxKSB7XG4gICAgICAgICAgICAgIGJvZHlFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnYmFja2dyb3VuZC1jb2xvcicsICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBib2R5RWwgPSBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgIGlmIChpc01vYmlsZSkge1xuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybU9mZnNldCA9ICFDU1Muc3VwcG9ydHMoJ3dpZHRoJywgJ21heCgwcHgsIDFweCknKVxuICAgICAgICAgICAgPyAnMzBweCdcbiAgICAgICAgICAgIDogJ21heCgzMHB4LCB2YXIoLS1pb24tc2FmZS1hcmVhLXRvcCkpJztcbiAgICAgICAgICBjb25zdCBtb2RhbFRyYW5zZm9ybSA9IGhhc0NhcmRNb2RhbCA/ICctMTBweCcgOiB0cmFuc2Zvcm1PZmZzZXQ7XG4gICAgICAgICAgY29uc3QgdG9QcmVzZW50aW5nU2NhbGUgPSB0aGlzLlN3aXBlVG9DbG9zZURlZmF1bHRzLk1JTl9QUkVTRU5USU5HX1NDQUxFO1xuICAgICAgICAgIGNvbnN0IGZpbmFsVHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoJHttb2RhbFRyYW5zZm9ybX0pIHNjYWxlKCR7dG9QcmVzZW50aW5nU2NhbGV9KWA7XG5cbiAgICAgICAgICBwcmVzZW50aW5nQW5pbWF0aW9uLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsKS5rZXlmcmFtZXMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICAgIGZpbHRlcjogJ2NvbnRyYXN0KDAuODUpJyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTBweCAxMHB4IDAgMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgICAgIGZpbHRlcjogJ2NvbnRyYXN0KDEpJyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwcHgpIHNjYWxlKDEpJyxcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMHB4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG5cbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihwcmVzZW50aW5nQW5pbWF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihiYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbikge1xuICAgICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWhhc0NhcmRNb2RhbCkge1xuICAgICAgICAgICAgd3JhcHBlckFuaW1hdGlvbi5mcm9tVG8oJ29wYWNpdHknLCAnMScsICcwJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRvUHJlc2VudGluZ1NjYWxlID0gaGFzQ2FyZE1vZGFsXG4gICAgICAgICAgICAgID8gdGhpcy5Td2lwZVRvQ2xvc2VEZWZhdWx0cy5NSU5fUFJFU0VOVElOR19TQ0FMRVxuICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICBjb25zdCBmaW5hbFRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKC0xMHB4KSBzY2FsZSgke3RvUHJlc2VudGluZ1NjYWxlfSlgO1xuXG4gICAgICAgICAgICBwcmVzZW50aW5nQW5pbWF0aW9uXG4gICAgICAgICAgICAgIC5hZGRFbGVtZW50KHByZXNlbnRpbmdFbFJvb3QucXVlcnlTZWxlY3RvcignLm1vZGFsLXdyYXBwZXInKSEpXG4gICAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMCwgMCknLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMCwgZmlsdGVyOiAnY29udHJhc3QoMC44NSknLCB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtIH0sXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDEsIGZpbHRlcjogJ2NvbnRyYXN0KDEpJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSBzY2FsZSgxKScgfSxcbiAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNoYWRvd0FuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpXG4gICAgICAgICAgICAgIC5hZGRFbGVtZW50KHByZXNlbnRpbmdFbFJvb3QucXVlcnlTZWxlY3RvcignLm1vZGFsLXNoYWRvdycpISlcbiAgICAgICAgICAgICAgLmFmdGVyU3R5bGVzKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApIHNjYWxlKDEpJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDAsIG9wYWNpdHk6ICcwJywgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBvcGFjaXR5OiAnMScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCkgc2NhbGUoMSknIH0sXG4gICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihbcHJlc2VudGluZ0FuaW1hdGlvbiwgc2hhZG93QW5pbWF0aW9uXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihiYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgIGlmIChjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pIHtcbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYXNlQW5pbWF0aW9uO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUVudGVyQW5pbWF0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGJhY2tkcm9wQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKClcbiAgICAgIC5mcm9tVG8oJ29wYWNpdHknLCAwLjAxLCAndmFyKC0tYmFja2Ryb3Atb3BhY2l0eSknKVxuICAgICAgLmJlZm9yZVN0eWxlcyh7XG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6ICdub25lJyxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbGVhclN0eWxlcyhbJ3BvaW50ZXItZXZlbnRzJ10pO1xuXG4gICAgY29uc3Qgd3JhcHBlckFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpLmZyb21UbyhcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgJ3RyYW5zbGF0ZVkoMTAwdmgpJyxcbiAgICAgICd0cmFuc2xhdGVZKDB2aCknXG4gICAgKTtcblxuICAgIHJldHVybiB7IGJhY2tkcm9wQW5pbWF0aW9uLCB3cmFwcGVyQW5pbWF0aW9uIH07XG4gIH07XG5cbiAgcHJpdmF0ZSBjcmVhdGVMZWF2ZUFuaW1hdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCBiYWNrZHJvcEFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpLmZyb21Ubygnb3BhY2l0eScsICd2YXIoLS1iYWNrZHJvcC1vcGFjaXR5KScsIDApO1xuXG4gICAgY29uc3Qgd3JhcHBlckFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpLmZyb21UbyhcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgJ3RyYW5zbGF0ZVkoMHZoKScsXG4gICAgICAndHJhbnNsYXRlWSgxMDB2aCknXG4gICAgKTtcblxuICAgIHJldHVybiB7IGJhY2tkcm9wQW5pbWF0aW9uLCB3cmFwcGVyQW5pbWF0aW9uIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJvb3QgY29udGV4dCBvZiBhIHNoYWRvdyBkb20gZWxlbWVudFxuICAgKiBPbiBuZXdlciBicm93c2VycyB0aGlzIHdpbGwgYmUgdGhlIHNoYWRvd1Jvb3QsXG4gICAqIGJ1dCBmb3Igb2xkZXIgYnJvd3NlciB0aGlzIG1heSBqdXN0IGJlIHRoZVxuICAgKiBlbGVtZW50IGl0c2VsZi5cbiAgICpcbiAgICogVXNlZnVsIGZvciB3aGVuZXZlciB5b3UgbmVlZCB0byBleHBsaWNpdGx5XG4gICAqIGRvIFwibXlFbGVtZW50LnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoLi4uKVwiLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFbGVtZW50Um9vdCA9IChlbDogSFRNTEVsZW1lbnQsIGZhbGxiYWNrOiBIVE1MRWxlbWVudCA9IGVsKSA9PiB7XG4gICAgcmV0dXJuIGVsLnNoYWRvd1Jvb3QgfHwgZmFsbGJhY2s7XG4gIH07XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { NavigationEnd, NavigationStart, } from '@angular/router';\nimport { EMPTY, firstValueFrom } from 'rxjs';\nimport { filter, map, pairwise, skipUntil, startWith, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class ModalNavigationService {\n constructor(router, route) {\n this.router = router;\n this.route = route;\n this.navigationEndListener$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));\n }\n isModalRoute(url) {\n return url.includes('(modal:');\n }\n getCurrentActivatedRoute() {\n let childRoute = this.route.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n return childRoute;\n }\n async getModalRoutes(routeConfig, moduleRootRoutePath) {\n const flattenedRoutes = [].concat(...routeConfig);\n let modalRoutes = [];\n const moduleRootPaths = await this.getModuleRootPath(flattenedRoutes, moduleRootRoutePath);\n if (moduleRootPaths) {\n modalRoutes = this.getModalRoutePaths(flattenedRoutes, moduleRootPaths);\n }\n return modalRoutes;\n }\n async getModuleRootPath(routes, moduleRootRoutePath) {\n if (moduleRootRoutePath) {\n const trimmedPaths = moduleRootRoutePath\n .trim()\n .split('/')\n .filter((path) => !!path);\n const rootPath = [''];\n return rootPath.concat(trimmedPaths);\n }\n const currentRoutePaths = await this.getCurrentRoutePaths();\n const moduleRootPaths = this.getRoutePathsWithoutChildSegments(currentRoutePaths, routes);\n return moduleRootPaths;\n }\n async getCurrentRoutePaths() {\n const rootPath = [''];\n const currentNavigation = this.router.getCurrentNavigation();\n if (!this.router.navigated && !currentNavigation) {\n // If router hasn't navigated yet and we are not in the middle of navigating, assume root:\n return rootPath;\n }\n if (currentNavigation) {\n // Wait for current navigation to finish:\n await firstValueFrom(this.navigationEndListener$);\n }\n let childRoute = this.route.snapshot.root;\n while (childRoute.firstChild) {\n childRoute = childRoute.firstChild;\n }\n const currentBackdropRoutePath = childRoute.pathFromRoot.filter((route) => route.outlet !== 'modal');\n return rootPath.concat(...currentBackdropRoutePath.map((route) => route.url.filter((segment) => !!segment.path).map((segment) => segment.path)));\n }\n getRoutePathsWithoutChildSegments(routePaths, routes) {\n if (!routePaths.length)\n return routePaths;\n const matchedChildRoute = this.findChildRouteForUrl(routePaths.join('/'), routes);\n if (!matchedChildRoute)\n return routePaths;\n const startSlashRegex = /^\\//;\n const relativeChildRoute = matchedChildRoute.replace(startSlashRegex, '');\n const childSegmentCount = relativeChildRoute.split('/').length;\n const routePathsWithoutChildSegments = routePaths.slice(0, -childSegmentCount); // Remove child segments from end of route path array\n return routePathsWithoutChildSegments;\n }\n findChildRouteForUrl(url, routes) {\n const moduleRelativePaths = this.getRoutePaths(routes, ['']).sort().reverse(); // Ensure child paths are evaluated first\n let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));\n if (!matchedChildRoute) {\n // No static child route found matching current route - look for child route with url params:\n const exactMatch = false;\n matchedChildRoute = moduleRelativePaths.find((path) => path.includes('/:') && this.pathContainsChildRouteWithUrlParams(url, path, exactMatch));\n }\n return matchedChildRoute;\n }\n pathContainsChildRouteWithUrlParams(path, childRouteWithUrlParams, exactMatch) {\n const pathSegments = path.split('/');\n const startSlashRegex = /^\\//;\n let childRouteToMatch = childRouteWithUrlParams;\n if (!exactMatch) {\n const relativeChildRoute = childRouteWithUrlParams.replace(startSlashRegex, '');\n childRouteToMatch = relativeChildRoute;\n }\n const childRouteSegments = childRouteToMatch.split('/');\n // Match each child route segment against url\n // Match backwards from end to start of child route, i.e. \"url ends with child route\":\n const pathContainsChildRoute = childRouteSegments.reverse().every((childRouteSegment) => {\n const pathSegment = pathSegments.pop();\n // url params (e.g. `/:id/`) are treated as a match:\n return childRouteSegment.startsWith(':') || childRouteSegment === pathSegment;\n });\n if (exactMatch) {\n // Only match if we've reached the start of the url to match against:\n return pathSegments.length === 0 && pathContainsChildRoute;\n }\n return pathContainsChildRoute;\n }\n getRoutePaths(routes, parentPath) {\n return Array.isArray(routes)\n ? [].concat(...routes.map((route) => this.getRoutePath(route, parentPath)))\n : [];\n }\n getRoutePath(route, parentPath) {\n const routes = [];\n if (route.outlet)\n return routes; // Don't return relative paths for outlet routes\n const currentPath = [...parentPath];\n if (route.path) {\n currentPath.push(route.path);\n routes.push(currentPath.join('/'));\n }\n return routes.concat(this.getRoutePaths(route.children, currentPath));\n }\n getModalRoutePath(route, parentPath) {\n const modalOutletName = 'modal';\n if (!!route.path && route.outlet === modalOutletName) {\n const modalOutletPath = `(${modalOutletName}:${route.path})`;\n const modalRoutePath = [...parentPath, modalOutletPath].join('/');\n return [modalRoutePath];\n }\n const currentPath = [...parentPath];\n if (route.path) {\n currentPath.push(route.path);\n }\n return [].concat(...this.getModalRoutePaths(route.children, currentPath));\n }\n getModalRoutePaths(routes, parentPath) {\n return Array.isArray(routes)\n ? [].concat(...routes.map((route) => this.getModalRoutePath(route, parentPath)))\n : [];\n }\n isNewModalWindow(navigationEnd) {\n const currentNavigation = this.router.getCurrentNavigation();\n if (!currentNavigation || !currentNavigation.previousNavigation) {\n return true;\n }\n const previousRoutePath = (currentNavigation.previousNavigation.finalUrl ||\n currentNavigation.previousNavigation.extractedUrl).toString();\n const wasModalRoute = this.isModalRoute(previousRoutePath);\n const isModalRoute = this.isModalRoute(navigationEnd.urlAfterRedirects);\n if (!wasModalRoute && isModalRoute) {\n return true;\n }\n const currentModalRouteParent = navigationEnd.urlAfterRedirects.split('/(modal:')[0];\n const previousModalRouteParent = previousRoutePath.split('/(modal:')[0];\n return previousModalRouteParent !== currentModalRouteParent;\n }\n async waitForCurrentThenGetNavigationEndStream() {\n if (this.router.getCurrentNavigation()) {\n const currentNavigationEnd = await firstValueFrom(this.navigationEndListener$);\n return this.navigationEndListener$.pipe(startWith(currentNavigationEnd));\n }\n return this.navigationEndListener$;\n }\n modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams) {\n return navigationEnd$.pipe(filter((navigationEnd) => this.modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams)), map((navigationEnd) => {\n return {\n route: this.getCurrentActivatedRoute(),\n isNewModal: this.isNewModalWindow(navigationEnd),\n };\n }));\n }\n modalRouteDeactivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams) {\n return navigationEnd$.pipe(pairwise(), \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n filter(([prevNavigation, _]) => this.modalRouteSetContainsPath(modalRouteSet, prevNavigation, modalRoutesContainsUrlParams)), // Only emit if previous route was modal\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n map(([_, currentNavigation]) => {\n const isNewModalRoute = this.isModalRoute(currentNavigation.urlAfterRedirects);\n // Deactivate modal route if new route is NOT modal OR is outside current parent route:\n return !isNewModalRoute || this.isNewModalWindow(currentNavigation);\n }), filter((isDeactivation) => isDeactivation));\n }\n modalRouteSetContainsPath(modalRouteSet, navigationEnd, modalRoutesContainsUrlParams) {\n const pathname = navigationEnd.urlAfterRedirects.split('?')[0];\n let hasRoute = modalRouteSet.has(pathname);\n if (!hasRoute && modalRoutesContainsUrlParams) {\n // Use `for ... of` instead of `forEach` so we can break out of the loop if route is found:\n for (const route of modalRouteSet) {\n const exactMatch = true;\n const routeMatchesPath = this.pathContainsChildRouteWithUrlParams(pathname, route, exactMatch);\n if (routeMatchesPath) {\n hasRoute = true;\n break;\n }\n }\n }\n return hasRoute;\n }\n async getModalNavigation(routeConfig, moduleRootRoutePath) {\n if (Array.isArray(routeConfig)) {\n const navigationEnd$ = await this.waitForCurrentThenGetNavigationEndStream();\n const modalRoutes = await this.getModalRoutes(routeConfig, moduleRootRoutePath);\n const hasModalRoutes = modalRoutes.length > 0;\n if (hasModalRoutes) {\n const modalRoutesContainsUrlParams = modalRoutes.some((route) => route.includes('/:'));\n const modalRouteSet = new Set(modalRoutes);\n const activated$ = this.modalRouteActivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);\n const deactivated$ = this.modalRouteDeactivatedFor(navigationEnd$, modalRouteSet, modalRoutesContainsUrlParams);\n return { activated$, deactivated$ };\n }\n }\n return { activated$: EMPTY, deactivated$: EMPTY };\n }\n async navigateToModal(path, queryParams) {\n const commands = Array.isArray(path) ? [...path] : path.split('/');\n const childPath = commands.pop();\n const result = await this.router.navigate([...commands, { outlets: { modal: [childPath] } }], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n return result;\n }\n async navigateWithinModal(relativePath, queryParams) {\n return this.router.navigate([relativePath], {\n queryParams,\n relativeTo: this.getCurrentActivatedRoute(),\n });\n }\n async navigateOutOfModalOutlet() {\n const currentActivatedRoute = this.getCurrentActivatedRoute();\n const currentNavigationFinalUrl = this.router.getCurrentNavigation()?.finalUrl?.toString();\n const isCurrentlyNavigatingOutOfModalOutlet = currentNavigationFinalUrl && !this.isModalRoute(currentNavigationFinalUrl);\n if (currentActivatedRoute.outlet !== 'modal' || isCurrentlyNavigatingOutOfModalOutlet) {\n // Nothing to do here, bail out:\n return Promise.resolve(true);\n }\n const parentRoute = this.getBackdropRoute(currentActivatedRoute);\n return this.router.navigate(['./'], {\n relativeTo: parentRoute,\n });\n }\n getBackdropRoute(currentActivatedRoute) {\n let parentRoute = currentActivatedRoute.parent;\n while (parentRoute && !parentRoute.component && !!parentRoute.parent) {\n parentRoute = parentRoute.parent;\n }\n return parentRoute;\n }\n handleBrowserBackButton(modal) {\n const popstateNavigationStart$ = this.router.events.pipe(filter((event) => event instanceof NavigationStart && event.navigationTrigger === 'popstate'));\n const navigationEnd$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd));\n navigationEnd$\n .pipe(skipUntil(popstateNavigationStart$), takeUntil(modal.onWillDismiss()))\n .subscribe(() => {\n modal.dismiss();\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalNavigationService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalNavigationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalNavigationService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFFTCxhQUFhLEVBQ2IsZUFBZSxHQUtoQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLeEYsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUNVLE1BQWMsRUFDZCxLQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUEyTHZCLDJCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdEQsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEwQixFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUMxRSxDQUFDO0lBNUxDLENBQUM7SUFFSixZQUFZLENBQUMsR0FBVztRQUN0QixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNqQyxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxj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Q0FBQyxDQUFDO2FBQzNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO2lJQS9WVSxzQkFBc0I7cUlBQXRCLHNCQUFzQixjQURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGUsXG4gIE5hdmlnYXRpb25FbmQsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgUGFyYW1zLFxuICBSb3V0ZSxcbiAgUm91dGVyLFxuICBSb3V0ZXMsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFTVBUWSwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBwYWlyd2lzZSwgc2tpcFVudGlsLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTW9kYWxSb3V0ZUFjdGl2YXRpb24gfSBmcm9tICcuL21vZGFsLmludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsTmF2aWdhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBpc01vZGFsUm91dGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXJsLmluY2x1ZGVzKCcobW9kYWw6Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpOiBBY3RpdmF0ZWRSb3V0ZSB7XG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkUm91dGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1vZGFsUm91dGVzKFxuICAgIHJvdXRlQ29uZmlnOiBSb3V0ZXNbXSxcbiAgICBtb2R1bGVSb290Um91dGVQYXRoPzogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBmbGF0dGVuZWRSb3V0ZXM6IFJvdXRlcyA9IFtdLmNvbmNhdCguLi5yb3V0ZUNvbmZpZyk7XG4gICAgbGV0IG1vZGFsUm91dGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG1vZHVsZVJvb3RQYXRocyA9IGF3YWl0IHRoaXMuZ2V0TW9kdWxlUm9vdFBhdGgoZmxhdHRlbmVkUm91dGVzLCBtb2R1bGVSb290Um91dGVQYXRoKTtcbiAgICBpZiAobW9kdWxlUm9vdFBhdGhzKSB7XG4gICAgICBtb2RhbFJvdXRlcyA9IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKGZsYXR0ZW5lZFJvdXRlcywgbW9kdWxlUm9vdFBhdGhzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsUm91dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRNb2R1bGVSb290UGF0aChyb3V0ZXM6IFJvdXRlcywgbW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAobW9kdWxlUm9vdFJvdXRlUGF0aCkge1xuICAgICAgY29uc3QgdHJpbW1lZFBhdGhzID0gbW9kdWxlUm9vdFJvdXRlUGF0aFxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5maWx0ZXIoKHBhdGgpID0+ICEhcGF0aCk7XG4gICAgICBjb25zdCByb290UGF0aCA9IFsnJ107XG4gICAgICByZXR1cm4gcm9vdFBhdGguY29uY2F0KHRyaW1tZWRQYXRocyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJvdXRlUGF0aHMgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRSb3V0ZVBhdGhzKCk7XG4gICAgY29uc3QgbW9kdWxlUm9vdFBhdGhzID0gdGhpcy5nZXRSb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHMoY3VycmVudFJvdXRlUGF0aHMsIHJvdXRlcyk7XG4gICAgcmV0dXJuIG1vZHVsZVJvb3RQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q3VycmVudFJvdXRlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gWycnXTtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMucm91dGVyLm5hdmlnYXRlZCAmJiAhY3VycmVudE5hdmlnYXRpb24pIHtcbiAgICAgIC8vIElmIHJvdXRlciBoYXNuJ3QgbmF2aWdhdGVkIHlldCBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIGFzc3VtZSByb290OlxuICAgICAgcmV0dXJuIHJvb3RQYXRoO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TmF2aWdhdGlvbikge1xuICAgICAgLy8gV2FpdCBmb3IgY3VycmVudCBuYXZpZ2F0aW9uIHRvIGZpbmlzaDpcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJCk7XG4gICAgfVxuXG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEJhY2tkcm9wUm91dGVQYXRoID0gY2hpbGRSb3V0ZS5wYXRoRnJvbVJvb3QuZmlsdGVyKFxuICAgICAgKHJvdXRlKSA9PiByb3V0ZS5vdXRsZXQgIT09ICdtb2RhbCdcbiAgICApO1xuXG4gICAgcmV0dXJuIHJvb3RQYXRoLmNvbmNhdChcbiAgICAgIC4uLmN1cnJlbnRCYWNrZHJvcFJvdXRlUGF0aC5tYXAoKHJvdXRlKSA9PlxuICAgICAgICByb3V0ZS51cmwuZmlsdGVyKChzZWdtZW50KSA9PiAhIXNlZ21lbnQucGF0aCkubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzKHJvdXRlUGF0aHM6IHN0cmluZ1tdLCByb3V0ZXM6IFJvdXRlcyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXJvdXRlUGF0aHMubGVuZ3RoKSByZXR1cm4gcm91dGVQYXRocztcblxuICAgIGNvbnN0IG1hdGNoZWRDaGlsZFJvdXRlID0gdGhpcy5maW5kQ2hpbGRSb3V0ZUZvclVybChyb3V0ZVBhdGhzLmpvaW4oJy8nKSwgcm91dGVzKTtcblxuICAgIGlmICghbWF0Y2hlZENoaWxkUm91dGUpIHJldHVybiByb3V0ZVBhdGhzO1xuXG4gICAgY29uc3Qgc3RhcnRTbGFzaFJlZ2V4ID0gL15cXC8vO1xuICAgIGNvbnN0IHJlbGF0aXZlQ2hpbGRSb3V0ZSA9IG1hdGNoZWRDaGlsZFJvdXRlLnJlcGxhY2Uoc3RhcnRTbGFzaFJlZ2V4LCAnJyk7XG4gICAgY29uc3QgY2hpbGRTZWdtZW50Q291bnQgPSByZWxhdGl2ZUNoaWxkUm91dGUuc3BsaXQoJy8nKS5sZW5ndGg7XG4gICAgY29uc3Qgcm91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzID0gcm91dGVQYXRocy5zbGljZSgwLCAtY2hpbGRTZWdtZW50Q291bnQpOyAvLyBSZW1vdmUgY2hpbGQgc2VnbWVudHMgZnJvbSBlbmQgb2Ygcm91dGUgcGF0aCBhcnJheVxuICAgIHJldHVybiByb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHM7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDaGlsZFJvdXRlRm9yVXJsKHVybDogc3RyaW5nLCByb3V0ZXM6IFJvdXRlcykge1xuICAgIGNvbnN0IG1vZHVsZVJlbGF0aXZlUGF0aHMgPSB0aGlzLmdldFJvdXRlUGF0aHMocm91dGVzLCBbJyddKS5zb3J0KCkucmV2ZXJzZSgpOyAvLyBFbnN1cmUgY2hpbGQgcGF0aHMgYXJlIGV2YWx1YXRlZCBmaXJzdFxuICAgIGxldCBtYXRjaGVkQ2hpbGRSb3V0ZSA9IG1vZHVsZVJlbGF0aXZlUGF0aHMuZmluZCgocGF0aCkgPT4gdXJsLmVuZHNXaXRoKHBhdGgpKTtcbiAgICBpZiAoIW1hdGNoZWRDaGlsZFJvdXRlKSB7XG4gICAgICAvLyBObyBzdGF0aWMgY2hpbGQgcm91dGUgZm91bmQgbWF0Y2hpbmcgY3VycmVudCByb3V0ZSAtIGxvb2sgZm9yIGNoaWxkIHJvdXRlIHdpdGggdXJsIHBhcmFtczpcbiAgICAgIGNvbnN0IGV4YWN0TWF0Y2ggPSBmYWxzZTtcbiAgICAgIG1hdGNoZWRDaGlsZFJvdXRlID0gbW9kdWxlUmVsYXRpdmVQYXRocy5maW5kKFxuICAgICAgICAocGF0aCkgPT5cbiAgICAgICAgICBwYXRoLmluY2x1ZGVzKCcvOicpICYmIHRoaXMucGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXModXJsLCBwYXRoLCBleGFjdE1hdGNoKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZWRDaGlsZFJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRoQ29udGFpbnNDaGlsZFJvdXRlV2l0aFVybFBhcmFtcyhcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM6IHN0cmluZyxcbiAgICBleGFjdE1hdGNoOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCBzdGFydFNsYXNoUmVnZXggPSAvXlxcLy87XG4gICAgbGV0IGNoaWxkUm91dGVUb01hdGNoID0gY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM7XG4gICAgaWYgKCFleGFjdE1hdGNoKSB7XG4gICAgICBjb25zdCByZWxhdGl2ZUNoaWxkUm91dGUgPSBjaGlsZFJvdXRlV2l0aFVybFBhcmFtcy5yZXBsYWNlKHN0YXJ0U2xhc2hSZWdleCwgJycpO1xuICAgICAgY2hpbGRSb3V0ZVRvTWF0Y2ggPSByZWxhdGl2ZUNoaWxkUm91dGU7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUm91dGVTZWdtZW50cyA9IGNoaWxkUm91dGVUb01hdGNoLnNwbGl0KCcvJyk7XG4gICAgLy8gTWF0Y2ggZWFjaCBjaGlsZCByb3V0ZSBzZWdtZW50IGFnYWluc3QgdXJsXG4gICAgLy8gTWF0Y2ggYmFja3dhcmRzIGZyb20gZW5kIHRvIHN0YXJ0IG9mIGNoaWxkIHJvdXRlLCBpLmUuIFwidXJsIGVuZHMgd2l0aCBjaGlsZCByb3V0ZVwiOlxuICAgIGNvbnN0IHBhdGhDb250YWluc0NoaWxkUm91dGUgPSBjaGlsZFJvdXRlU2VnbWVudHMucmV2ZXJzZSgpLmV2ZXJ5KChjaGlsZFJvdXRlU2VnbWVudCkgPT4ge1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSBwYXRoU2VnbWVudHMucG9wKCk7XG4gICAgICAvLyB1cmwgcGFyYW1zIChlLmcuIGAvOmlkL2ApIGFyZSB0cmVhdGVkIGFzIGEgbWF0Y2g6XG4gICAgICByZXR1cm4gY2hpbGRSb3V0ZVNlZ21lbnQuc3RhcnRzV2l0aCgnOicpIHx8IGNoaWxkUm91dGVTZWdtZW50ID09PSBwYXRoU2VnbWVudDtcbiAgICB9KTtcbiAgICBpZiAoZXhhY3RNYXRjaCkge1xuICAgICAgLy8gT25seSBtYXRjaCBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBzdGFydCBvZiB0aGUgdXJsIHRvIG1hdGNoIGFnYWluc3Q6XG4gICAgICByZXR1cm4gcGF0aFNlZ21lbnRzLmxlbmd0aCA9PT0gMCAmJiBwYXRoQ29udGFpbnNDaGlsZFJvdXRlO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aENvbnRhaW5zQ2hpbGRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRocyhyb3V0ZXM6IFJvdXRlcywgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocm91dGVzKVxuICAgICAgPyAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi5yb3V0ZXMubWFwKChyb3V0ZSkgPT4gdGhpcy5nZXRSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGF0aChyb3V0ZTogUm91dGUsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJvdXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocm91dGUub3V0bGV0KSByZXR1cm4gcm91dGVzOyAvLyBEb24ndCByZXR1cm4gcmVsYXRpdmUgcGF0aHMgZm9yIG91dGxldCByb3V0ZXNcblxuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gWy4uLnBhcmVudFBhdGhdO1xuICAgIGlmIChyb3V0ZS5wYXRoKSB7XG4gICAgICBjdXJyZW50UGF0aC5wdXNoKHJvdXRlLnBhdGgpO1xuICAgICAgcm91dGVzLnB1c2goY3VycmVudFBhdGguam9pbignLycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGVzLmNvbmNhdCh0aGlzLmdldFJvdXRlUGF0aHMocm91dGUuY2hpbGRyZW4sIGN1cnJlbnRQYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGFsUm91dGVQYXRoKHJvdXRlOiBSb3V0ZSwgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbW9kYWxPdXRsZXROYW1lID0gJ21vZGFsJztcbiAgICBpZiAoISFyb3V0ZS5wYXRoICYmIHJvdXRlLm91dGxldCA9PT0gbW9kYWxPdXRsZXROYW1lKSB7XG4gICAgICBjb25zdCBtb2RhbE91dGxldFBhdGggPSBgKCR7bW9kYWxPdXRsZXROYW1lfToke3JvdXRlLnBhdGh9KWA7XG4gICAgICBjb25zdCBtb2RhbFJvdXRlUGF0aCA9IFsuLi5wYXJlbnRQYXRoLCBtb2RhbE91dGxldFBhdGhdLmpvaW4oJy8nKTtcbiAgICAgIHJldHVybiBbbW9kYWxSb3V0ZVBhdGhdO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IFsuLi5wYXJlbnRQYXRoXTtcbiAgICBpZiAocm91dGUucGF0aCkge1xuICAgICAgY3VycmVudFBhdGgucHVzaChyb3V0ZS5wYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLnRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKHJvdXRlLmNoaWxkcmVuLCBjdXJyZW50UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2RhbFJvdXRlUGF0aHMocm91dGVzOiBSb3V0ZXMsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvdXRlcylcbiAgICAgID8gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4ucm91dGVzLm1hcCgocm91dGUpID0+IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGlzTmV3TW9kYWxXaW5kb3cobmF2aWdhdGlvbkVuZDogTmF2aWdhdGlvbkVuZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICBpZiAoIWN1cnJlbnROYXZpZ2F0aW9uIHx8ICFjdXJyZW50TmF2aWdhdGlvbi5wcmV2aW91c05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91c1JvdXRlUGF0aCA9IChcbiAgICAgIGN1cnJlbnROYXZpZ2F0aW9uLnByZXZpb3VzTmF2aWdhdGlvbi5maW5hbFVybCB8fFxuICAgICAgY3VycmVudE5hdmlnYXRpb24ucHJldmlvdXNOYXZpZ2F0aW9uLmV4dHJhY3RlZFVybFxuICAgICkudG9TdHJpbmcoKTtcbiAgICBjb25zdCB3YXNNb2RhbFJvdXRlID0gdGhpcy5pc01vZGFsUm91dGUocHJldmlvdXNSb3V0ZVBhdGgpO1xuICAgIGNvbnN0IGlzTW9kYWxSb3V0ZSA9IHRoaXMuaXNNb2RhbFJvdXRlKG5hdmlnYXRpb25FbmQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgIGlmICghd2FzTW9kYWxSb3V0ZSAmJiBpc01vZGFsUm91dGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50ID0gbmF2aWdhdGlvbkVuZC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnLyhtb2RhbDonKVswXTtcbiAgICBjb25zdCBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgPSBwcmV2aW91c1JvdXRlUGF0aC5zcGxpdCgnLyhtb2RhbDonKVswXTtcblxuICAgIHJldHVybiBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgIT09IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kTGlzdGVuZXIkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE5hdmlnYXRpb25FbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICApO1xuXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckN1cnJlbnRUaGVuR2V0TmF2aWdhdGlvbkVuZFN0cmVhbSgpOiBQcm9taXNlPE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD4+IHtcbiAgICBpZiAodGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkge1xuICAgICAgY29uc3QgY3VycmVudE5hdmlnYXRpb25FbmQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm5hdmlnYXRpb25FbmRMaXN0ZW5lciQpO1xuICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJC5waXBlKHN0YXJ0V2l0aChjdXJyZW50TmF2aWdhdGlvbkVuZCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uRW5kTGlzdGVuZXIkO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlQWN0aXZhdGVkRm9yKFxuICAgIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+LFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxNb2RhbFJvdXRlQWN0aXZhdGlvbj4ge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uRW5kJC5waXBlKFxuICAgICAgZmlsdGVyKChuYXZpZ2F0aW9uRW5kKSA9PlxuICAgICAgICB0aGlzLm1vZGFsUm91dGVTZXRDb250YWluc1BhdGgobW9kYWxSb3V0ZVNldCwgbmF2aWdhdGlvbkVuZCwgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcylcbiAgICAgICksXG4gICAgICBtYXAoKG5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZTogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICAgICAgICBpc05ld01vZGFsOiB0aGlzLmlzTmV3TW9kYWxXaW5kb3cobmF2aWdhdGlvbkVuZCksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1vZGFsUm91dGVEZWFjdGl2YXRlZEZvcihcbiAgICBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPixcbiAgICBtb2RhbFJvdXRlU2V0OiBTZXQ8c3RyaW5nPixcbiAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zOiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uRW5kJC5waXBlKFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGZpbHRlcigoW3ByZXZOYXZpZ2F0aW9uLCBfXSkgPT5cbiAgICAgICAgdGhpcy5tb2RhbFJvdXRlU2V0Q29udGFpbnNQYXRoKG1vZGFsUm91dGVTZXQsIHByZXZOYXZpZ2F0aW9uLCBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zKVxuICAgICAgKSwgLy8gT25seSBlbWl0IGlmIHByZXZpb3VzIHJvdXRlIHdhcyBtb2RhbFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgbWFwKChbXywgY3VycmVudE5hdmlnYXRpb25dKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTmV3TW9kYWxSb3V0ZSA9IHRoaXMuaXNNb2RhbFJvdXRlKGN1cnJlbnROYXZpZ2F0aW9uLnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICAgICAgLy8gRGVhY3RpdmF0ZSBtb2RhbCByb3V0ZSBpZiBuZXcgcm91dGUgaXMgTk9UIG1vZGFsIE9SIGlzIG91dHNpZGUgY3VycmVudCBwYXJlbnQgcm91dGU6XG4gICAgICAgIHJldHVybiAhaXNOZXdNb2RhbFJvdXRlIHx8IHRoaXMuaXNOZXdNb2RhbFdpbmRvdyhjdXJyZW50TmF2aWdhdGlvbik7XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcigoaXNEZWFjdGl2YXRpb24pID0+IGlzRGVhY3RpdmF0aW9uKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1vZGFsUm91dGVTZXRDb250YWluc1BhdGgoXG4gICAgbW9kYWxSb3V0ZVNldDogU2V0PHN0cmluZz4sXG4gICAgbmF2aWdhdGlvbkVuZDogTmF2aWdhdGlvbkVuZCxcbiAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHBhdGhuYW1lID0gbmF2aWdhdGlvbkVuZC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnPycpWzBdO1xuICAgIGxldCBoYXNSb3V0ZSA9IG1vZGFsUm91dGVTZXQuaGFzKHBhdGhuYW1lKTtcbiAgICBpZiAoIWhhc1JvdXRlICYmIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXMpIHtcbiAgICAgIC8vIFVzZSBgZm9yIC4uLiBvZmAgaW5zdGVhZCBvZiBgZm9yRWFjaGAgc28gd2UgY2FuIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBpZiByb3V0ZSBpcyBmb3VuZDpcbiAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgbW9kYWxSb3V0ZVNldCkge1xuICAgICAgICBjb25zdCBleGFjdE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgcm91dGVNYXRjaGVzUGF0aCA9IHRoaXMucGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXMoXG4gICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgZXhhY3RNYXRjaFxuICAgICAgICApO1xuICAgICAgICBpZiAocm91dGVNYXRjaGVzUGF0aCkge1xuICAgICAgICAgIGhhc1JvdXRlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFzUm91dGU7XG4gIH1cblxuICBhc3luYyBnZXRNb2RhbE5hdmlnYXRpb24oXG4gICAgcm91dGVDb25maWc6IFJvdXRlc1tdLFxuICAgIG1vZHVsZVJvb3RSb3V0ZVBhdGg/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IGFjdGl2YXRlZCQ6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+OyBkZWFjdGl2YXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gfT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvdXRlQ29uZmlnKSkge1xuICAgICAgY29uc3QgbmF2aWdhdGlvbkVuZCQgPSBhd2FpdCB0aGlzLndhaXRGb3JDdXJyZW50VGhlbkdldE5hdmlnYXRpb25FbmRTdHJlYW0oKTtcbiAgICAgIGNvbnN0IG1vZGFsUm91dGVzID0gYXdhaXQgdGhpcy5nZXRNb2RhbFJvdXRlcyhyb3V0ZUNvbmZpZywgbW9kdWxlUm9vdFJvdXRlUGF0aCk7XG4gICAgICBjb25zdCBoYXNNb2RhbFJvdXRlcyA9IG1vZGFsUm91dGVzLmxlbmd0aCA+IDA7XG4gICAgICBpZiAoaGFzTW9kYWxSb3V0ZXMpIHtcbiAgICAgICAgY29uc3QgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcyA9IG1vZGFsUm91dGVzLnNvbWUoKHJvdXRlKSA9PiByb3V0ZS5pbmNsdWRlcygnLzonKSk7XG4gICAgICAgIGNvbnN0IG1vZGFsUm91dGVTZXQgPSBuZXcgU2V0KG1vZGFsUm91dGVzKTtcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkJCA9IHRoaXMubW9kYWxSb3V0ZUFjdGl2YXRlZEZvcihcbiAgICAgICAgICBuYXZpZ2F0aW9uRW5kJCxcbiAgICAgICAgICBtb2RhbFJvdXRlU2V0LFxuICAgICAgICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXNcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVhY3RpdmF0ZWQkID0gdGhpcy5tb2RhbFJvdXRlRGVhY3RpdmF0ZWRGb3IoXG4gICAgICAgICAgbmF2aWdhdGlvbkVuZCQsXG4gICAgICAgICAgbW9kYWxSb3V0ZVNldCxcbiAgICAgICAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IGFjdGl2YXRlZCQsIGRlYWN0aXZhdGVkJCB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGFjdGl2YXRlZCQ6IEVNUFRZLCBkZWFjdGl2YXRlZCQ6IEVNUFRZIH07XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZVRvTW9kYWwocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tbWFuZHMgPSBBcnJheS5pc0FycmF5KHBhdGgpID8gWy4uLnBhdGhdIDogcGF0aC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbW1hbmRzLnBvcCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi5jb21tYW5kcywgeyBvdXRsZXRzOiB7IG1vZGFsOiBbY2hpbGRQYXRoXSB9IH1dLCB7XG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCksXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlV2l0aGluTW9kYWwocmVsYXRpdmVQYXRoOiBzdHJpbmcsIHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyZWxhdGl2ZVBhdGhdLCB7XG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZU91dE9mTW9kYWxPdXRsZXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3VycmVudEFjdGl2YXRlZFJvdXRlID0gdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKTtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbkZpbmFsVXJsID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKT8uZmluYWxVcmw/LnRvU3RyaW5nKCk7XG4gICAgY29uc3QgaXNDdXJyZW50bHlOYXZpZ2F0aW5nT3V0T2ZNb2RhbE91dGxldCA9XG4gICAgICBjdXJyZW50TmF2aWdhdGlvbkZpbmFsVXJsICYmICF0aGlzLmlzTW9kYWxSb3V0ZShjdXJyZW50TmF2aWdhdGlvbkZpbmFsVXJsKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZhdGVkUm91dGUub3V0bGV0ICE9PSAnbW9kYWwnIHx8IGlzQ3VycmVudGx5TmF2aWdhdGluZ091dE9mTW9kYWxPdXRsZXQpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSwgYmFpbCBvdXQ6XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudFJvdXRlID0gdGhpcy5nZXRCYWNrZHJvcFJvdXRlKGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xuICAgICAgcmVsYXRpdmVUbzogcGFyZW50Um91dGUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEJhY2tkcm9wUm91dGUoY3VycmVudEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIGxldCBwYXJlbnRSb3V0ZSA9IGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZS5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudFJvdXRlICYmICFwYXJlbnRSb3V0ZS5jb21wb25lbnQgJiYgISFwYXJlbnRSb3V0ZS5wYXJlbnQpIHtcbiAgICAgIHBhcmVudFJvdXRlID0gcGFyZW50Um91dGUucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50Um91dGU7XG4gIH1cblxuICBoYW5kbGVCcm93c2VyQmFja0J1dHRvbihtb2RhbDogSFRNTElvbk1vZGFsRWxlbWVudCkge1xuICAgIGNvbnN0IHBvcHN0YXRlTmF2aWdhdGlvblN0YXJ0JCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uU3RhcnQgPT5cbiAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCAmJiBldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJ1xuICAgICAgKVxuICAgICk7XG4gICAgY29uc3QgbmF2aWdhdGlvbkVuZCQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICApO1xuICAgIG5hdmlnYXRpb25FbmQkXG4gICAgICAucGlwZShza2lwVW50aWwocG9wc3RhdGVOYXZpZ2F0aW9uU3RhcnQkKSwgdGFrZVVudGlsKG1vZGFsLm9uV2lsbERpc21pc3MoKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgbW9kYWwuZGlzbWlzcygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { ModalCompactWrapperComponent, ModalWrapperComponent, } from '../../modal-wrapper';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ionic/angular/standalone\";\nimport * as i2 from \"./modal-animation-builder.service\";\nimport * as i3 from \"../../modal-navigation.service\";\nimport * as i4 from \"@kirbydesign/designsystem/types\";\nimport * as i5 from \"./can-dismiss.helper\";\nexport class ModalHelper {\n constructor(ionicModalController, modalAnimationBuilder, modalNavigationService, windowRef, canDismissHelper) {\n this.ionicModalController = ionicModalController;\n this.modalAnimationBuilder = modalAnimationBuilder;\n this.modalNavigationService = modalNavigationService;\n this.windowRef = windowRef;\n this.canDismissHelper = canDismissHelper;\n /*\n isModalOpening is used to prevent additional instantiations\n of modals, while a modal is already being instatiated, but not completed.\n This is the recommended approach by one of the maintainers of Ionic:\n https://github.com/ionic-team/ionic-framework/issues/23327#issuecomment-847028058\n */\n this.isModalOpening = false;\n }\n async showModalWindow(config) {\n if (this.isModalOpening)\n return;\n config.flavor = config.flavor || 'modal';\n let currentBackdrop;\n const topMostModal = await this.ionicModalController.getTop();\n if (topMostModal) {\n currentBackdrop =\n topMostModal.shadowRoot.querySelector('ion-backdrop');\n }\n const enterAnimation = this.modalAnimationBuilder.enterAnimation(currentBackdrop);\n const leaveAnimation = this.modalAnimationBuilder.leaveAnimation(currentBackdrop);\n const defaultModalSize = config.interactWithBackground ? null : 'medium';\n const modalSize = config.size || defaultModalSize;\n const allow_scroll_class = 'allow-background-scroll';\n let customCssClasses = [];\n if (config.cssClass) {\n customCssClasses = Array.isArray(config.cssClass) ? config.cssClass : [config.cssClass];\n }\n if (config.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.add(allow_scroll_class);\n }\n let canDismiss = true;\n if (config.canDismiss) {\n canDismiss = this.canDismissHelper.getCanDismissCallback(config.canDismiss);\n }\n this.isModalOpening = true;\n const ionModal = await this.ionicModalController.create({\n component: config.flavor === 'compact' ? ModalCompactWrapperComponent : ModalWrapperComponent,\n cssClass: [\n 'kirby-overlay',\n 'kirby-modal',\n modalSize ? `kirby-modal-${modalSize}` : null,\n config.flavor === 'drawer' ? 'kirby-drawer' : null,\n config.flavor === 'compact' ? 'kirby-modal-compact' : null,\n config.interactWithBackground ? 'interact-with-background' : null,\n ...customCssClasses,\n ],\n backdropDismiss: config.flavor === 'compact' || config.interactWithBackground ? false : true,\n showBackdrop: !config.interactWithBackground,\n componentProps: { config: config },\n htmlAttributes: { ...config.htmlAttributes },\n keyboardClose: false,\n canDismiss,\n enterAnimation,\n leaveAnimation,\n });\n if (config.interactWithBackground) {\n ionModal.onDidDismiss().then(() => {\n this.windowRef.nativeWindow.document.body.classList.remove(allow_scroll_class);\n });\n }\n if (config.customHeight) {\n ionModal.style.setProperty('--kirby-modal-height', config.customHeight);\n }\n const onWillDismiss = ionModal.onWillDismiss();\n const overlay = {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss,\n onDidDismiss: ionModal.onDidDismiss(),\n isDismissing: false,\n };\n onWillDismiss.then(() => {\n overlay.isDismissing = true;\n });\n await ionModal.present();\n /**\n * Due to somewhat unexpected behavior of the ion-modal not being focused when keyboardClose\n * is set to false we manually focus it, but only if focus is not already inside the modal\n * See here: https://github.com/ionic-team/ionic-framework/issues/28775#issuecomment-1875475739\n */\n const focusedElementWithinModal = ionModal.contains(document.activeElement);\n if (!focusedElementWithinModal) {\n ionModal.focus();\n }\n // Back button should only be handled manually\n // if the modal is not instantiated through a route.\n if (!config.modalRoute) {\n this.modalNavigationService.handleBrowserBackButton(ionModal);\n }\n this.isModalOpening = false;\n return overlay;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalHelper, deps: [{ token: i1.ModalController }, { token: i2.ModalAnimationBuilderService }, { token: i3.ModalNavigationService }, { token: i4.WindowRef }, { token: i5.CanDismissHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalController }, { type: i2.ModalAnimationBuilderService }, { type: i3.ModalNavigationService }, { type: i4.WindowRef }, { type: i5.CanDismissHelper }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL3NlcnZpY2VzL21vZGFsLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFDTCw0QkFBNEIsRUFHNUIscUJBQXFCLEdBQ3RCLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNN0IsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDVSxvQkFBcUMsRUFDckMscUJBQW1ELEVBQ25ELHNCQUE4QyxFQUM5QyxTQUFvQixFQUNwQixnQkFBa0M7UUFKbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFpQjtRQUNyQywwQkFBcUIsR0FBckIscUJBQXFCLENBQThCO1FBQ25ELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRzVDOzs7OztVQUtFO1FBQ00sbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFSNUIsQ0FBQztJQVVHLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBbUI7UUFDOUMsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQztRQUV6QyxJQUFJLGVBQXVDLENBQUM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixlQUFlO2dCQUNiLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUF5QixjQUFjLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNB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ZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdHlwZXMnO1xuXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vLi4vbW9kYWwuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1vZGFsQ29tcGFjdFdyYXBwZXJDb21wb25lbnQsXG4gIE1vZGFsQ29uZmlnLFxuICBNb2RhbFNpemUsXG4gIE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vbW9kYWwtd3JhcHBlcic7XG5cbmltcG9ydCB7IE1vZGFsQW5pbWF0aW9uQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWFuaW1hdGlvbi1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FuRGlzbWlzc0hlbHBlciB9IGZyb20gJy4vY2FuLWRpc21pc3MuaGVscGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsSGVscGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpb25pY01vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyLFxuICAgIHByaXZhdGUgbW9kYWxBbmltYXRpb25CdWlsZGVyOiBNb2RhbEFuaW1hdGlvbkJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxOYXZpZ2F0aW9uU2VydmljZTogTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgY2FuRGlzbWlzc0hlbHBlcjogQ2FuRGlzbWlzc0hlbHBlclxuICApIHt9XG5cbiAgLyogXG4gICAgaXNNb2RhbE9wZW5pbmcgaXMgdXNlZCB0byBwcmV2ZW50IGFkZGl0aW9uYWwgaW5zdGFudGlhdGlvbnNcbiAgICBvZiBtb2RhbHMsIHdoaWxlIGEgbW9kYWwgaXMgYWxyZWFkeSBiZWluZyBpbnN0YXRpYXRlZCwgYnV0IG5vdCBjb21wbGV0ZWQuXG4gICAgVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggYnkgb25lIG9mIHRoZSBtYWludGFpbmVycyBvZiBJb25pYzpcbiAgICBodHRwczovL2dpdGh1Yi5jb20vaW9uaWMtdGVhbS9pb25pYy1mcmFtZXdvcmsvaXNzdWVzLzIzMzI3I2lzc3VlY29tbWVudC04NDcwMjgwNThcbiAgKi9cbiAgcHJpdmF0ZSBpc01vZGFsT3BlbmluZyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBhc3luYyBzaG93TW9kYWxXaW5kb3coY29uZmlnOiBNb2RhbENvbmZpZyk6IFByb21pc2U8T3ZlcmxheT4ge1xuICAgIGlmICh0aGlzLmlzTW9kYWxPcGVuaW5nKSByZXR1cm47XG5cbiAgICBjb25maWcuZmxhdm9yID0gY29uZmlnLmZsYXZvciB8fCAnbW9kYWwnO1xuXG4gICAgbGV0IGN1cnJlbnRCYWNrZHJvcDogSFRNTElvbkJhY2tkcm9wRWxlbWVudDtcbiAgICBjb25zdCB0b3BNb3N0TW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgIGlmICh0b3BNb3N0TW9kYWwpIHtcbiAgICAgIGN1cnJlbnRCYWNrZHJvcCA9XG4gICAgICAgIHRvcE1vc3RNb2RhbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3I8SFRNTElvbkJhY2tkcm9wRWxlbWVudD4oJ2lvbi1iYWNrZHJvcCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGVyQW5pbWF0aW9uID0gdGhpcy5tb2RhbEFuaW1hdGlvbkJ1aWxkZXIuZW50ZXJBbmltYXRpb24oY3VycmVudEJhY2tkcm9wKTtcbiAgICBjb25zdCBsZWF2ZUFuaW1hdGlvbiA9IHRoaXMubW9kYWxBbmltYXRpb25CdWlsZGVyLmxlYXZlQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcCk7XG5cbiAgICBjb25zdCBkZWZhdWx0TW9kYWxTaXplOiBNb2RhbFNpemUgPSBjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCA/IG51bGwgOiAnbWVkaXVtJztcbiAgICBjb25zdCBtb2RhbFNpemUgPSBjb25maWcuc2l6ZSB8fCBkZWZhdWx0TW9kYWxTaXplO1xuXG4gICAgY29uc3QgYWxsb3dfc2Nyb2xsX2NsYXNzID0gJ2FsbG93LWJhY2tncm91bmQtc2Nyb2xsJztcblxuICAgIGxldCBjdXN0b21Dc3NDbGFzc2VzID0gW107XG4gICAgaWYgKGNvbmZpZy5jc3NDbGFzcykge1xuICAgICAgY3VzdG9tQ3NzQ2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoY29uZmlnLmNzc0NsYXNzKSA/IGNvbmZpZy5jc3NDbGFzcyA6IFtjb25maWcuY3NzQ2xhc3NdO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCkge1xuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChhbGxvd19zY3JvbGxfY2xhc3MpO1xuICAgIH1cblxuICAgIGxldCBjYW5EaXNtaXNzOiBib29sZWFuIHwgKCgpID0+IFByb21pc2U8Ym9vbGVhbj4pID0gdHJ1ZTtcblxuICAgIGlmIChjb25maWcuY2FuRGlzbWlzcykge1xuICAgICAgY2FuRGlzbWlzcyA9IHRoaXMuY2FuRGlzbWlzc0hlbHBlci5nZXRDYW5EaXNtaXNzQ2FsbGJhY2soY29uZmlnLmNhbkRpc21pc3MpO1xuICAgIH1cblxuICAgIHRoaXMuaXNNb2RhbE9wZW5pbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgaW9uTW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IGNvbmZpZy5mbGF2b3IgPT09ICdjb21wYWN0JyA/IE1vZGFsQ29tcGFjdFdyYXBwZXJDb21wb25lbnQgOiBNb2RhbFdyYXBwZXJDb21wb25lbnQsXG4gICAgICBjc3NDbGFzczogW1xuICAgICAgICAna2lyYnktb3ZlcmxheScsXG4gICAgICAgICdraXJieS1tb2RhbCcsXG4gICAgICAgIG1vZGFsU2l6ZSA/IGBraXJieS1tb2RhbC0ke21vZGFsU2l6ZX1gIDogbnVsbCxcbiAgICAgICAgY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicgPyAna2lyYnktZHJhd2VyJyA6IG51bGwsXG4gICAgICAgIGNvbmZpZy5mbGF2b3IgPT09ICdjb21wYWN0JyA/ICdraXJieS1tb2RhbC1jb21wYWN0JyA6IG51bGwsXG4gICAgICAgIGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kID8gJ2ludGVyYWN0LXdpdGgtYmFja2dyb3VuZCcgOiBudWxsLFxuICAgICAgICAuLi5jdXN0b21Dc3NDbGFzc2VzLFxuICAgICAgXSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogY29uZmlnLmZsYXZvciA9PT0gJ2NvbXBhY3QnIHx8IGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kID8gZmFsc2UgOiB0cnVlLFxuICAgICAgc2hvd0JhY2tkcm9wOiAhY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmQsXG4gICAgICBjb21wb25lbnRQcm9wczogeyBjb25maWc6IGNvbmZpZyB9LFxuICAgICAgaHRtbEF0dHJpYnV0ZXM6IHsgLi4uY29uZmlnLmh0bWxBdHRyaWJ1dGVzIH0sXG4gICAgICBrZXlib2FyZENsb3NlOiBmYWxzZSxcbiAgICAgIGNhbkRpc21pc3MsXG4gICAgICBlbnRlckFuaW1hdGlvbixcbiAgICAgIGxlYXZlQW5pbWF0aW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBpb25Nb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShhbGxvd19zY3JvbGxfY2xhc3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jdXN0b21IZWlnaHQpIHtcbiAgICAgIGlvbk1vZGFsLnN0eWxlLnNldFByb3BlcnR5KCctLWtpcmJ5LW1vZGFsLWhlaWdodCcsIGNvbmZpZy5jdXN0b21IZWlnaHQpO1xuICAgIH1cblxuICAgIGNvbnN0IG9uV2lsbERpc21pc3MgPSBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCk7XG5cbiAgICBjb25zdCBvdmVybGF5OiBPdmVybGF5ID0ge1xuICAgICAgZGlzbWlzczogaW9uTW9kYWwuZGlzbWlzcy5iaW5kKGlvbk1vZGFsKSxcbiAgICAgIG9uV2lsbERpc21pc3MsXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgICAgaXNEaXNtaXNzaW5nOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgb25XaWxsRGlzbWlzcy50aGVuKCgpID0+IHtcbiAgICAgIG92ZXJsYXkuaXNEaXNtaXNzaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGlvbk1vZGFsLnByZXNlbnQoKTtcblxuICAgIC8qKlxuICAgICAqIER1ZSB0byBzb21ld2hhdCB1bmV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBpb24tbW9kYWwgbm90IGJlaW5nIGZvY3VzZWQgd2hlbiBrZXlib2FyZENsb3NlXG4gICAgICogaXMgc2V0IHRvIGZhbHNlIHdlIG1hbnVhbGx5IGZvY3VzIGl0LCBidXQgb25seSBpZiBmb2N1cyBpcyBub3QgYWxyZWFkeSBpbnNpZGUgdGhlIG1vZGFsXG4gICAgICogU2VlIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pb25pYy10ZWFtL2lvbmljLWZyYW1ld29yay9pc3N1ZXMvMjg3NzUjaXNzdWVjb21tZW50LTE4NzU0NzU3MzlcbiAgICAgKi9cbiAgICBjb25zdCBmb2N1c2VkRWxlbWVudFdpdGhpbk1vZGFsID0gaW9uTW9kYWwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gICAgaWYgKCFmb2N1c2VkRWxlbWVudFdpdGhpbk1vZGFsKSB7XG4gICAgICBpb25Nb2RhbC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8vIEJhY2sgYnV0dG9uIHNob3VsZCBvbmx5IGJlIGhhbmRsZWQgbWFudWFsbHlcbiAgICAvLyBpZiB0aGUgbW9kYWwgaXMgbm90IGluc3RhbnRpYXRlZCB0aHJvdWdoIGEgcm91dGUuXG4gICAgaWYgKCFjb25maWcubW9kYWxSb3V0ZSkge1xuICAgICAgdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmhhbmRsZUJyb3dzZXJCYWNrQnV0dG9uKGlvbk1vZGFsKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzTW9kYWxPcGVuaW5nID0gZmFsc2U7XG5cbiAgICByZXR1cm4gb3ZlcmxheTtcbiAgfVxufVxuIl19","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '@kirbydesign/designsystem/button';\nimport { CardModule } from '@kirbydesign/designsystem/card';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@kirbydesign/designsystem/card\";\nconst KIRBY_ACTION_SHEET_DEPRECATION_WARNING = '[Kirby action sheet] Deprecated - Use Menu component instead';\nexport class ActionSheetComponent {\n constructor() {\n this.cancelButtonText = 'Cancel';\n this.hideCancel = false;\n this.disabled = false;\n this.cancel = new EventEmitter();\n this.itemSelect = new EventEmitter();\n console.warn(KIRBY_ACTION_SHEET_DEPRECATION_WARNING);\n }\n onItemSelect(selection) {\n this.itemSelect.emit(selection);\n }\n onCancel() {\n this.cancel.emit();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActionSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: ActionSheetComponent, isStandalone: true, selector: \"kirby-action-sheet\", inputs: { cancelButtonText: \"cancelButtonText\", hideCancel: \"hideCancel\", disabled: \"disabled\", header: \"header\", subheader: \"subheader\", items: \"items\" }, outputs: { cancel: \"cancel\", itemSelect: \"itemSelect\" }, ngImport: i0, template: \"<kirby-card>\\n @if (header) {\\n <kirby-card-header\\n [title]=\\\"header\\\"\\n [isTitleBold]=\\\"true\\\"\\n [subtitle]=\\\"subheader\\\"\\n ></kirby-card-header>\\n }\\n @for (item of items; track item.id) {\\n <button\\n kirby-button\\n expand=\\\"block\\\"\\n size=\\\"lg\\\"\\n [noDecoration]=\\\"true\\\"\\n (click)=\\\"onItemSelect(item)\\\"\\n >\\n {{ item.text }}\\n </button>\\n }\\n</kirby-card>\\n@if (!hideCancel) {\\n <button kirby-button class=\\\"cancel-btn\\\" size=\\\"lg\\\" attentionLevel=\\\"3\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelButtonText }}\\n </button>\\n}\\n\", styles: [\":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CardModule }, { kind: \"component\", type: i1.CardComponent, selector: \"kirby-card\", inputs: [\"title\", \"subtitle\", \"backgroundImageUrl\", \"hasPadding\", \"sizes\", \"variant\"] }, { kind: \"component\", type: i1.CardHeaderComponent, selector: \"kirby-card-header\", inputs: [\"title\", \"subtitle\", \"isTitleBold\", \"flagged\", \"hasPadding\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[kirby-button],Button[kirby-button],a[kirby-button]\", inputs: [\"attentionLevel\", \"noDecoration\", \"themeColor\", \"expand\", \"isFloating\", \"size\", \"showIconOnly\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActionSheetComponent, decorators: [{\n type: Component,\n args: [{ imports: [CardModule, ButtonComponent], selector: 'kirby-action-sheet', template: \"<kirby-card>\\n @if (header) {\\n <kirby-card-header\\n [title]=\\\"header\\\"\\n [isTitleBold]=\\\"true\\\"\\n [subtitle]=\\\"subheader\\\"\\n ></kirby-card-header>\\n }\\n @for (item of items; track item.id) {\\n <button\\n kirby-button\\n expand=\\\"block\\\"\\n size=\\\"lg\\\"\\n [noDecoration]=\\\"true\\\"\\n (click)=\\\"onItemSelect(item)\\\"\\n >\\n {{ item.text }}\\n </button>\\n }\\n</kirby-card>\\n@if (!hideCancel) {\\n <button kirby-button class=\\\"cancel-btn\\\" size=\\\"lg\\\" attentionLevel=\\\"3\\\" (click)=\\\"onCancel()\\\">\\n {{ cancelButtonText }}\\n </button>\\n}\\n\", styles: [\":host{--kirby-internal-margin-horizontal-default: 32px}@media (max-width: 320px){:host{--kirby-internal-margin-horizontal-default: 16px}}:host{--kirby-internal-margin-horizontal-total: calc( 2 * var(--kirby-action-sheet-margin-horizontal, var(--kirby-internal-margin-horizontal-default)) );display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin:0 auto;width:calc(100vw - var(--kirby-internal-margin-horizontal-total));max-width:calc(375px - var(--kirby-internal-margin-horizontal-total))}@media (hover: hover) and (pointer: fine){:host button[kirby-button].no-decoration:focus-visible{box-shadow:none;--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}}kirby-card{align-self:stretch;pointer-events:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}kirby-card button[kirby-button]{margin:0;border-radius:0}kirby-card button[kirby-button]:not(:focus){border-top:1px solid var(--kirby-background-color)}@media (hover: hover) and (pointer: fine){.cancel-btn:focus{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}.cancel-btn:focus:not(:focus-visible){box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 0 transparent}.cancel-btn:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.cancel-btn{font-weight:700;margin-top:16px;margin-bottom:24px;pointer-events:auto}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { cancelButtonText: [{\n type: Input\n }], hideCancel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], header: [{\n type: Input\n }], subheader: [{\n type: Input\n }], items: [{\n type: Input\n }], cancel: [{\n type: Output\n }], itemSelect: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXNoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9hY3Rpb24tc2hlZXQvYWN0aW9uLXNoZWV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9hY3Rpb24tc2hlZXQvYWN0aW9uLXNoZWV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBSTVELE1BQU0sc0NBQXNDLEdBQzFDLDhEQUE4RCxDQUFDO0FBUWpFLE1BQU0sT0FBTyxvQkFBb0I7SUFVL0I7UUFUUyxxQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBSXpCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBa0MsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFHeEYsT0FBTyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUFZLENBQUMsU0FBMEI7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7aUlBcEJVLG9CQUFvQjtxSEFBcEIsb0JBQW9CLG1TQ2ZqQyxvbEJBeUJBLHNrRERmWSxVQUFVLHdWQUFFLGVBQWU7OzJGQUsxQixvQkFBb0I7a0JBTmhDLFNBQVM7OEJBQ0MsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLFlBQzVCLG9CQUFvQjt3REFLckIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9idXR0b24nO1xuaW1wb3J0IHsgQ2FyZE1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vY2FyZCc7XG5cbmltcG9ydCB7IEFjdGlvblNoZWV0SXRlbSB9IGZyb20gJy4vY29uZmlnL2FjdGlvbi1zaGVldC1pdGVtJztcblxuY29uc3QgS0lSQllfQUNUSU9OX1NIRUVUX0RFUFJFQ0FUSU9OX1dBUk5JTkcgPVxuICAnW0tpcmJ5IGFjdGlvbiBzaGVldF0gRGVwcmVjYXRlZCAtIFVzZSBNZW51IGNvbXBvbmVudCBpbnN0ZWFkJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtDYXJkTW9kdWxlLCBCdXR0b25Db21wb25lbnRdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LWFjdGlvbi1zaGVldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tc2hlZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tc2hlZXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uU2hlZXRDb21wb25lbnQge1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25UZXh0ID0gJ0NhbmNlbCc7XG4gIEBJbnB1dCgpIGhpZGVDYW5jZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1YmhlYWRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpdGVtczogQXJyYXk8QWN0aW9uU2hlZXRJdGVtPjtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3Q6IEV2ZW50RW1pdHRlcjxBY3Rpb25TaGVldEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25TaGVldEl0ZW0+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc29sZS53YXJuKEtJUkJZX0FDVElPTl9TSEVFVF9ERVBSRUNBVElPTl9XQVJOSU5HKTtcbiAgfVxuXG4gIG9uSXRlbVNlbGVjdChzZWxlY3Rpb246IEFjdGlvblNoZWV0SXRlbSkge1xuICAgIHRoaXMuaXRlbVNlbGVjdC5lbWl0KHNlbGVjdGlvbik7XG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxraXJieS1jYXJkPlxuICBAaWYgKGhlYWRlcikge1xuICAgIDxraXJieS1jYXJkLWhlYWRlclxuICAgICAgW3RpdGxlXT1cImhlYWRlclwiXG4gICAgICBbaXNUaXRsZUJvbGRdPVwidHJ1ZVwiXG4gICAgICBbc3VidGl0bGVdPVwic3ViaGVhZGVyXCJcbiAgICA+PC9raXJieS1jYXJkLWhlYWRlcj5cbiAgfVxuICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgPGJ1dHRvblxuICAgICAga2lyYnktYnV0dG9uXG4gICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICBzaXplPVwibGdcIlxuICAgICAgW25vRGVjb3JhdGlvbl09XCJ0cnVlXCJcbiAgICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoaXRlbSlcIlxuICAgID5cbiAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgIDwvYnV0dG9uPlxuICB9XG48L2tpcmJ5LWNhcmQ+XG5AaWYgKCFoaWRlQ2FuY2VsKSB7XG4gIDxidXR0b24ga2lyYnktYnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ0blwiIHNpemU9XCJsZ1wiIGF0dGVudGlvbkxldmVsPVwiM1wiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+XG4gICAge3sgY2FuY2VsQnV0dG9uVGV4dCB9fVxuICA8L2J1dHRvbj5cbn1cbiJdfQ==","import { EventEmitter, Injectable } from '@angular/core';\nimport { ActionSheetComponent } from '../action-sheet/action-sheet.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ionic/angular/standalone\";\nexport class ActionSheetHelper {\n constructor(ionicModalController) {\n this.ionicModalController = ionicModalController;\n }\n async showActionSheet(config) {\n const cancel = new EventEmitter();\n const itemSelect = new EventEmitter();\n const ionModal = await this.ionicModalController.create({\n component: ActionSheetComponent,\n cssClass: ['kirby-overlay', 'kirby-action-sheet'],\n componentProps: {\n ...config,\n cancel: cancel,\n itemSelect: itemSelect,\n },\n backdropDismiss: true,\n });\n // Remove 'modal-shadow' element as we are no longer able to hide it with CSS in Ionic 6.\n // We need to remove it so it does not obstruct the backdrop-click to dismiss functionality.\n ionModal.shadowRoot.querySelector('.modal-shadow').remove();\n const cancelSubscription = cancel.subscribe(() => ionModal.dismiss());\n const itemSelectSubscription = itemSelect.subscribe((item) => ionModal.dismiss(item));\n const onDidDismiss = ionModal.onDidDismiss();\n onDidDismiss.then(() => {\n cancelSubscription.unsubscribe();\n itemSelectSubscription.unsubscribe();\n });\n await ionModal.present();\n return {\n dismiss: ionModal.dismiss.bind(ionModal),\n onWillDismiss: ionModal.onWillDismiss(),\n onDidDismiss: ionModal.onDidDismiss(),\n };\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActionSheetHelper, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActionSheetHelper }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ActionSheetHelper, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalController }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXNoZWV0LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9hY3Rpb24tc2hlZXQuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFLOUUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFvQixvQkFBcUM7UUFBckMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFpQjtJQUFHLENBQUM7SUFFdEQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUF5QjtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRXZELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUN0RCxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFFBQVEsRUFBRSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztZQUNqRCxjQUFjLEVBQUU7Z0JBQ2QsR0FBRyxNQUFNO2dCQUNULE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCO1lBQ0QsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBRUgseUZBQXlGO1FBQ3pGLDRGQUE0RjtRQUM1RixRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUU1RCxNQUFNLGtCQUFrQixHQUFpQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sc0JBQXNCLEdBQWlCLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN6RSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUN2QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JCLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsT0FBTztZQUNMLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDdkMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUU7U0FDdEMsQ0FBQztJQUNKLENBQUM7aUlBdENVLGlCQUFpQjtxSUFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uL21vZGFsLmludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBBY3Rpb25TaGVldENvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1zaGVldC9hY3Rpb24tc2hlZXQuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvblNoZWV0Q29uZmlnIH0gZnJvbSAnLi4vYWN0aW9uLXNoZWV0L2NvbmZpZy9hY3Rpb24tc2hlZXQtY29uZmlnJztcbmltcG9ydCB7IEFjdGlvblNoZWV0SXRlbSB9IGZyb20gJy4uL2FjdGlvbi1zaGVldC9jb25maWcvYWN0aW9uLXNoZWV0LWl0ZW0nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aW9uU2hlZXRIZWxwZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlvbmljTW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIpIHt9XG5cbiAgcHVibGljIGFzeW5jIHNob3dBY3Rpb25TaGVldChjb25maWc6IEFjdGlvblNoZWV0Q29uZmlnKTogUHJvbWlzZTxPdmVybGF5PiB7XG4gICAgY29uc3QgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIGNvbnN0IGl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvblNoZWV0SXRlbT4oKTtcblxuICAgIGNvbnN0IGlvbk1vZGFsID0gYXdhaXQgdGhpcy5pb25pY01vZGFsQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBBY3Rpb25TaGVldENvbXBvbmVudCxcbiAgICAgIGNzc0NsYXNzOiBbJ2tpcmJ5LW92ZXJsYXknLCAna2lyYnktYWN0aW9uLXNoZWV0J10sXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIGNhbmNlbDogY2FuY2VsLFxuICAgICAgICBpdGVtU2VsZWN0OiBpdGVtU2VsZWN0LFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIFJlbW92ZSAnbW9kYWwtc2hhZG93JyBlbGVtZW50IGFzIHdlIGFyZSBubyBsb25nZXIgYWJsZSB0byBoaWRlIGl0IHdpdGggQ1NTIGluIElvbmljIDYuXG4gICAgLy8gV2UgbmVlZCB0byByZW1vdmUgaXQgc28gaXQgZG9lcyBub3Qgb2JzdHJ1Y3QgdGhlIGJhY2tkcm9wLWNsaWNrIHRvIGRpc21pc3MgZnVuY3Rpb25hbGl0eS5cbiAgICBpb25Nb2RhbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1zaGFkb3cnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IGNhbmNlbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gY2FuY2VsLnN1YnNjcmliZSgoKSA9PiBpb25Nb2RhbC5kaXNtaXNzKCkpO1xuICAgIGNvbnN0IGl0ZW1TZWxlY3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IGl0ZW1TZWxlY3Quc3Vic2NyaWJlKChpdGVtKSA9PlxuICAgICAgaW9uTW9kYWwuZGlzbWlzcyhpdGVtKVxuICAgICk7XG4gICAgY29uc3Qgb25EaWREaXNtaXNzID0gaW9uTW9kYWwub25EaWREaXNtaXNzKCk7XG4gICAgb25EaWREaXNtaXNzLnRoZW4oKCkgPT4ge1xuICAgICAgY2FuY2VsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICBpdGVtU2VsZWN0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBpb25Nb2RhbC5wcmVzZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc21pc3M6IGlvbk1vZGFsLmRpc21pc3MuYmluZChpb25Nb2RhbCksXG4gICAgICBvbldpbGxEaXNtaXNzOiBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCksXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./modal.helper\";\nimport * as i2 from \"./action-sheet.helper\";\nimport * as i3 from \"./alert.helper\";\nimport * as i4 from \"../../modal-navigation.service\";\nexport class ModalController {\n constructor(modalHelper, actionSheetHelper, alertHelper, modalNavigationService, routeConfig) {\n this.modalHelper = modalHelper;\n this.actionSheetHelper = actionSheetHelper;\n this.alertHelper = alertHelper;\n this.modalNavigationService = modalNavigationService;\n this.routeConfig = routeConfig;\n this.overlays = [];\n this.noOverlayRegisteredErrorMessage = 'No modal overlays are currently registered';\n this.destroy$ = new Subject();\n }\n async initialize(moduleRootRoutePath) {\n const modalNavigation = await this.modalNavigationService.getModalNavigation(this.routeConfig, moduleRootRoutePath);\n this.onModalRouteActivated(modalNavigation.activated$);\n this.onModalRouteDeactivated(modalNavigation.deactivated$);\n }\n onModalRouteActivated(modalRouteActivated$) {\n const navigateOnWillClose = () => {\n this.modalNavigationService.navigateOutOfModalOutlet();\n };\n const siblingModalRouteActivated$ = modalRouteActivated$.pipe(filter((modalRouteActivation) => !modalRouteActivation.isNewModal), map((modalRouteActivation) => modalRouteActivation.route));\n modalRouteActivated$\n .pipe(takeUntil(this.destroy$), filter(() => this.overlays.length === 0))\n .subscribe(async (modalRouteActivation) => {\n if (modalRouteActivation.isNewModal) {\n await this.showModalRoute(modalRouteActivation.route, siblingModalRouteActivated$, navigateOnWillClose);\n }\n });\n }\n onModalRouteDeactivated(modalRouteDeactivated$) {\n modalRouteDeactivated$\n .pipe(takeUntil(this.destroy$), filter(() => this.overlays.some((overlay) => overlay.isDismissing !== true)))\n .subscribe(async () => {\n await this.hideAll();\n });\n }\n async showModal(config, onClose) {\n await this.showAndRegisterOverlay(() => this.modalHelper.showModalWindow(config), onClose);\n }\n async navigateToModal(path, queryParams) {\n return this.modalNavigationService.navigateToModal(path, queryParams);\n }\n async navigateWithinModal(relativePath, queryParams) {\n return this.modalNavigationService.navigateWithinModal(relativePath, queryParams);\n }\n async showModalRoute(modalRoute, siblingModalRouteActivated$, onWillClose) {\n const config = {\n ...modalRoute.snapshot.data.modalConfig,\n component: null,\n modalRoute: modalRoute,\n siblingModalRouteActivated$: siblingModalRouteActivated$,\n };\n await this.showAndRegisterOverlay(() => this.modalHelper.showModalWindow(config), null, onWillClose);\n }\n async showActionSheet(config, onClose) {\n await this.showAndRegisterOverlay(() => this.actionSheetHelper.showActionSheet(config), onClose);\n }\n async showAlert(config, onClose) {\n await this.showAndRegisterOverlay(() => this.alertHelper.showAlert(config), onClose);\n }\n async showAndRegisterOverlay(showOverlay, onCloseOverlay, onWillCloseOverlay) {\n const overlay = await showOverlay();\n if (!overlay)\n return;\n this.overlays.push(overlay);\n if (typeof onWillCloseOverlay === 'function') {\n overlay.onWillDismiss.then((event) => onWillCloseOverlay(event.data));\n }\n overlay.onDidDismiss.then((event) => {\n this.overlays.pop();\n if (typeof onCloseOverlay === 'function') {\n onCloseOverlay(event.data);\n }\n });\n }\n async hideTopmost(data) {\n const overlay = this.overlays[this.overlays.length - 1];\n if (!overlay) {\n throw new Error(this.noOverlayRegisteredErrorMessage);\n }\n return overlay.dismiss(data);\n }\n async hideAll() {\n await Promise.all(this.overlays\n .filter((overlay) => overlay.isDismissing !== true)\n .map(async (overlay) => {\n await overlay.dismiss();\n }));\n }\n getTopMost() {\n return this.overlays[this.overlays.length - 1];\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalController, deps: [{ token: i1.ModalHelper }, { token: i2.ActionSheetHelper }, { token: i3.AlertHelper }, { token: i4.ModalNavigationService }, { token: ROUTES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalController }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalController, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.ModalHelper }, { type: i2.ActionSheetHelper }, { type: i3.AlertHelper }, { type: i4.ModalNavigationService }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ROUTES]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWtDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWF4RCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNVLFdBQXdCLEVBQ3hCLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixzQkFBOEMsRUFDbEIsV0FBcUI7UUFKakQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO1FBVG5ELGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDaEIsb0NBQStCLEdBQUcsNENBQTRDLENBQUM7UUFDeEYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFRcEMsQ0FBQztJQUVKLEtBQUssQ0FBQyxVQUFVLENBQUMsbUJBQTRCO1FBQzNDLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUMxRSxJQUFJLENBQUMsV0FBVyxFQUNoQixtQkFBbUIsQ0FDcEIsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsSUFBSSxD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QUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMsUUFBUTthQUNWLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUM7YUFDbEQsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNyQixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztpSUF0SlUsZUFBZSwrSUFVSixNQUFNO3FJQVZqQixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFXTixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlcywgUk9VVEVTIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1vZGFsUm91dGVBY3RpdmF0aW9uLCBPdmVybGF5IH0gZnJvbSAnLi4vLi4vbW9kYWwuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBY3Rpb25TaGVldENvbmZpZyB9IGZyb20gJy4uL2FjdGlvbi1zaGVldC9jb25maWcvYWN0aW9uLXNoZWV0LWNvbmZpZyc7XG5pbXBvcnQgeyBBbGVydENvbmZpZyB9IGZyb20gJy4uL2FsZXJ0L2NvbmZpZy9hbGVydC1jb25maWcnO1xuXG5pbXBvcnQgeyBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kYWwtd3JhcHBlcic7XG5pbXBvcnQgeyBBY3Rpb25TaGVldEhlbHBlciB9IGZyb20gJy4vYWN0aW9uLXNoZWV0LmhlbHBlcic7XG5pbXBvcnQgeyBBbGVydEhlbHBlciB9IGZyb20gJy4vYWxlcnQuaGVscGVyJztcbmltcG9ydCB7IE1vZGFsSGVscGVyIH0gZnJvbSAnLi9tb2RhbC5oZWxwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9kYWxDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBvdmVybGF5czogT3ZlcmxheVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9PdmVybGF5UmVnaXN0ZXJlZEVycm9yTWVzc2FnZSA9ICdObyBtb2RhbCBvdmVybGF5cyBhcmUgY3VycmVudGx5IHJlZ2lzdGVyZWQnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsSGVscGVyOiBNb2RhbEhlbHBlcixcbiAgICBwcml2YXRlIGFjdGlvblNoZWV0SGVscGVyOiBBY3Rpb25TaGVldEhlbHBlcixcbiAgICBwcml2YXRlIGFsZXJ0SGVscGVyOiBBbGVydEhlbHBlcixcbiAgICBwcml2YXRlIG1vZGFsTmF2aWdhdGlvblNlcnZpY2U6IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChST1VURVMpIHByaXZhdGUgcm91dGVDb25maWc6IFJvdXRlc1tdXG4gICkge31cblxuICBhc3luYyBpbml0aWFsaXplKG1vZHVsZVJvb3RSb3V0ZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtb2RhbE5hdmlnYXRpb24gPSBhd2FpdCB0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuZ2V0TW9kYWxOYXZpZ2F0aW9uKFxuICAgICAgdGhpcy5yb3V0ZUNvbmZpZyxcbiAgICAgIG1vZHVsZVJvb3RSb3V0ZVBhdGhcbiAgICApO1xuICAgIHRoaXMub25Nb2RhbFJvdXRlQWN0aXZhdGVkKG1vZGFsTmF2aWdhdGlvbi5hY3RpdmF0ZWQkKTtcbiAgICB0aGlzLm9uTW9kYWxSb3V0ZURlYWN0aXZhdGVkKG1vZGFsTmF2aWdhdGlvbi5kZWFjdGl2YXRlZCQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vZGFsUm91dGVBY3RpdmF0ZWQobW9kYWxSb3V0ZUFjdGl2YXRlZCQ6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+KSB7XG4gICAgY29uc3QgbmF2aWdhdGVPbldpbGxDbG9zZSA9ICgpID0+IHtcbiAgICAgIHRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5uYXZpZ2F0ZU91dE9mTW9kYWxPdXRsZXQoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkID0gbW9kYWxSb3V0ZUFjdGl2YXRlZCQucGlwZShcbiAgICAgIGZpbHRlcigobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+ICFtb2RhbFJvdXRlQWN0aXZhdGlvbi5pc05ld01vZGFsKSxcbiAgICAgIG1hcCgobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+IG1vZGFsUm91dGVBY3RpdmF0aW9uLnJvdXRlKVxuICAgICk7XG5cbiAgICBtb2RhbFJvdXRlQWN0aXZhdGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMub3ZlcmxheXMubGVuZ3RoID09PSAwKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAobW9kYWxSb3V0ZUFjdGl2YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG1vZGFsUm91dGVBY3RpdmF0aW9uLmlzTmV3TW9kYWwpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNob3dNb2RhbFJvdXRlKFxuICAgICAgICAgICAgbW9kYWxSb3V0ZUFjdGl2YXRpb24ucm91dGUsXG4gICAgICAgICAgICBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQsXG4gICAgICAgICAgICBuYXZpZ2F0ZU9uV2lsbENsb3NlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTW9kYWxSb3V0ZURlYWN0aXZhdGVkKG1vZGFsUm91dGVEZWFjdGl2YXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pIHtcbiAgICBtb2RhbFJvdXRlRGVhY3RpdmF0ZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5vdmVybGF5cy5zb21lKChvdmVybGF5KSA9PiBvdmVybGF5LmlzRGlzbWlzc2luZyAhPT0gdHJ1ZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oaWRlQWxsKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93TW9kYWwoY29uZmlnOiBNb2RhbENvbmZpZywgb25DbG9zZT86IChkYXRhPzogYW55KSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zaG93QW5kUmVnaXN0ZXJPdmVybGF5KCgpID0+IHRoaXMubW9kYWxIZWxwZXIuc2hvd01vZGFsV2luZG93KGNvbmZpZyksIG9uQ2xvc2UpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG5hdmlnYXRlVG9Nb2RhbChwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgcXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLm5hdmlnYXRlVG9Nb2RhbChwYXRoLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbmF2aWdhdGVXaXRoaW5Nb2RhbChyZWxhdGl2ZVBhdGg6IHN0cmluZywgcXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLm5hdmlnYXRlV2l0aGluTW9kYWwocmVsYXRpdmVQYXRoLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dNb2RhbFJvdXRlKFxuICAgIG1vZGFsUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZT4sXG4gICAgb25XaWxsQ2xvc2U6IChkYXRhPzogYW55KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZzogTW9kYWxDb25maWcgPSB7XG4gICAgICAuLi5tb2RhbFJvdXRlLnNuYXBzaG90LmRhdGEubW9kYWxDb25maWcsXG4gICAgICBjb21wb25lbnQ6IG51bGwsXG4gICAgICBtb2RhbFJvdXRlOiBtb2RhbFJvdXRlLFxuICAgICAgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkOiBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQsXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLnNob3dBbmRSZWdpc3Rlck92ZXJsYXkoXG4gICAgICAoKSA9PiB0aGlzLm1vZGFsSGVscGVyLnNob3dNb2RhbFdpbmRvdyhjb25maWcpLFxuICAgICAgbnVsbCxcbiAgICAgIG9uV2lsbENsb3NlXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93QWN0aW9uU2hlZXQoXG4gICAgY29uZmlnOiBBY3Rpb25TaGVldENvbmZpZyxcbiAgICBvbkNsb3NlPzogKGRhdGE/OiBhbnkpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zaG93QW5kUmVnaXN0ZXJPdmVybGF5KFxuICAgICAgKCkgPT4gdGhpcy5hY3Rpb25TaGVldEhlbHBlci5zaG93QWN0aW9uU2hlZXQoY29uZmlnKSxcbiAgICAgIG9uQ2xvc2VcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dBbGVydChjb25maWc6IEFsZXJ0Q29uZmlnLCBvbkNsb3NlPzogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheSgoKSA9PiB0aGlzLmFsZXJ0SGVscGVyLnNob3dBbGVydChjb25maWcpLCBvbkNsb3NlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd0FuZFJlZ2lzdGVyT3ZlcmxheShcbiAgICBzaG93T3ZlcmxheTogKCkgPT4gUHJvbWlzZTxPdmVybGF5PixcbiAgICBvbkNsb3NlT3ZlcmxheT86IChkYXRhPzogYW55KSA9PiB2b2lkLFxuICAgIG9uV2lsbENsb3NlT3ZlcmxheT86IChkYXRhPzogYW55KSA9PiB2b2lkXG4gICkge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBhd2FpdCBzaG93T3ZlcmxheSgpO1xuICAgIGlmICghb3ZlcmxheSkgcmV0dXJuO1xuXG4gICAgdGhpcy5vdmVybGF5cy5wdXNoKG92ZXJsYXkpO1xuXG4gICAgaWYgKHR5cGVvZiBvbldpbGxDbG9zZU92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG92ZXJsYXkub25XaWxsRGlzbWlzcy50aGVuKChldmVudCkgPT4gb25XaWxsQ2xvc2VPdmVybGF5KGV2ZW50LmRhdGEpKTtcbiAgICB9XG5cbiAgICBvdmVybGF5Lm9uRGlkRGlzbWlzcy50aGVuKChldmVudCkgPT4ge1xuICAgICAgdGhpcy5vdmVybGF5cy5wb3AoKTtcbiAgICAgIGlmICh0eXBlb2Ygb25DbG9zZU92ZXJsYXkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25DbG9zZU92ZXJsYXkoZXZlbnQuZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGlkZVRvcG1vc3QoZGF0YT86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlzW3RoaXMub3ZlcmxheXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5ub092ZXJsYXlSZWdpc3RlcmVkRXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIG92ZXJsYXkuZGlzbWlzcyhkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoaWRlQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy5vdmVybGF5c1xuICAgICAgICAuZmlsdGVyKChvdmVybGF5KSA9PiBvdmVybGF5LmlzRGlzbWlzc2luZyAhPT0gdHJ1ZSlcbiAgICAgICAgLm1hcChhc3luYyAob3ZlcmxheSkgPT4ge1xuICAgICAgICAgIGF3YWl0IG92ZXJsYXkuZGlzbWlzcygpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9wTW9zdCgpOiBPdmVybGF5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheXNbdGhpcy5vdmVybGF5cy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { ModalController as IonicModalController } from '@ionic/angular/standalone';\nimport { ModalNavigationService } from '../../modal-navigation.service';\nimport { ModalController } from './modal.controller';\nexport const CanDismissModalGuard = async (_component, _currentRoute, currentState, nextState) => {\n const modalNavService = inject(ModalNavigationService);\n const currentRouteIsModal = modalNavService.isModalRoute(currentState.url);\n const nextRouteIsModal = modalNavService.isModalRoute(nextState.url);\n const isNavigatingWithinModal = currentRouteIsModal && nextRouteIsModal;\n if (isNavigatingWithinModal) {\n return true;\n }\n const modalController = inject(ModalController);\n const topMostModal = modalController.getTopMost();\n if (topMostModal) {\n if (topMostModal.isDismissing) {\n return true;\n }\n return topMostModal.dismiss();\n }\n else {\n // Declarative modals are not created through Kirby Modalcontroller, let's try Ionic:\n const ionicModalController = inject(IonicModalController);\n const ionModal = await ionicModalController.getTop();\n if (ionModal) {\n return ionModal.dismiss();\n }\n }\n return true;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRpc21pc3MtbW9kYWwtZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwvc2VydmljZXMvY2FuLWRpc21pc3MtbW9kYWwtZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2QyxPQUFPLEVBQUUsZUFBZSxJQUFJLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUE2QixLQUFLLEVBQ2pFLFVBQWEsRUFDYixhQUFxQyxFQUNyQyxZQUFpQyxFQUNqQyxTQUE4QixFQUM5QixFQUFFO0lBQ0YsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdkQsTUFBTSxtQkFBbUIsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRSxNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXJFLE1BQU0sdUJBQXVCLEdBQUcsbUJBQW1CLElBQUksZ0JBQWdCLENBQUM7SUFDeEUsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixJQUFJLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO1NBQU0sQ0FBQztRQUNOLHFGQUFxRjtRQUNyRixNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkRlYWN0aXZhdGVGbiwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciBhcyBJb25pY01vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL21vZGFsLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICcuL21vZGFsLmNvbnRyb2xsZXInO1xuXG5leHBvcnQgY29uc3QgQ2FuRGlzbWlzc01vZGFsR3VhcmQ6IENhbkRlYWN0aXZhdGVGbjx1bmtub3duPiA9IGFzeW5jIDxUPihcbiAgX2NvbXBvbmVudDogVCxcbiAgX2N1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBuZXh0U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbikgPT4ge1xuICBjb25zdCBtb2RhbE5hdlNlcnZpY2UgPSBpbmplY3QoTW9kYWxOYXZpZ2F0aW9uU2VydmljZSk7XG4gIGNvbnN0IGN1cnJlbnRSb3V0ZUlzTW9kYWwgPSBtb2RhbE5hdlNlcnZpY2UuaXNNb2RhbFJvdXRlKGN1cnJlbnRTdGF0ZS51cmwpO1xuICBjb25zdCBuZXh0Um91dGVJc01vZGFsID0gbW9kYWxOYXZTZXJ2aWNlLmlzTW9kYWxSb3V0ZShuZXh0U3RhdGUudXJsKTtcblxuICBjb25zdCBpc05hdmlnYXRpbmdXaXRoaW5Nb2RhbCA9IGN1cnJlbnRSb3V0ZUlzTW9kYWwgJiYgbmV4dFJvdXRlSXNNb2RhbDtcbiAgaWYgKGlzTmF2aWdhdGluZ1dpdGhpbk1vZGFsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBtb2RhbENvbnRyb2xsZXIgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgY29uc3QgdG9wTW9zdE1vZGFsID0gbW9kYWxDb250cm9sbGVyLmdldFRvcE1vc3QoKTtcbiAgaWYgKHRvcE1vc3RNb2RhbCkge1xuICAgIGlmICh0b3BNb3N0TW9kYWwuaXNEaXNtaXNzaW5nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRvcE1vc3RNb2RhbC5kaXNtaXNzKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gRGVjbGFyYXRpdmUgbW9kYWxzIGFyZSBub3QgY3JlYXRlZCB0aHJvdWdoIEtpcmJ5IE1vZGFsY29udHJvbGxlciwgbGV0J3MgdHJ5IElvbmljOlxuICAgIGNvbnN0IGlvbmljTW9kYWxDb250cm9sbGVyID0gaW5qZWN0KElvbmljTW9kYWxDb250cm9sbGVyKTtcbiAgICBjb25zdCBpb25Nb2RhbCA9IGF3YWl0IGlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgIGlmIChpb25Nb2RhbCkge1xuICAgICAgcmV0dXJuIGlvbk1vZGFsLmRpc21pc3MoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';\nimport { IonContent, IonModal } from '@ionic/angular/standalone';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { inheritAriaLabelText } from '@kirbydesign/designsystem/shared';\nimport { ModalCompactWrapperComponent, ModalWrapperComponent, } from '../../modal-wrapper';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services\";\nimport * as i2 from \"../../modal-navigation.service\";\nimport * as i3 from \"@kirbydesign/designsystem/types\";\nimport * as i4 from \"@angular/common\";\nexport class ModalComponent {\n set canDismiss(canDismiss) {\n typeof canDismiss === 'boolean'\n ? (this._canDismiss = canDismiss)\n : (this._canDismiss = this.canDismissHelper.getCanDismissCallback(canDismiss));\n }\n constructor(canDismissHelper, modalNavigationService, windowRef, elementRef) {\n this.canDismissHelper = canDismissHelper;\n this.modalNavigationService = modalNavigationService;\n this.windowRef = windowRef;\n this.elementRef = elementRef;\n this.isOpen = false;\n this.size = 'medium';\n this.scrollDisabled = false;\n // NOTE: input properties forwarded to modal-wrapper ModalConfig\n this.collapseTitle = false;\n this.customHeight = undefined;\n this.flavor = 'modal';\n this.drawerSupplementaryAction = undefined;\n this.interactWithBackground = false;\n // end NOTE\n this.willPresent = new EventEmitter();\n this.didPresent = new EventEmitter();\n this.didDismiss = new EventEmitter();\n this.willDismiss = new EventEmitter();\n /**\n * We populate the ModalConfig with defaults here. This ensures that we can\n * guard for `if (key in this._config)` and only update the config when any of these\n * inputs change.\n */\n this._config = {\n collapseTitle: this.collapseTitle,\n customHeight: this.customHeight,\n flavor: this.flavor,\n drawerSupplementaryAction: this.drawerSupplementaryAction,\n interactWithBackground: this.interactWithBackground,\n };\n this._canDismiss = true;\n }\n ngOnInit() {\n this.forwardAriaLabel();\n }\n ngOnChanges(changes) {\n this.updateModalConfigOnChange(changes);\n }\n scrollToTop(scrollDuration) {\n this.ionContent.scrollToTop(scrollDuration);\n }\n scrollToBottom(scrollDuration) {\n this.ionContent.scrollToBottom(scrollDuration);\n }\n _onWillPresent(event) {\n this.willPresent.emit(event);\n if (this.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.add('allow-background-scroll');\n }\n }\n _onDidPresent(event) {\n this.modalNavigationService.handleBrowserBackButton(this.modalElement.nativeElement);\n this.didPresent.emit(event);\n }\n _onWillDismiss(event) {\n if (this.interactWithBackground) {\n this.windowRef.nativeWindow.document.body.classList.remove('allow-background-scroll');\n }\n this.willDismiss.emit(event);\n }\n _onDidDismiss(event) {\n this.didDismiss.emit(event);\n }\n updateModalConfigOnChange(changes) {\n Object.entries(changes).forEach(([key]) => {\n const isModalConfigProperty = key in this._config;\n if (isModalConfigProperty) {\n this._config[key] = changes[key].currentValue;\n }\n });\n }\n forwardAriaLabel() {\n // Instead of setting aria label on ion-modal in the template we forward it to modal-wrapper for consistency\n // and so we do not start listening for title changes in the modal-wrapper.\n this._config.htmlAttributes = {\n 'aria-label': inheritAriaLabelText(this.elementRef.nativeElement),\n };\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalComponent, deps: [{ token: i1.CanDismissHelper }, { token: i2.ModalNavigationService }, { token: i3.WindowRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: ModalComponent, isStandalone: true, selector: \"kirby-modal\", inputs: { isOpen: \"isOpen\", trigger: \"trigger\", size: \"size\", scrollDisabled: \"scrollDisabled\", canDismiss: \"canDismiss\", collapseTitle: \"collapseTitle\", customHeight: \"customHeight\", flavor: \"flavor\", drawerSupplementaryAction: \"drawerSupplementaryAction\", interactWithBackground: \"interactWithBackground\" }, outputs: { willPresent: \"willPresent\", didPresent: \"didPresent\", didDismiss: \"didDismiss\", willDismiss: \"willDismiss\" }, queries: [{ propertyName: \"template\", first: true, predicate: TemplateRef, descendants: true, static: true }], viewQueries: [{ propertyName: \"modalElement\", first: true, predicate: IonModal, descendants: true, read: ElementRef, static: true }, { propertyName: \"ionContent\", first: true, predicate: IonContent, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<ion-modal\\n class=\\\"kirby-modal kirby-overlay kirby-modal-{{ size }}\\\"\\n [ngClass]=\\\"[\\n flavor === 'compact' ? 'kirby-modal-compact' : 'kirby-' + flavor,\\n interactWithBackground ? 'interact-with-background' : '',\\n ]\\\"\\n [isOpen]=\\\"isOpen\\\"\\n [trigger]=\\\"trigger\\\"\\n [canDismiss]=\\\"_canDismiss\\\"\\n [showBackdrop]=\\\"!interactWithBackground\\\"\\n [style.--kirby-modal-height]=\\\"customHeight\\\"\\n (willPresent)=\\\"_onWillPresent($event)\\\"\\n (didPresent)=\\\"_onDidPresent($event)\\\"\\n (willDismiss)=\\\"_onWillDismiss($event)\\\"\\n (didDismiss)=\\\"_onDidDismiss($event)\\\"\\n>\\n <ng-template>\\n @if (flavor === 'compact') {\\n <kirby-modal-compact-wrapper\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n ></kirby-modal-compact-wrapper>\\n } @else {\\n <kirby-modal-wrapper\\n class=\\\"ion-page\\\"\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n [scrollDisabled]=\\\"scrollDisabled\\\"\\n ></kirby-modal-wrapper>\\n }\\n </ng-template>\\n</ion-modal>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: IconModule }, { kind: \"component\", type: IonModal, selector: \"ion-modal\" }, { kind: \"component\", type: ModalWrapperComponent, selector: \"kirby-modal-wrapper\", inputs: [\"scrollDisabled\", \"config\", \"content\"] }, { kind: \"component\", type: ModalCompactWrapperComponent, selector: \"kirby-modal-compact-wrapper\", inputs: [\"config\", \"content\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'kirby-modal', imports: [\n CommonModule,\n IconModule,\n IonModal,\n ModalWrapperComponent,\n ModalCompactWrapperComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ion-modal\\n class=\\\"kirby-modal kirby-overlay kirby-modal-{{ size }}\\\"\\n [ngClass]=\\\"[\\n flavor === 'compact' ? 'kirby-modal-compact' : 'kirby-' + flavor,\\n interactWithBackground ? 'interact-with-background' : '',\\n ]\\\"\\n [isOpen]=\\\"isOpen\\\"\\n [trigger]=\\\"trigger\\\"\\n [canDismiss]=\\\"_canDismiss\\\"\\n [showBackdrop]=\\\"!interactWithBackground\\\"\\n [style.--kirby-modal-height]=\\\"customHeight\\\"\\n (willPresent)=\\\"_onWillPresent($event)\\\"\\n (didPresent)=\\\"_onDidPresent($event)\\\"\\n (willDismiss)=\\\"_onWillDismiss($event)\\\"\\n (didDismiss)=\\\"_onDidDismiss($event)\\\"\\n>\\n <ng-template>\\n @if (flavor === 'compact') {\\n <kirby-modal-compact-wrapper\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n ></kirby-modal-compact-wrapper>\\n } @else {\\n <kirby-modal-wrapper\\n class=\\\"ion-page\\\"\\n [config]=\\\"_config\\\"\\n [content]=\\\"template\\\"\\n [scrollDisabled]=\\\"scrollDisabled\\\"\\n ></kirby-modal-wrapper>\\n }\\n </ng-template>\\n</ion-modal>\\n\" }]\n }], ctorParameters: () => [{ type: i1.CanDismissHelper }, { type: i2.ModalNavigationService }, { type: i3.WindowRef }, { type: i0.ElementRef }], propDecorators: { modalElement: [{\n type: ViewChild,\n args: [IonModal, { static: true, read: ElementRef }]\n }], ionContent: [{\n type: ViewChild,\n args: [IonContent]\n }], template: [{\n type: ContentChild,\n args: [TemplateRef, { static: true }]\n }], isOpen: [{\n type: Input\n }], trigger: [{\n type: Input\n }], size: [{\n type: Input\n }], scrollDisabled: [{\n type: Input\n }], canDismiss: [{\n type: Input\n }], collapseTitle: [{\n type: Input\n }], customHeight: [{\n type: Input\n }], flavor: [{\n type: Input\n }], drawerSupplementaryAction: [{\n type: Input\n }], interactWithBackground: [{\n type: Input\n }], willPresent: [{\n type: Output\n }], didPresent: [{\n type: Output\n }], didDismiss: [{\n type: Output\n }], willDismiss: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kYWwvc3JjL21vZGFsL21vZGFsLWNvbXBvbmVudC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwvbW9kYWwtY29tcG9uZW50L21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFeEUsT0FBTyxFQUVMLDRCQUE0QixFQUk1QixxQkFBcUIsR0FFdEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBZTdCLE1BQU0sT0FBTyxjQUFjO0lBVXpCLElBQWEsVUFBVSxDQUFDLFVBQXVDO1FBQzdELE9BQU8sVUFBVSxLQUFLLFNBQVM7WUFDN0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBNkJELFlBQ1UsZ0JBQWtDLEVBQ2xDLHNCQUE4QyxFQUM5QyxTQUFvQixFQUNwQixVQUFzQjtRQUh0QixxQkFBZ0Is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QUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDTyxVQUFVO3NCQUF0QixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25Db250ZW50LCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgT3ZlcmxheUV2ZW50RGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdHlwZXMnO1xuXG5pbXBvcnQgeyBpbmhlcml0QXJpYUxhYmVsVGV4dCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2RhbC1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbixcbiAgTW9kYWxDb21wYWN0V3JhcHBlckNvbXBvbmVudCxcbiAgTW9kYWxDb25maWcsXG4gIE1vZGFsRmxhdm9yLFxuICBNb2RhbFNpemUsXG4gIE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbiAgU2hvd0FsZXJ0Q2FsbGJhY2ssXG59IGZyb20gJy4uLy4uL21vZGFsLXdyYXBwZXInO1xuaW1wb3J0IHsgQ2FuRGlzbWlzc0hlbHBlciB9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgSW9uTW9kYWwsXG4gICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxuICAgIE1vZGFsQ29tcGFjdFdyYXBwZXJDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChJb25Nb2RhbCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Nb2RhbEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQpIGlvbkNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdHJpZ2dlcjogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBNb2RhbFNpemUgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgc2Nyb2xsRGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IGNhbkRpc21pc3MoY2FuRGlzbWlzczogU2hvd0FsZXJ0Q2FsbGJhY2sgfCBib29sZWFuKSB7XG4gICAgdHlwZW9mIGNhbkRpc21pc3MgPT09ICdib29sZWFuJ1xuICAgICAgPyAodGhpcy5fY2FuRGlzbWlzcyA9IGNhbkRpc21pc3MpXG4gICAgICA6ICh0aGlzLl9jYW5EaXNtaXNzID0gdGhpcy5jYW5EaXNtaXNzSGVscGVyLmdldENhbkRpc21pc3NDYWxsYmFjayhjYW5EaXNtaXNzKSk7XG4gIH1cblxuICAvLyBOT1RFOiBpbnB1dCBwcm9wZXJ0aWVzIGZvcndhcmRlZCB0byBtb2RhbC13cmFwcGVyIE1vZGFsQ29uZmlnXG4gIEBJbnB1dCgpIGNvbGxhcHNlVGl0bGUgPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tSGVpZ2h0OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZsYXZvcjogTW9kYWxGbGF2b3IgPSAnbW9kYWwnO1xuICBASW5wdXQoKSBkcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uPzogRHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaW50ZXJhY3RXaXRoQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBlbmQgTk9URVxuXG4gIEBPdXRwdXQoKSB3aWxsUHJlc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8T3ZlcmxheUV2ZW50RGV0YWlsPj4oKTtcbiAgQE91dHB1dCgpIGRpZFByZXNlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4+KCk7XG4gIEBPdXRwdXQoKSBkaWREaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+PigpO1xuICBAT3V0cHV0KCkgd2lsbERpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4+KCk7XG5cbiAgLyoqXG4gICAqIFdlIHBvcHVsYXRlIHRoZSBNb2RhbENvbmZpZyB3aXRoIGRlZmF1bHRzIGhlcmUuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGNhblxuICAgKiBndWFyZCBmb3IgYGlmIChrZXkgaW4gdGhpcy5fY29uZmlnKWAgYW5kIG9ubHkgdXBkYXRlIHRoZSBjb25maWcgd2hlbiBhbnkgb2YgdGhlc2VcbiAgICogaW5wdXRzIGNoYW5nZS5cbiAgICovXG4gIF9jb25maWc6IE1vZGFsQ29uZmlnID0ge1xuICAgIGNvbGxhcHNlVGl0bGU6IHRoaXMuY29sbGFwc2VUaXRsZSxcbiAgICBjdXN0b21IZWlnaHQ6IHRoaXMuY3VzdG9tSGVpZ2h0LFxuICAgIGZsYXZvcjogdGhpcy5mbGF2b3IsXG4gICAgZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbjogdGhpcy5kcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uLFxuICAgIGludGVyYWN0V2l0aEJhY2tncm91bmQ6IHRoaXMuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCxcbiAgfTtcbiAgX2NhbkRpc21pc3M6IFNob3dBbGVydENhbGxiYWNrIHwgYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjYW5EaXNtaXNzSGVscGVyOiBDYW5EaXNtaXNzSGVscGVyLFxuICAgIHByaXZhdGUgbW9kYWxOYXZpZ2F0aW9uU2VydmljZTogTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3J3YXJkQXJpYUxhYmVsKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNb2RhbENvbmZpZ09uQ2hhbmdlKGNoYW5nZXMpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3Aoc2Nyb2xsRHVyYXRpb24pO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFRvQm90dG9tKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24pO1xuICB9XG5cbiAgcHVibGljIF9vbldpbGxQcmVzZW50KGV2ZW50OiBDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+KSB7XG4gICAgdGhpcy53aWxsUHJlc2VudC5lbWl0KGV2ZW50KTtcblxuICAgIGlmICh0aGlzLmludGVyYWN0V2l0aEJhY2tncm91bmQpIHtcbiAgICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2FsbG93LWJhY2tncm91bmQtc2Nyb2xsJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIF9vbkRpZFByZXNlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4pIHtcbiAgICB0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaGFuZGxlQnJvd3NlckJhY2tCdXR0b24odGhpcy5tb2RhbEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5kaWRQcmVzZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIF9vbldpbGxEaXNtaXNzKGV2ZW50OiBDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+KSB7XG4gICAgaWYgKHRoaXMuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCkge1xuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnYWxsb3ctYmFja2dyb3VuZC1zY3JvbGwnKTtcbiAgICB9XG5cbiAgICB0aGlzLndpbGxEaXNtaXNzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIF9vbkRpZERpc21pc3MoZXZlbnQ6IEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4pIHtcbiAgICB0aGlzLmRpZERpc21pc3MuZW1pdChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGFsQ29uZmlnT25DaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIE9iamVjdC5lbnRyaWVzKGNoYW5nZXMpLmZvckVhY2goKFtrZXldKSA9PiB7XG4gICAgICBjb25zdCBpc01vZGFsQ29uZmlnUHJvcGVydHkgPSBrZXkgaW4gdGhpcy5fY29uZmlnO1xuICAgICAgaWYgKGlzTW9kYWxDb25maWdQcm9wZXJ0eSkge1xuICAgICAgICB0aGlzLl9jb25maWdba2V5XSA9IGNoYW5nZXNba2V5XS5jdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvcndhcmRBcmlhTGFiZWwoKSB7XG4gICAgLy8gSW5zdGVhZCBvZiBzZXR0aW5nIGFyaWEgbGFiZWwgb24gaW9uLW1vZGFsIGluIHRoZSB0ZW1wbGF0ZSB3ZSBmb3J3YXJkIGl0IHRvIG1vZGFsLXdyYXBwZXIgZm9yIGNvbnNpc3RlbmN5XG4gICAgLy8gYW5kIHNvIHdlIGRvIG5vdCBzdGFydCBsaXN0ZW5pbmcgZm9yIHRpdGxlIGNoYW5nZXMgaW4gdGhlIG1vZGFsLXdyYXBwZXIuXG4gICAgdGhpcy5fY29uZmlnLmh0bWxBdHRyaWJ1dGVzID0ge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBpbmhlcml0QXJpYUxhYmVsVGV4dCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCksXG4gICAgfTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbFxuICBjbGFzcz1cImtpcmJ5LW1vZGFsIGtpcmJ5LW92ZXJsYXkga2lyYnktbW9kYWwte3sgc2l6ZSB9fVwiXG4gIFtuZ0NsYXNzXT1cIltcbiAgICBmbGF2b3IgPT09ICdjb21wYWN0JyA/ICdraXJieS1tb2RhbC1jb21wYWN0JyA6ICdraXJieS0nICsgZmxhdm9yLFxuICAgIGludGVyYWN0V2l0aEJhY2tncm91bmQgPyAnaW50ZXJhY3Qtd2l0aC1iYWNrZ3JvdW5kJyA6ICcnLFxuICBdXCJcbiAgW2lzT3Blbl09XCJpc09wZW5cIlxuICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgW2NhbkRpc21pc3NdPVwiX2NhbkRpc21pc3NcIlxuICBbc2hvd0JhY2tkcm9wXT1cIiFpbnRlcmFjdFdpdGhCYWNrZ3JvdW5kXCJcbiAgW3N0eWxlLi0ta2lyYnktbW9kYWwtaGVpZ2h0XT1cImN1c3RvbUhlaWdodFwiXG4gICh3aWxsUHJlc2VudCk9XCJfb25XaWxsUHJlc2VudCgkZXZlbnQpXCJcbiAgKGRpZFByZXNlbnQpPVwiX29uRGlkUHJlc2VudCgkZXZlbnQpXCJcbiAgKHdpbGxEaXNtaXNzKT1cIl9vbldpbGxEaXNtaXNzKCRldmVudClcIlxuICAoZGlkRGlzbWlzcyk9XCJfb25EaWREaXNtaXNzKCRldmVudClcIlxuPlxuICA8bmctdGVtcGxhdGU+XG4gICAgQGlmIChmbGF2b3IgPT09ICdjb21wYWN0Jykge1xuICAgICAgPGtpcmJ5LW1vZGFsLWNvbXBhY3Qtd3JhcHBlclxuICAgICAgICBbY29uZmlnXT1cIl9jb25maWdcIlxuICAgICAgICBbY29udGVudF09XCJ0ZW1wbGF0ZVwiXG4gICAgICA+PC9raXJieS1tb2RhbC1jb21wYWN0LXdyYXBwZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8a2lyYnktbW9kYWwtd3JhcHBlclxuICAgICAgICBjbGFzcz1cImlvbi1wYWdlXCJcbiAgICAgICAgW2NvbmZpZ109XCJfY29uZmlnXCJcbiAgICAgICAgW2NvbnRlbnRdPVwidGVtcGxhdGVcIlxuICAgICAgICBbc2Nyb2xsRGlzYWJsZWRdPVwic2Nyb2xsRGlzYWJsZWRcIlxuICAgICAgPjwva2lyYnktbW9kYWwtd3JhcHBlcj5cbiAgICB9XG4gIDwvbmctdGVtcGxhdGU+XG48L2lvbi1tb2RhbD5cbiJdfQ==","import { ChangeDetectionStrategy, Component, HostBinding, Input, Optional, } from '@angular/core';\nimport { IonFooter } from '@ionic/angular/standalone';\nimport { ModalElementComponent, ModalElementType, } from '../../modal.interfaces';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../modal.interfaces\";\nexport class ModalFooterComponent extends ModalElementComponent {\n get _cssClass() {\n return [this.themeColor, this.type].filter((cssClass) => !!cssClass);\n }\n constructor(elementRef, modalElementsAdvertiser) {\n super(ModalElementType.FOOTER, elementRef, modalElementsAdvertiser);\n this.snapToKeyboard = false;\n this.type = 'fixed';\n this.themeColor = 'white';\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalFooterComponent, deps: [{ token: i0.ElementRef }, { token: i1.ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.2\", type: ModalFooterComponent, isStandalone: true, selector: \"kirby-modal-footer\", inputs: { snapToKeyboard: \"snapToKeyboard\", type: \"type\", themeColor: \"themeColor\" }, host: { properties: { \"class.snap-to-keyboard\": \"this.snapToKeyboard\", \"class\": \"this._cssClass\" } }, usesInheritance: true, ngImport: i0, template: \"<ion-footer role=\\\"presentation\\\">\\n <ng-content></ng-content>\\n</ion-footer>\\n\", styles: [\"ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;box-sizing:inherit;display:flex;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:16px;padding-bottom:calc(12px + var(--kirby-modal-footer-safe-area-bottom, 0px))}@media (min-width: 768px){ion-footer{padding:24px}}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box;display:block}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background-color:var(--kirby-background-color)}:host(.inline) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\\n\"], dependencies: [{ kind: \"component\", type: IonFooter, selector: \"ion-footer\", inputs: [\"collapse\", \"mode\", \"translucent\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: ModalFooterComponent, decorators: [{\n type: Component,\n args: [{ imports: [IonFooter], selector: 'kirby-modal-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ion-footer role=\\\"presentation\\\">\\n <ng-content></ng-content>\\n</ion-footer>\\n\", styles: [\"ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;box-sizing:inherit;display:flex;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:16px;padding-bottom:calc(12px + var(--kirby-modal-footer-safe-area-bottom, 0px))}@media (min-width: 768px){ion-footer{padding:24px}}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box;display:block}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background-color:var(--kirby-background-color)}:host(.inline) ion-footer{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ModalElementsAdvertiser, decorators: [{\n type: Optional\n }] }], propDecorators: { snapToKeyboard: [{\n type: HostBinding,\n args: ['class.snap-to-keyboard']\n }, {\n type: Input\n }], type: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], _cssClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9mb290ZXIvbW9kYWwtZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC9mb290ZXIvbW9kYWwtZm9vdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wscUJBQXFCLEVBRXJCLGdCQUFnQixHQUNqQixNQUFNLHdCQUF3QixDQUFDOzs7QUFTaEMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHFCQUFxQjtJQVc3RCxJQUNJLFNBQVM7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFlBQ0UsVUFBbUMsRUFDdkIsdUJBQWdEO1FBRTVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFqQnRFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLFNBQUksR0FBdUIsT0FBTyxDQUFDO1FBR25DLGVBQVUsR0FBc0IsT0FBTyxDQUFDO0lBWXhDLENBQUM7aUlBckJVLG9CQUFvQjtxSEFBcEIsb0JBQW9CLGlTQ3RCakMsa0ZBR0Esb3NIRGFZLFNBQVM7OzJGQU1SLG9CQUFvQjtrQkFQaEMsU0FBUzs4QkFDQyxDQUFDLFNBQVMsQ0FBQyxZQUNWLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzswQkFvQjVDLFFBQVE7eUNBZlgsY0FBYztzQkFGYixXQUFXO3VCQUFDLHdCQUF3Qjs7c0JBQ3BDLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJRixTQUFTO3NCQURaLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uRm9vdGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQge1xuICBNb2RhbEVsZW1lbnRDb21wb25lbnQsXG4gIE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLFxuICBNb2RhbEVsZW1lbnRUeXBlLFxufSBmcm9tICcuLi8uLi9tb2RhbC5pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtJb25Gb290ZXJdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LW1vZGFsLWZvb3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC1mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC1mb290ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsRm9vdGVyQ29tcG9uZW50IGV4dGVuZHMgTW9kYWxFbGVtZW50Q29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbmFwLXRvLWtleWJvYXJkJylcbiAgQElucHV0KClcbiAgc25hcFRvS2V5Ym9hcmQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB0eXBlOiAnaW5saW5lJyB8ICdmaXhlZCcgPSAnZml4ZWQnO1xuXG4gIEBJbnB1dCgpXG4gIHRoZW1lQ29sb3I6ICd3aGl0ZScgfCAnbGlnaHQnID0gJ3doaXRlJztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9jc3NDbGFzcygpIHtcbiAgICByZXR1cm4gW3RoaXMudGhlbWVDb2xvciwgdGhpcy50eXBlXS5maWx0ZXIoKGNzc0NsYXNzKSA9PiAhIWNzc0NsYXNzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxuICApIHtcbiAgICBzdXBlcihNb2RhbEVsZW1lbnRUeXBlLkZPT1RFUiwgZWxlbWVudFJlZiwgbW9kYWxFbGVtZW50c0FkdmVydGlzZXIpO1xuICB9XG59XG4iLCI8aW9uLWZvb3RlciByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2lyYnlkZXNpZ24tZGVzaWduc3lzdGVtLW1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbW9kYWwvc3JjL2tpcmJ5ZGVzaWduLWRlc2lnbnN5c3RlbS1tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":["i2","i4","i1","i1.AlertHelper","i3","i4.CanDismissHelper","i5","i2.CanDismissHelper","i2.ModalAnimationBuilderService","i3.ModalNavigationService","i5.CanDismissHelper","i1.ModalHelper","i2.ActionSheetHelper","i3.AlertHelper","i4.ModalNavigationService","IonicModalController","i1.CanDismissHelper","i2.ModalNavigationService","i1.ModalElementsAdvertiser"],"mappings":"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"}
|