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, writeTask, readTask, h, Host } from '@stencil/core/internal/client';\nimport { g as getTimeGivenProgression } from './cubic-bezier.js';\nimport { I as ION_CONTENT_CLASS_SELECTOR, b as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, g as getScrollElement } from './index8.js';\nimport { t as transitionEndAsync, k as clamp, g as getElementRoot, c as componentOnReady, r as raf } from './helpers.js';\nimport { c as hapticImpact, I as ImpactStyle } from './haptic.js';\nimport { b as getIonMode } from './ionic-global.js';\nimport { s as shouldUseNativeRefresher, t as translateElement, a as setSpinnerOpacity, h as handleScrollWhileRefreshing, b as handleScrollWhilePulling, c as createPullingAnimation, d as createSnapBackAnimation, g as getRefresherAnimationType } from './refresher.utils.js';\nconst refresherIosCss = \"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, var(--ion-background-color-step-450, #747577))}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}\";\nconst IonRefresherIosStyle0 = refresherIosCss;\nconst refresherMdCss = \"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-md .refresher-pulling-icon,.refresher-md .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-md .refresher-pulling-text,.refresher-md .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-lines-md line,.refresher-md .refresher-refreshing .spinner-lines-small-md line,.refresher-md .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-bubbles circle,.refresher-md .refresher-refreshing .spinner-circles circle,.refresher-md .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #0054e9)}ion-refresher.refresher-native .spinner-arrow-container{display:inherit}ion-refresher.refresher-native .arrow-container{display:block;position:absolute;width:24px;height:24px}ion-refresher.refresher-native .arrow-container ion-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #0054e9);font-size:12px}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{display:-ms-flexbox;display:flex}ion-refresher.refresher-native.refresher-refreshing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-cancelling ion-refresher-content .refresher-refreshing{display:-ms-flexbox;display:flex}ion-refresher.refresher-native .refresher-pulling-icon{-webkit-transform:translateY(calc(-100% - 10px));transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;border-radius:100%;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;display:-ms-flexbox;display:flex;border:1px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #ececec));background:var(--ion-color-step-250, var(--ion-background-color-step-250, #ffffff));-webkit-box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}\";\nconst IonRefresherMdStyle0 = refresherMdCss;\nconst Refresher = /*@__PURE__*/proxyCustomElement(class Refresher extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.ionRefresh = createEvent(this, \"ionRefresh\", 7);\n this.ionPull = createEvent(this, \"ionPull\", 7);\n this.ionStart = createEvent(this, \"ionStart\", 7);\n this.appliedStyles = false;\n this.didStart = false;\n this.progress = 0;\n this.pointerDown = false;\n this.needsCompletion = false;\n this.didRefresh = false;\n this.contentFullscreen = false;\n this.lastVelocityY = 0;\n this.animations = [];\n this.nativeRefresher = false;\n this.state = 1 /* RefresherState.Inactive */;\n this.pullMin = 60;\n this.pullMax = this.pullMin + 60;\n this.closeDuration = '280ms';\n this.snapbackDuration = '280ms';\n this.pullFactor = 1;\n this.disabled = false;\n }\n disabledChanged() {\n if (this.gesture) {\n this.gesture.enable(!this.disabled);\n }\n }\n checkNativeRefresher() {\n var _this = this;\n return _asyncToGenerator(function* () {\n const useNativeRefresher = yield shouldUseNativeRefresher(_this.el, getIonMode(_this));\n if (useNativeRefresher && !_this.nativeRefresher) {\n const contentEl = _this.el.closest('ion-content');\n _this.setupNativeRefresher(contentEl);\n } else if (!useNativeRefresher) {\n _this.destroyNativeRefresher();\n }\n })();\n }\n destroyNativeRefresher() {\n if (this.scrollEl && this.scrollListenerCallback) {\n this.scrollEl.removeEventListener('scroll', this.scrollListenerCallback);\n this.scrollListenerCallback = undefined;\n }\n this.nativeRefresher = false;\n }\n resetNativeRefresher(el, state) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n _this2.state = state;\n if (getIonMode(_this2) === 'ios') {\n yield translateElement(el, undefined, 300);\n } else {\n yield transitionEndAsync(_this2.el.querySelector('.refresher-refreshing-icon'), 200);\n }\n _this2.didRefresh = false;\n _this2.needsCompletion = false;\n _this2.pointerDown = false;\n _this2.animations.forEach(ani => ani.destroy());\n _this2.animations = [];\n _this2.progress = 0;\n _this2.state = 1 /* RefresherState.Inactive */;\n })();\n }\n setupiOSNativeRefresher(pullingSpinner, refreshingSpinner) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n _this3.elementToTransform = _this3.scrollEl;\n const ticks = pullingSpinner.shadowRoot.querySelectorAll('svg');\n let MAX_PULL = _this3.scrollEl.clientHeight * 0.16;\n const NUM_TICKS = ticks.length;\n writeTask(() => ticks.forEach(el => el.style.setProperty('animation', 'none')));\n _this3.scrollListenerCallback = () => {\n // If pointer is not on screen or refresher is not active, ignore scroll\n if (!_this3.pointerDown && _this3.state === 1 /* RefresherState.Inactive */) {\n return;\n }\n readTask(() => {\n // PTR should only be active when overflow scrolling at the top\n const scrollTop = _this3.scrollEl.scrollTop;\n const refresherHeight = _this3.el.clientHeight;\n if (scrollTop > 0) {\n /**\n * If refresher is refreshing and user tries to scroll\n * progressively fade refresher out/in\n */\n if (_this3.state === 8 /* RefresherState.Refreshing */) {\n const ratio = clamp(0, scrollTop / (refresherHeight * 0.5), 1);\n writeTask(() => setSpinnerOpacity(refreshingSpinner, 1 - ratio));\n return;\n }\n return;\n }\n if (_this3.pointerDown) {\n if (!_this3.didStart) {\n _this3.didStart = true;\n _this3.ionStart.emit();\n }\n // emit \"pulling\" on every move\n if (_this3.pointerDown) {\n _this3.ionPull.emit();\n }\n }\n /**\n * We want to delay the start of this gesture by ~30px\n * when initially pulling down so the refresher does not\n * overlap with the content. But when letting go of the\n * gesture before the refresher completes, we want the\n * refresher tick marks to quickly fade out.\n */\n const offset = _this3.didStart ? 30 : 0;\n const pullAmount = _this3.progress = clamp(0, (Math.abs(scrollTop) - offset) / MAX_PULL, 1);\n const shouldShowRefreshingSpinner = _this3.state === 8 /* RefresherState.Refreshing */ || pullAmount === 1;\n if (shouldShowRefreshingSpinner) {\n if (_this3.pointerDown) {\n handleScrollWhileRefreshing(refreshingSpinner, _this3.lastVelocityY);\n }\n if (!_this3.didRefresh) {\n _this3.beginRefresh();\n _this3.didRefresh = true;\n hapticImpact({\n style: ImpactStyle.Light\n });\n /**\n * Translate the content element otherwise when pointer is removed\n * from screen the scroll content will bounce back over the refresher\n */\n if (!_this3.pointerDown) {\n translateElement(_this3.elementToTransform, `${refresherHeight}px`);\n }\n }\n } else {\n _this3.state = 2 /* RefresherState.Pulling */;\n handleScrollWhilePulling(ticks, NUM_TICKS, pullAmount);\n }\n });\n };\n _this3.scrollEl.addEventListener('scroll', _this3.scrollListenerCallback);\n _this3.gesture = (yield import('./index3.js')).createGesture({\n el: _this3.scrollEl,\n gestureName: 'refresher',\n gesturePriority: 31,\n direction: 'y',\n threshold: 5,\n onStart: () => {\n _this3.pointerDown = true;\n if (!_this3.didRefresh) {\n translateElement(_this3.elementToTransform, '0px');\n }\n /**\n * If the content had `display: none` when\n * the refresher was initialized, its clientHeight\n * will be 0. When the gesture starts, the content\n * will be visible, so try to get the correct\n * client height again. This is most common when\n * using the refresher in an ion-menu.\n */\n if (MAX_PULL === 0) {\n MAX_PULL = _this3.scrollEl.clientHeight * 0.16;\n }\n },\n onMove: ev => {\n _this3.lastVelocityY = ev.velocityY;\n },\n onEnd: () => {\n _this3.pointerDown = false;\n _this3.didStart = false;\n if (_this3.needsCompletion) {\n _this3.resetNativeRefresher(_this3.elementToTransform, 32 /* RefresherState.Completing */);\n _this3.needsCompletion = false;\n } else if (_this3.didRefresh) {\n readTask(() => translateElement(_this3.elementToTransform, `${_this3.el.clientHeight}px`));\n }\n }\n });\n _this3.disabledChanged();\n })();\n }\n setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n const circle = getElementRoot(pullingSpinner).querySelector('circle');\n const pullingRefresherIcon = _this4.el.querySelector('ion-refresher-content .refresher-pulling-icon');\n const refreshingCircle = getElementRoot(refreshingSpinner).querySelector('circle');\n if (circle !== null && refreshingCircle !== null) {\n writeTask(() => {\n circle.style.setProperty('animation', 'none');\n // This lines up the animation on the refreshing spinner with the pulling spinner\n refreshingSpinner.style.setProperty('animation-delay', '-655ms');\n refreshingCircle.style.setProperty('animation-delay', '-655ms');\n });\n }\n _this4.gesture = (yield import('./index3.js')).createGesture({\n el: _this4.scrollEl,\n gestureName: 'refresher',\n gesturePriority: 31,\n direction: 'y',\n threshold: 5,\n canStart: () => _this4.state !== 8 /* RefresherState.Refreshing */ && _this4.state !== 32 /* RefresherState.Completing */ && _this4.scrollEl.scrollTop === 0,\n onStart: ev => {\n _this4.progress = 0;\n ev.data = {\n animation: undefined,\n didStart: false,\n cancelled: false\n };\n },\n onMove: ev => {\n if (ev.velocityY < 0 && _this4.progress === 0 && !ev.data.didStart || ev.data.cancelled) {\n ev.data.cancelled = true;\n return;\n }\n if (!ev.data.didStart) {\n ev.data.didStart = true;\n _this4.state = 2 /* RefresherState.Pulling */;\n // When ion-refresher is being used with a custom scroll target, the overflow styles need to be applied directly instead of via a css variable\n const {\n scrollEl\n } = _this4;\n const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';\n writeTask(() => scrollEl.style.setProperty(overflowProperty, 'hidden'));\n const animationType = getRefresherAnimationType(contentEl);\n const animation = createPullingAnimation(animationType, pullingRefresherIcon, _this4.el);\n ev.data.animation = animation;\n animation.progressStart(false, 0);\n _this4.ionStart.emit();\n _this4.animations.push(animation);\n return;\n }\n // Since we are using an easing curve, slow the gesture tracking down a bit\n _this4.progress = clamp(0, ev.deltaY / 180 * 0.5, 1);\n ev.data.animation.progressStep(_this4.progress);\n _this4.ionPull.emit();\n },\n onEnd: ev => {\n if (!ev.data.didStart) {\n return;\n }\n _this4.gesture.enable(false);\n const {\n scrollEl\n } = _this4;\n const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';\n writeTask(() => scrollEl.style.removeProperty(overflowProperty));\n if (_this4.progress <= 0.4) {\n ev.data.animation.progressEnd(0, _this4.progress, 500).onFinish(() => {\n _this4.animations.forEach(ani => ani.destroy());\n _this4.animations = [];\n _this4.gesture.enable(true);\n _this4.state = 1 /* RefresherState.Inactive */;\n });\n return;\n }\n const progress = getTimeGivenProgression([0, 0], [0, 0], [1, 1], [1, 1], _this4.progress)[0];\n const snapBackAnimation = createSnapBackAnimation(pullingRefresherIcon);\n _this4.animations.push(snapBackAnimation);\n writeTask( /*#__PURE__*/_asyncToGenerator(function* () {\n pullingRefresherIcon.style.setProperty('--ion-pulling-refresher-translate', `${progress * 100}px`);\n ev.data.animation.progressEnd();\n yield snapBackAnimation.play();\n _this4.beginRefresh();\n ev.data.animation.destroy();\n _this4.gesture.enable(true);\n }));\n }\n });\n _this4.disabledChanged();\n })();\n }\n setupNativeRefresher(contentEl) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n if (_this5.scrollListenerCallback || !contentEl || _this5.nativeRefresher || !_this5.scrollEl) {\n return;\n }\n /**\n * If using non-native refresher before make sure\n * we clean up any old CSS. This can happen when\n * a user manually calls the refresh method in a\n * component create callback before the native\n * refresher is setup.\n */\n _this5.setCss(0, '', false, '');\n _this5.nativeRefresher = true;\n const pullingSpinner = _this5.el.querySelector('ion-refresher-content .refresher-pulling ion-spinner');\n const refreshingSpinner = _this5.el.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');\n if (getIonMode(_this5) === 'ios') {\n _this5.setupiOSNativeRefresher(pullingSpinner, refreshingSpinner);\n } else {\n _this5.setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner);\n }\n })();\n }\n componentDidUpdate() {\n this.checkNativeRefresher();\n }\n connectedCallback() {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n if (_this6.el.getAttribute('slot') !== 'fixed') {\n console.error('Make sure you use: <ion-refresher slot=\"fixed\">');\n return;\n }\n const contentEl = _this6.el.closest(ION_CONTENT_ELEMENT_SELECTOR);\n if (!contentEl) {\n printIonContentErrorMsg(_this6.el);\n return;\n }\n /**\n * Waits for the content to be ready before querying the scroll\n * or the background content element.\n */\n componentOnReady(contentEl, /*#__PURE__*/_asyncToGenerator(function* () {\n const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);\n /**\n * Query the custom scroll target (if available), first. In refresher implementations,\n * the ion-refresher element will always be a direct child of ion-content (slot=\"fixed\"). By\n * querying the custom scroll target first and falling back to the ion-content element,\n * the correct scroll element will be returned by the implementation.\n */\n _this6.scrollEl = yield getScrollElement(customScrollTarget !== null && customScrollTarget !== void 0 ? customScrollTarget : contentEl);\n /**\n * Query the background content element from the host ion-content element directly.\n */\n _this6.backgroundContentEl = yield contentEl.getBackgroundElement();\n /**\n * Check if the content element is fullscreen to apply the correct styles\n * when the refresher is refreshing. Otherwise, the refresher will be\n * hidden because it is positioned behind the background content element.\n */\n _this6.contentFullscreen = contentEl.fullscreen;\n if (yield shouldUseNativeRefresher(_this6.el, getIonMode(_this6))) {\n _this6.setupNativeRefresher(contentEl);\n } else {\n _this6.gesture = (yield import('./index3.js')).createGesture({\n el: contentEl,\n gestureName: 'refresher',\n gesturePriority: 31,\n direction: 'y',\n threshold: 20,\n passive: false,\n canStart: () => _this6.canStart(),\n onStart: () => _this6.onStart(),\n onMove: ev => _this6.onMove(ev),\n onEnd: () => _this6.onEnd()\n });\n _this6.disabledChanged();\n }\n }));\n })();\n }\n disconnectedCallback() {\n this.destroyNativeRefresher();\n this.scrollEl = undefined;\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n /**\n * Call `complete()` when your async operation has completed.\n * For example, the `refreshing` state is while the app is performing\n * an asynchronous operation, such as receiving more data from an\n * AJAX request. Once the data has been received, you then call this\n * method to signify that the refreshing has completed and to close\n * the refresher. This method also changes the refresher's state from\n * `refreshing` to `completing`.\n */\n complete() {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n if (_this7.nativeRefresher) {\n _this7.needsCompletion = true;\n // Do not reset scroll el until user removes pointer from screen\n if (!_this7.pointerDown) {\n raf(() => raf(() => _this7.resetNativeRefresher(_this7.elementToTransform, 32 /* RefresherState.Completing */)));\n }\n } else {\n _this7.close(32 /* RefresherState.Completing */, '120ms');\n }\n })();\n }\n /**\n * Changes the refresher's state from `refreshing` to `cancelling`.\n */\n cancel() {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n if (_this8.nativeRefresher) {\n // Do not reset scroll el until user removes pointer from screen\n if (!_this8.pointerDown) {\n raf(() => raf(() => _this8.resetNativeRefresher(_this8.elementToTransform, 16 /* RefresherState.Cancelling */)));\n }\n } else {\n _this8.close(16 /* RefresherState.Cancelling */, '');\n }\n })();\n }\n /**\n * A number representing how far down the user has pulled.\n * The number `0` represents the user hasn't pulled down at all. The\n * number `1`, and anything greater than `1`, represents that the user\n * has pulled far enough down that when they let go then the refresh will\n * happen. If they let go and the number is less than `1`, then the\n * refresh will not happen, and the content will return to it's original\n * position.\n */\n getProgress() {\n return Promise.resolve(this.progress);\n }\n canStart() {\n if (!this.scrollEl) {\n return false;\n }\n if (this.state !== 1 /* RefresherState.Inactive */) {\n return false;\n }\n // if the scrollTop is greater than zero then it's\n // not possible to pull the content down yet\n if (this.scrollEl.scrollTop > 0) {\n return false;\n }\n return true;\n }\n onStart() {\n this.progress = 0;\n this.state = 1 /* RefresherState.Inactive */;\n this.memoizeOverflowStyle();\n /**\n * If the content is fullscreen, then we need to\n * set the offset-top style on the background content\n * element to ensure that the refresher is shown.\n */\n if (this.contentFullscreen && this.backgroundContentEl) {\n this.backgroundContentEl.style.setProperty('--offset-top', '0px');\n }\n }\n onMove(detail) {\n if (!this.scrollEl) {\n return;\n }\n // this method can get called like a bazillion times per second,\n // so it's built to be as efficient as possible, and does its\n // best to do any DOM read/writes only when absolutely necessary\n // if multi-touch then get out immediately\n const ev = detail.event;\n if (ev.touches !== undefined && ev.touches.length > 1) {\n return;\n }\n // do nothing if it's actively refreshing\n // or it's in the way of closing\n // or this was never a startY\n if ((this.state & 56 /* RefresherState._BUSY_ */) !== 0) {\n return;\n }\n const pullFactor = Number.isNaN(this.pullFactor) || this.pullFactor < 0 ? 1 : this.pullFactor;\n const deltaY = detail.deltaY * pullFactor;\n // don't bother if they're scrolling up\n // and have not already started dragging\n if (deltaY <= 0) {\n // the current Y is higher than the starting Y\n // so they scrolled up enough to be ignored\n this.progress = 0;\n this.state = 1 /* RefresherState.Inactive */;\n if (this.appliedStyles) {\n // reset the styles only if they were applied\n this.setCss(0, '', false, '');\n return;\n }\n return;\n }\n if (this.state === 1 /* RefresherState.Inactive */) {\n // this refresh is not already actively pulling down\n // get the content's scrollTop\n const scrollHostScrollTop = this.scrollEl.scrollTop;\n // if the scrollTop is greater than zero then it's\n // not possible to pull the content down yet\n if (scrollHostScrollTop > 0) {\n this.progress = 0;\n return;\n }\n // content scrolled all the way to the top, and dragging down\n this.state = 2 /* RefresherState.Pulling */;\n }\n // prevent native scroll events\n if (ev.cancelable) {\n ev.preventDefault();\n }\n // the refresher is actively pulling at this point\n // move the scroll element within the content element\n this.setCss(deltaY, '0ms', true, '');\n if (deltaY === 0) {\n // don't continue if there's no delta yet\n this.progress = 0;\n return;\n }\n const pullMin = this.pullMin;\n // set pull progress\n this.progress = deltaY / pullMin;\n // emit \"start\" if it hasn't started yet\n if (!this.didStart) {\n this.didStart = true;\n this.ionStart.emit();\n }\n // emit \"pulling\" on every move\n this.ionPull.emit();\n // do nothing if the delta is less than the pull threshold\n if (deltaY < pullMin) {\n // ensure it stays in the pulling state, cuz its not ready yet\n this.state = 2 /* RefresherState.Pulling */;\n return;\n }\n if (deltaY > this.pullMax) {\n // they pulled farther than the max, so kick off the refresh\n this.beginRefresh();\n return;\n }\n // pulled farther than the pull min!!\n // it is now in the `ready` state!!\n // if they let go then it'll refresh, kerpow!!\n this.state = 4 /* RefresherState.Ready */;\n return;\n }\n onEnd() {\n // only run in a zone when absolutely necessary\n if (this.state === 4 /* RefresherState.Ready */) {\n // they pulled down far enough, so it's ready to refresh\n this.beginRefresh();\n } else if (this.state === 2 /* RefresherState.Pulling */) {\n // they were pulling down, but didn't pull down far enough\n // set the content back to it's original location\n // and close the refresher\n // set that the refresh is actively cancelling\n this.cancel();\n } else if (this.state === 1 /* RefresherState.Inactive */) {\n /**\n * The pull to refresh gesture was aborted\n * so we should immediately restore any overflow styles\n * that have been modified. Do not call this.cancel\n * because the styles will only be reset after a timeout.\n * If the gesture is aborted then scrolling should be\n * available right away.\n */\n this.restoreOverflowStyle();\n }\n }\n beginRefresh() {\n // assumes we're already back in a zone\n // they pulled down far enough, so it's ready to refresh\n this.state = 8 /* RefresherState.Refreshing */;\n // place the content in a hangout position while it thinks\n this.setCss(this.pullMin, this.snapbackDuration, true, '');\n // emit \"refresh\" because it was pulled down far enough\n // and they let go to begin refreshing\n this.ionRefresh.emit({\n complete: this.complete.bind(this)\n });\n }\n close(state, delay) {\n // create fallback timer incase something goes wrong with transitionEnd event\n setTimeout(() => {\n var _a;\n this.state = 1 /* RefresherState.Inactive */;\n this.progress = 0;\n this.didStart = false;\n /**\n * Reset any overflow styles so the\n * user can scroll again.\n */\n this.setCss(0, '0ms', false, '', true);\n /**\n * Reset the offset-top style on the background content\n * when the refresher is no longer refreshing and the\n * content is fullscreen.\n *\n * This ensures that the behavior of background content\n * does not change when refreshing is complete.\n */\n if (this.contentFullscreen && this.backgroundContentEl) {\n (_a = this.backgroundContentEl) === null || _a === void 0 ? void 0 : _a.style.removeProperty('--offset-top');\n }\n }, 600);\n // reset the styles on the scroll element\n // set that the refresh is actively cancelling/completing\n this.state = state;\n this.setCss(0, this.closeDuration, true, delay);\n }\n setCss(y, duration, overflowVisible, delay, shouldRestoreOverflowStyle = false) {\n if (this.nativeRefresher) {\n return;\n }\n this.appliedStyles = y > 0;\n writeTask(() => {\n if (this.scrollEl && this.backgroundContentEl) {\n const scrollStyle = this.scrollEl.style;\n const backgroundStyle = this.backgroundContentEl.style;\n scrollStyle.transform = backgroundStyle.transform = y > 0 ? `translateY(${y}px) translateZ(0px)` : '';\n scrollStyle.transitionDuration = backgroundStyle.transitionDuration = duration;\n scrollStyle.transitionDelay = backgroundStyle.transitionDelay = delay;\n scrollStyle.overflow = overflowVisible ? 'hidden' : '';\n }\n /**\n * Reset the overflow styles only once\n * the pull to refresh effect has been closed.\n * This ensures that the gesture is done\n * and the refresh operation has either\n * been aborted or has completed.\n */\n if (shouldRestoreOverflowStyle) {\n this.restoreOverflowStyle();\n }\n });\n }\n memoizeOverflowStyle() {\n if (this.scrollEl) {\n const {\n overflow,\n overflowX,\n overflowY\n } = this.scrollEl.style;\n this.overflowStyles = {\n overflow: overflow !== null && overflow !== void 0 ? overflow : '',\n overflowX: overflowX !== null && overflowX !== void 0 ? overflowX : '',\n overflowY: overflowY !== null && overflowY !== void 0 ? overflowY : ''\n };\n }\n }\n restoreOverflowStyle() {\n if (this.overflowStyles !== undefined && this.scrollEl !== undefined) {\n const {\n overflow,\n overflowX,\n overflowY\n } = this.overflowStyles;\n this.scrollEl.style.overflow = overflow;\n this.scrollEl.style.overflowX = overflowX;\n this.scrollEl.style.overflowY = overflowY;\n this.overflowStyles = undefined;\n }\n }\n render() {\n const mode = getIonMode(this);\n return h(Host, {\n key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3',\n slot: \"fixed\",\n class: {\n [mode]: true,\n // Used internally for styling\n [`refresher-${mode}`]: true,\n 'refresher-native': this.nativeRefresher,\n 'refresher-active': this.state !== 1 /* RefresherState.Inactive */,\n 'refresher-pulling': this.state === 2 /* RefresherState.Pulling */,\n 'refresher-ready': this.state === 4 /* RefresherState.Ready */,\n 'refresher-refreshing': this.state === 8 /* RefresherState.Refreshing */,\n 'refresher-cancelling': this.state === 16 /* RefresherState.Cancelling */,\n 'refresher-completing': this.state === 32 /* RefresherState.Completing */\n }\n });\n }\n get el() {\n return this;\n }\n static get watchers() {\n return {\n \"disabled\": [\"disabledChanged\"]\n };\n }\n static get style() {\n return {\n ios: IonRefresherIosStyle0,\n md: IonRefresherMdStyle0\n };\n }\n}, [32, \"ion-refresher\", {\n \"pullMin\": [2, \"pull-min\"],\n \"pullMax\": [2, \"pull-max\"],\n \"closeDuration\": [1, \"close-duration\"],\n \"snapbackDuration\": [1, \"snapback-duration\"],\n \"pullFactor\": [2, \"pull-factor\"],\n \"disabled\": [4],\n \"nativeRefresher\": [32],\n \"state\": [32],\n \"complete\": [64],\n \"cancel\": [64],\n \"getProgress\": [64]\n}, undefined, {\n \"disabled\": [\"disabledChanged\"]\n}]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-refresher\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-refresher\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Refresher);\n }\n break;\n }\n });\n}\nconst IonRefresher = Refresher;\nconst defineCustomElement = defineCustomElement$1;\nexport { IonRefresher, defineCustomElement };","map":{"version":3,"names":["proxyCustomElement","HTMLElement","createEvent","writeTask","readTask","h","Host","g","getTimeGivenProgression","I","ION_CONTENT_CLASS_SELECTOR","b","ION_CONTENT_ELEMENT_SELECTOR","p","printIonContentErrorMsg","getScrollElement","t","transitionEndAsync","k","clamp","getElementRoot","c","componentOnReady","r","raf","hapticImpact","ImpactStyle","getIonMode","s","shouldUseNativeRefresher","translateElement","a","setSpinnerOpacity","handleScrollWhileRefreshing","handleScrollWhilePulling","createPullingAnimation","d","createSnapBackAnimation","getRefresherAnimationType","refresherIosCss","IonRefresherIosStyle0","refresherMdCss","IonRefresherMdStyle0","Refresher","constructor","__registerHost","ionRefresh","ionPull","ionStart","appliedStyles","didStart","progress","pointerDown","needsCompletion","didRefresh","contentFullscreen","lastVelocityY","animations","nativeRefresher","state","pullMin","pullMax","closeDuration","snapbackDuration","pullFactor","disabled","disabledChanged","gesture","enable","checkNativeRefresher","_this","_asyncToGenerator","useNativeRefresher","el","contentEl","closest","setupNativeRefresher","destroyNativeRefresher","scrollEl","scrollListenerCallback","removeEventListener","undefined","resetNativeRefresher","_this2","querySelector","forEach","ani","destroy","setupiOSNativeRefresher","pullingSpinner","refreshingSpinner","_this3","elementToTransform","ticks","shadowRoot","querySelectorAll","MAX_PULL","clientHeight","NUM_TICKS","length","style","setProperty","scrollTop","refresherHeight","ratio","emit","offset","pullAmount","Math","abs","shouldShowRefreshingSpinner","beginRefresh","Light","addEventListener","createGesture","gestureName","gesturePriority","direction","threshold","onStart","onMove","ev","velocityY","onEnd","setupMDNativeRefresher","_this4","circle","pullingRefresherIcon","refreshingCircle","canStart","data","animation","cancelled","overflowProperty","matches","animationType","progressStart","push","deltaY","progressStep","removeProperty","progressEnd","onFinish","snapBackAnimation","play","_this5","setCss","componentDidUpdate","connectedCallback","_this6","getAttribute","console","error","customScrollTarget","backgroundContentEl","getBackgroundElement","fullscreen","passive","disconnectedCallback","complete","_this7","close","cancel","_this8","getProgress","Promise","resolve","memoizeOverflowStyle","detail","event","touches","Number","isNaN","scrollHostScrollTop","cancelable","preventDefault","restoreOverflowStyle","bind","delay","setTimeout","_a","y","duration","overflowVisible","shouldRestoreOverflowStyle","scrollStyle","backgroundStyle","transform","transitionDuration","transitionDelay","overflow","overflowX","overflowY","overflowStyles","render","mode","key","slot","class","watchers","ios","md","defineCustomElement$1","customElements","components","tagName","get","define","IonRefresher","defineCustomElement"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@ionic/core/components/ion-refresher.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, writeTask, readTask, h, Host } from '@stencil/core/internal/client';\nimport { g as getTimeGivenProgression } from './cubic-bezier.js';\nimport { I as ION_CONTENT_CLASS_SELECTOR, b as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, g as getScrollElement } from './index8.js';\nimport { t as transitionEndAsync, k as clamp, g as getElementRoot, c as componentOnReady, r as raf } from './helpers.js';\nimport { c as hapticImpact, I as ImpactStyle } from './haptic.js';\nimport { b as getIonMode } from './ionic-global.js';\nimport { s as shouldUseNativeRefresher, t as translateElement, a as setSpinnerOpacity, h as handleScrollWhileRefreshing, b as handleScrollWhilePulling, c as createPullingAnimation, d as createSnapBackAnimation, g as getRefresherAnimationType } from './refresher.utils.js';\n\nconst refresherIosCss = \"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, var(--ion-background-color-step-450, #747577))}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}\";\nconst IonRefresherIosStyle0 = refresherIosCss;\n\nconst refresherMdCss = \"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-md .refresher-pulling-icon,.refresher-md .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-md .refresher-pulling-text,.refresher-md .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-lines-md line,.refresher-md .refresher-refreshing .spinner-lines-small-md line,.refresher-md .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-bubbles circle,.refresher-md .refresher-refreshing .spinner-circles circle,.refresher-md .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #0054e9)}ion-refresher.refresher-native .spinner-arrow-container{display:inherit}ion-refresher.refresher-native .arrow-container{display:block;position:absolute;width:24px;height:24px}ion-refresher.refresher-native .arrow-container ion-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #0054e9);font-size:12px}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{display:-ms-flexbox;display:flex}ion-refresher.refresher-native.refresher-refreshing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-cancelling ion-refresher-content .refresher-refreshing{display:-ms-flexbox;display:flex}ion-refresher.refresher-native .refresher-pulling-icon{-webkit-transform:translateY(calc(-100% - 10px));transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;border-radius:100%;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;display:-ms-flexbox;display:flex;border:1px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #ececec));background:var(--ion-color-step-250, var(--ion-background-color-step-250, #ffffff));-webkit-box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}\";\nconst IonRefresherMdStyle0 = refresherMdCss;\n\nconst Refresher = /*@__PURE__*/ proxyCustomElement(class Refresher extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.ionRefresh = createEvent(this, \"ionRefresh\", 7);\n this.ionPull = createEvent(this, \"ionPull\", 7);\n this.ionStart = createEvent(this, \"ionStart\", 7);\n this.appliedStyles = false;\n this.didStart = false;\n this.progress = 0;\n this.pointerDown = false;\n this.needsCompletion = false;\n this.didRefresh = false;\n this.contentFullscreen = false;\n this.lastVelocityY = 0;\n this.animations = [];\n this.nativeRefresher = false;\n this.state = 1 /* RefresherState.Inactive */;\n this.pullMin = 60;\n this.pullMax = this.pullMin + 60;\n this.closeDuration = '280ms';\n this.snapbackDuration = '280ms';\n this.pullFactor = 1;\n this.disabled = false;\n }\n disabledChanged() {\n if (this.gesture) {\n this.gesture.enable(!this.disabled);\n }\n }\n async checkNativeRefresher() {\n const useNativeRefresher = await shouldUseNativeRefresher(this.el, getIonMode(this));\n if (useNativeRefresher && !this.nativeRefresher) {\n const contentEl = this.el.closest('ion-content');\n this.setupNativeRefresher(contentEl);\n }\n else if (!useNativeRefresher) {\n this.destroyNativeRefresher();\n }\n }\n destroyNativeRefresher() {\n if (this.scrollEl && this.scrollListenerCallback) {\n this.scrollEl.removeEventListener('scroll', this.scrollListenerCallback);\n this.scrollListenerCallback = undefined;\n }\n this.nativeRefresher = false;\n }\n async resetNativeRefresher(el, state) {\n this.state = state;\n if (getIonMode(this) === 'ios') {\n await translateElement(el, undefined, 300);\n }\n else {\n await transitionEndAsync(this.el.querySelector('.refresher-refreshing-icon'), 200);\n }\n this.didRefresh = false;\n this.needsCompletion = false;\n this.pointerDown = false;\n this.animations.forEach((ani) => ani.destroy());\n this.animations = [];\n this.progress = 0;\n this.state = 1 /* RefresherState.Inactive */;\n }\n async setupiOSNativeRefresher(pullingSpinner, refreshingSpinner) {\n this.elementToTransform = this.scrollEl;\n const ticks = pullingSpinner.shadowRoot.querySelectorAll('svg');\n let MAX_PULL = this.scrollEl.clientHeight * 0.16;\n const NUM_TICKS = ticks.length;\n writeTask(() => ticks.forEach((el) => el.style.setProperty('animation', 'none')));\n this.scrollListenerCallback = () => {\n // If pointer is not on screen or refresher is not active, ignore scroll\n if (!this.pointerDown && this.state === 1 /* RefresherState.Inactive */) {\n return;\n }\n readTask(() => {\n // PTR should only be active when overflow scrolling at the top\n const scrollTop = this.scrollEl.scrollTop;\n const refresherHeight = this.el.clientHeight;\n if (scrollTop > 0) {\n /**\n * If refresher is refreshing and user tries to scroll\n * progressively fade refresher out/in\n */\n if (this.state === 8 /* RefresherState.Refreshing */) {\n const ratio = clamp(0, scrollTop / (refresherHeight * 0.5), 1);\n writeTask(() => setSpinnerOpacity(refreshingSpinner, 1 - ratio));\n return;\n }\n return;\n }\n if (this.pointerDown) {\n if (!this.didStart) {\n this.didStart = true;\n this.ionStart.emit();\n }\n // emit \"pulling\" on every move\n if (this.pointerDown) {\n this.ionPull.emit();\n }\n }\n /**\n * We want to delay the start of this gesture by ~30px\n * when initially pulling down so the refresher does not\n * overlap with the content. But when letting go of the\n * gesture before the refresher completes, we want the\n * refresher tick marks to quickly fade out.\n */\n const offset = this.didStart ? 30 : 0;\n const pullAmount = (this.progress = clamp(0, (Math.abs(scrollTop) - offset) / MAX_PULL, 1));\n const shouldShowRefreshingSpinner = this.state === 8 /* RefresherState.Refreshing */ || pullAmount === 1;\n if (shouldShowRefreshingSpinner) {\n if (this.pointerDown) {\n handleScrollWhileRefreshing(refreshingSpinner, this.lastVelocityY);\n }\n if (!this.didRefresh) {\n this.beginRefresh();\n this.didRefresh = true;\n hapticImpact({ style: ImpactStyle.Light });\n /**\n * Translate the content element otherwise when pointer is removed\n * from screen the scroll content will bounce back over the refresher\n */\n if (!this.pointerDown) {\n translateElement(this.elementToTransform, `${refresherHeight}px`);\n }\n }\n }\n else {\n this.state = 2 /* RefresherState.Pulling */;\n handleScrollWhilePulling(ticks, NUM_TICKS, pullAmount);\n }\n });\n };\n this.scrollEl.addEventListener('scroll', this.scrollListenerCallback);\n this.gesture = (await import('./index3.js')).createGesture({\n el: this.scrollEl,\n gestureName: 'refresher',\n gesturePriority: 31,\n direction: 'y',\n threshold: 5,\n onStart: () => {\n this.pointerDown = true;\n if (!this.didRefresh) {\n translateElement(this.elementToTransform, '0px');\n }\n /**\n * If the content had `display: none` when\n * the refresher was initialized, its clientHeight\n * will be 0. When the gesture starts, the content\n * will be visible, so try to get the correct\n * client height again. This is most common when\n * using the refresher in an ion-menu.\n */\n if (MAX_PULL === 0) {\n MAX_PULL = this.scrollEl.clientHeight * 0.16;\n }\n },\n onMove: (ev) => {\n this.lastVelocityY = ev.velocityY;\n },\n onEnd: () => {\n this.pointerDown = false;\n this.didStart = false;\n if (this.needsCompletion) {\n this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */);\n this.needsCompletion = false;\n }\n else if (this.didRefresh) {\n readTask(() => translateElement(this.elementToTransform, `${this.el.clientHeight}px`));\n }\n },\n });\n this.disabledChanged();\n }\n async setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner) {\n const circle = getElementRoot(pullingSpinner).querySelector('circle');\n const pullingRefresherIcon = this.el.querySelector('ion-refresher-content .refresher-pulling-icon');\n const refreshingCircle = getElementRoot(refreshingSpinner).querySelector('circle');\n if (circle !== null && refreshingCircle !== null) {\n writeTask(() => {\n circle.style.setProperty('animation', 'none');\n // This lines up the animation on the refreshing spinner with the pulling spinner\n refreshingSpinner.style.setProperty('animation-delay', '-655ms');\n refreshingCircle.style.setProperty('animation-delay', '-655ms');\n });\n }\n this.gesture = (await import('./index3.js')).createGesture({\n el: this.scrollEl,\n gestureName: 'refresher',\n gesturePriority: 31,\n direction: 'y',\n threshold: 5,\n canStart: () => this.state !== 8 /* RefresherState.Refreshing */ &&\n this.state !== 32 /* RefresherState.Completing */ &&\n this.scrollEl.scrollTop === 0,\n onStart: (ev) => {\n this.progress = 0;\n ev.data = { animation: undefined, didStart: false, cancelled: false };\n },\n onMove: (ev) => {\n if ((ev.velocityY < 0 && this.progress === 0 && !ev.data.didStart) || ev.data.cancelled) {\n ev.data.cancelled = true;\n return;\n }\n if (!ev.data.didStart) {\n ev.data.didStart = true;\n this.state = 2 /* RefresherState.Pulling */;\n // When ion-refresher is being used with a custom scroll target, the overflow styles need to be applied directly instead of via a css variable\n const { scrollEl } = this;\n const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';\n writeTask(() => scrollEl.style.setProperty(overflowProperty, 'hidden'));\n const animationType = getRefresherAnimationType(contentEl);\n const animation = createPullingAnimation(animationType, pullingRefresherIcon, this.el);\n ev.data.animation = animation;\n animation.progressStart(false, 0);\n this.ionStart.emit();\n this.animations.push(animation);\n return;\n }\n // Since we are using an easing curve, slow the gesture tracking down a bit\n this.progress = clamp(0, (ev.deltaY / 180) * 0.5, 1);\n ev.data.animation.progressStep(this.progress);\n this.ionPull.emit();\n },\n onEnd: (ev) => {\n if (!ev.data.didStart) {\n return;\n }\n this.gesture.enable(false);\n const { scrollEl } = this;\n const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';\n writeTask(() => scrollEl.style.removeProperty(overflowProperty));\n if (this.progress <= 0.4) {\n ev.data.animation.progressEnd(0, this.progress, 500).onFinish(() => {\n this.animations.forEach((ani) => ani.destroy());\n this.animations = [];\n this.gesture.enable(true);\n this.state = 1 /* RefresherState.Inactive */;\n });\n return;\n }\n const progress = getTimeGivenProgression([0, 0], [0, 0], [1, 1], [1, 1], this.progress)[0];\n const snapBackAnimation = createSnapBackAnimation(pullingRefresherIcon);\n this.animations.push(snapBackAnimation);\n writeTask(async () => {\n pullingRefresherIcon.style.setProperty('--ion-pulling-refresher-translate', `${progress * 100}px`);\n ev.data.animation.progressEnd();\n await snapBackAnimation.play();\n this.beginRefresh();\n ev.data.animation.destroy();\n this.gesture.enable(true);\n });\n },\n });\n this.disabledChanged();\n }\n async setupNativeRefresher(contentEl) {\n if (this.scrollListenerCallback || !contentEl || this.nativeRefresher || !this.scrollEl) {\n return;\n }\n /**\n * If using non-native refresher before make sure\n * we clean up any old CSS. This can happen when\n * a user manually calls the refresh method in a\n * component create callback before the native\n * refresher is setup.\n */\n this.setCss(0, '', false, '');\n this.nativeRefresher = true;\n const pullingSpinner = this.el.querySelector('ion-refresher-content .refresher-pulling ion-spinner');\n const refreshingSpinner = this.el.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');\n if (getIonMode(this) === 'ios') {\n this.setupiOSNativeRefresher(pullingSpinner, refreshingSpinner);\n }\n else {\n this.setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner);\n }\n }\n componentDidUpdate() {\n this.checkNativeRefresher();\n }\n async connectedCallback() {\n if (this.el.getAttribute('slot') !== 'fixed') {\n console.error('Make sure you use: <ion-refresher slot=\"fixed\">');\n return;\n }\n const contentEl = this.el.closest(ION_CONTENT_ELEMENT_SELECTOR);\n if (!contentEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n /**\n * Waits for the content to be ready before querying the scroll\n * or the background content element.\n */\n componentOnReady(contentEl, async () => {\n const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);\n /**\n * Query the custom scroll target (if available), first. In refresher implementations,\n * the ion-refresher element will always be a direct child of ion-content (slot=\"fixed\"). By\n * querying the custom scroll target first and falling back to the ion-content element,\n * the correct scroll element will be returned by the implementation.\n */\n this.scrollEl = await getScrollElement(customScrollTarget !== null && customScrollTarget !== void 0 ? customScrollTarget : contentEl);\n /**\n * Query the background content element from the host ion-content element directly.\n */\n this.backgroundContentEl = await contentEl.getBackgroundElement();\n /**\n * Check if the content element is fullscreen to apply the correct styles\n * when the refresher is refreshing. Otherwise, the refresher will be\n * hidden because it is positioned behind the background content element.\n */\n this.contentFullscreen = contentEl.fullscreen;\n if (await shouldUseNativeRefresher(this.el, getIonMode(this))) {\n this.setupNativeRefresher(contentEl);\n }\n else {\n this.gesture = (await import('./index3.js')).createGesture({\n el: contentEl,\n gestureName: 'refresher',\n gesturePriority: 31,\n direction: 'y',\n threshold: 20,\n passive: false,\n canStart: () => this.canStart(),\n onStart: () => this.onStart(),\n onMove: (ev) => this.onMove(ev),\n onEnd: () => this.onEnd(),\n });\n this.disabledChanged();\n }\n });\n }\n disconnectedCallback() {\n this.destroyNativeRefresher();\n this.scrollEl = undefined;\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n /**\n * Call `complete()` when your async operation has completed.\n * For example, the `refreshing` state is while the app is performing\n * an asynchronous operation, such as receiving more data from an\n * AJAX request. Once the data has been received, you then call this\n * method to signify that the refreshing has completed and to close\n * the refresher. This method also changes the refresher's state from\n * `refreshing` to `completing`.\n */\n async complete() {\n if (this.nativeRefresher) {\n this.needsCompletion = true;\n // Do not reset scroll el until user removes pointer from screen\n if (!this.pointerDown) {\n raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */)));\n }\n }\n else {\n this.close(32 /* RefresherState.Completing */, '120ms');\n }\n }\n /**\n * Changes the refresher's state from `refreshing` to `cancelling`.\n */\n async cancel() {\n if (this.nativeRefresher) {\n // Do not reset scroll el until user removes pointer from screen\n if (!this.pointerDown) {\n raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 16 /* RefresherState.Cancelling */)));\n }\n }\n else {\n this.close(16 /* RefresherState.Cancelling */, '');\n }\n }\n /**\n * A number representing how far down the user has pulled.\n * The number `0` represents the user hasn't pulled down at all. The\n * number `1`, and anything greater than `1`, represents that the user\n * has pulled far enough down that when they let go then the refresh will\n * happen. If they let go and the number is less than `1`, then the\n * refresh will not happen, and the content will return to it's original\n * position.\n */\n getProgress() {\n return Promise.resolve(this.progress);\n }\n canStart() {\n if (!this.scrollEl) {\n return false;\n }\n if (this.state !== 1 /* RefresherState.Inactive */) {\n return false;\n }\n // if the scrollTop is greater than zero then it's\n // not possible to pull the content down yet\n if (this.scrollEl.scrollTop > 0) {\n return false;\n }\n return true;\n }\n onStart() {\n this.progress = 0;\n this.state = 1 /* RefresherState.Inactive */;\n this.memoizeOverflowStyle();\n /**\n * If the content is fullscreen, then we need to\n * set the offset-top style on the background content\n * element to ensure that the refresher is shown.\n */\n if (this.contentFullscreen && this.backgroundContentEl) {\n this.backgroundContentEl.style.setProperty('--offset-top', '0px');\n }\n }\n onMove(detail) {\n if (!this.scrollEl) {\n return;\n }\n // this method can get called like a bazillion times per second,\n // so it's built to be as efficient as possible, and does its\n // best to do any DOM read/writes only when absolutely necessary\n // if multi-touch then get out immediately\n const ev = detail.event;\n if (ev.touches !== undefined && ev.touches.length > 1) {\n return;\n }\n // do nothing if it's actively refreshing\n // or it's in the way of closing\n // or this was never a startY\n if ((this.state & 56 /* RefresherState._BUSY_ */) !== 0) {\n return;\n }\n const pullFactor = Number.isNaN(this.pullFactor) || this.pullFactor < 0 ? 1 : this.pullFactor;\n const deltaY = detail.deltaY * pullFactor;\n // don't bother if they're scrolling up\n // and have not already started dragging\n if (deltaY <= 0) {\n // the current Y is higher than the starting Y\n // so they scrolled up enough to be ignored\n this.progress = 0;\n this.state = 1 /* RefresherState.Inactive */;\n if (this.appliedStyles) {\n // reset the styles only if they were applied\n this.setCss(0, '', false, '');\n return;\n }\n return;\n }\n if (this.state === 1 /* RefresherState.Inactive */) {\n // this refresh is not already actively pulling down\n // get the content's scrollTop\n const scrollHostScrollTop = this.scrollEl.scrollTop;\n // if the scrollTop is greater than zero then it's\n // not possible to pull the content down yet\n if (scrollHostScrollTop > 0) {\n this.progress = 0;\n return;\n }\n // content scrolled all the way to the top, and dragging down\n this.state = 2 /* RefresherState.Pulling */;\n }\n // prevent native scroll events\n if (ev.cancelable) {\n ev.preventDefault();\n }\n // the refresher is actively pulling at this point\n // move the scroll element within the content element\n this.setCss(deltaY, '0ms', true, '');\n if (deltaY === 0) {\n // don't continue if there's no delta yet\n this.progress = 0;\n return;\n }\n const pullMin = this.pullMin;\n // set pull progress\n this.progress = deltaY / pullMin;\n // emit \"start\" if it hasn't started yet\n if (!this.didStart) {\n this.didStart = true;\n this.ionStart.emit();\n }\n // emit \"pulling\" on every move\n this.ionPull.emit();\n // do nothing if the delta is less than the pull threshold\n if (deltaY < pullMin) {\n // ensure it stays in the pulling state, cuz its not ready yet\n this.state = 2 /* RefresherState.Pulling */;\n return;\n }\n if (deltaY > this.pullMax) {\n // they pulled farther than the max, so kick off the refresh\n this.beginRefresh();\n return;\n }\n // pulled farther than the pull min!!\n // it is now in the `ready` state!!\n // if they let go then it'll refresh, kerpow!!\n this.state = 4 /* RefresherState.Ready */;\n return;\n }\n onEnd() {\n // only run in a zone when absolutely necessary\n if (this.state === 4 /* RefresherState.Ready */) {\n // they pulled down far enough, so it's ready to refresh\n this.beginRefresh();\n }\n else if (this.state === 2 /* RefresherState.Pulling */) {\n // they were pulling down, but didn't pull down far enough\n // set the content back to it's original location\n // and close the refresher\n // set that the refresh is actively cancelling\n this.cancel();\n }\n else if (this.state === 1 /* RefresherState.Inactive */) {\n /**\n * The pull to refresh gesture was aborted\n * so we should immediately restore any overflow styles\n * that have been modified. Do not call this.cancel\n * because the styles will only be reset after a timeout.\n * If the gesture is aborted then scrolling should be\n * available right away.\n */\n this.restoreOverflowStyle();\n }\n }\n beginRefresh() {\n // assumes we're already back in a zone\n // they pulled down far enough, so it's ready to refresh\n this.state = 8 /* RefresherState.Refreshing */;\n // place the content in a hangout position while it thinks\n this.setCss(this.pullMin, this.snapbackDuration, true, '');\n // emit \"refresh\" because it was pulled down far enough\n // and they let go to begin refreshing\n this.ionRefresh.emit({\n complete: this.complete.bind(this),\n });\n }\n close(state, delay) {\n // create fallback timer incase something goes wrong with transitionEnd event\n setTimeout(() => {\n var _a;\n this.state = 1 /* RefresherState.Inactive */;\n this.progress = 0;\n this.didStart = false;\n /**\n * Reset any overflow styles so the\n * user can scroll again.\n */\n this.setCss(0, '0ms', false, '', true);\n /**\n * Reset the offset-top style on the background content\n * when the refresher is no longer refreshing and the\n * content is fullscreen.\n *\n * This ensures that the behavior of background content\n * does not change when refreshing is complete.\n */\n if (this.contentFullscreen && this.backgroundContentEl) {\n (_a = this.backgroundContentEl) === null || _a === void 0 ? void 0 : _a.style.removeProperty('--offset-top');\n }\n }, 600);\n // reset the styles on the scroll element\n // set that the refresh is actively cancelling/completing\n this.state = state;\n this.setCss(0, this.closeDuration, true, delay);\n }\n setCss(y, duration, overflowVisible, delay, shouldRestoreOverflowStyle = false) {\n if (this.nativeRefresher) {\n return;\n }\n this.appliedStyles = y > 0;\n writeTask(() => {\n if (this.scrollEl && this.backgroundContentEl) {\n const scrollStyle = this.scrollEl.style;\n const backgroundStyle = this.backgroundContentEl.style;\n scrollStyle.transform = backgroundStyle.transform = y > 0 ? `translateY(${y}px) translateZ(0px)` : '';\n scrollStyle.transitionDuration = backgroundStyle.transitionDuration = duration;\n scrollStyle.transitionDelay = backgroundStyle.transitionDelay = delay;\n scrollStyle.overflow = overflowVisible ? 'hidden' : '';\n }\n /**\n * Reset the overflow styles only once\n * the pull to refresh effect has been closed.\n * This ensures that the gesture is done\n * and the refresh operation has either\n * been aborted or has completed.\n */\n if (shouldRestoreOverflowStyle) {\n this.restoreOverflowStyle();\n }\n });\n }\n memoizeOverflowStyle() {\n if (this.scrollEl) {\n const { overflow, overflowX, overflowY } = this.scrollEl.style;\n this.overflowStyles = {\n overflow: overflow !== null && overflow !== void 0 ? overflow : '',\n overflowX: overflowX !== null && overflowX !== void 0 ? overflowX : '',\n overflowY: overflowY !== null && overflowY !== void 0 ? overflowY : '',\n };\n }\n }\n restoreOverflowStyle() {\n if (this.overflowStyles !== undefined && this.scrollEl !== undefined) {\n const { overflow, overflowX, overflowY } = this.overflowStyles;\n this.scrollEl.style.overflow = overflow;\n this.scrollEl.style.overflowX = overflowX;\n this.scrollEl.style.overflowY = overflowY;\n this.overflowStyles = undefined;\n }\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: \"fixed\", class: {\n [mode]: true,\n // Used internally for styling\n [`refresher-${mode}`]: true,\n 'refresher-native': this.nativeRefresher,\n 'refresher-active': this.state !== 1 /* RefresherState.Inactive */,\n 'refresher-pulling': this.state === 2 /* RefresherState.Pulling */,\n 'refresher-ready': this.state === 4 /* RefresherState.Ready */,\n 'refresher-refreshing': this.state === 8 /* RefresherState.Refreshing */,\n 'refresher-cancelling': this.state === 16 /* RefresherState.Cancelling */,\n 'refresher-completing': this.state === 32 /* RefresherState.Completing */,\n } }));\n }\n get el() { return this; }\n static get watchers() { return {\n \"disabled\": [\"disabledChanged\"]\n }; }\n static get style() { return {\n ios: IonRefresherIosStyle0,\n md: IonRefresherMdStyle0\n }; }\n}, [32, \"ion-refresher\", {\n \"pullMin\": [2, \"pull-min\"],\n \"pullMax\": [2, \"pull-max\"],\n \"closeDuration\": [1, \"close-duration\"],\n \"snapbackDuration\": [1, \"snapback-duration\"],\n \"pullFactor\": [2, \"pull-factor\"],\n \"disabled\": [4],\n \"nativeRefresher\": [32],\n \"state\": [32],\n \"complete\": [64],\n \"cancel\": [64],\n \"getProgress\": [64]\n }, undefined, {\n \"disabled\": [\"disabledChanged\"]\n }]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-refresher\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-refresher\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Refresher);\n }\n break;\n } });\n}\n\nconst IonRefresher = Refresher;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonRefresher, defineCustomElement };\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|