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