@weapp-vite/web 1.3.37 → 1.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 (321) hide show
  1. package/README.md +144 -5
  2. package/dist/_virtual/_rolldown/runtime.mjs +19 -1
  3. package/dist/compiler/wxml/attributes.mjs +1 -1
  4. package/dist/compiler/wxml/attributes.mjs.map +1 -1
  5. package/dist/compiler/wxml/compile.mjs +6 -3
  6. package/dist/compiler/wxml/compile.mjs.map +1 -1
  7. package/dist/compiler/wxml/interpolation.mjs +1 -2
  8. package/dist/compiler/wxml/interpolation.mjs.map +1 -1
  9. package/dist/compiler/wxml/navigation.mjs +5 -7
  10. package/dist/compiler/wxml/navigation.mjs.map +1 -1
  11. package/dist/compiler/wxml/parser.mjs +5 -5
  12. package/dist/compiler/wxml/parser.mjs.map +1 -1
  13. package/dist/compiler/wxml/renderer.mjs +13 -12
  14. package/dist/compiler/wxml/renderer.mjs.map +1 -1
  15. package/dist/compiler/wxml/specialNodes.mjs +6 -1
  16. package/dist/compiler/wxml/specialNodes.mjs.map +1 -1
  17. package/dist/compiler/wxml/types.d.mts +12 -0
  18. package/dist/compiler/wxs.mjs +5 -5
  19. package/dist/compiler/wxs.mjs.map +1 -1
  20. package/dist/css/wxss.d.mts +1 -0
  21. package/dist/css/wxss.mjs +110 -9
  22. package/dist/css/wxss.mjs.map +1 -1
  23. package/dist/index.d.mts +29 -6
  24. package/dist/index.mjs +197 -4
  25. package/dist/index.mjs.map +1 -0
  26. package/dist/plugin/assets.d.mts +7 -0
  27. package/dist/plugin/assets.mjs +122 -0
  28. package/dist/plugin/assets.mjs.map +1 -0
  29. package/dist/plugin/constants.mjs +10 -1
  30. package/dist/plugin/constants.mjs.map +1 -1
  31. package/dist/plugin/dependencyScan.mjs +41 -0
  32. package/dist/plugin/dependencyScan.mjs.map +1 -0
  33. package/dist/plugin/entry.mjs +55 -6
  34. package/dist/plugin/entry.mjs.map +1 -1
  35. package/dist/plugin/files.mjs +1 -1
  36. package/dist/plugin/files.mjs.map +1 -1
  37. package/dist/plugin/index.d.mts +37 -3
  38. package/dist/plugin/index.mjs +240 -73
  39. package/dist/plugin/index.mjs.map +1 -1
  40. package/dist/plugin/layout.mjs +24 -0
  41. package/dist/plugin/layout.mjs.map +1 -0
  42. package/dist/plugin/path.mjs +4 -1
  43. package/dist/plugin/path.mjs.map +1 -1
  44. package/dist/plugin/register.mjs +45 -33
  45. package/dist/plugin/register.mjs.map +1 -1
  46. package/dist/plugin/scan.mjs +206 -94
  47. package/dist/plugin/scan.mjs.map +1 -1
  48. package/dist/plugin/scanSfc.mjs +65 -0
  49. package/dist/plugin/scanSfc.mjs.map +1 -0
  50. package/dist/plugin/state.mjs +3 -2
  51. package/dist/plugin/state.mjs.map +1 -1
  52. package/dist/plugin/styleModule.mjs +52 -0
  53. package/dist/plugin/styleModule.mjs.map +1 -0
  54. package/dist/plugin/types.d.mts +37 -1
  55. package/dist/plugin/vueSfc.mjs +149 -0
  56. package/dist/plugin/vueSfc.mjs.map +1 -0
  57. package/dist/runtime/appShell/container.mjs +25 -0
  58. package/dist/runtime/appShell/container.mjs.map +1 -0
  59. package/dist/runtime/appShell/tabBar/index.mjs +192 -0
  60. package/dist/runtime/appShell/tabBar/index.mjs.map +1 -0
  61. package/dist/runtime/appShell/tabBar/style.mjs +127 -0
  62. package/dist/runtime/appShell/tabBar/style.mjs.map +1 -0
  63. package/dist/runtime/button/helpers.mjs +1 -58
  64. package/dist/runtime/button/helpers.mjs.map +1 -1
  65. package/dist/runtime/button/index.d.mts +4 -5
  66. package/dist/runtime/button/index.mjs +6 -28
  67. package/dist/runtime/button/index.mjs.map +1 -1
  68. package/dist/runtime/button/style.mjs +53 -28
  69. package/dist/runtime/button/style.mjs.map +1 -1
  70. package/dist/runtime/component/behavior.mjs +26 -2
  71. package/dist/runtime/component/behavior.mjs.map +1 -1
  72. package/dist/runtime/component/element.mjs +107 -31
  73. package/dist/runtime/component/element.mjs.map +1 -1
  74. package/dist/runtime/component/observers.mjs +36 -0
  75. package/dist/runtime/component/observers.mjs.map +1 -0
  76. package/dist/runtime/component/publicInstance.mjs +48 -0
  77. package/dist/runtime/component/publicInstance.mjs.map +1 -0
  78. package/dist/runtime/component/relations.mjs +35 -0
  79. package/dist/runtime/component/relations.mjs.map +1 -0
  80. package/dist/runtime/component/slots.mjs +24 -0
  81. package/dist/runtime/component/slots.mjs.map +1 -0
  82. package/dist/runtime/component/state.mjs +13 -3
  83. package/dist/runtime/component/state.mjs.map +1 -1
  84. package/dist/runtime/component/types.d.mts +29 -4
  85. package/dist/runtime/component/virtualHost.mjs +83 -0
  86. package/dist/runtime/component/virtualHost.mjs.map +1 -0
  87. package/dist/runtime/host/index.d.mts +13 -0
  88. package/dist/runtime/host/index.mjs +47 -0
  89. package/dist/runtime/host/index.mjs.map +1 -0
  90. package/dist/runtime/host/types.d.mts +28 -0
  91. package/dist/runtime/hostGlobals.d.mts +9 -0
  92. package/dist/runtime/hostGlobals.mjs +39 -0
  93. package/dist/runtime/hostGlobals.mjs.map +1 -0
  94. package/dist/runtime/index.d.mts +21 -3
  95. package/dist/runtime/index.mjs +26 -4
  96. package/dist/runtime/index.mjs.map +1 -0
  97. package/dist/runtime/legacyTemplate/dom.mjs +3 -3
  98. package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
  99. package/dist/runtime/legacyTemplate/expression.mjs +9 -9
  100. package/dist/runtime/legacyTemplate/expression.mjs.map +1 -1
  101. package/dist/runtime/legacyTemplate/index.mjs +6 -6
  102. package/dist/runtime/legacyTemplate/index.mjs.map +1 -1
  103. package/dist/runtime/nativeComponents/canvas/index.mjs +53 -0
  104. package/dist/runtime/nativeComponents/canvas/index.mjs.map +1 -0
  105. package/dist/runtime/nativeComponents/checkbox.mjs +137 -0
  106. package/dist/runtime/nativeComponents/checkbox.mjs.map +1 -0
  107. package/dist/runtime/nativeComponents/cover/index.mjs +23 -0
  108. package/dist/runtime/nativeComponents/cover/index.mjs.map +1 -0
  109. package/dist/runtime/nativeComponents/form.d.mts +7 -0
  110. package/dist/runtime/nativeComponents/form.mjs +50 -0
  111. package/dist/runtime/nativeComponents/form.mjs.map +1 -0
  112. package/dist/runtime/nativeComponents/formControl.mjs +61 -0
  113. package/dist/runtime/nativeComponents/formControl.mjs.map +1 -0
  114. package/dist/runtime/nativeComponents/helpers.mjs +25 -0
  115. package/dist/runtime/nativeComponents/helpers.mjs.map +1 -0
  116. package/dist/runtime/nativeComponents/icon/helpers.mjs +42 -0
  117. package/dist/runtime/nativeComponents/icon/helpers.mjs.map +1 -0
  118. package/dist/runtime/nativeComponents/icon/index.mjs +45 -0
  119. package/dist/runtime/nativeComponents/icon/index.mjs.map +1 -0
  120. package/dist/runtime/nativeComponents/icon/style.mjs +176 -0
  121. package/dist/runtime/nativeComponents/icon/style.mjs.map +1 -0
  122. package/dist/runtime/nativeComponents/image.d.mts +8 -0
  123. package/dist/runtime/nativeComponents/image.mjs +121 -0
  124. package/dist/runtime/nativeComponents/image.mjs.map +1 -0
  125. package/dist/runtime/nativeComponents/index.d.mts +11 -0
  126. package/dist/runtime/nativeComponents/index.mjs +83 -0
  127. package/dist/runtime/nativeComponents/index.mjs.map +1 -0
  128. package/dist/runtime/nativeComponents/input.d.mts +8 -0
  129. package/dist/runtime/nativeComponents/input.mjs +131 -0
  130. package/dist/runtime/nativeComponents/input.mjs.map +1 -0
  131. package/dist/runtime/nativeComponents/label.mjs +36 -0
  132. package/dist/runtime/nativeComponents/label.mjs.map +1 -0
  133. package/dist/runtime/nativeComponents/mediaRegistry.mjs +47 -0
  134. package/dist/runtime/nativeComponents/mediaRegistry.mjs.map +1 -0
  135. package/dist/runtime/nativeComponents/movable/helpers.mjs +23 -0
  136. package/dist/runtime/nativeComponents/movable/helpers.mjs.map +1 -0
  137. package/dist/runtime/nativeComponents/movable/index.mjs +117 -0
  138. package/dist/runtime/nativeComponents/movable/index.mjs.map +1 -0
  139. package/dist/runtime/nativeComponents/navigator.mjs +200 -0
  140. package/dist/runtime/nativeComponents/navigator.mjs.map +1 -0
  141. package/dist/runtime/nativeComponents/picker/editors.mjs +74 -0
  142. package/dist/runtime/nativeComponents/picker/editors.mjs.map +1 -0
  143. package/dist/runtime/nativeComponents/picker/helpers.mjs +57 -0
  144. package/dist/runtime/nativeComponents/picker/helpers.mjs.map +1 -0
  145. package/dist/runtime/nativeComponents/picker/index.mjs +210 -0
  146. package/dist/runtime/nativeComponents/picker/index.mjs.map +1 -0
  147. package/dist/runtime/nativeComponents/picker/style.mjs +71 -0
  148. package/dist/runtime/nativeComponents/picker/style.mjs.map +1 -0
  149. package/dist/runtime/nativeComponents/pickerView/column.mjs +134 -0
  150. package/dist/runtime/nativeComponents/pickerView/column.mjs.map +1 -0
  151. package/dist/runtime/nativeComponents/pickerView/helpers.mjs +17 -0
  152. package/dist/runtime/nativeComponents/pickerView/helpers.mjs.map +1 -0
  153. package/dist/runtime/nativeComponents/pickerView/index.mjs +128 -0
  154. package/dist/runtime/nativeComponents/pickerView/index.mjs.map +1 -0
  155. package/dist/runtime/nativeComponents/pickerView/style.mjs +58 -0
  156. package/dist/runtime/nativeComponents/pickerView/style.mjs.map +1 -0
  157. package/dist/runtime/nativeComponents/primitives.mjs +16 -0
  158. package/dist/runtime/nativeComponents/primitives.mjs.map +1 -0
  159. package/dist/runtime/nativeComponents/progress/helpers.mjs +29 -0
  160. package/dist/runtime/nativeComponents/progress/helpers.mjs.map +1 -0
  161. package/dist/runtime/nativeComponents/progress/index.mjs +130 -0
  162. package/dist/runtime/nativeComponents/progress/index.mjs.map +1 -0
  163. package/dist/runtime/nativeComponents/progress/style.mjs +40 -0
  164. package/dist/runtime/nativeComponents/progress/style.mjs.map +1 -0
  165. package/dist/runtime/nativeComponents/radio.mjs +147 -0
  166. package/dist/runtime/nativeComponents/radio.mjs.map +1 -0
  167. package/dist/runtime/nativeComponents/richText/helpers.mjs +230 -0
  168. package/dist/runtime/nativeComponents/richText/helpers.mjs.map +1 -0
  169. package/dist/runtime/nativeComponents/richText/index.mjs +74 -0
  170. package/dist/runtime/nativeComponents/richText/index.mjs.map +1 -0
  171. package/dist/runtime/nativeComponents/scrollView.d.mts +15 -0
  172. package/dist/runtime/nativeComponents/scrollView.mjs +79 -0
  173. package/dist/runtime/nativeComponents/scrollView.mjs.map +1 -0
  174. package/dist/runtime/nativeComponents/slider/helpers.mjs +28 -0
  175. package/dist/runtime/nativeComponents/slider/helpers.mjs.map +1 -0
  176. package/dist/runtime/nativeComponents/slider/index.mjs +120 -0
  177. package/dist/runtime/nativeComponents/slider/index.mjs.map +1 -0
  178. package/dist/runtime/nativeComponents/slider/style.mjs +60 -0
  179. package/dist/runtime/nativeComponents/slider/style.mjs.map +1 -0
  180. package/dist/runtime/nativeComponents/style.mjs +41 -0
  181. package/dist/runtime/nativeComponents/style.mjs.map +1 -0
  182. package/dist/runtime/nativeComponents/swiper/helpers.mjs +52 -0
  183. package/dist/runtime/nativeComponents/swiper/helpers.mjs.map +1 -0
  184. package/dist/runtime/nativeComponents/swiper/index.mjs +235 -0
  185. package/dist/runtime/nativeComponents/swiper/index.mjs.map +1 -0
  186. package/dist/runtime/nativeComponents/swiper/item.mjs +14 -0
  187. package/dist/runtime/nativeComponents/swiper/item.mjs.map +1 -0
  188. package/dist/runtime/nativeComponents/swiper/style.mjs +20 -0
  189. package/dist/runtime/nativeComponents/swiper/style.mjs.map +1 -0
  190. package/dist/runtime/nativeComponents/switch.d.mts +7 -0
  191. package/dist/runtime/nativeComponents/switch.mjs +132 -0
  192. package/dist/runtime/nativeComponents/switch.mjs.map +1 -0
  193. package/dist/runtime/nativeComponents/textarea.d.mts +9 -0
  194. package/dist/runtime/nativeComponents/textarea.mjs +144 -0
  195. package/dist/runtime/nativeComponents/textarea.mjs.map +1 -0
  196. package/dist/runtime/nativeComponents/video/helpers.d.mts +12 -0
  197. package/dist/runtime/nativeComponents/video/helpers.mjs +21 -0
  198. package/dist/runtime/nativeComponents/video/helpers.mjs.map +1 -0
  199. package/dist/runtime/nativeComponents/video/index.mjs +124 -0
  200. package/dist/runtime/nativeComponents/video/index.mjs.map +1 -0
  201. package/dist/runtime/nativeComponents/video/style.mjs +14 -0
  202. package/dist/runtime/nativeComponents/video/style.mjs.map +1 -0
  203. package/dist/runtime/navigationBar/index.mjs +1 -3
  204. package/dist/runtime/navigationBar/index.mjs.map +1 -1
  205. package/dist/runtime/pageLayout.d.mts +9 -0
  206. package/dist/runtime/pageLayout.mjs +16 -0
  207. package/dist/runtime/pageLayout.mjs.map +1 -0
  208. package/dist/runtime/polyfill/animation.mjs +120 -0
  209. package/dist/runtime/polyfill/animation.mjs.map +1 -0
  210. package/dist/runtime/polyfill/appState.mjs +1 -1
  211. package/dist/runtime/polyfill/appState.mjs.map +1 -1
  212. package/dist/runtime/polyfill/async.d.mts +7 -0
  213. package/dist/runtime/polyfill/async.mjs.map +1 -1
  214. package/dist/runtime/polyfill/canvasContext.mjs +41 -0
  215. package/dist/runtime/polyfill/canvasContext.mjs.map +1 -1
  216. package/dist/runtime/polyfill/device.mjs +1 -1
  217. package/dist/runtime/polyfill/device.mjs.map +1 -1
  218. package/dist/runtime/polyfill/deviceAuthSystemApi.mjs +8 -2
  219. package/dist/runtime/polyfill/deviceAuthSystemApi.mjs.map +1 -1
  220. package/dist/runtime/polyfill/eventBus.mjs +56 -0
  221. package/dist/runtime/polyfill/eventBus.mjs.map +1 -0
  222. package/dist/runtime/polyfill/fileSystemManager.mjs +5 -2
  223. package/dist/runtime/polyfill/fileSystemManager.mjs.map +1 -1
  224. package/dist/runtime/polyfill/files.mjs +10 -10
  225. package/dist/runtime/polyfill/files.mjs.map +1 -1
  226. package/dist/runtime/polyfill/font.mjs +32 -0
  227. package/dist/runtime/polyfill/font.mjs.map +1 -0
  228. package/dist/runtime/polyfill/index.d.mts +2 -2
  229. package/dist/runtime/polyfill/index.mjs +49 -45
  230. package/dist/runtime/polyfill/index.mjs.map +1 -1
  231. package/dist/runtime/polyfill/interaction.mjs +7 -6
  232. package/dist/runtime/polyfill/interaction.mjs.map +1 -1
  233. package/dist/runtime/polyfill/interactionApi.mjs +3 -2
  234. package/dist/runtime/polyfill/interactionApi.mjs.map +1 -1
  235. package/dist/runtime/polyfill/intersectionObserver.mjs +106 -0
  236. package/dist/runtime/polyfill/intersectionObserver.mjs.map +1 -0
  237. package/dist/runtime/polyfill/locale.mjs +14 -0
  238. package/dist/runtime/polyfill/locale.mjs.map +1 -0
  239. package/dist/runtime/polyfill/locationApi.mjs +7 -4
  240. package/dist/runtime/polyfill/locationApi.mjs.map +1 -1
  241. package/dist/runtime/polyfill/mediaActions.mjs +2 -2
  242. package/dist/runtime/polyfill/mediaActions.mjs.map +1 -1
  243. package/dist/runtime/polyfill/mediaApi/file.mjs +1 -1
  244. package/dist/runtime/polyfill/mediaApi/info.mjs +6 -4
  245. package/dist/runtime/polyfill/mediaApi/info.mjs.map +1 -1
  246. package/dist/runtime/polyfill/menuApi.mjs +38 -4
  247. package/dist/runtime/polyfill/menuApi.mjs.map +1 -1
  248. package/dist/runtime/polyfill/navigationBarRuntime.mjs +6 -1
  249. package/dist/runtime/polyfill/navigationBarRuntime.mjs.map +1 -1
  250. package/dist/runtime/polyfill/network/request.mjs +2 -2
  251. package/dist/runtime/polyfill/network/request.mjs.map +1 -1
  252. package/dist/runtime/polyfill/platformApi.mjs +1 -1
  253. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs +88 -0
  254. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs.map +1 -0
  255. package/dist/runtime/polyfill/routeRuntime/dom.mjs +44 -15
  256. package/dist/runtime/polyfill/routeRuntime/dom.mjs.map +1 -1
  257. package/dist/runtime/polyfill/routeRuntime/history.d.mts +30 -0
  258. package/dist/runtime/polyfill/routeRuntime/history.mjs +148 -0
  259. package/dist/runtime/polyfill/routeRuntime/history.mjs.map +1 -0
  260. package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs +39 -8
  261. package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs.map +1 -1
  262. package/dist/runtime/polyfill/routeRuntime/options.d.mts +11 -1
  263. package/dist/runtime/polyfill/routeRuntime/options.mjs +0 -1
  264. package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -1
  265. package/dist/runtime/polyfill/routeRuntime/result.mjs +12 -0
  266. package/dist/runtime/polyfill/routeRuntime/result.mjs.map +1 -0
  267. package/dist/runtime/polyfill/routeRuntime/scroll.mjs +39 -0
  268. package/dist/runtime/polyfill/routeRuntime/scroll.mjs.map +1 -0
  269. package/dist/runtime/polyfill/routeRuntime/stack.mjs +122 -0
  270. package/dist/runtime/polyfill/routeRuntime/stack.mjs.map +1 -0
  271. package/dist/runtime/polyfill/routeRuntime.d.mts +26 -17
  272. package/dist/runtime/polyfill/routeRuntime.mjs +121 -96
  273. package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
  274. package/dist/runtime/polyfill/runtimeDataApi.mjs +8 -3
  275. package/dist/runtime/polyfill/runtimeDataApi.mjs.map +1 -1
  276. package/dist/runtime/polyfill/runtimeOps.mjs +10 -6
  277. package/dist/runtime/polyfill/runtimeOps.mjs.map +1 -1
  278. package/dist/runtime/polyfill/selectorQuery.mjs +70 -14
  279. package/dist/runtime/polyfill/selectorQuery.mjs.map +1 -1
  280. package/dist/runtime/polyfill/storage.mjs +5 -2
  281. package/dist/runtime/polyfill/storage.mjs.map +1 -1
  282. package/dist/runtime/polyfill/system.mjs +30 -3
  283. package/dist/runtime/polyfill/system.mjs.map +1 -1
  284. package/dist/runtime/polyfill/types/locationRuntime.d.mts +1 -4
  285. package/dist/runtime/polyfill/types/platformRuntime.d.mts +9 -0
  286. package/dist/runtime/polyfill/types/systemAuth.d.mts +20 -9
  287. package/dist/runtime/polyfill/types/tabBarRuntime.d.mts +25 -0
  288. package/dist/runtime/polyfill/ui.mjs +2 -6
  289. package/dist/runtime/polyfill/ui.mjs.map +1 -1
  290. package/dist/runtime/polyfill/uiMediaApi.d.mts +11 -10
  291. package/dist/runtime/polyfill/uiMediaApi.mjs +26 -2
  292. package/dist/runtime/polyfill/uiMediaApi.mjs.map +1 -1
  293. package/dist/runtime/polyfill/videoContext.mjs +4 -0
  294. package/dist/runtime/polyfill/videoContext.mjs.map +1 -1
  295. package/dist/runtime/polyfill/vkSession.mjs +4 -14
  296. package/dist/runtime/polyfill/vkSession.mjs.map +1 -1
  297. package/dist/runtime/polyfill.d.mts +2 -2
  298. package/dist/runtime/renderContext.mjs +1 -1
  299. package/dist/runtime/renderContext.mjs.map +1 -1
  300. package/dist/runtime/rpx.mjs +17 -8
  301. package/dist/runtime/rpx.mjs.map +1 -1
  302. package/dist/runtime/seo/index.d.mts +31 -0
  303. package/dist/runtime/seo/index.mjs +94 -0
  304. package/dist/runtime/seo/index.mjs.map +1 -0
  305. package/dist/runtime/viewport/index.d.mts +12 -0
  306. package/dist/runtime/viewport/index.mjs +44 -0
  307. package/dist/runtime/viewport/index.mjs.map +1 -0
  308. package/dist/runtime/viewport/style.mjs +62 -0
  309. package/dist/runtime/viewport/style.mjs.map +1 -0
  310. package/dist/runtime/viewport/types.d.mts +14 -0
  311. package/dist/runtime/wevu.d.mts +20 -0
  312. package/dist/runtime/wevu.mjs +73 -0
  313. package/dist/runtime/wevu.mjs.map +1 -0
  314. package/dist/shared/nativeComponents.mjs +401 -0
  315. package/dist/shared/nativeComponents.mjs.map +1 -0
  316. package/dist/shared/tabBar.d.mts +19 -0
  317. package/dist/shared/tabBar.mjs +37 -0
  318. package/dist/shared/tabBar.mjs.map +1 -0
  319. package/dist/shared/wxml.mjs +3 -20
  320. package/dist/shared/wxml.mjs.map +1 -1
  321. package/package.json +13 -5
@@ -1,6 +1,7 @@
1
+ import { setTabBarBadgeState, setTabBarRedDotState, setTabBarVisible, updateTabBarItem, updateTabBarStyle } from "../appShell/tabBar/index.mjs";
1
2
  import { callMiniProgramAsyncFailure, callMiniProgramAsyncSuccess } from "./async.mjs";
2
- import { normalizeActionSheetItems, resolveActionSheetSelection, resolveModalSelection } from "./ui.mjs";
3
3
  import { readNetworkStatusSnapshot } from "./network/status.mjs";
4
+ import { normalizeActionSheetItems, resolveActionSheetSelection, resolveModalSelection } from "./ui.mjs";
4
5
  import { normalizeSubscribeTemplateIds, resolveSubscribeDecisionMap } from "./subscribe.mjs";
5
6
 
6
7
  //#region src/runtime/polyfill/menuApi.ts
@@ -11,11 +12,44 @@ function getNetworkTypeBridge(options) {
11
12
  ...status
12
13
  }));
13
14
  }
15
+ function resolveTabBarMutation(action, options, succeeded, failureReason = "tabBar not configured") {
16
+ if (succeeded) return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: `${action}:ok` }));
17
+ const failure = callMiniProgramAsyncFailure(options, `${action}:fail ${failureReason}`);
18
+ return Promise.reject(failure);
19
+ }
14
20
  function showTabBarBridge(options) {
15
- return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: "showTabBar:ok" }));
21
+ return resolveTabBarMutation("showTabBar", options, setTabBarVisible(true, options?.animation === true));
16
22
  }
17
23
  function hideTabBarBridge(options) {
18
- return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: "hideTabBar:ok" }));
24
+ return resolveTabBarMutation("hideTabBar", options, setTabBarVisible(false, options?.animation === true));
25
+ }
26
+ function setTabBarItemBridge(options) {
27
+ const patch = {
28
+ ...typeof options?.text === "string" ? { text: options.text } : {},
29
+ ...typeof options?.iconPath === "string" ? { iconPath: options.iconPath } : {},
30
+ ...typeof options?.selectedIconPath === "string" ? { selectedIconPath: options.selectedIconPath } : {}
31
+ };
32
+ return resolveTabBarMutation("setTabBarItem", options, updateTabBarItem(options?.index, patch), "invalid index");
33
+ }
34
+ function setTabBarStyleBridge(options) {
35
+ return resolveTabBarMutation("setTabBarStyle", options, updateTabBarStyle({
36
+ ...typeof options?.color === "string" ? { color: options.color } : {},
37
+ ...typeof options?.selectedColor === "string" ? { selectedColor: options.selectedColor } : {},
38
+ ...typeof options?.backgroundColor === "string" ? { backgroundColor: options.backgroundColor } : {},
39
+ ...options?.borderStyle === "black" || options?.borderStyle === "white" ? { borderStyle: options.borderStyle } : {}
40
+ }));
41
+ }
42
+ function setTabBarBadgeBridge(options) {
43
+ return resolveTabBarMutation("setTabBarBadge", options, typeof options?.text === "string" && setTabBarBadgeState(options?.index, options.text), "invalid index or text");
44
+ }
45
+ function removeTabBarBadgeBridge(options) {
46
+ return resolveTabBarMutation("removeTabBarBadge", options, setTabBarBadgeState(options?.index, void 0), "invalid index");
47
+ }
48
+ function showTabBarRedDotBridge(options) {
49
+ return resolveTabBarMutation("showTabBarRedDot", options, setTabBarRedDotState(options?.index, true), "invalid index");
50
+ }
51
+ function hideTabBarRedDotBridge(options) {
52
+ return resolveTabBarMutation("hideTabBarRedDot", options, setTabBarRedDotState(options?.index, false), "invalid index");
19
53
  }
20
54
  function requestPaymentBridge(options) {
21
55
  return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: "requestPayment:ok" }));
@@ -66,5 +100,5 @@ function updateShareMenuBridge(options) {
66
100
  }
67
101
 
68
102
  //#endregion
69
- export { getNetworkTypeBridge, hideTabBarBridge, requestPaymentBridge, requestSubscribeMessageBridge, showActionSheetBridge, showModalBridge, showShareMenuBridge, showTabBarBridge, updateShareMenuBridge };
103
+ export { getNetworkTypeBridge, hideTabBarBridge, hideTabBarRedDotBridge, removeTabBarBadgeBridge, requestPaymentBridge, requestSubscribeMessageBridge, setTabBarBadgeBridge, setTabBarItemBridge, setTabBarStyleBridge, showActionSheetBridge, showModalBridge, showShareMenuBridge, showTabBarBridge, showTabBarRedDotBridge, updateShareMenuBridge };
70
104
  //# sourceMappingURL=menuApi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"menuApi.mjs","names":[],"sources":["../../../src/runtime/polyfill/menuApi.ts"],"sourcesContent":["import {\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\nexport function showTabBarBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'showTabBar:ok' }))\n}\n\nexport function hideTabBarBridge(options?: any): Promise<any> {\n return Promise.resolve(callMiniProgramAsyncSuccess(options, { errMsg: 'hideTabBar:ok' }))\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":";;;;;;AAeA,SAAgB,qBAAqB,SAA6B;CAChE,MAAM,SAAS,0BAA0B;CACzC,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR,GAAG;CACL,CAAC,CAAC;AACJ;AAEA,SAAgB,iBAAiB,SAA6B;CAC5D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,gBAAgB,CAAC,CAAC;AAC1F;AAEA,SAAgB,iBAAiB,SAA6B;CAC5D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,gBAAgB,CAAC,CAAC;AAC1F;AAEA,SAAgB,qBAAqB,SAA6B;CAChE,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,oBAAoB,CAAC,CAAC;AAC9F;AAEA,SAAgB,8BAA8B,SAA6B;CACzE,MAAM,UAAU,8BAA8B,SAAS,OAAO;CAC9D,IAAI,QAAQ,WAAW,GAAG;EACxB,MAAM,UAAU,4BAA4B,SAAS,8CAA8C;EACnG,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,cAAc,4BAA4B,OAAO;CACvD,MAAM,SAAmD,QAAQ,QAAkD,SAAS,WAAW;EACrI,QAAQ,UAAU,YAAY;EAC9B,OAAO;CACT,GAAG,EAAE,QAAQ,6BAA6B,CAAC;CAC3C,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,MAAM,CAAC;AACrE;AAEA,SAAgB,gBAAgB,SAA6B;CAC3D,MAAM,cAAc,sBAAsB,OAAO;CACjD,MAAM,SAAS;EACb,QAAQ;EACR,SAAS,YAAY;EACrB,QAAQ,YAAY;CACtB;CACA,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,MAAM,CAAC;AACrE;AAEA,SAAgB,sBAAsB,SAA6B;CACjE,MAAM,WAAW,0BAA0B,SAAS,QAAQ;CAC5D,IAAI,CAAC,SAAS,QAAQ;EACpB,MAAM,UAAU,4BAA4B,SAAS,uCAAuC;EAC5F,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,MAAM,WAAW,4BAA4B,QAAQ;CACrD,IAAI,aAAa,MAAM;EACrB,MAAM,UAAU,4BAA4B,SAAS,6BAA6B;EAClF,OAAO,QAAQ,OAAO,OAAO;CAC/B;CACA,OAAO,QAAQ,QAAQ,4BAA4B,SAAS;EAC1D,QAAQ;EACR;CACF,CAAC,CAAC;AACJ;AAEA,SAAgB,oBAAoB,SAA6B;CAC/D,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,mBAAmB,CAAC,CAAC;AAC7F;AAEA,SAAgB,sBAAsB,SAA6B;CACjE,OAAO,QAAQ,QAAQ,4BAA4B,SAAS,EAAE,QAAQ,qBAAqB,CAAC,CAAC;AAC/F"}
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,3 +1,5 @@
1
+ import { updateWebDocumentTitle } from "../seo/index.mjs";
2
+
1
3
  //#region src/runtime/polyfill/navigationBarRuntime.ts
2
4
  function getActiveNavigationBar(pages) {
3
5
  const current = pages[pages.length - 1];
@@ -21,7 +23,10 @@ function createNavigationBarRuntimeBridge(getCurrentPages, emitWarning) {
21
23
  warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}setNavigationBarTitle`);
22
24
  return Promise.resolve();
23
25
  }
24
- if (options?.title !== void 0) bar.setAttribute("title", options.title);
26
+ if (options?.title !== void 0) {
27
+ bar.setAttribute("title", options.title);
28
+ updateWebDocumentTitle(options.title);
29
+ }
25
30
  return Promise.resolve();
26
31
  },
27
32
  setNavigationBarColor(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"navigationBarRuntime.mjs","names":[],"sources":["../../../src/runtime/polyfill/navigationBarRuntime.ts"],"sourcesContent":["interface RuntimeWarningOptions {\n key: string\n context: string\n}\n\ntype RuntimeWarningEmitter = (message: string, options: RuntimeWarningOptions) => void\n\ninterface PageLike extends HTMLElement {\n renderRoot?: ShadowRoot | HTMLElement\n}\n\nfunction getActiveNavigationBar(pages: PageLike[]) {\n const current = pages[pages.length - 1]\n if (!current) {\n return undefined\n }\n const renderRoot = current.renderRoot\n ?? current.shadowRoot\n ?? current\n if (!renderRoot || typeof (renderRoot as ParentNode).querySelector !== 'function') {\n return undefined\n }\n return (renderRoot as ParentNode).querySelector('weapp-navigation-bar') as HTMLElement | null\n}\n\nfunction warnNavigationBarMissing(emitWarning: RuntimeWarningEmitter, action: string) {\n emitWarning(`[@weapp-vite/web] ${action} 需要默认导航栏支持,但当前页面未渲染 weapp-navigation-bar。`, {\n key: 'navigation-bar-missing',\n context: 'runtime:navigation',\n })\n}\n\nexport function createNavigationBarRuntimeBridge(\n getCurrentPages: () => PageLike[],\n emitWarning: RuntimeWarningEmitter,\n) {\n const navigationBarActionPrefix = 'miniProgram.'\n\n return {\n setNavigationBarTitle(options: { title: string }) {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}setNavigationBarTitle`)\n return Promise.resolve()\n }\n if (options?.title !== undefined) {\n bar.setAttribute('title', options.title)\n }\n return Promise.resolve()\n },\n setNavigationBarColor(options: {\n frontColor?: string\n backgroundColor?: string\n animation?: { duration?: number, timingFunction?: string }\n }) {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}setNavigationBarColor`)\n return Promise.resolve()\n }\n if (options?.frontColor) {\n bar.setAttribute('front-color', options.frontColor)\n }\n if (options?.backgroundColor) {\n bar.setAttribute('background-color', options.backgroundColor)\n }\n if (options?.animation) {\n const duration = typeof options.animation.duration === 'number'\n ? `${options.animation.duration}ms`\n : undefined\n const easing = options.animation.timingFunction\n if (duration) {\n bar.style.setProperty('--weapp-nav-transition-duration', duration)\n }\n if (easing) {\n bar.style.setProperty('--weapp-nav-transition-easing', easing)\n }\n }\n return Promise.resolve()\n },\n showNavigationBarLoading() {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}showNavigationBarLoading`)\n return Promise.resolve()\n }\n bar.setAttribute('loading', 'true')\n return Promise.resolve()\n },\n hideNavigationBarLoading() {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}hideNavigationBarLoading`)\n return Promise.resolve()\n }\n bar.removeAttribute('loading')\n return Promise.resolve()\n },\n }\n}\n"],"mappings":";AAWA,SAAS,uBAAuB,OAAmB;CACjD,MAAM,UAAU,MAAM,MAAM,SAAS;CACrC,IAAI,CAAC,SACH;CAEF,MAAM,aAAa,QAAQ,cACtB,QAAQ,cACR;CACL,IAAI,CAAC,cAAc,OAAQ,WAA0B,kBAAkB,YACrE;CAEF,OAAQ,WAA0B,cAAc,sBAAsB;AACxE;AAEA,SAAS,yBAAyB,aAAoC,QAAgB;CACpF,YAAY,qBAAqB,OAAO,4CAA4C;EAClF,KAAK;EACL,SAAS;CACX,CAAC;AACH;AAEA,SAAgB,iCACd,iBACA,aACA;CACA,MAAM,4BAA4B;CAElC,OAAO;EACL,sBAAsB,SAA4B;GAChD,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,sBAAsB;IACzF,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,SAAS,UAAU,QACrB,IAAI,aAAa,SAAS,QAAQ,KAAK;GAEzC,OAAO,QAAQ,QAAQ;EACzB;EACA,sBAAsB,SAInB;GACD,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,sBAAsB;IACzF,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,SAAS,YACX,IAAI,aAAa,eAAe,QAAQ,UAAU;GAEpD,IAAI,SAAS,iBACX,IAAI,aAAa,oBAAoB,QAAQ,eAAe;GAE9D,IAAI,SAAS,WAAW;IACtB,MAAM,WAAW,OAAO,QAAQ,UAAU,aAAa,WACnD,GAAG,QAAQ,UAAU,SAAS,MAC9B;IACJ,MAAM,SAAS,QAAQ,UAAU;IACjC,IAAI,UACF,IAAI,MAAM,YAAY,mCAAmC,QAAQ;IAEnE,IAAI,QACF,IAAI,MAAM,YAAY,iCAAiC,MAAM;GAEjE;GACA,OAAO,QAAQ,QAAQ;EACzB;EACA,2BAA2B;GACzB,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,yBAAyB;IAC5F,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,aAAa,WAAW,MAAM;GAClC,OAAO,QAAQ,QAAQ;EACzB;EACA,2BAA2B;GACzB,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,yBAAyB;IAC5F,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,gBAAgB,SAAS;GAC7B,OAAO,QAAQ,QAAQ;EACzB;CACF;AACF"}
1
+ {"version":3,"file":"navigationBarRuntime.mjs","names":[],"sources":["../../../src/runtime/polyfill/navigationBarRuntime.ts"],"sourcesContent":["import { updateWebDocumentTitle } from '../seo'\n\ninterface RuntimeWarningOptions {\n key: string\n context: string\n}\n\ntype RuntimeWarningEmitter = (message: string, options: RuntimeWarningOptions) => void\n\ninterface PageLike extends HTMLElement {\n renderRoot?: ShadowRoot | HTMLElement\n}\n\nfunction getActiveNavigationBar(pages: PageLike[]) {\n const current = pages[pages.length - 1]\n if (!current) {\n return undefined\n }\n const renderRoot = current.renderRoot\n ?? current.shadowRoot\n ?? current\n if (!renderRoot || typeof (renderRoot as ParentNode).querySelector !== 'function') {\n return undefined\n }\n return (renderRoot as ParentNode).querySelector('weapp-navigation-bar') as HTMLElement | null\n}\n\nfunction warnNavigationBarMissing(emitWarning: RuntimeWarningEmitter, action: string) {\n emitWarning(`[@weapp-vite/web] ${action} 需要默认导航栏支持,但当前页面未渲染 weapp-navigation-bar。`, {\n key: 'navigation-bar-missing',\n context: 'runtime:navigation',\n })\n}\n\nexport function createNavigationBarRuntimeBridge(\n getCurrentPages: () => PageLike[],\n emitWarning: RuntimeWarningEmitter,\n) {\n const navigationBarActionPrefix = 'miniProgram.'\n\n return {\n setNavigationBarTitle(options: { title: string }) {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}setNavigationBarTitle`)\n return Promise.resolve()\n }\n if (options?.title !== undefined) {\n bar.setAttribute('title', options.title)\n updateWebDocumentTitle(options.title)\n }\n return Promise.resolve()\n },\n setNavigationBarColor(options: {\n frontColor?: string\n backgroundColor?: string\n animation?: { duration?: number, timingFunction?: string }\n }) {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}setNavigationBarColor`)\n return Promise.resolve()\n }\n if (options?.frontColor) {\n bar.setAttribute('front-color', options.frontColor)\n }\n if (options?.backgroundColor) {\n bar.setAttribute('background-color', options.backgroundColor)\n }\n if (options?.animation) {\n const duration = typeof options.animation.duration === 'number'\n ? `${options.animation.duration}ms`\n : undefined\n const easing = options.animation.timingFunction\n if (duration) {\n bar.style.setProperty('--weapp-nav-transition-duration', duration)\n }\n if (easing) {\n bar.style.setProperty('--weapp-nav-transition-easing', easing)\n }\n }\n return Promise.resolve()\n },\n showNavigationBarLoading() {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}showNavigationBarLoading`)\n return Promise.resolve()\n }\n bar.setAttribute('loading', 'true')\n return Promise.resolve()\n },\n hideNavigationBarLoading() {\n const bar = getActiveNavigationBar(getCurrentPages())\n if (!bar) {\n warnNavigationBarMissing(emitWarning, `${navigationBarActionPrefix}hideNavigationBarLoading`)\n return Promise.resolve()\n }\n bar.removeAttribute('loading')\n return Promise.resolve()\n },\n }\n}\n"],"mappings":";;;AAaA,SAAS,uBAAuB,OAAmB;CACjD,MAAM,UAAU,MAAM,MAAM,SAAS;CACrC,IAAI,CAAC,SACH;CAEF,MAAM,aAAa,QAAQ,cACtB,QAAQ,cACR;CACL,IAAI,CAAC,cAAc,OAAQ,WAA0B,kBAAkB,YACrE;CAEF,OAAQ,WAA0B,cAAc,sBAAsB;AACxE;AAEA,SAAS,yBAAyB,aAAoC,QAAgB;CACpF,YAAY,qBAAqB,OAAO,4CAA4C;EAClF,KAAK;EACL,SAAS;CACX,CAAC;AACH;AAEA,SAAgB,iCACd,iBACA,aACA;CACA,MAAM,4BAA4B;CAElC,OAAO;EACL,sBAAsB,SAA4B;GAChD,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,sBAAsB;IACzF,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,SAAS,UAAU,QAAW;IAChC,IAAI,aAAa,SAAS,QAAQ,KAAK;IACvC,uBAAuB,QAAQ,KAAK;GACtC;GACA,OAAO,QAAQ,QAAQ;EACzB;EACA,sBAAsB,SAInB;GACD,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,sBAAsB;IACzF,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,SAAS,YACX,IAAI,aAAa,eAAe,QAAQ,UAAU;GAEpD,IAAI,SAAS,iBACX,IAAI,aAAa,oBAAoB,QAAQ,eAAe;GAE9D,IAAI,SAAS,WAAW;IACtB,MAAM,WAAW,OAAO,QAAQ,UAAU,aAAa,WACnD,GAAG,QAAQ,UAAU,SAAS,MAC9B;IACJ,MAAM,SAAS,QAAQ,UAAU;IACjC,IAAI,UACF,IAAI,MAAM,YAAY,mCAAmC,QAAQ;IAEnE,IAAI,QACF,IAAI,MAAM,YAAY,iCAAiC,MAAM;GAEjE;GACA,OAAO,QAAQ,QAAQ;EACzB;EACA,2BAA2B;GACzB,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,yBAAyB;IAC5F,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,aAAa,WAAW,MAAM;GAClC,OAAO,QAAQ,QAAQ;EACzB;EACA,2BAA2B;GACzB,MAAM,MAAM,uBAAuB,gBAAgB,CAAC;GACpD,IAAI,CAAC,KAAK;IACR,yBAAyB,aAAa,GAAG,0BAA0B,yBAAyB;IAC5F,OAAO,QAAQ,QAAQ;GACzB;GACA,IAAI,gBAAgB,SAAS;GAC7B,OAAO,QAAQ,QAAQ;EACzB;CACF;AACF"}
@@ -1,3 +1,4 @@
1
+ import { getRuntimeFetch as getRuntimeFetch$1 } from "../../host/index.mjs";
1
2
  import { normalizeFilePath, resolveUploadFileBlob, resolveUploadFileName } from "../files.mjs";
2
3
 
3
4
  //#region src/runtime/polyfill/network/request.ts
@@ -13,8 +14,7 @@ function resolveTimeoutSignal(timeout) {
13
14
  };
14
15
  }
15
16
  function getRuntimeFetch() {
16
- const maybeFetch = globalThis.fetch;
17
- if (typeof maybeFetch === "function") return maybeFetch;
17
+ return getRuntimeFetch$1();
18
18
  }
19
19
  function normalizeRequestMethod(method) {
20
20
  return (method || "GET").toUpperCase();
@@ -1 +1 @@
1
- {"version":3,"file":"request.mjs","names":["runtime"],"sources":["../../../../src/runtime/polyfill/network/request.ts"],"sourcesContent":["import {\n normalizeFilePath,\n resolveUploadFileBlob,\n resolveUploadFileName,\n} from '../files'\n\ninterface RequestParseOptions {\n responseType?: 'text' | 'arraybuffer'\n dataType?: 'json' | 'text'\n}\n\ninterface RequestLikeOptions extends RequestParseOptions {\n url?: string\n method?: string\n header?: Record<string, string>\n data?: unknown\n timeout?: number\n}\n\ninterface DownloadLikeOptions {\n url?: string\n header?: Record<string, string>\n timeout?: number\n}\n\ninterface UploadLikeOptions {\n url?: string\n filePath?: string\n header?: Record<string, string>\n formData?: Record<string, unknown>\n name?: string\n timeout?: number\n}\n\nfunction resolveTimeoutSignal(timeout: number) {\n const controller = typeof AbortController === 'function' ? new AbortController() : undefined\n let timeoutTimer: ReturnType<typeof setTimeout> | undefined\n if (timeout > 0 && controller) {\n timeoutTimer = setTimeout(() => controller.abort(), timeout)\n }\n return {\n signal: controller?.signal,\n clear: () => {\n if (timeoutTimer) {\n clearTimeout(timeoutTimer)\n }\n },\n }\n}\n\nexport function getRuntimeFetch() {\n const runtime = globalThis as Record<string, unknown>\n const maybeFetch = runtime.fetch\n if (typeof maybeFetch === 'function') {\n return maybeFetch as typeof fetch\n }\n return undefined\n}\n\nexport function normalizeRequestMethod(method?: string) {\n return (method || 'GET').toUpperCase()\n}\n\nexport function normalizeRequestHeaders(header?: Record<string, string>) {\n if (!header) {\n return {}\n }\n return { ...header }\n}\n\nexport function buildRequestUrl(url: string, method: string, data: unknown) {\n if (method !== 'GET' || data == null) {\n return url\n }\n if (typeof data === 'string') {\n if (!data) {\n return url\n }\n return `${url}${url.includes('?') ? '&' : '?'}${data}`\n }\n if (typeof URLSearchParams !== 'undefined' && data instanceof URLSearchParams) {\n const query = data.toString()\n if (!query) {\n return url\n }\n return `${url}${url.includes('?') ? '&' : '?'}${query}`\n }\n if (typeof data === 'object') {\n const query = new URLSearchParams()\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n query.append(key, value == null ? '' : String(value))\n }\n const queryText = query.toString()\n if (!queryText) {\n return url\n }\n return `${url}${url.includes('?') ? '&' : '?'}${queryText}`\n }\n return url\n}\n\nexport function buildRequestBody(\n method: string,\n data: unknown,\n headers: Record<string, string>,\n) {\n if (method === 'GET' || data == null) {\n return undefined\n }\n if (typeof data === 'string') {\n return data\n }\n if (typeof URLSearchParams !== 'undefined' && data instanceof URLSearchParams) {\n return data\n }\n if (typeof FormData !== 'undefined' && data instanceof FormData) {\n return data\n }\n const contentTypeKey = Object.keys(headers).find(key => key.toLowerCase() === 'content-type')\n const contentType = contentTypeKey ? headers[contentTypeKey] : ''\n if (contentType && !contentType.includes('application/json')) {\n return String(data)\n }\n if (!contentTypeKey) {\n headers['content-type'] = 'application/json'\n }\n return JSON.stringify(data)\n}\n\nexport async function parseRequestResponseData(\n response: Response,\n options?: RequestParseOptions,\n) {\n if (options?.responseType === 'arraybuffer') {\n return response.arrayBuffer()\n }\n const contentType = response.headers.get('content-type') ?? ''\n if (options?.dataType === 'text') {\n return response.text()\n }\n if (options?.dataType === 'json' || contentType.includes('application/json')) {\n return response.json()\n }\n return response.text()\n}\n\nexport function createBlobObjectUrl(blob: Blob) {\n const runtimeUrl = (globalThis as {\n URL?: {\n createObjectURL?: (value: Blob) => string\n }\n }).URL\n if (runtimeUrl && typeof runtimeUrl.createObjectURL === 'function') {\n return runtimeUrl.createObjectURL(blob)\n }\n return ''\n}\n\nexport function collectResponseHeaders(response: {\n headers: {\n forEach: (callback: (value: string, key: string) => void) => void\n }\n}) {\n const headers: Record<string, string> = {}\n response.headers.forEach((value, key) => {\n headers[key] = value\n })\n return headers\n}\n\nexport function stripUploadContentType(headers: Record<string, string>) {\n const normalized = { ...headers }\n for (const key of Object.keys(normalized)) {\n if (key.toLowerCase() === 'content-type') {\n delete normalized[key]\n }\n }\n return normalized\n}\n\nexport async function performRequestByFetch(options?: RequestLikeOptions) {\n const url = options?.url?.trim() ?? ''\n if (!url) {\n throw new TypeError('invalid url')\n }\n const runtimeFetch = getRuntimeFetch()\n if (!runtimeFetch) {\n throw new TypeError('fetch is unavailable')\n }\n const method = normalizeRequestMethod(options?.method)\n const headers = normalizeRequestHeaders(options?.header)\n const requestUrl = buildRequestUrl(url, method, options?.data)\n const body = buildRequestBody(method, options?.data, headers)\n const timeout = typeof options?.timeout === 'number' && options.timeout > 0 ? options.timeout : 0\n const timeoutControl = resolveTimeoutSignal(timeout)\n\n try {\n const response = await runtimeFetch(requestUrl, {\n method,\n headers,\n body,\n signal: timeoutControl.signal,\n })\n const responseData = await parseRequestResponseData(response, options)\n return {\n data: responseData,\n statusCode: response.status,\n header: collectResponseHeaders(response),\n }\n }\n finally {\n timeoutControl.clear()\n }\n}\n\nexport async function performDownloadByFetch(options?: DownloadLikeOptions) {\n const url = options?.url?.trim() ?? ''\n if (!url) {\n throw new TypeError('invalid url')\n }\n const runtimeFetch = getRuntimeFetch()\n if (!runtimeFetch) {\n throw new TypeError('fetch is unavailable')\n }\n const headers = normalizeRequestHeaders(options?.header)\n const timeout = typeof options?.timeout === 'number' && options.timeout > 0 ? options.timeout : 0\n const timeoutControl = resolveTimeoutSignal(timeout)\n\n try {\n const response = await runtimeFetch(url, {\n method: 'GET',\n headers,\n signal: timeoutControl.signal,\n })\n const blob = await response.blob()\n return {\n tempFilePath: createBlobObjectUrl(blob) || url,\n statusCode: response.status,\n }\n }\n finally {\n timeoutControl.clear()\n }\n}\n\nexport async function performUploadByFetch(options?: UploadLikeOptions) {\n const url = options?.url?.trim() ?? ''\n if (!url) {\n throw new TypeError('invalid url')\n }\n const filePath = normalizeFilePath(options?.filePath)\n if (!filePath) {\n throw new TypeError('invalid filePath')\n }\n const runtimeFetch = getRuntimeFetch()\n if (!runtimeFetch) {\n throw new TypeError('fetch is unavailable')\n }\n const FormDataCtor = (globalThis as { FormData?: typeof FormData }).FormData\n if (typeof FormDataCtor !== 'function') {\n throw new TypeError('FormData is unavailable')\n }\n\n const headers = stripUploadContentType(normalizeRequestHeaders(options?.header))\n const formData = new FormDataCtor()\n for (const [key, value] of Object.entries(options?.formData ?? {})) {\n formData.append(key, value == null ? '' : String(value))\n }\n const blob = await resolveUploadFileBlob(filePath, runtimeFetch)\n formData.append(options?.name?.trim() || 'file', blob, resolveUploadFileName(filePath))\n\n const timeout = typeof options?.timeout === 'number' && options.timeout > 0 ? options.timeout : 0\n const timeoutControl = resolveTimeoutSignal(timeout)\n\n try {\n const response = await runtimeFetch(url, {\n method: 'POST',\n headers,\n body: formData,\n signal: timeoutControl.signal,\n })\n const data = await response.text()\n return {\n data,\n statusCode: response.status,\n header: collectResponseHeaders(response),\n }\n }\n finally {\n timeoutControl.clear()\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"request.mjs","names":["getHostRuntimeFetch"],"sources":["../../../../src/runtime/polyfill/network/request.ts"],"sourcesContent":["import { getRuntimeFetch as getHostRuntimeFetch } from '../../host'\nimport {\n normalizeFilePath,\n resolveUploadFileBlob,\n resolveUploadFileName,\n} from '../files'\n\ninterface RequestParseOptions {\n responseType?: 'text' | 'arraybuffer'\n dataType?: 'json' | 'text'\n}\n\ninterface RequestLikeOptions extends RequestParseOptions {\n url?: string\n method?: string\n header?: Record<string, string>\n data?: unknown\n timeout?: number\n}\n\ninterface DownloadLikeOptions {\n url?: string\n header?: Record<string, string>\n timeout?: number\n}\n\ninterface UploadLikeOptions {\n url?: string\n filePath?: string\n header?: Record<string, string>\n formData?: Record<string, unknown>\n name?: string\n timeout?: number\n}\n\nfunction resolveTimeoutSignal(timeout: number) {\n const controller = typeof AbortController === 'function' ? new AbortController() : undefined\n let timeoutTimer: ReturnType<typeof setTimeout> | undefined\n if (timeout > 0 && controller) {\n timeoutTimer = setTimeout(() => controller.abort(), timeout)\n }\n return {\n signal: controller?.signal,\n clear: () => {\n if (timeoutTimer) {\n clearTimeout(timeoutTimer)\n }\n },\n }\n}\n\nexport function getRuntimeFetch() {\n return getHostRuntimeFetch()\n}\n\nexport function normalizeRequestMethod(method?: string) {\n return (method || 'GET').toUpperCase()\n}\n\nexport function normalizeRequestHeaders(header?: Record<string, string>) {\n if (!header) {\n return {}\n }\n return { ...header }\n}\n\nexport function buildRequestUrl(url: string, method: string, data: unknown) {\n if (method !== 'GET' || data == null) {\n return url\n }\n if (typeof data === 'string') {\n if (!data) {\n return url\n }\n return `${url}${url.includes('?') ? '&' : '?'}${data}`\n }\n if (typeof URLSearchParams !== 'undefined' && data instanceof URLSearchParams) {\n const query = data.toString()\n if (!query) {\n return url\n }\n return `${url}${url.includes('?') ? '&' : '?'}${query}`\n }\n if (typeof data === 'object') {\n const query = new URLSearchParams()\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n query.append(key, value == null ? '' : String(value))\n }\n const queryText = query.toString()\n if (!queryText) {\n return url\n }\n return `${url}${url.includes('?') ? '&' : '?'}${queryText}`\n }\n return url\n}\n\nexport function buildRequestBody(\n method: string,\n data: unknown,\n headers: Record<string, string>,\n) {\n if (method === 'GET' || data == null) {\n return undefined\n }\n if (typeof data === 'string') {\n return data\n }\n if (typeof URLSearchParams !== 'undefined' && data instanceof URLSearchParams) {\n return data\n }\n if (typeof FormData !== 'undefined' && data instanceof FormData) {\n return data\n }\n const contentTypeKey = Object.keys(headers).find(key => key.toLowerCase() === 'content-type')\n const contentType = contentTypeKey ? headers[contentTypeKey] : ''\n if (contentType && !contentType.includes('application/json')) {\n return String(data)\n }\n if (!contentTypeKey) {\n headers['content-type'] = 'application/json'\n }\n return JSON.stringify(data)\n}\n\nexport async function parseRequestResponseData(\n response: Response,\n options?: RequestParseOptions,\n) {\n if (options?.responseType === 'arraybuffer') {\n return response.arrayBuffer()\n }\n const contentType = response.headers.get('content-type') ?? ''\n if (options?.dataType === 'text') {\n return response.text()\n }\n if (options?.dataType === 'json' || contentType.includes('application/json')) {\n return response.json()\n }\n return response.text()\n}\n\nexport function createBlobObjectUrl(blob: Blob) {\n const runtimeUrl = (globalThis as {\n URL?: {\n createObjectURL?: (value: Blob) => string\n }\n }).URL\n if (runtimeUrl && typeof runtimeUrl.createObjectURL === 'function') {\n return runtimeUrl.createObjectURL(blob)\n }\n return ''\n}\n\nexport function collectResponseHeaders(response: {\n headers: {\n forEach: (callback: (value: string, key: string) => void) => void\n }\n}) {\n const headers: Record<string, string> = {}\n response.headers.forEach((value, key) => {\n headers[key] = value\n })\n return headers\n}\n\nexport function stripUploadContentType(headers: Record<string, string>) {\n const normalized = { ...headers }\n for (const key of Object.keys(normalized)) {\n if (key.toLowerCase() === 'content-type') {\n delete normalized[key]\n }\n }\n return normalized\n}\n\nexport async function performRequestByFetch(options?: RequestLikeOptions) {\n const url = options?.url?.trim() ?? ''\n if (!url) {\n throw new TypeError('invalid url')\n }\n const runtimeFetch = getRuntimeFetch()\n if (!runtimeFetch) {\n throw new TypeError('fetch is unavailable')\n }\n const method = normalizeRequestMethod(options?.method)\n const headers = normalizeRequestHeaders(options?.header)\n const requestUrl = buildRequestUrl(url, method, options?.data)\n const body = buildRequestBody(method, options?.data, headers)\n const timeout = typeof options?.timeout === 'number' && options.timeout > 0 ? options.timeout : 0\n const timeoutControl = resolveTimeoutSignal(timeout)\n\n try {\n const response = await runtimeFetch(requestUrl, {\n method,\n headers,\n body,\n signal: timeoutControl.signal,\n })\n const responseData = await parseRequestResponseData(response, options)\n return {\n data: responseData,\n statusCode: response.status,\n header: collectResponseHeaders(response),\n }\n }\n finally {\n timeoutControl.clear()\n }\n}\n\nexport async function performDownloadByFetch(options?: DownloadLikeOptions) {\n const url = options?.url?.trim() ?? ''\n if (!url) {\n throw new TypeError('invalid url')\n }\n const runtimeFetch = getRuntimeFetch()\n if (!runtimeFetch) {\n throw new TypeError('fetch is unavailable')\n }\n const headers = normalizeRequestHeaders(options?.header)\n const timeout = typeof options?.timeout === 'number' && options.timeout > 0 ? options.timeout : 0\n const timeoutControl = resolveTimeoutSignal(timeout)\n\n try {\n const response = await runtimeFetch(url, {\n method: 'GET',\n headers,\n signal: timeoutControl.signal,\n })\n const blob = await response.blob()\n return {\n tempFilePath: createBlobObjectUrl(blob) || url,\n statusCode: response.status,\n }\n }\n finally {\n timeoutControl.clear()\n }\n}\n\nexport async function performUploadByFetch(options?: UploadLikeOptions) {\n const url = options?.url?.trim() ?? ''\n if (!url) {\n throw new TypeError('invalid url')\n }\n const filePath = normalizeFilePath(options?.filePath)\n if (!filePath) {\n throw new TypeError('invalid filePath')\n }\n const runtimeFetch = getRuntimeFetch()\n if (!runtimeFetch) {\n throw new TypeError('fetch is unavailable')\n }\n const FormDataCtor = (globalThis as { FormData?: typeof FormData }).FormData\n if (typeof FormDataCtor !== 'function') {\n throw new TypeError('FormData is unavailable')\n }\n\n const headers = stripUploadContentType(normalizeRequestHeaders(options?.header))\n const formData = new FormDataCtor()\n for (const [key, value] of Object.entries(options?.formData ?? {})) {\n formData.append(key, value == null ? '' : String(value))\n }\n const blob = await resolveUploadFileBlob(filePath, runtimeFetch)\n formData.append(options?.name?.trim() || 'file', blob, resolveUploadFileName(filePath))\n\n const timeout = typeof options?.timeout === 'number' && options.timeout > 0 ? options.timeout : 0\n const timeoutControl = resolveTimeoutSignal(timeout)\n\n try {\n const response = await runtimeFetch(url, {\n method: 'POST',\n headers,\n body: formData,\n signal: timeoutControl.signal,\n })\n const data = await response.text()\n return {\n data,\n statusCode: response.status,\n header: collectResponseHeaders(response),\n }\n }\n finally {\n timeoutControl.clear()\n }\n}\n"],"mappings":";;;;AAmCA,SAAS,qBAAqB,SAAiB;CAC7C,MAAM,aAAa,OAAO,oBAAoB,aAAa,IAAI,gBAAgB,IAAI;CACnF,IAAI;CACJ,IAAI,UAAU,KAAK,YACjB,eAAe,iBAAiB,WAAW,MAAM,GAAG,OAAO;CAE7D,OAAO;EACL,QAAQ,YAAY;EACpB,aAAa;GACX,IAAI,cACF,aAAa,YAAY;EAE7B;CACF;AACF;AAEA,SAAgB,kBAAkB;CAChC,OAAOA,kBAAoB;AAC7B;AAEA,SAAgB,uBAAuB,QAAiB;CACtD,QAAQ,UAAU,MAAK,CAAE,YAAY;AACvC;AAEA,SAAgB,wBAAwB,QAAiC;CACvE,IAAI,CAAC,QACH,OAAO,CAAC;CAEV,OAAO,EAAE,GAAG,OAAO;AACrB;AAEA,SAAgB,gBAAgB,KAAa,QAAgB,MAAe;CAC1E,IAAI,WAAW,SAAS,QAAQ,MAC9B,OAAO;CAET,IAAI,OAAO,SAAS,UAAU;EAC5B,IAAI,CAAC,MACH,OAAO;EAET,OAAO,GAAG,MAAM,IAAI,SAAS,GAAG,IAAI,MAAM,MAAM;CAClD;CACA,IAAI,OAAO,oBAAoB,eAAe,gBAAgB,iBAAiB;EAC7E,MAAM,QAAQ,KAAK,SAAS;EAC5B,IAAI,CAAC,OACH,OAAO;EAET,OAAO,GAAG,MAAM,IAAI,SAAS,GAAG,IAAI,MAAM,MAAM;CAClD;CACA,IAAI,OAAO,SAAS,UAAU;EAC5B,MAAM,QAAQ,IAAI,gBAAgB;EAClC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAA+B,GACvE,MAAM,OAAO,KAAK,SAAS,OAAO,KAAK,OAAO,KAAK,CAAC;EAEtD,MAAM,YAAY,MAAM,SAAS;EACjC,IAAI,CAAC,WACH,OAAO;EAET,OAAO,GAAG,MAAM,IAAI,SAAS,GAAG,IAAI,MAAM,MAAM;CAClD;CACA,OAAO;AACT;AAEA,SAAgB,iBACd,QACA,MACA,SACA;CACA,IAAI,WAAW,SAAS,QAAQ,MAC9B;CAEF,IAAI,OAAO,SAAS,UAClB,OAAO;CAET,IAAI,OAAO,oBAAoB,eAAe,gBAAgB,iBAC5D,OAAO;CAET,IAAI,OAAO,aAAa,eAAe,gBAAgB,UACrD,OAAO;CAET,MAAM,iBAAiB,OAAO,KAAK,OAAO,CAAC,CAAC,MAAK,QAAO,IAAI,YAAY,MAAM,cAAc;CAC5F,MAAM,cAAc,iBAAiB,QAAQ,kBAAkB;CAC/D,IAAI,eAAe,CAAC,YAAY,SAAS,kBAAkB,GACzD,OAAO,OAAO,IAAI;CAEpB,IAAI,CAAC,gBACH,QAAQ,kBAAkB;CAE5B,OAAO,KAAK,UAAU,IAAI;AAC5B;AAEA,eAAsB,yBACpB,UACA,SACA;CACA,IAAI,SAAS,iBAAiB,eAC5B,OAAO,SAAS,YAAY;CAE9B,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,KAAK;CAC5D,IAAI,SAAS,aAAa,QACxB,OAAO,SAAS,KAAK;CAEvB,IAAI,SAAS,aAAa,UAAU,YAAY,SAAS,kBAAkB,GACzE,OAAO,SAAS,KAAK;CAEvB,OAAO,SAAS,KAAK;AACvB;AAEA,SAAgB,oBAAoB,MAAY;CAC9C,MAAM,aAAc,WAIjB;CACH,IAAI,cAAc,OAAO,WAAW,oBAAoB,YACtD,OAAO,WAAW,gBAAgB,IAAI;CAExC,OAAO;AACT;AAEA,SAAgB,uBAAuB,UAIpC;CACD,MAAM,UAAkC,CAAC;CACzC,SAAS,QAAQ,SAAS,OAAO,QAAQ;EACvC,QAAQ,OAAO;CACjB,CAAC;CACD,OAAO;AACT;AAEA,SAAgB,uBAAuB,SAAiC;CACtE,MAAM,aAAa,EAAE,GAAG,QAAQ;CAChC,KAAK,MAAM,OAAO,OAAO,KAAK,UAAU,GACtC,IAAI,IAAI,YAAY,MAAM,gBACxB,OAAO,WAAW;CAGtB,OAAO;AACT;AAEA,eAAsB,sBAAsB,SAA8B;CACxE,MAAM,MAAM,SAAS,KAAK,KAAK,KAAK;CACpC,IAAI,CAAC,KACH,MAAM,IAAI,UAAU,aAAa;CAEnC,MAAM,eAAe,gBAAgB;CACrC,IAAI,CAAC,cACH,MAAM,IAAI,UAAU,sBAAsB;CAE5C,MAAM,SAAS,uBAAuB,SAAS,MAAM;CACrD,MAAM,UAAU,wBAAwB,SAAS,MAAM;CACvD,MAAM,aAAa,gBAAgB,KAAK,QAAQ,SAAS,IAAI;CAC7D,MAAM,OAAO,iBAAiB,QAAQ,SAAS,MAAM,OAAO;CAE5D,MAAM,iBAAiB,qBADP,OAAO,SAAS,YAAY,YAAY,QAAQ,UAAU,IAAI,QAAQ,UAAU,CAC7C;CAEnD,IAAI;EACF,MAAM,WAAW,MAAM,aAAa,YAAY;GAC9C;GACA;GACA;GACA,QAAQ,eAAe;EACzB,CAAC;EAED,OAAO;GACL,MAAM,MAFmB,yBAAyB,UAAU,OAAO;GAGnE,YAAY,SAAS;GACrB,QAAQ,uBAAuB,QAAQ;EACzC;CACF,UACQ;EACN,eAAe,MAAM;CACvB;AACF;AAEA,eAAsB,uBAAuB,SAA+B;CAC1E,MAAM,MAAM,SAAS,KAAK,KAAK,KAAK;CACpC,IAAI,CAAC,KACH,MAAM,IAAI,UAAU,aAAa;CAEnC,MAAM,eAAe,gBAAgB;CACrC,IAAI,CAAC,cACH,MAAM,IAAI,UAAU,sBAAsB;CAE5C,MAAM,UAAU,wBAAwB,SAAS,MAAM;CAEvD,MAAM,iBAAiB,qBADP,OAAO,SAAS,YAAY,YAAY,QAAQ,UAAU,IAAI,QAAQ,UAAU,CAC7C;CAEnD,IAAI;EACF,MAAM,WAAW,MAAM,aAAa,KAAK;GACvC,QAAQ;GACR;GACA,QAAQ,eAAe;EACzB,CAAC;EAED,OAAO;GACL,cAAc,oBAAoB,MAFjB,SAAS,KAAK,CAEO,KAAK;GAC3C,YAAY,SAAS;EACvB;CACF,UACQ;EACN,eAAe,MAAM;CACvB;AACF;AAEA,eAAsB,qBAAqB,SAA6B;CACtE,MAAM,MAAM,SAAS,KAAK,KAAK,KAAK;CACpC,IAAI,CAAC,KACH,MAAM,IAAI,UAAU,aAAa;CAEnC,MAAM,WAAW,kBAAkB,SAAS,QAAQ;CACpD,IAAI,CAAC,UACH,MAAM,IAAI,UAAU,kBAAkB;CAExC,MAAM,eAAe,gBAAgB;CACrC,IAAI,CAAC,cACH,MAAM,IAAI,UAAU,sBAAsB;CAE5C,MAAM,eAAgB,WAA8C;CACpE,IAAI,OAAO,iBAAiB,YAC1B,MAAM,IAAI,UAAU,yBAAyB;CAG/C,MAAM,UAAU,uBAAuB,wBAAwB,SAAS,MAAM,CAAC;CAC/E,MAAM,WAAW,IAAI,aAAa;CAClC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,YAAY,CAAC,CAAC,GAC/D,SAAS,OAAO,KAAK,SAAS,OAAO,KAAK,OAAO,KAAK,CAAC;CAEzD,MAAM,OAAO,MAAM,sBAAsB,UAAU,YAAY;CAC/D,SAAS,OAAO,SAAS,MAAM,KAAK,KAAK,QAAQ,MAAM,sBAAsB,QAAQ,CAAC;CAGtF,MAAM,iBAAiB,qBADP,OAAO,SAAS,YAAY,YAAY,QAAQ,UAAU,IAAI,QAAQ,UAAU,CAC7C;CAEnD,IAAI;EACF,MAAM,WAAW,MAAM,aAAa,KAAK;GACvC,QAAQ;GACR;GACA,MAAM;GACN,QAAQ,eAAe;EACzB,CAAC;EAED,OAAO;GACL,YAFiB,SAAS,KAAK;GAG/B,YAAY,SAAS;GACrB,QAAQ,uBAAuB,QAAQ;EACzC;CACF,UACQ;EACN,eAAe,MAAM;CACvB;AACF"}
@@ -1,6 +1,6 @@
1
1
  import { callMiniProgramAsyncSuccess, scheduleMicrotask } from "./async.mjs";
2
- import { createInterstitialAdImpl, createRewardedVideoAdImpl } from "./ad.mjs";
3
2
  import { createLogManagerBridge, createUpdateManagerBridge, readExtConfigValue, readRuntimeConsole, reportAnalyticsEvent, resolveUpdateManagerPreset } from "./platformRuntime.mjs";
3
+ import { createInterstitialAdImpl, createRewardedVideoAdImpl } from "./ad.mjs";
4
4
 
5
5
  //#region src/runtime/polyfill/platformApi.ts
6
6
  function createRewardedVideoAdBridge(options) {
@@ -0,0 +1,88 @@
1
+ import { cloneLaunchOptions, resolveFallbackLaunchOptions } from "../appState.mjs";
2
+ import { isRecord } from "./options.mjs";
3
+
4
+ //#region src/runtime/polyfill/routeRuntime/appLifecycle.ts
5
+ function resolveEntryOptions(entry) {
6
+ return resolveFallbackLaunchOptions(entry ? [entry] : []);
7
+ }
8
+ function isDocumentHidden(target) {
9
+ return target.visibilityState === "hidden" || target.hidden === true;
10
+ }
11
+ var AppLifecycleRuntime = class {
12
+ resolveCurrentEntry;
13
+ #appInstance;
14
+ #foreground = false;
15
+ #lastEnterOptions;
16
+ #launchOptions;
17
+ #launched = false;
18
+ #visibilityDocument;
19
+ #visibilityHandler;
20
+ constructor(resolveCurrentEntry) {
21
+ this.resolveCurrentEntry = resolveCurrentEntry;
22
+ }
23
+ register(options) {
24
+ const resolved = options ?? {};
25
+ if (this.#appInstance) {
26
+ const currentGlobal = this.#appInstance.globalData;
27
+ Object.assign(this.#appInstance, resolved);
28
+ if (isRecord(currentGlobal)) this.#appInstance.globalData = currentGlobal;
29
+ else if (!isRecord(this.#appInstance.globalData)) this.#appInstance.globalData = {};
30
+ return options;
31
+ }
32
+ this.#appInstance = resolved;
33
+ if (!isRecord(this.#appInstance.globalData)) this.#appInstance.globalData = {};
34
+ return options;
35
+ }
36
+ bindVisibility(target = typeof document === "undefined" ? void 0 : document) {
37
+ if (!target || this.#visibilityDocument === target || typeof target.addEventListener !== "function") return;
38
+ this.#unbindVisibility();
39
+ this.#visibilityDocument = target;
40
+ this.#visibilityHandler = () => this.#syncVisibility(target);
41
+ target.addEventListener("visibilitychange", this.#visibilityHandler);
42
+ }
43
+ ensureLaunched(entry) {
44
+ if (!this.#appInstance || this.#launched) return;
45
+ const options = resolveEntryOptions(entry);
46
+ this.#launchOptions = cloneLaunchOptions(options);
47
+ this.#lastEnterOptions = cloneLaunchOptions(options);
48
+ this.#foreground = true;
49
+ this.#launched = true;
50
+ this.#appInstance.onLaunch?.(cloneLaunchOptions(options));
51
+ this.#appInstance.onShow?.(cloneLaunchOptions(options));
52
+ }
53
+ get instance() {
54
+ return this.#appInstance;
55
+ }
56
+ getLaunchOptions() {
57
+ return this.#launchOptions ? cloneLaunchOptions(this.#launchOptions) : resolveEntryOptions(this.resolveCurrentEntry());
58
+ }
59
+ getEnterOptions() {
60
+ return this.#lastEnterOptions ? cloneLaunchOptions(this.#lastEnterOptions) : this.getLaunchOptions();
61
+ }
62
+ dispose() {
63
+ this.#unbindVisibility();
64
+ }
65
+ #syncVisibility(target) {
66
+ if (!this.#appInstance || !this.#launched) return;
67
+ if (isDocumentHidden(target)) {
68
+ if (!this.#foreground) return;
69
+ this.#appInstance.onHide?.();
70
+ this.#foreground = false;
71
+ return;
72
+ }
73
+ if (this.#foreground) return;
74
+ const options = resolveEntryOptions(this.resolveCurrentEntry());
75
+ this.#lastEnterOptions = cloneLaunchOptions(options);
76
+ this.#appInstance.onShow?.(cloneLaunchOptions(options));
77
+ this.#foreground = true;
78
+ }
79
+ #unbindVisibility() {
80
+ if (this.#visibilityDocument && this.#visibilityHandler) this.#visibilityDocument.removeEventListener("visibilitychange", this.#visibilityHandler);
81
+ this.#visibilityDocument = void 0;
82
+ this.#visibilityHandler = void 0;
83
+ }
84
+ };
85
+
86
+ //#endregion
87
+ export { AppLifecycleRuntime };
88
+ //# sourceMappingURL=appLifecycle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appLifecycle.mjs","names":["#appInstance","#visibilityDocument","#unbindVisibility","#visibilityHandler","#syncVisibility","#launched","#launchOptions","#lastEnterOptions","#foreground"],"sources":["../../../../src/runtime/polyfill/routeRuntime/appLifecycle.ts"],"sourcesContent":["import type { AppLaunchOptions, AppRuntime, PageStackEntry } from './options'\nimport { cloneLaunchOptions, resolveFallbackLaunchOptions } from '../appState'\nimport { isRecord } from './options'\n\ntype VisibilityDocument = Pick<Document, 'addEventListener' | 'hidden' | 'removeEventListener' | 'visibilityState'>\n\nfunction resolveEntryOptions(entry: Pick<PageStackEntry, 'id' | 'query'> | undefined): AppLaunchOptions {\n return resolveFallbackLaunchOptions(entry ? [entry] : [])\n}\n\nfunction isDocumentHidden(target: VisibilityDocument) {\n return target.visibilityState === 'hidden' || target.hidden === true\n}\n\nexport class AppLifecycleRuntime {\n #appInstance: AppRuntime | undefined\n #foreground = false\n #lastEnterOptions: AppLaunchOptions | undefined\n #launchOptions: AppLaunchOptions | undefined\n #launched = false\n #visibilityDocument: VisibilityDocument | undefined\n #visibilityHandler: (() => void) | undefined\n\n constructor(private readonly resolveCurrentEntry: () => PageStackEntry | undefined) {}\n\n register<T extends AppRuntime | undefined>(options: T): T {\n const resolved = (options ?? {}) as AppRuntime\n if (this.#appInstance) {\n const currentGlobal = this.#appInstance.globalData\n Object.assign(this.#appInstance, resolved)\n if (isRecord(currentGlobal)) {\n this.#appInstance.globalData = currentGlobal\n }\n else if (!isRecord(this.#appInstance.globalData)) {\n this.#appInstance.globalData = {}\n }\n return options\n }\n this.#appInstance = resolved\n if (!isRecord(this.#appInstance.globalData)) {\n this.#appInstance.globalData = {}\n }\n return options\n }\n\n bindVisibility(target: VisibilityDocument | undefined = typeof document === 'undefined' ? undefined : document) {\n if (!target || this.#visibilityDocument === target || typeof target.addEventListener !== 'function') {\n return\n }\n this.#unbindVisibility()\n this.#visibilityDocument = target\n this.#visibilityHandler = () => this.#syncVisibility(target)\n target.addEventListener('visibilitychange', this.#visibilityHandler)\n }\n\n ensureLaunched(entry: PageStackEntry) {\n if (!this.#appInstance || this.#launched) {\n return\n }\n const options = resolveEntryOptions(entry)\n this.#launchOptions = cloneLaunchOptions(options)\n this.#lastEnterOptions = cloneLaunchOptions(options)\n this.#foreground = true\n this.#launched = true\n this.#appInstance.onLaunch?.(cloneLaunchOptions(options))\n this.#appInstance.onShow?.(cloneLaunchOptions(options))\n }\n\n get instance() {\n return this.#appInstance\n }\n\n getLaunchOptions() {\n return this.#launchOptions\n ? cloneLaunchOptions(this.#launchOptions)\n : resolveEntryOptions(this.resolveCurrentEntry())\n }\n\n getEnterOptions() {\n return this.#lastEnterOptions\n ? cloneLaunchOptions(this.#lastEnterOptions)\n : this.getLaunchOptions()\n }\n\n dispose() {\n this.#unbindVisibility()\n }\n\n #syncVisibility(target: VisibilityDocument) {\n if (!this.#appInstance || !this.#launched) {\n return\n }\n if (isDocumentHidden(target)) {\n if (!this.#foreground) {\n return\n }\n this.#appInstance.onHide?.()\n this.#foreground = false\n return\n }\n if (this.#foreground) {\n return\n }\n const options = resolveEntryOptions(this.resolveCurrentEntry())\n this.#lastEnterOptions = cloneLaunchOptions(options)\n this.#appInstance.onShow?.(cloneLaunchOptions(options))\n this.#foreground = true\n }\n\n #unbindVisibility() {\n if (this.#visibilityDocument && this.#visibilityHandler) {\n this.#visibilityDocument.removeEventListener('visibilitychange', this.#visibilityHandler)\n }\n this.#visibilityDocument = undefined\n this.#visibilityHandler = undefined\n }\n}\n"],"mappings":";;;;AAMA,SAAS,oBAAoB,OAA2E;CACtG,OAAO,6BAA6B,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1D;AAEA,SAAS,iBAAiB,QAA4B;CACpD,OAAO,OAAO,oBAAoB,YAAY,OAAO,WAAW;AAClE;AAEA,IAAa,sBAAb,MAAiC;CASF;CAR7B;CACA,cAAc;CACd;CACA;CACA,YAAY;CACZ;CACA;CAEA,YAAY,AAAiB,qBAAuD;EAAvD;CAAwD;CAErF,SAA2C,SAAe;EACxD,MAAM,WAAY,WAAW,CAAC;EAC9B,IAAI,KAAKA,cAAc;GACrB,MAAM,gBAAgB,KAAKA,aAAa;GACxC,OAAO,OAAO,KAAKA,cAAc,QAAQ;GACzC,IAAI,SAAS,aAAa,GACxB,KAAKA,aAAa,aAAa;QAE5B,IAAI,CAAC,SAAS,KAAKA,aAAa,UAAU,GAC7C,KAAKA,aAAa,aAAa,CAAC;GAElC,OAAO;EACT;EACA,KAAKA,eAAe;EACpB,IAAI,CAAC,SAAS,KAAKA,aAAa,UAAU,GACxC,KAAKA,aAAa,aAAa,CAAC;EAElC,OAAO;CACT;CAEA,eAAe,SAAyC,OAAO,aAAa,cAAc,SAAY,UAAU;EAC9G,IAAI,CAAC,UAAU,KAAKC,wBAAwB,UAAU,OAAO,OAAO,qBAAqB,YACvF;EAEF,KAAKC,kBAAkB;EACvB,KAAKD,sBAAsB;EAC3B,KAAKE,2BAA2B,KAAKC,gBAAgB,MAAM;EAC3D,OAAO,iBAAiB,oBAAoB,KAAKD,kBAAkB;CACrE;CAEA,eAAe,OAAuB;EACpC,IAAI,CAAC,KAAKH,gBAAgB,KAAKK,WAC7B;EAEF,MAAM,UAAU,oBAAoB,KAAK;EACzC,KAAKC,iBAAiB,mBAAmB,OAAO;EAChD,KAAKC,oBAAoB,mBAAmB,OAAO;EACnD,KAAKC,cAAc;EACnB,KAAKH,YAAY;EACjB,KAAKL,aAAa,WAAW,mBAAmB,OAAO,CAAC;EACxD,KAAKA,aAAa,SAAS,mBAAmB,OAAO,CAAC;CACxD;CAEA,IAAI,WAAW;EACb,OAAO,KAAKA;CACd;CAEA,mBAAmB;EACjB,OAAO,KAAKM,iBACR,mBAAmB,KAAKA,cAAc,IACtC,oBAAoB,KAAK,oBAAoB,CAAC;CACpD;CAEA,kBAAkB;EAChB,OAAO,KAAKC,oBACR,mBAAmB,KAAKA,iBAAiB,IACzC,KAAK,iBAAiB;CAC5B;CAEA,UAAU;EACR,KAAKL,kBAAkB;CACzB;CAEA,gBAAgB,QAA4B;EAC1C,IAAI,CAAC,KAAKF,gBAAgB,CAAC,KAAKK,WAC9B;EAEF,IAAI,iBAAiB,MAAM,GAAG;GAC5B,IAAI,CAAC,KAAKG,aACR;GAEF,KAAKR,aAAa,SAAS;GAC3B,KAAKQ,cAAc;GACnB;EACF;EACA,IAAI,KAAKA,aACP;EAEF,MAAM,UAAU,oBAAoB,KAAK,oBAAoB,CAAC;EAC9D,KAAKD,oBAAoB,mBAAmB,OAAO;EACnD,KAAKP,aAAa,SAAS,mBAAmB,OAAO,CAAC;EACtD,KAAKQ,cAAc;CACrB;CAEA,oBAAoB;EAClB,IAAI,KAAKP,uBAAuB,KAAKE,oBACnC,KAAKF,oBAAoB,oBAAoB,oBAAoB,KAAKE,kBAAkB;EAE1F,KAAKF,sBAAsB;EAC3B,KAAKE,qBAAqB;CAC5B;AACF"}
@@ -1,36 +1,65 @@
1
+ import { ensureAppContainer, onDocumentReady } from "../../appShell/container.mjs";
1
2
  import { attachRouteMeta } from "./lifecycle.mjs";
3
+ import { bindPageScrollOwner, getPageContainer, restoreEntryScrollPosition, setEntryScrollOwner } from "./scroll.mjs";
2
4
 
3
5
  //#region src/runtime/polyfill/routeRuntime/dom.ts
4
- function ensureDocumentReady(callback) {
5
- if (typeof document === "undefined") return;
6
- if (document.readyState === "loading") {
7
- document.addEventListener("DOMContentLoaded", () => callback(), { once: true });
6
+ function applyEntryVisibility(entry) {
7
+ const element = entry.element;
8
+ if (!element) return;
9
+ const styleWithoutDisplay = (element.getAttribute("style") ?? "").replace(/(?:^|;)\s*display\s*:[^;]*/gi, "").replace(/^;|;$/g, "");
10
+ const setDisplay = (display) => {
11
+ element.setAttribute("style", `${styleWithoutDisplay}${styleWithoutDisplay ? ";" : ""}display:${display};`);
12
+ };
13
+ element.setAttribute("data-weapp-page-active", entry.active ? "true" : "false");
14
+ setEntryScrollOwner(entry, entry.active);
15
+ if (entry.active) {
16
+ setDisplay("block");
17
+ element.removeAttribute("hidden");
18
+ element.removeAttribute("aria-hidden");
8
19
  return;
9
20
  }
10
- callback();
21
+ setDisplay("none");
22
+ element.setAttribute("hidden", "");
23
+ element.setAttribute("aria-hidden", "true");
11
24
  }
12
- function ensureContainer() {
13
- if (typeof document === "undefined") return;
14
- return document.querySelector("#app") ?? document.body;
25
+ function setEntryActiveInDom(entry, active) {
26
+ entry.active = active;
27
+ applyEntryVisibility(entry);
15
28
  }
16
- function mountEntryToDom(entry, pageRegistry, onMounted) {
29
+ function unmountEntryFromDom(entry) {
30
+ setEntryScrollOwner(entry, false);
31
+ const element = entry.element;
32
+ if (!element) {
33
+ entry.instance = void 0;
34
+ return;
35
+ }
36
+ if (element.parentNode) element.parentNode.removeChild(element);
37
+ entry.element = void 0;
38
+ entry.instance = void 0;
39
+ }
40
+ function mountEntryToDom(entry, pageRegistry, onBeforeMount) {
17
41
  const record = pageRegistry.get(entry.id);
18
- if (!record) return;
19
- ensureDocumentReady(() => {
20
- const container = ensureContainer();
42
+ if (!record || entry.element) return;
43
+ onDocumentReady(() => {
44
+ const container = ensureAppContainer();
21
45
  if (!container) return;
22
- while (container.childNodes.length) container.removeChild(container.childNodes[0]);
46
+ bindPageScrollOwner(container);
47
+ onBeforeMount(entry);
23
48
  const element = document.createElement(record.tag);
49
+ element.setAttribute("data-weapp-page", entry.id);
50
+ element.setAttribute("style", "display:block;min-height:100%;box-sizing:border-box;padding-bottom:var(--weapp-tab-bar-inset, 0px);padding-top:var(--weapp-tab-bar-top-inset, 0px);");
51
+ entry.element = element;
52
+ applyEntryVisibility(entry);
24
53
  attachRouteMeta(element, {
25
54
  id: entry.id,
26
55
  query: entry.query,
27
56
  entry
28
57
  });
29
58
  container.append(element);
30
- onMounted(entry);
59
+ if (entry.active) restoreEntryScrollPosition(entry);
31
60
  });
32
61
  }
33
62
 
34
63
  //#endregion
35
- export { mountEntryToDom };
64
+ export { mountEntryToDom, setEntryActiveInDom, unmountEntryFromDom };
36
65
  //# sourceMappingURL=dom.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/dom.ts"],"sourcesContent":["import type { ComponentPublicInstance } from '../../component'\nimport type { PageRecord, PageStackEntry } from './options'\nimport { attachRouteMeta } from './lifecycle'\n\nfunction ensureDocumentReady(callback: () => void) {\n if (typeof document === 'undefined') {\n return\n }\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => callback(), { once: true })\n return\n }\n callback()\n}\n\nfunction ensureContainer(): HTMLElement | undefined {\n if (typeof document === 'undefined') {\n return undefined\n }\n return (document.querySelector('#app') as HTMLElement | null) ?? document.body\n}\n\nexport function mountEntryToDom(\n entry: PageStackEntry,\n pageRegistry: Map<string, PageRecord>,\n onMounted: (entry: PageStackEntry) => void,\n) {\n const record = pageRegistry.get(entry.id)\n if (!record) {\n return\n }\n ensureDocumentReady(() => {\n const container = ensureContainer()\n if (!container) {\n return\n }\n while (container.childNodes.length) {\n container.removeChild(container.childNodes[0]!)\n }\n const element = document.createElement(record.tag) as HTMLElement & ComponentPublicInstance\n attachRouteMeta(element, {\n id: entry.id,\n query: entry.query,\n entry,\n })\n container.append(element)\n onMounted(entry)\n })\n}\n"],"mappings":";;;AAIA,SAAS,oBAAoB,UAAsB;CACjD,IAAI,OAAO,aAAa,aACtB;CAEF,IAAI,SAAS,eAAe,WAAW;EACrC,SAAS,iBAAiB,0BAA0B,SAAS,GAAG,EAAE,MAAM,KAAK,CAAC;EAC9E;CACF;CACA,SAAS;AACX;AAEA,SAAS,kBAA2C;CAClD,IAAI,OAAO,aAAa,aACtB;CAEF,OAAQ,SAAS,cAAc,MAAM,KAA4B,SAAS;AAC5E;AAEA,SAAgB,gBACd,OACA,cACA,WACA;CACA,MAAM,SAAS,aAAa,IAAI,MAAM,EAAE;CACxC,IAAI,CAAC,QACH;CAEF,0BAA0B;EACxB,MAAM,YAAY,gBAAgB;EAClC,IAAI,CAAC,WACH;EAEF,OAAO,UAAU,WAAW,QAC1B,UAAU,YAAY,UAAU,WAAW,EAAG;EAEhD,MAAM,UAAU,SAAS,cAAc,OAAO,GAAG;EACjD,gBAAgB,SAAS;GACvB,IAAI,MAAM;GACV,OAAO,MAAM;GACb;EACF,CAAC;EACD,UAAU,OAAO,OAAO;EACxB,UAAU,KAAK;CACjB,CAAC;AACH"}
1
+ {"version":3,"file":"dom.mjs","names":[],"sources":["../../../../src/runtime/polyfill/routeRuntime/dom.ts"],"sourcesContent":["import type { ComponentPublicInstance } from '../../component'\nimport type { PageRecord, PageStackEntry } from './options'\nimport { ensureAppContainer, onDocumentReady } from '../../appShell/container'\nimport { attachRouteMeta } from './lifecycle'\nimport {\n bindPageScrollOwner,\n restoreEntryScrollPosition,\n setEntryScrollOwner,\n} from './scroll'\n\nfunction applyEntryVisibility(entry: PageStackEntry) {\n const element = entry.element\n if (!element) {\n return\n }\n const currentStyle = element.getAttribute('style') ?? ''\n const styleWithoutDisplay = currentStyle\n .replace(/(?:^|;)\\s*display\\s*:[^;]*/gi, '')\n .replace(/^;|;$/g, '')\n const setDisplay = (display: 'block' | 'none') => {\n element.setAttribute('style', `${styleWithoutDisplay}${styleWithoutDisplay ? ';' : ''}display:${display};`)\n }\n element.setAttribute('data-weapp-page-active', entry.active ? 'true' : 'false')\n setEntryScrollOwner(entry, entry.active)\n if (entry.active) {\n setDisplay('block')\n element.removeAttribute('hidden')\n element.removeAttribute('aria-hidden')\n return\n }\n // 自定义页面元素挂载时带有内联 display,必须同步清零才能真正隐藏。\n setDisplay('none')\n element.setAttribute('hidden', '')\n element.setAttribute('aria-hidden', 'true')\n}\n\nexport function setEntryActiveInDom(entry: PageStackEntry, active: boolean) {\n entry.active = active\n applyEntryVisibility(entry)\n}\n\nexport function unmountEntryFromDom(entry: PageStackEntry) {\n setEntryScrollOwner(entry, false)\n const element = entry.element\n if (!element) {\n entry.instance = undefined\n return\n }\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n entry.element = undefined\n entry.instance = undefined\n}\n\nexport function mountEntryToDom(\n entry: PageStackEntry,\n pageRegistry: Map<string, PageRecord>,\n onBeforeMount: (entry: PageStackEntry) => void,\n) {\n const record = pageRegistry.get(entry.id)\n if (!record || entry.element) {\n return\n }\n onDocumentReady(() => {\n const container = ensureAppContainer()\n if (!container) {\n return\n }\n bindPageScrollOwner(container)\n onBeforeMount(entry)\n const element = document.createElement(record.tag) as HTMLElement & ComponentPublicInstance\n element.setAttribute('data-weapp-page', entry.id)\n element.setAttribute('style', 'display:block;min-height:100%;box-sizing:border-box;padding-bottom:var(--weapp-tab-bar-inset, 0px);padding-top:var(--weapp-tab-bar-top-inset, 0px);')\n entry.element = element\n applyEntryVisibility(entry)\n attachRouteMeta(element, {\n id: entry.id,\n query: entry.query,\n entry,\n })\n container.append(element)\n if (entry.active) {\n restoreEntryScrollPosition(entry)\n }\n })\n}\n\nexport { getPageContainer } from './scroll'\n"],"mappings":";;;;;AAUA,SAAS,qBAAqB,OAAuB;CACnD,MAAM,UAAU,MAAM;CACtB,IAAI,CAAC,SACH;CAGF,MAAM,uBADe,QAAQ,aAAa,OAAO,KAAK,GACd,CACrC,QAAQ,gCAAgC,EAAE,CAAC,CAC3C,QAAQ,UAAU,EAAE;CACvB,MAAM,cAAc,YAA8B;EAChD,QAAQ,aAAa,SAAS,GAAG,sBAAsB,sBAAsB,MAAM,GAAG,UAAU,QAAQ,EAAE;CAC5G;CACA,QAAQ,aAAa,0BAA0B,MAAM,SAAS,SAAS,OAAO;CAC9E,oBAAoB,OAAO,MAAM,MAAM;CACvC,IAAI,MAAM,QAAQ;EAChB,WAAW,OAAO;EAClB,QAAQ,gBAAgB,QAAQ;EAChC,QAAQ,gBAAgB,aAAa;EACrC;CACF;CAEA,WAAW,MAAM;CACjB,QAAQ,aAAa,UAAU,EAAE;CACjC,QAAQ,aAAa,eAAe,MAAM;AAC5C;AAEA,SAAgB,oBAAoB,OAAuB,QAAiB;CAC1E,MAAM,SAAS;CACf,qBAAqB,KAAK;AAC5B;AAEA,SAAgB,oBAAoB,OAAuB;CACzD,oBAAoB,OAAO,KAAK;CAChC,MAAM,UAAU,MAAM;CACtB,IAAI,CAAC,SAAS;EACZ,MAAM,WAAW;EACjB;CACF;CACA,IAAI,QAAQ,YACV,QAAQ,WAAW,YAAY,OAAO;CAExC,MAAM,UAAU;CAChB,MAAM,WAAW;AACnB;AAEA,SAAgB,gBACd,OACA,cACA,eACA;CACA,MAAM,SAAS,aAAa,IAAI,MAAM,EAAE;CACxC,IAAI,CAAC,UAAU,MAAM,SACnB;CAEF,sBAAsB;EACpB,MAAM,YAAY,mBAAmB;EACrC,IAAI,CAAC,WACH;EAEF,oBAAoB,SAAS;EAC7B,cAAc,KAAK;EACnB,MAAM,UAAU,SAAS,cAAc,OAAO,GAAG;EACjD,QAAQ,aAAa,mBAAmB,MAAM,EAAE;EAChD,QAAQ,aAAa,SAAS,qJAAqJ;EACnL,MAAM,UAAU;EAChB,qBAAqB,KAAK;EAC1B,gBAAgB,SAAS;GACvB,IAAI,MAAM;GACV,OAAO,MAAM;GACb;EACF,CAAC;EACD,UAAU,OAAO,OAAO;EACxB,IAAI,MAAM,QACR,2BAA2B,KAAK;CAEpC,CAAC;AACH"}
@@ -0,0 +1,30 @@
1
+ import "./options.mjs";
2
+ //#region src/runtime/polyfill/routeRuntime/history.d.ts
3
+ type WebRoutingMode = 'memory' | 'history' | 'hash';
4
+ interface WebRoutingConfig {
5
+ mode?: WebRoutingMode;
6
+ /** 部署目录前缀,例如 /mini-program。 */
7
+ base?: string;
8
+ }
9
+ interface ResolvedWebRoutingConfig {
10
+ mode: WebRoutingMode;
11
+ base: string;
12
+ }
13
+ interface WebRouteTarget {
14
+ id: string;
15
+ query: Record<string, string>;
16
+ }
17
+ interface WebRouteHistoryState {
18
+ __weappWebRuntime?: {
19
+ stack: WebRouteTarget[];
20
+ };
21
+ }
22
+ declare function resolveWebRoutingConfig(config?: WebRoutingConfig): ResolvedWebRoutingConfig;
23
+ declare function disposeWebRouting(): void;
24
+ declare function getWebRoutingConfig(): {
25
+ mode: WebRoutingMode;
26
+ base: string;
27
+ };
28
+ //#endregion
29
+ export { ResolvedWebRoutingConfig, WebRouteHistoryState, WebRouteTarget, WebRoutingConfig, WebRoutingMode, disposeWebRouting, getWebRoutingConfig, resolveWebRoutingConfig };
30
+ //# sourceMappingURL=history.d.mts.map
@@ -0,0 +1,148 @@
1
+ //#region src/runtime/polyfill/routeRuntime/history.ts
2
+ const DEFAULT_CONFIG = {
3
+ mode: "memory",
4
+ base: "/"
5
+ };
6
+ let resolvedConfig = { ...DEFAULT_CONFIG };
7
+ let knownPageIds = /* @__PURE__ */ new Set();
8
+ let popstateHandler;
9
+ let hashchangeHandler;
10
+ let scrollRestorationHistory;
11
+ let previousScrollRestoration;
12
+ function normalizeBase(base) {
13
+ if (!base?.trim()) return "/";
14
+ return base.trim().replace(/\\/g, "/").replace(/^\/*/, "/").replace(/\/*$/, "") || "/";
15
+ }
16
+ function resolveWebRoutingConfig(config) {
17
+ return {
18
+ mode: config?.mode === "history" || config?.mode === "hash" ? config.mode : "memory",
19
+ base: normalizeBase(config?.base)
20
+ };
21
+ }
22
+ function isBrowserHistoryAvailable() {
23
+ return typeof window !== "undefined" && typeof window.history?.pushState === "function" && typeof window.history?.replaceState === "function";
24
+ }
25
+ function bindManualScrollRestoration() {
26
+ if (typeof window === "undefined" || !("scrollRestoration" in window.history)) return;
27
+ scrollRestorationHistory = window.history;
28
+ previousScrollRestoration = window.history.scrollRestoration;
29
+ window.history.scrollRestoration = "manual";
30
+ }
31
+ function restoreBrowserScrollRestoration() {
32
+ if (scrollRestorationHistory && previousScrollRestoration) scrollRestorationHistory.scrollRestoration = previousScrollRestoration;
33
+ scrollRestorationHistory = void 0;
34
+ previousScrollRestoration = void 0;
35
+ }
36
+ function normalizePath(path) {
37
+ return decodeURIComponent(path || "/").split("?")[0].replace(/^\/+/, "").replace(/\/+$/, "").replace(/\.html$/, "");
38
+ }
39
+ function parseQuery(search) {
40
+ const query = {};
41
+ const params = new URLSearchParams(search.startsWith("?") ? search : `?${search}`);
42
+ for (const [key, value] of params.entries()) query[key] = value;
43
+ return query;
44
+ }
45
+ function toQueryString(query) {
46
+ const params = new URLSearchParams();
47
+ for (const [key, value] of Object.entries(query)) params.set(key, value);
48
+ const search = params.toString();
49
+ return search ? `?${search}` : "";
50
+ }
51
+ function resolvePageId(path) {
52
+ const normalized = normalizePath(path);
53
+ if (knownPageIds.has(normalized)) return normalized;
54
+ const indexId = `${normalized}/index`;
55
+ if (knownPageIds.has(indexId)) return indexId;
56
+ }
57
+ function resolveTargetFromUrl(url) {
58
+ if (resolvedConfig.mode === "hash") {
59
+ const [path, query = ""] = url.hash.replace(/^#\/?/, "").split("?");
60
+ const id = resolvePageId(path);
61
+ return id ? {
62
+ id,
63
+ query: parseQuery(query)
64
+ } : void 0;
65
+ }
66
+ const base = resolvedConfig.base === "/" ? "" : resolvedConfig.base;
67
+ const id = resolvePageId(!base || url.pathname === base || url.pathname.startsWith(`${base}/`) ? url.pathname.slice(base.length) : url.pathname);
68
+ return id ? {
69
+ id,
70
+ query: parseQuery(url.search)
71
+ } : void 0;
72
+ }
73
+ function readWebRouteTarget(pageIds, url) {
74
+ knownPageIds = new Set(pageIds);
75
+ if (resolvedConfig.mode === "memory" || typeof URL === "undefined") return;
76
+ const runtimeUrl = url ?? (typeof window !== "undefined" ? window.location.href : void 0);
77
+ if (!runtimeUrl) return;
78
+ try {
79
+ return resolveTargetFromUrl(new URL(runtimeUrl, "http://weapp-vite.local"));
80
+ } catch {
81
+ return;
82
+ }
83
+ }
84
+ function formatRouteUrl(target) {
85
+ const query = toQueryString(target.query);
86
+ const path = `${target.id}${query}`;
87
+ if (resolvedConfig.mode === "hash") return `${resolvedConfig.base === "/" ? "" : resolvedConfig.base}/#/${path}`;
88
+ return `${resolvedConfig.base === "/" ? "" : resolvedConfig.base}/${path}`;
89
+ }
90
+ function toHistoryState(entries) {
91
+ return { __weappWebRuntime: { stack: entries.map((entry) => ({
92
+ id: entry.id,
93
+ query: { ...entry.query }
94
+ })) } };
95
+ }
96
+ function disposeWebRouting() {
97
+ if (typeof window !== "undefined") {
98
+ if (popstateHandler) window.removeEventListener("popstate", popstateHandler);
99
+ if (hashchangeHandler) window.removeEventListener("hashchange", hashchangeHandler);
100
+ }
101
+ popstateHandler = void 0;
102
+ hashchangeHandler = void 0;
103
+ restoreBrowserScrollRestoration();
104
+ resolvedConfig = { ...DEFAULT_CONFIG };
105
+ knownPageIds = /* @__PURE__ */ new Set();
106
+ }
107
+ function configureWebRouting(config, pageIds, onPopState) {
108
+ disposeWebRouting();
109
+ resolvedConfig = resolveWebRoutingConfig(config);
110
+ knownPageIds = new Set(pageIds);
111
+ if (resolvedConfig.mode === "memory" || typeof window === "undefined") return resolvedConfig;
112
+ bindManualScrollRestoration();
113
+ popstateHandler = () => {
114
+ const state = window.history.state;
115
+ onPopState(readWebRouteTarget(pageIds), state);
116
+ };
117
+ window.addEventListener("popstate", popstateHandler);
118
+ if (resolvedConfig.mode === "hash") {
119
+ hashchangeHandler = () => {
120
+ const state = window.history.state;
121
+ onPopState(readWebRouteTarget(pageIds), state);
122
+ };
123
+ window.addEventListener("hashchange", hashchangeHandler);
124
+ }
125
+ return resolvedConfig;
126
+ }
127
+ function syncWebRouting(entries, operation) {
128
+ if (resolvedConfig.mode === "memory" || !isBrowserHistoryAvailable() || !entries.length) return;
129
+ const target = entries[entries.length - 1];
130
+ const url = formatRouteUrl({
131
+ id: target.id,
132
+ query: target.query
133
+ });
134
+ const state = toHistoryState(entries);
135
+ if (operation === "push") window.history.pushState(state, "", url);
136
+ else window.history.replaceState(state, "", url);
137
+ }
138
+ function getWebHistoryStack(state) {
139
+ const stack = state?.__weappWebRuntime?.stack;
140
+ return Array.isArray(stack) ? stack : void 0;
141
+ }
142
+ function getWebRoutingConfig() {
143
+ return { ...resolvedConfig };
144
+ }
145
+
146
+ //#endregion
147
+ export { configureWebRouting, disposeWebRouting, getWebHistoryStack, getWebRoutingConfig, readWebRouteTarget, resolveWebRoutingConfig, syncWebRouting };
148
+ //# sourceMappingURL=history.mjs.map