@ionic/core 8.8.17 → 8.8.18-dev.11786109471.1285bcfb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/components/ion-app.js +1 -1
  2. package/components/ion-footer.js +1 -1
  3. package/components/ion-header.js +1 -1
  4. package/components/ion-infinite-scroll.js +1 -1
  5. package/components/ion-item-sliding.js +1 -1
  6. package/components/ion-modal.js +1 -1
  7. package/components/ion-range.js +1 -1
  8. package/components/ion-refresher.js +1 -1
  9. package/components/ion-reorder-group.js +1 -1
  10. package/components/ion-router.js +1 -1
  11. package/components/ion-select-modal.js +1 -1
  12. package/components/ion-select.js +1 -1
  13. package/components/{p-KEFO0w3i.js → p-BMaKgJFV.js} +1 -1
  14. package/components/p-Cp4GRDqq.js +4 -0
  15. package/components/p-D7uN07a3.js +4 -0
  16. package/components/p-R8zmRi4c.js +4 -0
  17. package/components/p-tr4_8ZS8.js +4 -0
  18. package/components/{p-DJZp0KTQ.js → p-vRBNsYbs.js} +1 -1
  19. package/dist/cjs/{index-CIrkNXqJ.js → index-Dqpns5vP.js} +32 -0
  20. package/dist/cjs/{input-shims-CFLg7uzj.js → input-shims-DpA1zUN9.js} +1 -1
  21. package/dist/cjs/ion-app_8.cjs.entry.js +3 -3
  22. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +1 -1
  23. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  24. package/dist/cjs/ion-modal.cjs.entry.js +34 -66
  25. package/dist/cjs/ion-range.cjs.entry.js +1 -1
  26. package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
  27. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  28. package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
  29. package/dist/cjs/{status-tap-BXX8H8_Y.js → status-tap-N1kaBbuk.js} +1 -1
  30. package/dist/collection/components/modal/gestures/sheet.js +5 -23
  31. package/dist/collection/components/modal/gestures/swipe-to-close.js +3 -32
  32. package/dist/collection/components/modal/gestures/utils.js +17 -0
  33. package/dist/collection/components/refresher/refresher.js +3 -3
  34. package/dist/collection/utils/content/index.js +30 -0
  35. package/dist/docs.json +1 -1
  36. package/dist/esm/{index-MEDq2S8l.js → index-Dw-wN0Ja.js} +31 -1
  37. package/dist/esm/{input-shims-D10mwcw1.js → input-shims-LXhI7LEx.js} +1 -1
  38. package/dist/esm/ion-app_8.entry.js +3 -3
  39. package/dist/esm/ion-infinite-scroll_2.entry.js +1 -1
  40. package/dist/esm/ion-item-option_3.entry.js +1 -1
  41. package/dist/esm/ion-modal.entry.js +22 -54
  42. package/dist/esm/ion-range.entry.js +1 -1
  43. package/dist/esm/ion-refresher_2.entry.js +3 -3
  44. package/dist/esm/ion-reorder_2.entry.js +1 -1
  45. package/dist/esm/ion-route_4.entry.js +1 -1
  46. package/dist/esm/{status-tap-Kan2W7sh.js → status-tap-vO-6s4Yp.js} +1 -1
  47. package/dist/ionic/ionic.esm.js +1 -1
  48. package/dist/ionic/p-0caa922c.entry.js +4 -0
  49. package/dist/ionic/{p-e0be05c5.entry.js → p-5334df12.entry.js} +1 -1
  50. package/dist/ionic/{p-20b1a044.entry.js → p-746fa988.entry.js} +1 -1
  51. package/dist/ionic/p-8158d422.entry.js +4 -0
  52. package/dist/ionic/{p-Dfbt-q2k.js → p-CmcFnK-B.js} +1 -1
  53. package/dist/ionic/{p-8fce95d5.entry.js → p-af55a72f.entry.js} +1 -1
  54. package/dist/ionic/p-b2020591.entry.js +4 -0
  55. package/dist/ionic/{p-b6a7397c.entry.js → p-b9fadbfe.entry.js} +1 -1
  56. package/dist/ionic/p-biz8zWmJ.js +4 -0
  57. package/dist/ionic/{p-485fda23.entry.js → p-d1aac015.entry.js} +1 -1
  58. package/dist/ionic/p-uWtqTrG8.js +4 -0
  59. package/dist/types/components/modal/gestures/utils.d.ts +11 -0
  60. package/dist/types/utils/content/index.d.ts +12 -0
  61. package/hydrate/index.js +52 -54
  62. package/hydrate/index.mjs +52 -54
  63. package/package.json +1 -1
  64. package/components/p-DHTSTb52.js +0 -4
  65. package/components/p-DRugphUN.js +0 -4
  66. package/components/p-VWbRkLT7.js +0 -4
  67. package/components/p-sijaAIYG.js +0 -4
  68. package/dist/ionic/p-4ac4f3d6.entry.js +0 -4
  69. package/dist/ionic/p-9f1103ce.entry.js +0 -4
  70. package/dist/ionic/p-DSG2s2Eb.js +0 -4
  71. package/dist/ionic/p-Wk5HzclC.js +0 -4
  72. package/dist/ionic/p-ad306193.entry.js +0 -4
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import{r as t,e as o,f as i,h as n,d as e,g as r,c as a,a as s,i as l,w as d,j as c}from"./p-tcQvqkiX.js";import{shouldUseCloseWatcher as b}from"./p-BUFIpxKM.js";import{a as h,b as p}from"./p-Nqf6uvGh.js";import{i as g,h as m,c as f,e as u,s as x}from"./p-DIuEbVLu.js";import{i as v}from"./p-C53feagD.js";import{c as k,h as w}from"./p-DiVJyqlX.js";import{a as y,p as z,g as C}from"./p-Wk5HzclC.js";import{c as j}from"./p-CtWGkNnJ.js";import{g as S}from"./p-hHmYLOfE.js";import{a as T,d as D}from"./p-CFlfIb2g.js";import{c as B}from"./p-B-hirT0v.js";import{t as Z}from"./p-VAemlbDS.js";import"./p-ZjP4CjeZ.js";import"./p-D13Eaw-8.js";import"./p-CIGNaXM1.js";const E=class{constructor(o){t(this,o)}componentDidLoad(){this.rIC((async()=>{const t=h(window,"hybrid");if(o.getBoolean("_testing")||import("./p-DoJvtrbw.js").then((t=>t.startTapClick(o))),o.getBoolean("statusTap",t)&&import("./p-DSG2s2Eb.js").then((t=>t.startStatusTap())),o.getBoolean("inputShims",$())){const t=h(window,"ios")?"ios":"android";import("./p-Dfbt-q2k.js").then((i=>i.startInputShims(o,t)))}const n=await import("./p-BUFIpxKM.js"),e=t||b();o.getBoolean("hardwareBackButton",e)?n.startHardwareBackButton():(b()&&i("[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used."),n.blockHardwareBackButton()),"undefined"!=typeof window&&import("./p-9eeaBrnk.js").then((t=>t.startKeyboardAssist(window))),import("./p-BmVRXR1y.js").then((t=>this.focusVisible=t.startFocusVisible()))}))}disconnectedCallback(){this.loadTimeout&&clearTimeout(this.loadTimeout)}async setFocus(t){this.focusVisible&&this.focusVisible.setFocus(t)}rIC(t){"requestIdleCallback"in window?window.requestIdleCallback(t):this.loadTimeout=setTimeout(t,32)}render(){const t=p(this);return n(e,{key:"77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb",class:{[t]:!0,"ion-page":!0,"force-statusbar-padding":o.getBoolean("_forceStatusbarPadding")}})}get el(){return r(this)}},$=()=>!(!h(window,"ios")||!h(window,"mobile"))||!(!h(window,"android")||!h(window,"mobileweb"));E.style="html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}";const I=class{constructor(o){t(this,o),this.collapse=!1}render(){const t=p(this);return n(e,{key:"58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b",class:{[t]:!0,"buttons-collapse":this.collapse}},n("slot",{key:"0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8"}))}};I.style={ios:".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}",md:".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}"};const L=class{constructor(o){t(this,o),this.ionScrollStart=a(this,"ionScrollStart",7),this.ionScroll=a(this,"ionScroll",7),this.ionScrollEnd=a(this,"ionScrollEnd",7),this.watchDog=null,this.isScrolling=!1,this.lastScroll=0,this.queued=!1,this.cTop=-1,this.cBottom=-1,this.isMainContent=!0,this.resizeTimeout=null,this.inheritedAttributes={},this.tabsElement=null,this.detail={scrollTop:0,scrollLeft:0,type:"scroll",event:void 0,startX:0,startY:0,startTime:0,currentX:0,currentY:0,velocityX:0,velocityY:0,deltaX:0,deltaY:0,currentTime:0,data:void 0,isScrolling:!0},this.fullscreen=!1,this.fixedSlotPlacement="after",this.scrollX=!1,this.scrollY=!0,this.scrollEvents=!1}componentWillLoad(){this.inheritedAttributes=g(this.el)}connectedCallback(){if(this.isMainContent=null===this.el.closest("ion-menu, ion-popover, ion-modal"),m(this.el)){const t=this.tabsElement=this.el.closest("ion-tabs");null!==t&&(this.tabsLoadCallback=()=>this.resize(),t.addEventListener("ionTabBarLoaded",this.tabsLoadCallback))}}disconnectedCallback(){if(this.onScrollEnd(),m(this.el)){const{tabsElement:t,tabsLoadCallback:o}=this;null!==t&&void 0!==o&&t.removeEventListener("ionTabBarLoaded",o),this.tabsElement=null,this.tabsLoadCallback=void 0}this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null)}onResize(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null),this.resizeTimeout=setTimeout((()=>{null!==this.el.offsetParent&&this.resize()}),100)}shouldForceOverscroll(){const{forceOverscroll:t}=this,o=p(this);return void 0===t?"ios"===o&&h("ios"):t}resize(){this.fullscreen?s((()=>this.readDimensions())):0===this.cTop&&0===this.cBottom||(this.cTop=this.cBottom=0,l(this))}async recalculateDimensions(){s((()=>this.readDimensions()))}readDimensions(){const t=M(this.el),o=Math.max(this.el.offsetTop,0),i=Math.max(t.offsetHeight-o-this.el.offsetHeight,0);(o!==this.cTop||i!==this.cBottom)&&(this.cTop=o,this.cBottom=i,l(this))}onScroll(t){const o=Date.now(),i=!this.isScrolling;this.lastScroll=o,i&&this.onScrollStart(),!this.queued&&this.scrollEvents&&(this.queued=!0,s((o=>{this.queued=!1,this.detail.event=t,O(this.detail,this.scrollEl,o,i),this.ionScroll.emit(this.detail)})))}async getScrollElement(){return this.scrollEl||await new Promise((t=>f(this.el,t))),Promise.resolve(this.scrollEl)}async getBackgroundElement(){return this.backgroundContentEl||await new Promise((t=>f(this.el,t))),Promise.resolve(this.backgroundContentEl)}scrollToTop(t=0){return this.scrollToPoint(void 0,0,t)}async scrollToBottom(t=0){const o=await this.getScrollElement();return this.scrollToPoint(void 0,o.scrollHeight-o.clientHeight,t)}async scrollByPoint(t,o,i){const n=await this.getScrollElement();return this.scrollToPoint(t+n.scrollLeft,o+n.scrollTop,i)}async scrollToPoint(t,o,i=0){const n=await this.getScrollElement();if(i<32)return null!=o&&(n.scrollTop=o),void(null!=t&&(n.scrollLeft=t));let e,r=0;const a=new Promise((t=>e=t)),s=n.scrollTop,l=n.scrollLeft,d=null!=o?o-s:0,c=null!=t?t-l:0,b=t=>{const o=Math.min(1,(t-r)/i)-1,a=Math.pow(o,3)+1;0!==d&&(n.scrollTop=Math.floor(a*d+s)),0!==c&&(n.scrollLeft=Math.floor(a*c+l)),a<1?requestAnimationFrame(b):e()};return requestAnimationFrame((t=>{r=t,b(t)})),a}onScrollStart(){this.isScrolling=!0,this.ionScrollStart.emit({isScrolling:!0}),this.watchDog&&clearInterval(this.watchDog),this.watchDog=setInterval((()=>{this.lastScroll<Date.now()-120&&this.onScrollEnd()}),100)}onScrollEnd(){this.watchDog&&clearInterval(this.watchDog),this.watchDog=null,this.isScrolling&&(this.isScrolling=!1,this.ionScrollEnd.emit({isScrolling:!1}))}render(){const{fixedSlotPlacement:t,inheritedAttributes:o,isMainContent:i,scrollX:r,scrollY:a,el:s}=this,l=v(s)?"rtl":"ltr",d=p(this),c=this.shouldForceOverscroll(),b="ios"===d;return this.resize(),n(e,Object.assign({key:"8c1bc4a4df8698d3884741eb38512dc059210c50",role:i?"main":void 0,class:k(this.color,{[d]:!0,"content-fullscreen":this.fullscreen,"content-sizing":w("ion-popover",this.el),overscroll:c,[`content-${l}`]:!0}),style:{"--offset-top":`${this.cTop}px`,"--offset-bottom":`${this.cBottom}px`}},o),n("div",{key:"5e7412549b51ef7543d9378ecab9aac6bc461588",ref:t=>this.backgroundContentEl=t,id:"background-content",part:"background"}),"before"===t?n("slot",{name:"fixed"}):null,n("div",{key:"33f6fbf7e1e027c7cbd2dda95b487f18dc648cef",class:{"inner-scroll":!0,"scroll-x":r,"scroll-y":a,overscroll:(r||a)&&c},ref:t=>this.scrollEl=t,onScroll:this.scrollEvents?t=>this.onScroll(t):void 0,part:"scroll"},n("slot",{key:"00c8fe7b9e73533c702273c9457d274195d54e98"})),b?n("div",{class:"transition-effect"},n("div",{class:"transition-cover"}),n("div",{class:"transition-shadow"})):null,"after"===t?n("slot",{name:"fixed"}):null)}get el(){return r(this)}},M=t=>{const o=t.closest("ion-tabs");if(o)return o;return t.closest("ion-app, ion-page, .ion-page, page-inner, .popover-content")||(t=>{var o;return t.parentElement?t.parentElement:(null===(o=t.parentNode)||void 0===o?void 0:o.host)?t.parentNode.host:null})(t)},O=(t,o,i,n)=>{const e=t.currentX,r=t.currentY,a=o.scrollLeft,s=o.scrollTop,l=i-t.currentTime;if(n&&(t.startTime=i,t.startX=a,t.startY=s,t.velocityX=t.velocityY=0),t.currentTime=i,t.currentX=t.scrollLeft=a,t.currentY=t.scrollTop=s,t.deltaX=a-t.startX,t.deltaY=s-t.startY,l>0&&l<100){const o=(s-r)/l;t.velocityX=(a-e)/l*.7+.3*t.velocityX,t.velocityY=.7*o+.3*t.velocityY}};L.style=':host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}';const W=(t,o)=>{s((()=>{const i=u(0,1-(t.scrollTop-(t.scrollHeight-t.clientHeight-10))/10,1);d((()=>{o.style.setProperty("--opacity-scale",i.toString())}))}))},A=class{constructor(o){t(this,o),this.keyboardCtrl=null,this.keyboardCtrlPromise=null,this.keyboardVisible=!1,this.translucent=!1,this.checkCollapsibleFooter=()=>{if("ios"!==p(this))return;const{collapse:t}=this,o="fade"===t;if(this.destroyCollapsibleFooter(),o){const t=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),o=t?y(t):null;if(!o)return void z(this.el);this.setupFadeFooter(o)}},this.setupFadeFooter=async t=>{const o=this.scrollEl=await C(t);this.contentScrollCallback=()=>{W(o,this.el)},o.addEventListener("scroll",this.contentScrollCallback),W(o,this.el)}}componentDidLoad(){this.checkCollapsibleFooter()}componentDidUpdate(){this.checkCollapsibleFooter()}async connectedCallback(){const t=j((async(t,o)=>{!1===t&&void 0!==o&&await o,this.keyboardVisible=t}));this.keyboardCtrlPromise=t;const o=await t;this.keyboardCtrlPromise===t?(this.keyboardCtrl=o,this.keyboardCtrlPromise=null):o.destroy()}disconnectedCallback(){this.keyboardCtrlPromise&&(this.keyboardCtrlPromise.then((t=>t.destroy())),this.keyboardCtrlPromise=null),this.keyboardCtrl&&(this.keyboardCtrl.destroy(),this.keyboardCtrl=null)}destroyCollapsibleFooter(){this.scrollEl&&this.contentScrollCallback&&(this.scrollEl.removeEventListener("scroll",this.contentScrollCallback),this.contentScrollCallback=void 0)}render(){const{translucent:t,collapse:o}=this,i=p(this),r=this.el.closest("ion-tabs"),a=null==r?void 0:r.querySelector(":scope > ion-tab-bar");return n(e,{key:"71939c4bbaef5062532a99ee2e33574102a9abad",role:"contentinfo",class:{[i]:!0,[`footer-${i}`]:!0,"footer-translucent":t,[`footer-translucent-${i}`]:t,"footer-toolbar-padding":!(this.keyboardVisible||a&&"bottom"===a.slot),[`footer-collapse-${o}`]:void 0!==o}},"ios"===i&&t&&n("div",{key:"2fa14f61661c47c661cecd696176728d6eafa74f",class:"footer-background"}),n("slot",{key:"8e63696e7c528d5c38201e546bf08135290d0945"}))}get el(){return r(this)}};A.style={ios:"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}",md:"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}"};const P="none",X="banner",_=t=>{const o=document.querySelector(`${t}.ion-cloned-element`);if(null!==o)return o;const i=document.createElement(t);return i.classList.add("ion-cloned-element"),i.style.setProperty("display","none"),document.body.appendChild(i),i},F=t=>{if(!t)return;const o=t.querySelectorAll("ion-toolbar");return{el:t,toolbars:Array.from(o).map((t=>{const o=t.querySelector("ion-title");return{el:t,background:t.shadowRoot.querySelector(".toolbar-background"),ionTitleEl:o,innerTitleEl:o?o.shadowRoot.querySelector(".toolbar-title"):null,ionButtonsEl:Array.from(t.querySelectorAll("ion-buttons"))}}))}},H=(t,o)=>{"fade"!==t.collapse&&(void 0===o?t.style.removeProperty("--opacity-scale"):t.style.setProperty("--opacity-scale",o.toString()))},q=(t,o=!0)=>{const i=t.el,n=t.toolbars.map((t=>t.ionTitleEl));o?(i.setAttribute("role",X),i.classList.remove("header-collapse-condense-inactive"),n.forEach((t=>{t&&t.removeAttribute("aria-hidden")}))):(i.setAttribute("role",P),i.classList.add("header-collapse-condense-inactive"),n.forEach((t=>{t&&t.setAttribute("aria-hidden","true")})))},N=(t,o,i)=>{s((()=>{const n=t.scrollTop,e=o.clientHeight,r=i?i.clientHeight:0;if(null!==i&&n<r)return o.style.setProperty("--opacity-scale","0"),void t.style.setProperty("clip-path",`inset(${e}px 0px 0px 0px)`);const a=u(0,(n-r)/10,1);d((()=>{t.style.removeProperty("clip-path"),o.style.setProperty("--opacity-scale",a.toString())}))}))},R=class{constructor(o){t(this,o),this.inheritedAttributes={},this.translucent=!1,this.setupFadeHeader=async(t,o)=>{const i=this.scrollEl=await C(t);this.contentScrollCallback=()=>{N(this.scrollEl,this.el,o)},i.addEventListener("scroll",this.contentScrollCallback),N(this.scrollEl,this.el,o)}}componentWillLoad(){this.inheritedAttributes=g(this.el)}componentDidLoad(){this.checkCollapsibleHeader()}componentDidUpdate(){this.checkCollapsibleHeader()}disconnectedCallback(){this.destroyCollapsibleHeader()}async checkCollapsibleHeader(){if("ios"!==p(this))return;const{collapse:t}=this,o="condense"===t,i="fade"===t;if(this.destroyCollapsibleHeader(),o){const t=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),o=t?y(t):null;d((()=>{_("ion-title").size="large",_("ion-back-button")})),await this.setupCondenseHeader(o,t)}else if(i){const t=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),o=t?y(t):null;if(!o)return void z(this.el);const i=o.querySelector('ion-header[collapse="condense"]');await this.setupFadeHeader(o,i)}}destroyCollapsibleHeader(){this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=void 0),this.scrollEl&&this.contentScrollCallback&&(this.scrollEl.removeEventListener("scroll",this.contentScrollCallback),this.contentScrollCallback=void 0),this.collapsibleMainHeader&&(this.collapsibleMainHeader.classList.remove("header-collapse-main"),this.collapsibleMainHeader=void 0)}async setupCondenseHeader(t,o){if(!t||!o)return void z(this.el);if("undefined"==typeof IntersectionObserver)return;this.scrollEl=await C(t);const i=o.querySelectorAll("ion-header");if(this.collapsibleMainHeader=Array.from(i).find((t=>"condense"!==t.collapse)),!this.collapsibleMainHeader)return;const n=F(this.collapsibleMainHeader),e=F(this.el);n&&e&&(q(n,!1),H(n.el,0),this.intersectionObserver=new IntersectionObserver((t=>{((t,o,i,n)=>{d((()=>{const e=n.scrollTop;((t,o,i)=>{if(!t[0].isIntersecting)return;const n=t[0].intersectionRatio>.9||i<=0?0:100*(1-t[0].intersectionRatio)/75;H(o.el,1===n?void 0:n)})(t,o,e);const r=t[0],a=r.intersectionRect,s=a.width*a.height,l=0===s&&0==r.rootBounds.width*r.rootBounds.height,d=Math.abs(a.left-r.boundingClientRect.left),c=Math.abs(a.right-r.boundingClientRect.right);l||s>0&&(d>=5||c>=5)||(r.isIntersecting?(q(o,!1),q(i)):(0===a.x&&0===a.y||0!==a.width&&0!==a.height)&&e>0&&(q(o),q(i,!1),H(o.el)))}))})(t,n,e,this.scrollEl)}),{root:t,threshold:[.25,.3,.4,.5,.6,.7,.8,.9,1]}),this.intersectionObserver.observe(e.toolbars[e.toolbars.length-1].el),this.contentScrollCallback=()=>{((t,o,i)=>{s((()=>{const n=u(1,1+-t.scrollTop/500,1.1);null===i.querySelector("ion-refresher.refresher-native")&&d((()=>{((t=[],o=1,i=!1)=>{t.forEach((t=>{const n=t.ionTitleEl,e=t.innerTitleEl;n&&"large"===n.size&&(e.style.transition=i?"all 0.2s ease-in-out":"",e.style.transform=`scale3d(${o}, ${o}, 1)`)}))})(o.toolbars,n)}))}))})(this.scrollEl,e,t)},this.scrollEl.addEventListener("scroll",this.contentScrollCallback),d((()=>{void 0!==this.collapsibleMainHeader&&this.collapsibleMainHeader.classList.add("header-collapse-main")})))}render(){const{translucent:t,inheritedAttributes:o}=this,i=p(this),r=this.collapse||"none",a="condense"===r,s=((t,o,i)=>t||o&&"md"===i?P:X)(w("ion-menu",this.el),a,i);return n(e,Object.assign({key:"863c4568cd7b8c0ec55109f193bbbaed68a1346e",role:s,class:{[i]:!0,[`header-${i}`]:!0,"header-translucent":this.translucent,[`header-collapse-${r}`]:!0,[`header-translucent-${i}`]:this.translucent}},o),"ios"===i&&t&&n("div",{key:"25c3bdce328b0b35607d154c8b8374679313d881",class:"header-background"}),n("slot",{key:"b44fab0a9be7920b9650da26117c783e751e1702"}))}get el(){return r(this)}};R.style={ios:"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}",md:"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}"};const Y=class{constructor(o){t(this,o),this.ionNavWillLoad=a(this,"ionNavWillLoad",7),this.ionNavWillChange=a(this,"ionNavWillChange",3),this.ionNavDidChange=a(this,"ionNavDidChange",3),this.lockController=B(),this.gestureOrAnimationInProgress=!1,this.mode=p(this),this.animated=!0}swipeHandlerChanged(){this.gesture&&this.gesture.enable(void 0!==this.swipeHandler)}async connectedCallback(){const t=()=>{this.gestureOrAnimationInProgress=!0,this.swipeHandler&&this.swipeHandler.onStart()};this.gesture=(await import("./p-D4uTWt4-.js")).createSwipeBackGesture(this.el,(()=>!this.gestureOrAnimationInProgress&&!!this.swipeHandler&&this.swipeHandler.canStart()),(()=>t()),(t=>{var o;return null===(o=this.ani)||void 0===o?void 0:o.progressStep(t)}),((t,o,i)=>{if(this.ani){this.ani.onFinish((()=>{this.gestureOrAnimationInProgress=!1,this.swipeHandler&&this.swipeHandler.onEnd(t)}),{oneTimeCallback:!0});let n=t?-.001:.001;t?n+=S([0,0],[.32,.72],[0,1],[1,1],o)[0]:(this.ani.easing("cubic-bezier(1, 0, 0.68, 0.28)"),n+=S([0,0],[1,0],[.68,.28],[1,1],o)[0]),this.ani.progressEnd(t?1:0,n,i)}else this.gestureOrAnimationInProgress=!1})),this.swipeHandlerChanged()}componentWillLoad(){this.ionNavWillLoad.emit()}disconnectedCallback(){this.gesture&&(this.gesture.destroy(),this.gesture=void 0)}async commit(t,o,i){const n=await this.lockController.lock();let e=!1;try{e=await this.transition(t,o,i)}catch(t){c("[ion-router-outlet] - Exception in commit:",t)}return n(),e}async setRouteId(t,o,i,n){return{changed:await this.setRoot(t,o,{duration:"root"===i?0:void 0,direction:"back"===i?"back":"forward",animationBuilder:n}),element:this.activeEl}}async getRouteId(){const t=this.activeEl;return t?{id:t.tagName,element:t,params:this.activeParams}:void 0}async setRoot(t,o,i){if(this.activeComponent===t&&x(o,this.activeParams))return!1;const n=this.activeEl,e=await T(this.delegate,this.el,t,["ion-page","ion-page-invisible"],o);return this.activeComponent=t,this.activeEl=e,this.activeParams=o,await this.commit(e,n,i),await D(this.delegate,n),!0}async transition(t,i,n={}){if(i===t)return!1;this.ionNavWillChange.emit();const{el:e,mode:r}=this,a=this.animated&&o.getBoolean("animated",!0),s=n.animationBuilder||this.animation||o.get("navAnimation");return await Z(Object.assign(Object.assign({mode:r,animated:a,enteringEl:t,leavingEl:i,baseEl:e,deepWait:m(e),progressCallback:n.progressAnimation?t=>{void 0===t||this.gestureOrAnimationInProgress?this.ani=t:(this.gestureOrAnimationInProgress=!0,t.onFinish((()=>{this.gestureOrAnimationInProgress=!1,this.swipeHandler&&this.swipeHandler.onEnd(!1)}),{oneTimeCallback:!0}),t.progressEnd(0,0,0))}:void 0},n),{animationBuilder:s})),this.ionNavDidChange.emit(),!0}render(){return n("slot",{key:"386c41745b61daba161cf75063da97fe29ba36cb"})}get el(){return r(this)}static get watchers(){return{swipeHandler:[{swipeHandlerChanged:0}]}}};Y.style=":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}";const G=class{constructor(o){t(this,o),this.ionStyle=a(this,"ionStyle",7)}sizeChanged(){this.emitStyle()}connectedCallback(){this.emitStyle()}emitStyle(){const t=this.getSize();this.ionStyle.emit({[`title-${t}`]:!0})}getSize(){return void 0!==this.size?this.size:"default"}render(){const t=p(this),o=this.getSize();return n(e,{key:"44e63f8439df64c470692904427b417e19406476",class:k(this.color,{[t]:!0,[`title-${o}`]:!0,"title-rtl":"rtl"===document.dir})},n("div",{key:"784cf60a0db16045391891cc8fad0c7dbeba4039",class:"toolbar-title"},n("slot",{key:"0c720a50479ba257e8756337aeb9b0ab7516a227"})))}get el(){return r(this)}static get watchers(){return{size:[{sizeChanged:0}]}}};G.style={ios:":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}",md:":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}"};const U=class{constructor(o){t(this,o),this.childrenStyles=new Map}componentWillLoad(){const t=Array.from(this.el.querySelectorAll("ion-buttons")),o=t.find((t=>"start"===t.slot));o&&o.classList.add("buttons-first-slot");const i=t.reverse(),n=i.find((t=>"end"===t.slot))||i.find((t=>"primary"===t.slot))||i.find((t=>"secondary"===t.slot));n&&n.classList.add("buttons-last-slot")}childrenStyle(t){t.stopPropagation();const o=t.target.tagName,i=t.detail,n={},e=this.childrenStyles.get(o)||{};let r=!1;Object.keys(i).forEach((t=>{const o=`toolbar-${t}`,a=i[t];a!==e[o]&&(r=!0),a&&(n[o]=!0)})),r&&(this.childrenStyles.set(o,n),l(this))}render(){const t=p(this),o={};return this.childrenStyles.forEach((t=>{Object.assign(o,t)})),n(e,{key:"b849db2863778dee6c5a251bffa1b3a657aeb036",class:Object.assign(Object.assign({},o),k(this.color,{[t]:!0,"in-toolbar":w("ion-toolbar",this.el)}))},n("div",{key:"67f5bba9c4f527c3f35bfe1313a2b85741f9b246",class:"toolbar-background",part:"background"}),n("div",{key:"085e8c68f056e5b0deb9d1606431fbeb45dae8e5",class:"toolbar-container",part:"container"},n("slot",{key:"15227c79c3baf883fd8c43fdb7e1313453933c79",name:"start"}),n("slot",{key:"0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8",name:"secondary"}),n("div",{key:"57e4628c1fa89df79dd80456259db961bb691404",class:"toolbar-content",part:"content"},n("slot",{key:"82c2f6e1acf8d96db259bd8baf295881801edbd5"})),n("slot",{key:"b2d4afb15214199f206c0a5e08b581e4c9c2f58a",name:"primary"}),n("slot",{key:"bfb909a0c472f8834046c2ea23bef2f562167ad3",name:"end"})))}get el(){return r(this)}};U.style={ios:":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}",md:":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}"};export{E as ion_app,I as ion_buttons,L as ion_content,A as ion_footer,R as ion_header,Y as ion_router_outlet,G as ion_title,U as ion_toolbar}
4
+ import{r as t,e as o,f as i,h as n,d as e,g as r,c as a,a as s,i as l,w as d,j as c}from"./p-tcQvqkiX.js";import{shouldUseCloseWatcher as b}from"./p-BUFIpxKM.js";import{a as h,b as p}from"./p-Nqf6uvGh.js";import{i as g,h as m,c as f,e as u,s as x}from"./p-DIuEbVLu.js";import{i as v}from"./p-C53feagD.js";import{c as k,h as w}from"./p-DiVJyqlX.js";import{b as y,p as z,g as C}from"./p-biz8zWmJ.js";import{c as j}from"./p-CtWGkNnJ.js";import{g as T}from"./p-hHmYLOfE.js";import{a as S,d as B}from"./p-CFlfIb2g.js";import{c as Z}from"./p-B-hirT0v.js";import{t as D}from"./p-VAemlbDS.js";import"./p-ZjP4CjeZ.js";import"./p-D13Eaw-8.js";import"./p-CIGNaXM1.js";const $=class{constructor(o){t(this,o)}componentDidLoad(){this.rIC((async()=>{const t=h(window,"hybrid");if(o.getBoolean("_testing")||import("./p-DoJvtrbw.js").then((t=>t.startTapClick(o))),o.getBoolean("statusTap",t)&&import("./p-uWtqTrG8.js").then((t=>t.startStatusTap())),o.getBoolean("inputShims",E())){const t=h(window,"ios")?"ios":"android";import("./p-CmcFnK-B.js").then((i=>i.startInputShims(o,t)))}const n=await import("./p-BUFIpxKM.js"),e=t||b();o.getBoolean("hardwareBackButton",e)?n.startHardwareBackButton():(b()&&i("[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used."),n.blockHardwareBackButton()),"undefined"!=typeof window&&import("./p-9eeaBrnk.js").then((t=>t.startKeyboardAssist(window))),import("./p-BmVRXR1y.js").then((t=>this.focusVisible=t.startFocusVisible()))}))}disconnectedCallback(){this.loadTimeout&&clearTimeout(this.loadTimeout)}async setFocus(t){this.focusVisible&&this.focusVisible.setFocus(t)}rIC(t){"requestIdleCallback"in window?window.requestIdleCallback(t):this.loadTimeout=setTimeout(t,32)}render(){const t=p(this);return n(e,{key:"77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb",class:{[t]:!0,"ion-page":!0,"force-statusbar-padding":o.getBoolean("_forceStatusbarPadding")}})}get el(){return r(this)}},E=()=>!(!h(window,"ios")||!h(window,"mobile"))||!(!h(window,"android")||!h(window,"mobileweb"));$.style="html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}";const I=class{constructor(o){t(this,o),this.collapse=!1}render(){const t=p(this);return n(e,{key:"58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b",class:{[t]:!0,"buttons-collapse":this.collapse}},n("slot",{key:"0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8"}))}};I.style={ios:".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}",md:".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}"};const L=class{constructor(o){t(this,o),this.ionScrollStart=a(this,"ionScrollStart",7),this.ionScroll=a(this,"ionScroll",7),this.ionScrollEnd=a(this,"ionScrollEnd",7),this.watchDog=null,this.isScrolling=!1,this.lastScroll=0,this.queued=!1,this.cTop=-1,this.cBottom=-1,this.isMainContent=!0,this.resizeTimeout=null,this.inheritedAttributes={},this.tabsElement=null,this.detail={scrollTop:0,scrollLeft:0,type:"scroll",event:void 0,startX:0,startY:0,startTime:0,currentX:0,currentY:0,velocityX:0,velocityY:0,deltaX:0,deltaY:0,currentTime:0,data:void 0,isScrolling:!0},this.fullscreen=!1,this.fixedSlotPlacement="after",this.scrollX=!1,this.scrollY=!0,this.scrollEvents=!1}componentWillLoad(){this.inheritedAttributes=g(this.el)}connectedCallback(){if(this.isMainContent=null===this.el.closest("ion-menu, ion-popover, ion-modal"),m(this.el)){const t=this.tabsElement=this.el.closest("ion-tabs");null!==t&&(this.tabsLoadCallback=()=>this.resize(),t.addEventListener("ionTabBarLoaded",this.tabsLoadCallback))}}disconnectedCallback(){if(this.onScrollEnd(),m(this.el)){const{tabsElement:t,tabsLoadCallback:o}=this;null!==t&&void 0!==o&&t.removeEventListener("ionTabBarLoaded",o),this.tabsElement=null,this.tabsLoadCallback=void 0}this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null)}onResize(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=null),this.resizeTimeout=setTimeout((()=>{null!==this.el.offsetParent&&this.resize()}),100)}shouldForceOverscroll(){const{forceOverscroll:t}=this,o=p(this);return void 0===t?"ios"===o&&h("ios"):t}resize(){this.fullscreen?s((()=>this.readDimensions())):0===this.cTop&&0===this.cBottom||(this.cTop=this.cBottom=0,l(this))}async recalculateDimensions(){s((()=>this.readDimensions()))}readDimensions(){const t=M(this.el),o=Math.max(this.el.offsetTop,0),i=Math.max(t.offsetHeight-o-this.el.offsetHeight,0);(o!==this.cTop||i!==this.cBottom)&&(this.cTop=o,this.cBottom=i,l(this))}onScroll(t){const o=Date.now(),i=!this.isScrolling;this.lastScroll=o,i&&this.onScrollStart(),!this.queued&&this.scrollEvents&&(this.queued=!0,s((o=>{this.queued=!1,this.detail.event=t,O(this.detail,this.scrollEl,o,i),this.ionScroll.emit(this.detail)})))}async getScrollElement(){return this.scrollEl||await new Promise((t=>f(this.el,t))),Promise.resolve(this.scrollEl)}async getBackgroundElement(){return this.backgroundContentEl||await new Promise((t=>f(this.el,t))),Promise.resolve(this.backgroundContentEl)}scrollToTop(t=0){return this.scrollToPoint(void 0,0,t)}async scrollToBottom(t=0){const o=await this.getScrollElement();return this.scrollToPoint(void 0,o.scrollHeight-o.clientHeight,t)}async scrollByPoint(t,o,i){const n=await this.getScrollElement();return this.scrollToPoint(t+n.scrollLeft,o+n.scrollTop,i)}async scrollToPoint(t,o,i=0){const n=await this.getScrollElement();if(i<32)return null!=o&&(n.scrollTop=o),void(null!=t&&(n.scrollLeft=t));let e,r=0;const a=new Promise((t=>e=t)),s=n.scrollTop,l=n.scrollLeft,d=null!=o?o-s:0,c=null!=t?t-l:0,b=t=>{const o=Math.min(1,(t-r)/i)-1,a=Math.pow(o,3)+1;0!==d&&(n.scrollTop=Math.floor(a*d+s)),0!==c&&(n.scrollLeft=Math.floor(a*c+l)),a<1?requestAnimationFrame(b):e()};return requestAnimationFrame((t=>{r=t,b(t)})),a}onScrollStart(){this.isScrolling=!0,this.ionScrollStart.emit({isScrolling:!0}),this.watchDog&&clearInterval(this.watchDog),this.watchDog=setInterval((()=>{this.lastScroll<Date.now()-120&&this.onScrollEnd()}),100)}onScrollEnd(){this.watchDog&&clearInterval(this.watchDog),this.watchDog=null,this.isScrolling&&(this.isScrolling=!1,this.ionScrollEnd.emit({isScrolling:!1}))}render(){const{fixedSlotPlacement:t,inheritedAttributes:o,isMainContent:i,scrollX:r,scrollY:a,el:s}=this,l=v(s)?"rtl":"ltr",d=p(this),c=this.shouldForceOverscroll(),b="ios"===d;return this.resize(),n(e,Object.assign({key:"8c1bc4a4df8698d3884741eb38512dc059210c50",role:i?"main":void 0,class:k(this.color,{[d]:!0,"content-fullscreen":this.fullscreen,"content-sizing":w("ion-popover",this.el),overscroll:c,[`content-${l}`]:!0}),style:{"--offset-top":`${this.cTop}px`,"--offset-bottom":`${this.cBottom}px`}},o),n("div",{key:"5e7412549b51ef7543d9378ecab9aac6bc461588",ref:t=>this.backgroundContentEl=t,id:"background-content",part:"background"}),"before"===t?n("slot",{name:"fixed"}):null,n("div",{key:"33f6fbf7e1e027c7cbd2dda95b487f18dc648cef",class:{"inner-scroll":!0,"scroll-x":r,"scroll-y":a,overscroll:(r||a)&&c},ref:t=>this.scrollEl=t,onScroll:this.scrollEvents?t=>this.onScroll(t):void 0,part:"scroll"},n("slot",{key:"00c8fe7b9e73533c702273c9457d274195d54e98"})),b?n("div",{class:"transition-effect"},n("div",{class:"transition-cover"}),n("div",{class:"transition-shadow"})):null,"after"===t?n("slot",{name:"fixed"}):null)}get el(){return r(this)}},M=t=>{const o=t.closest("ion-tabs");if(o)return o;return t.closest("ion-app, ion-page, .ion-page, page-inner, .popover-content")||(t=>{var o;return t.parentElement?t.parentElement:(null===(o=t.parentNode)||void 0===o?void 0:o.host)?t.parentNode.host:null})(t)},O=(t,o,i,n)=>{const e=t.currentX,r=t.currentY,a=o.scrollLeft,s=o.scrollTop,l=i-t.currentTime;if(n&&(t.startTime=i,t.startX=a,t.startY=s,t.velocityX=t.velocityY=0),t.currentTime=i,t.currentX=t.scrollLeft=a,t.currentY=t.scrollTop=s,t.deltaX=a-t.startX,t.deltaY=s-t.startY,l>0&&l<100){const o=(s-r)/l;t.velocityX=(a-e)/l*.7+.3*t.velocityX,t.velocityY=.7*o+.3*t.velocityY}};L.style=':host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}';const W=(t,o)=>{s((()=>{const i=u(0,1-(t.scrollTop-(t.scrollHeight-t.clientHeight-10))/10,1);d((()=>{o.style.setProperty("--opacity-scale",i.toString())}))}))},A=class{constructor(o){t(this,o),this.keyboardCtrl=null,this.keyboardCtrlPromise=null,this.keyboardVisible=!1,this.translucent=!1,this.checkCollapsibleFooter=()=>{if("ios"!==p(this))return;const{collapse:t}=this,o="fade"===t;if(this.destroyCollapsibleFooter(),o){const t=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),o=t?y(t):null;if(!o)return void z(this.el);this.setupFadeFooter(o)}},this.setupFadeFooter=async t=>{const o=this.scrollEl=await C(t);this.contentScrollCallback=()=>{W(o,this.el)},o.addEventListener("scroll",this.contentScrollCallback),W(o,this.el)}}componentDidLoad(){this.checkCollapsibleFooter()}componentDidUpdate(){this.checkCollapsibleFooter()}async connectedCallback(){const t=j((async(t,o)=>{!1===t&&void 0!==o&&await o,this.keyboardVisible=t}));this.keyboardCtrlPromise=t;const o=await t;this.keyboardCtrlPromise===t?(this.keyboardCtrl=o,this.keyboardCtrlPromise=null):o.destroy()}disconnectedCallback(){this.keyboardCtrlPromise&&(this.keyboardCtrlPromise.then((t=>t.destroy())),this.keyboardCtrlPromise=null),this.keyboardCtrl&&(this.keyboardCtrl.destroy(),this.keyboardCtrl=null)}destroyCollapsibleFooter(){this.scrollEl&&this.contentScrollCallback&&(this.scrollEl.removeEventListener("scroll",this.contentScrollCallback),this.contentScrollCallback=void 0)}render(){const{translucent:t,collapse:o}=this,i=p(this),r=this.el.closest("ion-tabs"),a=null==r?void 0:r.querySelector(":scope > ion-tab-bar");return n(e,{key:"71939c4bbaef5062532a99ee2e33574102a9abad",role:"contentinfo",class:{[i]:!0,[`footer-${i}`]:!0,"footer-translucent":t,[`footer-translucent-${i}`]:t,"footer-toolbar-padding":!(this.keyboardVisible||a&&"bottom"===a.slot),[`footer-collapse-${o}`]:void 0!==o}},"ios"===i&&t&&n("div",{key:"2fa14f61661c47c661cecd696176728d6eafa74f",class:"footer-background"}),n("slot",{key:"8e63696e7c528d5c38201e546bf08135290d0945"}))}get el(){return r(this)}};A.style={ios:"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}",md:"ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}"};const P="none",X="banner",_=t=>{const o=document.querySelector(`${t}.ion-cloned-element`);if(null!==o)return o;const i=document.createElement(t);return i.classList.add("ion-cloned-element"),i.style.setProperty("display","none"),document.body.appendChild(i),i},F=t=>{if(!t)return;const o=t.querySelectorAll("ion-toolbar");return{el:t,toolbars:Array.from(o).map((t=>{const o=t.querySelector("ion-title");return{el:t,background:t.shadowRoot.querySelector(".toolbar-background"),ionTitleEl:o,innerTitleEl:o?o.shadowRoot.querySelector(".toolbar-title"):null,ionButtonsEl:Array.from(t.querySelectorAll("ion-buttons"))}}))}},q=(t,o)=>{"fade"!==t.collapse&&(void 0===o?t.style.removeProperty("--opacity-scale"):t.style.setProperty("--opacity-scale",o.toString()))},H=(t,o=!0)=>{const i=t.el,n=t.toolbars.map((t=>t.ionTitleEl));o?(i.setAttribute("role",X),i.classList.remove("header-collapse-condense-inactive"),n.forEach((t=>{t&&t.removeAttribute("aria-hidden")}))):(i.setAttribute("role",P),i.classList.add("header-collapse-condense-inactive"),n.forEach((t=>{t&&t.setAttribute("aria-hidden","true")})))},N=(t,o,i)=>{s((()=>{const n=t.scrollTop,e=o.clientHeight,r=i?i.clientHeight:0;if(null!==i&&n<r)return o.style.setProperty("--opacity-scale","0"),void t.style.setProperty("clip-path",`inset(${e}px 0px 0px 0px)`);const a=u(0,(n-r)/10,1);d((()=>{t.style.removeProperty("clip-path"),o.style.setProperty("--opacity-scale",a.toString())}))}))},R=class{constructor(o){t(this,o),this.inheritedAttributes={},this.translucent=!1,this.setupFadeHeader=async(t,o)=>{const i=this.scrollEl=await C(t);this.contentScrollCallback=()=>{N(this.scrollEl,this.el,o)},i.addEventListener("scroll",this.contentScrollCallback),N(this.scrollEl,this.el,o)}}componentWillLoad(){this.inheritedAttributes=g(this.el)}componentDidLoad(){this.checkCollapsibleHeader()}componentDidUpdate(){this.checkCollapsibleHeader()}disconnectedCallback(){this.destroyCollapsibleHeader()}async checkCollapsibleHeader(){if("ios"!==p(this))return;const{collapse:t}=this,o="condense"===t,i="fade"===t;if(this.destroyCollapsibleHeader(),o){const t=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),o=t?y(t):null;d((()=>{_("ion-title").size="large",_("ion-back-button")})),await this.setupCondenseHeader(o,t)}else if(i){const t=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),o=t?y(t):null;if(!o)return void z(this.el);const i=o.querySelector('ion-header[collapse="condense"]');await this.setupFadeHeader(o,i)}}destroyCollapsibleHeader(){this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=void 0),this.scrollEl&&this.contentScrollCallback&&(this.scrollEl.removeEventListener("scroll",this.contentScrollCallback),this.contentScrollCallback=void 0),this.collapsibleMainHeader&&(this.collapsibleMainHeader.classList.remove("header-collapse-main"),this.collapsibleMainHeader=void 0)}async setupCondenseHeader(t,o){if(!t||!o)return void z(this.el);if("undefined"==typeof IntersectionObserver)return;this.scrollEl=await C(t);const i=o.querySelectorAll("ion-header");if(this.collapsibleMainHeader=Array.from(i).find((t=>"condense"!==t.collapse)),!this.collapsibleMainHeader)return;const n=F(this.collapsibleMainHeader),e=F(this.el);n&&e&&(H(n,!1),q(n.el,0),this.intersectionObserver=new IntersectionObserver((t=>{((t,o,i,n)=>{d((()=>{const e=n.scrollTop;((t,o,i)=>{if(!t[0].isIntersecting)return;const n=t[0].intersectionRatio>.9||i<=0?0:100*(1-t[0].intersectionRatio)/75;q(o.el,1===n?void 0:n)})(t,o,e);const r=t[0],a=r.intersectionRect,s=a.width*a.height,l=0===s&&0==r.rootBounds.width*r.rootBounds.height,d=Math.abs(a.left-r.boundingClientRect.left),c=Math.abs(a.right-r.boundingClientRect.right);l||s>0&&(d>=5||c>=5)||(r.isIntersecting?(H(o,!1),H(i)):(0===a.x&&0===a.y||0!==a.width&&0!==a.height)&&e>0&&(H(o),H(i,!1),q(o.el)))}))})(t,n,e,this.scrollEl)}),{root:t,threshold:[.25,.3,.4,.5,.6,.7,.8,.9,1]}),this.intersectionObserver.observe(e.toolbars[e.toolbars.length-1].el),this.contentScrollCallback=()=>{((t,o,i)=>{s((()=>{const n=u(1,1+-t.scrollTop/500,1.1);null===i.querySelector("ion-refresher.refresher-native")&&d((()=>{((t=[],o=1,i=!1)=>{t.forEach((t=>{const n=t.ionTitleEl,e=t.innerTitleEl;n&&"large"===n.size&&(e.style.transition=i?"all 0.2s ease-in-out":"",e.style.transform=`scale3d(${o}, ${o}, 1)`)}))})(o.toolbars,n)}))}))})(this.scrollEl,e,t)},this.scrollEl.addEventListener("scroll",this.contentScrollCallback),d((()=>{void 0!==this.collapsibleMainHeader&&this.collapsibleMainHeader.classList.add("header-collapse-main")})))}render(){const{translucent:t,inheritedAttributes:o}=this,i=p(this),r=this.collapse||"none",a="condense"===r,s=((t,o,i)=>t||o&&"md"===i?P:X)(w("ion-menu",this.el),a,i);return n(e,Object.assign({key:"863c4568cd7b8c0ec55109f193bbbaed68a1346e",role:s,class:{[i]:!0,[`header-${i}`]:!0,"header-translucent":this.translucent,[`header-collapse-${r}`]:!0,[`header-translucent-${i}`]:this.translucent}},o),"ios"===i&&t&&n("div",{key:"25c3bdce328b0b35607d154c8b8374679313d881",class:"header-background"}),n("slot",{key:"b44fab0a9be7920b9650da26117c783e751e1702"}))}get el(){return r(this)}};R.style={ios:"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}",md:"ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}"};const Y=class{constructor(o){t(this,o),this.ionNavWillLoad=a(this,"ionNavWillLoad",7),this.ionNavWillChange=a(this,"ionNavWillChange",3),this.ionNavDidChange=a(this,"ionNavDidChange",3),this.lockController=Z(),this.gestureOrAnimationInProgress=!1,this.mode=p(this),this.animated=!0}swipeHandlerChanged(){this.gesture&&this.gesture.enable(void 0!==this.swipeHandler)}async connectedCallback(){const t=()=>{this.gestureOrAnimationInProgress=!0,this.swipeHandler&&this.swipeHandler.onStart()};this.gesture=(await import("./p-D4uTWt4-.js")).createSwipeBackGesture(this.el,(()=>!this.gestureOrAnimationInProgress&&!!this.swipeHandler&&this.swipeHandler.canStart()),(()=>t()),(t=>{var o;return null===(o=this.ani)||void 0===o?void 0:o.progressStep(t)}),((t,o,i)=>{if(this.ani){this.ani.onFinish((()=>{this.gestureOrAnimationInProgress=!1,this.swipeHandler&&this.swipeHandler.onEnd(t)}),{oneTimeCallback:!0});let n=t?-.001:.001;t?n+=T([0,0],[.32,.72],[0,1],[1,1],o)[0]:(this.ani.easing("cubic-bezier(1, 0, 0.68, 0.28)"),n+=T([0,0],[1,0],[.68,.28],[1,1],o)[0]),this.ani.progressEnd(t?1:0,n,i)}else this.gestureOrAnimationInProgress=!1})),this.swipeHandlerChanged()}componentWillLoad(){this.ionNavWillLoad.emit()}disconnectedCallback(){this.gesture&&(this.gesture.destroy(),this.gesture=void 0)}async commit(t,o,i){const n=await this.lockController.lock();let e=!1;try{e=await this.transition(t,o,i)}catch(t){c("[ion-router-outlet] - Exception in commit:",t)}return n(),e}async setRouteId(t,o,i,n){return{changed:await this.setRoot(t,o,{duration:"root"===i?0:void 0,direction:"back"===i?"back":"forward",animationBuilder:n}),element:this.activeEl}}async getRouteId(){const t=this.activeEl;return t?{id:t.tagName,element:t,params:this.activeParams}:void 0}async setRoot(t,o,i){if(this.activeComponent===t&&x(o,this.activeParams))return!1;const n=this.activeEl,e=await S(this.delegate,this.el,t,["ion-page","ion-page-invisible"],o);return this.activeComponent=t,this.activeEl=e,this.activeParams=o,await this.commit(e,n,i),await B(this.delegate,n),!0}async transition(t,i,n={}){if(i===t)return!1;this.ionNavWillChange.emit();const{el:e,mode:r}=this,a=this.animated&&o.getBoolean("animated",!0),s=n.animationBuilder||this.animation||o.get("navAnimation");return await D(Object.assign(Object.assign({mode:r,animated:a,enteringEl:t,leavingEl:i,baseEl:e,deepWait:m(e),progressCallback:n.progressAnimation?t=>{void 0===t||this.gestureOrAnimationInProgress?this.ani=t:(this.gestureOrAnimationInProgress=!0,t.onFinish((()=>{this.gestureOrAnimationInProgress=!1,this.swipeHandler&&this.swipeHandler.onEnd(!1)}),{oneTimeCallback:!0}),t.progressEnd(0,0,0))}:void 0},n),{animationBuilder:s})),this.ionNavDidChange.emit(),!0}render(){return n("slot",{key:"386c41745b61daba161cf75063da97fe29ba36cb"})}get el(){return r(this)}static get watchers(){return{swipeHandler:[{swipeHandlerChanged:0}]}}};Y.style=":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}";const G=class{constructor(o){t(this,o),this.ionStyle=a(this,"ionStyle",7)}sizeChanged(){this.emitStyle()}connectedCallback(){this.emitStyle()}emitStyle(){const t=this.getSize();this.ionStyle.emit({[`title-${t}`]:!0})}getSize(){return void 0!==this.size?this.size:"default"}render(){const t=p(this),o=this.getSize();return n(e,{key:"44e63f8439df64c470692904427b417e19406476",class:k(this.color,{[t]:!0,[`title-${o}`]:!0,"title-rtl":"rtl"===document.dir})},n("div",{key:"784cf60a0db16045391891cc8fad0c7dbeba4039",class:"toolbar-title"},n("slot",{key:"0c720a50479ba257e8756337aeb9b0ab7516a227"})))}get el(){return r(this)}static get watchers(){return{size:[{sizeChanged:0}]}}};G.style={ios:":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}",md:":host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}"};const J=class{constructor(o){t(this,o),this.childrenStyles=new Map}componentWillLoad(){const t=Array.from(this.el.querySelectorAll("ion-buttons")),o=t.find((t=>"start"===t.slot));o&&o.classList.add("buttons-first-slot");const i=t.reverse(),n=i.find((t=>"end"===t.slot))||i.find((t=>"primary"===t.slot))||i.find((t=>"secondary"===t.slot));n&&n.classList.add("buttons-last-slot")}childrenStyle(t){t.stopPropagation();const o=t.target.tagName,i=t.detail,n={},e=this.childrenStyles.get(o)||{};let r=!1;Object.keys(i).forEach((t=>{const o=`toolbar-${t}`,a=i[t];a!==e[o]&&(r=!0),a&&(n[o]=!0)})),r&&(this.childrenStyles.set(o,n),l(this))}render(){const t=p(this),o={};return this.childrenStyles.forEach((t=>{Object.assign(o,t)})),n(e,{key:"b849db2863778dee6c5a251bffa1b3a657aeb036",class:Object.assign(Object.assign({},o),k(this.color,{[t]:!0,"in-toolbar":w("ion-toolbar",this.el)}))},n("div",{key:"67f5bba9c4f527c3f35bfe1313a2b85741f9b246",class:"toolbar-background",part:"background"}),n("div",{key:"085e8c68f056e5b0deb9d1606431fbeb45dae8e5",class:"toolbar-container",part:"container"},n("slot",{key:"15227c79c3baf883fd8c43fdb7e1313453933c79",name:"start"}),n("slot",{key:"0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8",name:"secondary"}),n("div",{key:"57e4628c1fa89df79dd80456259db961bb691404",class:"toolbar-content",part:"content"},n("slot",{key:"82c2f6e1acf8d96db259bd8baf295881801edbd5"})),n("slot",{key:"b2d4afb15214199f206c0a5e08b581e4c9c2f58a",name:"primary"}),n("slot",{key:"bfb909a0c472f8834046c2ea23bef2f562167ad3",name:"end"})))}get el(){return r(this)}};J.style={ios:":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}",md:":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}"};export{$ as ion_app,I as ion_buttons,L as ion_content,A as ion_footer,R as ion_header,Y as ion_router_outlet,G as ion_title,J as ion_toolbar}
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import{a as o,w as s}from"./p-tcQvqkiX.js";import{a as t,s as a}from"./p-biz8zWmJ.js";import{c as r}from"./p-DIuEbVLu.js";const i=()=>{const i=window;i.addEventListener("statusTap",(()=>{o((()=>{const o=document.elementFromPoint(i.innerWidth/2,i.innerHeight/2);if(!o)return;const n=t(o);n&&new Promise((o=>r(n,o))).then((()=>{s((async()=>{n.style.setProperty("--overflow","hidden"),await a(n,300),n.style.removeProperty("--overflow")}))}))}))}))};export{i as startStatusTap}
@@ -1,4 +1,15 @@
1
1
  import type { Animation } from '../../../interface';
2
+ /**
3
+ * Swiping is only possible when the content is scrolled to the top, so that we
4
+ * do not interfere with scrolling, and never on content with a refresher.
5
+ *
6
+ * Note: We cannot solve the refresher case with gesture priority as the iOS
7
+ * native refresh gesture uses a scroll listener in addition to a gesture.
8
+ *
9
+ * Note: Do not use `getScrollElement` here because we need this to be a
10
+ * synchronous operation, and `getScrollElement` is asynchronous.
11
+ */
12
+ export declare const canSwipeOnContent: (contentEl: HTMLElement) => boolean;
2
13
  export declare const handleCanDismiss: (el: HTMLIonModalElement, animation: Animation) => Promise<void>;
3
14
  /**
4
15
  * This function lets us simulate a realistic spring-like animation
@@ -21,6 +21,18 @@ export declare const findIonContent: (el: Element) => HTMLElement | null;
21
21
  * Queries the closest element matching the selector for IonContent.
22
22
  */
23
23
  export declare const findClosestIonContent: (el: Element) => HTMLElement | null;
24
+ /**
25
+ * Queries the custom scroll host an `ion-refresher` scrolls with in the given
26
+ * `ion-content`. A refresher only pairs with the first host.
27
+ */
28
+ export declare const findRefresherScrollHost: (ionContent: Element) => HTMLElement | null;
29
+ /**
30
+ * Queries the `ion-refresher` that scrolls with the given content element,
31
+ * which may be an `ion-content` or a custom scroll host. A refresher is a
32
+ * `slot="fixed"` child of `ion-content`, so it is a sibling of a scroll host
33
+ * rather than a descendant of it.
34
+ */
35
+ export declare const findRefresherInContent: (contentEl: Element) => HTMLIonRefresherElement | null;
24
36
  /**
25
37
  * Scrolls to the top of the element. If an `ion-content` is found, it will scroll
26
38
  * using the public API `scrollToTop` with a duration.
package/hydrate/index.js CHANGED
@@ -17721,6 +17721,36 @@ const findIonContent = (el) => {
17721
17721
  const findClosestIonContent = (el) => {
17722
17722
  return el.closest(ION_CONTENT_SELECTOR);
17723
17723
  };
17724
+ /**
17725
+ * Queries the custom scroll host an `ion-refresher` scrolls with in the given
17726
+ * `ion-content`. A refresher only pairs with the first host.
17727
+ */
17728
+ const findRefresherScrollHost = (ionContent) => {
17729
+ return ionContent.querySelector(ION_CONTENT_CLASS_SELECTOR);
17730
+ };
17731
+ /**
17732
+ * Queries the `ion-refresher` that scrolls with the given content element,
17733
+ * which may be an `ion-content` or a custom scroll host. A refresher is a
17734
+ * `slot="fixed"` child of `ion-content`, so it is a sibling of a scroll host
17735
+ * rather than a descendant of it.
17736
+ */
17737
+ const findRefresherInContent = (contentEl) => {
17738
+ // An `ion-content` owns any refresher inside it, scroll host or not.
17739
+ if (isIonContent(contentEl)) {
17740
+ return contentEl.querySelector('ion-refresher');
17741
+ }
17742
+ // A refresher needs an `ion-content` ancestor to initialize.
17743
+ const ionContent = contentEl.closest(ION_CONTENT_ELEMENT_SELECTOR);
17744
+ if (ionContent === null) {
17745
+ return null;
17746
+ }
17747
+ // Any scroll host other than the refresher's own has no refresher.
17748
+ const refresherScrollHost = findRefresherScrollHost(ionContent);
17749
+ if (refresherScrollHost === null || !refresherScrollHost.contains(contentEl)) {
17750
+ return null;
17751
+ }
17752
+ return ionContent.querySelector('ion-refresher');
17753
+ };
17724
17754
  /**
17725
17755
  * Prints an error informing developers that an implementation requires an element to be used
17726
17756
  * within either the `ion-content` selector or the `.ion-content-scroll-host` class.
@@ -24031,6 +24061,21 @@ const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
24031
24061
  StatusBar.setStyle({ style: defaultStyle });
24032
24062
  };
24033
24063
 
24064
+ /**
24065
+ * Swiping is only possible when the content is scrolled to the top, so that we
24066
+ * do not interfere with scrolling, and never on content with a refresher.
24067
+ *
24068
+ * Note: We cannot solve the refresher case with gesture priority as the iOS
24069
+ * native refresh gesture uses a scroll listener in addition to a gesture.
24070
+ *
24071
+ * Note: Do not use `getScrollElement` here because we need this to be a
24072
+ * synchronous operation, and `getScrollElement` is asynchronous.
24073
+ */
24074
+ const canSwipeOnContent = (contentEl) => {
24075
+ const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
24076
+ const hasRefresherInContent = !!findRefresherInContent(contentEl);
24077
+ return !hasRefresherInContent && scrollEl.scrollTop === 0;
24078
+ };
24034
24079
  const handleCanDismiss = async (el, animation) => {
24035
24080
  /**
24036
24081
  * If canDismiss is not a function
@@ -24161,7 +24206,6 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
24161
24206
  let isOpen = false;
24162
24207
  let canDismissBlocksGesture = false;
24163
24208
  let contentEl = null;
24164
- let scrollEl = null;
24165
24209
  const canDismissMaxStep = 0.2;
24166
24210
  let initialScrollY = true;
24167
24211
  let lastStep = 0;
@@ -24184,12 +24228,6 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
24184
24228
  return true;
24185
24229
  }
24186
24230
  /**
24187
- * If we are swiping on the content,
24188
- * swiping should only be possible if
24189
- * the content is scrolled all the way
24190
- * to the top so that we do not interfere
24191
- * with scrolling.
24192
- *
24193
24231
  * We cannot assume that the `ion-content`
24194
24232
  * target will remain consistent between
24195
24233
  * swipes. For example, when using
@@ -24200,29 +24238,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
24200
24238
  */
24201
24239
  contentEl = findClosestIonContent(target);
24202
24240
  if (contentEl) {
24203
- /**
24204
- * The card should never swipe to close
24205
- * on the content with a refresher.
24206
- * Note: We cannot solve this by making the
24207
- * swipeToClose gesture have a higher priority
24208
- * than the refresher gesture as the iOS native
24209
- * refresh gesture uses a scroll listener in
24210
- * addition to a gesture.
24211
- *
24212
- * Note: Do not use getScrollElement here
24213
- * because we need this to be a synchronous
24214
- * operation, and getScrollElement is
24215
- * asynchronous.
24216
- */
24217
- if (isIonContent(contentEl)) {
24218
- const root = getElementRoot(contentEl);
24219
- scrollEl = root.querySelector('.inner-scroll');
24220
- }
24221
- else {
24222
- scrollEl = contentEl;
24223
- }
24224
- const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
24225
- return !hasRefresherInContent && scrollEl.scrollTop === 0;
24241
+ return canSwipeOnContent(contentEl);
24226
24242
  }
24227
24243
  /**
24228
24244
  * Card should be swipeable on all
@@ -25094,9 +25110,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
25094
25110
  }
25095
25111
  const canStart = (detail) => {
25096
25112
  /**
25097
- * If we are swiping on the content, swiping should only be possible if the content
25098
- * is scrolled all the way to the top so that we do not interfere with scrolling.
25099
- *
25100
25113
  * We cannot assume that the `ion-content` target will remain consistent between swipes.
25101
25114
  * For example, when using ion-nav within a modal it is possible to swipe, push a view,
25102
25115
  * and then swipe again. The target content will not be the same between swipes.
@@ -25104,26 +25117,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
25104
25117
  const contentEl = findClosestIonContent(detail.event.target);
25105
25118
  currentBreakpoint = getCurrentBreakpoint();
25106
25119
  /**
25107
- * If `expandToScroll` is disabled, we should not allow the swipe gesture
25108
- * to start if the content is not scrolled to the top.
25120
+ * Upwards swipes on the content cannot move the sheet anyway, so this only
25121
+ * blocks swiping the sheet down from the content.
25109
25122
  */
25110
- if (!expandToScroll && contentEl) {
25111
- const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
25112
- return scrollEl.scrollTop === 0;
25113
- }
25114
- if (currentBreakpoint === 1 && contentEl) {
25115
- /**
25116
- * The modal should never swipe to close on the content with a refresher.
25117
- * Note 1: We cannot solve this by making this gesture have a higher priority than
25118
- * the refresher gesture as the iOS native refresh gesture uses a scroll listener in
25119
- * addition to a gesture.
25120
- *
25121
- * Note 2: Do not use getScrollElement here because we need this to be a synchronous
25122
- * operation, and getScrollElement is asynchronous.
25123
- */
25124
- const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
25125
- const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
25126
- return !hasRefresherInContent && scrollEl.scrollTop === 0;
25123
+ if (contentEl && (!expandToScroll || currentBreakpoint === 1)) {
25124
+ return canSwipeOnContent(contentEl);
25127
25125
  }
25128
25126
  return true;
25129
25127
  };
@@ -33586,7 +33584,7 @@ class Refresher {
33586
33584
  * or the background content element.
33587
33585
  */
33588
33586
  componentOnReady(contentEl, async () => {
33589
- const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);
33587
+ const customScrollTarget = findRefresherScrollHost(contentEl);
33590
33588
  /**
33591
33589
  * Query the custom scroll target (if available), first. In refresher implementations,
33592
33590
  * the ion-refresher element will always be a direct child of ion-content (slot="fixed"). By
@@ -33936,7 +33934,7 @@ class Refresher {
33936
33934
  }
33937
33935
  render() {
33938
33936
  const mode = getIonMode$1(this);
33939
- return (hAsync(Host, { key: '2eaca7f85b3d40418f213077434e519dfacd9d42', slot: "fixed", class: {
33937
+ return (hAsync(Host, { key: '6b94f11bd5382bdf4e92c43d4b5d0550c290852d', slot: "fixed", class: {
33940
33938
  [mode]: true,
33941
33939
  // Used internally for styling
33942
33940
  [`refresher-${mode}`]: true,
package/hydrate/index.mjs CHANGED
@@ -17719,6 +17719,36 @@ const findIonContent = (el) => {
17719
17719
  const findClosestIonContent = (el) => {
17720
17720
  return el.closest(ION_CONTENT_SELECTOR);
17721
17721
  };
17722
+ /**
17723
+ * Queries the custom scroll host an `ion-refresher` scrolls with in the given
17724
+ * `ion-content`. A refresher only pairs with the first host.
17725
+ */
17726
+ const findRefresherScrollHost = (ionContent) => {
17727
+ return ionContent.querySelector(ION_CONTENT_CLASS_SELECTOR);
17728
+ };
17729
+ /**
17730
+ * Queries the `ion-refresher` that scrolls with the given content element,
17731
+ * which may be an `ion-content` or a custom scroll host. A refresher is a
17732
+ * `slot="fixed"` child of `ion-content`, so it is a sibling of a scroll host
17733
+ * rather than a descendant of it.
17734
+ */
17735
+ const findRefresherInContent = (contentEl) => {
17736
+ // An `ion-content` owns any refresher inside it, scroll host or not.
17737
+ if (isIonContent(contentEl)) {
17738
+ return contentEl.querySelector('ion-refresher');
17739
+ }
17740
+ // A refresher needs an `ion-content` ancestor to initialize.
17741
+ const ionContent = contentEl.closest(ION_CONTENT_ELEMENT_SELECTOR);
17742
+ if (ionContent === null) {
17743
+ return null;
17744
+ }
17745
+ // Any scroll host other than the refresher's own has no refresher.
17746
+ const refresherScrollHost = findRefresherScrollHost(ionContent);
17747
+ if (refresherScrollHost === null || !refresherScrollHost.contains(contentEl)) {
17748
+ return null;
17749
+ }
17750
+ return ionContent.querySelector('ion-refresher');
17751
+ };
17722
17752
  /**
17723
17753
  * Prints an error informing developers that an implementation requires an element to be used
17724
17754
  * within either the `ion-content` selector or the `.ion-content-scroll-host` class.
@@ -24029,6 +24059,21 @@ const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
24029
24059
  StatusBar.setStyle({ style: defaultStyle });
24030
24060
  };
24031
24061
 
24062
+ /**
24063
+ * Swiping is only possible when the content is scrolled to the top, so that we
24064
+ * do not interfere with scrolling, and never on content with a refresher.
24065
+ *
24066
+ * Note: We cannot solve the refresher case with gesture priority as the iOS
24067
+ * native refresh gesture uses a scroll listener in addition to a gesture.
24068
+ *
24069
+ * Note: Do not use `getScrollElement` here because we need this to be a
24070
+ * synchronous operation, and `getScrollElement` is asynchronous.
24071
+ */
24072
+ const canSwipeOnContent = (contentEl) => {
24073
+ const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
24074
+ const hasRefresherInContent = !!findRefresherInContent(contentEl);
24075
+ return !hasRefresherInContent && scrollEl.scrollTop === 0;
24076
+ };
24032
24077
  const handleCanDismiss = async (el, animation) => {
24033
24078
  /**
24034
24079
  * If canDismiss is not a function
@@ -24159,7 +24204,6 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
24159
24204
  let isOpen = false;
24160
24205
  let canDismissBlocksGesture = false;
24161
24206
  let contentEl = null;
24162
- let scrollEl = null;
24163
24207
  const canDismissMaxStep = 0.2;
24164
24208
  let initialScrollY = true;
24165
24209
  let lastStep = 0;
@@ -24182,12 +24226,6 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
24182
24226
  return true;
24183
24227
  }
24184
24228
  /**
24185
- * If we are swiping on the content,
24186
- * swiping should only be possible if
24187
- * the content is scrolled all the way
24188
- * to the top so that we do not interfere
24189
- * with scrolling.
24190
- *
24191
24229
  * We cannot assume that the `ion-content`
24192
24230
  * target will remain consistent between
24193
24231
  * swipes. For example, when using
@@ -24198,29 +24236,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
24198
24236
  */
24199
24237
  contentEl = findClosestIonContent(target);
24200
24238
  if (contentEl) {
24201
- /**
24202
- * The card should never swipe to close
24203
- * on the content with a refresher.
24204
- * Note: We cannot solve this by making the
24205
- * swipeToClose gesture have a higher priority
24206
- * than the refresher gesture as the iOS native
24207
- * refresh gesture uses a scroll listener in
24208
- * addition to a gesture.
24209
- *
24210
- * Note: Do not use getScrollElement here
24211
- * because we need this to be a synchronous
24212
- * operation, and getScrollElement is
24213
- * asynchronous.
24214
- */
24215
- if (isIonContent(contentEl)) {
24216
- const root = getElementRoot(contentEl);
24217
- scrollEl = root.querySelector('.inner-scroll');
24218
- }
24219
- else {
24220
- scrollEl = contentEl;
24221
- }
24222
- const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
24223
- return !hasRefresherInContent && scrollEl.scrollTop === 0;
24239
+ return canSwipeOnContent(contentEl);
24224
24240
  }
24225
24241
  /**
24226
24242
  * Card should be swipeable on all
@@ -25092,9 +25108,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
25092
25108
  }
25093
25109
  const canStart = (detail) => {
25094
25110
  /**
25095
- * If we are swiping on the content, swiping should only be possible if the content
25096
- * is scrolled all the way to the top so that we do not interfere with scrolling.
25097
- *
25098
25111
  * We cannot assume that the `ion-content` target will remain consistent between swipes.
25099
25112
  * For example, when using ion-nav within a modal it is possible to swipe, push a view,
25100
25113
  * and then swipe again. The target content will not be the same between swipes.
@@ -25102,26 +25115,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
25102
25115
  const contentEl = findClosestIonContent(detail.event.target);
25103
25116
  currentBreakpoint = getCurrentBreakpoint();
25104
25117
  /**
25105
- * If `expandToScroll` is disabled, we should not allow the swipe gesture
25106
- * to start if the content is not scrolled to the top.
25118
+ * Upwards swipes on the content cannot move the sheet anyway, so this only
25119
+ * blocks swiping the sheet down from the content.
25107
25120
  */
25108
- if (!expandToScroll && contentEl) {
25109
- const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
25110
- return scrollEl.scrollTop === 0;
25111
- }
25112
- if (currentBreakpoint === 1 && contentEl) {
25113
- /**
25114
- * The modal should never swipe to close on the content with a refresher.
25115
- * Note 1: We cannot solve this by making this gesture have a higher priority than
25116
- * the refresher gesture as the iOS native refresh gesture uses a scroll listener in
25117
- * addition to a gesture.
25118
- *
25119
- * Note 2: Do not use getScrollElement here because we need this to be a synchronous
25120
- * operation, and getScrollElement is asynchronous.
25121
- */
25122
- const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
25123
- const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
25124
- return !hasRefresherInContent && scrollEl.scrollTop === 0;
25121
+ if (contentEl && (!expandToScroll || currentBreakpoint === 1)) {
25122
+ return canSwipeOnContent(contentEl);
25125
25123
  }
25126
25124
  return true;
25127
25125
  };
@@ -33584,7 +33582,7 @@ class Refresher {
33584
33582
  * or the background content element.
33585
33583
  */
33586
33584
  componentOnReady(contentEl, async () => {
33587
- const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);
33585
+ const customScrollTarget = findRefresherScrollHost(contentEl);
33588
33586
  /**
33589
33587
  * Query the custom scroll target (if available), first. In refresher implementations,
33590
33588
  * the ion-refresher element will always be a direct child of ion-content (slot="fixed"). By
@@ -33934,7 +33932,7 @@ class Refresher {
33934
33932
  }
33935
33933
  render() {
33936
33934
  const mode = getIonMode$1(this);
33937
- return (hAsync(Host, { key: '2eaca7f85b3d40418f213077434e519dfacd9d42', slot: "fixed", class: {
33935
+ return (hAsync(Host, { key: '6b94f11bd5382bdf4e92c43d4b5d0550c290852d', slot: "fixed", class: {
33938
33936
  [mode]: true,
33939
33937
  // Used internally for styling
33940
33938
  [`refresher-${mode}`]: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ionic/core",
3
- "version": "8.8.17",
3
+ "version": "8.8.18-dev.11786109471.1285bcfb",
4
4
  "description": "Base components for Ionic",
5
5
  "engines": {
6
6
  "node": ">= 16"
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{k as o,w as s}from"./p-CHqRYvYm.js";import{a as t,s as r}from"./p-DRugphUN.js";import{c as a}from"./p-D3xo7hqU.js";const n=()=>{const n=window;n.addEventListener("statusTap",(()=>{o((()=>{const o=document.elementFromPoint(n.innerWidth/2,n.innerHeight/2);if(!o)return;const m=t(o);m&&new Promise((o=>a(m,o))).then((()=>{s((async()=>{m.style.setProperty("--overflow","hidden"),await r(m,300),m.style.removeProperty("--overflow")}))}))}))}))};export{n as startStatusTap}
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{c as o}from"./p-D3xo7hqU.js";import{u as s}from"./p-CHqRYvYm.js";const a="ion-content",t=".ion-content-scroll-host",r=`${a}, ${t}`,e=o=>"ION-CONTENT"===o.tagName,i=async s=>e(s)?(await new Promise((a=>o(s,a))),s.getScrollElement()):s,n=o=>o.querySelector(t)||o.querySelector(r),m=o=>o.closest(r),c=(o,s)=>e(o)?o.scrollToTop(s):Promise.resolve(o.scrollTo({top:0,left:0,behavior:"smooth"})),f=(o,s,a,t)=>e(o)?o.scrollByPoint(s,a,t):Promise.resolve(o.scrollBy({top:a,left:s,behavior:t>0?"smooth":"auto"})),p=o=>s(o,a),h=o=>{if(e(o)){const s=o.scrollY;return o.scrollY=!1,s}return o.style.setProperty("overflow","hidden"),!0},l=(o,s)=>{e(o)?o.scrollY=s:o.style.removeProperty("overflow")};export{t as I,m as a,a as b,f as c,h as d,n as f,i as g,e as i,p,l as r,c as s}
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{w as o,d as n}from"./p-ZjP4CjeZ.js";import{g as t,c as i,a as r}from"./p-DRugphUN.js";import{a,b as e,c as s}from"./p-D3xo7hqU.js";import{a as d,K as c}from"./p-D13Eaw-8.js";const l=new WeakMap,u=(o,n,t,i=0,r=!1)=>{l.has(o)!==t&&(t?f(o,n,i,r):w(o,n))},f=(o,n,t,i=!1)=>{const r=n.parentNode,a=n.cloneNode(!1);a.classList.add("cloned-input"),a.tabIndex=-1,i&&(a.disabled=!0);const e="rtl"===o.ownerDocument.dir;a.style.insetInlineStart=e?r.offsetWidth-n.offsetLeft-n.offsetWidth+"px":`${n.offsetLeft}px`,r.appendChild(a),l.set(o,a);const s=e?9999:-9999;o.style.pointerEvents="none",n.style.transform=`translate3d(${s}px,${t}px,0) scale(0)`},w=(o,n)=>{const t=l.get(o);t&&(l.delete(o),t.remove()),o.style.pointerEvents="",n.style.transform=""},p="input, textarea, [no-blur], [contenteditable]",m="$ionPaddingTimer",h=(o,n,t)=>{const i=o[m];i&&clearTimeout(i),n>0?o.style.setProperty("--keyboard-offset",`${n}px`):o[m]=setTimeout((()=>{o.style.setProperty("--keyboard-offset","0px"),t&&t()}),120)},b=(o,n,t)=>{o.addEventListener("focusout",(()=>{n&&h(n,0,t)}),{once:!0})};let y=0;const S="data-ionic-skip-scroll-assist",D=o=>{var n;if(document.activeElement===o)return;const t=o.getAttribute("id"),i=o.closest(`label[for="${t}"]`),r=null===(n=document.activeElement)||void 0===n?void 0:n.closest(`label[for="${t}"]`);null!==i&&i===r||(o.setAttribute(S,"true"),o.focus())},v=async(o,n,r,a,e,s,d=!1,c=0,l=!0)=>{if(!r&&!a)return;const f=((o,n,t,i)=>{var r;return((o,n,t,i)=>{const r=o.top,a=o.bottom,e=n.top,s=e+15,d=Math.min(n.bottom,i-t)-50-a,c=s-r,l=Math.round(d<0?-d:c>0?-c:0),u=Math.min(l,r-e),f=Math.abs(u);return{scrollAmount:u,scrollDuration:Math.min(400,Math.max(150,f/.3)),scrollPadding:t,inputSafeY:4-(r-s)}})((null!==(r=o.closest("ion-item,[ion-item]"))&&void 0!==r?r:o).getBoundingClientRect(),n.getBoundingClientRect(),t,i)})(o,r||a,e,c);if(r&&Math.abs(f.scrollAmount)<4)return D(n),void(s&&null!==r&&(h(r,y),b(n,r,(()=>y=0))));if(u(o,n,!0,f.inputSafeY,d),D(n),s&&r&&(y=f.scrollPadding,h(r,y)),"undefined"!=typeof window){let a;const e=async()=>{void 0!==a&&clearTimeout(a),window.removeEventListener("ionKeyboardDidShow",d),window.removeEventListener("ionKeyboardDidShow",e),r&&await i(r,0,f.scrollAmount,f.scrollDuration),u(o,n,!1,f.inputSafeY),document.activeElement===n&&D(n),s&&b(n,r,(()=>y=0))},d=()=>{window.removeEventListener("ionKeyboardDidShow",d),window.addEventListener("ionKeyboardDidShow",e)};if(r){const o=await t(r);if(l&&f.scrollAmount>o.scrollHeight-o.clientHeight-o.scrollTop)return"password"===n.type?(f.scrollAmount+=50,window.addEventListener("ionKeyboardDidShow",d)):window.addEventListener("ionKeyboardDidShow",e),void(a=setTimeout(e,1e3))}e()}},x=async(t,i)=>{if(void 0===n)return;const l="ios"===i,f="android"===i,w=t.getNumber("keyboardHeight",290),m=t.getBoolean("scrollAssist",!0),h=t.getBoolean("hideCaretOnScroll",l),b=t.getBoolean("inputBlurring",!1),y=t.getBoolean("scrollPadding",!0),D=Array.from(n.querySelectorAll("ion-input, ion-textarea")),x=new WeakMap,K=new WeakMap,M=await c.getResizeMode(),g=async n=>{await new Promise((o=>s(n,o)));const t=n.shadowRoot||n,i=t.querySelector("input")||t.querySelector("textarea"),c=r(n),l=c?null:n.closest("ion-footer");if(i){if(c&&h&&!x.has(n)){const o=((o,n,t)=>{if(!t||!n)return()=>{};const i=t=>{var i;(i=n)===i.getRootNode().activeElement&&u(o,n,t)},r=()=>u(o,n,!1),s=()=>i(!0),d=()=>i(!1);return a(t,"ionScrollStart",s),a(t,"ionScrollEnd",d),n.addEventListener("blur",r),()=>{e(t,"ionScrollStart",s),e(t,"ionScrollEnd",d),n.removeEventListener("blur",r)}})(n,i,c);x.set(n,o)}if("date"!==i.type&&"datetime-local"!==i.type&&(c||l)&&m&&!K.has(n)){const t=((n,t,i,r,a,e,s,c=!1)=>{const l=e&&(void 0===s||s.mode===d.None);let u=!1;const f=void 0!==o?o.innerHeight:0,w=o=>{!1!==u?v(n,t,i,r,o.detail.keyboardHeight,l,c,f,!1):u=!0},p=()=>{u=!1,null==o||o.removeEventListener("ionKeyboardDidShow",w),n.removeEventListener("focusout",p)},m=async()=>{t.hasAttribute(S)?t.removeAttribute(S):(v(n,t,i,r,a,l,c,f),null==o||o.addEventListener("ionKeyboardDidShow",w),n.addEventListener("focusout",p))};return n.addEventListener("focusin",m),()=>{n.removeEventListener("focusin",m),null==o||o.removeEventListener("ionKeyboardDidShow",w),n.removeEventListener("focusout",p)}})(n,i,c,l,w,y,M,f);K.set(n,t)}}};b&&(()=>{let o=!0,n=!1;const t=document;a(t,"ionScrollStart",(()=>{n=!0})),t.addEventListener("focusin",(()=>{o=!0}),!0),t.addEventListener("touchend",(i=>{if(n)return void(n=!1);const r=t.activeElement;if(!r)return;if(r.matches(p))return;const a=i.target;a!==r&&(a.matches(p)||a.closest(p)||(o=!1,setTimeout((()=>{o||r.blur()}),50)))}),!1)})();for(const o of D)g(o);n.addEventListener("ionInputDidLoad",(o=>{g(o.detail)})),n.addEventListener("ionInputDidUnload",(o=>{(o=>{if(h){const n=x.get(o);n&&n(),x.delete(o)}if(m){const n=K.get(o);n&&n(),K.delete(o)}})(o.detail)}))};export{x as startInputShims}