wevu 7.2.2 → 7.4.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 (383) 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/internal-runtime.d.mts +2 -1
  7. package/dist/dev/internal-runtime.mjs +3 -2
  8. package/dist/dev/package.mjs +1 -1
  9. package/dist/dev/reactivity/asyncDerivation.mjs +8 -10
  10. package/dist/dev/reactivity/asyncDerivation.mjs.map +1 -1
  11. package/dist/dev/reactivity/core.mjs +5 -8
  12. package/dist/dev/reactivity/core.mjs.map +1 -1
  13. package/dist/dev/reactivity/reactive/patch.mjs +3 -3
  14. package/dist/dev/reactivity/reactive/patch.mjs.map +1 -1
  15. package/dist/dev/reactivity/reactive/patchState.mjs +4 -8
  16. package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -1
  17. package/dist/dev/reactivity/reactive/shared.mjs +1 -2
  18. package/dist/dev/reactivity/reactive/shared.mjs.map +1 -1
  19. package/dist/dev/reactivity/reactive.mjs +5 -10
  20. package/dist/dev/reactivity/reactive.mjs.map +1 -1
  21. package/dist/dev/reactivity/ref.mjs +2 -2
  22. package/dist/dev/reactivity/ref.mjs.map +1 -1
  23. package/dist/dev/reactivity/shallowRef.mjs +1 -1
  24. package/dist/dev/reactivity/shallowRef.mjs.map +1 -1
  25. package/dist/dev/reactivity/watch/helpers.mjs +1 -1
  26. package/dist/dev/reactivity/watch/helpers.mjs.map +1 -1
  27. package/dist/dev/reactivity/watch.mjs +6 -8
  28. package/dist/dev/reactivity/watch.mjs.map +1 -1
  29. package/dist/dev/router/createRouter.mjs +17 -24
  30. package/dist/dev/router/createRouter.mjs.map +1 -1
  31. package/dist/dev/router/initialNavigation.mjs +22 -17
  32. package/dist/dev/router/initialNavigation.mjs.map +1 -1
  33. package/dist/dev/router/instance.mjs +1 -2
  34. package/dist/dev/router/instance.mjs.map +1 -1
  35. package/dist/dev/router/navigationCore.mjs +2 -2
  36. package/dist/dev/router/navigationCore.mjs.map +1 -1
  37. package/dist/dev/router/navigationResult.mjs +7 -10
  38. package/dist/dev/router/navigationResult.mjs.map +1 -1
  39. package/dist/dev/router/navigationTarget.mjs +1 -3
  40. package/dist/dev/router/navigationTarget.mjs.map +1 -1
  41. package/dist/dev/router/resolve.mjs +3 -4
  42. package/dist/dev/router/resolve.mjs.map +1 -1
  43. package/dist/dev/router/routeRegistry.mjs +1 -1
  44. package/dist/dev/router/routeRegistry.mjs.map +1 -1
  45. package/dist/dev/router/routeSync.mjs +1 -1
  46. package/dist/dev/router/routeSync.mjs.map +1 -1
  47. package/dist/dev/router/scrollRestoration/adapters.d.mts +8 -0
  48. package/dist/dev/router/scrollRestoration/adapters.mjs +86 -0
  49. package/dist/dev/router/scrollRestoration/adapters.mjs.map +1 -0
  50. package/dist/dev/router/scrollRestoration/controller.d.mts +8 -0
  51. package/dist/dev/router/scrollRestoration/controller.mjs +148 -0
  52. package/dist/dev/router/scrollRestoration/controller.mjs.map +1 -0
  53. package/dist/dev/router/scrollRestoration/host.d.mts +3 -0
  54. package/dist/dev/router/scrollRestoration/host.mjs +76 -0
  55. package/dist/dev/router/scrollRestoration/host.mjs.map +1 -0
  56. package/dist/dev/router/scrollRestoration/index.d.mts +9 -0
  57. package/dist/dev/router/scrollRestoration/index.mjs +156 -0
  58. package/dist/dev/router/scrollRestoration/index.mjs.map +1 -0
  59. package/dist/dev/router/scrollRestoration/types.d.mts +61 -0
  60. package/dist/dev/router/useRoute.mjs +12 -19
  61. package/dist/dev/router/useRoute.mjs.map +1 -1
  62. package/dist/dev/router.d.mts +5 -1
  63. package/dist/dev/router.mjs +4 -1
  64. package/dist/dev/routerInternal/location.mjs +2 -3
  65. package/dist/dev/routerInternal/location.mjs.map +1 -1
  66. package/dist/dev/routerInternal/params.mjs +2 -3
  67. package/dist/dev/routerInternal/params.mjs.map +1 -1
  68. package/dist/dev/routerInternal/records.mjs +1 -1
  69. package/dist/dev/routerInternal/records.mjs.map +1 -1
  70. package/dist/dev/routerInternal/recordsWarnings.mjs +1 -2
  71. package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -1
  72. package/dist/dev/runtime/app/context.mjs +13 -26
  73. package/dist/dev/runtime/app/context.mjs.map +1 -1
  74. package/dist/dev/runtime/app/diagnostics.mjs +2 -4
  75. package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
  76. package/dist/dev/runtime/app/mount.mjs +27 -33
  77. package/dist/dev/runtime/app/mount.mjs.map +1 -1
  78. package/dist/dev/runtime/app/setData/commitTracker.mjs +5 -9
  79. package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
  80. package/dist/dev/runtime/app/setData/patchScheduler.mjs +2 -4
  81. package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -1
  82. package/dist/dev/runtime/app/setData/payload.mjs +2 -3
  83. package/dist/dev/runtime/app/setData/payload.mjs.map +1 -1
  84. package/dist/dev/runtime/app/setData/scheduler.mjs +7 -9
  85. package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
  86. package/dist/dev/runtime/app/setData/snapshot.mjs +5 -6
  87. package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -1
  88. package/dist/dev/runtime/app/setDataOptions.mjs +26 -27
  89. package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
  90. package/dist/dev/runtime/app.mjs +9 -9
  91. package/dist/dev/runtime/app.mjs.map +1 -1
  92. package/dist/dev/runtime/bindingManifest.mjs +6 -14
  93. package/dist/dev/runtime/bindingManifest.mjs.map +1 -1
  94. package/dist/dev/runtime/capabilities.d.mts +4 -1
  95. package/dist/dev/runtime/capabilities.mjs.map +1 -1
  96. package/dist/dev/runtime/css.mjs +4 -8
  97. package/dist/dev/runtime/css.mjs.map +1 -1
  98. package/dist/dev/runtime/defaults.mjs +4 -4
  99. package/dist/dev/runtime/defaults.mjs.map +1 -1
  100. package/dist/dev/runtime/define/initialComputed.mjs +5 -5
  101. package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
  102. package/dist/dev/runtime/define/options.mjs +10 -12
  103. package/dist/dev/runtime/define/options.mjs.map +1 -1
  104. package/dist/dev/runtime/define/props.mjs +4 -5
  105. package/dist/dev/runtime/define/props.mjs.map +1 -1
  106. package/dist/dev/runtime/define/scopedSlotOptions.mjs +43 -61
  107. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
  108. package/dist/dev/runtime/define/setupResult.mjs +17 -28
  109. package/dist/dev/runtime/define/setupResult.mjs.map +1 -1
  110. package/dist/dev/runtime/define.mjs +9 -12
  111. package/dist/dev/runtime/define.mjs.map +1 -1
  112. package/dist/dev/runtime/diff.mjs +9 -11
  113. package/dist/dev/runtime/diff.mjs.map +1 -1
  114. package/dist/dev/runtime/disposables.mjs +2 -2
  115. package/dist/dev/runtime/disposables.mjs.map +1 -1
  116. package/dist/dev/runtime/elementIntersectionObserver.mjs +16 -24
  117. package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -1
  118. package/dist/dev/runtime/features/inlineEvents.mjs +2 -3
  119. package/dist/dev/runtime/features/inlineEvents.mjs.map +1 -1
  120. package/dist/dev/runtime/features/jsxIslands.d.mts +7 -0
  121. package/dist/dev/runtime/features/jsxIslands.mjs +20 -0
  122. package/dist/dev/runtime/features/jsxIslands.mjs.map +1 -0
  123. package/dist/dev/runtime/features/layout.mjs +2 -3
  124. package/dist/dev/runtime/features/layout.mjs.map +1 -1
  125. package/dist/dev/runtime/features/publicLayout.mjs +2 -6
  126. package/dist/dev/runtime/features/publicLayout.mjs.map +1 -1
  127. package/dist/dev/runtime/features/scopedSlots.mjs +5 -9
  128. package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
  129. package/dist/dev/runtime/features/templateRefs.mjs +1 -1
  130. package/dist/dev/runtime/features/templateRefs.mjs.map +1 -1
  131. package/dist/dev/runtime/hooks/base.mjs +20 -43
  132. package/dist/dev/runtime/hooks/base.mjs.map +1 -1
  133. package/dist/dev/runtime/hooks/pageScroll.mjs +41 -0
  134. package/dist/dev/runtime/hooks/pageScroll.mjs.map +1 -0
  135. package/dist/dev/runtime/hooks/register.mjs +2 -1
  136. package/dist/dev/runtime/hooks/register.mjs.map +1 -1
  137. package/dist/dev/runtime/inlineDataset.mjs +1 -2
  138. package/dist/dev/runtime/inlineDataset.mjs.map +1 -1
  139. package/dist/dev/runtime/intersectionObserver.mjs +6 -6
  140. package/dist/dev/runtime/intersectionObserver.mjs.map +1 -1
  141. package/dist/dev/runtime/jsxIsland.mjs +16 -33
  142. package/dist/dev/runtime/jsxIsland.mjs.map +1 -1
  143. package/dist/dev/runtime/layoutBridge.mjs +32 -62
  144. package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
  145. package/dist/dev/runtime/nativeBridge.mjs +1 -1
  146. package/dist/dev/runtime/nativeBridge.mjs.map +1 -1
  147. package/dist/dev/runtime/navigationLifecycle.mjs +24 -0
  148. package/dist/dev/runtime/navigationLifecycle.mjs.map +1 -0
  149. package/dist/dev/runtime/pageEnvironment.mjs +15 -18
  150. package/dist/dev/runtime/pageEnvironment.mjs.map +1 -1
  151. package/dist/dev/runtime/pageLayout.mjs +7 -11
  152. package/dist/dev/runtime/pageLayout.mjs.map +1 -1
  153. package/dist/dev/runtime/pageScroll.mjs +2 -3
  154. package/dist/dev/runtime/pageScroll.mjs.map +1 -1
  155. package/dist/dev/runtime/platform/current.mjs +12 -0
  156. package/dist/dev/runtime/platform/current.mjs.map +1 -0
  157. package/dist/dev/runtime/platform/generic.mjs +36 -0
  158. package/dist/dev/runtime/platform/generic.mjs.map +1 -0
  159. package/dist/dev/runtime/platform/globals.mjs +29 -0
  160. package/dist/dev/runtime/platform/globals.mjs.map +1 -0
  161. package/dist/dev/runtime/platform.mjs +15 -60
  162. package/dist/dev/runtime/platform.mjs.map +1 -1
  163. package/dist/dev/runtime/provideContext.mjs +7 -9
  164. package/dist/dev/runtime/provideContext.mjs.map +1 -1
  165. package/dist/dev/runtime/publicRuntime.mjs +4 -0
  166. package/dist/dev/runtime/publicRuntime.mjs.map +1 -1
  167. package/dist/dev/runtime/pullDownRefresh.mjs +2 -4
  168. package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -1
  169. package/dist/dev/runtime/register/app.mjs +18 -19
  170. package/dist/dev/runtime/register/app.mjs.map +1 -1
  171. package/dist/dev/runtime/register/component/alipay.mjs +9 -18
  172. package/dist/dev/runtime/register/component/alipay.mjs.map +1 -1
  173. package/dist/dev/runtime/register/component/alipayRegistration.mjs +60 -0
  174. package/dist/dev/runtime/register/component/alipayRegistration.mjs.map +1 -0
  175. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +2 -5
  176. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -1
  177. package/dist/dev/runtime/register/component/lifecycle/platform.mjs +13 -26
  178. package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
  179. package/dist/dev/runtime/register/component/lifecycle.mjs +7 -12
  180. package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
  181. package/dist/dev/runtime/register/component/methods.mjs +13 -18
  182. package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
  183. package/dist/dev/runtime/register/component/options.mjs +3 -4
  184. package/dist/dev/runtime/register/component/options.mjs.map +1 -1
  185. package/dist/dev/runtime/register/component/props.mjs +25 -31
  186. package/dist/dev/runtime/register/component/props.mjs.map +1 -1
  187. package/dist/dev/runtime/register/component/registerDefinition.mjs +21 -40
  188. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
  189. package/dist/dev/runtime/register/component/registerNativeDefinition.mjs +18 -60
  190. package/dist/dev/runtime/register/component/registerNativeDefinition.mjs.map +1 -1
  191. package/dist/dev/runtime/register/component.mjs +3 -5
  192. package/dist/dev/runtime/register/component.mjs.map +1 -1
  193. package/dist/dev/runtime/register/inline.mjs +8 -10
  194. package/dist/dev/runtime/register/inline.mjs.map +1 -1
  195. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +7 -8
  196. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
  197. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +1 -1
  198. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
  199. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +25 -34
  200. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
  201. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +13 -15
  202. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
  203. package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs +2 -2
  204. package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs.map +1 -1
  205. package/dist/dev/runtime/register/runtimeInstance/utils.mjs +9 -9
  206. package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
  207. package/dist/dev/runtime/register/runtimeInstance.mjs +74 -100
  208. package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
  209. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +12 -15
  210. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -1
  211. package/dist/dev/runtime/register/setup.mjs +2 -3
  212. package/dist/dev/runtime/register/setup.mjs.map +1 -1
  213. package/dist/dev/runtime/register/snapshot.mjs +1 -4
  214. package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
  215. package/dist/dev/runtime/register/watch.mjs +3 -5
  216. package/dist/dev/runtime/register/watch.mjs.map +1 -1
  217. package/dist/dev/runtime/scopedSlots.mjs +14 -21
  218. package/dist/dev/runtime/scopedSlots.mjs.map +1 -1
  219. package/dist/dev/runtime/selectorQuery.mjs +5 -9
  220. package/dist/dev/runtime/selectorQuery.mjs.map +1 -1
  221. package/dist/dev/runtime/template.mjs +1 -1
  222. package/dist/dev/runtime/template.mjs.map +1 -1
  223. package/dist/dev/runtime/templateRefs/helpers.mjs +14 -24
  224. package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
  225. package/dist/dev/runtime/templateRefs.mjs +8 -15
  226. package/dist/dev/runtime/templateRefs.mjs.map +1 -1
  227. package/dist/dev/runtime/uniAppHost.mjs +6 -14
  228. package/dist/dev/runtime/uniAppHost.mjs.map +1 -1
  229. package/dist/dev/runtime/updatePerformance.mjs +1 -1
  230. package/dist/dev/runtime/updatePerformance.mjs.map +1 -1
  231. package/dist/dev/runtime/use.mjs +1 -1
  232. package/dist/dev/runtime/use.mjs.map +1 -1
  233. package/dist/dev/runtime/vueCompat/context.mjs +3 -5
  234. package/dist/dev/runtime/vueCompat/context.mjs.map +1 -1
  235. package/dist/dev/runtime/vueCompat/model.mjs +9 -13
  236. package/dist/dev/runtime/vueCompat/model.mjs.map +1 -1
  237. package/dist/dev/runtime/vueCompat/router.mjs +4 -4
  238. package/dist/dev/runtime/vueCompat/router.mjs.map +1 -1
  239. package/dist/dev/runtime/vueCompat/templateRef.mjs +1 -1
  240. package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -1
  241. package/dist/dev/scheduler.mjs +3 -4
  242. package/dist/dev/scheduler.mjs.map +1 -1
  243. package/dist/dev/store/base.mjs +1 -2
  244. package/dist/dev/store/base.mjs.map +1 -1
  245. package/dist/dev/store/define/create.mjs +11 -22
  246. package/dist/dev/store/define/create.mjs.map +1 -1
  247. package/dist/dev/store/define.mjs +1 -1
  248. package/dist/dev/store/define.mjs.map +1 -1
  249. package/dist/dev/store/view.mjs +1 -1
  250. package/dist/dev/store/view.mjs.map +1 -1
  251. package/dist/internal-runtime.d.mts +2 -1
  252. package/dist/internal-runtime.mjs +1 -1
  253. package/dist/package.mjs +1 -1
  254. package/dist/reactivity/asyncDerivation.mjs +1 -1
  255. package/dist/reactivity/core.mjs +1 -1
  256. package/dist/reactivity/reactive/patch.mjs +1 -1
  257. package/dist/reactivity/reactive/patchState.mjs +1 -1
  258. package/dist/reactivity/reactive/shared.mjs +1 -1
  259. package/dist/reactivity/reactive.mjs +1 -1
  260. package/dist/reactivity/ref.mjs +1 -1
  261. package/dist/reactivity/shallowRef.mjs +1 -1
  262. package/dist/reactivity/watch/helpers.mjs +1 -1
  263. package/dist/reactivity/watch.mjs +1 -1
  264. package/dist/router/createRouter.mjs +1 -1
  265. package/dist/router/initialNavigation.mjs +1 -1
  266. package/dist/router/instance.mjs +1 -1
  267. package/dist/router/navigationCore.mjs +1 -1
  268. package/dist/router/navigationResult.mjs +1 -1
  269. package/dist/router/navigationTarget.mjs +1 -1
  270. package/dist/router/resolve.mjs +1 -1
  271. package/dist/router/routeRegistry.mjs +1 -1
  272. package/dist/router/routeSync.mjs +1 -1
  273. package/dist/router/scrollRestoration/adapters.d.mts +7 -0
  274. package/dist/router/scrollRestoration/adapters.mjs +1 -0
  275. package/dist/router/scrollRestoration/controller.d.mts +7 -0
  276. package/dist/router/scrollRestoration/controller.mjs +1 -0
  277. package/dist/router/scrollRestoration/host.d.mts +3 -0
  278. package/dist/router/scrollRestoration/host.mjs +1 -0
  279. package/dist/router/scrollRestoration/index.d.mts +8 -0
  280. package/dist/router/scrollRestoration/index.mjs +1 -0
  281. package/dist/router/scrollRestoration/types.d.mts +60 -0
  282. package/dist/router/useRoute.mjs +1 -1
  283. package/dist/router.d.mts +5 -1
  284. package/dist/router.mjs +1 -1
  285. package/dist/routerInternal/location.mjs +1 -1
  286. package/dist/routerInternal/params.mjs +1 -1
  287. package/dist/routerInternal/records.mjs +1 -1
  288. package/dist/routerInternal/recordsWarnings.mjs +1 -1
  289. package/dist/runtime/app/context.mjs +1 -1
  290. package/dist/runtime/app/diagnostics.mjs +1 -1
  291. package/dist/runtime/app/mount.mjs +1 -1
  292. package/dist/runtime/app/setData/commitTracker.mjs +1 -1
  293. package/dist/runtime/app/setData/patchScheduler.mjs +1 -1
  294. package/dist/runtime/app/setData/payload.mjs +1 -1
  295. package/dist/runtime/app/setData/scheduler.mjs +1 -1
  296. package/dist/runtime/app/setData/snapshot.mjs +1 -1
  297. package/dist/runtime/app/setDataOptions.mjs +1 -1
  298. package/dist/runtime/app.mjs +1 -1
  299. package/dist/runtime/bindingManifest.mjs +1 -1
  300. package/dist/runtime/capabilities.d.mts +4 -1
  301. package/dist/runtime/css.mjs +1 -1
  302. package/dist/runtime/defaults.mjs +1 -1
  303. package/dist/runtime/define/initialComputed.mjs +1 -1
  304. package/dist/runtime/define/options.mjs +1 -1
  305. package/dist/runtime/define/props.mjs +1 -1
  306. package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
  307. package/dist/runtime/define/setupResult.mjs +1 -1
  308. package/dist/runtime/define.mjs +1 -1
  309. package/dist/runtime/diff.mjs +1 -1
  310. package/dist/runtime/disposables.mjs +1 -1
  311. package/dist/runtime/elementIntersectionObserver.mjs +1 -1
  312. package/dist/runtime/features/inlineEvents.mjs +1 -1
  313. package/dist/runtime/features/jsxIslands.d.mts +6 -0
  314. package/dist/runtime/features/jsxIslands.mjs +1 -0
  315. package/dist/runtime/features/layout.mjs +1 -1
  316. package/dist/runtime/features/publicLayout.mjs +1 -1
  317. package/dist/runtime/features/scopedSlots.mjs +1 -1
  318. package/dist/runtime/features/templateRefs.mjs +1 -1
  319. package/dist/runtime/hooks/base.mjs +1 -1
  320. package/dist/runtime/hooks/pageScroll.mjs +1 -0
  321. package/dist/runtime/hooks/register.mjs +1 -1
  322. package/dist/runtime/inlineDataset.mjs +1 -1
  323. package/dist/runtime/intersectionObserver.mjs +1 -1
  324. package/dist/runtime/jsxIsland.mjs +1 -1
  325. package/dist/runtime/layoutBridge.mjs +1 -1
  326. package/dist/runtime/nativeBridge.mjs +1 -1
  327. package/dist/runtime/navigationLifecycle.mjs +1 -0
  328. package/dist/runtime/pageEnvironment.mjs +1 -1
  329. package/dist/runtime/pageLayout.mjs +1 -1
  330. package/dist/runtime/pageScroll.mjs +1 -1
  331. package/dist/runtime/platform/current.mjs +1 -0
  332. package/dist/runtime/platform/generic.mjs +1 -0
  333. package/dist/runtime/platform/globals.mjs +1 -0
  334. package/dist/runtime/platform.mjs +1 -1
  335. package/dist/runtime/provideContext.mjs +1 -1
  336. package/dist/runtime/publicRuntime.mjs +1 -1
  337. package/dist/runtime/pullDownRefresh.mjs +1 -1
  338. package/dist/runtime/register/app.mjs +1 -1
  339. package/dist/runtime/register/component/alipay.mjs +1 -1
  340. package/dist/runtime/register/component/alipayRegistration.mjs +1 -0
  341. package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -1
  342. package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
  343. package/dist/runtime/register/component/lifecycle.mjs +1 -1
  344. package/dist/runtime/register/component/methods.mjs +1 -1
  345. package/dist/runtime/register/component/options.mjs +1 -1
  346. package/dist/runtime/register/component/props.mjs +1 -1
  347. package/dist/runtime/register/component/registerDefinition.mjs +1 -1
  348. package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
  349. package/dist/runtime/register/component.mjs +1 -1
  350. package/dist/runtime/register/inline.mjs +1 -1
  351. package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
  352. package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
  353. package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
  354. package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
  355. package/dist/runtime/register/runtimeInstance/setupSnapshot.mjs +1 -1
  356. package/dist/runtime/register/runtimeInstance/utils.mjs +1 -1
  357. package/dist/runtime/register/runtimeInstance.mjs +1 -1
  358. package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -1
  359. package/dist/runtime/register/setup.mjs +1 -1
  360. package/dist/runtime/register/snapshot.mjs +1 -1
  361. package/dist/runtime/register/watch.mjs +1 -1
  362. package/dist/runtime/scopedSlots.mjs +1 -1
  363. package/dist/runtime/selectorQuery.mjs +1 -1
  364. package/dist/runtime/template.mjs +1 -1
  365. package/dist/runtime/templateRefs/helpers.mjs +1 -1
  366. package/dist/runtime/templateRefs.mjs +1 -1
  367. package/dist/runtime/uniAppHost.mjs +1 -1
  368. package/dist/runtime/updatePerformance.mjs +1 -1
  369. package/dist/runtime/use.mjs +1 -1
  370. package/dist/runtime/vueCompat/context.mjs +1 -1
  371. package/dist/runtime/vueCompat/model.mjs +1 -1
  372. package/dist/runtime/vueCompat/router.mjs +1 -1
  373. package/dist/runtime/vueCompat/templateRef.mjs +1 -1
  374. package/dist/scheduler.mjs +1 -1
  375. package/dist/store/base.mjs +1 -1
  376. package/dist/store/define/create.mjs +1 -1
  377. package/dist/store/define.mjs +1 -1
  378. package/dist/store/view.mjs +1 -1
  379. package/package.json +7 -7
  380. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +0 -0
  381. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +0 -0
  382. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +0 -0
  383. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +0 -0
@@ -5,7 +5,7 @@ import "./types.mjs";
5
5
  import { SetDataSchedulerOptions } from "./app/setData/scheduler.mjs";
6
6
  import { InlineExpressionMap } from "./register/inline.mjs";
7
7
  //#region src/runtime/capabilities.d.ts
8
- export type RuntimeCapabilityName = 'patchStrategy' | 'templateRefs' | 'inlineEvents' | 'setDataHighFrequencyWarning' | 'scopedSlots' | 'layout';
8
+ export type RuntimeCapabilityName = 'patchStrategy' | 'templateRefs' | 'inlineEvents' | 'setDataHighFrequencyWarning' | 'scopedSlots' | 'layout' | 'jsxIslands';
9
9
  export interface TemplateRefBinding {
10
10
  selector: string;
11
11
  inFor: boolean;
@@ -69,6 +69,9 @@ export interface RuntimeCapabilityRegistry {
69
69
  attachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void;
70
70
  detachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void;
71
71
  };
72
+ jsxIslands?: {
73
+ attachMethods: (methods: Record<string, (...args: any[]) => any>) => void;
74
+ };
72
75
  }
73
76
  //#endregion
74
77
  export type { SetDataSchedulerOptions };
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../../src/runtime/capabilities.ts"],"sourcesContent":["import type { SetDataSchedulerOptions } from './app/setData/scheduler'\nimport type { InlineExpressionMap } from './register/inline'\nimport type { ComputedDefinitions, InternalRuntimeState, MethodDefinitions, RuntimeInstance, SetDataSnapshotOptions } from './types'\n\nexport type { SetDataSchedulerOptions } from './app/setData/scheduler'\n\nexport type RuntimeCapabilityName\n = | 'patchStrategy'\n | 'templateRefs'\n | 'inlineEvents'\n | 'setDataHighFrequencyWarning'\n | 'scopedSlots'\n | 'layout'\n\nexport interface TemplateRefBinding {\n selector: string\n inFor: boolean\n name?: string\n get?: () => unknown\n kind?: 'component' | 'element'\n}\n\nexport interface LayoutHostBinding {\n key: string\n refName?: string\n selector: string\n kind?: 'component'\n}\n\nexport interface HighFrequencyWarningMonitorOptions {\n option: SetDataSnapshotOptions['highFrequencyWarning']\n targetLabel: string\n isInPageScrollHook?: () => boolean\n now?: () => number\n logger?: (message: string) => void\n}\n\nexport const RUNTIME_SCOPED_SLOT_STATE_KEY = '__wevuScopedSlotMountState'\n\nexport interface SetDataScheduler {\n job: () => void | Promise<void>\n snapshot: () => Record<string, unknown>\n cloneLatestSnapshot: () => Record<string, unknown>\n start?: () => void\n dispose?: () => void\n}\n\nexport interface ScopedSlotMountState {\n ownerId: string\n shouldFlushNativeOwnerId: boolean\n}\n\ntype RuntimeStateWithScopedSlotMount = InternalRuntimeState & {\n [RUNTIME_SCOPED_SLOT_STATE_KEY]?: ScopedSlotMountState\n}\n\n/**\n * 读取能力实现挂在宿主实例上的作用域插槽挂载状态。\n */\nexport function getScopedSlotMountState(target: InternalRuntimeState): ScopedSlotMountState | undefined {\n return (target as RuntimeStateWithScopedSlotMount)[RUNTIME_SCOPED_SLOT_STATE_KEY]\n}\n\nexport interface RuntimeCapabilityRegistry {\n patchStrategy?: {\n createScheduler: (options: SetDataSchedulerOptions) => SetDataScheduler\n }\n templateRefs?: {\n attachBindings: (target: InternalRuntimeState, bindings: readonly TemplateRefBinding[]) => void\n hasBindings: (target: InternalRuntimeState) => boolean\n schedule: (target: InternalRuntimeState, onResolved?: () => void, assignmentTarget?: InternalRuntimeState, onRejected?: (cause: unknown) => void) => void\n scheduleOwner: (target: InternalRuntimeState) => void\n clear: (target: InternalRuntimeState, assignmentTarget?: InternalRuntimeState) => void\n }\n inlineEvents?: {\n handler: (this: InternalRuntimeState, event: unknown) => unknown\n run: (context: unknown, expression: unknown, event: unknown, map?: InlineExpressionMap) => unknown\n }\n setDataHighFrequencyWarning?: {\n createMonitor: (options: HighFrequencyWarningMonitorOptions) => (() => void) | undefined\n }\n scopedSlots?: {\n prepareMount: (target: InternalRuntimeState) => ScopedSlotMountState\n attachMount: <D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<D, C, M>,\n state: ScopedSlotMountState,\n deferSnapshot: boolean,\n ) => void\n refresh: (target: InternalRuntimeState, state: ScopedSlotMountState) => void\n syncNativeOwnerId: (target: InternalRuntimeState, state: ScopedSlotMountState) => void\n teardown: (target: InternalRuntimeState) => void\n resolveLifecycleProxy: (target: InternalRuntimeState) => unknown\n allocateOwnerId: () => string\n }\n layout?: {\n attachPageSetter: (target: InternalRuntimeState) => void\n attachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void\n detachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void\n }\n}\n\nconst mutableRuntimeCapabilityRegistry: RuntimeCapabilityRegistry = {}\n\n/**\n * 运行时能力的只读实时视图。安装器直接替换对应槽位,核心路径不会复制能力清单。\n */\nexport const runtimeCapabilityRegistry: Readonly<RuntimeCapabilityRegistry> = mutableRuntimeCapabilityRegistry\n\n/**\n * 注册或热替换一个运行时能力实现。\n */\nexport function registerRuntimeCapability<Name extends RuntimeCapabilityName>(\n name: Name,\n implementation: NonNullable<RuntimeCapabilityRegistry[Name]>,\n): void {\n if (mutableRuntimeCapabilityRegistry[name] === implementation) {\n return\n }\n mutableRuntimeCapabilityRegistry[name] = implementation\n}\n\n/**\n * 读取调用方明确请求的能力;缺失时同步失败,禁止静默降级。\n */\nexport function requireRuntimeCapability<Name extends RuntimeCapabilityName>(\n name: Name,\n requester: string,\n): NonNullable<RuntimeCapabilityRegistry[Name]> {\n const implementation = mutableRuntimeCapabilityRegistry[name]\n if (!implementation) {\n throw new Error(`[wevu] runtime capability \"${name}\" is required by ${requester}; install it before registration`)\n }\n return implementation\n}\n\n/**\n * 判断 setData 高频告警是否被显式启用。\n */\nexport function isSetDataHighFrequencyWarningRequested(\n option: SetDataSnapshotOptions['highFrequencyWarning'],\n): boolean {\n if (option === true) {\n return true\n }\n if (!option || typeof option !== 'object' || Array.isArray(option)) {\n return false\n }\n return option.enabled !== false\n}\n"],"mappings":";AAqCA,MAAa,gCAAgC;;;;AAsB7C,SAAgB,wBAAwB,QAAgE;CACtG,OAAQ,OAA2C;AACrD;AAyCA,MAAM,mCAA8D,CAAC;;;;AAKrE,MAAa,4BAAiE;;;;AAK9E,SAAgB,0BACd,MACA,gBACM;CACN,IAAI,iCAAiC,UAAU,gBAC7C;CAEF,iCAAiC,QAAQ;AAC3C;;;;AAKA,SAAgB,yBACd,MACA,WAC8C;CAC9C,MAAM,iBAAiB,iCAAiC;CACxD,IAAI,CAAC,gBACH,MAAM,IAAI,MAAM,8BAA8B,KAAK,mBAAmB,UAAU,iCAAiC;CAEnH,OAAO;AACT;;;;AAKA,SAAgB,uCACd,QACS;CACT,IAAI,WAAW,MACb,OAAO;CAET,IAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAC/D,OAAO;CAET,OAAO,OAAO,YAAY;AAC5B"}
1
+ {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../../src/runtime/capabilities.ts"],"sourcesContent":["import type { SetDataSchedulerOptions } from './app/setData/scheduler'\nimport type { InlineExpressionMap } from './register/inline'\nimport type { ComputedDefinitions, InternalRuntimeState, MethodDefinitions, RuntimeInstance, SetDataSnapshotOptions } from './types'\n\nexport type { SetDataSchedulerOptions } from './app/setData/scheduler'\n\nexport type RuntimeCapabilityName\n = | 'patchStrategy'\n | 'templateRefs'\n | 'inlineEvents'\n | 'setDataHighFrequencyWarning'\n | 'scopedSlots'\n | 'layout'\n | 'jsxIslands'\n\nexport interface TemplateRefBinding {\n selector: string\n inFor: boolean\n name?: string\n get?: () => unknown\n kind?: 'component' | 'element'\n}\n\nexport interface LayoutHostBinding {\n key: string\n refName?: string\n selector: string\n kind?: 'component'\n}\n\nexport interface HighFrequencyWarningMonitorOptions {\n option: SetDataSnapshotOptions['highFrequencyWarning']\n targetLabel: string\n isInPageScrollHook?: () => boolean\n now?: () => number\n logger?: (message: string) => void\n}\n\nexport const RUNTIME_SCOPED_SLOT_STATE_KEY = '__wevuScopedSlotMountState'\n\nexport interface SetDataScheduler {\n job: () => void | Promise<void>\n snapshot: () => Record<string, unknown>\n cloneLatestSnapshot: () => Record<string, unknown>\n start?: () => void\n dispose?: () => void\n}\n\nexport interface ScopedSlotMountState {\n ownerId: string\n shouldFlushNativeOwnerId: boolean\n}\n\ntype RuntimeStateWithScopedSlotMount = InternalRuntimeState & {\n [RUNTIME_SCOPED_SLOT_STATE_KEY]?: ScopedSlotMountState\n}\n\n/**\n * 读取能力实现挂在宿主实例上的作用域插槽挂载状态。\n */\nexport function getScopedSlotMountState(target: InternalRuntimeState): ScopedSlotMountState | undefined {\n return (target as RuntimeStateWithScopedSlotMount)[RUNTIME_SCOPED_SLOT_STATE_KEY]\n}\n\nexport interface RuntimeCapabilityRegistry {\n patchStrategy?: {\n createScheduler: (options: SetDataSchedulerOptions) => SetDataScheduler\n }\n templateRefs?: {\n attachBindings: (target: InternalRuntimeState, bindings: readonly TemplateRefBinding[]) => void\n hasBindings: (target: InternalRuntimeState) => boolean\n schedule: (target: InternalRuntimeState, onResolved?: () => void, assignmentTarget?: InternalRuntimeState, onRejected?: (cause: unknown) => void) => void\n scheduleOwner: (target: InternalRuntimeState) => void\n clear: (target: InternalRuntimeState, assignmentTarget?: InternalRuntimeState) => void\n }\n inlineEvents?: {\n handler: (this: InternalRuntimeState, event: unknown) => unknown\n run: (context: unknown, expression: unknown, event: unknown, map?: InlineExpressionMap) => unknown\n }\n setDataHighFrequencyWarning?: {\n createMonitor: (options: HighFrequencyWarningMonitorOptions) => (() => void) | undefined\n }\n scopedSlots?: {\n prepareMount: (target: InternalRuntimeState) => ScopedSlotMountState\n attachMount: <D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<D, C, M>,\n state: ScopedSlotMountState,\n deferSnapshot: boolean,\n ) => void\n refresh: (target: InternalRuntimeState, state: ScopedSlotMountState) => void\n syncNativeOwnerId: (target: InternalRuntimeState, state: ScopedSlotMountState) => void\n teardown: (target: InternalRuntimeState) => void\n resolveLifecycleProxy: (target: InternalRuntimeState) => unknown\n allocateOwnerId: () => string\n }\n layout?: {\n attachPageSetter: (target: InternalRuntimeState) => void\n attachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void\n detachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void\n }\n jsxIslands?: {\n attachMethods: (methods: Record<string, (...args: any[]) => any>) => void\n }\n}\n\nconst mutableRuntimeCapabilityRegistry: RuntimeCapabilityRegistry = {}\n\n/**\n * 运行时能力的只读实时视图。安装器直接替换对应槽位,核心路径不会复制能力清单。\n */\nexport const runtimeCapabilityRegistry: Readonly<RuntimeCapabilityRegistry> = mutableRuntimeCapabilityRegistry\n\n/**\n * 注册或热替换一个运行时能力实现。\n */\nexport function registerRuntimeCapability<Name extends RuntimeCapabilityName>(\n name: Name,\n implementation: NonNullable<RuntimeCapabilityRegistry[Name]>,\n): void {\n if (mutableRuntimeCapabilityRegistry[name] === implementation) {\n return\n }\n mutableRuntimeCapabilityRegistry[name] = implementation\n}\n\n/**\n * 读取调用方明确请求的能力;缺失时同步失败,禁止静默降级。\n */\nexport function requireRuntimeCapability<Name extends RuntimeCapabilityName>(\n name: Name,\n requester: string,\n): NonNullable<RuntimeCapabilityRegistry[Name]> {\n const implementation = mutableRuntimeCapabilityRegistry[name]\n if (!implementation) {\n throw new Error(`[wevu] runtime capability \"${name}\" is required by ${requester}; install it before registration`)\n }\n return implementation\n}\n\n/**\n * 判断 setData 高频告警是否被显式启用。\n */\nexport function isSetDataHighFrequencyWarningRequested(\n option: SetDataSnapshotOptions['highFrequencyWarning'],\n): boolean {\n if (option === true) {\n return true\n }\n if (!option || typeof option !== 'object' || Array.isArray(option)) {\n return false\n }\n return option.enabled !== false\n}\n"],"mappings":";AAsCA,MAAa,gCAAgC;;;;AAsB7C,SAAgB,wBAAwB,QAAgE;CACtG,OAAQ,OAA2C;AACrD;AA4CA,MAAM,mCAA8D,CAAC;;;;AAKrE,MAAa,4BAAiE;;;;AAK9E,SAAgB,0BACd,MACA,gBACM;CACN,IAAI,iCAAiC,UAAU,gBAC7C;CAEF,iCAAiC,QAAQ;AAC3C;;;;AAKA,SAAgB,yBACd,MACA,WAC8C;CAC9C,MAAM,iBAAiB,iCAAiC;CACxD,IAAI,CAAC,gBACH,MAAM,IAAI,MAAM,8BAA8B,KAAK,mBAAmB,UAAU,iCAAiC;CAEnH,OAAO;AACT;;;;AAKA,SAAgB,uCACd,QACS;CACT,IAAI,WAAW,MACb,OAAO;CAET,IAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAC/D,OAAO;CAET,OAAO,OAAO,YAAY;AAC5B"}
@@ -11,8 +11,7 @@ function stringifyCssVars(values) {
11
11
  * 读取当前 SFC 的 CSS Modules 映射。
12
12
  */
13
13
  function useCssModule(name = "$style") {
14
- const modules = assertInSetup("useCssModule")[WEVU_CSS_MODULES_KEY];
15
- const resolved = modules === null || modules === void 0 ? void 0 : modules[name];
14
+ const resolved = assertInSetup("useCssModule")[WEVU_CSS_MODULES_KEY]?.[name];
16
15
  if (!resolved || typeof resolved !== "object") throw new Error(`useCssModule() 找不到名为 ${JSON.stringify(name)} 的 CSS Module`);
17
16
  return resolved;
18
17
  }
@@ -23,12 +22,9 @@ function useCssModule(name = "$style") {
23
22
  function useCssVars(getter) {
24
23
  const instance = assertInSetup("useCssVars");
25
24
  const runtime = instance.__wevu;
26
- const style = computed(() => {
27
- var _runtime$proxy;
28
- return stringifyCssVars(getter((_runtime$proxy = runtime === null || runtime === void 0 ? void 0 : runtime.proxy) !== null && _runtime$proxy !== void 0 ? _runtime$proxy : instance));
29
- });
30
- if ((runtime === null || runtime === void 0 ? void 0 : runtime.state) && typeof runtime.state === "object") runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style;
31
- if ((runtime === null || runtime === void 0 ? void 0 : runtime.setupState) && typeof runtime.setupState === "object") runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style;
25
+ const style = computed(() => stringifyCssVars(getter(runtime?.proxy ?? instance)));
26
+ if (runtime?.state && typeof runtime.state === "object") runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style;
27
+ if (runtime?.setupState && typeof runtime.setupState === "object") runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style;
32
28
  return style;
33
29
  }
34
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"css.mjs","names":[],"sources":["../../../src/runtime/css.ts"],"sourcesContent":["import type { ComputedRef } from '../reactivity'\nimport { WEVU_CSS_MODULES_KEY, WEVU_CSS_VARS_STYLE_KEY } from '@weapp-core/constants'\nimport { computed, unref } from '../reactivity'\nimport { assertInSetup } from './hooks/base'\n\nfunction stringifyCssVars(values: Record<string, unknown>) {\n return Object.entries(values)\n .map(([key, value]) => `--${key}:${value == null ? '' : String(unref(value as any))}`)\n .join(';')\n}\n\n/**\n * 读取当前 SFC 的 CSS Modules 映射。\n */\nexport function useCssModule(name = '$style'): Record<string, string> {\n const instance = assertInSetup('useCssModule') as Record<string, any>\n const modules = instance[WEVU_CSS_MODULES_KEY]\n const resolved = modules?.[name]\n if (!resolved || typeof resolved !== 'object') {\n throw new Error(`useCssModule() 找不到名为 ${JSON.stringify(name)} 的 CSS Module`)\n }\n return resolved\n}\n\n/**\n * 注册编译器生成的响应式 CSS 变量。\n * @internal\n */\nexport function useCssVars(getter: (context: Record<string, any>) => Record<string, unknown>): ComputedRef<string> {\n const instance = assertInSetup('useCssVars') as Record<string, any>\n const runtime = instance.__wevu\n const style = computed(() => stringifyCssVars(getter(runtime?.proxy ?? instance)))\n if (runtime?.state && typeof runtime.state === 'object') {\n runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n if (runtime?.setupState && typeof runtime.setupState === 'object') {\n runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n return style\n}\n"],"mappings":";;;;;;AAKA,SAAS,iBAAiB,QAAiC;CACzD,OAAO,OAAO,QAAQ,MAAM,CAAC,CAC1B,KAAK,CAAC,KAAK,WAAW,KAAK,IAAI,GAAG,SAAS,OAAO,KAAK,OAAO,MAAM,KAAY,CAAC,GAAG,CAAC,CACrF,KAAK,GAAG;AACb;;;;AAKA,SAAgB,aAAa,OAAO,UAAkC;CAEpE,MAAM,UADW,cAAc,cACR,CAAC,CAAC;CACzB,MAAM,6DAAW,QAAU;CAC3B,IAAI,CAAC,YAAY,OAAO,aAAa,UACnC,MAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,IAAI,EAAE,cAAc;CAE7E,OAAO;AACT;;;;;AAMA,SAAgB,WAAW,QAAwF;CACjH,MAAM,WAAW,cAAc,YAAY;CAC3C,MAAM,UAAU,SAAS;CACzB,MAAM,QAAQ,eAAe;;0BAAiB,2EAAO,QAAS,gEAAS,QAAQ,CAAC;EAAC;CACjF,uDAAI,QAAS,UAAS,OAAO,QAAQ,UAAU,UAC7C,QAAQ,MAAM,2BAA2B;CAE3C,uDAAI,QAAS,eAAc,OAAO,QAAQ,eAAe,UACvD,QAAQ,WAAW,2BAA2B;CAEhD,OAAO;AACT"}
1
+ {"version":3,"file":"css.mjs","names":[],"sources":["../../../src/runtime/css.ts"],"sourcesContent":["import type { ComputedRef } from '../reactivity'\nimport { WEVU_CSS_MODULES_KEY, WEVU_CSS_VARS_STYLE_KEY } from '@weapp-core/constants'\nimport { computed, unref } from '../reactivity'\nimport { assertInSetup } from './hooks/base'\n\nfunction stringifyCssVars(values: Record<string, unknown>) {\n return Object.entries(values)\n .map(([key, value]) => `--${key}:${value == null ? '' : String(unref(value as any))}`)\n .join(';')\n}\n\n/**\n * 读取当前 SFC 的 CSS Modules 映射。\n */\nexport function useCssModule(name = '$style'): Record<string, string> {\n const instance = assertInSetup('useCssModule') as Record<string, any>\n const modules = instance[WEVU_CSS_MODULES_KEY]\n const resolved = modules?.[name]\n if (!resolved || typeof resolved !== 'object') {\n throw new Error(`useCssModule() 找不到名为 ${JSON.stringify(name)} 的 CSS Module`)\n }\n return resolved\n}\n\n/**\n * 注册编译器生成的响应式 CSS 变量。\n * @internal\n */\nexport function useCssVars(getter: (context: Record<string, any>) => Record<string, unknown>): ComputedRef<string> {\n const instance = assertInSetup('useCssVars') as Record<string, any>\n const runtime = instance.__wevu\n const style = computed(() => stringifyCssVars(getter(runtime?.proxy ?? instance)))\n if (runtime?.state && typeof runtime.state === 'object') {\n runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n if (runtime?.setupState && typeof runtime.setupState === 'object') {\n runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n return style\n}\n"],"mappings":";;;;;;AAKA,SAAS,iBAAiB,QAAiC;CACzD,OAAO,OAAO,QAAQ,MAAM,CAAC,CAC1B,KAAK,CAAC,KAAK,WAAW,KAAK,IAAI,GAAG,SAAS,OAAO,KAAK,OAAO,MAAM,KAAY,CAAC,GAAG,CAAC,CACrF,KAAK,GAAG;AACb;;;;AAKA,SAAgB,aAAa,OAAO,UAAkC;CAGpE,MAAM,WAFW,cAAc,cACR,CAAC,CAAC,qBACD,GAAG;CAC3B,IAAI,CAAC,YAAY,OAAO,aAAa,UACnC,MAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,IAAI,EAAE,cAAc;CAE7E,OAAO;AACT;;;;;AAMA,SAAgB,WAAW,QAAwF;CACjH,MAAM,WAAW,cAAc,YAAY;CAC3C,MAAM,UAAU,SAAS;CACzB,MAAM,QAAQ,eAAe,iBAAiB,OAAO,SAAS,SAAS,QAAQ,CAAC,CAAC;CACjF,IAAI,SAAS,SAAS,OAAO,QAAQ,UAAU,UAC7C,QAAQ,MAAM,2BAA2B;CAE3C,IAAI,SAAS,cAAc,OAAO,QAAQ,eAAe,UACvD,QAAQ,WAAW,2BAA2B;CAEhD,OAAO;AACT"}
@@ -15,14 +15,14 @@ function mergeDefaults(defaults, options) {
15
15
  const defaultSetData = getPlainRecord(defaults.setData);
16
16
  const optionSetData = getPlainRecord(options.setData);
17
17
  if (defaultSetData || optionSetData) merged.setData = {
18
- ...defaultSetData !== null && defaultSetData !== void 0 ? defaultSetData : {},
19
- ...optionSetData !== null && optionSetData !== void 0 ? optionSetData : {}
18
+ ...defaultSetData ?? {},
19
+ ...optionSetData ?? {}
20
20
  };
21
21
  const defaultOptions = getPlainRecord(defaults.options);
22
22
  const optionOptions = getPlainRecord(options.options);
23
23
  if (defaultOptions || optionOptions) merged.options = {
24
- ...defaultOptions !== null && defaultOptions !== void 0 ? defaultOptions : {},
25
- ...optionOptions !== null && optionOptions !== void 0 ? optionOptions : {}
24
+ ...defaultOptions ?? {},
25
+ ...optionOptions ?? {}
26
26
  };
27
27
  return merged;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.mjs","names":[],"sources":["../../../src/runtime/defaults.ts"],"sourcesContent":["import type { CreateAppOptions, DefineComponentOptions } from './types'\n\nexport type WevuDefaultsScope = 'app' | 'component'\n\nexport const INTERNAL_DEFAULTS_SCOPE_KEY = '__wevuDefaultsScope'\n\nexport interface WevuDefaults {\n app?: Partial<CreateAppOptions<any, any, any>>\n component?: Partial<DefineComponentOptions<any, any, any, any>>\n}\n\nlet currentDefaults: WevuDefaults = {}\n\nfunction getPlainRecord(value: unknown): Record<string, any> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined\n }\n return value as Record<string, any>\n}\n\nfunction mergeDefaults<T extends Record<string, any>>(\n defaults?: Partial<T>,\n options?: Partial<T>,\n) {\n if (!defaults) {\n return options\n }\n if (!options) {\n return defaults\n }\n\n const merged = {\n ...(defaults as Record<string, any>),\n ...(options as Record<string, any>),\n }\n\n const defaultSetData = getPlainRecord((defaults as any).setData)\n const optionSetData = getPlainRecord((options as any).setData)\n if (defaultSetData || optionSetData) {\n merged.setData = {\n ...(defaultSetData ?? {}),\n ...(optionSetData ?? {}),\n }\n }\n\n const defaultOptions = getPlainRecord((defaults as any).options)\n const optionOptions = getPlainRecord((options as any).options)\n if (defaultOptions || optionOptions) {\n merged.options = {\n ...(defaultOptions ?? {}),\n ...(optionOptions ?? {}),\n }\n }\n\n return merged as Partial<T>\n}\n\nfunction mergeWithDefaults<T extends Record<string, any>>(\n defaults: Partial<T> | undefined,\n options: T,\n): T {\n return mergeDefaults(defaults, options) as T\n}\n\nfunction mergeWevuDefaults(base: WevuDefaults, next: WevuDefaults): WevuDefaults {\n return {\n app: mergeDefaults(base.app, next.app),\n component: mergeDefaults(base.component, next.component),\n }\n}\n\nexport function setWevuDefaults(next: WevuDefaults) {\n currentDefaults = mergeWevuDefaults(currentDefaults, next)\n}\n\nexport function resetWevuDefaults() {\n currentDefaults = {}\n}\n\n/**\n * 读取当前默认配置(框架内部使用)。\n * @internal\n */\nexport function resolveWevuDefaults() {\n return currentDefaults\n}\n\n/**\n * 将默认配置应用到 App 选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuAppDefaults<T extends CreateAppOptions<any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.app as Partial<T> | undefined, options)\n}\n\n/**\n * 将默认配置应用到组件选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuComponentDefaults<T extends DefineComponentOptions<any, any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.component as Partial<T> | undefined, options)\n}\n"],"mappings":";AAIA,MAAa,8BAA8B;AAO3C,IAAI,kBAAgC,CAAC;AAErC,SAAS,eAAe,OAAiD;CACvE,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAC5D;CAEF,OAAO;AACT;AAEA,SAAS,cACP,UACA,SACA;CACA,IAAI,CAAC,UACH,OAAO;CAET,IAAI,CAAC,SACH,OAAO;CAGT,MAAM,SAAS;EACb,GAAI;EACJ,GAAI;CACN;CAEA,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,wEAAkB,CAAC;EACvB,GAAI,qEAAiB,CAAC;CACxB;CAGF,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,wEAAkB,CAAC;EACvB,GAAI,qEAAiB,CAAC;CACxB;CAGF,OAAO;AACT;AAEA,SAAS,kBACP,UACA,SACG;CACH,OAAO,cAAc,UAAU,OAAO;AACxC;AAEA,SAAS,kBAAkB,MAAoB,MAAkC;CAC/E,OAAO;EACL,KAAK,cAAc,KAAK,KAAK,KAAK,GAAG;EACrC,WAAW,cAAc,KAAK,WAAW,KAAK,SAAS;CACzD;AACF;AAEA,SAAgB,gBAAgB,MAAoB;CAClD,kBAAkB,kBAAkB,iBAAiB,IAAI;AAC3D;AAEA,SAAgB,oBAAoB;CAClC,kBAAkB,CAAC;AACrB;;;;;AAcA,SAAgB,qBAAgE,SAAe;CAC7F,OAAO,kBAAkB,gBAAgB,KAA+B,OAAO;AACjF;;;;;AAMA,SAAgB,2BAAiF,SAAe;CAC9G,OAAO,kBAAkB,gBAAgB,WAAqC,OAAO;AACvF"}
1
+ {"version":3,"file":"defaults.mjs","names":[],"sources":["../../../src/runtime/defaults.ts"],"sourcesContent":["import type { CreateAppOptions, DefineComponentOptions } from './types'\n\nexport type WevuDefaultsScope = 'app' | 'component'\n\nexport const INTERNAL_DEFAULTS_SCOPE_KEY = '__wevuDefaultsScope'\n\nexport interface WevuDefaults {\n app?: Partial<CreateAppOptions<any, any, any>>\n component?: Partial<DefineComponentOptions<any, any, any, any>>\n}\n\nlet currentDefaults: WevuDefaults = {}\n\nfunction getPlainRecord(value: unknown): Record<string, any> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined\n }\n return value as Record<string, any>\n}\n\nfunction mergeDefaults<T extends Record<string, any>>(\n defaults?: Partial<T>,\n options?: Partial<T>,\n) {\n if (!defaults) {\n return options\n }\n if (!options) {\n return defaults\n }\n\n const merged = {\n ...(defaults as Record<string, any>),\n ...(options as Record<string, any>),\n }\n\n const defaultSetData = getPlainRecord((defaults as any).setData)\n const optionSetData = getPlainRecord((options as any).setData)\n if (defaultSetData || optionSetData) {\n merged.setData = {\n ...(defaultSetData ?? {}),\n ...(optionSetData ?? {}),\n }\n }\n\n const defaultOptions = getPlainRecord((defaults as any).options)\n const optionOptions = getPlainRecord((options as any).options)\n if (defaultOptions || optionOptions) {\n merged.options = {\n ...(defaultOptions ?? {}),\n ...(optionOptions ?? {}),\n }\n }\n\n return merged as Partial<T>\n}\n\nfunction mergeWithDefaults<T extends Record<string, any>>(\n defaults: Partial<T> | undefined,\n options: T,\n): T {\n return mergeDefaults(defaults, options) as T\n}\n\nfunction mergeWevuDefaults(base: WevuDefaults, next: WevuDefaults): WevuDefaults {\n return {\n app: mergeDefaults(base.app, next.app),\n component: mergeDefaults(base.component, next.component),\n }\n}\n\nexport function setWevuDefaults(next: WevuDefaults) {\n currentDefaults = mergeWevuDefaults(currentDefaults, next)\n}\n\nexport function resetWevuDefaults() {\n currentDefaults = {}\n}\n\n/**\n * 读取当前默认配置(框架内部使用)。\n * @internal\n */\nexport function resolveWevuDefaults() {\n return currentDefaults\n}\n\n/**\n * 将默认配置应用到 App 选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuAppDefaults<T extends CreateAppOptions<any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.app as Partial<T> | undefined, options)\n}\n\n/**\n * 将默认配置应用到组件选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuComponentDefaults<T extends DefineComponentOptions<any, any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.component as Partial<T> | undefined, options)\n}\n"],"mappings":";AAIA,MAAa,8BAA8B;AAO3C,IAAI,kBAAgC,CAAC;AAErC,SAAS,eAAe,OAAiD;CACvE,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAC5D;CAEF,OAAO;AACT;AAEA,SAAS,cACP,UACA,SACA;CACA,IAAI,CAAC,UACH,OAAO;CAET,IAAI,CAAC,SACH,OAAO;CAGT,MAAM,SAAS;EACb,GAAI;EACJ,GAAI;CACN;CAEA,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,kBAAkB,CAAC;EACvB,GAAI,iBAAiB,CAAC;CACxB;CAGF,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,kBAAkB,CAAC;EACvB,GAAI,iBAAiB,CAAC;CACxB;CAGF,OAAO;AACT;AAEA,SAAS,kBACP,UACA,SACG;CACH,OAAO,cAAc,UAAU,OAAO;AACxC;AAEA,SAAS,kBAAkB,MAAoB,MAAkC;CAC/E,OAAO;EACL,KAAK,cAAc,KAAK,KAAK,KAAK,GAAG;EACrC,WAAW,cAAc,KAAK,WAAW,KAAK,SAAS;CACzD;AACF;AAEA,SAAgB,gBAAgB,MAAoB;CAClD,kBAAkB,kBAAkB,iBAAiB,IAAI;AAC3D;AAEA,SAAgB,oBAAoB;CAClC,kBAAkB,CAAC;AACrB;;;;;AAcA,SAAgB,qBAAgE,SAAe;CAC7F,OAAO,kBAAkB,gBAAgB,KAA+B,OAAO;AACjF;;;;;AAMA,SAAgB,2BAAiF,SAAe;CAC9G,OAAO,kBAAkB,gBAAgB,WAAqC,OAAO;AACvF"}
@@ -7,7 +7,7 @@ import { WEVU_SLOT_OWNER_ID_KEY } from "@weapp-core/constants";
7
7
  var InitialComputedBailout = class extends Error {};
8
8
  function resolveComputedGetter(definition) {
9
9
  if (typeof definition === "function") return definition;
10
- const getter = definition === null || definition === void 0 ? void 0 : definition.get;
10
+ const getter = definition?.get;
11
11
  return typeof getter === "function" ? getter : void 0;
12
12
  }
13
13
  function isCompilerGeneratedTemplateComputedKey(key) {
@@ -17,7 +17,7 @@ function canResolveInitialTemplateComputed(key, getter) {
17
17
  if (!key.startsWith("__wv_bind_")) return false;
18
18
  try {
19
19
  return !/\bthis\b/.test(Function.prototype.toString.call(getter));
20
- } catch (_unused) {
20
+ } catch {
21
21
  return false;
22
22
  }
23
23
  }
@@ -27,9 +27,9 @@ function resolveRuntimeBindingPlaceholder(key) {
27
27
  if (key.startsWith("__wv_cls_") || key.startsWith("__wv_style_")) return "";
28
28
  }
29
29
  function resolveRuntimeBindingPlaceholderData(data, setData) {
30
- const pickKeys = Array.isArray(setData === null || setData === void 0 ? void 0 : setData.pick) ? setData.pick : [];
30
+ const pickKeys = Array.isArray(setData?.pick) ? setData.pick : [];
31
31
  if (!pickKeys.length) return;
32
- const omitKeys = new Set(Array.isArray(setData === null || setData === void 0 ? void 0 : setData.omit) ? setData.omit : []);
32
+ const omitKeys = new Set(Array.isArray(setData?.omit) ? setData.omit : []);
33
33
  const resolved = {};
34
34
  for (const key of pickKeys) {
35
35
  if (omitKeys.has(key) || hasOwn(data, key)) continue;
@@ -73,7 +73,7 @@ function resolveInitialComputedData(options) {
73
73
  ok: true,
74
74
  value
75
75
  };
76
- } catch (_unused2) {
76
+ } catch {
77
77
  return { ok: false };
78
78
  } finally {
79
79
  resolving.delete(key);
@@ -1 +1 @@
1
- {"version":3,"file":"initialComputed.mjs","names":[],"sources":["../../../../src/runtime/define/initialComputed.ts"],"sourcesContent":["import type { WritableComputedOptions } from '../../reactivity'\nimport type { ComputedDefinitions, SetDataSnapshotOptions } from '../types'\nimport { WEVU_SLOT_OWNER_ID_KEY } from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { resolveSetDataOptions } from '../app/setDataOptions'\nimport { toPlain } from '../diff'\n\nclass InitialComputedBailout extends Error {}\n\nfunction resolveComputedGetter(definition: unknown): ((...args: any[]) => unknown) | undefined {\n if (typeof definition === 'function') {\n return definition as (...args: any[]) => unknown\n }\n const getter = (definition as WritableComputedOptions<any> | undefined)?.get\n return typeof getter === 'function' ? getter : undefined\n}\n\nfunction isCompilerGeneratedTemplateComputedKey(key: string) {\n return key.startsWith('__wv_bind_')\n || key.startsWith('__wv_cls_')\n || key.startsWith('__wv_style_')\n}\n\nfunction canResolveInitialTemplateComputed(key: string, getter: (...args: any[]) => unknown) {\n if (!key.startsWith('__wv_bind_')) {\n return false\n }\n try {\n return !/\\bthis\\b/.test(Function.prototype.toString.call(getter))\n }\n catch {\n return false\n }\n}\n\nfunction resolveRuntimeBindingPlaceholder(key: string) {\n if (key === WEVU_SLOT_OWNER_ID_KEY) {\n return ''\n }\n if (key.startsWith('__wv_bind_')) {\n return null\n }\n if (key.startsWith('__wv_cls_') || key.startsWith('__wv_style_')) {\n return ''\n }\n}\n\nfunction resolveRuntimeBindingPlaceholderData(\n data: Record<string, any>,\n setData: SetDataSnapshotOptions | undefined,\n) {\n const pickKeys = Array.isArray(setData?.pick) ? setData.pick : []\n if (!pickKeys.length) {\n return undefined\n }\n const omitKeys = new Set(Array.isArray(setData?.omit) ? setData.omit : [])\n const resolved: Record<string, any> = {}\n for (const key of pickKeys) {\n if (omitKeys.has(key) || hasOwn(data, key)) {\n continue\n }\n const placeholder = resolveRuntimeBindingPlaceholder(key)\n if (placeholder !== undefined) {\n resolved[key] = placeholder\n }\n }\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveInitialComputedData(options: {\n data: Record<string, any>\n computed: ComputedDefinitions | undefined\n methods?: Record<string, any>\n setData: SetDataSnapshotOptions | undefined\n}) {\n const {\n data,\n computed,\n methods,\n setData,\n } = options\n const computedKeys = computed ? Object.keys(computed) : []\n if (!computedKeys.length) {\n return undefined\n }\n\n const {\n includeComputed,\n shouldIncludeKey,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n } = resolveSetDataOptions(setData)\n if (!includeComputed) {\n return undefined\n }\n\n const resolved: Record<string, any> = {}\n const resolving = new Set<string>()\n let proxy!: Record<string, any>\n const resolveComputedValue = (key: string): { ok: true, value: any } | { ok: false } => {\n if (hasOwn(data, key) || !shouldIncludeKey(key)) {\n return { ok: false }\n }\n if (hasOwn(resolved, key)) {\n return { ok: true, value: resolved[key] }\n }\n if (resolving.has(key)) {\n return { ok: false }\n }\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (!getter) {\n return { ok: false }\n }\n resolving.add(key)\n try {\n const rawValue = getter.call(proxy)\n if (rawValue === undefined) {\n return { ok: false }\n }\n const value = toPlain(rawValue, new WeakMap(), {\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n if (value === undefined) {\n return { ok: false }\n }\n resolved[key] = value\n return { ok: true, value }\n }\n catch {\n return { ok: false }\n }\n finally {\n resolving.delete(key)\n }\n }\n\n proxy = new Proxy(data, {\n get(target, key, receiver) {\n if (typeof key === 'string') {\n if (key === 'data' || key === '$state') {\n return data\n }\n if (key === 'props' || key === '$props' || key === '$attrs') {\n throw new InitialComputedBailout()\n }\n if (hasOwn(data, key)) {\n return Reflect.get(target, key, receiver)\n }\n if (methods && hasOwn(methods, key)) {\n const method = methods[key]\n return typeof method === 'function' ? method.bind(proxy) : method\n }\n if (computed && hasOwn(computed, key)) {\n const computedValue = resolveComputedValue(key)\n if (computedValue.ok) {\n return computedValue.value\n }\n throw new InitialComputedBailout()\n }\n throw new InitialComputedBailout()\n }\n return Reflect.get(target, key, receiver)\n },\n has(target, key) {\n return Reflect.has(target, key)\n || (typeof key === 'string' && Boolean(\n computed && hasOwn(computed, key),\n ))\n },\n })\n\n for (const key of computedKeys) {\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (isCompilerGeneratedTemplateComputedKey(key) && (!getter || !canResolveInitialTemplateComputed(key, getter))) {\n continue\n }\n resolveComputedValue(key)\n }\n\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveNativeInitialData(\n data: unknown,\n computed: ComputedDefinitions | undefined,\n setData: SetDataSnapshotOptions | undefined,\n methods?: Record<string, any>,\n) {\n if (!data || typeof data !== 'object') {\n return data\n }\n const initialComputedData = resolveInitialComputedData({\n data: data as Record<string, any>,\n computed,\n methods,\n setData,\n })\n const runtimeBindingPlaceholderData = resolveRuntimeBindingPlaceholderData(data as Record<string, any>, setData)\n return initialComputedData || runtimeBindingPlaceholderData\n ? {\n ...(data as Record<string, any>),\n ...runtimeBindingPlaceholderData,\n ...initialComputedData,\n }\n : data\n}\n"],"mappings":";;;;;;AAOA,IAAM,yBAAN,cAAqC,MAAM,CAAC;AAE5C,SAAS,sBAAsB,YAAgE;CAC7F,IAAI,OAAO,eAAe,YACxB,OAAO;CAET,MAAM,iEAAU,WAAyD;CACzE,OAAO,OAAO,WAAW,aAAa,SAAS;AACjD;AAEA,SAAS,uCAAuC,KAAa;CAC3D,OAAO,IAAI,WAAW,YAAY,KAC7B,IAAI,WAAW,WAAW,KAC1B,IAAI,WAAW,aAAa;AACnC;AAEA,SAAS,kCAAkC,KAAa,QAAqC;CAC3F,IAAI,CAAC,IAAI,WAAW,YAAY,GAC9B,OAAO;CAET,IAAI;EACF,OAAO,CAAC,WAAW,KAAK,SAAS,UAAU,SAAS,KAAK,MAAM,CAAC;CAClE,kBACM;EACJ,OAAO;CACT;AACF;AAEA,SAAS,iCAAiC,KAAa;CACrD,IAAI,QAAQ,wBACV,OAAO;CAET,IAAI,IAAI,WAAW,YAAY,GAC7B,OAAO;CAET,IAAI,IAAI,WAAW,WAAW,KAAK,IAAI,WAAW,aAAa,GAC7D,OAAO;AAEX;AAEA,SAAS,qCACP,MACA,SACA;CACA,MAAM,WAAW,MAAM,0DAAQ,QAAS,IAAI,IAAI,QAAQ,OAAO,CAAC;CAChE,IAAI,CAAC,SAAS,QACZ;CAEF,MAAM,WAAW,IAAI,IAAI,MAAM,0DAAQ,QAAS,IAAI,IAAI,QAAQ,OAAO,CAAC,CAAC;CACzE,MAAM,WAAgC,CAAC;CACvC,KAAK,MAAM,OAAO,UAAU;EAC1B,IAAI,SAAS,IAAI,GAAG,KAAK,OAAO,MAAM,GAAG,GACvC;EAEF,MAAM,cAAc,iCAAiC,GAAG;EACxD,IAAI,gBAAgB,QAClB,SAAS,OAAO;CAEpB;CACA,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,WAAW;AACnD;AAEA,SAAgB,2BAA2B,SAKxC;CACD,MAAM,EACJ,MACA,UACA,SACA,YACE;CACJ,MAAM,eAAe,WAAW,OAAO,KAAK,QAAQ,IAAI,CAAC;CACzD,IAAI,CAAC,aAAa,QAChB;CAGF,MAAM,EACJ,iBACA,kBACA,iBACA,gBACA,kBACA,kBACE,sBAAsB,OAAO;CACjC,IAAI,CAAC,iBACH;CAGF,MAAM,WAAgC,CAAC;CACvC,MAAM,4BAAY,IAAI,IAAY;CAClC,IAAI;CACJ,MAAM,wBAAwB,QAA0D;EACtF,IAAI,OAAO,MAAM,GAAG,KAAK,CAAC,iBAAiB,GAAG,GAC5C,OAAO,EAAE,IAAI,MAAM;EAErB,IAAI,OAAO,UAAU,GAAG,GACtB,OAAO;GAAE,IAAI;GAAM,OAAO,SAAS;EAAK;EAE1C,IAAI,UAAU,IAAI,GAAG,GACnB,OAAO,EAAE,IAAI,MAAM;EAErB,MAAM,SAAS,sBAAuB,SAAiC,IAAI;EAC3E,IAAI,CAAC,QACH,OAAO,EAAE,IAAI,MAAM;EAErB,UAAU,IAAI,GAAG;EACjB,IAAI;GACF,MAAM,WAAW,OAAO,KAAK,KAAK;GAClC,IAAI,aAAa,QACf,OAAO,EAAE,IAAI,MAAM;GAErB,MAAM,QAAQ,QAAQ,0BAAU,IAAI,QAAQ,GAAG;IAC7C,UAAU;IACV,SAAS;IACT;IACA;IACA,OAAO;GACT,CAAC;GACD,IAAI,UAAU,QACZ,OAAO,EAAE,IAAI,MAAM;GAErB,SAAS,OAAO;GAChB,OAAO;IAAE,IAAI;IAAM;GAAM;EAC3B,mBACM;GACJ,OAAO,EAAE,IAAI,MAAM;EACrB,UACQ;GACN,UAAU,OAAO,GAAG;EACtB;CACF;CAEA,QAAQ,IAAI,MAAM,MAAM;EACtB,IAAI,QAAQ,KAAK,UAAU;GACzB,IAAI,OAAO,QAAQ,UAAU;IAC3B,IAAI,QAAQ,UAAU,QAAQ,UAC5B,OAAO;IAET,IAAI,QAAQ,WAAW,QAAQ,YAAY,QAAQ,UACjD,MAAM,IAAI,uBAAuB;IAEnC,IAAI,OAAO,MAAM,GAAG,GAClB,OAAO,QAAQ,IAAI,QAAQ,KAAK,QAAQ;IAE1C,IAAI,WAAW,OAAO,SAAS,GAAG,GAAG;KACnC,MAAM,SAAS,QAAQ;KACvB,OAAO,OAAO,WAAW,aAAa,OAAO,KAAK,KAAK,IAAI;IAC7D;IACA,IAAI,YAAY,OAAO,UAAU,GAAG,GAAG;KACrC,MAAM,gBAAgB,qBAAqB,GAAG;KAC9C,IAAI,cAAc,IAChB,OAAO,cAAc;KAEvB,MAAM,IAAI,uBAAuB;IACnC;IACA,MAAM,IAAI,uBAAuB;GACnC;GACA,OAAO,QAAQ,IAAI,QAAQ,KAAK,QAAQ;EAC1C;EACA,IAAI,QAAQ,KAAK;GACf,OAAO,QAAQ,IAAI,QAAQ,GAAG,KACxB,OAAO,QAAQ,YAAY,QAC7B,YAAY,OAAO,UAAU,GAAG,CAClC;EACJ;CACF,CAAC;CAED,KAAK,MAAM,OAAO,cAAc;EAC9B,MAAM,SAAS,sBAAuB,SAAiC,IAAI;EAC3E,IAAI,uCAAuC,GAAG,MAAM,CAAC,UAAU,CAAC,kCAAkC,KAAK,MAAM,IAC3G;EAEF,qBAAqB,GAAG;CAC1B;CAEA,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,WAAW;AACnD;AAEA,SAAgB,yBACd,MACA,UACA,SACA,SACA;CACA,IAAI,CAAC,QAAQ,OAAO,SAAS,UAC3B,OAAO;CAET,MAAM,sBAAsB,2BAA2B;EAC/C;EACN;EACA;EACA;CACF,CAAC;CACD,MAAM,gCAAgC,qCAAqC,MAA6B,OAAO;CAC/G,OAAO,uBAAuB,gCAC1B;EACE,GAAI;EACJ,GAAG;EACH,GAAG;CACL,IACA;AACN"}
1
+ {"version":3,"file":"initialComputed.mjs","names":[],"sources":["../../../../src/runtime/define/initialComputed.ts"],"sourcesContent":["import type { WritableComputedOptions } from '../../reactivity'\nimport type { ComputedDefinitions, SetDataSnapshotOptions } from '../types'\nimport { WEVU_SLOT_OWNER_ID_KEY } from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { resolveSetDataOptions } from '../app/setDataOptions'\nimport { toPlain } from '../diff'\n\nclass InitialComputedBailout extends Error {}\n\nfunction resolveComputedGetter(definition: unknown): ((...args: any[]) => unknown) | undefined {\n if (typeof definition === 'function') {\n return definition as (...args: any[]) => unknown\n }\n const getter = (definition as WritableComputedOptions<any> | undefined)?.get\n return typeof getter === 'function' ? getter : undefined\n}\n\nfunction isCompilerGeneratedTemplateComputedKey(key: string) {\n return key.startsWith('__wv_bind_')\n || key.startsWith('__wv_cls_')\n || key.startsWith('__wv_style_')\n}\n\nfunction canResolveInitialTemplateComputed(key: string, getter: (...args: any[]) => unknown) {\n if (!key.startsWith('__wv_bind_')) {\n return false\n }\n try {\n return !/\\bthis\\b/.test(Function.prototype.toString.call(getter))\n }\n catch {\n return false\n }\n}\n\nfunction resolveRuntimeBindingPlaceholder(key: string) {\n if (key === WEVU_SLOT_OWNER_ID_KEY) {\n return ''\n }\n if (key.startsWith('__wv_bind_')) {\n return null\n }\n if (key.startsWith('__wv_cls_') || key.startsWith('__wv_style_')) {\n return ''\n }\n}\n\nfunction resolveRuntimeBindingPlaceholderData(\n data: Record<string, any>,\n setData: SetDataSnapshotOptions | undefined,\n) {\n const pickKeys = Array.isArray(setData?.pick) ? setData.pick : []\n if (!pickKeys.length) {\n return undefined\n }\n const omitKeys = new Set(Array.isArray(setData?.omit) ? setData.omit : [])\n const resolved: Record<string, any> = {}\n for (const key of pickKeys) {\n if (omitKeys.has(key) || hasOwn(data, key)) {\n continue\n }\n const placeholder = resolveRuntimeBindingPlaceholder(key)\n if (placeholder !== undefined) {\n resolved[key] = placeholder\n }\n }\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveInitialComputedData(options: {\n data: Record<string, any>\n computed: ComputedDefinitions | undefined\n methods?: Record<string, any>\n setData: SetDataSnapshotOptions | undefined\n}) {\n const {\n data,\n computed,\n methods,\n setData,\n } = options\n const computedKeys = computed ? Object.keys(computed) : []\n if (!computedKeys.length) {\n return undefined\n }\n\n const {\n includeComputed,\n shouldIncludeKey,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n } = resolveSetDataOptions(setData)\n if (!includeComputed) {\n return undefined\n }\n\n const resolved: Record<string, any> = {}\n const resolving = new Set<string>()\n let proxy!: Record<string, any>\n const resolveComputedValue = (key: string): { ok: true, value: any } | { ok: false } => {\n if (hasOwn(data, key) || !shouldIncludeKey(key)) {\n return { ok: false }\n }\n if (hasOwn(resolved, key)) {\n return { ok: true, value: resolved[key] }\n }\n if (resolving.has(key)) {\n return { ok: false }\n }\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (!getter) {\n return { ok: false }\n }\n resolving.add(key)\n try {\n const rawValue = getter.call(proxy)\n if (rawValue === undefined) {\n return { ok: false }\n }\n const value = toPlain(rawValue, new WeakMap(), {\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n if (value === undefined) {\n return { ok: false }\n }\n resolved[key] = value\n return { ok: true, value }\n }\n catch {\n return { ok: false }\n }\n finally {\n resolving.delete(key)\n }\n }\n\n proxy = new Proxy(data, {\n get(target, key, receiver) {\n if (typeof key === 'string') {\n if (key === 'data' || key === '$state') {\n return data\n }\n if (key === 'props' || key === '$props' || key === '$attrs') {\n throw new InitialComputedBailout()\n }\n if (hasOwn(data, key)) {\n return Reflect.get(target, key, receiver)\n }\n if (methods && hasOwn(methods, key)) {\n const method = methods[key]\n return typeof method === 'function' ? method.bind(proxy) : method\n }\n if (computed && hasOwn(computed, key)) {\n const computedValue = resolveComputedValue(key)\n if (computedValue.ok) {\n return computedValue.value\n }\n throw new InitialComputedBailout()\n }\n throw new InitialComputedBailout()\n }\n return Reflect.get(target, key, receiver)\n },\n has(target, key) {\n return Reflect.has(target, key)\n || (typeof key === 'string' && Boolean(\n computed && hasOwn(computed, key),\n ))\n },\n })\n\n for (const key of computedKeys) {\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (isCompilerGeneratedTemplateComputedKey(key) && (!getter || !canResolveInitialTemplateComputed(key, getter))) {\n continue\n }\n resolveComputedValue(key)\n }\n\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveNativeInitialData(\n data: unknown,\n computed: ComputedDefinitions | undefined,\n setData: SetDataSnapshotOptions | undefined,\n methods?: Record<string, any>,\n) {\n if (!data || typeof data !== 'object') {\n return data\n }\n const initialComputedData = resolveInitialComputedData({\n data: data as Record<string, any>,\n computed,\n methods,\n setData,\n })\n const runtimeBindingPlaceholderData = resolveRuntimeBindingPlaceholderData(data as Record<string, any>, setData)\n return initialComputedData || runtimeBindingPlaceholderData\n ? {\n ...(data as Record<string, any>),\n ...runtimeBindingPlaceholderData,\n ...initialComputedData,\n }\n : data\n}\n"],"mappings":"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"}
@@ -74,12 +74,11 @@ function mergeData(parent, child) {
74
74
  if (parent === void 0) return child;
75
75
  if (child === void 0) return parent;
76
76
  return function mergedOptionData() {
77
- var _asRecord, _asRecord2;
78
77
  const parentData = typeof parent === "function" ? parent.call(this) : parent;
79
78
  const childData = typeof child === "function" ? child.call(this) : child;
80
79
  return {
81
- ...(_asRecord = asRecord(parentData)) !== null && _asRecord !== void 0 ? _asRecord : {},
82
- ...(_asRecord2 = asRecord(childData)) !== null && _asRecord2 !== void 0 ? _asRecord2 : {}
80
+ ...asRecord(parentData) ?? {},
81
+ ...asRecord(childData) ?? {}
83
82
  };
84
83
  };
85
84
  }
@@ -98,15 +97,14 @@ function mergeWatchDescriptor(parent, child) {
98
97
  const parentRecord = asRecord(parent);
99
98
  const childRecord = asRecord(child);
100
99
  return {
101
- ...parentRecord !== null && parentRecord !== void 0 ? parentRecord : {},
102
- ...childRecord !== null && childRecord !== void 0 ? childRecord : {},
100
+ ...parentRecord ?? {},
101
+ ...childRecord ?? {},
103
102
  handler(...args) {
104
- var _resolveWatchHandler, _resolveWatchHandler2;
105
- (_resolveWatchHandler = resolveWatchHandler(parent, this)) === null || _resolveWatchHandler === void 0 || _resolveWatchHandler.apply(this, args);
106
- return (_resolveWatchHandler2 = resolveWatchHandler(child, this)) === null || _resolveWatchHandler2 === void 0 ? void 0 : _resolveWatchHandler2.apply(this, args);
103
+ resolveWatchHandler(parent, this)?.apply(this, args);
104
+ return resolveWatchHandler(child, this)?.apply(this, args);
107
105
  },
108
- immediate: Boolean((parentRecord === null || parentRecord === void 0 ? void 0 : parentRecord.immediate) || (childRecord === null || childRecord === void 0 ? void 0 : childRecord.immediate)),
109
- deep: Boolean((parentRecord === null || parentRecord === void 0 ? void 0 : parentRecord.deep) || (childRecord === null || childRecord === void 0 ? void 0 : childRecord.deep))
106
+ immediate: Boolean(parentRecord?.immediate || childRecord?.immediate),
107
+ deep: Boolean(parentRecord?.deep || childRecord?.deep)
110
108
  };
111
109
  }
112
110
  function mergeWatch(parent, child) {
@@ -134,8 +132,8 @@ function mergeOptions(parent, child) {
134
132
  const parentRecord = asRecord(parent[key]);
135
133
  const childRecord = asRecord(child[key]);
136
134
  if (parentRecord || childRecord) merged[key] = {
137
- ...parentRecord !== null && parentRecord !== void 0 ? parentRecord : {},
138
- ...childRecord !== null && childRecord !== void 0 ? childRecord : {}
135
+ ...parentRecord ?? {},
136
+ ...childRecord ?? {}
139
137
  };
140
138
  }
141
139
  merged.data = mergeData(parent.data, child.data);
@@ -1 +1 @@
1
- {"version":3,"file":"options.mjs","names":[],"sources":["../../../../src/runtime/define/options.ts"],"sourcesContent":["import type { DefineComponentOptions } from '../types'\n\ntype ComponentOptions = DefineComponentOptions<any, any, any, any, any>\ntype OptionRecord = Record<string, any>\n\nconst OBJECT_OPTION_KEYS = [\n 'components',\n 'computed',\n 'directives',\n 'inject',\n 'methods',\n 'props',\n 'provide',\n] as const\n\nconst HOOK_OPTION_KEYS = new Set([\n 'activated',\n 'attached',\n 'beforeCreate',\n 'beforeDestroy',\n 'beforeMount',\n 'beforeUnmount',\n 'beforeUpdate',\n 'created',\n 'deactivated',\n 'destroyed',\n 'detached',\n 'errorCaptured',\n 'hide',\n 'mounted',\n 'moved',\n 'onAddToFavorites',\n 'onHide',\n 'onLoad',\n 'onPageScroll',\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onReady',\n 'onResize',\n 'onRouteDone',\n 'onSaveExitState',\n 'onShareAppMessage',\n 'onShareTimeline',\n 'onShow',\n 'onTabItemTap',\n 'onUnload',\n 'ready',\n 'renderTracked',\n 'renderTriggered',\n 'serverPrefetch',\n 'show',\n 'unmounted',\n 'updated',\n])\n\nfunction asRecord(value: unknown): OptionRecord | undefined {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as OptionRecord\n : undefined\n}\n\nfunction mergeHook(parent: unknown, child: unknown) {\n if (typeof parent !== 'function') {\n return child\n }\n if (typeof child !== 'function') {\n return parent\n }\n return function mergedOptionHook(this: unknown, ...args: unknown[]) {\n parent.apply(this, args)\n return child.apply(this, args)\n }\n}\n\nfunction mergeHookRecord(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeHook(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeData(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n return function mergedOptionData(this: unknown) {\n const parentData = typeof parent === 'function' ? parent.call(this) : parent\n const childData = typeof child === 'function' ? child.call(this) : child\n return {\n ...(asRecord(parentData) ?? {}),\n ...(asRecord(childData) ?? {}),\n }\n }\n}\n\nfunction resolveWatchHandler(descriptor: unknown, context: OptionRecord): ((...args: unknown[]) => unknown) | undefined {\n if (typeof descriptor === 'function') {\n return descriptor as (...args: unknown[]) => unknown\n }\n if (typeof descriptor === 'string') {\n const method = context[descriptor]\n return typeof method === 'function' ? method : undefined\n }\n const record = asRecord(descriptor)\n return record ? resolveWatchHandler(record.handler, context) : undefined\n}\n\nfunction mergeWatchDescriptor(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n return {\n ...(parentRecord ?? {}),\n ...(childRecord ?? {}),\n handler(this: OptionRecord, ...args: unknown[]) {\n resolveWatchHandler(parent, this)?.apply(this, args)\n return resolveWatchHandler(child, this)?.apply(this, args)\n },\n immediate: Boolean(parentRecord?.immediate || childRecord?.immediate),\n deep: Boolean(parentRecord?.deep || childRecord?.deep),\n }\n}\n\nfunction mergeWatch(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeWatchDescriptor(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeArray(parent: unknown, child: unknown) {\n const values = [\n ...(Array.isArray(parent) ? parent : []),\n ...(Array.isArray(child) ? child : []),\n ]\n return [...new Set(values)]\n}\n\nfunction mergeOptions(parent: OptionRecord, child: OptionRecord) {\n const merged: OptionRecord = { ...parent, ...child }\n\n for (const key of OBJECT_OPTION_KEYS) {\n const parentRecord = asRecord(parent[key])\n const childRecord = asRecord(child[key])\n if (parentRecord || childRecord) {\n merged[key] = { ...(parentRecord ?? {}), ...(childRecord ?? {}) }\n }\n }\n\n merged.data = mergeData(parent.data, child.data)\n merged.watch = mergeWatch(parent.watch, child.watch)\n merged.lifetimes = mergeHookRecord(parent.lifetimes, child.lifetimes)\n merged.pageLifetimes = mergeHookRecord(parent.pageLifetimes, child.pageLifetimes)\n\n for (const key of new Set([...Object.keys(parent), ...Object.keys(child)])) {\n if (HOOK_OPTION_KEYS.has(key)) {\n merged[key] = mergeHook(parent[key], child[key])\n }\n }\n\n if (Array.isArray(parent.emits) || Array.isArray(child.emits)) {\n merged.emits = mergeArray(parent.emits, child.emits)\n }\n if (Array.isArray(parent.expose) || Array.isArray(child.expose)) {\n merged.expose = mergeArray(parent.expose, child.expose)\n }\n return merged\n}\n\nfunction appendOptions(target: OptionRecord, source: unknown, seen: WeakSet<object>) {\n const sourceRecord = asRecord(source)\n if (!sourceRecord || seen.has(sourceRecord)) {\n return target\n }\n seen.add(sourceRecord)\n\n let merged = target\n merged = appendOptions(merged, sourceRecord.extends, seen)\n if (Array.isArray(sourceRecord.mixins)) {\n for (const mixin of sourceRecord.mixins) {\n merged = appendOptions(merged, mixin, seen)\n }\n }\n\n const {\n extends: _extends,\n mixins: _mixins,\n ...ownOptions\n } = sourceRecord\n return mergeOptions(merged, ownOptions)\n}\n\n/**\n * 将 Vue Options API 的 extends/mixins 展开为单一组件选项。\n */\nexport function resolveVueComponentOptions<T extends ComponentOptions>(options: T): T {\n return appendOptions({}, options, new WeakSet()) as T\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"options.mjs","names":[],"sources":["../../../../src/runtime/define/options.ts"],"sourcesContent":["import type { DefineComponentOptions } from '../types'\n\ntype ComponentOptions = DefineComponentOptions<any, any, any, any, any>\ntype OptionRecord = Record<string, any>\n\nconst OBJECT_OPTION_KEYS = [\n 'components',\n 'computed',\n 'directives',\n 'inject',\n 'methods',\n 'props',\n 'provide',\n] as const\n\nconst HOOK_OPTION_KEYS = new Set([\n 'activated',\n 'attached',\n 'beforeCreate',\n 'beforeDestroy',\n 'beforeMount',\n 'beforeUnmount',\n 'beforeUpdate',\n 'created',\n 'deactivated',\n 'destroyed',\n 'detached',\n 'errorCaptured',\n 'hide',\n 'mounted',\n 'moved',\n 'onAddToFavorites',\n 'onHide',\n 'onLoad',\n 'onPageScroll',\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onReady',\n 'onResize',\n 'onRouteDone',\n 'onSaveExitState',\n 'onShareAppMessage',\n 'onShareTimeline',\n 'onShow',\n 'onTabItemTap',\n 'onUnload',\n 'ready',\n 'renderTracked',\n 'renderTriggered',\n 'serverPrefetch',\n 'show',\n 'unmounted',\n 'updated',\n])\n\nfunction asRecord(value: unknown): OptionRecord | undefined {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as OptionRecord\n : undefined\n}\n\nfunction mergeHook(parent: unknown, child: unknown) {\n if (typeof parent !== 'function') {\n return child\n }\n if (typeof child !== 'function') {\n return parent\n }\n return function mergedOptionHook(this: unknown, ...args: unknown[]) {\n parent.apply(this, args)\n return child.apply(this, args)\n }\n}\n\nfunction mergeHookRecord(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeHook(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeData(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n return function mergedOptionData(this: unknown) {\n const parentData = typeof parent === 'function' ? parent.call(this) : parent\n const childData = typeof child === 'function' ? child.call(this) : child\n return {\n ...(asRecord(parentData) ?? {}),\n ...(asRecord(childData) ?? {}),\n }\n }\n}\n\nfunction resolveWatchHandler(descriptor: unknown, context: OptionRecord): ((...args: unknown[]) => unknown) | undefined {\n if (typeof descriptor === 'function') {\n return descriptor as (...args: unknown[]) => unknown\n }\n if (typeof descriptor === 'string') {\n const method = context[descriptor]\n return typeof method === 'function' ? method : undefined\n }\n const record = asRecord(descriptor)\n return record ? resolveWatchHandler(record.handler, context) : undefined\n}\n\nfunction mergeWatchDescriptor(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n return {\n ...(parentRecord ?? {}),\n ...(childRecord ?? {}),\n handler(this: OptionRecord, ...args: unknown[]) {\n resolveWatchHandler(parent, this)?.apply(this, args)\n return resolveWatchHandler(child, this)?.apply(this, args)\n },\n immediate: Boolean(parentRecord?.immediate || childRecord?.immediate),\n deep: Boolean(parentRecord?.deep || childRecord?.deep),\n }\n}\n\nfunction mergeWatch(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeWatchDescriptor(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeArray(parent: unknown, child: unknown) {\n const values = [\n ...(Array.isArray(parent) ? parent : []),\n ...(Array.isArray(child) ? child : []),\n ]\n return [...new Set(values)]\n}\n\nfunction mergeOptions(parent: OptionRecord, child: OptionRecord) {\n const merged: OptionRecord = { ...parent, ...child }\n\n for (const key of OBJECT_OPTION_KEYS) {\n const parentRecord = asRecord(parent[key])\n const childRecord = asRecord(child[key])\n if (parentRecord || childRecord) {\n merged[key] = { ...(parentRecord ?? {}), ...(childRecord ?? {}) }\n }\n }\n\n merged.data = mergeData(parent.data, child.data)\n merged.watch = mergeWatch(parent.watch, child.watch)\n merged.lifetimes = mergeHookRecord(parent.lifetimes, child.lifetimes)\n merged.pageLifetimes = mergeHookRecord(parent.pageLifetimes, child.pageLifetimes)\n\n for (const key of new Set([...Object.keys(parent), ...Object.keys(child)])) {\n if (HOOK_OPTION_KEYS.has(key)) {\n merged[key] = mergeHook(parent[key], child[key])\n }\n }\n\n if (Array.isArray(parent.emits) || Array.isArray(child.emits)) {\n merged.emits = mergeArray(parent.emits, child.emits)\n }\n if (Array.isArray(parent.expose) || Array.isArray(child.expose)) {\n merged.expose = mergeArray(parent.expose, child.expose)\n }\n return merged\n}\n\nfunction appendOptions(target: OptionRecord, source: unknown, seen: WeakSet<object>) {\n const sourceRecord = asRecord(source)\n if (!sourceRecord || seen.has(sourceRecord)) {\n return target\n }\n seen.add(sourceRecord)\n\n let merged = target\n merged = appendOptions(merged, sourceRecord.extends, seen)\n if (Array.isArray(sourceRecord.mixins)) {\n for (const mixin of sourceRecord.mixins) {\n merged = appendOptions(merged, mixin, seen)\n }\n }\n\n const {\n extends: _extends,\n mixins: _mixins,\n ...ownOptions\n } = sourceRecord\n return mergeOptions(merged, ownOptions)\n}\n\n/**\n * 将 Vue Options API 的 extends/mixins 展开为单一组件选项。\n */\nexport function resolveVueComponentOptions<T extends ComponentOptions>(options: T): T {\n return appendOptions({}, options, new WeakSet()) as T\n}\n"],"mappings":"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"}
@@ -62,7 +62,7 @@ function applyNullableTransportOptions(target, definition, allowNullPropInput) {
62
62
  const candidates = collectNativePropertyTypeCandidates(definitionRecord ? [definitionRecord.type, definitionRecord.optionalTypes] : definition);
63
63
  const explicitlyNullable = candidates.includes(null);
64
64
  const acceptsMultipleNativeTypes = candidates.filter((candidate) => candidate !== null).length > 1;
65
- const acceptsMissingInput = (definitionRecord === null || definitionRecord === void 0 ? void 0 : definitionRecord.required) !== true;
65
+ const acceptsMissingInput = definitionRecord?.required !== true;
66
66
  if (!explicitlyNullable && !acceptsMultipleNativeTypes && !acceptsMissingInput) return;
67
67
  if (!explicitlyNullable) preserveImplicitNativeDefault(target);
68
68
  target.type = null;
@@ -117,15 +117,14 @@ function normalizeVueProps(props, allowNullPropInput) {
117
117
  return properties;
118
118
  }
119
119
  function normalizeProps(baseOptions, props, explicitProperties) {
120
- var _ALLOW_NULL_PROP_INPU;
121
- const allowNullPropInput = Boolean((_ALLOW_NULL_PROP_INPU = baseOptions[ALLOW_NULL_PROP_INPUT_KEY]) !== null && _ALLOW_NULL_PROP_INPU !== void 0 ? _ALLOW_NULL_PROP_INPU : baseOptions[PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]);
120
+ const allowNullPropInput = Boolean(baseOptions[ALLOW_NULL_PROP_INPUT_KEY] ?? baseOptions[PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]);
122
121
  const { [ALLOW_NULL_PROP_INPUT_KEY]: _ignoredAllowNullPropInput, [PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]: _ignoredPublicAllowNullPropInput, ...normalizedBaseOptions } = baseOptions;
123
122
  const baseProperties = baseOptions.properties;
124
123
  const normalizedBaseProperties = baseProperties && typeof baseProperties === "object" && Object.keys(baseProperties).length > 0 ? baseProperties : void 0;
125
- const resolvedExplicit = explicitProperties !== null && explicitProperties !== void 0 ? explicitProperties : normalizedBaseProperties;
124
+ const resolvedExplicit = explicitProperties ?? normalizedBaseProperties;
126
125
  const shouldAttachInternalProps = Boolean(props || resolvedExplicit);
127
126
  const attachInternalProps = (source) => {
128
- const next = { ...source !== null && source !== void 0 ? source : {} };
127
+ const next = { ...source ?? {} };
129
128
  if (!shouldAttachInternalProps) return next;
130
129
  if (!hasOwn(next, WEVU_SLOT_OWNER_ID_PROP)) next[WEVU_SLOT_OWNER_ID_PROP] = {
131
130
  type: String,
@@ -1 +1 @@
1
- {"version":3,"file":"props.mjs","names":[],"sources":["../../../../src/runtime/define/props.ts"],"sourcesContent":["import type {\n ComponentPropsOptions,\n MiniProgramComponentPropertyOption,\n MiniProgramComponentShortProperty,\n} from '../types'\nimport {\n WEVU_SLOT_NAMES_PROP,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\n\nconst ALLOW_NULL_PROP_INPUT_KEY = '__wevu_allowNullPropInput'\nconst PUBLIC_ALLOW_NULL_PROP_INPUT_KEY = 'allowNullPropInput'\n\ntype NormalizedNativePropertyType = MiniProgramComponentShortProperty | FunctionConstructor | null\n\nconst NATIVE_PROPERTY_TYPE_MAP = new Map<unknown, NormalizedNativePropertyType>([\n [String, String],\n [Number, Number],\n [Boolean, Boolean],\n [Object, Object],\n [Array, Array],\n [Function, Function],\n ['String', String],\n ['Number', Number],\n ['Boolean', Boolean],\n ['Object', Object],\n ['Array', Array],\n ['Function', Function],\n [null, null],\n ['null', null],\n ['Null', null],\n])\n\nfunction toNativePropertyType(candidate: unknown) {\n return NATIVE_PROPERTY_TYPE_MAP.get(candidate)\n}\n\nfunction collectNativePropertyTypeCandidates(\n raw: unknown,\n normalized: NormalizedNativePropertyType[] = [],\n) {\n if (Array.isArray(raw)) {\n for (const item of raw) {\n collectNativePropertyTypeCandidates(item, normalized)\n }\n return normalized\n }\n const mapped = toNativePropertyType(raw)\n if (mapped !== undefined && !normalized.includes(mapped)) {\n normalized.push(mapped)\n }\n return normalized\n}\n\nfunction normalizeTypeCandidates(raw: unknown) {\n if (raw === undefined) {\n return []\n }\n const normalized = collectNativePropertyTypeCandidates(raw)\n const requiredNativeTypes = normalized.filter((item): item is Exclude<NormalizedNativePropertyType, null> => item !== null)\n if (requiredNativeTypes.length > 0) {\n return requiredNativeTypes\n }\n return [null]\n}\n\nfunction applyTypeOptions(target: Record<string, unknown>, rawType: unknown) {\n const candidates = normalizeTypeCandidates(rawType)\n if (candidates.length === 0) {\n return\n }\n\n target.type = candidates[0]\n if (candidates.length > 1) {\n const optionalTypes: NormalizedNativePropertyType[] = []\n for (const candidate of candidates.slice(1)) {\n if (!optionalTypes.includes(candidate)) {\n optionalTypes.push(candidate)\n }\n }\n if (optionalTypes.length > 0) {\n target.optionalTypes = optionalTypes\n }\n }\n}\n\nfunction preserveImplicitNativeDefault(target: Record<string, unknown>) {\n if (hasOwn(target, 'value')) {\n return\n }\n if (target.type === String) {\n target.value = ''\n }\n else if (target.type === Number) {\n target.value = 0\n }\n else if (target.type === Boolean) {\n target.value = false\n }\n else if (target.type === Array) {\n target.value = []\n }\n}\n\nfunction applyNullableTransportOptions(\n target: Record<string, unknown>,\n definition: unknown,\n allowNullPropInput: boolean,\n) {\n if (!allowNullPropInput || target.type === null) {\n return\n }\n const definitionRecord = definition && typeof definition === 'object' && !Array.isArray(definition)\n ? (definition as Record<string, unknown>)\n : undefined\n const candidates = collectNativePropertyTypeCandidates(\n definitionRecord\n ? [definitionRecord.type, definitionRecord.optionalTypes]\n : definition,\n )\n const explicitlyNullable = candidates.includes(null)\n const nativeTypes = candidates.filter(candidate => candidate !== null)\n const acceptsMultipleNativeTypes = nativeTypes.length > 1\n const acceptsMissingInput = definitionRecord?.required !== true\n // glass-easel 会先按主 type 校验并转换,optionalTypes 无法保护合法的联合值与空值传输。\n if (!explicitlyNullable && !acceptsMultipleNativeTypes && !acceptsMissingInput) {\n return\n }\n\n // 显式声明的 null 必须保持可观察;其余降级场景则保留原主类型的宿主隐式默认值。\n if (!explicitlyNullable) {\n preserveImplicitNativeDefault(target)\n }\n target.type = null\n delete target.optionalTypes\n}\n\nfunction normalizeVueProps(\n props: ComponentPropsOptions | undefined,\n allowNullPropInput: boolean,\n) {\n const properties: Record<string, any> = {}\n if (!props) {\n return properties\n }\n\n Object.entries(props).forEach(([key, definition]) => {\n if (definition === undefined) {\n return\n }\n if (definition === null) {\n properties[key] = { type: null }\n return\n }\n if (Array.isArray(definition) || typeof definition === 'function') {\n const propOptions: Record<string, unknown> = {}\n applyTypeOptions(propOptions, definition)\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n applyNullableTransportOptions(propOptions, definition, allowNullPropInput)\n properties[key] = propOptions\n return\n }\n if (typeof definition === 'object') {\n // 在 Vue <script setup> 中,defineModel() 会生成空的 modifiers props。\n if (key.endsWith('Modifiers') && Object.keys(definition).length === 0) {\n properties[key] = { type: Object, value: {} }\n return\n }\n const propOptions: Record<string, unknown> = {}\n if ('type' in definition && definition.type !== undefined) {\n applyTypeOptions(propOptions, (definition as any).type)\n }\n if (Array.isArray((definition as any).optionalTypes)) {\n const optionalTypes = (definition as any).optionalTypes.map((item: unknown) => toNativePropertyType(item)).filter((item: unknown): item is Exclude<NormalizedNativePropertyType, null> => item !== undefined && item !== null)\n if (optionalTypes.length > 0) {\n const existingOptionalTypes = Array.isArray(propOptions.optionalTypes)\n ? propOptions.optionalTypes as NormalizedNativePropertyType[]\n : []\n for (const optionalType of optionalTypes) {\n if (optionalType === propOptions.type) {\n continue\n }\n if (!existingOptionalTypes.includes(optionalType)) {\n existingOptionalTypes.push(optionalType)\n }\n }\n if (existingOptionalTypes.length > 0) {\n propOptions.optionalTypes = existingOptionalTypes\n }\n }\n }\n if ('observer' in definition && (typeof (definition as any).observer === 'function' || typeof (definition as any).observer === 'string')) {\n propOptions.observer = (definition as any).observer\n }\n const defaultValue = 'default' in definition ? (definition as any).default : (definition as any).value\n if (defaultValue !== undefined) {\n propOptions.value = typeof defaultValue === 'function' ? (defaultValue as any)() : defaultValue\n }\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n applyNullableTransportOptions(propOptions, definition, allowNullPropInput)\n properties[key] = propOptions\n }\n })\n\n return properties\n}\n\nexport function normalizeProps(\n baseOptions: Record<string, any>,\n props?: ComponentPropsOptions,\n explicitProperties?: MiniProgramComponentPropertyOption,\n) {\n const allowNullPropInput = Boolean(\n (baseOptions as any)[ALLOW_NULL_PROP_INPUT_KEY]\n ?? (baseOptions as any)[PUBLIC_ALLOW_NULL_PROP_INPUT_KEY],\n )\n const {\n [ALLOW_NULL_PROP_INPUT_KEY]: _ignoredAllowNullPropInput,\n [PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]: _ignoredPublicAllowNullPropInput,\n ...normalizedBaseOptions\n } = baseOptions\n const baseProperties = (baseOptions as any).properties\n const normalizedBaseProperties = baseProperties && typeof baseProperties === 'object' && Object.keys(baseProperties).length > 0\n ? (baseProperties as any)\n : undefined\n const resolvedExplicit = explicitProperties\n ?? normalizedBaseProperties\n const shouldAttachInternalProps = Boolean(props || resolvedExplicit)\n const attachInternalProps = (source?: Record<string, any>) => {\n const next = { ...(source ?? {}) }\n if (!shouldAttachInternalProps) {\n return next\n }\n if (!hasOwn(next, WEVU_SLOT_OWNER_ID_PROP)) {\n next[WEVU_SLOT_OWNER_ID_PROP] = { type: String, value: '' }\n }\n if (!hasOwn(next, WEVU_SLOT_SCOPE_KEY)) {\n next[WEVU_SLOT_SCOPE_KEY] = { type: null, value: null }\n }\n if (!hasOwn(next, WEVU_SLOT_NAMES_PROP)) {\n next[WEVU_SLOT_NAMES_PROP] = { type: null, value: null }\n }\n return next\n }\n\n if (resolvedExplicit) {\n const {\n properties: _ignored,\n ...rest\n } = normalizedBaseOptions\n const normalizedExplicitProperties = resolvedExplicit\n const normalizedVueProps = normalizeVueProps(props, allowNullPropInput)\n return {\n ...rest,\n properties: attachInternalProps({\n ...normalizedVueProps,\n ...normalizedExplicitProperties,\n }),\n }\n }\n\n return {\n ...normalizedBaseOptions,\n properties: attachInternalProps(normalizeVueProps(props, allowNullPropInput)),\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"props.mjs","names":[],"sources":["../../../../src/runtime/define/props.ts"],"sourcesContent":["import type {\n ComponentPropsOptions,\n MiniProgramComponentPropertyOption,\n MiniProgramComponentShortProperty,\n} from '../types'\nimport {\n WEVU_SLOT_NAMES_PROP,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\n\nconst ALLOW_NULL_PROP_INPUT_KEY = '__wevu_allowNullPropInput'\nconst PUBLIC_ALLOW_NULL_PROP_INPUT_KEY = 'allowNullPropInput'\n\ntype NormalizedNativePropertyType = MiniProgramComponentShortProperty | FunctionConstructor | null\n\nconst NATIVE_PROPERTY_TYPE_MAP = new Map<unknown, NormalizedNativePropertyType>([\n [String, String],\n [Number, Number],\n [Boolean, Boolean],\n [Object, Object],\n [Array, Array],\n [Function, Function],\n ['String', String],\n ['Number', Number],\n ['Boolean', Boolean],\n ['Object', Object],\n ['Array', Array],\n ['Function', Function],\n [null, null],\n ['null', null],\n ['Null', null],\n])\n\nfunction toNativePropertyType(candidate: unknown) {\n return NATIVE_PROPERTY_TYPE_MAP.get(candidate)\n}\n\nfunction collectNativePropertyTypeCandidates(\n raw: unknown,\n normalized: NormalizedNativePropertyType[] = [],\n) {\n if (Array.isArray(raw)) {\n for (const item of raw) {\n collectNativePropertyTypeCandidates(item, normalized)\n }\n return normalized\n }\n const mapped = toNativePropertyType(raw)\n if (mapped !== undefined && !normalized.includes(mapped)) {\n normalized.push(mapped)\n }\n return normalized\n}\n\nfunction normalizeTypeCandidates(raw: unknown) {\n if (raw === undefined) {\n return []\n }\n const normalized = collectNativePropertyTypeCandidates(raw)\n const requiredNativeTypes = normalized.filter((item): item is Exclude<NormalizedNativePropertyType, null> => item !== null)\n if (requiredNativeTypes.length > 0) {\n return requiredNativeTypes\n }\n return [null]\n}\n\nfunction applyTypeOptions(target: Record<string, unknown>, rawType: unknown) {\n const candidates = normalizeTypeCandidates(rawType)\n if (candidates.length === 0) {\n return\n }\n\n target.type = candidates[0]\n if (candidates.length > 1) {\n const optionalTypes: NormalizedNativePropertyType[] = []\n for (const candidate of candidates.slice(1)) {\n if (!optionalTypes.includes(candidate)) {\n optionalTypes.push(candidate)\n }\n }\n if (optionalTypes.length > 0) {\n target.optionalTypes = optionalTypes\n }\n }\n}\n\nfunction preserveImplicitNativeDefault(target: Record<string, unknown>) {\n if (hasOwn(target, 'value')) {\n return\n }\n if (target.type === String) {\n target.value = ''\n }\n else if (target.type === Number) {\n target.value = 0\n }\n else if (target.type === Boolean) {\n target.value = false\n }\n else if (target.type === Array) {\n target.value = []\n }\n}\n\nfunction applyNullableTransportOptions(\n target: Record<string, unknown>,\n definition: unknown,\n allowNullPropInput: boolean,\n) {\n if (!allowNullPropInput || target.type === null) {\n return\n }\n const definitionRecord = definition && typeof definition === 'object' && !Array.isArray(definition)\n ? (definition as Record<string, unknown>)\n : undefined\n const candidates = collectNativePropertyTypeCandidates(\n definitionRecord\n ? [definitionRecord.type, definitionRecord.optionalTypes]\n : definition,\n )\n const explicitlyNullable = candidates.includes(null)\n const nativeTypes = candidates.filter(candidate => candidate !== null)\n const acceptsMultipleNativeTypes = nativeTypes.length > 1\n const acceptsMissingInput = definitionRecord?.required !== true\n // glass-easel 会先按主 type 校验并转换,optionalTypes 无法保护合法的联合值与空值传输。\n if (!explicitlyNullable && !acceptsMultipleNativeTypes && !acceptsMissingInput) {\n return\n }\n\n // 显式声明的 null 必须保持可观察;其余降级场景则保留原主类型的宿主隐式默认值。\n if (!explicitlyNullable) {\n preserveImplicitNativeDefault(target)\n }\n target.type = null\n delete target.optionalTypes\n}\n\nfunction normalizeVueProps(\n props: ComponentPropsOptions | undefined,\n allowNullPropInput: boolean,\n) {\n const properties: Record<string, any> = {}\n if (!props) {\n return properties\n }\n\n Object.entries(props).forEach(([key, definition]) => {\n if (definition === undefined) {\n return\n }\n if (definition === null) {\n properties[key] = { type: null }\n return\n }\n if (Array.isArray(definition) || typeof definition === 'function') {\n const propOptions: Record<string, unknown> = {}\n applyTypeOptions(propOptions, definition)\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n applyNullableTransportOptions(propOptions, definition, allowNullPropInput)\n properties[key] = propOptions\n return\n }\n if (typeof definition === 'object') {\n // 在 Vue <script setup> 中,defineModel() 会生成空的 modifiers props。\n if (key.endsWith('Modifiers') && Object.keys(definition).length === 0) {\n properties[key] = { type: Object, value: {} }\n return\n }\n const propOptions: Record<string, unknown> = {}\n if ('type' in definition && definition.type !== undefined) {\n applyTypeOptions(propOptions, (definition as any).type)\n }\n if (Array.isArray((definition as any).optionalTypes)) {\n const optionalTypes = (definition as any).optionalTypes.map((item: unknown) => toNativePropertyType(item)).filter((item: unknown): item is Exclude<NormalizedNativePropertyType, null> => item !== undefined && item !== null)\n if (optionalTypes.length > 0) {\n const existingOptionalTypes = Array.isArray(propOptions.optionalTypes)\n ? propOptions.optionalTypes as NormalizedNativePropertyType[]\n : []\n for (const optionalType of optionalTypes) {\n if (optionalType === propOptions.type) {\n continue\n }\n if (!existingOptionalTypes.includes(optionalType)) {\n existingOptionalTypes.push(optionalType)\n }\n }\n if (existingOptionalTypes.length > 0) {\n propOptions.optionalTypes = existingOptionalTypes\n }\n }\n }\n if ('observer' in definition && (typeof (definition as any).observer === 'function' || typeof (definition as any).observer === 'string')) {\n propOptions.observer = (definition as any).observer\n }\n const defaultValue = 'default' in definition ? (definition as any).default : (definition as any).value\n if (defaultValue !== undefined) {\n propOptions.value = typeof defaultValue === 'function' ? (defaultValue as any)() : defaultValue\n }\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n applyNullableTransportOptions(propOptions, definition, allowNullPropInput)\n properties[key] = propOptions\n }\n })\n\n return properties\n}\n\nexport function normalizeProps(\n baseOptions: Record<string, any>,\n props?: ComponentPropsOptions,\n explicitProperties?: MiniProgramComponentPropertyOption,\n) {\n const allowNullPropInput = Boolean(\n (baseOptions as any)[ALLOW_NULL_PROP_INPUT_KEY]\n ?? (baseOptions as any)[PUBLIC_ALLOW_NULL_PROP_INPUT_KEY],\n )\n const {\n [ALLOW_NULL_PROP_INPUT_KEY]: _ignoredAllowNullPropInput,\n [PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]: _ignoredPublicAllowNullPropInput,\n ...normalizedBaseOptions\n } = baseOptions\n const baseProperties = (baseOptions as any).properties\n const normalizedBaseProperties = baseProperties && typeof baseProperties === 'object' && Object.keys(baseProperties).length > 0\n ? (baseProperties as any)\n : undefined\n const resolvedExplicit = explicitProperties\n ?? normalizedBaseProperties\n const shouldAttachInternalProps = Boolean(props || resolvedExplicit)\n const attachInternalProps = (source?: Record<string, any>) => {\n const next = { ...(source ?? {}) }\n if (!shouldAttachInternalProps) {\n return next\n }\n if (!hasOwn(next, WEVU_SLOT_OWNER_ID_PROP)) {\n next[WEVU_SLOT_OWNER_ID_PROP] = { type: String, value: '' }\n }\n if (!hasOwn(next, WEVU_SLOT_SCOPE_KEY)) {\n next[WEVU_SLOT_SCOPE_KEY] = { type: null, value: null }\n }\n if (!hasOwn(next, WEVU_SLOT_NAMES_PROP)) {\n next[WEVU_SLOT_NAMES_PROP] = { type: null, value: null }\n }\n return next\n }\n\n if (resolvedExplicit) {\n const {\n properties: _ignored,\n ...rest\n } = normalizedBaseOptions\n const normalizedExplicitProperties = resolvedExplicit\n const normalizedVueProps = normalizeVueProps(props, allowNullPropInput)\n return {\n ...rest,\n properties: attachInternalProps({\n ...normalizedVueProps,\n ...normalizedExplicitProperties,\n }),\n }\n }\n\n return {\n ...normalizedBaseOptions,\n properties: attachInternalProps(normalizeVueProps(props, allowNullPropInput)),\n }\n}\n"],"mappings":";;;;AAYA,MAAM,4BAA4B;AAClC,MAAM,mCAAmC;AAIzC,MAAM,2CAA2B,IAAI,IAA2C;CAC9E,CAAC,QAAQ,MAAM;CACf,CAAC,QAAQ,MAAM;CACf,CAAC,SAAS,OAAO;CACjB,CAAC,QAAQ,MAAM;CACf,CAAC,OAAO,KAAK;CACb,CAAC,UAAU,QAAQ;CACnB,CAAC,UAAU,MAAM;CACjB,CAAC,UAAU,MAAM;CACjB,CAAC,WAAW,OAAO;CACnB,CAAC,UAAU,MAAM;CACjB,CAAC,SAAS,KAAK;CACf,CAAC,YAAY,QAAQ;CACrB,CAAC,MAAM,IAAI;CACX,CAAC,QAAQ,IAAI;CACb,CAAC,QAAQ,IAAI;AACf,CAAC;AAED,SAAS,qBAAqB,WAAoB;CAChD,OAAO,yBAAyB,IAAI,SAAS;AAC/C;AAEA,SAAS,oCACP,KACA,aAA6C,CAAC,GAC9C;CACA,IAAI,MAAM,QAAQ,GAAG,GAAG;EACtB,KAAK,MAAM,QAAQ,KACjB,oCAAoC,MAAM,UAAU;EAEtD,OAAO;CACT;CACA,MAAM,SAAS,qBAAqB,GAAG;CACvC,IAAI,WAAW,UAAa,CAAC,WAAW,SAAS,MAAM,GACrD,WAAW,KAAK,MAAM;CAExB,OAAO;AACT;AAEA,SAAS,wBAAwB,KAAc;CAC7C,IAAI,QAAQ,QACV,OAAO,CAAC;CAGV,MAAM,sBADa,oCAAoC,GAClB,CAAC,CAAC,QAAQ,SAA8D,SAAS,IAAI;CAC1H,IAAI,oBAAoB,SAAS,GAC/B,OAAO;CAET,OAAO,CAAC,IAAI;AACd;AAEA,SAAS,iBAAiB,QAAiC,SAAkB;CAC3E,MAAM,aAAa,wBAAwB,OAAO;CAClD,IAAI,WAAW,WAAW,GACxB;CAGF,OAAO,OAAO,WAAW;CACzB,IAAI,WAAW,SAAS,GAAG;EACzB,MAAM,gBAAgD,CAAC;EACvD,KAAK,MAAM,aAAa,WAAW,MAAM,CAAC,GACxC,IAAI,CAAC,cAAc,SAAS,SAAS,GACnC,cAAc,KAAK,SAAS;EAGhC,IAAI,cAAc,SAAS,GACzB,OAAO,gBAAgB;CAE3B;AACF;AAEA,SAAS,8BAA8B,QAAiC;CACtE,IAAI,OAAO,QAAQ,OAAO,GACxB;CAEF,IAAI,OAAO,SAAS,QAClB,OAAO,QAAQ;MAEZ,IAAI,OAAO,SAAS,QACvB,OAAO,QAAQ;MAEZ,IAAI,OAAO,SAAS,SACvB,OAAO,QAAQ;MAEZ,IAAI,OAAO,SAAS,OACvB,OAAO,QAAQ,CAAC;AAEpB;AAEA,SAAS,8BACP,QACA,YACA,oBACA;CACA,IAAI,CAAC,sBAAsB,OAAO,SAAS,MACzC;CAEF,MAAM,mBAAmB,cAAc,OAAO,eAAe,YAAY,CAAC,MAAM,QAAQ,UAAU,IAC7F,aACD;CACJ,MAAM,aAAa,oCACjB,mBACI,CAAC,iBAAiB,MAAM,iBAAiB,aAAa,IACtD,UACN;CACA,MAAM,qBAAqB,WAAW,SAAS,IAAI;CAEnD,MAAM,6BADc,WAAW,QAAO,cAAa,cAAc,IACpB,CAAC,CAAC,SAAS;CACxD,MAAM,sBAAsB,kBAAkB,aAAa;CAE3D,IAAI,CAAC,sBAAsB,CAAC,8BAA8B,CAAC,qBACzD;CAIF,IAAI,CAAC,oBACH,8BAA8B,MAAM;CAEtC,OAAO,OAAO;CACd,OAAO,OAAO;AAChB;AAEA,SAAS,kBACP,OACA,oBACA;CACA,MAAM,aAAkC,CAAC;CACzC,IAAI,CAAC,OACH,OAAO;CAGT,OAAO,QAAQ,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,gBAAgB;EACnD,IAAI,eAAe,QACjB;EAEF,IAAI,eAAe,MAAM;GACvB,WAAW,OAAO,EAAE,MAAM,KAAK;GAC/B;EACF;EACA,IAAI,MAAM,QAAQ,UAAU,KAAK,OAAO,eAAe,YAAY;GACjE,MAAM,cAAuC,CAAC;GAC9C,iBAAiB,aAAa,UAAU;GACxC,IAAI,CAAC,OAAO,aAAa,MAAM,GAC7B,YAAY,OAAO;GAErB,8BAA8B,aAAa,YAAY,kBAAkB;GACzE,WAAW,OAAO;GAClB;EACF;EACA,IAAI,OAAO,eAAe,UAAU;GAElC,IAAI,IAAI,SAAS,WAAW,KAAK,OAAO,KAAK,UAAU,CAAC,CAAC,WAAW,GAAG;IACrE,WAAW,OAAO;KAAE,MAAM;KAAQ,OAAO,CAAC;IAAE;IAC5C;GACF;GACA,MAAM,cAAuC,CAAC;GAC9C,IAAI,UAAU,cAAc,WAAW,SAAS,QAC9C,iBAAiB,aAAc,WAAmB,IAAI;GAExD,IAAI,MAAM,QAAS,WAAmB,aAAa,GAAG;IACpD,MAAM,gBAAiB,WAAmB,cAAc,KAAK,SAAkB,qBAAqB,IAAI,CAAC,CAAC,CAAC,QAAQ,SAAuE,SAAS,UAAa,SAAS,IAAI;IAC7N,IAAI,cAAc,SAAS,GAAG;KAC5B,MAAM,wBAAwB,MAAM,QAAQ,YAAY,aAAa,IACjE,YAAY,gBACZ,CAAC;KACL,KAAK,MAAM,gBAAgB,eAAe;MACxC,IAAI,iBAAiB,YAAY,MAC/B;MAEF,IAAI,CAAC,sBAAsB,SAAS,YAAY,GAC9C,sBAAsB,KAAK,YAAY;KAE3C;KACA,IAAI,sBAAsB,SAAS,GACjC,YAAY,gBAAgB;IAEhC;GACF;GACA,IAAI,cAAc,eAAe,OAAQ,WAAmB,aAAa,cAAc,OAAQ,WAAmB,aAAa,WAC7H,YAAY,WAAY,WAAmB;GAE7C,MAAM,eAAe,aAAa,aAAc,WAAmB,UAAW,WAAmB;GACjG,IAAI,iBAAiB,QACnB,YAAY,QAAQ,OAAO,iBAAiB,aAAc,aAAqB,IAAI;GAErF,IAAI,CAAC,OAAO,aAAa,MAAM,GAC7B,YAAY,OAAO;GAErB,8BAA8B,aAAa,YAAY,kBAAkB;GACzE,WAAW,OAAO;EACpB;CACF,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,eACd,aACA,OACA,oBACA;CACA,MAAM,qBAAqB,QACxB,YAAoB,8BACjB,YAAoB,iCAC1B;CACA,MAAM,GACH,4BAA4B,6BAC5B,mCAAmC,kCACpC,GAAG,0BACD;CACJ,MAAM,iBAAkB,YAAoB;CAC5C,MAAM,2BAA2B,kBAAkB,OAAO,mBAAmB,YAAY,OAAO,KAAK,cAAc,CAAC,CAAC,SAAS,IACzH,iBACD;CACJ,MAAM,mBAAmB,sBACpB;CACL,MAAM,4BAA4B,QAAQ,SAAS,gBAAgB;CACnE,MAAM,uBAAuB,WAAiC;EAC5D,MAAM,OAAO,EAAE,GAAI,UAAU,CAAC,EAAG;EACjC,IAAI,CAAC,2BACH,OAAO;EAET,IAAI,CAAC,OAAO,MAAM,uBAAuB,GACvC,KAAK,2BAA2B;GAAE,MAAM;GAAQ,OAAO;EAAG;EAE5D,IAAI,CAAC,OAAO,MAAM,mBAAmB,GACnC,KAAK,uBAAuB;GAAE,MAAM;GAAM,OAAO;EAAK;EAExD,IAAI,CAAC,OAAO,MAAM,oBAAoB,GACpC,KAAK,wBAAwB;GAAE,MAAM;GAAM,OAAO;EAAK;EAEzD,OAAO;CACT;CAEA,IAAI,kBAAkB;EACpB,MAAM,EACJ,YAAY,UACZ,GAAG,SACD;EACJ,MAAM,+BAA+B;EACrC,MAAM,qBAAqB,kBAAkB,OAAO,kBAAkB;EACtE,OAAO;GACL,GAAG;GACH,YAAY,oBAAoB;IAC9B,GAAG;IACH,GAAG;GACL,CAAC;EACH;CACF;CAEA,OAAO;EACL,GAAG;EACH,YAAY,oBAAoB,kBAAkB,OAAO,kBAAkB,CAAC;CAC9E;AACF"}