wevu 6.18.5 → 6.18.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,8 +4,8 @@ import { A as removeMutationRecorder, F as getCurrentScope, I as onScopeDispose,
4
4
  import { i as touchReactive, r as prelinkReactiveTree, t as computed } from "./computed-BxRsUJgi.mjs";
5
5
  import { S as shallowReadonly, b as isReadonly, c as getCurrentSetupContext, d as setCurrentSetupContext, n as callHookList, r as callHookReturn, s as getCurrentInstance, u as setCurrentInstance, x as readonly, y as isProxy } from "./base-CYkvI7w8.mjs";
6
6
  import { n as toRefs, t as toRef } from "./toRefs-D06VmFK2.mjs";
7
- import { $ as onShow, B as onLoad, F as onAttached, G as onPullDownRefresh, H as onMoved, I as onDetached, J as onResize, K as onReachBottom, L as onError, N as setGlobalProvidedValue, P as onAddToFavorites, Q as onShareTimeline, R as onHide, U as onPageNotFound, V as onMemoryWarning, W as onPageScroll, X as onSaveExitState, Y as onRouteDone, Z as onShareAppMessage, _ as hasInjectionContext, b as provide, et as onTabItemTap, n as useNativeRouter, nt as onUnhandledRejection, q as onReady, rt as onUnload, t as useNativePageRouter, tt as onThemeChange, v as inject, x as provideGlobal, y as injectGlobal, z as onLaunch } from "./router-BD-ovqV2.mjs";
8
- import { $ as version, A as registerPageLayoutBridge, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, F as unregisterRuntimeLayoutHosts, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, P as unregisterPageLayoutBridge, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, et as callUpdateHooks, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, j as registerRuntimeLayoutHosts, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-DvxMB5FK.mjs";
7
+ import { $ as onShareTimeline, B as onLaunch, F as onAddToFavorites, G as onPageScroll, H as onMemoryWarning, I as onAttached, J as onReady, K as onPullDownRefresh, L as onDetached, P as setGlobalProvidedValue, Q as onShareAppMessage, R as onError, U as onMoved, V as onLoad, W as onPageNotFound, X as onRouteDone, Y as onResize, Z as onSaveExitState, _ as injectGlobal, et as onShow, g as inject, h as hasInjectionContext, it as onUnload, n as useNativeRouter, nt as onThemeChange, q as onReachBottom, rt as onUnhandledRejection, t as useNativePageRouter, tt as onTabItemTap, v as provide, y as provideGlobal, z as onHide } from "./router-D0JQfgyN.mjs";
8
+ import { $ as version, A as registerPageLayoutBridge, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, F as unregisterRuntimeLayoutHosts, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, P as unregisterPageLayoutBridge, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, et as callUpdateHooks, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, j as registerRuntimeLayoutHosts, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-BLnYcEH0.mjs";
9
9
  import { n as normalizeStyle, r as resolvePropValue, t as normalizeClass } from "./template-n_iVr0ey.mjs";
10
10
  import { n as defineStore, r as createStore, t as storeToRefs } from "./store-HNsiQJ4d.mjs";
11
11
 
@@ -1,5 +1,5 @@
1
1
  import { c as getCurrentSetupContext, d as setCurrentSetupContext, n as callHookList, r as callHookReturn, s as getCurrentInstance, u as setCurrentInstance } from "./base-CYkvI7w8.mjs";
2
- import { $ as onShow, B as onLoad, F as onAttached, G as onPullDownRefresh, H as onMoved, I as onDetached, J as onResize, K as onReachBottom, L as onError, N as setGlobalProvidedValue, P as onAddToFavorites, Q as onShareTimeline, R as onHide, U as onPageNotFound, V as onMemoryWarning, W as onPageScroll, X as onSaveExitState, Y as onRouteDone, Z as onShareAppMessage, _ as hasInjectionContext, b as provide, et as onTabItemTap, n as useNativeRouter, nt as onUnhandledRejection, q as onReady, rt as onUnload, t as useNativePageRouter, tt as onThemeChange, v as inject, x as provideGlobal, y as injectGlobal, z as onLaunch } from "./router-BD-ovqV2.mjs";
3
- import { $ as version, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-DvxMB5FK.mjs";
2
+ import { $ as onShareTimeline, B as onLaunch, F as onAddToFavorites, G as onPageScroll, H as onMemoryWarning, I as onAttached, J as onReady, K as onPullDownRefresh, L as onDetached, P as setGlobalProvidedValue, Q as onShareAppMessage, R as onError, U as onMoved, V as onLoad, W as onPageNotFound, X as onRouteDone, Y as onResize, Z as onSaveExitState, _ as injectGlobal, et as onShow, g as inject, h as hasInjectionContext, it as onUnload, n as useNativeRouter, nt as onThemeChange, q as onReachBottom, rt as onUnhandledRejection, t as useNativePageRouter, tt as onTabItemTap, v as provide, y as provideGlobal, z as onHide } from "./router-D0JQfgyN.mjs";
3
+ import { $ as version, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-BLnYcEH0.mjs";
4
4
 
5
5
  export { callHookList, callHookReturn, createApp, createWevuComponent, createWevuScopedSlotComponent, defineAppSetup, defineComponent, getCurrentInstance, getCurrentPageStackSnapshot, getCurrentSetupContext, getNavigationBarMetrics, hasInjectionContext, inject, injectGlobal, isNoSetData, markNoSetData, mergeModels, mountRuntimeInstance, onActivated, onAddToFavorites, onAttached, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onDetached, onError, onErrorCaptured, onHide, onLaunch, onLoad, onMemoryWarning, onMounted, onMoved, onPageNotFound, onPageScroll, onPullDownRefresh, onReachBottom, onReady, onResize, onRouteDone, onSaveExitState, onServerPrefetch, onShareAppMessage, onShareTimeline, onShow, onTabItemTap, onThemeChange, onUnhandledRejection, onUnload, onUnmounted, onUpdated, provide, provideGlobal, registerApp, registerComponent, resetWevuDefaults, resolveLayoutBridge, resolveLayoutHost, resolveRuntimePageLayoutName, runSetupFunction, setCurrentInstance, setCurrentSetupContext, setGlobalProvidedValue, setPageLayout, setRuntimeSetDataVisibility, setWevuDefaults, syncRuntimePageLayoutState, syncRuntimePageLayoutStateFromRuntime, teardownRuntimeInstance, use, useAsyncPullDownRefresh, useAttrs, useBindModel, useBoundingClientRect, useChangeModel, useDisposables, useElementIntersectionObserver, useIntersectionObserver, useLayoutBridge, useLayoutHosts, useModel, useNativeInstance, useNativePageRouter, useNativeRouter, useNavigationBarMetrics, usePageLayout, usePageScrollThrottle, usePageStack, useScrollOffset, useSelectorFields, useSelectorQuery, useSlots, useTemplateRef, useUpdatePerformanceListener, version, waitForLayoutHost };
@@ -289,6 +289,76 @@ function ensurePageShareMenus(options) {
289
289
  } catch (_unused) {}
290
290
  }
291
291
 
292
+ //#endregion
293
+ //#region src/router/routeSync.ts
294
+ const ROUTE_SYNC_NATIVE_METHODS = [
295
+ "switchTab",
296
+ "reLaunch",
297
+ "redirectTo",
298
+ "navigateTo",
299
+ "navigateBack"
300
+ ];
301
+ const routeStateSyncHandlers = /* @__PURE__ */ new Set();
302
+ const patchedNativeRouters = /* @__PURE__ */ new WeakSet();
303
+ function registerRouteStateSyncHandler(handler) {
304
+ routeStateSyncHandlers.add(handler);
305
+ return () => {
306
+ routeStateSyncHandlers.delete(handler);
307
+ };
308
+ }
309
+ function notifyRouteStateSync(payload) {
310
+ for (const handler of routeStateSyncHandlers) try {
311
+ handler(payload);
312
+ } catch (_unused) {}
313
+ }
314
+ function createNativeRouteStateSyncPayload(methodName, option) {
315
+ if (methodName === "navigateBack") return {
316
+ method: methodName,
317
+ source: "native"
318
+ };
319
+ if (option && typeof option === "object") {
320
+ const url = option.url;
321
+ if (typeof url === "string") return {
322
+ method: methodName,
323
+ source: "native",
324
+ url
325
+ };
326
+ }
327
+ return {
328
+ method: methodName,
329
+ source: "native"
330
+ };
331
+ }
332
+ function installRouteStateSyncOnNativeRouter(nativeRouter) {
333
+ if (!nativeRouter || typeof nativeRouter !== "object") return;
334
+ const router = nativeRouter;
335
+ if (patchedNativeRouters.has(router)) return;
336
+ patchedNativeRouters.add(router);
337
+ for (const methodName of ROUTE_SYNC_NATIVE_METHODS) {
338
+ const original = router[methodName];
339
+ if (typeof original !== "function") continue;
340
+ router[methodName] = function routeStateSyncNativeRouterMethod(option, ...args) {
341
+ let synced = false;
342
+ const syncRouteState = () => {
343
+ if (synced) return;
344
+ synced = true;
345
+ notifyRouteStateSync(createNativeRouteStateSyncPayload(methodName, option));
346
+ };
347
+ const nextOption = option && typeof option === "object" ? {
348
+ ...option,
349
+ success: (...successArgs) => {
350
+ syncRouteState();
351
+ const originalSuccess = option.success;
352
+ return typeof originalSuccess === "function" ? originalSuccess(...successArgs) : void 0;
353
+ }
354
+ } : option;
355
+ const result = original.call(this, nextOption, ...args);
356
+ if (result && typeof result.then === "function") result.then(syncRouteState, () => {});
357
+ return result;
358
+ };
359
+ }
360
+ }
361
+
292
362
  //#endregion
293
363
  //#region src/runtime/provide.ts
294
364
  /**
@@ -354,65 +424,6 @@ function injectGlobal(key, defaultValue) {
354
424
  throw new Error(`injectGlobal():未找到对应 key 的 provider:${String(key)}`);
355
425
  }
356
426
 
357
- //#endregion
358
- //#region src/router/routeSync.ts
359
- const ROUTE_SYNC_NATIVE_METHODS = [
360
- "switchTab",
361
- "reLaunch",
362
- "redirectTo",
363
- "navigateTo",
364
- "navigateBack"
365
- ];
366
- const routeStateSyncHandlers = /* @__PURE__ */ new Set();
367
- const patchedNativeRouters = /* @__PURE__ */ new WeakSet();
368
- function registerRouteStateSyncHandler(handler) {
369
- routeStateSyncHandlers.add(handler);
370
- return () => {
371
- routeStateSyncHandlers.delete(handler);
372
- };
373
- }
374
- function notifyRouteStateSync(payload) {
375
- for (const handler of routeStateSyncHandlers) try {
376
- handler(payload);
377
- } catch (_unused) {}
378
- }
379
- function createNativeRouteStateSyncPayload(methodName, option) {
380
- if (methodName === "navigateBack") return;
381
- if (option && typeof option === "object") {
382
- const url = option.url;
383
- if (typeof url === "string") return { url };
384
- }
385
- }
386
- function installRouteStateSyncOnNativeRouter(nativeRouter) {
387
- if (!nativeRouter || typeof nativeRouter !== "object") return;
388
- const router = nativeRouter;
389
- if (patchedNativeRouters.has(router)) return;
390
- patchedNativeRouters.add(router);
391
- for (const methodName of ROUTE_SYNC_NATIVE_METHODS) {
392
- const original = router[methodName];
393
- if (typeof original !== "function") continue;
394
- router[methodName] = function routeStateSyncNativeRouterMethod(option, ...args) {
395
- let synced = false;
396
- const syncRouteState = () => {
397
- if (synced) return;
398
- synced = true;
399
- notifyRouteStateSync(createNativeRouteStateSyncPayload(methodName, option));
400
- };
401
- const nextOption = option && typeof option === "object" ? {
402
- ...option,
403
- success: (...successArgs) => {
404
- syncRouteState();
405
- const originalSuccess = option.success;
406
- return typeof originalSuccess === "function" ? originalSuccess(...successArgs) : void 0;
407
- }
408
- } : option;
409
- const result = original.call(this, nextOption, ...args);
410
- if (result && typeof result.then === "function") result.then(syncRouteState, () => {});
411
- return result;
412
- };
413
- }
414
- }
415
-
416
427
  //#endregion
417
428
  //#region src/routerInternal/path.ts
418
429
  function normalizePathSegments(path) {
@@ -614,11 +625,13 @@ function getCurrentMiniProgramPage(fallbackPage) {
614
625
  const currentPageInstance = getCurrentPageInstance();
615
626
  return hasPageRoute(currentPageInstance) ? currentPageInstance : fallbackPage;
616
627
  }
628
+ function resolvePageRoute(page, queryOverride) {
629
+ var _page$options;
630
+ if (!page) return createRouteLocation("", {});
631
+ return createRouteLocation(typeof page.route === "string" ? page.route : typeof page.__route__ === "string" ? page.__route__ : "", normalizeQuery(queryOverride !== null && queryOverride !== void 0 ? queryOverride : (_page$options = page.options) !== null && _page$options !== void 0 ? _page$options : {}), "", void 0, {});
632
+ }
617
633
  function resolveCurrentRoute(queryOverride, fallbackPage) {
618
- var _currentPage$options;
619
- const currentPage = getCurrentMiniProgramPage(fallbackPage);
620
- if (!currentPage) return createRouteLocation("", {});
621
- return createRouteLocation(typeof currentPage.route === "string" ? currentPage.route : typeof currentPage.__route__ === "string" ? currentPage.__route__ : "", normalizeQuery(queryOverride !== null && queryOverride !== void 0 ? queryOverride : (_currentPage$options = currentPage.options) !== null && _currentPage$options !== void 0 ? _currentPage$options : {}), "", void 0, {});
634
+ return resolvePageRoute(getCurrentMiniProgramPage(fallbackPage), queryOverride);
622
635
  }
623
636
 
624
637
  //#endregion
@@ -681,7 +694,11 @@ function createScopedRuntimeRouter(rawRouter, basePath) {
681
694
  ...option,
682
695
  url: nextUrl,
683
696
  success: (...args) => {
684
- if (typeof nextUrl === "string") notifyRouteStateSync({ url: nextUrl });
697
+ if (typeof nextUrl === "string") notifyRouteStateSync({
698
+ method: methodName,
699
+ source: "native",
700
+ url: nextUrl
701
+ });
685
702
  return typeof originalSuccess === "function" ? originalSuccess(...args) : void 0;
686
703
  }
687
704
  };
@@ -733,5 +750,5 @@ function useNativePageRouter() {
733
750
  }
734
751
 
735
752
  //#endregion
736
- export { onShow as $, attachRuntimeProvideContext as A, onLoad as B, ensureMiniProgramGlobalPatched as C, resolvePageOptions as D, releaseCurrentPageInstance as E, onAttached as F, onPullDownRefresh as G, onMoved as H, onDetached as I, onResize as J, onReachBottom as K, onError as L, setRuntimeAppProvidedValue as M, setGlobalProvidedValue as N, runInPageScrollHook as O, onAddToFavorites as P, onShareTimeline as Q, onHide as R, bindCurrentPageInstance as S, getCurrentPageInstance as T, onPageNotFound as U, onMemoryWarning as V, onPageScroll as W, onSaveExitState as X, onRouteDone as Y, onShareAppMessage as Z, hasInjectionContext as _, resolveCurrentRoute as a, provide as b, normalizeRouteParams as c, createAbsoluteRoutePath as d, onTabItemTap as et, isDynamicRoutePath as f, registerRouteStateSyncHandler as g, notifyRouteStateSync as h, parsePathInput as i, ensureRuntimeAppProvides as j, attachRuntimeLayoutProvideContext as k, parseQuery as l, installRouteStateSyncOnNativeRouter as m, useNativeRouter as n, onUnhandledRejection as nt, normalizeHash as o, resolvePath as p, onReady as q, createRouteLocation as r, onUnload as rt, normalizeQuery as s, useNativePageRouter as t, onThemeChange as tt, stringifyQuery as u, inject as v, ensurePageShareMenus as w, provideGlobal as x, injectGlobal as y, onLaunch as z };
737
- //# sourceMappingURL=router-BD-ovqV2.mjs.map
753
+ export { onShareTimeline as $, attachRuntimeLayoutProvideContext as A, onLaunch as B, bindCurrentPageInstance as C, releaseCurrentPageInstance as D, getCurrentPageInstance as E, onAddToFavorites as F, onPageScroll as G, onMemoryWarning as H, onAttached as I, onReady as J, onPullDownRefresh as K, onDetached as L, ensureRuntimeAppProvides as M, setRuntimeAppProvidedValue as N, resolvePageOptions as O, setGlobalProvidedValue as P, onShareAppMessage as Q, onError as R, registerRouteStateSyncHandler as S, ensurePageShareMenus as T, onMoved as U, onLoad as V, onPageNotFound as W, onRouteDone as X, onResize as Y, onSaveExitState as Z, injectGlobal as _, resolveCurrentRoute as a, installRouteStateSyncOnNativeRouter as b, normalizeQuery as c, stringifyQuery as d, onShow as et, createAbsoluteRoutePath as f, inject as g, hasInjectionContext as h, parsePathInput as i, onUnload as it, attachRuntimeProvideContext as j, runInPageScrollHook as k, normalizeRouteParams as l, resolvePath as m, useNativeRouter as n, onThemeChange as nt, resolvePageRoute as o, isDynamicRoutePath as p, onReachBottom as q, createRouteLocation as r, onUnhandledRejection as rt, normalizeHash as s, useNativePageRouter as t, onTabItemTap as tt, parseQuery as u, provide as v, ensureMiniProgramGlobalPatched as w, notifyRouteStateSync as x, provideGlobal as y, onHide as z };
754
+ //# sourceMappingURL=router-D0JQfgyN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-D0JQfgyN.mjs","names":[],"sources":["../../src/runtime/hooks/register.ts","../../src/runtime/provideStore.ts","../../src/runtime/provideContext.ts","../../src/runtime/register/component/lifecycle/platform.ts","../../src/router/routeSync.ts","../../src/runtime/provide.ts","../../src/routerInternal/path.ts","../../src/routerInternal/query.ts","../../src/routerInternal/location.ts","../../src/runtime/vueCompat/router.ts"],"sourcesContent":["import type {\n MiniProgramAddToFavoritesOption,\n MiniProgramLaunchOptions,\n MiniProgramMemoryWarningResult,\n MiniProgramPageLifetime,\n MiniProgramPageNotFoundOptions,\n MiniProgramPageResizeOption,\n MiniProgramPageScrollOption,\n MiniProgramSaveExitState,\n MiniProgramShareAppMessageOption,\n MiniProgramTabItemTapOption,\n MiniProgramThemeChangeResult,\n MiniProgramUnhandledRejectionResult,\n} from '../types'\nimport { assertInSetup, ensurePageHookOnInstance, ensurePageShareMenusOnSetup, ensureSinglePageHookOnInstance, pushHook } from './base'\n\nfunction registerHook(name: string, handler: (...args: any[]) => any, options?: { single?: boolean }) {\n pushHook(assertInSetup(name), name, handler as any, options as any)\n}\n\n// 生命周期注册辅助方法:必须在 setup() 同步执行阶段调用\nexport function onLaunch(handler: (options: MiniProgramLaunchOptions) => void) {\n registerHook('onLaunch', handler as any)\n}\n\nexport function onPageNotFound(handler: (options: MiniProgramPageNotFoundOptions) => void) {\n registerHook('onPageNotFound', handler as any)\n}\n\nexport function onUnhandledRejection(handler: (options: MiniProgramUnhandledRejectionResult) => void) {\n registerHook('onUnhandledRejection', handler as any)\n}\n\nexport function onThemeChange(handler: (options: MiniProgramThemeChangeResult) => void) {\n registerHook('onThemeChange', handler as any)\n}\n\nexport function onMemoryWarning(handler: (options: MiniProgramMemoryWarningResult) => void) {\n registerHook('onMemoryWarning', handler as any)\n}\n\nexport function onShow(handler: () => void): void\nexport function onShow(handler: (options: MiniProgramLaunchOptions) => void): void\nexport function onShow(handler: ((options?: any) => void)) {\n registerHook('onShow', handler as any)\n}\n\nexport function onLoad(handler: MiniProgramPageLifetime['onLoad']) {\n registerHook('onLoad', handler as any)\n}\n\nexport function onHide(handler: () => void) {\n registerHook('onHide', handler as any)\n}\n\nexport function onUnload(handler: () => void) {\n registerHook('onUnload', handler as any)\n}\n\nexport function onReady(handler: () => void) {\n registerHook('onReady', handler as any)\n}\n\nexport function onPullDownRefresh(handler: MiniProgramPageLifetime['onPullDownRefresh']) {\n registerHook('onPullDownRefresh', handler as any)\n}\n\nexport function onReachBottom(handler: MiniProgramPageLifetime['onReachBottom']) {\n registerHook('onReachBottom', handler as any)\n}\n\nexport function onPageScroll(handler: (opt: MiniProgramPageScrollOption) => void) {\n const instance = assertInSetup('onPageScroll')\n pushHook(instance, 'onPageScroll', handler as any)\n ensurePageHookOnInstance(instance, 'onPageScroll')\n}\n\nexport function onRouteDone(handler: MiniProgramPageLifetime['onRouteDone'] | ((opt?: unknown) => void)) {\n registerHook('onRouteDone', handler as any)\n}\n\nexport function onTabItemTap(handler: (opt: MiniProgramTabItemTapOption) => void) {\n registerHook('onTabItemTap', handler as any)\n}\n\nexport function onResize(handler: (opt: MiniProgramPageResizeOption) => void) {\n registerHook('onResize', handler as any)\n}\n\nexport function onMoved(handler: () => void) {\n registerHook('onMoved', handler as any)\n}\n\nexport function onAttached(handler: () => void) {\n registerHook('onAttached', handler as any)\n}\n\nexport function onDetached(handler: () => void) {\n registerHook('onDetached', handler as any)\n}\n\nexport function onError(handler: (err: any) => void) {\n registerHook('onError', handler as any)\n}\n\nexport function onSaveExitState(handler: () => MiniProgramSaveExitState) {\n registerHook('onSaveExitState', handler as any, { single: true })\n}\n\nexport function onShareAppMessage(handler: (options: MiniProgramShareAppMessageOption) => Record<string, any> | void) {\n const instance = assertInSetup('onShareAppMessage')\n pushHook(instance, 'onShareAppMessage', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onShareAppMessage')\n ensurePageShareMenusOnSetup(instance)\n}\n\nexport function onShareTimeline(handler: MiniProgramPageLifetime['onShareTimeline']) {\n const instance = assertInSetup('onShareTimeline')\n pushHook(instance, 'onShareTimeline', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onShareTimeline')\n ensurePageShareMenusOnSetup(instance)\n}\n\nexport function onAddToFavorites(handler: (options: MiniProgramAddToFavoritesOption) => Record<string, any> | void) {\n const instance = assertInSetup('onAddToFavorites')\n pushHook(instance, 'onAddToFavorites', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onAddToFavorites')\n}\n","const wevuGlobalProvideStore = new Map<any, any>()\n\n/**\n * 写入全局 provide 存储,供运行时内部与兼容层复用。\n */\nexport function setGlobalProvidedValue<T>(key: any, value: T): void {\n wevuGlobalProvideStore.set(key, value)\n}\n\nexport function hasGlobalProvidedValue(key: any): boolean {\n return wevuGlobalProvideStore.has(key)\n}\n\nexport function getGlobalProvidedValue<T>(key: any): T {\n return wevuGlobalProvideStore.get(key) as T\n}\n","import type { InternalRuntimeState, RuntimeApp } from './types'\nimport {\n WEVU_APP_PROVIDES_KEY,\n WEVU_IS_APP_INSTANCE_KEY,\n WEVU_PARENT_INSTANCE_KEY,\n WEVU_PROVIDES_KEY,\n WEVU_RUNTIME_APP_KEY,\n} from '@weapp-core/constants'\nimport { setGlobalProvidedValue } from './provideStore'\n\nexport function isRuntimeAppInstance(instance: unknown): boolean {\n return Boolean(\n instance\n && typeof instance === 'object'\n && (instance as { [WEVU_IS_APP_INSTANCE_KEY]?: boolean })[WEVU_IS_APP_INSTANCE_KEY] === true,\n )\n}\n\nfunction createProvides(parent?: Record<PropertyKey, any>) {\n return Object.create(parent ?? null) as Record<PropertyKey, any>\n}\n\nfunction getRuntimeAppProvides(runtimeApp: RuntimeApp<any, any, any> | undefined): Record<PropertyKey, any> {\n if (!runtimeApp) {\n return createProvides()\n }\n const existing = runtimeApp[WEVU_APP_PROVIDES_KEY]\n if (existing && typeof existing === 'object') {\n return existing\n }\n const provides = createProvides()\n try {\n Object.defineProperty(runtimeApp, WEVU_APP_PROVIDES_KEY, {\n value: provides,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any)[WEVU_APP_PROVIDES_KEY] = provides\n }\n return provides\n}\n\nexport function attachInstanceProvides(\n instance: InternalRuntimeState,\n provides: Record<PropertyKey, any>,\n): void {\n try {\n Object.defineProperty(instance, WEVU_PROVIDES_KEY, {\n value: provides,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(instance as any)[WEVU_PROVIDES_KEY] = provides\n }\n}\n\nexport function getInstanceProvides(instance: InternalRuntimeState): Record<PropertyKey, any> {\n const existing = instance[WEVU_PROVIDES_KEY]\n if (existing && typeof existing === 'object') {\n return existing\n }\n\n const runtimeApp = instance[WEVU_RUNTIME_APP_KEY]\n const parentProvides = instance[WEVU_PARENT_INSTANCE_KEY]?.[WEVU_PROVIDES_KEY]\n ?? getRuntimeAppProvides(runtimeApp)\n const provides = isRuntimeAppInstance(instance)\n ? getRuntimeAppProvides(runtimeApp)\n : createProvides(parentProvides)\n attachInstanceProvides(instance, provides)\n return provides\n}\n\nexport function ensureRuntimeAppProvides(runtimeApp: RuntimeApp<any, any, any>): Record<PropertyKey, any> {\n return getRuntimeAppProvides(runtimeApp)\n}\n\nexport function setRuntimeAppProvidedValue<T>(runtimeApp: RuntimeApp<any, any, any>, key: any, value: T): void {\n getRuntimeAppProvides(runtimeApp)[key as PropertyKey] = value\n setGlobalProvidedValue(key, value)\n}\n\nexport function attachRuntimeProvideContext(\n instance: InternalRuntimeState,\n runtimeApp: RuntimeApp<any, any, any>,\n parentInstance?: InternalRuntimeState,\n): void {\n const appProvides = getRuntimeAppProvides(runtimeApp)\n const parentProvides = parentInstance?.[WEVU_PROVIDES_KEY] ?? appProvides\n const provides = isRuntimeAppInstance(instance)\n ? appProvides\n : createProvides(parentProvides)\n\n if (parentInstance) {\n try {\n Object.defineProperty(instance, WEVU_PARENT_INSTANCE_KEY, {\n value: parentInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(instance as any)[WEVU_PARENT_INSTANCE_KEY] = parentInstance\n }\n }\n\n attachInstanceProvides(instance, provides)\n}\n\nfunction isPrototypeInChain(target: Record<PropertyKey, any>, candidate: Record<PropertyKey, any>) {\n let current = Object.getPrototypeOf(target)\n while (current) {\n if (current === candidate) {\n return true\n }\n current = Object.getPrototypeOf(current)\n }\n return false\n}\n\nexport function attachRuntimeLayoutProvideContext(\n layoutInstance: InternalRuntimeState,\n pageInstance: InternalRuntimeState,\n): void {\n const layoutProvides = getInstanceProvides(layoutInstance)\n const pageProvides = getInstanceProvides(pageInstance)\n if (\n layoutProvides === pageProvides\n || isPrototypeInChain(layoutProvides, pageProvides)\n || isPrototypeInChain(pageProvides, layoutProvides)\n ) {\n return\n }\n\n Object.setPrototypeOf(pageProvides, layoutProvides)\n\n try {\n Object.defineProperty(pageInstance, WEVU_PARENT_INSTANCE_KEY, {\n value: layoutInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(pageInstance as any)[WEVU_PARENT_INSTANCE_KEY] = layoutInstance\n }\n}\n","import type { InternalRuntimeState } from '../../../types'\nimport { WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY } from '@weapp-core/constants'\nimport { callHookList } from '../../../hooks'\nimport {\n getCurrentMiniProgramPages,\n getCurrentMiniProgramRuntimeCapabilities,\n getMiniProgramGlobalObject,\n supportsCurrentMiniProgramRuntimeCapability,\n} from '../../../platform'\n\nlet miniProgramGlobalPatched = false\nlet currentPageInstance: InternalRuntimeState | undefined\ntype ShareMenuName = 'shareAppMessage' | 'shareTimeline'\nexport function getCurrentPageInstance() {\n return currentPageInstance\n}\n\nexport function bindCurrentPageInstance(target: InternalRuntimeState) {\n currentPageInstance = target\n}\n\nexport function releaseCurrentPageInstance(target: InternalRuntimeState) {\n if (currentPageInstance === target) {\n currentPageInstance = undefined\n }\n}\n\nexport function runInPageScrollHook<T>(\n target: InternalRuntimeState,\n task: () => T,\n): T {\n const currentDepth = Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0)\n ;(target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] = currentDepth + 1\n try {\n return task()\n }\n finally {\n const nextDepth = Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 1) - 1\n if (nextDepth <= 0) {\n delete (target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY]\n }\n else {\n ;(target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] = nextDepth\n }\n }\n}\n\nexport function resolvePageOptions(target: InternalRuntimeState) {\n const direct = (target as any).options\n if (direct && typeof direct === 'object') {\n return direct\n }\n const pages = getCurrentMiniProgramPages()\n const page = pages[pages.length - 1]\n const options = page && typeof page === 'object' ? (page as any).options : undefined\n if (options && typeof options === 'object') {\n return options\n }\n return {}\n}\n\nexport function ensureMiniProgramGlobalPatched() {\n if (miniProgramGlobalPatched) {\n return\n }\n miniProgramGlobalPatched = true\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal !== 'object') {\n return\n }\n if (supportsCurrentMiniProgramRuntimeCapability('pullDownRefreshApi')) {\n const rawStartPullDownRefresh = miniProgramGlobal.startPullDownRefresh as ((...args: any[]) => any) | undefined\n if (typeof rawStartPullDownRefresh === 'function') {\n miniProgramGlobal.startPullDownRefresh = function startPullDownRefreshPatched(...args: any[]) {\n const result = rawStartPullDownRefresh.apply(this, args)\n if (currentPageInstance) {\n callHookList(currentPageInstance, 'onPullDownRefresh', [])\n }\n return result\n }\n }\n }\n if (supportsCurrentMiniProgramRuntimeCapability('pageScrollApi')) {\n const rawPageScrollTo = miniProgramGlobal.pageScrollTo as ((...args: any[]) => any) | undefined\n if (typeof rawPageScrollTo === 'function') {\n miniProgramGlobal.pageScrollTo = function pageScrollToPatched(options: any, ...rest: any[]) {\n const result = rawPageScrollTo.apply(this, [options, ...rest])\n if (currentPageInstance) {\n const pageInstance = currentPageInstance\n runInPageScrollHook(pageInstance, () => {\n callHookList(pageInstance, 'onPageScroll', [options ?? {}])\n })\n }\n return result\n }\n }\n }\n}\n\nexport function ensurePageShareMenus(options: {\n enableOnShareAppMessage: boolean\n enableOnShareTimeline: boolean\n}) {\n const { enableOnShareAppMessage, enableOnShareTimeline } = options\n if (!enableOnShareAppMessage && !enableOnShareTimeline) {\n return\n }\n\n if (!supportsCurrentMiniProgramRuntimeCapability('pageShareMenu')) {\n return\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal.showShareMenu !== 'function') {\n return\n }\n\n const runtimeCapabilities = getCurrentMiniProgramRuntimeCapabilities()\n const shouldShowShareAppMessage = runtimeCapabilities.shareTimelineRequiresShareAppMessage\n ? (enableOnShareAppMessage || enableOnShareTimeline)\n : enableOnShareAppMessage\n\n if (!shouldShowShareAppMessage && !enableOnShareTimeline) {\n return\n }\n\n const menus: ShareMenuName[] = []\n if (shouldShowShareAppMessage) {\n menus.push('shareAppMessage')\n }\n if (enableOnShareTimeline) {\n menus.push('shareTimeline')\n }\n\n const payloads = [\n { withShareTicket: true, menus },\n { menus },\n enableOnShareTimeline ? { withShareTicket: true } : undefined,\n enableOnShareTimeline ? {} : undefined,\n undefined,\n ]\n\n for (const payload of payloads) {\n try {\n if (payload === undefined) {\n miniProgramGlobal.showShareMenu()\n }\n else {\n miniProgramGlobal.showShareMenu(payload as any)\n }\n break\n }\n catch {\n // 继续尝试更保守的 payload,兼容不同宿主的 showShareMenu 参数形态。\n }\n }\n}\n","import type { MiniProgramPageLike } from '../routerInternal/shared'\nimport type { RouteLocationNormalizedLoaded } from './types'\n\nexport interface RouteStateSyncPayload {\n page?: MiniProgramPageLike\n route?: RouteLocationNormalizedLoaded\n url?: string\n source?: 'native' | 'page' | 'router'\n method?: NativeRouterMethodName\n}\n\ntype RouteStateSyncHandler = (payload?: RouteStateSyncPayload) => void\ntype NativeRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\n\nconst ROUTE_SYNC_NATIVE_METHODS: readonly NativeRouterMethodName[] = ['switchTab', 'reLaunch', 'redirectTo', 'navigateTo', 'navigateBack']\nconst routeStateSyncHandlers = new Set<RouteStateSyncHandler>()\nconst patchedNativeRouters = new WeakSet<Record<string, any>>()\n\nexport function registerRouteStateSyncHandler(handler: RouteStateSyncHandler): () => void {\n routeStateSyncHandlers.add(handler)\n return () => {\n routeStateSyncHandlers.delete(handler)\n }\n}\n\nexport function notifyRouteStateSync(payload?: RouteStateSyncPayload) {\n for (const handler of routeStateSyncHandlers) {\n try {\n handler(payload)\n }\n catch {\n // 忽略单个 route 订阅者异常,避免阻塞原生导航成功回调。\n }\n }\n}\n\nfunction createNativeRouteStateSyncPayload(methodName: NativeRouterMethodName, option: unknown): RouteStateSyncPayload | undefined {\n if (methodName === 'navigateBack') {\n return {\n method: methodName,\n source: 'native',\n }\n }\n if (option && typeof option === 'object') {\n const url = (option as Record<string, unknown>).url\n if (typeof url === 'string') {\n return {\n method: methodName,\n source: 'native',\n url,\n }\n }\n }\n return {\n method: methodName,\n source: 'native',\n }\n}\n\nexport function installRouteStateSyncOnNativeRouter(nativeRouter: unknown) {\n if (!nativeRouter || typeof nativeRouter !== 'object') {\n return\n }\n const router = nativeRouter as Record<string, any>\n if (patchedNativeRouters.has(router)) {\n return\n }\n patchedNativeRouters.add(router)\n\n for (const methodName of ROUTE_SYNC_NATIVE_METHODS) {\n const original = router[methodName]\n if (typeof original !== 'function') {\n continue\n }\n\n router[methodName] = function routeStateSyncNativeRouterMethod(this: unknown, option?: unknown, ...args: any[]) {\n let synced = false\n const syncRouteState = () => {\n if (synced) {\n return\n }\n synced = true\n notifyRouteStateSync(createNativeRouteStateSyncPayload(methodName, option))\n }\n\n const nextOption = option && typeof option === 'object'\n ? {\n ...(option as Record<string, any>),\n success: (...successArgs: any[]) => {\n syncRouteState()\n const originalSuccess = (option as Record<string, any>).success\n return typeof originalSuccess === 'function'\n ? originalSuccess(...successArgs)\n : undefined\n },\n }\n : option\n\n const result = original.call(this, nextOption, ...args)\n if (result && typeof (result as PromiseLike<unknown>).then === 'function') {\n ;(result as PromiseLike<unknown>).then(syncRouteState, () => {})\n }\n return result\n }\n }\n}\n","import { getCurrentInstance } from './hooks'\nimport {\n getInstanceProvides,\n isRuntimeAppInstance,\n} from './provideContext'\nimport {\n getGlobalProvidedValue,\n hasGlobalProvidedValue,\n setGlobalProvidedValue,\n} from './provideStore'\n\n// ============================================================================\n// 分层的 provide/inject 机制\n// 用于在组件树内维护依赖注入关系,支持组件与全局两种作用域\n// ============================================================================\n\nexport { setGlobalProvidedValue } from './provideStore'\n\n/**\n * 判断当前是否存在可用的注入上下文。\n *\n * wevu 的依赖注入上下文来自同步 `setup()` 阶段的当前实例。\n */\nexport function hasInjectionContext(): boolean {\n return Boolean(getCurrentInstance())\n}\n\n/**\n * 在组件上下文中向后代注入值(与 Vue 3 行为兼容),若没有当前实例则回落到全局存储。\n *\n * @param key 注入键,可为字符串、Symbol 或对象\n * @param value 提供的值\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * provide(TOKEN_KEY, { data: 'value' })\n * }\n * })\n * ```\n */\nexport function provide<T>(key: any, value: T): void {\n const instance = getCurrentInstance()\n\n if (instance) {\n getInstanceProvides(instance)[key as PropertyKey] = value\n if (isRuntimeAppInstance(instance)) {\n setGlobalProvidedValue(key, value)\n }\n }\n else {\n // 全局模式:无组件实例时,兼容旧代码和纯函数场景\n setGlobalProvidedValue(key, value)\n }\n}\n\n/**\n * 从祖先组件(或全局存储)读取提供的值。\n *\n * @param key 注入键,需与 provide 使用的键保持一致\n * @param defaultValue 未找到提供者时的默认值\n * @returns 匹配到的值或默认值\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * const data = inject(TOKEN_KEY)\n * const value = inject('key', 'default')\n * }\n * })\n * ```\n */\nexport function inject<T>(key: any, defaultValue: T): T\nexport function inject<T>(key: any): T | undefined\nexport function inject<T>(key: any, defaultValue?: T): T | undefined {\n const instance = getCurrentInstance()\n\n // 优先尝试基于实例的注入,找不到再回退全局\n if (instance) {\n const provides = getInstanceProvides(instance)\n if (key in provides) {\n return provides[key as PropertyKey] as T\n }\n }\n\n // 兼容性回退:尝试读取全局存储\n if (hasGlobalProvidedValue(key)) {\n return getGlobalProvidedValue(key)\n }\n\n // 使用默认值兜底\n if (arguments.length >= 2) {\n return defaultValue as T\n }\n\n const warn = globalThis.console?.warn\n if (typeof warn === 'function') {\n warn(`wevu.inject:未找到对应 key 的值:${String(key)}`)\n }\n\n return undefined\n}\n\n// ============================================================================\n// 显式的全局 provide/inject API\n// ============================================================================\n\n/**\n * 全局注入值,适用于历史兼容场景。\n *\n * @deprecated 已弃用,仅用于兼容/过渡。推荐优先使用 `provide()`,\n * 在无实例上下文时 `provide()` 会自动回落到全局存储。\n */\nexport function provideGlobal<T>(key: any, value: T): void {\n setGlobalProvidedValue(key, value)\n}\n\n/**\n * 从全局存储读取值,适用于历史兼容场景。\n *\n * @deprecated 已弃用,仅用于兼容/过渡。推荐优先使用 `inject()`,\n * 在无实例上下文时 `inject()` 会自动从全局存储读取。\n */\nexport function injectGlobal<T>(key: any, defaultValue?: T): T {\n if (hasGlobalProvidedValue(key)) {\n return getGlobalProvidedValue(key)\n }\n if (arguments.length >= 2) {\n return defaultValue as T\n }\n throw new Error(`injectGlobal():未找到对应 key 的 provider:${String(key)}`)\n}\n","function normalizePathSegments(path: string): string[] {\n const segments: string[] = []\n for (const segment of path.split('/')) {\n if (!segment || segment === '.') {\n continue\n }\n if (segment === '..') {\n if (segments.length > 0) {\n segments.pop()\n }\n continue\n }\n segments.push(segment)\n }\n return segments\n}\n\nexport function resolvePath(path: string, currentPath: string): string {\n if (!path) {\n return normalizePathSegments(currentPath).join('/')\n }\n\n if (path.startsWith('/')) {\n return normalizePathSegments(path).join('/')\n }\n\n if (path.startsWith('./') || path.startsWith('../')) {\n const baseSegments = normalizePathSegments(currentPath)\n if (baseSegments.length > 0) {\n baseSegments.pop()\n }\n\n for (const segment of path.split('/')) {\n if (!segment || segment === '.') {\n continue\n }\n if (segment === '..') {\n if (baseSegments.length > 0) {\n baseSegments.pop()\n }\n continue\n }\n baseSegments.push(segment)\n }\n\n return baseSegments.join('/')\n }\n\n return normalizePathSegments(path).join('/')\n}\n\nexport function createAbsoluteRoutePath(path: string): string {\n return path ? `/${path}` : '/'\n}\n\nconst DYNAMIC_ROUTE_RE = /(?:^|\\/):/\n\nexport function isDynamicRoutePath(path: string): boolean {\n return DYNAMIC_ROUTE_RE.test(path)\n}\n","import type {\n LocationQuery,\n LocationQueryRaw,\n LocationQueryValue,\n LocationQueryValueRaw,\n RouteParams,\n RouteParamsRaw,\n RouteParamValue,\n RouteParamValueRaw,\n} from '../router'\n\nconst PLUS_RE = /\\+/g\n\nfunction decodeQuerySegment(value: string): string {\n return decodeURIComponent(value.replace(PLUS_RE, ' '))\n}\n\nfunction encodeQuerySegment(value: string): string {\n return encodeURIComponent(value)\n}\n\nfunction pushQueryValue(target: LocationQuery, key: string, value: LocationQueryValue) {\n const previous = target[key]\n if (previous === undefined) {\n target[key] = value\n return\n }\n if (Array.isArray(previous)) {\n previous.push(value)\n return\n }\n target[key] = [previous, value]\n}\n\nfunction pushRouteParamValue(target: RouteParams, key: string, value: RouteParamValue) {\n const previous = target[key]\n if (previous === undefined) {\n target[key] = value\n return\n }\n if (Array.isArray(previous)) {\n previous.push(value)\n return\n }\n target[key] = [previous, value]\n}\n\nfunction normalizeQueryValue(value: LocationQueryValueRaw): LocationQueryValue | undefined {\n if (value === undefined) {\n return undefined\n }\n if (value === null) {\n return null\n }\n return String(value)\n}\n\nexport function normalizeQuery(query: LocationQueryRaw | LocationQuery): LocationQuery {\n const normalized: LocationQuery = {}\n for (const key of Object.keys(query)) {\n const rawValue = (query as Record<string, LocationQueryValueRaw | LocationQueryValueRaw[]>)[key]\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n const next = normalizeQueryValue(item)\n if (next !== undefined) {\n pushQueryValue(normalized, key, next)\n }\n }\n continue\n }\n const next = normalizeQueryValue(rawValue)\n if (next !== undefined) {\n pushQueryValue(normalized, key, next)\n }\n }\n return normalized\n}\n\nfunction normalizeRouteParamValue(value: RouteParamValueRaw): RouteParamValue | undefined {\n if (value === undefined || value === null) {\n return undefined\n }\n return String(value)\n}\n\nexport function normalizeRouteParams(params: RouteParamsRaw | RouteParams): RouteParams {\n const normalized: RouteParams = {}\n for (const key of Object.keys(params)) {\n const rawValue = (params as Record<string, RouteParamValueRaw | RouteParamValueRaw[]>)[key]\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n const next = normalizeRouteParamValue(item)\n if (next !== undefined) {\n pushRouteParamValue(normalized, key, next)\n }\n }\n continue\n }\n const next = normalizeRouteParamValue(rawValue)\n if (next !== undefined) {\n pushRouteParamValue(normalized, key, next)\n }\n }\n return normalized\n}\n\nexport function normalizeHash(rawHash?: string): string {\n if (!rawHash) {\n return ''\n }\n return rawHash.startsWith('#') ? rawHash : `#${rawHash}`\n}\n\nexport function parseQuery(search: string): LocationQuery {\n const normalizedSearch = search.startsWith('?') ? search.slice(1) : search\n const query: LocationQuery = {}\n\n if (!normalizedSearch) {\n return query\n }\n\n for (const segment of normalizedSearch.split('&')) {\n if (!segment) {\n continue\n }\n\n const equalIndex = segment.indexOf('=')\n const rawKey = equalIndex >= 0 ? segment.slice(0, equalIndex) : segment\n if (!rawKey) {\n continue\n }\n\n const key = decodeQuerySegment(rawKey)\n const value = equalIndex >= 0\n ? decodeQuerySegment(segment.slice(equalIndex + 1))\n : null\n\n pushQueryValue(query, key, value)\n }\n\n return query\n}\n\nexport function stringifyQuery(query: LocationQueryRaw | LocationQuery = {}): string {\n const normalizedQuery = normalizeQuery(query)\n const segments: string[] = []\n\n for (const key of Object.keys(normalizedQuery)) {\n const encodedKey = encodeQuerySegment(key)\n const rawValue = normalizedQuery[key]\n\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n if (item === null) {\n segments.push(encodedKey)\n }\n else {\n segments.push(`${encodedKey}=${encodeQuerySegment(item)}`)\n }\n }\n continue\n }\n\n if (rawValue === null) {\n segments.push(encodedKey)\n continue\n }\n\n segments.push(`${encodedKey}=${encodeQuerySegment(rawValue)}`)\n }\n\n return segments.join('&')\n}\n","import type {\n LocationQuery,\n LocationQueryRaw,\n RouteLocationNormalizedLoaded,\n RouteParams,\n RouteQueryStringifier,\n} from '../router'\nimport type { MiniProgramPageLike, RouteResolveCodec } from './types'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport { getCurrentPageInstance } from '../runtime/register/component/lifecycle/platform'\nimport { createAbsoluteRoutePath, resolvePath } from './path'\nimport { normalizeHash, normalizeQuery, parseQuery, stringifyQuery } from './query'\n\nconst DEFAULT_ROUTE_RESOLVE_CODEC: RouteResolveCodec = {\n parseQuery,\n stringifyQuery,\n}\n\nexport function parsePathInput(\n input: string,\n codec: RouteResolveCodec = DEFAULT_ROUTE_RESOLVE_CODEC,\n): { path: string, query: LocationQuery, hash: string } {\n const hashIndex = input.indexOf('#')\n const withoutHash = hashIndex >= 0 ? input.slice(0, hashIndex) : input\n const hash = hashIndex >= 0 ? normalizeHash(input.slice(hashIndex + 1)) : ''\n const queryIndex = withoutHash.indexOf('?')\n\n if (queryIndex < 0) {\n return {\n path: withoutHash,\n query: {},\n hash,\n }\n }\n\n return {\n path: withoutHash.slice(0, queryIndex),\n query: normalizeQuery(codec.parseQuery(withoutHash.slice(queryIndex + 1))),\n hash,\n }\n}\n\nexport function createRouteLocation(\n path: string,\n query: LocationQuery,\n hash = '',\n name?: string,\n params: RouteParams = {},\n queryStringifier: RouteQueryStringifier = stringifyQuery,\n): RouteLocationNormalizedLoaded {\n const normalizedPath = resolvePath(path, '')\n const queryString = queryStringifier(query)\n const fullPathBase = createAbsoluteRoutePath(normalizedPath)\n const normalizedHash = normalizeHash(hash)\n const fullPath = queryString ? `${fullPathBase}?${queryString}` : fullPathBase\n const location: RouteLocationNormalizedLoaded = {\n path: normalizedPath,\n fullPath: normalizedHash ? `${fullPath}${normalizedHash}` : fullPath,\n query,\n hash: normalizedHash,\n params,\n }\n if (name !== undefined) {\n location.name = name\n }\n\n return location\n}\n\nfunction hasPageRoute(page: MiniProgramPageLike | undefined): page is MiniProgramPageLike {\n return (typeof page?.route === 'string' && page.route.length > 0)\n || (typeof page?.__route__ === 'string' && page.__route__.length > 0)\n}\n\nfunction getCurrentMiniProgramPage(fallbackPage?: MiniProgramPageLike): MiniProgramPageLike | undefined {\n const pages = getCurrentMiniProgramPages() as MiniProgramPageLike[]\n if (Array.isArray(pages) && pages.length > 0) {\n const currentPage = pages[pages.length - 1]\n if (hasPageRoute(currentPage)) {\n return currentPage\n }\n }\n\n const currentPageInstance = getCurrentPageInstance() as MiniProgramPageLike | undefined\n return hasPageRoute(currentPageInstance) ? currentPageInstance : fallbackPage\n}\n\nexport function resolvePageRoute(\n page: MiniProgramPageLike | undefined,\n queryOverride?: LocationQueryRaw,\n): RouteLocationNormalizedLoaded {\n if (!page) {\n return createRouteLocation('', {})\n }\n\n const rawPath = typeof page.route === 'string'\n ? page.route\n : typeof page.__route__ === 'string'\n ? page.__route__\n : ''\n\n const querySource = queryOverride ?? ((page.options ?? {}) as LocationQueryRaw)\n const query = normalizeQuery(querySource)\n return createRouteLocation(rawPath, query, '', undefined, {})\n}\n\nexport function resolveCurrentRoute(\n queryOverride?: LocationQueryRaw,\n fallbackPage?: MiniProgramPageLike,\n): RouteLocationNormalizedLoaded {\n const currentPage = getCurrentMiniProgramPage(fallbackPage)\n return resolvePageRoute(currentPage, queryOverride)\n}\n","import type { SetupContextRouter } from '../types'\nimport { notifyRouteStateSync } from '../../router/routeSync'\nimport { parsePathInput } from '../../routerInternal/location'\nimport { createAbsoluteRoutePath, resolvePath, stringifyQuery } from '../../routerInternal/shared'\nimport { getCurrentSetupContext } from '../hooks'\nimport { getCurrentMiniProgramGlobalRouter } from '../platform'\n\ntype RuntimeRouter = SetupContextRouter\ntype RuntimeRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\ntype RuntimeRouterAccessor = 'router' | 'pageRouter'\n\nconst RUNTIME_ROUTER_METHODS: RuntimeRouterMethodName[] = ['switchTab', 'reLaunch', 'redirectTo', 'navigateTo', 'navigateBack']\nconst runtimeRouterWrapperCache = new WeakMap<RuntimeRouter, Map<string, RuntimeRouter>>()\n\nfunction isRuntimeRouter(candidate: unknown): candidate is RuntimeRouter {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n return RUNTIME_ROUTER_METHODS.every((methodName) => {\n return typeof (candidate as Record<string, any>)[methodName] === 'function'\n })\n}\n\nfunction createGlobalRouterFallback(): RuntimeRouter | undefined {\n return getCurrentMiniProgramGlobalRouter()\n}\n\nfunction resolveBasePathCandidate(candidate: unknown): string | undefined {\n if (typeof candidate !== 'string' || !candidate) {\n return undefined\n }\n const normalized = resolvePath(candidate, '')\n return normalized || undefined\n}\n\nfunction resolveRouterBasePath(\n nativeInstance: Record<string, any>,\n accessor: RuntimeRouterAccessor,\n): string | undefined {\n const candidates = accessor === 'pageRouter'\n ? [nativeInstance.route, nativeInstance.__route__, nativeInstance.is]\n : [nativeInstance.is, nativeInstance.route, nativeInstance.__route__]\n\n for (const candidate of candidates) {\n const resolved = resolveBasePathCandidate(candidate)\n if (resolved) {\n return resolved\n }\n }\n\n return undefined\n}\n\nfunction resolveScopedRouterUrl(url: string, basePath?: string): string {\n if (!basePath || (!url.startsWith('./') && !url.startsWith('../'))) {\n return url\n }\n\n const { path, query, hash } = parsePathInput(url)\n const resolvedPath = createAbsoluteRoutePath(resolvePath(path, basePath))\n const queryString = stringifyQuery(query)\n return `${resolvedPath}${queryString ? `?${queryString}` : ''}${hash}`\n}\n\nfunction createScopedRuntimeRouter(rawRouter: RuntimeRouter, basePath?: string): RuntimeRouter {\n const cacheKey = basePath ?? ''\n const cachedByBasePath = runtimeRouterWrapperCache.get(rawRouter)\n const cachedRouter = cachedByBasePath?.get(cacheKey)\n if (cachedRouter) {\n return cachedRouter\n }\n\n const scopedRouter = Object.create(null) as RuntimeRouter\n for (const methodName of RUNTIME_ROUTER_METHODS) {\n ;(scopedRouter as Record<string, any>)[methodName] = (option: Record<string, any>) => {\n const rawMethod = (rawRouter as Record<string, any>)[methodName]\n if (methodName === 'navigateBack' || !option || typeof option !== 'object') {\n return rawMethod.call(rawRouter, option)\n }\n\n const nextUrl = typeof option.url === 'string'\n ? resolveScopedRouterUrl(option.url, basePath)\n : option.url\n const originalSuccess = option.success\n const nextOption = {\n ...option,\n url: nextUrl,\n success: (...args: any[]) => {\n if (typeof nextUrl === 'string') {\n notifyRouteStateSync({\n method: methodName,\n source: 'native',\n url: nextUrl,\n })\n }\n return typeof originalSuccess === 'function'\n ? originalSuccess(...args)\n : undefined\n },\n }\n return rawMethod.call(rawRouter, nextOption)\n }\n }\n\n const nextCache = cachedByBasePath ?? new Map<string, RuntimeRouter>()\n nextCache.set(cacheKey, scopedRouter)\n runtimeRouterWrapperCache.set(rawRouter, nextCache)\n return scopedRouter\n}\n\nfunction useRuntimeRouterByAccessor(\n primaryAccessor: RuntimeRouterAccessor,\n fallbackAccessor: RuntimeRouterAccessor,\n helperName: 'useNativeRouter' | 'useNativePageRouter',\n): RuntimeRouter {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx?.instance) {\n throw new Error(`${helperName}() 必须在 setup() 的同步阶段调用`)\n }\n\n const nativeInstance = ctx.instance as Record<string, any>\n const basePath = resolveRouterBasePath(nativeInstance, primaryAccessor)\n const primaryRouter = nativeInstance[primaryAccessor]\n if (isRuntimeRouter(primaryRouter)) {\n return createScopedRuntimeRouter(primaryRouter, basePath)\n }\n\n const fallbackRouter = nativeInstance[fallbackAccessor]\n if (isRuntimeRouter(fallbackRouter)) {\n return createScopedRuntimeRouter(fallbackRouter, basePath)\n }\n\n const globalFallbackRouter = createGlobalRouterFallback()\n if (globalFallbackRouter) {\n return createScopedRuntimeRouter(globalFallbackRouter, basePath)\n }\n\n throw new Error('当前运行环境不支持 Router,请升级宿主基础库或检查平台路由能力')\n}\n\n/**\n * 在 setup 中获取与当前组件路径语义一致的原生 Router 对象。\n *\n * - 优先使用实例上的 `this.router`(组件路径语义)。\n * - 不可用时回退到 `this.pageRouter`。\n * - 低版本基础库再回退到宿主全局路由方法。\n *\n * 如需更贴近 Vue Router 的高阶能力(导航守卫、失败类型、统一解析),\n * 推荐改用 `wevu/router` 子入口的 `useRouter()`。\n */\nexport function useNativeRouter(): RuntimeRouter {\n return useRuntimeRouterByAccessor('router', 'pageRouter', 'useNativeRouter')\n}\n\n/**\n * 在 setup 中获取与当前页面路径语义一致的原生 Router 对象。\n *\n * - 优先使用实例上的 `this.pageRouter`(页面路径语义)。\n * - 不可用时回退到 `this.router`。\n * - 低版本基础库再回退到宿主全局路由方法。\n *\n * 如需更贴近 Vue Router 的高阶能力(导航守卫、失败类型、统一解析),\n * 推荐改用 `wevu/router` 子入口的 `useRouter()`。\n */\nexport function useNativePageRouter(): RuntimeRouter {\n return useRuntimeRouterByAccessor('pageRouter', 'router', 'useNativePageRouter')\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { d as reactive } from "./ref-DRZC3Kc5.mjs";
2
- import { c as getCurrentSetupContext, g as getMiniProgramGlobalObject, x as readonly } from "./base-CYkvI7w8.mjs";
3
- import { $ as onShow, B as onLoad, Y as onRouteDone, a as resolveCurrentRoute, c as normalizeRouteParams, d as createAbsoluteRoutePath, f as isDynamicRoutePath, g as registerRouteStateSyncHandler, h as notifyRouteStateSync, i as parsePathInput, l as parseQuery, m as installRouteStateSyncOnNativeRouter, n as useNativeRouter$1, o as normalizeHash, p as resolvePath, q as onReady, r as createRouteLocation, rt as onUnload, s as normalizeQuery, t as useNativePageRouter$1, u as stringifyQuery, x as provideGlobal, y as injectGlobal } from "./router-BD-ovqV2.mjs";
2
+ import { c as getCurrentSetupContext, g as getMiniProgramGlobalObject, m as getCurrentMiniProgramPages, x as readonly } from "./base-CYkvI7w8.mjs";
3
+ import { J as onReady, S as registerRouteStateSyncHandler, V as onLoad, X as onRouteDone, _ as injectGlobal, a as resolveCurrentRoute, b as installRouteStateSyncOnNativeRouter, c as normalizeQuery, d as stringifyQuery, et as onShow, f as createAbsoluteRoutePath, i as parsePathInput, it as onUnload, l as normalizeRouteParams, m as resolvePath, n as useNativeRouter$1, o as resolvePageRoute, p as isDynamicRoutePath, r as createRouteLocation, s as normalizeHash, t as useNativePageRouter$1, u as parseQuery, x as notifyRouteStateSync, y as provideGlobal } from "./router-D0JQfgyN.mjs";
4
4
 
5
5
  //#region src/routerInternal/params.ts
6
6
  const PATH_PARAM_TOKEN_RE = /^:(\w+)(?:\([^)]*\))?([+*?])?$/;
@@ -569,19 +569,6 @@ function hasLocationQuery(query) {
569
569
  return Object.keys(query).length > 0;
570
570
  }
571
571
 
572
- //#endregion
573
- //#region src/router/instance.ts
574
- const ROUTER_INSTANCE_KEY = Symbol("wevu.router.instance");
575
- let activeRouter;
576
- function setActiveRouter(router) {
577
- activeRouter = router;
578
- provideGlobal(ROUTER_INSTANCE_KEY, router);
579
- }
580
- function getActiveRouter() {
581
- var _activeRouter;
582
- return (_activeRouter = activeRouter) !== null && _activeRouter !== void 0 ? _activeRouter : injectGlobal(ROUTER_INSTANCE_KEY, void 0);
583
- }
584
-
585
572
  //#endregion
586
573
  //#region src/router/types.ts
587
574
  const NavigationFailureType = {
@@ -761,12 +748,55 @@ function createNavigationResultController(options) {
761
748
  return rejectOnError && shouldEmitNavigationError(failure);
762
749
  }
763
750
  async function settleNavigationResult(result) {
764
- if (!result.failure && result.to) notifyRouteStateSync({ route: result.to });
751
+ if (!result.failure) notifyRouteStateSync(result.to ? {
752
+ route: result.to,
753
+ source: "router"
754
+ } : void 0);
765
755
  await emitNavigationAfterEach(result);
766
756
  if (result.failure && shouldRejectNavigationFailure(result.failure)) throw result.failure;
767
757
  return result.failure;
768
758
  }
769
- return { settleNavigationResult };
759
+ return {
760
+ emitNavigationAfterEach,
761
+ settleNavigationResult
762
+ };
763
+ }
764
+
765
+ //#endregion
766
+ //#region src/router/backNavigation.ts
767
+ function resolveBackNavigationTarget(delta, from, resolveWithCodec) {
768
+ const pages = getCurrentMiniProgramPages();
769
+ const targetPage = pages[pages.length - 1 - delta];
770
+ if (!targetPage) return;
771
+ return resolveWithCodec(resolvePageRoute(targetPage).fullPath, from.path);
772
+ }
773
+ async function runBackNavigationGuards(options) {
774
+ const { target, from, nativeRouter, beforeEachGuards, beforeResolveGuards, resolveWithCodec } = options;
775
+ const guardContext = {
776
+ mode: "back",
777
+ to: target,
778
+ from,
779
+ nativeRouter
780
+ };
781
+ for (const guards of [beforeEachGuards, beforeResolveGuards]) {
782
+ const guardResult = await runNavigationGuards(guards, guardContext, resolveWithCodec);
783
+ if (guardResult.status === "failure") return createNavigationRunResult("back", from, target, guardResult.failure);
784
+ if (guardResult.status === "redirect") return createNavigationRunResult("back", from, target, createNavigationFailure(NavigationFailureType.aborted, target, from, "Redirect is not supported in back navigation guards"));
785
+ }
786
+ return createNavigationRunResult("back", from, target);
787
+ }
788
+
789
+ //#endregion
790
+ //#region src/router/instance.ts
791
+ const ROUTER_INSTANCE_KEY = Symbol("wevu.router.instance");
792
+ let activeRouter;
793
+ function setActiveRouter(router) {
794
+ activeRouter = router;
795
+ provideGlobal(ROUTER_INSTANCE_KEY, router);
796
+ }
797
+ function getActiveRouter() {
798
+ var _activeRouter;
799
+ return (_activeRouter = activeRouter) !== null && _activeRouter !== void 0 ? _activeRouter : injectGlobal(ROUTER_INSTANCE_KEY, void 0);
770
800
  }
771
801
 
772
802
  //#endregion
@@ -964,22 +994,18 @@ function createNavigationApi(options) {
964
994
  }
965
995
  async function back(delta = 1) {
966
996
  const from = snapshotRouteLocation(route);
967
- const beforeEachResult = await runNavigationGuards(beforeEachGuards, {
968
- mode: "back",
969
- from,
970
- nativeRouter
971
- }, resolveWithCodec);
972
- if (beforeEachResult.status === "failure") return settleNavigationResult(createNavigationRunResult("back", from, void 0, beforeEachResult.failure));
973
- if (beforeEachResult.status === "redirect") return settleNavigationResult(createNavigationRunResult("back", from, void 0, createNavigationFailure(NavigationFailureType.aborted, void 0, from, "Redirect is not supported in back navigation guards")));
974
- const beforeResolveResult = await runNavigationGuards(beforeResolveGuards, {
975
- mode: "back",
997
+ const target = resolveBackNavigationTarget(delta, from, resolveWithCodec);
998
+ const guardResult = await runBackNavigationGuards({
999
+ target,
976
1000
  from,
977
- nativeRouter
978
- }, resolveWithCodec);
979
- if (beforeResolveResult.status === "failure") return settleNavigationResult(createNavigationRunResult("back", from, void 0, beforeResolveResult.failure));
980
- if (beforeResolveResult.status === "redirect") return settleNavigationResult(createNavigationRunResult("back", from, void 0, createNavigationFailure(NavigationFailureType.aborted, void 0, from, "Redirect is not supported in back navigation guards")));
981
- const result = await executeNavigationMethod(nativeRouter.navigateBack, { delta }, void 0, from);
982
- const runResult = isNavigationFailure(result) ? createNavigationRunResult("back", from, void 0, result) : createNavigationRunResult("back", from);
1001
+ nativeRouter,
1002
+ beforeEachGuards,
1003
+ beforeResolveGuards,
1004
+ resolveWithCodec
1005
+ });
1006
+ if (guardResult.failure) return settleNavigationResult(guardResult);
1007
+ const result = await executeNavigationMethod(nativeRouter.navigateBack, { delta }, target, from);
1008
+ const runResult = isNavigationFailure(result) ? createNavigationRunResult("back", from, target, result) : guardResult;
983
1009
  return settleNavigationResult(runResult);
984
1010
  }
985
1011
  async function go(delta) {
@@ -1123,8 +1149,12 @@ function createRouteStateController(options = {}) {
1123
1149
  params: cloneRouteParams(currentRoute.params)
1124
1150
  });
1125
1151
  applyRouteState(routeState, currentRoute);
1126
- function syncRoute(queryOverride, routeOverride) {
1152
+ function syncRoute(queryOverride, routeOverride, payload) {
1127
1153
  const nextRoute = routeOverride ? resolveRoute(routeOverride) : resolveRoute(resolveCurrentRoute(queryOverride, fallbackPage));
1154
+ if (payload) {
1155
+ var _options$beforeRouteS;
1156
+ (_options$beforeRouteS = options.beforeRouteStateSync) === null || _options$beforeRouteS === void 0 || _options$beforeRouteS.call(options, nextRoute, payload);
1157
+ }
1128
1158
  applyRouteState(routeState, nextRoute);
1129
1159
  }
1130
1160
  onLoad((query) => {
@@ -1141,14 +1171,18 @@ function createRouteStateController(options = {}) {
1141
1171
  });
1142
1172
  const unregisterRouteStateSync = registerRouteStateSyncHandler((payload) => {
1143
1173
  if (payload === null || payload === void 0 ? void 0 : payload.route) {
1144
- syncRoute(void 0, payload.route);
1174
+ syncRoute(void 0, payload.route, payload);
1175
+ return;
1176
+ }
1177
+ if (payload === null || payload === void 0 ? void 0 : payload.page) {
1178
+ syncRoute(void 0, resolvePageRoute(payload.page), payload);
1145
1179
  return;
1146
1180
  }
1147
1181
  if (payload === null || payload === void 0 ? void 0 : payload.url) {
1148
- syncRoute(void 0, resolveRouteLocation(payload.url, routeState.path));
1182
+ syncRoute(void 0, resolveRouteLocation(payload.url, routeState.path), payload);
1149
1183
  return;
1150
1184
  }
1151
- syncRoute();
1185
+ syncRoute(void 0, void 0, payload);
1152
1186
  });
1153
1187
  onUnload(() => {
1154
1188
  unregisterRouteStateSync();
@@ -1198,6 +1232,7 @@ function createRouter(options = {}) {
1198
1232
  const normalizedTabBarEntries = ((_options$tabBarEntrie = options.tabBarEntries) !== null && _options$tabBarEntrie !== void 0 ? _options$tabBarEntrie : []).map((path) => resolvePath(path, "")).filter(Boolean);
1199
1233
  const tabBarPathSet = new Set(normalizedTabBarEntries);
1200
1234
  const routeRegistry = createRouteRegistry(namedRouteLookup);
1235
+ let managedNavigationCount = 0;
1201
1236
  const routerOptions = createRouterOptionsSnapshot(normalizedTabBarEntries, routeRegistry.getRoutes(), paramsMode, maxRedirects, routeResolveCodec, rejectOnError);
1202
1237
  function enrichRouteRecordState(routeLocation) {
1203
1238
  const resolved = { ...routeLocation };
@@ -1218,10 +1253,38 @@ function createRouter(options = {}) {
1218
1253
  function resolveWithCodec(to, currentPath) {
1219
1254
  return enrichRouteRecordState(resolveRouteLocation(typeof to === "string" ? to : resolveNamedRouteLocation(to, namedRouteLookup, paramsMode), currentPath, routeResolveCodec));
1220
1255
  }
1221
- const route = createRouteStateController({ resolveRoute: enrichRouteRecordState }).route;
1256
+ let route;
1257
+ let emitObservedNavigationAfterEach;
1258
+ function isExternalBackSync(payload) {
1259
+ return payload.source === "page" || payload.source === "native" && payload.method === "navigateBack";
1260
+ }
1261
+ function beforeRouteStateSync(nextRoute, payload) {
1262
+ if (managedNavigationCount > 0 || !isExternalBackSync(payload) || nextRoute.fullPath === route.fullPath) return;
1263
+ runBackNavigationGuards({
1264
+ target: nextRoute,
1265
+ from: snapshotRouteLocation(route),
1266
+ nativeRouter,
1267
+ beforeEachGuards,
1268
+ beforeResolveGuards,
1269
+ resolveWithCodec
1270
+ }).then((result) => {
1271
+ return emitObservedNavigationAfterEach === null || emitObservedNavigationAfterEach === void 0 ? void 0 : emitObservedNavigationAfterEach(result);
1272
+ });
1273
+ }
1274
+ route = createRouteStateController({
1275
+ beforeRouteStateSync,
1276
+ resolveRoute: enrichRouteRecordState
1277
+ }).route;
1222
1278
  function resolve(to) {
1223
1279
  return resolveWithCodec(to, route.path);
1224
1280
  }
1281
+ const navigationResultController = createNavigationResultController({
1282
+ afterEachHooks,
1283
+ errorHandlers,
1284
+ nativeRouter,
1285
+ rejectOnError
1286
+ });
1287
+ emitObservedNavigationAfterEach = navigationResultController.emitNavigationAfterEach;
1225
1288
  const navigationApi = createNavigationApi({
1226
1289
  nativeRouter,
1227
1290
  route,
@@ -1232,13 +1295,16 @@ function createRouter(options = {}) {
1232
1295
  maxRedirects,
1233
1296
  tabBarPathSet,
1234
1297
  resolveWithCodec,
1235
- settleNavigationResult: createNavigationResultController({
1236
- afterEachHooks,
1237
- errorHandlers,
1238
- nativeRouter,
1239
- rejectOnError
1240
- }).settleNavigationResult
1298
+ settleNavigationResult: navigationResultController.settleNavigationResult
1241
1299
  });
1300
+ async function runManagedNavigation(navigation) {
1301
+ managedNavigationCount += 1;
1302
+ try {
1303
+ return await navigation();
1304
+ } finally {
1305
+ managedNavigationCount -= 1;
1306
+ }
1307
+ }
1242
1308
  function beforeEach(guard) {
1243
1309
  beforeEachGuards.add(guard);
1244
1310
  return () => {
@@ -1277,11 +1343,11 @@ function createRouter(options = {}) {
1277
1343
  isReady() {
1278
1344
  return readyPromise;
1279
1345
  },
1280
- push: navigationApi.push,
1281
- replace: navigationApi.replace,
1282
- back: navigationApi.back,
1283
- go: navigationApi.go,
1284
- forward: navigationApi.forward,
1346
+ push: (to) => runManagedNavigation(() => navigationApi.push(to)),
1347
+ replace: (to) => runManagedNavigation(() => navigationApi.replace(to)),
1348
+ back: (delta) => runManagedNavigation(() => navigationApi.back(delta)),
1349
+ go: (delta) => runManagedNavigation(() => navigationApi.go(delta)),
1350
+ forward: () => runManagedNavigation(() => navigationApi.forward()),
1285
1351
  hasRoute: routeRegistry.hasRoute,
1286
1352
  getRoutes: routeRegistry.getRoutes,
1287
1353
  addRoute: routeRegistry.addRoute,