/*! * (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 r}from"./p-12a8643e.js";import{a as e,b as a,r as s,c as d}from"./p-1b3ffb2f.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,r=!1)=>{u.has(o)!==t&&(t?w(o,n,i,r):p(o,n))},w=(o,n,t,i=!1)=>{const r=n.parentNode,e=n.cloneNode(!1);e.classList.add("cloned-input"),e.tabIndex=-1,i&&(e.disabled=!0),r.appendChild(e),u.set(o,e);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,r,e,a,d,c=!1,l=0,u=!0)=>{if(!r&&!e)return;const w=((o,n,t,i)=>{var r;return((o,n,t,i)=>{const r=o.top,e=o.bottom,a=n.top,s=a+15,d=Math.min(n.bottom,i-t)-50-e,c=s-r,l=Math.round(d<0?-d:c>0?-c:0),u=Math.min(l,r-a),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||e,a,l);if(r&&Math.abs(w.scrollAmount)<4)return v(n),void(d&&null!==r&&(h(r,S),y(n,r,(()=>S=0))));if(f(o,n,!0,w.inputSafeY,c),v(n),s((()=>o.click())),d&&r&&(S=w.scrollPadding,h(r,S)),"undefined"!=typeof window){let e;const a=async()=>{void 0!==e&&clearTimeout(e),window.removeEventListener("ionKeyboardDidShow",s),window.removeEventListener("ionKeyboardDidShow",a),r&&await i(r,0,w.scrollAmount,w.scrollDuration),f(o,n,!1,w.inputSafeY),v(n),d&&y(n,r,(()=>S=0))},s=()=>{window.removeEventListener("ionKeyboardDidShow",s),window.addEventListener("ionKeyboardDidShow",a)};if(r){const o=await t(r);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(e=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",s),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=r(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)},r=()=>f(o,n,!1),s=()=>i(!0),d=()=>i(!1);return e(t,"ionScrollStart",s),e(t,"ionScrollEnd",d),n.addEventListener("blur",r),()=>{a(t,"ionScrollStart",s),a(t,"ionScrollEnd",d),n.removeEventListener("blur",r)}})(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,r,e,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,r,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,r,e,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;e(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(m))return;const e=i.target;e!==r&&(e.matches(m)||e.closest(m)||(o=!1,setTimeout((()=>{o||r.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}