Files
doneit-web/.angular/cache/14.2.12/babel-webpack/9ff9f757b5df72eb060bcf28d1a8eb4c.json
T
Eudes Inácio 53b71ea16f its working
2023-06-30 09:54:21 +01:00

1 line
156 KiB
JSON

{"ast":null,"code":"import _asyncToGenerator from \"C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { r as registerInstance, h, H as Host, i as getElement, e as createEvent, f as readTask, j as forceUpdate, c as writeTask } from './index-7a8b7a1c.js';\nimport { b as getIonMode, c as config, a as isPlatform } from './ionic-global-63a97a32.js';\nimport { c as createColorClasses, h as hostContext } from './theme-ff3fc52f.js';\nimport { k as clamp, i as inheritAriaAttributes } from './helpers-1457892a.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier-eea9a7a9.js';\nimport { a as attachComponent, d as detachComponent } from './framework-delegate-94e770cc.js';\nimport { t as transition } from './index-a7711c1e.js';\nconst appCss = \"html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}\";\nconst App = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n componentDidLoad() {\n {\n rIC( /*#__PURE__*/_asyncToGenerator(function* () {\n const isHybrid = isPlatform(window, 'hybrid');\n if (!config.getBoolean('_testing')) {\n import('./tap-click-7ddcdebb.js').then(module => module.startTapClick(config));\n }\n if (config.getBoolean('statusTap', isHybrid)) {\n import('./status-tap-9cb487b1.js').then(module => module.startStatusTap());\n }\n if (config.getBoolean('inputShims', needInputShims())) {\n import('./input-shims-ce03ee9f.js').then(module => module.startInputShims(config));\n }\n const hardwareBackButtonModule = yield import('./hardware-back-button-4a6b37fb.js');\n if (config.getBoolean('hardwareBackButton', isHybrid)) {\n hardwareBackButtonModule.startHardwareBackButton();\n } else {\n hardwareBackButtonModule.blockHardwareBackButton();\n }\n if (typeof window !== 'undefined') {\n import('./keyboard-5742b5da.js').then(module => module.startKeyboardAssist(window));\n }\n import('./focus-visible-f4ad4f1a.js').then(module => module.startFocusVisible());\n }));\n }\n }\n render() {\n const mode = getIonMode(this);\n return h(Host, {\n class: {\n [mode]: true,\n 'ion-page': true,\n 'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding')\n }\n });\n }\n get el() {\n return getElement(this);\n }\n};\nconst needInputShims = () => {\n return isPlatform(window, 'ios') && isPlatform(window, 'mobile');\n};\nconst rIC = callback => {\n if ('requestIdleCallback' in window) {\n window.requestIdleCallback(callback);\n } else {\n setTimeout(callback, 32);\n }\n};\nApp.style = appCss;\nconst buttonsIosCss = \".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-start:5px;--padding-end:5px;margin-left:2px;margin-right:2px;height:32px;font-size:17px;font-weight:400}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:28px;line-height:0.67}\";\nconst buttonsMdCss = \".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;--padding-start:8px;--padding-end:8px;--box-shadow:none;margin-left:2px;margin-right:2px;height:32px;font-size:14px;font-weight:500}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:48px;height:48px}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}\";\nconst Buttons = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n /**\n * If true, buttons will disappear when its\n * parent toolbar has fully collapsed if the toolbar\n * is not the first toolbar. If the toolbar is the\n * first toolbar, the buttons will be hidden and will\n * only be shown once all toolbars have fully collapsed.\n *\n * Only applies in `ios` mode with `collapse` set to\n * `true` on `ion-header`.\n *\n * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)\n */\n this.collapse = false;\n }\n render() {\n const mode = getIonMode(this);\n return h(Host, {\n class: {\n [mode]: true,\n ['buttons-collapse']: this.collapse\n }\n });\n }\n};\nButtons.style = {\n ios: buttonsIosCss,\n md: buttonsMdCss\n};\nconst contentCss = \":host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.outer-content){--background:var(--ion-color-step-50, #f2f2f2)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.inner-scroll{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{-ms-touch-action:pan-y;touch-action:pan-y;overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{-ms-touch-action:pan-x;touch-action:pan-x;overflow-x:var(--overflow);overscroll-behavior-x:contain}.scroll-x.scroll-y{-ms-touch-action:auto;touch-action:auto}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:\\\"\\\"}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;left:-100%;width:100%;height:100vh;opacity:0;pointer-events:none}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;right:0;width:10px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAgCAYAAAAIXrg4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3MDgzRkQ5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3MDgzRkU5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTcwODNGQjlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTcwODNGQzlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmePEuQAAABNSURBVHjaYvz//z8DIxAwMDAwATGMhmFmPDQuOSZks0AMmoJBaQHjkPfB0Lfg/2gQjVow+HPy/yHvg9GiYjQfjMbBqAWjFgy/4hogwADYqwdzxy5BuwAAAABJRU5ErkJggg==);background-repeat:repeat-y;background-size:10px 16px}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}\";\nconst Content = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionScrollStart = createEvent(this, \"ionScrollStart\", 7);\n this.ionScroll = createEvent(this, \"ionScroll\", 7);\n this.ionScrollEnd = createEvent(this, \"ionScrollEnd\", 7);\n this.isScrolling = false;\n this.lastScroll = 0;\n this.queued = false;\n this.cTop = -1;\n this.cBottom = -1;\n this.isMainContent = true;\n // Detail is used in a hot loop in the scroll event, by allocating it here\n // V8 will be able to inline any read/write to it since it's a monomorphic class.\n // https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html\n this.detail = {\n scrollTop: 0,\n scrollLeft: 0,\n type: 'scroll',\n event: undefined,\n startX: 0,\n startY: 0,\n startTime: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n currentTime: 0,\n data: undefined,\n isScrolling: true\n };\n /**\n * If `true`, the content will scroll behind the headers\n * and footers. This effect can easily be seen by setting the toolbar\n * to transparent.\n */\n this.fullscreen = false;\n /**\n * If you want to enable the content scrolling in the X axis, set this property to `true`.\n */\n this.scrollX = false;\n /**\n * If you want to disable the content scrolling in the Y axis, set this property to `false`.\n */\n this.scrollY = true;\n /**\n * Because of performance reasons, ionScroll events are disabled by default, in order to enable them\n * and start listening from (ionScroll), set this property to `true`.\n */\n this.scrollEvents = false;\n }\n connectedCallback() {\n this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;\n }\n disconnectedCallback() {\n this.onScrollEnd();\n }\n onAppLoad() {\n this.resize();\n }\n shouldForceOverscroll() {\n const {\n forceOverscroll\n } = this;\n const mode = getIonMode(this);\n return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;\n }\n resize() {\n if (this.fullscreen) {\n readTask(() => this.readDimensions());\n } else if (this.cTop !== 0 || this.cBottom !== 0) {\n this.cTop = this.cBottom = 0;\n forceUpdate(this);\n }\n }\n readDimensions() {\n const page = getPageElement(this.el);\n const top = Math.max(this.el.offsetTop, 0);\n const bottom = Math.max(page.offsetHeight - top - this.el.offsetHeight, 0);\n const dirty = top !== this.cTop || bottom !== this.cBottom;\n if (dirty) {\n this.cTop = top;\n this.cBottom = bottom;\n forceUpdate(this);\n }\n }\n onScroll(ev) {\n const timeStamp = Date.now();\n const shouldStart = !this.isScrolling;\n this.lastScroll = timeStamp;\n if (shouldStart) {\n this.onScrollStart();\n }\n if (!this.queued && this.scrollEvents) {\n this.queued = true;\n readTask(ts => {\n this.queued = false;\n this.detail.event = ev;\n updateScrollDetail(this.detail, this.scrollEl, ts, shouldStart);\n this.ionScroll.emit(this.detail);\n });\n }\n }\n /**\n * Get the element where the actual scrolling takes place.\n * This element can be used to subscribe to `scroll` events or manually modify\n * `scrollTop`. However, it's recommended to use the API provided by `ion-content`:\n *\n * i.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events\n * and `scrollToPoint()` to scroll the content into a certain point.\n */\n getScrollElement() {\n return Promise.resolve(this.scrollEl);\n }\n /**\n * Scroll to the top of the component.\n *\n * @param duration The amount of time to take scrolling to the top. Defaults to `0`.\n */\n scrollToTop(duration = 0) {\n return this.scrollToPoint(undefined, 0, duration);\n }\n /**\n * Scroll to the bottom of the component.\n *\n * @param duration The amount of time to take scrolling to the bottom. Defaults to `0`.\n */\n scrollToBottom(duration = 0) {\n const y = this.scrollEl.scrollHeight - this.scrollEl.clientHeight;\n return this.scrollToPoint(undefined, y, duration);\n }\n /**\n * Scroll by a specified X/Y distance in the component.\n *\n * @param x The amount to scroll by on the horizontal axis.\n * @param y The amount to scroll by on the vertical axis.\n * @param duration The amount of time to take scrolling by that amount.\n */\n scrollByPoint(x, y, duration) {\n return this.scrollToPoint(x + this.scrollEl.scrollLeft, y + this.scrollEl.scrollTop, duration);\n }\n /**\n * Scroll to a specified X/Y location in the component.\n *\n * @param x The point to scroll to on the horizontal axis.\n * @param y The point to scroll to on the vertical axis.\n * @param duration The amount of time to take scrolling to that point. Defaults to `0`.\n */\n scrollToPoint(x, y, duration = 0) {\n var _this = this;\n return _asyncToGenerator(function* () {\n const el = _this.scrollEl;\n if (duration < 32) {\n if (y != null) {\n el.scrollTop = y;\n }\n if (x != null) {\n el.scrollLeft = x;\n }\n return;\n }\n let resolve;\n let startTime = 0;\n const promise = new Promise(r => resolve = r);\n const fromY = el.scrollTop;\n const fromX = el.scrollLeft;\n const deltaY = y != null ? y - fromY : 0;\n const deltaX = x != null ? x - fromX : 0;\n // scroll loop\n const step = timeStamp => {\n const linearTime = Math.min(1, (timeStamp - startTime) / duration) - 1;\n const easedT = Math.pow(linearTime, 3) + 1;\n if (deltaY !== 0) {\n el.scrollTop = Math.floor(easedT * deltaY + fromY);\n }\n if (deltaX !== 0) {\n el.scrollLeft = Math.floor(easedT * deltaX + fromX);\n }\n if (easedT < 1) {\n // do not use DomController here\n // must use nativeRaf in order to fire in the next frame\n // TODO: remove as any\n requestAnimationFrame(step);\n } else {\n resolve();\n }\n };\n // chill out for a frame first\n requestAnimationFrame(ts => {\n startTime = ts;\n step(ts);\n });\n return promise;\n })();\n }\n onScrollStart() {\n this.isScrolling = true;\n this.ionScrollStart.emit({\n isScrolling: true\n });\n if (this.watchDog) {\n clearInterval(this.watchDog);\n }\n // watchdog\n this.watchDog = setInterval(() => {\n if (this.lastScroll < Date.now() - 120) {\n this.onScrollEnd();\n }\n }, 100);\n }\n onScrollEnd() {\n clearInterval(this.watchDog);\n this.watchDog = null;\n if (this.isScrolling) {\n this.isScrolling = false;\n this.ionScrollEnd.emit({\n isScrolling: false\n });\n }\n }\n render() {\n const {\n isMainContent,\n scrollX,\n scrollY\n } = this;\n const mode = getIonMode(this);\n const forceOverscroll = this.shouldForceOverscroll();\n const TagType = isMainContent ? 'main' : 'div';\n const transitionShadow = mode === 'ios' && config.getBoolean('experimentalTransitionShadow', true);\n this.resize();\n return h(Host, {\n class: createColorClasses(this.color, {\n [mode]: true,\n 'content-sizing': hostContext('ion-popover', this.el),\n 'overscroll': forceOverscroll\n }),\n style: {\n '--offset-top': `${this.cTop}px`,\n '--offset-bottom': `${this.cBottom}px`\n }\n }, h(\"div\", {\n id: \"background-content\",\n part: \"background\"\n }), h(TagType, {\n class: {\n 'inner-scroll': true,\n 'scroll-x': scrollX,\n 'scroll-y': scrollY,\n 'overscroll': (scrollX || scrollY) && forceOverscroll\n },\n ref: el => this.scrollEl = el,\n onScroll: this.scrollEvents ? ev => this.onScroll(ev) : undefined,\n part: \"scroll\"\n }, h(\"slot\", null)), transitionShadow ? h(\"div\", {\n class: \"transition-effect\"\n }, h(\"div\", {\n class: \"transition-cover\"\n }), h(\"div\", {\n class: \"transition-shadow\"\n })) : null, h(\"slot\", {\n name: \"fixed\"\n }));\n }\n get el() {\n return getElement(this);\n }\n};\nconst getParentElement = el => {\n if (el.parentElement) {\n // normal element with a parent element\n return el.parentElement;\n }\n if (el.parentNode && el.parentNode.host) {\n // shadow dom's document fragment\n return el.parentNode.host;\n }\n return null;\n};\nconst getPageElement = el => {\n const tabs = el.closest('ion-tabs');\n if (tabs) {\n return tabs;\n }\n /**\n * If we're in a popover, we need to use its wrapper so we can account for space\n * between the popover and the edges of the screen. But if the popover contains\n * its own page element, we should use that instead.\n */\n const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');\n if (page) {\n return page;\n }\n return getParentElement(el);\n};\n// ******** DOM READ ****************\nconst updateScrollDetail = (detail, el, timestamp, shouldStart) => {\n const prevX = detail.currentX;\n const prevY = detail.currentY;\n const prevT = detail.currentTime;\n const currentX = el.scrollLeft;\n const currentY = el.scrollTop;\n const timeDelta = timestamp - prevT;\n if (shouldStart) {\n // remember the start positions\n detail.startTime = timestamp;\n detail.startX = currentX;\n detail.startY = currentY;\n detail.velocityX = detail.velocityY = 0;\n }\n detail.currentTime = timestamp;\n detail.currentX = detail.scrollLeft = currentX;\n detail.currentY = detail.scrollTop = currentY;\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n if (timeDelta > 0 && timeDelta < 100) {\n const velocityX = (currentX - prevX) / timeDelta;\n const velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n};\nContent.style = contentCss;\nconst footerIosCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}\";\nconst footerMdCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md::before{left:0;top:-2px;bottom:auto;background-position:left 0 top 0;position:absolute;width:100%;height:2px;background-image:url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAHBAMAAADzDtBxAAAAD1BMVEUAAAAAAAAAAAAAAAAAAABPDueNAAAABXRSTlMUCS0gBIh/TXEAAAAaSURBVAjXYxCEAgY4UIICBmMogMsgFLtAAQCNSwXZKOdPxgAAAABJRU5ErkJggg==\\\");background-repeat:repeat-x;content:\\\"\\\"}[dir=rtl] .footer-md::before,:host-context([dir=rtl]) .footer-md::before{left:unset;right:unset;right:0}[dir=rtl] .footer-md::before,:host-context([dir=rtl]) .footer-md::before{background-position:right 0 top 0}.footer-md.ion-no-border::before{display:none}\";\nconst Footer = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n /**\n * If `true`, the footer will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n *\n * Note: In order to scroll content behind the footer, the `fullscreen`\n * attribute needs to be set on the content.\n */\n this.translucent = false;\n }\n render() {\n const mode = getIonMode(this);\n const translucent = this.translucent;\n return h(Host, {\n role: \"contentinfo\",\n class: {\n [mode]: true,\n // Used internally for styling\n [`footer-${mode}`]: true,\n [`footer-translucent`]: translucent,\n [`footer-translucent-${mode}`]: translucent\n }\n }, mode === 'ios' && translucent && h(\"div\", {\n class: \"footer-background\"\n }), h(\"slot\", null));\n }\n};\nFooter.style = {\n ios: footerIosCss,\n md: footerMdCss\n};\nconst TRANSITION = 'all 0.2s ease-in-out';\nconst cloneElement = tagName => {\n const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);\n if (getCachedEl !== null) {\n return getCachedEl;\n }\n const clonedEl = document.createElement(tagName);\n clonedEl.classList.add('ion-cloned-element');\n clonedEl.style.setProperty('display', 'none');\n document.body.appendChild(clonedEl);\n return clonedEl;\n};\nconst createHeaderIndex = headerEl => {\n if (!headerEl) {\n return;\n }\n const toolbars = headerEl.querySelectorAll('ion-toolbar');\n return {\n el: headerEl,\n toolbars: Array.from(toolbars).map(toolbar => {\n const ionTitleEl = toolbar.querySelector('ion-title');\n return {\n el: toolbar,\n background: toolbar.shadowRoot.querySelector('.toolbar-background'),\n ionTitleEl,\n innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,\n ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')) || []\n };\n }) || []\n };\n};\nconst handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const scale = clamp(1, 1 + -scrollTop / 500, 1.1);\n // Native refresher should not cause titles to scale\n const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');\n if (nativeRefresher === null) {\n writeTask(() => {\n scaleLargeTitles(scrollHeaderIndex.toolbars, scale);\n });\n }\n });\n};\nconst setToolbarBackgroundOpacity = (toolbar, opacity) => {\n if (opacity === undefined) {\n toolbar.background.style.removeProperty('--opacity');\n } else {\n toolbar.background.style.setProperty('--opacity', opacity.toString());\n }\n};\nconst handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {\n if (!ev[0].isIntersecting) {\n return;\n }\n /**\n * There is a bug in Safari where overflow scrolling on a non-body element\n * does not always reset the scrollTop position to 0 when letting go. It will\n * set to 1 once the rubber band effect has ended. This causes the background to\n * appear slightly on certain app setups.\n *\n * Additionally, we check if user is rubber banding (scrolling is negative)\n * as this can mean they are using pull to refresh. Once the refresher starts,\n * the content is transformed which can cause the intersection observer to erroneously\n * fire here as well.\n */\n const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : (1 - ev[0].intersectionRatio) * 100 / 75;\n mainHeaderIndex.toolbars.forEach(toolbar => {\n setToolbarBackgroundOpacity(toolbar, scale === 1 ? undefined : scale);\n });\n};\n/**\n * If toolbars are intersecting, hide the scrollable toolbar content\n * and show the primary toolbar content. If the toolbars are not intersecting,\n * hide the primary toolbar content and show the scrollable toolbar content\n */\nconst handleToolbarIntersection = (ev, mainHeaderIndex, scrollHeaderIndex, scrollEl) => {\n writeTask(() => {\n const scrollTop = scrollEl.scrollTop;\n handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);\n const event = ev[0];\n const intersection = event.intersectionRect;\n const intersectionArea = intersection.width * intersection.height;\n const rootArea = event.rootBounds.width * event.rootBounds.height;\n const isPageHidden = intersectionArea === 0 && rootArea === 0;\n const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);\n const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);\n const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);\n if (isPageHidden || isPageTransitioning) {\n return;\n }\n if (event.isIntersecting) {\n setHeaderActive(mainHeaderIndex, false);\n setHeaderActive(scrollHeaderIndex);\n } else {\n /**\n * There is a bug with IntersectionObserver on Safari\n * where `event.isIntersecting === false` when cancelling\n * a swipe to go back gesture. Checking the intersection\n * x, y, width, and height provides a workaround. This bug\n * does not happen when using Safari + Web Animations,\n * only Safari + CSS Animations.\n */\n const hasValidIntersection = intersection.x === 0 && intersection.y === 0 || intersection.width !== 0 && intersection.height !== 0;\n if (hasValidIntersection && scrollTop > 0) {\n setHeaderActive(mainHeaderIndex);\n setHeaderActive(scrollHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.toolbars[0]);\n }\n }\n });\n};\nconst setHeaderActive = (headerIndex, active = true) => {\n if (active) {\n headerIndex.el.classList.remove('header-collapse-condense-inactive');\n } else {\n headerIndex.el.classList.add('header-collapse-condense-inactive');\n }\n};\nconst scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {\n toolbars.forEach(toolbar => {\n const ionTitle = toolbar.ionTitleEl;\n const titleDiv = toolbar.innerTitleEl;\n if (!ionTitle || ionTitle.size !== 'large') {\n return;\n }\n titleDiv.style.transition = transition ? TRANSITION : '';\n titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;\n });\n};\nconst headerIosCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:7px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar ion-searchbar{height:48px;padding-top:0px;padding-bottom:13px}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}\";\nconst headerMdCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md::after{left:0;bottom:-5px;background-position:left 0 top -2px;position:absolute;width:100%;height:5px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAHBAMAAADzDtBxAAAAD1BMVEUAAAAAAAAAAAAAAAAAAABPDueNAAAABXRSTlMUCS0gBIh/TXEAAAAaSURBVAjXYxCEAgY4UIICBmMogMsgFLtAAQCNSwXZKOdPxgAAAABJRU5ErkJggg==);background-repeat:repeat-x;content:\\\"\\\"}[dir=rtl] .header-md::after,:host-context([dir=rtl]) .header-md::after{left:unset;right:unset;right:0}[dir=rtl] .header-md::after,:host-context([dir=rtl]) .header-md::after{background-position:right 0 top -2px}.header-collapse-condense{display:none}.header-md.ion-no-border::after{display:none}\";\nconst Header = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.collapsibleHeaderInitialized = false;\n this.inheritedAttributes = {};\n /**\n * If `true`, the header will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n *\n * Note: In order to scroll content behind the header, the `fullscreen`\n * attribute needs to be set on the content.\n */\n this.translucent = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n componentDidLoad() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n yield _this2.checkCollapsibleHeader();\n })();\n }\n componentDidUpdate() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n yield _this3.checkCollapsibleHeader();\n })();\n }\n disconnectedCallback() {\n this.destroyCollapsibleHeader();\n }\n checkCollapsibleHeader() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n // Determine if the header can collapse\n const hasCollapse = _this4.collapse === 'condense';\n const canCollapse = hasCollapse && getIonMode(_this4) === 'ios' ? hasCollapse : false;\n if (!canCollapse && _this4.collapsibleHeaderInitialized) {\n _this4.destroyCollapsibleHeader();\n } else if (canCollapse && !_this4.collapsibleHeaderInitialized) {\n const pageEl = _this4.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? pageEl.querySelector('ion-content') : null;\n // Cloned elements are always needed in iOS transition\n writeTask(() => {\n const title = cloneElement('ion-title');\n title.size = 'large';\n cloneElement('ion-back-button');\n });\n yield _this4.setupCollapsibleHeader(contentEl, pageEl);\n }\n })();\n }\n destroyCollapsibleHeader() {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = undefined;\n }\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n if (this.collapsibleMainHeader) {\n this.collapsibleMainHeader.classList.remove('header-collapse-main');\n this.collapsibleMainHeader = undefined;\n }\n }\n setupCollapsibleHeader(contentEl, pageEl) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n if (!contentEl || !pageEl) {\n console.error('ion-header requires a content to collapse, make sure there is an ion-content.');\n return;\n }\n if (typeof IntersectionObserver === 'undefined') {\n return;\n }\n _this5.scrollEl = yield contentEl.getScrollElement();\n const headers = pageEl.querySelectorAll('ion-header');\n _this5.collapsibleMainHeader = Array.from(headers).find(header => header.collapse !== 'condense');\n if (!_this5.collapsibleMainHeader) {\n return;\n }\n const mainHeaderIndex = createHeaderIndex(_this5.collapsibleMainHeader);\n const scrollHeaderIndex = createHeaderIndex(_this5.el);\n if (!mainHeaderIndex || !scrollHeaderIndex) {\n return;\n }\n setHeaderActive(mainHeaderIndex, false);\n mainHeaderIndex.toolbars.forEach(toolbar => {\n setToolbarBackgroundOpacity(toolbar, 0);\n });\n /**\n * Handle interaction between toolbar collapse and\n * showing/hiding content in the primary ion-header\n * as well as progressively showing/hiding the main header\n * border as the top-most toolbar collapses or expands.\n */\n const toolbarIntersection = ev => {\n handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, _this5.scrollEl);\n };\n _this5.intersectionObserver = new IntersectionObserver(toolbarIntersection, {\n root: contentEl,\n threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]\n });\n _this5.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);\n /**\n * Handle scaling of large iOS titles and\n * showing/hiding border on last toolbar\n * in primary header\n */\n _this5.contentScrollCallback = () => {\n handleContentScroll(_this5.scrollEl, scrollHeaderIndex, contentEl);\n };\n _this5.scrollEl.addEventListener('scroll', _this5.contentScrollCallback);\n writeTask(() => {\n if (_this5.collapsibleMainHeader !== undefined) {\n _this5.collapsibleMainHeader.classList.add('header-collapse-main');\n }\n });\n _this5.collapsibleHeaderInitialized = true;\n })();\n }\n render() {\n const {\n translucent,\n inheritedAttributes\n } = this;\n const mode = getIonMode(this);\n const collapse = this.collapse || 'none';\n // banner role must be at top level, so remove role if inside a menu\n const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';\n return h(Host, Object.assign({\n role: roleType,\n class: {\n [mode]: true,\n // Used internally for styling\n [`header-${mode}`]: true,\n [`header-translucent`]: this.translucent,\n [`header-collapse-${collapse}`]: true,\n [`header-translucent-${mode}`]: this.translucent\n }\n }, inheritedAttributes), mode === 'ios' && translucent && h(\"div\", {\n class: \"header-background\"\n }), h(\"slot\", null));\n }\n get el() {\n return getElement(this);\n }\n};\nHeader.style = {\n ios: headerIosCss,\n md: headerMdCss\n};\nconst routeOutletCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;overflow:hidden;z-index:0}\";\nconst RouterOutlet = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.gestureOrAnimationInProgress = false;\n /**\n * The mode determines which platform styles to use.\n */\n this.mode = getIonMode(this);\n /**\n * If `true`, the router-outlet should animate the transition of components.\n */\n this.animated = true;\n }\n swipeHandlerChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeHandler !== undefined);\n }\n }\n connectedCallback() {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n const onStart = () => {\n _this6.gestureOrAnimationInProgress = true;\n if (_this6.swipeHandler) {\n _this6.swipeHandler.onStart();\n }\n };\n _this6.gesture = (yield import('./swipe-back-1bbd08e0.js')).createSwipeBackGesture(_this6.el, () => !_this6.gestureOrAnimationInProgress && !!_this6.swipeHandler && _this6.swipeHandler.canStart(), () => onStart(), step => _this6.ani && _this6.ani.progressStep(step), (shouldComplete, step, dur) => {\n if (_this6.ani) {\n _this6.ani.onFinish(() => {\n _this6.gestureOrAnimationInProgress = false;\n if (_this6.swipeHandler) {\n _this6.swipeHandler.onEnd(shouldComplete);\n }\n }, {\n oneTimeCallback: true\n });\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? -0.001 : 0.001;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n if (!shouldComplete) {\n _this6.ani.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], step)[0];\n } else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], step)[0];\n }\n _this6.ani.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n } else {\n _this6.gestureOrAnimationInProgress = false;\n }\n });\n _this6.swipeHandlerChanged();\n })();\n }\n componentWillLoad() {\n this.ionNavWillLoad.emit();\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n /** @internal */\n commit(enteringEl, leavingEl, opts) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n const unlock = yield _this7.lock();\n let changed = false;\n try {\n changed = yield _this7.transition(enteringEl, leavingEl, opts);\n } catch (e) {\n console.error(e);\n }\n unlock();\n return changed;\n })();\n }\n /** @internal */\n setRouteId(id, params, direction, animation) {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n const changed = yield _this8.setRoot(id, params, {\n duration: direction === 'root' ? 0 : undefined,\n direction: direction === 'back' ? 'back' : 'forward',\n animationBuilder: animation\n });\n return {\n changed,\n element: _this8.activeEl\n };\n })();\n }\n /** @internal */\n getRouteId() {\n var _this9 = this;\n return _asyncToGenerator(function* () {\n const active = _this9.activeEl;\n return active ? {\n id: active.tagName,\n element: active\n } : undefined;\n })();\n }\n setRoot(component, params, opts) {\n var _this10 = this;\n return _asyncToGenerator(function* () {\n if (_this10.activeComponent === component) {\n return false;\n }\n // attach entering view to DOM\n const leavingEl = _this10.activeEl;\n const enteringEl = yield attachComponent(_this10.delegate, _this10.el, component, ['ion-page', 'ion-page-invisible'], params);\n _this10.activeComponent = component;\n _this10.activeEl = enteringEl;\n // commit animation\n yield _this10.commit(enteringEl, leavingEl, opts);\n yield detachComponent(_this10.delegate, leavingEl);\n return true;\n })();\n }\n transition(enteringEl, leavingEl, opts = {}) {\n var _this11 = this;\n return _asyncToGenerator(function* () {\n if (leavingEl === enteringEl) {\n return false;\n }\n // emit nav will change event\n _this11.ionNavWillChange.emit();\n const {\n el,\n mode\n } = _this11;\n const animated = _this11.animated && config.getBoolean('animated', true);\n const animationBuilder = opts.animationBuilder || _this11.animation || config.get('navAnimation');\n yield transition(Object.assign(Object.assign({\n mode,\n animated,\n enteringEl,\n leavingEl,\n baseEl: el,\n progressCallback: opts.progressAnimation ? ani => {\n /**\n * Because this progress callback is called asynchronously\n * it is possible for the gesture to start and end before\n * the animation is ever set. In that scenario, we should\n * immediately call progressEnd so that the transition promise\n * resolves and the gesture does not get locked up.\n */\n if (ani !== undefined && !_this11.gestureOrAnimationInProgress) {\n _this11.gestureOrAnimationInProgress = true;\n ani.onFinish(() => {\n _this11.gestureOrAnimationInProgress = false;\n if (_this11.swipeHandler) {\n _this11.swipeHandler.onEnd(false);\n }\n }, {\n oneTimeCallback: true\n });\n /**\n * Playing animation to beginning\n * with a duration of 0 prevents\n * any flickering when the animation\n * is later cleaned up.\n */\n ani.progressEnd(0, 0, 0);\n } else {\n _this11.ani = ani;\n }\n } : undefined\n }, opts), {\n animationBuilder\n }));\n // emit nav changed event\n _this11.ionNavDidChange.emit();\n return true;\n })();\n }\n lock() {\n var _this12 = this;\n return _asyncToGenerator(function* () {\n const p = _this12.waitPromise;\n let resolve;\n _this12.waitPromise = new Promise(r => resolve = r);\n if (p !== undefined) {\n yield p;\n }\n return resolve;\n })();\n }\n render() {\n return h(\"slot\", null);\n }\n get el() {\n return getElement(this);\n }\n static get watchers() {\n return {\n \"swipeHandler\": [\"swipeHandlerChanged\"]\n };\n }\n};\nRouterOutlet.style = routeOutletCss;\nconst titleIosCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{left:0;top:0;padding-left:90px;padding-right:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:17px;font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px}}:host(.title-small){padding-left:9px;padding-right:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:13px;font-weight:normal}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.title-small){padding-left:unset;padding-right:unset;-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px}}:host(.title-large){padding-left:16px;padding-right:16px;padding-top:0;padding-bottom:0;-webkit-transform-origin:left center;transform-origin:left center;bottom:0;-ms-flex-align:end;align-items:flex-end;min-width:100%;padding-bottom:6px;font-size:34px;font-weight:700;text-align:start}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.title-large){padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}\";\nconst titleMdCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{padding-left:20px;padding-right:20px;padding-top:0;padding-bottom:0;font-size:20px;font-weight:500;letter-spacing:0.0125em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px}}:host(.title-small){width:100%;height:100%;font-size:15px;font-weight:normal}\";\nconst ToolbarTitle = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionStyle = createEvent(this, \"ionStyle\", 7);\n }\n sizeChanged() {\n this.emitStyle();\n }\n connectedCallback() {\n this.emitStyle();\n }\n emitStyle() {\n const size = this.getSize();\n this.ionStyle.emit({\n [`title-${size}`]: true\n });\n }\n getSize() {\n return this.size !== undefined ? this.size : 'default';\n }\n render() {\n const mode = getIonMode(this);\n const size = this.getSize();\n return h(Host, {\n class: createColorClasses(this.color, {\n [mode]: true,\n [`title-${size}`]: true,\n 'title-rtl': document.dir === 'rtl'\n })\n }, h(\"div\", {\n class: \"toolbar-title\"\n }, h(\"slot\", null)));\n }\n get el() {\n return getElement(this);\n }\n static get watchers() {\n return {\n \"size\": [\"sizeChanged\"]\n };\n }\n};\nToolbarTitle.style = {\n ios: titleIosCss,\n md: titleMdCss\n};\nconst toolbarIosCss = \":host{--border-width:0;--border-style:solid;--opacity:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;padding-left:var(--ion-safe-area-left);padding-right:var(--ion-safe-area-right);display:block;position:relative;width:100%;color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--ion-safe-area-left);padding-inline-start:var(--ion-safe-area-left);-webkit-padding-end:var(--ion-safe-area-right);padding-inline-end:var(--ion-safe-area-right)}}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.toolbar-container{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:var(--opacity);z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}:host(.toolbar-searchbar) ::slotted(ion-back-button){height:38px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}\";\nconst toolbarMdCss = \":host{--border-width:0;--border-style:solid;--opacity:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;padding-left:var(--ion-safe-area-left);padding-right:var(--ion-safe-area-right);display:block;position:relative;width:100%;color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--ion-safe-area-left);padding-inline-start:var(--ion-safe-area-left);-webkit-padding-end:var(--ion-safe-area-right);padding-inline-end:var(--ion-safe-area-right)}}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.toolbar-container{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:var(--opacity);z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, #c1c4cd)));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(ion-segment){min-height:var(--min-height)}::slotted(.buttons-first-slot){margin-left:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(.buttons-first-slot){margin-left:unset;-webkit-margin-start:4px;margin-inline-start:4px}}::slotted(.buttons-last-slot){margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(.buttons-last-slot){margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}\";\nconst Toolbar = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.childrenStyles = new Map();\n }\n componentWillLoad() {\n const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));\n const firstButtons = buttons.find(button => {\n return button.slot === 'start';\n });\n if (firstButtons) {\n firstButtons.classList.add('buttons-first-slot');\n }\n const buttonsReversed = buttons.reverse();\n const lastButtons = buttonsReversed.find(button => button.slot === 'end') || buttonsReversed.find(button => button.slot === 'primary') || buttonsReversed.find(button => button.slot === 'secondary');\n if (lastButtons) {\n lastButtons.classList.add('buttons-last-slot');\n }\n }\n childrenStyle(ev) {\n ev.stopPropagation();\n const tagName = ev.target.tagName;\n const updatedStyles = ev.detail;\n const newStyles = {};\n const childStyles = this.childrenStyles.get(tagName) || {};\n let hasStyleChange = false;\n Object.keys(updatedStyles).forEach(key => {\n const childKey = `toolbar-${key}`;\n const newValue = updatedStyles[key];\n if (newValue !== childStyles[childKey]) {\n hasStyleChange = true;\n }\n if (newValue) {\n newStyles[childKey] = true;\n }\n });\n if (hasStyleChange) {\n this.childrenStyles.set(tagName, newStyles);\n forceUpdate(this);\n }\n }\n render() {\n const mode = getIonMode(this);\n const childStyles = {};\n this.childrenStyles.forEach(value => {\n Object.assign(childStyles, value);\n });\n return h(Host, {\n class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {\n [mode]: true,\n 'in-toolbar': hostContext('ion-toolbar', this.el)\n }))\n }, h(\"div\", {\n class: \"toolbar-background\"\n }), h(\"div\", {\n class: \"toolbar-container\"\n }, h(\"slot\", {\n name: \"start\"\n }), h(\"slot\", {\n name: \"secondary\"\n }), h(\"div\", {\n class: \"toolbar-content\"\n }, h(\"slot\", null)), h(\"slot\", {\n name: \"primary\"\n }), h(\"slot\", {\n name: \"end\"\n })));\n }\n get el() {\n return getElement(this);\n }\n};\nToolbar.style = {\n ios: toolbarIosCss,\n md: toolbarMdCss\n};\nexport { App as ion_app, Buttons as ion_buttons, Content as ion_content, Footer as ion_footer, Header as ion_header, RouterOutlet as ion_router_outlet, ToolbarTitle as ion_title, Toolbar as ion_toolbar };","map":{"version":3,"names":["r","registerInstance","h","H","Host","i","getElement","e","createEvent","f","readTask","j","forceUpdate","c","writeTask","b","getIonMode","config","a","isPlatform","createColorClasses","hostContext","k","clamp","inheritAriaAttributes","g","getTimeGivenProgression","attachComponent","d","detachComponent","t","transition","appCss","App","constructor","hostRef","componentDidLoad","rIC","_asyncToGenerator","isHybrid","window","getBoolean","then","module","startTapClick","startStatusTap","needInputShims","startInputShims","hardwareBackButtonModule","startHardwareBackButton","blockHardwareBackButton","startKeyboardAssist","startFocusVisible","render","mode","class","el","callback","requestIdleCallback","setTimeout","style","buttonsIosCss","buttonsMdCss","Buttons","collapse","ios","md","contentCss","Content","ionScrollStart","ionScroll","ionScrollEnd","isScrolling","lastScroll","queued","cTop","cBottom","isMainContent","detail","scrollTop","scrollLeft","type","event","undefined","startX","startY","startTime","currentX","currentY","velocityX","velocityY","deltaX","deltaY","currentTime","data","fullscreen","scrollX","scrollY","scrollEvents","connectedCallback","closest","disconnectedCallback","onScrollEnd","onAppLoad","resize","shouldForceOverscroll","forceOverscroll","readDimensions","page","getPageElement","top","Math","max","offsetTop","bottom","offsetHeight","dirty","onScroll","ev","timeStamp","Date","now","shouldStart","onScrollStart","ts","updateScrollDetail","scrollEl","emit","getScrollElement","Promise","resolve","scrollToTop","duration","scrollToPoint","scrollToBottom","y","scrollHeight","clientHeight","scrollByPoint","x","_this","promise","fromY","fromX","step","linearTime","min","easedT","pow","floor","requestAnimationFrame","watchDog","clearInterval","setInterval","TagType","transitionShadow","color","id","part","ref","name","getParentElement","parentElement","parentNode","host","tabs","timestamp","prevX","prevY","prevT","timeDelta","footerIosCss","footerMdCss","Footer","translucent","role","TRANSITION","cloneElement","tagName","getCachedEl","document","querySelector","clonedEl","createElement","classList","add","setProperty","body","appendChild","createHeaderIndex","headerEl","toolbars","querySelectorAll","Array","from","map","toolbar","ionTitleEl","background","shadowRoot","innerTitleEl","ionButtonsEl","handleContentScroll","scrollHeaderIndex","contentEl","scale","nativeRefresher","scaleLargeTitles","setToolbarBackgroundOpacity","opacity","removeProperty","toString","handleToolbarBorderIntersection","mainHeaderIndex","isIntersecting","intersectionRatio","forEach","handleToolbarIntersection","intersection","intersectionRect","intersectionArea","width","height","rootArea","rootBounds","isPageHidden","leftDiff","abs","left","boundingClientRect","rightDiff","right","isPageTransitioning","setHeaderActive","hasValidIntersection","headerIndex","active","remove","ionTitle","titleDiv","size","transform","headerIosCss","headerMdCss","Header","collapsibleHeaderInitialized","inheritedAttributes","componentWillLoad","_this2","checkCollapsibleHeader","componentDidUpdate","_this3","destroyCollapsibleHeader","_this4","hasCollapse","canCollapse","pageEl","title","setupCollapsibleHeader","intersectionObserver","disconnect","contentScrollCallback","removeEventListener","collapsibleMainHeader","_this5","console","error","IntersectionObserver","headers","find","header","toolbarIntersection","root","threshold","observe","length","addEventListener","roleType","Object","assign","routeOutletCss","RouterOutlet","ionNavWillLoad","ionNavWillChange","ionNavDidChange","gestureOrAnimationInProgress","animated","swipeHandlerChanged","gesture","enable","swipeHandler","_this6","onStart","createSwipeBackGesture","canStart","ani","progressStep","shouldComplete","dur","onFinish","onEnd","oneTimeCallback","newStepValue","easing","progressEnd","destroy","commit","enteringEl","leavingEl","opts","_this7","unlock","lock","changed","setRouteId","params","direction","animation","_this8","setRoot","animationBuilder","element","activeEl","getRouteId","_this9","component","_this10","activeComponent","delegate","_this11","get","baseEl","progressCallback","progressAnimation","_this12","p","waitPromise","watchers","titleIosCss","titleMdCss","ToolbarTitle","ionStyle","sizeChanged","emitStyle","getSize","dir","toolbarIosCss","toolbarMdCss","Toolbar","childrenStyles","Map","buttons","firstButtons","button","slot","buttonsReversed","reverse","lastButtons","childrenStyle","stopPropagation","target","updatedStyles","newStyles","childStyles","hasStyleChange","keys","key","childKey","newValue","set","value","ion_app","ion_buttons","ion_content","ion_footer","ion_header","ion_router_outlet","ion_title","ion_toolbar"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@ionic/core/dist/esm/ion-app_8.entry.js"],"sourcesContent":["import { r as registerInstance, h, H as Host, i as getElement, e as createEvent, f as readTask, j as forceUpdate, c as writeTask } from './index-7a8b7a1c.js';\nimport { b as getIonMode, c as config, a as isPlatform } from './ionic-global-63a97a32.js';\nimport { c as createColorClasses, h as hostContext } from './theme-ff3fc52f.js';\nimport { k as clamp, i as inheritAriaAttributes } from './helpers-1457892a.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier-eea9a7a9.js';\nimport { a as attachComponent, d as detachComponent } from './framework-delegate-94e770cc.js';\nimport { t as transition } from './index-a7711c1e.js';\n\nconst appCss = \"html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}\";\n\nconst App = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n componentDidLoad() {\n {\n rIC(async () => {\n const isHybrid = isPlatform(window, 'hybrid');\n if (!config.getBoolean('_testing')) {\n import('./tap-click-7ddcdebb.js').then(module => module.startTapClick(config));\n }\n if (config.getBoolean('statusTap', isHybrid)) {\n import('./status-tap-9cb487b1.js').then(module => module.startStatusTap());\n }\n if (config.getBoolean('inputShims', needInputShims())) {\n import('./input-shims-ce03ee9f.js').then(module => module.startInputShims(config));\n }\n const hardwareBackButtonModule = await import('./hardware-back-button-4a6b37fb.js');\n if (config.getBoolean('hardwareBackButton', isHybrid)) {\n hardwareBackButtonModule.startHardwareBackButton();\n }\n else {\n hardwareBackButtonModule.blockHardwareBackButton();\n }\n if (typeof window !== 'undefined') {\n import('./keyboard-5742b5da.js').then(module => module.startKeyboardAssist(window));\n }\n import('./focus-visible-f4ad4f1a.js').then(module => module.startFocusVisible());\n });\n }\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { class: {\n [mode]: true,\n 'ion-page': true,\n 'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),\n } }));\n }\n get el() { return getElement(this); }\n};\nconst needInputShims = () => {\n return isPlatform(window, 'ios') && isPlatform(window, 'mobile');\n};\nconst rIC = (callback) => {\n if ('requestIdleCallback' in window) {\n window.requestIdleCallback(callback);\n }\n else {\n setTimeout(callback, 32);\n }\n};\nApp.style = appCss;\n\nconst buttonsIosCss = \".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-start:5px;--padding-end:5px;margin-left:2px;margin-right:2px;height:32px;font-size:17px;font-weight:400}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:28px;line-height:0.67}\";\n\nconst buttonsMdCss = \".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;--padding-start:8px;--padding-end:8px;--box-shadow:none;margin-left:2px;margin-right:2px;height:32px;font-size:14px;font-weight:500}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:48px;height:48px}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}\";\n\nconst Buttons = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n /**\n * If true, buttons will disappear when its\n * parent toolbar has fully collapsed if the toolbar\n * is not the first toolbar. If the toolbar is the\n * first toolbar, the buttons will be hidden and will\n * only be shown once all toolbars have fully collapsed.\n *\n * Only applies in `ios` mode with `collapse` set to\n * `true` on `ion-header`.\n *\n * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)\n */\n this.collapse = false;\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { class: {\n [mode]: true,\n ['buttons-collapse']: this.collapse\n } }));\n }\n};\nButtons.style = {\n ios: buttonsIosCss,\n md: buttonsMdCss\n};\n\nconst contentCss = \":host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.outer-content){--background:var(--ion-color-step-50, #f2f2f2)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.inner-scroll{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{-ms-touch-action:pan-y;touch-action:pan-y;overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{-ms-touch-action:pan-x;touch-action:pan-x;overflow-x:var(--overflow);overscroll-behavior-x:contain}.scroll-x.scroll-y{-ms-touch-action:auto;touch-action:auto}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:\\\"\\\"}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;left:-100%;width:100%;height:100vh;opacity:0;pointer-events:none}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;right:0;width:10px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAgCAYAAAAIXrg4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3MDgzRkQ5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3MDgzRkU5QTkyMTFFOUEwNzQ5MkJFREE1NUY2MjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTcwODNGQjlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTcwODNGQzlBOTIxMUU5QTA3NDkyQkVEQTU1RjYyNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmePEuQAAABNSURBVHjaYvz//z8DIxAwMDAwATGMhmFmPDQuOSZks0AMmoJBaQHjkPfB0Lfg/2gQjVow+HPy/yHvg9GiYjQfjMbBqAWjFgy/4hogwADYqwdzxy5BuwAAAABJRU5ErkJggg==);background-repeat:repeat-y;background-size:10px 16px}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}\";\n\nconst Content = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionScrollStart = createEvent(this, \"ionScrollStart\", 7);\n this.ionScroll = createEvent(this, \"ionScroll\", 7);\n this.ionScrollEnd = createEvent(this, \"ionScrollEnd\", 7);\n this.isScrolling = false;\n this.lastScroll = 0;\n this.queued = false;\n this.cTop = -1;\n this.cBottom = -1;\n this.isMainContent = true;\n // Detail is used in a hot loop in the scroll event, by allocating it here\n // V8 will be able to inline any read/write to it since it's a monomorphic class.\n // https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html\n this.detail = {\n scrollTop: 0,\n scrollLeft: 0,\n type: 'scroll',\n event: undefined,\n startX: 0,\n startY: 0,\n startTime: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n currentTime: 0,\n data: undefined,\n isScrolling: true,\n };\n /**\n * If `true`, the content will scroll behind the headers\n * and footers. This effect can easily be seen by setting the toolbar\n * to transparent.\n */\n this.fullscreen = false;\n /**\n * If you want to enable the content scrolling in the X axis, set this property to `true`.\n */\n this.scrollX = false;\n /**\n * If you want to disable the content scrolling in the Y axis, set this property to `false`.\n */\n this.scrollY = true;\n /**\n * Because of performance reasons, ionScroll events are disabled by default, in order to enable them\n * and start listening from (ionScroll), set this property to `true`.\n */\n this.scrollEvents = false;\n }\n connectedCallback() {\n this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;\n }\n disconnectedCallback() {\n this.onScrollEnd();\n }\n onAppLoad() {\n this.resize();\n }\n shouldForceOverscroll() {\n const { forceOverscroll } = this;\n const mode = getIonMode(this);\n return forceOverscroll === undefined\n ? mode === 'ios' && isPlatform('ios')\n : forceOverscroll;\n }\n resize() {\n if (this.fullscreen) {\n readTask(() => this.readDimensions());\n }\n else if (this.cTop !== 0 || this.cBottom !== 0) {\n this.cTop = this.cBottom = 0;\n forceUpdate(this);\n }\n }\n readDimensions() {\n const page = getPageElement(this.el);\n const top = Math.max(this.el.offsetTop, 0);\n const bottom = Math.max(page.offsetHeight - top - this.el.offsetHeight, 0);\n const dirty = top !== this.cTop || bottom !== this.cBottom;\n if (dirty) {\n this.cTop = top;\n this.cBottom = bottom;\n forceUpdate(this);\n }\n }\n onScroll(ev) {\n const timeStamp = Date.now();\n const shouldStart = !this.isScrolling;\n this.lastScroll = timeStamp;\n if (shouldStart) {\n this.onScrollStart();\n }\n if (!this.queued && this.scrollEvents) {\n this.queued = true;\n readTask(ts => {\n this.queued = false;\n this.detail.event = ev;\n updateScrollDetail(this.detail, this.scrollEl, ts, shouldStart);\n this.ionScroll.emit(this.detail);\n });\n }\n }\n /**\n * Get the element where the actual scrolling takes place.\n * This element can be used to subscribe to `scroll` events or manually modify\n * `scrollTop`. However, it's recommended to use the API provided by `ion-content`:\n *\n * i.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events\n * and `scrollToPoint()` to scroll the content into a certain point.\n */\n getScrollElement() {\n return Promise.resolve(this.scrollEl);\n }\n /**\n * Scroll to the top of the component.\n *\n * @param duration The amount of time to take scrolling to the top. Defaults to `0`.\n */\n scrollToTop(duration = 0) {\n return this.scrollToPoint(undefined, 0, duration);\n }\n /**\n * Scroll to the bottom of the component.\n *\n * @param duration The amount of time to take scrolling to the bottom. Defaults to `0`.\n */\n scrollToBottom(duration = 0) {\n const y = this.scrollEl.scrollHeight - this.scrollEl.clientHeight;\n return this.scrollToPoint(undefined, y, duration);\n }\n /**\n * Scroll by a specified X/Y distance in the component.\n *\n * @param x The amount to scroll by on the horizontal axis.\n * @param y The amount to scroll by on the vertical axis.\n * @param duration The amount of time to take scrolling by that amount.\n */\n scrollByPoint(x, y, duration) {\n return this.scrollToPoint(x + this.scrollEl.scrollLeft, y + this.scrollEl.scrollTop, duration);\n }\n /**\n * Scroll to a specified X/Y location in the component.\n *\n * @param x The point to scroll to on the horizontal axis.\n * @param y The point to scroll to on the vertical axis.\n * @param duration The amount of time to take scrolling to that point. Defaults to `0`.\n */\n async scrollToPoint(x, y, duration = 0) {\n const el = this.scrollEl;\n if (duration < 32) {\n if (y != null) {\n el.scrollTop = y;\n }\n if (x != null) {\n el.scrollLeft = x;\n }\n return;\n }\n let resolve;\n let startTime = 0;\n const promise = new Promise(r => resolve = r);\n const fromY = el.scrollTop;\n const fromX = el.scrollLeft;\n const deltaY = y != null ? y - fromY : 0;\n const deltaX = x != null ? x - fromX : 0;\n // scroll loop\n const step = (timeStamp) => {\n const linearTime = Math.min(1, ((timeStamp - startTime) / duration)) - 1;\n const easedT = Math.pow(linearTime, 3) + 1;\n if (deltaY !== 0) {\n el.scrollTop = Math.floor((easedT * deltaY) + fromY);\n }\n if (deltaX !== 0) {\n el.scrollLeft = Math.floor((easedT * deltaX) + fromX);\n }\n if (easedT < 1) {\n // do not use DomController here\n // must use nativeRaf in order to fire in the next frame\n // TODO: remove as any\n requestAnimationFrame(step);\n }\n else {\n resolve();\n }\n };\n // chill out for a frame first\n requestAnimationFrame(ts => {\n startTime = ts;\n step(ts);\n });\n return promise;\n }\n onScrollStart() {\n this.isScrolling = true;\n this.ionScrollStart.emit({\n isScrolling: true\n });\n if (this.watchDog) {\n clearInterval(this.watchDog);\n }\n // watchdog\n this.watchDog = setInterval(() => {\n if (this.lastScroll < Date.now() - 120) {\n this.onScrollEnd();\n }\n }, 100);\n }\n onScrollEnd() {\n clearInterval(this.watchDog);\n this.watchDog = null;\n if (this.isScrolling) {\n this.isScrolling = false;\n this.ionScrollEnd.emit({\n isScrolling: false\n });\n }\n }\n render() {\n const { isMainContent, scrollX, scrollY } = this;\n const mode = getIonMode(this);\n const forceOverscroll = this.shouldForceOverscroll();\n const TagType = isMainContent ? 'main' : 'div';\n const transitionShadow = (mode === 'ios' && config.getBoolean('experimentalTransitionShadow', true));\n this.resize();\n return (h(Host, { class: createColorClasses(this.color, {\n [mode]: true,\n 'content-sizing': hostContext('ion-popover', this.el),\n 'overscroll': forceOverscroll,\n }), style: {\n '--offset-top': `${this.cTop}px`,\n '--offset-bottom': `${this.cBottom}px`,\n } }, h(\"div\", { id: \"background-content\", part: \"background\" }), h(TagType, { class: {\n 'inner-scroll': true,\n 'scroll-x': scrollX,\n 'scroll-y': scrollY,\n 'overscroll': (scrollX || scrollY) && forceOverscroll\n }, ref: (el) => this.scrollEl = el, onScroll: (this.scrollEvents) ? (ev) => this.onScroll(ev) : undefined, part: \"scroll\" }, h(\"slot\", null)), transitionShadow ? (h(\"div\", { class: \"transition-effect\" }, h(\"div\", { class: \"transition-cover\" }), h(\"div\", { class: \"transition-shadow\" }))) : null, h(\"slot\", { name: \"fixed\" })));\n }\n get el() { return getElement(this); }\n};\nconst getParentElement = (el) => {\n if (el.parentElement) {\n // normal element with a parent element\n return el.parentElement;\n }\n if (el.parentNode && el.parentNode.host) {\n // shadow dom's document fragment\n return el.parentNode.host;\n }\n return null;\n};\nconst getPageElement = (el) => {\n const tabs = el.closest('ion-tabs');\n if (tabs) {\n return tabs;\n }\n /**\n * If we're in a popover, we need to use its wrapper so we can account for space\n * between the popover and the edges of the screen. But if the popover contains\n * its own page element, we should use that instead.\n */\n const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');\n if (page) {\n return page;\n }\n return getParentElement(el);\n};\n// ******** DOM READ ****************\nconst updateScrollDetail = (detail, el, timestamp, shouldStart) => {\n const prevX = detail.currentX;\n const prevY = detail.currentY;\n const prevT = detail.currentTime;\n const currentX = el.scrollLeft;\n const currentY = el.scrollTop;\n const timeDelta = timestamp - prevT;\n if (shouldStart) {\n // remember the start positions\n detail.startTime = timestamp;\n detail.startX = currentX;\n detail.startY = currentY;\n detail.velocityX = detail.velocityY = 0;\n }\n detail.currentTime = timestamp;\n detail.currentX = detail.scrollLeft = currentX;\n detail.currentY = detail.scrollTop = currentY;\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n if (timeDelta > 0 && timeDelta < 100) {\n const velocityX = (currentX - prevX) / timeDelta;\n const velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n};\nContent.style = contentCss;\n\nconst footerIosCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}\";\n\nconst footerMdCss = \"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md::before{left:0;top:-2px;bottom:auto;background-position:left 0 top 0;position:absolute;width:100%;height:2px;background-image:url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAHBAMAAADzDtBxAAAAD1BMVEUAAAAAAAAAAAAAAAAAAABPDueNAAAABXRSTlMUCS0gBIh/TXEAAAAaSURBVAjXYxCEAgY4UIICBmMogMsgFLtAAQCNSwXZKOdPxgAAAABJRU5ErkJggg==\\\");background-repeat:repeat-x;content:\\\"\\\"}[dir=rtl] .footer-md::before,:host-context([dir=rtl]) .footer-md::before{left:unset;right:unset;right:0}[dir=rtl] .footer-md::before,:host-context([dir=rtl]) .footer-md::before{background-position:right 0 top 0}.footer-md.ion-no-border::before{display:none}\";\n\nconst Footer = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n /**\n * If `true`, the footer will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n *\n * Note: In order to scroll content behind the footer, the `fullscreen`\n * attribute needs to be set on the content.\n */\n this.translucent = false;\n }\n render() {\n const mode = getIonMode(this);\n const translucent = this.translucent;\n return (h(Host, { role: \"contentinfo\", class: {\n [mode]: true,\n // Used internally for styling\n [`footer-${mode}`]: true,\n [`footer-translucent`]: translucent,\n [`footer-translucent-${mode}`]: translucent,\n } }, mode === 'ios' && translucent &&\n h(\"div\", { class: \"footer-background\" }), h(\"slot\", null)));\n }\n};\nFooter.style = {\n ios: footerIosCss,\n md: footerMdCss\n};\n\nconst TRANSITION = 'all 0.2s ease-in-out';\nconst cloneElement = (tagName) => {\n const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);\n if (getCachedEl !== null) {\n return getCachedEl;\n }\n const clonedEl = document.createElement(tagName);\n clonedEl.classList.add('ion-cloned-element');\n clonedEl.style.setProperty('display', 'none');\n document.body.appendChild(clonedEl);\n return clonedEl;\n};\nconst createHeaderIndex = (headerEl) => {\n if (!headerEl) {\n return;\n }\n const toolbars = headerEl.querySelectorAll('ion-toolbar');\n return {\n el: headerEl,\n toolbars: Array.from(toolbars).map((toolbar) => {\n const ionTitleEl = toolbar.querySelector('ion-title');\n return {\n el: toolbar,\n background: toolbar.shadowRoot.querySelector('.toolbar-background'),\n ionTitleEl,\n innerTitleEl: (ionTitleEl) ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,\n ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')) || []\n };\n }) || []\n };\n};\nconst handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const scale = clamp(1, 1 + (-scrollTop / 500), 1.1);\n // Native refresher should not cause titles to scale\n const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');\n if (nativeRefresher === null) {\n writeTask(() => {\n scaleLargeTitles(scrollHeaderIndex.toolbars, scale);\n });\n }\n });\n};\nconst setToolbarBackgroundOpacity = (toolbar, opacity) => {\n if (opacity === undefined) {\n toolbar.background.style.removeProperty('--opacity');\n }\n else {\n toolbar.background.style.setProperty('--opacity', opacity.toString());\n }\n};\nconst handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {\n if (!ev[0].isIntersecting) {\n return;\n }\n /**\n * There is a bug in Safari where overflow scrolling on a non-body element\n * does not always reset the scrollTop position to 0 when letting go. It will\n * set to 1 once the rubber band effect has ended. This causes the background to\n * appear slightly on certain app setups.\n *\n * Additionally, we check if user is rubber banding (scrolling is negative)\n * as this can mean they are using pull to refresh. Once the refresher starts,\n * the content is transformed which can cause the intersection observer to erroneously\n * fire here as well.\n */\n const scale = (ev[0].intersectionRatio > 0.9 || scrollTop <= 0) ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;\n mainHeaderIndex.toolbars.forEach(toolbar => {\n setToolbarBackgroundOpacity(toolbar, (scale === 1) ? undefined : scale);\n });\n};\n/**\n * If toolbars are intersecting, hide the scrollable toolbar content\n * and show the primary toolbar content. If the toolbars are not intersecting,\n * hide the primary toolbar content and show the scrollable toolbar content\n */\nconst handleToolbarIntersection = (ev, mainHeaderIndex, scrollHeaderIndex, scrollEl) => {\n writeTask(() => {\n const scrollTop = scrollEl.scrollTop;\n handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);\n const event = ev[0];\n const intersection = event.intersectionRect;\n const intersectionArea = intersection.width * intersection.height;\n const rootArea = event.rootBounds.width * event.rootBounds.height;\n const isPageHidden = intersectionArea === 0 && rootArea === 0;\n const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);\n const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);\n const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);\n if (isPageHidden || isPageTransitioning) {\n return;\n }\n if (event.isIntersecting) {\n setHeaderActive(mainHeaderIndex, false);\n setHeaderActive(scrollHeaderIndex);\n }\n else {\n /**\n * There is a bug with IntersectionObserver on Safari\n * where `event.isIntersecting === false` when cancelling\n * a swipe to go back gesture. Checking the intersection\n * x, y, width, and height provides a workaround. This bug\n * does not happen when using Safari + Web Animations,\n * only Safari + CSS Animations.\n */\n const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);\n if (hasValidIntersection && scrollTop > 0) {\n setHeaderActive(mainHeaderIndex);\n setHeaderActive(scrollHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.toolbars[0]);\n }\n }\n });\n};\nconst setHeaderActive = (headerIndex, active = true) => {\n if (active) {\n headerIndex.el.classList.remove('header-collapse-condense-inactive');\n }\n else {\n headerIndex.el.classList.add('header-collapse-condense-inactive');\n }\n};\nconst scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {\n toolbars.forEach(toolbar => {\n const ionTitle = toolbar.ionTitleEl;\n const titleDiv = toolbar.innerTitleEl;\n if (!ionTitle || ionTitle.size !== 'large') {\n return;\n }\n titleDiv.style.transition = (transition) ? TRANSITION : '';\n titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;\n });\n};\n\nconst headerIosCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:7px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar ion-searchbar{height:48px;padding-top:0px;padding-bottom:13px}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}\";\n\nconst headerMdCss = \"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md::after{left:0;bottom:-5px;background-position:left 0 top -2px;position:absolute;width:100%;height:5px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAHBAMAAADzDtBxAAAAD1BMVEUAAAAAAAAAAAAAAAAAAABPDueNAAAABXRSTlMUCS0gBIh/TXEAAAAaSURBVAjXYxCEAgY4UIICBmMogMsgFLtAAQCNSwXZKOdPxgAAAABJRU5ErkJggg==);background-repeat:repeat-x;content:\\\"\\\"}[dir=rtl] .header-md::after,:host-context([dir=rtl]) .header-md::after{left:unset;right:unset;right:0}[dir=rtl] .header-md::after,:host-context([dir=rtl]) .header-md::after{background-position:right 0 top -2px}.header-collapse-condense{display:none}.header-md.ion-no-border::after{display:none}\";\n\nconst Header = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.collapsibleHeaderInitialized = false;\n this.inheritedAttributes = {};\n /**\n * If `true`, the header will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n *\n * Note: In order to scroll content behind the header, the `fullscreen`\n * attribute needs to be set on the content.\n */\n this.translucent = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n async componentDidLoad() {\n await this.checkCollapsibleHeader();\n }\n async componentDidUpdate() {\n await this.checkCollapsibleHeader();\n }\n disconnectedCallback() {\n this.destroyCollapsibleHeader();\n }\n async checkCollapsibleHeader() {\n // Determine if the header can collapse\n const hasCollapse = this.collapse === 'condense';\n const canCollapse = (hasCollapse && getIonMode(this) === 'ios') ? hasCollapse : false;\n if (!canCollapse && this.collapsibleHeaderInitialized) {\n this.destroyCollapsibleHeader();\n }\n else if (canCollapse && !this.collapsibleHeaderInitialized) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = (pageEl) ? pageEl.querySelector('ion-content') : null;\n // Cloned elements are always needed in iOS transition\n writeTask(() => {\n const title = cloneElement('ion-title');\n title.size = 'large';\n cloneElement('ion-back-button');\n });\n await this.setupCollapsibleHeader(contentEl, pageEl);\n }\n }\n destroyCollapsibleHeader() {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = undefined;\n }\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n if (this.collapsibleMainHeader) {\n this.collapsibleMainHeader.classList.remove('header-collapse-main');\n this.collapsibleMainHeader = undefined;\n }\n }\n async setupCollapsibleHeader(contentEl, pageEl) {\n if (!contentEl || !pageEl) {\n console.error('ion-header requires a content to collapse, make sure there is an ion-content.');\n return;\n }\n if (typeof IntersectionObserver === 'undefined') {\n return;\n }\n this.scrollEl = await contentEl.getScrollElement();\n const headers = pageEl.querySelectorAll('ion-header');\n this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');\n if (!this.collapsibleMainHeader) {\n return;\n }\n const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);\n const scrollHeaderIndex = createHeaderIndex(this.el);\n if (!mainHeaderIndex || !scrollHeaderIndex) {\n return;\n }\n setHeaderActive(mainHeaderIndex, false);\n mainHeaderIndex.toolbars.forEach(toolbar => {\n setToolbarBackgroundOpacity(toolbar, 0);\n });\n /**\n * Handle interaction between toolbar collapse and\n * showing/hiding content in the primary ion-header\n * as well as progressively showing/hiding the main header\n * border as the top-most toolbar collapses or expands.\n */\n const toolbarIntersection = (ev) => { handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl); };\n this.intersectionObserver = new IntersectionObserver(toolbarIntersection, { root: contentEl, threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] });\n this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);\n /**\n * Handle scaling of large iOS titles and\n * showing/hiding border on last toolbar\n * in primary header\n */\n this.contentScrollCallback = () => { handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl); };\n this.scrollEl.addEventListener('scroll', this.contentScrollCallback);\n writeTask(() => {\n if (this.collapsibleMainHeader !== undefined) {\n this.collapsibleMainHeader.classList.add('header-collapse-main');\n }\n });\n this.collapsibleHeaderInitialized = true;\n }\n render() {\n const { translucent, inheritedAttributes } = this;\n const mode = getIonMode(this);\n const collapse = this.collapse || 'none';\n // banner role must be at top level, so remove role if inside a menu\n const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';\n return (h(Host, Object.assign({ role: roleType, class: {\n [mode]: true,\n // Used internally for styling\n [`header-${mode}`]: true,\n [`header-translucent`]: this.translucent,\n [`header-collapse-${collapse}`]: true,\n [`header-translucent-${mode}`]: this.translucent,\n } }, inheritedAttributes), mode === 'ios' && translucent &&\n h(\"div\", { class: \"header-background\" }), h(\"slot\", null)));\n }\n get el() { return getElement(this); }\n};\nHeader.style = {\n ios: headerIosCss,\n md: headerMdCss\n};\n\nconst routeOutletCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;overflow:hidden;z-index:0}\";\n\nconst RouterOutlet = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.gestureOrAnimationInProgress = false;\n /**\n * The mode determines which platform styles to use.\n */\n this.mode = getIonMode(this);\n /**\n * If `true`, the router-outlet should animate the transition of components.\n */\n this.animated = true;\n }\n swipeHandlerChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeHandler !== undefined);\n }\n }\n async connectedCallback() {\n const onStart = () => {\n this.gestureOrAnimationInProgress = true;\n if (this.swipeHandler) {\n this.swipeHandler.onStart();\n }\n };\n this.gesture = (await import('./swipe-back-1bbd08e0.js')).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), step => this.ani && this.ani.progressStep(step), (shouldComplete, step, dur) => {\n if (this.ani) {\n this.ani.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n if (this.swipeHandler) {\n this.swipeHandler.onEnd(shouldComplete);\n }\n }, { oneTimeCallback: true });\n // Account for rounding errors in JS\n let newStepValue = (shouldComplete) ? -0.001 : 0.001;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n if (!shouldComplete) {\n this.ani.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], step)[0];\n }\n else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], step)[0];\n }\n this.ani.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n }\n else {\n this.gestureOrAnimationInProgress = false;\n }\n });\n this.swipeHandlerChanged();\n }\n componentWillLoad() {\n this.ionNavWillLoad.emit();\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n /** @internal */\n async commit(enteringEl, leavingEl, opts) {\n const unlock = await this.lock();\n let changed = false;\n try {\n changed = await this.transition(enteringEl, leavingEl, opts);\n }\n catch (e) {\n console.error(e);\n }\n unlock();\n return changed;\n }\n /** @internal */\n async setRouteId(id, params, direction, animation) {\n const changed = await this.setRoot(id, params, {\n duration: direction === 'root' ? 0 : undefined,\n direction: direction === 'back' ? 'back' : 'forward',\n animationBuilder: animation\n });\n return {\n changed,\n element: this.activeEl\n };\n }\n /** @internal */\n async getRouteId() {\n const active = this.activeEl;\n return active ? {\n id: active.tagName,\n element: active,\n } : undefined;\n }\n async setRoot(component, params, opts) {\n if (this.activeComponent === component) {\n return false;\n }\n // attach entering view to DOM\n const leavingEl = this.activeEl;\n const enteringEl = await attachComponent(this.delegate, this.el, component, ['ion-page', 'ion-page-invisible'], params);\n this.activeComponent = component;\n this.activeEl = enteringEl;\n // commit animation\n await this.commit(enteringEl, leavingEl, opts);\n await detachComponent(this.delegate, leavingEl);\n return true;\n }\n async transition(enteringEl, leavingEl, opts = {}) {\n if (leavingEl === enteringEl) {\n return false;\n }\n // emit nav will change event\n this.ionNavWillChange.emit();\n const { el, mode } = this;\n const animated = this.animated && config.getBoolean('animated', true);\n const animationBuilder = opts.animationBuilder || this.animation || config.get('navAnimation');\n await transition(Object.assign(Object.assign({ mode,\n animated,\n enteringEl,\n leavingEl, baseEl: el, progressCallback: (opts.progressAnimation\n ? ani => {\n /**\n * Because this progress callback is called asynchronously\n * it is possible for the gesture to start and end before\n * the animation is ever set. In that scenario, we should\n * immediately call progressEnd so that the transition promise\n * resolves and the gesture does not get locked up.\n */\n if (ani !== undefined && !this.gestureOrAnimationInProgress) {\n this.gestureOrAnimationInProgress = true;\n ani.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n if (this.swipeHandler) {\n this.swipeHandler.onEnd(false);\n }\n }, { oneTimeCallback: true });\n /**\n * Playing animation to beginning\n * with a duration of 0 prevents\n * any flickering when the animation\n * is later cleaned up.\n */\n ani.progressEnd(0, 0, 0);\n }\n else {\n this.ani = ani;\n }\n }\n : undefined) }, opts), { animationBuilder }));\n // emit nav changed event\n this.ionNavDidChange.emit();\n return true;\n }\n async lock() {\n const p = this.waitPromise;\n let resolve;\n this.waitPromise = new Promise(r => resolve = r);\n if (p !== undefined) {\n await p;\n }\n return resolve;\n }\n render() {\n return (h(\"slot\", null));\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"swipeHandler\": [\"swipeHandlerChanged\"]\n }; }\n};\nRouterOutlet.style = routeOutletCss;\n\nconst titleIosCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{left:0;top:0;padding-left:90px;padding-right:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:17px;font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px}}:host(.title-small){padding-left:9px;padding-right:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:13px;font-weight:normal}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.title-small){padding-left:unset;padding-right:unset;-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px}}:host(.title-large){padding-left:16px;padding-right:16px;padding-top:0;padding-bottom:0;-webkit-transform-origin:left center;transform-origin:left center;bottom:0;-ms-flex-align:end;align-items:flex-end;min-width:100%;padding-bottom:6px;font-size:34px;font-weight:700;text-align:start}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.title-large){padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}\";\n\nconst titleMdCss = \":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{padding-left:20px;padding-right:20px;padding-top:0;padding-bottom:0;font-size:20px;font-weight:500;letter-spacing:0.0125em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px}}:host(.title-small){width:100%;height:100%;font-size:15px;font-weight:normal}\";\n\nconst ToolbarTitle = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionStyle = createEvent(this, \"ionStyle\", 7);\n }\n sizeChanged() {\n this.emitStyle();\n }\n connectedCallback() {\n this.emitStyle();\n }\n emitStyle() {\n const size = this.getSize();\n this.ionStyle.emit({\n [`title-${size}`]: true\n });\n }\n getSize() {\n return (this.size !== undefined) ? this.size : 'default';\n }\n render() {\n const mode = getIonMode(this);\n const size = this.getSize();\n return (h(Host, { class: createColorClasses(this.color, {\n [mode]: true,\n [`title-${size}`]: true,\n 'title-rtl': document.dir === 'rtl'\n }) }, h(\"div\", { class: \"toolbar-title\" }, h(\"slot\", null))));\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"size\": [\"sizeChanged\"]\n }; }\n};\nToolbarTitle.style = {\n ios: titleIosCss,\n md: titleMdCss\n};\n\nconst toolbarIosCss = \":host{--border-width:0;--border-style:solid;--opacity:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;padding-left:var(--ion-safe-area-left);padding-right:var(--ion-safe-area-right);display:block;position:relative;width:100%;color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--ion-safe-area-left);padding-inline-start:var(--ion-safe-area-left);-webkit-padding-end:var(--ion-safe-area-right);padding-inline-end:var(--ion-safe-area-right)}}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.toolbar-container{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:var(--opacity);z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}:host(.toolbar-searchbar) ::slotted(ion-back-button){height:38px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}\";\n\nconst toolbarMdCss = \":host{--border-width:0;--border-style:solid;--opacity:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;padding-left:var(--ion-safe-area-left);padding-right:var(--ion-safe-area-right);display:block;position:relative;width:100%;color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--ion-safe-area-left);padding-inline-start:var(--ion-safe-area-left);-webkit-padding-end:var(--ion-safe-area-right);padding-inline-end:var(--ion-safe-area-right)}}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.toolbar-container{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:var(--opacity);z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, #c1c4cd)));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(ion-segment){min-height:var(--min-height)}::slotted(.buttons-first-slot){margin-left:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(.buttons-first-slot){margin-left:unset;-webkit-margin-start:4px;margin-inline-start:4px}}::slotted(.buttons-last-slot){margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(.buttons-last-slot){margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}\";\n\nconst Toolbar = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.childrenStyles = new Map();\n }\n componentWillLoad() {\n const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));\n const firstButtons = buttons.find(button => {\n return button.slot === 'start';\n });\n if (firstButtons) {\n firstButtons.classList.add('buttons-first-slot');\n }\n const buttonsReversed = buttons.reverse();\n const lastButtons = buttonsReversed.find(button => button.slot === 'end') ||\n buttonsReversed.find(button => button.slot === 'primary') ||\n buttonsReversed.find(button => button.slot === 'secondary');\n if (lastButtons) {\n lastButtons.classList.add('buttons-last-slot');\n }\n }\n childrenStyle(ev) {\n ev.stopPropagation();\n const tagName = ev.target.tagName;\n const updatedStyles = ev.detail;\n const newStyles = {};\n const childStyles = this.childrenStyles.get(tagName) || {};\n let hasStyleChange = false;\n Object.keys(updatedStyles).forEach(key => {\n const childKey = `toolbar-${key}`;\n const newValue = updatedStyles[key];\n if (newValue !== childStyles[childKey]) {\n hasStyleChange = true;\n }\n if (newValue) {\n newStyles[childKey] = true;\n }\n });\n if (hasStyleChange) {\n this.childrenStyles.set(tagName, newStyles);\n forceUpdate(this);\n }\n }\n render() {\n const mode = getIonMode(this);\n const childStyles = {};\n this.childrenStyles.forEach(value => {\n Object.assign(childStyles, value);\n });\n return (h(Host, { class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {\n [mode]: true,\n 'in-toolbar': hostContext('ion-toolbar', this.el),\n })) }, h(\"div\", { class: \"toolbar-background\" }), h(\"div\", { class: \"toolbar-container\" }, h(\"slot\", { name: \"start\" }), h(\"slot\", { name: \"secondary\" }), h(\"div\", { class: \"toolbar-content\" }, h(\"slot\", null)), h(\"slot\", { name: \"primary\" }), h(\"slot\", { name: \"end\" }))));\n }\n get el() { return getElement(this); }\n};\nToolbar.style = {\n ios: toolbarIosCss,\n md: toolbarMdCss\n};\n\nexport { App as ion_app, Buttons as ion_buttons, Content as ion_content, Footer as ion_footer, Header as ion_header, RouterOutlet as ion_router_outlet, ToolbarTitle as ion_title, Toolbar as ion_toolbar };\n"],"mappings":"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"},"metadata":{},"sourceType":"module"}