e6daddd5584c370dd8fcf97f4b1545cf75d3852c4bae6ca2eeb7b20473b066e8.json 54 KB

1
  1. {"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, Build, readTask, forceUpdate, h, Host } from '@stencil/core/internal/client';\nimport { i as inheritAriaAttributes, j as hasLazyBuild, c as componentOnReady } from './helpers.js';\nimport { b as getIonMode, a as isPlatform } from './ionic-global.js';\nimport { i as isRTL } from './dir.js';\nimport { c as createColorClasses, h as hostContext } from './theme.js';\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)}#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);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end: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;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.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;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}\";\nconst IonContentStyle0 = contentCss;\nconst Content = /*@__PURE__*/proxyCustomElement(class Content extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionScrollStart = createEvent(this, \"ionScrollStart\", 7);\n this.ionScroll = createEvent(this, \"ionScroll\", 7);\n this.ionScrollEnd = createEvent(this, \"ionScrollEnd\", 7);\n this.watchDog = null;\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 this.resizeTimeout = null;\n this.inheritedAttributes = {};\n this.tabsElement = null;\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 this.color = undefined;\n this.fullscreen = false;\n this.fixedSlotPlacement = 'after';\n this.forceOverscroll = undefined;\n this.scrollX = false;\n this.scrollY = true;\n this.scrollEvents = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n connectedCallback() {\n this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;\n /**\n * The fullscreen content offsets need to be\n * computed after the tab bar has loaded. Since\n * lazy evaluation means components are not hydrated\n * at the same time, we need to wait for the ionTabBarLoaded\n * event to fire. This does not impact dist-custom-elements\n * because there is no hydration there.\n */\n if (hasLazyBuild(this.el)) {\n /**\n * We need to cache the reference to the tabs.\n * If just the content is unmounted then we won't\n * be able to query for the closest tabs on disconnectedCallback\n * since the content has been removed from the DOM tree.\n */\n const closestTabs = this.tabsElement = this.el.closest('ion-tabs');\n if (closestTabs !== null) {\n /**\n * When adding and removing the event listener\n * we need to make sure we pass the same function reference\n * otherwise the event listener will not be removed properly.\n * We can't only pass `this.resize` because \"this\" in the function\n * context becomes a reference to IonTabs instead of IonContent.\n *\n * Additionally, we listen for ionTabBarLoaded on the IonTabs\n * instance rather than the IonTabBar instance. It's possible for\n * a tab bar to be conditionally rendered/mounted. Since ionTabBarLoaded\n * bubbles, we can catch any instances of child tab bars loading by listening\n * on IonTabs.\n */\n this.tabsLoadCallback = () => this.resize();\n closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);\n }\n }\n }\n disconnectedCallback() {\n this.onScrollEnd();\n if (hasLazyBuild(this.el)) {\n /**\n * The event listener and tabs caches need to\n * be cleared otherwise this will create a memory\n * leak where the IonTabs instance can never be\n * garbage collected.\n */\n const {\n tabsElement,\n tabsLoadCallback\n } = this;\n if (tabsElement !== null && tabsLoadCallback !== undefined) {\n tabsElement.removeEventListener('ionTabBarLoaded', tabsLoadCallback);\n }\n this.tabsElement = null;\n this.tabsLoadCallback = undefined;\n }\n }\n /**\n * Rotating certain devices can update\n * the safe area insets. As a result,\n * the fullscreen feature on ion-content\n * needs to be recalculated.\n *\n * We listen for \"resize\" because we\n * do not care what the orientation of\n * the device is. Other APIs\n * such as ScreenOrientation or\n * the deviceorientation event must have\n * permission from the user first whereas\n * the \"resize\" event does not.\n *\n * We also throttle the callback to minimize\n * thrashing when quickly resizing a window.\n */\n onResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = null;\n }\n this.resizeTimeout = setTimeout(() => {\n /**\n * Resize should only happen\n * if the content is visible.\n * When the content is hidden\n * then offsetParent will be null.\n */\n if (this.el.offsetParent === null) {\n return;\n }\n this.resize();\n }, 100);\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 /**\n * Only force update if the component is rendered in a browser context.\n * Using `forceUpdate` in a server context with pre-rendering can lead to an infinite loop.\n * The `hydrateDocument` function in `@stencil/core` will render the `ion-content`, but\n * `forceUpdate` will trigger another render, locking up the server.\n *\n * TODO: Remove if STENCIL-834 determines Stencil will account for this.\n */\n if (Build.isBrowser) {\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 }\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 var _this = this;\n return _asyncToGenerator(function* () {\n /**\n * If this gets called in certain early lifecycle hooks (ex: Vue onMounted),\n * scrollEl won't be defined yet with the custom elements build, so wait for it to load in.\n */\n if (!_this.scrollEl) {\n yield new Promise(resolve => componentOnReady(_this.el, resolve));\n }\n return Promise.resolve(_this.scrollEl);\n })();\n }\n /**\n * Returns the background content element.\n * @internal\n */\n getBackgroundElement() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n if (!_this2.backgroundContentEl) {\n yield new Promise(resolve => componentOnReady(_this2.el, resolve));\n }\n return Promise.resolve(_this2.backgroundContentEl);\n })();\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 var _this3 = this;\n return _asyncToGenerator(function* () {\n const scrollEl = yield _this3.getScrollElement();\n const y = scrollEl.scrollHeight - scrollEl.clientHeight;\n return _this3.scrollToPoint(undefined, y, duration);\n })();\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 var _this4 = this;\n return _asyncToGenerator(function* () {\n const scrollEl = yield _this4.getScrollElement();\n return _this4.scrollToPoint(x + scrollEl.scrollLeft, y + scrollEl.scrollTop, duration);\n })();\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 _this5 = this;\n return _asyncToGenerator(function* () {\n const el = yield _this5.getScrollElement();\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 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 if (this.watchDog) 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 fixedSlotPlacement,\n inheritedAttributes,\n isMainContent,\n scrollX,\n scrollY,\n el\n } = this;\n const rtl = isRTL(el) ? 'rtl' : 'ltr';\n const mode = getIonMode(this);\n const forceOverscroll = this.shouldForceOverscroll();\n const transitionShadow = mode === 'ios';\n this.resize();\n return h(Host, Object.assign({\n key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df',\n role: isMainContent ? 'main' : undefined,\n class: createColorClasses(this.color, {\n [mode]: true,\n 'content-sizing': hostContext('ion-popover', this.el),\n overscroll: forceOverscroll,\n [`content-${rtl}`]: true\n }),\n style: {\n '--offset-top': `${this.cTop}px`,\n '--offset-bottom': `${this.cBottom}px`\n }\n }, inheritedAttributes), h(\"div\", {\n key: '6480ca7648b278abb36477b3838bccbcd4995e2a',\n ref: el => this.backgroundContentEl = el,\n id: \"background-content\",\n part: \"background\"\n }), fixedSlotPlacement === 'before' ? h(\"slot\", {\n name: \"fixed\"\n }) : null, h(\"div\", {\n key: '29a23b663f5f0215bb000820c01e1814c0d55985',\n class: {\n 'inner-scroll': true,\n 'scroll-x': scrollX,\n 'scroll-y': scrollY,\n overscroll: (scrollX || scrollY) && forceOverscroll\n },\n ref: scrollEl => this.scrollEl = scrollEl,\n onScroll: this.scrollEvents ? ev => this.onScroll(ev) : undefined,\n part: \"scroll\"\n }, h(\"slot\", {\n key: '0fe1bd05609a4b88ae2ce9addf5d5dc5dc1806f0'\n })), transitionShadow ? h(\"div\", {\n class: \"transition-effect\"\n }, h(\"div\", {\n class: \"transition-cover\"\n }), h(\"div\", {\n class: \"transition-shadow\"\n })) : null, fixedSlotPlacement === 'after' ? h(\"slot\", {\n name: \"fixed\"\n }) : null);\n }\n get el() {\n return this;\n }\n static get style() {\n return IonContentStyle0;\n }\n}, [1, \"ion-content\", {\n \"color\": [513],\n \"fullscreen\": [4],\n \"fixedSlotPlacement\": [1, \"fixed-slot-placement\"],\n \"forceOverscroll\": [1028, \"force-overscroll\"],\n \"scrollX\": [4, \"scroll-x\"],\n \"scrollY\": [4, \"scroll-y\"],\n \"scrollEvents\": [4, \"scroll-events\"],\n \"getScrollElement\": [64],\n \"getBackgroundElement\": [64],\n \"scrollToTop\": [64],\n \"scrollToBottom\": [64],\n \"scrollByPoint\": [64],\n \"scrollToPoint\": [64]\n}, [[9, \"resize\", \"onResize\"]]]);\nconst getParentElement = el => {\n var _a;\n if (el.parentElement) {\n // normal element with a parent element\n return el.parentElement;\n }\n if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.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};\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-content\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-content\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Content);\n }\n break;\n }\n });\n}\nexport { Content as C, defineCustomElement as d };","map":{"version":3,"names":["proxyCustomElement","HTMLElement","createEvent","Build","readTask","forceUpdate","h","Host","i","inheritAriaAttributes","j","hasLazyBuild","c","componentOnReady","b","getIonMode","a","isPlatform","isRTL","createColorClasses","hostContext","contentCss","IonContentStyle0","Content","constructor","__registerHost","__attachShadow","ionScrollStart","ionScroll","ionScrollEnd","watchDog","isScrolling","lastScroll","queued","cTop","cBottom","isMainContent","resizeTimeout","inheritedAttributes","tabsElement","detail","scrollTop","scrollLeft","type","event","undefined","startX","startY","startTime","currentX","currentY","velocityX","velocityY","deltaX","deltaY","currentTime","data","color","fullscreen","fixedSlotPlacement","forceOverscroll","scrollX","scrollY","scrollEvents","componentWillLoad","el","connectedCallback","closest","closestTabs","tabsLoadCallback","resize","addEventListener","disconnectedCallback","onScrollEnd","removeEventListener","onResize","clearTimeout","setTimeout","offsetParent","shouldForceOverscroll","mode","isBrowser","readDimensions","page","getPageElement","top","Math","max","offsetTop","bottom","offsetHeight","dirty","onScroll","ev","timeStamp","Date","now","shouldStart","onScrollStart","ts","updateScrollDetail","scrollEl","emit","getScrollElement","_this","_asyncToGenerator","Promise","resolve","getBackgroundElement","_this2","backgroundContentEl","scrollToTop","duration","scrollToPoint","scrollToBottom","_this3","y","scrollHeight","clientHeight","scrollByPoint","x","_this4","_this5","promise","r","fromY","fromX","step","linearTime","min","easedT","pow","floor","requestAnimationFrame","clearInterval","setInterval","render","rtl","transitionShadow","Object","assign","key","role","class","overscroll","style","ref","id","part","name","getParentElement","_a","parentElement","parentNode","host","tabs","timestamp","prevX","prevY","prevT","timeDelta","defineCustomElement","customElements","components","forEach","tagName","get","define","C","d"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@ionic/core/components/content.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, Build, readTask, forceUpdate, h, Host } from '@stencil/core/internal/client';\nimport { i as inheritAriaAttributes, j as hasLazyBuild, c as componentOnReady } from './helpers.js';\nimport { b as getIonMode, a as isPlatform } from './ionic-global.js';\nimport { i as isRTL } from './dir.js';\nimport { c as createColorClasses, h as hostContext } from './theme.js';\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)}#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);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end: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;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.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;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}\";\nconst IonContentStyle0 = contentCss;\n\nconst Content = /*@__PURE__*/ proxyCustomElement(class Content extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionScrollStart = createEvent(this, \"ionScrollStart\", 7);\n this.ionScroll = createEvent(this, \"ionScroll\", 7);\n this.ionScrollEnd = createEvent(this, \"ionScrollEnd\", 7);\n this.watchDog = null;\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 this.resizeTimeout = null;\n this.inheritedAttributes = {};\n this.tabsElement = null;\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 this.color = undefined;\n this.fullscreen = false;\n this.fixedSlotPlacement = 'after';\n this.forceOverscroll = undefined;\n this.scrollX = false;\n this.scrollY = true;\n this.scrollEvents = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n connectedCallback() {\n this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;\n /**\n * The fullscreen content offsets need to be\n * computed after the tab bar has loaded. Since\n * lazy evaluation means components are not hydrated\n * at the same time, we need to wait for the ionTabBarLoaded\n * event to fire. This does not impact dist-custom-elements\n * because there is no hydration there.\n */\n if (hasLazyBuild(this.el)) {\n /**\n * We need to cache the reference to the tabs.\n * If just the content is unmounted then we won't\n * be able to query for the closest tabs on disconnectedCallback\n * since the content has been removed from the DOM tree.\n */\n const closestTabs = (this.tabsElement = this.el.closest('ion-tabs'));\n if (closestTabs !== null) {\n /**\n * When adding and removing the event listener\n * we need to make sure we pass the same function reference\n * otherwise the event listener will not be removed properly.\n * We can't only pass `this.resize` because \"this\" in the function\n * context becomes a reference to IonTabs instead of IonContent.\n *\n * Additionally, we listen for ionTabBarLoaded on the IonTabs\n * instance rather than the IonTabBar instance. It's possible for\n * a tab bar to be conditionally rendered/mounted. Since ionTabBarLoaded\n * bubbles, we can catch any instances of child tab bars loading by listening\n * on IonTabs.\n */\n this.tabsLoadCallback = () => this.resize();\n closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);\n }\n }\n }\n disconnectedCallback() {\n this.onScrollEnd();\n if (hasLazyBuild(this.el)) {\n /**\n * The event listener and tabs caches need to\n * be cleared otherwise this will create a memory\n * leak where the IonTabs instance can never be\n * garbage collected.\n */\n const { tabsElement, tabsLoadCallback } = this;\n if (tabsElement !== null && tabsLoadCallback !== undefined) {\n tabsElement.removeEventListener('ionTabBarLoaded', tabsLoadCallback);\n }\n this.tabsElement = null;\n this.tabsLoadCallback = undefined;\n }\n }\n /**\n * Rotating certain devices can update\n * the safe area insets. As a result,\n * the fullscreen feature on ion-content\n * needs to be recalculated.\n *\n * We listen for \"resize\" because we\n * do not care what the orientation of\n * the device is. Other APIs\n * such as ScreenOrientation or\n * the deviceorientation event must have\n * permission from the user first whereas\n * the \"resize\" event does not.\n *\n * We also throttle the callback to minimize\n * thrashing when quickly resizing a window.\n */\n onResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = null;\n }\n this.resizeTimeout = setTimeout(() => {\n /**\n * Resize should only happen\n * if the content is visible.\n * When the content is hidden\n * then offsetParent will be null.\n */\n if (this.el.offsetParent === null) {\n return;\n }\n this.resize();\n }, 100);\n }\n shouldForceOverscroll() {\n const { forceOverscroll } = this;\n const mode = getIonMode(this);\n return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;\n }\n resize() {\n /**\n * Only force update if the component is rendered in a browser context.\n * Using `forceUpdate` in a server context with pre-rendering can lead to an infinite loop.\n * The `hydrateDocument` function in `@stencil/core` will render the `ion-content`, but\n * `forceUpdate` will trigger another render, locking up the server.\n *\n * TODO: Remove if STENCIL-834 determines Stencil will account for this.\n */\n if (Build.isBrowser) {\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 }\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 async getScrollElement() {\n /**\n * If this gets called in certain early lifecycle hooks (ex: Vue onMounted),\n * scrollEl won't be defined yet with the custom elements build, so wait for it to load in.\n */\n if (!this.scrollEl) {\n await new Promise((resolve) => componentOnReady(this.el, resolve));\n }\n return Promise.resolve(this.scrollEl);\n }\n /**\n * Returns the background content element.\n * @internal\n */\n async getBackgroundElement() {\n if (!this.backgroundContentEl) {\n await new Promise((resolve) => componentOnReady(this.el, resolve));\n }\n return Promise.resolve(this.backgroundContentEl);\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 async scrollToBottom(duration = 0) {\n const scrollEl = await this.getScrollElement();\n const y = scrollEl.scrollHeight - 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 async scrollByPoint(x, y, duration) {\n const scrollEl = await this.getScrollElement();\n return this.scrollToPoint(x + scrollEl.scrollLeft, y + 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 = await this.getScrollElement();\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 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 if (this.watchDog)\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 { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;\n const rtl = isRTL(el) ? 'rtl' : 'ltr';\n const mode = getIonMode(this);\n const forceOverscroll = this.shouldForceOverscroll();\n const transitionShadow = mode === 'ios';\n this.resize();\n return (h(Host, Object.assign({ key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {\n [mode]: true,\n 'content-sizing': hostContext('ion-popover', this.el),\n overscroll: forceOverscroll,\n [`content-${rtl}`]: true,\n }), style: {\n '--offset-top': `${this.cTop}px`,\n '--offset-bottom': `${this.cBottom}px`,\n } }, inheritedAttributes), h(\"div\", { key: '6480ca7648b278abb36477b3838bccbcd4995e2a', ref: (el) => (this.backgroundContentEl = el), id: \"background-content\", part: \"background\" }), fixedSlotPlacement === 'before' ? h(\"slot\", { name: \"fixed\" }) : null, h(\"div\", { key: '29a23b663f5f0215bb000820c01e1814c0d55985', class: {\n 'inner-scroll': true,\n 'scroll-x': scrollX,\n 'scroll-y': scrollY,\n overscroll: (scrollX || scrollY) && forceOverscroll,\n }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: \"scroll\" }, h(\"slot\", { key: '0fe1bd05609a4b88ae2ce9addf5d5dc5dc1806f0' })), transitionShadow ? (h(\"div\", { class: \"transition-effect\" }, h(\"div\", { class: \"transition-cover\" }), h(\"div\", { class: \"transition-shadow\" }))) : null, fixedSlotPlacement === 'after' ? h(\"slot\", { name: \"fixed\" }) : null));\n }\n get el() { return this; }\n static get style() { return IonContentStyle0; }\n}, [1, \"ion-content\", {\n \"color\": [513],\n \"fullscreen\": [4],\n \"fixedSlotPlacement\": [1, \"fixed-slot-placement\"],\n \"forceOverscroll\": [1028, \"force-overscroll\"],\n \"scrollX\": [4, \"scroll-x\"],\n \"scrollY\": [4, \"scroll-y\"],\n \"scrollEvents\": [4, \"scroll-events\"],\n \"getScrollElement\": [64],\n \"getBackgroundElement\": [64],\n \"scrollToTop\": [64],\n \"scrollToBottom\": [64],\n \"scrollByPoint\": [64],\n \"scrollToPoint\": [64]\n }, [[9, \"resize\", \"onResize\"]]]);\nconst getParentElement = (el) => {\n var _a;\n if (el.parentElement) {\n // normal element with a parent element\n return el.parentElement;\n }\n if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.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};\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-content\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-content\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Content);\n }\n break;\n } });\n}\n\nexport { Content as C, defineCustomElement as d };\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}