{"version":3,"sources":["webpack:///./node_modules/@ionic/core/dist/esm-es5/ion-nav_5.entry.js","webpack:///./node_modules/@ionic/core/dist/esm-es5/cubic-bezier-2812fda3.js","webpack:///./node_modules/@ionic/core/dist/esm-es5/framework-delegate-c2e2e1f4.js","webpack:///./node_modules/@ionic/core/dist/esm-es5/index-4d91f03a.js"],"names":["VIEW_STATE_NEW","VIEW_STATE_ATTACHED","VIEW_STATE_DESTROYED","ViewController","component","params","this","state","prototype","init","container","_a","_b","label","element","delegate","sent","_destroy","removeViewFromDom","parentElement","remove","nav","undefined","matches","view","id","currentParams","keysA","Object","keys","keysB","length","_i","keysA_1","key","convertToView","page","convertToViews","pages","map","filter","v","Nav","class_1","hostRef","transInstr","animationEnabled","useRouter","isTransitioning","destroyed","views","animated","ionNavWillLoad","ionNavWillChange","ionNavDidChange","swipeGestureChanged","gesture","setDisabled","swipeGesture","rootChanged","root","setRoot","rootParams","componentWillLoad","document","querySelector","el","closest","mode","getBoolean","emit","componentDidLoad","createSwipeBackGesture","canStart","bind","onStart","onMove","onEnd","componentDidUnload","destroy","push","componentProps","opts","done","queueTrns","insertStart","insertViews","insert","insertIndex","insertPages","insertComponents","pop","removeStart","removeCount","popTo","indexOrViewCtrl","tiConfig","removeView","popToRoot","removeIndex","startIndex","setPages","setRouteId","direction","resolve","_this","active","getActiveSync","Promise","changed","finish","promise","r","commonOpts","updateURL","viewIsReady","enteringEl","mark","p","markVisible","viewController","find","assign","getRouteId","tagName","getActive","getByIndex","index","canGoBack","canGoBackSync","getPrevious","getPreviousSync","getLength","indexOf","ti","skipIfBusy","reject","nextTrns","success","result","fireError","hasCompleted","requiresTransition","enteringView","leavingView","router","navChanged","failed","rejectReason","shift","runTransition","rejectReason_1","trys","prepareTI","getEnteringView","Error","postViewInit","enteringRequiresTransition","leavingRequiresTransition","transition","viewsLength","viewControllers","viewControllers_1","removeEnd","i","destroyQueue","finalBalance","console","warn","insertViews_1","insertViewAt","destroyQueue_1","destroyQueue_2","destroyView","progressCallback","leavingEl","animationOpts","progressAnimation","ani","sbAni","showGoBack","baseEl","animationBuilder","animation","get","transitionFinish","cleanupView","cleanup","existingIndex","splice","activeView","activeViewIndex","stepValue","progressStep","shouldComplete","dur","onFinish","oneTimeCallback","newStepValue","easing","progressEnd","render","defineProperty","enumerable","configurable","navLink","routerDirection","NavLink","onClick","NavPop","NavPush","NavSetRoot","Point","x","y","getTimeGivenProgression","p0","p1","p2","p3","progression","tValues","solveCubicBezier","solveCubicParametricEquation","t","partA","Math","pow","partB","partC","refPoint","roots","solveCubicEquation","solveQuadraticEquation","a","b","c","discriminant","sqrt","d","q","phi","acos","s","cos","PI","attachComponent","cssClasses","attachViewToDom","HTMLElement","ownerDocument","createElement","forEach","classList","add","appendChild","componentOnReady","detachComponent","iosTransitionAnimation","mdTransitionAnimation","beforeTransition","then","afterTransition","error","setZIndex","setPageHidden","getAnimationBuilder","noAnimation","getAnimation","duration","trans","mod","didComplete","waitForReady","create","fireWillEvents","playTransition","fireDidEvents","defaultDeep","deep","promises","deepWait","deepReady","shallowReady","all","notifyViewReady","currentStep","progressStart","play","lifecycle","eventName","ev","CustomEvent","bubbles","cancelable","dispatchEvent","stencilEl","Array","from","children","hidden","setAttribute","removeAttribute","style","zIndex","getIonPageElement","contains","ionPage"],"mappings":"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","file":"js/chunk-69b4d404.41d47c34.js","sourcesContent":["import { __awaiter, __generator } from \"tslib\";\nimport { r as registerInstance, d as createEvent, c as getIonMode, h, e as getElement, H as Host } from './core-feeeff0d.js';\nimport { b as config } from './config-3c7f3790.js';\nimport { b as assert } from './helpers-46f4a262.js';\nimport { d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './constants-3c3e1099.js';\nimport { a as attachComponent } from './framework-delegate-c2e2e1f4.js';\nimport { l as lifecycle, t as transition, s as setPageHidden } from './index-4d91f03a.js';\nimport { g as getTimeGivenProgression, P as Point } from './cubic-bezier-2812fda3.js';\nvar VIEW_STATE_NEW = 1;\nvar VIEW_STATE_ATTACHED = 2;\nvar VIEW_STATE_DESTROYED = 3;\nvar ViewController = /** @class */ (function () {\n function ViewController(component, params) {\n this.component = component;\n this.params = params;\n this.state = VIEW_STATE_NEW;\n }\n ViewController.prototype.init = function (container) {\n return __awaiter(this, void 0, void 0, function () {\n var component, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.state = VIEW_STATE_ATTACHED;\n if (!!this.element) return [3 /*break*/, 2];\n component = this.component;\n _a = this;\n return [4 /*yield*/, attachComponent(this.delegate, container, component, ['ion-page', 'ion-page-invisible'], this.params)];\n case 1:\n _a.element = _b.sent();\n _b.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * DOM WRITE\n */\n ViewController.prototype._destroy = function () {\n assert(this.state !== VIEW_STATE_DESTROYED, 'view state must be ATTACHED');\n var element = this.element;\n if (element) {\n if (this.delegate) {\n this.delegate.removeViewFromDom(element.parentElement, element);\n }\n else {\n element.remove();\n }\n }\n this.nav = undefined;\n this.state = VIEW_STATE_DESTROYED;\n };\n return ViewController;\n}());\nvar matches = function (view, id, params) {\n if (!view) {\n return false;\n }\n if (view.component !== id) {\n return false;\n }\n var currentParams = view.params;\n if (currentParams === params) {\n return true;\n }\n if (!currentParams && !params) {\n return true;\n }\n if (!currentParams || !params) {\n return false;\n }\n var keysA = Object.keys(currentParams);\n var keysB = Object.keys(params);\n if (keysA.length !== keysB.length) {\n return false;\n }\n // Test for A's keys different from B.\n for (var _i = 0, keysA_1 = keysA; _i < keysA_1.length; _i++) {\n var key = keysA_1[_i];\n if (currentParams[key] !== params[key]) {\n return false;\n }\n }\n return true;\n};\nvar convertToView = function (page, params) {\n if (!page) {\n return null;\n }\n if (page instanceof ViewController) {\n return page;\n }\n return new ViewController(page, params);\n};\nvar convertToViews = function (pages) {\n return pages.map(function (page) {\n if (page instanceof ViewController) {\n return page;\n }\n if ('page' in page) {\n return convertToView(page.page, page.params);\n }\n return convertToView(page, undefined);\n }).filter(function (v) { return v !== null; });\n};\nvar Nav = /** @class */ (function () {\n function class_1(hostRef) {\n registerInstance(this, hostRef);\n this.transInstr = [];\n this.animationEnabled = true;\n this.useRouter = false;\n this.isTransitioning = false;\n this.destroyed = false;\n this.views = [];\n /**\n * If `true`, the nav should animate the transition of components.\n */\n this.animated = true;\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n }\n class_1.prototype.swipeGestureChanged = function () {\n if (this.gesture) {\n this.gesture.setDisabled(this.swipeGesture !== true);\n }\n };\n class_1.prototype.rootChanged = function () {\n if (this.root !== undefined) {\n if (!this.useRouter) {\n this.setRoot(this.root, this.rootParams);\n }\n }\n };\n class_1.prototype.componentWillLoad = function () {\n this.useRouter =\n !!document.querySelector('ion-router') &&\n !this.el.closest('[no-router]');\n if (this.swipeGesture === undefined) {\n var mode = getIonMode(this);\n this.swipeGesture = config.getBoolean('swipeBackEnabled', mode === 'ios');\n }\n this.ionNavWillLoad.emit();\n };\n class_1.prototype.componentDidLoad = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.rootChanged();\n _a = this;\n return [4 /*yield*/, import('./swipe-back-35ad8e37.js')];\n case 1:\n _a.gesture = (_b.sent()).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));\n this.swipeGestureChanged();\n return [2 /*return*/];\n }\n });\n });\n };\n class_1.prototype.componentDidUnload = function () {\n for (var _i = 0, _a = this.views; _i < _a.length; _i++) {\n var view = _a[_i];\n lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);\n view._destroy();\n }\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n // release swipe back gesture and transition\n this.transInstr.length = this.views.length = 0;\n this.destroyed = true;\n };\n /**\n * Push a new component onto the current navigation stack. Pass any additional\n * information along as an object. This additional information is accessible\n * through NavParams.\n *\n * @param component The component to push onto the navigation stack.\n * @param componentProps Any properties of the component.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.push = function (component, componentProps, opts, done) {\n return this.queueTrns({\n insertStart: -1,\n insertViews: [{ page: component, params: componentProps }],\n opts: opts\n }, done);\n };\n /**\n * Inserts a component into the navigation stack at the specified index.\n * This is useful to add a component at any point in the navigation stack.\n *\n * @param insertIndex The index to insert the component at in the stack.\n * @param component The component to insert into the navigation stack.\n * @param componentProps Any properties of the component.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.insert = function (insertIndex, component, componentProps, opts, done) {\n return this.queueTrns({\n insertStart: insertIndex,\n insertViews: [{ page: component, params: componentProps }],\n opts: opts\n }, done);\n };\n /**\n * Inserts an array of components into the navigation stack at the specified index.\n * The last component in the array will become instantiated as a view, and animate\n * in to become the active view.\n *\n * @param insertIndex The index to insert the components at in the stack.\n * @param insertComponents The components to insert into the navigation stack.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.insertPages = function (insertIndex, insertComponents, opts, done) {\n return this.queueTrns({\n insertStart: insertIndex,\n insertViews: insertComponents,\n opts: opts\n }, done);\n };\n /**\n * Pop a component off of the navigation stack. Navigates back from the current\n * component.\n *\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.pop = function (opts, done) {\n return this.queueTrns({\n removeStart: -1,\n removeCount: 1,\n opts: opts\n }, done);\n };\n /**\n * Pop to a specific index in the navigation stack.\n *\n * @param indexOrViewCtrl The index or view controller to pop to.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.popTo = function (indexOrViewCtrl, opts, done) {\n var tiConfig = {\n removeStart: -1,\n removeCount: -1,\n opts: opts\n };\n if (typeof indexOrViewCtrl === 'object' && indexOrViewCtrl.component) {\n tiConfig.removeView = indexOrViewCtrl;\n tiConfig.removeStart = 1;\n }\n else if (typeof indexOrViewCtrl === 'number') {\n tiConfig.removeStart = indexOrViewCtrl + 1;\n }\n return this.queueTrns(tiConfig, done);\n };\n /**\n * Navigate back to the root of the stack, no matter how far back that is.\n *\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.popToRoot = function (opts, done) {\n return this.queueTrns({\n removeStart: 1,\n removeCount: -1,\n opts: opts\n }, done);\n };\n /**\n * Removes a component from the navigation stack at the specified index.\n *\n * @param startIndex The number to begin removal at.\n * @param removeCount The number of components to remove.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.removeIndex = function (startIndex, removeCount, opts, done) {\n if (removeCount === void 0) { removeCount = 1; }\n return this.queueTrns({\n removeStart: startIndex,\n removeCount: removeCount,\n opts: opts\n }, done);\n };\n /**\n * Set the root for the current navigation stack to a component.\n *\n * @param component The component to set as the root of the navigation stack.\n * @param componentProps Any properties of the component.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.setRoot = function (component, componentProps, opts, done) {\n return this.setPages([{ page: component, params: componentProps }], opts, done);\n };\n /**\n * Set the views of the current navigation stack and navigate to the last view.\n * By default animations are disabled, but they can be enabled by passing options\n * to the navigation controller. Navigation parameters can also be passed to the\n * individual pages in the array.\n *\n * @param views The list of views to set as the navigation stack.\n * @param opts The navigation options.\n * @param done The transition complete function.\n */\n class_1.prototype.setPages = function (views, opts, done) {\n if (opts == null) {\n opts = {};\n }\n // if animation wasn't set to true then default it to NOT animate\n if (opts.animated !== true) {\n opts.animated = false;\n }\n return this.queueTrns({\n insertStart: 0,\n insertViews: views,\n removeStart: 0,\n removeCount: -1,\n opts: opts\n }, done);\n };\n /** @internal */\n class_1.prototype.setRouteId = function (id, params, direction) {\n var _this = this;\n var active = this.getActiveSync();\n if (matches(active, id, params)) {\n return Promise.resolve({\n changed: false,\n element: active.element\n });\n }\n var resolve;\n var promise = new Promise(function (r) { return (resolve = r); });\n var finish;\n var commonOpts = {\n updateURL: false,\n viewIsReady: function (enteringEl) {\n var mark;\n var p = new Promise(function (r) { return (mark = r); });\n resolve({\n changed: true,\n element: enteringEl,\n markVisible: function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n mark();\n return [4 /*yield*/, finish];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); }\n });\n return p;\n }\n };\n if (direction === 'root') {\n finish = this.setRoot(id, params, commonOpts);\n }\n else {\n var viewController = this.views.find(function (v) { return matches(v, id, params); });\n if (viewController) {\n finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), { direction: 'back' }));\n }\n else if (direction === 'forward') {\n finish = this.push(id, params, commonOpts);\n }\n else if (direction === 'back') {\n finish = this.setRoot(id, params, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animated: true }));\n }\n }\n return promise;\n };\n /** @internal */\n class_1.prototype.getRouteId = function () {\n return __awaiter(this, void 0, void 0, function () {\n var active;\n return __generator(this, function (_a) {\n active = this.getActiveSync();\n return [2 /*return*/, active\n ? {\n id: active.element.tagName,\n params: active.params,\n element: active.element\n }\n : undefined];\n });\n });\n };\n /**\n * Get the active view.\n */\n class_1.prototype.getActive = function () {\n return Promise.resolve(this.getActiveSync());\n };\n /**\n * Get the view at the specified index.\n *\n * @param index The index of the view.\n */\n class_1.prototype.getByIndex = function (index) {\n return Promise.resolve(this.views[index]);\n };\n /**\n * Returns `true` if the current view can go back.\n *\n * @param view The view to check.\n */\n class_1.prototype.canGoBack = function (view) {\n return Promise.resolve(this.canGoBackSync(view));\n };\n /**\n * Get the previous view.\n *\n * @param view The view to get.\n */\n class_1.prototype.getPrevious = function (view) {\n return Promise.resolve(this.getPreviousSync(view));\n };\n class_1.prototype.getLength = function () {\n return this.views.length;\n };\n class_1.prototype.getActiveSync = function () {\n return this.views[this.views.length - 1];\n };\n class_1.prototype.canGoBackSync = function (view) {\n if (view === void 0) { view = this.getActiveSync(); }\n return !!(view && this.getPreviousSync(view));\n };\n class_1.prototype.getPreviousSync = function (view) {\n if (view === void 0) { view = this.getActiveSync(); }\n if (!view) {\n return undefined;\n }\n var views = this.views;\n var index = views.indexOf(view);\n return index > 0 ? views[index - 1] : undefined;\n };\n // _queueTrns() adds a navigation stack change to the queue and schedules it to run:\n // 1. _nextTrns(): consumes the next transition in the queue\n // 2. _viewInit(): initializes enteringView if required\n // 3. _viewTest(): ensures canLeave/canEnter Returns `true`, so the operation can continue\n // 4. _postViewInit(): add/remove the views from the navigation stack\n // 5. _transitionInit(): initializes the visual transition if required and schedules it to run\n // 6. _viewAttachToDOM(): attaches the enteringView to the DOM\n // 7. _transitionStart(): called once the transition actually starts, it initializes the Animation underneath.\n // 8. _transitionFinish(): called once the transition finishes\n // 9. _cleanup(): syncs the navigation internal state with the DOM. For example it removes the pages from the DOM or hides/show them.\n class_1.prototype.queueTrns = function (ti, done) {\n if (this.isTransitioning && ti.opts != null && ti.opts.skipIfBusy) {\n return Promise.resolve(false);\n }\n var promise = new Promise(function (resolve, reject) {\n ti.resolve = resolve;\n ti.reject = reject;\n });\n ti.done = done;\n // Normalize empty\n if (ti.insertViews && ti.insertViews.length === 0) {\n ti.insertViews = undefined;\n }\n // Enqueue transition instruction\n this.transInstr.push(ti);\n // if there isn't a transition already happening\n // then this will kick off this transition\n this.nextTrns();\n return promise;\n };\n class_1.prototype.success = function (result, ti) {\n if (this.destroyed) {\n this.fireError('nav controller was destroyed', ti);\n return;\n }\n if (ti.done) {\n ti.done(result.hasCompleted, result.requiresTransition, result.enteringView, result.leavingView, result.direction);\n }\n ti.resolve(result.hasCompleted);\n if (ti.opts.updateURL !== false && this.useRouter) {\n var router = document.querySelector('ion-router');\n if (router) {\n var direction = result.direction === 'back' ? 'back' : 'forward';\n router.navChanged(direction);\n }\n }\n };\n class_1.prototype.failed = function (rejectReason, ti) {\n if (this.destroyed) {\n this.fireError('nav controller was destroyed', ti);\n return;\n }\n this.transInstr.length = 0;\n this.fireError(rejectReason, ti);\n };\n class_1.prototype.fireError = function (rejectReason, ti) {\n if (ti.done) {\n ti.done(false, false, rejectReason);\n }\n if (ti.reject && !this.destroyed) {\n ti.reject(rejectReason);\n }\n else {\n ti.resolve(false);\n }\n };\n class_1.prototype.nextTrns = function () {\n // this is the framework's bread 'n butta function\n // only one transition is allowed at any given time\n if (this.isTransitioning) {\n return false;\n }\n // there is no transition happening right now\n // get the next instruction\n var ti = this.transInstr.shift();\n if (!ti) {\n return false;\n }\n this.runTransition(ti);\n return true;\n };\n class_1.prototype.runTransition = function (ti) {\n return __awaiter(this, void 0, void 0, function () {\n var leavingView, enteringView, requiresTransition, result, _a, rejectReason_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 6, , 7]);\n // set that this nav is actively transitioning\n this.ionNavWillChange.emit();\n this.isTransitioning = true;\n this.prepareTI(ti);\n leavingView = this.getActiveSync();\n enteringView = this.getEnteringView(ti, leavingView);\n if (!leavingView && !enteringView) {\n throw new Error('no views in the stack to be removed');\n }\n if (!(enteringView && enteringView.state === VIEW_STATE_NEW)) return [3 /*break*/, 2];\n return [4 /*yield*/, enteringView.init(this.el)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n this.postViewInit(enteringView, leavingView, ti);\n requiresTransition = (ti.enteringRequiresTransition || ti.leavingRequiresTransition) &&\n enteringView !== leavingView;\n if (!requiresTransition) return [3 /*break*/, 4];\n return [4 /*yield*/, this.transition(enteringView, leavingView, ti)];\n case 3:\n _a = _b.sent();\n return [3 /*break*/, 5];\n case 4:\n _a = {\n // transition is not required, so we are already done!\n // they're inserting/removing the views somewhere in the middle or\n // beginning, so visually nothing needs to animate/transition\n // resolve immediately because there's no animation that's happening\n hasCompleted: true,\n requiresTransition: false\n };\n _b.label = 5;\n case 5:\n result = _a;\n this.success(result, ti);\n this.ionNavDidChange.emit();\n return [3 /*break*/, 7];\n case 6:\n rejectReason_1 = _b.sent();\n this.failed(rejectReason_1, ti);\n return [3 /*break*/, 7];\n case 7:\n this.isTransitioning = false;\n this.nextTrns();\n return [2 /*return*/];\n }\n });\n });\n };\n class_1.prototype.prepareTI = function (ti) {\n var viewsLength = this.views.length;\n ti.opts = ti.opts || {};\n if (ti.opts.delegate === undefined) {\n ti.opts.delegate = this.delegate;\n }\n if (ti.removeView !== undefined) {\n assert(ti.removeStart !== undefined, 'removeView needs removeStart');\n assert(ti.removeCount !== undefined, 'removeView needs removeCount');\n var index = this.views.indexOf(ti.removeView);\n if (index < 0) {\n throw new Error('removeView was not found');\n }\n ti.removeStart += index;\n }\n if (ti.removeStart !== undefined) {\n if (ti.removeStart < 0) {\n ti.removeStart = viewsLength - 1;\n }\n if (ti.removeCount < 0) {\n ti.removeCount = viewsLength - ti.removeStart;\n }\n ti.leavingRequiresTransition =\n ti.removeCount > 0 && ti.removeStart + ti.removeCount === viewsLength;\n }\n if (ti.insertViews) {\n // allow -1 to be passed in to auto push it on the end\n // and clean up the index if it's larger then the size of the stack\n if (ti.insertStart < 0 || ti.insertStart > viewsLength) {\n ti.insertStart = viewsLength;\n }\n ti.enteringRequiresTransition = ti.insertStart === viewsLength;\n }\n var insertViews = ti.insertViews;\n if (!insertViews) {\n return;\n }\n assert(insertViews.length > 0, 'length can not be zero');\n var viewControllers = convertToViews(insertViews);\n if (viewControllers.length === 0) {\n throw new Error('invalid views to insert');\n }\n // Check all the inserted view are correct\n for (var _i = 0, viewControllers_1 = viewControllers; _i < viewControllers_1.length; _i++) {\n var view = viewControllers_1[_i];\n view.delegate = ti.opts.delegate;\n var nav = view.nav;\n if (nav && nav !== this) {\n throw new Error('inserted view was already inserted');\n }\n if (view.state === VIEW_STATE_DESTROYED) {\n throw new Error('inserted view was already destroyed');\n }\n }\n ti.insertViews = viewControllers;\n };\n class_1.prototype.getEnteringView = function (ti, leavingView) {\n var insertViews = ti.insertViews;\n if (insertViews !== undefined) {\n // grab the very last view of the views to be inserted\n // and initialize it as the new entering view\n return insertViews[insertViews.length - 1];\n }\n var removeStart = ti.removeStart;\n if (removeStart !== undefined) {\n var views = this.views;\n var removeEnd = removeStart + ti.removeCount;\n for (var i = views.length - 1; i >= 0; i--) {\n var view = views[i];\n if ((i < removeStart || i >= removeEnd) && view !== leavingView) {\n return view;\n }\n }\n }\n return undefined;\n };\n class_1.prototype.postViewInit = function (enteringView, leavingView, ti) {\n assert(leavingView || enteringView, 'Both leavingView and enteringView are null');\n assert(ti.resolve, 'resolve must be valid');\n assert(ti.reject, 'reject must be valid');\n var opts = ti.opts;\n var insertViews = ti.insertViews;\n var removeStart = ti.removeStart;\n var removeCount = ti.removeCount;\n var destroyQueue;\n // there are views to remove\n if (removeStart !== undefined && removeCount !== undefined) {\n assert(removeStart >= 0, 'removeStart can not be negative');\n assert(removeCount >= 0, 'removeCount can not be negative');\n destroyQueue = [];\n for (var i = 0; i < removeCount; i++) {\n var view = this.views[i + removeStart];\n if (view && view !== enteringView && view !== leavingView) {\n destroyQueue.push(view);\n }\n }\n // default the direction to \"back\"\n opts.direction = opts.direction || 'back';\n }\n var finalBalance = this.views.length +\n (insertViews !== undefined ? insertViews.length : 0) -\n (removeCount !== undefined ? removeCount : 0);\n assert(finalBalance >= 0, 'final balance can not be negative');\n if (finalBalance === 0) {\n console.warn(\"You can't remove all the pages in the navigation stack. nav.pop() is probably called too many times.\", this, this.el);\n throw new Error('navigation stack needs at least one root page');\n }\n // At this point the transition can not be rejected, any throw should be an error\n // there are views to insert\n if (insertViews) {\n // add the views to the\n var insertIndex = ti.insertStart;\n for (var _i = 0, insertViews_1 = insertViews; _i < insertViews_1.length; _i++) {\n var view = insertViews_1[_i];\n this.insertViewAt(view, insertIndex);\n insertIndex++;\n }\n if (ti.enteringRequiresTransition) {\n // default to forward if not already set\n opts.direction = opts.direction || 'forward';\n }\n }\n // if the views to be removed are in the beginning or middle\n // and there is not a view that needs to visually transition out\n // then just destroy them and don't transition anything\n // batch all of lifecycles together\n // let's make sure, callbacks are zoned\n if (destroyQueue && destroyQueue.length > 0) {\n for (var _a = 0, destroyQueue_1 = destroyQueue; _a < destroyQueue_1.length; _a++) {\n var view = destroyQueue_1[_a];\n lifecycle(view.element, LIFECYCLE_WILL_LEAVE);\n lifecycle(view.element, LIFECYCLE_DID_LEAVE);\n lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);\n }\n // once all lifecycle events has been delivered, we can safely detroy the views\n for (var _b = 0, destroyQueue_2 = destroyQueue; _b < destroyQueue_2.length; _b++) {\n var view = destroyQueue_2[_b];\n this.destroyView(view);\n }\n }\n };\n class_1.prototype.transition = function (enteringView, leavingView, ti) {\n return __awaiter(this, void 0, void 0, function () {\n var opts, progressCallback, mode, enteringEl, leavingEl, animationOpts, hasCompleted;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n opts = ti.opts;\n progressCallback = opts.progressAnimation\n ? function (ani) { return _this.sbAni = ani; }\n : undefined;\n mode = getIonMode(this);\n enteringEl = enteringView.element;\n leavingEl = leavingView && leavingView.element;\n animationOpts = Object.assign({ mode: mode, showGoBack: this.canGoBackSync(enteringView), baseEl: this.el, animationBuilder: this.animation || opts.animationBuilder || config.get('navAnimation'), progressCallback: progressCallback, animated: this.animated && config.getBoolean('animated', true), enteringEl: enteringEl,\n leavingEl: leavingEl }, opts);\n return [4 /*yield*/, transition(animationOpts)];\n case 1:\n hasCompleted = (_a.sent()).hasCompleted;\n return [2 /*return*/, this.transitionFinish(hasCompleted, enteringView, leavingView, opts)];\n }\n });\n });\n };\n class_1.prototype.transitionFinish = function (hasCompleted, enteringView, leavingView, opts) {\n var cleanupView = hasCompleted ? enteringView : leavingView;\n if (cleanupView) {\n this.cleanup(cleanupView);\n }\n return {\n hasCompleted: hasCompleted,\n requiresTransition: true,\n enteringView: enteringView,\n leavingView: leavingView,\n direction: opts.direction\n };\n };\n class_1.prototype.insertViewAt = function (view, index) {\n var views = this.views;\n var existingIndex = views.indexOf(view);\n if (existingIndex > -1) {\n // this view is already in the stack!!\n // move it to its new location\n assert(view.nav === this, 'view is not part of the nav');\n views.splice(index, 0, views.splice(existingIndex, 1)[0]);\n }\n else {\n assert(!view.nav, 'nav is used');\n // this is a new view to add to the stack\n // create the new entering view\n view.nav = this;\n // insert the entering view into the correct index in the stack\n views.splice(index, 0, view);\n }\n };\n class_1.prototype.removeView = function (view) {\n assert(view.state === VIEW_STATE_ATTACHED || view.state === VIEW_STATE_DESTROYED, 'view state should be loaded or destroyed');\n var views = this.views;\n var index = views.indexOf(view);\n assert(index > -1, 'view must be part of the stack');\n if (index >= 0) {\n views.splice(index, 1);\n }\n };\n class_1.prototype.destroyView = function (view) {\n view._destroy();\n this.removeView(view);\n };\n /**\n * DOM WRITE\n */\n class_1.prototype.cleanup = function (activeView) {\n // ok, cleanup time!! Destroy all of the views that are\n // INACTIVE and come after the active view\n // only do this if the views exist, though\n if (this.destroyed) {\n return;\n }\n var views = this.views;\n var activeViewIndex = views.indexOf(activeView);\n for (var i = views.length - 1; i >= 0; i--) {\n var view = views[i];\n var element = view.element;\n if (i > activeViewIndex) {\n // this view comes after the active view\n // let's unload it\n lifecycle(element, LIFECYCLE_WILL_UNLOAD);\n this.destroyView(view);\n }\n else if (i < activeViewIndex) {\n // this view comes before the active view\n // and it is not a portal then ensure it is hidden\n setPageHidden(element, true);\n }\n }\n };\n class_1.prototype.canStart = function () {\n return (!!this.swipeGesture &&\n !this.isTransitioning &&\n this.transInstr.length === 0 &&\n this.animationEnabled &&\n this.canGoBackSync());\n };\n class_1.prototype.onStart = function () {\n this.queueTrns({\n removeStart: -1,\n removeCount: 1,\n opts: {\n direction: 'back',\n progressAnimation: true\n }\n }, undefined);\n };\n class_1.prototype.onMove = function (stepValue) {\n if (this.sbAni) {\n this.sbAni.progressStep(stepValue);\n }\n };\n class_1.prototype.onEnd = function (shouldComplete, stepValue, dur) {\n var _this = this;\n if (this.sbAni) {\n this.animationEnabled = false;\n this.sbAni.onFinish(function () {\n _this.animationEnabled = true;\n }, { oneTimeCallback: true });\n // Account for rounding errors in JS\n var newStepValue = (shouldComplete) ? -0.001 : 0.001;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n if (!shouldComplete) {\n this.sbAni.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression(new Point(0, 0), new Point(1, 0), new Point(0.68, 0.28), new Point(1, 1), stepValue);\n }\n else {\n newStepValue += getTimeGivenProgression(new Point(0, 0), new Point(0.32, 0.72), new Point(0, 1), new Point(1, 1), stepValue);\n }\n this.sbAni.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n }\n };\n class_1.prototype.render = function () {\n return (h(\"slot\", null));\n };\n Object.defineProperty(class_1.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_1, \"watchers\", {\n get: function () {\n return {\n \"swipeGesture\": [\"swipeGestureChanged\"],\n \"root\": [\"rootChanged\"]\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(class_1, \"style\", {\n get: function () { return \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;overflow:hidden;z-index:0}\"; },\n enumerable: true,\n configurable: true\n });\n return class_1;\n}());\nvar navLink = function (el, routerDirection, component, componentProps) {\n var nav = el.closest('ion-nav');\n if (nav) {\n if (routerDirection === 'forward') {\n if (component !== undefined) {\n return nav.push(component, componentProps, { skipIfBusy: true });\n }\n }\n else if (routerDirection === 'root') {\n if (component !== undefined) {\n return nav.setRoot(component, componentProps, { skipIfBusy: true });\n }\n }\n else if (routerDirection === 'back') {\n return nav.pop({ skipIfBusy: true });\n }\n }\n return Promise.resolve(false);\n};\nvar NavLink = /** @class */ (function () {\n function NavLink(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n /**\n * The transition direction when navigating to another page.\n */\n this.routerDirection = 'forward';\n this.onClick = function () {\n return navLink(_this.el, _this.routerDirection, _this.component, _this.componentProps);\n };\n }\n NavLink.prototype.render = function () {\n return (h(Host, { onClick: this.onClick }));\n };\n Object.defineProperty(NavLink.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n return NavLink;\n}());\nvar NavPop = /** @class */ (function () {\n function NavPop(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n this.pop = function () {\n return navLink(_this.el, 'back');\n };\n }\n NavPop.prototype.componentDidLoad = function () {\n console.warn('[DEPRECATED][ion-nav-pop] is deprecated. Use `` instead.');\n };\n NavPop.prototype.render = function () {\n return (h(Host, { onClick: this.pop }));\n };\n Object.defineProperty(NavPop.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n return NavPop;\n}());\nvar NavPush = /** @class */ (function () {\n function NavPush(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n this.push = function () {\n return navLink(_this.el, 'forward', _this.component, _this.componentProps);\n };\n }\n NavPush.prototype.componentDidLoad = function () {\n console.warn('[DEPRECATED][ion-nav-push] `` is deprecated. Use `` instead.');\n };\n NavPush.prototype.render = function () {\n return (h(Host, { onClick: this.push }));\n };\n Object.defineProperty(NavPush.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n return NavPush;\n}());\nvar NavSetRoot = /** @class */ (function () {\n function NavSetRoot(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n this.setRoot = function () {\n return navLink(_this.el, 'root', _this.component, _this.componentProps);\n };\n }\n NavSetRoot.prototype.componentDidLoad = function () {\n console.warn('[DEPRECATED][ion-nav-set-root] `` is deprecated. Use `` instead.');\n };\n NavSetRoot.prototype.render = function () {\n return (h(Host, { onClick: this.setRoot }));\n };\n Object.defineProperty(NavSetRoot.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n return NavSetRoot;\n}());\nexport { Nav as ion_nav, NavLink as ion_nav_link, NavPop as ion_nav_pop, NavPush as ion_nav_push, NavSetRoot as ion_nav_set_root };\n","/**\n * Based on:\n * https://stackoverflow.com/questions/7348009/y-coordinate-for-a-given-x-cubic-bezier\n * https://math.stackexchange.com/questions/26846/is-there-an-explicit-form-for-cubic-b%C3%A9zier-curves\n * TODO: Reduce rounding error\n */\nvar Point = /** @class */ (function () {\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n return Point;\n}());\n/**\n * Given a cubic-bezier curve, get the x value (time) given\n * the y value (progression).\n * Ex: cubic-bezier(0.32, 0.72, 0, 1);\n * P0: (0, 0)\n * P1: (0.32, 0.72)\n * P2: (0, 1)\n * P3: (1, 1)\n *\n * If you give a cubic bezier curve that never reaches the\n * provided progression, this function will return NaN.\n */\nvar getTimeGivenProgression = function (p0, p1, p2, p3, progression) {\n var tValues = solveCubicBezier(p0.y, p1.y, p2.y, p3.y, progression);\n return solveCubicParametricEquation(p0.x, p1.x, p2.x, p3.x, tValues[0]); // TODO: Add better strategy for dealing with multiple solutions\n};\n/**\n * Solve a cubic equation in one dimension (time)\n */\nvar solveCubicParametricEquation = function (p0, p1, p2, p3, t) {\n var partA = (3 * p1) * Math.pow(t - 1, 2);\n var partB = (-3 * p2 * t) + (3 * p2) + (p3 * t);\n var partC = p0 * Math.pow(t - 1, 3);\n return t * (partA + (t * partB)) - partC;\n};\n/**\n * Find the `t` value for a cubic bezier using Cardano's formula\n */\nvar solveCubicBezier = function (p0, p1, p2, p3, refPoint) {\n p0 -= refPoint;\n p1 -= refPoint;\n p2 -= refPoint;\n p3 -= refPoint;\n var roots = solveCubicEquation(p3 - 3 * p2 + 3 * p1 - p0, 3 * p2 - 6 * p1 + 3 * p0, 3 * p1 - 3 * p0, p0);\n return roots.filter(function (root) { return root >= 0 && root <= 1; });\n};\nvar solveQuadraticEquation = function (a, b, c) {\n var discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n return [];\n }\n else {\n return [\n (-b + Math.sqrt(discriminant)) / (2 * a),\n (-b - Math.sqrt(discriminant)) / (2 * a)\n ];\n }\n};\nvar solveCubicEquation = function (a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n b /= a;\n c /= a;\n d /= a;\n var p = (3 * c - b * b) / 3;\n var q = (2 * b * b * b - 9 * b * c + 27 * d) / 27;\n if (p === 0) {\n return [Math.pow(-q, 1 / 3)];\n }\n else if (q === 0) {\n return [Math.sqrt(-p), -Math.sqrt(-p)];\n }\n var discriminant = Math.pow(q / 2, 2) + Math.pow(p / 3, 3);\n if (discriminant === 0) {\n return [Math.pow(q / 2, 1 / 2) - b / 3];\n }\n else if (discriminant > 0) {\n return [Math.pow(-(q / 2) + Math.sqrt(discriminant), 1 / 3) - Math.pow((q / 2) + Math.sqrt(discriminant), 1 / 3) - b / 3];\n }\n var r = Math.sqrt(Math.pow(-(p / 3), 3));\n var phi = Math.acos(-(q / (2 * Math.sqrt(Math.pow(-(p / 3), 3)))));\n var s = 2 * Math.pow(r, 1 / 3);\n return [\n s * Math.cos(phi / 3) - b / 3,\n s * Math.cos((phi + 2 * Math.PI) / 3) - b / 3,\n s * Math.cos((phi + 4 * Math.PI) / 3) - b / 3\n ];\n};\nexport { Point as P, getTimeGivenProgression as g };\n","import { __awaiter, __generator } from \"tslib\";\nvar attachComponent = function (delegate, container, component, cssClasses, componentProps) { return __awaiter(void 0, void 0, void 0, function () {\n var el;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (delegate) {\n return [2 /*return*/, delegate.attachViewToDom(container, component, componentProps, cssClasses)];\n }\n if (typeof component !== 'string' && !(component instanceof HTMLElement)) {\n throw new Error('framework delegate is missing');\n }\n el = (typeof component === 'string')\n ? container.ownerDocument && container.ownerDocument.createElement(component)\n : component;\n if (cssClasses) {\n cssClasses.forEach(function (c) { return el.classList.add(c); });\n }\n if (componentProps) {\n Object.assign(el, componentProps);\n }\n container.appendChild(el);\n if (!el.componentOnReady) return [3 /*break*/, 2];\n return [4 /*yield*/, el.componentOnReady()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, el];\n }\n });\n}); };\nvar detachComponent = function (delegate, element) {\n if (element) {\n if (delegate) {\n var container = element.parentElement;\n return delegate.removeViewFromDom(container, element);\n }\n element.remove();\n }\n return Promise.resolve();\n};\nexport { attachComponent as a, detachComponent as d };\n","import { __awaiter, __generator } from \"tslib\";\nimport { w as writeTask } from './core-feeeff0d.js';\nimport { b as LIFECYCLE_WILL_LEAVE, L as LIFECYCLE_WILL_ENTER, a as LIFECYCLE_DID_ENTER, c as LIFECYCLE_DID_LEAVE } from './constants-3c3e1099.js';\nvar iosTransitionAnimation = function () { return import('./ios.transition-504cdd09.js'); };\nvar mdTransitionAnimation = function () { return import('./md.transition-fea2bbfb.js'); };\nvar transition = function (opts) {\n return new Promise(function (resolve, reject) {\n writeTask(function () {\n beforeTransition(opts);\n runTransition(opts).then(function (result) {\n if (result.animation) {\n result.animation.destroy();\n }\n afterTransition(opts);\n resolve(result);\n }, function (error) {\n afterTransition(opts);\n reject(error);\n });\n });\n });\n};\nvar beforeTransition = function (opts) {\n var enteringEl = opts.enteringEl;\n var leavingEl = opts.leavingEl;\n setZIndex(enteringEl, leavingEl, opts.direction);\n if (opts.showGoBack) {\n enteringEl.classList.add('can-go-back');\n }\n else {\n enteringEl.classList.remove('can-go-back');\n }\n setPageHidden(enteringEl, false);\n if (leavingEl) {\n setPageHidden(leavingEl, false);\n }\n};\nvar runTransition = function (opts) { return __awaiter(void 0, void 0, void 0, function () {\n var animationBuilder, ani;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, getAnimationBuilder(opts)];\n case 1:\n animationBuilder = _a.sent();\n ani = (animationBuilder)\n ? animation(animationBuilder, opts)\n : noAnimation(opts);\n return [2 /*return*/, ani];\n }\n });\n}); };\nvar afterTransition = function (opts) {\n var enteringEl = opts.enteringEl;\n var leavingEl = opts.leavingEl;\n enteringEl.classList.remove('ion-page-invisible');\n if (leavingEl !== undefined) {\n leavingEl.classList.remove('ion-page-invisible');\n }\n};\nvar getAnimationBuilder = function (opts) { return __awaiter(void 0, void 0, void 0, function () {\n var getAnimation, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!opts.leavingEl || !opts.animated || opts.duration === 0) {\n return [2 /*return*/, undefined];\n }\n if (opts.animationBuilder) {\n return [2 /*return*/, opts.animationBuilder];\n }\n if (!(opts.mode === 'ios')) return [3 /*break*/, 2];\n return [4 /*yield*/, iosTransitionAnimation()];\n case 1:\n _a = (_b.sent()).iosTransitionAnimation;\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, mdTransitionAnimation()];\n case 3:\n _a = (_b.sent()).mdTransitionAnimation;\n _b.label = 4;\n case 4:\n getAnimation = _a;\n return [2 /*return*/, getAnimation];\n }\n });\n}); };\nvar animation = function (animationBuilder, opts) { return __awaiter(void 0, void 0, void 0, function () {\n var trans, mod, err_1, didComplete;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, waitForReady(opts, true)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 5, , 6]);\n return [4 /*yield*/, import('./index-69c37885.js')];\n case 3:\n mod = _a.sent();\n return [4 /*yield*/, mod.create(animationBuilder, opts.baseEl, opts)];\n case 4:\n trans = _a.sent();\n return [3 /*break*/, 6];\n case 5:\n err_1 = _a.sent();\n trans = animationBuilder(opts.baseEl, opts);\n return [3 /*break*/, 6];\n case 6:\n fireWillEvents(opts.enteringEl, opts.leavingEl);\n return [4 /*yield*/, playTransition(trans, opts)];\n case 7:\n didComplete = _a.sent();\n if (opts.progressCallback) {\n opts.progressCallback(undefined);\n }\n if (didComplete) {\n fireDidEvents(opts.enteringEl, opts.leavingEl);\n }\n return [2 /*return*/, {\n hasCompleted: didComplete,\n animation: trans\n }];\n }\n });\n}); };\nvar noAnimation = function (opts) { return __awaiter(void 0, void 0, void 0, function () {\n var enteringEl, leavingEl;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n enteringEl = opts.enteringEl;\n leavingEl = opts.leavingEl;\n return [4 /*yield*/, waitForReady(opts, false)];\n case 1:\n _a.sent();\n fireWillEvents(enteringEl, leavingEl);\n fireDidEvents(enteringEl, leavingEl);\n return [2 /*return*/, {\n hasCompleted: true\n }];\n }\n });\n}); };\nvar waitForReady = function (opts, defaultDeep) { return __awaiter(void 0, void 0, void 0, function () {\n var deep, promises;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n deep = opts.deepWait !== undefined ? opts.deepWait : defaultDeep;\n promises = deep ? [\n deepReady(opts.enteringEl),\n deepReady(opts.leavingEl),\n ] : [\n shallowReady(opts.enteringEl),\n shallowReady(opts.leavingEl),\n ];\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [4 /*yield*/, notifyViewReady(opts.viewIsReady, opts.enteringEl)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n}); };\nvar notifyViewReady = function (viewIsReady, enteringEl) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!viewIsReady) return [3 /*break*/, 2];\n return [4 /*yield*/, viewIsReady(enteringEl)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n}); };\nvar playTransition = function (trans, opts) {\n var progressCallback = opts.progressCallback;\n // TODO: Remove AnimationBuilder\n var promise = new Promise(function (resolve) {\n trans.onFinish(function (currentStep) {\n if (typeof currentStep === 'number') {\n resolve(currentStep === 1);\n }\n else if (trans.hasCompleted !== undefined) {\n resolve(trans.hasCompleted);\n }\n });\n });\n // cool, let's do this, start the transition\n if (progressCallback) {\n // this is a swipe to go back, just get the transition progress ready\n // kick off the swipe animation start\n trans.progressStart(true);\n progressCallback(trans);\n }\n else {\n // only the top level transition should actually start \"play\"\n // kick it off and let it play through\n // ******** DOM WRITE ****************\n trans.play();\n }\n // create a callback for when the animation is done\n return promise;\n};\nvar fireWillEvents = function (enteringEl, leavingEl) {\n lifecycle(leavingEl, LIFECYCLE_WILL_LEAVE);\n lifecycle(enteringEl, LIFECYCLE_WILL_ENTER);\n};\nvar fireDidEvents = function (enteringEl, leavingEl) {\n lifecycle(enteringEl, LIFECYCLE_DID_ENTER);\n lifecycle(leavingEl, LIFECYCLE_DID_LEAVE);\n};\nvar lifecycle = function (el, eventName) {\n if (el) {\n var ev = new CustomEvent(eventName, {\n bubbles: false,\n cancelable: false,\n });\n el.dispatchEvent(ev);\n }\n};\nvar shallowReady = function (el) {\n if (el && el.componentOnReady) {\n return el.componentOnReady();\n }\n return Promise.resolve();\n};\nvar deepReady = function (el) { return __awaiter(void 0, void 0, void 0, function () {\n var element, stencilEl;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n element = el;\n if (!element) return [3 /*break*/, 4];\n if (!(element.componentOnReady != null)) return [3 /*break*/, 2];\n return [4 /*yield*/, element.componentOnReady()];\n case 1:\n stencilEl = _a.sent();\n if (stencilEl != null) {\n return [2 /*return*/];\n }\n _a.label = 2;\n case 2: return [4 /*yield*/, Promise.all(Array.from(element.children).map(deepReady))];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n}); };\nvar setPageHidden = function (el, hidden) {\n if (hidden) {\n el.setAttribute('aria-hidden', 'true');\n el.classList.add('ion-page-hidden');\n }\n else {\n el.hidden = false;\n el.removeAttribute('aria-hidden');\n el.classList.remove('ion-page-hidden');\n }\n};\nvar setZIndex = function (enteringEl, leavingEl, direction) {\n if (enteringEl !== undefined) {\n enteringEl.style.zIndex = (direction === 'back')\n ? '99'\n : '101';\n }\n if (leavingEl !== undefined) {\n leavingEl.style.zIndex = '100';\n }\n};\nvar getIonPageElement = function (element) {\n if (element.classList.contains('ion-page')) {\n return element;\n }\n var ionPage = element.querySelector(':scope > .ion-page, :scope > ion-nav, :scope > ion-tabs');\n if (ionPage) {\n return ionPage;\n }\n // idk, return the original element so at least something animates and we don't have a null pointer\n return element;\n};\nexport { deepReady as d, getIonPageElement as g, lifecycle as l, setPageHidden as s, transition as t };\n"],"sourceRoot":""}