b8735107a745b9dfe33f595e5d7e6d237982cc1c7ff101229330fb911f790f84.json 100 KB

1
  1. {"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Build } from '@stencil/core/internal/client';\nimport { g as getTimeGivenProgression } from './cubic-bezier.js';\nimport { n as assert, s as shallowEqualStringMap } from './helpers.js';\nimport { p as printIonWarning } from './index6.js';\nimport { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index2.js';\nimport { b as getIonMode, c as config } from './ionic-global.js';\nimport { a as attachComponent } from './framework-delegate.js';\nconst VIEW_STATE_NEW = 1;\nconst VIEW_STATE_ATTACHED = 2;\nconst VIEW_STATE_DESTROYED = 3;\n// TODO(FW-2832): types\nclass ViewController {\n constructor(component, params) {\n this.component = component;\n this.params = params;\n this.state = VIEW_STATE_NEW;\n }\n init(container) {\n var _this = this;\n return _asyncToGenerator(function* () {\n _this.state = VIEW_STATE_ATTACHED;\n if (!_this.element) {\n const component = _this.component;\n _this.element = yield attachComponent(_this.delegate, container, component, ['ion-page', 'ion-page-invisible'], _this.params);\n }\n })();\n }\n /**\n * DOM WRITE\n */\n _destroy() {\n assert(this.state !== VIEW_STATE_DESTROYED, 'view state must be ATTACHED');\n const element = this.element;\n if (element) {\n if (this.delegate) {\n this.delegate.removeViewFromDom(element.parentElement, element);\n } else {\n element.remove();\n }\n }\n this.nav = undefined;\n this.state = VIEW_STATE_DESTROYED;\n }\n}\nconst matches = (view, id, params) => {\n if (!view) {\n return false;\n }\n if (view.component !== id) {\n return false;\n }\n return shallowEqualStringMap(view.params, params);\n};\nconst convertToView = (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};\nconst convertToViews = pages => {\n return pages.map(page => {\n if (page instanceof ViewController) {\n return page;\n }\n if ('component' in page) {\n return convertToView(page.component, page.componentProps === null ? undefined : page.componentProps);\n }\n return convertToView(page, undefined);\n }).filter(v => v !== null);\n};\nconst navCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}\";\nconst IonNavStyle0 = navCss;\nconst Nav = /*@__PURE__*/proxyCustomElement(class Nav extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.transInstr = [];\n this.gestureOrAnimationInProgress = false;\n this.useRouter = false;\n this.isTransitioning = false;\n this.destroyed = false;\n this.views = [];\n this.didLoad = false;\n this.delegate = undefined;\n this.swipeGesture = undefined;\n this.animated = true;\n this.animation = undefined;\n this.rootParams = undefined;\n this.root = undefined;\n }\n swipeGestureChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeGesture === true);\n }\n }\n rootChanged() {\n const isDev = Build.isDev;\n if (this.root === undefined) {\n return;\n }\n if (this.didLoad === false) {\n /**\n * If the component has not loaded yet, we can skip setting up the root component.\n * It will be called when `componentDidLoad` fires.\n */\n return;\n }\n if (!this.useRouter) {\n if (this.root !== undefined) {\n this.setRoot(this.root, this.rootParams);\n }\n } else if (isDev) {\n printIonWarning('<ion-nav> does not support a root attribute when using ion-router.', this.el);\n }\n }\n componentWillLoad() {\n this.useRouter = document.querySelector('ion-router') !== null && this.el.closest('[no-router]') === null;\n if (this.swipeGesture === undefined) {\n const mode = getIonMode(this);\n this.swipeGesture = config.getBoolean('swipeBackEnabled', mode === 'ios');\n }\n this.ionNavWillLoad.emit();\n }\n componentDidLoad() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n // We want to set this flag before any watch callbacks are manually called\n _this2.didLoad = true;\n _this2.rootChanged();\n _this2.gesture = (yield import('./swipe-back.js')).createSwipeBackGesture(_this2.el, _this2.canStart.bind(_this2), _this2.onStart.bind(_this2), _this2.onMove.bind(_this2), _this2.onEnd.bind(_this2));\n _this2.swipeGestureChanged();\n })();\n }\n connectedCallback() {\n this.destroyed = false;\n }\n disconnectedCallback() {\n for (const view of this.views) {\n lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);\n view._destroy();\n }\n // Release swipe back gesture and transition.\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n this.transInstr.length = 0;\n 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 push(component, componentProps, opts, done) {\n return this.insert(-1, component, componentProps, opts, 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 insert(insertIndex, component, componentProps, opts, done) {\n return this.insertPages(insertIndex, [{\n component,\n componentProps\n }], opts, 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 insertPages(insertIndex, insertComponents, opts, done) {\n return this.queueTrns({\n insertStart: insertIndex,\n insertViews: insertComponents,\n 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 pop(opts, done) {\n return this.removeIndex(-1, 1, opts, 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 popTo(indexOrViewCtrl, opts, done) {\n const ti = {\n removeStart: -1,\n removeCount: -1,\n opts\n };\n if (typeof indexOrViewCtrl === 'object' && indexOrViewCtrl.component) {\n ti.removeView = indexOrViewCtrl;\n ti.removeStart = 1;\n } else if (typeof indexOrViewCtrl === 'number') {\n ti.removeStart = indexOrViewCtrl + 1;\n }\n return this.queueTrns(ti, 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 popToRoot(opts, done) {\n return this.removeIndex(1, -1, opts, 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 removeIndex(startIndex, removeCount = 1, opts, done) {\n return this.queueTrns({\n removeStart: startIndex,\n removeCount,\n 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 setRoot(component, componentProps, opts, done) {\n return this.setPages([{\n component,\n componentProps\n }], 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 setPages(views, opts, done) {\n opts !== null && opts !== void 0 ? opts : opts = {};\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\n }, done);\n }\n /**\n * Called by the router to update the view.\n *\n * @param id The component tag.\n * @param params The component params.\n * @param direction A direction hint.\n * @param animation an AnimationBuilder.\n *\n * @return the status.\n * @internal\n */\n setRouteId(id, params, direction, animation) {\n const active = this.getActiveSync();\n if (matches(active, id, params)) {\n return Promise.resolve({\n changed: false,\n element: active.element\n });\n }\n let resolve;\n const promise = new Promise(r => resolve = r);\n let finish;\n const commonOpts = {\n updateURL: false,\n viewIsReady: enteringEl => {\n let mark;\n const p = new Promise(r => mark = r);\n resolve({\n changed: true,\n element: enteringEl,\n markVisible: function () {\n var _ref = _asyncToGenerator(function* () {\n mark();\n yield finish;\n });\n return function markVisible() {\n return _ref.apply(this, arguments);\n };\n }()\n });\n return p;\n }\n };\n if (direction === 'root') {\n finish = this.setRoot(id, params, commonOpts);\n } else {\n // Look for a view matching the target in the view stack.\n const viewController = this.views.find(v => matches(v, id, params));\n if (viewController) {\n finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), {\n direction: 'back',\n animationBuilder: animation\n }));\n } else if (direction === 'forward') {\n finish = this.push(id, params, Object.assign(Object.assign({}, commonOpts), {\n animationBuilder: animation\n }));\n } else if (direction === 'back') {\n finish = this.setRoot(id, params, Object.assign(Object.assign({}, commonOpts), {\n direction: 'back',\n animated: true,\n animationBuilder: animation\n }));\n }\n }\n return promise;\n }\n /**\n * Called by <ion-router> to retrieve the current component.\n *\n * @internal\n */\n getRouteId() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n const active = _this3.getActiveSync();\n if (active) {\n return {\n id: active.element.tagName,\n params: active.params,\n element: active.element\n };\n }\n return undefined;\n })();\n }\n /**\n * Get the active view.\n */\n getActive() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n return _this4.getActiveSync();\n })();\n }\n /**\n * Get the view at the specified index.\n *\n * @param index The index of the view.\n */\n getByIndex(index) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n return _this5.views[index];\n })();\n }\n /**\n * Returns `true` if the current view can go back.\n *\n * @param view The view to check.\n */\n canGoBack(view) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n return _this6.canGoBackSync(view);\n })();\n }\n /**\n * Get the previous view.\n *\n * @param view The view to get.\n */\n getPrevious(view) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n return _this7.getPreviousSync(view);\n })();\n }\n /**\n * Returns the number of views in the stack.\n */\n getLength() {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n return Promise.resolve(_this8.views.length);\n })();\n }\n getActiveSync() {\n return this.views[this.views.length - 1];\n }\n canGoBackSync(view = this.getActiveSync()) {\n return !!(view && this.getPreviousSync(view));\n }\n getPreviousSync(view = this.getActiveSync()) {\n if (!view) {\n return undefined;\n }\n const views = this.views;\n const index = views.indexOf(view);\n return index > 0 ? views[index - 1] : undefined;\n }\n /**\n * Adds a navigation stack change to the queue and schedules it to run.\n *\n * @returns Whether the transition succeeds.\n */\n queueTrns(ti, done) {\n var _this9 = this;\n return _asyncToGenerator(function* () {\n var _a, _b;\n if (_this9.isTransitioning && ((_a = ti.opts) === null || _a === void 0 ? void 0 : _a.skipIfBusy)) {\n return false;\n }\n const promise = new Promise((resolve, reject) => {\n ti.resolve = resolve;\n ti.reject = reject;\n });\n ti.done = done;\n /**\n * If using router, check to see if navigation hooks\n * will allow us to perform this transition. This\n * is required in order for hooks to work with\n * the ion-back-button or swipe to go back.\n */\n if (ti.opts && ti.opts.updateURL !== false && _this9.useRouter) {\n const router = document.querySelector('ion-router');\n if (router) {\n const canTransition = yield router.canTransition();\n if (canTransition === false) {\n return false;\n }\n if (typeof canTransition === 'string') {\n router.push(canTransition, ti.opts.direction || 'back');\n return false;\n }\n }\n }\n // Normalize empty\n if (((_b = ti.insertViews) === null || _b === void 0 ? void 0 : _b.length) === 0) {\n ti.insertViews = undefined;\n }\n // Enqueue transition instruction\n _this9.transInstr.push(ti);\n // if there isn't a transition already happening\n // then this will kick off this transition\n _this9.nextTrns();\n return promise;\n })();\n }\n success(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 const router = document.querySelector('ion-router');\n if (router) {\n const direction = result.direction === 'back' ? 'back' : 'forward';\n router.navChanged(direction);\n }\n }\n }\n failed(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 fireError(rejectReason, ti) {\n if (ti.done) {\n ti.done(false, false, rejectReason);\n }\n if (ti.reject && !this.destroyed) {\n ti.reject(rejectReason);\n } else {\n ti.resolve(false);\n }\n }\n /**\n * Consumes the next transition in the queue.\n *\n * @returns whether the transition is executed.\n */\n nextTrns() {\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, executes the next instructions.\n const ti = this.transInstr.shift();\n if (!ti) {\n return false;\n }\n this.runTransition(ti);\n return true;\n }\n /** Executes all the transition instruction from the queue. */\n runTransition(ti) {\n var _this10 = this;\n return _asyncToGenerator(function* () {\n try {\n // set that this nav is actively transitioning\n _this10.ionNavWillChange.emit();\n _this10.isTransitioning = true;\n _this10.prepareTI(ti);\n const leavingView = _this10.getActiveSync();\n const enteringView = _this10.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) {\n yield enteringView.init(_this10.el);\n }\n _this10.postViewInit(enteringView, leavingView, ti);\n // Needs transition?\n const requiresTransition = (ti.enteringRequiresTransition || ti.leavingRequiresTransition) && enteringView !== leavingView;\n if (requiresTransition && ti.opts && leavingView) {\n const isBackDirection = ti.opts.direction === 'back';\n /**\n * If heading back, use the entering page's animation\n * unless otherwise specified by the developer.\n */\n if (isBackDirection) {\n ti.opts.animationBuilder = ti.opts.animationBuilder || (enteringView === null || enteringView === void 0 ? void 0 : enteringView.animationBuilder);\n }\n leavingView.animationBuilder = ti.opts.animationBuilder;\n }\n let result;\n if (requiresTransition) {\n result = yield _this10.transition(enteringView, leavingView, ti);\n } else {\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 result = {\n hasCompleted: true,\n requiresTransition: false\n };\n }\n _this10.success(result, ti);\n _this10.ionNavDidChange.emit();\n } catch (rejectReason) {\n _this10.failed(rejectReason, ti);\n }\n _this10.isTransitioning = false;\n _this10.nextTrns();\n })();\n }\n prepareTI(ti) {\n var _a, _b;\n var _c;\n const viewsLength = this.views.length;\n (_a = ti.opts) !== null && _a !== void 0 ? _a : ti.opts = {};\n (_b = (_c = ti.opts).delegate) !== null && _b !== void 0 ? _b : _c.delegate = this.delegate;\n if (ti.removeView !== undefined) {\n assert(ti.removeStart !== undefined, 'removeView needs removeStart');\n assert(ti.removeCount !== undefined, 'removeView needs removeCount');\n const 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 = 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 const insertViews = ti.insertViews;\n if (!insertViews) {\n return;\n }\n assert(insertViews.length > 0, 'length can not be zero');\n const 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 (const view of viewControllers) {\n view.delegate = ti.opts.delegate;\n const 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 /**\n * Returns the view that will be entered considering the transition instructions.\n *\n * @param ti The instructions.\n * @param leavingView The view being left or undefined if none.\n *\n * @returns The view that will be entered, undefined if none.\n */\n getEnteringView(ti, leavingView) {\n // The last inserted view will be entered when view are inserted.\n const insertViews = ti.insertViews;\n if (insertViews !== undefined) {\n return insertViews[insertViews.length - 1];\n }\n // When views are deleted, we will enter the last view that is not removed and not the view being left.\n const removeStart = ti.removeStart;\n if (removeStart !== undefined) {\n const views = this.views;\n const removeEnd = removeStart + ti.removeCount;\n for (let i = views.length - 1; i >= 0; i--) {\n const view = views[i];\n if ((i < removeStart || i >= removeEnd) && view !== leavingView) {\n return view;\n }\n }\n }\n return undefined;\n }\n /**\n * Adds and Removes the views from the navigation stack.\n *\n * @param enteringView The view being entered.\n * @param leavingView The view being left.\n * @param ti The instructions.\n */\n postViewInit(enteringView, leavingView, ti) {\n var _a, _b, _c;\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 // Compute the views to remove.\n const opts = ti.opts;\n const {\n insertViews,\n removeStart,\n removeCount\n } = ti;\n /** Records the view to destroy */\n let 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 (let i = removeStart; i < removeStart + removeCount; i++) {\n const view = this.views[i];\n if (view !== undefined && view !== enteringView && view !== leavingView) {\n destroyQueue.push(view);\n }\n }\n // default the direction to \"back\"\n (_a = opts.direction) !== null && _a !== void 0 ? _a : opts.direction = 'back';\n }\n const finalNumViews = this.views.length + ((_b = insertViews === null || insertViews === void 0 ? void 0 : insertViews.length) !== null && _b !== void 0 ? _b : 0) - (removeCount !== null && removeCount !== void 0 ? removeCount : 0);\n assert(finalNumViews >= 0, 'final balance can not be negative');\n if (finalNumViews === 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 // Insert the new views in the stack.\n if (insertViews) {\n // add the views to the\n let insertIndex = ti.insertStart;\n for (const view of insertViews) {\n this.insertViewAt(view, insertIndex);\n insertIndex++;\n }\n if (ti.enteringRequiresTransition) {\n // default to forward if not already set\n (_c = opts.direction) !== null && _c !== void 0 ? _c : 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 (const view of destroyQueue) {\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 (const view of destroyQueue) {\n this.destroyView(view);\n }\n }\n }\n transition(enteringView, leavingView, ti) {\n var _this11 = this;\n return _asyncToGenerator(function* () {\n // we should animate (duration > 0) if the pushed page is not the first one (startup)\n // or if it is a portal (modal, actionsheet, etc.)\n const opts = ti.opts;\n const progressCallback = opts.progressAnimation ? ani => {\n /**\n * Because this progress callback is called asynchronously\n * it is possible for the gesture to start and end before\n * the animation is ever set. In that scenario, we should\n * immediately call progressEnd so that the transition promise\n * resolves and the gesture does not get locked up.\n */\n if (ani !== undefined && !_this11.gestureOrAnimationInProgress) {\n _this11.gestureOrAnimationInProgress = true;\n ani.onFinish(() => {\n _this11.gestureOrAnimationInProgress = false;\n }, {\n oneTimeCallback: true\n });\n /**\n * Playing animation to beginning\n * with a duration of 0 prevents\n * any flickering when the animation\n * is later cleaned up.\n */\n ani.progressEnd(0, 0, 0);\n } else {\n _this11.sbAni = ani;\n }\n } : undefined;\n const mode = getIonMode(_this11);\n const enteringEl = enteringView.element;\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n const leavingEl = leavingView && leavingView.element;\n const animationOpts = Object.assign(Object.assign({\n mode,\n showGoBack: _this11.canGoBackSync(enteringView),\n baseEl: _this11.el,\n progressCallback,\n animated: _this11.animated && config.getBoolean('animated', true),\n enteringEl,\n leavingEl\n }, opts), {\n animationBuilder: opts.animationBuilder || _this11.animation || config.get('navAnimation')\n });\n const {\n hasCompleted\n } = yield transition(animationOpts);\n return _this11.transitionFinish(hasCompleted, enteringView, leavingView, opts);\n })();\n }\n transitionFinish(hasCompleted, enteringView, leavingView, opts) {\n /**\n * If the transition did not complete, the leavingView will still be the active\n * view on the stack. Otherwise unmount all the views after the enteringView.\n */\n const activeView = hasCompleted ? enteringView : leavingView;\n if (activeView) {\n this.unmountInactiveViews(activeView);\n }\n return {\n hasCompleted,\n requiresTransition: true,\n enteringView,\n leavingView,\n direction: opts.direction\n };\n }\n /**\n * Inserts a view at the specified index.\n *\n * When the view already is in the stack it will be moved to the new position.\n *\n * @param view The view to insert.\n * @param index The index where to insert the view.\n */\n insertViewAt(view, index) {\n const views = this.views;\n const existingIndex = views.indexOf(view);\n if (existingIndex > -1) {\n assert(view.nav === this, 'view is not part of the nav');\n // The view already in the stack, removes it.\n views.splice(existingIndex, 1);\n // and add it back at the requested index.\n views.splice(index, 0, view);\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 views.splice(index, 0, view);\n }\n }\n /**\n * Removes a view from the stack.\n *\n * @param view The view to remove.\n */\n removeView(view) {\n assert(view.state === VIEW_STATE_ATTACHED || view.state === VIEW_STATE_DESTROYED, 'view state should be loaded or destroyed');\n const views = this.views;\n const 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 destroyView(view) {\n view._destroy();\n this.removeView(view);\n }\n /**\n * Unmounts all inactive views after the specified active view.\n *\n * DOM WRITE\n *\n * @param activeView The view that is actively visible in the stack. Used to calculate which views to unmount.\n */\n unmountInactiveViews(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 const views = this.views;\n const activeViewIndex = views.indexOf(activeView);\n for (let i = views.length - 1; i >= 0; i--) {\n const view = views[i];\n /**\n * When inserting multiple views via insertPages\n * the last page will be transitioned to, but the\n * others will not be. As a result, a DOM element\n * will only be created for the last page inserted.\n * As a result, it is possible to have views in the\n * stack that do not have `view.element` yet.\n */\n const element = view.element;\n if (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 } 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 }\n canStart() {\n return !this.gestureOrAnimationInProgress && !!this.swipeGesture && !this.isTransitioning && this.transInstr.length === 0 && this.canGoBackSync();\n }\n onStart() {\n this.gestureOrAnimationInProgress = true;\n this.pop({\n direction: 'back',\n progressAnimation: true\n });\n }\n onMove(stepValue) {\n if (this.sbAni) {\n this.sbAni.progressStep(stepValue);\n }\n }\n onEnd(shouldComplete, stepValue, dur) {\n if (this.sbAni) {\n this.sbAni.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n }, {\n oneTimeCallback: true\n });\n // Account for rounding errors in JS\n let 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([0, 0], [1, 0], [0.68, 0.28], [1, 1], stepValue)[0];\n } else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], stepValue)[0];\n }\n this.sbAni.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n } else {\n this.gestureOrAnimationInProgress = false;\n }\n }\n render() {\n return h(\"slot\", {\n key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff'\n });\n }\n get el() {\n return this;\n }\n static get watchers() {\n return {\n \"swipeGesture\": [\"swipeGestureChanged\"],\n \"root\": [\"rootChanged\"]\n };\n }\n static get style() {\n return IonNavStyle0;\n }\n}, [1, \"ion-nav\", {\n \"delegate\": [16],\n \"swipeGesture\": [1028, \"swipe-gesture\"],\n \"animated\": [4],\n \"animation\": [16],\n \"rootParams\": [16],\n \"root\": [1],\n \"push\": [64],\n \"insert\": [64],\n \"insertPages\": [64],\n \"pop\": [64],\n \"popTo\": [64],\n \"popToRoot\": [64],\n \"removeIndex\": [64],\n \"setRoot\": [64],\n \"setPages\": [64],\n \"setRouteId\": [64],\n \"getRouteId\": [64],\n \"getActive\": [64],\n \"getByIndex\": [64],\n \"canGoBack\": [64],\n \"getPrevious\": [64],\n \"getLength\": [64]\n}, undefined, {\n \"swipeGesture\": [\"swipeGestureChanged\"],\n \"root\": [\"rootChanged\"]\n}]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-nav\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-nav\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Nav);\n }\n break;\n }\n });\n}\nconst IonNav = Nav;\nconst defineCustomElement = defineCustomElement$1;\nexport { IonNav, defineCustomElement };","map":{"version":3,"names":["proxyCustomElement","HTMLElement","createEvent","h","Build","g","getTimeGivenProgression","n","assert","s","shallowEqualStringMap","p","printIonWarning","l","lifecycle","t","transition","setPageHidden","d","LIFECYCLE_WILL_UNLOAD","b","LIFECYCLE_WILL_LEAVE","c","LIFECYCLE_DID_LEAVE","getIonMode","config","a","attachComponent","VIEW_STATE_NEW","VIEW_STATE_ATTACHED","VIEW_STATE_DESTROYED","ViewController","constructor","component","params","state","init","container","_this","_asyncToGenerator","element","delegate","_destroy","removeViewFromDom","parentElement","remove","nav","undefined","matches","view","id","convertToView","page","convertToViews","pages","map","componentProps","filter","v","navCss","IonNavStyle0","Nav","__registerHost","__attachShadow","ionNavWillLoad","ionNavWillChange","ionNavDidChange","transInstr","gestureOrAnimationInProgress","useRouter","isTransitioning","destroyed","views","didLoad","swipeGesture","animated","animation","rootParams","root","swipeGestureChanged","gesture","enable","rootChanged","isDev","setRoot","el","componentWillLoad","document","querySelector","closest","mode","getBoolean","emit","componentDidLoad","_this2","createSwipeBackGesture","canStart","bind","onStart","onMove","onEnd","connectedCallback","disconnectedCallback","destroy","length","push","opts","done","insert","insertIndex","insertPages","insertComponents","queueTrns","insertStart","insertViews","pop","removeIndex","popTo","indexOrViewCtrl","ti","removeStart","removeCount","removeView","popToRoot","startIndex","setPages","setRouteId","direction","active","getActiveSync","Promise","resolve","changed","promise","r","finish","commonOpts","updateURL","viewIsReady","enteringEl","mark","markVisible","_ref","apply","arguments","viewController","find","Object","assign","animationBuilder","getRouteId","_this3","tagName","getActive","_this4","getByIndex","index","_this5","canGoBack","_this6","canGoBackSync","getPrevious","_this7","getPreviousSync","getLength","_this8","indexOf","_this9","_a","_b","skipIfBusy","reject","router","canTransition","nextTrns","success","result","fireError","hasCompleted","requiresTransition","enteringView","leavingView","navChanged","failed","rejectReason","shift","runTransition","_this10","prepareTI","getEnteringView","Error","postViewInit","enteringRequiresTransition","leavingRequiresTransition","isBackDirection","_c","viewsLength","viewControllers","removeEnd","i","destroyQueue","finalNumViews","console","warn","insertViewAt","destroyView","_this11","progressCallback","progressAnimation","ani","onFinish","oneTimeCallback","progressEnd","sbAni","leavingEl","animationOpts","showGoBack","baseEl","get","transitionFinish","activeView","unmountInactiveViews","existingIndex","splice","activeViewIndex","stepValue","progressStep","shouldComplete","dur","newStepValue","easing","render","key","watchers","style","defineCustomElement$1","customElements","components","forEach","define","IonNav","defineCustomElement"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@ionic/core/components/ion-nav.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Build } from '@stencil/core/internal/client';\nimport { g as getTimeGivenProgression } from './cubic-bezier.js';\nimport { n as assert, s as shallowEqualStringMap } from './helpers.js';\nimport { p as printIonWarning } from './index6.js';\nimport { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index2.js';\nimport { b as getIonMode, c as config } from './ionic-global.js';\nimport { a as attachComponent } from './framework-delegate.js';\n\nconst VIEW_STATE_NEW = 1;\nconst VIEW_STATE_ATTACHED = 2;\nconst VIEW_STATE_DESTROYED = 3;\n// TODO(FW-2832): types\nclass ViewController {\n constructor(component, params) {\n this.component = component;\n this.params = params;\n this.state = VIEW_STATE_NEW;\n }\n async init(container) {\n this.state = VIEW_STATE_ATTACHED;\n if (!this.element) {\n const component = this.component;\n this.element = await attachComponent(this.delegate, container, component, ['ion-page', 'ion-page-invisible'], this.params);\n }\n }\n /**\n * DOM WRITE\n */\n _destroy() {\n assert(this.state !== VIEW_STATE_DESTROYED, 'view state must be ATTACHED');\n const 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}\nconst matches = (view, id, params) => {\n if (!view) {\n return false;\n }\n if (view.component !== id) {\n return false;\n }\n return shallowEqualStringMap(view.params, params);\n};\nconst convertToView = (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};\nconst convertToViews = (pages) => {\n return pages\n .map((page) => {\n if (page instanceof ViewController) {\n return page;\n }\n if ('component' in page) {\n return convertToView(page.component, page.componentProps === null ? undefined : page.componentProps);\n }\n return convertToView(page, undefined);\n })\n .filter((v) => v !== null);\n};\n\nconst navCss = \":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}\";\nconst IonNavStyle0 = navCss;\n\nconst Nav = /*@__PURE__*/ proxyCustomElement(class Nav extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionNavWillLoad = createEvent(this, \"ionNavWillLoad\", 7);\n this.ionNavWillChange = createEvent(this, \"ionNavWillChange\", 3);\n this.ionNavDidChange = createEvent(this, \"ionNavDidChange\", 3);\n this.transInstr = [];\n this.gestureOrAnimationInProgress = false;\n this.useRouter = false;\n this.isTransitioning = false;\n this.destroyed = false;\n this.views = [];\n this.didLoad = false;\n this.delegate = undefined;\n this.swipeGesture = undefined;\n this.animated = true;\n this.animation = undefined;\n this.rootParams = undefined;\n this.root = undefined;\n }\n swipeGestureChanged() {\n if (this.gesture) {\n this.gesture.enable(this.swipeGesture === true);\n }\n }\n rootChanged() {\n const isDev = Build.isDev;\n if (this.root === undefined) {\n return;\n }\n if (this.didLoad === false) {\n /**\n * If the component has not loaded yet, we can skip setting up the root component.\n * It will be called when `componentDidLoad` fires.\n */\n return;\n }\n if (!this.useRouter) {\n if (this.root !== undefined) {\n this.setRoot(this.root, this.rootParams);\n }\n }\n else if (isDev) {\n printIonWarning('<ion-nav> does not support a root attribute when using ion-router.', this.el);\n }\n }\n componentWillLoad() {\n this.useRouter = document.querySelector('ion-router') !== null && this.el.closest('[no-router]') === null;\n if (this.swipeGesture === undefined) {\n const mode = getIonMode(this);\n this.swipeGesture = config.getBoolean('swipeBackEnabled', mode === 'ios');\n }\n this.ionNavWillLoad.emit();\n }\n async componentDidLoad() {\n // We want to set this flag before any watch callbacks are manually called\n this.didLoad = true;\n this.rootChanged();\n this.gesture = (await import('./swipe-back.js')).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));\n this.swipeGestureChanged();\n }\n connectedCallback() {\n this.destroyed = false;\n }\n disconnectedCallback() {\n for (const view of this.views) {\n lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);\n view._destroy();\n }\n // Release swipe back gesture and transition.\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n this.transInstr.length = 0;\n 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 push(component, componentProps, opts, done) {\n return this.insert(-1, component, componentProps, opts, 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 insert(insertIndex, component, componentProps, opts, done) {\n return this.insertPages(insertIndex, [{ component, componentProps }], opts, 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 insertPages(insertIndex, insertComponents, opts, done) {\n return this.queueTrns({\n insertStart: insertIndex,\n insertViews: insertComponents,\n 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 pop(opts, done) {\n return this.removeIndex(-1, 1, opts, 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 popTo(indexOrViewCtrl, opts, done) {\n const ti = {\n removeStart: -1,\n removeCount: -1,\n opts,\n };\n if (typeof indexOrViewCtrl === 'object' && indexOrViewCtrl.component) {\n ti.removeView = indexOrViewCtrl;\n ti.removeStart = 1;\n }\n else if (typeof indexOrViewCtrl === 'number') {\n ti.removeStart = indexOrViewCtrl + 1;\n }\n return this.queueTrns(ti, 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 popToRoot(opts, done) {\n return this.removeIndex(1, -1, opts, 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 removeIndex(startIndex, removeCount = 1, opts, done) {\n return this.queueTrns({\n removeStart: startIndex,\n removeCount,\n 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 setRoot(component, componentProps, opts, done) {\n return this.setPages([{ component, 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 setPages(views, opts, done) {\n opts !== null && opts !== void 0 ? opts : (opts = {});\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,\n }, done);\n }\n /**\n * Called by the router to update the view.\n *\n * @param id The component tag.\n * @param params The component params.\n * @param direction A direction hint.\n * @param animation an AnimationBuilder.\n *\n * @return the status.\n * @internal\n */\n setRouteId(id, params, direction, animation) {\n const active = this.getActiveSync();\n if (matches(active, id, params)) {\n return Promise.resolve({\n changed: false,\n element: active.element,\n });\n }\n let resolve;\n const promise = new Promise((r) => (resolve = r));\n let finish;\n const commonOpts = {\n updateURL: false,\n viewIsReady: (enteringEl) => {\n let mark;\n const p = new Promise((r) => (mark = r));\n resolve({\n changed: true,\n element: enteringEl,\n markVisible: async () => {\n mark();\n await finish;\n },\n });\n return p;\n },\n };\n if (direction === 'root') {\n finish = this.setRoot(id, params, commonOpts);\n }\n else {\n // Look for a view matching the target in the view stack.\n const viewController = this.views.find((v) => matches(v, id, params));\n if (viewController) {\n finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animationBuilder: animation }));\n }\n else if (direction === 'forward') {\n finish = this.push(id, params, Object.assign(Object.assign({}, commonOpts), { animationBuilder: animation }));\n }\n else if (direction === 'back') {\n finish = this.setRoot(id, params, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animated: true, animationBuilder: animation }));\n }\n }\n return promise;\n }\n /**\n * Called by <ion-router> to retrieve the current component.\n *\n * @internal\n */\n async getRouteId() {\n const active = this.getActiveSync();\n if (active) {\n return {\n id: active.element.tagName,\n params: active.params,\n element: active.element,\n };\n }\n return undefined;\n }\n /**\n * Get the active view.\n */\n async getActive() {\n return this.getActiveSync();\n }\n /**\n * Get the view at the specified index.\n *\n * @param index The index of the view.\n */\n async getByIndex(index) {\n return 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 async canGoBack(view) {\n return this.canGoBackSync(view);\n }\n /**\n * Get the previous view.\n *\n * @param view The view to get.\n */\n async getPrevious(view) {\n return this.getPreviousSync(view);\n }\n /**\n * Returns the number of views in the stack.\n */\n async getLength() {\n return Promise.resolve(this.views.length);\n }\n getActiveSync() {\n return this.views[this.views.length - 1];\n }\n canGoBackSync(view = this.getActiveSync()) {\n return !!(view && this.getPreviousSync(view));\n }\n getPreviousSync(view = this.getActiveSync()) {\n if (!view) {\n return undefined;\n }\n const views = this.views;\n const index = views.indexOf(view);\n return index > 0 ? views[index - 1] : undefined;\n }\n /**\n * Adds a navigation stack change to the queue and schedules it to run.\n *\n * @returns Whether the transition succeeds.\n */\n async queueTrns(ti, done) {\n var _a, _b;\n if (this.isTransitioning && ((_a = ti.opts) === null || _a === void 0 ? void 0 : _a.skipIfBusy)) {\n return false;\n }\n const promise = new Promise((resolve, reject) => {\n ti.resolve = resolve;\n ti.reject = reject;\n });\n ti.done = done;\n /**\n * If using router, check to see if navigation hooks\n * will allow us to perform this transition. This\n * is required in order for hooks to work with\n * the ion-back-button or swipe to go back.\n */\n if (ti.opts && ti.opts.updateURL !== false && this.useRouter) {\n const router = document.querySelector('ion-router');\n if (router) {\n const canTransition = await router.canTransition();\n if (canTransition === false) {\n return false;\n }\n if (typeof canTransition === 'string') {\n router.push(canTransition, ti.opts.direction || 'back');\n return false;\n }\n }\n }\n // Normalize empty\n if (((_b = ti.insertViews) === null || _b === void 0 ? void 0 : _b.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 success(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 const router = document.querySelector('ion-router');\n if (router) {\n const direction = result.direction === 'back' ? 'back' : 'forward';\n router.navChanged(direction);\n }\n }\n }\n failed(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 fireError(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 /**\n * Consumes the next transition in the queue.\n *\n * @returns whether the transition is executed.\n */\n nextTrns() {\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, executes the next instructions.\n const ti = this.transInstr.shift();\n if (!ti) {\n return false;\n }\n this.runTransition(ti);\n return true;\n }\n /** Executes all the transition instruction from the queue. */\n async runTransition(ti) {\n try {\n // set that this nav is actively transitioning\n this.ionNavWillChange.emit();\n this.isTransitioning = true;\n this.prepareTI(ti);\n const leavingView = this.getActiveSync();\n const 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) {\n await enteringView.init(this.el);\n }\n this.postViewInit(enteringView, leavingView, ti);\n // Needs transition?\n const requiresTransition = (ti.enteringRequiresTransition || ti.leavingRequiresTransition) && enteringView !== leavingView;\n if (requiresTransition && ti.opts && leavingView) {\n const isBackDirection = ti.opts.direction === 'back';\n /**\n * If heading back, use the entering page's animation\n * unless otherwise specified by the developer.\n */\n if (isBackDirection) {\n ti.opts.animationBuilder = ti.opts.animationBuilder || (enteringView === null || enteringView === void 0 ? void 0 : enteringView.animationBuilder);\n }\n leavingView.animationBuilder = ti.opts.animationBuilder;\n }\n let result;\n if (requiresTransition) {\n result = await this.transition(enteringView, leavingView, ti);\n }\n else {\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 result = {\n hasCompleted: true,\n requiresTransition: false,\n };\n }\n this.success(result, ti);\n this.ionNavDidChange.emit();\n }\n catch (rejectReason) {\n this.failed(rejectReason, ti);\n }\n this.isTransitioning = false;\n this.nextTrns();\n }\n prepareTI(ti) {\n var _a, _b;\n var _c;\n const viewsLength = this.views.length;\n (_a = ti.opts) !== null && _a !== void 0 ? _a : (ti.opts = {});\n (_b = (_c = ti.opts).delegate) !== null && _b !== void 0 ? _b : (_c.delegate = this.delegate);\n if (ti.removeView !== undefined) {\n assert(ti.removeStart !== undefined, 'removeView needs removeStart');\n assert(ti.removeCount !== undefined, 'removeView needs removeCount');\n const 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 = 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 const insertViews = ti.insertViews;\n if (!insertViews) {\n return;\n }\n assert(insertViews.length > 0, 'length can not be zero');\n const 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 (const view of viewControllers) {\n view.delegate = ti.opts.delegate;\n const 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 /**\n * Returns the view that will be entered considering the transition instructions.\n *\n * @param ti The instructions.\n * @param leavingView The view being left or undefined if none.\n *\n * @returns The view that will be entered, undefined if none.\n */\n getEnteringView(ti, leavingView) {\n // The last inserted view will be entered when view are inserted.\n const insertViews = ti.insertViews;\n if (insertViews !== undefined) {\n return insertViews[insertViews.length - 1];\n }\n // When views are deleted, we will enter the last view that is not removed and not the view being left.\n const removeStart = ti.removeStart;\n if (removeStart !== undefined) {\n const views = this.views;\n const removeEnd = removeStart + ti.removeCount;\n for (let i = views.length - 1; i >= 0; i--) {\n const view = views[i];\n if ((i < removeStart || i >= removeEnd) && view !== leavingView) {\n return view;\n }\n }\n }\n return undefined;\n }\n /**\n * Adds and Removes the views from the navigation stack.\n *\n * @param enteringView The view being entered.\n * @param leavingView The view being left.\n * @param ti The instructions.\n */\n postViewInit(enteringView, leavingView, ti) {\n var _a, _b, _c;\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 // Compute the views to remove.\n const opts = ti.opts;\n const { insertViews, removeStart, removeCount } = ti;\n /** Records the view to destroy */\n let 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 (let i = removeStart; i < removeStart + removeCount; i++) {\n const view = this.views[i];\n if (view !== undefined && view !== enteringView && view !== leavingView) {\n destroyQueue.push(view);\n }\n }\n // default the direction to \"back\"\n (_a = opts.direction) !== null && _a !== void 0 ? _a : (opts.direction = 'back');\n }\n const finalNumViews = this.views.length + ((_b = insertViews === null || insertViews === void 0 ? void 0 : insertViews.length) !== null && _b !== void 0 ? _b : 0) - (removeCount !== null && removeCount !== void 0 ? removeCount : 0);\n assert(finalNumViews >= 0, 'final balance can not be negative');\n if (finalNumViews === 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 // Insert the new views in the stack.\n if (insertViews) {\n // add the views to the\n let insertIndex = ti.insertStart;\n for (const view of insertViews) {\n this.insertViewAt(view, insertIndex);\n insertIndex++;\n }\n if (ti.enteringRequiresTransition) {\n // default to forward if not already set\n (_c = opts.direction) !== null && _c !== void 0 ? _c : (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 (const view of destroyQueue) {\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 (const view of destroyQueue) {\n this.destroyView(view);\n }\n }\n }\n async transition(enteringView, leavingView, ti) {\n // we should animate (duration > 0) if the pushed page is not the first one (startup)\n // or if it is a portal (modal, actionsheet, etc.)\n const opts = ti.opts;\n const progressCallback = opts.progressAnimation\n ? (ani) => {\n /**\n * Because this progress callback is called asynchronously\n * it is possible for the gesture to start and end before\n * the animation is ever set. In that scenario, we should\n * immediately call progressEnd so that the transition promise\n * resolves and the gesture does not get locked up.\n */\n if (ani !== undefined && !this.gestureOrAnimationInProgress) {\n this.gestureOrAnimationInProgress = true;\n ani.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n }, { oneTimeCallback: true });\n /**\n * Playing animation to beginning\n * with a duration of 0 prevents\n * any flickering when the animation\n * is later cleaned up.\n */\n ani.progressEnd(0, 0, 0);\n }\n else {\n this.sbAni = ani;\n }\n }\n : undefined;\n const mode = getIonMode(this);\n const enteringEl = enteringView.element;\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n const leavingEl = leavingView && leavingView.element;\n const animationOpts = Object.assign(Object.assign({ mode, showGoBack: this.canGoBackSync(enteringView), baseEl: this.el, progressCallback, animated: this.animated && config.getBoolean('animated', true), enteringEl,\n leavingEl }, opts), { animationBuilder: opts.animationBuilder || this.animation || config.get('navAnimation') });\n const { hasCompleted } = await transition(animationOpts);\n return this.transitionFinish(hasCompleted, enteringView, leavingView, opts);\n }\n transitionFinish(hasCompleted, enteringView, leavingView, opts) {\n /**\n * If the transition did not complete, the leavingView will still be the active\n * view on the stack. Otherwise unmount all the views after the enteringView.\n */\n const activeView = hasCompleted ? enteringView : leavingView;\n if (activeView) {\n this.unmountInactiveViews(activeView);\n }\n return {\n hasCompleted,\n requiresTransition: true,\n enteringView,\n leavingView,\n direction: opts.direction,\n };\n }\n /**\n * Inserts a view at the specified index.\n *\n * When the view already is in the stack it will be moved to the new position.\n *\n * @param view The view to insert.\n * @param index The index where to insert the view.\n */\n insertViewAt(view, index) {\n const views = this.views;\n const existingIndex = views.indexOf(view);\n if (existingIndex > -1) {\n assert(view.nav === this, 'view is not part of the nav');\n // The view already in the stack, removes it.\n views.splice(existingIndex, 1);\n // and add it back at the requested index.\n views.splice(index, 0, view);\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 views.splice(index, 0, view);\n }\n }\n /**\n * Removes a view from the stack.\n *\n * @param view The view to remove.\n */\n removeView(view) {\n assert(view.state === VIEW_STATE_ATTACHED || view.state === VIEW_STATE_DESTROYED, 'view state should be loaded or destroyed');\n const views = this.views;\n const 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 destroyView(view) {\n view._destroy();\n this.removeView(view);\n }\n /**\n * Unmounts all inactive views after the specified active view.\n *\n * DOM WRITE\n *\n * @param activeView The view that is actively visible in the stack. Used to calculate which views to unmount.\n */\n unmountInactiveViews(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 const views = this.views;\n const activeViewIndex = views.indexOf(activeView);\n for (let i = views.length - 1; i >= 0; i--) {\n const view = views[i];\n /**\n * When inserting multiple views via insertPages\n * the last page will be transitioned to, but the\n * others will not be. As a result, a DOM element\n * will only be created for the last page inserted.\n * As a result, it is possible to have views in the\n * stack that do not have `view.element` yet.\n */\n const element = view.element;\n if (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 }\n canStart() {\n return (!this.gestureOrAnimationInProgress &&\n !!this.swipeGesture &&\n !this.isTransitioning &&\n this.transInstr.length === 0 &&\n this.canGoBackSync());\n }\n onStart() {\n this.gestureOrAnimationInProgress = true;\n this.pop({ direction: 'back', progressAnimation: true });\n }\n onMove(stepValue) {\n if (this.sbAni) {\n this.sbAni.progressStep(stepValue);\n }\n }\n onEnd(shouldComplete, stepValue, dur) {\n if (this.sbAni) {\n this.sbAni.onFinish(() => {\n this.gestureOrAnimationInProgress = false;\n }, { oneTimeCallback: true });\n // Account for rounding errors in JS\n let 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([0, 0], [1, 0], [0.68, 0.28], [1, 1], stepValue)[0];\n }\n else {\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], stepValue)[0];\n }\n this.sbAni.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);\n }\n else {\n this.gestureOrAnimationInProgress = false;\n }\n }\n render() {\n return h(\"slot\", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });\n }\n get el() { return this; }\n static get watchers() { return {\n \"swipeGesture\": [\"swipeGestureChanged\"],\n \"root\": [\"rootChanged\"]\n }; }\n static get style() { return IonNavStyle0; }\n}, [1, \"ion-nav\", {\n \"delegate\": [16],\n \"swipeGesture\": [1028, \"swipe-gesture\"],\n \"animated\": [4],\n \"animation\": [16],\n \"rootParams\": [16],\n \"root\": [1],\n \"push\": [64],\n \"insert\": [64],\n \"insertPages\": [64],\n \"pop\": [64],\n \"popTo\": [64],\n \"popToRoot\": [64],\n \"removeIndex\": [64],\n \"setRoot\": [64],\n \"setPages\": [64],\n \"setRouteId\": [64],\n \"getRouteId\": [64],\n \"getActive\": [64],\n \"getByIndex\": [64],\n \"canGoBack\": [64],\n \"getPrevious\": [64],\n \"getLength\": [64]\n }, undefined, {\n \"swipeGesture\": [\"swipeGestureChanged\"],\n \"root\": [\"rootChanged\"]\n }]);\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-nav\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-nav\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Nav);\n }\n break;\n } });\n}\n\nconst IonNav = Nav;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonNav, defineCustomElement };\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}