/*! * (C) Ionic http://ionicframework.com - MIT License */ import{w as o,d as n}from"./p-7b30edcc.js";import{g as t,c as i,f as e}from"./p-06e58c4e.js";import{a as r,b as a,r as s,c as d}from"./p-b51e4004.js";import{a as c,K as l}from"./p-27281edd.js";import"./p-06fee233.js";import"./p-c61cc894.js";const u=new WeakMap,f=(o,n,t,i=0,e=!1)=>{u.has(o)!==t&&(t?w(o,n,i,e):p(o,n))},w=(o,n,t,i=!1)=>{const e=n.parentNode,r=n.cloneNode(!1);r.classList.add("cloned-input"),r.tabIndex=-1,i&&(r.disabled=!0),e.appendChild(r),u.set(o,r);const a="rtl"===o.ownerDocument.dir?9999:-9999;o.style.pointerEvents="none",n.style.transform=`translate3d(${a}px,${t}px,0) scale(0)`},p=(o,n)=>{const t=u.get(o);t&&(u.delete(o),t.remove()),o.style.pointerEvents="",n.style.transform=""},m="input, textarea, [no-blur], [contenteditable]",b="$ionPaddingTimer",h=(o,n,t)=>{const i=o[b];i&&clearTimeout(i),n>0?o.style.setProperty("--keyboard-offset",`${n}px`):o[b]=setTimeout((()=>{o.style.setProperty("--keyboard-offset","0px"),t&&t()}),120)},y=(o,n,t)=>{o.addEventListener("focusout",(()=>{n&&h(n,0,t)}),{once:!0})};let S=0;const D="data-ionic-skip-scroll-assist",v=o=>{document.activeElement!==o&&(o.setAttribute(D,"true"),o.focus())},K=async(o,n,e,r,a,d,c=!1,l=0,u=!0)=>{if(!e&&!r)return;const w=((o,n,t,i)=>{var e;return((o,n,t,i)=>{const e=o.top,r=o.bottom,a=n.top,s=a+15,d=Math.min(n.bottom,i-t)-50-r,c=s-e,l=Math.round(d<0?-d:c>0?-c:0),u=Math.min(l,e-a),f=Math.abs(u);return{scrollAmount:u,scrollDuration:Math.min(400,Math.max(150,f/.3)),scrollPadding:t,inputSafeY:4-(e-s)}})((null!==(e=o.closest("ion-item,[ion-item]"))&&void 0!==e?e:o).getBoundingClientRect(),n.getBoundingClientRect(),t,i)})(o,e||r,a,l);if(e&&Math.abs(w.scrollAmount)<4)return v(n),void(d&&null!==e&&(h(e,S),y(n,e,(()=>S=0))));if(f(o,n,!0,w.inputSafeY,c),v(n),s((()=>o.click())),d&&e&&(S=w.scrollPadding,h(e,S)),"undefined"!=typeof window){let r;const a=async()=>{void 0!==r&&clearTimeout(r),window.removeEventListener("ionKeyboardDidShow",s),window.removeEventListener("ionKeyboardDidShow",a),e&&await i(e,0,w.scrollAmount,w.scrollDuration),f(o,n,!1,w.inputSafeY),v(n),d&&y(n,e,(()=>S=0))},s=()=>{window.removeEventListener("ionKeyboardDidShow",s),window.addEventListener("ionKeyboardDidShow",a)};if(e){const o=await t(e);if(u&&w.scrollAmount>o.scrollHeight-o.clientHeight-o.scrollTop)return"password"===n.type?(w.scrollAmount+=50,window.addEventListener("ionKeyboardDidShow",s)):window.addEventListener("ionKeyboardDidShow",a),void(r=setTimeout(a,1e3))}a()}},M=async(t,i)=>{if(void 0===n)return;const s="ios"===i,u="android"===i,w=t.getNumber("keyboardHeight",290),p=t.getBoolean("scrollAssist",!0),b=t.getBoolean("hideCaretOnScroll",s),h=t.getBoolean("inputBlurring",!1),y=t.getBoolean("scrollPadding",!0),S=Array.from(n.querySelectorAll("ion-input, ion-textarea")),v=new WeakMap,M=new WeakMap,x=await l.getResizeMode(),k=async n=>{await new Promise((o=>d(n,o)));const t=n.shadowRoot||n,i=t.querySelector("input")||t.querySelector("textarea"),s=e(n),l=s?null:n.closest("ion-footer");if(i){if(s&&b&&!v.has(n)){const o=((o,n,t)=>{if(!t||!n)return()=>{};const i=t=>{var i;(i=n)===i.getRootNode().activeElement&&f(o,n,t)},e=()=>f(o,n,!1),s=()=>i(!0),d=()=>i(!1);return r(t,"ionScrollStart",s),r(t,"ionScrollEnd",d),n.addEventListener("blur",e),()=>{a(t,"ionScrollStart",s),a(t,"ionScrollEnd",d),n.removeEventListener("blur",e)}})(n,i,s);v.set(n,o)}if("date"!==i.type&&"datetime-local"!==i.type&&(s||l)&&p&&!M.has(n)){const t=((n,t,i,e,r,a,s,d=!1)=>{const l=a&&(void 0===s||s.mode===c.None);let u=!1;const f=void 0!==o?o.innerHeight:0,w=o=>{!1!==u?K(n,t,i,e,o.detail.keyboardHeight,l,d,f,!1):u=!0},p=()=>{u=!1,null==o||o.removeEventListener("ionKeyboardDidShow",w),n.removeEventListener("focusout",p,!0)},m=async()=>{t.hasAttribute(D)?t.removeAttribute(D):(K(n,t,i,e,r,l,d,f),null==o||o.addEventListener("ionKeyboardDidShow",w),n.addEventListener("focusout",p,!0))};return n.addEventListener("focusin",m,!0),()=>{n.removeEventListener("focusin",m,!0),null==o||o.removeEventListener("ionKeyboardDidShow",w),n.removeEventListener("focusout",p,!0)}})(n,i,s,l,w,y,x,u);M.set(n,t)}}};h&&(()=>{let o=!0,n=!1;const t=document;r(t,"ionScrollStart",(()=>{n=!0})),t.addEventListener("focusin",(()=>{o=!0}),!0),t.addEventListener("touchend",(i=>{if(n)return void(n=!1);const e=t.activeElement;if(!e)return;if(e.matches(m))return;const r=i.target;r!==e&&(r.matches(m)||r.closest(m)||(o=!1,setTimeout((()=>{o||e.blur()}),50)))}),!1)})();for(const o of S)k(o);n.addEventListener("ionInputDidLoad",(o=>{k(o.detail)})),n.addEventListener("ionInputDidUnload",(o=>{(o=>{if(b){const n=v.get(o);n&&n(),v.delete(o)}if(p){const n=M.get(o);n&&n(),M.delete(o)}})(o.detail)}))};export{M as startInputShims}