@weapp-vite/web 1.3.37 → 1.4.1

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 (334) 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 +16 -12
  14. package/dist/compiler/wxml/renderer.mjs.map +1 -1
  15. package/dist/compiler/wxml/specialNodes.mjs +8 -2
  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 +24 -6
  24. package/dist/index.mjs +21 -4
  25. package/dist/plugin/assets.d.mts +7 -0
  26. package/dist/plugin/assets.mjs +122 -0
  27. package/dist/plugin/assets.mjs.map +1 -0
  28. package/dist/plugin/constants.mjs +10 -1
  29. package/dist/plugin/constants.mjs.map +1 -1
  30. package/dist/plugin/dependencyScan.mjs +41 -0
  31. package/dist/plugin/dependencyScan.mjs.map +1 -0
  32. package/dist/plugin/entry.mjs +55 -6
  33. package/dist/plugin/entry.mjs.map +1 -1
  34. package/dist/plugin/files.mjs +1 -1
  35. package/dist/plugin/files.mjs.map +1 -1
  36. package/dist/plugin/index.d.mts +37 -3
  37. package/dist/plugin/index.mjs +244 -73
  38. package/dist/plugin/index.mjs.map +1 -1
  39. package/dist/plugin/layout.mjs +24 -0
  40. package/dist/plugin/layout.mjs.map +1 -0
  41. package/dist/plugin/path.mjs +6 -2
  42. package/dist/plugin/path.mjs.map +1 -1
  43. package/dist/plugin/register.mjs +45 -33
  44. package/dist/plugin/register.mjs.map +1 -1
  45. package/dist/plugin/scan.mjs +211 -92
  46. package/dist/plugin/scan.mjs.map +1 -1
  47. package/dist/plugin/scanSfc.mjs +65 -0
  48. package/dist/plugin/scanSfc.mjs.map +1 -0
  49. package/dist/plugin/state.mjs +3 -2
  50. package/dist/plugin/state.mjs.map +1 -1
  51. package/dist/plugin/styleModule.mjs +52 -0
  52. package/dist/plugin/styleModule.mjs.map +1 -0
  53. package/dist/plugin/types.d.mts +37 -1
  54. package/dist/plugin/vueSfc.mjs +150 -0
  55. package/dist/plugin/vueSfc.mjs.map +1 -0
  56. package/dist/runtime/appShell/container.mjs +25 -0
  57. package/dist/runtime/appShell/container.mjs.map +1 -0
  58. package/dist/runtime/appShell/tabBar/index.mjs +192 -0
  59. package/dist/runtime/appShell/tabBar/index.mjs.map +1 -0
  60. package/dist/runtime/appShell/tabBar/style.mjs +127 -0
  61. package/dist/runtime/appShell/tabBar/style.mjs.map +1 -0
  62. package/dist/runtime/button/helpers.mjs +1 -58
  63. package/dist/runtime/button/helpers.mjs.map +1 -1
  64. package/dist/runtime/button/index.d.mts +4 -5
  65. package/dist/runtime/button/index.mjs +6 -28
  66. package/dist/runtime/button/index.mjs.map +1 -1
  67. package/dist/runtime/button/style.mjs +53 -28
  68. package/dist/runtime/button/style.mjs.map +1 -1
  69. package/dist/runtime/component/behavior.mjs +26 -2
  70. package/dist/runtime/component/behavior.mjs.map +1 -1
  71. package/dist/runtime/component/element.mjs +107 -31
  72. package/dist/runtime/component/element.mjs.map +1 -1
  73. package/dist/runtime/component/observers.mjs +36 -0
  74. package/dist/runtime/component/observers.mjs.map +1 -0
  75. package/dist/runtime/component/publicInstance.mjs +48 -0
  76. package/dist/runtime/component/publicInstance.mjs.map +1 -0
  77. package/dist/runtime/component/relations.mjs +36 -0
  78. package/dist/runtime/component/relations.mjs.map +1 -0
  79. package/dist/runtime/component/slots.mjs +24 -0
  80. package/dist/runtime/component/slots.mjs.map +1 -0
  81. package/dist/runtime/component/state.mjs +13 -3
  82. package/dist/runtime/component/state.mjs.map +1 -1
  83. package/dist/runtime/component/types.d.mts +29 -4
  84. package/dist/runtime/component/virtualHost.mjs +83 -0
  85. package/dist/runtime/component/virtualHost.mjs.map +1 -0
  86. package/dist/runtime/host/index.d.mts +13 -0
  87. package/dist/runtime/host/index.mjs +47 -0
  88. package/dist/runtime/host/index.mjs.map +1 -0
  89. package/dist/runtime/host/types.d.mts +28 -0
  90. package/dist/runtime/hostGlobals.d.mts +9 -0
  91. package/dist/runtime/hostGlobals.mjs +39 -0
  92. package/dist/runtime/hostGlobals.mjs.map +1 -0
  93. package/dist/runtime/index.d.mts +21 -3
  94. package/dist/runtime/index.mjs +26 -4
  95. package/dist/runtime/index.mjs.map +1 -0
  96. package/dist/runtime/legacyTemplate/dom.mjs +3 -3
  97. package/dist/runtime/legacyTemplate/dom.mjs.map +1 -1
  98. package/dist/runtime/legacyTemplate/expression.mjs +9 -9
  99. package/dist/runtime/legacyTemplate/expression.mjs.map +1 -1
  100. package/dist/runtime/legacyTemplate/index.mjs +6 -6
  101. package/dist/runtime/legacyTemplate/index.mjs.map +1 -1
  102. package/dist/runtime/nativeComponents/canvas/index.mjs +53 -0
  103. package/dist/runtime/nativeComponents/canvas/index.mjs.map +1 -0
  104. package/dist/runtime/nativeComponents/checkbox.mjs +137 -0
  105. package/dist/runtime/nativeComponents/checkbox.mjs.map +1 -0
  106. package/dist/runtime/nativeComponents/cover/index.mjs +23 -0
  107. package/dist/runtime/nativeComponents/cover/index.mjs.map +1 -0
  108. package/dist/runtime/nativeComponents/form.d.mts +7 -0
  109. package/dist/runtime/nativeComponents/form.mjs +50 -0
  110. package/dist/runtime/nativeComponents/form.mjs.map +1 -0
  111. package/dist/runtime/nativeComponents/formControl.mjs +61 -0
  112. package/dist/runtime/nativeComponents/formControl.mjs.map +1 -0
  113. package/dist/runtime/nativeComponents/helpers.mjs +25 -0
  114. package/dist/runtime/nativeComponents/helpers.mjs.map +1 -0
  115. package/dist/runtime/nativeComponents/icon/helpers.mjs +42 -0
  116. package/dist/runtime/nativeComponents/icon/helpers.mjs.map +1 -0
  117. package/dist/runtime/nativeComponents/icon/index.mjs +45 -0
  118. package/dist/runtime/nativeComponents/icon/index.mjs.map +1 -0
  119. package/dist/runtime/nativeComponents/icon/style.mjs +176 -0
  120. package/dist/runtime/nativeComponents/icon/style.mjs.map +1 -0
  121. package/dist/runtime/nativeComponents/image.d.mts +8 -0
  122. package/dist/runtime/nativeComponents/image.mjs +121 -0
  123. package/dist/runtime/nativeComponents/image.mjs.map +1 -0
  124. package/dist/runtime/nativeComponents/index.d.mts +11 -0
  125. package/dist/runtime/nativeComponents/index.mjs +83 -0
  126. package/dist/runtime/nativeComponents/index.mjs.map +1 -0
  127. package/dist/runtime/nativeComponents/input.d.mts +8 -0
  128. package/dist/runtime/nativeComponents/input.mjs +131 -0
  129. package/dist/runtime/nativeComponents/input.mjs.map +1 -0
  130. package/dist/runtime/nativeComponents/label.mjs +36 -0
  131. package/dist/runtime/nativeComponents/label.mjs.map +1 -0
  132. package/dist/runtime/nativeComponents/mediaRegistry.mjs +47 -0
  133. package/dist/runtime/nativeComponents/mediaRegistry.mjs.map +1 -0
  134. package/dist/runtime/nativeComponents/movable/helpers.mjs +23 -0
  135. package/dist/runtime/nativeComponents/movable/helpers.mjs.map +1 -0
  136. package/dist/runtime/nativeComponents/movable/index.mjs +117 -0
  137. package/dist/runtime/nativeComponents/movable/index.mjs.map +1 -0
  138. package/dist/runtime/nativeComponents/navigator.mjs +200 -0
  139. package/dist/runtime/nativeComponents/navigator.mjs.map +1 -0
  140. package/dist/runtime/nativeComponents/picker/editors.mjs +74 -0
  141. package/dist/runtime/nativeComponents/picker/editors.mjs.map +1 -0
  142. package/dist/runtime/nativeComponents/picker/helpers.mjs +57 -0
  143. package/dist/runtime/nativeComponents/picker/helpers.mjs.map +1 -0
  144. package/dist/runtime/nativeComponents/picker/index.mjs +210 -0
  145. package/dist/runtime/nativeComponents/picker/index.mjs.map +1 -0
  146. package/dist/runtime/nativeComponents/picker/style.mjs +71 -0
  147. package/dist/runtime/nativeComponents/picker/style.mjs.map +1 -0
  148. package/dist/runtime/nativeComponents/pickerView/column.mjs +134 -0
  149. package/dist/runtime/nativeComponents/pickerView/column.mjs.map +1 -0
  150. package/dist/runtime/nativeComponents/pickerView/helpers.mjs +17 -0
  151. package/dist/runtime/nativeComponents/pickerView/helpers.mjs.map +1 -0
  152. package/dist/runtime/nativeComponents/pickerView/index.mjs +128 -0
  153. package/dist/runtime/nativeComponents/pickerView/index.mjs.map +1 -0
  154. package/dist/runtime/nativeComponents/pickerView/style.mjs +58 -0
  155. package/dist/runtime/nativeComponents/pickerView/style.mjs.map +1 -0
  156. package/dist/runtime/nativeComponents/primitives.mjs +16 -0
  157. package/dist/runtime/nativeComponents/primitives.mjs.map +1 -0
  158. package/dist/runtime/nativeComponents/progress/helpers.mjs +29 -0
  159. package/dist/runtime/nativeComponents/progress/helpers.mjs.map +1 -0
  160. package/dist/runtime/nativeComponents/progress/index.mjs +130 -0
  161. package/dist/runtime/nativeComponents/progress/index.mjs.map +1 -0
  162. package/dist/runtime/nativeComponents/progress/style.mjs +40 -0
  163. package/dist/runtime/nativeComponents/progress/style.mjs.map +1 -0
  164. package/dist/runtime/nativeComponents/radio.mjs +147 -0
  165. package/dist/runtime/nativeComponents/radio.mjs.map +1 -0
  166. package/dist/runtime/nativeComponents/richText/helpers.mjs +230 -0
  167. package/dist/runtime/nativeComponents/richText/helpers.mjs.map +1 -0
  168. package/dist/runtime/nativeComponents/richText/index.mjs +74 -0
  169. package/dist/runtime/nativeComponents/richText/index.mjs.map +1 -0
  170. package/dist/runtime/nativeComponents/scrollView.d.mts +15 -0
  171. package/dist/runtime/nativeComponents/scrollView.mjs +79 -0
  172. package/dist/runtime/nativeComponents/scrollView.mjs.map +1 -0
  173. package/dist/runtime/nativeComponents/slider/helpers.mjs +28 -0
  174. package/dist/runtime/nativeComponents/slider/helpers.mjs.map +1 -0
  175. package/dist/runtime/nativeComponents/slider/index.mjs +120 -0
  176. package/dist/runtime/nativeComponents/slider/index.mjs.map +1 -0
  177. package/dist/runtime/nativeComponents/slider/style.mjs +60 -0
  178. package/dist/runtime/nativeComponents/slider/style.mjs.map +1 -0
  179. package/dist/runtime/nativeComponents/style.mjs +41 -0
  180. package/dist/runtime/nativeComponents/style.mjs.map +1 -0
  181. package/dist/runtime/nativeComponents/swiper/helpers.mjs +52 -0
  182. package/dist/runtime/nativeComponents/swiper/helpers.mjs.map +1 -0
  183. package/dist/runtime/nativeComponents/swiper/index.mjs +235 -0
  184. package/dist/runtime/nativeComponents/swiper/index.mjs.map +1 -0
  185. package/dist/runtime/nativeComponents/swiper/item.mjs +14 -0
  186. package/dist/runtime/nativeComponents/swiper/item.mjs.map +1 -0
  187. package/dist/runtime/nativeComponents/swiper/style.mjs +20 -0
  188. package/dist/runtime/nativeComponents/swiper/style.mjs.map +1 -0
  189. package/dist/runtime/nativeComponents/switch.d.mts +7 -0
  190. package/dist/runtime/nativeComponents/switch.mjs +132 -0
  191. package/dist/runtime/nativeComponents/switch.mjs.map +1 -0
  192. package/dist/runtime/nativeComponents/textarea.d.mts +9 -0
  193. package/dist/runtime/nativeComponents/textarea.mjs +144 -0
  194. package/dist/runtime/nativeComponents/textarea.mjs.map +1 -0
  195. package/dist/runtime/nativeComponents/video/helpers.d.mts +12 -0
  196. package/dist/runtime/nativeComponents/video/helpers.mjs +21 -0
  197. package/dist/runtime/nativeComponents/video/helpers.mjs.map +1 -0
  198. package/dist/runtime/nativeComponents/video/index.mjs +124 -0
  199. package/dist/runtime/nativeComponents/video/index.mjs.map +1 -0
  200. package/dist/runtime/nativeComponents/video/style.mjs +14 -0
  201. package/dist/runtime/nativeComponents/video/style.mjs.map +1 -0
  202. package/dist/runtime/navigationBar/index.mjs +1 -3
  203. package/dist/runtime/navigationBar/index.mjs.map +1 -1
  204. package/dist/runtime/pageLayout.d.mts +9 -0
  205. package/dist/runtime/pageLayout.mjs +16 -0
  206. package/dist/runtime/pageLayout.mjs.map +1 -0
  207. package/dist/runtime/polyfill/animation.mjs +120 -0
  208. package/dist/runtime/polyfill/animation.mjs.map +1 -0
  209. package/dist/runtime/polyfill/appState.mjs +1 -1
  210. package/dist/runtime/polyfill/appState.mjs.map +1 -1
  211. package/dist/runtime/polyfill/async.d.mts +7 -0
  212. package/dist/runtime/polyfill/async.mjs.map +1 -1
  213. package/dist/runtime/polyfill/canvasContext.mjs +41 -0
  214. package/dist/runtime/polyfill/canvasContext.mjs.map +1 -1
  215. package/dist/runtime/polyfill/device.mjs +1 -1
  216. package/dist/runtime/polyfill/device.mjs.map +1 -1
  217. package/dist/runtime/polyfill/deviceApi.mjs +6 -3
  218. package/dist/runtime/polyfill/deviceApi.mjs.map +1 -1
  219. package/dist/runtime/polyfill/deviceAuthSystemApi.mjs +8 -2
  220. package/dist/runtime/polyfill/deviceAuthSystemApi.mjs.map +1 -1
  221. package/dist/runtime/polyfill/eventBus.mjs +56 -0
  222. package/dist/runtime/polyfill/eventBus.mjs.map +1 -0
  223. package/dist/runtime/polyfill/fileSystemManager.mjs +5 -2
  224. package/dist/runtime/polyfill/fileSystemManager.mjs.map +1 -1
  225. package/dist/runtime/polyfill/files.mjs +10 -10
  226. package/dist/runtime/polyfill/files.mjs.map +1 -1
  227. package/dist/runtime/polyfill/font.mjs +33 -0
  228. package/dist/runtime/polyfill/font.mjs.map +1 -0
  229. package/dist/runtime/polyfill/index.d.mts +2 -2
  230. package/dist/runtime/polyfill/index.mjs +49 -45
  231. package/dist/runtime/polyfill/index.mjs.map +1 -1
  232. package/dist/runtime/polyfill/interaction.mjs +7 -6
  233. package/dist/runtime/polyfill/interaction.mjs.map +1 -1
  234. package/dist/runtime/polyfill/interactionApi.mjs +9 -5
  235. package/dist/runtime/polyfill/interactionApi.mjs.map +1 -1
  236. package/dist/runtime/polyfill/intersectionObserver.mjs +106 -0
  237. package/dist/runtime/polyfill/intersectionObserver.mjs.map +1 -0
  238. package/dist/runtime/polyfill/locale.mjs +14 -0
  239. package/dist/runtime/polyfill/locale.mjs.map +1 -0
  240. package/dist/runtime/polyfill/locationApi.mjs +11 -6
  241. package/dist/runtime/polyfill/locationApi.mjs.map +1 -1
  242. package/dist/runtime/polyfill/mediaActions.mjs +2 -2
  243. package/dist/runtime/polyfill/mediaActions.mjs.map +1 -1
  244. package/dist/runtime/polyfill/mediaApi/file.mjs +3 -2
  245. package/dist/runtime/polyfill/mediaApi/file.mjs.map +1 -1
  246. package/dist/runtime/polyfill/mediaApi/info.mjs +6 -4
  247. package/dist/runtime/polyfill/mediaApi/info.mjs.map +1 -1
  248. package/dist/runtime/polyfill/mediaApi/picker.mjs +16 -8
  249. package/dist/runtime/polyfill/mediaApi/picker.mjs.map +1 -1
  250. package/dist/runtime/polyfill/mediaApi/preview.mjs +4 -2
  251. package/dist/runtime/polyfill/mediaApi/preview.mjs.map +1 -1
  252. package/dist/runtime/polyfill/mediaApi/process.mjs +4 -2
  253. package/dist/runtime/polyfill/mediaApi/process.mjs.map +1 -1
  254. package/dist/runtime/polyfill/menuApi.mjs +39 -4
  255. package/dist/runtime/polyfill/menuApi.mjs.map +1 -1
  256. package/dist/runtime/polyfill/navigationBarRuntime.mjs +6 -1
  257. package/dist/runtime/polyfill/navigationBarRuntime.mjs.map +1 -1
  258. package/dist/runtime/polyfill/network/request.mjs +2 -2
  259. package/dist/runtime/polyfill/network/request.mjs.map +1 -1
  260. package/dist/runtime/polyfill/platformApi.mjs +3 -2
  261. package/dist/runtime/polyfill/platformApi.mjs.map +1 -1
  262. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs +88 -0
  263. package/dist/runtime/polyfill/routeRuntime/appLifecycle.mjs.map +1 -0
  264. package/dist/runtime/polyfill/routeRuntime/dom.mjs +44 -15
  265. package/dist/runtime/polyfill/routeRuntime/dom.mjs.map +1 -1
  266. package/dist/runtime/polyfill/routeRuntime/history.d.mts +30 -0
  267. package/dist/runtime/polyfill/routeRuntime/history.mjs +148 -0
  268. package/dist/runtime/polyfill/routeRuntime/history.mjs.map +1 -0
  269. package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs +39 -8
  270. package/dist/runtime/polyfill/routeRuntime/lifecycle.mjs.map +1 -1
  271. package/dist/runtime/polyfill/routeRuntime/options.d.mts +11 -1
  272. package/dist/runtime/polyfill/routeRuntime/options.mjs +0 -1
  273. package/dist/runtime/polyfill/routeRuntime/options.mjs.map +1 -1
  274. package/dist/runtime/polyfill/routeRuntime/result.mjs +12 -0
  275. package/dist/runtime/polyfill/routeRuntime/result.mjs.map +1 -0
  276. package/dist/runtime/polyfill/routeRuntime/scroll.mjs +39 -0
  277. package/dist/runtime/polyfill/routeRuntime/scroll.mjs.map +1 -0
  278. package/dist/runtime/polyfill/routeRuntime/stack.mjs +122 -0
  279. package/dist/runtime/polyfill/routeRuntime/stack.mjs.map +1 -0
  280. package/dist/runtime/polyfill/routeRuntime.d.mts +26 -17
  281. package/dist/runtime/polyfill/routeRuntime.mjs +121 -96
  282. package/dist/runtime/polyfill/routeRuntime.mjs.map +1 -1
  283. package/dist/runtime/polyfill/runtimeDataApi.mjs +8 -3
  284. package/dist/runtime/polyfill/runtimeDataApi.mjs.map +1 -1
  285. package/dist/runtime/polyfill/runtimeOps.mjs +10 -6
  286. package/dist/runtime/polyfill/runtimeOps.mjs.map +1 -1
  287. package/dist/runtime/polyfill/selectorQuery.mjs +70 -14
  288. package/dist/runtime/polyfill/selectorQuery.mjs.map +1 -1
  289. package/dist/runtime/polyfill/storage.mjs +5 -2
  290. package/dist/runtime/polyfill/storage.mjs.map +1 -1
  291. package/dist/runtime/polyfill/storageAsync.mjs +4 -2
  292. package/dist/runtime/polyfill/storageAsync.mjs.map +1 -1
  293. package/dist/runtime/polyfill/system.mjs +31 -4
  294. package/dist/runtime/polyfill/system.mjs.map +1 -1
  295. package/dist/runtime/polyfill/systemApi.mjs +2 -1
  296. package/dist/runtime/polyfill/systemApi.mjs.map +1 -1
  297. package/dist/runtime/polyfill/types/locationRuntime.d.mts +1 -4
  298. package/dist/runtime/polyfill/types/platformRuntime.d.mts +9 -0
  299. package/dist/runtime/polyfill/types/systemAuth.d.mts +20 -9
  300. package/dist/runtime/polyfill/types/tabBarRuntime.d.mts +25 -0
  301. package/dist/runtime/polyfill/ui.mjs +2 -6
  302. package/dist/runtime/polyfill/ui.mjs.map +1 -1
  303. package/dist/runtime/polyfill/uiMediaApi.d.mts +11 -10
  304. package/dist/runtime/polyfill/uiMediaApi.mjs +26 -2
  305. package/dist/runtime/polyfill/uiMediaApi.mjs.map +1 -1
  306. package/dist/runtime/polyfill/videoContext.mjs +4 -0
  307. package/dist/runtime/polyfill/videoContext.mjs.map +1 -1
  308. package/dist/runtime/polyfill/vkSession.mjs +4 -14
  309. package/dist/runtime/polyfill/vkSession.mjs.map +1 -1
  310. package/dist/runtime/polyfill.d.mts +2 -2
  311. package/dist/runtime/renderContext.mjs +1 -1
  312. package/dist/runtime/renderContext.mjs.map +1 -1
  313. package/dist/runtime/rpx.mjs +17 -8
  314. package/dist/runtime/rpx.mjs.map +1 -1
  315. package/dist/runtime/seo/index.d.mts +31 -0
  316. package/dist/runtime/seo/index.mjs +94 -0
  317. package/dist/runtime/seo/index.mjs.map +1 -0
  318. package/dist/runtime/viewport/index.d.mts +12 -0
  319. package/dist/runtime/viewport/index.mjs +44 -0
  320. package/dist/runtime/viewport/index.mjs.map +1 -0
  321. package/dist/runtime/viewport/style.mjs +62 -0
  322. package/dist/runtime/viewport/style.mjs.map +1 -0
  323. package/dist/runtime/viewport/types.d.mts +14 -0
  324. package/dist/runtime/wevu.d.mts +20 -0
  325. package/dist/runtime/wevu.mjs +73 -0
  326. package/dist/runtime/wevu.mjs.map +1 -0
  327. package/dist/shared/nativeComponents.mjs +401 -0
  328. package/dist/shared/nativeComponents.mjs.map +1 -0
  329. package/dist/shared/tabBar.d.mts +19 -0
  330. package/dist/shared/tabBar.mjs +37 -0
  331. package/dist/shared/tabBar.mjs.map +1 -0
  332. package/dist/shared/wxml.mjs +3 -20
  333. package/dist/shared/wxml.mjs.map +1 -1
  334. package/package.json +14 -6
@@ -0,0 +1,127 @@
1
+ //#region src/runtime/appShell/tabBar/style.ts
2
+ const TAB_BAR_STYLE = `
3
+ :host {
4
+ --weapp-tab-bar-color: #7a7e83;
5
+ --weapp-tab-bar-selected-color: #3cc51f;
6
+ --weapp-tab-bar-background: #ffffff;
7
+ --weapp-tab-bar-border-color: rgba(0, 0, 0, 0.33);
8
+ display: block;
9
+ position: fixed;
10
+ left: 0;
11
+ right: 0;
12
+ bottom: 0;
13
+ z-index: 1000;
14
+ box-sizing: border-box;
15
+ color: var(--weapp-tab-bar-color);
16
+ font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
17
+ }
18
+
19
+ :host([position="top"]) {
20
+ top: 0;
21
+ bottom: auto;
22
+ }
23
+
24
+ :host([hidden]) {
25
+ display: none;
26
+ }
27
+
28
+ .weapp-tab-bar {
29
+ display: flex;
30
+ height: calc(50px + var(--weapp-safe-area-inset-bottom, 0px));
31
+ padding-bottom: var(--weapp-safe-area-inset-bottom, 0px);
32
+ box-sizing: border-box;
33
+ background: var(--weapp-tab-bar-background);
34
+ border-top: 0.5px solid var(--weapp-tab-bar-border-color);
35
+ }
36
+
37
+ :host([position="top"]) .weapp-tab-bar {
38
+ height: 50px;
39
+ padding-bottom: 0;
40
+ border-top: 0;
41
+ border-bottom: 0.5px solid var(--weapp-tab-bar-border-color);
42
+ }
43
+
44
+ .weapp-tab-bar__item {
45
+ position: relative;
46
+ display: flex;
47
+ flex: 1 1 0;
48
+ min-width: 0;
49
+ height: 50px;
50
+ padding: 5px 4px 3px;
51
+ align-items: center;
52
+ justify-content: center;
53
+ flex-direction: column;
54
+ gap: 1px;
55
+ border: 0;
56
+ border-radius: 0;
57
+ outline: 0;
58
+ background: transparent;
59
+ color: inherit;
60
+ font: inherit;
61
+ -webkit-tap-highlight-color: transparent;
62
+ }
63
+
64
+ .weapp-tab-bar__item[aria-current="page"] {
65
+ color: var(--weapp-tab-bar-selected-color);
66
+ }
67
+
68
+ .weapp-tab-bar__icon-wrap {
69
+ position: relative;
70
+ width: 27px;
71
+ height: 27px;
72
+ flex: 0 0 27px;
73
+ }
74
+
75
+ .weapp-tab-bar__icon {
76
+ display: block;
77
+ width: 27px;
78
+ height: 27px;
79
+ object-fit: contain;
80
+ }
81
+
82
+ .weapp-tab-bar__label {
83
+ display: block;
84
+ width: 100%;
85
+ overflow: hidden;
86
+ font-size: 10px;
87
+ line-height: 14px;
88
+ text-align: center;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ }
92
+
93
+ .weapp-tab-bar__badge {
94
+ position: absolute;
95
+ top: -3px;
96
+ left: 20px;
97
+ min-width: 16px;
98
+ max-width: 48px;
99
+ height: 16px;
100
+ padding: 0 4px;
101
+ overflow: hidden;
102
+ box-sizing: border-box;
103
+ border: 1px solid #ffffff;
104
+ border-radius: 8px;
105
+ background: #fa5151;
106
+ color: #ffffff;
107
+ font-size: 10px;
108
+ line-height: 14px;
109
+ text-align: center;
110
+ text-overflow: ellipsis;
111
+ white-space: nowrap;
112
+ }
113
+
114
+ .weapp-tab-bar__badge--dot {
115
+ top: 0;
116
+ left: 23px;
117
+ width: 8px;
118
+ min-width: 8px;
119
+ height: 8px;
120
+ padding: 0;
121
+ border-radius: 50%;
122
+ }
123
+ `;
124
+
125
+ //#endregion
126
+ export { TAB_BAR_STYLE };
127
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","names":[],"sources":["../../../../src/runtime/appShell/tabBar/style.ts"],"sourcesContent":["export const TAB_BAR_STYLE = `\n:host {\n --weapp-tab-bar-color: #7a7e83;\n --weapp-tab-bar-selected-color: #3cc51f;\n --weapp-tab-bar-background: #ffffff;\n --weapp-tab-bar-border-color: rgba(0, 0, 0, 0.33);\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n box-sizing: border-box;\n color: var(--weapp-tab-bar-color);\n font-family: -apple-system, BlinkMacSystemFont, \"Helvetica Neue\", Arial, sans-serif;\n}\n\n:host([position=\"top\"]) {\n top: 0;\n bottom: auto;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.weapp-tab-bar {\n display: flex;\n height: calc(50px + var(--weapp-safe-area-inset-bottom, 0px));\n padding-bottom: var(--weapp-safe-area-inset-bottom, 0px);\n box-sizing: border-box;\n background: var(--weapp-tab-bar-background);\n border-top: 0.5px solid var(--weapp-tab-bar-border-color);\n}\n\n:host([position=\"top\"]) .weapp-tab-bar {\n height: 50px;\n padding-bottom: 0;\n border-top: 0;\n border-bottom: 0.5px solid var(--weapp-tab-bar-border-color);\n}\n\n.weapp-tab-bar__item {\n position: relative;\n display: flex;\n flex: 1 1 0;\n min-width: 0;\n height: 50px;\n padding: 5px 4px 3px;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n gap: 1px;\n border: 0;\n border-radius: 0;\n outline: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n -webkit-tap-highlight-color: transparent;\n}\n\n.weapp-tab-bar__item[aria-current=\"page\"] {\n color: var(--weapp-tab-bar-selected-color);\n}\n\n.weapp-tab-bar__icon-wrap {\n position: relative;\n width: 27px;\n height: 27px;\n flex: 0 0 27px;\n}\n\n.weapp-tab-bar__icon {\n display: block;\n width: 27px;\n height: 27px;\n object-fit: contain;\n}\n\n.weapp-tab-bar__label {\n display: block;\n width: 100%;\n overflow: hidden;\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.weapp-tab-bar__badge {\n position: absolute;\n top: -3px;\n left: 20px;\n min-width: 16px;\n max-width: 48px;\n height: 16px;\n padding: 0 4px;\n overflow: hidden;\n box-sizing: border-box;\n border: 1px solid #ffffff;\n border-radius: 8px;\n background: #fa5151;\n color: #ffffff;\n font-size: 10px;\n line-height: 14px;\n text-align: center;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.weapp-tab-bar__badge--dot {\n top: 0;\n left: 23px;\n width: 8px;\n min-width: 8px;\n height: 8px;\n padding: 0;\n border-radius: 50%;\n}\n`\n"],"mappings":";AAAA,MAAa,gBAAgB"}
@@ -29,64 +29,7 @@ function getHoverClass(element) {
29
29
  function isInternalNode(node) {
30
30
  return node instanceof HTMLElement && node.dataset?.weappInternal === "true";
31
31
  }
32
- function collectFormValues(form) {
33
- const values = {};
34
- const appendValue = (name, value, multiple = false) => {
35
- if (multiple) {
36
- if (!Array.isArray(values[name])) values[name] = values[name] === void 0 ? [] : [values[name]];
37
- values[name].push(value);
38
- return;
39
- }
40
- values[name] = value;
41
- };
42
- const formElements = Array.from(form.elements ?? []);
43
- for (const element of formElements) {
44
- if (!(element instanceof HTMLElement)) continue;
45
- const name = element.getAttribute("name")?.trim();
46
- if (!name) continue;
47
- if ("disabled" in element ? element.disabled : toBoolean(element.getAttribute("disabled"))) continue;
48
- if (element instanceof HTMLInputElement) {
49
- const type = element.type?.toLowerCase();
50
- if (type === "checkbox") {
51
- if (element.checked) appendValue(name, element.value, true);
52
- continue;
53
- }
54
- if (type === "radio") {
55
- if (element.checked) appendValue(name, element.value);
56
- continue;
57
- }
58
- appendValue(name, element.value);
59
- continue;
60
- }
61
- if (element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement) {
62
- appendValue(name, element.value);
63
- continue;
64
- }
65
- }
66
- const customControls = form.querySelectorAll("switch, checkbox, radio, picker, slider, weapp-switch, weapp-checkbox, weapp-radio, weapp-picker, weapp-slider");
67
- for (const element of Array.from(customControls)) {
68
- const name = element.getAttribute("name")?.trim();
69
- if (!name) continue;
70
- if (toBoolean(element.getAttribute("disabled"))) continue;
71
- const tag = element.tagName.toLowerCase();
72
- const rawValue = element.value ?? element.getAttribute("value");
73
- if (tag.includes("checkbox")) {
74
- if (element.checked ?? toBoolean(element.getAttribute("checked"))) appendValue(name, rawValue ?? true, true);
75
- continue;
76
- }
77
- if (tag.includes("radio")) {
78
- if (element.checked ?? toBoolean(element.getAttribute("checked"))) appendValue(name, rawValue ?? true);
79
- continue;
80
- }
81
- if (tag.includes("switch")) {
82
- appendValue(name, element.checked ?? toBoolean(element.getAttribute("checked")));
83
- continue;
84
- }
85
- appendValue(name, rawValue ?? "");
86
- }
87
- return values;
88
- }
89
32
 
90
33
  //#endregion
91
- export { collectFormValues, getHoverClass, isDisabled, isInternalNode, normalizeType, parseNumber, toBoolean };
34
+ export { getHoverClass, isDisabled, isInternalNode, normalizeType, parseNumber, toBoolean };
92
35
  //# sourceMappingURL=helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","names":[],"sources":["../../../src/runtime/button/helpers.ts"],"sourcesContent":["const DEFAULT_HOVER_CLASS = 'button-hover'\n\nexport const DEFAULT_HOVER_START = 20\nexport const DEFAULT_HOVER_STAY = 70\n\nexport function toBoolean(value: string | null) {\n if (value === null) {\n return false\n }\n const normalized = value.trim().toLowerCase()\n if (normalized === '' || normalized === 'true') {\n return true\n }\n return normalized !== 'false' && normalized !== '0'\n}\n\nexport function parseNumber(value: string | null, fallback: number) {\n if (value === null || value === '') {\n return fallback\n }\n const numeric = Number(value)\n return Number.isFinite(numeric) ? numeric : fallback\n}\n\nexport function isDisabled(element: HTMLElement) {\n return toBoolean(element.getAttribute('disabled')) || toBoolean(element.getAttribute('loading'))\n}\n\nexport function normalizeType(value: string | null) {\n if (!value) {\n return 'default'\n }\n const normalized = value.toLowerCase()\n if (normalized === 'primary' || normalized === 'warn') {\n return normalized\n }\n return 'default'\n}\n\nexport function getHoverClass(element: HTMLElement) {\n const hoverClass = element.getAttribute('hover-class')\n if (!hoverClass) {\n return DEFAULT_HOVER_CLASS\n }\n if (hoverClass === 'none') {\n return ''\n }\n return hoverClass\n}\n\nexport function isInternalNode(node: Node) {\n return node instanceof HTMLElement && node.dataset?.weappInternal === 'true'\n}\n\nexport function collectFormValues(form: HTMLFormElement) {\n const values: Record<string, any> = {}\n\n const appendValue = (name: string, value: any, multiple = false) => {\n if (multiple) {\n if (!Array.isArray(values[name])) {\n values[name] = values[name] === undefined ? [] : [values[name]]\n }\n values[name].push(value)\n return\n }\n values[name] = value\n }\n\n const formElements = Array.from(form.elements ?? [])\n for (const element of formElements) {\n if (!(element instanceof HTMLElement)) {\n continue\n }\n const name = element.getAttribute('name')?.trim()\n if (!name) {\n continue\n }\n const disabled = 'disabled' in element ? (element as any).disabled : toBoolean(element.getAttribute('disabled'))\n if (disabled) {\n continue\n }\n if (element instanceof HTMLInputElement) {\n const type = element.type?.toLowerCase()\n if (type === 'checkbox') {\n if (element.checked) {\n appendValue(name, element.value, true)\n }\n continue\n }\n if (type === 'radio') {\n if (element.checked) {\n appendValue(name, element.value)\n }\n continue\n }\n appendValue(name, element.value)\n continue\n }\n if (element instanceof HTMLTextAreaElement || element instanceof HTMLSelectElement) {\n appendValue(name, (element as HTMLTextAreaElement | HTMLSelectElement).value)\n continue\n }\n }\n\n const customControls = form.querySelectorAll('switch, checkbox, radio, picker, slider, weapp-switch, weapp-checkbox, weapp-radio, weapp-picker, weapp-slider')\n for (const element of Array.from(customControls)) {\n const name = element.getAttribute('name')?.trim()\n if (!name) {\n continue\n }\n const disabled = toBoolean(element.getAttribute('disabled'))\n if (disabled) {\n continue\n }\n const tag = element.tagName.toLowerCase()\n const rawValue = (element as any).value ?? element.getAttribute('value')\n if (tag.includes('checkbox')) {\n const checked = (element as any).checked ?? toBoolean(element.getAttribute('checked'))\n if (checked) {\n appendValue(name, rawValue ?? true, true)\n }\n continue\n }\n if (tag.includes('radio')) {\n const checked = (element as any).checked ?? toBoolean(element.getAttribute('checked'))\n if (checked) {\n appendValue(name, rawValue ?? true)\n }\n continue\n }\n if (tag.includes('switch')) {\n const checked = (element as any).checked ?? toBoolean(element.getAttribute('checked'))\n appendValue(name, checked)\n continue\n }\n appendValue(name, rawValue ?? '')\n }\n\n return values\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.mjs","names":[],"sources":["../../../src/runtime/button/helpers.ts"],"sourcesContent":["const DEFAULT_HOVER_CLASS = 'button-hover'\n\nexport const DEFAULT_HOVER_START = 20\nexport const DEFAULT_HOVER_STAY = 70\n\nexport function toBoolean(value: string | null) {\n if (value === null) {\n return false\n }\n const normalized = value.trim().toLowerCase()\n if (normalized === '' || normalized === 'true') {\n return true\n }\n return normalized !== 'false' && normalized !== '0'\n}\n\nexport function parseNumber(value: string | null, fallback: number) {\n if (value === null || value === '') {\n return fallback\n }\n const numeric = Number(value)\n return Number.isFinite(numeric) ? numeric : fallback\n}\n\nexport function isDisabled(element: HTMLElement) {\n return toBoolean(element.getAttribute('disabled')) || toBoolean(element.getAttribute('loading'))\n}\n\nexport function normalizeType(value: string | null) {\n if (!value) {\n return 'default'\n }\n const normalized = value.toLowerCase()\n if (normalized === 'primary' || normalized === 'warn') {\n return normalized\n }\n return 'default'\n}\n\nexport function getHoverClass(element: HTMLElement) {\n const hoverClass = element.getAttribute('hover-class')\n if (!hoverClass) {\n return DEFAULT_HOVER_CLASS\n }\n if (hoverClass === 'none') {\n return ''\n }\n return hoverClass\n}\n\nexport function isInternalNode(node: Node) {\n return node instanceof HTMLElement && node.dataset?.weappInternal === 'true'\n}\n"],"mappings":";AAAA,MAAM,sBAAsB;AAK5B,SAAgB,UAAU,OAAsB;CAC9C,IAAI,UAAU,MACZ,OAAO;CAET,MAAM,aAAa,MAAM,KAAK,CAAC,CAAC,YAAY;CAC5C,IAAI,eAAe,MAAM,eAAe,QACtC,OAAO;CAET,OAAO,eAAe,WAAW,eAAe;AAClD;AAEA,SAAgB,YAAY,OAAsB,UAAkB;CAClE,IAAI,UAAU,QAAQ,UAAU,IAC9B,OAAO;CAET,MAAM,UAAU,OAAO,KAAK;CAC5B,OAAO,OAAO,SAAS,OAAO,IAAI,UAAU;AAC9C;AAEA,SAAgB,WAAW,SAAsB;CAC/C,OAAO,UAAU,QAAQ,aAAa,UAAU,CAAC,KAAK,UAAU,QAAQ,aAAa,SAAS,CAAC;AACjG;AAEA,SAAgB,cAAc,OAAsB;CAClD,IAAI,CAAC,OACH,OAAO;CAET,MAAM,aAAa,MAAM,YAAY;CACrC,IAAI,eAAe,aAAa,eAAe,QAC7C,OAAO;CAET,OAAO;AACT;AAEA,SAAgB,cAAc,SAAsB;CAClD,MAAM,aAAa,QAAQ,aAAa,aAAa;CACrD,IAAI,CAAC,YACH,OAAO;CAET,IAAI,eAAe,QACjB,OAAO;CAET,OAAO;AACT;AAEA,SAAgB,eAAe,MAAY;CACzC,OAAO,gBAAgB,eAAe,KAAK,SAAS,kBAAkB;AACxE"}
@@ -1,9 +1,8 @@
1
+ import { FormConfig } from "../nativeComponents/form.mjs";
1
2
  //#region src/runtime/button/index.d.ts
2
- interface ButtonFormConfig {
3
- preventDefault?: boolean;
4
- }
5
3
  declare function ensureButtonDefined(): void;
6
- declare function setButtonFormConfig(next: ButtonFormConfig): void;
4
+ declare function setButtonFormConfig(next: FormConfig): void;
5
+ type ButtonFormConfig = FormConfig;
7
6
  //#endregion
8
- export { type ButtonFormConfig, ensureButtonDefined, setButtonFormConfig };
7
+ export { ButtonFormConfig, ensureButtonDefined, setButtonFormConfig };
9
8
  //# sourceMappingURL=index.d.mts.map
@@ -1,11 +1,11 @@
1
- import { collectFormValues, getHoverClass, isDisabled, isInternalNode, normalizeType, parseNumber, toBoolean } from "./helpers.mjs";
1
+ import { requestContainingFormAction } from "../nativeComponents/formControl.mjs";
2
+ import { setFormConfig } from "../nativeComponents/form.mjs";
3
+ import { getHoverClass, isDisabled, isInternalNode, normalizeType, parseNumber, toBoolean } from "./helpers.mjs";
2
4
  import { ensureButtonStyle } from "./style.mjs";
3
5
 
4
6
  //#region src/runtime/button/index.ts
5
- const DEFAULT_FORM_CONFIG = { preventDefault: true };
6
7
  const NAV_BUTTON_TAG = "weapp-button";
7
8
  const BaseElement = globalThis.HTMLElement ?? class {};
8
- let formConfig = { ...DEFAULT_FORM_CONFIG };
9
9
  var WeappButton = class extends BaseElement {
10
10
  static observedAttributes = [
11
11
  "type",
@@ -70,10 +70,8 @@ var WeappButton = class extends BaseElement {
70
70
  this.#loading = loading;
71
71
  if (typeof MutationObserver !== "undefined") {
72
72
  this.#observer = new MutationObserver((records) => {
73
- if (!this.#text) return;
74
73
  for (const record of records) for (const node of [...record.addedNodes]) {
75
74
  if (isInternalNode(node)) continue;
76
- if (node === this.#button) continue;
77
75
  this.#text.appendChild(node);
78
76
  }
79
77
  });
@@ -125,26 +123,9 @@ var WeappButton = class extends BaseElement {
125
123
  }
126
124
  };
127
125
  #handleClick = (event) => {
128
- if (isDisabled(this)) return;
129
126
  const formType = this.getAttribute("form-type");
130
127
  if (!formType) return;
131
- const form = this.closest("form");
132
- if (!form) return;
133
- if (formType === "submit") {
134
- const detail = { value: collectFormValues(form) };
135
- const submitEvent = new CustomEvent("submit", {
136
- detail,
137
- bubbles: true,
138
- cancelable: true
139
- });
140
- if (form.dispatchEvent(submitEvent) && !formConfig.preventDefault) form.submit();
141
- event.preventDefault();
142
- return;
143
- }
144
- if (formType === "reset") {
145
- form.reset();
146
- event.preventDefault();
147
- }
128
+ if ((formType === "submit" || formType === "reset") && requestContainingFormAction(this, formType)) event.preventDefault();
148
129
  };
149
130
  #handlePressStart = (event) => {
150
131
  if (isDisabled(this)) return;
@@ -187,12 +168,9 @@ function ensureButtonDefined() {
187
168
  if (!customElements.get(NAV_BUTTON_TAG)) customElements.define(NAV_BUTTON_TAG, WeappButton);
188
169
  }
189
170
  function setButtonFormConfig(next) {
190
- formConfig = {
191
- ...formConfig,
192
- ...next
193
- };
171
+ setFormConfig(next);
194
172
  }
195
173
 
196
174
  //#endregion
197
- export { ensureButtonDefined, setButtonFormConfig };
175
+ export { WeappButton, ensureButtonDefined, setButtonFormConfig };
198
176
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["#ensureStructure","#applyState","#bindEvents","#clearHoverTimers","#observer","#button","#content","#text","#loading","#handleClickCapture","#handleClick","#handlePressStart","#handlePressEnd","#lastTouchTime","#hoverTimer","#hoverRemoveTimer"],"sources":["../../../src/runtime/button/index.ts"],"sourcesContent":["import {\n collectFormValues,\n DEFAULT_HOVER_START,\n DEFAULT_HOVER_STAY,\n getHoverClass,\n isDisabled,\n isInternalNode,\n normalizeType,\n parseNumber,\n toBoolean,\n} from './helpers'\nimport { ensureButtonStyle } from './style'\n\ninterface ButtonFormConfig {\n preventDefault?: boolean\n}\n\nconst DEFAULT_FORM_CONFIG: Required<ButtonFormConfig> = {\n preventDefault: true,\n}\n\nconst NAV_BUTTON_TAG = 'weapp-button'\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nlet formConfig: Required<ButtonFormConfig> = { ...DEFAULT_FORM_CONFIG }\n\nclass WeappButton extends BaseElement {\n static observedAttributes = [\n 'type',\n 'plain',\n 'size',\n 'loading',\n 'disabled',\n 'hover-class',\n 'hover-start-time',\n 'hover-stay-time',\n 'form-type',\n 'open-type',\n ]\n\n #button?: HTMLButtonElement\n #content?: HTMLSpanElement\n #text?: HTMLSpanElement\n #loading?: HTMLSpanElement\n #hoverTimer?: ReturnType<typeof globalThis.setTimeout>\n #hoverRemoveTimer?: ReturnType<typeof globalThis.setTimeout>\n #lastTouchTime = 0\n #observer?: MutationObserver\n\n connectedCallback() {\n const root = this.getRootNode()\n if (root instanceof ShadowRoot) {\n ensureButtonStyle(root)\n }\n else {\n ensureButtonStyle()\n }\n this.#ensureStructure()\n this.#applyState()\n this.#bindEvents()\n }\n\n disconnectedCallback() {\n this.#clearHoverTimers()\n this.#observer?.disconnect()\n this.#observer = undefined\n }\n\n attributeChangedCallback() {\n this.#applyState()\n }\n\n #ensureStructure() {\n if (this.#button) {\n return\n }\n const button = document.createElement('button')\n button.type = 'button'\n button.className = 'weapp-btn'\n button.dataset.weappInternal = 'true'\n const content = document.createElement('span')\n content.className = 'weapp-btn__content'\n content.dataset.weappInternal = 'true'\n const loading = document.createElement('span')\n loading.className = 'weapp-btn__loading'\n loading.dataset.weappInternal = 'true'\n loading.setAttribute('hidden', '')\n const text = document.createElement('span')\n text.className = 'weapp-btn__text'\n text.dataset.weappInternal = 'true'\n content.append(loading, text)\n button.append(content)\n\n const existing = [...this.childNodes].filter(node => !isInternalNode(node))\n for (const node of existing) {\n text.appendChild(node)\n }\n this.appendChild(button)\n\n this.#button = button\n this.#content = content\n this.#text = text\n this.#loading = loading\n\n if (typeof MutationObserver !== 'undefined') {\n this.#observer = new MutationObserver((records) => {\n if (!this.#text) {\n return\n }\n for (const record of records) {\n for (const node of [...record.addedNodes]) {\n if (isInternalNode(node)) {\n continue\n }\n if (node === this.#button) {\n continue\n }\n this.#text.appendChild(node)\n }\n }\n })\n this.#observer.observe(this, { childList: true })\n }\n }\n\n #applyState() {\n if (!this.#button || !this.#loading) {\n return\n }\n const type = normalizeType(this.getAttribute('type'))\n const plain = toBoolean(this.getAttribute('plain'))\n const size = (this.getAttribute('size') ?? 'default').toLowerCase()\n const loading = toBoolean(this.getAttribute('loading'))\n const disabled = toBoolean(this.getAttribute('disabled'))\n const openType = this.getAttribute('open-type')\n\n this.classList.toggle('weapp-btn--primary', type === 'primary')\n this.classList.toggle('weapp-btn--warn', type === 'warn')\n this.classList.toggle('weapp-btn--default', type === 'default')\n this.classList.toggle('weapp-btn--plain', plain)\n this.classList.toggle('weapp-btn--mini', size === 'mini')\n this.classList.toggle('weapp-btn--loading', loading)\n this.classList.toggle('weapp-btn--disabled', disabled)\n\n if (openType) {\n const openTypeClass = `weapp-btn--open-type-${openType}`\n for (const className of [...this.classList]) {\n if (className.startsWith('weapp-btn--open-type-') && className !== openTypeClass) {\n this.classList.remove(className)\n }\n }\n this.classList.add(openTypeClass)\n }\n else {\n for (const className of [...this.classList]) {\n if (className.startsWith('weapp-btn--open-type-')) {\n this.classList.remove(className)\n }\n }\n }\n\n const locked = disabled || loading\n this.#button.disabled = locked\n if (locked) {\n this.#button.setAttribute('aria-disabled', 'true')\n }\n else {\n this.#button.removeAttribute('aria-disabled')\n }\n this.#loading.toggleAttribute('hidden', !loading)\n }\n\n #bindEvents() {\n if ((this as any).__weappButtonBound) {\n return\n }\n ;(this as any).__weappButtonBound = true\n this.addEventListener('click', this.#handleClickCapture, true)\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('touchstart', this.#handlePressStart, { passive: true })\n this.addEventListener('mousedown', this.#handlePressStart)\n this.addEventListener('touchend', this.#handlePressEnd)\n this.addEventListener('touchcancel', this.#handlePressEnd)\n this.addEventListener('mouseup', this.#handlePressEnd)\n this.addEventListener('mouseleave', this.#handlePressEnd)\n }\n\n #handleClickCapture = (event: Event) => {\n if (isDisabled(this)) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n }\n\n #handleClick = (event: Event) => {\n if (isDisabled(this)) {\n return\n }\n const formType = this.getAttribute('form-type')\n if (!formType) {\n return\n }\n const form = this.closest('form') as HTMLFormElement | null\n if (!form) {\n return\n }\n if (formType === 'submit') {\n const detail = { value: collectFormValues(form) }\n const submitEvent = new CustomEvent('submit', {\n detail,\n bubbles: true,\n cancelable: true,\n })\n const shouldSubmit = form.dispatchEvent(submitEvent)\n if (shouldSubmit && !formConfig.preventDefault) {\n form.submit()\n }\n event.preventDefault()\n return\n }\n if (formType === 'reset') {\n form.reset()\n event.preventDefault()\n }\n }\n\n #handlePressStart = (event: Event) => {\n if (isDisabled(this)) {\n return\n }\n const hoverClass = getHoverClass(this)\n if (!hoverClass) {\n return\n }\n if (event.type === 'touchstart') {\n this.#lastTouchTime = Date.now()\n }\n if (event.type === 'mousedown' && Date.now() - this.#lastTouchTime < 400) {\n return\n }\n const startTime = parseNumber(this.getAttribute('hover-start-time'), DEFAULT_HOVER_START)\n this.#clearHoverTimers()\n this.#hoverTimer = globalThis.setTimeout(() => {\n this.classList.add(hoverClass)\n }, startTime)\n }\n\n #handlePressEnd = (event: Event) => {\n const hoverClass = getHoverClass(this)\n if (!hoverClass) {\n return\n }\n if (event.type === 'mouseup' && Date.now() - this.#lastTouchTime < 400) {\n return\n }\n const stayTime = parseNumber(this.getAttribute('hover-stay-time'), DEFAULT_HOVER_STAY)\n if (this.#hoverTimer) {\n clearTimeout(this.#hoverTimer)\n this.#hoverTimer = undefined\n }\n if (this.classList.contains(hoverClass)) {\n this.#hoverRemoveTimer = globalThis.setTimeout(() => {\n this.classList.remove(hoverClass)\n }, stayTime)\n }\n }\n\n #clearHoverTimers() {\n if (this.#hoverTimer) {\n clearTimeout(this.#hoverTimer)\n this.#hoverTimer = undefined\n }\n if (this.#hoverRemoveTimer) {\n clearTimeout(this.#hoverRemoveTimer)\n this.#hoverRemoveTimer = undefined\n }\n }\n}\n\nexport function ensureButtonDefined(): void {\n if (typeof customElements === 'undefined') {\n return\n }\n if (!customElements.get(NAV_BUTTON_TAG)) {\n customElements.define(NAV_BUTTON_TAG, WeappButton)\n }\n}\n\nexport function setButtonFormConfig(next: ButtonFormConfig): void {\n formConfig = {\n ...formConfig,\n ...next,\n }\n}\n\nexport type { ButtonFormConfig }\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["#ensureStructure","#applyState","#bindEvents","#clearHoverTimers","#observer","#button","#content","#text","#loading","#handleClickCapture","#handleClick","#handlePressStart","#handlePressEnd","#lastTouchTime","#hoverTimer","#hoverRemoveTimer"],"sources":["../../../src/runtime/button/index.ts"],"sourcesContent":["import type { FormConfig } from '../nativeComponents/form'\nimport { setFormConfig } from '../nativeComponents/form'\nimport { requestContainingFormAction } from '../nativeComponents/formControl'\nimport {\n DEFAULT_HOVER_START,\n DEFAULT_HOVER_STAY,\n getHoverClass,\n isDisabled,\n isInternalNode,\n normalizeType,\n parseNumber,\n toBoolean,\n} from './helpers'\nimport { ensureButtonStyle } from './style'\n\nconst NAV_BUTTON_TAG = 'weapp-button'\nconst BaseElement = (globalThis.HTMLElement ?? class {}) as typeof HTMLElement\n\nexport class WeappButton extends BaseElement {\n static observedAttributes = [\n 'type',\n 'plain',\n 'size',\n 'loading',\n 'disabled',\n 'hover-class',\n 'hover-start-time',\n 'hover-stay-time',\n 'form-type',\n 'open-type',\n ]\n\n #button?: HTMLButtonElement\n #content?: HTMLSpanElement\n #text?: HTMLSpanElement\n #loading?: HTMLSpanElement\n #hoverTimer?: ReturnType<typeof globalThis.setTimeout>\n #hoverRemoveTimer?: ReturnType<typeof globalThis.setTimeout>\n #lastTouchTime = 0\n #observer?: MutationObserver\n\n connectedCallback() {\n const root = this.getRootNode()\n if (root instanceof ShadowRoot) {\n ensureButtonStyle(root)\n }\n else {\n ensureButtonStyle()\n }\n this.#ensureStructure()\n this.#applyState()\n this.#bindEvents()\n }\n\n disconnectedCallback() {\n this.#clearHoverTimers()\n this.#observer?.disconnect()\n this.#observer = undefined\n }\n\n attributeChangedCallback() {\n this.#applyState()\n }\n\n #ensureStructure() {\n if (this.#button) {\n return\n }\n const button = document.createElement('button')\n button.type = 'button'\n button.className = 'weapp-btn'\n button.dataset.weappInternal = 'true'\n const content = document.createElement('span')\n content.className = 'weapp-btn__content'\n content.dataset.weappInternal = 'true'\n const loading = document.createElement('span')\n loading.className = 'weapp-btn__loading'\n loading.dataset.weappInternal = 'true'\n loading.setAttribute('hidden', '')\n const text = document.createElement('span')\n text.className = 'weapp-btn__text'\n text.dataset.weappInternal = 'true'\n content.append(loading, text)\n button.append(content)\n\n const existing = [...this.childNodes].filter(node => !isInternalNode(node))\n for (const node of existing) {\n text.appendChild(node)\n }\n this.appendChild(button)\n\n this.#button = button\n this.#content = content\n this.#text = text\n this.#loading = loading\n\n if (typeof MutationObserver !== 'undefined') {\n this.#observer = new MutationObserver((records) => {\n for (const record of records) {\n for (const node of [...record.addedNodes]) {\n if (isInternalNode(node)) {\n continue\n }\n this.#text!.appendChild(node)\n }\n }\n })\n this.#observer.observe(this, { childList: true })\n }\n }\n\n #applyState() {\n if (!this.#button || !this.#loading) {\n return\n }\n const type = normalizeType(this.getAttribute('type'))\n const plain = toBoolean(this.getAttribute('plain'))\n const size = (this.getAttribute('size') ?? 'default').toLowerCase()\n const loading = toBoolean(this.getAttribute('loading'))\n const disabled = toBoolean(this.getAttribute('disabled'))\n const openType = this.getAttribute('open-type')\n\n this.classList.toggle('weapp-btn--primary', type === 'primary')\n this.classList.toggle('weapp-btn--warn', type === 'warn')\n this.classList.toggle('weapp-btn--default', type === 'default')\n this.classList.toggle('weapp-btn--plain', plain)\n this.classList.toggle('weapp-btn--mini', size === 'mini')\n this.classList.toggle('weapp-btn--loading', loading)\n this.classList.toggle('weapp-btn--disabled', disabled)\n\n if (openType) {\n const openTypeClass = `weapp-btn--open-type-${openType}`\n for (const className of [...this.classList]) {\n if (className.startsWith('weapp-btn--open-type-') && className !== openTypeClass) {\n this.classList.remove(className)\n }\n }\n this.classList.add(openTypeClass)\n }\n else {\n for (const className of [...this.classList]) {\n if (className.startsWith('weapp-btn--open-type-')) {\n this.classList.remove(className)\n }\n }\n }\n\n const locked = disabled || loading\n this.#button.disabled = locked\n if (locked) {\n this.#button.setAttribute('aria-disabled', 'true')\n }\n else {\n this.#button.removeAttribute('aria-disabled')\n }\n this.#loading.toggleAttribute('hidden', !loading)\n }\n\n #bindEvents() {\n if ((this as any).__weappButtonBound) {\n return\n }\n ;(this as any).__weappButtonBound = true\n this.addEventListener('click', this.#handleClickCapture, true)\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('touchstart', this.#handlePressStart, { passive: true })\n this.addEventListener('mousedown', this.#handlePressStart)\n this.addEventListener('touchend', this.#handlePressEnd)\n this.addEventListener('touchcancel', this.#handlePressEnd)\n this.addEventListener('mouseup', this.#handlePressEnd)\n this.addEventListener('mouseleave', this.#handlePressEnd)\n }\n\n #handleClickCapture = (event: Event) => {\n if (isDisabled(this)) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n }\n\n #handleClick = (event: Event) => {\n const formType = this.getAttribute('form-type')\n if (!formType) {\n return\n }\n if ((formType === 'submit' || formType === 'reset') && requestContainingFormAction(this, formType)) {\n event.preventDefault()\n }\n }\n\n #handlePressStart = (event: Event) => {\n if (isDisabled(this)) {\n return\n }\n const hoverClass = getHoverClass(this)\n if (!hoverClass) {\n return\n }\n if (event.type === 'touchstart') {\n this.#lastTouchTime = Date.now()\n }\n if (event.type === 'mousedown' && Date.now() - this.#lastTouchTime < 400) {\n return\n }\n const startTime = parseNumber(this.getAttribute('hover-start-time'), DEFAULT_HOVER_START)\n this.#clearHoverTimers()\n this.#hoverTimer = globalThis.setTimeout(() => {\n this.classList.add(hoverClass)\n }, startTime)\n }\n\n #handlePressEnd = (event: Event) => {\n const hoverClass = getHoverClass(this)\n if (!hoverClass) {\n return\n }\n if (event.type === 'mouseup' && Date.now() - this.#lastTouchTime < 400) {\n return\n }\n const stayTime = parseNumber(this.getAttribute('hover-stay-time'), DEFAULT_HOVER_STAY)\n if (this.#hoverTimer) {\n clearTimeout(this.#hoverTimer)\n this.#hoverTimer = undefined\n }\n if (this.classList.contains(hoverClass)) {\n this.#hoverRemoveTimer = globalThis.setTimeout(() => {\n this.classList.remove(hoverClass)\n }, stayTime)\n }\n }\n\n #clearHoverTimers() {\n if (this.#hoverTimer) {\n clearTimeout(this.#hoverTimer)\n this.#hoverTimer = undefined\n }\n if (this.#hoverRemoveTimer) {\n clearTimeout(this.#hoverRemoveTimer)\n this.#hoverRemoveTimer = undefined\n }\n }\n}\n\nexport function ensureButtonDefined(): void {\n if (typeof customElements === 'undefined') {\n return\n }\n if (!customElements.get(NAV_BUTTON_TAG)) {\n customElements.define(NAV_BUTTON_TAG, WeappButton)\n }\n}\n\nexport function setButtonFormConfig(next: FormConfig): void {\n setFormConfig(next)\n}\n\nexport type ButtonFormConfig = FormConfig\n"],"mappings":"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"}
@@ -6,9 +6,28 @@ const styleTargets = /* @__PURE__ */ new WeakSet();
6
6
  let sharedSheet;
7
7
  const BUTTON_STYLE = `
8
8
  weapp-button {
9
+ appearance: none;
10
+ -webkit-appearance: none;
11
+ position: relative;
9
12
  display: block;
10
- width: 100%;
13
+ width: 184px;
14
+ max-width: 100%;
15
+ min-width: 0;
16
+ margin-right: auto;
17
+ margin-left: auto;
11
18
  box-sizing: border-box;
19
+ border: 1px solid #d9d9d9;
20
+ border-radius: 5px;
21
+ padding: 0 16px;
22
+ line-height: calc(2.55555556em - 1px);
23
+ font-size: 18px;
24
+ font-weight: 400;
25
+ background-color: #f8f8f8;
26
+ color: #000000;
27
+ cursor: pointer;
28
+ outline: none;
29
+ user-select: none;
30
+ -webkit-tap-highlight-color: transparent;
12
31
  }
13
32
 
14
33
  weapp-button.weapp-btn--mini {
@@ -20,84 +39,89 @@ weapp-button .weapp-btn {
20
39
  appearance: none;
21
40
  -webkit-appearance: none;
22
41
  box-sizing: border-box;
42
+ display: block;
23
43
  width: 100%;
24
- border-radius: 5px;
25
- border: 1px solid #d9d9d9;
26
- padding: 0 16px;
27
- height: 44px;
28
- line-height: 44px;
29
- font-size: 17px;
30
- font-weight: 400;
31
- background-color: #f8f8f8;
32
- color: #000000;
33
- cursor: pointer;
44
+ height: 100%;
45
+ min-height: inherit;
46
+ margin: 0;
47
+ border: 0;
48
+ border-radius: inherit;
49
+ padding: 0;
50
+ line-height: inherit;
51
+ font: inherit;
52
+ background: transparent;
53
+ color: inherit;
54
+ cursor: inherit;
34
55
  outline: none;
35
56
  user-select: none;
36
57
  -webkit-tap-highlight-color: transparent;
37
58
  }
38
59
 
39
- weapp-button.weapp-btn--primary .weapp-btn {
60
+ weapp-button.weapp-btn--primary {
40
61
  background-color: #07c160;
41
62
  border-color: #07c160;
42
63
  color: #ffffff;
43
64
  }
44
65
 
45
- weapp-button.weapp-btn--warn .weapp-btn {
66
+ weapp-button.weapp-btn--warn {
46
67
  background-color: #e64340;
47
68
  border-color: #e64340;
48
69
  color: #ffffff;
49
70
  }
50
71
 
51
- weapp-button.weapp-btn--plain .weapp-btn {
72
+ weapp-button.weapp-btn--plain {
52
73
  background-color: transparent;
53
74
  }
54
75
 
55
- weapp-button.weapp-btn--plain.weapp-btn--default .weapp-btn {
56
- border-color: #b2b2b2;
76
+ weapp-button.weapp-btn--plain.weapp-btn--default {
77
+ border-color: #a1a1a1;
57
78
  color: #353535;
58
79
  }
59
80
 
60
- weapp-button.weapp-btn--plain.weapp-btn--primary .weapp-btn {
81
+ weapp-button.weapp-btn--plain.weapp-btn--primary {
61
82
  border-color: #07c160;
62
83
  color: #07c160;
63
84
  }
64
85
 
65
- weapp-button.weapp-btn--plain.weapp-btn--warn .weapp-btn {
86
+ weapp-button.weapp-btn--plain.weapp-btn--warn {
66
87
  border-color: #e64340;
67
88
  color: #e64340;
68
89
  }
69
90
 
70
- weapp-button.weapp-btn--loading .weapp-btn,
71
- weapp-button.weapp-btn--disabled .weapp-btn {
91
+ weapp-button.weapp-btn--loading,
92
+ weapp-button.weapp-btn--disabled {
72
93
  background-color: #f7f7f7;
73
94
  border-color: #d9d9d9;
74
- color: #9b9b9b;
95
+ color: #bbbbbb;
75
96
  cursor: not-allowed;
76
97
  }
77
98
 
78
- weapp-button.button-hover .weapp-btn {
99
+ weapp-button.button-hover {
79
100
  background-color: #ededed;
80
101
  border-color: #d2d2d2;
81
102
  }
82
103
 
83
- weapp-button.button-hover.weapp-btn--primary .weapp-btn {
104
+ weapp-button.button-hover.weapp-btn--primary {
84
105
  background-color: #06ad56;
85
106
  border-color: #06ad56;
86
107
  }
87
108
 
88
- weapp-button.button-hover.weapp-btn--warn .weapp-btn {
109
+ weapp-button.button-hover.weapp-btn--warn {
89
110
  background-color: #d93c37;
90
111
  border-color: #d93c37;
91
112
  }
92
113
 
93
- weapp-button.button-hover.weapp-btn--plain .weapp-btn {
114
+ weapp-button.button-hover.weapp-btn--plain {
94
115
  background-color: rgba(0, 0, 0, 0.06);
95
116
  }
96
117
 
97
- weapp-button.weapp-btn--mini .weapp-btn {
118
+ weapp-button.weapp-btn--mini {
119
+ font-size: 13px;
120
+ }
121
+
122
+ weapp-button.weapp-btn--mini {
98
123
  height: 32px;
99
124
  line-height: 32px;
100
- font-size: 13px;
101
125
  padding: 0 12px;
102
126
  border-radius: 4px;
103
127
  }
@@ -108,6 +132,7 @@ weapp-button .weapp-btn__content {
108
132
  justify-content: center;
109
133
  gap: 6px;
110
134
  width: 100%;
135
+ height: 100%;
111
136
  }
112
137
 
113
138
  weapp-button .weapp-btn__loading {
@@ -164,5 +189,5 @@ function ensureButtonStyle(root) {
164
189
  }
165
190
 
166
191
  //#endregion
167
- export { ensureButtonStyle };
192
+ export { BUTTON_STYLE, ensureButtonStyle };
168
193
  //# sourceMappingURL=style.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":[],"sources":["../../../src/runtime/button/style.ts"],"sourcesContent":["import { injectStyle } from '../style'\n\nconst BUTTON_STYLE_ID = 'weapp-web-button-style'\nconst styleTargets = new WeakSet<ParentNode>()\nlet sharedSheet: CSSStyleSheet | undefined\n\nconst BUTTON_STYLE = `\nweapp-button {\n display: block;\n width: 100%;\n box-sizing: border-box;\n}\n\nweapp-button.weapp-btn--mini {\n display: inline-block;\n width: auto;\n}\n\nweapp-button .weapp-btn {\n appearance: none;\n -webkit-appearance: none;\n box-sizing: border-box;\n width: 100%;\n border-radius: 5px;\n border: 1px solid #d9d9d9;\n padding: 0 16px;\n height: 44px;\n line-height: 44px;\n font-size: 17px;\n font-weight: 400;\n background-color: #f8f8f8;\n color: #000000;\n cursor: pointer;\n outline: none;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n}\n\nweapp-button.weapp-btn--primary .weapp-btn {\n background-color: #07c160;\n border-color: #07c160;\n color: #ffffff;\n}\n\nweapp-button.weapp-btn--warn .weapp-btn {\n background-color: #e64340;\n border-color: #e64340;\n color: #ffffff;\n}\n\nweapp-button.weapp-btn--plain .weapp-btn {\n background-color: transparent;\n}\n\nweapp-button.weapp-btn--plain.weapp-btn--default .weapp-btn {\n border-color: #b2b2b2;\n color: #353535;\n}\n\nweapp-button.weapp-btn--plain.weapp-btn--primary .weapp-btn {\n border-color: #07c160;\n color: #07c160;\n}\n\nweapp-button.weapp-btn--plain.weapp-btn--warn .weapp-btn {\n border-color: #e64340;\n color: #e64340;\n}\n\nweapp-button.weapp-btn--loading .weapp-btn,\nweapp-button.weapp-btn--disabled .weapp-btn {\n background-color: #f7f7f7;\n border-color: #d9d9d9;\n color: #9b9b9b;\n cursor: not-allowed;\n}\n\nweapp-button.button-hover .weapp-btn {\n background-color: #ededed;\n border-color: #d2d2d2;\n}\n\nweapp-button.button-hover.weapp-btn--primary .weapp-btn {\n background-color: #06ad56;\n border-color: #06ad56;\n}\n\nweapp-button.button-hover.weapp-btn--warn .weapp-btn {\n background-color: #d93c37;\n border-color: #d93c37;\n}\n\nweapp-button.button-hover.weapp-btn--plain .weapp-btn {\n background-color: rgba(0, 0, 0, 0.06);\n}\n\nweapp-button.weapp-btn--mini .weapp-btn {\n height: 32px;\n line-height: 32px;\n font-size: 13px;\n padding: 0 12px;\n border-radius: 4px;\n}\n\nweapp-button .weapp-btn__content {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n}\n\nweapp-button .weapp-btn__loading {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid currentColor;\n border-top-color: transparent;\n animation: weapp-btn-spin 0.8s linear infinite;\n}\n\nweapp-button .weapp-btn__loading[hidden] {\n display: none;\n}\n\n@keyframes weapp-btn-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n`\n\nfunction resolveAdoptedStyleSheets(root: ShadowRoot) {\n const doc = root.ownerDocument ?? document\n if (!doc || typeof doc.createElement !== 'function') {\n return undefined\n }\n if (!('adoptedStyleSheets' in doc)) {\n return undefined\n }\n if (!sharedSheet && 'replaceSync' in CSSStyleSheet.prototype) {\n const sheet = new CSSStyleSheet()\n sheet.replaceSync(BUTTON_STYLE)\n sharedSheet = sheet\n }\n return sharedSheet\n}\n\nexport function ensureButtonStyle(root?: ShadowRoot) {\n if (typeof document === 'undefined') {\n return\n }\n if (root && styleTargets.has(root)) {\n return\n }\n if (!root) {\n const target = document.head\n if (!target || styleTargets.has(target)) {\n return\n }\n injectStyle(BUTTON_STYLE, BUTTON_STYLE_ID)\n styleTargets.add(target)\n return\n }\n const sheet = resolveAdoptedStyleSheets(root)\n if (sheet) {\n const existing = root.adoptedStyleSheets ?? []\n if (!existing.includes(sheet)) {\n root.adoptedStyleSheets = [...existing, sheet]\n }\n styleTargets.add(root)\n return\n }\n const style = document.createElement('style')\n style.id = BUTTON_STYLE_ID\n style.textContent = BUTTON_STYLE\n root.appendChild(style)\n styleTargets.add(root)\n}\n"],"mappings":";;;AAEA,MAAM,kBAAkB;AACxB,MAAM,+BAAe,IAAI,QAAoB;AAC7C,IAAI;AAEJ,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HrB,SAAS,0BAA0B,MAAkB;CACnD,MAAM,MAAM,KAAK,iBAAiB;CAClC,IAAI,CAAC,OAAO,OAAO,IAAI,kBAAkB,YACvC;CAEF,IAAI,EAAE,wBAAwB,MAC5B;CAEF,IAAI,CAAC,eAAe,iBAAiB,cAAc,WAAW;EAC5D,MAAM,QAAQ,IAAI,cAAc;EAChC,MAAM,YAAY,YAAY;EAC9B,cAAc;CAChB;CACA,OAAO;AACT;AAEA,SAAgB,kBAAkB,MAAmB;CACnD,IAAI,OAAO,aAAa,aACtB;CAEF,IAAI,QAAQ,aAAa,IAAI,IAAI,GAC/B;CAEF,IAAI,CAAC,MAAM;EACT,MAAM,SAAS,SAAS;EACxB,IAAI,CAAC,UAAU,aAAa,IAAI,MAAM,GACpC;EAEF,YAAY,cAAc,eAAe;EACzC,aAAa,IAAI,MAAM;EACvB;CACF;CACA,MAAM,QAAQ,0BAA0B,IAAI;CAC5C,IAAI,OAAO;EACT,MAAM,WAAW,KAAK,sBAAsB,CAAC;EAC7C,IAAI,CAAC,SAAS,SAAS,KAAK,GAC1B,KAAK,qBAAqB,CAAC,GAAG,UAAU,KAAK;EAE/C,aAAa,IAAI,IAAI;EACrB;CACF;CACA,MAAM,QAAQ,SAAS,cAAc,OAAO;CAC5C,MAAM,KAAK;CACX,MAAM,cAAc;CACpB,KAAK,YAAY,KAAK;CACtB,aAAa,IAAI,IAAI;AACvB"}
1
+ {"version":3,"file":"style.mjs","names":[],"sources":["../../../src/runtime/button/style.ts"],"sourcesContent":["import { injectStyle } from '../style'\n\nconst BUTTON_STYLE_ID = 'weapp-web-button-style'\nconst styleTargets = new WeakSet<ParentNode>()\nlet sharedSheet: CSSStyleSheet | undefined\n\nexport const BUTTON_STYLE = `\nweapp-button {\n appearance: none;\n -webkit-appearance: none;\n position: relative;\n display: block;\n width: 184px;\n max-width: 100%;\n min-width: 0;\n margin-right: auto;\n margin-left: auto;\n box-sizing: border-box;\n border: 1px solid #d9d9d9;\n border-radius: 5px;\n padding: 0 16px;\n line-height: calc(2.55555556em - 1px);\n font-size: 18px;\n font-weight: 400;\n background-color: #f8f8f8;\n color: #000000;\n cursor: pointer;\n outline: none;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n}\n\nweapp-button.weapp-btn--mini {\n display: inline-block;\n width: auto;\n}\n\nweapp-button .weapp-btn {\n appearance: none;\n -webkit-appearance: none;\n box-sizing: border-box;\n display: block;\n width: 100%;\n height: 100%;\n min-height: inherit;\n margin: 0;\n border: 0;\n border-radius: inherit;\n padding: 0;\n line-height: inherit;\n font: inherit;\n background: transparent;\n color: inherit;\n cursor: inherit;\n outline: none;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n}\n\nweapp-button.weapp-btn--primary {\n background-color: #07c160;\n border-color: #07c160;\n color: #ffffff;\n}\n\nweapp-button.weapp-btn--warn {\n background-color: #e64340;\n border-color: #e64340;\n color: #ffffff;\n}\n\nweapp-button.weapp-btn--plain {\n background-color: transparent;\n}\n\nweapp-button.weapp-btn--plain.weapp-btn--default {\n border-color: #a1a1a1;\n color: #353535;\n}\n\nweapp-button.weapp-btn--plain.weapp-btn--primary {\n border-color: #07c160;\n color: #07c160;\n}\n\nweapp-button.weapp-btn--plain.weapp-btn--warn {\n border-color: #e64340;\n color: #e64340;\n}\n\nweapp-button.weapp-btn--loading,\nweapp-button.weapp-btn--disabled {\n background-color: #f7f7f7;\n border-color: #d9d9d9;\n color: #bbbbbb;\n cursor: not-allowed;\n}\n\nweapp-button.button-hover {\n background-color: #ededed;\n border-color: #d2d2d2;\n}\n\nweapp-button.button-hover.weapp-btn--primary {\n background-color: #06ad56;\n border-color: #06ad56;\n}\n\nweapp-button.button-hover.weapp-btn--warn {\n background-color: #d93c37;\n border-color: #d93c37;\n}\n\nweapp-button.button-hover.weapp-btn--plain {\n background-color: rgba(0, 0, 0, 0.06);\n}\n\nweapp-button.weapp-btn--mini {\n font-size: 13px;\n}\n\nweapp-button.weapp-btn--mini {\n height: 32px;\n line-height: 32px;\n padding: 0 12px;\n border-radius: 4px;\n}\n\nweapp-button .weapp-btn__content {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 100%;\n height: 100%;\n}\n\nweapp-button .weapp-btn__loading {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid currentColor;\n border-top-color: transparent;\n animation: weapp-btn-spin 0.8s linear infinite;\n}\n\nweapp-button .weapp-btn__loading[hidden] {\n display: none;\n}\n\n@keyframes weapp-btn-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n`\n\nfunction resolveAdoptedStyleSheets(root: ShadowRoot) {\n const doc = root.ownerDocument ?? document\n if (!doc || typeof doc.createElement !== 'function') {\n return undefined\n }\n if (!('adoptedStyleSheets' in doc)) {\n return undefined\n }\n if (!sharedSheet && 'replaceSync' in CSSStyleSheet.prototype) {\n const sheet = new CSSStyleSheet()\n sheet.replaceSync(BUTTON_STYLE)\n sharedSheet = sheet\n }\n return sharedSheet\n}\n\nexport function ensureButtonStyle(root?: ShadowRoot) {\n if (typeof document === 'undefined') {\n return\n }\n if (root && styleTargets.has(root)) {\n return\n }\n if (!root) {\n const target = document.head\n if (!target || styleTargets.has(target)) {\n return\n }\n injectStyle(BUTTON_STYLE, BUTTON_STYLE_ID)\n styleTargets.add(target)\n return\n }\n const sheet = resolveAdoptedStyleSheets(root)\n if (sheet) {\n const existing = root.adoptedStyleSheets ?? []\n if (!existing.includes(sheet)) {\n root.adoptedStyleSheets = [...existing, sheet]\n }\n styleTargets.add(root)\n return\n }\n const style = document.createElement('style')\n style.id = BUTTON_STYLE_ID\n style.textContent = BUTTON_STYLE\n root.appendChild(style)\n styleTargets.add(root)\n}\n"],"mappings":";;;AAEA,MAAM,kBAAkB;AACxB,MAAM,+BAAe,IAAI,QAAoB;AAC7C,IAAI;AAEJ,MAAa,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsJ5B,SAAS,0BAA0B,MAAkB;CACnD,MAAM,MAAM,KAAK,iBAAiB;CAClC,IAAI,CAAC,OAAO,OAAO,IAAI,kBAAkB,YACvC;CAEF,IAAI,EAAE,wBAAwB,MAC5B;CAEF,IAAI,CAAC,eAAe,iBAAiB,cAAc,WAAW;EAC5D,MAAM,QAAQ,IAAI,cAAc;EAChC,MAAM,YAAY,YAAY;EAC9B,cAAc;CAChB;CACA,OAAO;AACT;AAEA,SAAgB,kBAAkB,MAAmB;CACnD,IAAI,OAAO,aAAa,aACtB;CAEF,IAAI,QAAQ,aAAa,IAAI,IAAI,GAC/B;CAEF,IAAI,CAAC,MAAM;EACT,MAAM,SAAS,SAAS;EACxB,IAAI,CAAC,UAAU,aAAa,IAAI,MAAM,GACpC;EAEF,YAAY,cAAc,eAAe;EACzC,aAAa,IAAI,MAAM;EACvB;CACF;CACA,MAAM,QAAQ,0BAA0B,IAAI;CAC5C,IAAI,OAAO;EACT,MAAM,WAAW,KAAK,sBAAsB,CAAC;EAC7C,IAAI,CAAC,SAAS,SAAS,KAAK,GAC1B,KAAK,qBAAqB,CAAC,GAAG,UAAU,KAAK;EAE/C,aAAa,IAAI,IAAI;EACrB;CACF;CACA,MAAM,QAAQ,SAAS,cAAc,OAAO;CAC5C,MAAM,KAAK;CACX,MAAM,cAAc;CACpB,KAAK,YAAY,KAAK;CACtB,aAAa,IAAI,IAAI;AACvB"}
@@ -3,7 +3,6 @@ function isPlainObject(value) {
3
3
  return typeof value === "object" && value !== null && !Array.isArray(value);
4
4
  }
5
5
  function mergeLifetimes(target, source) {
6
- if (!source) return;
7
6
  for (const key of [
8
7
  "created",
9
8
  "attached",
@@ -20,7 +19,6 @@ function mergeLifetimes(target, source) {
20
19
  }
21
20
  }
22
21
  function mergePageLifetimes(target, source) {
23
- if (!source) return;
24
22
  for (const key of [
25
23
  "show",
26
24
  "hide",
@@ -35,6 +33,15 @@ function mergePageLifetimes(target, source) {
35
33
  } : next;
36
34
  }
37
35
  }
36
+ function resolveNativeLifetimes(source) {
37
+ const native = source;
38
+ return {
39
+ created: native.created,
40
+ attached: native.attached,
41
+ ready: native.ready,
42
+ detached: native.detached
43
+ };
44
+ }
38
45
  function normalizeBehaviors(component) {
39
46
  if (!component) return {
40
47
  component: void 0,
@@ -59,6 +66,14 @@ function normalizeBehaviors(component) {
59
66
  ...merged.methods ?? {},
60
67
  ...source.methods
61
68
  };
69
+ if (source.observers) merged.observers = {
70
+ ...merged.observers ?? {},
71
+ ...source.observers
72
+ };
73
+ if (source.options) merged.options = {
74
+ ...merged.options ?? {},
75
+ ...source.options
76
+ };
62
77
  if (source.lifetimes) {
63
78
  merged.lifetimes = merged.lifetimes ?? {};
64
79
  mergeLifetimes(merged.lifetimes, source.lifetimes);
@@ -67,6 +82,15 @@ function normalizeBehaviors(component) {
67
82
  merged.pageLifetimes = merged.pageLifetimes ?? {};
68
83
  mergePageLifetimes(merged.pageLifetimes, source.pageLifetimes);
69
84
  }
85
+ const nativeLifetimes = resolveNativeLifetimes(source);
86
+ if (Object.values(nativeLifetimes).some(Boolean)) {
87
+ merged.lifetimes = merged.lifetimes ?? {};
88
+ mergeLifetimes(merged.lifetimes, nativeLifetimes);
89
+ }
90
+ if (source.relations) merged.relations = {
91
+ ...merged.relations ?? {},
92
+ ...source.relations
93
+ };
70
94
  };
71
95
  const walk = (source) => {
72
96
  if (visited.has(source)) {
@@ -1 +1 @@
1
- {"version":3,"file":"behavior.mjs","names":[],"sources":["../../../src/runtime/component/behavior.ts"],"sourcesContent":["import type {\n ComponentOptions,\n ComponentPublicInstance,\n DataRecord,\n LifeTimeHooks,\n PageLifeTimeHooks,\n} from './types'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction mergeLifetimes(target: LifeTimeHooks, source?: LifeTimeHooks) {\n if (!source) {\n return\n }\n const keys: Array<keyof LifeTimeHooks> = ['created', 'attached', 'ready', 'detached']\n for (const key of keys) {\n const next = source[key]\n if (!next) {\n continue\n }\n const current = target[key]\n target[key] = current\n ? function merged(this: ComponentPublicInstance) {\n current.call(this)\n next.call(this)\n }\n : next\n }\n}\n\nfunction mergePageLifetimes(target: PageLifeTimeHooks, source?: PageLifeTimeHooks) {\n if (!source) {\n return\n }\n const keys: Array<keyof PageLifeTimeHooks> = ['show', 'hide', 'resize']\n for (const key of keys) {\n const next = source[key]\n if (!next) {\n continue\n }\n const current = target[key]\n target[key] = current\n ? function merged(this: ComponentPublicInstance) {\n current.call(this)\n next.call(this)\n }\n : next\n }\n}\n\nexport function normalizeBehaviors(component: ComponentOptions | undefined) {\n if (!component) {\n return { component: undefined, warnings: [] as string[] }\n }\n const warnings: string[] = []\n const visited = new Set<ComponentOptions>()\n const merged: ComponentOptions = {}\n\n const mergeComponent = (source: ComponentOptions) => {\n if (source.properties) {\n merged.properties = { ...(merged.properties ?? {}), ...source.properties }\n }\n if (source.data) {\n const nextData = typeof source.data === 'function'\n ? source.data()\n : source.data\n if (isPlainObject(nextData)) {\n merged.data = { ...((merged.data as DataRecord) ?? {}), ...nextData }\n }\n }\n if (source.methods) {\n merged.methods = { ...(merged.methods ?? {}), ...source.methods }\n }\n if (source.lifetimes) {\n merged.lifetimes = merged.lifetimes ?? {}\n mergeLifetimes(merged.lifetimes, source.lifetimes)\n }\n if (source.pageLifetimes) {\n merged.pageLifetimes = merged.pageLifetimes ?? {}\n mergePageLifetimes(merged.pageLifetimes, source.pageLifetimes)\n }\n }\n\n const walk = (source: ComponentOptions) => {\n if (visited.has(source)) {\n warnings.push('[@weapp-vite/web] behaviors 存在循环引用,已跳过。')\n return\n }\n visited.add(source)\n const behaviors = source.behaviors ?? []\n if (Array.isArray(behaviors)) {\n for (const behavior of behaviors) {\n if (!behavior || !isPlainObject(behavior)) {\n warnings.push('[@weapp-vite/web] behaviors 仅支持对象,已忽略非对象条目。')\n continue\n }\n walk(behavior as ComponentOptions)\n mergeComponent(behavior as ComponentOptions)\n }\n }\n else if (behaviors) {\n warnings.push('[@weapp-vite/web] behaviors 仅支持数组,已忽略。')\n }\n }\n\n walk(component)\n mergeComponent(component)\n\n return {\n component: merged,\n warnings,\n }\n}\n"],"mappings":";AAQA,SAAS,cAAc,OAA8C;CACnE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,eAAe,QAAuB,QAAwB;CACrE,IAAI,CAAC,QACH;CAGF,KAAK,MAAM,OAAO;EADwB;EAAW;EAAY;EAAS;CACrD,GAAG;EACtB,MAAM,OAAO,OAAO;EACpB,IAAI,CAAC,MACH;EAEF,MAAM,UAAU,OAAO;EACvB,OAAO,OAAO,UACV,SAAS,SAAsC;GAC/C,QAAQ,KAAK,IAAI;GACjB,KAAK,KAAK,IAAI;EAChB,IACE;CACN;AACF;AAEA,SAAS,mBAAmB,QAA2B,QAA4B;CACjF,IAAI,CAAC,QACH;CAGF,KAAK,MAAM,OAAO;EAD4B;EAAQ;EAAQ;CACzC,GAAG;EACtB,MAAM,OAAO,OAAO;EACpB,IAAI,CAAC,MACH;EAEF,MAAM,UAAU,OAAO;EACvB,OAAO,OAAO,UACV,SAAS,SAAsC;GAC/C,QAAQ,KAAK,IAAI;GACjB,KAAK,KAAK,IAAI;EAChB,IACE;CACN;AACF;AAEA,SAAgB,mBAAmB,WAAyC;CAC1E,IAAI,CAAC,WACH,OAAO;EAAE,WAAW;EAAW,UAAU,CAAC;CAAc;CAE1D,MAAM,WAAqB,CAAC;CAC5B,MAAM,0BAAU,IAAI,IAAsB;CAC1C,MAAM,SAA2B,CAAC;CAElC,MAAM,kBAAkB,WAA6B;EACnD,IAAI,OAAO,YACT,OAAO,aAAa;GAAE,GAAI,OAAO,cAAc,CAAC;GAAI,GAAG,OAAO;EAAW;EAE3E,IAAI,OAAO,MAAM;GACf,MAAM,WAAW,OAAO,OAAO,SAAS,aACpC,OAAO,KAAK,IACZ,OAAO;GACX,IAAI,cAAc,QAAQ,GACxB,OAAO,OAAO;IAAE,GAAK,OAAO,QAAuB,CAAC;IAAI,GAAG;GAAS;EAExE;EACA,IAAI,OAAO,SACT,OAAO,UAAU;GAAE,GAAI,OAAO,WAAW,CAAC;GAAI,GAAG,OAAO;EAAQ;EAElE,IAAI,OAAO,WAAW;GACpB,OAAO,YAAY,OAAO,aAAa,CAAC;GACxC,eAAe,OAAO,WAAW,OAAO,SAAS;EACnD;EACA,IAAI,OAAO,eAAe;GACxB,OAAO,gBAAgB,OAAO,iBAAiB,CAAC;GAChD,mBAAmB,OAAO,eAAe,OAAO,aAAa;EAC/D;CACF;CAEA,MAAM,QAAQ,WAA6B;EACzC,IAAI,QAAQ,IAAI,MAAM,GAAG;GACvB,SAAS,KAAK,yCAAyC;GACvD;EACF;EACA,QAAQ,IAAI,MAAM;EAClB,MAAM,YAAY,OAAO,aAAa,CAAC;EACvC,IAAI,MAAM,QAAQ,SAAS,GACzB,KAAK,MAAM,YAAY,WAAW;GAChC,IAAI,CAAC,YAAY,CAAC,cAAc,QAAQ,GAAG;IACzC,SAAS,KAAK,6CAA6C;IAC3D;GACF;GACA,KAAK,QAA4B;GACjC,eAAe,QAA4B;EAC7C;OAEG,IAAI,WACP,SAAS,KAAK,wCAAwC;CAE1D;CAEA,KAAK,SAAS;CACd,eAAe,SAAS;CAExB,OAAO;EACL,WAAW;EACX;CACF;AACF"}
1
+ {"version":3,"file":"behavior.mjs","names":[],"sources":["../../../src/runtime/component/behavior.ts"],"sourcesContent":["import type {\n ComponentOptions,\n ComponentPublicInstance,\n DataRecord,\n LifeTimeHooks,\n PageLifeTimeHooks,\n} from './types'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction mergeLifetimes(target: LifeTimeHooks, source: LifeTimeHooks) {\n const keys: Array<keyof LifeTimeHooks> = ['created', 'attached', 'ready', 'detached']\n for (const key of keys) {\n const next = source[key]\n if (!next) {\n continue\n }\n const current = target[key]\n target[key] = current\n ? function merged(this: ComponentPublicInstance) {\n current.call(this)\n next.call(this)\n }\n : next\n }\n}\n\nfunction mergePageLifetimes(target: PageLifeTimeHooks, source: PageLifeTimeHooks) {\n const keys: Array<keyof PageLifeTimeHooks> = ['show', 'hide', 'resize']\n for (const key of keys) {\n const next = source[key]\n if (!next) {\n continue\n }\n const current = target[key]\n target[key] = current\n ? function merged(this: ComponentPublicInstance) {\n current.call(this)\n next.call(this)\n }\n : next\n }\n}\n\nfunction resolveNativeLifetimes(source: ComponentOptions) {\n const native = source as ComponentOptions & LifeTimeHooks\n return {\n created: native.created,\n attached: native.attached,\n ready: native.ready,\n detached: native.detached,\n }\n}\n\nexport function normalizeBehaviors(component: ComponentOptions | undefined) {\n if (!component) {\n return { component: undefined, warnings: [] as string[] }\n }\n const warnings: string[] = []\n const visited = new Set<ComponentOptions>()\n const merged: ComponentOptions = {}\n\n const mergeComponent = (source: ComponentOptions) => {\n if (source.properties) {\n merged.properties = { ...(merged.properties ?? {}), ...source.properties }\n }\n if (source.data) {\n const nextData = typeof source.data === 'function'\n ? source.data()\n : source.data\n if (isPlainObject(nextData)) {\n merged.data = { ...((merged.data as DataRecord) ?? {}), ...nextData }\n }\n }\n if (source.methods) {\n merged.methods = { ...(merged.methods ?? {}), ...source.methods }\n }\n if (source.observers) {\n merged.observers = { ...(merged.observers ?? {}), ...source.observers }\n }\n if (source.options) {\n merged.options = { ...(merged.options ?? {}), ...source.options }\n }\n if (source.lifetimes) {\n merged.lifetimes = merged.lifetimes ?? {}\n mergeLifetimes(merged.lifetimes, source.lifetimes)\n }\n if (source.pageLifetimes) {\n merged.pageLifetimes = merged.pageLifetimes ?? {}\n mergePageLifetimes(merged.pageLifetimes, source.pageLifetimes)\n }\n const nativeLifetimes = resolveNativeLifetimes(source)\n if (Object.values(nativeLifetimes).some(Boolean)) {\n merged.lifetimes = merged.lifetimes ?? {}\n mergeLifetimes(merged.lifetimes, nativeLifetimes)\n }\n if (source.relations) {\n merged.relations = { ...(merged.relations ?? {}), ...source.relations }\n }\n }\n\n const walk = (source: ComponentOptions) => {\n if (visited.has(source)) {\n warnings.push('[@weapp-vite/web] behaviors 存在循环引用,已跳过。')\n return\n }\n visited.add(source)\n const behaviors = source.behaviors ?? []\n if (Array.isArray(behaviors)) {\n for (const behavior of behaviors) {\n if (!behavior || !isPlainObject(behavior)) {\n warnings.push('[@weapp-vite/web] behaviors 仅支持对象,已忽略非对象条目。')\n continue\n }\n walk(behavior as ComponentOptions)\n mergeComponent(behavior as ComponentOptions)\n }\n }\n else if (behaviors) {\n warnings.push('[@weapp-vite/web] behaviors 仅支持数组,已忽略。')\n }\n }\n\n walk(component)\n mergeComponent(component)\n\n return {\n component: merged,\n warnings,\n }\n}\n"],"mappings":"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"}