wevu 6.18.6 → 6.19.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 (585) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.mjs +1 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPrimitive.mjs +1 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPropertyKey.mjs +1 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/typeof.mjs +1 -0
  5. package/dist/{rolldown-runtime-CenpyGzJ.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
  6. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.mjs +14 -0
  7. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPrimitive.mjs +16 -0
  8. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPropertyKey.mjs +11 -0
  9. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/typeof.mjs +12 -0
  10. package/dist/dev/{rolldown-runtime-BUUfjzRC.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
  11. package/dist/dev/index.mjs +49 -10
  12. package/dist/dev/internal-reactivity.mjs +15 -5
  13. package/dist/dev/internal-runtime.mjs +32 -4
  14. package/dist/dev/internal-template.mjs +1 -1
  15. package/dist/dev/package.mjs +6 -0
  16. package/dist/dev/package.mjs.map +1 -0
  17. package/dist/dev/reactivity/computed.mjs +49 -0
  18. package/dist/dev/reactivity/computed.mjs.map +1 -0
  19. package/dist/dev/reactivity/core.mjs +184 -0
  20. package/dist/dev/reactivity/core.mjs.map +1 -0
  21. package/dist/dev/reactivity/reactive/mutation.mjs +12 -0
  22. package/dist/dev/reactivity/reactive/mutation.mjs.map +1 -0
  23. package/dist/dev/{computed-BxRsUJgi.mjs → reactivity/reactive/patch.mjs} +6 -48
  24. package/dist/dev/reactivity/reactive/patch.mjs.map +1 -0
  25. package/dist/dev/reactivity/reactive/patchState.mjs +138 -0
  26. package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -0
  27. package/dist/dev/reactivity/reactive/shallow.mjs +77 -0
  28. package/dist/dev/reactivity/reactive/shallow.mjs.map +1 -0
  29. package/dist/dev/reactivity/reactive/shared.mjs +40 -0
  30. package/dist/dev/reactivity/reactive/shared.mjs.map +1 -0
  31. package/dist/dev/reactivity/reactive/state.mjs +8 -0
  32. package/dist/dev/reactivity/reactive/state.mjs.map +1 -0
  33. package/dist/dev/reactivity/reactive.mjs +212 -0
  34. package/dist/dev/reactivity/reactive.mjs.map +1 -0
  35. package/dist/dev/reactivity/readonly.mjs +69 -0
  36. package/dist/dev/reactivity/readonly.mjs.map +1 -0
  37. package/dist/dev/reactivity/ref.mjs +97 -0
  38. package/dist/dev/reactivity/ref.mjs.map +1 -0
  39. package/dist/dev/reactivity/shallowRef.mjs +71 -0
  40. package/dist/dev/reactivity/shallowRef.mjs.map +1 -0
  41. package/dist/dev/{toRefs-D06VmFK2.mjs → reactivity/toRefs.mjs} +4 -3
  42. package/dist/dev/reactivity/toRefs.mjs.map +1 -0
  43. package/dist/dev/reactivity/traverse.mjs +40 -0
  44. package/dist/dev/reactivity/traverse.mjs.map +1 -0
  45. package/dist/dev/reactivity/watch/helpers.mjs +78 -0
  46. package/dist/dev/reactivity/watch/helpers.mjs.map +1 -0
  47. package/dist/dev/reactivity/watch/types.mjs +20 -0
  48. package/dist/dev/reactivity/watch/types.mjs.map +1 -0
  49. package/dist/dev/reactivity/watch.mjs +167 -0
  50. package/dist/dev/reactivity/watch.mjs.map +1 -0
  51. package/dist/dev/router/backNavigation.mjs +32 -0
  52. package/dist/dev/router/backNavigation.mjs.map +1 -0
  53. package/dist/dev/router/createRouter.mjs +176 -0
  54. package/dist/dev/router/createRouter.mjs.map +1 -0
  55. package/dist/dev/router/instance.mjs +17 -0
  56. package/dist/dev/router/instance.mjs.map +1 -0
  57. package/dist/dev/router/navigationApi.mjs +94 -0
  58. package/dist/dev/router/navigationApi.mjs.map +1 -0
  59. package/dist/dev/router/navigationCore.mjs +139 -0
  60. package/dist/dev/router/navigationCore.mjs.map +1 -0
  61. package/dist/dev/router/navigationResult.mjs +54 -0
  62. package/dist/dev/router/navigationResult.mjs.map +1 -0
  63. package/dist/dev/router/navigationTarget.mjs +121 -0
  64. package/dist/dev/router/navigationTarget.mjs.map +1 -0
  65. package/dist/dev/router/navigationTargetHelpers.mjs +38 -0
  66. package/dist/dev/router/navigationTargetHelpers.mjs.map +1 -0
  67. package/dist/dev/router/resolve.mjs +22 -0
  68. package/dist/dev/router/resolve.mjs.map +1 -0
  69. package/dist/dev/router/routeRegistry.mjs +78 -0
  70. package/dist/dev/router/routeRegistry.mjs.map +1 -0
  71. package/dist/dev/router/routeSync.mjs +72 -0
  72. package/dist/dev/router/routeSync.mjs.map +1 -0
  73. package/dist/dev/router/types.mjs +11 -0
  74. package/dist/dev/router/types.mjs.map +1 -0
  75. package/dist/dev/router/useRoute.mjs +106 -0
  76. package/dist/dev/router/useRoute.mjs.map +1 -0
  77. package/dist/dev/router/useRouter.mjs +15 -0
  78. package/dist/dev/router/useRouter.mjs.map +1 -0
  79. package/dist/dev/router.mjs +9 -1316
  80. package/dist/dev/routerInternal/location.mjs +66 -0
  81. package/dist/dev/routerInternal/location.mjs.map +1 -0
  82. package/dist/dev/routerInternal/matching.mjs +149 -0
  83. package/dist/dev/routerInternal/matching.mjs.map +1 -0
  84. package/dist/dev/routerInternal/params.mjs +95 -0
  85. package/dist/dev/routerInternal/params.mjs.map +1 -0
  86. package/dist/dev/routerInternal/path.mjs +42 -0
  87. package/dist/dev/routerInternal/path.mjs.map +1 -0
  88. package/dist/dev/routerInternal/query.mjs +113 -0
  89. package/dist/dev/routerInternal/query.mjs.map +1 -0
  90. package/dist/dev/routerInternal/records.mjs +172 -0
  91. package/dist/dev/routerInternal/records.mjs.map +1 -0
  92. package/dist/dev/routerInternal/recordsWarnings.mjs +49 -0
  93. package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -0
  94. package/dist/dev/routerInternal/snapshots.mjs +126 -0
  95. package/dist/dev/routerInternal/snapshots.mjs.map +1 -0
  96. package/dist/dev/runtime/app/computed.mjs +68 -0
  97. package/dist/dev/runtime/app/computed.mjs.map +1 -0
  98. package/dist/dev/runtime/app/context.mjs +275 -0
  99. package/dist/dev/runtime/app/context.mjs.map +1 -0
  100. package/dist/dev/runtime/app/diagnostics.mjs +34 -0
  101. package/dist/dev/runtime/app/diagnostics.mjs.map +1 -0
  102. package/dist/dev/runtime/app/mount.mjs +269 -0
  103. package/dist/dev/runtime/app/mount.mjs.map +1 -0
  104. package/dist/dev/runtime/app/pending.mjs +14 -0
  105. package/dist/dev/runtime/app/pending.mjs.map +1 -0
  106. package/dist/dev/runtime/app/setData/patchScheduler.mjs +158 -0
  107. package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -0
  108. package/dist/dev/runtime/app/setData/payload.mjs +161 -0
  109. package/dist/dev/runtime/app/setData/payload.mjs.map +1 -0
  110. package/dist/dev/runtime/app/setData/scheduler.mjs +313 -0
  111. package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -0
  112. package/dist/dev/runtime/app/setData/snapshot.mjs +129 -0
  113. package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -0
  114. package/dist/dev/runtime/app/setDataOptions.mjs +73 -0
  115. package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -0
  116. package/dist/dev/runtime/app.mjs +93 -0
  117. package/dist/dev/runtime/app.mjs.map +1 -0
  118. package/dist/dev/runtime/bindModel.mjs +92 -0
  119. package/dist/dev/runtime/bindModel.mjs.map +1 -0
  120. package/dist/dev/runtime/defaults.mjs +61 -0
  121. package/dist/dev/runtime/defaults.mjs.map +1 -0
  122. package/dist/dev/runtime/define/initialComputed.mjs +125 -0
  123. package/dist/dev/runtime/define/initialComputed.mjs.map +1 -0
  124. package/dist/dev/runtime/define/options.mjs +169 -0
  125. package/dist/dev/runtime/define/options.mjs.map +1 -0
  126. package/dist/dev/runtime/define/optionsApi.mjs +48 -0
  127. package/dist/dev/runtime/define/optionsApi.mjs.map +1 -0
  128. package/dist/dev/runtime/define/props.mjs +194 -0
  129. package/dist/dev/runtime/define/props.mjs.map +1 -0
  130. package/dist/dev/runtime/define/scopedSlotOptions.mjs +313 -0
  131. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -0
  132. package/dist/dev/runtime/define/setupResult.mjs +78 -0
  133. package/dist/dev/runtime/define/setupResult.mjs.map +1 -0
  134. package/dist/dev/runtime/define.mjs +140 -0
  135. package/dist/dev/runtime/define.mjs.map +1 -0
  136. package/dist/dev/runtime/diff.mjs +193 -0
  137. package/dist/dev/runtime/diff.mjs.map +1 -0
  138. package/dist/dev/runtime/disposables.mjs +81 -0
  139. package/dist/dev/runtime/disposables.mjs.map +1 -0
  140. package/dist/dev/runtime/elementIntersectionObserver.mjs +80 -0
  141. package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -0
  142. package/dist/dev/runtime/emit.mjs +36 -0
  143. package/dist/dev/runtime/emit.mjs.map +1 -0
  144. package/dist/dev/{base-CYkvI7w8.mjs → runtime/hooks/base.mjs} +3 -140
  145. package/dist/dev/runtime/hooks/base.mjs.map +1 -0
  146. package/dist/dev/runtime/hooks/register.mjs +92 -0
  147. package/dist/dev/runtime/hooks/register.mjs.map +1 -0
  148. package/dist/dev/runtime/hooks/vue.mjs +81 -0
  149. package/dist/dev/runtime/hooks/vue.mjs.map +1 -0
  150. package/dist/dev/runtime/internal.mjs +18 -0
  151. package/dist/dev/runtime/internal.mjs.map +1 -0
  152. package/dist/dev/runtime/intersectionObserver.mjs +46 -0
  153. package/dist/dev/runtime/intersectionObserver.mjs.map +1 -0
  154. package/dist/dev/runtime/layoutBridge.mjs +303 -0
  155. package/dist/dev/runtime/layoutBridge.mjs.map +1 -0
  156. package/dist/dev/runtime/layoutComponentMatcher.mjs +11 -0
  157. package/dist/dev/runtime/layoutComponentMatcher.mjs.map +1 -0
  158. package/dist/dev/runtime/nativeBridge.mjs +21 -0
  159. package/dist/dev/runtime/nativeBridge.mjs.map +1 -0
  160. package/dist/dev/runtime/noSetData.mjs +18 -0
  161. package/dist/dev/runtime/noSetData.mjs.map +1 -0
  162. package/dist/dev/runtime/pageEnvironment.mjs +100 -0
  163. package/dist/dev/runtime/pageEnvironment.mjs.map +1 -0
  164. package/dist/dev/runtime/pageLayout.mjs +71 -0
  165. package/dist/dev/runtime/pageLayout.mjs.map +1 -0
  166. package/dist/dev/runtime/pageScroll.mjs +110 -0
  167. package/dist/dev/runtime/pageScroll.mjs.map +1 -0
  168. package/dist/dev/runtime/platform.mjs +77 -0
  169. package/dist/dev/runtime/platform.mjs.map +1 -0
  170. package/dist/dev/runtime/provide.mjs +71 -0
  171. package/dist/dev/runtime/provide.mjs.map +1 -0
  172. package/dist/dev/runtime/provideContext.mjs +101 -0
  173. package/dist/dev/runtime/provideContext.mjs.map +1 -0
  174. package/dist/dev/runtime/provideStore.mjs +18 -0
  175. package/dist/dev/runtime/provideStore.mjs.map +1 -0
  176. package/dist/dev/runtime/pullDownRefresh.mjs +24 -0
  177. package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -0
  178. package/dist/dev/runtime/register/app.mjs +159 -0
  179. package/dist/dev/runtime/register/app.mjs.map +1 -0
  180. package/dist/dev/runtime/register/component/features.mjs +43 -0
  181. package/dist/dev/runtime/register/component/features.mjs.map +1 -0
  182. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +64 -0
  183. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -0
  184. package/dist/dev/runtime/register/component/lifecycle/platform.mjs +95 -0
  185. package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -0
  186. package/dist/dev/runtime/register/component/lifecycle.mjs +122 -0
  187. package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -0
  188. package/dist/dev/runtime/register/component/methods.mjs +80 -0
  189. package/dist/dev/runtime/register/component/methods.mjs.map +1 -0
  190. package/dist/dev/runtime/register/component/options.mjs +204 -0
  191. package/dist/dev/runtime/register/component/options.mjs.map +1 -0
  192. package/dist/dev/runtime/register/component/props.mjs +218 -0
  193. package/dist/dev/runtime/register/component/props.mjs.map +1 -0
  194. package/dist/dev/runtime/register/component/registerDefinition.mjs +290 -0
  195. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -0
  196. package/dist/dev/runtime/register/component.mjs +128 -0
  197. package/dist/dev/runtime/register/component.mjs.map +1 -0
  198. package/dist/dev/runtime/register/inline.mjs +145 -0
  199. package/dist/dev/runtime/register/inline.mjs.map +1 -0
  200. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +53 -0
  201. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -0
  202. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +34 -0
  203. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -0
  204. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +230 -0
  205. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -0
  206. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +164 -0
  207. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -0
  208. package/dist/dev/runtime/register/runtimeInstance/utils.mjs +122 -0
  209. package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -0
  210. package/dist/dev/runtime/register/runtimeInstance.mjs +438 -0
  211. package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -0
  212. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +95 -0
  213. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -0
  214. package/dist/dev/runtime/register/setup.mjs +22 -0
  215. package/dist/dev/runtime/register/setup.mjs.map +1 -0
  216. package/dist/dev/runtime/register/snapshot.mjs +17 -0
  217. package/dist/dev/runtime/register/snapshot.mjs.map +1 -0
  218. package/dist/dev/runtime/register/watch.mjs +57 -0
  219. package/dist/dev/runtime/register/watch.mjs.map +1 -0
  220. package/dist/dev/runtime/scopedSlots.mjs +115 -0
  221. package/dist/dev/runtime/scopedSlots.mjs.map +1 -0
  222. package/dist/dev/runtime/selectorQuery.mjs +49 -0
  223. package/dist/dev/runtime/selectorQuery.mjs.map +1 -0
  224. package/dist/dev/runtime/setupTracking.mjs +59 -0
  225. package/dist/dev/runtime/setupTracking.mjs.map +1 -0
  226. package/dist/dev/{template-n_iVr0ey.mjs → runtime/template.mjs} +7 -4
  227. package/dist/dev/runtime/template.mjs.map +1 -0
  228. package/dist/dev/runtime/templateRefs/helpers.mjs +254 -0
  229. package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -0
  230. package/dist/dev/runtime/templateRefs.mjs +162 -0
  231. package/dist/dev/runtime/templateRefs.mjs.map +1 -0
  232. package/dist/dev/runtime/uniAppHost.mjs +119 -0
  233. package/dist/dev/runtime/uniAppHost.mjs.map +1 -0
  234. package/dist/dev/runtime/updatePerformance.mjs +41 -0
  235. package/dist/dev/runtime/updatePerformance.mjs.map +1 -0
  236. package/dist/dev/runtime/use.mjs +25 -0
  237. package/dist/dev/runtime/use.mjs.map +1 -0
  238. package/dist/dev/runtime/vueCompat/context.mjs +25 -0
  239. package/dist/dev/runtime/vueCompat/context.mjs.map +1 -0
  240. package/dist/dev/runtime/vueCompat/model.mjs +118 -0
  241. package/dist/dev/runtime/vueCompat/model.mjs.map +1 -0
  242. package/dist/dev/runtime/vueCompat/router.mjs +124 -0
  243. package/dist/dev/runtime/vueCompat/router.mjs.map +1 -0
  244. package/dist/dev/runtime/vueCompat/templateRef.mjs +37 -0
  245. package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -0
  246. package/dist/dev/scheduler.mjs +75 -0
  247. package/dist/dev/scheduler.mjs.map +1 -0
  248. package/dist/dev/store/actions.mjs +40 -0
  249. package/dist/dev/store/actions.mjs.map +1 -0
  250. package/dist/dev/store/base.mjs +56 -0
  251. package/dist/dev/store/base.mjs.map +1 -0
  252. package/dist/dev/store/define/optionsStyle.mjs +125 -0
  253. package/dist/dev/store/define/optionsStyle.mjs.map +1 -0
  254. package/dist/dev/store/define/setupStyle.mjs +145 -0
  255. package/dist/dev/store/define/setupStyle.mjs.map +1 -0
  256. package/dist/dev/store/define/shared.mjs +38 -0
  257. package/dist/dev/store/define/shared.mjs.map +1 -0
  258. package/dist/dev/store/define.mjs +23 -0
  259. package/dist/dev/store/define.mjs.map +1 -0
  260. package/dist/dev/store/manager.mjs +21 -0
  261. package/dist/dev/store/manager.mjs.map +1 -0
  262. package/dist/dev/store/storeToRefs.mjs +29 -0
  263. package/dist/dev/store/storeToRefs.mjs.map +1 -0
  264. package/dist/dev/store/utils.mjs +49 -0
  265. package/dist/dev/store/utils.mjs.map +1 -0
  266. package/dist/dev/store.mjs +3 -1
  267. package/dist/dev/utils.mjs +16 -0
  268. package/dist/dev/utils.mjs.map +1 -0
  269. package/dist/dev/version.mjs +8 -0
  270. package/dist/dev/version.mjs.map +1 -0
  271. package/dist/dev/vue-demi.mjs +49 -11
  272. package/dist/dev/vue-demi.mjs.map +1 -1
  273. package/dist/index.d.mts +71 -7
  274. package/dist/index.mjs +1 -1
  275. package/dist/internal-reactivity.d.mts +16 -2
  276. package/dist/internal-reactivity.mjs +1 -1
  277. package/dist/internal-runtime.d.mts +35 -2
  278. package/dist/internal-runtime.mjs +1 -1
  279. package/dist/internal-template.d.mts +1 -1
  280. package/dist/internal-template.mjs +1 -1
  281. package/dist/jsx-runtime.d.mts +1 -1
  282. package/dist/macros/shared.d.mts +81 -0
  283. package/dist/macros.d.mts +70 -0
  284. package/dist/package.mjs +1 -0
  285. package/dist/reactivity/computed.d.mts +21 -0
  286. package/dist/reactivity/computed.mjs +1 -0
  287. package/dist/reactivity/core.d.mts +34 -0
  288. package/dist/reactivity/core.mjs +1 -0
  289. package/dist/reactivity/index.d.mts +15 -0
  290. package/dist/reactivity/reactive/mutation.d.mts +21 -0
  291. package/dist/reactivity/reactive/mutation.mjs +1 -0
  292. package/dist/reactivity/reactive/patch.d.mts +18 -0
  293. package/dist/reactivity/reactive/patch.mjs +1 -0
  294. package/dist/reactivity/reactive/patchState.mjs +1 -0
  295. package/dist/reactivity/reactive/shallow.d.mts +22 -0
  296. package/dist/reactivity/reactive/shallow.mjs +1 -0
  297. package/dist/reactivity/reactive/shared.d.mts +4 -0
  298. package/dist/reactivity/reactive/shared.mjs +1 -0
  299. package/dist/reactivity/reactive/state.mjs +1 -0
  300. package/dist/reactivity/reactive.d.mts +41 -0
  301. package/dist/reactivity/reactive.mjs +1 -0
  302. package/dist/reactivity/readonly.d.mts +27 -0
  303. package/dist/reactivity/readonly.mjs +1 -0
  304. package/dist/reactivity/ref.d.mts +27 -0
  305. package/dist/reactivity/ref.mjs +1 -0
  306. package/dist/reactivity/shallowRef.d.mts +19 -0
  307. package/dist/reactivity/shallowRef.mjs +1 -0
  308. package/dist/reactivity/toRefs.d.mts +43 -0
  309. package/dist/reactivity/toRefs.mjs +1 -0
  310. package/dist/reactivity/traverse.d.mts +8 -0
  311. package/dist/reactivity/traverse.mjs +1 -0
  312. package/dist/reactivity/watch/helpers.mjs +1 -0
  313. package/dist/reactivity/watch/types.d.mts +43 -0
  314. package/dist/reactivity/watch/types.mjs +1 -0
  315. package/dist/reactivity/watch.d.mts +21 -0
  316. package/dist/reactivity/watch.mjs +1 -0
  317. package/dist/router/backNavigation.mjs +1 -0
  318. package/dist/router/createRouter.d.mts +8 -0
  319. package/dist/router/createRouter.mjs +1 -0
  320. package/dist/router/instance.mjs +1 -0
  321. package/dist/router/navigationApi.mjs +1 -0
  322. package/dist/router/navigationCore.d.mts +6 -0
  323. package/dist/router/navigationCore.mjs +1 -0
  324. package/dist/router/navigationResult.mjs +1 -0
  325. package/dist/router/navigationTarget.mjs +1 -0
  326. package/dist/router/navigationTargetHelpers.mjs +1 -0
  327. package/dist/router/resolve.d.mts +6 -0
  328. package/dist/router/resolve.mjs +1 -0
  329. package/dist/router/routeRegistry.mjs +1 -0
  330. package/dist/router/routeSync.d.mts +1 -0
  331. package/dist/router/routeSync.mjs +1 -0
  332. package/dist/router/types.d.mts +163 -0
  333. package/dist/router/types.mjs +1 -0
  334. package/dist/router/useRoute.d.mts +19 -0
  335. package/dist/router/useRoute.mjs +1 -0
  336. package/dist/router/useRouter.d.mts +8 -0
  337. package/dist/router/useRouter.mjs +1 -0
  338. package/dist/router.d.mts +9 -204
  339. package/dist/router.mjs +1 -1
  340. package/dist/routerInternal/location.mjs +1 -0
  341. package/dist/routerInternal/matching.mjs +1 -0
  342. package/dist/routerInternal/params.mjs +1 -0
  343. package/dist/routerInternal/path.mjs +1 -0
  344. package/dist/routerInternal/query.d.mts +7 -0
  345. package/dist/routerInternal/query.mjs +1 -0
  346. package/dist/routerInternal/records.mjs +1 -0
  347. package/dist/routerInternal/recordsWarnings.mjs +1 -0
  348. package/dist/routerInternal/snapshots.mjs +1 -0
  349. package/dist/routerInternal/types.d.mts +9 -0
  350. package/dist/runtime/app/computed.mjs +1 -0
  351. package/dist/runtime/app/context.mjs +1 -0
  352. package/dist/runtime/app/diagnostics.mjs +1 -0
  353. package/dist/runtime/app/mount.mjs +1 -0
  354. package/dist/runtime/app/pending.d.mts +10 -0
  355. package/dist/runtime/app/pending.mjs +1 -0
  356. package/dist/runtime/app/setData/patchScheduler.mjs +1 -0
  357. package/dist/runtime/app/setData/payload.mjs +1 -0
  358. package/dist/runtime/app/setData/scheduler.mjs +1 -0
  359. package/dist/runtime/app/setData/snapshot.mjs +1 -0
  360. package/dist/runtime/app/setDataOptions.mjs +1 -0
  361. package/dist/runtime/app.d.mts +8 -0
  362. package/dist/runtime/app.mjs +1 -0
  363. package/dist/runtime/bindModel.mjs +1 -0
  364. package/dist/runtime/defaults.d.mts +11 -0
  365. package/dist/runtime/defaults.mjs +1 -0
  366. package/dist/runtime/define/initialComputed.mjs +1 -0
  367. package/dist/runtime/define/options.mjs +1 -0
  368. package/dist/runtime/define/optionsApi.mjs +1 -0
  369. package/dist/runtime/define/props.mjs +1 -0
  370. package/dist/runtime/define/scopedSlotOptions.mjs +1 -0
  371. package/dist/runtime/define/setupResult.mjs +1 -0
  372. package/dist/runtime/define.d.mts +105 -0
  373. package/dist/runtime/define.mjs +1 -0
  374. package/dist/runtime/diff.mjs +1 -0
  375. package/dist/runtime/disposables.d.mts +31 -0
  376. package/dist/runtime/disposables.mjs +1 -0
  377. package/dist/runtime/elementIntersectionObserver.d.mts +26 -0
  378. package/dist/runtime/elementIntersectionObserver.mjs +1 -0
  379. package/dist/runtime/emit.mjs +1 -0
  380. package/dist/runtime/hooks/base.d.mts +27 -0
  381. package/dist/runtime/hooks/base.mjs +1 -0
  382. package/dist/runtime/hooks/register.d.mts +30 -0
  383. package/dist/runtime/hooks/register.mjs +1 -0
  384. package/dist/runtime/hooks/vue.d.mts +53 -0
  385. package/dist/runtime/hooks/vue.mjs +1 -0
  386. package/dist/runtime/hooks.d.mts +4 -0
  387. package/dist/runtime/index.d.mts +47 -0
  388. package/dist/runtime/internal.mjs +1 -0
  389. package/dist/runtime/intersectionObserver.d.mts +14 -0
  390. package/dist/runtime/intersectionObserver.mjs +1 -0
  391. package/dist/runtime/layoutBridge.d.mts +59 -0
  392. package/dist/runtime/layoutBridge.mjs +1 -0
  393. package/dist/runtime/layoutComponentMatcher.mjs +1 -0
  394. package/dist/runtime/nativeBridge.mjs +1 -0
  395. package/dist/runtime/noSetData.d.mts +5 -0
  396. package/dist/runtime/noSetData.mjs +1 -0
  397. package/dist/runtime/pageEnvironment.d.mts +50 -0
  398. package/dist/runtime/pageEnvironment.mjs +1 -0
  399. package/dist/runtime/pageLayout.d.mts +26 -0
  400. package/dist/runtime/pageLayout.mjs +1 -0
  401. package/dist/runtime/pageScroll.d.mts +29 -0
  402. package/dist/runtime/pageScroll.mjs +1 -0
  403. package/dist/runtime/platform.mjs +1 -0
  404. package/dist/runtime/provide.d.mts +59 -0
  405. package/dist/runtime/provide.mjs +1 -0
  406. package/dist/runtime/provideContext.mjs +1 -0
  407. package/dist/runtime/provideStore.d.mts +7 -0
  408. package/dist/runtime/provideStore.mjs +1 -0
  409. package/dist/runtime/pullDownRefresh.d.mts +12 -0
  410. package/dist/runtime/pullDownRefresh.mjs +1 -0
  411. package/dist/runtime/register/app.d.mts +14 -0
  412. package/dist/runtime/register/app.mjs +1 -0
  413. package/dist/runtime/register/component/features.mjs +1 -0
  414. package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -0
  415. package/dist/runtime/register/component/lifecycle/platform.mjs +1 -0
  416. package/dist/runtime/register/component/lifecycle.mjs +1 -0
  417. package/dist/runtime/register/component/methods.mjs +1 -0
  418. package/dist/runtime/register/component/options.mjs +1 -0
  419. package/dist/runtime/register/component/props.mjs +1 -0
  420. package/dist/runtime/register/component/registerDefinition.mjs +1 -0
  421. package/dist/runtime/register/component.d.mts +15 -0
  422. package/dist/runtime/register/component.mjs +1 -0
  423. package/dist/runtime/register/inline.d.mts +15 -0
  424. package/dist/runtime/register/inline.mjs +1 -0
  425. package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -0
  426. package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -0
  427. package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -0
  428. package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -0
  429. package/dist/runtime/register/runtimeInstance/utils.mjs +1 -0
  430. package/dist/runtime/register/runtimeInstance.d.mts +26 -0
  431. package/dist/runtime/register/runtimeInstance.mjs +1 -0
  432. package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -0
  433. package/dist/runtime/register/setup.d.mts +11 -0
  434. package/dist/runtime/register/setup.mjs +1 -0
  435. package/dist/runtime/register/snapshot.mjs +1 -0
  436. package/dist/runtime/register/watch.d.mts +12 -0
  437. package/dist/runtime/register/watch.mjs +1 -0
  438. package/dist/runtime/register.d.mts +5 -0
  439. package/dist/runtime/scopedSlots.mjs +1 -0
  440. package/dist/runtime/selectorQuery.d.mts +54 -0
  441. package/dist/runtime/selectorQuery.mjs +1 -0
  442. package/dist/runtime/setupTracking.mjs +1 -0
  443. package/dist/{template-DE8e5dj_.d.mts → runtime/template.d.mts} +1 -1
  444. package/dist/runtime/template.mjs +1 -0
  445. package/dist/runtime/templateRefTypes.d.mts +7 -0
  446. package/dist/runtime/templateRefs/helpers.mjs +1 -0
  447. package/dist/runtime/templateRefs.d.mts +11 -0
  448. package/dist/runtime/templateRefs.mjs +1 -0
  449. package/dist/runtime/types/core.d.mts +35 -0
  450. package/dist/runtime/types/miniprogram.d.mts +80 -0
  451. package/dist/runtime/types/miniprogramHost.d.mts +44 -0
  452. package/dist/runtime/types/miniprogramHostSources.d.mts +112 -0
  453. package/dist/runtime/types/options.d.mts +136 -0
  454. package/dist/runtime/types/props/propTypes.d.mts +79 -0
  455. package/dist/runtime/types/props/router.d.mts +51 -0
  456. package/dist/runtime/types/props/setup.d.mts +96 -0
  457. package/dist/runtime/types/props.d.mts +4 -0
  458. package/dist/runtime/types/runtime.d.mts +59 -0
  459. package/dist/runtime/types/setData.d.mts +220 -0
  460. package/dist/runtime/types.d.mts +28 -0
  461. package/dist/runtime/uniAppHost.d.mts +8 -0
  462. package/dist/runtime/uniAppHost.mjs +1 -0
  463. package/dist/runtime/updatePerformance.d.mts +13 -0
  464. package/dist/runtime/updatePerformance.mjs +1 -0
  465. package/dist/runtime/use.d.mts +13 -0
  466. package/dist/runtime/use.mjs +1 -0
  467. package/dist/runtime/vueCompat/context.d.mts +8 -0
  468. package/dist/runtime/vueCompat/context.mjs +1 -0
  469. package/dist/runtime/vueCompat/model.d.mts +30 -0
  470. package/dist/runtime/vueCompat/model.mjs +1 -0
  471. package/dist/runtime/vueCompat/router.d.mts +28 -0
  472. package/dist/runtime/vueCompat/router.mjs +1 -0
  473. package/dist/runtime/vueCompat/templateRef.d.mts +9 -0
  474. package/dist/runtime/vueCompat/templateRef.mjs +1 -0
  475. package/dist/runtime/vueCompat.d.mts +5 -0
  476. package/dist/scheduler.d.mts +4 -0
  477. package/dist/scheduler.mjs +1 -0
  478. package/dist/store/actions.mjs +1 -0
  479. package/dist/store/base.mjs +1 -0
  480. package/dist/store/define/optionsStyle.mjs +1 -0
  481. package/dist/store/define/setupStyle.mjs +1 -0
  482. package/dist/store/define/shared.mjs +1 -0
  483. package/dist/store/define.d.mts +26 -0
  484. package/dist/store/define.mjs +1 -0
  485. package/dist/store/manager.d.mts +8 -0
  486. package/dist/store/manager.mjs +1 -0
  487. package/dist/store/storeToRefs.d.mts +13 -0
  488. package/dist/store/storeToRefs.mjs +1 -0
  489. package/dist/store/types.d.mts +70 -0
  490. package/dist/store/utils.mjs +1 -0
  491. package/dist/store.d.mts +4 -1
  492. package/dist/store.mjs +1 -1
  493. package/dist/utils.mjs +1 -0
  494. package/dist/version.d.mts +4 -0
  495. package/dist/version.mjs +1 -0
  496. package/dist/vue-augment.d.mts +6 -0
  497. package/dist/vue-demi.d.mts +67 -7
  498. package/dist/vue-demi.mjs +1 -1
  499. package/dist/vue-types.d.mts +18 -0
  500. package/dist/weappIntrinsicElements/base.d.mts +22 -0
  501. package/dist/weappIntrinsicElements/elements/ad-custom.d.mts +13 -0
  502. package/dist/weappIntrinsicElements/elements/ad.d.mts +16 -0
  503. package/dist/weappIntrinsicElements/elements/audio.d.mts +20 -0
  504. package/dist/weappIntrinsicElements/elements/block.d.mts +8 -0
  505. package/dist/weappIntrinsicElements/elements/button.d.mts +40 -0
  506. package/dist/weappIntrinsicElements/elements/camera.d.mts +18 -0
  507. package/dist/weappIntrinsicElements/elements/canvas.d.mts +18 -0
  508. package/dist/weappIntrinsicElements/elements/checkbox-group.d.mts +13 -0
  509. package/dist/weappIntrinsicElements/elements/checkbox.d.mts +13 -0
  510. package/dist/weappIntrinsicElements/elements/cover-image.d.mts +10 -0
  511. package/dist/weappIntrinsicElements/elements/cover-view.d.mts +10 -0
  512. package/dist/weappIntrinsicElements/elements/editor.d.mts +22 -0
  513. package/dist/weappIntrinsicElements/elements/form.d.mts +16 -0
  514. package/dist/weappIntrinsicElements/elements/functional-page-navigator.d.mts +15 -0
  515. package/dist/weappIntrinsicElements/elements/icon.d.mts +12 -0
  516. package/dist/weappIntrinsicElements/elements/image.d.mts +18 -0
  517. package/dist/weappIntrinsicElements/elements/import.d.mts +10 -0
  518. package/dist/weappIntrinsicElements/elements/include.d.mts +10 -0
  519. package/dist/weappIntrinsicElements/elements/input.d.mts +47 -0
  520. package/dist/weappIntrinsicElements/elements/keyboard-accessory.d.mts +8 -0
  521. package/dist/weappIntrinsicElements/elements/label.d.mts +10 -0
  522. package/dist/weappIntrinsicElements/elements/live-player.d.mts +35 -0
  523. package/dist/weappIntrinsicElements/elements/live-pusher.d.mts +57 -0
  524. package/dist/weappIntrinsicElements/elements/map.d.mts +105 -0
  525. package/dist/weappIntrinsicElements/elements/match-media.d.mts +16 -0
  526. package/dist/weappIntrinsicElements/elements/movable-area.d.mts +26 -0
  527. package/dist/weappIntrinsicElements/elements/movable-view.d.mts +26 -0
  528. package/dist/weappIntrinsicElements/elements/navigation-bar.d.mts +15 -0
  529. package/dist/weappIntrinsicElements/elements/navigator.d.mts +25 -0
  530. package/dist/weappIntrinsicElements/elements/official-account.d.mts +13 -0
  531. package/dist/weappIntrinsicElements/elements/open-data.d.mts +15 -0
  532. package/dist/weappIntrinsicElements/elements/page-container.d.mts +25 -0
  533. package/dist/weappIntrinsicElements/elements/page-meta.d.mts +23 -0
  534. package/dist/weappIntrinsicElements/elements/picker-view-column.d.mts +18 -0
  535. package/dist/weappIntrinsicElements/elements/picker-view.d.mts +18 -0
  536. package/dist/weappIntrinsicElements/elements/picker.d.mts +23 -0
  537. package/dist/weappIntrinsicElements/elements/progress.d.mts +21 -0
  538. package/dist/weappIntrinsicElements/elements/radio-group.d.mts +13 -0
  539. package/dist/weappIntrinsicElements/elements/radio.d.mts +13 -0
  540. package/dist/weappIntrinsicElements/elements/rich-text.d.mts +17 -0
  541. package/dist/weappIntrinsicElements/elements/scroll-view.d.mts +68 -0
  542. package/dist/weappIntrinsicElements/elements/share-element.d.mts +18 -0
  543. package/dist/weappIntrinsicElements/elements/slider.d.mts +23 -0
  544. package/dist/weappIntrinsicElements/elements/slot.d.mts +10 -0
  545. package/dist/weappIntrinsicElements/elements/swiper-item.d.mts +42 -0
  546. package/dist/weappIntrinsicElements/elements/swiper.d.mts +42 -0
  547. package/dist/weappIntrinsicElements/elements/switch.d.mts +14 -0
  548. package/dist/weappIntrinsicElements/elements/template.d.mts +12 -0
  549. package/dist/weappIntrinsicElements/elements/text.d.mts +15 -0
  550. package/dist/weappIntrinsicElements/elements/textarea.d.mts +40 -0
  551. package/dist/weappIntrinsicElements/elements/video.d.mts +71 -0
  552. package/dist/weappIntrinsicElements/elements/view.d.mts +13 -0
  553. package/dist/weappIntrinsicElements/elements/voip-room.d.mts +14 -0
  554. package/dist/weappIntrinsicElements/elements/web-view.d.mts +13 -0
  555. package/dist/weappIntrinsicElements.d.mts +153 -0
  556. package/package.json +6 -6
  557. package/dist/base-BxKbbKVO.mjs +0 -1
  558. package/dist/computed-Xoi9XEUx.mjs +0 -1
  559. package/dist/dev/base-CYkvI7w8.mjs.map +0 -1
  560. package/dist/dev/computed-BxRsUJgi.mjs.map +0 -1
  561. package/dist/dev/ref-DRZC3Kc5.mjs +0 -695
  562. package/dist/dev/ref-DRZC3Kc5.mjs.map +0 -1
  563. package/dist/dev/router-DjGhTM7A.mjs +0 -739
  564. package/dist/dev/router-DjGhTM7A.mjs.map +0 -1
  565. package/dist/dev/router.mjs.map +0 -1
  566. package/dist/dev/store-HNsiQJ4d.mjs +0 -479
  567. package/dist/dev/store-HNsiQJ4d.mjs.map +0 -1
  568. package/dist/dev/template-n_iVr0ey.mjs.map +0 -1
  569. package/dist/dev/templateRef-Dyo45y5v.mjs +0 -6436
  570. package/dist/dev/templateRef-Dyo45y5v.mjs.map +0 -1
  571. package/dist/dev/toRefs-D06VmFK2.mjs.map +0 -1
  572. package/dist/dev/watch-jrgL5ald.mjs +0 -445
  573. package/dist/dev/watch-jrgL5ald.mjs.map +0 -1
  574. package/dist/index-BiHILcmb.d.mts +0 -1215
  575. package/dist/index-CCET_bCY.d.mts +0 -111
  576. package/dist/ref-D37CknuD.mjs +0 -1
  577. package/dist/router-DJOmKqXb.mjs +0 -1
  578. package/dist/store-eHrHBQiv.mjs +0 -1
  579. package/dist/template-CNzlwH-E.mjs +0 -1
  580. package/dist/templateRef-L_qeTIeS.mjs +0 -1
  581. package/dist/toRefs-CoytPyo0.mjs +0 -1
  582. package/dist/traverse-B4Ez44Gd.d.mts +0 -108
  583. package/dist/vue-types-B3N60cGV.d.mts +0 -757
  584. package/dist/watch-Bbd-gmEg.mjs +0 -1
  585. package/dist/weappIntrinsicElements-BgDtC53_.d.mts +0 -1257
@@ -0,0 +1,303 @@
1
+ import { isRef } from "../reactivity/ref.mjs";
2
+ import { getCurrentMiniProgramPages } from "./platform.mjs";
3
+ import { getCurrentInstance, getCurrentSetupContext } from "./hooks/base.mjs";
4
+ import { onAttached, onDetached } from "./hooks/register.mjs";
5
+ import { getTemplateRefMap } from "./templateRefs/helpers.mjs";
6
+ import { WEVU_LAYOUT_BRIDGE_PAGE_KEYS, WEVU_NATIVE_INSTANCE_KEY, WEVU_PUBLIC_RUNTIME_KEY } from "@weapp-core/constants";
7
+
8
+ //#region src/runtime/layoutBridge.ts
9
+ /**
10
+ * @description 对 layout host key 去重并过滤空字符串。
11
+ */
12
+ function normalizeLayoutHostKeys(keys) {
13
+ return Array.from(new Set(Array.isArray(keys) ? keys : [keys])).filter((key) => typeof key === "string" && key.length > 0);
14
+ }
15
+ /**
16
+ * @description 解析小程序页面实例的稳定身份 key。
17
+ */
18
+ function resolvePageIdentityKeys(page) {
19
+ if (!page || typeof page !== "object") return [];
20
+ const keys = [];
21
+ const route = typeof page.route === "string" ? page.route.replace(/^\/+/, "") : "";
22
+ if (route) keys.push(`route:${route}`);
23
+ for (const [prefix, field] of [["webview", "__wxWebviewId__"], ["exparser", "__wxExparserNodeId__"]]) {
24
+ const value = page[field];
25
+ if (typeof value === "number" || typeof value === "string") keys.push(`${prefix}:${String(value)}`);
26
+ }
27
+ return Array.from(new Set(keys));
28
+ }
29
+ /**
30
+ * @description 创建小程序 layout host 注册表。
31
+ */
32
+ function createLayoutHostRegistry() {
33
+ const registries = /* @__PURE__ */ new Map();
34
+ function register(keys, bridge, pageKeys) {
35
+ const normalizedKeys = normalizeLayoutHostKeys(keys);
36
+ if (normalizedKeys.length === 0 || pageKeys.length === 0) return null;
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();
40
+ for (const key of normalizedKeys) registry.set(key, bridge);
41
+ registries.set(pageKey, registry);
42
+ }
43
+ return normalizedKeys;
44
+ }
45
+ function unregister(keys, bridge, pageKeys) {
46
+ const normalizedKeys = normalizeLayoutHostKeys(keys);
47
+ if (normalizedKeys.length === 0 || pageKeys.length === 0) return false;
48
+ let removed = false;
49
+ for (const pageKey of pageKeys) {
50
+ const registry = registries.get(pageKey);
51
+ if (!registry) continue;
52
+ for (const key of normalizedKeys) if (registry.get(key) === bridge) {
53
+ registry.delete(key);
54
+ removed = true;
55
+ }
56
+ if (registry.size === 0) registries.delete(pageKey);
57
+ }
58
+ return removed;
59
+ }
60
+ 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);
65
+ }
66
+ function resolveHost(key, pageKeys, resolver) {
67
+ var _resolver;
68
+ const bridge = resolveBridge(key, pageKeys);
69
+ if (!bridge) return null;
70
+ return (_resolver = resolver(bridge, key)) !== null && _resolver !== void 0 ? _resolver : null;
71
+ }
72
+ 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;
76
+ const host = resolveHost(key, resolvePageKeys(), resolver);
77
+ if (host || retries <= 0) return Promise.resolve(host);
78
+ return new Promise((resolve) => {
79
+ setTimeout(() => {
80
+ resolve(waitForHost(key, resolvePageKeys, resolver, {
81
+ ...options,
82
+ retries: retries - 1
83
+ }));
84
+ }, interval);
85
+ });
86
+ }
87
+ return {
88
+ register,
89
+ resolveBridge,
90
+ resolveHost,
91
+ unregister,
92
+ waitForHost
93
+ };
94
+ }
95
+ const pageLayoutBridgeRegistry = createLayoutHostRegistry();
96
+ function resolveCurrentPageInstance() {
97
+ const pages = getCurrentMiniProgramPages();
98
+ return pages[pages.length - 1];
99
+ }
100
+ function resolvePageKeys(page) {
101
+ return resolvePageIdentityKeys(page);
102
+ }
103
+ function resolveNativeLayoutContext(context) {
104
+ var _context$WEVU_PUBLIC_, _context$$state;
105
+ 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];
107
+ 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];
109
+ if (stateNativeInstance && typeof stateNativeInstance === "object") return stateNativeInstance;
110
+ if (context[WEVU_NATIVE_INSTANCE_KEY] && typeof context[WEVU_NATIVE_INSTANCE_KEY] === "object") return context[WEVU_NATIVE_INSTANCE_KEY];
111
+ return context;
112
+ }
113
+ function resolvePageFromContext(context, visited = /* @__PURE__ */ new Set()) {
114
+ if (!context || typeof context !== "object" || visited.has(context)) return resolveCurrentPageInstance();
115
+ visited.add(context);
116
+ if (typeof context.__wevuSetPageLayout === "function") return context;
117
+ const nativeContext = resolveNativeLayoutContext(context);
118
+ if (nativeContext && nativeContext !== context) {
119
+ const nativePage = resolvePageFromContext(nativeContext, visited);
120
+ if (nativePage) return nativePage;
121
+ }
122
+ const publicNativePage = context.$;
123
+ if (publicNativePage && typeof publicNativePage === "object") {
124
+ const nativePage = resolvePageFromContext(publicNativePage, visited);
125
+ if (nativePage) return nativePage;
126
+ }
127
+ const ownerContext = nativeContext !== null && nativeContext !== void 0 ? nativeContext : context;
128
+ const selectOwnerComponent = ownerContext.selectOwnerComponent;
129
+ if (typeof selectOwnerComponent === "function") try {
130
+ const owner = selectOwnerComponent.call(ownerContext);
131
+ if (owner && owner !== ownerContext) {
132
+ const ownerPage = resolvePageFromContext(owner, visited);
133
+ if (ownerPage) return ownerPage;
134
+ }
135
+ } catch (_unused) {}
136
+ return resolveCurrentPageInstance();
137
+ }
138
+ function resolveHostEntry(entry) {
139
+ if (typeof entry === "function") return entry();
140
+ if (isRef(entry)) return entry.value;
141
+ return entry;
142
+ }
143
+ function findLayoutHostBinding(bindings, key) {
144
+ return bindings.find((binding) => binding.key === key);
145
+ }
146
+ function safeSelectComponent(target, selector) {
147
+ const selectComponent = target === null || target === void 0 ? void 0 : target.selectComponent;
148
+ if (typeof selectComponent !== "function") return null;
149
+ try {
150
+ var _selectComponent$call;
151
+ return (_selectComponent$call = selectComponent.call(target, selector)) !== null && _selectComponent$call !== void 0 ? _selectComponent$call : null;
152
+ } catch (_unused2) {
153
+ return null;
154
+ }
155
+ }
156
+ 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
+ if (!binding.refName) return null;
159
+ 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;
167
+ }
168
+ function createDeclaredLayoutHostBridge(bindings, context) {
169
+ const nativeContext = resolveNativeLayoutContext(context);
170
+ const bridgeBase = nativeContext && typeof nativeContext === "object" ? Object.create(nativeContext) : {};
171
+ return Object.assign(bridgeBase, { selectComponent(key) {
172
+ const binding = findLayoutHostBinding(bindings, key);
173
+ if (!binding) return null;
174
+ if (binding.kind === "component" || !binding.kind) {
175
+ var _ref3, _safeSelectComponent;
176
+ const cachedHost = resolveDeclaredLayoutHostFromRefs(binding, context);
177
+ 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;
179
+ }
180
+ return null;
181
+ } });
182
+ }
183
+ /**
184
+ * 为当前页面注册 layout bridge,使页面或子组件可消费 layout 内部能力。
185
+ */
186
+ function registerPageLayoutBridge(selectors, context) {
187
+ const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
188
+ const page = resolvePageFromContext(bridgeContext);
189
+ const pageKeys = resolvePageKeys(page);
190
+ if (!bridgeContext || !page || pageKeys.length === 0) return false;
191
+ if (!pageLayoutBridgeRegistry.register(selectors, bridgeContext, pageKeys)) return false;
192
+ bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] = pageKeys;
193
+ return true;
194
+ }
195
+ /**
196
+ * 移除当前页面的 layout bridge 注册。
197
+ */
198
+ function unregisterPageLayoutBridge(selectors, context) {
199
+ var _bridgeContext$WEVU_L;
200
+ const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
201
+ 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);
203
+ if (!bridgeContext || !Array.isArray(pageKeys) || pageKeys.length === 0) return false;
204
+ const removed = pageLayoutBridgeRegistry.unregister(selectors, bridgeContext, pageKeys);
205
+ delete bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS];
206
+ return removed;
207
+ }
208
+ /**
209
+ * 解析当前页面已注册的 layout bridge,找不到时回退到传入上下文。
210
+ */
211
+ 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();
216
+ }
217
+ /**
218
+ * 解析当前页面 layout 内通过指定 key 暴露的宿主实例。
219
+ */
220
+ 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
+ });
228
+ }
229
+ /**
230
+ * 等待当前页面 layout 宿主实例可用,适合页面初次进入时的异步宿主解析。
231
+ */
232
+ 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);
242
+ }
243
+ /**
244
+ * 在 layout 生命周期内暴露 bridge,使页面或子组件可访问 layout 内部实例。
245
+ */
246
+ function useLayoutBridge(selectors, options = {}) {
247
+ if (!getCurrentSetupContext()) throw new Error("useLayoutBridge() 必须在 setup() 的同步阶段调用");
248
+ const context = getCurrentInstance();
249
+ const normalizedSelectors = normalizeLayoutHostKeys(selectors);
250
+ const resolveComponent = options.resolveComponent;
251
+ const nativeContext = resolveNativeLayoutContext(context);
252
+ const bridgeBase = nativeContext && typeof nativeContext === "object" ? Object.create(nativeContext) : {};
253
+ const bridge = Object.assign(bridgeBase, { selectComponent(selector) {
254
+ var _nativeContext$select, _currentPage$selectCo, _currentPage$selectCo2;
255
+ if (!normalizedSelectors.includes(selector)) return null;
256
+ const resolvedComponent = resolveComponent === null || resolveComponent === void 0 ? void 0 : resolveComponent(selector);
257
+ 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);
260
+ 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;
263
+ } });
264
+ registerPageLayoutBridge(normalizedSelectors, bridge);
265
+ onAttached(() => {
266
+ registerPageLayoutBridge(normalizedSelectors, bridge);
267
+ });
268
+ onDetached(() => {
269
+ unregisterPageLayoutBridge(normalizedSelectors, bridge);
270
+ });
271
+ }
272
+ /**
273
+ * 使用编译期注入的宿主绑定信息,直接从当前 layout 运行时实例解析子组件宿主并注册 bridge。
274
+ */
275
+ function registerRuntimeLayoutHosts(bindings, context) {
276
+ if (!bindings.length) return null;
277
+ const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
278
+ if (!bridgeContext) return null;
279
+ const bridge = createDeclaredLayoutHostBridge(bindings, bridgeContext);
280
+ registerPageLayoutBridge(bindings.map((binding) => binding.key), bridge);
281
+ return bridge;
282
+ }
283
+ /**
284
+ * 移除运行时自动注册的 layout 宿主 bridge。
285
+ */
286
+ function unregisterRuntimeLayoutHosts(bindings, context) {
287
+ if (!bindings.length) return false;
288
+ const bridgeContext = context !== null && context !== void 0 ? context : getCurrentInstance();
289
+ if (!bridgeContext) return false;
290
+ return unregisterPageLayoutBridge(bindings.map((binding) => binding.key), bridgeContext);
291
+ }
292
+ /**
293
+ * 使用 key -> 宿主实例的映射批量暴露 layout 内部宿主,适合 toast/dialog 等共享反馈节点。
294
+ */
295
+ function useLayoutHosts(hosts) {
296
+ useLayoutBridge(Object.keys(hosts), { resolveComponent(key) {
297
+ return resolveHostEntry(hosts[key]);
298
+ } });
299
+ }
300
+
301
+ //#endregion
302
+ export { registerPageLayoutBridge, registerRuntimeLayoutHosts, resolveLayoutBridge, resolveLayoutHost, unregisterPageLayoutBridge, unregisterRuntimeLayoutHosts, useLayoutBridge, useLayoutHosts, waitForLayoutHost };
303
+ //# sourceMappingURL=layoutBridge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutBridge.mjs","names":[],"sources":["../../../src/runtime/layoutBridge.ts"],"sourcesContent":["import type { Ref } from '../reactivity'\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 interface LayoutHostBinding {\n key: string\n refName?: string\n selector: string\n kind?: 'component'\n}\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: 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: 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: 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: 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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"}
@@ -0,0 +1,11 @@
1
+ //#region src/runtime/layoutComponentMatcher.ts
2
+ const DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX = "layouts/";
3
+ let runtimeLayoutComponentMatcher = (componentPath) => componentPath.startsWith(DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX);
4
+ function isRuntimeLayoutComponentTarget(target) {
5
+ const componentPath = target.is;
6
+ return typeof componentPath === "string" && runtimeLayoutComponentMatcher(componentPath, target);
7
+ }
8
+
9
+ //#endregion
10
+ export { isRuntimeLayoutComponentTarget };
11
+ //# sourceMappingURL=layoutComponentMatcher.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutComponentMatcher.mjs","names":[],"sources":["../../../src/runtime/layoutComponentMatcher.ts"],"sourcesContent":["import type { InternalRuntimeState } from './types'\n\nexport type RuntimeLayoutComponentMatcher = (\n componentPath: string,\n target: InternalRuntimeState,\n) => boolean\n\nconst DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX = 'layouts/'\n\nlet runtimeLayoutComponentMatcher: RuntimeLayoutComponentMatcher = componentPath =>\n componentPath.startsWith(DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX)\n\n/**\n * 设置运行时 layout 组件判定器,供构建侧未来接入可配置 layout 输出路径。\n *\n * @internal\n */\nexport function setRuntimeLayoutComponentMatcher(matcher: RuntimeLayoutComponentMatcher | undefined) {\n runtimeLayoutComponentMatcher = matcher ?? (componentPath =>\n componentPath.startsWith(DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX))\n}\n\nexport function isRuntimeLayoutComponentTarget(target: InternalRuntimeState): boolean {\n const componentPath = (target as any).is\n return typeof componentPath === 'string'\n && runtimeLayoutComponentMatcher(componentPath, target)\n}\n"],"mappings":";AAOA,MAAM,uCAAuC;AAE7C,IAAI,iCAA+D,kBACjE,cAAc,WAAW,oCAAoC;AAY/D,SAAgB,+BAA+B,QAAuC;CACpF,MAAM,gBAAiB,OAAe;CACtC,OAAO,OAAO,kBAAkB,YAC3B,8BAA8B,eAAe,MAAM;AAC1D"}
@@ -0,0 +1,21 @@
1
+ //#region src/runtime/nativeBridge.ts
2
+ const NATIVE_BRIDGE_MARKER = "__wevu_native_bridge__";
3
+ function markNativeBridgeMethod(method) {
4
+ try {
5
+ Object.defineProperty(method, NATIVE_BRIDGE_MARKER, {
6
+ value: true,
7
+ configurable: false,
8
+ enumerable: false,
9
+ writable: false
10
+ });
11
+ } catch (_unused) {
12
+ method[NATIVE_BRIDGE_MARKER] = true;
13
+ }
14
+ }
15
+ function isNativeBridgeMethod(method) {
16
+ return typeof method === "function" && Boolean(method[NATIVE_BRIDGE_MARKER]);
17
+ }
18
+
19
+ //#endregion
20
+ export { isNativeBridgeMethod, markNativeBridgeMethod };
21
+ //# sourceMappingURL=nativeBridge.mjs.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ //#region src/runtime/noSetData.ts
2
+ const NO_SETDATA = Symbol("wevu.noSetData");
3
+ function markNoSetData(value) {
4
+ Object.defineProperty(value, NO_SETDATA, {
5
+ value: true,
6
+ configurable: true,
7
+ enumerable: false,
8
+ writable: false
9
+ });
10
+ return value;
11
+ }
12
+ function isNoSetData(value) {
13
+ return typeof value === "object" && value !== null && value[NO_SETDATA] === true;
14
+ }
15
+
16
+ //#endregion
17
+ export { isNoSetData, markNoSetData };
18
+ //# sourceMappingURL=noSetData.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noSetData.mjs","names":[],"sources":["../../../src/runtime/noSetData.ts"],"sourcesContent":["const NO_SETDATA: unique symbol = Symbol('wevu.noSetData')\n\nexport function markNoSetData<T extends object>(value: T): T {\n Object.defineProperty(value, NO_SETDATA, {\n value: true,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return value\n}\n\nexport function isNoSetData(value: unknown): boolean {\n return typeof value === 'object' && value !== null && (value as any)[NO_SETDATA] === true\n}\n"],"mappings":";AAAA,MAAM,aAA4B,OAAO,gBAAgB;AAEzD,SAAgB,cAAgC,OAAa;CAC3D,OAAO,eAAe,OAAO,YAAY;EACvC,OAAO;EACP,cAAc;EACd,YAAY;EACZ,UAAU;CACZ,CAAC;CACD,OAAO;AACT;AAEA,SAAgB,YAAY,OAAyB;CACnD,OAAO,OAAO,UAAU,YAAY,UAAU,QAAS,MAAc,gBAAgB;AACvF"}
@@ -0,0 +1,100 @@
1
+ import { ref } from "../reactivity/ref.mjs";
2
+ import { computed } from "../reactivity/computed.mjs";
3
+ import { getCurrentMiniProgramPages, getMiniProgramGlobalObject } from "./platform.mjs";
4
+ import { getCurrentSetupContext } from "./hooks/base.mjs";
5
+ import { onAttached, onShow } from "./hooks/register.mjs";
6
+
7
+ //#region src/runtime/pageEnvironment.ts
8
+ 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 : "" : "";
11
+ }
12
+ /**
13
+ * 获取当前小程序页面栈的稳定快照。
14
+ */
15
+ function getCurrentPageStackSnapshot() {
16
+ const pages = getCurrentMiniProgramPages();
17
+ const currentPage = pages[pages.length - 1];
18
+ const stackLength = pages.length || 1;
19
+ return {
20
+ canGoBack: stackLength > 1,
21
+ currentRoute: normalizeRoute(currentPage === null || currentPage === void 0 ? void 0 : currentPage.route),
22
+ stackLength
23
+ };
24
+ }
25
+ /**
26
+ * 在 setup 中跟踪当前小程序页面栈状态。
27
+ */
28
+ function usePageStack(options = {}) {
29
+ var _options$autoRefresh;
30
+ if (!getCurrentSetupContext()) throw new Error("usePageStack() 必须在 setup() 的同步阶段调用");
31
+ const snapshot = getCurrentPageStackSnapshot();
32
+ const currentRoute = ref(snapshot.currentRoute);
33
+ const stackLength = ref(snapshot.stackLength);
34
+ const canGoBack = computed(() => stackLength.value > 1);
35
+ const refresh = () => {
36
+ const nextSnapshot = getCurrentPageStackSnapshot();
37
+ currentRoute.value = nextSnapshot.currentRoute;
38
+ stackLength.value = nextSnapshot.stackLength;
39
+ };
40
+ if ((_options$autoRefresh = options.autoRefresh) !== null && _options$autoRefresh !== void 0 ? _options$autoRefresh : true) {
41
+ onAttached(refresh);
42
+ onShow(refresh);
43
+ }
44
+ return {
45
+ canGoBack,
46
+ currentRoute,
47
+ refresh,
48
+ stackLength
49
+ };
50
+ }
51
+ /**
52
+ * 计算自定义导航栏所需的状态栏和胶囊占位高度。
53
+ */
54
+ 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);
61
+ let menuButtonRect;
62
+ 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);
67
+ const navigationBarHeight = menuTop > statusBarHeight && menuHeight > 0 ? (menuTop - statusBarHeight) * 2 + menuHeight : defaultNavigationBarHeight;
68
+ return {
69
+ navigationBarHeight,
70
+ navigationHeight: statusBarHeight + navigationBarHeight,
71
+ statusBarHeight
72
+ };
73
+ }
74
+ /**
75
+ * 在 setup 中跟踪自定义导航栏尺寸。
76
+ */
77
+ function useNavigationBarMetrics(options = {}) {
78
+ var _options$autoRefresh2;
79
+ if (!getCurrentSetupContext()) throw new Error("useNavigationBarMetrics() 必须在 setup() 的同步阶段调用");
80
+ const initialMetrics = getNavigationBarMetrics(options);
81
+ const statusBarHeight = ref(initialMetrics.statusBarHeight);
82
+ const navigationBarHeight = ref(initialMetrics.navigationBarHeight);
83
+ const navigationHeight = computed(() => statusBarHeight.value + navigationBarHeight.value);
84
+ const refresh = () => {
85
+ const nextMetrics = getNavigationBarMetrics(options);
86
+ statusBarHeight.value = nextMetrics.statusBarHeight;
87
+ navigationBarHeight.value = nextMetrics.navigationBarHeight;
88
+ };
89
+ if ((_options$autoRefresh2 = options.autoRefresh) !== null && _options$autoRefresh2 !== void 0 ? _options$autoRefresh2 : true) onAttached(refresh);
90
+ return {
91
+ navigationBarHeight,
92
+ navigationHeight,
93
+ refresh,
94
+ statusBarHeight
95
+ };
96
+ }
97
+
98
+ //#endregion
99
+ export { getCurrentPageStackSnapshot, getNavigationBarMetrics, useNavigationBarMetrics, usePageStack };
100
+ //# sourceMappingURL=pageEnvironment.mjs.map
@@ -0,0 +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"}
@@ -0,0 +1,71 @@
1
+ import { reactive } from "../reactivity/reactive.mjs";
2
+ import { readonly } from "../reactivity/readonly.mjs";
3
+ import { getCurrentMiniProgramPages } from "./platform.mjs";
4
+ import { getCurrentInstance, getCurrentSetupContext } from "./hooks/base.mjs";
5
+ import { getCurrentPageInstance } from "./register/component/lifecycle/platform.mjs";
6
+ import { WEVU_PAGE_LAYOUT_NAME_KEY, WEVU_PAGE_LAYOUT_NONE, WEVU_PAGE_LAYOUT_PROPS_KEY, WEVU_PAGE_LAYOUT_SETTER_KEY } from "@weapp-core/constants";
7
+
8
+ //#region src/runtime/pageLayout.ts
9
+ function resolveCurrentPageInstance() {
10
+ const runtimeCurrentPage = getCurrentPageInstance();
11
+ if (runtimeCurrentPage) return runtimeCurrentPage;
12
+ const pages = getCurrentMiniProgramPages();
13
+ return pages[pages.length - 1];
14
+ }
15
+ function normalizeRuntimePageLayoutName(layout) {
16
+ return layout === WEVU_PAGE_LAYOUT_NONE ? false : layout;
17
+ }
18
+ /**
19
+ * 获取当前页面 layout 状态。
20
+ */
21
+ function usePageLayout() {
22
+ var _currentInstance$__we, _runtimeState$WEVU_PA;
23
+ if (!getCurrentSetupContext()) throw new Error("usePageLayout() 必须在 setup() 的同步阶段调用");
24
+ const currentInstance = getCurrentInstance();
25
+ const runtimeState = currentInstance === null || currentInstance === void 0 || (_currentInstance$__we = currentInstance.__wevu) === null || _currentInstance$__we === void 0 ? void 0 : _currentInstance$__we.state;
26
+ const pageLayoutState = reactive({
27
+ name: normalizeRuntimePageLayoutName(runtimeState === null || runtimeState === void 0 ? void 0 : runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY]),
28
+ props: { ...(_runtimeState$WEVU_PA = runtimeState === null || runtimeState === void 0 ? void 0 : runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY]) !== null && _runtimeState$WEVU_PA !== void 0 ? _runtimeState$WEVU_PA : {} }
29
+ });
30
+ if (currentInstance) currentInstance.__wevuPageLayoutState = pageLayoutState;
31
+ return readonly(pageLayoutState);
32
+ }
33
+ function syncRuntimePageLayoutState(target, layout, props) {
34
+ const state = target.__wevuPageLayoutState;
35
+ if (!state) return;
36
+ state.name = layout;
37
+ state.props = { ...props };
38
+ }
39
+ function syncRuntimePageLayoutStateFromRuntime(target) {
40
+ var _target$__wevu, _runtimeState$WEVU_PA2;
41
+ const state = target.__wevuPageLayoutState;
42
+ const runtimeState = (_target$__wevu = target.__wevu) === null || _target$__wevu === void 0 ? void 0 : _target$__wevu.state;
43
+ if (!state || !runtimeState) return;
44
+ state.name = normalizeRuntimePageLayoutName(runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY]);
45
+ state.props = { ...(_runtimeState$WEVU_PA2 = runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY]) !== null && _runtimeState$WEVU_PA2 !== void 0 ? _runtimeState$WEVU_PA2 : {} };
46
+ }
47
+ /**
48
+ * 显式切换当前页面使用的 layout。
49
+ */
50
+ function setPageLayout(layout, props) {
51
+ const currentInstance = getCurrentInstance();
52
+ const directSetter = currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance[WEVU_PAGE_LAYOUT_SETTER_KEY];
53
+ if (typeof directSetter === "function") {
54
+ directSetter(layout, props);
55
+ return;
56
+ }
57
+ const currentPage = resolveCurrentPageInstance();
58
+ const pageSetter = currentPage === null || currentPage === void 0 ? void 0 : currentPage[WEVU_PAGE_LAYOUT_SETTER_KEY];
59
+ if (typeof pageSetter === "function") {
60
+ pageSetter(layout, props);
61
+ return;
62
+ }
63
+ throw new Error("setPageLayout() 未找到当前页面实例。请在页面 setup()、事件回调或当前页面上下文中调用。");
64
+ }
65
+ function resolveRuntimePageLayoutName(layout) {
66
+ return layout === false ? WEVU_PAGE_LAYOUT_NONE : layout;
67
+ }
68
+
69
+ //#endregion
70
+ export { resolveRuntimePageLayoutName, setPageLayout, syncRuntimePageLayoutState, syncRuntimePageLayoutStateFromRuntime, usePageLayout };
71
+ //# sourceMappingURL=pageLayout.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageLayout.mjs","names":[],"sources":["../../../src/runtime/pageLayout.ts"],"sourcesContent":["import {\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_NONE,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n} from '@weapp-core/constants'\nimport { reactive, readonly } from '../reactivity'\nimport { getCurrentInstance, getCurrentSetupContext } from './hooks'\nimport { getCurrentMiniProgramPages } from './platform'\nimport { getCurrentPageInstance } from './register/component/lifecycle/platform'\n\ntype PageLayoutSetter = (layout: string | false, props?: Record<string, any>) => void\n\nexport interface WevuPageLayoutMap {}\n\ntype ResolveTypedPageLayoutName = keyof WevuPageLayoutMap extends never\n ? string\n : Extract<keyof WevuPageLayoutMap, string>\n\ntype ResolveTypedPageLayoutProps<Name extends string> = Name extends keyof WevuPageLayoutMap\n ? WevuPageLayoutMap[Name]\n : Record<string, any>\n\ntype PageLayoutNamedState = {\n [Name in ResolveTypedPageLayoutName]: {\n name: Name\n props: ResolveTypedPageLayoutProps<Name>\n }\n}[ResolveTypedPageLayoutName]\n\nexport type PageLayoutState\n = | PageLayoutNamedState\n | {\n name: false\n props: Record<string, any>\n }\n | {\n name: undefined\n props: Record<string, any>\n }\n\ninterface MutablePageLayoutState {\n name: string | false | undefined\n props: Record<string, any>\n}\n\nfunction resolveCurrentPageInstance() {\n const runtimeCurrentPage = getCurrentPageInstance()\n if (runtimeCurrentPage) {\n return runtimeCurrentPage\n }\n const pages = getCurrentMiniProgramPages()\n return pages[pages.length - 1]\n}\n\nfunction normalizeRuntimePageLayoutName(layout: string | undefined) {\n return layout === WEVU_PAGE_LAYOUT_NONE ? false : layout\n}\n\n/**\n * 获取当前页面 layout 状态。\n */\nexport function usePageLayout(): Readonly<PageLayoutState> {\n if (!getCurrentSetupContext()) {\n throw new Error('usePageLayout() 必须在 setup() 的同步阶段调用')\n }\n\n const currentInstance = getCurrentInstance() as Record<string, any> | undefined\n const runtimeState = currentInstance?.__wevu?.state as Record<string, any> | undefined\n const pageLayoutState = reactive<MutablePageLayoutState>({\n name: normalizeRuntimePageLayoutName(runtimeState?.[WEVU_PAGE_LAYOUT_NAME_KEY]) as string | false | undefined,\n props: { ...(runtimeState?.[WEVU_PAGE_LAYOUT_PROPS_KEY] ?? {}) },\n })\n\n if (currentInstance) {\n currentInstance.__wevuPageLayoutState = pageLayoutState\n }\n\n return readonly(pageLayoutState) as Readonly<PageLayoutState>\n}\n\nexport function syncRuntimePageLayoutState(target: Record<string, any>, layout: string | false, props: Record<string, any>) {\n const state = target.__wevuPageLayoutState as MutablePageLayoutState | undefined\n if (!state) {\n return\n }\n state.name = layout\n state.props = { ...props }\n}\n\nexport function syncRuntimePageLayoutStateFromRuntime(target: Record<string, any>) {\n const state = target.__wevuPageLayoutState as MutablePageLayoutState | undefined\n const runtimeState = target.__wevu?.state as Record<string, any> | undefined\n if (!state || !runtimeState) {\n return\n }\n state.name = normalizeRuntimePageLayoutName(runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY]) as string | false | undefined\n state.props = { ...(runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] ?? {}) }\n}\n\nexport function setPageLayout(layout: false): void\nexport function setPageLayout<Name extends ResolveTypedPageLayoutName>(layout: Name, props?: ResolveTypedPageLayoutProps<Name>): void\n\n/**\n * 显式切换当前页面使用的 layout。\n */\nexport function setPageLayout(layout: string | false, props?: Record<string, any>): void {\n const currentInstance = getCurrentInstance() as Record<string, any> | undefined\n const directSetter = currentInstance?.[WEVU_PAGE_LAYOUT_SETTER_KEY] as PageLayoutSetter | undefined\n if (typeof directSetter === 'function') {\n directSetter(layout, props)\n return\n }\n\n const currentPage = resolveCurrentPageInstance()\n const pageSetter = currentPage?.[WEVU_PAGE_LAYOUT_SETTER_KEY] as PageLayoutSetter | undefined\n if (typeof pageSetter === 'function') {\n pageSetter(layout, props)\n return\n }\n\n throw new Error('setPageLayout() 未找到当前页面实例。请在页面 setup()、事件回调或当前页面上下文中调用。')\n}\n\nexport function resolveRuntimePageLayoutName(layout: string | false) {\n return layout === false ? WEVU_PAGE_LAYOUT_NONE : layout\n}\n"],"mappings":";;;;;;;;AA8CA,SAAS,6BAA6B;CACpC,MAAM,qBAAqB,uBAAuB;CAClD,IAAI,oBACF,OAAO;CAET,MAAM,QAAQ,2BAA2B;CACzC,OAAO,MAAM,MAAM,SAAS;AAC9B;AAEA,SAAS,+BAA+B,QAA4B;CAClE,OAAO,WAAW,wBAAwB,QAAQ;AACpD;;;;AAKA,SAAgB,gBAA2C;;CACzD,IAAI,CAAC,uBAAuB,GAC1B,MAAM,IAAI,MAAM,qCAAqC;CAGvD,MAAM,kBAAkB,mBAAmB;CAC3C,MAAM,kGAAe,gBAAiB,sFAAQ;CAC9C,MAAM,kBAAkB,SAAiC;EACvD,MAAM,2FAA+B,aAAe,0BAA0B;EAC9E,OAAO,EAAE,wFAAI,aAAe,oGAA+B,CAAC,EAAG;CACjE,CAAC;CAED,IAAI,iBACF,gBAAgB,wBAAwB;CAG1C,OAAO,SAAS,eAAe;AACjC;AAEA,SAAgB,2BAA2B,QAA6B,QAAwB,OAA4B;CAC1H,MAAM,QAAQ,OAAO;CACrB,IAAI,CAAC,OACH;CAEF,MAAM,OAAO;CACb,MAAM,QAAQ,EAAE,GAAG,MAAM;AAC3B;AAEA,SAAgB,sCAAsC,QAA6B;;CACjF,MAAM,QAAQ,OAAO;CACrB,MAAM,iCAAe,OAAO,wEAAQ;CACpC,IAAI,CAAC,SAAS,CAAC,cACb;CAEF,MAAM,OAAO,+BAA+B,aAAa,0BAA0B;CACnF,MAAM,QAAQ,EAAE,6BAAI,aAAa,sGAA+B,CAAC,EAAG;AACtE;;;;AAQA,SAAgB,cAAc,QAAwB,OAAmC;CACvF,MAAM,kBAAkB,mBAAmB;CAC3C,MAAM,iFAAe,gBAAkB;CACvC,IAAI,OAAO,iBAAiB,YAAY;EACtC,aAAa,QAAQ,KAAK;EAC1B;CACF;CAEA,MAAM,cAAc,2BAA2B;CAC/C,MAAM,uEAAa,YAAc;CACjC,IAAI,OAAO,eAAe,YAAY;EACpC,WAAW,QAAQ,KAAK;EACxB;CACF;CAEA,MAAM,IAAI,MAAM,yDAAyD;AAC3E;AAEA,SAAgB,6BAA6B,QAAwB;CACnE,OAAO,WAAW,QAAQ,wBAAwB;AACpD"}