@weapp-vite/web 2.0.1 → 2.1.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 (303) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +1 -2
  2. package/dist/compiler/wxml/attributes.mjs +12 -4
  3. package/dist/compiler/wxml/attributes.mjs.map +1 -1
  4. package/dist/compiler/wxml/compile.mjs +26 -8
  5. package/dist/compiler/wxml/compile.mjs.map +1 -1
  6. package/dist/compiler/wxml/dependency.mjs +1 -2
  7. package/dist/compiler/wxml/interpolation.mjs +13 -3
  8. package/dist/compiler/wxml/interpolation.mjs.map +1 -1
  9. package/dist/compiler/wxml/nativeTags.mjs +60 -0
  10. package/dist/compiler/wxml/nativeTags.mjs.map +1 -0
  11. package/dist/compiler/wxml/navigation.mjs +1 -2
  12. package/dist/compiler/wxml/parser.mjs +1 -2
  13. package/dist/compiler/wxml/prepare.mjs +1 -2
  14. package/dist/compiler/wxml/renderer.mjs +1 -2
  15. package/dist/compiler/wxml/specialNodes.mjs +1 -2
  16. package/dist/compiler/wxml/types.d.mts +0 -2
  17. package/dist/compiler/wxml/unknownTags.mjs +33 -0
  18. package/dist/compiler/wxml/unknownTags.mjs.map +1 -0
  19. package/dist/compiler/wxs.mjs +1 -2
  20. package/dist/css/wxss.d.mts +2 -19
  21. package/dist/css/wxss.mjs +5 -12
  22. package/dist/css/wxss.mjs.map +1 -1
  23. package/dist/index.d.mts +8 -3
  24. package/dist/index.mjs +8 -5
  25. package/dist/plugin/assets.d.mts +0 -2
  26. package/dist/plugin/assets.mjs +1 -2
  27. package/dist/plugin/constants.mjs +1 -2
  28. package/dist/plugin/dependencyScan.mjs +1 -2
  29. package/dist/plugin/entry.mjs +6 -4
  30. package/dist/plugin/entry.mjs.map +1 -1
  31. package/dist/plugin/files.mjs +1 -2
  32. package/dist/plugin/hostTypes.d.mts +0 -2
  33. package/dist/plugin/index.d.mts +0 -2
  34. package/dist/plugin/index.mjs +5 -5
  35. package/dist/plugin/index.mjs.map +1 -1
  36. package/dist/plugin/layout.mjs +1 -2
  37. package/dist/plugin/navigation.mjs +1 -2
  38. package/dist/plugin/packageResolution.mjs +1 -2
  39. package/dist/plugin/path.mjs +1 -2
  40. package/dist/plugin/register.mjs +1 -2
  41. package/dist/plugin/scan.mjs +1 -2
  42. package/dist/plugin/scanConfig.mjs +1 -2
  43. package/dist/plugin/scanSfc.mjs +1 -2
  44. package/dist/plugin/sfcHmr.mjs +1 -2
  45. package/dist/plugin/state.mjs +1 -2
  46. package/dist/plugin/styleModule.mjs +1 -2
  47. package/dist/plugin/types.d.mts +2 -3
  48. package/dist/plugin/vueSfc.mjs +1 -2
  49. package/dist/runtime/appShell/container.mjs +1 -2
  50. package/dist/runtime/appShell/tabBar/index.mjs +1 -2
  51. package/dist/runtime/appShell/tabBar/style.mjs +1 -2
  52. package/dist/runtime/appStyle.mjs +1 -2
  53. package/dist/runtime/button/helpers.mjs +1 -2
  54. package/dist/runtime/button/index.d.mts +0 -2
  55. package/dist/runtime/button/index.mjs +1 -2
  56. package/dist/runtime/button/style.mjs +1 -2
  57. package/dist/runtime/component/behavior.mjs +1 -2
  58. package/dist/runtime/component/constants.mjs +1 -2
  59. package/dist/runtime/component/dom.mjs +1 -2
  60. package/dist/runtime/component/element.mjs +9 -2
  61. package/dist/runtime/component/element.mjs.map +1 -1
  62. package/dist/runtime/component/events.mjs +4 -4
  63. package/dist/runtime/component/events.mjs.map +1 -1
  64. package/dist/runtime/component/index.d.mts +0 -2
  65. package/dist/runtime/component/index.mjs +1 -2
  66. package/dist/runtime/component/observers.mjs +1 -2
  67. package/dist/runtime/component/publicInstance.mjs +1 -2
  68. package/dist/runtime/component/relations.mjs +1 -2
  69. package/dist/runtime/component/slots.mjs +1 -2
  70. package/dist/runtime/component/state.mjs +1 -2
  71. package/dist/runtime/component/types.d.mts +0 -2
  72. package/dist/runtime/component/utils.mjs +1 -2
  73. package/dist/runtime/component/virtualHost.mjs +1 -2
  74. package/dist/runtime/componentEvents.mjs +1 -2
  75. package/dist/runtime/dataset.mjs +49 -0
  76. package/dist/runtime/dataset.mjs.map +1 -0
  77. package/dist/runtime/datasetBinding.d.mts +13 -0
  78. package/dist/runtime/datasetBinding.mjs +40 -0
  79. package/dist/runtime/datasetBinding.mjs.map +1 -0
  80. package/dist/runtime/eventBinding.d.mts +0 -2
  81. package/dist/runtime/eventBinding.mjs +1 -2
  82. package/dist/runtime/execution.d.mts +0 -2
  83. package/dist/runtime/execution.mjs +1 -2
  84. package/dist/runtime/host/index.d.mts +0 -2
  85. package/dist/runtime/host/index.mjs +1 -2
  86. package/dist/runtime/host/types.d.mts +0 -2
  87. package/dist/runtime/hostGlobals.d.mts +0 -2
  88. package/dist/runtime/hostGlobals.mjs +1 -2
  89. package/dist/runtime/index.d.mts +8 -3
  90. package/dist/runtime/index.mjs +9 -7
  91. package/dist/runtime/index.mjs.map +1 -1
  92. package/dist/runtime/inlineStyle.d.mts +5 -0
  93. package/dist/runtime/inlineStyle.mjs +21 -0
  94. package/dist/runtime/inlineStyle.mjs.map +1 -0
  95. package/dist/runtime/inputHandlerResult.mjs +1 -2
  96. package/dist/runtime/legacyTemplate/dataset.mjs +53 -0
  97. package/dist/runtime/legacyTemplate/dataset.mjs.map +1 -0
  98. package/dist/runtime/legacyTemplate/dom.mjs +20 -5
  99. package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
  100. package/dist/runtime/legacyTemplate/expression.mjs +1 -2
  101. package/dist/runtime/legacyTemplate/index.d.mts +0 -2
  102. package/dist/runtime/legacyTemplate/index.mjs +23 -16
  103. package/dist/runtime/legacyTemplate/index.mjs.map +1 -1
  104. package/dist/runtime/legacyTemplate/types.d.mts +0 -2
  105. package/dist/runtime/nativeComponents/canvas/index.mjs +1 -2
  106. package/dist/runtime/nativeComponents/checkbox.mjs +1 -2
  107. package/dist/runtime/nativeComponents/cover/index.mjs +1 -2
  108. package/dist/runtime/nativeComponents/form.d.mts +0 -2
  109. package/dist/runtime/nativeComponents/form.mjs +1 -2
  110. package/dist/runtime/nativeComponents/formControl.mjs +1 -2
  111. package/dist/runtime/nativeComponents/helpers.mjs +1 -2
  112. package/dist/runtime/nativeComponents/icon/helpers.mjs +1 -2
  113. package/dist/runtime/nativeComponents/icon/index.mjs +1 -2
  114. package/dist/runtime/nativeComponents/icon/style.mjs +1 -2
  115. package/dist/runtime/nativeComponents/image.d.mts +0 -2
  116. package/dist/runtime/nativeComponents/image.mjs +1 -2
  117. package/dist/runtime/nativeComponents/index.d.mts +1 -3
  118. package/dist/runtime/nativeComponents/index.mjs +3 -3
  119. package/dist/runtime/nativeComponents/index.mjs.map +1 -1
  120. package/dist/runtime/nativeComponents/input.d.mts +0 -2
  121. package/dist/runtime/nativeComponents/input.mjs +1 -2
  122. package/dist/runtime/nativeComponents/label.mjs +1 -2
  123. package/dist/runtime/nativeComponents/mediaRegistry.mjs +1 -2
  124. package/dist/runtime/nativeComponents/movable/helpers.mjs +1 -2
  125. package/dist/runtime/nativeComponents/movable/index.mjs +1 -2
  126. package/dist/runtime/nativeComponents/navigator.mjs +1 -2
  127. package/dist/runtime/nativeComponents/picker/editors.mjs +1 -2
  128. package/dist/runtime/nativeComponents/picker/helpers.mjs +1 -2
  129. package/dist/runtime/nativeComponents/picker/index.mjs +1 -2
  130. package/dist/runtime/nativeComponents/picker/style.mjs +1 -2
  131. package/dist/runtime/nativeComponents/pickerView/column.mjs +1 -2
  132. package/dist/runtime/nativeComponents/pickerView/helpers.mjs +1 -2
  133. package/dist/runtime/nativeComponents/pickerView/index.mjs +1 -2
  134. package/dist/runtime/nativeComponents/pickerView/style.mjs +1 -2
  135. package/dist/runtime/nativeComponents/primitives.mjs +1 -2
  136. package/dist/runtime/nativeComponents/progress/helpers.mjs +1 -2
  137. package/dist/runtime/nativeComponents/progress/index.mjs +1 -2
  138. package/dist/runtime/nativeComponents/progress/style.mjs +1 -2
  139. package/dist/runtime/nativeComponents/radio.mjs +1 -2
  140. package/dist/runtime/nativeComponents/richText/index.mjs +1 -2
  141. package/dist/runtime/nativeComponents/scrollView/boundaries.mjs +62 -0
  142. package/dist/runtime/nativeComponents/scrollView/boundaries.mjs.map +1 -0
  143. package/dist/runtime/nativeComponents/{scrollView.d.mts → scrollView/helpers.d.mts} +4 -5
  144. package/dist/runtime/nativeComponents/scrollView/helpers.mjs +14 -0
  145. package/dist/runtime/nativeComponents/scrollView/helpers.mjs.map +1 -0
  146. package/dist/runtime/nativeComponents/scrollView/index.mjs +193 -0
  147. package/dist/runtime/nativeComponents/scrollView/index.mjs.map +1 -0
  148. package/dist/runtime/nativeComponents/scrollView/position.mjs +43 -0
  149. package/dist/runtime/nativeComponents/scrollView/position.mjs.map +1 -0
  150. package/dist/runtime/nativeComponents/slider/helpers.mjs +1 -2
  151. package/dist/runtime/nativeComponents/slider/index.mjs +1 -2
  152. package/dist/runtime/nativeComponents/slider/style.mjs +1 -2
  153. package/dist/runtime/nativeComponents/style.mjs +1 -2
  154. package/dist/runtime/nativeComponents/swiper/helpers.mjs +1 -2
  155. package/dist/runtime/nativeComponents/swiper/index.mjs +1 -2
  156. package/dist/runtime/nativeComponents/swiper/item.mjs +1 -2
  157. package/dist/runtime/nativeComponents/swiper/style.mjs +1 -2
  158. package/dist/runtime/nativeComponents/switch.d.mts +0 -2
  159. package/dist/runtime/nativeComponents/switch.mjs +1 -2
  160. package/dist/runtime/nativeComponents/textarea.d.mts +0 -2
  161. package/dist/runtime/nativeComponents/textarea.mjs +1 -2
  162. package/dist/runtime/nativeComponents/video/helpers.d.mts +0 -2
  163. package/dist/runtime/nativeComponents/video/helpers.mjs +1 -2
  164. package/dist/runtime/nativeComponents/video/index.mjs +1 -2
  165. package/dist/runtime/nativeComponents/video/style.mjs +1 -2
  166. package/dist/runtime/navigationBar/index.d.mts +0 -2
  167. package/dist/runtime/navigationBar/index.mjs +1 -2
  168. package/dist/runtime/navigationBar/style.mjs +1 -2
  169. package/dist/runtime/pageLayout.d.mts +0 -2
  170. package/dist/runtime/pageLayout.mjs +1 -2
  171. package/dist/runtime/polyfill/ad.mjs +1 -2
  172. package/dist/runtime/polyfill/animation.mjs +1 -2
  173. package/dist/runtime/polyfill/appState.mjs +1 -2
  174. package/dist/runtime/polyfill/async.d.mts +0 -2
  175. package/dist/runtime/polyfill/async.mjs +1 -2
  176. package/dist/runtime/polyfill/auth.mjs +1 -2
  177. package/dist/runtime/polyfill/authApi.mjs +1 -2
  178. package/dist/runtime/polyfill/background.mjs +1 -2
  179. package/dist/runtime/polyfill/canvasContext.mjs +1 -2
  180. package/dist/runtime/polyfill/capability.mjs +1 -2
  181. package/dist/runtime/polyfill/cloud.mjs +1 -2
  182. package/dist/runtime/polyfill/device.mjs +1 -2
  183. package/dist/runtime/polyfill/deviceApi.mjs +1 -2
  184. package/dist/runtime/polyfill/deviceAuthSystemApi.d.mts +0 -2
  185. package/dist/runtime/polyfill/deviceAuthSystemApi.mjs +1 -2
  186. package/dist/runtime/polyfill/eventBus.mjs +1 -2
  187. package/dist/runtime/polyfill/filePicker.mjs +1 -2
  188. package/dist/runtime/polyfill/fileSystemManager.mjs +1 -2
  189. package/dist/runtime/polyfill/files.mjs +1 -2
  190. package/dist/runtime/polyfill/font.mjs +1 -2
  191. package/dist/runtime/polyfill/index.d.mts +4 -4
  192. package/dist/runtime/polyfill/index.mjs +11 -4
  193. package/dist/runtime/polyfill/index.mjs.map +1 -1
  194. package/dist/runtime/polyfill/interaction.mjs +1 -2
  195. package/dist/runtime/polyfill/interactionApi.mjs +1 -2
  196. package/dist/runtime/polyfill/intersectionObserver.mjs +4 -4
  197. package/dist/runtime/polyfill/intersectionObserver.mjs.map +1 -1
  198. package/dist/runtime/polyfill/lifecycleEvents.d.mts +12 -0
  199. package/dist/runtime/polyfill/lifecycleEvents.mjs +67 -0
  200. package/dist/runtime/polyfill/lifecycleEvents.mjs.map +1 -0
  201. package/dist/runtime/polyfill/locale.mjs +1 -2
  202. package/dist/runtime/polyfill/location.mjs +1 -2
  203. package/dist/runtime/polyfill/locationApi.mjs +1 -2
  204. package/dist/runtime/polyfill/mediaActions.mjs +1 -2
  205. package/dist/runtime/polyfill/mediaApi/file.mjs +1 -2
  206. package/dist/runtime/polyfill/mediaApi/info.mjs +1 -2
  207. package/dist/runtime/polyfill/mediaApi/picker.mjs +1 -2
  208. package/dist/runtime/polyfill/mediaApi/preview.mjs +1 -2
  209. package/dist/runtime/polyfill/mediaApi/process.mjs +1 -2
  210. package/dist/runtime/polyfill/mediaInfo.mjs +1 -2
  211. package/dist/runtime/polyfill/mediaPicker.mjs +1 -2
  212. package/dist/runtime/polyfill/mediaProcess.mjs +1 -2
  213. package/dist/runtime/polyfill/menuApi.mjs +5 -3
  214. package/dist/runtime/polyfill/menuApi.mjs.map +1 -1
  215. package/dist/runtime/polyfill/navigationBarRuntime.mjs +1 -2
  216. package/dist/runtime/polyfill/network/request.mjs +1 -2
  217. package/dist/runtime/polyfill/network/requestBridge.mjs +1 -2
  218. package/dist/runtime/polyfill/network/status.mjs +1 -2
  219. package/dist/runtime/polyfill/platformApi.mjs +1 -2
  220. package/dist/runtime/polyfill/platformRuntime.mjs +1 -2
  221. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs +1 -2
  222. package/dist/runtime/polyfill/routeRuntime/dom.mjs +1 -2
  223. package/dist/runtime/polyfill/routeRuntime/events.d.mts +0 -2
  224. package/dist/runtime/polyfill/routeRuntime/events.mjs +1 -2
  225. package/dist/runtime/polyfill/routeRuntime/history.d.mts +0 -2
  226. package/dist/runtime/polyfill/routeRuntime/history.mjs +1 -2
  227. package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs +1 -2
  228. package/dist/runtime/polyfill/routeRuntime/options.d.mts +0 -2
  229. package/dist/runtime/polyfill/routeRuntime/options.mjs +1 -2
  230. package/dist/runtime/polyfill/routeRuntime/result.mjs +1 -2
  231. package/dist/runtime/polyfill/routeRuntime/scroll.mjs +37 -6
  232. package/dist/runtime/polyfill/routeRuntime/scroll.mjs.map +1 -1
  233. package/dist/runtime/polyfill/routeRuntime/stack.mjs +1 -2
  234. package/dist/runtime/polyfill/routeRuntime/url.mjs +1 -2
  235. package/dist/runtime/polyfill/routeRuntime.d.mts +2 -2
  236. package/dist/runtime/polyfill/routeRuntime.mjs +14 -5
  237. package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
  238. package/dist/runtime/polyfill/runtimeCapabilityApi.mjs +1 -2
  239. package/dist/runtime/polyfill/runtimeDataApi.d.mts +0 -2
  240. package/dist/runtime/polyfill/runtimeDataApi.mjs +1 -2
  241. package/dist/runtime/polyfill/runtimeInfra.mjs +1 -2
  242. package/dist/runtime/polyfill/runtimeOps.mjs +1 -2
  243. package/dist/runtime/polyfill/selectorQuery.mjs +3 -3
  244. package/dist/runtime/polyfill/selectorQuery.mjs.map +1 -1
  245. package/dist/runtime/polyfill/storage.mjs +1 -2
  246. package/dist/runtime/polyfill/storageAsync.mjs +1 -2
  247. package/dist/runtime/polyfill/subscribe.mjs +1 -2
  248. package/dist/runtime/polyfill/system.mjs +1 -2
  249. package/dist/runtime/polyfill/systemApi.mjs +1 -2
  250. package/dist/runtime/polyfill/types/base.d.mts +0 -2
  251. package/dist/runtime/polyfill/types/common.d.mts +0 -2
  252. package/dist/runtime/polyfill/types/lifecycle.d.mts +12 -0
  253. package/dist/runtime/polyfill/types/locationRuntime.d.mts +0 -2
  254. package/dist/runtime/polyfill/types/mediaAuth.d.mts +0 -2
  255. package/dist/runtime/polyfill/types/platformRuntime.d.mts +0 -2
  256. package/dist/runtime/polyfill/types/systemAuth.d.mts +0 -2
  257. package/dist/runtime/polyfill/types/tabBarRuntime.d.mts +0 -2
  258. package/dist/runtime/polyfill/ui.mjs +1 -2
  259. package/dist/runtime/polyfill/uiFeedback.mjs +19 -5
  260. package/dist/runtime/polyfill/uiFeedback.mjs.map +1 -1
  261. package/dist/runtime/polyfill/uiMediaApi.d.mts +8 -2
  262. package/dist/runtime/polyfill/uiMediaApi.mjs +20 -5
  263. package/dist/runtime/polyfill/uiMediaApi.mjs.map +1 -1
  264. package/dist/runtime/polyfill/videoContext.mjs +1 -2
  265. package/dist/runtime/polyfill/vkSession.mjs +1 -2
  266. package/dist/runtime/polyfill/windowResize.mjs +1 -2
  267. package/dist/runtime/polyfill/worker.mjs +1 -2
  268. package/dist/runtime/polyfill.d.mts +4 -2
  269. package/dist/runtime/renderContext.d.mts +0 -2
  270. package/dist/runtime/renderContext.mjs +5 -4
  271. package/dist/runtime/renderContext.mjs.map +1 -1
  272. package/dist/runtime/rpx.d.mts +0 -2
  273. package/dist/runtime/rpx.mjs +6 -6
  274. package/dist/runtime/rpx.mjs.map +1 -1
  275. package/dist/runtime/seo/index.d.mts +0 -2
  276. package/dist/runtime/seo/index.mjs +1 -2
  277. package/dist/runtime/style.d.mts +0 -2
  278. package/dist/runtime/style.mjs +1 -2
  279. package/dist/runtime/template.d.mts +0 -2
  280. package/dist/runtime/utils/object.mjs +1 -2
  281. package/dist/runtime/viewport/index.d.mts +0 -2
  282. package/dist/runtime/viewport/index.mjs +1 -2
  283. package/dist/runtime/viewport/style.mjs +2 -2
  284. package/dist/runtime/viewport/style.mjs.map +1 -1
  285. package/dist/runtime/viewport/types.d.mts +0 -2
  286. package/dist/runtime/warning.d.mts +0 -2
  287. package/dist/runtime/warning.mjs +1 -2
  288. package/dist/runtime/wevu.d.mts +0 -2
  289. package/dist/runtime/wevu.mjs +1 -2
  290. package/dist/shared/nativeComponents.mjs +10 -3
  291. package/dist/shared/nativeComponents.mjs.map +1 -1
  292. package/dist/shared/slugify.mjs +1 -2
  293. package/dist/shared/styleUnits/options.d.mts +24 -0
  294. package/dist/shared/styleUnits/options.mjs +13 -0
  295. package/dist/shared/styleUnits/options.mjs.map +1 -0
  296. package/dist/shared/styleUnits/value.mjs +63 -0
  297. package/dist/shared/styleUnits/value.mjs.map +1 -0
  298. package/dist/shared/tabBar.d.mts +0 -2
  299. package/dist/shared/tabBar.mjs +1 -2
  300. package/dist/shared/wxml.mjs +1 -2
  301. package/package.json +15 -13
  302. package/dist/runtime/nativeComponents/scrollView.mjs +0 -88
  303. package/dist/runtime/nativeComponents/scrollView.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"menuApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/menuApi.ts"],"sourcesContent":["import {\n setTabBarBadgeState,\n setTabBarRedDotState,\n setTabBarVisible,\n updateTabBarItem,\n updateTabBarStyle,\n} from '../appShell/tabBar'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport { readNetworkStatusSnapshot } from './network'\nimport {\n normalizeSubscribeTemplateIds,\n resolveSubscribeDecisionMap,\n} from './subscribe'\nimport {\n normalizeActionSheetItems,\n resolveActionSheetSelection,\n resolveModalSelection,\n} from './ui'\n\nexport function getNetworkTypeBridge(options?: any): Promise<any> {\n const status = readNetworkStatusSnapshot()\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'getNetworkType:ok',\n ...status,\n }))\n}\n\nfunction resolveTabBarMutation(action: string, options: any, succeeded: boolean, failureReason = 'tabBar not configured') {\n if (succeeded) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: `${action}:ok` }))\n }\n const failure = callMiniProgramAsyncFailure(options, `${action}:fail ${failureReason}`)\n return Promise.reject(failure)\n}\n\nexport function showTabBarBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('showTabBar', options, setTabBarVisible(true, options?.animation === true))\n}\n\nexport function hideTabBarBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('hideTabBar', options, setTabBarVisible(false, options?.animation === true))\n}\n\nexport function setTabBarItemBridge(options?: any): Promise<any> {\n const patch = {\n ...(typeof options?.text === 'string' ? { text: options.text } : {}),\n ...(typeof options?.iconPath === 'string' ? { iconPath: options.iconPath } : {}),\n ...(typeof options?.selectedIconPath === 'string' ? { selectedIconPath: options.selectedIconPath } : {}),\n }\n return resolveTabBarMutation('setTabBarItem', options, updateTabBarItem(options?.index, patch), 'invalid index')\n}\n\nexport function setTabBarStyleBridge(options?: any): Promise<any> {\n const patch = {\n ...(typeof options?.color === 'string' ? { color: options.color } : {}),\n ...(typeof options?.selectedColor === 'string' ? { selectedColor: options.selectedColor } : {}),\n ...(typeof options?.backgroundColor === 'string' ? { backgroundColor: options.backgroundColor } : {}),\n ...(options?.borderStyle === 'black' || options?.borderStyle === 'white'\n ? { borderStyle: options.borderStyle }\n : {}),\n }\n return resolveTabBarMutation('setTabBarStyle', options, updateTabBarStyle(patch))\n}\n\nexport function setTabBarBadgeBridge(options?: any): Promise<any> {\n const succeeded = typeof options?.text === 'string'\n && setTabBarBadgeState(options?.index, options.text)\n return resolveTabBarMutation('setTabBarBadge', options, succeeded, 'invalid index or text')\n}\n\nexport function removeTabBarBadgeBridge(options?: any): Promise<any> {\n return resolveTabBarMutation(\n 'removeTabBarBadge',\n options,\n setTabBarBadgeState(options?.index, undefined),\n 'invalid index',\n )\n}\n\nexport function showTabBarRedDotBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('showTabBarRedDot', options, setTabBarRedDotState(options?.index, true), 'invalid index')\n}\n\nexport function hideTabBarRedDotBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('hideTabBarRedDot', options, setTabBarRedDotState(options?.index, false), 'invalid index')\n}\n\nexport function requestPaymentBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'requestPayment:ok' }))\n}\n\nexport function requestSubscribeMessageBridge(options?: any): Promise<any> {\n const tmplIds = normalizeSubscribeTemplateIds(options?.tmplIds)\n if (tmplIds.length === 0) {\n const failure = callMiniProgramAsyncFailure(options, 'requestSubscribeMessage:fail invalid tmplIds')\n return Promise.reject(failure)\n }\n const decisionMap = resolveSubscribeDecisionMap(tmplIds)\n const result: Record<string, any> & { errMsg: string } = tmplIds.reduce<Record<string, any> & { errMsg: string }>((payload, tmplId) => {\n payload[tmplId] = decisionMap[tmplId]\n return payload\n }, { errMsg: 'requestSubscribeMessage:ok' })\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showModalBridge(options?: any): Promise<any> {\n const modalResult = resolveModalSelection(options)\n const result = {\n errMsg: 'showModal:ok',\n confirm: modalResult.confirm,\n cancel: modalResult.cancel,\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showActionSheetBridge(options?: any): Promise<any> {\n const itemList = normalizeActionSheetItems(options?.itemList)\n if (!itemList.length) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail invalid itemList')\n return Promise.reject(failure)\n }\n const tapIndex = resolveActionSheetSelection(itemList)\n if (tapIndex === null) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail cancel')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'showActionSheet:ok',\n tapIndex,\n }))\n}\n\nexport function showShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'showShareMenu:ok' }))\n}\n\nexport function updateShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'updateShareMenu:ok' }))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"menuApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/menuApi.ts"],"sourcesContent":["import type { MiniProgramBaseResult, ShareMenuOptions } from './types'\nimport {\n setTabBarBadgeState,\n setTabBarRedDotState,\n setTabBarVisible,\n updateTabBarItem,\n updateTabBarStyle,\n} from '../appShell/tabBar'\nimport {\n callMiniProgramAsyncFailure,\n callMiniProgramAsyncSuccess,\n} from './async'\nimport { readNetworkStatusSnapshot } from './network'\nimport {\n normalizeSubscribeTemplateIds,\n resolveSubscribeDecisionMap,\n} from './subscribe'\nimport {\n normalizeActionSheetItems,\n resolveActionSheetSelection,\n resolveModalSelection,\n} from './ui'\n\nexport function getNetworkTypeBridge(options?: any): Promise<any> {\n const status = readNetworkStatusSnapshot()\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'getNetworkType:ok',\n ...status,\n }))\n}\n\nfunction resolveTabBarMutation(action: string, options: any, succeeded: boolean, failureReason = 'tabBar not configured') {\n if (succeeded) {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: `${action}:ok` }))\n }\n const failure = callMiniProgramAsyncFailure(options, `${action}:fail ${failureReason}`)\n return Promise.reject(failure)\n}\n\nexport function showTabBarBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('showTabBar', options, setTabBarVisible(true, options?.animation === true))\n}\n\nexport function hideTabBarBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('hideTabBar', options, setTabBarVisible(false, options?.animation === true))\n}\n\nexport function setTabBarItemBridge(options?: any): Promise<any> {\n const patch = {\n ...(typeof options?.text === 'string' ? { text: options.text } : {}),\n ...(typeof options?.iconPath === 'string' ? { iconPath: options.iconPath } : {}),\n ...(typeof options?.selectedIconPath === 'string' ? { selectedIconPath: options.selectedIconPath } : {}),\n }\n return resolveTabBarMutation('setTabBarItem', options, updateTabBarItem(options?.index, patch), 'invalid index')\n}\n\nexport function setTabBarStyleBridge(options?: any): Promise<any> {\n const patch = {\n ...(typeof options?.color === 'string' ? { color: options.color } : {}),\n ...(typeof options?.selectedColor === 'string' ? { selectedColor: options.selectedColor } : {}),\n ...(typeof options?.backgroundColor === 'string' ? { backgroundColor: options.backgroundColor } : {}),\n ...(options?.borderStyle === 'black' || options?.borderStyle === 'white'\n ? { borderStyle: options.borderStyle }\n : {}),\n }\n return resolveTabBarMutation('setTabBarStyle', options, updateTabBarStyle(patch))\n}\n\nexport function setTabBarBadgeBridge(options?: any): Promise<any> {\n const succeeded = typeof options?.text === 'string'\n && setTabBarBadgeState(options?.index, options.text)\n return resolveTabBarMutation('setTabBarBadge', options, succeeded, 'invalid index or text')\n}\n\nexport function removeTabBarBadgeBridge(options?: any): Promise<any> {\n return resolveTabBarMutation(\n 'removeTabBarBadge',\n options,\n setTabBarBadgeState(options?.index, undefined),\n 'invalid index',\n )\n}\n\nexport function showTabBarRedDotBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('showTabBarRedDot', options, setTabBarRedDotState(options?.index, true), 'invalid index')\n}\n\nexport function hideTabBarRedDotBridge(options?: any): Promise<any> {\n return resolveTabBarMutation('hideTabBarRedDot', options, setTabBarRedDotState(options?.index, false), 'invalid index')\n}\n\nexport function requestPaymentBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'requestPayment:ok' }))\n}\n\nexport function requestSubscribeMessageBridge(options?: any): Promise<any> {\n const tmplIds = normalizeSubscribeTemplateIds(options?.tmplIds)\n if (tmplIds.length === 0) {\n const failure = callMiniProgramAsyncFailure(options, 'requestSubscribeMessage:fail invalid tmplIds')\n return Promise.reject(failure)\n }\n const decisionMap = resolveSubscribeDecisionMap(tmplIds)\n const result: Record<string, any> & { errMsg: string } = tmplIds.reduce<Record<string, any> & { errMsg: string }>((payload, tmplId) => {\n payload[tmplId] = decisionMap[tmplId]\n return payload\n }, { errMsg: 'requestSubscribeMessage:ok' })\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showModalBridge(options?: any): Promise<any> {\n const modalResult = resolveModalSelection(options)\n const result = {\n errMsg: 'showModal:ok',\n confirm: modalResult.confirm,\n cancel: modalResult.cancel,\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, result))\n}\n\nexport function showActionSheetBridge(options?: any): Promise<any> {\n const itemList = normalizeActionSheetItems(options?.itemList)\n if (!itemList.length) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail invalid itemList')\n return Promise.reject(failure)\n }\n const tapIndex = resolveActionSheetSelection(itemList)\n if (tapIndex === null) {\n const failure = callMiniProgramAsyncFailure(options, 'showActionSheet:fail cancel')\n return Promise.reject(failure)\n }\n return Promise.resolve(callMiniProgramAsyncSuccess(options, {\n errMsg: 'showActionSheet:ok',\n tapIndex,\n }))\n}\n\nexport function showShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'showShareMenu:ok' }))\n}\n\nexport function updateShareMenuBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'updateShareMenu:ok' }))\n}\n\nexport function hideShareMenuBridge(options?: ShareMenuOptions): Promise<MiniProgramBaseResult> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'hideShareMenu:ok' }))\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { updateWebDocumentTitle } from "../seo/index.mjs";
2
2
 
3
- //#region src/runtime/polyfill/navigationBarRuntime.ts
3
+ // src/runtime/polyfill/navigationBarRuntime.ts
4
4
  function getActiveNavigationBar(pages) {
5
5
  const current = pages[pages.length - 1];
6
6
  if (!current) return;
@@ -66,6 +66,5 @@ function createNavigationBarRuntimeBridge(getCurrentPages, emitWarning) {
66
66
  };
67
67
  }
68
68
 
69
- //#endregion
70
69
  export { createNavigationBarRuntimeBridge };
71
70
  //# sourceMappingURL=navigationBarRuntime.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { getRuntimeFetch as getRuntimeFetch$1 } from "../../host/index.mjs";
2
2
  import { normalizeFilePath, resolveUploadFileBlob, resolveUploadFileName } from "../files.mjs";
3
3
 
4
- //#region src/runtime/polyfill/network/request.ts
4
+ // src/runtime/polyfill/network/request.ts
5
5
  function resolveTimeoutSignal(timeout) {
6
6
  const controller = typeof AbortController === "function" ? new AbortController() : void 0;
7
7
  let timeoutTimer;
@@ -157,6 +157,5 @@ async function performUploadByFetch(options) {
157
157
  }
158
158
  }
159
159
 
160
- //#endregion
161
160
  export { buildRequestBody, buildRequestUrl, collectResponseHeaders, createBlobObjectUrl, getRuntimeFetch, normalizeRequestHeaders, normalizeRequestMethod, parseRequestResponseData, performDownloadByFetch, performRequestByFetch, performUploadByFetch, stripUploadContentType };
162
161
  //# sourceMappingURL=request.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { callMiniProgramAsyncFailure, callMiniProgramAsyncSuccess } from "../async.mjs";
2
2
  import { performDownloadByFetch, performRequestByFetch, performUploadByFetch } from "./request.mjs";
3
3
 
4
- //#region src/runtime/polyfill/network/requestBridge.ts
4
+ // src/runtime/polyfill/network/requestBridge.ts
5
5
  async function requestByFetchBridge(options) {
6
6
  try {
7
7
  const response = await performRequestByFetch(options);
@@ -44,6 +44,5 @@ async function uploadFileByFetchBridge(options) {
44
44
  }
45
45
  }
46
46
 
47
- //#endregion
48
47
  export { downloadFileByFetchBridge, requestByFetchBridge, uploadFileByFetchBridge };
49
48
  //# sourceMappingURL=requestBridge.mjs.map
@@ -1,4 +1,4 @@
1
- //#region src/runtime/polyfill/network/status.ts
1
+ // src/runtime/polyfill/network/status.ts
2
2
  function getNavigatorConnection() {
3
3
  const runtimeNavigator = typeof navigator !== "undefined" ? navigator : void 0;
4
4
  return runtimeNavigator?.connection ?? runtimeNavigator?.mozConnection ?? runtimeNavigator?.webkitConnection;
@@ -50,6 +50,5 @@ function removeNetworkStatusCallback(callback) {
50
50
  networkStatusCallbacks.delete(callback);
51
51
  }
52
52
 
53
- //#endregion
54
53
  export { addNetworkStatusCallback, getNavigatorConnection, readNetworkStatusSnapshot, removeNetworkStatusCallback };
55
54
  //# sourceMappingURL=status.mjs.map
@@ -2,7 +2,7 @@ import { callMiniProgramAsyncSuccess, scheduleMicrotask } from "./async.mjs";
2
2
  import { createInterstitialAdImpl, createRewardedVideoAdImpl } from "./ad.mjs";
3
3
  import { createLogManagerBridge, createUpdateManagerBridge, readExtConfigValue, readRuntimeConsole, reportAnalyticsEvent, resolveUpdateManagerPreset } from "./platformRuntime.mjs";
4
4
 
5
- //#region src/runtime/polyfill/platformApi.ts
5
+ // src/runtime/polyfill/platformApi.ts
6
6
  function createRewardedVideoAdBridge(options) {
7
7
  return createRewardedVideoAdImpl(options);
8
8
  }
@@ -29,6 +29,5 @@ function reportAnalyticsBridge(eventName, data) {
29
29
  reportAnalyticsEvent(eventName, data);
30
30
  }
31
31
 
32
- //#endregion
33
32
  export { createInterstitialAdBridge, createRewardedVideoAdBridge, getExtConfigBridge, getExtConfigSyncBridge, getLogManagerBridge, getUpdateManagerBridge, reportAnalyticsBridge };
34
33
  //# sourceMappingURL=platformApi.mjs.map
@@ -1,6 +1,6 @@
1
1
  import { WEAPP_VITE_WEB_ANALYTICS_EVENTS_KEY, WEAPP_VITE_WEB_EXT_CONFIG_KEY, WEAPP_VITE_WEB_UPDATE_MANAGER_KEY } from "@weapp-core/constants";
2
2
 
3
- //#region src/runtime/polyfill/platformRuntime.ts
3
+ // src/runtime/polyfill/platformRuntime.ts
4
4
  function normalizeSubPackageName(value) {
5
5
  if (typeof value !== "string") return "";
6
6
  return value.trim();
@@ -115,6 +115,5 @@ function reportAnalyticsEvent(eventName, data) {
115
115
  });
116
116
  }
117
117
 
118
- //#endregion
119
118
  export { createLogManagerBridge, createUpdateManagerBridge, readExtConfigValue, readRuntimeConsole, reportAnalyticsEvent, resolveSubPackageName, resolveUpdateManagerPreset };
120
119
  //# sourceMappingURL=platformRuntime.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { cloneLaunchOptions, resolveFallbackLaunchOptions } from "../appState.mjs";
2
2
  import { isRecord } from "./options.mjs";
3
3
 
4
- //#region src/runtime/polyfill/routeRuntime/appLifecycle.ts
4
+ // src/runtime/polyfill/routeRuntime/appLifecycle.ts
5
5
  function resolveEntryOptions(entry) {
6
6
  return resolveFallbackLaunchOptions(entry ? [entry] : []);
7
7
  }
@@ -129,6 +129,5 @@ var AppLifecycleRuntime = class {
129
129
  }
130
130
  };
131
131
 
132
- //#endregion
133
132
  export { AppLifecycleRuntime };
134
133
  //# sourceMappingURL=appLifecycle.mjs.map
@@ -3,7 +3,7 @@ import { bindPageScrollOwner, getPageContainer, restoreEntryScrollPosition, setE
3
3
  import { cancelEntryRoute } from "./events.mjs";
4
4
  import { attachRouteMeta } from "./lifecycle.mjs";
5
5
 
6
- //#region src/runtime/polyfill/routeRuntime/dom.ts
6
+ // src/runtime/polyfill/routeRuntime/dom.ts
7
7
  function applyEntryVisibility(entry) {
8
8
  const element = entry.element;
9
9
  if (!element) return;
@@ -65,6 +65,5 @@ function mountEntryToDom(entry, pageRegistry, onBeforeMount) {
65
65
  });
66
66
  }
67
67
 
68
- //#endregion
69
68
  export { mountEntryToDom, setEntryActiveInDom, unmountEntryFromDom };
70
69
  //# sourceMappingURL=dom.mjs.map
@@ -1,7 +1,6 @@
1
1
  import { ComponentPublicInstance } from "../../component/types.mjs";
2
2
  import "../../component/index.mjs";
3
3
  import "./options.mjs";
4
- //#region src/runtime/polyfill/routeRuntime/events.d.ts
5
4
  export type AppRouteOpenType = 'appLaunch' | 'navigateTo' | 'redirectTo' | 'navigateBack' | 'switchTab' | 'reLaunch';
6
5
  export interface AppRouteEvent {
7
6
  routeEventId: string;
@@ -25,5 +24,4 @@ export declare function onAppRouteDone(callback: AppRouteCallback): void;
25
24
  export declare function offAppRouteDone(callback?: AppRouteCallback): void;
26
25
  export declare function onBeforePageUnload(callback: BeforePageUnloadCallback): void;
27
26
  export declare function offBeforePageUnload(callback?: BeforePageUnloadCallback): void;
28
- //#endregion
29
27
  //# sourceMappingURL=events.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { WEVU_HOST_COMMIT_PROMISE_KEY } from "@weapp-core/constants";
2
2
 
3
- //#region src/runtime/polyfill/routeRuntime/events.ts
3
+ // src/runtime/polyfill/routeRuntime/events.ts
4
4
  const beforeCallbacks = /* @__PURE__ */ new Set();
5
5
  const routeCallbacks = /* @__PURE__ */ new Set();
6
6
  const doneCallbacks = /* @__PURE__ */ new Set();
@@ -118,6 +118,5 @@ function finishAppRoute(entry, event) {
118
118
  if (entry.instance) finishMounted();
119
119
  }
120
120
 
121
- //#endregion
122
121
  export { beginAppRoute, cancelEntryRoute, emitBeforePageUnload, finishAppRoute, getEntryWebviewId, offAppRoute, offAppRouteDone, offBeforeAppRoute, offBeforePageUnload, onAppRoute, onAppRouteDone, onBeforeAppRoute, onBeforePageUnload };
123
122
  //# sourceMappingURL=events.mjs.map
@@ -1,5 +1,4 @@
1
1
  import "./options.mjs";
2
- //#region src/runtime/polyfill/routeRuntime/history.d.ts
3
2
  export type WebRoutingMode = 'memory' | 'history' | 'hash';
4
3
  export interface WebRoutingConfig {
5
4
  mode?: WebRoutingMode;
@@ -27,5 +26,4 @@ export declare function getWebRoutingConfig(): {
27
26
  mode: WebRoutingMode;
28
27
  base: string;
29
28
  };
30
- //#endregion
31
29
  //# sourceMappingURL=history.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { getEntryWebviewId } from "./events.mjs";
2
2
 
3
- //#region src/runtime/polyfill/routeRuntime/history.ts
3
+ // src/runtime/polyfill/routeRuntime/history.ts
4
4
  const DEFAULT_CONFIG = {
5
5
  mode: "memory",
6
6
  base: "/"
@@ -146,6 +146,5 @@ function getWebRoutingConfig() {
146
146
  return { ...resolvedConfig };
147
147
  }
148
148
 
149
- //#endregion
150
149
  export { configureWebRouting, disposeWebRouting, getWebHistoryStack, getWebRoutingConfig, readWebRouteTarget, resolveWebRoutingConfig, syncWebRouting };
151
150
  //# sourceMappingURL=history.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { getEntryWebviewId } from "./events.mjs";
2
2
  import { WEVU_PAGE_LAYOUT_NAME_KEY, WEVU_PAGE_LAYOUT_PROPS_KEY, WEVU_PAGE_LAYOUT_SETTER_KEY } from "@weapp-core/constants";
3
3
 
4
- //#region src/runtime/polyfill/routeRuntime/lifecycle.ts
4
+ // src/runtime/polyfill/routeRuntime/lifecycle.ts
5
5
  const ROUTE_META_SYMBOL = Symbol("@weapp-vite/web:route-meta");
6
6
  const PAGE_STATE_SYMBOL = Symbol("@weapp-vite/web:page-state");
7
7
  function getRouteMeta(instance) {
@@ -119,6 +119,5 @@ function augmentPageComponentOptions(component, record) {
119
119
  };
120
120
  }
121
121
 
122
- //#endregion
123
122
  export { attachRouteMeta, augmentPageComponentOptions, dispatchPageLifetimeToComponents, hidePageInstance, showPageInstance };
124
123
  //# sourceMappingURL=lifecycle.mjs.map
@@ -3,7 +3,6 @@ import { TemplateRenderer } from "../../template.mjs";
3
3
  import { ComponentOptions, ComponentPublicInstance } from "../../component/types.mjs";
4
4
  import "../../component/index.mjs";
5
5
  import { MiniProgramAsyncOptions, MiniProgramBaseResult } from "../types/base.mjs";
6
- //#region src/runtime/polyfill/routeRuntime/options.d.ts
7
6
  export interface RegisterMeta {
8
7
  id: string;
9
8
  template?: TemplateRenderer;
@@ -44,6 +43,5 @@ export interface NavigateBackOptions extends MiniProgramAsyncOptions<MiniProgram
44
43
  }
45
44
  export type PageRawOptions = ComponentOptions & PageHooks & Record<string, unknown>;
46
45
  export type ComponentRawOptions = ComponentOptions & Record<string, unknown>;
47
- //#endregion
48
46
  export {};
49
47
  //# sourceMappingURL=options.d.mts.map
@@ -1,4 +1,4 @@
1
- //#region src/runtime/polyfill/routeRuntime/options.ts
1
+ // src/runtime/polyfill/routeRuntime/options.ts
2
2
  const RESERVED_PAGE_METHOD_KEYS = /* @__PURE__ */ new Set([
3
3
  "data",
4
4
  "methods",
@@ -70,6 +70,5 @@ function normalizeComponentOptions(raw) {
70
70
  return component;
71
71
  }
72
72
 
73
- //#endregion
74
73
  export { isRecord, normalizeComponentOptions, normalizePageOptions };
75
74
  //# sourceMappingURL=options.mjs.map
@@ -1,12 +1,11 @@
1
1
  import { callMiniProgramAsyncFailure, callMiniProgramAsyncSuccess } from "../async.mjs";
2
2
 
3
- //#region src/runtime/polyfill/routeRuntime/result.ts
3
+ // src/runtime/polyfill/routeRuntime/result.ts
4
4
  function resolveRouteAction(action, options, succeeded, failureReason = "page not found") {
5
5
  if (succeeded) return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: `${action}:ok` }));
6
6
  const failure = callMiniProgramAsyncFailure(options, `${action}:fail ${failureReason}`);
7
7
  return Promise.reject(failure);
8
8
  }
9
9
 
10
- //#endregion
11
10
  export { resolveRouteAction };
12
11
  //# sourceMappingURL=result.mjs.map
@@ -1,10 +1,13 @@
1
1
  import { getAppContainer } from "../../appShell/container.mjs";
2
2
 
3
- //#region src/runtime/polyfill/routeRuntime/scroll.ts
3
+ // src/runtime/polyfill/routeRuntime/scroll.ts
4
+ /** 与 page.json 的 onReachBottomDistance 默认值一致。 */
5
+ const DEFAULT_REACH_BOTTOM_DISTANCE = 50;
4
6
  let activeEntry;
5
7
  let boundContainer;
6
8
  let scrollHandler;
7
9
  const restorationClaims = /* @__PURE__ */ new WeakMap();
10
+ const reachBottomStates = /* @__PURE__ */ new WeakMap();
8
11
  /** 仅认领新页面首次恢复;保留页面的容器位置仍由宿主维护,显式 pageScrollTo 不受影响。 */
9
12
  function claimPageScrollRestoration(page) {
10
13
  restorationClaims.set(page, (restorationClaims.get(page) ?? 0) + 1);
@@ -20,6 +23,10 @@ function claimPageScrollRestoration(page) {
20
23
  function getPageContainer() {
21
24
  return getAppContainer();
22
25
  }
26
+ function isContainerAtBottom(container, scrollTop = container.scrollTop) {
27
+ if (!(container.scrollHeight > container.clientHeight)) return false;
28
+ return scrollTop + container.clientHeight >= container.scrollHeight - DEFAULT_REACH_BOTTOM_DISTANCE;
29
+ }
23
30
  function captureEntryScrollPosition(entry) {
24
31
  if (!entry.active) return;
25
32
  const container = getPageContainer();
@@ -28,7 +35,13 @@ function captureEntryScrollPosition(entry) {
28
35
  function restoreEntryScrollPosition(entry, retained = false) {
29
36
  if (!retained && entry.instance && restorationClaims.has(entry.instance)) return;
30
37
  const container = getPageContainer();
31
- if (container) container.scrollTop = entry.scrollTop ?? 0;
38
+ if (container) {
39
+ container.scrollTop = entry.scrollTop ?? 0;
40
+ reachBottomStates.set(entry, {
41
+ atBottom: isContainerAtBottom(container),
42
+ scrollTop: container.scrollTop
43
+ });
44
+ }
32
45
  }
33
46
  function setEntryScrollOwner(entry, active) {
34
47
  if (active) {
@@ -37,10 +50,29 @@ function setEntryScrollOwner(entry, active) {
37
50
  }
38
51
  if (activeEntry === entry) activeEntry = void 0;
39
52
  }
53
+ /**
54
+ * 真机在滚到底部时触发一次 `onReachBottom`:内容加载后离开底部再滚到底会重新触发,
55
+ * 停在底部继续滚动不会重复调用。
56
+ */
57
+ function notifyEntryReachBottom(entry) {
58
+ const container = getPageContainer();
59
+ if (!container) return;
60
+ const atBottom = isContainerAtBottom(container);
61
+ const previous = reachBottomStates.get(entry);
62
+ const continued = previous?.atBottom && isContainerAtBottom(container, previous.scrollTop);
63
+ reachBottomStates.set(entry, {
64
+ atBottom,
65
+ scrollTop: container.scrollTop
66
+ });
67
+ if (!atBottom || continued) return;
68
+ entry.instance?.onReachBottom?.();
69
+ }
40
70
  function recordActiveEntryScrollPosition() {
41
- if (activeEntry?.active) {
42
- captureEntryScrollPosition(activeEntry);
43
- activeEntry.instance?.onPageScroll?.({ scrollTop: activeEntry.scrollTop ?? 0 });
71
+ const entry = activeEntry;
72
+ if (entry?.active) {
73
+ captureEntryScrollPosition(entry);
74
+ entry.instance?.onPageScroll?.({ scrollTop: entry.scrollTop ?? 0 });
75
+ if (entry === activeEntry && entry.active) notifyEntryReachBottom(entry);
44
76
  }
45
77
  }
46
78
  function bindPageScrollOwner(container) {
@@ -51,6 +83,5 @@ function bindPageScrollOwner(container) {
51
83
  container.addEventListener("scroll", scrollHandler, { passive: true });
52
84
  }
53
85
 
54
- //#endregion
55
86
  export { bindPageScrollOwner, captureEntryScrollPosition, claimPageScrollRestoration, getPageContainer, recordActiveEntryScrollPosition, restoreEntryScrollPosition, setEntryScrollOwner };
56
87
  //# sourceMappingURL=scroll.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/scroll.ts"],"sourcesContent":["import type { PageStackEntry } from './options'\nimport { getAppContainer } from '../../appShell/container'\n\ntype ScrollContainer = HTMLElement & Pick<EventTarget, 'addEventListener' | 'removeEventListener'>\n\nlet activeEntry: PageStackEntry | undefined\nlet boundContainer: ScrollContainer | undefined\nlet scrollHandler: (() => void) | undefined\n\nconst restorationClaims = new WeakMap<object, number>()\n\n/** 仅认领新页面首次恢复;保留页面的容器位置仍由宿主维护,显式 pageScrollTo 不受影响。 */\nexport function claimPageScrollRestoration(page: object): () => void {\n restorationClaims.set(page, (restorationClaims.get(page) ?? 0) + 1)\n let released = false\n return () => {\n if (released) {\n return\n }\n released = true\n const remaining = (restorationClaims.get(page) ?? 1) - 1\n if (remaining > 0) {\n restorationClaims.set(page, remaining)\n }\n else {\n restorationClaims.delete(page)\n }\n }\n}\n\nexport function getPageContainer() {\n return getAppContainer()\n}\n\nexport function captureEntryScrollPosition(entry: PageStackEntry) {\n if (!entry.active) {\n return\n }\n const container = getPageContainer()\n if (container) {\n entry.scrollTop = container.scrollTop\n }\n}\n\nexport function restoreEntryScrollPosition(entry: PageStackEntry, retained = false) {\n if (!retained && entry.instance && restorationClaims.has(entry.instance)) {\n return\n }\n const container = getPageContainer()\n if (container) {\n container.scrollTop = entry.scrollTop ?? 0\n }\n}\n\nexport function setEntryScrollOwner(entry: PageStackEntry, active: boolean) {\n if (active) {\n activeEntry = entry\n return\n }\n if (activeEntry === entry) {\n activeEntry = undefined\n }\n}\n\nexport function recordActiveEntryScrollPosition() {\n if (activeEntry?.active) {\n captureEntryScrollPosition(activeEntry)\n const page = activeEntry.instance as (PageStackEntry['instance'] & {\n onPageScroll?: (event: { scrollTop: number }) => void\n }) | undefined\n page?.onPageScroll?.({ scrollTop: activeEntry.scrollTop ?? 0 })\n }\n}\n\nexport function bindPageScrollOwner(container: ScrollContainer) {\n if (boundContainer === container) {\n return\n }\n if (boundContainer && scrollHandler) {\n boundContainer.removeEventListener('scroll', scrollHandler)\n }\n boundContainer = container\n scrollHandler = recordActiveEntryScrollPosition\n container.addEventListener('scroll', scrollHandler, { passive: true })\n}\n\nexport function disposePageScrollOwner() {\n if (boundContainer && scrollHandler) {\n boundContainer.removeEventListener('scroll', scrollHandler)\n }\n activeEntry = undefined\n boundContainer = undefined\n scrollHandler = undefined\n}\n"],"mappings":";;;AAKA,IAAI;AACJ,IAAI;AACJ,IAAI;AAEJ,MAAM,oCAAoB,IAAI,QAAwB;;AAGtD,SAAgB,2BAA2B,MAA0B;CACnE,kBAAkB,IAAI,OAAO,kBAAkB,IAAI,IAAI,KAAK,KAAK,CAAC;CAClE,IAAI,WAAW;CACf,aAAa;EACX,IAAI,UACF;EAEF,WAAW;EACX,MAAM,aAAa,kBAAkB,IAAI,IAAI,KAAK,KAAK;EACvD,IAAI,YAAY,GACd,kBAAkB,IAAI,MAAM,SAAS;OAGrC,kBAAkB,OAAO,IAAI;CAEjC;AACF;AAEA,SAAgB,mBAAmB;CACjC,OAAO,gBAAgB;AACzB;AAEA,SAAgB,2BAA2B,OAAuB;CAChE,IAAI,CAAC,MAAM,QACT;CAEF,MAAM,YAAY,iBAAiB;CACnC,IAAI,WACF,MAAM,YAAY,UAAU;AAEhC;AAEA,SAAgB,2BAA2B,OAAuB,WAAW,OAAO;CAClF,IAAI,CAAC,YAAY,MAAM,YAAY,kBAAkB,IAAI,MAAM,QAAQ,GACrE;CAEF,MAAM,YAAY,iBAAiB;CACnC,IAAI,WACF,UAAU,YAAY,MAAM,aAAa;AAE7C;AAEA,SAAgB,oBAAoB,OAAuB,QAAiB;CAC1E,IAAI,QAAQ;EACV,cAAc;EACd;CACF;CACA,IAAI,gBAAgB,OAClB,cAAc;AAElB;AAEA,SAAgB,kCAAkC;CAChD,IAAI,aAAa,QAAQ;EACvB,2BAA2B,WAAW;EAItC,AAHa,YAAY,UAGnB,eAAe,EAAE,WAAW,YAAY,aAAa,EAAE,CAAC;CAChE;AACF;AAEA,SAAgB,oBAAoB,WAA4B;CAC9D,IAAI,mBAAmB,WACrB;CAEF,IAAI,kBAAkB,eACpB,eAAe,oBAAoB,UAAU,aAAa;CAE5D,iBAAiB;CACjB,gBAAgB;CAChB,UAAU,iBAAiB,UAAU,eAAe,EAAE,SAAS,KAAK,CAAC;AACvE"}
1
+ {"version":3,"file":"scroll.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/scroll.ts"],"sourcesContent":["import type { PageStackEntry } from './options'\nimport { getAppContainer } from '../../appShell/container'\n\ntype ScrollContainer = HTMLElement & Pick<EventTarget, 'addEventListener' | 'removeEventListener'>\n\ninterface ReachBottomState {\n atBottom: boolean\n scrollTop: number\n}\n\n/** 与 page.json 的 onReachBottomDistance 默认值一致。 */\nconst DEFAULT_REACH_BOTTOM_DISTANCE = 50\n\nlet activeEntry: PageStackEntry | undefined\nlet boundContainer: ScrollContainer | undefined\nlet scrollHandler: (() => void) | undefined\n\nconst restorationClaims = new WeakMap<object, number>()\nconst reachBottomStates = new WeakMap<PageStackEntry, ReachBottomState>()\n\n/** 仅认领新页面首次恢复;保留页面的容器位置仍由宿主维护,显式 pageScrollTo 不受影响。 */\nexport function claimPageScrollRestoration(page: object): () => void {\n restorationClaims.set(page, (restorationClaims.get(page) ?? 0) + 1)\n let released = false\n return () => {\n if (released) {\n return\n }\n released = true\n const remaining = (restorationClaims.get(page) ?? 1) - 1\n if (remaining > 0) {\n restorationClaims.set(page, remaining)\n }\n else {\n restorationClaims.delete(page)\n }\n }\n}\n\nexport function getPageContainer() {\n return getAppContainer()\n}\n\nfunction isContainerAtBottom(container: ScrollContainer, scrollTop = container.scrollTop) {\n if (!(container.scrollHeight > container.clientHeight)) {\n return false\n }\n return scrollTop + container.clientHeight >= container.scrollHeight - DEFAULT_REACH_BOTTOM_DISTANCE\n}\n\nexport function captureEntryScrollPosition(entry: PageStackEntry) {\n if (!entry.active) {\n return\n }\n const container = getPageContainer()\n if (container) {\n entry.scrollTop = container.scrollTop\n }\n}\n\nexport function restoreEntryScrollPosition(entry: PageStackEntry, retained = false) {\n if (!retained && entry.instance && restorationClaims.has(entry.instance)) {\n return\n }\n const container = getPageContainer()\n if (container) {\n container.scrollTop = entry.scrollTop ?? 0\n // 恢复位置不算用户触底,同步状态避免随后的 scroll 事件补发一次 onReachBottom。\n reachBottomStates.set(entry, {\n atBottom: isContainerAtBottom(container),\n scrollTop: container.scrollTop,\n })\n }\n}\n\nexport function setEntryScrollOwner(entry: PageStackEntry, active: boolean) {\n if (active) {\n activeEntry = entry\n return\n }\n if (activeEntry === entry) {\n activeEntry = undefined\n }\n}\n\n/**\n * 真机在滚到底部时触发一次 `onReachBottom`:内容加载后离开底部再滚到底会重新触发,\n * 停在底部继续滚动不会重复调用。\n */\nfunction notifyEntryReachBottom(entry: PageStackEntry) {\n const container = getPageContainer()\n if (!container) {\n return\n }\n const atBottom = isContainerAtBottom(container)\n const previous = reachBottomStates.get(entry)\n // 追加内容或缩小视口不会必然触发 scroll;以当前尺寸重判上次位置是否仍在底部区间。\n const continued = previous?.atBottom && isContainerAtBottom(container, previous.scrollTop)\n reachBottomStates.set(entry, { atBottom, scrollTop: container.scrollTop })\n if (!atBottom || continued) {\n return\n }\n const page = entry.instance as (PageStackEntry['instance'] & {\n onReachBottom?: () => void\n }) | undefined\n page?.onReachBottom?.()\n}\n\nexport function recordActiveEntryScrollPosition() {\n const entry = activeEntry\n if (entry?.active) {\n captureEntryScrollPosition(entry)\n const page = entry.instance as (PageStackEntry['instance'] & {\n onPageScroll?: (event: { scrollTop: number }) => void\n }) | undefined\n page?.onPageScroll?.({ scrollTop: entry.scrollTop ?? 0 })\n if (entry === activeEntry && entry.active) {\n notifyEntryReachBottom(entry)\n }\n }\n}\n\nexport function bindPageScrollOwner(container: ScrollContainer) {\n if (boundContainer === container) {\n return\n }\n if (boundContainer && scrollHandler) {\n boundContainer.removeEventListener('scroll', scrollHandler)\n }\n boundContainer = container\n scrollHandler = recordActiveEntryScrollPosition\n container.addEventListener('scroll', scrollHandler, { passive: true })\n}\n\nexport function disposePageScrollOwner() {\n if (boundContainer && scrollHandler) {\n boundContainer.removeEventListener('scroll', scrollHandler)\n }\n activeEntry = undefined\n boundContainer = undefined\n scrollHandler = undefined\n}\n"],"mappings":";;;;AAWA,MAAM,gCAAgC;AAEtC,IAAI;AACJ,IAAI;AACJ,IAAI;AAEJ,MAAM,oCAAoB,IAAI,QAAwB;AACtD,MAAM,oCAAoB,IAAI,QAA0C;;AAGxE,SAAgB,2BAA2B,MAA0B;CACnE,kBAAkB,IAAI,OAAO,kBAAkB,IAAI,IAAI,KAAK,KAAK,CAAC;CAClE,IAAI,WAAW;CACf,aAAa;EACX,IAAI,UACF;EAEF,WAAW;EACX,MAAM,aAAa,kBAAkB,IAAI,IAAI,KAAK,KAAK;EACvD,IAAI,YAAY,GACd,kBAAkB,IAAI,MAAM,SAAS;OAGrC,kBAAkB,OAAO,IAAI;CAEjC;AACF;AAEA,SAAgB,mBAAmB;CACjC,OAAO,gBAAgB;AACzB;AAEA,SAAS,oBAAoB,WAA4B,YAAY,UAAU,WAAW;CACxF,IAAI,EAAE,UAAU,eAAe,UAAU,eACvC,OAAO;CAET,OAAO,YAAY,UAAU,gBAAgB,UAAU,eAAe;AACxE;AAEA,SAAgB,2BAA2B,OAAuB;CAChE,IAAI,CAAC,MAAM,QACT;CAEF,MAAM,YAAY,iBAAiB;CACnC,IAAI,WACF,MAAM,YAAY,UAAU;AAEhC;AAEA,SAAgB,2BAA2B,OAAuB,WAAW,OAAO;CAClF,IAAI,CAAC,YAAY,MAAM,YAAY,kBAAkB,IAAI,MAAM,QAAQ,GACrE;CAEF,MAAM,YAAY,iBAAiB;CACnC,IAAI,WAAW;EACb,UAAU,YAAY,MAAM,aAAa;EAEzC,kBAAkB,IAAI,OAAO;GAC3B,UAAU,oBAAoB,SAAS;GACvC,WAAW,UAAU;EACvB,CAAC;CACH;AACF;AAEA,SAAgB,oBAAoB,OAAuB,QAAiB;CAC1E,IAAI,QAAQ;EACV,cAAc;EACd;CACF;CACA,IAAI,gBAAgB,OAClB,cAAc;AAElB;;;;;AAMA,SAAS,uBAAuB,OAAuB;CACrD,MAAM,YAAY,iBAAiB;CACnC,IAAI,CAAC,WACH;CAEF,MAAM,WAAW,oBAAoB,SAAS;CAC9C,MAAM,WAAW,kBAAkB,IAAI,KAAK;CAE5C,MAAM,YAAY,UAAU,YAAY,oBAAoB,WAAW,SAAS,SAAS;CACzF,kBAAkB,IAAI,OAAO;EAAE;EAAU,WAAW,UAAU;CAAU,CAAC;CACzE,IAAI,CAAC,YAAY,WACf;CAKF,AAHa,MAAM,UAGb,gBAAgB;AACxB;AAEA,SAAgB,kCAAkC;CAChD,MAAM,QAAQ;CACd,IAAI,OAAO,QAAQ;EACjB,2BAA2B,KAAK;EAIhC,AAHa,MAAM,UAGb,eAAe,EAAE,WAAW,MAAM,aAAa,EAAE,CAAC;EACxD,IAAI,UAAU,eAAe,MAAM,QACjC,uBAAuB,KAAK;CAEhC;AACF;AAEA,SAAgB,oBAAoB,WAA4B;CAC9D,IAAI,mBAAmB,WACrB;CAEF,IAAI,kBAAkB,eACpB,eAAe,oBAAoB,UAAU,aAAa;CAE5D,iBAAiB;CACjB,gBAAgB;CAChB,UAAU,iBAAiB,UAAU,eAAe,EAAE,SAAS,KAAK,CAAC;AACvE"}
@@ -3,7 +3,7 @@ import { beginAppRoute, cancelEntryRoute, emitBeforePageUnload, finishAppRoute }
3
3
  import { hidePageInstance, showPageInstance } from "./lifecycle.mjs";
4
4
  import { mountEntryToDom, setEntryActiveInDom, unmountEntryFromDom } from "./dom.mjs";
5
5
 
6
- //#region src/runtime/polyfill/routeRuntime/stack.ts
6
+ // src/runtime/polyfill/routeRuntime/stack.ts
7
7
  var PageStackRuntime = class {
8
8
  pageRegistry;
9
9
  onBeforeMount;
@@ -158,6 +158,5 @@ var PageStackRuntime = class {
158
158
  }
159
159
  };
160
160
 
161
- //#endregion
162
161
  export { PageStackRuntime };
163
162
  //# sourceMappingURL=stack.mjs.map
@@ -1,4 +1,4 @@
1
- //#region src/runtime/polyfill/routeRuntime/url.ts
1
+ // src/runtime/polyfill/routeRuntime/url.ts
2
2
  const PAGE_TEMPLATE_EXTENSIONS = [
3
3
  ".wxml",
4
4
  ".axml",
@@ -30,6 +30,5 @@ function parsePageUrl(url) {
30
30
  };
31
31
  }
32
32
 
33
- //#endregion
34
33
  export { parsePageUrl };
35
34
  //# sourceMappingURL=url.mjs.map
@@ -1,3 +1,4 @@
1
+ import { ResolvedStyleUnitOptions } from "../../shared/styleUnits/options.mjs";
1
2
  import "../component/index.mjs";
2
3
  import { AppHideCallback, AppLaunchOptions, AppRuntime, AppShowCallback, ComponentRawOptions, NavigateBackOptions, PageRawOptions, RegisterMeta, RouteOptions } from "./routeRuntime/options.mjs";
3
4
  import { WebRoutingConfig } from "./routeRuntime/history.mjs";
@@ -7,12 +8,12 @@ import { ButtonFormConfig } from "../button/index.mjs";
7
8
  import { NavigationBarMetrics } from "../navigationBar/index.mjs";
8
9
  import { WebViewportConfig } from "../viewport/types.mjs";
9
10
  import "./index.mjs";
10
- //#region src/runtime/polyfill/routeRuntime.d.ts
11
11
  export declare function initializePageRoutes(ids: string[], options?: {
12
12
  rpx?: {
13
13
  designWidth?: number;
14
14
  varName?: string;
15
15
  };
16
+ styleUnits?: ResolvedStyleUnitOptions;
16
17
  navigationBar?: NavigationBarMetrics;
17
18
  form?: ButtonFormConfig;
18
19
  tabBar?: WebTabBarConfig;
@@ -52,5 +53,4 @@ export declare function navigateBack(options?: NavigateBackOptions): Promise<{
52
53
  }>;
53
54
  export declare function getLaunchOptionsSync(): AppLaunchOptions;
54
55
  export declare function getEnterOptionsSync(): AppLaunchOptions;
55
- //#endregion
56
56
  //# sourceMappingURL=routeRuntime.d.mts.map
@@ -1,3 +1,4 @@
1
+ import { resolveStyleUnitOptions } from "../../shared/styleUnits/options.mjs";
1
2
  import { slugify } from "../../shared/slugify.mjs";
2
3
  import { setRuntimeWarningOptions } from "../warning.mjs";
3
4
  import { configureTabBar, getTabBarPagePaths, syncTabBarRoute } from "../appShell/tabBar/index.mjs";
@@ -6,10 +7,11 @@ import { setAppStyle } from "../appStyle.mjs";
6
7
  import { setButtonFormConfig } from "../button/index.mjs";
7
8
  import { setRuntimeExecutionMode } from "../execution.mjs";
8
9
  import { defineComponent } from "../component/index.mjs";
9
- import { ensureNativeComponentsDefined } from "../nativeComponents/index.mjs";
10
- import { ensureNavigationBarDefined, setNavigationBarMetrics } from "../navigationBar/index.mjs";
10
+ import { configureInlineStyleUnits } from "../inlineStyle.mjs";
11
11
  import { setupWebViewport } from "../viewport/index.mjs";
12
12
  import { setupRpx } from "../rpx.mjs";
13
+ import { ensureNativeComponentsDefined } from "../nativeComponents/index.mjs";
14
+ import { ensureNavigationBarDefined, setNavigationBarMetrics } from "../navigationBar/index.mjs";
13
15
  import { resolveCurrentPages } from "./appState.mjs";
14
16
  import { normalizeComponentOptions, normalizePageOptions } from "./routeRuntime/options.mjs";
15
17
  import { AppLifecycleRuntime } from "./routeRuntime/appLifecycle.mjs";
@@ -20,7 +22,7 @@ import { resolveRouteAction } from "./routeRuntime/result.mjs";
20
22
  import { PageStackRuntime } from "./routeRuntime/stack.mjs";
21
23
  import { parsePageUrl } from "./routeRuntime/url.mjs";
22
24
 
23
- //#region src/runtime/polyfill/routeRuntime.ts
25
+ // src/runtime/polyfill/routeRuntime.ts
24
26
  const pageRegistry = /* @__PURE__ */ new Map();
25
27
  const componentRegistry = /* @__PURE__ */ new Map();
26
28
  let pageOrder = [];
@@ -98,9 +100,18 @@ function bindPageResizeBridge() {
98
100
  });
99
101
  }
100
102
  function initializePageRoutes(ids, options) {
103
+ const styleUnits = options?.styleUnits ?? resolveStyleUnitOptions({
104
+ designWidth: options?.rpx?.designWidth,
105
+ rpxVar: options?.rpx?.varName
106
+ });
107
+ configureInlineStyleUnits(styleUnits);
101
108
  setRuntimeExecutionMode(options?.runtime?.executionMode);
102
109
  setRuntimeWarningOptions(options?.runtime?.warnings);
103
110
  setupWebViewport(options?.runtime?.viewport);
111
+ setupRpx(options?.styleUnits?.useVariable ? {
112
+ designWidth: styleUnits.designWidth,
113
+ varName: styleUnits.rpxVar
114
+ } : options?.rpx);
104
115
  configureWebSeo(options?.runtime?.seo);
105
116
  setupWebResourceHints(options?.runtime?.resourceHints);
106
117
  configureWebRouting(options?.runtime?.routing, ids, reconcileWebRoute);
@@ -111,7 +122,6 @@ function initializePageRoutes(ids, options) {
111
122
  pageStack.configureTabPages(getTabBarPagePaths());
112
123
  if (!pageOrder.length) return;
113
124
  bindPageResizeBridge();
114
- if (options?.rpx) setupRpx(options.rpx);
115
125
  if (options?.navigationBar) setNavigationBarMetrics(options.navigationBar);
116
126
  if (options?.form) setButtonFormConfig(options.form);
117
127
  if (!pageStack.entries.length) {
@@ -254,6 +264,5 @@ function getEnterOptionsSync() {
254
264
  return appLifecycle.getEnterOptions();
255
265
  }
256
266
 
257
- //#endregion
258
267
  export { getAppInstance, getCurrentPageInstance, getCurrentPagesInternal, getEnterOptionsSync, getLaunchOptionsSync, initializePageRoutes, navigateBack, navigateTo, offAppHide, offAppShow, onAppHide, onAppShow, reLaunch, redirectTo, registerApp, registerComponent, registerPage, switchTab };
259
268
  //# sourceMappingURL=routeRuntime.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"routeRuntime.mjs","names":[],"sources":["../../../src/runtime/polyfill/routeRuntime.ts"],"sourcesContent":["import type { WebTabBarConfig } from '../../shared/tabBar'\nimport type { ButtonFormConfig } from '../button'\nimport type { ComponentPublicInstance } from '../component'\nimport type { NavigationBarMetrics } from '../navigationBar'\nimport type { WebResourceHintsConfig, WebSeoConfig } from '../seo'\nimport type { WebViewportConfig } from '../viewport'\nimport type { WebRouteHistoryState, WebRouteTarget, WebRoutingConfig } from './routeRuntime/history'\nimport type { AppHideCallback, AppRuntime, AppShowCallback, ComponentRawOptions, ComponentRecord, NavigateBackOptions, PageRawOptions, PageRecord, RegisterMeta, RouteOptions } from './routeRuntime/options'\nimport { slugify } from '../../shared/slugify'\nimport {\n configureTabBar,\n getTabBarPagePaths,\n syncTabBarRoute,\n} from '../appShell/tabBar'\nimport { setAppStyle } from '../appStyle'\nimport { setButtonFormConfig } from '../button'\nimport { defineComponent } from '../component'\nimport { setRuntimeExecutionMode } from '../execution'\nimport { ensureNativeComponentsDefined } from '../nativeComponents'\nimport { ensureNavigationBarDefined, setNavigationBarMetrics } from '../navigationBar'\nimport { setupRpx } from '../rpx'\nimport { configureWebSeo, setupWebResourceHints, syncWebDocumentHead } from '../seo'\nimport { setupWebViewport } from '../viewport'\nimport { setRuntimeWarningOptions } from '../warning'\nimport { resolveCurrentPages } from './appState'\nimport { AppLifecycleRuntime } from './routeRuntime/appLifecycle'\nimport { getEntryWebviewId } from './routeRuntime/events'\nimport {\n configureWebRouting,\n getWebHistoryStack,\n readWebRouteTarget,\n syncWebRouting,\n} from './routeRuntime/history'\nimport {\n augmentPageComponentOptions,\n dispatchPageLifetimeToComponents,\n} from './routeRuntime/lifecycle'\nimport {\n normalizeComponentOptions,\n normalizePageOptions,\n} from './routeRuntime/options'\nimport { resolveRouteAction } from './routeRuntime/result'\nimport { PageStackRuntime } from './routeRuntime/stack'\nimport { parsePageUrl } from './routeRuntime/url'\n\nconst pageRegistry = new Map<string, PageRecord>()\nconst componentRegistry = new Map<string, ComponentRecord>()\nlet pageOrder: string[] = []\nlet pageResizeBridgeBound = false\n\nlet pageStack: PageStackRuntime\nconst appLifecycle = new AppLifecycleRuntime(\n () => pageStack?.entries[pageStack.entries.length - 1],\n)\npageStack = new PageStackRuntime(pageRegistry, entry => appLifecycle.ensureLaunched(entry))\n\nfunction syncCurrentWebDocument() {\n const current = pageStack.entries[pageStack.entries.length - 1]\n syncWebDocumentHead({\n route: current?.id,\n title: current ? pageRegistry.get(current.id)?.navigationBar?.title : undefined,\n })\n}\n\nfunction syncCurrentWebRoute(operation: 'push' | 'replace') {\n syncWebRouting(pageStack.entries, operation)\n syncCurrentWebDocument()\n}\n\nfunction reconcileWebRoute(target: WebRouteTarget | undefined, state: WebRouteHistoryState | undefined) {\n const currentEntries = pageStack.entries\n const historyStack = getWebHistoryStack(state)\n if (historyStack?.length) {\n if (historyStack.some(entry => !pageRegistry.has(entry.id))) {\n return\n }\n const sharedLength = Math.min(historyStack.length, currentEntries.length)\n const samePrefix = historyStack.slice(0, sharedLength).every((entry, index) => {\n const current = currentEntries[index]!\n return entry.id === current.id\n && (entry.webviewId === undefined || entry.webviewId === getEntryWebviewId(current))\n && Object.keys(entry.query).length === Object.keys(current.query).length\n && Object.entries(entry.query).every(([key, value]) => current.query[key] === value)\n })\n if (samePrefix && historyStack.length === currentEntries.length) {\n return\n }\n if (samePrefix && historyStack.length < currentEntries.length) {\n pageStack.back(currentEntries.length - historyStack.length)\n }\n else if (samePrefix && historyStack.length > currentEntries.length) {\n const added = historyStack.slice(currentEntries.length)\n if (added.length === 1) {\n pageStack.push(added[0]!.id, { ...added[0]!.query })\n }\n else {\n pageStack.forward(added)\n }\n }\n else {\n const last = historyStack[historyStack.length - 1]!\n if (getTabBarPagePaths().has(last.id)) {\n pageStack.switchTab(last.id, { ...last.query })\n }\n else {\n pageStack.relaunch(last.id, { ...last.query })\n }\n }\n syncWebRouting(pageStack.entries, 'replace')\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebDocument()\n return\n }\n if (target && pageRegistry.has(target.id)) {\n const current = currentEntries[currentEntries.length - 1]\n if (current?.id === target.id\n && Object.keys(current.query).length === Object.keys(target.query).length\n && Object.entries(target.query).every(([key, value]) => current.query[key] === value)) {\n return\n }\n if (getTabBarPagePaths().has(target.id)) {\n pageStack.switchTab(target.id, { ...target.query })\n }\n else {\n pageStack.relaunch(target.id, { ...target.query })\n }\n syncWebRouting(pageStack.entries, 'replace')\n syncTabBarRoute(target.id)\n syncCurrentWebDocument()\n }\n}\n\nfunction performSwitchTab(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const previousLength = pageStack.entries.length\n const previousEntry = pageStack.entries[previousLength - 1]\n const succeeded = pageStack.switchTab(id, query)\n if (succeeded && (pageStack.entries.length !== previousLength || pageStack.entries.at(-1) !== previousEntry)) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('switchTab', options, succeeded, 'not a tabBar page')\n}\n\nfunction bindPageResizeBridge() {\n if (pageResizeBridgeBound || typeof window === 'undefined') {\n return\n }\n if (typeof window.addEventListener !== 'function') {\n return\n }\n pageResizeBridgeBound = true\n window.addEventListener('resize', () => {\n const pages = resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n const current = pages[pages.length - 1]\n if (!current) {\n return\n }\n dispatchPageLifetimeToComponents(current, 'resize')\n })\n}\n\nexport function initializePageRoutes(\n ids: string[],\n options?: {\n rpx?: { designWidth?: number, varName?: string }\n navigationBar?: NavigationBarMetrics\n form?: ButtonFormConfig\n tabBar?: WebTabBarConfig\n runtime?: {\n executionMode?: 'compat' | 'safe' | 'strict'\n warnings?: {\n level?: 'off' | 'warn' | 'error'\n dedupe?: boolean\n }\n viewport?: WebViewportConfig\n routing?: WebRoutingConfig\n seo?: WebSeoConfig\n resourceHints?: WebResourceHintsConfig\n }\n },\n) {\n setRuntimeExecutionMode(options?.runtime?.executionMode)\n setRuntimeWarningOptions(options?.runtime?.warnings)\n setupWebViewport(options?.runtime?.viewport)\n configureWebSeo(options?.runtime?.seo)\n setupWebResourceHints(options?.runtime?.resourceHints)\n configureWebRouting(options?.runtime?.routing, ids, reconcileWebRoute)\n appLifecycle.bindVisibility()\n ensureNativeComponentsDefined()\n pageOrder = Array.from(new Set(ids))\n configureTabBar(options?.tabBar, url => performSwitchTab({ url }))\n pageStack.configureTabPages(getTabBarPagePaths())\n if (!pageOrder.length) {\n return\n }\n bindPageResizeBridge()\n if (options?.rpx) {\n setupRpx(options.rpx)\n }\n if (options?.navigationBar) {\n setNavigationBarMetrics(options.navigationBar)\n }\n if (options?.form) {\n setButtonFormConfig(options.form)\n }\n if (!pageStack.entries.length) {\n const initialTarget = readWebRouteTarget(pageOrder)\n const initialId = initialTarget?.id ?? pageOrder[0]\n const initialQuery = initialTarget?.query ?? {}\n if (pageStack.push(initialId, initialQuery, 'appLaunch')) {\n syncTabBarRoute(initialId)\n syncCurrentWebRoute('replace')\n }\n }\n}\n\nexport function registerPage<T extends PageRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n ensureNavigationBarDefined()\n const tag = slugify(meta.id, 'wv-page')\n const template = meta.template ?? (() => '')\n const normalized = normalizePageOptions(options)\n const existing = pageRegistry.get(meta.id)\n if (existing) {\n existing.hooks = normalized.hooks\n existing.navigationBar = meta.navigationBar\n const component = augmentPageComponentOptions(normalized.component, existing)\n defineComponent(tag, {\n id: meta.id,\n kind: 'page',\n template,\n style: meta.style,\n component,\n })\n return options\n }\n const record: PageRecord = {\n tag,\n hooks: normalized.hooks,\n instances: new Set(),\n navigationBar: meta.navigationBar,\n }\n const component = augmentPageComponentOptions(normalized.component, record)\n defineComponent(tag, {\n id: meta.id,\n kind: 'page',\n template,\n style: meta.style,\n component,\n })\n pageRegistry.set(meta.id, record)\n return options\n}\n\nexport function getCurrentPageInstance(): ComponentPublicInstance | undefined {\n return pageStack.entries[pageStack.entries.length - 1]?.instance\n}\n\nexport function registerComponent<T extends ComponentRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n const tag = slugify(meta.id, 'wv-component')\n const template = meta.template ?? (() => '')\n const component = normalizeComponentOptions(options)\n if (componentRegistry.has(meta.id)) {\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n return options\n }\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n componentRegistry.set(meta.id, { tag })\n return options\n}\n\nexport function registerApp<T extends AppRuntime | undefined>(options: T, meta?: RegisterMeta): T {\n setAppStyle(meta?.style ?? '')\n return appLifecycle.register(options)\n}\n\nexport function offAppHide(callback?: AppHideCallback) {\n appLifecycle.offAppHide(callback)\n}\n\nexport function offAppShow(callback?: AppShowCallback) {\n appLifecycle.offAppShow(callback)\n}\n\nexport function onAppHide(callback: AppHideCallback) {\n appLifecycle.onAppHide(callback)\n}\n\nexport function onAppShow(callback: AppShowCallback) {\n appLifecycle.onAppShow(callback)\n}\n\nexport function navigateTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.push(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('navigateTo', options, succeeded)\n}\n\nexport function redirectTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.replace(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('redirectTo', options, succeeded)\n}\n\nexport function reLaunch(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.relaunch(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('reLaunch', options, succeeded)\n}\n\nexport function switchTab(options: RouteOptions) {\n return performSwitchTab(options)\n}\n\nexport function navigateBack(options?: NavigateBackOptions) {\n const succeeded = pageStack.back(options?.delta)\n if (succeeded) {\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('navigateBack', options, succeeded)\n}\n\nexport function getCurrentPagesInternal() {\n return resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n}\n\nexport function getAppInstance() {\n return appLifecycle.instance\n}\n\nexport function getLaunchOptionsSync() {\n return appLifecycle.getLaunchOptions()\n}\n\nexport function getEnterOptionsSync() {\n return appLifecycle.getEnterOptions()\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"routeRuntime.mjs","names":[],"sources":["../../../src/runtime/polyfill/routeRuntime.ts"],"sourcesContent":["import type { ResolvedStyleUnitOptions } from '../../shared/styleUnits/options'\nimport type { WebTabBarConfig } from '../../shared/tabBar'\nimport type { ButtonFormConfig } from '../button'\nimport type { ComponentPublicInstance } from '../component'\nimport type { NavigationBarMetrics } from '../navigationBar'\nimport type { WebResourceHintsConfig, WebSeoConfig } from '../seo'\nimport type { WebViewportConfig } from '../viewport'\nimport type { WebRouteHistoryState, WebRouteTarget, WebRoutingConfig } from './routeRuntime/history'\nimport type { AppHideCallback, AppRuntime, AppShowCallback, ComponentRawOptions, ComponentRecord, NavigateBackOptions, PageRawOptions, PageRecord, RegisterMeta, RouteOptions } from './routeRuntime/options'\nimport { slugify } from '../../shared/slugify'\nimport { resolveStyleUnitOptions } from '../../shared/styleUnits/options'\nimport {\n configureTabBar,\n getTabBarPagePaths,\n syncTabBarRoute,\n} from '../appShell/tabBar'\nimport { setAppStyle } from '../appStyle'\nimport { setButtonFormConfig } from '../button'\nimport { defineComponent } from '../component'\nimport { setRuntimeExecutionMode } from '../execution'\nimport { configureInlineStyleUnits } from '../inlineStyle'\nimport { ensureNativeComponentsDefined } from '../nativeComponents'\nimport { ensureNavigationBarDefined, setNavigationBarMetrics } from '../navigationBar'\nimport { setupRpx } from '../rpx'\nimport { configureWebSeo, setupWebResourceHints, syncWebDocumentHead } from '../seo'\nimport { setupWebViewport } from '../viewport'\nimport { setRuntimeWarningOptions } from '../warning'\nimport { resolveCurrentPages } from './appState'\nimport { AppLifecycleRuntime } from './routeRuntime/appLifecycle'\nimport { getEntryWebviewId } from './routeRuntime/events'\nimport {\n configureWebRouting,\n getWebHistoryStack,\n readWebRouteTarget,\n syncWebRouting,\n} from './routeRuntime/history'\nimport {\n augmentPageComponentOptions,\n dispatchPageLifetimeToComponents,\n} from './routeRuntime/lifecycle'\nimport {\n normalizeComponentOptions,\n normalizePageOptions,\n} from './routeRuntime/options'\nimport { resolveRouteAction } from './routeRuntime/result'\nimport { PageStackRuntime } from './routeRuntime/stack'\nimport { parsePageUrl } from './routeRuntime/url'\n\nconst pageRegistry = new Map<string, PageRecord>()\nconst componentRegistry = new Map<string, ComponentRecord>()\nlet pageOrder: string[] = []\nlet pageResizeBridgeBound = false\n\nlet pageStack: PageStackRuntime\nconst appLifecycle = new AppLifecycleRuntime(\n () => pageStack?.entries[pageStack.entries.length - 1],\n)\npageStack = new PageStackRuntime(pageRegistry, entry => appLifecycle.ensureLaunched(entry))\n\nfunction syncCurrentWebDocument() {\n const current = pageStack.entries[pageStack.entries.length - 1]\n syncWebDocumentHead({\n route: current?.id,\n title: current ? pageRegistry.get(current.id)?.navigationBar?.title : undefined,\n })\n}\n\nfunction syncCurrentWebRoute(operation: 'push' | 'replace') {\n syncWebRouting(pageStack.entries, operation)\n syncCurrentWebDocument()\n}\n\nfunction reconcileWebRoute(target: WebRouteTarget | undefined, state: WebRouteHistoryState | undefined) {\n const currentEntries = pageStack.entries\n const historyStack = getWebHistoryStack(state)\n if (historyStack?.length) {\n if (historyStack.some(entry => !pageRegistry.has(entry.id))) {\n return\n }\n const sharedLength = Math.min(historyStack.length, currentEntries.length)\n const samePrefix = historyStack.slice(0, sharedLength).every((entry, index) => {\n const current = currentEntries[index]!\n return entry.id === current.id\n && (entry.webviewId === undefined || entry.webviewId === getEntryWebviewId(current))\n && Object.keys(entry.query).length === Object.keys(current.query).length\n && Object.entries(entry.query).every(([key, value]) => current.query[key] === value)\n })\n if (samePrefix && historyStack.length === currentEntries.length) {\n return\n }\n if (samePrefix && historyStack.length < currentEntries.length) {\n pageStack.back(currentEntries.length - historyStack.length)\n }\n else if (samePrefix && historyStack.length > currentEntries.length) {\n const added = historyStack.slice(currentEntries.length)\n if (added.length === 1) {\n pageStack.push(added[0]!.id, { ...added[0]!.query })\n }\n else {\n pageStack.forward(added)\n }\n }\n else {\n const last = historyStack[historyStack.length - 1]!\n if (getTabBarPagePaths().has(last.id)) {\n pageStack.switchTab(last.id, { ...last.query })\n }\n else {\n pageStack.relaunch(last.id, { ...last.query })\n }\n }\n syncWebRouting(pageStack.entries, 'replace')\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebDocument()\n return\n }\n if (target && pageRegistry.has(target.id)) {\n const current = currentEntries[currentEntries.length - 1]\n if (current?.id === target.id\n && Object.keys(current.query).length === Object.keys(target.query).length\n && Object.entries(target.query).every(([key, value]) => current.query[key] === value)) {\n return\n }\n if (getTabBarPagePaths().has(target.id)) {\n pageStack.switchTab(target.id, { ...target.query })\n }\n else {\n pageStack.relaunch(target.id, { ...target.query })\n }\n syncWebRouting(pageStack.entries, 'replace')\n syncTabBarRoute(target.id)\n syncCurrentWebDocument()\n }\n}\n\nfunction performSwitchTab(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const previousLength = pageStack.entries.length\n const previousEntry = pageStack.entries[previousLength - 1]\n const succeeded = pageStack.switchTab(id, query)\n if (succeeded && (pageStack.entries.length !== previousLength || pageStack.entries.at(-1) !== previousEntry)) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('switchTab', options, succeeded, 'not a tabBar page')\n}\n\nfunction bindPageResizeBridge() {\n if (pageResizeBridgeBound || typeof window === 'undefined') {\n return\n }\n if (typeof window.addEventListener !== 'function') {\n return\n }\n pageResizeBridgeBound = true\n window.addEventListener('resize', () => {\n const pages = resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n const current = pages[pages.length - 1]\n if (!current) {\n return\n }\n dispatchPageLifetimeToComponents(current, 'resize')\n })\n}\n\nexport function initializePageRoutes(\n ids: string[],\n options?: {\n rpx?: { designWidth?: number, varName?: string }\n styleUnits?: ResolvedStyleUnitOptions\n navigationBar?: NavigationBarMetrics\n form?: ButtonFormConfig\n tabBar?: WebTabBarConfig\n runtime?: {\n executionMode?: 'compat' | 'safe' | 'strict'\n warnings?: {\n level?: 'off' | 'warn' | 'error'\n dedupe?: boolean\n }\n viewport?: WebViewportConfig\n routing?: WebRoutingConfig\n seo?: WebSeoConfig\n resourceHints?: WebResourceHintsConfig\n }\n },\n) {\n const styleUnits = options?.styleUnits ?? resolveStyleUnitOptions({\n designWidth: options?.rpx?.designWidth,\n rpxVar: options?.rpx?.varName,\n })\n configureInlineStyleUnits(styleUnits)\n setRuntimeExecutionMode(options?.runtime?.executionMode)\n setRuntimeWarningOptions(options?.runtime?.warnings)\n setupWebViewport(options?.runtime?.viewport)\n // 空路由也可供旧模板初始化;变量写入与内联转换共享同一优先级和重置语义。\n setupRpx(options?.styleUnits?.useVariable\n ? { designWidth: styleUnits.designWidth, varName: styleUnits.rpxVar }\n : options?.rpx)\n configureWebSeo(options?.runtime?.seo)\n setupWebResourceHints(options?.runtime?.resourceHints)\n configureWebRouting(options?.runtime?.routing, ids, reconcileWebRoute)\n appLifecycle.bindVisibility()\n ensureNativeComponentsDefined()\n pageOrder = Array.from(new Set(ids))\n configureTabBar(options?.tabBar, url => performSwitchTab({ url }))\n pageStack.configureTabPages(getTabBarPagePaths())\n if (!pageOrder.length) {\n return\n }\n bindPageResizeBridge()\n if (options?.navigationBar) {\n setNavigationBarMetrics(options.navigationBar)\n }\n if (options?.form) {\n setButtonFormConfig(options.form)\n }\n if (!pageStack.entries.length) {\n const initialTarget = readWebRouteTarget(pageOrder)\n const initialId = initialTarget?.id ?? pageOrder[0]\n const initialQuery = initialTarget?.query ?? {}\n if (pageStack.push(initialId, initialQuery, 'appLaunch')) {\n syncTabBarRoute(initialId)\n syncCurrentWebRoute('replace')\n }\n }\n}\n\nexport function registerPage<T extends PageRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n ensureNavigationBarDefined()\n const tag = slugify(meta.id, 'wv-page')\n const template = meta.template ?? (() => '')\n const normalized = normalizePageOptions(options)\n const existing = pageRegistry.get(meta.id)\n if (existing) {\n existing.hooks = normalized.hooks\n existing.navigationBar = meta.navigationBar\n const component = augmentPageComponentOptions(normalized.component, existing)\n defineComponent(tag, {\n id: meta.id,\n kind: 'page',\n template,\n style: meta.style,\n component,\n })\n return options\n }\n const record: PageRecord = {\n tag,\n hooks: normalized.hooks,\n instances: new Set(),\n navigationBar: meta.navigationBar,\n }\n const component = augmentPageComponentOptions(normalized.component, record)\n defineComponent(tag, {\n id: meta.id,\n kind: 'page',\n template,\n style: meta.style,\n component,\n })\n pageRegistry.set(meta.id, record)\n return options\n}\n\nexport function getCurrentPageInstance(): ComponentPublicInstance | undefined {\n return pageStack.entries[pageStack.entries.length - 1]?.instance\n}\n\nexport function registerComponent<T extends ComponentRawOptions | undefined>(options: T, meta: RegisterMeta): T {\n ensureNativeComponentsDefined()\n const tag = slugify(meta.id, 'wv-component')\n const template = meta.template ?? (() => '')\n const component = normalizeComponentOptions(options)\n if (componentRegistry.has(meta.id)) {\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n return options\n }\n defineComponent(tag, {\n id: meta.id,\n template,\n style: meta.style,\n component,\n })\n componentRegistry.set(meta.id, { tag })\n return options\n}\n\nexport function registerApp<T extends AppRuntime | undefined>(options: T, meta?: RegisterMeta): T {\n setAppStyle(meta?.style ?? '')\n return appLifecycle.register(options)\n}\n\nexport function offAppHide(callback?: AppHideCallback) {\n appLifecycle.offAppHide(callback)\n}\n\nexport function offAppShow(callback?: AppShowCallback) {\n appLifecycle.offAppShow(callback)\n}\n\nexport function onAppHide(callback: AppHideCallback) {\n appLifecycle.onAppHide(callback)\n}\n\nexport function onAppShow(callback: AppShowCallback) {\n appLifecycle.onAppShow(callback)\n}\n\nexport function navigateTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.push(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('push')\n }\n return resolveRouteAction('navigateTo', options, succeeded)\n}\n\nexport function redirectTo(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.replace(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('redirectTo', options, succeeded)\n}\n\nexport function reLaunch(options: RouteOptions) {\n const { id, query } = parsePageUrl(options?.url ?? '')\n const succeeded = pageStack.relaunch(id, query)\n if (succeeded) {\n syncTabBarRoute(id)\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('reLaunch', options, succeeded)\n}\n\nexport function switchTab(options: RouteOptions) {\n return performSwitchTab(options)\n}\n\nexport function navigateBack(options?: NavigateBackOptions) {\n const succeeded = pageStack.back(options?.delta)\n if (succeeded) {\n syncTabBarRoute(pageStack.entries[pageStack.entries.length - 1]?.id ?? '')\n syncCurrentWebRoute('replace')\n }\n return resolveRouteAction('navigateBack', options, succeeded)\n}\n\nexport function getCurrentPagesInternal() {\n return resolveCurrentPages<ComponentPublicInstance>(pageStack.entries)\n}\n\nexport function getAppInstance() {\n return appLifecycle.instance\n}\n\nexport function getLaunchOptionsSync() {\n return appLifecycle.getLaunchOptions()\n}\n\nexport function getEnterOptionsSync() {\n return appLifecycle.getEnterOptions()\n}\n"],"mappings":"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"}