@ionic/core
Version:
Base components for Ionic
4 lines • 3.9 kB
JavaScript
/*!
* (C) Ionic http://ionicframework.com - MIT License
*/
import{e as n,p as e,w as i,B as a}from"./p-Ct2aBEue.js";import{r as o}from"./p-B4IBdPVJ.js";const t="ionViewWillEnter",r="ionViewDidEnter",s="ionViewWillLeave",c="ionViewDidLeave",l="ionViewWillUnload",u=n=>{n.tabIndex=-1,n.focus()},d=n=>null!==n.offsetParent,p="ion-last-focus",f=e=>{if(n.get("focusManagerPriority",!1)){const n=document.activeElement;null!==n&&e?.contains(n)&&n.setAttribute(p,"true")}},w=i=>{const a=n.get("focusManagerPriority",!1);if(Array.isArray(a)&&!i.contains(document.activeElement)){const n=i.querySelector(`[${p}]`);if(n&&d(n))return void u(n);for(const n of a)switch(n){case"content":const a=i.querySelector('main, [role="main"]');if(a&&d(a))return void u(a);break;case"heading":const o=i.querySelector('h1, [role="heading"][aria-level="1"]');if(o&&d(o))return void u(o);break;case"banner":const t=i.querySelector('header, [role="banner"]');if(t&&d(t))return void u(t);break;default:e(`Unrecognized focus manager priority value ${n}`)}u(i)}},v=n=>new Promise(((e,a)=>{i((()=>{const i=x(n);m(n,i),g(n).then((i=>{i.animation&&i.animation.destroy(),b(n),e(i)}),(e=>{b(n),a(e)})).finally((()=>{U(i,!1)}))}))})),m=(n,e)=>{const i=n.enteringEl,a=n.leavingEl;f(a),A(i,a,n.direction),U(e,!0),n.showGoBack?i.classList.add("can-go-back"):i.classList.remove("can-go-back"),M(i,!1),i.style.setProperty("pointer-events","none"),a&&(M(a,!1),a.style.setProperty("pointer-events","none"))},g=async n=>{const e=await h(n);return e&&a.isBrowser?y(e,n):P(n)},b=n=>{const e=n.enteringEl,i=n.leavingEl;e.classList.remove("ion-page-invisible"),e.style.removeProperty("pointer-events"),void 0!==i&&(i.classList.remove("ion-page-invisible"),i.style.removeProperty("pointer-events")),w(e)},h=async n=>{if(n.leavingEl&&n.animated&&0!==n.duration)return n.animationBuilder?n.animationBuilder:"ios"===n.mode?(await import("./p-D0nwlsl_.js")).iosTransitionAnimation:(await import("./p-Bd8hg9FK.js")).mdTransitionAnimation},y=async(n,e)=>{await k(e,!0);const i=n(e.baseEl,e);j(e.enteringEl,e.leavingEl);const a=await B(i,e);return e.progressCallback&&e.progressCallback(void 0),a&&C(e.enteringEl,e.leavingEl),{hasCompleted:a,animation:i}},P=async e=>{const i=e.enteringEl,a=e.leavingEl,o=n.get("focusManagerPriority",!1);return await k(e,o),j(i,a),C(i,a),{hasCompleted:!0}},k=async(n,e)=>{(void 0!==n.deepWait?n.deepWait:e)&&await Promise.all([L(n.enteringEl),L(n.leavingEl)]),await V(n.viewIsReady,n.enteringEl)},V=async(n,e)=>{n&&await n(e)},B=(n,e)=>{const i=e.progressCallback,a=new Promise((e=>{n.onFinish((n=>e(1===n)))}));return i?(n.progressStart(!0),i(n)):n.play(),a},j=(n,e)=>{E(e,s),E(n,t)},C=(n,e)=>{E(n,r),E(e,c)},E=(n,e)=>{if(n){const i=new CustomEvent(e,{bubbles:!1,cancelable:!1});n.dispatchEvent(i)}},D=()=>new Promise((n=>o((()=>o((()=>n())))))),L=async n=>{const e=n;if(e){if(null!=e.componentOnReady){if(null!=await e.componentOnReady())return}else if(null!=e.__registerHost){const n=new Promise((n=>o(n)));return void await n}await Promise.all(Array.from(e.children).map(L))}},M=(n,e)=>{e?(n.setAttribute("aria-hidden","true"),n.classList.add("ion-page-hidden")):(n.hidden=!1,n.removeAttribute("aria-hidden"),n.classList.remove("ion-page-hidden"))},W=n=>(n.style.setProperty("pointer-events","none"),()=>{setTimeout((()=>n.style.removeProperty("pointer-events")))}),A=(n,e,i)=>{void 0!==n&&(n.style.zIndex="back"===i?"99":"101"),void 0!==e&&(e.style.zIndex="100")},U=(n,e)=>{if(!n)return;const i="header-transitioning";e?n.classList.add(i):n.classList.remove(i)},$=n=>{if(n.classList.contains("ion-page"))return n;return n.querySelector(":scope > .ion-page, :scope > ion-nav, :scope > ion-tabs")||n},x=n=>{if("ios"!==n.mode)return null;const e="back"===n.direction?n.leavingEl:n.enteringEl;return e?e.querySelector("ion-header"):null};export{t as L,r as a,s as b,c,l as d,L as e,W as f,$ as g,E as l,M as s,v as t,D as w}