1 line
69 KiB
Plaintext
1 line
69 KiB
Plaintext
{"version":3,"sources":["webpack:///node_modules/@ionic/core/dist/esm/ion-refresher_2.entry.js"],"names":["getRefresherAnimationType","contentEl","previousSibling","previousElementSibling","hasHeader","tagName","createPullingAnimation","type","pullingSpinner","createScaleAnimation","createTranslateAnimation","createBaseAnimation","pullingRefresherIcon","spinner","querySelector","circle","shadowRoot","spinnerArrowContainer","arrowContainer","arrow","baseAnimation","duration","easing","spinnerArrowContainerAnimation","addElement","keyframes","offset","opacity","circleInnerAnimation","strokeDasharray","circleOuterAnimation","transform","arrowContainerAnimation","arrowAnimation","addAnimation","height","clientHeight","spinnerAnimation","createSnapBackAnimation","fromTo","setSpinnerOpacity","style","setProperty","toString","handleScrollWhilePulling","ticks","currentTickToShow","forEach","el","i","handleScrollWhileRefreshing","lastVelocityY","translateElement","value","Promise","resolve","trans","transitionEndAsync","undefined","removeProperty","shouldUseNativeRefresher","referenceEl","mode","refreshingSpinner","webkitOverflowScrolling","expectedDuration","transitionEnd","callback","unRegTrans","animationTimeout","opts","passive","ANIMATION_FALLBACK_TIMEOUT","unregister","onTransitionEnd","ev","target","addEventListener","setTimeout","clearTimeout","removeEventListener","refresherIosCss","refresherMdCss","Refresher","hostRef","ionRefresh","ionPull","ionStart","appliedStyles","didStart","progress","pointerDown","needsCompletion","didRefresh","animations","nativeRefresher","state","pullMin","pullMax","closeDuration","snapbackDuration","pullFactor","disabled","gesture","enable","useNativeRefresher","closest","setupNativeRefresher","destroyNativeRefresher","scrollEl","scrollListenerCallback","ani","destroy","elementToTransform","querySelectorAll","MAX_PULL","NUM_TICKS","length","scrollTop","refresherHeight","ratio","emit","Math","abs","pullAmount","floor","shouldShowRefreshingSpinner","beginRefresh","createGesture","gestureName","gesturePriority","direction","threshold","onStart","onMove","velocityY","onEnd","resetNativeRefresher","disabledChanged","refreshingCircle","canStart","data","animation","cancelled","animationType","progressStart","push","deltaY","progressStep","progressEnd","onFinish","snapBackAnimation","play","setupiOSNativeRefresher","setupMDNativeRefresher","checkNativeRefresher","getAttribute","console","error","componentOnReady","getScrollElement","backgroundContentEl","close","detail","event","touches","Number","isNaN","setCss","scrollHostScrollTop","cancelable","preventDefault","cancel","complete","bind","delay","y","overflowVisible","scrollStyle","backgroundStyle","transitionDuration","transitionDelay","overflow","slot","ios","md","RefresherContent","pullingIcon","overflowRefresher","get","hasSpinner","name","paused","icon","lazy","pullingText","innerHTML","refreshingText"],"mappings":"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","file":"26-es5.js","sourcesContent":["import { c as writeTask, r as registerInstance, e as createEvent, f as readTask, h, i as getElement, H as Host } from './index-e806d1f6.js';\nimport { i as isPlatform, b as getIonMode, c as config } from './ionic-global-9d5c8ee3.js';\nimport { h as clamp, g as getElementRoot, r as raf } from './helpers-90f46169.js';\nimport { c as createAnimation } from './animation-54fe0237.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier-eea9a7a9.js';\nimport { s as sanitizeDOMString } from './index-9e3fe806.js';\nimport { d as hapticImpact } from './haptic-27b3f981.js';\nimport { S as SPINNERS } from './spinner-configs-cd7845af.js';\n\nconst getRefresherAnimationType = (contentEl) => {\n const previousSibling = contentEl.previousElementSibling;\n const hasHeader = previousSibling !== null && previousSibling.tagName === 'ION-HEADER';\n return hasHeader ? 'translate' : 'scale';\n};\nconst createPullingAnimation = (type, pullingSpinner) => {\n return type === 'scale' ? createScaleAnimation(pullingSpinner) : createTranslateAnimation(pullingSpinner);\n};\nconst createBaseAnimation = (pullingRefresherIcon) => {\n const spinner = pullingRefresherIcon.querySelector('ion-spinner');\n const circle = spinner.shadowRoot.querySelector('circle');\n const spinnerArrowContainer = pullingRefresherIcon.querySelector('.spinner-arrow-container');\n const arrowContainer = pullingRefresherIcon.querySelector('.arrow-container');\n const arrow = (arrowContainer) ? arrowContainer.querySelector('ion-icon') : null;\n const baseAnimation = createAnimation()\n .duration(1000)\n .easing('ease-out');\n const spinnerArrowContainerAnimation = createAnimation()\n .addElement(spinnerArrowContainer)\n .keyframes([\n { offset: 0, opacity: '0.3' },\n { offset: 0.45, opacity: '0.3' },\n { offset: 0.55, opacity: '1' },\n { offset: 1, opacity: '1' }\n ]);\n const circleInnerAnimation = createAnimation()\n .addElement(circle)\n .keyframes([\n { offset: 0, strokeDasharray: '1px, 200px' },\n { offset: 0.20, strokeDasharray: '1px, 200px' },\n { offset: 0.55, strokeDasharray: '100px, 200px' },\n { offset: 1, strokeDasharray: '100px, 200px' }\n ]);\n const circleOuterAnimation = createAnimation()\n .addElement(spinner)\n .keyframes([\n { offset: 0, transform: 'rotate(-90deg)' },\n { offset: 1, transform: 'rotate(210deg)' }\n ]);\n /**\n * Only add arrow animation if present\n * this allows users to customize the spinners\n * without errors being thrown\n */\n if (arrowContainer && arrow) {\n const arrowContainerAnimation = createAnimation()\n .addElement(arrowContainer)\n .keyframes([\n { offset: 0, transform: 'rotate(0deg)' },\n { offset: 0.30, transform: 'rotate(0deg)' },\n { offset: 0.55, transform: 'rotate(280deg)' },\n { offset: 1, transform: 'rotate(400deg)' }\n ]);\n const arrowAnimation = createAnimation()\n .addElement(arrow)\n .keyframes([\n { offset: 0, transform: 'translateX(2px) scale(0)' },\n { offset: 0.30, transform: 'translateX(2px) scale(0)' },\n { offset: 0.55, transform: 'translateX(-1.5px) scale(1)' },\n { offset: 1, transform: 'translateX(-1.5px) scale(1)' }\n ]);\n baseAnimation.addAnimation([arrowContainerAnimation, arrowAnimation]);\n }\n return baseAnimation.addAnimation([spinnerArrowContainerAnimation, circleInnerAnimation, circleOuterAnimation]);\n};\nconst createScaleAnimation = (pullingRefresherIcon) => {\n const height = pullingRefresherIcon.clientHeight;\n const spinnerAnimation = createAnimation()\n .addElement(pullingRefresherIcon)\n .keyframes([\n { offset: 0, transform: `scale(0) translateY(-${height + 20}px)` },\n { offset: 1, transform: 'scale(1) translateY(100px)' }\n ]);\n return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);\n};\nconst createTranslateAnimation = (pullingRefresherIcon) => {\n const height = pullingRefresherIcon.clientHeight;\n const spinnerAnimation = createAnimation()\n .addElement(pullingRefresherIcon)\n .keyframes([\n { offset: 0, transform: `translateY(-${height + 20}px)` },\n { offset: 1, transform: 'translateY(100px)' }\n ]);\n return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);\n};\nconst createSnapBackAnimation = (pullingRefresherIcon) => {\n return createAnimation()\n .duration(125)\n .addElement(pullingRefresherIcon)\n .fromTo('transform', 'translateY(var(--ion-pulling-refresher-translate, 100px))', 'translateY(0px)');\n};\n// iOS Native Refresher\n// -----------------------------\nconst setSpinnerOpacity = (spinner, opacity) => {\n spinner.style.setProperty('opacity', opacity.toString());\n};\nconst handleScrollWhilePulling = (spinner, ticks, opacity, currentTickToShow) => {\n writeTask(() => {\n setSpinnerOpacity(spinner, opacity);\n ticks.forEach((el, i) => el.style.setProperty('opacity', (i <= currentTickToShow) ? '0.99' : '0'));\n });\n};\nconst handleScrollWhileRefreshing = (spinner, lastVelocityY) => {\n writeTask(() => {\n // If user pulls down quickly, the spinner should spin faster\n spinner.style.setProperty('--refreshing-rotation-duration', (lastVelocityY >= 1.0) ? '0.5s' : '2s');\n spinner.style.setProperty('opacity', '1');\n });\n};\nconst translateElement = (el, value) => {\n if (!el) {\n return Promise.resolve();\n }\n const trans = transitionEndAsync(el, 200);\n writeTask(() => {\n el.style.setProperty('transition', '0.2s all ease-out');\n if (value === undefined) {\n el.style.removeProperty('transform');\n }\n else {\n el.style.setProperty('transform', `translate3d(0px, ${value}, 0px)`);\n }\n });\n return trans;\n};\n// Utils\n// -----------------------------\nconst shouldUseNativeRefresher = (referenceEl, mode) => {\n const pullingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-pulling ion-spinner');\n const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');\n return (pullingSpinner !== null &&\n refreshingSpinner !== null &&\n ((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||\n mode === 'md'));\n};\nconst transitionEndAsync = (el, expectedDuration = 0) => {\n return new Promise(resolve => {\n transitionEnd(el, expectedDuration, resolve);\n });\n};\nconst transitionEnd = (el, expectedDuration = 0, callback) => {\n let unRegTrans;\n let animationTimeout;\n const opts = { passive: true };\n const ANIMATION_FALLBACK_TIMEOUT = 500;\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = (ev) => {\n if (ev === undefined || el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.addEventListener('transitionend', onTransitionEnd, opts);\n animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);\n unRegTrans = () => {\n if (animationTimeout) {\n clearTimeout(animationTimeout);\n animationTimeout = undefined;\n }\n el.removeEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.removeEventListener('transitionend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n\nconst refresherIosCss = \"ion-refresher{left:0;top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}[dir=rtl] ion-refresher,:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right: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}[dir=rtl] .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-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{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){ion-refresher.refresher-native ion-spinner{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.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.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}@-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)}}\";\n\nconst refresherMdCss = \"ion-refresher{left:0;top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}[dir=rtl] ion-refresher,:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right: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}[dir=rtl] .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-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{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #3880ff)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){ion-refresher.refresher-native ion-spinner{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}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{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #3880ff);font-size:12px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){ion-refresher.refresher-native .arrow-container ion-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}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{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;border-radius:100%;padding-left:8px;padding-right:8px;padding-top:8px;padding-bottom:8px;display:-ms-flexbox;display:flex;border:1px solid #ececec;background:white;-webkit-box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px}}\";\n\nconst Refresher = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\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.lastVelocityY = 0;\n this.animations = [];\n this.nativeRefresher = false;\n /**\n * The current state which the refresher is in. The refresher's states include:\n *\n * - `inactive` - The refresher is not being pulled down or refreshing and is currently hidden.\n * - `pulling` - The user is actively pulling down the refresher, but has not reached the point yet that if the user lets go, it'll refresh.\n * - `cancelling` - The user pulled down the refresher and let go, but did not pull down far enough to kick off the `refreshing` state. After letting go, the refresher is in the `cancelling` state while it is closing, and will go back to the `inactive` state once closed.\n * - `ready` - The user has pulled down the refresher far enough that if they let go, it'll begin the `refreshing` state.\n * - `refreshing` - The refresher is actively waiting on the async operation to end. Once the refresh handler calls `complete()` it will begin the `completing` state.\n * - `completing` - The `refreshing` state has finished and the refresher is in the way of closing itself. Once closed, the refresher will go back to the `inactive` state.\n */\n this.state = 1 /* Inactive */;\n /**\n * The minimum distance the user must pull down until the\n * refresher will go into the `refreshing` state.\n * Does not apply when the refresher content uses a spinner,\n * enabling the native refresher.\n */\n this.pullMin = 60;\n /**\n * The maximum distance of the pull until the refresher\n * will automatically go into the `refreshing` state.\n * Defaults to the result of `pullMin + 60`.\n * Does not apply when the refresher content uses a spinner,\n * enabling the native refresher.\n */\n this.pullMax = this.pullMin + 60;\n /**\n * Time it takes to close the refresher.\n * Does not apply when the refresher content uses a spinner,\n * enabling the native refresher.\n */\n this.closeDuration = '280ms';\n /**\n * Time it takes the refresher to to snap back to the `refreshing` state.\n * Does not apply when the refresher content uses a spinner,\n * enabling the native refresher.\n */\n this.snapbackDuration = '280ms';\n /**\n * How much to multiply the pull speed by. To slow the pull animation down,\n * pass a number less than `1`. To speed up the pull, pass a number greater\n * than `1`. The default value is `1` which is equal to the speed of the cursor.\n * If a negative value is passed in, the factor will be `1` instead.\n *\n * For example: If the value passed is `1.2` and the content is dragged by\n * `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels\n * (an increase of 20 percent). If the value passed is `0.8`, the dragged amount\n * will be `8` pixels, less than the amount the cursor has moved.\n *\n * Does not apply when the refresher content uses a spinner,\n * enabling the native refresher.\n */\n this.pullFactor = 1;\n /**\n * If `true`, the refresher will be hidden.\n */\n this.disabled = false;\n }\n disabledChanged() {\n if (this.gesture) {\n this.gesture.enable(!this.disabled);\n }\n }\n checkNativeRefresher() {\n const useNativeRefresher = 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);\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 /* 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 /* 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 /* Refreshing */) {\n const ratio = clamp(0, scrollTop / (refresherHeight * 0.5), 1);\n writeTask(() => setSpinnerOpacity(refreshingSpinner, 1 - ratio));\n return;\n }\n writeTask(() => setSpinnerOpacity(pullingSpinner, 0));\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 // delay showing the next tick marks until user has pulled 30px\n const opacity = clamp(0, Math.abs(scrollTop) / refresherHeight, 0.99);\n const pullAmount = this.progress = clamp(0, (Math.abs(scrollTop) - 30) / MAX_PULL, 1);\n const currentTickToShow = clamp(0, Math.floor(pullAmount * NUM_TICKS), NUM_TICKS - 1);\n const shouldShowRefreshingSpinner = this.state === 8 /* Refreshing */ || currentTickToShow === NUM_TICKS - 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: '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 /* Pulling */;\n handleScrollWhilePulling(pullingSpinner, ticks, opacity, currentTickToShow);\n }\n });\n };\n this.scrollEl.addEventListener('scroll', this.scrollListenerCallback);\n this.gesture = (await import('./index-f49d994d.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 /* 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('./index-f49d994d.js')).createGesture({\n el: this.scrollEl,\n gestureName: 'refresher',\n gesturePriority: 31,\n direction: 'y',\n threshold: 5,\n canStart: () => this.state !== 8 /* Refreshing */ && this.state !== 32 /* Completing */ && this.scrollEl.scrollTop === 0,\n onStart: (ev) => {\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 /* Pulling */;\n writeTask(() => {\n const animationType = getRefresherAnimationType(contentEl);\n const animation = createPullingAnimation(animationType, pullingRefresherIcon);\n ev.data.animation = animation;\n this.scrollEl.style.setProperty('--overflow', 'hidden');\n animation.progressStart(false, 0);\n this.ionStart.emit();\n this.animations.push(animation);\n });\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 writeTask(() => this.scrollEl.style.removeProperty('--overflow'));\n if (this.progress <= 0.4) {\n this.gesture.enable(false);\n ev.data.animation\n .progressEnd(0, this.progress, 500)\n .onFinish(() => {\n this.animations.forEach(ani => ani.destroy());\n this.animations = [];\n this.gesture.enable(true);\n this.state = 1 /* 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 });\n }\n });\n this.disabledChanged();\n }\n async setupNativeRefresher(contentEl) {\n if (this.scrollListenerCallback || !contentEl || this.nativeRefresher || !this.scrollEl) {\n return;\n }\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');\n if (!contentEl) {\n console.error('<ion-refresher> must be used inside an <ion-content>');\n return;\n }\n await contentEl.componentOnReady();\n this.scrollEl = await contentEl.getScrollElement();\n this.backgroundContentEl = getElementRoot(contentEl).querySelector('#background-content');\n if (shouldUseNativeRefresher(this.el, getIonMode(this))) {\n this.setupNativeRefresher(contentEl);\n }\n else {\n this.gesture = (await import('./index-f49d994d.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 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 /* Completing */)));\n }\n }\n else {\n this.close(32 /* 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 /* Cancelling */)));\n }\n }\n else {\n this.close(16 /* 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 /* 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 /* Inactive */;\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 && 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 /* _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 /* 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 /* 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 /* 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 /* 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 /* Ready */;\n return;\n }\n onEnd() {\n // only run in a zone when absolutely necessary\n if (this.state === 4 /* Ready */) {\n // they pulled down far enough, so it's ready to refresh\n this.beginRefresh();\n }\n else if (this.state === 2 /* 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 }\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 /* 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 this.state = 1 /* Inactive */;\n this.progress = 0;\n this.didStart = false;\n this.setCss(0, '0ms', false, '');\n }, 600);\n // reset set 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 // TODO: stop gesture\n }\n setCss(y, duration, overflowVisible, delay) {\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 }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { 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 /* Inactive */,\n 'refresher-pulling': this.state === 2 /* Pulling */,\n 'refresher-ready': this.state === 4 /* Ready */,\n 'refresher-refreshing': this.state === 8 /* Refreshing */,\n 'refresher-cancelling': this.state === 16 /* Cancelling */,\n 'refresher-completing': this.state === 32 /* Completing */,\n } }));\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"disabled\": [\"disabledChanged\"]\n }; }\n};\nRefresher.style = {\n ios: refresherIosCss,\n md: refresherMdCss\n};\n\nconst RefresherContent = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n componentWillLoad() {\n if (this.pullingIcon === undefined) {\n const mode = getIonMode(this);\n const overflowRefresher = this.el.style.webkitOverflowScrolling !== undefined ? 'lines' : 'arrow-down';\n this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && isPlatform('mobile') ? config.get('spinner', overflowRefresher) : 'circular');\n }\n if (this.refreshingSpinner === undefined) {\n const mode = getIonMode(this);\n this.refreshingSpinner = config.get('refreshingSpinner', config.get('spinner', mode === 'ios' ? 'lines' : 'circular'));\n }\n }\n render() {\n const pullingIcon = this.pullingIcon;\n const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;\n const mode = getIonMode(this);\n return (h(Host, { class: mode }, h(\"div\", { class: \"refresher-pulling\" }, this.pullingIcon && hasSpinner &&\n h(\"div\", { class: \"refresher-pulling-icon\" }, h(\"div\", { class: \"spinner-arrow-container\" }, h(\"ion-spinner\", { name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' &&\n h(\"div\", { class: \"arrow-container\" }, h(\"ion-icon\", { name: \"caret-back-sharp\" })))), this.pullingIcon && !hasSpinner &&\n h(\"div\", { class: \"refresher-pulling-icon\" }, h(\"ion-icon\", { icon: this.pullingIcon, lazy: false })), this.pullingText &&\n h(\"div\", { class: \"refresher-pulling-text\", innerHTML: sanitizeDOMString(this.pullingText) })), h(\"div\", { class: \"refresher-refreshing\" }, this.refreshingSpinner &&\n h(\"div\", { class: \"refresher-refreshing-icon\" }, h(\"ion-spinner\", { name: this.refreshingSpinner })), this.refreshingText &&\n h(\"div\", { class: \"refresher-refreshing-text\", innerHTML: sanitizeDOMString(this.refreshingText) }))));\n }\n get el() { return getElement(this); }\n};\n\nexport { Refresher as ion_refresher, RefresherContent as ion_refresher_content };\n"]} |