wevu 7.2.1 → 7.3.0

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.
Files changed (466) hide show
  1. package/README.md +6 -0
  2. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +1 -1
  3. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +1 -1
  4. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +1 -1
  5. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +1 -1
  6. package/dist/dev/api/vitest/setup.d.mts +1 -0
  7. package/dist/dev/api/vitest.d.mts +1 -0
  8. package/dist/dev/api.d.mts +1 -0
  9. package/dist/dev/compiler.d.mts +1 -0
  10. package/dist/dev/fetch.d.mts +9 -0
  11. package/dist/dev/index.d.mts +72 -0
  12. package/dist/dev/internal-reactivity.d.mts +18 -0
  13. package/dist/dev/internal-runtime.d.mts +45 -0
  14. package/dist/dev/internal-runtime.mjs +3 -2
  15. package/dist/dev/internal-template.d.mts +2 -0
  16. package/dist/dev/jsxTypes.d.mts +9 -0
  17. package/dist/dev/macros/shared.d.mts +83 -0
  18. package/dist/dev/macros.d.mts +71 -0
  19. package/dist/dev/package.mjs +1 -1
  20. package/dist/dev/reactivity/asyncDerivation.d.mts +41 -0
  21. package/dist/dev/reactivity/asyncDerivation.mjs +8 -10
  22. package/dist/dev/reactivity/asyncDerivation.mjs.map +1 -1
  23. package/dist/dev/reactivity/computed.d.mts +25 -0
  24. package/dist/dev/reactivity/core.d.mts +35 -0
  25. package/dist/dev/reactivity/core.mjs +5 -8
  26. package/dist/dev/reactivity/core.mjs.map +1 -1
  27. package/dist/dev/reactivity/index.d.mts +16 -0
  28. package/dist/dev/reactivity/reactive/mutation.d.mts +21 -0
  29. package/dist/dev/reactivity/reactive/patch.d.mts +18 -0
  30. package/dist/dev/reactivity/reactive/patch.mjs +3 -3
  31. package/dist/dev/reactivity/reactive/patch.mjs.map +1 -1
  32. package/dist/dev/reactivity/reactive/patchState.mjs +4 -8
  33. package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -1
  34. package/dist/dev/reactivity/reactive/shallow.d.mts +22 -0
  35. package/dist/dev/reactivity/reactive/shared.d.mts +4 -0
  36. package/dist/dev/reactivity/reactive/shared.mjs +1 -2
  37. package/dist/dev/reactivity/reactive/shared.mjs.map +1 -1
  38. package/dist/dev/reactivity/reactive.d.mts +42 -0
  39. package/dist/dev/reactivity/reactive.mjs +5 -10
  40. package/dist/dev/reactivity/reactive.mjs.map +1 -1
  41. package/dist/dev/reactivity/readonly.d.mts +27 -0
  42. package/dist/dev/reactivity/ref.d.mts +27 -0
  43. package/dist/dev/reactivity/ref.mjs +2 -2
  44. package/dist/dev/reactivity/ref.mjs.map +1 -1
  45. package/dist/dev/reactivity/shallowRef.d.mts +19 -0
  46. package/dist/dev/reactivity/shallowRef.mjs +1 -1
  47. package/dist/dev/reactivity/shallowRef.mjs.map +1 -1
  48. package/dist/dev/reactivity/toRefs.d.mts +43 -0
  49. package/dist/dev/reactivity/traverse.d.mts +8 -0
  50. package/dist/dev/reactivity/watch/helpers.mjs +1 -1
  51. package/dist/dev/reactivity/watch/helpers.mjs.map +1 -1
  52. package/dist/dev/reactivity/watch/types.d.mts +43 -0
  53. package/dist/dev/reactivity/watch.d.mts +22 -0
  54. package/dist/dev/reactivity/watch.mjs +6 -8
  55. package/dist/dev/reactivity/watch.mjs.map +1 -1
  56. package/dist/dev/router/auto-routes.d.mts +8 -0
  57. package/dist/dev/router/createRouter.d.mts +9 -0
  58. package/dist/dev/router/createRouter.mjs +17 -24
  59. package/dist/dev/router/createRouter.mjs.map +1 -1
  60. package/dist/dev/router/initialNavigation.mjs +18 -16
  61. package/dist/dev/router/initialNavigation.mjs.map +1 -1
  62. package/dist/dev/router/instance.mjs +1 -2
  63. package/dist/dev/router/instance.mjs.map +1 -1
  64. package/dist/dev/router/navigationCore.d.mts +7 -0
  65. package/dist/dev/router/navigationCore.mjs +2 -2
  66. package/dist/dev/router/navigationCore.mjs.map +1 -1
  67. package/dist/dev/router/navigationResult.mjs +7 -10
  68. package/dist/dev/router/navigationResult.mjs.map +1 -1
  69. package/dist/dev/router/navigationTarget.mjs +1 -3
  70. package/dist/dev/router/navigationTarget.mjs.map +1 -1
  71. package/dist/dev/router/resolve.d.mts +7 -0
  72. package/dist/dev/router/resolve.mjs +3 -4
  73. package/dist/dev/router/resolve.mjs.map +1 -1
  74. package/dist/dev/router/routeRegistry.mjs +1 -1
  75. package/dist/dev/router/routeRegistry.mjs.map +1 -1
  76. package/dist/dev/router/routeSync.d.mts +2 -0
  77. package/dist/dev/router/routeSync.mjs +1 -1
  78. package/dist/dev/router/routeSync.mjs.map +1 -1
  79. package/dist/dev/router/types.d.mts +267 -0
  80. package/dist/dev/router/useRoute.d.mts +20 -0
  81. package/dist/dev/router/useRoute.mjs +12 -19
  82. package/dist/dev/router/useRoute.mjs.map +1 -1
  83. package/dist/dev/router/useRouter.d.mts +9 -0
  84. package/dist/dev/router.d.mts +26 -0
  85. package/dist/dev/routerInternal/location.d.mts +2 -0
  86. package/dist/dev/routerInternal/location.mjs +2 -3
  87. package/dist/dev/routerInternal/location.mjs.map +1 -1
  88. package/dist/dev/routerInternal/matching.d.mts +2 -0
  89. package/dist/dev/routerInternal/params.d.mts +2 -0
  90. package/dist/dev/routerInternal/params.mjs +2 -3
  91. package/dist/dev/routerInternal/params.mjs.map +1 -1
  92. package/dist/dev/routerInternal/query.d.mts +7 -0
  93. package/dist/dev/routerInternal/records.d.mts +2 -0
  94. package/dist/dev/routerInternal/records.mjs +1 -1
  95. package/dist/dev/routerInternal/records.mjs.map +1 -1
  96. package/dist/dev/routerInternal/recordsWarnings.d.mts +2 -0
  97. package/dist/dev/routerInternal/recordsWarnings.mjs +1 -2
  98. package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -1
  99. package/dist/dev/routerInternal/shared.d.mts +9 -0
  100. package/dist/dev/routerInternal/snapshots.d.mts +2 -0
  101. package/dist/dev/routerInternal/types.d.mts +9 -0
  102. package/dist/dev/runtime/app/context.mjs +13 -26
  103. package/dist/dev/runtime/app/context.mjs.map +1 -1
  104. package/dist/dev/runtime/app/diagnostics.mjs +2 -4
  105. package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
  106. package/dist/dev/runtime/app/mount.mjs +27 -33
  107. package/dist/dev/runtime/app/mount.mjs.map +1 -1
  108. package/dist/dev/runtime/app/pending.d.mts +10 -0
  109. package/dist/dev/runtime/app/setData/commitTracker.d.mts +13 -0
  110. package/dist/dev/runtime/app/setData/commitTracker.mjs +5 -9
  111. package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
  112. package/dist/dev/runtime/app/setData/patchScheduler.mjs +2 -4
  113. package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -1
  114. package/dist/dev/runtime/app/setData/payload.mjs +2 -3
  115. package/dist/dev/runtime/app/setData/payload.mjs.map +1 -1
  116. package/dist/dev/runtime/app/setData/scheduler.d.mts +51 -0
  117. package/dist/dev/runtime/app/setData/scheduler.mjs +7 -9
  118. package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
  119. package/dist/dev/runtime/app/setData/snapshot.mjs +5 -6
  120. package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -1
  121. package/dist/dev/runtime/app/setDataOptions.mjs +26 -27
  122. package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
  123. package/dist/dev/runtime/app.d.mts +8 -0
  124. package/dist/dev/runtime/app.mjs +9 -9
  125. package/dist/dev/runtime/app.mjs.map +1 -1
  126. package/dist/dev/runtime/bindingManifest.mjs +6 -14
  127. package/dist/dev/runtime/bindingManifest.mjs.map +1 -1
  128. package/dist/dev/runtime/capabilities.d.mts +78 -0
  129. package/dist/dev/runtime/capabilities.mjs.map +1 -1
  130. package/dist/dev/runtime/css.d.mts +14 -0
  131. package/dist/dev/runtime/css.mjs +4 -8
  132. package/dist/dev/runtime/css.mjs.map +1 -1
  133. package/dist/dev/runtime/defaults.d.mts +12 -0
  134. package/dist/dev/runtime/defaults.mjs +4 -4
  135. package/dist/dev/runtime/defaults.mjs.map +1 -1
  136. package/dist/dev/runtime/define/initialComputed.mjs +5 -5
  137. package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
  138. package/dist/dev/runtime/define/options.mjs +10 -12
  139. package/dist/dev/runtime/define/options.mjs.map +1 -1
  140. package/dist/dev/runtime/define/props.mjs +4 -5
  141. package/dist/dev/runtime/define/props.mjs.map +1 -1
  142. package/dist/dev/runtime/define/scopedSlotOptions.mjs +43 -61
  143. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
  144. package/dist/dev/runtime/define/setupResult.mjs +17 -28
  145. package/dist/dev/runtime/define/setupResult.mjs.map +1 -1
  146. package/dist/dev/runtime/define.d.mts +118 -0
  147. package/dist/dev/runtime/define.mjs +9 -12
  148. package/dist/dev/runtime/define.mjs.map +1 -1
  149. package/dist/dev/runtime/diff.mjs +9 -11
  150. package/dist/dev/runtime/diff.mjs.map +1 -1
  151. package/dist/dev/runtime/disposables.d.mts +31 -0
  152. package/dist/dev/runtime/disposables.mjs +2 -2
  153. package/dist/dev/runtime/disposables.mjs.map +1 -1
  154. package/dist/dev/runtime/elementIntersectionObserver.d.mts +26 -0
  155. package/dist/dev/runtime/elementIntersectionObserver.mjs +16 -24
  156. package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -1
  157. package/dist/dev/runtime/features/inlineEvents.d.mts +7 -0
  158. package/dist/dev/runtime/features/inlineEvents.mjs +2 -3
  159. package/dist/dev/runtime/features/inlineEvents.mjs.map +1 -1
  160. package/dist/dev/runtime/features/jsxIslands.d.mts +7 -0
  161. package/dist/dev/runtime/features/jsxIslands.mjs +20 -0
  162. package/dist/dev/runtime/features/jsxIslands.mjs.map +1 -0
  163. package/dist/dev/runtime/features/layout.d.mts +7 -0
  164. package/dist/dev/runtime/features/layout.mjs +2 -3
  165. package/dist/dev/runtime/features/layout.mjs.map +1 -1
  166. package/dist/dev/runtime/features/patchStrategy.d.mts +7 -0
  167. package/dist/dev/runtime/features/publicLayout.d.mts +24 -0
  168. package/dist/dev/runtime/features/publicLayout.mjs +2 -6
  169. package/dist/dev/runtime/features/publicLayout.mjs.map +1 -1
  170. package/dist/dev/runtime/features/scopedSlots.d.mts +23 -0
  171. package/dist/dev/runtime/features/scopedSlots.mjs +5 -9
  172. package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
  173. package/dist/dev/runtime/features/setDataHighFrequencyWarning.d.mts +7 -0
  174. package/dist/dev/runtime/features/templateRefs.d.mts +7 -0
  175. package/dist/dev/runtime/features/templateRefs.mjs +1 -1
  176. package/dist/dev/runtime/features/templateRefs.mjs.map +1 -1
  177. package/dist/dev/runtime/hooks/base.d.mts +27 -0
  178. package/dist/dev/runtime/hooks/base.mjs +21 -32
  179. package/dist/dev/runtime/hooks/base.mjs.map +1 -1
  180. package/dist/dev/runtime/hooks/register.d.mts +30 -0
  181. package/dist/dev/runtime/hooks/vue.d.mts +52 -0
  182. package/dist/dev/runtime/hooks.d.mts +4 -0
  183. package/dist/dev/runtime/index.d.mts +46 -0
  184. package/dist/dev/runtime/inlineDataset.mjs +1 -2
  185. package/dist/dev/runtime/inlineDataset.mjs.map +1 -1
  186. package/dist/dev/runtime/intersectionObserver.d.mts +14 -0
  187. package/dist/dev/runtime/intersectionObserver.mjs +6 -6
  188. package/dist/dev/runtime/intersectionObserver.mjs.map +1 -1
  189. package/dist/dev/runtime/jsxIsland.d.mts +37 -0
  190. package/dist/dev/runtime/jsxIsland.mjs +16 -33
  191. package/dist/dev/runtime/jsxIsland.mjs.map +1 -1
  192. package/dist/dev/runtime/layoutBridge.d.mts +55 -0
  193. package/dist/dev/runtime/layoutBridge.mjs +32 -62
  194. package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
  195. package/dist/dev/runtime/nativeBridge.mjs +1 -1
  196. package/dist/dev/runtime/nativeBridge.mjs.map +1 -1
  197. package/dist/dev/runtime/navigationLifecycle.mjs +24 -0
  198. package/dist/dev/runtime/navigationLifecycle.mjs.map +1 -0
  199. package/dist/dev/runtime/noSetData.d.mts +5 -0
  200. package/dist/dev/runtime/pageEnvironment.d.mts +50 -0
  201. package/dist/dev/runtime/pageEnvironment.mjs +15 -18
  202. package/dist/dev/runtime/pageEnvironment.mjs.map +1 -1
  203. package/dist/dev/runtime/pageLayout.d.mts +25 -0
  204. package/dist/dev/runtime/pageLayout.mjs +7 -11
  205. package/dist/dev/runtime/pageLayout.mjs.map +1 -1
  206. package/dist/dev/runtime/pageScroll.d.mts +29 -0
  207. package/dist/dev/runtime/pageScroll.mjs +2 -3
  208. package/dist/dev/runtime/pageScroll.mjs.map +1 -1
  209. package/dist/dev/runtime/platform/current.mjs +12 -0
  210. package/dist/dev/runtime/platform/current.mjs.map +1 -0
  211. package/dist/dev/runtime/platform/generic.mjs +36 -0
  212. package/dist/dev/runtime/platform/generic.mjs.map +1 -0
  213. package/dist/dev/runtime/platform/globals.mjs +29 -0
  214. package/dist/dev/runtime/platform/globals.mjs.map +1 -0
  215. package/dist/dev/runtime/platform.mjs +15 -60
  216. package/dist/dev/runtime/platform.mjs.map +1 -1
  217. package/dist/dev/runtime/provide.d.mts +60 -0
  218. package/dist/dev/runtime/provideContext.mjs +7 -9
  219. package/dist/dev/runtime/provideContext.mjs.map +1 -1
  220. package/dist/dev/runtime/provideStore.d.mts +7 -0
  221. package/dist/dev/runtime/publicRuntime.d.mts +22 -0
  222. package/dist/dev/runtime/publicRuntime.mjs +4 -0
  223. package/dist/dev/runtime/publicRuntime.mjs.map +1 -1
  224. package/dist/dev/runtime/pullDownRefresh.d.mts +12 -0
  225. package/dist/dev/runtime/pullDownRefresh.mjs +2 -4
  226. package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -1
  227. package/dist/dev/runtime/register/app.d.mts +14 -0
  228. package/dist/dev/runtime/register/app.mjs +18 -19
  229. package/dist/dev/runtime/register/app.mjs.map +1 -1
  230. package/dist/dev/runtime/register/component/alipay.mjs +9 -18
  231. package/dist/dev/runtime/register/component/alipay.mjs.map +1 -1
  232. package/dist/dev/runtime/register/component/alipayRegistration.mjs +60 -0
  233. package/dist/dev/runtime/register/component/alipayRegistration.mjs.map +1 -0
  234. package/dist/dev/runtime/register/component/lifecycle/platform.mjs +8 -9
  235. package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
  236. package/dist/dev/runtime/register/component/lifecycle.mjs +7 -12
  237. package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
  238. package/dist/dev/runtime/register/component/methods.mjs +13 -18
  239. package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
  240. package/dist/dev/runtime/register/component/options.mjs +3 -4
  241. package/dist/dev/runtime/register/component/options.mjs.map +1 -1
  242. package/dist/dev/runtime/register/component/props.mjs +25 -31
  243. package/dist/dev/runtime/register/component/props.mjs.map +1 -1
  244. package/dist/dev/runtime/register/component/registerDefinition.mjs +18 -40
  245. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
  246. package/dist/dev/runtime/register/component/registerNativeDefinition.mjs +18 -60
  247. package/dist/dev/runtime/register/component/registerNativeDefinition.mjs.map +1 -1
  248. package/dist/dev/runtime/register/component.d.mts +17 -0
  249. package/dist/dev/runtime/register/component.mjs +3 -5
  250. package/dist/dev/runtime/register/component.mjs.map +1 -1
  251. package/dist/dev/runtime/register/inline.d.mts +15 -0
  252. package/dist/dev/runtime/register/inline.mjs +8 -10
  253. package/dist/dev/runtime/register/inline.mjs.map +1 -1
  254. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +7 -8
  255. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
  256. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +1 -1
  257. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
  258. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +25 -34
  259. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
  260. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +6 -13
  261. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
  262. package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs +2 -2
  263. package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs.map +1 -1
  264. package/dist/dev/runtime/register/runtimeInstance/utils.mjs +9 -9
  265. package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
  266. package/dist/dev/runtime/register/runtimeInstance.d.mts +26 -0
  267. package/dist/dev/runtime/register/runtimeInstance.mjs +74 -100
  268. package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
  269. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +12 -15
  270. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -1
  271. package/dist/dev/runtime/register/setup.d.mts +11 -0
  272. package/dist/dev/runtime/register/setup.mjs +2 -3
  273. package/dist/dev/runtime/register/setup.mjs.map +1 -1
  274. package/dist/dev/runtime/register/snapshot.mjs +1 -4
  275. package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
  276. package/dist/dev/runtime/register/watch.d.mts +12 -0
  277. package/dist/dev/runtime/register/watch.mjs +3 -5
  278. package/dist/dev/runtime/register/watch.mjs.map +1 -1
  279. package/dist/dev/runtime/register.d.mts +5 -0
  280. package/dist/dev/runtime/scopedSlots.mjs +14 -21
  281. package/dist/dev/runtime/scopedSlots.mjs.map +1 -1
  282. package/dist/dev/runtime/selectorQuery.d.mts +54 -0
  283. package/dist/dev/runtime/selectorQuery.mjs +5 -9
  284. package/dist/dev/runtime/selectorQuery.mjs.map +1 -1
  285. package/dist/dev/runtime/template.d.mts +6 -0
  286. package/dist/dev/runtime/template.mjs +1 -1
  287. package/dist/dev/runtime/template.mjs.map +1 -1
  288. package/dist/dev/runtime/templateRefTypes.d.mts +12 -0
  289. package/dist/dev/runtime/templateRefs/helpers.mjs +14 -24
  290. package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
  291. package/dist/dev/runtime/templateRefs.mjs +8 -15
  292. package/dist/dev/runtime/templateRefs.mjs.map +1 -1
  293. package/dist/dev/runtime/types/core.d.mts +35 -0
  294. package/dist/dev/runtime/types/miniprogram.d.mts +84 -0
  295. package/dist/dev/runtime/types/miniprogramHost.d.mts +45 -0
  296. package/dist/dev/runtime/types/miniprogramHostSources.d.mts +112 -0
  297. package/dist/dev/runtime/types/options.d.mts +138 -0
  298. package/dist/dev/runtime/types/props/propTypes.d.mts +79 -0
  299. package/dist/dev/runtime/types/props/router.d.mts +51 -0
  300. package/dist/dev/runtime/types/props/setup.d.mts +96 -0
  301. package/dist/dev/runtime/types/props.d.mts +4 -0
  302. package/dist/dev/runtime/types/runtime.d.mts +59 -0
  303. package/dist/dev/runtime/types/setData.d.mts +237 -0
  304. package/dist/dev/runtime/types.d.mts +29 -0
  305. package/dist/dev/runtime/uniAppHost.d.mts +8 -0
  306. package/dist/dev/runtime/uniAppHost.mjs +6 -14
  307. package/dist/dev/runtime/uniAppHost.mjs.map +1 -1
  308. package/dist/dev/runtime/updatePerformance.d.mts +13 -0
  309. package/dist/dev/runtime/updatePerformance.mjs +1 -1
  310. package/dist/dev/runtime/updatePerformance.mjs.map +1 -1
  311. package/dist/dev/runtime/use.d.mts +13 -0
  312. package/dist/dev/runtime/use.mjs +1 -1
  313. package/dist/dev/runtime/use.mjs.map +1 -1
  314. package/dist/dev/runtime/vueCompat/context.d.mts +8 -0
  315. package/dist/dev/runtime/vueCompat/context.mjs +3 -5
  316. package/dist/dev/runtime/vueCompat/context.mjs.map +1 -1
  317. package/dist/dev/runtime/vueCompat/model.d.mts +30 -0
  318. package/dist/dev/runtime/vueCompat/model.mjs +9 -13
  319. package/dist/dev/runtime/vueCompat/model.mjs.map +1 -1
  320. package/dist/dev/runtime/vueCompat/router.d.mts +29 -0
  321. package/dist/dev/runtime/vueCompat/router.mjs +4 -4
  322. package/dist/dev/runtime/vueCompat/router.mjs.map +1 -1
  323. package/dist/dev/runtime/vueCompat/templateRef.d.mts +9 -0
  324. package/dist/dev/runtime/vueCompat/templateRef.mjs +1 -1
  325. package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -1
  326. package/dist/dev/runtime/vueCompat.d.mts +5 -0
  327. package/dist/dev/scheduler.d.mts +4 -0
  328. package/dist/dev/scheduler.mjs +3 -4
  329. package/dist/dev/scheduler.mjs.map +1 -1
  330. package/dist/dev/store/base.mjs +1 -2
  331. package/dist/dev/store/base.mjs.map +1 -1
  332. package/dist/dev/store/define/create.mjs +11 -22
  333. package/dist/dev/store/define/create.mjs.map +1 -1
  334. package/dist/dev/store/define.d.mts +8 -0
  335. package/dist/dev/store/define.mjs +1 -1
  336. package/dist/dev/store/define.mjs.map +1 -1
  337. package/dist/dev/store/manager.d.mts +16 -0
  338. package/dist/dev/store/storeToRefs.d.mts +11 -0
  339. package/dist/dev/store/types.d.mts +106 -0
  340. package/dist/dev/store/view.mjs +1 -1
  341. package/dist/dev/store/view.mjs.map +1 -1
  342. package/dist/dev/store.d.mts +5 -0
  343. package/dist/dev/version.d.mts +4 -0
  344. package/dist/dev/vue-augment.d.mts +8 -0
  345. package/dist/dev/vue-demi.d.mts +87 -0
  346. package/dist/dev/vue-types.d.mts +19 -0
  347. package/dist/dev/web-apis.d.mts +3 -0
  348. package/dist/internal-runtime.d.mts +2 -1
  349. package/dist/internal-runtime.mjs +1 -1
  350. package/dist/package.mjs +1 -1
  351. package/dist/reactivity/asyncDerivation.mjs +1 -1
  352. package/dist/reactivity/core.mjs +1 -1
  353. package/dist/reactivity/reactive/patch.mjs +1 -1
  354. package/dist/reactivity/reactive/patchState.mjs +1 -1
  355. package/dist/reactivity/reactive/shared.mjs +1 -1
  356. package/dist/reactivity/reactive.mjs +1 -1
  357. package/dist/reactivity/ref.mjs +1 -1
  358. package/dist/reactivity/shallowRef.mjs +1 -1
  359. package/dist/reactivity/watch/helpers.mjs +1 -1
  360. package/dist/reactivity/watch.mjs +1 -1
  361. package/dist/router/createRouter.mjs +1 -1
  362. package/dist/router/initialNavigation.mjs +1 -1
  363. package/dist/router/instance.mjs +1 -1
  364. package/dist/router/navigationCore.mjs +1 -1
  365. package/dist/router/navigationResult.mjs +1 -1
  366. package/dist/router/navigationTarget.mjs +1 -1
  367. package/dist/router/resolve.mjs +1 -1
  368. package/dist/router/routeRegistry.mjs +1 -1
  369. package/dist/router/routeSync.mjs +1 -1
  370. package/dist/router/useRoute.mjs +1 -1
  371. package/dist/routerInternal/location.mjs +1 -1
  372. package/dist/routerInternal/params.mjs +1 -1
  373. package/dist/routerInternal/records.mjs +1 -1
  374. package/dist/routerInternal/recordsWarnings.mjs +1 -1
  375. package/dist/runtime/app/context.mjs +1 -1
  376. package/dist/runtime/app/diagnostics.mjs +1 -1
  377. package/dist/runtime/app/mount.mjs +1 -1
  378. package/dist/runtime/app/setData/commitTracker.mjs +1 -1
  379. package/dist/runtime/app/setData/patchScheduler.mjs +1 -1
  380. package/dist/runtime/app/setData/payload.mjs +1 -1
  381. package/dist/runtime/app/setData/scheduler.mjs +1 -1
  382. package/dist/runtime/app/setData/snapshot.mjs +1 -1
  383. package/dist/runtime/app/setDataOptions.mjs +1 -1
  384. package/dist/runtime/app.mjs +1 -1
  385. package/dist/runtime/bindingManifest.mjs +1 -1
  386. package/dist/runtime/capabilities.d.mts +4 -1
  387. package/dist/runtime/css.mjs +1 -1
  388. package/dist/runtime/defaults.mjs +1 -1
  389. package/dist/runtime/define/initialComputed.mjs +1 -1
  390. package/dist/runtime/define/options.mjs +1 -1
  391. package/dist/runtime/define/props.mjs +1 -1
  392. package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
  393. package/dist/runtime/define/setupResult.mjs +1 -1
  394. package/dist/runtime/define.mjs +1 -1
  395. package/dist/runtime/diff.mjs +1 -1
  396. package/dist/runtime/disposables.mjs +1 -1
  397. package/dist/runtime/elementIntersectionObserver.mjs +1 -1
  398. package/dist/runtime/features/inlineEvents.mjs +1 -1
  399. package/dist/runtime/features/jsxIslands.d.mts +6 -0
  400. package/dist/runtime/features/jsxIslands.mjs +1 -0
  401. package/dist/runtime/features/layout.mjs +1 -1
  402. package/dist/runtime/features/publicLayout.mjs +1 -1
  403. package/dist/runtime/features/scopedSlots.mjs +1 -1
  404. package/dist/runtime/features/templateRefs.mjs +1 -1
  405. package/dist/runtime/hooks/base.mjs +1 -1
  406. package/dist/runtime/inlineDataset.mjs +1 -1
  407. package/dist/runtime/intersectionObserver.mjs +1 -1
  408. package/dist/runtime/jsxIsland.mjs +1 -1
  409. package/dist/runtime/layoutBridge.mjs +1 -1
  410. package/dist/runtime/nativeBridge.mjs +1 -1
  411. package/dist/runtime/navigationLifecycle.mjs +1 -0
  412. package/dist/runtime/pageEnvironment.mjs +1 -1
  413. package/dist/runtime/pageLayout.mjs +1 -1
  414. package/dist/runtime/pageScroll.mjs +1 -1
  415. package/dist/runtime/platform/current.mjs +1 -0
  416. package/dist/runtime/platform/generic.mjs +1 -0
  417. package/dist/runtime/platform/globals.mjs +1 -0
  418. package/dist/runtime/platform.mjs +1 -1
  419. package/dist/runtime/provideContext.mjs +1 -1
  420. package/dist/runtime/publicRuntime.mjs +1 -1
  421. package/dist/runtime/pullDownRefresh.mjs +1 -1
  422. package/dist/runtime/register/app.mjs +1 -1
  423. package/dist/runtime/register/component/alipay.mjs +1 -1
  424. package/dist/runtime/register/component/alipayRegistration.mjs +1 -0
  425. package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
  426. package/dist/runtime/register/component/lifecycle.mjs +1 -1
  427. package/dist/runtime/register/component/methods.mjs +1 -1
  428. package/dist/runtime/register/component/options.mjs +1 -1
  429. package/dist/runtime/register/component/props.mjs +1 -1
  430. package/dist/runtime/register/component/registerDefinition.mjs +1 -1
  431. package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
  432. package/dist/runtime/register/component.mjs +1 -1
  433. package/dist/runtime/register/inline.mjs +1 -1
  434. package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
  435. package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
  436. package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
  437. package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
  438. package/dist/runtime/register/runtimeInstance/setupSnapshot.mjs +1 -1
  439. package/dist/runtime/register/runtimeInstance/utils.mjs +1 -1
  440. package/dist/runtime/register/runtimeInstance.mjs +1 -1
  441. package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -1
  442. package/dist/runtime/register/setup.mjs +1 -1
  443. package/dist/runtime/register/snapshot.mjs +1 -1
  444. package/dist/runtime/register/watch.mjs +1 -1
  445. package/dist/runtime/scopedSlots.mjs +1 -1
  446. package/dist/runtime/selectorQuery.mjs +1 -1
  447. package/dist/runtime/template.mjs +1 -1
  448. package/dist/runtime/templateRefs/helpers.mjs +1 -1
  449. package/dist/runtime/templateRefs.mjs +1 -1
  450. package/dist/runtime/uniAppHost.mjs +1 -1
  451. package/dist/runtime/updatePerformance.mjs +1 -1
  452. package/dist/runtime/use.mjs +1 -1
  453. package/dist/runtime/vueCompat/context.mjs +1 -1
  454. package/dist/runtime/vueCompat/model.mjs +1 -1
  455. package/dist/runtime/vueCompat/router.mjs +1 -1
  456. package/dist/runtime/vueCompat/templateRef.mjs +1 -1
  457. package/dist/scheduler.mjs +1 -1
  458. package/dist/store/base.mjs +1 -1
  459. package/dist/store/define/create.mjs +1 -1
  460. package/dist/store/define.mjs +1 -1
  461. package/dist/store/view.mjs +1 -1
  462. package/package.json +7 -7
  463. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +0 -0
  464. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +0 -0
  465. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +0 -0
  466. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +0 -0
@@ -35,8 +35,7 @@ function createLayoutHostRegistry() {
35
35
  const normalizedKeys = normalizeLayoutHostKeys(keys);
36
36
  if (normalizedKeys.length === 0 || pageKeys.length === 0) return null;
37
37
  for (const pageKey of pageKeys) {
38
- var _registries$get;
39
- const registry = (_registries$get = registries.get(pageKey)) !== null && _registries$get !== void 0 ? _registries$get : /* @__PURE__ */ new Map();
38
+ const registry = registries.get(pageKey) ?? /* @__PURE__ */ new Map();
40
39
  for (const key of normalizedKeys) registry.set(key, bridge);
41
40
  registries.set(pageKey, registry);
42
41
  }
@@ -58,21 +57,16 @@ function createLayoutHostRegistry() {
58
57
  return removed;
59
58
  }
60
59
  function resolveBridge(key, pageKeys) {
61
- return pageKeys.map((pageKey) => {
62
- var _registries$get2;
63
- return (_registries$get2 = registries.get(pageKey)) === null || _registries$get2 === void 0 ? void 0 : _registries$get2.get(key);
64
- }).find(Boolean);
60
+ return pageKeys.map((pageKey) => registries.get(pageKey)?.get(key)).find(Boolean);
65
61
  }
66
62
  function resolveHost(key, pageKeys, resolver) {
67
- var _resolver;
68
63
  const bridge = resolveBridge(key, pageKeys);
69
64
  if (!bridge) return null;
70
- return (_resolver = resolver(bridge, key)) !== null && _resolver !== void 0 ? _resolver : null;
65
+ return resolver(bridge, key) ?? null;
71
66
  }
72
67
  function waitForHost(key, resolvePageKeys, resolver, options = {}) {
73
- var _options$retries, _options$interval;
74
- const retries = (_options$retries = options.retries) !== null && _options$retries !== void 0 ? _options$retries : 20;
75
- const interval = (_options$interval = options.interval) !== null && _options$interval !== void 0 ? _options$interval : 16;
68
+ const retries = options.retries ?? 20;
69
+ const interval = options.interval ?? 16;
76
70
  const host = resolveHost(key, resolvePageKeys(), resolver);
77
71
  if (host || retries <= 0) return Promise.resolve(host);
78
72
  return new Promise((resolve) => {
@@ -101,11 +95,10 @@ function resolvePageKeys(page) {
101
95
  return resolvePageIdentityKeys(page);
102
96
  }
103
97
  function resolveNativeLayoutContext(context) {
104
- var _context$WEVU_PUBLIC_, _context$$state;
105
98
  if (!context || typeof context !== "object") return;
106
- const runtimeNativeInstance = (_context$WEVU_PUBLIC_ = context[WEVU_PUBLIC_RUNTIME_KEY]) === null || _context$WEVU_PUBLIC_ === void 0 || (_context$WEVU_PUBLIC_ = _context$WEVU_PUBLIC_.state) === null || _context$WEVU_PUBLIC_ === void 0 ? void 0 : _context$WEVU_PUBLIC_[WEVU_NATIVE_INSTANCE_KEY];
99
+ const runtimeNativeInstance = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.[WEVU_NATIVE_INSTANCE_KEY];
107
100
  if (runtimeNativeInstance && typeof runtimeNativeInstance === "object") return runtimeNativeInstance;
108
- const stateNativeInstance = (_context$$state = context.$state) === null || _context$$state === void 0 ? void 0 : _context$$state[WEVU_NATIVE_INSTANCE_KEY];
101
+ const stateNativeInstance = context.$state?.[WEVU_NATIVE_INSTANCE_KEY];
109
102
  if (stateNativeInstance && typeof stateNativeInstance === "object") return stateNativeInstance;
110
103
  if (context[WEVU_NATIVE_INSTANCE_KEY] && typeof context[WEVU_NATIVE_INSTANCE_KEY] === "object") return context[WEVU_NATIVE_INSTANCE_KEY];
111
104
  return context;
@@ -124,7 +117,7 @@ function resolvePageFromContext(context, visited = /* @__PURE__ */ new Set()) {
124
117
  const nativePage = resolvePageFromContext(publicNativePage, visited);
125
118
  if (nativePage) return nativePage;
126
119
  }
127
- const ownerContext = nativeContext !== null && nativeContext !== void 0 ? nativeContext : context;
120
+ const ownerContext = nativeContext ?? context;
128
121
  const selectOwnerComponent = ownerContext.selectOwnerComponent;
129
122
  if (typeof selectOwnerComponent === "function") try {
130
123
  const owner = selectOwnerComponent.call(ownerContext);
@@ -132,7 +125,7 @@ function resolvePageFromContext(context, visited = /* @__PURE__ */ new Set()) {
132
125
  const ownerPage = resolvePageFromContext(owner, visited);
133
126
  if (ownerPage) return ownerPage;
134
127
  }
135
- } catch (_unused) {}
128
+ } catch {}
136
129
  return resolveCurrentPageInstance();
137
130
  }
138
131
  function resolveHostEntry(entry) {
@@ -144,26 +137,21 @@ function findLayoutHostBinding(bindings, key) {
144
137
  return bindings.find((binding) => binding.key === key);
145
138
  }
146
139
  function safeSelectComponent(target, selector) {
147
- const selectComponent = target === null || target === void 0 ? void 0 : target.selectComponent;
140
+ const selectComponent = target?.selectComponent;
148
141
  if (typeof selectComponent !== "function") return null;
149
142
  try {
150
- var _selectComponent$call;
151
- return (_selectComponent$call = selectComponent.call(target, selector)) !== null && _selectComponent$call !== void 0 ? _selectComponent$call : null;
152
- } catch (_unused2) {
143
+ return selectComponent.call(target, selector) ?? null;
144
+ } catch {
153
145
  return null;
154
146
  }
155
147
  }
156
148
  function resolveDeclaredLayoutHostFromRefs(binding, context) {
157
- var _ref, _ref2, _context$WEVU_PUBLIC_2, _context$WEVU_PUBLIC_3, _context$__wevu, _context$$state2, _refMap$get$value, _refMap$get;
158
149
  if (!binding.refName) return null;
159
150
  const refMap = getTemplateRefMap(context);
160
- const stateRefs = (_ref = (_ref2 = (_context$WEVU_PUBLIC_2 = (_context$WEVU_PUBLIC_3 = context[WEVU_PUBLIC_RUNTIME_KEY]) === null || _context$WEVU_PUBLIC_3 === void 0 || (_context$WEVU_PUBLIC_3 = _context$WEVU_PUBLIC_3.state) === null || _context$WEVU_PUBLIC_3 === void 0 ? void 0 : _context$WEVU_PUBLIC_3.$refs) !== null && _context$WEVU_PUBLIC_2 !== void 0 ? _context$WEVU_PUBLIC_2 : (_context$__wevu = context.__wevu) === null || _context$__wevu === void 0 || (_context$__wevu = _context$__wevu.state) === null || _context$__wevu === void 0 ? void 0 : _context$__wevu.$refs) !== null && _ref2 !== void 0 ? _ref2 : (_context$$state2 = context.$state) === null || _context$$state2 === void 0 ? void 0 : _context$$state2.$refs) !== null && _ref !== void 0 ? _ref : context.$refs;
161
- const refValue = (_refMap$get$value = refMap === null || refMap === void 0 || (_refMap$get = refMap.get(binding.refName)) === null || _refMap$get === void 0 ? void 0 : _refMap$get.value) !== null && _refMap$get$value !== void 0 ? _refMap$get$value : stateRefs === null || stateRefs === void 0 ? void 0 : stateRefs[binding.refName];
162
- if (Array.isArray(refValue)) {
163
- var _refValue$;
164
- return (_refValue$ = refValue[0]) !== null && _refValue$ !== void 0 ? _refValue$ : null;
165
- }
166
- return refValue !== null && refValue !== void 0 ? refValue : null;
151
+ const stateRefs = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.$refs ?? context.__wevu?.state?.$refs ?? context.$state?.$refs ?? context.$refs;
152
+ const refValue = refMap?.get(binding.refName)?.value ?? stateRefs?.[binding.refName];
153
+ if (Array.isArray(refValue)) return refValue[0] ?? null;
154
+ return refValue ?? null;
167
155
  }
168
156
  function createDeclaredLayoutHostBridge(bindings, context) {
169
157
  const nativeContext = resolveNativeLayoutContext(context);
@@ -172,10 +160,9 @@ function createDeclaredLayoutHostBridge(bindings, context) {
172
160
  const binding = findLayoutHostBinding(bindings, key);
173
161
  if (!binding) return null;
174
162
  if (binding.kind === "component" || !binding.kind) {
175
- var _ref3, _safeSelectComponent;
176
163
  const cachedHost = resolveDeclaredLayoutHostFromRefs(binding, context);
177
164
  if (cachedHost) return cachedHost;
178
- return (_ref3 = (_safeSelectComponent = safeSelectComponent(nativeContext, binding.selector)) !== null && _safeSelectComponent !== void 0 ? _safeSelectComponent : safeSelectComponent(resolveCurrentPageInstance(), binding.selector)) !== null && _ref3 !== void 0 ? _ref3 : null;
165
+ return safeSelectComponent(nativeContext, binding.selector) ?? safeSelectComponent(resolveCurrentPageInstance(), binding.selector) ?? null;
179
166
  }
180
167
  return null;
181
168
  } });
@@ -184,7 +171,7 @@ function createDeclaredLayoutHostBridge(bindings, context) {
184
171
  * 为当前页面注册 layout bridge,使页面或子组件可消费 layout 内部能力。
185
172
  */
186
173
  function registerPageLayoutBridge(selectors, context) {
187
- const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
174
+ const bridgeContext = context ?? getCurrentInstance();
188
175
  const page = resolvePageFromContext(bridgeContext);
189
176
  const pageKeys = resolvePageKeys(page);
190
177
  if (!bridgeContext || !page || pageKeys.length === 0) return false;
@@ -196,10 +183,9 @@ function registerPageLayoutBridge(selectors, context) {
196
183
  * 移除当前页面的 layout bridge 注册。
197
184
  */
198
185
  function unregisterPageLayoutBridge(selectors, context) {
199
- var _bridgeContext$WEVU_L;
200
- const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
186
+ const bridgeContext = context ?? getCurrentInstance();
201
187
  const page = resolvePageFromContext(bridgeContext);
202
- const pageKeys = (_bridgeContext$WEVU_L = bridgeContext === null || bridgeContext === void 0 ? void 0 : bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS]) !== null && _bridgeContext$WEVU_L !== void 0 ? _bridgeContext$WEVU_L : resolvePageKeys(page);
188
+ const pageKeys = bridgeContext?.[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] ?? resolvePageKeys(page);
203
189
  if (!bridgeContext || !Array.isArray(pageKeys) || pageKeys.length === 0) return false;
204
190
  const removed = pageLayoutBridgeRegistry.unregister(selectors, bridgeContext, pageKeys);
205
191
  delete bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS];
@@ -209,36 +195,23 @@ function unregisterPageLayoutBridge(selectors, context) {
209
195
  * 解析当前页面已注册的 layout bridge,找不到时回退到传入上下文。
210
196
  */
211
197
  function resolveLayoutBridge(selector, fallbackContext) {
212
- var _resolveCurrentPageIn, _ref4;
213
- const page = (_resolveCurrentPageIn = resolveCurrentPageInstance()) !== null && _resolveCurrentPageIn !== void 0 ? _resolveCurrentPageIn : resolvePageFromContext(fallbackContext);
214
- const bridgeContext = pageLayoutBridgeRegistry.resolveBridge(selector, resolvePageKeys(page));
215
- return (_ref4 = bridgeContext !== null && bridgeContext !== void 0 ? bridgeContext : fallbackContext) !== null && _ref4 !== void 0 ? _ref4 : getCurrentInstance();
198
+ const page = resolveCurrentPageInstance() ?? resolvePageFromContext(fallbackContext);
199
+ return pageLayoutBridgeRegistry.resolveBridge(selector, resolvePageKeys(page)) ?? fallbackContext ?? getCurrentInstance();
216
200
  }
217
201
  /**
218
202
  * 解析当前页面 layout 内通过指定 key 暴露的宿主实例。
219
203
  */
220
204
  function resolveLayoutHost(key, options = {}) {
221
- var _options$context, _resolveCurrentPageIn2;
222
- const context = (_options$context = options.context) !== null && _options$context !== void 0 ? _options$context : options.fallbackContext;
223
- const page = (_resolveCurrentPageIn2 = resolveCurrentPageInstance()) !== null && _resolveCurrentPageIn2 !== void 0 ? _resolveCurrentPageIn2 : resolvePageFromContext(context);
224
- return pageLayoutBridgeRegistry.resolveHost(key, resolvePageKeys(page), (bridge, key) => {
225
- var _bridge$selectCompone;
226
- return (_bridge$selectCompone = bridge.selectComponent) === null || _bridge$selectCompone === void 0 ? void 0 : _bridge$selectCompone.call(bridge, key);
227
- });
205
+ const context = options.context ?? options.fallbackContext;
206
+ const page = resolveCurrentPageInstance() ?? resolvePageFromContext(context);
207
+ return pageLayoutBridgeRegistry.resolveHost(key, resolvePageKeys(page), (bridge, key) => bridge.selectComponent?.(key));
228
208
  }
229
209
  /**
230
210
  * 等待当前页面 layout 宿主实例可用,适合页面初次进入时的异步宿主解析。
231
211
  */
232
212
  function waitForLayoutHost(key, options = {}) {
233
- var _options$context2;
234
- const context = (_options$context2 = options.context) !== null && _options$context2 !== void 0 ? _options$context2 : options.fallbackContext;
235
- return pageLayoutBridgeRegistry.waitForHost(key, () => {
236
- var _resolveCurrentPageIn3;
237
- return resolvePageKeys((_resolveCurrentPageIn3 = resolveCurrentPageInstance()) !== null && _resolveCurrentPageIn3 !== void 0 ? _resolveCurrentPageIn3 : resolvePageFromContext(context));
238
- }, (bridge, key) => {
239
- var _bridge$selectCompone2;
240
- return (_bridge$selectCompone2 = bridge.selectComponent) === null || _bridge$selectCompone2 === void 0 ? void 0 : _bridge$selectCompone2.call(bridge, key);
241
- }, options);
213
+ const context = options.context ?? options.fallbackContext;
214
+ return pageLayoutBridgeRegistry.waitForHost(key, () => resolvePageKeys(resolveCurrentPageInstance() ?? resolvePageFromContext(context)), (bridge, key) => bridge.selectComponent?.(key), options);
242
215
  }
243
216
  /**
244
217
  * 在 layout 生命周期内暴露 bridge,使页面或子组件可访问 layout 内部实例。
@@ -251,15 +224,12 @@ function useLayoutBridge(selectors, options = {}) {
251
224
  const nativeContext = resolveNativeLayoutContext(context);
252
225
  const bridgeBase = nativeContext && typeof nativeContext === "object" ? Object.create(nativeContext) : {};
253
226
  const bridge = Object.assign(bridgeBase, { selectComponent(selector) {
254
- var _nativeContext$select, _currentPage$selectCo, _currentPage$selectCo2;
255
227
  if (!normalizedSelectors.includes(selector)) return null;
256
- const resolvedComponent = resolveComponent === null || resolveComponent === void 0 ? void 0 : resolveComponent(selector);
228
+ const resolvedComponent = resolveComponent?.(selector);
257
229
  if (resolvedComponent !== void 0) return resolvedComponent;
258
- const nativeContext = resolveNativeLayoutContext(context);
259
- const directMatch = nativeContext === null || nativeContext === void 0 || (_nativeContext$select = nativeContext.selectComponent) === null || _nativeContext$select === void 0 ? void 0 : _nativeContext$select.call(nativeContext, selector);
230
+ const directMatch = resolveNativeLayoutContext(context)?.selectComponent?.(selector);
260
231
  if (directMatch) return directMatch;
261
- const currentPage = resolveCurrentPageInstance();
262
- return (_currentPage$selectCo = currentPage === null || currentPage === void 0 || (_currentPage$selectCo2 = currentPage.selectComponent) === null || _currentPage$selectCo2 === void 0 ? void 0 : _currentPage$selectCo2.call(currentPage, selector)) !== null && _currentPage$selectCo !== void 0 ? _currentPage$selectCo : null;
232
+ return resolveCurrentPageInstance()?.selectComponent?.(selector) ?? null;
263
233
  } });
264
234
  registerPageLayoutBridge(normalizedSelectors, bridge);
265
235
  onAttached(() => {
@@ -274,7 +244,7 @@ function useLayoutBridge(selectors, options = {}) {
274
244
  */
275
245
  function registerRuntimeLayoutHosts(bindings, context) {
276
246
  if (!bindings.length) return null;
277
- const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
247
+ const bridgeContext = context ?? getCurrentInstance();
278
248
  if (!bridgeContext) return null;
279
249
  const bridge = createDeclaredLayoutHostBridge(bindings, bridgeContext);
280
250
  registerPageLayoutBridge(bindings.map((binding) => binding.key), bridge);
@@ -285,7 +255,7 @@ function registerRuntimeLayoutHosts(bindings, context) {
285
255
  */
286
256
  function unregisterRuntimeLayoutHosts(bindings, context) {
287
257
  if (!bindings.length) return false;
288
- const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
258
+ const bridgeContext = context ?? getCurrentInstance();
289
259
  if (!bridgeContext) return false;
290
260
  return unregisterPageLayoutBridge(bindings.map((binding) => binding.key), bridgeContext);
291
261
  }
@@ -1 +1 @@
1
- {"version":3,"file":"layoutBridge.mjs","names":[],"sources":["../../../src/runtime/layoutBridge.ts"],"sourcesContent":["import type { Ref } from '../reactivity'\nimport type { LayoutHostBinding } from './capabilities'\nimport {\n WEVU_LAYOUT_BRIDGE_PAGE_KEYS,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { isRef } from '../reactivity'\nimport { getCurrentInstance, getCurrentSetupContext, onAttached, onDetached } from './hooks'\nimport { getCurrentMiniProgramPages } from './platform'\nimport { getTemplateRefMap } from './templateRefs/helpers'\n\ntype LayoutBridgeContext = Record<string, any>\ntype LayoutBridgeComponentResolver = (selector: string) => any\ntype LayoutHostMap = Record<string, unknown>\nexport type LayoutBridgeInstance<T = LayoutBridgeContext> = T & {\n selectComponent?: LayoutBridgeComponentResolver\n}\nexport type { LayoutHostBinding } from './capabilities'\ninterface LayoutHostResolveOptions<T = any> {\n context?: T\n fallbackContext?: T\n interval?: number\n retries?: number\n}\n\n/**\n * @description 对 layout host key 去重并过滤空字符串。\n */\nfunction normalizeLayoutHostKeys(keys: string | string[]) {\n return Array.from(new Set(Array.isArray(keys) ? keys : [keys]))\n .filter((key): key is string => typeof key === 'string' && key.length > 0)\n}\n\n/**\n * @description 解析小程序页面实例的稳定身份 key。\n */\nfunction resolvePageIdentityKeys(page?: Record<string, any>): string[] {\n if (!page || typeof page !== 'object') {\n return []\n }\n\n const keys: string[] = []\n const route = typeof page.route === 'string' ? page.route.replace(/^\\/+/, '') : ''\n if (route) {\n keys.push(`route:${route}`)\n }\n for (const [prefix, field] of [\n ['webview', '__wxWebviewId__'],\n ['exparser', '__wxExparserNodeId__'],\n ] as const) {\n const value = page[field]\n if (typeof value === 'number' || typeof value === 'string') {\n keys.push(`${prefix}:${String(value)}`)\n }\n }\n\n return Array.from(new Set(keys))\n}\n\n/**\n * @description 创建小程序 layout host 注册表。\n */\nfunction createLayoutHostRegistry<TBridge>() {\n const registries = new Map<string, Map<string, TBridge>>()\n\n function register(keys: string | string[], bridge: TBridge, pageKeys: string[]) {\n const normalizedKeys = normalizeLayoutHostKeys(keys)\n if (normalizedKeys.length === 0 || pageKeys.length === 0) {\n return null\n }\n\n for (const pageKey of pageKeys) {\n const registry = registries.get(pageKey) ?? new Map<string, TBridge>()\n for (const key of normalizedKeys) {\n registry.set(key, bridge)\n }\n registries.set(pageKey, registry)\n }\n\n return normalizedKeys\n }\n\n function unregister(keys: string | string[], bridge: TBridge, pageKeys: string[]) {\n const normalizedKeys = normalizeLayoutHostKeys(keys)\n if (normalizedKeys.length === 0 || pageKeys.length === 0) {\n return false\n }\n\n let removed = false\n for (const pageKey of pageKeys) {\n const registry = registries.get(pageKey)\n if (!registry) {\n continue\n }\n\n for (const key of normalizedKeys) {\n if (registry.get(key) === bridge) {\n registry.delete(key)\n removed = true\n }\n }\n\n if (registry.size === 0) {\n registries.delete(pageKey)\n }\n }\n\n return removed\n }\n\n function resolveBridge(key: string, pageKeys: string[]) {\n return pageKeys\n .map(pageKey => registries.get(pageKey)?.get(key))\n .find(Boolean)\n }\n\n function resolveHost<THost>(\n key: string,\n pageKeys: string[],\n resolver: (bridge: TBridge, key: string) => THost | null | undefined,\n ) {\n const bridge = resolveBridge(key, pageKeys)\n if (!bridge) {\n return null\n }\n return resolver(bridge, key) ?? null\n }\n\n function waitForHost<THost>(\n key: string,\n resolvePageKeys: () => string[],\n resolver: (bridge: TBridge, key: string) => THost | null | undefined,\n options: { interval?: number, retries?: number } = {},\n ): Promise<THost | null> {\n const retries = options.retries ?? 20\n const interval = options.interval ?? 16\n const host = resolveHost(key, resolvePageKeys(), resolver)\n if (host || retries <= 0) {\n return Promise.resolve(host)\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(waitForHost(key, resolvePageKeys, resolver, {\n ...options,\n retries: retries - 1,\n }))\n }, interval)\n })\n }\n\n return {\n register,\n resolveBridge,\n resolveHost,\n unregister,\n waitForHost,\n }\n}\n\nconst pageLayoutBridgeRegistry = createLayoutHostRegistry<LayoutBridgeContext>()\n\nfunction resolveCurrentPageInstance() {\n const pages = getCurrentMiniProgramPages()\n return pages[pages.length - 1]\n}\n\nfunction resolvePageKeys(page?: LayoutBridgeContext) {\n return resolvePageIdentityKeys(page as Record<string, any> | undefined)\n}\n\nfunction resolveNativeLayoutContext(context?: LayoutBridgeContext) {\n if (!context || typeof context !== 'object') {\n return undefined\n }\n\n const runtimeNativeInstance = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.[WEVU_NATIVE_INSTANCE_KEY]\n if (runtimeNativeInstance && typeof runtimeNativeInstance === 'object') {\n return runtimeNativeInstance as LayoutBridgeContext\n }\n\n const stateNativeInstance = context.$state?.[WEVU_NATIVE_INSTANCE_KEY]\n if (stateNativeInstance && typeof stateNativeInstance === 'object') {\n return stateNativeInstance as LayoutBridgeContext\n }\n\n if (context[WEVU_NATIVE_INSTANCE_KEY] && typeof context[WEVU_NATIVE_INSTANCE_KEY] === 'object') {\n return context[WEVU_NATIVE_INSTANCE_KEY] as LayoutBridgeContext\n }\n\n return context\n}\n\nfunction resolvePageFromContext(\n context?: LayoutBridgeContext,\n visited = new Set<LayoutBridgeContext>(),\n): LayoutBridgeContext | undefined {\n if (!context || typeof context !== 'object' || visited.has(context)) {\n return resolveCurrentPageInstance()\n }\n visited.add(context)\n\n if (typeof context.__wevuSetPageLayout === 'function') {\n return context\n }\n\n const nativeContext = resolveNativeLayoutContext(context)\n if (nativeContext && nativeContext !== context) {\n const nativePage = resolvePageFromContext(nativeContext, visited)\n if (nativePage) {\n return nativePage\n }\n }\n\n const publicNativePage = context.$\n if (publicNativePage && typeof publicNativePage === 'object') {\n const nativePage = resolvePageFromContext(publicNativePage as LayoutBridgeContext, visited)\n if (nativePage) {\n return nativePage\n }\n }\n\n const ownerContext = nativeContext ?? context\n const selectOwnerComponent = ownerContext.selectOwnerComponent\n if (typeof selectOwnerComponent === 'function') {\n try {\n const owner = selectOwnerComponent.call(ownerContext) as LayoutBridgeContext | undefined\n if (owner && owner !== ownerContext) {\n const ownerPage = resolvePageFromContext(owner, visited)\n if (ownerPage) {\n return ownerPage\n }\n }\n }\n catch {\n // 部分宿主或生命周期阶段暂不支持 owner 查询,继续使用页面栈兜底。\n }\n }\n\n return resolveCurrentPageInstance()\n}\n\nfunction resolveHostEntry(entry: unknown) {\n if (typeof entry === 'function') {\n return (entry as () => unknown)()\n }\n if (isRef(entry as Ref<unknown>)) {\n return (entry as Ref<unknown>).value\n }\n return entry\n}\n\nfunction findLayoutHostBinding(bindings: readonly LayoutHostBinding[], key: string) {\n return bindings.find(binding => binding.key === key)\n}\n\nfunction safeSelectComponent(target: LayoutBridgeContext | undefined, selector: string) {\n const selectComponent = target?.selectComponent\n if (typeof selectComponent !== 'function') {\n return null\n }\n try {\n return selectComponent.call(target, selector) ?? null\n }\n catch {\n return null\n }\n}\n\nfunction resolveDeclaredLayoutHostFromRefs(\n binding: LayoutHostBinding,\n context: LayoutBridgeContext,\n) {\n if (!binding.refName) {\n return null\n }\n const refMap = getTemplateRefMap(context as any)\n const stateRefs = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.$refs\n ?? context.__wevu?.state?.$refs\n ?? context.$state?.$refs\n ?? context.$refs\n const refValue = refMap?.get(binding.refName)?.value\n ?? stateRefs?.[binding.refName]\n if (Array.isArray(refValue)) {\n return refValue[0] ?? null\n }\n return refValue ?? null\n}\n\nfunction createDeclaredLayoutHostBridge(bindings: readonly LayoutHostBinding[], context: LayoutBridgeContext) {\n const nativeContext = resolveNativeLayoutContext(context)\n const bridgeBase = nativeContext && typeof nativeContext === 'object'\n ? Object.create(nativeContext)\n : {}\n return Object.assign(bridgeBase, {\n selectComponent(key: string) {\n const binding = findLayoutHostBinding(bindings, key)\n if (!binding) {\n return null\n }\n if (binding.kind === 'component' || !binding.kind) {\n const cachedHost = resolveDeclaredLayoutHostFromRefs(binding, context)\n if (cachedHost) {\n return cachedHost\n }\n return safeSelectComponent(nativeContext, binding.selector)\n ?? safeSelectComponent(resolveCurrentPageInstance(), binding.selector)\n ?? null\n }\n return null\n },\n })\n}\n\n/**\n * 为当前页面注册 layout bridge,使页面或子组件可消费 layout 内部能力。\n */\nexport function registerPageLayoutBridge(\n selectors: string | string[],\n context?: LayoutBridgeContext,\n) {\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n const page = resolvePageFromContext(bridgeContext)\n const pageKeys = resolvePageKeys(page)\n if (!bridgeContext || !page || pageKeys.length === 0) {\n return false\n }\n\n const normalizedSelectors = pageLayoutBridgeRegistry.register(selectors, bridgeContext, pageKeys)\n if (!normalizedSelectors) {\n return false\n }\n\n bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] = pageKeys\n return true\n}\n\n/**\n * 移除当前页面的 layout bridge 注册。\n */\nexport function unregisterPageLayoutBridge(\n selectors: string | string[],\n context?: LayoutBridgeContext,\n) {\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n const page = resolvePageFromContext(bridgeContext)\n const pageKeys = bridgeContext?.[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] ?? resolvePageKeys(page)\n if (!bridgeContext || !Array.isArray(pageKeys) || pageKeys.length === 0) {\n return false\n }\n\n const removed = pageLayoutBridgeRegistry.unregister(selectors, bridgeContext, pageKeys)\n delete bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS]\n return removed\n}\n\n/**\n * 解析当前页面已注册的 layout bridge,找不到时回退到传入上下文。\n */\nexport function resolveLayoutBridge<T = any>(\n selector: string,\n fallbackContext?: T,\n) {\n const page = resolveCurrentPageInstance() ?? resolvePageFromContext(fallbackContext as LayoutBridgeContext | undefined)\n const bridgeContext = pageLayoutBridgeRegistry.resolveBridge(selector, resolvePageKeys(page))\n return (bridgeContext ?? fallbackContext ?? getCurrentInstance()) as LayoutBridgeInstance<T> | undefined\n}\n\n/**\n * 解析当前页面 layout 内通过指定 key 暴露的宿主实例。\n */\nexport function resolveLayoutHost<T = any, C = any>(\n key: string,\n options: LayoutHostResolveOptions<C> = {},\n) {\n const context = options.context ?? options.fallbackContext\n const page = resolveCurrentPageInstance() ?? resolvePageFromContext(context as LayoutBridgeContext | undefined)\n return pageLayoutBridgeRegistry.resolveHost<T>(\n key,\n resolvePageKeys(page),\n (bridge, key) => bridge.selectComponent?.(key) as T | null,\n )\n}\n\n/**\n * 等待当前页面 layout 宿主实例可用,适合页面初次进入时的异步宿主解析。\n */\nexport function waitForLayoutHost<T = any, C = any>(\n key: string,\n options: LayoutHostResolveOptions<C> = {},\n) {\n const context = options.context ?? options.fallbackContext\n return pageLayoutBridgeRegistry.waitForHost<T>(\n key,\n () => resolvePageKeys(resolveCurrentPageInstance() ?? resolvePageFromContext(context as LayoutBridgeContext | undefined)),\n (bridge, key) => bridge.selectComponent?.(key) as T | null,\n options,\n )\n}\n\n/**\n * 在 layout 生命周期内暴露 bridge,使页面或子组件可访问 layout 内部实例。\n */\nexport function useLayoutBridge(\n selectors: string | string[],\n options: {\n resolveComponent?: LayoutBridgeComponentResolver\n } = {},\n) {\n if (!getCurrentSetupContext()) {\n throw new Error('useLayoutBridge() 必须在 setup() 的同步阶段调用')\n }\n\n const context = getCurrentInstance<LayoutBridgeContext>()\n const normalizedSelectors = normalizeLayoutHostKeys(selectors)\n const resolveComponent = options.resolveComponent\n const nativeContext = resolveNativeLayoutContext(context)\n const bridgeBase = nativeContext && typeof nativeContext === 'object'\n ? Object.create(nativeContext)\n : {}\n const bridge = Object.assign(bridgeBase, {\n selectComponent(selector: string) {\n if (!normalizedSelectors.includes(selector)) {\n return null\n }\n\n const resolvedComponent = resolveComponent?.(selector)\n if (resolvedComponent !== undefined) {\n return resolvedComponent\n }\n\n const nativeContext = resolveNativeLayoutContext(context)\n const directMatch = nativeContext?.selectComponent?.(selector)\n if (directMatch) {\n return directMatch\n }\n\n const currentPage = resolveCurrentPageInstance()\n return currentPage?.selectComponent?.(selector) ?? null\n },\n })\n\n registerPageLayoutBridge(normalizedSelectors, bridge)\n\n onAttached(() => {\n registerPageLayoutBridge(normalizedSelectors, bridge)\n })\n\n onDetached(() => {\n unregisterPageLayoutBridge(normalizedSelectors, bridge)\n })\n}\n\n/**\n * 使用编译期注入的宿主绑定信息,直接从当前 layout 运行时实例解析子组件宿主并注册 bridge。\n */\nexport function registerRuntimeLayoutHosts(\n bindings: readonly LayoutHostBinding[],\n context?: LayoutBridgeContext,\n) {\n if (!bindings.length) {\n return null\n }\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n if (!bridgeContext) {\n return null\n }\n const bridge = createDeclaredLayoutHostBridge(bindings, bridgeContext)\n registerPageLayoutBridge(bindings.map(binding => binding.key), bridge)\n return bridge\n}\n\n/**\n * 移除运行时自动注册的 layout 宿主 bridge。\n */\nexport function unregisterRuntimeLayoutHosts(\n bindings: readonly LayoutHostBinding[],\n context?: LayoutBridgeContext,\n) {\n if (!bindings.length) {\n return false\n }\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n if (!bridgeContext) {\n return false\n }\n return unregisterPageLayoutBridge(\n bindings.map(binding => binding.key),\n bridgeContext,\n )\n}\n\n/**\n * 使用 key -> 宿主实例的映射批量暴露 layout 内部宿主,适合 toast/dialog 等共享反馈节点。\n */\nexport function useLayoutHosts(hosts: LayoutHostMap) {\n const selectors = Object.keys(hosts)\n useLayoutBridge(selectors, {\n resolveComponent(key) {\n return resolveHostEntry(hosts[key])\n },\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"layoutBridge.mjs","names":[],"sources":["../../../src/runtime/layoutBridge.ts"],"sourcesContent":["import type { Ref } from '../reactivity'\nimport type { LayoutHostBinding } from './capabilities'\nimport {\n WEVU_LAYOUT_BRIDGE_PAGE_KEYS,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { isRef } from '../reactivity'\nimport { getCurrentInstance, getCurrentSetupContext, onAttached, onDetached } from './hooks'\nimport { getCurrentMiniProgramPages } from './platform'\nimport { getTemplateRefMap } from './templateRefs/helpers'\n\ntype LayoutBridgeContext = Record<string, any>\ntype LayoutBridgeComponentResolver = (selector: string) => any\ntype LayoutHostMap = Record<string, unknown>\nexport type LayoutBridgeInstance<T = LayoutBridgeContext> = T & {\n selectComponent?: LayoutBridgeComponentResolver\n}\nexport type { LayoutHostBinding } from './capabilities'\ninterface LayoutHostResolveOptions<T = any> {\n context?: T\n fallbackContext?: T\n interval?: number\n retries?: number\n}\n\n/**\n * @description 对 layout host key 去重并过滤空字符串。\n */\nfunction normalizeLayoutHostKeys(keys: string | string[]) {\n return Array.from(new Set(Array.isArray(keys) ? keys : [keys]))\n .filter((key): key is string => typeof key === 'string' && key.length > 0)\n}\n\n/**\n * @description 解析小程序页面实例的稳定身份 key。\n */\nfunction resolvePageIdentityKeys(page?: Record<string, any>): string[] {\n if (!page || typeof page !== 'object') {\n return []\n }\n\n const keys: string[] = []\n const route = typeof page.route === 'string' ? page.route.replace(/^\\/+/, '') : ''\n if (route) {\n keys.push(`route:${route}`)\n }\n for (const [prefix, field] of [\n ['webview', '__wxWebviewId__'],\n ['exparser', '__wxExparserNodeId__'],\n ] as const) {\n const value = page[field]\n if (typeof value === 'number' || typeof value === 'string') {\n keys.push(`${prefix}:${String(value)}`)\n }\n }\n\n return Array.from(new Set(keys))\n}\n\n/**\n * @description 创建小程序 layout host 注册表。\n */\nfunction createLayoutHostRegistry<TBridge>() {\n const registries = new Map<string, Map<string, TBridge>>()\n\n function register(keys: string | string[], bridge: TBridge, pageKeys: string[]) {\n const normalizedKeys = normalizeLayoutHostKeys(keys)\n if (normalizedKeys.length === 0 || pageKeys.length === 0) {\n return null\n }\n\n for (const pageKey of pageKeys) {\n const registry = registries.get(pageKey) ?? new Map<string, TBridge>()\n for (const key of normalizedKeys) {\n registry.set(key, bridge)\n }\n registries.set(pageKey, registry)\n }\n\n return normalizedKeys\n }\n\n function unregister(keys: string | string[], bridge: TBridge, pageKeys: string[]) {\n const normalizedKeys = normalizeLayoutHostKeys(keys)\n if (normalizedKeys.length === 0 || pageKeys.length === 0) {\n return false\n }\n\n let removed = false\n for (const pageKey of pageKeys) {\n const registry = registries.get(pageKey)\n if (!registry) {\n continue\n }\n\n for (const key of normalizedKeys) {\n if (registry.get(key) === bridge) {\n registry.delete(key)\n removed = true\n }\n }\n\n if (registry.size === 0) {\n registries.delete(pageKey)\n }\n }\n\n return removed\n }\n\n function resolveBridge(key: string, pageKeys: string[]) {\n return pageKeys\n .map(pageKey => registries.get(pageKey)?.get(key))\n .find(Boolean)\n }\n\n function resolveHost<THost>(\n key: string,\n pageKeys: string[],\n resolver: (bridge: TBridge, key: string) => THost | null | undefined,\n ) {\n const bridge = resolveBridge(key, pageKeys)\n if (!bridge) {\n return null\n }\n return resolver(bridge, key) ?? null\n }\n\n function waitForHost<THost>(\n key: string,\n resolvePageKeys: () => string[],\n resolver: (bridge: TBridge, key: string) => THost | null | undefined,\n options: { interval?: number, retries?: number } = {},\n ): Promise<THost | null> {\n const retries = options.retries ?? 20\n const interval = options.interval ?? 16\n const host = resolveHost(key, resolvePageKeys(), resolver)\n if (host || retries <= 0) {\n return Promise.resolve(host)\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(waitForHost(key, resolvePageKeys, resolver, {\n ...options,\n retries: retries - 1,\n }))\n }, interval)\n })\n }\n\n return {\n register,\n resolveBridge,\n resolveHost,\n unregister,\n waitForHost,\n }\n}\n\nconst pageLayoutBridgeRegistry = createLayoutHostRegistry<LayoutBridgeContext>()\n\nfunction resolveCurrentPageInstance() {\n const pages = getCurrentMiniProgramPages()\n return pages[pages.length - 1]\n}\n\nfunction resolvePageKeys(page?: LayoutBridgeContext) {\n return resolvePageIdentityKeys(page as Record<string, any> | undefined)\n}\n\nfunction resolveNativeLayoutContext(context?: LayoutBridgeContext) {\n if (!context || typeof context !== 'object') {\n return undefined\n }\n\n const runtimeNativeInstance = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.[WEVU_NATIVE_INSTANCE_KEY]\n if (runtimeNativeInstance && typeof runtimeNativeInstance === 'object') {\n return runtimeNativeInstance as LayoutBridgeContext\n }\n\n const stateNativeInstance = context.$state?.[WEVU_NATIVE_INSTANCE_KEY]\n if (stateNativeInstance && typeof stateNativeInstance === 'object') {\n return stateNativeInstance as LayoutBridgeContext\n }\n\n if (context[WEVU_NATIVE_INSTANCE_KEY] && typeof context[WEVU_NATIVE_INSTANCE_KEY] === 'object') {\n return context[WEVU_NATIVE_INSTANCE_KEY] as LayoutBridgeContext\n }\n\n return context\n}\n\nfunction resolvePageFromContext(\n context?: LayoutBridgeContext,\n visited = new Set<LayoutBridgeContext>(),\n): LayoutBridgeContext | undefined {\n if (!context || typeof context !== 'object' || visited.has(context)) {\n return resolveCurrentPageInstance()\n }\n visited.add(context)\n\n if (typeof context.__wevuSetPageLayout === 'function') {\n return context\n }\n\n const nativeContext = resolveNativeLayoutContext(context)\n if (nativeContext && nativeContext !== context) {\n const nativePage = resolvePageFromContext(nativeContext, visited)\n if (nativePage) {\n return nativePage\n }\n }\n\n const publicNativePage = context.$\n if (publicNativePage && typeof publicNativePage === 'object') {\n const nativePage = resolvePageFromContext(publicNativePage as LayoutBridgeContext, visited)\n if (nativePage) {\n return nativePage\n }\n }\n\n const ownerContext = nativeContext ?? context\n const selectOwnerComponent = ownerContext.selectOwnerComponent\n if (typeof selectOwnerComponent === 'function') {\n try {\n const owner = selectOwnerComponent.call(ownerContext) as LayoutBridgeContext | undefined\n if (owner && owner !== ownerContext) {\n const ownerPage = resolvePageFromContext(owner, visited)\n if (ownerPage) {\n return ownerPage\n }\n }\n }\n catch {\n // 部分宿主或生命周期阶段暂不支持 owner 查询,继续使用页面栈兜底。\n }\n }\n\n return resolveCurrentPageInstance()\n}\n\nfunction resolveHostEntry(entry: unknown) {\n if (typeof entry === 'function') {\n return (entry as () => unknown)()\n }\n if (isRef(entry as Ref<unknown>)) {\n return (entry as Ref<unknown>).value\n }\n return entry\n}\n\nfunction findLayoutHostBinding(bindings: readonly LayoutHostBinding[], key: string) {\n return bindings.find(binding => binding.key === key)\n}\n\nfunction safeSelectComponent(target: LayoutBridgeContext | undefined, selector: string) {\n const selectComponent = target?.selectComponent\n if (typeof selectComponent !== 'function') {\n return null\n }\n try {\n return selectComponent.call(target, selector) ?? null\n }\n catch {\n return null\n }\n}\n\nfunction resolveDeclaredLayoutHostFromRefs(\n binding: LayoutHostBinding,\n context: LayoutBridgeContext,\n) {\n if (!binding.refName) {\n return null\n }\n const refMap = getTemplateRefMap(context as any)\n const stateRefs = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.$refs\n ?? context.__wevu?.state?.$refs\n ?? context.$state?.$refs\n ?? context.$refs\n const refValue = refMap?.get(binding.refName)?.value\n ?? stateRefs?.[binding.refName]\n if (Array.isArray(refValue)) {\n return refValue[0] ?? null\n }\n return refValue ?? null\n}\n\nfunction createDeclaredLayoutHostBridge(bindings: readonly LayoutHostBinding[], context: LayoutBridgeContext) {\n const nativeContext = resolveNativeLayoutContext(context)\n const bridgeBase = nativeContext && typeof nativeContext === 'object'\n ? Object.create(nativeContext)\n : {}\n return Object.assign(bridgeBase, {\n selectComponent(key: string) {\n const binding = findLayoutHostBinding(bindings, key)\n if (!binding) {\n return null\n }\n if (binding.kind === 'component' || !binding.kind) {\n const cachedHost = resolveDeclaredLayoutHostFromRefs(binding, context)\n if (cachedHost) {\n return cachedHost\n }\n return safeSelectComponent(nativeContext, binding.selector)\n ?? safeSelectComponent(resolveCurrentPageInstance(), binding.selector)\n ?? null\n }\n return null\n },\n })\n}\n\n/**\n * 为当前页面注册 layout bridge,使页面或子组件可消费 layout 内部能力。\n */\nexport function registerPageLayoutBridge(\n selectors: string | string[],\n context?: LayoutBridgeContext,\n) {\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n const page = resolvePageFromContext(bridgeContext)\n const pageKeys = resolvePageKeys(page)\n if (!bridgeContext || !page || pageKeys.length === 0) {\n return false\n }\n\n const normalizedSelectors = pageLayoutBridgeRegistry.register(selectors, bridgeContext, pageKeys)\n if (!normalizedSelectors) {\n return false\n }\n\n bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] = pageKeys\n return true\n}\n\n/**\n * 移除当前页面的 layout bridge 注册。\n */\nexport function unregisterPageLayoutBridge(\n selectors: string | string[],\n context?: LayoutBridgeContext,\n) {\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n const page = resolvePageFromContext(bridgeContext)\n const pageKeys = bridgeContext?.[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] ?? resolvePageKeys(page)\n if (!bridgeContext || !Array.isArray(pageKeys) || pageKeys.length === 0) {\n return false\n }\n\n const removed = pageLayoutBridgeRegistry.unregister(selectors, bridgeContext, pageKeys)\n delete bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS]\n return removed\n}\n\n/**\n * 解析当前页面已注册的 layout bridge,找不到时回退到传入上下文。\n */\nexport function resolveLayoutBridge<T = any>(\n selector: string,\n fallbackContext?: T,\n) {\n const page = resolveCurrentPageInstance() ?? resolvePageFromContext(fallbackContext as LayoutBridgeContext | undefined)\n const bridgeContext = pageLayoutBridgeRegistry.resolveBridge(selector, resolvePageKeys(page))\n return (bridgeContext ?? fallbackContext ?? getCurrentInstance()) as LayoutBridgeInstance<T> | undefined\n}\n\n/**\n * 解析当前页面 layout 内通过指定 key 暴露的宿主实例。\n */\nexport function resolveLayoutHost<T = any, C = any>(\n key: string,\n options: LayoutHostResolveOptions<C> = {},\n) {\n const context = options.context ?? options.fallbackContext\n const page = resolveCurrentPageInstance() ?? resolvePageFromContext(context as LayoutBridgeContext | undefined)\n return pageLayoutBridgeRegistry.resolveHost<T>(\n key,\n resolvePageKeys(page),\n (bridge, key) => bridge.selectComponent?.(key) as T | null,\n )\n}\n\n/**\n * 等待当前页面 layout 宿主实例可用,适合页面初次进入时的异步宿主解析。\n */\nexport function waitForLayoutHost<T = any, C = any>(\n key: string,\n options: LayoutHostResolveOptions<C> = {},\n) {\n const context = options.context ?? options.fallbackContext\n return pageLayoutBridgeRegistry.waitForHost<T>(\n key,\n () => resolvePageKeys(resolveCurrentPageInstance() ?? resolvePageFromContext(context as LayoutBridgeContext | undefined)),\n (bridge, key) => bridge.selectComponent?.(key) as T | null,\n options,\n )\n}\n\n/**\n * 在 layout 生命周期内暴露 bridge,使页面或子组件可访问 layout 内部实例。\n */\nexport function useLayoutBridge(\n selectors: string | string[],\n options: {\n resolveComponent?: LayoutBridgeComponentResolver\n } = {},\n) {\n if (!getCurrentSetupContext()) {\n throw new Error('useLayoutBridge() 必须在 setup() 的同步阶段调用')\n }\n\n const context = getCurrentInstance<LayoutBridgeContext>()\n const normalizedSelectors = normalizeLayoutHostKeys(selectors)\n const resolveComponent = options.resolveComponent\n const nativeContext = resolveNativeLayoutContext(context)\n const bridgeBase = nativeContext && typeof nativeContext === 'object'\n ? Object.create(nativeContext)\n : {}\n const bridge = Object.assign(bridgeBase, {\n selectComponent(selector: string) {\n if (!normalizedSelectors.includes(selector)) {\n return null\n }\n\n const resolvedComponent = resolveComponent?.(selector)\n if (resolvedComponent !== undefined) {\n return resolvedComponent\n }\n\n const nativeContext = resolveNativeLayoutContext(context)\n const directMatch = nativeContext?.selectComponent?.(selector)\n if (directMatch) {\n return directMatch\n }\n\n const currentPage = resolveCurrentPageInstance()\n return currentPage?.selectComponent?.(selector) ?? null\n },\n })\n\n registerPageLayoutBridge(normalizedSelectors, bridge)\n\n onAttached(() => {\n registerPageLayoutBridge(normalizedSelectors, bridge)\n })\n\n onDetached(() => {\n unregisterPageLayoutBridge(normalizedSelectors, bridge)\n })\n}\n\n/**\n * 使用编译期注入的宿主绑定信息,直接从当前 layout 运行时实例解析子组件宿主并注册 bridge。\n */\nexport function registerRuntimeLayoutHosts(\n bindings: readonly LayoutHostBinding[],\n context?: LayoutBridgeContext,\n) {\n if (!bindings.length) {\n return null\n }\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n if (!bridgeContext) {\n return null\n }\n const bridge = createDeclaredLayoutHostBridge(bindings, bridgeContext)\n registerPageLayoutBridge(bindings.map(binding => binding.key), bridge)\n return bridge\n}\n\n/**\n * 移除运行时自动注册的 layout 宿主 bridge。\n */\nexport function unregisterRuntimeLayoutHosts(\n bindings: readonly LayoutHostBinding[],\n context?: LayoutBridgeContext,\n) {\n if (!bindings.length) {\n return false\n }\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n if (!bridgeContext) {\n return false\n }\n return unregisterPageLayoutBridge(\n bindings.map(binding => binding.key),\n bridgeContext,\n )\n}\n\n/**\n * 使用 key -> 宿主实例的映射批量暴露 layout 内部宿主,适合 toast/dialog 等共享反馈节点。\n */\nexport function useLayoutHosts(hosts: LayoutHostMap) {\n const selectors = Object.keys(hosts)\n useLayoutBridge(selectors, {\n resolveComponent(key) {\n return resolveHostEntry(hosts[key])\n },\n })\n}\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ function markNativeBridgeMethod(method) {
8
8
  enumerable: false,
9
9
  writable: false
10
10
  });
11
- } catch (_unused) {
11
+ } catch {
12
12
  method[NATIVE_BRIDGE_MARKER] = true;
13
13
  }
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nativeBridge.mjs","names":[],"sources":["../../../src/runtime/nativeBridge.ts"],"sourcesContent":["const NATIVE_BRIDGE_MARKER = '__wevu_native_bridge__'\n\nexport function markNativeBridgeMethod(method: (...args: any[]) => any) {\n try {\n Object.defineProperty(method, NATIVE_BRIDGE_MARKER, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(method as any)[NATIVE_BRIDGE_MARKER] = true\n }\n}\n\nexport function isNativeBridgeMethod(method: unknown): method is (...args: any[]) => any {\n return typeof method === 'function' && Boolean((method as any)[NATIVE_BRIDGE_MARKER])\n}\n"],"mappings":";AAAA,MAAM,uBAAuB;AAE7B,SAAgB,uBAAuB,QAAiC;CACtE,IAAI;EACF,OAAO,eAAe,QAAQ,sBAAsB;GAClD,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;EACZ,CAAC;CACH,kBACM;EACH,AAAC,OAAe,wBAAwB;CAC3C;AACF;AAEA,SAAgB,qBAAqB,QAAoD;CACvF,OAAO,OAAO,WAAW,cAAc,QAAS,OAAe,qBAAqB;AACtF"}
1
+ {"version":3,"file":"nativeBridge.mjs","names":[],"sources":["../../../src/runtime/nativeBridge.ts"],"sourcesContent":["const NATIVE_BRIDGE_MARKER = '__wevu_native_bridge__'\n\nexport function markNativeBridgeMethod(method: (...args: any[]) => any) {\n try {\n Object.defineProperty(method, NATIVE_BRIDGE_MARKER, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(method as any)[NATIVE_BRIDGE_MARKER] = true\n }\n}\n\nexport function isNativeBridgeMethod(method: unknown): method is (...args: any[]) => any {\n return typeof method === 'function' && Boolean((method as any)[NATIVE_BRIDGE_MARKER])\n}\n"],"mappings":";AAAA,MAAM,uBAAuB;AAE7B,SAAgB,uBAAuB,QAAiC;CACtE,IAAI;EACF,OAAO,eAAe,QAAQ,sBAAsB;GAClD,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;EACZ,CAAC;CACH,QACM;EACH,AAAC,OAAe,wBAAwB;CAC3C;AACF;AAEA,SAAgB,qBAAqB,QAAoD;CACvF,OAAO,OAAO,WAAW,cAAc,QAAS,OAAe,qBAAqB;AACtF"}
@@ -0,0 +1,24 @@
1
+ //#region src/runtime/navigationLifecycle.ts
2
+ let initialNavigationLifecycle;
3
+ /**
4
+ * 路由器注册首航任务时接入生命周期,基础组件不直接依赖导航状态机。
5
+ */
6
+ function registerInitialNavigationLifecycle(lifecycle) {
7
+ initialNavigationLifecycle = lifecycle;
8
+ }
9
+ /**
10
+ * 没有路由器时保留同步挂载,注册后实时转发到同一份首航状态机。
11
+ */
12
+ function ensureInitialNavigation(...args) {
13
+ return initialNavigationLifecycle?.ensure(...args);
14
+ }
15
+ /**
16
+ * 转发页面卸载,确保正在等待的首航守卫不会在卸载后继续挂载。
17
+ */
18
+ function cancelInitialNavigation(instance) {
19
+ initialNavigationLifecycle?.cancel(instance);
20
+ }
21
+
22
+ //#endregion
23
+ export { cancelInitialNavigation, ensureInitialNavigation, registerInitialNavigationLifecycle };
24
+ //# sourceMappingURL=navigationLifecycle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigationLifecycle.mjs","names":[],"sources":["../../../src/runtime/navigationLifecycle.ts"],"sourcesContent":["import type { LocationQueryRaw } from '../router/types'\nimport type { MiniProgramPageLike } from '../routerInternal/types'\n\nexport interface InitialNavigationLifecycle {\n ensure: (\n instance: MiniProgramPageLike,\n query?: LocationQueryRaw,\n options?: { start?: boolean, onComplete?: (shouldMount: boolean) => void },\n ) => Promise<boolean> | undefined\n cancel: (instance: MiniProgramPageLike) => void\n}\n\nlet initialNavigationLifecycle: InitialNavigationLifecycle | undefined\n\n/**\n * 路由器注册首航任务时接入生命周期,基础组件不直接依赖导航状态机。\n */\nexport function registerInitialNavigationLifecycle(lifecycle: InitialNavigationLifecycle): void {\n initialNavigationLifecycle = lifecycle\n}\n\n/**\n * 没有路由器时保留同步挂载,注册后实时转发到同一份首航状态机。\n */\nexport function ensureInitialNavigation(...args: Parameters<InitialNavigationLifecycle['ensure']>) {\n return initialNavigationLifecycle?.ensure(...args)\n}\n\n/**\n * 转发页面卸载,确保正在等待的首航守卫不会在卸载后继续挂载。\n */\nexport function cancelInitialNavigation(instance: MiniProgramPageLike): void {\n initialNavigationLifecycle?.cancel(instance)\n}\n"],"mappings":";AAYA,IAAI;;;;AAKJ,SAAgB,mCAAmC,WAA6C;CAC9F,6BAA6B;AAC/B;;;;AAKA,SAAgB,wBAAwB,GAAG,MAAwD;CACjG,OAAO,4BAA4B,OAAO,GAAG,IAAI;AACnD;;;;AAKA,SAAgB,wBAAwB,UAAqC;CAC3E,4BAA4B,OAAO,QAAQ;AAC7C"}
@@ -0,0 +1,5 @@
1
+ //#region src/runtime/noSetData.d.ts
2
+ export declare function markNoSetData<T extends object>(value: T): T;
3
+ export declare function isNoSetData(value: unknown): boolean;
4
+ //#endregion
5
+ //# sourceMappingURL=noSetData.d.mts.map
@@ -0,0 +1,50 @@
1
+ import { Ref } from "../reactivity/ref.mjs";
2
+ import { ComputedRef } from "../reactivity/computed.mjs";
3
+ import "../index.mjs";
4
+ //#region src/runtime/pageEnvironment.d.ts
5
+ export interface PageStackSnapshot {
6
+ canGoBack: boolean;
7
+ currentRoute: string;
8
+ stackLength: number;
9
+ }
10
+ export interface UsePageStackOptions {
11
+ autoRefresh?: boolean;
12
+ }
13
+ export interface NavigationBarMetrics {
14
+ navigationBarHeight: number;
15
+ navigationHeight: number;
16
+ statusBarHeight: number;
17
+ }
18
+ export interface UseNavigationBarMetricsOptions {
19
+ autoRefresh?: boolean;
20
+ defaultNavigationBarHeight?: number;
21
+ defaultStatusBarHeight?: number;
22
+ }
23
+ /**
24
+ * 获取当前小程序页面栈的稳定快照。
25
+ */
26
+ export declare function getCurrentPageStackSnapshot(): PageStackSnapshot;
27
+ /**
28
+ * 在 setup 中跟踪当前小程序页面栈状态。
29
+ */
30
+ export declare function usePageStack(options?: UsePageStackOptions): {
31
+ canGoBack: ComputedRef<boolean>;
32
+ currentRoute: Ref<string, string>;
33
+ refresh: () => void;
34
+ stackLength: Ref<number, number>;
35
+ };
36
+ /**
37
+ * 计算自定义导航栏所需的状态栏和胶囊占位高度。
38
+ */
39
+ export declare function getNavigationBarMetrics(options?: Omit<UseNavigationBarMetricsOptions, 'autoRefresh'>): NavigationBarMetrics;
40
+ /**
41
+ * 在 setup 中跟踪自定义导航栏尺寸。
42
+ */
43
+ export declare function useNavigationBarMetrics(options?: UseNavigationBarMetricsOptions): {
44
+ navigationBarHeight: Ref<number, number>;
45
+ navigationHeight: ComputedRef<number>;
46
+ refresh: () => void;
47
+ statusBarHeight: Ref<number, number>;
48
+ };
49
+ //#endregion
50
+ //# sourceMappingURL=pageEnvironment.d.mts.map
@@ -1,13 +1,13 @@
1
1
  import { ref } from "../reactivity/ref.mjs";
2
2
  import { computed } from "../reactivity/computed.mjs";
3
- import { getCurrentMiniProgramPages, getMiniProgramGlobalObject } from "./platform.mjs";
3
+ import { getCurrentMiniProgramGlobalObject } from "./platform/current.mjs";
4
+ import { getCurrentMiniProgramPages } from "./platform.mjs";
4
5
  import { getCurrentSetupContext } from "./hooks/base.mjs";
5
6
  import { onAttached, onShow } from "./hooks/register.mjs";
6
7
 
7
8
  //#region src/runtime/pageEnvironment.ts
8
9
  function normalizeRoute(route) {
9
- var _route$split$0$replac, _route$split$;
10
- return route ? (_route$split$0$replac = (_route$split$ = route.split("?")[0]) === null || _route$split$ === void 0 ? void 0 : _route$split$.replace(/^\/+/, "")) !== null && _route$split$0$replac !== void 0 ? _route$split$0$replac : "" : "";
10
+ return route ? route.split("?")[0]?.replace(/^\/+/, "") ?? "" : "";
11
11
  }
12
12
  /**
13
13
  * 获取当前小程序页面栈的稳定快照。
@@ -18,7 +18,7 @@ function getCurrentPageStackSnapshot() {
18
18
  const stackLength = pages.length || 1;
19
19
  return {
20
20
  canGoBack: stackLength > 1,
21
- currentRoute: normalizeRoute(currentPage === null || currentPage === void 0 ? void 0 : currentPage.route),
21
+ currentRoute: normalizeRoute(currentPage?.route),
22
22
  stackLength
23
23
  };
24
24
  }
@@ -26,7 +26,6 @@ function getCurrentPageStackSnapshot() {
26
26
  * 在 setup 中跟踪当前小程序页面栈状态。
27
27
  */
28
28
  function usePageStack(options = {}) {
29
- var _options$autoRefresh;
30
29
  if (!getCurrentSetupContext()) throw new Error("usePageStack() 必须在 setup() 的同步阶段调用");
31
30
  const snapshot = getCurrentPageStackSnapshot();
32
31
  const currentRoute = ref(snapshot.currentRoute);
@@ -37,7 +36,7 @@ function usePageStack(options = {}) {
37
36
  currentRoute.value = nextSnapshot.currentRoute;
38
37
  stackLength.value = nextSnapshot.stackLength;
39
38
  };
40
- if ((_options$autoRefresh = options.autoRefresh) !== null && _options$autoRefresh !== void 0 ? _options$autoRefresh : true) {
39
+ if (options.autoRefresh ?? true) {
41
40
  onAttached(refresh);
42
41
  onShow(refresh);
43
42
  }
@@ -52,18 +51,17 @@ function usePageStack(options = {}) {
52
51
  * 计算自定义导航栏所需的状态栏和胶囊占位高度。
53
52
  */
54
53
  function getNavigationBarMetrics(options = {}) {
55
- var _options$defaultStatu, _options$defaultNavig;
56
- const defaultStatusBarHeight = (_options$defaultStatu = options.defaultStatusBarHeight) !== null && _options$defaultStatu !== void 0 ? _options$defaultStatu : 20;
57
- const defaultNavigationBarHeight = (_options$defaultNavig = options.defaultNavigationBarHeight) !== null && _options$defaultNavig !== void 0 ? _options$defaultNavig : 44;
58
- const miniProgramGlobal = getMiniProgramGlobalObject();
59
- const systemInfo = typeof (miniProgramGlobal === null || miniProgramGlobal === void 0 ? void 0 : miniProgramGlobal.getSystemInfoSync) === "function" ? miniProgramGlobal.getSystemInfoSync() : {};
60
- const statusBarHeight = Number((systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.statusBarHeight) || defaultStatusBarHeight);
54
+ const defaultStatusBarHeight = options.defaultStatusBarHeight ?? 20;
55
+ const defaultNavigationBarHeight = options.defaultNavigationBarHeight ?? 44;
56
+ const miniProgramGlobal = getCurrentMiniProgramGlobalObject();
57
+ const systemInfo = typeof miniProgramGlobal?.getSystemInfoSync === "function" ? miniProgramGlobal.getSystemInfoSync() : {};
58
+ const statusBarHeight = Number(systemInfo?.statusBarHeight || defaultStatusBarHeight);
61
59
  let menuButtonRect;
62
60
  try {
63
- menuButtonRect = typeof (miniProgramGlobal === null || miniProgramGlobal === void 0 ? void 0 : miniProgramGlobal.getMenuButtonBoundingClientRect) === "function" ? miniProgramGlobal.getMenuButtonBoundingClientRect() : void 0;
64
- } catch (_unused) {}
65
- const menuTop = Number((menuButtonRect === null || menuButtonRect === void 0 ? void 0 : menuButtonRect.top) || 0);
66
- const menuHeight = Number((menuButtonRect === null || menuButtonRect === void 0 ? void 0 : menuButtonRect.height) || 0);
61
+ menuButtonRect = typeof miniProgramGlobal?.getMenuButtonBoundingClientRect === "function" ? miniProgramGlobal.getMenuButtonBoundingClientRect() : void 0;
62
+ } catch {}
63
+ const menuTop = Number(menuButtonRect?.top || 0);
64
+ const menuHeight = Number(menuButtonRect?.height || 0);
67
65
  const navigationBarHeight = menuTop > statusBarHeight && menuHeight > 0 ? (menuTop - statusBarHeight) * 2 + menuHeight : defaultNavigationBarHeight;
68
66
  return {
69
67
  navigationBarHeight,
@@ -75,7 +73,6 @@ function getNavigationBarMetrics(options = {}) {
75
73
  * 在 setup 中跟踪自定义导航栏尺寸。
76
74
  */
77
75
  function useNavigationBarMetrics(options = {}) {
78
- var _options$autoRefresh2;
79
76
  if (!getCurrentSetupContext()) throw new Error("useNavigationBarMetrics() 必须在 setup() 的同步阶段调用");
80
77
  const initialMetrics = getNavigationBarMetrics(options);
81
78
  const statusBarHeight = ref(initialMetrics.statusBarHeight);
@@ -86,7 +83,7 @@ function useNavigationBarMetrics(options = {}) {
86
83
  statusBarHeight.value = nextMetrics.statusBarHeight;
87
84
  navigationBarHeight.value = nextMetrics.navigationBarHeight;
88
85
  };
89
- if ((_options$autoRefresh2 = options.autoRefresh) !== null && _options$autoRefresh2 !== void 0 ? _options$autoRefresh2 : true) onAttached(refresh);
86
+ if (options.autoRefresh ?? true) onAttached(refresh);
90
87
  return {
91
88
  navigationBarHeight,
92
89
  navigationHeight,
@@ -1 +1 @@
1
- {"version":3,"file":"pageEnvironment.mjs","names":[],"sources":["../../../src/runtime/pageEnvironment.ts"],"sourcesContent":["import { computed, ref } from '../reactivity'\nimport { getCurrentSetupContext, onAttached, onShow } from './hooks'\nimport { getCurrentMiniProgramPages, getMiniProgramGlobalObject } from './platform'\n\nexport interface PageStackSnapshot {\n canGoBack: boolean\n currentRoute: string\n stackLength: number\n}\n\nexport interface UsePageStackOptions {\n autoRefresh?: boolean\n}\n\nexport interface NavigationBarMetrics {\n navigationBarHeight: number\n navigationHeight: number\n statusBarHeight: number\n}\n\nexport interface UseNavigationBarMetricsOptions {\n autoRefresh?: boolean\n defaultNavigationBarHeight?: number\n defaultStatusBarHeight?: number\n}\n\ninterface MenuButtonRect {\n height?: number\n top?: number\n}\n\nfunction normalizeRoute(route?: string) {\n return route ? route.split('?')[0]?.replace(/^\\/+/, '') ?? '' : ''\n}\n\n/**\n * 获取当前小程序页面栈的稳定快照。\n */\nexport function getCurrentPageStackSnapshot(): PageStackSnapshot {\n const pages = getCurrentMiniProgramPages()\n const currentPage = pages[pages.length - 1]\n const stackLength = pages.length || 1\n return {\n canGoBack: stackLength > 1,\n currentRoute: normalizeRoute(currentPage?.route),\n stackLength,\n }\n}\n\n/**\n * 在 setup 中跟踪当前小程序页面栈状态。\n */\nexport function usePageStack(options: UsePageStackOptions = {}) {\n if (!getCurrentSetupContext()) {\n throw new Error('usePageStack() 必须在 setup() 的同步阶段调用')\n }\n\n const snapshot = getCurrentPageStackSnapshot()\n const currentRoute = ref(snapshot.currentRoute)\n const stackLength = ref(snapshot.stackLength)\n const canGoBack = computed(() => stackLength.value > 1)\n\n const refresh = () => {\n const nextSnapshot = getCurrentPageStackSnapshot()\n currentRoute.value = nextSnapshot.currentRoute\n stackLength.value = nextSnapshot.stackLength\n }\n\n if (options.autoRefresh ?? true) {\n onAttached(refresh)\n onShow(refresh)\n }\n\n return {\n canGoBack,\n currentRoute,\n refresh,\n stackLength,\n }\n}\n\n/**\n * 计算自定义导航栏所需的状态栏和胶囊占位高度。\n */\nexport function getNavigationBarMetrics(\n options: Omit<UseNavigationBarMetricsOptions, 'autoRefresh'> = {},\n): NavigationBarMetrics {\n const defaultStatusBarHeight = options.defaultStatusBarHeight ?? 20\n const defaultNavigationBarHeight = options.defaultNavigationBarHeight ?? 44\n const miniProgramGlobal = getMiniProgramGlobalObject()\n const systemInfo = typeof miniProgramGlobal?.getSystemInfoSync === 'function'\n ? miniProgramGlobal.getSystemInfoSync()\n : {}\n const statusBarHeight = Number(systemInfo?.statusBarHeight || defaultStatusBarHeight)\n let menuButtonRect: MenuButtonRect | undefined\n\n try {\n menuButtonRect = typeof miniProgramGlobal?.getMenuButtonBoundingClientRect === 'function'\n ? miniProgramGlobal.getMenuButtonBoundingClientRect()\n : undefined\n }\n catch {}\n\n const menuTop = Number(menuButtonRect?.top || 0)\n const menuHeight = Number(menuButtonRect?.height || 0)\n const navigationBarHeight = menuTop > statusBarHeight && menuHeight > 0\n ? (menuTop - statusBarHeight) * 2 + menuHeight\n : defaultNavigationBarHeight\n\n return {\n navigationBarHeight,\n navigationHeight: statusBarHeight + navigationBarHeight,\n statusBarHeight,\n }\n}\n\n/**\n * 在 setup 中跟踪自定义导航栏尺寸。\n */\nexport function useNavigationBarMetrics(options: UseNavigationBarMetricsOptions = {}) {\n if (!getCurrentSetupContext()) {\n throw new Error('useNavigationBarMetrics() 必须在 setup() 的同步阶段调用')\n }\n\n const initialMetrics = getNavigationBarMetrics(options)\n const statusBarHeight = ref(initialMetrics.statusBarHeight)\n const navigationBarHeight = ref(initialMetrics.navigationBarHeight)\n const navigationHeight = computed(() => statusBarHeight.value + navigationBarHeight.value)\n\n const refresh = () => {\n const nextMetrics = getNavigationBarMetrics(options)\n statusBarHeight.value = nextMetrics.statusBarHeight\n navigationBarHeight.value = nextMetrics.navigationBarHeight\n }\n\n if (options.autoRefresh ?? true) {\n onAttached(refresh)\n }\n\n return {\n navigationBarHeight,\n navigationHeight,\n refresh,\n statusBarHeight,\n }\n}\n"],"mappings":";;;;;;;AA+BA,SAAS,eAAe,OAAgB;;CACtC,OAAO,kDAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,kEAAI,QAAQ,QAAQ,EAAE,0EAAK,KAAK;AAClE;;;;AAKA,SAAgB,8BAAiD;CAC/D,MAAM,QAAQ,2BAA2B;CACzC,MAAM,cAAc,MAAM,MAAM,SAAS;CACzC,MAAM,cAAc,MAAM,UAAU;CACpC,OAAO;EACL,WAAW,cAAc;EACzB,cAAc,yEAAe,YAAa,KAAK;EAC/C;CACF;AACF;;;;AAKA,SAAgB,aAAa,UAA+B,CAAC,GAAG;;CAC9D,IAAI,CAAC,uBAAuB,GAC1B,MAAM,IAAI,MAAM,oCAAoC;CAGtD,MAAM,WAAW,4BAA4B;CAC7C,MAAM,eAAe,IAAI,SAAS,YAAY;CAC9C,MAAM,cAAc,IAAI,SAAS,WAAW;CAC5C,MAAM,YAAY,eAAe,YAAY,QAAQ,CAAC;CAEtD,MAAM,gBAAgB;EACpB,MAAM,eAAe,4BAA4B;EACjD,aAAa,QAAQ,aAAa;EAClC,YAAY,QAAQ,aAAa;CACnC;CAEA,4BAAI,QAAQ,kFAAe,MAAM;EAC/B,WAAW,OAAO;EAClB,OAAO,OAAO;CAChB;CAEA,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;;;;AAKA,SAAgB,wBACd,UAA+D,CAAC,GAC1C;;CACtB,MAAM,kDAAyB,QAAQ,+FAA0B;CACjE,MAAM,sDAA6B,QAAQ,mGAA8B;CACzE,MAAM,oBAAoB,2BAA2B;CACrD,MAAM,aAAa,8EAAO,kBAAmB,uBAAsB,aAC/D,kBAAkB,kBAAkB,IACpC,CAAC;CACL,MAAM,kBAAkB,gEAAO,WAAY,oBAAmB,sBAAsB;CACpF,IAAI;CAEJ,IAAI;EACF,iBAAiB,8EAAO,kBAAmB,qCAAoC,aAC3E,kBAAkB,gCAAgC,IAClD;CACN,kBACM,CAAC;CAEP,MAAM,UAAU,wEAAO,eAAgB,QAAO,CAAC;CAC/C,MAAM,aAAa,wEAAO,eAAgB,WAAU,CAAC;CACrD,MAAM,sBAAsB,UAAU,mBAAmB,aAAa,KACjE,UAAU,mBAAmB,IAAI,aAClC;CAEJ,OAAO;EACL;EACA,kBAAkB,kBAAkB;EACpC;CACF;AACF;;;;AAKA,SAAgB,wBAAwB,UAA0C,CAAC,GAAG;;CACpF,IAAI,CAAC,uBAAuB,GAC1B,MAAM,IAAI,MAAM,+CAA+C;CAGjE,MAAM,iBAAiB,wBAAwB,OAAO;CACtD,MAAM,kBAAkB,IAAI,eAAe,eAAe;CAC1D,MAAM,sBAAsB,IAAI,eAAe,mBAAmB;CAClE,MAAM,mBAAmB,eAAe,gBAAgB,QAAQ,oBAAoB,KAAK;CAEzF,MAAM,gBAAgB;EACpB,MAAM,cAAc,wBAAwB,OAAO;EACnD,gBAAgB,QAAQ,YAAY;EACpC,oBAAoB,QAAQ,YAAY;CAC1C;CAEA,6BAAI,QAAQ,oFAAe,MACzB,WAAW,OAAO;CAGpB,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"pageEnvironment.mjs","names":[],"sources":["../../../src/runtime/pageEnvironment.ts"],"sourcesContent":["import { computed, ref } from '../reactivity'\nimport { getCurrentSetupContext, onAttached, onShow } from './hooks'\nimport { getCurrentMiniProgramGlobalObject, getCurrentMiniProgramPages } from './platform'\n\nexport interface PageStackSnapshot {\n canGoBack: boolean\n currentRoute: string\n stackLength: number\n}\n\nexport interface UsePageStackOptions {\n autoRefresh?: boolean\n}\n\nexport interface NavigationBarMetrics {\n navigationBarHeight: number\n navigationHeight: number\n statusBarHeight: number\n}\n\nexport interface UseNavigationBarMetricsOptions {\n autoRefresh?: boolean\n defaultNavigationBarHeight?: number\n defaultStatusBarHeight?: number\n}\n\ninterface MenuButtonRect {\n height?: number\n top?: number\n}\n\nfunction normalizeRoute(route?: string) {\n return route ? route.split('?')[0]?.replace(/^\\/+/, '') ?? '' : ''\n}\n\n/**\n * 获取当前小程序页面栈的稳定快照。\n */\nexport function getCurrentPageStackSnapshot(): PageStackSnapshot {\n const pages = getCurrentMiniProgramPages()\n const currentPage = pages[pages.length - 1]\n const stackLength = pages.length || 1\n return {\n canGoBack: stackLength > 1,\n currentRoute: normalizeRoute(currentPage?.route),\n stackLength,\n }\n}\n\n/**\n * 在 setup 中跟踪当前小程序页面栈状态。\n */\nexport function usePageStack(options: UsePageStackOptions = {}) {\n if (!getCurrentSetupContext()) {\n throw new Error('usePageStack() 必须在 setup() 的同步阶段调用')\n }\n\n const snapshot = getCurrentPageStackSnapshot()\n const currentRoute = ref(snapshot.currentRoute)\n const stackLength = ref(snapshot.stackLength)\n const canGoBack = computed(() => stackLength.value > 1)\n\n const refresh = () => {\n const nextSnapshot = getCurrentPageStackSnapshot()\n currentRoute.value = nextSnapshot.currentRoute\n stackLength.value = nextSnapshot.stackLength\n }\n\n if (options.autoRefresh ?? true) {\n onAttached(refresh)\n onShow(refresh)\n }\n\n return {\n canGoBack,\n currentRoute,\n refresh,\n stackLength,\n }\n}\n\n/**\n * 计算自定义导航栏所需的状态栏和胶囊占位高度。\n */\nexport function getNavigationBarMetrics(\n options: Omit<UseNavigationBarMetricsOptions, 'autoRefresh'> = {},\n): NavigationBarMetrics {\n const defaultStatusBarHeight = options.defaultStatusBarHeight ?? 20\n const defaultNavigationBarHeight = options.defaultNavigationBarHeight ?? 44\n const miniProgramGlobal = getCurrentMiniProgramGlobalObject()\n const systemInfo = typeof miniProgramGlobal?.getSystemInfoSync === 'function'\n ? miniProgramGlobal.getSystemInfoSync()\n : {}\n const statusBarHeight = Number(systemInfo?.statusBarHeight || defaultStatusBarHeight)\n let menuButtonRect: MenuButtonRect | undefined\n\n try {\n menuButtonRect = typeof miniProgramGlobal?.getMenuButtonBoundingClientRect === 'function'\n ? miniProgramGlobal.getMenuButtonBoundingClientRect()\n : undefined\n }\n catch {}\n\n const menuTop = Number(menuButtonRect?.top || 0)\n const menuHeight = Number(menuButtonRect?.height || 0)\n const navigationBarHeight = menuTop > statusBarHeight && menuHeight > 0\n ? (menuTop - statusBarHeight) * 2 + menuHeight\n : defaultNavigationBarHeight\n\n return {\n navigationBarHeight,\n navigationHeight: statusBarHeight + navigationBarHeight,\n statusBarHeight,\n }\n}\n\n/**\n * 在 setup 中跟踪自定义导航栏尺寸。\n */\nexport function useNavigationBarMetrics(options: UseNavigationBarMetricsOptions = {}) {\n if (!getCurrentSetupContext()) {\n throw new Error('useNavigationBarMetrics() 必须在 setup() 的同步阶段调用')\n }\n\n const initialMetrics = getNavigationBarMetrics(options)\n const statusBarHeight = ref(initialMetrics.statusBarHeight)\n const navigationBarHeight = ref(initialMetrics.navigationBarHeight)\n const navigationHeight = computed(() => statusBarHeight.value + navigationBarHeight.value)\n\n const refresh = () => {\n const nextMetrics = getNavigationBarMetrics(options)\n statusBarHeight.value = nextMetrics.statusBarHeight\n navigationBarHeight.value = nextMetrics.navigationBarHeight\n }\n\n if (options.autoRefresh ?? true) {\n onAttached(refresh)\n }\n\n return {\n navigationBarHeight,\n navigationHeight,\n refresh,\n statusBarHeight,\n }\n}\n"],"mappings":";;;;;;;;AA+BA,SAAS,eAAe,OAAgB;CACtC,OAAO,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAQ,EAAE,KAAK,KAAK;AAClE;;;;AAKA,SAAgB,8BAAiD;CAC/D,MAAM,QAAQ,2BAA2B;CACzC,MAAM,cAAc,MAAM,MAAM,SAAS;CACzC,MAAM,cAAc,MAAM,UAAU;CACpC,OAAO;EACL,WAAW,cAAc;EACzB,cAAc,eAAe,aAAa,KAAK;EAC/C;CACF;AACF;;;;AAKA,SAAgB,aAAa,UAA+B,CAAC,GAAG;CAC9D,IAAI,CAAC,uBAAuB,GAC1B,MAAM,IAAI,MAAM,oCAAoC;CAGtD,MAAM,WAAW,4BAA4B;CAC7C,MAAM,eAAe,IAAI,SAAS,YAAY;CAC9C,MAAM,cAAc,IAAI,SAAS,WAAW;CAC5C,MAAM,YAAY,eAAe,YAAY,QAAQ,CAAC;CAEtD,MAAM,gBAAgB;EACpB,MAAM,eAAe,4BAA4B;EACjD,aAAa,QAAQ,aAAa;EAClC,YAAY,QAAQ,aAAa;CACnC;CAEA,IAAI,QAAQ,eAAe,MAAM;EAC/B,WAAW,OAAO;EAClB,OAAO,OAAO;CAChB;CAEA,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;;;;AAKA,SAAgB,wBACd,UAA+D,CAAC,GAC1C;CACtB,MAAM,yBAAyB,QAAQ,0BAA0B;CACjE,MAAM,6BAA6B,QAAQ,8BAA8B;CACzE,MAAM,oBAAoB,kCAAkC;CAC5D,MAAM,aAAa,OAAO,mBAAmB,sBAAsB,aAC/D,kBAAkB,kBAAkB,IACpC,CAAC;CACL,MAAM,kBAAkB,OAAO,YAAY,mBAAmB,sBAAsB;CACpF,IAAI;CAEJ,IAAI;EACF,iBAAiB,OAAO,mBAAmB,oCAAoC,aAC3E,kBAAkB,gCAAgC,IAClD;CACN,QACM,CAAC;CAEP,MAAM,UAAU,OAAO,gBAAgB,OAAO,CAAC;CAC/C,MAAM,aAAa,OAAO,gBAAgB,UAAU,CAAC;CACrD,MAAM,sBAAsB,UAAU,mBAAmB,aAAa,KACjE,UAAU,mBAAmB,IAAI,aAClC;CAEJ,OAAO;EACL;EACA,kBAAkB,kBAAkB;EACpC;CACF;AACF;;;;AAKA,SAAgB,wBAAwB,UAA0C,CAAC,GAAG;CACpF,IAAI,CAAC,uBAAuB,GAC1B,MAAM,IAAI,MAAM,+CAA+C;CAGjE,MAAM,iBAAiB,wBAAwB,OAAO;CACtD,MAAM,kBAAkB,IAAI,eAAe,eAAe;CAC1D,MAAM,sBAAsB,IAAI,eAAe,mBAAmB;CAClE,MAAM,mBAAmB,eAAe,gBAAgB,QAAQ,oBAAoB,KAAK;CAEzF,MAAM,gBAAgB;EACpB,MAAM,cAAc,wBAAwB,OAAO;EACnD,gBAAgB,QAAQ,YAAY;EACpC,oBAAoB,QAAQ,YAAY;CAC1C;CAEA,IAAI,QAAQ,eAAe,MACzB,WAAW,OAAO;CAGpB,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
@@ -0,0 +1,25 @@
1
+ //#region src/runtime/pageLayout.d.ts
2
+ type PageLayoutProps = object;
3
+ export interface WevuPageLayoutMap {}
4
+ type ResolveTypedPageLayoutName = keyof WevuPageLayoutMap extends never ? string : Extract<keyof WevuPageLayoutMap, string>;
5
+ type ResolveTypedPageLayoutProps<Name extends string> = Name extends keyof WevuPageLayoutMap ? WevuPageLayoutMap[Name] : PageLayoutProps;
6
+ type PageLayoutNamedState = { [Name in ResolveTypedPageLayoutName]: {
7
+ name: Name;
8
+ props: ResolveTypedPageLayoutProps<Name>;
9
+ }; }[ResolveTypedPageLayoutName];
10
+ export type PageLayoutState = PageLayoutNamedState | {
11
+ name: false;
12
+ props: Record<string, any>;
13
+ } | {
14
+ name: undefined;
15
+ props: Record<string, any>;
16
+ };
17
+ /**
18
+ * 获取当前页面 layout 状态。
19
+ */
20
+ export declare function usePageLayout(): Readonly<PageLayoutState>;
21
+ export declare function syncRuntimePageLayoutState(target: Record<string, any>, layout: string | false, props: PageLayoutProps): void;
22
+ export declare function syncRuntimePageLayoutStateFromRuntime(target: Record<string, any>): void;
23
+ export declare function resolveRuntimePageLayoutName(layout: string | false): string;
24
+ //#endregion
25
+ //# sourceMappingURL=pageLayout.d.mts.map