diff --git a/dist/cupertino-pane.esm.js b/dist/cupertino-pane.esm.js index a6411f82..ca3ae504 100644 --- a/dist/cupertino-pane.esm.js +++ b/dist/cupertino-pane.esm.js @@ -7,7 +7,7 @@ * * Released under the MIT License * - * Released on: November 9, 2021 + * Released on: November 11, 2021 */ /*! ***************************************************************************** @@ -426,10 +426,19 @@ class Events { return; } let newVal = this.instance.getPanelTransformY() + diffY; - // Patch for 'touchmove' first event - // when start slowly events with small velocity - if (this.steps.length < 2 && velocityY < 1) { - newVal = this.instance.getPanelTransformY() + (diffY * velocityY); + // First event after touchmove only + if (this.steps.length < 2) { + // Patch for 'touchmove' first event + // when start slowly events with small velocity + if (velocityY < 1) { + newVal = this.instance.getPanelTransformY() + (diffY * velocityY); + } + // Move while transition patch next transitions + let computedTranslateY = new WebKitCSSMatrix(window.getComputedStyle(this.instance.paneEl).transform).m42; + let transitionYDiff = computedTranslateY - this.instance.getPanelTransformY(); + if (Math.abs(transitionYDiff)) { + newVal += transitionYDiff; + } } // Detect if input was blured // TODO: Check that blured from pane child instance @@ -1335,7 +1344,7 @@ class CupertinoPane { this.followerEl = document.querySelector(this.settings.followerElement); this.followerEl.style.willChange = 'transform, border-radius'; this.followerEl.style.transform = `translateY(0px) translateZ(0px)`; - this.followerEl.style.transition = `all ${this.settings.animationDuration}ms ${this.getTimingFunction((_a = this.settings.breaks[this.currentBreak()]) === null || _a === void 0 ? void 0 : _a.bounce)} 0s`; + this.followerEl.style.transition = this.buildTransitionValue((_a = this.settings.breaks[this.currentBreak()]) === null || _a === void 0 ? void 0 : _a.bounce); } // Assign multiplicators for push elements if (this.settings.zStack) { @@ -1469,8 +1478,11 @@ class CupertinoPane { /** * Private Utils methods */ - getTimingFunction(bounce) { - return bounce ? 'cubic-bezier(0.175, 0.885, 0.370, 1.120)' : this.settings.animationType; + buildTransitionValue(bounce) { + if (bounce) { + return `all 300ms cubic-bezier(.155,1.105,.295,1.12)`; + } + return `all ${this.settings.animationDuration}ms ${this.settings.animationType}`; } isBackdropPresented() { return document.querySelector(`.cupertino-pane-wrapper .backdrop`) @@ -1835,12 +1847,11 @@ class CupertinoPane { // Get timing function && push for next const nextBreak = Object.entries(this.breakpoints.breaks).find(val => val[1] === params.translateY); let bounce = nextBreak && ((_a = this.settings.breaks[nextBreak[0]]) === null || _a === void 0 ? void 0 : _a.bounce); - const timingForNext = this.getTimingFunction(bounce); // style - this.paneEl.style.transition = `transform ${this.settings.animationDuration}ms ${timingForNext} 0s`; + this.paneEl.style.transition = this.buildTransitionValue(bounce); // Bind for follower same transitions if (this.followerEl) { - this.followerEl.style.transition = `transform ${this.settings.animationDuration}ms ${timingForNext} 0s`; + this.followerEl.style.transition = this.buildTransitionValue(bounce); } // Push transition if (this.settings.zStack) { diff --git a/dist/cupertino-pane.esm.min.js b/dist/cupertino-pane.esm.min.js index ce67cb17..f1992ef7 100644 --- a/dist/cupertino-pane.esm.min.js +++ b/dist/cupertino-pane.esm.min.js @@ -7,7 +7,7 @@ * * Released under the MIT License * - * Released on: November 9, 2021 + * Released on: November 11, 2021 */ /*! ***************************************************************************** @@ -24,5 +24,5 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ -function __awaiter(t,e,s,i){return new(s||(s=Promise))((function(n,r){function o(t){try{h(i.next(t))}catch(t){r(t)}}function a(t){try{h(i.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(o,a)}h((i=i.apply(t,e||[])).next())}))}class Support{static get touch(){return window.Modernizr&&!0===window.Modernizr.touch||!!(window.navigator.maxTouchPoints>0||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch)}static get observer(){return"MutationObserver"in window||"WebkitMutationObserver"in window}static get backdropFilter(){return CSS.supports("backdrop-filter","blur(0px)")||CSS.supports("-webkit-backdrop-filter","blur(0px)")}static get passiveListener(){let t=!1;try{const e=Object.defineProperty({},"passive",{get(){t=!0}});window.addEventListener("testPassiveListener",null,e)}catch(t){}return t}static get gestures(){return"ongesturestart"in window}static get pointerEvents(){return!!window.PointerEvent&&"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0}}class Device{constructor(){this.ios=!1,this.android=!1,this.androidChrome=!1,this.desktop=!1,this.iphone=!1,this.ipod=!1,this.ipad=!1,this.edge=!1,this.ie=!1,this.firefox=!1,this.macos=!1,this.windows=!1,this.cordova=!(!window.cordova&&!window.phonegap),this.phonegap=!(!window.cordova&&!window.phonegap),this.electron=!1,this.ionic=!!document.querySelector("ion-app");const t=window.navigator.platform,e=window.navigator.userAgent,s=window.screen.width,i=window.screen.height;let n=e.match(/(Android);?[\s\/]+([\d.]+)?/),r=e.match(/(iPad).*OS\s([\d_]+)/),o=e.match(/(iPod)(.*OS\s([\d_]+))?/),a=!this.ipad&&e.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h=e.indexOf("MSIE ")>=0||e.indexOf("Trident/")>=0,l=e.indexOf("Edge/")>=0,p=e.indexOf("Gecko/")>=0&&e.indexOf("Firefox/")>=0,c="Win32"===t,d=e.toLowerCase().indexOf("electron")>=0,u="MacIntel"===t;!r&&u&&Support.touch&&(1024===s&&1366===i||834===s&&1194===i||834===s&&1112===i||768===s&&1024===i)&&(r=e.match(/(Version)\/([\d.]+)/),u=!1),this.ie=h,this.edge=l,this.firefox=p,n&&!c&&(this.os="android",this.osVersion=n[2],this.android=!0,this.androidChrome=e.toLowerCase().indexOf("chrome")>=0),(r||a||o)&&(this.os="ios",this.ios=!0),a&&!o&&(this.osVersion=a[2].replace(/_/g,"."),this.iphone=!0),r&&(this.osVersion=r[2].replace(/_/g,"."),this.ipad=!0),o&&(this.osVersion=o[3]?o[3].replace(/_/g,"."):null,this.ipod=!0),this.ios&&this.osVersion&&e.indexOf("Version/")>=0&&"10"===this.osVersion.split(".")[0]&&(this.osVersion=e.toLowerCase().split("version/")[1].split(" ")[0]),this.webView=!(!(a||r||o)||!e.match(/.*AppleWebKit(?!.*Safari)/i)&&!window.navigator.standalone)||window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches,this.webview=this.webView,this.standalone=this.webView,this.desktop=!(this.ios||this.android)||d,this.desktop&&(this.electron=d,this.macos=u,this.windows=c,this.macos&&(this.os="macos"),this.windows&&(this.os="windows")),this.pixelRatio=window.devicePixelRatio||1}}class Events{constructor(t,e,s,i){this.instance=t,this.settings=e,this.device=s,this.breakpoints=i,this.allowClick=!0,this.disableDragAngle=!1,this.pointerDown=!1,this.contentScrollTop=0,this.steps=[],this.inputBluredbyMove=!1,this.keyboardVisible=!1,this.isScrolling=!1,this.touchEvents=(()=>{const t=["touchstart","touchmove","touchend","touchcancel"];let e=["mousedown","mousemove","mouseup"];Support.pointerEvents&&(e=["pointerdown","pointermove","pointerup"]);const s={start:t[0],move:t[1],end:t[2],cancel:t[3]},i={start:e[0],move:e[1],end:e[2]};return Support.touch||!this.settings.simulateTouch?s:i})(),this.touchStartCb=t=>this.touchStart(t),this.touchMoveBackdropCb=t=>this.touchMoveBackdrop(t),this.touchMoveCb=t=>this.touchMove(t),this.touchEndCb=t=>this.touchEnd(t),this.onScrollCb=t=>this.onScroll(t),this.onClickCb=t=>this.onClick(t),this.onKeyboardShowCb=t=>this.onKeyboardShow(t),this.onKeyboardWillHideCb=t=>this.onKeyboardWillHide(t),this.onKeyboardDidHideCb=t=>this.onKeyboardDidHide(t),this.onWindowResizeCb=t=>this.onWindowResize(t)}attachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("addEventListener",e)})):this.eventListeners("addEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.addEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.addEventListener("keyboardWillShow",this.onKeyboardShowCb),window.addEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.addEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),!this.settings.handleKeyboard&&this.device.cordova&&this.device.android&&window.addEventListener("keyboardWillHide",(()=>{this.instance.parentEl.scrollTop=0,this.instance.parentEl.parentElement&&(this.instance.parentEl.parentElement.scrollTop=0,this.instance.parentEl.parentElement.parentElement&&(this.instance.parentEl.parentElement.parentElement.scrollTop=0))})),window.addEventListener("resize",this.onWindowResizeCb)}detachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("removeEventListener",e)})):this.eventListeners("removeEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.removeEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.removeEventListener("keyboardWillShow",this.onKeyboardShowCb),window.removeEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.removeEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),window.removeEventListener("resize",this.onWindowResizeCb)}resetEvents(){this.detachAllEvents(),this.attachAllEvents()}eventListeners(t,e){var s,i,n;if(!Support.touch&&Support.pointerEvents)e[t](this.touchEvents.start,this.touchStartCb,!1),e[t](this.touchEvents.move,this.touchMoveCb,!1),e[t](this.touchEvents.end,this.touchEndCb,!1),null===(s=this.instance.backdropEl)||void 0===s||s[t](this.touchEvents.move,this.touchMoveBackdropCb,!1);else{if(Support.touch){const s=!("touchstart"!==this.touchEvents.start||!Support.passiveListener||!this.settings.passiveListeners)&&{passive:!0,capture:!1};e[t](this.touchEvents.start,this.touchStartCb,s),e[t](this.touchEvents.move,this.touchMoveCb,!!Support.passiveListener&&{passive:!1,capture:!1}),e[t](this.touchEvents.end,this.touchEndCb,s),null===(i=this.instance.backdropEl)||void 0===i||i[t](this.touchEvents.move,this.touchMoveBackdropCb,!!Support.passiveListener&&{passive:!1,capture:!1}),this.touchEvents.cancel&&e[t](this.touchEvents.cancel,this.touchEndCb,s)}(this.settings.simulateTouch&&!this.device.ios&&!this.device.android||this.settings.simulateTouch&&!Support.touch&&this.device.ios)&&(e[t]("mousedown",this.touchStartCb,!1),e[t]("mousemove",this.touchMoveCb,!1),e[t]("mouseup",this.touchEndCb,!1),null===(n=this.instance.backdropEl)||void 0===n||n[t]("mousemove",this.touchMoveBackdropCb,!1))}this.settings.preventClicks&&e[t]("click",this.onClickCb,!0)}touchStart(t){if(this.settings.onDragStart(t),this.allowClick=!0,this.instance.disableDragEvents)return;this.disableDragAngle=!1,this.isScrolling=!1,this.instance.preventedDismiss=!1;const{clientY:e,clientX:s}=this.getEvetClientYX(t,"touchstart");this.startY=e,this.startX=s,"mousedown"===t.type&&(this.pointerDown=!0),this.contentScrollTop&&this.willScrolled(t)&&(this.startY+=this.contentScrollTop),this.steps.push({posY:this.startY,time:Date.now()})}touchMoveBackdrop(t){this.settings.touchMoveStopPropagation&&t.stopPropagation()}touchMove(t){var e;const{clientY:s,clientX:i,velocityY:n}=this.getEvetClientYX(t,"touchmove");if(t.delta=(null===(e=this.steps[0])||void 0===e?void 0:e.posY)-s,this.settings.onDrag(t),this.allowClick=!1,this.isFormElement(t.target)&&this.isElementScrollable(t.target))return;if(this.instance.disableDragEvents)return void(this.steps=[]);if(this.disableDragAngle)return;if(this.instance.preventedDismiss)return;if(this.settings.touchMoveStopPropagation&&t.stopPropagation(),"mousemove"===t.type&&!this.pointerDown)return;const r=s-this.steps[this.steps.length-1].posY;if(!Math.abs(r))return;let o=this.instance.getPanelTransformY()+r;if(this.steps.length<2&&n<1&&(o=this.instance.getPanelTransformY()+r*n),this.steps.length>2&&this.isFormElement(document.activeElement)&&!this.isFormElement(t.target)&&(document.activeElement.blur(),this.inputBluredbyMove=!0),this.settings.touchAngle&&!this.isScrolling){let t;const e=i-this.startX,n=s-this.startY;if(t=180*Math.atan2(Math.abs(n),Math.abs(e))/Math.PI,e*e+n*n>=25&&90-t>this.settings.touchAngle&&1===this.steps.length)return void(this.disableDragAngle=!0)}if("auto"===this.instance.overflowEl.style.overflowY){if(this.settings.inverse&&this.willScrolled(t))return void(this.contentScrollTop=0);if(!this.settings.inverse&&this.contentScrollTop>0)return}let a=this.handleTopperLowerPositions(o,r);if(a&&(o=a),this.instance.getPanelTransformY()!==o){if(!this.instance.preventedDismiss&&this.instance.preventDismissEvent&&this.settings.bottomClose){let t=(-this.breakpoints.topper+this.breakpoints.topper-this.instance.getPanelTransformY())/this.breakpoints.topper/-8;if(o=this.instance.getPanelTransformY()+r*(.5-t),-1*(s-220-this.instance.screen_height)<=this.instance.screen_height-this.breakpoints.bottomer)return this.instance.preventedDismiss=!0,this.settings.onWillDismiss({prevented:!0}),void this.instance.moveToBreak(this.breakpoints.prevBreakpoint)}this.instance.checkOpacityAttr(o),this.instance.checkOverflowAttr(o),this.instance.doTransition({type:"move",translateY:o}),this.steps.push({posY:s,time:Date.now()})}}touchEnd(t){var e,s;if(this.instance.disableDragEvents)return;"mouseup"===t.type&&(this.pointerDown=!1);let i=this.breakpoints.getClosestBreakY();const n=(null===(e=this.steps[this.steps.length-1])||void 0===e?void 0:e.posY)-(null===(s=this.steps[this.steps.length-2])||void 0===s?void 0:s.posY),r=window.hasOwnProperty("cordova")?this.settings.fastSwipeSensivity+2:this.settings.fastSwipeSensivity;if(Math.abs(n)>=r&&(i=this.instance.swipeNextPoint(n,r,i),this.settings.fastSwipeClose&&this.breakpoints.currentBreakpointthis.fixAndroidResize()),20),this.keyboardVisible=!0,this.breakpoints.prevBreakpoint=Object.entries(this.breakpoints.breaks).find((t=>t[1]===this.instance.getPanelTransformY()))[0];let e=this.settings.breaks[this.instance.currentBreak()].height+t.keyboardHeight;window.matchMedia("(orientation: landscape)").matches&&(e=this.instance.screen_height),e>this.instance.screen_height-80&&(e=this.instance.screen_height-80),e-50>=this.settings.breaks[this.instance.currentBreak()].height&&this.instance.moveToHeight(e)}onKeyboardWillHide(t){this.keyboardVisible&&this.isOnViewport()&&(this.device.android&&this.fixAndroidResize(),this.inputBluredbyMove?this.inputBluredbyMove=!1:this.instance.isHidden()||this.instance.moveToBreak(this.breakpoints.prevBreakpoint))}onKeyboardDidHide(t){this.keyboardVisible=!1}onWindowResize(t){return __awaiter(this,void 0,void 0,(function*(){this.keyboardVisible||(yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.instance.updateScreenHeights(),this.breakpoints.buildBreakpoints(JSON.parse(this.breakpoints.lockedBreakpoints)))}))}handleTopperLowerPositions(t,e){if(!this.settings.inverse){if(!this.settings.upperThanTop&&t<=this.breakpoints.topper)return this.breakpoints.topper;if(t<=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.lowerThanBottom&&t>=this.breakpoints.bottomer)return this.breakpoints.bottomer}if(this.settings.inverse){if(t>=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.upperThanTop&&t>=this.breakpoints.topper)return this.breakpoints.topper}}getEvetClientYX(t,e){var s,i;const n=t.type===e&&t.targetTouches&&(t.targetTouches[0]||t.changedTouches[0]),r=t.type===e?n.clientY:t.clientY,o=t.type===e?n.clientX:t.clientX,a=Date.now()-((null===(s=this.steps[this.steps.length-1])||void 0===s?void 0:s.time)||0);return{clientY:r,clientX:o,velocityY:Math.abs(r-((null===(i=this.steps[this.steps.length-1])||void 0===i?void 0:i.posY)||0))/a}}fixAndroidResize(){this.instance.paneEl&&(document.querySelector("ion-app"),window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="100%",this.instance.paneEl.style.position="absolute",window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="unset",this.instance.paneEl.style.position="fixed"}))})))}willScrolled(t){return!(!this.isElementScrollable(this.instance.overflowEl)||"hidden"===this.instance.overflowEl.style.overflow)}isPaneDescendant(t){let e=t.parentNode;for(;null!=e;){if(e==this.instance.paneEl)return!0;e=e.parentNode}return!1}isFormElement(t){return!!(t&&t.tagName&&["input","select","option","textarea","button","label"].includes(t.tagName.toLowerCase()))}isElementScrollable(t){return t.scrollHeight>t.clientHeight}isOnViewport(){return!this.instance.paneEl||0!==this.instance.paneEl.offsetWidth||0!==this.instance.paneEl.offsetHeight}}class Settings{constructor(){this.instance={initialBreak:"middle",inverse:!1,parentElement:null,followerElement:null,cssClass:null,fitHeight:!1,maxFitHeight:null,fitScreenHeight:!0,backdrop:!1,backdropOpacity:.4,animationType:"ease",animationDuration:300,dragBy:null,bottomOffset:0,bottomClose:!1,fastSwipeClose:!1,fastSwipeSensivity:3,freeMode:!1,buttonDestroy:!0,buttonClose:!0,topperOverflow:!0,topperOverflowOffset:0,lowerThanBottom:!0,upperThanTop:!1,showDraggable:!0,draggableOver:!1,clickBottomOpen:!0,preventClicks:!0,handleKeyboard:!0,simulateTouch:!0,passiveListeners:!0,touchMoveStopPropagation:!1,touchAngle:45,breaks:{},zStack:null,onDidDismiss:()=>{},onWillDismiss:()=>{},onDidPresent:()=>{},onWillPresent:()=>{},onDragStart:()=>{},onDrag:()=>{},onDragEnd:()=>{},onBackdropTap:()=>{},onTransitionStart:()=>{},onTransitionEnd:()=>{}}}}class Breakpoints{constructor(t,e){this.instance=t,this.settings=e,this.breaks={},this.calcHeightInProcess=!1,this.brs=[],this.defaultBreaksConf={top:{enabled:!0,height:window.innerHeight-47.25},middle:{enabled:!0,height:300},bottom:{enabled:!0,height:100}}}buildBreakpoints(t,e=0){var s,i,n,r,o;return __awaiter(this,void 0,void 0,(function*(){if(this.settings.bottomOffset=e||this.settings.bottomOffset,this.breaks={top:this.instance.screenHeightOffset,middle:this.instance.screenHeightOffset,bottom:this.instance.screenHeightOffset},this.settings.fitHeight){this.settings.fitScreenHeight=!1,this.settings.initialBreak="top",this.settings.topperOverflow=!1;let e=yield this.getPaneFitHeight();this.settings.maxFitHeight&&e>this.settings.maxFitHeight&&(e=this.settings.maxFitHeight,this.settings.topperOverflow=!0),(t={top:{enabled:!0,height:e},middle:{enabled:!1}}).top.bounce=null===(i=null===(s=this.settings.breaks)||void 0===s?void 0:s.top)||void 0===i?void 0:i.bounce,t.bottom=(null===(n=this.settings.breaks)||void 0===n?void 0:n.bottom)||{enabled:!0,height:0}}if(["top","middle","bottom"].forEach((e=>{var s;this.breaks[e]-=this.settings.bottomOffset,this.settings.breaks[e]||(this.settings.breaks[e]=this.defaultBreaksConf[e]),t&&t[e]&&(this.settings.breaks[e]=t[e]),this.settings.fitScreenHeight&&((null===(s=this.settings.breaks[e])||void 0===s?void 0:s.height)>this.instance.screen_height&&(this.settings.breaks[e].height=this.instance.screen_height-this.settings.bottomOffset),this.settings.breaks.top&&this.settings.breaks.middle&&this.settings.breaks.top.height-50<=this.settings.breaks.middle.height&&(this.settings.breaks.middle.enabled=!1,this.settings.initialBreak="top")),this.settings.fitHeight&&"top"===e&&(this.settings.breaks[e].height>this.instance.screen_height?(this.settings.breaks[e].height=this.instance.screen_height-2*this.settings.bottomOffset,this.settings.topperOverflow=!0):this.instance.overflowEl&&!this.settings.maxFitHeight&&(this.settings.topperOverflow=!1,this.instance.overflowEl.style.overflowY="hidden")),this.settings.breaks[e]&&this.settings.breaks[e].enabled&&this.settings.breaks[e].height&&(this.settings.inverse?this.breaks[e]=this.settings.breaks[e].height+this.settings.bottomOffset:this.breaks[e]-=this.settings.breaks[e].height)})),this.lockedBreakpoints||(this.lockedBreakpoints=JSON.stringify(this.settings.breaks)),this.instance.isPanePresented()||this.settings.breaks[this.settings.initialBreak].enabled||console.warn("Cupertino Pane: Please set initialBreak for enabled breakpoint"),this.settings.breaks.middle.height>=this.settings.breaks.top.height&&console.warn("Cupertino Pane: Please set middle height lower than top height"),this.settings.breaks.middle.height<=this.settings.breaks.bottom.height&&console.warn("Cupertino Pane: Please set bottom height lower than middle height"),this.brs=[],["top","middle","bottom"].forEach((t=>{this.settings.breaks[t].enabled&&this.brs.push(this.breaks[t])})),this.topper=this.brs.reduce(((t,e)=>eMath.abs(e)>Math.abs(t)?e:t)),this.settings.inverse&&(this.topper=this.bottomer),this.instance.isPanePresented()||(this.currentBreakpoint=this.breaks[this.settings.initialBreak],!this.settings.inverse||this.settings.breaks.bottom.enabled||this.settings.breaks.middle.enabled||(this.settings.topperOverflow=!1)),this.instance.isPanePresented()){if((null===(r=this.settings.breaks[this.prevBreakpoint])||void 0===r?void 0:r.enabled)&&(this.instance.isHidden()||this.instance.moveToBreak(this.prevBreakpoint)),!(null===(o=this.settings.breaks[this.prevBreakpoint])||void 0===o?void 0:o.enabled)){let t=this.instance.swipeNextPoint(1,1,this.getClosestBreakY());const e=Object.entries(this.breaks).find((e=>e[1]===t));this.instance.moveToBreak(e[0])}this.instance.paneEl.style.top=this.settings.inverse?`-${this.bottomer-this.settings.bottomOffset}px`:"unset",this.instance.paneEl.style.height=`${this.instance.getPaneHeight()}px`,this.instance.scrollElementInit(),this.instance.checkOpacityAttr(this.currentBreakpoint),this.instance.checkOverflowAttr(this.currentBreakpoint)}}))}getCurrentBreakName(){return this.breaks.top===this.currentBreakpoint?"top":this.breaks.middle===this.currentBreakpoint?"middle":this.breaks.bottom===this.currentBreakpoint?"bottom":null}getPaneFitHeight(){return __awaiter(this,void 0,void 0,(function*(){this.calcHeightInProcess=!0;let t,e=this.instance.el.querySelectorAll("img");this.instance.el.style.height="unset",this.instance.rendered||(this.instance.el.style.visibility="hidden",this.instance.el.style.pointerEvents="none",this.instance.el.style.display="block",this.instance.wrapperEl.style.visibility="hidden",this.instance.wrapperEl.style.pointerEvents="none",this.instance.wrapperEl.style.display="block");let s=[];e.length&&(s=Array.from(e).map((t=>new Promise((e=>{t.complete&&t.naturalHeight?e(!0):t.onload=()=>e(!0)}))))),s.push(new Promise((t=>setTimeout((()=>t(!0)),this.instance.rendered?0:150)))),yield Promise.all(s);let i=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("height")),n=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-top"))+parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-bottom")),r=parseInt(document.defaultView.getComputedStyle(this.instance.el.parentElement,"").getPropertyValue("padding-bottom"));return t=i+n,t+=this.instance.el.offsetTop,t+=r,this.instance.rendered||(this.instance.el.style.visibility="unset",this.instance.el.style.pointerEvents="unset",this.instance.el.style.display="none",this.instance.wrapperEl.style.visibility="unset",this.instance.wrapperEl.style.pointerEvents="unset",this.instance.wrapperEl.style.display="none"),this.calcHeightInProcess=!1,t}))}getClosestBreakY(){return this.brs.reduce(((t,e)=>Math.abs(e-this.instance.getPanelTransformY()){let i={},n={};if(this.settings.inverse?(i.top=this.breakpoints.breaks.bottom,i.middle=this.breakpoints.breaks.middle,i.bottom=this.breakpoints.breaks.top,n.top=Object.assign({},this.settings.breaks.bottom),n.middle=Object.assign({},this.settings.breaks.middle),n.bottom=Object.assign({},this.settings.breaks.top)):(i=Object.assign({},this.breakpoints.breaks),n=Object.assign({},this.settings.breaks)),this.breakpoints.currentBreakpoint===i.top){if(t>e){if(n.middle.enabled)return i.middle;if(n.bottom.enabled)return i.middlee&&n.bottom.enabled?i.bottom:i.middle;if(this.breakpoints.currentBreakpoint===i.bottom){if(t<-e){if(n.middle.enabled)return i.middle>s?s:i.middle;if(n.top.enabled)return i.top}return i.bottom}return s},t instanceof HTMLElement?this.selector=t:this.selector=document.querySelector(t),this.selector?this.isPanePresented()?console.error("Cupertino Pane: specified selector or DOM element already in use",this.selector):(this.el=this.selector,this.el.style.display="none",this.settings=Object.assign(Object.assign({},this.settings),e),this.settings.parentElement?this.settings.parentElement=document.querySelector(this.settings.parentElement):this.settings.parentElement=this.el.parentElement,this.breakpoints=new Breakpoints(this,this.settings),this.events=new Events(this,this.settings,this.device,this.breakpoints)):console.warn("Cupertino Pane: wrong selector or DOM element specified",this.selector)}drawBaseElements(){this.parentEl=this.settings.parentElement,this.wrapperEl=document.createElement("div"),this.wrapperEl.classList.add("cupertino-pane-wrapper"),this.settings.inverse&&this.wrapperEl.classList.add("inverse"),this.settings.cssClass&&(this.wrapperEl.className+=` ${this.settings.cssClass}`);let t="";t+="\n .cupertino-pane-wrapper {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n }\n ",this.paneEl=document.createElement("div"),this.paneEl.style.transform=`translateY(${this.screenHeightOffset}px) translateZ(0px)`,this.paneEl.classList.add("pane"),t+="\n .cupertino-pane-wrapper .pane {\n position: fixed;\n z-index: 11;\n width: 100%;\n max-width: 500px;\n left: 0px;\n right: 0px;\n margin-left: auto;\n margin-right: auto;\n background: var(--cupertino-pane-background, #ffffff);\n color: var(--cupertino-pane-color, #333333);\n box-shadow: var(--cupertino-pane-shadow, 0 4px 16px rgba(0,0,0,.12));\n will-change: transform;\n padding-top: 15px; \n border-radius: var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px) \n 0 0;\n }\n .cupertino-pane-wrapper.inverse .pane {\n padding-bottom: 15px; \n border-radius: 0 0 20px 20px;\n border-radius: 0 0\n var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px);\n }\n ",this.draggableEl=document.createElement("div"),this.draggableEl.classList.add("draggable"),this.settings.draggableOver&&this.draggableEl.classList.add("over"),t+="\n .cupertino-pane-wrapper .draggable {\n padding: 5px;\n position: absolute;\n left: 0;\n right: 0;\n margin-left: auto;\n margin-right: auto;\n height: 30px;\n z-index: 12;\n top: 0;\n bottom: initial;\n }\n .cupertino-pane-wrapper .draggable.over {\n top: -30px;\n padding: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable {\n bottom: 0;\n top: initial;\n }\n .cupertino-pane-wrapper.inverse .draggable.over {\n bottom: -30px;\n top: initial;\n }\n ",this.moveEl=document.createElement("div"),this.moveEl.classList.add("move"),t+=`\n .cupertino-pane-wrapper .move {\n margin: 0 auto;\n height: 5px;\n background: var(--cupertino-pane-move-background, #c0c0c0);\n width: 36px;\n border-radius: 4px;\n }\n .cupertino-pane-wrapper .draggable.over .move {\n width: 70px; \n background: var(--cupertino-pane-move-background, rgba(225, 225, 225, 0.6));\n ${Support.backdropFilter?"\n backdrop-filter: saturate(180%) blur(20px);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n ":""}\n }\n .cupertino-pane-wrapper.inverse .move {\n margin-top: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable.over .move {\n margin-top: -5px;\n }\n `,this.destroyButtonEl=document.createElement("div"),this.destroyButtonEl.classList.add("destroy-button"),t+="\n .cupertino-pane-wrapper .destroy-button {\n width: 26px;\n height: 26px;\n position: absolute;\n background: var(--cupertino-pane-destroy-button-background, #ebebeb);\n fill: var(--cupertino-pane-icon-close-color, #7a7a7e);\n right: 20px;\n z-index: 14;\n border-radius: 100%;\n top: 16px;\n }\n ",this.contentEl=this.el,this.contentEl.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.contentEl.style.overflowX="hidden",t+="\n .cupertino-pane-wrapper .backdrop {\n overflow: hidden;\n position: fixed;\n width: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n top: 0;\n display: none;\n z-index: 10;\n }\n ",this.addStyle(t),this.parentEl.appendChild(this.wrapperEl),this.wrapperEl.appendChild(this.paneEl),this.paneEl.appendChild(this.contentEl),this.settings.showDraggable&&(this.paneEl.appendChild(this.draggableEl),this.draggableEl.appendChild(this.moveEl))}present(t={animate:!1}){var e;return __awaiter(this,void 0,void 0,(function*(){if(this.el)if(this.isPanePresented()&&this.rendered)this.moveToBreak(this.settings.initialBreak);else{if(!this.isPanePresented()||this.rendered){if(this.settings.onWillPresent(),this.updateScreenHeights(),this.drawBaseElements(),yield this.setBreakpoints(),this.paneEl.style.height=`${this.getPaneHeight()}px`,this.settings.inverse&&(this.paneEl.style.top=`-${this.breakpoints.bottomer-this.settings.bottomOffset}px`),this.wrapperEl.style.display="block",this.contentEl.style.display="block",this.wrapperEl.classList.add("rendered"),this.rendered=!0,this.settings.followerElement){if(!document.querySelector(this.settings.followerElement))return void console.warn("Cupertino Pane: wrong follower element selector specified",this.settings.followerElement);this.followerEl=document.querySelector(this.settings.followerElement),this.followerEl.style.willChange="transform, border-radius",this.followerEl.style.transform="translateY(0px) translateZ(0px)",this.followerEl.style.transition=`all ${this.settings.animationDuration}ms ${this.getTimingFunction(null===(e=this.settings.breaks[this.currentBreak()])||void 0===e?void 0:e.bounce)} 0s`}return this.settings.zStack&&(this.setZstackConfig(this.settings.zStack),this.setPushMultiplicators()),this.settings.buttonClose&&this.settings.buttonDestroy&&!this.settings.inverse&&(this.paneEl.appendChild(this.destroyButtonEl),this.destroyButtonEl.addEventListener("click",(t=>this.destroy({animate:!0,destroyButton:!0}))),this.destroyButtonEl.innerHTML='\n \n '),this.settings.bottomClose&&(this.settings.breaks.bottom.enabled=!0),this.settings.freeMode&&(this.settings.lowerThanBottom=!1),this.settings.backdrop&&this.renderBackdrop(),this.checkOpacityAttr(this.breakpoints.currentBreakpoint),this.device.android&&(document.body.style.overscrollBehaviorY="none"),t.animate?yield this.doTransition({type:"present",translateY:this.breakpoints.breaks[this.settings.initialBreak]}):(this.breakpoints.prevBreakpoint=this.settings.initialBreak,this.paneEl.style.transform=`translateY(${this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`,this.settings.backdrop&&(this.backdropEl.style.display="block"),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.breakpoints.breaks[this.settings.initialBreak],"unset"))),this.settings.onDidPresent()),yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.scrollElementInit(),this.checkOverflowAttr(this.breakpoints.currentBreakpoint),this.events.attachAllEvents(),this}console.warn("Cupertino Pane: specified selector or DOM element already in use",this.selector)}}))}getPaneHeight(){return this.settings.inverse?this.breakpoints.bottomer-this.settings.bottomOffset:this.screen_height-this.breakpoints.topper-this.settings.bottomOffset}updateScreenHeights(){this.settings.inverse?(this.screen_height=window.innerHeight,this.screenHeightOffset=0):(this.screen_height=window.innerHeight,this.screenHeightOffset=window.innerHeight)}scrollElementInit(){let t=this.el.querySelectorAll("[overflow-y]");!t.length||t.length>1?this.overflowEl=this.contentEl:(this.overflowEl=t[0],this.overflowEl.style.overflowX="hidden"),this.settings.topperOverflow&&(this.settings.upperThanTop&&console.warn('Cupertino Pane: "upperThanTop" allowed for disabled "topperOverflow"'),this.setOverflowHeight())}setOverflowHeight(t=0){this.settings.inverse?this.overflowEl.style.height=this.getPaneHeight()-30-this.settings.topperOverflowOffset-this.overflowEl.offsetTop+"px":this.overflowEl.style.height=this.getPaneHeight()-this.settings.topperOverflowOffset-this.overflowEl.offsetTop-t+"px"}checkOpacityAttr(t){let e=this.el.querySelectorAll("[hide-on-bottom]");e.length&&(this.settings.inverse||e.forEach((e=>{e.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,e.style.opacity=t>=this.breakpoints.breaks.bottom?"0":"1"})))}checkOverflowAttr(t){this.settings.topperOverflow&&this.overflowEl&&(this.settings.inverse?this.overflowEl.style.overflowY=t>=this.breakpoints.bottomer?"auto":"hidden":this.overflowEl.style.overflowY=t<=this.breakpoints.topper?"auto":"hidden")}isPanePresented(){let t=Array.from(document.querySelectorAll(".cupertino-pane-wrapper.rendered"));return!!t.length&&!!t.find((t=>t.contains(this.selector)))}getTimingFunction(t){return t?"cubic-bezier(0.175, 0.885, 0.370, 1.120)":this.settings.animationType}isBackdropPresented(){return!!document.querySelector(".cupertino-pane-wrapper .backdrop")}renderBackdrop(){this.backdropEl=document.createElement("div"),this.backdropEl.classList.add("backdrop"),this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`,this.wrapperEl.appendChild(this.backdropEl),this.backdropEl.addEventListener("click",(t=>this.settings.onBackdropTap()))}addStyle(t){if(document.querySelector("#cupertino-panes-internal"))return;const e=document.createElement("style");e.id="cupertino-panes-internal",t=t.replace(/\s\s+/g," "),e.textContent=t,document.head.prepend(e)}setPushMultiplicators(){this.settings.zStack.pushElements.forEach((t=>{let e=document.querySelector(t),s=this.getPushMulitplicator(e);s=s?s+1:1,e.style.setProperty("--push-multiplicator",`${s}`)}))}clearPushMultiplicators(){for(let t=0;t{this.backdropEl.style.transition="initial",this.backdropEl.style.display="none",this.backdropEl.removeEventListener("transitionend",e)};if(this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",t.show)this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50);else{if("none"===this.backdropEl.style.display)return;this.backdropEl.addEventListener("transitionend",e)}}getPanelTransformY(){return parseFloat(/\.*translateY\((.*)px\)/i.exec(this.paneEl.style.transform)[1])}preventDismiss(t=!1){this.preventDismissEvent=t}disableDrag(){this.disableDragEvents=!0}enableDrag(){this.disableDragEvents=!1}setBreakpoints(t,e){return __awaiter(this,void 0,void 0,(function*(){!this.isPanePresented()||t?yield this.breakpoints.buildBreakpoints(t,e):console.warn("Cupertino Pane: Provide any breaks configuration")}))}calcFitHeight(){return __awaiter(this,void 0,void 0,(function*(){return this.wrapperEl&&this.el?this.breakpoints.calcHeightInProcess?(console.warn("Cupertino Pane: calcFitHeight() already in process"),null):void(yield this.breakpoints.buildBreakpoints(this.breakpoints.lockedBreakpoints)):null}))}moveToBreak(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToBreak()"),null;this.settings.breaks[t].enabled?(this.checkOpacityAttr(this.breakpoints.breaks[t]),this.checkOverflowAttr(this.breakpoints.breaks[t]),this.doTransition({type:"breakpoint",translateY:this.breakpoints.breaks[t]}),this.breakpoints.currentBreakpoint=this.breakpoints.breaks[t]):console.warn("Cupertino Pane: %s breakpoint disabled",t)}moveToHeight(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToHeight()"),null;let e=this.screenHeightOffset?this.screen_height-t:t;this.checkOpacityAttr(e),this.doTransition({type:"breakpoint",translateY:e})}hide(){return this.isPanePresented()?this.isHidden()?(console.warn("Cupertino Pane: Pane already hidden"),null):void this.doTransition({type:"hide",translateY:this.screenHeightOffset}):(console.warn("Cupertino Pane: Present pane before call hide()"),null)}isHidden(){return this.isPanePresented()?this.paneEl.style.transform===`translateY(${this.screenHeightOffset}px) translateZ(0px)`:(console.warn("Cupertino Pane: Present pane before call isHidden()"),null)}currentBreak(){return this.isPanePresented()?this.breakpoints.getCurrentBreakName():(console.warn("Cupertino Pane: Present pane before call currentBreak()"),null)}destroyResets(){this.parentEl.appendChild(this.contentEl),this.wrapperEl.remove(),this.events.detachAllEvents(),this.settings.zStack,delete this.rendered,delete this.breakpoints.prevBreakpoint,this.contentEl.style.display="none"}destroy(t={animate:!1,destroyButton:!1}){return __awaiter(this,void 0,void 0,(function*(){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call destroy()"),null;this.preventDismissEvent?this.preventedDismiss||(this.settings.onWillDismiss({prevented:!0}),this.moveToBreak(this.breakpoints.prevBreakpoint)):(this.settings.onWillDismiss(),t.animate?yield this.doTransition({type:"destroy",translateY:this.screenHeightOffset,destroyButton:t.destroyButton}):(this.destroyResets(),this.settings.onDidDismiss({destroyButton:t.destroyButton})))}))}pushTransition(t,e,s){let i=this.settings.zStack.pushElements;t.style.transition=s,e=this.screenHeightOffset-e;const n=this.settings.zStack.minPushHeight?this.settings.zStack.minPushHeight:this.screenHeightOffset-this.breakpoints.bottomer,r=this.screenHeightOffset-this.breakpoints.topper;let o=this.getPushMulitplicator(t),a=Math.pow(this.settings.zStack.cardZScale,o),h=Math.pow(this.settings.zStack.cardZScale,o-1),l=6+this.settings.zStack.cardYOffset,p=l*o*-1,c=p+l,d=Math.pow(this.settings.zStack.cardContrast,o),u=Math.pow(this.settings.zStack.cardContrast,o-1);const g=(s,n,r,o)=>{let a=Math.pow(s,this.settings.zStack.stackZAngle/100);t.style.transform=`translateY(${n*(a/s)}px) scale(${s})`,t.style.borderRadius=`${o}px`,t.style.filter=`contrast(${r})`;let h=document.querySelector(i[i.length-1]);e||t.className!==h.className||this.clearPushMultiplicators()};if(e<=n)return void g(h,c,u,0);const b=(t,s)=>{let i=-1*(r*s-n*t);return i-=(t-s)*e,i/=n-r,i>s&&(i=s),i{var s;if("move"===t.type)return this.paneEl.style.transition="all 0ms linear 0ms",this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transition="all 0ms linear 0ms",this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.getPanelTransformY(),"all 0ms linear 0ms"))),e(!0);const i=()=>("destroy"===t.type&&this.destroyResets(),this.paneEl.style.transition="initial",this.followerEl&&(this.followerEl.style.transition="initial"),this.settings.backdrop&&("destroy"!==t.type&&"hide"!==t.type||(this.backdropEl.style.transition="initial",this.backdropEl.style.display="none")),"present"===t.type&&this.settings.onDidPresent(),"destroy"===t.type&&this.settings.onDidDismiss({destroyButton:t.destroyButton}),this.settings.onTransitionEnd({target:document.body.contains(this.paneEl)?this.paneEl:null}),this.paneEl.removeEventListener("transitionend",i),e(!0));if("breakpoint"===t.type||"end"===t.type||"present"===t.type||"hide"===t.type||"destroy"===t.type){if(this.settings.backdrop&&(this.isHidden()||"hide"===t.type||"destroy"===t.type||"present"===t.type)&&(this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,"hide"!==t.type&&"destroy"!==t.type&&(this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50))),"end"===t.type&&this.settings.freeMode)return e(!0);const n=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));let r=n&&(null===(s=this.settings.breaks[n[0]])||void 0===s?void 0:s.bounce);const o=this.getTimingFunction(r);this.paneEl.style.transition=`transform ${this.settings.animationDuration}ms ${o} 0s`,this.followerEl&&(this.followerEl.style.transition=`transform ${this.settings.animationDuration}ms ${o} 0s`),this.settings.zStack&&setTimeout((()=>{this.settings.zStack.pushElements.forEach((e=>this.pushTransition(document.querySelector(e),t.translateY,`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`)))}),this.settings.zStack.cardYOffset&&"present"===t.type?50:0),setTimeout((()=>{this.settings.onTransitionStart({translateY:{new:t.translateY}}),this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`)}),"present"===t.type?50:0);let a=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));a&&(this.breakpoints.prevBreakpoint=a[0]),this.paneEl.addEventListener("transitionend",i)}}))}}export{CupertinoPane}; +function __awaiter(t,e,s,i){return new(s||(s=Promise))((function(n,r){function o(t){try{h(i.next(t))}catch(t){r(t)}}function a(t){try{h(i.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(o,a)}h((i=i.apply(t,e||[])).next())}))}class Support{static get touch(){return window.Modernizr&&!0===window.Modernizr.touch||!!(window.navigator.maxTouchPoints>0||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch)}static get observer(){return"MutationObserver"in window||"WebkitMutationObserver"in window}static get backdropFilter(){return CSS.supports("backdrop-filter","blur(0px)")||CSS.supports("-webkit-backdrop-filter","blur(0px)")}static get passiveListener(){let t=!1;try{const e=Object.defineProperty({},"passive",{get(){t=!0}});window.addEventListener("testPassiveListener",null,e)}catch(t){}return t}static get gestures(){return"ongesturestart"in window}static get pointerEvents(){return!!window.PointerEvent&&"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0}}class Device{constructor(){this.ios=!1,this.android=!1,this.androidChrome=!1,this.desktop=!1,this.iphone=!1,this.ipod=!1,this.ipad=!1,this.edge=!1,this.ie=!1,this.firefox=!1,this.macos=!1,this.windows=!1,this.cordova=!(!window.cordova&&!window.phonegap),this.phonegap=!(!window.cordova&&!window.phonegap),this.electron=!1,this.ionic=!!document.querySelector("ion-app");const t=window.navigator.platform,e=window.navigator.userAgent,s=window.screen.width,i=window.screen.height;let n=e.match(/(Android);?[\s\/]+([\d.]+)?/),r=e.match(/(iPad).*OS\s([\d_]+)/),o=e.match(/(iPod)(.*OS\s([\d_]+))?/),a=!this.ipad&&e.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h=e.indexOf("MSIE ")>=0||e.indexOf("Trident/")>=0,l=e.indexOf("Edge/")>=0,p=e.indexOf("Gecko/")>=0&&e.indexOf("Firefox/")>=0,c="Win32"===t,d=e.toLowerCase().indexOf("electron")>=0,u="MacIntel"===t;!r&&u&&Support.touch&&(1024===s&&1366===i||834===s&&1194===i||834===s&&1112===i||768===s&&1024===i)&&(r=e.match(/(Version)\/([\d.]+)/),u=!1),this.ie=h,this.edge=l,this.firefox=p,n&&!c&&(this.os="android",this.osVersion=n[2],this.android=!0,this.androidChrome=e.toLowerCase().indexOf("chrome")>=0),(r||a||o)&&(this.os="ios",this.ios=!0),a&&!o&&(this.osVersion=a[2].replace(/_/g,"."),this.iphone=!0),r&&(this.osVersion=r[2].replace(/_/g,"."),this.ipad=!0),o&&(this.osVersion=o[3]?o[3].replace(/_/g,"."):null,this.ipod=!0),this.ios&&this.osVersion&&e.indexOf("Version/")>=0&&"10"===this.osVersion.split(".")[0]&&(this.osVersion=e.toLowerCase().split("version/")[1].split(" ")[0]),this.webView=!(!(a||r||o)||!e.match(/.*AppleWebKit(?!.*Safari)/i)&&!window.navigator.standalone)||window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches,this.webview=this.webView,this.standalone=this.webView,this.desktop=!(this.ios||this.android)||d,this.desktop&&(this.electron=d,this.macos=u,this.windows=c,this.macos&&(this.os="macos"),this.windows&&(this.os="windows")),this.pixelRatio=window.devicePixelRatio||1}}class Events{constructor(t,e,s,i){this.instance=t,this.settings=e,this.device=s,this.breakpoints=i,this.allowClick=!0,this.disableDragAngle=!1,this.pointerDown=!1,this.contentScrollTop=0,this.steps=[],this.inputBluredbyMove=!1,this.keyboardVisible=!1,this.isScrolling=!1,this.touchEvents=(()=>{const t=["touchstart","touchmove","touchend","touchcancel"];let e=["mousedown","mousemove","mouseup"];Support.pointerEvents&&(e=["pointerdown","pointermove","pointerup"]);const s={start:t[0],move:t[1],end:t[2],cancel:t[3]},i={start:e[0],move:e[1],end:e[2]};return Support.touch||!this.settings.simulateTouch?s:i})(),this.touchStartCb=t=>this.touchStart(t),this.touchMoveBackdropCb=t=>this.touchMoveBackdrop(t),this.touchMoveCb=t=>this.touchMove(t),this.touchEndCb=t=>this.touchEnd(t),this.onScrollCb=t=>this.onScroll(t),this.onClickCb=t=>this.onClick(t),this.onKeyboardShowCb=t=>this.onKeyboardShow(t),this.onKeyboardWillHideCb=t=>this.onKeyboardWillHide(t),this.onKeyboardDidHideCb=t=>this.onKeyboardDidHide(t),this.onWindowResizeCb=t=>this.onWindowResize(t)}attachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("addEventListener",e)})):this.eventListeners("addEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.addEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.addEventListener("keyboardWillShow",this.onKeyboardShowCb),window.addEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.addEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),!this.settings.handleKeyboard&&this.device.cordova&&this.device.android&&window.addEventListener("keyboardWillHide",(()=>{this.instance.parentEl.scrollTop=0,this.instance.parentEl.parentElement&&(this.instance.parentEl.parentElement.scrollTop=0,this.instance.parentEl.parentElement.parentElement&&(this.instance.parentEl.parentElement.parentElement.scrollTop=0))})),window.addEventListener("resize",this.onWindowResizeCb)}detachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("removeEventListener",e)})):this.eventListeners("removeEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.removeEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.removeEventListener("keyboardWillShow",this.onKeyboardShowCb),window.removeEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.removeEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),window.removeEventListener("resize",this.onWindowResizeCb)}resetEvents(){this.detachAllEvents(),this.attachAllEvents()}eventListeners(t,e){var s,i,n;if(!Support.touch&&Support.pointerEvents)e[t](this.touchEvents.start,this.touchStartCb,!1),e[t](this.touchEvents.move,this.touchMoveCb,!1),e[t](this.touchEvents.end,this.touchEndCb,!1),null===(s=this.instance.backdropEl)||void 0===s||s[t](this.touchEvents.move,this.touchMoveBackdropCb,!1);else{if(Support.touch){const s=!("touchstart"!==this.touchEvents.start||!Support.passiveListener||!this.settings.passiveListeners)&&{passive:!0,capture:!1};e[t](this.touchEvents.start,this.touchStartCb,s),e[t](this.touchEvents.move,this.touchMoveCb,!!Support.passiveListener&&{passive:!1,capture:!1}),e[t](this.touchEvents.end,this.touchEndCb,s),null===(i=this.instance.backdropEl)||void 0===i||i[t](this.touchEvents.move,this.touchMoveBackdropCb,!!Support.passiveListener&&{passive:!1,capture:!1}),this.touchEvents.cancel&&e[t](this.touchEvents.cancel,this.touchEndCb,s)}(this.settings.simulateTouch&&!this.device.ios&&!this.device.android||this.settings.simulateTouch&&!Support.touch&&this.device.ios)&&(e[t]("mousedown",this.touchStartCb,!1),e[t]("mousemove",this.touchMoveCb,!1),e[t]("mouseup",this.touchEndCb,!1),null===(n=this.instance.backdropEl)||void 0===n||n[t]("mousemove",this.touchMoveBackdropCb,!1))}this.settings.preventClicks&&e[t]("click",this.onClickCb,!0)}touchStart(t){if(this.settings.onDragStart(t),this.allowClick=!0,this.instance.disableDragEvents)return;this.disableDragAngle=!1,this.isScrolling=!1,this.instance.preventedDismiss=!1;const{clientY:e,clientX:s}=this.getEvetClientYX(t,"touchstart");this.startY=e,this.startX=s,"mousedown"===t.type&&(this.pointerDown=!0),this.contentScrollTop&&this.willScrolled(t)&&(this.startY+=this.contentScrollTop),this.steps.push({posY:this.startY,time:Date.now()})}touchMoveBackdrop(t){this.settings.touchMoveStopPropagation&&t.stopPropagation()}touchMove(t){var e;const{clientY:s,clientX:i,velocityY:n}=this.getEvetClientYX(t,"touchmove");if(t.delta=(null===(e=this.steps[0])||void 0===e?void 0:e.posY)-s,this.settings.onDrag(t),this.allowClick=!1,this.isFormElement(t.target)&&this.isElementScrollable(t.target))return;if(this.instance.disableDragEvents)return void(this.steps=[]);if(this.disableDragAngle)return;if(this.instance.preventedDismiss)return;if(this.settings.touchMoveStopPropagation&&t.stopPropagation(),"mousemove"===t.type&&!this.pointerDown)return;const r=s-this.steps[this.steps.length-1].posY;if(!Math.abs(r))return;let o=this.instance.getPanelTransformY()+r;if(this.steps.length<2){n<1&&(o=this.instance.getPanelTransformY()+r*n);let t=new WebKitCSSMatrix(window.getComputedStyle(this.instance.paneEl).transform).m42-this.instance.getPanelTransformY();Math.abs(t)&&(o+=t)}if(this.steps.length>2&&this.isFormElement(document.activeElement)&&!this.isFormElement(t.target)&&(document.activeElement.blur(),this.inputBluredbyMove=!0),this.settings.touchAngle&&!this.isScrolling){let t;const e=i-this.startX,n=s-this.startY;if(t=180*Math.atan2(Math.abs(n),Math.abs(e))/Math.PI,e*e+n*n>=25&&90-t>this.settings.touchAngle&&1===this.steps.length)return void(this.disableDragAngle=!0)}if("auto"===this.instance.overflowEl.style.overflowY){if(this.settings.inverse&&this.willScrolled(t))return void(this.contentScrollTop=0);if(!this.settings.inverse&&this.contentScrollTop>0)return}let a=this.handleTopperLowerPositions(o,r);if(a&&(o=a),this.instance.getPanelTransformY()!==o){if(!this.instance.preventedDismiss&&this.instance.preventDismissEvent&&this.settings.bottomClose){let t=(-this.breakpoints.topper+this.breakpoints.topper-this.instance.getPanelTransformY())/this.breakpoints.topper/-8;if(o=this.instance.getPanelTransformY()+r*(.5-t),-1*(s-220-this.instance.screen_height)<=this.instance.screen_height-this.breakpoints.bottomer)return this.instance.preventedDismiss=!0,this.settings.onWillDismiss({prevented:!0}),void this.instance.moveToBreak(this.breakpoints.prevBreakpoint)}this.instance.checkOpacityAttr(o),this.instance.checkOverflowAttr(o),this.instance.doTransition({type:"move",translateY:o}),this.steps.push({posY:s,time:Date.now()})}}touchEnd(t){var e,s;if(this.instance.disableDragEvents)return;"mouseup"===t.type&&(this.pointerDown=!1);let i=this.breakpoints.getClosestBreakY();const n=(null===(e=this.steps[this.steps.length-1])||void 0===e?void 0:e.posY)-(null===(s=this.steps[this.steps.length-2])||void 0===s?void 0:s.posY),r=window.hasOwnProperty("cordova")?this.settings.fastSwipeSensivity+2:this.settings.fastSwipeSensivity;if(Math.abs(n)>=r&&(i=this.instance.swipeNextPoint(n,r,i),this.settings.fastSwipeClose&&this.breakpoints.currentBreakpointthis.fixAndroidResize()),20),this.keyboardVisible=!0,this.breakpoints.prevBreakpoint=Object.entries(this.breakpoints.breaks).find((t=>t[1]===this.instance.getPanelTransformY()))[0];let e=this.settings.breaks[this.instance.currentBreak()].height+t.keyboardHeight;window.matchMedia("(orientation: landscape)").matches&&(e=this.instance.screen_height),e>this.instance.screen_height-80&&(e=this.instance.screen_height-80),e-50>=this.settings.breaks[this.instance.currentBreak()].height&&this.instance.moveToHeight(e)}onKeyboardWillHide(t){this.keyboardVisible&&this.isOnViewport()&&(this.device.android&&this.fixAndroidResize(),this.inputBluredbyMove?this.inputBluredbyMove=!1:this.instance.isHidden()||this.instance.moveToBreak(this.breakpoints.prevBreakpoint))}onKeyboardDidHide(t){this.keyboardVisible=!1}onWindowResize(t){return __awaiter(this,void 0,void 0,(function*(){this.keyboardVisible||(yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.instance.updateScreenHeights(),this.breakpoints.buildBreakpoints(JSON.parse(this.breakpoints.lockedBreakpoints)))}))}handleTopperLowerPositions(t,e){if(!this.settings.inverse){if(!this.settings.upperThanTop&&t<=this.breakpoints.topper)return this.breakpoints.topper;if(t<=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.lowerThanBottom&&t>=this.breakpoints.bottomer)return this.breakpoints.bottomer}if(this.settings.inverse){if(t>=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.upperThanTop&&t>=this.breakpoints.topper)return this.breakpoints.topper}}getEvetClientYX(t,e){var s,i;const n=t.type===e&&t.targetTouches&&(t.targetTouches[0]||t.changedTouches[0]),r=t.type===e?n.clientY:t.clientY,o=t.type===e?n.clientX:t.clientX,a=Date.now()-((null===(s=this.steps[this.steps.length-1])||void 0===s?void 0:s.time)||0);return{clientY:r,clientX:o,velocityY:Math.abs(r-((null===(i=this.steps[this.steps.length-1])||void 0===i?void 0:i.posY)||0))/a}}fixAndroidResize(){this.instance.paneEl&&(document.querySelector("ion-app"),window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="100%",this.instance.paneEl.style.position="absolute",window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="unset",this.instance.paneEl.style.position="fixed"}))})))}willScrolled(t){return!(!this.isElementScrollable(this.instance.overflowEl)||"hidden"===this.instance.overflowEl.style.overflow)}isPaneDescendant(t){let e=t.parentNode;for(;null!=e;){if(e==this.instance.paneEl)return!0;e=e.parentNode}return!1}isFormElement(t){return!!(t&&t.tagName&&["input","select","option","textarea","button","label"].includes(t.tagName.toLowerCase()))}isElementScrollable(t){return t.scrollHeight>t.clientHeight}isOnViewport(){return!this.instance.paneEl||0!==this.instance.paneEl.offsetWidth||0!==this.instance.paneEl.offsetHeight}}class Settings{constructor(){this.instance={initialBreak:"middle",inverse:!1,parentElement:null,followerElement:null,cssClass:null,fitHeight:!1,maxFitHeight:null,fitScreenHeight:!0,backdrop:!1,backdropOpacity:.4,animationType:"ease",animationDuration:300,dragBy:null,bottomOffset:0,bottomClose:!1,fastSwipeClose:!1,fastSwipeSensivity:3,freeMode:!1,buttonDestroy:!0,buttonClose:!0,topperOverflow:!0,topperOverflowOffset:0,lowerThanBottom:!0,upperThanTop:!1,showDraggable:!0,draggableOver:!1,clickBottomOpen:!0,preventClicks:!0,handleKeyboard:!0,simulateTouch:!0,passiveListeners:!0,touchMoveStopPropagation:!1,touchAngle:45,breaks:{},zStack:null,onDidDismiss:()=>{},onWillDismiss:()=>{},onDidPresent:()=>{},onWillPresent:()=>{},onDragStart:()=>{},onDrag:()=>{},onDragEnd:()=>{},onBackdropTap:()=>{},onTransitionStart:()=>{},onTransitionEnd:()=>{}}}}class Breakpoints{constructor(t,e){this.instance=t,this.settings=e,this.breaks={},this.calcHeightInProcess=!1,this.brs=[],this.defaultBreaksConf={top:{enabled:!0,height:window.innerHeight-47.25},middle:{enabled:!0,height:300},bottom:{enabled:!0,height:100}}}buildBreakpoints(t,e=0){var s,i,n,r,o;return __awaiter(this,void 0,void 0,(function*(){if(this.settings.bottomOffset=e||this.settings.bottomOffset,this.breaks={top:this.instance.screenHeightOffset,middle:this.instance.screenHeightOffset,bottom:this.instance.screenHeightOffset},this.settings.fitHeight){this.settings.fitScreenHeight=!1,this.settings.initialBreak="top",this.settings.topperOverflow=!1;let e=yield this.getPaneFitHeight();this.settings.maxFitHeight&&e>this.settings.maxFitHeight&&(e=this.settings.maxFitHeight,this.settings.topperOverflow=!0),(t={top:{enabled:!0,height:e},middle:{enabled:!1}}).top.bounce=null===(i=null===(s=this.settings.breaks)||void 0===s?void 0:s.top)||void 0===i?void 0:i.bounce,t.bottom=(null===(n=this.settings.breaks)||void 0===n?void 0:n.bottom)||{enabled:!0,height:0}}if(["top","middle","bottom"].forEach((e=>{var s;this.breaks[e]-=this.settings.bottomOffset,this.settings.breaks[e]||(this.settings.breaks[e]=this.defaultBreaksConf[e]),t&&t[e]&&(this.settings.breaks[e]=t[e]),this.settings.fitScreenHeight&&((null===(s=this.settings.breaks[e])||void 0===s?void 0:s.height)>this.instance.screen_height&&(this.settings.breaks[e].height=this.instance.screen_height-this.settings.bottomOffset),this.settings.breaks.top&&this.settings.breaks.middle&&this.settings.breaks.top.height-50<=this.settings.breaks.middle.height&&(this.settings.breaks.middle.enabled=!1,this.settings.initialBreak="top")),this.settings.fitHeight&&"top"===e&&(this.settings.breaks[e].height>this.instance.screen_height?(this.settings.breaks[e].height=this.instance.screen_height-2*this.settings.bottomOffset,this.settings.topperOverflow=!0):this.instance.overflowEl&&!this.settings.maxFitHeight&&(this.settings.topperOverflow=!1,this.instance.overflowEl.style.overflowY="hidden")),this.settings.breaks[e]&&this.settings.breaks[e].enabled&&this.settings.breaks[e].height&&(this.settings.inverse?this.breaks[e]=this.settings.breaks[e].height+this.settings.bottomOffset:this.breaks[e]-=this.settings.breaks[e].height)})),this.lockedBreakpoints||(this.lockedBreakpoints=JSON.stringify(this.settings.breaks)),this.instance.isPanePresented()||this.settings.breaks[this.settings.initialBreak].enabled||console.warn("Cupertino Pane: Please set initialBreak for enabled breakpoint"),this.settings.breaks.middle.height>=this.settings.breaks.top.height&&console.warn("Cupertino Pane: Please set middle height lower than top height"),this.settings.breaks.middle.height<=this.settings.breaks.bottom.height&&console.warn("Cupertino Pane: Please set bottom height lower than middle height"),this.brs=[],["top","middle","bottom"].forEach((t=>{this.settings.breaks[t].enabled&&this.brs.push(this.breaks[t])})),this.topper=this.brs.reduce(((t,e)=>eMath.abs(e)>Math.abs(t)?e:t)),this.settings.inverse&&(this.topper=this.bottomer),this.instance.isPanePresented()||(this.currentBreakpoint=this.breaks[this.settings.initialBreak],!this.settings.inverse||this.settings.breaks.bottom.enabled||this.settings.breaks.middle.enabled||(this.settings.topperOverflow=!1)),this.instance.isPanePresented()){if((null===(r=this.settings.breaks[this.prevBreakpoint])||void 0===r?void 0:r.enabled)&&(this.instance.isHidden()||this.instance.moveToBreak(this.prevBreakpoint)),!(null===(o=this.settings.breaks[this.prevBreakpoint])||void 0===o?void 0:o.enabled)){let t=this.instance.swipeNextPoint(1,1,this.getClosestBreakY());const e=Object.entries(this.breaks).find((e=>e[1]===t));this.instance.moveToBreak(e[0])}this.instance.paneEl.style.top=this.settings.inverse?`-${this.bottomer-this.settings.bottomOffset}px`:"unset",this.instance.paneEl.style.height=`${this.instance.getPaneHeight()}px`,this.instance.scrollElementInit(),this.instance.checkOpacityAttr(this.currentBreakpoint),this.instance.checkOverflowAttr(this.currentBreakpoint)}}))}getCurrentBreakName(){return this.breaks.top===this.currentBreakpoint?"top":this.breaks.middle===this.currentBreakpoint?"middle":this.breaks.bottom===this.currentBreakpoint?"bottom":null}getPaneFitHeight(){return __awaiter(this,void 0,void 0,(function*(){this.calcHeightInProcess=!0;let t,e=this.instance.el.querySelectorAll("img");this.instance.el.style.height="unset",this.instance.rendered||(this.instance.el.style.visibility="hidden",this.instance.el.style.pointerEvents="none",this.instance.el.style.display="block",this.instance.wrapperEl.style.visibility="hidden",this.instance.wrapperEl.style.pointerEvents="none",this.instance.wrapperEl.style.display="block");let s=[];e.length&&(s=Array.from(e).map((t=>new Promise((e=>{t.complete&&t.naturalHeight?e(!0):t.onload=()=>e(!0)}))))),s.push(new Promise((t=>setTimeout((()=>t(!0)),this.instance.rendered?0:150)))),yield Promise.all(s);let i=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("height")),n=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-top"))+parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-bottom")),r=parseInt(document.defaultView.getComputedStyle(this.instance.el.parentElement,"").getPropertyValue("padding-bottom"));return t=i+n,t+=this.instance.el.offsetTop,t+=r,this.instance.rendered||(this.instance.el.style.visibility="unset",this.instance.el.style.pointerEvents="unset",this.instance.el.style.display="none",this.instance.wrapperEl.style.visibility="unset",this.instance.wrapperEl.style.pointerEvents="unset",this.instance.wrapperEl.style.display="none"),this.calcHeightInProcess=!1,t}))}getClosestBreakY(){return this.brs.reduce(((t,e)=>Math.abs(e-this.instance.getPanelTransformY()){let i={},n={};if(this.settings.inverse?(i.top=this.breakpoints.breaks.bottom,i.middle=this.breakpoints.breaks.middle,i.bottom=this.breakpoints.breaks.top,n.top=Object.assign({},this.settings.breaks.bottom),n.middle=Object.assign({},this.settings.breaks.middle),n.bottom=Object.assign({},this.settings.breaks.top)):(i=Object.assign({},this.breakpoints.breaks),n=Object.assign({},this.settings.breaks)),this.breakpoints.currentBreakpoint===i.top){if(t>e){if(n.middle.enabled)return i.middle;if(n.bottom.enabled)return i.middlee&&n.bottom.enabled?i.bottom:i.middle;if(this.breakpoints.currentBreakpoint===i.bottom){if(t<-e){if(n.middle.enabled)return i.middle>s?s:i.middle;if(n.top.enabled)return i.top}return i.bottom}return s},t instanceof HTMLElement?this.selector=t:this.selector=document.querySelector(t),this.selector?this.isPanePresented()?console.error("Cupertino Pane: specified selector or DOM element already in use",this.selector):(this.el=this.selector,this.el.style.display="none",this.settings=Object.assign(Object.assign({},this.settings),e),this.settings.parentElement?this.settings.parentElement=document.querySelector(this.settings.parentElement):this.settings.parentElement=this.el.parentElement,this.breakpoints=new Breakpoints(this,this.settings),this.events=new Events(this,this.settings,this.device,this.breakpoints)):console.warn("Cupertino Pane: wrong selector or DOM element specified",this.selector)}drawBaseElements(){this.parentEl=this.settings.parentElement,this.wrapperEl=document.createElement("div"),this.wrapperEl.classList.add("cupertino-pane-wrapper"),this.settings.inverse&&this.wrapperEl.classList.add("inverse"),this.settings.cssClass&&(this.wrapperEl.className+=` ${this.settings.cssClass}`);let t="";t+="\n .cupertino-pane-wrapper {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n }\n ",this.paneEl=document.createElement("div"),this.paneEl.style.transform=`translateY(${this.screenHeightOffset}px) translateZ(0px)`,this.paneEl.classList.add("pane"),t+="\n .cupertino-pane-wrapper .pane {\n position: fixed;\n z-index: 11;\n width: 100%;\n max-width: 500px;\n left: 0px;\n right: 0px;\n margin-left: auto;\n margin-right: auto;\n background: var(--cupertino-pane-background, #ffffff);\n color: var(--cupertino-pane-color, #333333);\n box-shadow: var(--cupertino-pane-shadow, 0 4px 16px rgba(0,0,0,.12));\n will-change: transform;\n padding-top: 15px; \n border-radius: var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px) \n 0 0;\n }\n .cupertino-pane-wrapper.inverse .pane {\n padding-bottom: 15px; \n border-radius: 0 0 20px 20px;\n border-radius: 0 0\n var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px);\n }\n ",this.draggableEl=document.createElement("div"),this.draggableEl.classList.add("draggable"),this.settings.draggableOver&&this.draggableEl.classList.add("over"),t+="\n .cupertino-pane-wrapper .draggable {\n padding: 5px;\n position: absolute;\n left: 0;\n right: 0;\n margin-left: auto;\n margin-right: auto;\n height: 30px;\n z-index: 12;\n top: 0;\n bottom: initial;\n }\n .cupertino-pane-wrapper .draggable.over {\n top: -30px;\n padding: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable {\n bottom: 0;\n top: initial;\n }\n .cupertino-pane-wrapper.inverse .draggable.over {\n bottom: -30px;\n top: initial;\n }\n ",this.moveEl=document.createElement("div"),this.moveEl.classList.add("move"),t+=`\n .cupertino-pane-wrapper .move {\n margin: 0 auto;\n height: 5px;\n background: var(--cupertino-pane-move-background, #c0c0c0);\n width: 36px;\n border-radius: 4px;\n }\n .cupertino-pane-wrapper .draggable.over .move {\n width: 70px; \n background: var(--cupertino-pane-move-background, rgba(225, 225, 225, 0.6));\n ${Support.backdropFilter?"\n backdrop-filter: saturate(180%) blur(20px);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n ":""}\n }\n .cupertino-pane-wrapper.inverse .move {\n margin-top: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable.over .move {\n margin-top: -5px;\n }\n `,this.destroyButtonEl=document.createElement("div"),this.destroyButtonEl.classList.add("destroy-button"),t+="\n .cupertino-pane-wrapper .destroy-button {\n width: 26px;\n height: 26px;\n position: absolute;\n background: var(--cupertino-pane-destroy-button-background, #ebebeb);\n fill: var(--cupertino-pane-icon-close-color, #7a7a7e);\n right: 20px;\n z-index: 14;\n border-radius: 100%;\n top: 16px;\n }\n ",this.contentEl=this.el,this.contentEl.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.contentEl.style.overflowX="hidden",t+="\n .cupertino-pane-wrapper .backdrop {\n overflow: hidden;\n position: fixed;\n width: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n top: 0;\n display: none;\n z-index: 10;\n }\n ",this.addStyle(t),this.parentEl.appendChild(this.wrapperEl),this.wrapperEl.appendChild(this.paneEl),this.paneEl.appendChild(this.contentEl),this.settings.showDraggable&&(this.paneEl.appendChild(this.draggableEl),this.draggableEl.appendChild(this.moveEl))}present(t={animate:!1}){var e;return __awaiter(this,void 0,void 0,(function*(){if(this.el)if(this.isPanePresented()&&this.rendered)this.moveToBreak(this.settings.initialBreak);else{if(!this.isPanePresented()||this.rendered){if(this.settings.onWillPresent(),this.updateScreenHeights(),this.drawBaseElements(),yield this.setBreakpoints(),this.paneEl.style.height=`${this.getPaneHeight()}px`,this.settings.inverse&&(this.paneEl.style.top=`-${this.breakpoints.bottomer-this.settings.bottomOffset}px`),this.wrapperEl.style.display="block",this.contentEl.style.display="block",this.wrapperEl.classList.add("rendered"),this.rendered=!0,this.settings.followerElement){if(!document.querySelector(this.settings.followerElement))return void console.warn("Cupertino Pane: wrong follower element selector specified",this.settings.followerElement);this.followerEl=document.querySelector(this.settings.followerElement),this.followerEl.style.willChange="transform, border-radius",this.followerEl.style.transform="translateY(0px) translateZ(0px)",this.followerEl.style.transition=this.buildTransitionValue(null===(e=this.settings.breaks[this.currentBreak()])||void 0===e?void 0:e.bounce)}return this.settings.zStack&&(this.setZstackConfig(this.settings.zStack),this.setPushMultiplicators()),this.settings.buttonClose&&this.settings.buttonDestroy&&!this.settings.inverse&&(this.paneEl.appendChild(this.destroyButtonEl),this.destroyButtonEl.addEventListener("click",(t=>this.destroy({animate:!0,destroyButton:!0}))),this.destroyButtonEl.innerHTML='\n \n '),this.settings.bottomClose&&(this.settings.breaks.bottom.enabled=!0),this.settings.freeMode&&(this.settings.lowerThanBottom=!1),this.settings.backdrop&&this.renderBackdrop(),this.checkOpacityAttr(this.breakpoints.currentBreakpoint),this.device.android&&(document.body.style.overscrollBehaviorY="none"),t.animate?yield this.doTransition({type:"present",translateY:this.breakpoints.breaks[this.settings.initialBreak]}):(this.breakpoints.prevBreakpoint=this.settings.initialBreak,this.paneEl.style.transform=`translateY(${this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`,this.settings.backdrop&&(this.backdropEl.style.display="block"),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.breakpoints.breaks[this.settings.initialBreak],"unset"))),this.settings.onDidPresent()),yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.scrollElementInit(),this.checkOverflowAttr(this.breakpoints.currentBreakpoint),this.events.attachAllEvents(),this}console.warn("Cupertino Pane: specified selector or DOM element already in use",this.selector)}}))}getPaneHeight(){return this.settings.inverse?this.breakpoints.bottomer-this.settings.bottomOffset:this.screen_height-this.breakpoints.topper-this.settings.bottomOffset}updateScreenHeights(){this.settings.inverse?(this.screen_height=window.innerHeight,this.screenHeightOffset=0):(this.screen_height=window.innerHeight,this.screenHeightOffset=window.innerHeight)}scrollElementInit(){let t=this.el.querySelectorAll("[overflow-y]");!t.length||t.length>1?this.overflowEl=this.contentEl:(this.overflowEl=t[0],this.overflowEl.style.overflowX="hidden"),this.settings.topperOverflow&&(this.settings.upperThanTop&&console.warn('Cupertino Pane: "upperThanTop" allowed for disabled "topperOverflow"'),this.setOverflowHeight())}setOverflowHeight(t=0){this.settings.inverse?this.overflowEl.style.height=this.getPaneHeight()-30-this.settings.topperOverflowOffset-this.overflowEl.offsetTop+"px":this.overflowEl.style.height=this.getPaneHeight()-this.settings.topperOverflowOffset-this.overflowEl.offsetTop-t+"px"}checkOpacityAttr(t){let e=this.el.querySelectorAll("[hide-on-bottom]");e.length&&(this.settings.inverse||e.forEach((e=>{e.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,e.style.opacity=t>=this.breakpoints.breaks.bottom?"0":"1"})))}checkOverflowAttr(t){this.settings.topperOverflow&&this.overflowEl&&(this.settings.inverse?this.overflowEl.style.overflowY=t>=this.breakpoints.bottomer?"auto":"hidden":this.overflowEl.style.overflowY=t<=this.breakpoints.topper?"auto":"hidden")}isPanePresented(){let t=Array.from(document.querySelectorAll(".cupertino-pane-wrapper.rendered"));return!!t.length&&!!t.find((t=>t.contains(this.selector)))}buildTransitionValue(t){return t?"all 300ms cubic-bezier(.155,1.105,.295,1.12)":`all ${this.settings.animationDuration}ms ${this.settings.animationType}`}isBackdropPresented(){return!!document.querySelector(".cupertino-pane-wrapper .backdrop")}renderBackdrop(){this.backdropEl=document.createElement("div"),this.backdropEl.classList.add("backdrop"),this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`,this.wrapperEl.appendChild(this.backdropEl),this.backdropEl.addEventListener("click",(t=>this.settings.onBackdropTap()))}addStyle(t){if(document.querySelector("#cupertino-panes-internal"))return;const e=document.createElement("style");e.id="cupertino-panes-internal",t=t.replace(/\s\s+/g," "),e.textContent=t,document.head.prepend(e)}setPushMultiplicators(){this.settings.zStack.pushElements.forEach((t=>{let e=document.querySelector(t),s=this.getPushMulitplicator(e);s=s?s+1:1,e.style.setProperty("--push-multiplicator",`${s}`)}))}clearPushMultiplicators(){for(let t=0;t{this.backdropEl.style.transition="initial",this.backdropEl.style.display="none",this.backdropEl.removeEventListener("transitionend",e)};if(this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",t.show)this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50);else{if("none"===this.backdropEl.style.display)return;this.backdropEl.addEventListener("transitionend",e)}}getPanelTransformY(){return parseFloat(/\.*translateY\((.*)px\)/i.exec(this.paneEl.style.transform)[1])}preventDismiss(t=!1){this.preventDismissEvent=t}disableDrag(){this.disableDragEvents=!0}enableDrag(){this.disableDragEvents=!1}setBreakpoints(t,e){return __awaiter(this,void 0,void 0,(function*(){!this.isPanePresented()||t?yield this.breakpoints.buildBreakpoints(t,e):console.warn("Cupertino Pane: Provide any breaks configuration")}))}calcFitHeight(){return __awaiter(this,void 0,void 0,(function*(){return this.wrapperEl&&this.el?this.breakpoints.calcHeightInProcess?(console.warn("Cupertino Pane: calcFitHeight() already in process"),null):void(yield this.breakpoints.buildBreakpoints(this.breakpoints.lockedBreakpoints)):null}))}moveToBreak(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToBreak()"),null;this.settings.breaks[t].enabled?(this.checkOpacityAttr(this.breakpoints.breaks[t]),this.checkOverflowAttr(this.breakpoints.breaks[t]),this.doTransition({type:"breakpoint",translateY:this.breakpoints.breaks[t]}),this.breakpoints.currentBreakpoint=this.breakpoints.breaks[t]):console.warn("Cupertino Pane: %s breakpoint disabled",t)}moveToHeight(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToHeight()"),null;let e=this.screenHeightOffset?this.screen_height-t:t;this.checkOpacityAttr(e),this.doTransition({type:"breakpoint",translateY:e})}hide(){return this.isPanePresented()?this.isHidden()?(console.warn("Cupertino Pane: Pane already hidden"),null):void this.doTransition({type:"hide",translateY:this.screenHeightOffset}):(console.warn("Cupertino Pane: Present pane before call hide()"),null)}isHidden(){return this.isPanePresented()?this.paneEl.style.transform===`translateY(${this.screenHeightOffset}px) translateZ(0px)`:(console.warn("Cupertino Pane: Present pane before call isHidden()"),null)}currentBreak(){return this.isPanePresented()?this.breakpoints.getCurrentBreakName():(console.warn("Cupertino Pane: Present pane before call currentBreak()"),null)}destroyResets(){this.parentEl.appendChild(this.contentEl),this.wrapperEl.remove(),this.events.detachAllEvents(),this.settings.zStack,delete this.rendered,delete this.breakpoints.prevBreakpoint,this.contentEl.style.display="none"}destroy(t={animate:!1,destroyButton:!1}){return __awaiter(this,void 0,void 0,(function*(){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call destroy()"),null;this.preventDismissEvent?this.preventedDismiss||(this.settings.onWillDismiss({prevented:!0}),this.moveToBreak(this.breakpoints.prevBreakpoint)):(this.settings.onWillDismiss(),t.animate?yield this.doTransition({type:"destroy",translateY:this.screenHeightOffset,destroyButton:t.destroyButton}):(this.destroyResets(),this.settings.onDidDismiss({destroyButton:t.destroyButton})))}))}pushTransition(t,e,s){let i=this.settings.zStack.pushElements;t.style.transition=s,e=this.screenHeightOffset-e;const n=this.settings.zStack.minPushHeight?this.settings.zStack.minPushHeight:this.screenHeightOffset-this.breakpoints.bottomer,r=this.screenHeightOffset-this.breakpoints.topper;let o=this.getPushMulitplicator(t),a=Math.pow(this.settings.zStack.cardZScale,o),h=Math.pow(this.settings.zStack.cardZScale,o-1),l=6+this.settings.zStack.cardYOffset,p=l*o*-1,c=p+l,d=Math.pow(this.settings.zStack.cardContrast,o),u=Math.pow(this.settings.zStack.cardContrast,o-1);const g=(s,n,r,o)=>{let a=Math.pow(s,this.settings.zStack.stackZAngle/100);t.style.transform=`translateY(${n*(a/s)}px) scale(${s})`,t.style.borderRadius=`${o}px`,t.style.filter=`contrast(${r})`;let h=document.querySelector(i[i.length-1]);e||t.className!==h.className||this.clearPushMultiplicators()};if(e<=n)return void g(h,c,u,0);const b=(t,s)=>{let i=-1*(r*s-n*t);return i-=(t-s)*e,i/=n-r,i>s&&(i=s),i{var s;if("move"===t.type)return this.paneEl.style.transition="all 0ms linear 0ms",this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transition="all 0ms linear 0ms",this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.getPanelTransformY(),"all 0ms linear 0ms"))),e(!0);const i=()=>("destroy"===t.type&&this.destroyResets(),this.paneEl.style.transition="initial",this.followerEl&&(this.followerEl.style.transition="initial"),this.settings.backdrop&&("destroy"!==t.type&&"hide"!==t.type||(this.backdropEl.style.transition="initial",this.backdropEl.style.display="none")),"present"===t.type&&this.settings.onDidPresent(),"destroy"===t.type&&this.settings.onDidDismiss({destroyButton:t.destroyButton}),this.settings.onTransitionEnd({target:document.body.contains(this.paneEl)?this.paneEl:null}),this.paneEl.removeEventListener("transitionend",i),e(!0));if("breakpoint"===t.type||"end"===t.type||"present"===t.type||"hide"===t.type||"destroy"===t.type){if(this.settings.backdrop&&(this.isHidden()||"hide"===t.type||"destroy"===t.type||"present"===t.type)&&(this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,"hide"!==t.type&&"destroy"!==t.type&&(this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50))),"end"===t.type&&this.settings.freeMode)return e(!0);const n=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));let r=n&&(null===(s=this.settings.breaks[n[0]])||void 0===s?void 0:s.bounce);this.paneEl.style.transition=this.buildTransitionValue(r),this.followerEl&&(this.followerEl.style.transition=this.buildTransitionValue(r)),this.settings.zStack&&setTimeout((()=>{this.settings.zStack.pushElements.forEach((e=>this.pushTransition(document.querySelector(e),t.translateY,`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`)))}),this.settings.zStack.cardYOffset&&"present"===t.type?50:0),setTimeout((()=>{this.settings.onTransitionStart({translateY:{new:t.translateY}}),this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`)}),"present"===t.type?50:0);let o=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));o&&(this.breakpoints.prevBreakpoint=o[0]),this.paneEl.addEventListener("transitionend",i)}}))}}export{CupertinoPane}; //# sourceMappingURL=cupertino-pane.esm.min.js.map \ No newline at end of file diff --git a/dist/cupertino-pane.esm.min.js.map b/dist/cupertino-pane.esm.min.js.map index cfd0902b..179d9d75 100644 --- a/dist/cupertino-pane.esm.min.js.map +++ b/dist/cupertino-pane.esm.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["0"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","Support","touch","window","navigator","maxTouchPoints","document","observer","backdropFilter","CSS","supports","passiveListener","supportsPassive","opts","Object","defineProperty","get","addEventListener","gestures","pointerEvents","Device","constructor","this","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","ionic","querySelector","platform","ua","userAgent","screenWidth","screen","width","screenHeight","height","match","indexOf","toLowerCase","os","osVersion","replace","split","webView","matchMedia","matches","webview","standalone","pixelRatio","devicePixelRatio","Events","instance","settings","device","breakpoints","allowClick","disableDragAngle","pointerDown","contentScrollTop","steps","inputBluredbyMove","keyboardVisible","isScrolling","touchEvents","touchEventsTouch","start","move","end","cancel","touchEventsDesktop","simulateTouch","touchStartCb","t","touchStart","touchMoveBackdropCb","touchMoveBackdrop","touchMoveCb","touchMove","touchEndCb","touchEnd","onScrollCb","onScroll","onClickCb","onClick","onKeyboardShowCb","onKeyboardShow","onKeyboardWillHideCb","onKeyboardWillHide","onKeyboardDidHideCb","onKeyboardDidHide","onWindowResizeCb","onWindowResize","attachAllEvents","dragBy","forEach","selector","el","eventListeners","paneEl","topperOverflow","overflowEl","handleKeyboard","parentEl","scrollTop","parentElement","detachAllEvents","removeEventListener","resetEvents","type","_a","_b","_c","backdropEl","passiveListeners","passive","capture","preventClicks","onDragStart","disableDragEvents","preventedDismiss","clientY","clientX","getEvetClientYX","startY","startX","willScrolled","push","posY","time","Date","now","touchMoveStopPropagation","stopPropagation","velocityY","delta","onDrag","isFormElement","target","isElementScrollable","diffY","length","Math","abs","newVal","getPanelTransformY","activeElement","blur","touchAngle","diffX","atan2","PI","style","overflowY","inverse","forceNewVal","handleTopperLowerPositions","preventDismissEvent","bottomClose","differKoef","topper","screen_height","bottomer","onWillDismiss","prevented","moveToBreak","prevBreakpoint","checkOpacityAttr","checkOverflowAttr","doTransition","translateY","closest","getClosestBreakY","diff","swipeNextSensivity","hasOwnProperty","fastSwipeSensivity","swipeNextPoint","fastSwipeClose","currentBreakpoint","destroy","animate","blurTapEvent","onDragEnd","breaks","onTransitionEnd","clickBottomOpen","enabled","preventDefault","stopImmediatePropagation","isPaneDescendant","isOnViewport","setTimeout","fixAndroidResize","entries","find","val","newHeight","currentBreak","keyboardHeight","moveToHeight","isHidden","updateScreenHeights","buildBreakpoints","JSON","parse","lockedBreakpoints","upperThanTop","screenDelta","screenHeightOffset","lowerThanBottom","ev","name","targetTouch","targetTouches","changedTouches","timeDiff","requestAnimationFrame","wrapperEl","position","overflow","node","parentNode","tagName","includes","scrollHeight","clientHeight","offsetWidth","offsetHeight","Settings","initialBreak","followerElement","cssClass","fitHeight","maxFitHeight","fitScreenHeight","backdrop","backdropOpacity","animationType","animationDuration","bottomOffset","freeMode","buttonDestroy","buttonClose","topperOverflowOffset","showDraggable","draggableOver","zStack","onDidDismiss","onDidPresent","onWillPresent","onBackdropTap","onTransitionStart","Breakpoints","calcHeightInProcess","brs","defaultBreaksConf","top","innerHeight","middle","bottom","conf","_d","_e","getPaneFitHeight","bounce","stringify","isPanePresented","console","warn","reduce","prev","curr","nextY","nextBreak","getPaneHeight","scrollElementInit","getCurrentBreakName","images","querySelectorAll","rendered","visibility","display","promises","Array","from","map","image","complete","naturalHeight","onload","all","elmHeight","parseInt","defaultView","getComputedStyle","getPropertyValue","elmMargin","panePaddingBottom","offsetTop","CupertinoPane","zStackDefaults","pushElements","minPushHeight","cardYOffset","cardZScale","cardContrast","stackZAngle","maxDiff","settingsBreaks","assign","HTMLElement","error","events","drawBaseElements","createElement","classList","add","className","internalStyles","transform","draggableEl","moveEl","destroyButtonEl","contentEl","transition","overflowX","addStyle","appendChild","present","setBreakpoints","followerEl","willChange","getTimingFunction","setZstackConfig","setPushMultiplicators","destroyButton","innerHTML","renderBackdrop","body","item","pushTransition","attrElements","setOverflowHeight","offset","opacity","wrappers","contains","isBackdropPresented","backgroundColor","styleString","id","textContent","head","prepend","pushElement","multiplicator","getPushMulitplicator","setProperty","clearPushMultiplicators","i","removeProperty","show","transitionEnd","parseFloat","exec","preventDismiss","disableDrag","enableDrag","calcFitHeight","hide","destroyResets","remove","newPaneY","topHeight","minHeight","scaleNew","pow","scaleNormal","pushY","yNew","yNormal","contrastNew","contrastNormal","setStyles","scale","y","contrast","border","exponentAngle","borderRadius","filter","lastPushed","getXbyY","min","max","params","timingForNext","new","getNextBreakpoint"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["0"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","Support","touch","window","navigator","maxTouchPoints","document","observer","backdropFilter","CSS","supports","passiveListener","supportsPassive","opts","Object","defineProperty","get","addEventListener","gestures","pointerEvents","Device","constructor","this","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","ionic","querySelector","platform","ua","userAgent","screenWidth","screen","width","screenHeight","height","match","indexOf","toLowerCase","os","osVersion","replace","split","webView","matchMedia","matches","webview","standalone","pixelRatio","devicePixelRatio","Events","instance","settings","device","breakpoints","allowClick","disableDragAngle","pointerDown","contentScrollTop","steps","inputBluredbyMove","keyboardVisible","isScrolling","touchEvents","touchEventsTouch","start","move","end","cancel","touchEventsDesktop","simulateTouch","touchStartCb","t","touchStart","touchMoveBackdropCb","touchMoveBackdrop","touchMoveCb","touchMove","touchEndCb","touchEnd","onScrollCb","onScroll","onClickCb","onClick","onKeyboardShowCb","onKeyboardShow","onKeyboardWillHideCb","onKeyboardWillHide","onKeyboardDidHideCb","onKeyboardDidHide","onWindowResizeCb","onWindowResize","attachAllEvents","dragBy","forEach","selector","el","eventListeners","paneEl","topperOverflow","overflowEl","handleKeyboard","parentEl","scrollTop","parentElement","detachAllEvents","removeEventListener","resetEvents","type","_a","_b","_c","backdropEl","passiveListeners","passive","capture","preventClicks","onDragStart","disableDragEvents","preventedDismiss","clientY","clientX","getEvetClientYX","startY","startX","willScrolled","push","posY","time","Date","now","touchMoveStopPropagation","stopPropagation","velocityY","delta","onDrag","isFormElement","target","isElementScrollable","diffY","length","Math","abs","newVal","getPanelTransformY","transitionYDiff","WebKitCSSMatrix","getComputedStyle","transform","m42","activeElement","blur","touchAngle","diffX","atan2","PI","style","overflowY","inverse","forceNewVal","handleTopperLowerPositions","preventDismissEvent","bottomClose","differKoef","topper","screen_height","bottomer","onWillDismiss","prevented","moveToBreak","prevBreakpoint","checkOpacityAttr","checkOverflowAttr","doTransition","translateY","closest","getClosestBreakY","diff","swipeNextSensivity","hasOwnProperty","fastSwipeSensivity","swipeNextPoint","fastSwipeClose","currentBreakpoint","destroy","animate","blurTapEvent","onDragEnd","breaks","onTransitionEnd","clickBottomOpen","enabled","preventDefault","stopImmediatePropagation","isPaneDescendant","isOnViewport","setTimeout","fixAndroidResize","entries","find","val","newHeight","currentBreak","keyboardHeight","moveToHeight","isHidden","updateScreenHeights","buildBreakpoints","JSON","parse","lockedBreakpoints","upperThanTop","screenDelta","screenHeightOffset","lowerThanBottom","ev","name","targetTouch","targetTouches","changedTouches","timeDiff","requestAnimationFrame","wrapperEl","position","overflow","node","parentNode","tagName","includes","scrollHeight","clientHeight","offsetWidth","offsetHeight","Settings","initialBreak","followerElement","cssClass","fitHeight","maxFitHeight","fitScreenHeight","backdrop","backdropOpacity","animationType","animationDuration","bottomOffset","freeMode","buttonDestroy","buttonClose","topperOverflowOffset","showDraggable","draggableOver","zStack","onDidDismiss","onDidPresent","onWillPresent","onBackdropTap","onTransitionStart","Breakpoints","calcHeightInProcess","brs","defaultBreaksConf","top","innerHeight","middle","bottom","conf","_d","_e","getPaneFitHeight","bounce","stringify","isPanePresented","console","warn","reduce","prev","curr","nextY","nextBreak","getPaneHeight","scrollElementInit","getCurrentBreakName","images","querySelectorAll","rendered","visibility","display","promises","Array","from","map","image","complete","naturalHeight","onload","all","elmHeight","parseInt","defaultView","getPropertyValue","elmMargin","panePaddingBottom","offsetTop","CupertinoPane","zStackDefaults","pushElements","minPushHeight","cardYOffset","cardZScale","cardContrast","stackZAngle","maxDiff","settingsBreaks","assign","HTMLElement","error","events","drawBaseElements","createElement","classList","add","className","internalStyles","draggableEl","moveEl","destroyButtonEl","contentEl","transition","overflowX","addStyle","appendChild","present","setBreakpoints","followerEl","willChange","buildTransitionValue","setZstackConfig","setPushMultiplicators","destroyButton","innerHTML","renderBackdrop","body","item","pushTransition","attrElements","setOverflowHeight","offset","opacity","wrappers","contains","isBackdropPresented","backgroundColor","styleString","id","textContent","head","prepend","pushElement","multiplicator","getPushMulitplicator","setProperty","clearPushMultiplicators","i","removeProperty","show","transitionEnd","parseFloat","exec","preventDismiss","disableDrag","enableDrag","calcFitHeight","hide","destroyResets","remove","newPaneY","topHeight","minHeight","scaleNew","pow","scaleNormal","pushY","yNew","yNormal","contrastNew","contrastNormal","setStyles","scale","y","contrast","border","exponentAngle","borderRadius","filter","lastPushed","getXbyY","min","max","params","new","getNextBreakpoint"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cupertino-pane.js b/dist/cupertino-pane.js index 0d6d9eb4..44214702 100644 --- a/dist/cupertino-pane.js +++ b/dist/cupertino-pane.js @@ -7,7 +7,7 @@ * * Released under the MIT License * - * Released on: November 9, 2021 + * Released on: November 11, 2021 */ (function (global, factory) { @@ -432,10 +432,19 @@ return; } let newVal = this.instance.getPanelTransformY() + diffY; - // Patch for 'touchmove' first event - // when start slowly events with small velocity - if (this.steps.length < 2 && velocityY < 1) { - newVal = this.instance.getPanelTransformY() + (diffY * velocityY); + // First event after touchmove only + if (this.steps.length < 2) { + // Patch for 'touchmove' first event + // when start slowly events with small velocity + if (velocityY < 1) { + newVal = this.instance.getPanelTransformY() + (diffY * velocityY); + } + // Move while transition patch next transitions + let computedTranslateY = new WebKitCSSMatrix(window.getComputedStyle(this.instance.paneEl).transform).m42; + let transitionYDiff = computedTranslateY - this.instance.getPanelTransformY(); + if (Math.abs(transitionYDiff)) { + newVal += transitionYDiff; + } } // Detect if input was blured // TODO: Check that blured from pane child instance @@ -1341,7 +1350,7 @@ this.followerEl = document.querySelector(this.settings.followerElement); this.followerEl.style.willChange = 'transform, border-radius'; this.followerEl.style.transform = `translateY(0px) translateZ(0px)`; - this.followerEl.style.transition = `all ${this.settings.animationDuration}ms ${this.getTimingFunction((_a = this.settings.breaks[this.currentBreak()]) === null || _a === void 0 ? void 0 : _a.bounce)} 0s`; + this.followerEl.style.transition = this.buildTransitionValue((_a = this.settings.breaks[this.currentBreak()]) === null || _a === void 0 ? void 0 : _a.bounce); } // Assign multiplicators for push elements if (this.settings.zStack) { @@ -1475,8 +1484,11 @@ /** * Private Utils methods */ - getTimingFunction(bounce) { - return bounce ? 'cubic-bezier(0.175, 0.885, 0.370, 1.120)' : this.settings.animationType; + buildTransitionValue(bounce) { + if (bounce) { + return `all 300ms cubic-bezier(.155,1.105,.295,1.12)`; + } + return `all ${this.settings.animationDuration}ms ${this.settings.animationType}`; } isBackdropPresented() { return document.querySelector(`.cupertino-pane-wrapper .backdrop`) @@ -1841,12 +1853,11 @@ // Get timing function && push for next const nextBreak = Object.entries(this.breakpoints.breaks).find(val => val[1] === params.translateY); let bounce = nextBreak && ((_a = this.settings.breaks[nextBreak[0]]) === null || _a === void 0 ? void 0 : _a.bounce); - const timingForNext = this.getTimingFunction(bounce); // style - this.paneEl.style.transition = `transform ${this.settings.animationDuration}ms ${timingForNext} 0s`; + this.paneEl.style.transition = this.buildTransitionValue(bounce); // Bind for follower same transitions if (this.followerEl) { - this.followerEl.style.transition = `transform ${this.settings.animationDuration}ms ${timingForNext} 0s`; + this.followerEl.style.transition = this.buildTransitionValue(bounce); } // Push transition if (this.settings.zStack) { diff --git a/dist/cupertino-pane.js.map b/dist/cupertino-pane.js.map index d0373b99..76774f2c 100644 --- a/dist/cupertino-pane.js.map +++ b/dist/cupertino-pane.js.map @@ -1 +1 @@ -{"version":3,"file":"cupertino-pane.js.map","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"cupertino-pane.js.map","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/cupertino-pane.min.js b/dist/cupertino-pane.min.js index 6ed9382c..d079e844 100644 --- a/dist/cupertino-pane.min.js +++ b/dist/cupertino-pane.min.js @@ -7,7 +7,7 @@ * * Released under the MIT License * - * Released on: November 9, 2021 + * Released on: November 11, 2021 */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).CupertinoPane=e()}(this,(function(){"use strict"; @@ -24,5 +24,5 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */function t(t,e,s,i){return new(s||(s=Promise))((function(n,r){function o(t){try{h(i.next(t))}catch(t){r(t)}}function a(t){try{h(i.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(o,a)}h((i=i.apply(t,e||[])).next())}))}class e{static get touch(){return window.Modernizr&&!0===window.Modernizr.touch||!!(window.navigator.maxTouchPoints>0||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch)}static get observer(){return"MutationObserver"in window||"WebkitMutationObserver"in window}static get backdropFilter(){return CSS.supports("backdrop-filter","blur(0px)")||CSS.supports("-webkit-backdrop-filter","blur(0px)")}static get passiveListener(){let t=!1;try{const e=Object.defineProperty({},"passive",{get(){t=!0}});window.addEventListener("testPassiveListener",null,e)}catch(t){}return t}static get gestures(){return"ongesturestart"in window}static get pointerEvents(){return!!window.PointerEvent&&"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0}}class s{constructor(){this.ios=!1,this.android=!1,this.androidChrome=!1,this.desktop=!1,this.iphone=!1,this.ipod=!1,this.ipad=!1,this.edge=!1,this.ie=!1,this.firefox=!1,this.macos=!1,this.windows=!1,this.cordova=!(!window.cordova&&!window.phonegap),this.phonegap=!(!window.cordova&&!window.phonegap),this.electron=!1,this.ionic=!!document.querySelector("ion-app");const t=window.navigator.platform,s=window.navigator.userAgent,i=window.screen.width,n=window.screen.height;let r=s.match(/(Android);?[\s\/]+([\d.]+)?/),o=s.match(/(iPad).*OS\s([\d_]+)/),a=s.match(/(iPod)(.*OS\s([\d_]+))?/),h=!this.ipad&&s.match(/(iPhone\sOS|iOS)\s([\d_]+)/),l=s.indexOf("MSIE ")>=0||s.indexOf("Trident/")>=0,p=s.indexOf("Edge/")>=0,c=s.indexOf("Gecko/")>=0&&s.indexOf("Firefox/")>=0,d="Win32"===t,u=s.toLowerCase().indexOf("electron")>=0,g="MacIntel"===t;!o&&g&&e.touch&&(1024===i&&1366===n||834===i&&1194===n||834===i&&1112===n||768===i&&1024===n)&&(o=s.match(/(Version)\/([\d.]+)/),g=!1),this.ie=l,this.edge=p,this.firefox=c,r&&!d&&(this.os="android",this.osVersion=r[2],this.android=!0,this.androidChrome=s.toLowerCase().indexOf("chrome")>=0),(o||h||a)&&(this.os="ios",this.ios=!0),h&&!a&&(this.osVersion=h[2].replace(/_/g,"."),this.iphone=!0),o&&(this.osVersion=o[2].replace(/_/g,"."),this.ipad=!0),a&&(this.osVersion=a[3]?a[3].replace(/_/g,"."):null,this.ipod=!0),this.ios&&this.osVersion&&s.indexOf("Version/")>=0&&"10"===this.osVersion.split(".")[0]&&(this.osVersion=s.toLowerCase().split("version/")[1].split(" ")[0]),this.webView=!(!(h||o||a)||!s.match(/.*AppleWebKit(?!.*Safari)/i)&&!window.navigator.standalone)||window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches,this.webview=this.webView,this.standalone=this.webView,this.desktop=!(this.ios||this.android)||u,this.desktop&&(this.electron=u,this.macos=g,this.windows=d,this.macos&&(this.os="macos"),this.windows&&(this.os="windows")),this.pixelRatio=window.devicePixelRatio||1}}class i{constructor(t,s,i,n){this.instance=t,this.settings=s,this.device=i,this.breakpoints=n,this.allowClick=!0,this.disableDragAngle=!1,this.pointerDown=!1,this.contentScrollTop=0,this.steps=[],this.inputBluredbyMove=!1,this.keyboardVisible=!1,this.isScrolling=!1,this.touchEvents=(()=>{const t=["touchstart","touchmove","touchend","touchcancel"];let s=["mousedown","mousemove","mouseup"];e.pointerEvents&&(s=["pointerdown","pointermove","pointerup"]);const i={start:t[0],move:t[1],end:t[2],cancel:t[3]},n={start:s[0],move:s[1],end:s[2]};return e.touch||!this.settings.simulateTouch?i:n})(),this.touchStartCb=t=>this.touchStart(t),this.touchMoveBackdropCb=t=>this.touchMoveBackdrop(t),this.touchMoveCb=t=>this.touchMove(t),this.touchEndCb=t=>this.touchEnd(t),this.onScrollCb=t=>this.onScroll(t),this.onClickCb=t=>this.onClick(t),this.onKeyboardShowCb=t=>this.onKeyboardShow(t),this.onKeyboardWillHideCb=t=>this.onKeyboardWillHide(t),this.onKeyboardDidHideCb=t=>this.onKeyboardDidHide(t),this.onWindowResizeCb=t=>this.onWindowResize(t)}attachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("addEventListener",e)})):this.eventListeners("addEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.addEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.addEventListener("keyboardWillShow",this.onKeyboardShowCb),window.addEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.addEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),!this.settings.handleKeyboard&&this.device.cordova&&this.device.android&&window.addEventListener("keyboardWillHide",(()=>{this.instance.parentEl.scrollTop=0,this.instance.parentEl.parentElement&&(this.instance.parentEl.parentElement.scrollTop=0,this.instance.parentEl.parentElement.parentElement&&(this.instance.parentEl.parentElement.parentElement.scrollTop=0))})),window.addEventListener("resize",this.onWindowResizeCb)}detachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("removeEventListener",e)})):this.eventListeners("removeEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.removeEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.removeEventListener("keyboardWillShow",this.onKeyboardShowCb),window.removeEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.removeEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),window.removeEventListener("resize",this.onWindowResizeCb)}resetEvents(){this.detachAllEvents(),this.attachAllEvents()}eventListeners(t,s){var i,n,r;if(!e.touch&&e.pointerEvents)s[t](this.touchEvents.start,this.touchStartCb,!1),s[t](this.touchEvents.move,this.touchMoveCb,!1),s[t](this.touchEvents.end,this.touchEndCb,!1),null===(i=this.instance.backdropEl)||void 0===i||i[t](this.touchEvents.move,this.touchMoveBackdropCb,!1);else{if(e.touch){const i=!("touchstart"!==this.touchEvents.start||!e.passiveListener||!this.settings.passiveListeners)&&{passive:!0,capture:!1};s[t](this.touchEvents.start,this.touchStartCb,i),s[t](this.touchEvents.move,this.touchMoveCb,!!e.passiveListener&&{passive:!1,capture:!1}),s[t](this.touchEvents.end,this.touchEndCb,i),null===(n=this.instance.backdropEl)||void 0===n||n[t](this.touchEvents.move,this.touchMoveBackdropCb,!!e.passiveListener&&{passive:!1,capture:!1}),this.touchEvents.cancel&&s[t](this.touchEvents.cancel,this.touchEndCb,i)}(this.settings.simulateTouch&&!this.device.ios&&!this.device.android||this.settings.simulateTouch&&!e.touch&&this.device.ios)&&(s[t]("mousedown",this.touchStartCb,!1),s[t]("mousemove",this.touchMoveCb,!1),s[t]("mouseup",this.touchEndCb,!1),null===(r=this.instance.backdropEl)||void 0===r||r[t]("mousemove",this.touchMoveBackdropCb,!1))}this.settings.preventClicks&&s[t]("click",this.onClickCb,!0)}touchStart(t){if(this.settings.onDragStart(t),this.allowClick=!0,this.instance.disableDragEvents)return;this.disableDragAngle=!1,this.isScrolling=!1,this.instance.preventedDismiss=!1;const{clientY:e,clientX:s}=this.getEvetClientYX(t,"touchstart");this.startY=e,this.startX=s,"mousedown"===t.type&&(this.pointerDown=!0),this.contentScrollTop&&this.willScrolled(t)&&(this.startY+=this.contentScrollTop),this.steps.push({posY:this.startY,time:Date.now()})}touchMoveBackdrop(t){this.settings.touchMoveStopPropagation&&t.stopPropagation()}touchMove(t){var e;const{clientY:s,clientX:i,velocityY:n}=this.getEvetClientYX(t,"touchmove");if(t.delta=(null===(e=this.steps[0])||void 0===e?void 0:e.posY)-s,this.settings.onDrag(t),this.allowClick=!1,this.isFormElement(t.target)&&this.isElementScrollable(t.target))return;if(this.instance.disableDragEvents)return void(this.steps=[]);if(this.disableDragAngle)return;if(this.instance.preventedDismiss)return;if(this.settings.touchMoveStopPropagation&&t.stopPropagation(),"mousemove"===t.type&&!this.pointerDown)return;const r=s-this.steps[this.steps.length-1].posY;if(!Math.abs(r))return;let o=this.instance.getPanelTransformY()+r;if(this.steps.length<2&&n<1&&(o=this.instance.getPanelTransformY()+r*n),this.steps.length>2&&this.isFormElement(document.activeElement)&&!this.isFormElement(t.target)&&(document.activeElement.blur(),this.inputBluredbyMove=!0),this.settings.touchAngle&&!this.isScrolling){let t;const e=i-this.startX,n=s-this.startY;if(t=180*Math.atan2(Math.abs(n),Math.abs(e))/Math.PI,e*e+n*n>=25&&90-t>this.settings.touchAngle&&1===this.steps.length)return void(this.disableDragAngle=!0)}if("auto"===this.instance.overflowEl.style.overflowY){if(this.settings.inverse&&this.willScrolled(t))return void(this.contentScrollTop=0);if(!this.settings.inverse&&this.contentScrollTop>0)return}let a=this.handleTopperLowerPositions(o,r);if(a&&(o=a),this.instance.getPanelTransformY()!==o){if(!this.instance.preventedDismiss&&this.instance.preventDismissEvent&&this.settings.bottomClose){let t=(-this.breakpoints.topper+this.breakpoints.topper-this.instance.getPanelTransformY())/this.breakpoints.topper/-8;if(o=this.instance.getPanelTransformY()+r*(.5-t),-1*(s-220-this.instance.screen_height)<=this.instance.screen_height-this.breakpoints.bottomer)return this.instance.preventedDismiss=!0,this.settings.onWillDismiss({prevented:!0}),void this.instance.moveToBreak(this.breakpoints.prevBreakpoint)}this.instance.checkOpacityAttr(o),this.instance.checkOverflowAttr(o),this.instance.doTransition({type:"move",translateY:o}),this.steps.push({posY:s,time:Date.now()})}}touchEnd(t){var e,s;if(this.instance.disableDragEvents)return;"mouseup"===t.type&&(this.pointerDown=!1);let i=this.breakpoints.getClosestBreakY();const n=(null===(e=this.steps[this.steps.length-1])||void 0===e?void 0:e.posY)-(null===(s=this.steps[this.steps.length-2])||void 0===s?void 0:s.posY),r=window.hasOwnProperty("cordova")?this.settings.fastSwipeSensivity+2:this.settings.fastSwipeSensivity;if(Math.abs(n)>=r&&(i=this.instance.swipeNextPoint(n,r,i),this.settings.fastSwipeClose&&this.breakpoints.currentBreakpointthis.fixAndroidResize()),20),this.keyboardVisible=!0,this.breakpoints.prevBreakpoint=Object.entries(this.breakpoints.breaks).find((t=>t[1]===this.instance.getPanelTransformY()))[0];let e=this.settings.breaks[this.instance.currentBreak()].height+t.keyboardHeight;window.matchMedia("(orientation: landscape)").matches&&(e=this.instance.screen_height),e>this.instance.screen_height-80&&(e=this.instance.screen_height-80),e-50>=this.settings.breaks[this.instance.currentBreak()].height&&this.instance.moveToHeight(e)}onKeyboardWillHide(t){this.keyboardVisible&&this.isOnViewport()&&(this.device.android&&this.fixAndroidResize(),this.inputBluredbyMove?this.inputBluredbyMove=!1:this.instance.isHidden()||this.instance.moveToBreak(this.breakpoints.prevBreakpoint))}onKeyboardDidHide(t){this.keyboardVisible=!1}onWindowResize(e){return t(this,void 0,void 0,(function*(){this.keyboardVisible||(yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.instance.updateScreenHeights(),this.breakpoints.buildBreakpoints(JSON.parse(this.breakpoints.lockedBreakpoints)))}))}handleTopperLowerPositions(t,e){if(!this.settings.inverse){if(!this.settings.upperThanTop&&t<=this.breakpoints.topper)return this.breakpoints.topper;if(t<=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.lowerThanBottom&&t>=this.breakpoints.bottomer)return this.breakpoints.bottomer}if(this.settings.inverse){if(t>=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.upperThanTop&&t>=this.breakpoints.topper)return this.breakpoints.topper}}getEvetClientYX(t,e){var s,i;const n=t.type===e&&t.targetTouches&&(t.targetTouches[0]||t.changedTouches[0]),r=t.type===e?n.clientY:t.clientY,o=t.type===e?n.clientX:t.clientX,a=Date.now()-((null===(s=this.steps[this.steps.length-1])||void 0===s?void 0:s.time)||0);return{clientY:r,clientX:o,velocityY:Math.abs(r-((null===(i=this.steps[this.steps.length-1])||void 0===i?void 0:i.posY)||0))/a}}fixAndroidResize(){this.instance.paneEl&&(document.querySelector("ion-app"),window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="100%",this.instance.paneEl.style.position="absolute",window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="unset",this.instance.paneEl.style.position="fixed"}))})))}willScrolled(t){return!(!this.isElementScrollable(this.instance.overflowEl)||"hidden"===this.instance.overflowEl.style.overflow)}isPaneDescendant(t){let e=t.parentNode;for(;null!=e;){if(e==this.instance.paneEl)return!0;e=e.parentNode}return!1}isFormElement(t){return!!(t&&t.tagName&&["input","select","option","textarea","button","label"].includes(t.tagName.toLowerCase()))}isElementScrollable(t){return t.scrollHeight>t.clientHeight}isOnViewport(){return!this.instance.paneEl||0!==this.instance.paneEl.offsetWidth||0!==this.instance.paneEl.offsetHeight}}class n{constructor(){this.instance={initialBreak:"middle",inverse:!1,parentElement:null,followerElement:null,cssClass:null,fitHeight:!1,maxFitHeight:null,fitScreenHeight:!0,backdrop:!1,backdropOpacity:.4,animationType:"ease",animationDuration:300,dragBy:null,bottomOffset:0,bottomClose:!1,fastSwipeClose:!1,fastSwipeSensivity:3,freeMode:!1,buttonDestroy:!0,buttonClose:!0,topperOverflow:!0,topperOverflowOffset:0,lowerThanBottom:!0,upperThanTop:!1,showDraggable:!0,draggableOver:!1,clickBottomOpen:!0,preventClicks:!0,handleKeyboard:!0,simulateTouch:!0,passiveListeners:!0,touchMoveStopPropagation:!1,touchAngle:45,breaks:{},zStack:null,onDidDismiss:()=>{},onWillDismiss:()=>{},onDidPresent:()=>{},onWillPresent:()=>{},onDragStart:()=>{},onDrag:()=>{},onDragEnd:()=>{},onBackdropTap:()=>{},onTransitionStart:()=>{},onTransitionEnd:()=>{}}}}class r{constructor(t,e){this.instance=t,this.settings=e,this.breaks={},this.calcHeightInProcess=!1,this.brs=[],this.defaultBreaksConf={top:{enabled:!0,height:window.innerHeight-47.25},middle:{enabled:!0,height:300},bottom:{enabled:!0,height:100}}}buildBreakpoints(e,s=0){var i,n,r,o,a;return t(this,void 0,void 0,(function*(){if(this.settings.bottomOffset=s||this.settings.bottomOffset,this.breaks={top:this.instance.screenHeightOffset,middle:this.instance.screenHeightOffset,bottom:this.instance.screenHeightOffset},this.settings.fitHeight){this.settings.fitScreenHeight=!1,this.settings.initialBreak="top",this.settings.topperOverflow=!1;let t=yield this.getPaneFitHeight();this.settings.maxFitHeight&&t>this.settings.maxFitHeight&&(t=this.settings.maxFitHeight,this.settings.topperOverflow=!0),(e={top:{enabled:!0,height:t},middle:{enabled:!1}}).top.bounce=null===(n=null===(i=this.settings.breaks)||void 0===i?void 0:i.top)||void 0===n?void 0:n.bounce,e.bottom=(null===(r=this.settings.breaks)||void 0===r?void 0:r.bottom)||{enabled:!0,height:0}}if(["top","middle","bottom"].forEach((t=>{var s;this.breaks[t]-=this.settings.bottomOffset,this.settings.breaks[t]||(this.settings.breaks[t]=this.defaultBreaksConf[t]),e&&e[t]&&(this.settings.breaks[t]=e[t]),this.settings.fitScreenHeight&&((null===(s=this.settings.breaks[t])||void 0===s?void 0:s.height)>this.instance.screen_height&&(this.settings.breaks[t].height=this.instance.screen_height-this.settings.bottomOffset),this.settings.breaks.top&&this.settings.breaks.middle&&this.settings.breaks.top.height-50<=this.settings.breaks.middle.height&&(this.settings.breaks.middle.enabled=!1,this.settings.initialBreak="top")),this.settings.fitHeight&&"top"===t&&(this.settings.breaks[t].height>this.instance.screen_height?(this.settings.breaks[t].height=this.instance.screen_height-2*this.settings.bottomOffset,this.settings.topperOverflow=!0):this.instance.overflowEl&&!this.settings.maxFitHeight&&(this.settings.topperOverflow=!1,this.instance.overflowEl.style.overflowY="hidden")),this.settings.breaks[t]&&this.settings.breaks[t].enabled&&this.settings.breaks[t].height&&(this.settings.inverse?this.breaks[t]=this.settings.breaks[t].height+this.settings.bottomOffset:this.breaks[t]-=this.settings.breaks[t].height)})),this.lockedBreakpoints||(this.lockedBreakpoints=JSON.stringify(this.settings.breaks)),this.instance.isPanePresented()||this.settings.breaks[this.settings.initialBreak].enabled||console.warn("Cupertino Pane: Please set initialBreak for enabled breakpoint"),this.settings.breaks.middle.height>=this.settings.breaks.top.height&&console.warn("Cupertino Pane: Please set middle height lower than top height"),this.settings.breaks.middle.height<=this.settings.breaks.bottom.height&&console.warn("Cupertino Pane: Please set bottom height lower than middle height"),this.brs=[],["top","middle","bottom"].forEach((t=>{this.settings.breaks[t].enabled&&this.brs.push(this.breaks[t])})),this.topper=this.brs.reduce(((t,e)=>eMath.abs(e)>Math.abs(t)?e:t)),this.settings.inverse&&(this.topper=this.bottomer),this.instance.isPanePresented()||(this.currentBreakpoint=this.breaks[this.settings.initialBreak],!this.settings.inverse||this.settings.breaks.bottom.enabled||this.settings.breaks.middle.enabled||(this.settings.topperOverflow=!1)),this.instance.isPanePresented()){if((null===(o=this.settings.breaks[this.prevBreakpoint])||void 0===o?void 0:o.enabled)&&(this.instance.isHidden()||this.instance.moveToBreak(this.prevBreakpoint)),!(null===(a=this.settings.breaks[this.prevBreakpoint])||void 0===a?void 0:a.enabled)){let t=this.instance.swipeNextPoint(1,1,this.getClosestBreakY());const e=Object.entries(this.breaks).find((e=>e[1]===t));this.instance.moveToBreak(e[0])}this.instance.paneEl.style.top=this.settings.inverse?`-${this.bottomer-this.settings.bottomOffset}px`:"unset",this.instance.paneEl.style.height=`${this.instance.getPaneHeight()}px`,this.instance.scrollElementInit(),this.instance.checkOpacityAttr(this.currentBreakpoint),this.instance.checkOverflowAttr(this.currentBreakpoint)}}))}getCurrentBreakName(){return this.breaks.top===this.currentBreakpoint?"top":this.breaks.middle===this.currentBreakpoint?"middle":this.breaks.bottom===this.currentBreakpoint?"bottom":null}getPaneFitHeight(){return t(this,void 0,void 0,(function*(){this.calcHeightInProcess=!0;let t,e=this.instance.el.querySelectorAll("img");this.instance.el.style.height="unset",this.instance.rendered||(this.instance.el.style.visibility="hidden",this.instance.el.style.pointerEvents="none",this.instance.el.style.display="block",this.instance.wrapperEl.style.visibility="hidden",this.instance.wrapperEl.style.pointerEvents="none",this.instance.wrapperEl.style.display="block");let s=[];e.length&&(s=Array.from(e).map((t=>new Promise((e=>{t.complete&&t.naturalHeight?e(!0):t.onload=()=>e(!0)}))))),s.push(new Promise((t=>setTimeout((()=>t(!0)),this.instance.rendered?0:150)))),yield Promise.all(s);let i=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("height")),n=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-top"))+parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-bottom")),r=parseInt(document.defaultView.getComputedStyle(this.instance.el.parentElement,"").getPropertyValue("padding-bottom"));return t=i+n,t+=this.instance.el.offsetTop,t+=r,this.instance.rendered||(this.instance.el.style.visibility="unset",this.instance.el.style.pointerEvents="unset",this.instance.el.style.display="none",this.instance.wrapperEl.style.visibility="unset",this.instance.wrapperEl.style.pointerEvents="unset",this.instance.wrapperEl.style.display="none"),this.calcHeightInProcess=!1,t}))}getClosestBreakY(){return this.brs.reduce(((t,e)=>Math.abs(e-this.instance.getPanelTransformY()){let i={},n={};if(this.settings.inverse?(i.top=this.breakpoints.breaks.bottom,i.middle=this.breakpoints.breaks.middle,i.bottom=this.breakpoints.breaks.top,n.top=Object.assign({},this.settings.breaks.bottom),n.middle=Object.assign({},this.settings.breaks.middle),n.bottom=Object.assign({},this.settings.breaks.top)):(i=Object.assign({},this.breakpoints.breaks),n=Object.assign({},this.settings.breaks)),this.breakpoints.currentBreakpoint===i.top){if(t>e){if(n.middle.enabled)return i.middle;if(n.bottom.enabled)return i.middlee&&n.bottom.enabled?i.bottom:i.middle;if(this.breakpoints.currentBreakpoint===i.bottom){if(t<-e){if(n.middle.enabled)return i.middle>s?s:i.middle;if(n.top.enabled)return i.top}return i.bottom}return s},t instanceof HTMLElement?this.selector=t:this.selector=document.querySelector(t),this.selector?this.isPanePresented()?console.error("Cupertino Pane: specified selector or DOM element already in use",this.selector):(this.el=this.selector,this.el.style.display="none",this.settings=Object.assign(Object.assign({},this.settings),e),this.settings.parentElement?this.settings.parentElement=document.querySelector(this.settings.parentElement):this.settings.parentElement=this.el.parentElement,this.breakpoints=new r(this,this.settings),this.events=new i(this,this.settings,this.device,this.breakpoints)):console.warn("Cupertino Pane: wrong selector or DOM element specified",this.selector)}drawBaseElements(){this.parentEl=this.settings.parentElement,this.wrapperEl=document.createElement("div"),this.wrapperEl.classList.add("cupertino-pane-wrapper"),this.settings.inverse&&this.wrapperEl.classList.add("inverse"),this.settings.cssClass&&(this.wrapperEl.className+=` ${this.settings.cssClass}`);let t="";t+="\n .cupertino-pane-wrapper {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n }\n ",this.paneEl=document.createElement("div"),this.paneEl.style.transform=`translateY(${this.screenHeightOffset}px) translateZ(0px)`,this.paneEl.classList.add("pane"),t+="\n .cupertino-pane-wrapper .pane {\n position: fixed;\n z-index: 11;\n width: 100%;\n max-width: 500px;\n left: 0px;\n right: 0px;\n margin-left: auto;\n margin-right: auto;\n background: var(--cupertino-pane-background, #ffffff);\n color: var(--cupertino-pane-color, #333333);\n box-shadow: var(--cupertino-pane-shadow, 0 4px 16px rgba(0,0,0,.12));\n will-change: transform;\n padding-top: 15px; \n border-radius: var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px) \n 0 0;\n }\n .cupertino-pane-wrapper.inverse .pane {\n padding-bottom: 15px; \n border-radius: 0 0 20px 20px;\n border-radius: 0 0\n var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px);\n }\n ",this.draggableEl=document.createElement("div"),this.draggableEl.classList.add("draggable"),this.settings.draggableOver&&this.draggableEl.classList.add("over"),t+="\n .cupertino-pane-wrapper .draggable {\n padding: 5px;\n position: absolute;\n left: 0;\n right: 0;\n margin-left: auto;\n margin-right: auto;\n height: 30px;\n z-index: 12;\n top: 0;\n bottom: initial;\n }\n .cupertino-pane-wrapper .draggable.over {\n top: -30px;\n padding: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable {\n bottom: 0;\n top: initial;\n }\n .cupertino-pane-wrapper.inverse .draggable.over {\n bottom: -30px;\n top: initial;\n }\n ",this.moveEl=document.createElement("div"),this.moveEl.classList.add("move"),t+=`\n .cupertino-pane-wrapper .move {\n margin: 0 auto;\n height: 5px;\n background: var(--cupertino-pane-move-background, #c0c0c0);\n width: 36px;\n border-radius: 4px;\n }\n .cupertino-pane-wrapper .draggable.over .move {\n width: 70px; \n background: var(--cupertino-pane-move-background, rgba(225, 225, 225, 0.6));\n ${e.backdropFilter?"\n backdrop-filter: saturate(180%) blur(20px);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n ":""}\n }\n .cupertino-pane-wrapper.inverse .move {\n margin-top: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable.over .move {\n margin-top: -5px;\n }\n `,this.destroyButtonEl=document.createElement("div"),this.destroyButtonEl.classList.add("destroy-button"),t+="\n .cupertino-pane-wrapper .destroy-button {\n width: 26px;\n height: 26px;\n position: absolute;\n background: var(--cupertino-pane-destroy-button-background, #ebebeb);\n fill: var(--cupertino-pane-icon-close-color, #7a7a7e);\n right: 20px;\n z-index: 14;\n border-radius: 100%;\n top: 16px;\n }\n ",this.contentEl=this.el,this.contentEl.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.contentEl.style.overflowX="hidden",t+="\n .cupertino-pane-wrapper .backdrop {\n overflow: hidden;\n position: fixed;\n width: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n top: 0;\n display: none;\n z-index: 10;\n }\n ",this.addStyle(t),this.parentEl.appendChild(this.wrapperEl),this.wrapperEl.appendChild(this.paneEl),this.paneEl.appendChild(this.contentEl),this.settings.showDraggable&&(this.paneEl.appendChild(this.draggableEl),this.draggableEl.appendChild(this.moveEl))}present(e={animate:!1}){var s;return t(this,void 0,void 0,(function*(){if(this.el)if(this.isPanePresented()&&this.rendered)this.moveToBreak(this.settings.initialBreak);else{if(!this.isPanePresented()||this.rendered){if(this.settings.onWillPresent(),this.updateScreenHeights(),this.drawBaseElements(),yield this.setBreakpoints(),this.paneEl.style.height=`${this.getPaneHeight()}px`,this.settings.inverse&&(this.paneEl.style.top=`-${this.breakpoints.bottomer-this.settings.bottomOffset}px`),this.wrapperEl.style.display="block",this.contentEl.style.display="block",this.wrapperEl.classList.add("rendered"),this.rendered=!0,this.settings.followerElement){if(!document.querySelector(this.settings.followerElement))return void console.warn("Cupertino Pane: wrong follower element selector specified",this.settings.followerElement);this.followerEl=document.querySelector(this.settings.followerElement),this.followerEl.style.willChange="transform, border-radius",this.followerEl.style.transform="translateY(0px) translateZ(0px)",this.followerEl.style.transition=`all ${this.settings.animationDuration}ms ${this.getTimingFunction(null===(s=this.settings.breaks[this.currentBreak()])||void 0===s?void 0:s.bounce)} 0s`}return this.settings.zStack&&(this.setZstackConfig(this.settings.zStack),this.setPushMultiplicators()),this.settings.buttonClose&&this.settings.buttonDestroy&&!this.settings.inverse&&(this.paneEl.appendChild(this.destroyButtonEl),this.destroyButtonEl.addEventListener("click",(t=>this.destroy({animate:!0,destroyButton:!0}))),this.destroyButtonEl.innerHTML='\n \n '),this.settings.bottomClose&&(this.settings.breaks.bottom.enabled=!0),this.settings.freeMode&&(this.settings.lowerThanBottom=!1),this.settings.backdrop&&this.renderBackdrop(),this.checkOpacityAttr(this.breakpoints.currentBreakpoint),this.device.android&&(document.body.style.overscrollBehaviorY="none"),e.animate?yield this.doTransition({type:"present",translateY:this.breakpoints.breaks[this.settings.initialBreak]}):(this.breakpoints.prevBreakpoint=this.settings.initialBreak,this.paneEl.style.transform=`translateY(${this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`,this.settings.backdrop&&(this.backdropEl.style.display="block"),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.breakpoints.breaks[this.settings.initialBreak],"unset"))),this.settings.onDidPresent()),yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.scrollElementInit(),this.checkOverflowAttr(this.breakpoints.currentBreakpoint),this.events.attachAllEvents(),this}console.warn("Cupertino Pane: specified selector or DOM element already in use",this.selector)}}))}getPaneHeight(){return this.settings.inverse?this.breakpoints.bottomer-this.settings.bottomOffset:this.screen_height-this.breakpoints.topper-this.settings.bottomOffset}updateScreenHeights(){this.settings.inverse?(this.screen_height=window.innerHeight,this.screenHeightOffset=0):(this.screen_height=window.innerHeight,this.screenHeightOffset=window.innerHeight)}scrollElementInit(){let t=this.el.querySelectorAll("[overflow-y]");!t.length||t.length>1?this.overflowEl=this.contentEl:(this.overflowEl=t[0],this.overflowEl.style.overflowX="hidden"),this.settings.topperOverflow&&(this.settings.upperThanTop&&console.warn('Cupertino Pane: "upperThanTop" allowed for disabled "topperOverflow"'),this.setOverflowHeight())}setOverflowHeight(t=0){this.settings.inverse?this.overflowEl.style.height=this.getPaneHeight()-30-this.settings.topperOverflowOffset-this.overflowEl.offsetTop+"px":this.overflowEl.style.height=this.getPaneHeight()-this.settings.topperOverflowOffset-this.overflowEl.offsetTop-t+"px"}checkOpacityAttr(t){let e=this.el.querySelectorAll("[hide-on-bottom]");e.length&&(this.settings.inverse||e.forEach((e=>{e.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,e.style.opacity=t>=this.breakpoints.breaks.bottom?"0":"1"})))}checkOverflowAttr(t){this.settings.topperOverflow&&this.overflowEl&&(this.settings.inverse?this.overflowEl.style.overflowY=t>=this.breakpoints.bottomer?"auto":"hidden":this.overflowEl.style.overflowY=t<=this.breakpoints.topper?"auto":"hidden")}isPanePresented(){let t=Array.from(document.querySelectorAll(".cupertino-pane-wrapper.rendered"));return!!t.length&&!!t.find((t=>t.contains(this.selector)))}getTimingFunction(t){return t?"cubic-bezier(0.175, 0.885, 0.370, 1.120)":this.settings.animationType}isBackdropPresented(){return!!document.querySelector(".cupertino-pane-wrapper .backdrop")}renderBackdrop(){this.backdropEl=document.createElement("div"),this.backdropEl.classList.add("backdrop"),this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`,this.wrapperEl.appendChild(this.backdropEl),this.backdropEl.addEventListener("click",(t=>this.settings.onBackdropTap()))}addStyle(t){if(document.querySelector("#cupertino-panes-internal"))return;const e=document.createElement("style");e.id="cupertino-panes-internal",t=t.replace(/\s\s+/g," "),e.textContent=t,document.head.prepend(e)}setPushMultiplicators(){this.settings.zStack.pushElements.forEach((t=>{let e=document.querySelector(t),s=this.getPushMulitplicator(e);s=s?s+1:1,e.style.setProperty("--push-multiplicator",`${s}`)}))}clearPushMultiplicators(){for(let t=0;t{this.backdropEl.style.transition="initial",this.backdropEl.style.display="none",this.backdropEl.removeEventListener("transitionend",e)};if(this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",t.show)this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50);else{if("none"===this.backdropEl.style.display)return;this.backdropEl.addEventListener("transitionend",e)}}getPanelTransformY(){return parseFloat(/\.*translateY\((.*)px\)/i.exec(this.paneEl.style.transform)[1])}preventDismiss(t=!1){this.preventDismissEvent=t}disableDrag(){this.disableDragEvents=!0}enableDrag(){this.disableDragEvents=!1}setBreakpoints(e,s){return t(this,void 0,void 0,(function*(){!this.isPanePresented()||e?yield this.breakpoints.buildBreakpoints(e,s):console.warn("Cupertino Pane: Provide any breaks configuration")}))}calcFitHeight(){return t(this,void 0,void 0,(function*(){return this.wrapperEl&&this.el?this.breakpoints.calcHeightInProcess?(console.warn("Cupertino Pane: calcFitHeight() already in process"),null):void(yield this.breakpoints.buildBreakpoints(this.breakpoints.lockedBreakpoints)):null}))}moveToBreak(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToBreak()"),null;this.settings.breaks[t].enabled?(this.checkOpacityAttr(this.breakpoints.breaks[t]),this.checkOverflowAttr(this.breakpoints.breaks[t]),this.doTransition({type:"breakpoint",translateY:this.breakpoints.breaks[t]}),this.breakpoints.currentBreakpoint=this.breakpoints.breaks[t]):console.warn("Cupertino Pane: %s breakpoint disabled",t)}moveToHeight(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToHeight()"),null;let e=this.screenHeightOffset?this.screen_height-t:t;this.checkOpacityAttr(e),this.doTransition({type:"breakpoint",translateY:e})}hide(){return this.isPanePresented()?this.isHidden()?(console.warn("Cupertino Pane: Pane already hidden"),null):void this.doTransition({type:"hide",translateY:this.screenHeightOffset}):(console.warn("Cupertino Pane: Present pane before call hide()"),null)}isHidden(){return this.isPanePresented()?this.paneEl.style.transform===`translateY(${this.screenHeightOffset}px) translateZ(0px)`:(console.warn("Cupertino Pane: Present pane before call isHidden()"),null)}currentBreak(){return this.isPanePresented()?this.breakpoints.getCurrentBreakName():(console.warn("Cupertino Pane: Present pane before call currentBreak()"),null)}destroyResets(){this.parentEl.appendChild(this.contentEl),this.wrapperEl.remove(),this.events.detachAllEvents(),this.settings.zStack,delete this.rendered,delete this.breakpoints.prevBreakpoint,this.contentEl.style.display="none"}destroy(e={animate:!1,destroyButton:!1}){return t(this,void 0,void 0,(function*(){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call destroy()"),null;this.preventDismissEvent?this.preventedDismiss||(this.settings.onWillDismiss({prevented:!0}),this.moveToBreak(this.breakpoints.prevBreakpoint)):(this.settings.onWillDismiss(),e.animate?yield this.doTransition({type:"destroy",translateY:this.screenHeightOffset,destroyButton:e.destroyButton}):(this.destroyResets(),this.settings.onDidDismiss({destroyButton:e.destroyButton})))}))}pushTransition(t,e,s){let i=this.settings.zStack.pushElements;t.style.transition=s,e=this.screenHeightOffset-e;const n=this.settings.zStack.minPushHeight?this.settings.zStack.minPushHeight:this.screenHeightOffset-this.breakpoints.bottomer,r=this.screenHeightOffset-this.breakpoints.topper;let o=this.getPushMulitplicator(t),a=Math.pow(this.settings.zStack.cardZScale,o),h=Math.pow(this.settings.zStack.cardZScale,o-1),l=6+this.settings.zStack.cardYOffset,p=l*o*-1,c=p+l,d=Math.pow(this.settings.zStack.cardContrast,o),u=Math.pow(this.settings.zStack.cardContrast,o-1);const g=(s,n,r,o)=>{let a=Math.pow(s,this.settings.zStack.stackZAngle/100);t.style.transform=`translateY(${n*(a/s)}px) scale(${s})`,t.style.borderRadius=`${o}px`,t.style.filter=`contrast(${r})`;let h=document.querySelector(i[i.length-1]);e||t.className!==h.className||this.clearPushMultiplicators()};if(e<=n)return void g(h,c,u,0);const b=(t,s)=>{let i=-1*(r*s-n*t);return i-=(t-s)*e,i/=n-r,i>s&&(i=s),i{var s;if("move"===t.type)return this.paneEl.style.transition="all 0ms linear 0ms",this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transition="all 0ms linear 0ms",this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.getPanelTransformY(),"all 0ms linear 0ms"))),e(!0);const i=()=>("destroy"===t.type&&this.destroyResets(),this.paneEl.style.transition="initial",this.followerEl&&(this.followerEl.style.transition="initial"),this.settings.backdrop&&("destroy"!==t.type&&"hide"!==t.type||(this.backdropEl.style.transition="initial",this.backdropEl.style.display="none")),"present"===t.type&&this.settings.onDidPresent(),"destroy"===t.type&&this.settings.onDidDismiss({destroyButton:t.destroyButton}),this.settings.onTransitionEnd({target:document.body.contains(this.paneEl)?this.paneEl:null}),this.paneEl.removeEventListener("transitionend",i),e(!0));if("breakpoint"===t.type||"end"===t.type||"present"===t.type||"hide"===t.type||"destroy"===t.type){if(this.settings.backdrop&&(this.isHidden()||"hide"===t.type||"destroy"===t.type||"present"===t.type)&&(this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,"hide"!==t.type&&"destroy"!==t.type&&(this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50))),"end"===t.type&&this.settings.freeMode)return e(!0);const n=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));let r=n&&(null===(s=this.settings.breaks[n[0]])||void 0===s?void 0:s.bounce);const o=this.getTimingFunction(r);this.paneEl.style.transition=`transform ${this.settings.animationDuration}ms ${o} 0s`,this.followerEl&&(this.followerEl.style.transition=`transform ${this.settings.animationDuration}ms ${o} 0s`),this.settings.zStack&&setTimeout((()=>{this.settings.zStack.pushElements.forEach((e=>this.pushTransition(document.querySelector(e),t.translateY,`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`)))}),this.settings.zStack.cardYOffset&&"present"===t.type?50:0),setTimeout((()=>{this.settings.onTransitionStart({translateY:{new:t.translateY}}),this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`)}),"present"===t.type?50:0);let a=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));a&&(this.breakpoints.prevBreakpoint=a[0]),this.paneEl.addEventListener("transitionend",i)}}))}}})); + ***************************************************************************** */function t(t,e,s,i){return new(s||(s=Promise))((function(n,r){function o(t){try{h(i.next(t))}catch(t){r(t)}}function a(t){try{h(i.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(o,a)}h((i=i.apply(t,e||[])).next())}))}class e{static get touch(){return window.Modernizr&&!0===window.Modernizr.touch||!!(window.navigator.maxTouchPoints>0||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch)}static get observer(){return"MutationObserver"in window||"WebkitMutationObserver"in window}static get backdropFilter(){return CSS.supports("backdrop-filter","blur(0px)")||CSS.supports("-webkit-backdrop-filter","blur(0px)")}static get passiveListener(){let t=!1;try{const e=Object.defineProperty({},"passive",{get(){t=!0}});window.addEventListener("testPassiveListener",null,e)}catch(t){}return t}static get gestures(){return"ongesturestart"in window}static get pointerEvents(){return!!window.PointerEvent&&"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0}}class s{constructor(){this.ios=!1,this.android=!1,this.androidChrome=!1,this.desktop=!1,this.iphone=!1,this.ipod=!1,this.ipad=!1,this.edge=!1,this.ie=!1,this.firefox=!1,this.macos=!1,this.windows=!1,this.cordova=!(!window.cordova&&!window.phonegap),this.phonegap=!(!window.cordova&&!window.phonegap),this.electron=!1,this.ionic=!!document.querySelector("ion-app");const t=window.navigator.platform,s=window.navigator.userAgent,i=window.screen.width,n=window.screen.height;let r=s.match(/(Android);?[\s\/]+([\d.]+)?/),o=s.match(/(iPad).*OS\s([\d_]+)/),a=s.match(/(iPod)(.*OS\s([\d_]+))?/),h=!this.ipad&&s.match(/(iPhone\sOS|iOS)\s([\d_]+)/),l=s.indexOf("MSIE ")>=0||s.indexOf("Trident/")>=0,p=s.indexOf("Edge/")>=0,d=s.indexOf("Gecko/")>=0&&s.indexOf("Firefox/")>=0,c="Win32"===t,u=s.toLowerCase().indexOf("electron")>=0,g="MacIntel"===t;!o&&g&&e.touch&&(1024===i&&1366===n||834===i&&1194===n||834===i&&1112===n||768===i&&1024===n)&&(o=s.match(/(Version)\/([\d.]+)/),g=!1),this.ie=l,this.edge=p,this.firefox=d,r&&!c&&(this.os="android",this.osVersion=r[2],this.android=!0,this.androidChrome=s.toLowerCase().indexOf("chrome")>=0),(o||h||a)&&(this.os="ios",this.ios=!0),h&&!a&&(this.osVersion=h[2].replace(/_/g,"."),this.iphone=!0),o&&(this.osVersion=o[2].replace(/_/g,"."),this.ipad=!0),a&&(this.osVersion=a[3]?a[3].replace(/_/g,"."):null,this.ipod=!0),this.ios&&this.osVersion&&s.indexOf("Version/")>=0&&"10"===this.osVersion.split(".")[0]&&(this.osVersion=s.toLowerCase().split("version/")[1].split(" ")[0]),this.webView=!(!(h||o||a)||!s.match(/.*AppleWebKit(?!.*Safari)/i)&&!window.navigator.standalone)||window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches,this.webview=this.webView,this.standalone=this.webView,this.desktop=!(this.ios||this.android)||u,this.desktop&&(this.electron=u,this.macos=g,this.windows=c,this.macos&&(this.os="macos"),this.windows&&(this.os="windows")),this.pixelRatio=window.devicePixelRatio||1}}class i{constructor(t,s,i,n){this.instance=t,this.settings=s,this.device=i,this.breakpoints=n,this.allowClick=!0,this.disableDragAngle=!1,this.pointerDown=!1,this.contentScrollTop=0,this.steps=[],this.inputBluredbyMove=!1,this.keyboardVisible=!1,this.isScrolling=!1,this.touchEvents=(()=>{const t=["touchstart","touchmove","touchend","touchcancel"];let s=["mousedown","mousemove","mouseup"];e.pointerEvents&&(s=["pointerdown","pointermove","pointerup"]);const i={start:t[0],move:t[1],end:t[2],cancel:t[3]},n={start:s[0],move:s[1],end:s[2]};return e.touch||!this.settings.simulateTouch?i:n})(),this.touchStartCb=t=>this.touchStart(t),this.touchMoveBackdropCb=t=>this.touchMoveBackdrop(t),this.touchMoveCb=t=>this.touchMove(t),this.touchEndCb=t=>this.touchEnd(t),this.onScrollCb=t=>this.onScroll(t),this.onClickCb=t=>this.onClick(t),this.onKeyboardShowCb=t=>this.onKeyboardShow(t),this.onKeyboardWillHideCb=t=>this.onKeyboardWillHide(t),this.onKeyboardDidHideCb=t=>this.onKeyboardDidHide(t),this.onWindowResizeCb=t=>this.onWindowResize(t)}attachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("addEventListener",e)})):this.eventListeners("addEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.addEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.addEventListener("keyboardWillShow",this.onKeyboardShowCb),window.addEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.addEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),!this.settings.handleKeyboard&&this.device.cordova&&this.device.android&&window.addEventListener("keyboardWillHide",(()=>{this.instance.parentEl.scrollTop=0,this.instance.parentEl.parentElement&&(this.instance.parentEl.parentElement.scrollTop=0,this.instance.parentEl.parentElement.parentElement&&(this.instance.parentEl.parentElement.parentElement.scrollTop=0))})),window.addEventListener("resize",this.onWindowResizeCb)}detachAllEvents(){this.settings.dragBy?this.settings.dragBy.forEach((t=>{const e=document.querySelector(t);e&&this.eventListeners("removeEventListener",e)})):this.eventListeners("removeEventListener",this.instance.paneEl),this.settings.topperOverflow&&this.instance.overflowEl.removeEventListener("scroll",this.onScrollCb),this.settings.handleKeyboard&&this.device.cordova&&(window.removeEventListener("keyboardWillShow",this.onKeyboardShowCb),window.removeEventListener("keyboardWillHide",this.onKeyboardWillHideCb),window.removeEventListener("keyboardDidHide",this.onKeyboardDidHideCb)),window.removeEventListener("resize",this.onWindowResizeCb)}resetEvents(){this.detachAllEvents(),this.attachAllEvents()}eventListeners(t,s){var i,n,r;if(!e.touch&&e.pointerEvents)s[t](this.touchEvents.start,this.touchStartCb,!1),s[t](this.touchEvents.move,this.touchMoveCb,!1),s[t](this.touchEvents.end,this.touchEndCb,!1),null===(i=this.instance.backdropEl)||void 0===i||i[t](this.touchEvents.move,this.touchMoveBackdropCb,!1);else{if(e.touch){const i=!("touchstart"!==this.touchEvents.start||!e.passiveListener||!this.settings.passiveListeners)&&{passive:!0,capture:!1};s[t](this.touchEvents.start,this.touchStartCb,i),s[t](this.touchEvents.move,this.touchMoveCb,!!e.passiveListener&&{passive:!1,capture:!1}),s[t](this.touchEvents.end,this.touchEndCb,i),null===(n=this.instance.backdropEl)||void 0===n||n[t](this.touchEvents.move,this.touchMoveBackdropCb,!!e.passiveListener&&{passive:!1,capture:!1}),this.touchEvents.cancel&&s[t](this.touchEvents.cancel,this.touchEndCb,i)}(this.settings.simulateTouch&&!this.device.ios&&!this.device.android||this.settings.simulateTouch&&!e.touch&&this.device.ios)&&(s[t]("mousedown",this.touchStartCb,!1),s[t]("mousemove",this.touchMoveCb,!1),s[t]("mouseup",this.touchEndCb,!1),null===(r=this.instance.backdropEl)||void 0===r||r[t]("mousemove",this.touchMoveBackdropCb,!1))}this.settings.preventClicks&&s[t]("click",this.onClickCb,!0)}touchStart(t){if(this.settings.onDragStart(t),this.allowClick=!0,this.instance.disableDragEvents)return;this.disableDragAngle=!1,this.isScrolling=!1,this.instance.preventedDismiss=!1;const{clientY:e,clientX:s}=this.getEvetClientYX(t,"touchstart");this.startY=e,this.startX=s,"mousedown"===t.type&&(this.pointerDown=!0),this.contentScrollTop&&this.willScrolled(t)&&(this.startY+=this.contentScrollTop),this.steps.push({posY:this.startY,time:Date.now()})}touchMoveBackdrop(t){this.settings.touchMoveStopPropagation&&t.stopPropagation()}touchMove(t){var e;const{clientY:s,clientX:i,velocityY:n}=this.getEvetClientYX(t,"touchmove");if(t.delta=(null===(e=this.steps[0])||void 0===e?void 0:e.posY)-s,this.settings.onDrag(t),this.allowClick=!1,this.isFormElement(t.target)&&this.isElementScrollable(t.target))return;if(this.instance.disableDragEvents)return void(this.steps=[]);if(this.disableDragAngle)return;if(this.instance.preventedDismiss)return;if(this.settings.touchMoveStopPropagation&&t.stopPropagation(),"mousemove"===t.type&&!this.pointerDown)return;const r=s-this.steps[this.steps.length-1].posY;if(!Math.abs(r))return;let o=this.instance.getPanelTransformY()+r;if(this.steps.length<2){n<1&&(o=this.instance.getPanelTransformY()+r*n);let t=new WebKitCSSMatrix(window.getComputedStyle(this.instance.paneEl).transform).m42-this.instance.getPanelTransformY();Math.abs(t)&&(o+=t)}if(this.steps.length>2&&this.isFormElement(document.activeElement)&&!this.isFormElement(t.target)&&(document.activeElement.blur(),this.inputBluredbyMove=!0),this.settings.touchAngle&&!this.isScrolling){let t;const e=i-this.startX,n=s-this.startY;if(t=180*Math.atan2(Math.abs(n),Math.abs(e))/Math.PI,e*e+n*n>=25&&90-t>this.settings.touchAngle&&1===this.steps.length)return void(this.disableDragAngle=!0)}if("auto"===this.instance.overflowEl.style.overflowY){if(this.settings.inverse&&this.willScrolled(t))return void(this.contentScrollTop=0);if(!this.settings.inverse&&this.contentScrollTop>0)return}let a=this.handleTopperLowerPositions(o,r);if(a&&(o=a),this.instance.getPanelTransformY()!==o){if(!this.instance.preventedDismiss&&this.instance.preventDismissEvent&&this.settings.bottomClose){let t=(-this.breakpoints.topper+this.breakpoints.topper-this.instance.getPanelTransformY())/this.breakpoints.topper/-8;if(o=this.instance.getPanelTransformY()+r*(.5-t),-1*(s-220-this.instance.screen_height)<=this.instance.screen_height-this.breakpoints.bottomer)return this.instance.preventedDismiss=!0,this.settings.onWillDismiss({prevented:!0}),void this.instance.moveToBreak(this.breakpoints.prevBreakpoint)}this.instance.checkOpacityAttr(o),this.instance.checkOverflowAttr(o),this.instance.doTransition({type:"move",translateY:o}),this.steps.push({posY:s,time:Date.now()})}}touchEnd(t){var e,s;if(this.instance.disableDragEvents)return;"mouseup"===t.type&&(this.pointerDown=!1);let i=this.breakpoints.getClosestBreakY();const n=(null===(e=this.steps[this.steps.length-1])||void 0===e?void 0:e.posY)-(null===(s=this.steps[this.steps.length-2])||void 0===s?void 0:s.posY),r=window.hasOwnProperty("cordova")?this.settings.fastSwipeSensivity+2:this.settings.fastSwipeSensivity;if(Math.abs(n)>=r&&(i=this.instance.swipeNextPoint(n,r,i),this.settings.fastSwipeClose&&this.breakpoints.currentBreakpointthis.fixAndroidResize()),20),this.keyboardVisible=!0,this.breakpoints.prevBreakpoint=Object.entries(this.breakpoints.breaks).find((t=>t[1]===this.instance.getPanelTransformY()))[0];let e=this.settings.breaks[this.instance.currentBreak()].height+t.keyboardHeight;window.matchMedia("(orientation: landscape)").matches&&(e=this.instance.screen_height),e>this.instance.screen_height-80&&(e=this.instance.screen_height-80),e-50>=this.settings.breaks[this.instance.currentBreak()].height&&this.instance.moveToHeight(e)}onKeyboardWillHide(t){this.keyboardVisible&&this.isOnViewport()&&(this.device.android&&this.fixAndroidResize(),this.inputBluredbyMove?this.inputBluredbyMove=!1:this.instance.isHidden()||this.instance.moveToBreak(this.breakpoints.prevBreakpoint))}onKeyboardDidHide(t){this.keyboardVisible=!1}onWindowResize(e){return t(this,void 0,void 0,(function*(){this.keyboardVisible||(yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.instance.updateScreenHeights(),this.breakpoints.buildBreakpoints(JSON.parse(this.breakpoints.lockedBreakpoints)))}))}handleTopperLowerPositions(t,e){if(!this.settings.inverse){if(!this.settings.upperThanTop&&t<=this.breakpoints.topper)return this.breakpoints.topper;if(t<=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.lowerThanBottom&&t>=this.breakpoints.bottomer)return this.breakpoints.bottomer}if(this.settings.inverse){if(t>=this.breakpoints.topper&&this.settings.upperThanTop){const t=this.instance.screen_height-this.instance.screenHeightOffset,s=(t-this.instance.getPanelTransformY())/(t-this.breakpoints.topper)/8;return this.instance.getPanelTransformY()+e*s}if(!this.settings.upperThanTop&&t>=this.breakpoints.topper)return this.breakpoints.topper}}getEvetClientYX(t,e){var s,i;const n=t.type===e&&t.targetTouches&&(t.targetTouches[0]||t.changedTouches[0]),r=t.type===e?n.clientY:t.clientY,o=t.type===e?n.clientX:t.clientX,a=Date.now()-((null===(s=this.steps[this.steps.length-1])||void 0===s?void 0:s.time)||0);return{clientY:r,clientX:o,velocityY:Math.abs(r-((null===(i=this.steps[this.steps.length-1])||void 0===i?void 0:i.posY)||0))/a}}fixAndroidResize(){this.instance.paneEl&&(document.querySelector("ion-app"),window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="100%",this.instance.paneEl.style.position="absolute",window.requestAnimationFrame((()=>{this.instance.wrapperEl.style.width="unset",this.instance.paneEl.style.position="fixed"}))})))}willScrolled(t){return!(!this.isElementScrollable(this.instance.overflowEl)||"hidden"===this.instance.overflowEl.style.overflow)}isPaneDescendant(t){let e=t.parentNode;for(;null!=e;){if(e==this.instance.paneEl)return!0;e=e.parentNode}return!1}isFormElement(t){return!!(t&&t.tagName&&["input","select","option","textarea","button","label"].includes(t.tagName.toLowerCase()))}isElementScrollable(t){return t.scrollHeight>t.clientHeight}isOnViewport(){return!this.instance.paneEl||0!==this.instance.paneEl.offsetWidth||0!==this.instance.paneEl.offsetHeight}}class n{constructor(){this.instance={initialBreak:"middle",inverse:!1,parentElement:null,followerElement:null,cssClass:null,fitHeight:!1,maxFitHeight:null,fitScreenHeight:!0,backdrop:!1,backdropOpacity:.4,animationType:"ease",animationDuration:300,dragBy:null,bottomOffset:0,bottomClose:!1,fastSwipeClose:!1,fastSwipeSensivity:3,freeMode:!1,buttonDestroy:!0,buttonClose:!0,topperOverflow:!0,topperOverflowOffset:0,lowerThanBottom:!0,upperThanTop:!1,showDraggable:!0,draggableOver:!1,clickBottomOpen:!0,preventClicks:!0,handleKeyboard:!0,simulateTouch:!0,passiveListeners:!0,touchMoveStopPropagation:!1,touchAngle:45,breaks:{},zStack:null,onDidDismiss:()=>{},onWillDismiss:()=>{},onDidPresent:()=>{},onWillPresent:()=>{},onDragStart:()=>{},onDrag:()=>{},onDragEnd:()=>{},onBackdropTap:()=>{},onTransitionStart:()=>{},onTransitionEnd:()=>{}}}}class r{constructor(t,e){this.instance=t,this.settings=e,this.breaks={},this.calcHeightInProcess=!1,this.brs=[],this.defaultBreaksConf={top:{enabled:!0,height:window.innerHeight-47.25},middle:{enabled:!0,height:300},bottom:{enabled:!0,height:100}}}buildBreakpoints(e,s=0){var i,n,r,o,a;return t(this,void 0,void 0,(function*(){if(this.settings.bottomOffset=s||this.settings.bottomOffset,this.breaks={top:this.instance.screenHeightOffset,middle:this.instance.screenHeightOffset,bottom:this.instance.screenHeightOffset},this.settings.fitHeight){this.settings.fitScreenHeight=!1,this.settings.initialBreak="top",this.settings.topperOverflow=!1;let t=yield this.getPaneFitHeight();this.settings.maxFitHeight&&t>this.settings.maxFitHeight&&(t=this.settings.maxFitHeight,this.settings.topperOverflow=!0),(e={top:{enabled:!0,height:t},middle:{enabled:!1}}).top.bounce=null===(n=null===(i=this.settings.breaks)||void 0===i?void 0:i.top)||void 0===n?void 0:n.bounce,e.bottom=(null===(r=this.settings.breaks)||void 0===r?void 0:r.bottom)||{enabled:!0,height:0}}if(["top","middle","bottom"].forEach((t=>{var s;this.breaks[t]-=this.settings.bottomOffset,this.settings.breaks[t]||(this.settings.breaks[t]=this.defaultBreaksConf[t]),e&&e[t]&&(this.settings.breaks[t]=e[t]),this.settings.fitScreenHeight&&((null===(s=this.settings.breaks[t])||void 0===s?void 0:s.height)>this.instance.screen_height&&(this.settings.breaks[t].height=this.instance.screen_height-this.settings.bottomOffset),this.settings.breaks.top&&this.settings.breaks.middle&&this.settings.breaks.top.height-50<=this.settings.breaks.middle.height&&(this.settings.breaks.middle.enabled=!1,this.settings.initialBreak="top")),this.settings.fitHeight&&"top"===t&&(this.settings.breaks[t].height>this.instance.screen_height?(this.settings.breaks[t].height=this.instance.screen_height-2*this.settings.bottomOffset,this.settings.topperOverflow=!0):this.instance.overflowEl&&!this.settings.maxFitHeight&&(this.settings.topperOverflow=!1,this.instance.overflowEl.style.overflowY="hidden")),this.settings.breaks[t]&&this.settings.breaks[t].enabled&&this.settings.breaks[t].height&&(this.settings.inverse?this.breaks[t]=this.settings.breaks[t].height+this.settings.bottomOffset:this.breaks[t]-=this.settings.breaks[t].height)})),this.lockedBreakpoints||(this.lockedBreakpoints=JSON.stringify(this.settings.breaks)),this.instance.isPanePresented()||this.settings.breaks[this.settings.initialBreak].enabled||console.warn("Cupertino Pane: Please set initialBreak for enabled breakpoint"),this.settings.breaks.middle.height>=this.settings.breaks.top.height&&console.warn("Cupertino Pane: Please set middle height lower than top height"),this.settings.breaks.middle.height<=this.settings.breaks.bottom.height&&console.warn("Cupertino Pane: Please set bottom height lower than middle height"),this.brs=[],["top","middle","bottom"].forEach((t=>{this.settings.breaks[t].enabled&&this.brs.push(this.breaks[t])})),this.topper=this.brs.reduce(((t,e)=>eMath.abs(e)>Math.abs(t)?e:t)),this.settings.inverse&&(this.topper=this.bottomer),this.instance.isPanePresented()||(this.currentBreakpoint=this.breaks[this.settings.initialBreak],!this.settings.inverse||this.settings.breaks.bottom.enabled||this.settings.breaks.middle.enabled||(this.settings.topperOverflow=!1)),this.instance.isPanePresented()){if((null===(o=this.settings.breaks[this.prevBreakpoint])||void 0===o?void 0:o.enabled)&&(this.instance.isHidden()||this.instance.moveToBreak(this.prevBreakpoint)),!(null===(a=this.settings.breaks[this.prevBreakpoint])||void 0===a?void 0:a.enabled)){let t=this.instance.swipeNextPoint(1,1,this.getClosestBreakY());const e=Object.entries(this.breaks).find((e=>e[1]===t));this.instance.moveToBreak(e[0])}this.instance.paneEl.style.top=this.settings.inverse?`-${this.bottomer-this.settings.bottomOffset}px`:"unset",this.instance.paneEl.style.height=`${this.instance.getPaneHeight()}px`,this.instance.scrollElementInit(),this.instance.checkOpacityAttr(this.currentBreakpoint),this.instance.checkOverflowAttr(this.currentBreakpoint)}}))}getCurrentBreakName(){return this.breaks.top===this.currentBreakpoint?"top":this.breaks.middle===this.currentBreakpoint?"middle":this.breaks.bottom===this.currentBreakpoint?"bottom":null}getPaneFitHeight(){return t(this,void 0,void 0,(function*(){this.calcHeightInProcess=!0;let t,e=this.instance.el.querySelectorAll("img");this.instance.el.style.height="unset",this.instance.rendered||(this.instance.el.style.visibility="hidden",this.instance.el.style.pointerEvents="none",this.instance.el.style.display="block",this.instance.wrapperEl.style.visibility="hidden",this.instance.wrapperEl.style.pointerEvents="none",this.instance.wrapperEl.style.display="block");let s=[];e.length&&(s=Array.from(e).map((t=>new Promise((e=>{t.complete&&t.naturalHeight?e(!0):t.onload=()=>e(!0)}))))),s.push(new Promise((t=>setTimeout((()=>t(!0)),this.instance.rendered?0:150)))),yield Promise.all(s);let i=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("height")),n=parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-top"))+parseInt(document.defaultView.getComputedStyle(this.instance.el,"").getPropertyValue("margin-bottom")),r=parseInt(document.defaultView.getComputedStyle(this.instance.el.parentElement,"").getPropertyValue("padding-bottom"));return t=i+n,t+=this.instance.el.offsetTop,t+=r,this.instance.rendered||(this.instance.el.style.visibility="unset",this.instance.el.style.pointerEvents="unset",this.instance.el.style.display="none",this.instance.wrapperEl.style.visibility="unset",this.instance.wrapperEl.style.pointerEvents="unset",this.instance.wrapperEl.style.display="none"),this.calcHeightInProcess=!1,t}))}getClosestBreakY(){return this.brs.reduce(((t,e)=>Math.abs(e-this.instance.getPanelTransformY()){let i={},n={};if(this.settings.inverse?(i.top=this.breakpoints.breaks.bottom,i.middle=this.breakpoints.breaks.middle,i.bottom=this.breakpoints.breaks.top,n.top=Object.assign({},this.settings.breaks.bottom),n.middle=Object.assign({},this.settings.breaks.middle),n.bottom=Object.assign({},this.settings.breaks.top)):(i=Object.assign({},this.breakpoints.breaks),n=Object.assign({},this.settings.breaks)),this.breakpoints.currentBreakpoint===i.top){if(t>e){if(n.middle.enabled)return i.middle;if(n.bottom.enabled)return i.middlee&&n.bottom.enabled?i.bottom:i.middle;if(this.breakpoints.currentBreakpoint===i.bottom){if(t<-e){if(n.middle.enabled)return i.middle>s?s:i.middle;if(n.top.enabled)return i.top}return i.bottom}return s},t instanceof HTMLElement?this.selector=t:this.selector=document.querySelector(t),this.selector?this.isPanePresented()?console.error("Cupertino Pane: specified selector or DOM element already in use",this.selector):(this.el=this.selector,this.el.style.display="none",this.settings=Object.assign(Object.assign({},this.settings),e),this.settings.parentElement?this.settings.parentElement=document.querySelector(this.settings.parentElement):this.settings.parentElement=this.el.parentElement,this.breakpoints=new r(this,this.settings),this.events=new i(this,this.settings,this.device,this.breakpoints)):console.warn("Cupertino Pane: wrong selector or DOM element specified",this.selector)}drawBaseElements(){this.parentEl=this.settings.parentElement,this.wrapperEl=document.createElement("div"),this.wrapperEl.classList.add("cupertino-pane-wrapper"),this.settings.inverse&&this.wrapperEl.classList.add("inverse"),this.settings.cssClass&&(this.wrapperEl.className+=` ${this.settings.cssClass}`);let t="";t+="\n .cupertino-pane-wrapper {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n }\n ",this.paneEl=document.createElement("div"),this.paneEl.style.transform=`translateY(${this.screenHeightOffset}px) translateZ(0px)`,this.paneEl.classList.add("pane"),t+="\n .cupertino-pane-wrapper .pane {\n position: fixed;\n z-index: 11;\n width: 100%;\n max-width: 500px;\n left: 0px;\n right: 0px;\n margin-left: auto;\n margin-right: auto;\n background: var(--cupertino-pane-background, #ffffff);\n color: var(--cupertino-pane-color, #333333);\n box-shadow: var(--cupertino-pane-shadow, 0 4px 16px rgba(0,0,0,.12));\n will-change: transform;\n padding-top: 15px; \n border-radius: var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px) \n 0 0;\n }\n .cupertino-pane-wrapper.inverse .pane {\n padding-bottom: 15px; \n border-radius: 0 0 20px 20px;\n border-radius: 0 0\n var(--cupertino-pane-border-radius, 20px) \n var(--cupertino-pane-border-radius, 20px);\n }\n ",this.draggableEl=document.createElement("div"),this.draggableEl.classList.add("draggable"),this.settings.draggableOver&&this.draggableEl.classList.add("over"),t+="\n .cupertino-pane-wrapper .draggable {\n padding: 5px;\n position: absolute;\n left: 0;\n right: 0;\n margin-left: auto;\n margin-right: auto;\n height: 30px;\n z-index: 12;\n top: 0;\n bottom: initial;\n }\n .cupertino-pane-wrapper .draggable.over {\n top: -30px;\n padding: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable {\n bottom: 0;\n top: initial;\n }\n .cupertino-pane-wrapper.inverse .draggable.over {\n bottom: -30px;\n top: initial;\n }\n ",this.moveEl=document.createElement("div"),this.moveEl.classList.add("move"),t+=`\n .cupertino-pane-wrapper .move {\n margin: 0 auto;\n height: 5px;\n background: var(--cupertino-pane-move-background, #c0c0c0);\n width: 36px;\n border-radius: 4px;\n }\n .cupertino-pane-wrapper .draggable.over .move {\n width: 70px; \n background: var(--cupertino-pane-move-background, rgba(225, 225, 225, 0.6));\n ${e.backdropFilter?"\n backdrop-filter: saturate(180%) blur(20px);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n ":""}\n }\n .cupertino-pane-wrapper.inverse .move {\n margin-top: 15px;\n }\n .cupertino-pane-wrapper.inverse .draggable.over .move {\n margin-top: -5px;\n }\n `,this.destroyButtonEl=document.createElement("div"),this.destroyButtonEl.classList.add("destroy-button"),t+="\n .cupertino-pane-wrapper .destroy-button {\n width: 26px;\n height: 26px;\n position: absolute;\n background: var(--cupertino-pane-destroy-button-background, #ebebeb);\n fill: var(--cupertino-pane-icon-close-color, #7a7a7e);\n right: 20px;\n z-index: 14;\n border-radius: 100%;\n top: 16px;\n }\n ",this.contentEl=this.el,this.contentEl.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.contentEl.style.overflowX="hidden",t+="\n .cupertino-pane-wrapper .backdrop {\n overflow: hidden;\n position: fixed;\n width: 100%;\n bottom: 0;\n right: 0;\n left: 0;\n top: 0;\n display: none;\n z-index: 10;\n }\n ",this.addStyle(t),this.parentEl.appendChild(this.wrapperEl),this.wrapperEl.appendChild(this.paneEl),this.paneEl.appendChild(this.contentEl),this.settings.showDraggable&&(this.paneEl.appendChild(this.draggableEl),this.draggableEl.appendChild(this.moveEl))}present(e={animate:!1}){var s;return t(this,void 0,void 0,(function*(){if(this.el)if(this.isPanePresented()&&this.rendered)this.moveToBreak(this.settings.initialBreak);else{if(!this.isPanePresented()||this.rendered){if(this.settings.onWillPresent(),this.updateScreenHeights(),this.drawBaseElements(),yield this.setBreakpoints(),this.paneEl.style.height=`${this.getPaneHeight()}px`,this.settings.inverse&&(this.paneEl.style.top=`-${this.breakpoints.bottomer-this.settings.bottomOffset}px`),this.wrapperEl.style.display="block",this.contentEl.style.display="block",this.wrapperEl.classList.add("rendered"),this.rendered=!0,this.settings.followerElement){if(!document.querySelector(this.settings.followerElement))return void console.warn("Cupertino Pane: wrong follower element selector specified",this.settings.followerElement);this.followerEl=document.querySelector(this.settings.followerElement),this.followerEl.style.willChange="transform, border-radius",this.followerEl.style.transform="translateY(0px) translateZ(0px)",this.followerEl.style.transition=this.buildTransitionValue(null===(s=this.settings.breaks[this.currentBreak()])||void 0===s?void 0:s.bounce)}return this.settings.zStack&&(this.setZstackConfig(this.settings.zStack),this.setPushMultiplicators()),this.settings.buttonClose&&this.settings.buttonDestroy&&!this.settings.inverse&&(this.paneEl.appendChild(this.destroyButtonEl),this.destroyButtonEl.addEventListener("click",(t=>this.destroy({animate:!0,destroyButton:!0}))),this.destroyButtonEl.innerHTML='\n \n '),this.settings.bottomClose&&(this.settings.breaks.bottom.enabled=!0),this.settings.freeMode&&(this.settings.lowerThanBottom=!1),this.settings.backdrop&&this.renderBackdrop(),this.checkOpacityAttr(this.breakpoints.currentBreakpoint),this.device.android&&(document.body.style.overscrollBehaviorY="none"),e.animate?yield this.doTransition({type:"present",translateY:this.breakpoints.breaks[this.settings.initialBreak]}):(this.breakpoints.prevBreakpoint=this.settings.initialBreak,this.paneEl.style.transform=`translateY(${this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`,this.settings.backdrop&&(this.backdropEl.style.display="block"),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.breakpoints.breaks[this.settings.initialBreak],"unset"))),this.settings.onDidPresent()),yield new Promise((t=>setTimeout((()=>t(!0)),150))),this.scrollElementInit(),this.checkOverflowAttr(this.breakpoints.currentBreakpoint),this.events.attachAllEvents(),this}console.warn("Cupertino Pane: specified selector or DOM element already in use",this.selector)}}))}getPaneHeight(){return this.settings.inverse?this.breakpoints.bottomer-this.settings.bottomOffset:this.screen_height-this.breakpoints.topper-this.settings.bottomOffset}updateScreenHeights(){this.settings.inverse?(this.screen_height=window.innerHeight,this.screenHeightOffset=0):(this.screen_height=window.innerHeight,this.screenHeightOffset=window.innerHeight)}scrollElementInit(){let t=this.el.querySelectorAll("[overflow-y]");!t.length||t.length>1?this.overflowEl=this.contentEl:(this.overflowEl=t[0],this.overflowEl.style.overflowX="hidden"),this.settings.topperOverflow&&(this.settings.upperThanTop&&console.warn('Cupertino Pane: "upperThanTop" allowed for disabled "topperOverflow"'),this.setOverflowHeight())}setOverflowHeight(t=0){this.settings.inverse?this.overflowEl.style.height=this.getPaneHeight()-30-this.settings.topperOverflowOffset-this.overflowEl.offsetTop+"px":this.overflowEl.style.height=this.getPaneHeight()-this.settings.topperOverflowOffset-this.overflowEl.offsetTop-t+"px"}checkOpacityAttr(t){let e=this.el.querySelectorAll("[hide-on-bottom]");e.length&&(this.settings.inverse||e.forEach((e=>{e.style.transition=`opacity ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,e.style.opacity=t>=this.breakpoints.breaks.bottom?"0":"1"})))}checkOverflowAttr(t){this.settings.topperOverflow&&this.overflowEl&&(this.settings.inverse?this.overflowEl.style.overflowY=t>=this.breakpoints.bottomer?"auto":"hidden":this.overflowEl.style.overflowY=t<=this.breakpoints.topper?"auto":"hidden")}isPanePresented(){let t=Array.from(document.querySelectorAll(".cupertino-pane-wrapper.rendered"));return!!t.length&&!!t.find((t=>t.contains(this.selector)))}buildTransitionValue(t){return t?"all 300ms cubic-bezier(.155,1.105,.295,1.12)":`all ${this.settings.animationDuration}ms ${this.settings.animationType}`}isBackdropPresented(){return!!document.querySelector(".cupertino-pane-wrapper .backdrop")}renderBackdrop(){this.backdropEl=document.createElement("div"),this.backdropEl.classList.add("backdrop"),this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`,this.wrapperEl.appendChild(this.backdropEl),this.backdropEl.addEventListener("click",(t=>this.settings.onBackdropTap()))}addStyle(t){if(document.querySelector("#cupertino-panes-internal"))return;const e=document.createElement("style");e.id="cupertino-panes-internal",t=t.replace(/\s\s+/g," "),e.textContent=t,document.head.prepend(e)}setPushMultiplicators(){this.settings.zStack.pushElements.forEach((t=>{let e=document.querySelector(t),s=this.getPushMulitplicator(e);s=s?s+1:1,e.style.setProperty("--push-multiplicator",`${s}`)}))}clearPushMultiplicators(){for(let t=0;t{this.backdropEl.style.transition="initial",this.backdropEl.style.display="none",this.backdropEl.removeEventListener("transitionend",e)};if(this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",t.show)this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50);else{if("none"===this.backdropEl.style.display)return;this.backdropEl.addEventListener("transitionend",e)}}getPanelTransformY(){return parseFloat(/\.*translateY\((.*)px\)/i.exec(this.paneEl.style.transform)[1])}preventDismiss(t=!1){this.preventDismissEvent=t}disableDrag(){this.disableDragEvents=!0}enableDrag(){this.disableDragEvents=!1}setBreakpoints(e,s){return t(this,void 0,void 0,(function*(){!this.isPanePresented()||e?yield this.breakpoints.buildBreakpoints(e,s):console.warn("Cupertino Pane: Provide any breaks configuration")}))}calcFitHeight(){return t(this,void 0,void 0,(function*(){return this.wrapperEl&&this.el?this.breakpoints.calcHeightInProcess?(console.warn("Cupertino Pane: calcFitHeight() already in process"),null):void(yield this.breakpoints.buildBreakpoints(this.breakpoints.lockedBreakpoints)):null}))}moveToBreak(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToBreak()"),null;this.settings.breaks[t].enabled?(this.checkOpacityAttr(this.breakpoints.breaks[t]),this.checkOverflowAttr(this.breakpoints.breaks[t]),this.doTransition({type:"breakpoint",translateY:this.breakpoints.breaks[t]}),this.breakpoints.currentBreakpoint=this.breakpoints.breaks[t]):console.warn("Cupertino Pane: %s breakpoint disabled",t)}moveToHeight(t){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call moveToHeight()"),null;let e=this.screenHeightOffset?this.screen_height-t:t;this.checkOpacityAttr(e),this.doTransition({type:"breakpoint",translateY:e})}hide(){return this.isPanePresented()?this.isHidden()?(console.warn("Cupertino Pane: Pane already hidden"),null):void this.doTransition({type:"hide",translateY:this.screenHeightOffset}):(console.warn("Cupertino Pane: Present pane before call hide()"),null)}isHidden(){return this.isPanePresented()?this.paneEl.style.transform===`translateY(${this.screenHeightOffset}px) translateZ(0px)`:(console.warn("Cupertino Pane: Present pane before call isHidden()"),null)}currentBreak(){return this.isPanePresented()?this.breakpoints.getCurrentBreakName():(console.warn("Cupertino Pane: Present pane before call currentBreak()"),null)}destroyResets(){this.parentEl.appendChild(this.contentEl),this.wrapperEl.remove(),this.events.detachAllEvents(),this.settings.zStack,delete this.rendered,delete this.breakpoints.prevBreakpoint,this.contentEl.style.display="none"}destroy(e={animate:!1,destroyButton:!1}){return t(this,void 0,void 0,(function*(){if(!this.isPanePresented())return console.warn("Cupertino Pane: Present pane before call destroy()"),null;this.preventDismissEvent?this.preventedDismiss||(this.settings.onWillDismiss({prevented:!0}),this.moveToBreak(this.breakpoints.prevBreakpoint)):(this.settings.onWillDismiss(),e.animate?yield this.doTransition({type:"destroy",translateY:this.screenHeightOffset,destroyButton:e.destroyButton}):(this.destroyResets(),this.settings.onDidDismiss({destroyButton:e.destroyButton})))}))}pushTransition(t,e,s){let i=this.settings.zStack.pushElements;t.style.transition=s,e=this.screenHeightOffset-e;const n=this.settings.zStack.minPushHeight?this.settings.zStack.minPushHeight:this.screenHeightOffset-this.breakpoints.bottomer,r=this.screenHeightOffset-this.breakpoints.topper;let o=this.getPushMulitplicator(t),a=Math.pow(this.settings.zStack.cardZScale,o),h=Math.pow(this.settings.zStack.cardZScale,o-1),l=6+this.settings.zStack.cardYOffset,p=l*o*-1,d=p+l,c=Math.pow(this.settings.zStack.cardContrast,o),u=Math.pow(this.settings.zStack.cardContrast,o-1);const g=(s,n,r,o)=>{let a=Math.pow(s,this.settings.zStack.stackZAngle/100);t.style.transform=`translateY(${n*(a/s)}px) scale(${s})`,t.style.borderRadius=`${o}px`,t.style.filter=`contrast(${r})`;let h=document.querySelector(i[i.length-1]);e||t.className!==h.className||this.clearPushMultiplicators()};if(e<=n)return void g(h,d,u,0);const b=(t,s)=>{let i=-1*(r*s-n*t);return i-=(t-s)*e,i/=n-r,i>s&&(i=s),i{var s;if("move"===t.type)return this.paneEl.style.transition="all 0ms linear 0ms",this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transition="all 0ms linear 0ms",this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`),this.settings.zStack&&this.settings.zStack.pushElements.forEach((t=>this.pushTransition(document.querySelector(t),this.getPanelTransformY(),"all 0ms linear 0ms"))),e(!0);const i=()=>("destroy"===t.type&&this.destroyResets(),this.paneEl.style.transition="initial",this.followerEl&&(this.followerEl.style.transition="initial"),this.settings.backdrop&&("destroy"!==t.type&&"hide"!==t.type||(this.backdropEl.style.transition="initial",this.backdropEl.style.display="none")),"present"===t.type&&this.settings.onDidPresent(),"destroy"===t.type&&this.settings.onDidDismiss({destroyButton:t.destroyButton}),this.settings.onTransitionEnd({target:document.body.contains(this.paneEl)?this.paneEl:null}),this.paneEl.removeEventListener("transitionend",i),e(!0));if("breakpoint"===t.type||"end"===t.type||"present"===t.type||"hide"===t.type||"destroy"===t.type){if(this.settings.backdrop&&(this.isHidden()||"hide"===t.type||"destroy"===t.type||"present"===t.type)&&(this.backdropEl.style.backgroundColor="rgba(0,0,0,.0)",this.backdropEl.style.transition=`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`,"hide"!==t.type&&"destroy"!==t.type&&(this.backdropEl.style.display="block",setTimeout((()=>{this.backdropEl.style.backgroundColor=`rgba(0,0,0, ${this.settings.backdropOpacity})`}),50))),"end"===t.type&&this.settings.freeMode)return e(!0);const n=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));let r=n&&(null===(s=this.settings.breaks[n[0]])||void 0===s?void 0:s.bounce);this.paneEl.style.transition=this.buildTransitionValue(r),this.followerEl&&(this.followerEl.style.transition=this.buildTransitionValue(r)),this.settings.zStack&&setTimeout((()=>{this.settings.zStack.pushElements.forEach((e=>this.pushTransition(document.querySelector(e),t.translateY,`all ${this.settings.animationDuration}ms ${this.settings.animationType} 0s`)))}),this.settings.zStack.cardYOffset&&"present"===t.type?50:0),setTimeout((()=>{this.settings.onTransitionStart({translateY:{new:t.translateY}}),this.paneEl.style.transform=`translateY(${t.translateY}px) translateZ(0px)`,this.followerEl&&(this.followerEl.style.transform=`translateY(${t.translateY-this.breakpoints.breaks[this.settings.initialBreak]}px) translateZ(0px)`)}),"present"===t.type?50:0);let o=Object.entries(this.breakpoints.breaks).find((e=>e[1]===t.translateY));o&&(this.breakpoints.prevBreakpoint=o[0]),this.paneEl.addEventListener("transitionend",i)}}))}}})); //# sourceMappingURL=cupertino-pane.min.js.map \ No newline at end of file diff --git a/dist/types/cupertino-pane.d.ts b/dist/types/cupertino-pane.d.ts index 481c8110..5cfd6609 100644 --- a/dist/types/cupertino-pane.d.ts +++ b/dist/types/cupertino-pane.d.ts @@ -39,7 +39,7 @@ export declare class CupertinoPane { /** * Private Utils methods */ - private getTimingFunction; + private buildTransitionValue; private isBackdropPresented; private renderBackdrop; /** diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts index 3d9ce5ee..a2f97db9 100644 --- a/dist/types/index.d.ts +++ b/dist/types/index.d.ts @@ -110,7 +110,7 @@ declare class CupertinoPane { /** * Private Utils methods */ - private getTimingFunction; + private buildTransitionValue; private isBackdropPresented; private renderBackdrop; /** diff --git a/src/cupertino-pane.ts b/src/cupertino-pane.ts index 79419f61..054a31bb 100644 --- a/src/cupertino-pane.ts +++ b/src/cupertino-pane.ts @@ -286,7 +286,7 @@ export class CupertinoPane { ); this.followerEl.style.willChange = 'transform, border-radius'; this.followerEl.style.transform = `translateY(0px) translateZ(0px)`; - this.followerEl.style.transition = `all ${this.settings.animationDuration}ms ${this.getTimingFunction(this.settings.breaks[this.currentBreak()]?.bounce)} 0s`; + this.followerEl.style.transition = this.buildTransitionValue(this.settings.breaks[this.currentBreak()]?.bounce); } // Assign multiplicators for push elements @@ -493,8 +493,12 @@ export class CupertinoPane { /** * Private Utils methods */ - private getTimingFunction(bounce) { - return bounce ? 'cubic-bezier(0.175, 0.885, 0.370, 1.120)' : this.settings.animationType; + private buildTransitionValue(bounce: boolean): string { + if (bounce) { + return `all 300ms cubic-bezier(.155,1.105,.295,1.12)`; + } + + return `all ${this.settings.animationDuration}ms ${this.settings.animationType}`; } private isBackdropPresented() { @@ -924,13 +928,12 @@ export class CupertinoPane { val => val[1] === params.translateY ); let bounce = nextBreak && this.settings.breaks[nextBreak[0]]?.bounce; - const timingForNext = this.getTimingFunction(bounce); // style - this.paneEl.style.transition = `transform ${this.settings.animationDuration}ms ${timingForNext} 0s`; + this.paneEl.style.transition = this.buildTransitionValue(bounce); // Bind for follower same transitions if (this.followerEl) { - this.followerEl.style.transition = `transform ${this.settings.animationDuration}ms ${timingForNext} 0s`; + this.followerEl.style.transition = this.buildTransitionValue(bounce); } // Push transition diff --git a/src/events.ts b/src/events.ts index dfeec75a..ece3c4ab 100644 --- a/src/events.ts +++ b/src/events.ts @@ -255,10 +255,22 @@ export class Events { let newVal = this.instance.getPanelTransformY() + diffY; - // Patch for 'touchmove' first event - // when start slowly events with small velocity - if (this.steps.length < 2 && velocityY < 1) { - newVal = this.instance.getPanelTransformY() + (diffY * velocityY); + // First event after touchmove only + if (this.steps.length < 2) { + // Patch for 'touchmove' first event + // when start slowly events with small velocity + if (velocityY < 1) { + newVal = this.instance.getPanelTransformY() + (diffY * velocityY); + } + + // Move while transition patch next transitions + let computedTranslateY = new WebKitCSSMatrix( + window.getComputedStyle(this.instance.paneEl).transform + ).m42; + let transitionYDiff = computedTranslateY - this.instance.getPanelTransformY(); + if (Math.abs(transitionYDiff)) { + newVal += transitionYDiff; + } } // Detect if input was blured