@quicktvui/ai 1.0.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 (676) hide show
  1. package/README.md +36 -0
  2. package/index.js +2 -0
  3. package/package.json +23 -0
  4. package/postinstall.js +61 -0
  5. package/rules/.claude/commands/create-component.md +39 -0
  6. package/rules/.claude/commands/create-page.md +44 -0
  7. package/rules/.claude/commands/create-project.md +25 -0
  8. package/rules/.claude/commands/lookup-api.md +28 -0
  9. package/rules/.claude/commands/lookup-css.md +53 -0
  10. package/rules/.claude/settings.local.json +11 -0
  11. package/rules/.clinerules +367 -0
  12. package/rules/.cursorrules +367 -0
  13. package/rules/.docs/examples/component/animation/alpha-props.vue +130 -0
  14. package/rules/.docs/examples/component/animation/alpha.vue +169 -0
  15. package/rules/.docs/examples/component/animation/animator-props.vue +101 -0
  16. package/rules/.docs/examples/component/animation/animators-props.vue +145 -0
  17. package/rules/.docs/examples/component/animation/animators.vue +322 -0
  18. package/rules/.docs/examples/component/animation/basic.vue +96 -0
  19. package/rules/.docs/examples/component/animation/interpolator.vue +330 -0
  20. package/rules/.docs/examples/component/animation/listener.vue +151 -0
  21. package/rules/.docs/examples/component/animation/repeat.vue +113 -0
  22. package/rules/.docs/examples/component/animation/rotation-props.vue +148 -0
  23. package/rules/.docs/examples/component/animation/rotation-xy.vue +255 -0
  24. package/rules/.docs/examples/component/animation/rotation.vue +188 -0
  25. package/rules/.docs/examples/component/animation/scale-props.vue +129 -0
  26. package/rules/.docs/examples/component/animation/scale.vue +169 -0
  27. package/rules/.docs/examples/component/animation/translation-props.vue +128 -0
  28. package/rules/.docs/examples/component/animation/translation.vue +169 -0
  29. package/rules/.docs/examples/component/aside/basic.vue +34 -0
  30. package/rules/.docs/examples/component/audio-player/basic.vue +104 -0
  31. package/rules/.docs/examples/component/audio-player/event-global.vue +492 -0
  32. package/rules/.docs/examples/component/audio-player/event.vue +447 -0
  33. package/rules/.docs/examples/component/audio-player/player-manager.vue +100 -0
  34. package/rules/.docs/examples/component/audio-player-service/basic.vue +102 -0
  35. package/rules/.docs/examples/component/audio-player-service/event-global.vue +488 -0
  36. package/rules/.docs/examples/component/audio-player-service/event.vue +420 -0
  37. package/rules/.docs/examples/component/audio-player-service/player-manager.vue +100 -0
  38. package/rules/.docs/examples/component/button/background.vue +28 -0
  39. package/rules/.docs/examples/component/button/basic.vue +13 -0
  40. package/rules/.docs/examples/component/button/border.vue +18 -0
  41. package/rules/.docs/examples/component/button/custom-content.vue +18 -0
  42. package/rules/.docs/examples/component/button/custom-icon-style.vue +25 -0
  43. package/rules/.docs/examples/component/button/custom-icon.vue +19 -0
  44. package/rules/.docs/examples/component/button/custom-net-icon.vue +20 -0
  45. package/rules/.docs/examples/component/button/custom-style.vue +17 -0
  46. package/rules/.docs/examples/component/button/custom-text.vue +23 -0
  47. package/rules/.docs/examples/component/button/disabled.vue +13 -0
  48. package/rules/.docs/examples/component/button/round.vue +13 -0
  49. package/rules/.docs/examples/component/button/size.vue +16 -0
  50. package/rules/.docs/examples/component/button/square.vue +13 -0
  51. package/rules/.docs/examples/component/checkbox-group/basic.vue +97 -0
  52. package/rules/.docs/examples/component/collapse/basic.vue +156 -0
  53. package/rules/.docs/examples/component/column/basic.vue +15 -0
  54. package/rules/.docs/examples/component/container/layout-ahm.vue +48 -0
  55. package/rules/.docs/examples/component/container/layout-ahmf.vue +51 -0
  56. package/rules/.docs/examples/component/container/layout-am.vue +43 -0
  57. package/rules/.docs/examples/component/container/layout-ham.vue +48 -0
  58. package/rules/.docs/examples/component/container/layout-hamf.vue +53 -0
  59. package/rules/.docs/examples/component/container/layout-hm.vue +43 -0
  60. package/rules/.docs/examples/component/container/layout-hmf.vue +46 -0
  61. package/rules/.docs/examples/component/dialog/basic.vue +72 -0
  62. package/rules/.docs/examples/component/div/background-img.vue +49 -0
  63. package/rules/.docs/examples/component/div/background.vue +28 -0
  64. package/rules/.docs/examples/component/div/basic.vue +28 -0
  65. package/rules/.docs/examples/component/div/border.vue +72 -0
  66. package/rules/.docs/examples/component/div/click.vue +66 -0
  67. package/rules/.docs/examples/component/div/focus-background.vue +60 -0
  68. package/rules/.docs/examples/component/div/focus.vue +58 -0
  69. package/rules/.docs/examples/component/div/gradient-background.vue +36 -0
  70. package/rules/.docs/examples/component/footer/basic.vue +34 -0
  71. package/rules/.docs/examples/component/grid-view/basic.vue +59 -0
  72. package/rules/.docs/examples/component/grid-view/page.vue +80 -0
  73. package/rules/.docs/examples/component/grid-view/ref-base.vue +50 -0
  74. package/rules/.docs/examples/component/grid-view/ref-page.vue +102 -0
  75. package/rules/.docs/examples/component/header/basic.vue +39 -0
  76. package/rules/.docs/examples/component/html/alert.vue +28 -0
  77. package/rules/.docs/examples/component/html/audio.vue +24 -0
  78. package/rules/.docs/examples/component/html/h.vue +30 -0
  79. package/rules/.docs/examples/component/html/sound.vue +33 -0
  80. package/rules/.docs/examples/component/html/video.vue +23 -0
  81. package/rules/.docs/examples/component/image/assets.vue +40 -0
  82. package/rules/.docs/examples/component/image/network.vue +36 -0
  83. package/rules/.docs/examples/component/img/assets.vue +40 -0
  84. package/rules/.docs/examples/component/img/network.vue +36 -0
  85. package/rules/.docs/examples/component/indicator-list-view/basic.vue +476 -0
  86. package/rules/.docs/examples/component/input/basic.vue +26 -0
  87. package/rules/.docs/examples/component/list-view/basic.vue +58 -0
  88. package/rules/.docs/examples/component/list-view/ref-basic.vue +33 -0
  89. package/rules/.docs/examples/component/list-view/ref-operations.vue +58 -0
  90. package/rules/.docs/examples/component/list-view/ref-page.vue +82 -0
  91. package/rules/.docs/examples/component/loading/basic.vue +12 -0
  92. package/rules/.docs/examples/component/lottie/basic.vue +83 -0
  93. package/rules/.docs/examples/component/lottie/event.vue +126 -0
  94. package/rules/.docs/examples/component/lottie/local.vue +90 -0
  95. package/rules/.docs/examples/component/lottie/network.vue +82 -0
  96. package/rules/.docs/examples/component/main/basic.vue +34 -0
  97. package/rules/.docs/examples/component/nav-bar/basic.vue +45 -0
  98. package/rules/.docs/examples/component/p/basic.vue +40 -0
  99. package/rules/.docs/examples/component/p/gravity.vue +62 -0
  100. package/rules/.docs/examples/component/player-manager/aspect-ratio.vue +286 -0
  101. package/rules/.docs/examples/component/player-manager/basic.vue +87 -0
  102. package/rules/.docs/examples/component/player-manager/control.vue +356 -0
  103. package/rules/.docs/examples/component/player-manager/custom-player-view.vue +105 -0
  104. package/rules/.docs/examples/component/player-manager/custom-player.vue +100 -0
  105. package/rules/.docs/examples/component/player-manager/decode.vue +218 -0
  106. package/rules/.docs/examples/component/player-manager/definition.vue +199 -0
  107. package/rules/.docs/examples/component/player-manager/event-global.vue +581 -0
  108. package/rules/.docs/examples/component/player-manager/event.vue +632 -0
  109. package/rules/.docs/examples/component/player-manager/image-player.vue +331 -0
  110. package/rules/.docs/examples/component/player-manager/media-item-interceptor.vue +105 -0
  111. package/rules/.docs/examples/component/player-manager/media-item-list-interceptor.vue +104 -0
  112. package/rules/.docs/examples/component/player-manager/media-item-list.vue +268 -0
  113. package/rules/.docs/examples/component/player-manager/media-source-interceptor.vue +115 -0
  114. package/rules/.docs/examples/component/player-manager/media-source-list-interceptor.vue +111 -0
  115. package/rules/.docs/examples/component/player-manager/multi-player.vue +130 -0
  116. package/rules/.docs/examples/component/player-manager/play-mode.vue +260 -0
  117. package/rules/.docs/examples/component/player-manager/play-rate.vue +244 -0
  118. package/rules/.docs/examples/component/player-manager/player-size.vue +119 -0
  119. package/rules/.docs/examples/component/player-manager/player-view.vue +381 -0
  120. package/rules/.docs/examples/component/player-manager/post-roll-ad.vue +189 -0
  121. package/rules/.docs/examples/component/player-manager/previous-roll-ad.vue +172 -0
  122. package/rules/.docs/examples/component/player-manager/start-position.vue +108 -0
  123. package/rules/.docs/examples/component/player-manager/text-left-player.vue +306 -0
  124. package/rules/.docs/examples/component/player-manager/text-right-player.vue +306 -0
  125. package/rules/.docs/examples/component/player-manager/window.vue +140 -0
  126. package/rules/.docs/examples/component/poster/basic.vue +144 -0
  127. package/rules/.docs/examples/component/poster/corner.vue +123 -0
  128. package/rules/.docs/examples/component/poster/decoration.vue +82 -0
  129. package/rules/.docs/examples/component/poster/float-title.vue +103 -0
  130. package/rules/.docs/examples/component/poster/ripple.vue +118 -0
  131. package/rules/.docs/examples/component/poster/score.vue +108 -0
  132. package/rules/.docs/examples/component/poster/shadow.vue +113 -0
  133. package/rules/.docs/examples/component/poster/shimmer.vue +113 -0
  134. package/rules/.docs/examples/component/poster/sub-title.vue +110 -0
  135. package/rules/.docs/examples/component/poster/title.vue +106 -0
  136. package/rules/.docs/examples/component/progress-bar/basic.vue +61 -0
  137. package/rules/.docs/examples/component/qr-code/basic.vue +16 -0
  138. package/rules/.docs/examples/component/radio-group/basic.vue +105 -0
  139. package/rules/.docs/examples/component/rating-bar/basic.vue +152 -0
  140. package/rules/.docs/examples/component/row/basic.vue +15 -0
  141. package/rules/.docs/examples/component/seek-bar/bar.vue +49 -0
  142. package/rules/.docs/examples/component/seek-bar/basic.vue +191 -0
  143. package/rules/.docs/examples/component/seek-bar/indicator.vue +74 -0
  144. package/rules/.docs/examples/component/seek-bar/range-mode.vue +130 -0
  145. package/rules/.docs/examples/component/seek-bar/single-mode.vue +113 -0
  146. package/rules/.docs/examples/component/seek-bar/step.vue +186 -0
  147. package/rules/.docs/examples/component/seek-bar/thumb.vue +148 -0
  148. package/rules/.docs/examples/component/seek-bar/tick-mark.vue +121 -0
  149. package/rules/.docs/examples/component/switch/basic.vue +26 -0
  150. package/rules/.docs/examples/component/tabs/basic.vue +109 -0
  151. package/rules/.docs/examples/component/tabs/custom-tab-item.vue +120 -0
  152. package/rules/.docs/examples/component/tabs/data.vue +121 -0
  153. package/rules/.docs/examples/component/tabs/horizontal.vue +118 -0
  154. package/rules/.docs/examples/component/tabs/item-add.vue +127 -0
  155. package/rules/.docs/examples/component/tabs/item-custom.vue +132 -0
  156. package/rules/.docs/examples/component/tabs/item-delete.vue +123 -0
  157. package/rules/.docs/examples/component/tabs/item-get.vue +124 -0
  158. package/rules/.docs/examples/component/tabs/item-update.vue +129 -0
  159. package/rules/.docs/examples/component/tabs/ref-basic.vue +63 -0
  160. package/rules/.docs/examples/component/tabs/ref-operations.vue +97 -0
  161. package/rules/.docs/examples/component/tabs/ref-page.vue +89 -0
  162. package/rules/.docs/examples/component/tabs/section-add.vue +138 -0
  163. package/rules/.docs/examples/component/tabs/section-delete.vue +126 -0
  164. package/rules/.docs/examples/component/tabs/section-get.vue +128 -0
  165. package/rules/.docs/examples/component/tabs/section-update.vue +137 -0
  166. package/rules/.docs/examples/component/tabs/section-vue.vue +111 -0
  167. package/rules/.docs/examples/component/tabs/single-tab.vue +112 -0
  168. package/rules/.docs/examples/component/text/basic.vue +20 -0
  169. package/rules/.docs/examples/component/text/ellipsize-mode.vue +122 -0
  170. package/rules/.docs/examples/component/text/gravity.vue +119 -0
  171. package/rules/.docs/examples/component/video-player/aspect-ratio.vue +242 -0
  172. package/rules/.docs/examples/component/video-player/basic.vue +82 -0
  173. package/rules/.docs/examples/component/video-player/control.vue +240 -0
  174. package/rules/.docs/examples/component/video-player/decode.vue +174 -0
  175. package/rules/.docs/examples/component/video-player/definition.vue +194 -0
  176. package/rules/.docs/examples/component/video-player/event-global.vue +89 -0
  177. package/rules/.docs/examples/component/video-player/event.vue +448 -0
  178. package/rules/.docs/examples/component/video-player/page.vue +150 -0
  179. package/rules/.docs/examples/component/video-player/play-mode.vue +220 -0
  180. package/rules/.docs/examples/component/video-player/play-rate.vue +198 -0
  181. package/rules/.docs/examples/component/video-player/progress.vue +211 -0
  182. package/rules/.docs/examples/component/video-player/render.vue +187 -0
  183. package/rules/.docs/examples/component/video-player/type.vue +133 -0
  184. package/rules/.docs/examples/component/view/background-img.vue +49 -0
  185. package/rules/.docs/examples/component/view/background.vue +28 -0
  186. package/rules/.docs/examples/component/view/basic.vue +28 -0
  187. package/rules/.docs/examples/component/view/border.vue +72 -0
  188. package/rules/.docs/examples/component/view/click.vue +66 -0
  189. package/rules/.docs/examples/component/view/focus-background.vue +60 -0
  190. package/rules/.docs/examples/component/view/focus.vue +58 -0
  191. package/rules/.docs/examples/component/view/gradient-background.vue +36 -0
  192. package/rules/.docs/examples/component/waterfall/basic.vue +167 -0
  193. package/rules/.docs/examples/component/waterfall/event.vue +154 -0
  194. package/rules/.docs/examples/component/waterfall/item-add.vue +82 -0
  195. package/rules/.docs/examples/component/waterfall/item-card-placeholder.vue +67 -0
  196. package/rules/.docs/examples/component/waterfall/item-card.vue +66 -0
  197. package/rules/.docs/examples/component/waterfall/item-custom.vue +81 -0
  198. package/rules/.docs/examples/component/waterfall/item-decoration.vue +63 -0
  199. package/rules/.docs/examples/component/waterfall/item-delete.vue +90 -0
  200. package/rules/.docs/examples/component/waterfall/item-get.vue +68 -0
  201. package/rules/.docs/examples/component/waterfall/item-update.vue +85 -0
  202. package/rules/.docs/examples/component/waterfall/ref-base.vue +141 -0
  203. package/rules/.docs/examples/component/waterfall/ref-operations.vue +192 -0
  204. package/rules/.docs/examples/component/waterfall/section-add.vue +72 -0
  205. package/rules/.docs/examples/component/waterfall/section-background.vue +94 -0
  206. package/rules/.docs/examples/component/waterfall/section-blank.vue +62 -0
  207. package/rules/.docs/examples/component/waterfall/section-card-placeholder.vue +90 -0
  208. package/rules/.docs/examples/component/waterfall/section-card.vue +83 -0
  209. package/rules/.docs/examples/component/waterfall/section-custom.vue +68 -0
  210. package/rules/.docs/examples/component/waterfall/section-decoration.vue +80 -0
  211. package/rules/.docs/examples/component/waterfall/section-delete.vue +76 -0
  212. package/rules/.docs/examples/component/waterfall/section-end.vue +91 -0
  213. package/rules/.docs/examples/component/waterfall/section-get.vue +74 -0
  214. package/rules/.docs/examples/component/waterfall/section-list.vue +56 -0
  215. package/rules/.docs/examples/component/waterfall/section-tabs-list.vue +149 -0
  216. package/rules/.docs/examples/component/waterfall/section-tabs.vue +153 -0
  217. package/rules/.docs/examples/component/waterfall/section-time.vue +48 -0
  218. package/rules/.docs/examples/component/waterfall/section-update.vue +118 -0
  219. package/rules/.docs/examples/component/waterfall/section-vue.vue +81 -0
  220. package/rules/.docs/examples/component/web-view/basic.vue +54 -0
  221. package/rules/.docs/examples/component/web-view/js-2-vue.vue +49 -0
  222. package/rules/.docs/examples/component/web-view/vue-2-js.vue +60 -0
  223. package/rules/.docs/examples/component/x5-web-view/basic.vue +54 -0
  224. package/rules/.docs/examples/css/gradient/basic.vue +43 -0
  225. package/rules/.docs/examples/css/gradient/corner-radii4.vue +86 -0
  226. package/rules/.docs/examples/css/gradient/corner-radius.vue +86 -0
  227. package/rules/.docs/examples/css/gradient/orientation.vue +168 -0
  228. package/rules/.docs/examples/css/gradient/shape.vue +97 -0
  229. package/rules/.docs/examples/css/gradient/type.vue +83 -0
  230. package/rules/.docs/examples/guide/router/app.vue +52 -0
  231. package/rules/.docs/examples/guide/slot/basic.vue +32 -0
  232. package/rules/.docs/examples/guide/slot/lifecycle.vue +106 -0
  233. package/rules/.docs/examples/module/action-bar/es-basic.vue +51 -0
  234. package/rules/.docs/examples/module/action-bar/qt-basic.vue +47 -0
  235. package/rules/.docs/examples/module/app-list/es-basic.vue +53 -0
  236. package/rules/.docs/examples/module/app-list/qt-basic.vue +50 -0
  237. package/rules/.docs/examples/module/audio/es-basic.vue +71 -0
  238. package/rules/.docs/examples/module/audio/qt-basic.vue +63 -0
  239. package/rules/.docs/examples/module/brightness/es-basic.vue +118 -0
  240. package/rules/.docs/examples/module/brightness/qt-basic.vue +115 -0
  241. package/rules/.docs/examples/module/broadcast/es-basic.vue +340 -0
  242. package/rules/.docs/examples/module/broadcast/qt-basic.vue +331 -0
  243. package/rules/.docs/examples/module/content-provider/es-basic.vue +92 -0
  244. package/rules/.docs/examples/module/content-provider/qt-basic.vue +86 -0
  245. package/rules/.docs/examples/module/develop/es-basic.vue +45 -0
  246. package/rules/.docs/examples/module/develop/qt-basic.vue +43 -0
  247. package/rules/.docs/examples/module/device/es-basic.vue +169 -0
  248. package/rules/.docs/examples/module/device/qt-basic.vue +166 -0
  249. package/rules/.docs/examples/module/display/es-basic.vue +45 -0
  250. package/rules/.docs/examples/module/display/qt-basic.vue +43 -0
  251. package/rules/.docs/examples/module/download/es-basic.vue +174 -0
  252. package/rules/.docs/examples/module/download/qt-basic.vue +168 -0
  253. package/rules/.docs/examples/module/es/es-basic.vue +74 -0
  254. package/rules/.docs/examples/module/es/qt-basic.vue +74 -0
  255. package/rules/.docs/examples/module/event-bus/es-emit.vue +31 -0
  256. package/rules/.docs/examples/module/event-bus/es-off.vue +53 -0
  257. package/rules/.docs/examples/module/event-bus/es-on.vue +56 -0
  258. package/rules/.docs/examples/module/event-bus/es-once.vue +47 -0
  259. package/rules/.docs/examples/module/event-bus/qt-emit.vue +28 -0
  260. package/rules/.docs/examples/module/event-bus/qt-off.vue +51 -0
  261. package/rules/.docs/examples/module/event-bus/qt-on.vue +53 -0
  262. package/rules/.docs/examples/module/event-bus/qt-once.vue +45 -0
  263. package/rules/.docs/examples/module/file/es-basic.vue +188 -0
  264. package/rules/.docs/examples/module/iac/es-basic.vue +211 -0
  265. package/rules/.docs/examples/module/iac/qt-basic.vue +208 -0
  266. package/rules/.docs/examples/module/key/es-back.vue +32 -0
  267. package/rules/.docs/examples/module/key/es-dispatch.vue +34 -0
  268. package/rules/.docs/examples/module/key/es-event.vue +34 -0
  269. package/rules/.docs/examples/module/local-storage/es-basic.vue +92 -0
  270. package/rules/.docs/examples/module/local-storage/qt-basic.vue +86 -0
  271. package/rules/.docs/examples/module/location/es-basic.vue +69 -0
  272. package/rules/.docs/examples/module/location/qt-basic.vue +67 -0
  273. package/rules/.docs/examples/module/log/es-basic.vue +45 -0
  274. package/rules/.docs/examples/module/log/qt-basic.vue +44 -0
  275. package/rules/.docs/examples/module/network/es-basic.vue +64 -0
  276. package/rules/.docs/examples/module/network/qt-basic.vue +60 -0
  277. package/rules/.docs/examples/module/page/es-app-lifecycle.vue +83 -0
  278. package/rules/.docs/examples/module/page/es-page-lifecycle.vue +80 -0
  279. package/rules/.docs/examples/module/page/es-page-state.vue +36 -0
  280. package/rules/.docs/examples/module/permission/es-basic.vue +62 -0
  281. package/rules/.docs/examples/module/permission/qt-basic.vue +59 -0
  282. package/rules/.docs/examples/module/plugin/es-basic.vue +71 -0
  283. package/rules/.docs/examples/module/plugin/qt-basic.vue +69 -0
  284. package/rules/.docs/examples/module/power/es-basic.vue +45 -0
  285. package/rules/.docs/examples/module/power/qt-basic.vue +41 -0
  286. package/rules/.docs/examples/module/runtime/es-basic.vue +42 -0
  287. package/rules/.docs/examples/module/runtime/qt-basic.vue +40 -0
  288. package/rules/.docs/examples/module/service/es-basic.vue +34 -0
  289. package/rules/.docs/examples/module/service/qt-basic.vue +31 -0
  290. package/rules/.docs/examples/module/share-data/es-basic.vue +266 -0
  291. package/rules/.docs/examples/module/share-data/qt-basic.vue +259 -0
  292. package/rules/.docs/examples/module/toast/es-basic.vue +47 -0
  293. package/rules/.docs/examples/module/toast/qt-basic.vue +44 -0
  294. package/rules/.docs/examples/module/upload/es-basic.vue +65 -0
  295. package/rules/.docs/examples/module/upload/qt-basic.vue +63 -0
  296. package/rules/.docs/examples/module/usb/es-basic.vue +138 -0
  297. package/rules/.docs/examples/module/usb/qt-basic.vue +135 -0
  298. package/rules/.docs/examples/module/xlog/es-basic.vue +45 -0
  299. package/rules/.docs/examples/module/xlog/qt-basic.vue +44 -0
  300. package/rules/.docs/examples/test/basic.vue +48 -0
  301. package/rules/.docs/index.md +7 -0
  302. package/rules/.docs/zh-CN/component/animation/alpha.md +22 -0
  303. package/rules/.docs/zh-CN/component/animation/animators.md +227 -0
  304. package/rules/.docs/zh-CN/component/animation/interpolator.md +59 -0
  305. package/rules/.docs/zh-CN/component/animation/introduction.md +101 -0
  306. package/rules/.docs/zh-CN/component/animation/listener.md +175 -0
  307. package/rules/.docs/zh-CN/component/animation/method.md +87 -0
  308. package/rules/.docs/zh-CN/component/animation/props.md +76 -0
  309. package/rules/.docs/zh-CN/component/animation/repeat.md +46 -0
  310. package/rules/.docs/zh-CN/component/animation/rotation-xy.md +17 -0
  311. package/rules/.docs/zh-CN/component/animation/rotation.md +23 -0
  312. package/rules/.docs/zh-CN/component/animation/scale.md +24 -0
  313. package/rules/.docs/zh-CN/component/animation/translation.md +22 -0
  314. package/rules/.docs/zh-CN/component/app-icon.md +22 -0
  315. package/rules/.docs/zh-CN/component/aside.md +14 -0
  316. package/rules/.docs/zh-CN/component/audio-player/basic.md +52 -0
  317. package/rules/.docs/zh-CN/component/audio-player/installation.md +26 -0
  318. package/rules/.docs/zh-CN/component/audio-player/introduction.md +12 -0
  319. package/rules/.docs/zh-CN/component/audio-player/player-manager.md +72 -0
  320. package/rules/.docs/zh-CN/component/audio-service-player/basic.md +52 -0
  321. package/rules/.docs/zh-CN/component/audio-service-player/installation.md +26 -0
  322. package/rules/.docs/zh-CN/component/audio-service-player/introduction.md +13 -0
  323. package/rules/.docs/zh-CN/component/audio-service-player/player-manager.md +71 -0
  324. package/rules/.docs/zh-CN/component/button.md +120 -0
  325. package/rules/.docs/zh-CN/component/card-container.md +24 -0
  326. package/rules/.docs/zh-CN/component/card.md +17 -0
  327. package/rules/.docs/zh-CN/component/checkbox-group.md +57 -0
  328. package/rules/.docs/zh-CN/component/classified-list-view.md +44 -0
  329. package/rules/.docs/zh-CN/component/collapse.md +45 -0
  330. package/rules/.docs/zh-CN/component/column.md +26 -0
  331. package/rules/.docs/zh-CN/component/container.md +81 -0
  332. package/rules/.docs/zh-CN/component/dialog.md +26 -0
  333. package/rules/.docs/zh-CN/component/div.md +234 -0
  334. package/rules/.docs/zh-CN/component/flex-view.md +14 -0
  335. package/rules/.docs/zh-CN/component/footer.md +14 -0
  336. package/rules/.docs/zh-CN/component/grid-view.md +221 -0
  337. package/rules/.docs/zh-CN/component/header.md +15 -0
  338. package/rules/.docs/zh-CN/component/html/alert.md +14 -0
  339. package/rules/.docs/zh-CN/component/html/audio.md +37 -0
  340. package/rules/.docs/zh-CN/component/html/h.md +15 -0
  341. package/rules/.docs/zh-CN/component/html/installation.md +67 -0
  342. package/rules/.docs/zh-CN/component/html/introduction.md +10 -0
  343. package/rules/.docs/zh-CN/component/html/video.md +39 -0
  344. package/rules/.docs/zh-CN/component/image.md +88 -0
  345. package/rules/.docs/zh-CN/component/img.md +118 -0
  346. package/rules/.docs/zh-CN/component/indicator-list-view.md +118 -0
  347. package/rules/.docs/zh-CN/component/input.md +54 -0
  348. package/rules/.docs/zh-CN/component/item-store.md +14 -0
  349. package/rules/.docs/zh-CN/component/item-view.md +14 -0
  350. package/rules/.docs/zh-CN/component/js-view.md +14 -0
  351. package/rules/.docs/zh-CN/component/js2vue.md +43 -0
  352. package/rules/.docs/zh-CN/component/large-list.md +20 -0
  353. package/rules/.docs/zh-CN/component/li.md +16 -0
  354. package/rules/.docs/zh-CN/component/list-item.md +34 -0
  355. package/rules/.docs/zh-CN/component/list-view.md +233 -0
  356. package/rules/.docs/zh-CN/component/loading.md +22 -0
  357. package/rules/.docs/zh-CN/component/lottie/assets.md +19 -0
  358. package/rules/.docs/zh-CN/component/lottie/basic.md +51 -0
  359. package/rules/.docs/zh-CN/component/lottie/event.md +23 -0
  360. package/rules/.docs/zh-CN/component/lottie/introduction.md +93 -0
  361. package/rules/.docs/zh-CN/component/lottie/network.md +12 -0
  362. package/rules/.docs/zh-CN/component/main.md +14 -0
  363. package/rules/.docs/zh-CN/component/media-series.md +44 -0
  364. package/rules/.docs/zh-CN/component/nav-bar.md +51 -0
  365. package/rules/.docs/zh-CN/component/overview.md +20 -0
  366. package/rules/.docs/zh-CN/component/p.md +55 -0
  367. package/rules/.docs/zh-CN/component/play-mark-view.md +25 -0
  368. package/rules/.docs/zh-CN/component/player/global-event.md +24 -0
  369. package/rules/.docs/zh-CN/component/player/interceptor.md +48 -0
  370. package/rules/.docs/zh-CN/component/player/media-player.md +43 -0
  371. package/rules/.docs/zh-CN/component/player/page-player.md +118 -0
  372. package/rules/.docs/zh-CN/component/player/player.md +190 -0
  373. package/rules/.docs/zh-CN/component/player-manager/aspect-ratio.md +51 -0
  374. package/rules/.docs/zh-CN/component/player-manager/basic.md +69 -0
  375. package/rules/.docs/zh-CN/component/player-manager/control.md +32 -0
  376. package/rules/.docs/zh-CN/component/player-manager/custom-control.md +105 -0
  377. package/rules/.docs/zh-CN/component/player-manager/data-structure.md +29 -0
  378. package/rules/.docs/zh-CN/component/player-manager/decode.md +46 -0
  379. package/rules/.docs/zh-CN/component/player-manager/definition.md +85 -0
  380. package/rules/.docs/zh-CN/component/player-manager/event.md +16 -0
  381. package/rules/.docs/zh-CN/component/player-manager/global-event.md +304 -0
  382. package/rules/.docs/zh-CN/component/player-manager/installation.md +33 -0
  383. package/rules/.docs/zh-CN/component/player-manager/introduction.md +207 -0
  384. package/rules/.docs/zh-CN/component/player-manager/media-item-interceptor.md +197 -0
  385. package/rules/.docs/zh-CN/component/player-manager/media-item-list-interceptor.md +189 -0
  386. package/rules/.docs/zh-CN/component/player-manager/media-item-list.md +31 -0
  387. package/rules/.docs/zh-CN/component/player-manager/media-source-interceptor.md +166 -0
  388. package/rules/.docs/zh-CN/component/player-manager/media-source-list-interceptor.md +168 -0
  389. package/rules/.docs/zh-CN/component/player-manager/mode.md +46 -0
  390. package/rules/.docs/zh-CN/component/player-manager/multiple-player.md +124 -0
  391. package/rules/.docs/zh-CN/component/player-manager/player-type.md +38 -0
  392. package/rules/.docs/zh-CN/component/player-manager/player-view.md +31 -0
  393. package/rules/.docs/zh-CN/component/player-manager/player.md +73 -0
  394. package/rules/.docs/zh-CN/component/player-manager/position.md +27 -0
  395. package/rules/.docs/zh-CN/component/player-manager/rate.md +53 -0
  396. package/rules/.docs/zh-CN/component/player-manager/size.md +17 -0
  397. package/rules/.docs/zh-CN/component/player-manager/window.md +65 -0
  398. package/rules/.docs/zh-CN/component/plugin-view.md +21 -0
  399. package/rules/.docs/zh-CN/component/poster.md +102 -0
  400. package/rules/.docs/zh-CN/component/progress-bar.md +347 -0
  401. package/rules/.docs/zh-CN/component/qr-code.md +23 -0
  402. package/rules/.docs/zh-CN/component/radio-group.md +57 -0
  403. package/rules/.docs/zh-CN/component/rating-bar.md +43 -0
  404. package/rules/.docs/zh-CN/component/replace-child.md +20 -0
  405. package/rules/.docs/zh-CN/component/ripple-view.md +14 -0
  406. package/rules/.docs/zh-CN/component/row.md +29 -0
  407. package/rules/.docs/zh-CN/component/scroll-view.md +21 -0
  408. package/rules/.docs/zh-CN/component/seek-bar.md +377 -0
  409. package/rules/.docs/zh-CN/component/surface-view.md +14 -0
  410. package/rules/.docs/zh-CN/component/swift-list.md +21 -0
  411. package/rules/.docs/zh-CN/component/swiper-slide.md +18 -0
  412. package/rules/.docs/zh-CN/component/swiper.md +34 -0
  413. package/rules/.docs/zh-CN/component/switch.md +37 -0
  414. package/rules/.docs/zh-CN/component/tabs-view.md +44 -0
  415. package/rules/.docs/zh-CN/component/tabs.md +286 -0
  416. package/rules/.docs/zh-CN/component/test.md +58 -0
  417. package/rules/.docs/zh-CN/component/text.md +115 -0
  418. package/rules/.docs/zh-CN/component/transition-img.md +22 -0
  419. package/rules/.docs/zh-CN/component/ul.md +83 -0
  420. package/rules/.docs/zh-CN/component/video-player/aspect-ratio.md +49 -0
  421. package/rules/.docs/zh-CN/component/video-player/basic.md +55 -0
  422. package/rules/.docs/zh-CN/component/video-player/control.md +23 -0
  423. package/rules/.docs/zh-CN/component/video-player/decode.md +46 -0
  424. package/rules/.docs/zh-CN/component/video-player/definition.md +85 -0
  425. package/rules/.docs/zh-CN/component/video-player/event.md +16 -0
  426. package/rules/.docs/zh-CN/component/video-player/global-event.md +268 -0
  427. package/rules/.docs/zh-CN/component/video-player/installation.md +33 -0
  428. package/rules/.docs/zh-CN/component/video-player/introduction.md +18 -0
  429. package/rules/.docs/zh-CN/component/video-player/mode.md +50 -0
  430. package/rules/.docs/zh-CN/component/video-player/progress.md +51 -0
  431. package/rules/.docs/zh-CN/component/video-player/rate.md +53 -0
  432. package/rules/.docs/zh-CN/component/video-player/render.md +47 -0
  433. package/rules/.docs/zh-CN/component/video-player/type.md +32 -0
  434. package/rules/.docs/zh-CN/component/view-pager.md +14 -0
  435. package/rules/.docs/zh-CN/component/view.md +234 -0
  436. package/rules/.docs/zh-CN/component/virtual-dom.md +4 -0
  437. package/rules/.docs/zh-CN/component/virtual.md +8 -0
  438. package/rules/.docs/zh-CN/component/vue-section.md +29 -0
  439. package/rules/.docs/zh-CN/component/vue2js.md +47 -0
  440. package/rules/.docs/zh-CN/component/waterfall.md +447 -0
  441. package/rules/.docs/zh-CN/component/web-view.md +100 -0
  442. package/rules/.docs/zh-CN/component/x5web-view.md +100 -0
  443. package/rules/.docs/zh-CN/cooperation/index.md +6 -0
  444. package/rules/.docs/zh-CN/css/color/gradient.md +111 -0
  445. package/rules/.docs/zh-CN/css/color/hsl.md +11 -0
  446. package/rules/.docs/zh-CN/css/color/name.md +151 -0
  447. package/rules/.docs/zh-CN/css/color/rgb.md +16 -0
  448. package/rules/.docs/zh-CN/css/color/transparent.md +9 -0
  449. package/rules/.docs/zh-CN/css/layout/align-items.md +13 -0
  450. package/rules/.docs/zh-CN/css/layout/align-self.md +12 -0
  451. package/rules/.docs/zh-CN/css/layout/background-position-x.md +12 -0
  452. package/rules/.docs/zh-CN/css/layout/background-position-y.md +12 -0
  453. package/rules/.docs/zh-CN/css/layout/background-size.md +12 -0
  454. package/rules/.docs/zh-CN/css/layout/collapsable.md +13 -0
  455. package/rules/.docs/zh-CN/css/layout/display.md +12 -0
  456. package/rules/.docs/zh-CN/css/layout/flex-basis.md +12 -0
  457. package/rules/.docs/zh-CN/css/layout/flex-direction.md +15 -0
  458. package/rules/.docs/zh-CN/css/layout/flex-grow.md +15 -0
  459. package/rules/.docs/zh-CN/css/layout/flex-shrink.md +12 -0
  460. package/rules/.docs/zh-CN/css/layout/flex-wrap.md +12 -0
  461. package/rules/.docs/zh-CN/css/layout/flex.md +12 -0
  462. package/rules/.docs/zh-CN/css/layout/height.md +12 -0
  463. package/rules/.docs/zh-CN/css/layout/justify-content.md +12 -0
  464. package/rules/.docs/zh-CN/css/layout/left.md +13 -0
  465. package/rules/.docs/zh-CN/css/layout/line-height.md +12 -0
  466. package/rules/.docs/zh-CN/css/layout/margin-bottom.md +12 -0
  467. package/rules/.docs/zh-CN/css/layout/margin-horizontal.md +12 -0
  468. package/rules/.docs/zh-CN/css/layout/margin-left.md +12 -0
  469. package/rules/.docs/zh-CN/css/layout/margin-right.md +12 -0
  470. package/rules/.docs/zh-CN/css/layout/margin-top.md +12 -0
  471. package/rules/.docs/zh-CN/css/layout/margin-vertical.md +12 -0
  472. package/rules/.docs/zh-CN/css/layout/margin.md +12 -0
  473. package/rules/.docs/zh-CN/css/layout/max-height.md +10 -0
  474. package/rules/.docs/zh-CN/css/layout/max-width.md +10 -0
  475. package/rules/.docs/zh-CN/css/layout/min-height.md +10 -0
  476. package/rules/.docs/zh-CN/css/layout/min-width.md +10 -0
  477. package/rules/.docs/zh-CN/css/layout/overflow.md +12 -0
  478. package/rules/.docs/zh-CN/css/layout/padding-bottom.md +12 -0
  479. package/rules/.docs/zh-CN/css/layout/padding-horizontal.md +12 -0
  480. package/rules/.docs/zh-CN/css/layout/padding-left.md +12 -0
  481. package/rules/.docs/zh-CN/css/layout/padding-right.md +12 -0
  482. package/rules/.docs/zh-CN/css/layout/padding-top.md +12 -0
  483. package/rules/.docs/zh-CN/css/layout/padding-vertical.md +12 -0
  484. package/rules/.docs/zh-CN/css/layout/padding.md +12 -0
  485. package/rules/.docs/zh-CN/css/layout/position.md +14 -0
  486. package/rules/.docs/zh-CN/css/layout/right.md +13 -0
  487. package/rules/.docs/zh-CN/css/layout/text-align.md +12 -0
  488. package/rules/.docs/zh-CN/css/layout/top.md +12 -0
  489. package/rules/.docs/zh-CN/css/layout/width.md +12 -0
  490. package/rules/.docs/zh-CN/css/layout/z-index.md +12 -0
  491. package/rules/.docs/zh-CN/css/overview.md +8 -0
  492. package/rules/.docs/zh-CN/css/style/background-color.md +10 -0
  493. package/rules/.docs/zh-CN/css/style/border-bottom-color.md +10 -0
  494. package/rules/.docs/zh-CN/css/style/border-bottom-left-radius.md +10 -0
  495. package/rules/.docs/zh-CN/css/style/border-bottom-right-radius.md +10 -0
  496. package/rules/.docs/zh-CN/css/style/border-bottom-width.md +10 -0
  497. package/rules/.docs/zh-CN/css/style/border-color.md +10 -0
  498. package/rules/.docs/zh-CN/css/style/border-left-color.md +10 -0
  499. package/rules/.docs/zh-CN/css/style/border-left-width.md +10 -0
  500. package/rules/.docs/zh-CN/css/style/border-radius.md +10 -0
  501. package/rules/.docs/zh-CN/css/style/border-right-color.md +10 -0
  502. package/rules/.docs/zh-CN/css/style/border-right-width.md +10 -0
  503. package/rules/.docs/zh-CN/css/style/border-style.md +10 -0
  504. package/rules/.docs/zh-CN/css/style/border-top-color.md +10 -0
  505. package/rules/.docs/zh-CN/css/style/border-top-left-radius.md +10 -0
  506. package/rules/.docs/zh-CN/css/style/border-top-right-radius.md +10 -0
  507. package/rules/.docs/zh-CN/css/style/border-top-width.md +10 -0
  508. package/rules/.docs/zh-CN/css/style/border-width.md +10 -0
  509. package/rules/.docs/zh-CN/css/style/box-shadow.md +10 -0
  510. package/rules/.docs/zh-CN/css/style/color.md +10 -0
  511. package/rules/.docs/zh-CN/css/style/font-family.md +10 -0
  512. package/rules/.docs/zh-CN/css/style/font-size.md +10 -0
  513. package/rules/.docs/zh-CN/css/style/font-style.md +10 -0
  514. package/rules/.docs/zh-CN/css/style/font-weight.md +10 -0
  515. package/rules/.docs/zh-CN/css/style/letter-spacing.md +10 -0
  516. package/rules/.docs/zh-CN/css/style/opacity.md +10 -0
  517. package/rules/.docs/zh-CN/css/style/text-decoration-color.md +10 -0
  518. package/rules/.docs/zh-CN/css/style/text-decoration-line.md +10 -0
  519. package/rules/.docs/zh-CN/css/style/text-decoration.md +12 -0
  520. package/rules/.docs/zh-CN/css/style/tint-color.md +10 -0
  521. package/rules/.docs/zh-CN/css/style/visibility.md +10 -0
  522. package/rules/.docs/zh-CN/guide/basic/appendix.md +35 -0
  523. package/rules/.docs/zh-CN/guide/basic/dev-debug.md +94 -0
  524. package/rules/.docs/zh-CN/guide/basic/dev-tools.md +22 -0
  525. package/rules/.docs/zh-CN/guide/basic/installation.md +144 -0
  526. package/rules/.docs/zh-CN/guide/basic/language.md +10 -0
  527. package/rules/.docs/zh-CN/guide/basic/package-manager.md +8 -0
  528. package/rules/.docs/zh-CN/guide/basic/quick-start.md +150 -0
  529. package/rules/.docs/zh-CN/guide/changelog.md +20 -0
  530. package/rules/.docs/zh-CN/guide/commit-examples.md +90 -0
  531. package/rules/.docs/zh-CN/guide/compile/obfuscator.md +56 -0
  532. package/rules/.docs/zh-CN/guide/compile/pack.md +8 -0
  533. package/rules/.docs/zh-CN/guide/compile/resource.md +96 -0
  534. package/rules/.docs/zh-CN/guide/compile/split-chunks.md +66 -0
  535. package/rules/.docs/zh-CN/guide/dark-mode.md +84 -0
  536. package/rules/.docs/zh-CN/guide/design.md +34 -0
  537. package/rules/.docs/zh-CN/guide/dev-faq.md +41 -0
  538. package/rules/.docs/zh-CN/guide/dev-guide.md +55 -0
  539. package/rules/.docs/zh-CN/guide/device/ch.md +18 -0
  540. package/rules/.docs/zh-CN/guide/device/haier.md +12 -0
  541. package/rules/.docs/zh-CN/guide/device/hisense.md +24 -0
  542. package/rules/.docs/zh-CN/guide/device/huawei.md +16 -0
  543. package/rules/.docs/zh-CN/guide/device/konka.md +12 -0
  544. package/rules/.docs/zh-CN/guide/device/le.md +19 -0
  545. package/rules/.docs/zh-CN/guide/device/skyworth.md +25 -0
  546. package/rules/.docs/zh-CN/guide/device/tcl.md +21 -0
  547. package/rules/.docs/zh-CN/guide/device/tencent.md +24 -0
  548. package/rules/.docs/zh-CN/guide/device/tmall.md +18 -0
  549. package/rules/.docs/zh-CN/guide/device/xiaomi.md +46 -0
  550. package/rules/.docs/zh-CN/guide/faq/dev-faq.md +100 -0
  551. package/rules/.docs/zh-CN/guide/faq/develop-faq.md +39 -0
  552. package/rules/.docs/zh-CN/guide/faq/launch-params-faq.md +119 -0
  553. package/rules/.docs/zh-CN/guide/faq/layout-style-faq.md +66 -0
  554. package/rules/.docs/zh-CN/guide/focus/auto-focus.md +94 -0
  555. package/rules/.docs/zh-CN/guide/focus/basic.md +133 -0
  556. package/rules/.docs/zh-CN/guide/focus/debug-tool.md +40 -0
  557. package/rules/.docs/zh-CN/guide/focus/focus-method.md +317 -0
  558. package/rules/.docs/zh-CN/guide/focus/list-auto-focus.md +94 -0
  559. package/rules/.docs/zh-CN/guide/focus/request-focus.md +10 -0
  560. package/rules/.docs/zh-CN/guide/interaction/click.md +39 -0
  561. package/rules/.docs/zh-CN/guide/interaction/focus.md +44 -0
  562. package/rules/.docs/zh-CN/guide/key/back.md +65 -0
  563. package/rules/.docs/zh-CN/guide/key/dispatch-key-event.md +41 -0
  564. package/rules/.docs/zh-CN/guide/key/key-event.md +87 -0
  565. package/rules/.docs/zh-CN/guide/layout/adapter.md +33 -0
  566. package/rules/.docs/zh-CN/guide/layout/layout.md +42 -0
  567. package/rules/.docs/zh-CN/guide/layout/style.md +64 -0
  568. package/rules/.docs/zh-CN/guide/layout/theming.md +154 -0
  569. package/rules/.docs/zh-CN/guide/migration.md +25 -0
  570. package/rules/.docs/zh-CN/guide/namespace.md +69 -0
  571. package/rules/.docs/zh-CN/guide/nav.md +73 -0
  572. package/rules/.docs/zh-CN/guide/network/axios.md +47 -0
  573. package/rules/.docs/zh-CN/guide/network/fetch.md +70 -0
  574. package/rules/.docs/zh-CN/guide/network/websocket.md +107 -0
  575. package/rules/.docs/zh-CN/guide/node/install.md +179 -0
  576. package/rules/.docs/zh-CN/guide/npm/install.md +74 -0
  577. package/rules/.docs/zh-CN/guide/overview.md +41 -0
  578. package/rules/.docs/zh-CN/guide/page/application-lifecycle.md +37 -0
  579. package/rules/.docs/zh-CN/guide/page/lifecycle.md +32 -0
  580. package/rules/.docs/zh-CN/guide/page/page-lifecycle.md +35 -0
  581. package/rules/.docs/zh-CN/guide/page/page-state.md +31 -0
  582. package/rules/.docs/zh-CN/guide/page/type.md +49 -0
  583. package/rules/.docs/zh-CN/guide/publish/hub.md +31 -0
  584. package/rules/.docs/zh-CN/guide/publish/release-apk.md +51 -0
  585. package/rules/.docs/zh-CN/guide/publish/release-rpk.md +45 -0
  586. package/rules/.docs/zh-CN/guide/router/async.md +25 -0
  587. package/rules/.docs/zh-CN/guide/router/entry.md +60 -0
  588. package/rules/.docs/zh-CN/guide/router/error.md +25 -0
  589. package/rules/.docs/zh-CN/guide/router/install.md +70 -0
  590. package/rules/.docs/zh-CN/guide/router/introduction.md +35 -0
  591. package/rules/.docs/zh-CN/guide/router/launch.md +88 -0
  592. package/rules/.docs/zh-CN/guide/router/limit.md +33 -0
  593. package/rules/.docs/zh-CN/guide/router/native.md +104 -0
  594. package/rules/.docs/zh-CN/guide/router/result.md +42 -0
  595. package/rules/.docs/zh-CN/guide/sfc-component/async-component.md +88 -0
  596. package/rules/.docs/zh-CN/guide/sfc-component/native-component.md +127 -0
  597. package/rules/.docs/zh-CN/guide/slot/develop.md +42 -0
  598. package/rules/.docs/zh-CN/guide/slot/install.md +59 -0
  599. package/rules/.docs/zh-CN/guide/slot/introduction.md +45 -0
  600. package/rules/.docs/zh-CN/guide/slot/lifecycle.md +18 -0
  601. package/rules/.docs/zh-CN/guide/slot/project.md +22 -0
  602. package/rules/.docs/zh-CN/guide/test.md +8 -0
  603. package/rules/.docs/zh-CN/guide/theming.md +254 -0
  604. package/rules/.docs/zh-CN/guide/translation.md +39 -0
  605. package/rules/.docs/zh-CN/index.md +9 -0
  606. package/rules/.docs/zh-CN/module/action-bar.md +32 -0
  607. package/rules/.docs/zh-CN/module/app-list.md +57 -0
  608. package/rules/.docs/zh-CN/module/audio.md +45 -0
  609. package/rules/.docs/zh-CN/module/brightness.md +33 -0
  610. package/rules/.docs/zh-CN/module/broadcast.md +77 -0
  611. package/rules/.docs/zh-CN/module/content-provider.md +64 -0
  612. package/rules/.docs/zh-CN/module/develop.md +45 -0
  613. package/rules/.docs/zh-CN/module/device.md +108 -0
  614. package/rules/.docs/zh-CN/module/display.md +33 -0
  615. package/rules/.docs/zh-CN/module/download.md +97 -0
  616. package/rules/.docs/zh-CN/module/es.md +74 -0
  617. package/rules/.docs/zh-CN/module/event-bus.md +68 -0
  618. package/rules/.docs/zh-CN/module/file.md +62 -0
  619. package/rules/.docs/zh-CN/module/iac.md +51 -0
  620. package/rules/.docs/zh-CN/module/local-storage.md +35 -0
  621. package/rules/.docs/zh-CN/module/location.md +48 -0
  622. package/rules/.docs/zh-CN/module/log.md +52 -0
  623. package/rules/.docs/zh-CN/module/network.md +77 -0
  624. package/rules/.docs/zh-CN/module/overview.md +10 -0
  625. package/rules/.docs/zh-CN/module/permission.md +42 -0
  626. package/rules/.docs/zh-CN/module/plugin.md +38 -0
  627. package/rules/.docs/zh-CN/module/power.md +51 -0
  628. package/rules/.docs/zh-CN/module/runtime.md +41 -0
  629. package/rules/.docs/zh-CN/module/service.md +33 -0
  630. package/rules/.docs/zh-CN/module/share-data.md +85 -0
  631. package/rules/.docs/zh-CN/module/toast.md +30 -0
  632. package/rules/.docs/zh-CN/module/upload.md +53 -0
  633. package/rules/.docs/zh-CN/module/usb.md +52 -0
  634. package/rules/.docs/zh-CN/module/xlog.md +48 -0
  635. package/rules/.docs/zh-CN/resource/runtime.md +88 -0
  636. package/rules/.docs/zh-CN/resource/test-flight.md +27 -0
  637. package/rules/.docs/zh-CN/runtime/runtime.md +81 -0
  638. package/rules/.docs/zh-CN/runtime/test-flight.md +23 -0
  639. package/rules/.docs/zh-CN/sample/ai-dev.md +250 -0
  640. package/rules/.docs/zh-CN/sample/api-demo.md +26 -0
  641. package/rules/.docs/zh-CN/sample/app-list.md +12 -0
  642. package/rules/.docs/zh-CN/sample/hello-tv.md +98 -0
  643. package/rules/.docs/zh-CN/sdk/cus_component.md +249 -0
  644. package/rules/.docs/zh-CN/sdk/cus_module.md +163 -0
  645. package/rules/.docs/zh-CN/sdk/cus_splash.md +97 -0
  646. package/rules/.docs/zh-CN/sdk/empty.md +0 -0
  647. package/rules/.docs/zh-CN/sdk/first_implementation.md +15 -0
  648. package/rules/.docs/zh-CN/sdk/first_init.md +13 -0
  649. package/rules/.docs/zh-CN/sdk/first_start_app.md +4 -0
  650. package/rules/.docs/zh-CN/sdk/light-card.md +116 -0
  651. package/rules/.docs/zh-CN/sdk/overview.md +5 -0
  652. package/rules/.docs/zh-CN/tool/api/overview.md +103 -0
  653. package/rules/.docs/zh-CN/tool/cli/adb.md +32 -0
  654. package/rules/.docs/zh-CN/tool/cli/build.md +14 -0
  655. package/rules/.docs/zh-CN/tool/cli/clean.md +12 -0
  656. package/rules/.docs/zh-CN/tool/cli/config.md +37 -0
  657. package/rules/.docs/zh-CN/tool/cli/create.md +28 -0
  658. package/rules/.docs/zh-CN/tool/cli/debug.md +30 -0
  659. package/rules/.docs/zh-CN/tool/cli/info.md +14 -0
  660. package/rules/.docs/zh-CN/tool/cli/installation.md +12 -0
  661. package/rules/.docs/zh-CN/tool/cli/introduction.md +26 -0
  662. package/rules/.docs/zh-CN/tool/cli/logcat.md +10 -0
  663. package/rules/.docs/zh-CN/tool/cli/migrate.md +12 -0
  664. package/rules/.docs/zh-CN/tool/cli/pack.md +14 -0
  665. package/rules/.docs/zh-CN/tool/cli/preview.md +18 -0
  666. package/rules/.docs/zh-CN/tool/cli/publish.md +12 -0
  667. package/rules/.docs/zh-CN/tool/cli/setup.md +58 -0
  668. package/rules/.docs/zh-CN/tool/cli/start.md +54 -0
  669. package/rules/.docs/zh-CN/tool/cli/test.md +22 -0
  670. package/rules/.docs/zh-CN/tool/cli/upgrade.md +12 -0
  671. package/rules/.github/copilot-instructions.md +456 -0
  672. package/rules/.windsurfrules +367 -0
  673. package/rules/AGENTS.md +456 -0
  674. package/rules/AI_HANDOFF.md +376 -0
  675. package/rules/CLAUDE.md +836 -0
  676. package/rules/GEMINI.md +463 -0
@@ -0,0 +1,836 @@
1
+ # QuickTVUI - AI 开发指南
2
+
3
+ > 本文件可放入任何 QuickTVUI 项目根目录,AI 工具会自动加载。
4
+
5
+ ## 🔴 核心准则:权威来源与严禁幻觉 (CRITICAL)
6
+
7
+ **AI 在生成代码前,必须严格参考以下权威来源,严禁凭空想象任何组件名、属性名或 API。这是所有代码的唯一依据。**
8
+
9
+ 1. **本地文档 (PRIMARY)**:项目根目录下的 `.docs/` 文件夹。包含所有组件、CSS、原生模块的详细 MD 文档。**AI 必须在生成代码前使用 `grep_search` 或 `read_file` 检索 `.docs/` 目录中的相关内容。**
10
+ 2. **官方文档**:https://quicktvui.com (官网 390+ 篇详细文档)
11
+ 3. **核心库示例**:https://github.com/quicktvui/quicktvui.git (Core library + samples)
12
+ 4. **跨平台框架示例**:https://github.com/quicktvui/es-vue3.git (Cross-platform framework + samples)
13
+ 5. **最佳实践应用**:https://github.com/quicktvui/hellotv.git (Complete video app)
14
+
15
+ **要求:**
16
+ - **检索与能力验证优先**:在实现任何功能(如“视频播放”)前,必须先在 `.docs/` 目录中检索相关文档,验证组件是否支持该功能。切勿想当然!**例如:`qt-web-view` 绝对不支持视频播放,视频播放必须使用框架提供的专用视频组件和管理器(如 `es-video-player` 和 `es-player-manager`)。**
17
+ - **非浏览器与无 HTML 环境**:**本框架绝对不支持标准 HTML 标签(如 `p`, `img`, `a`, `ul`, `li`, `h1` 等),严禁在模板中使用!绝对不支持 `window`、`document` (DOM) 对象或任何 DOM 操作 API。必须使用框架专属标签(如 `qt-text`, `qt-image`)和 Vue `ref`。**
18
+ - **严禁自造标签**:如 `qt-web` 是错的,官方示例中是 `qt-web-view`。
19
+ - **严禁自造 API**:如 `onBack` 是错的,必须是 `onBackPressed`。
20
+ - **参考优先**:遇到不确定的组件用法,必须先在上述仓库中搜索同名组件的实际用法。
21
+
22
+ ## 快速创建项目 (Scaffolding)
23
+
24
+ 当用户要求创建全新的 QuickTVUI 快应用项目时,AI **必须**严格遵循以下流程(切勿凭空生成目录和文件):
25
+ 1. **获取模板**:`git clone https://github.com/quicktvui/quicktvui-template.git <项目名>`
26
+ 2. **清理 Git**:`cd <项目名> && rm -rf .git`
27
+ 3. **更新配置**:读取 `package.json`,修改 `name` 为目标项目名称,重置 `version` 为 `1.0.0`。
28
+ 4. **安装依赖**:`yarn install`(推荐)。
29
+ 5. **初始化提示**:提醒用户启动服务前,需确认是否已安装全局 CLI `npm install -g @quicktvui/cli@latest` 并执行了 `qui setup` 配置环境(详见 https://quicktvui.com/zh-CN/guide/basic/quick-start.html)。
30
+
31
+ ## 🔥 核心架构避坑指南 (ARCHITECTURAL GOTCHAS)
32
+
33
+ AI 在编写业务逻辑时,极易带入传统 Web 开发习惯导致严重报错,**必须牢记以下框架特性**:
34
+
35
+ 1. **视频/音频播放架构**:
36
+ * **绝对禁止**使用 HTML5 `<video>`、`<audio>` 或 `qt-web-view` 播放媒体。
37
+ * **最佳实践**:必须优先使用 **`es-player-manager`**(播放管理器)配合 `es-video-player` 或 `es-audio-player`。`es-player-manager` 负责处理窗口切换(全屏/小窗)、播放列表、焦点逻辑和生命周期,单用底层 player 会导致大量底层逻辑缺失。
38
+ 2. **长列表组件 (`qt-list-view`, `qt-grid-view`, `qt-waterfall`)**:
39
+ * 必须设置 `listenBoundEvent="true"` 并监听 `@item-bind`。
40
+ * 列表的加载更多模版 `type` **必须**是 `1002`,底线提示 `type` **必须**是 `1003`。
41
+ 3. **零 HTML 与 零 DOM 环境**:
42
+ * **这不是浏览器!** 底层是 Hippy 渲染的 Android Native View。
43
+ * **禁用标签**:`<p>`, `<img>`, `<ul>`, `<li>`, `<a>`, `<h1>`, `<button>` 等标准 HTML 标签**全部禁用**。只允许使用 `div`, `span` 或 `qt-` 开头的专属标签。
44
+ * **禁用 API**:没有 `window`, `document`, `e.preventDefault()`, `alert()`。本地存储必须用 `useESLocalStorage()`,提示必须用 `useESToast()`。
45
+ 4. **CSS 严格子集**:
46
+ * 不支持任何 CSS 简写(例如 `margin: 10px` 必崩,必须写 `margin-top: 10px; margin-left: 10px;`)。
47
+ * 不支持 `auto`,不支持 `%`。所有组件**必须显式定义宽高**(`width` / `height` 赋明确的 px 值)。
48
+
49
+ ## 框架概述
50
+
51
+ QuickTVUI 是基于 Vue 3 的 Android TV/大屏端 UI 框架。运行在快应用运行环境(Hippy-based)上,Vue 语法开发,渲染为 Android 原生视图。
52
+
53
+ 核心特点:
54
+
55
+ - Vue 3 Composition API + TypeScript
56
+ - 面向 TV 遥控器交互(焦点系统是核心,没有鼠标/触摸)
57
+ - CSS 子集支持(非标准 Web CSS,有严格限制)
58
+ - 原生组件桥接(Vue 组件 → Android Native View)
59
+ - 设计分辨率 1920x1080,框架自动适配其他 TV 屏幕尺寸
60
+
61
+ ## 示例代码仓库
62
+
63
+ 写代码时参考这三个仓库的实际 Vue 代码风格:
64
+
65
+ - https://github.com/quicktvui/quicktvui.git — 核心库 + sample 示例
66
+ - https://github.com/quicktvui/es-vue3.git — 跨平台框架 + sample 示例
67
+ - https://github.com/quicktvui/hellotv.git — 完整视频应用项目(最佳实践)
68
+
69
+ ## 在线文档
70
+
71
+ https://quicktvui.com
72
+
73
+ ---
74
+
75
+ ## ⚠️ 严禁事项(AI 必读,违反任何一条都会导致运行失败)
76
+
77
+ ### 函数命名(框架通过函数名匹配,名字错了就不会被调用)
78
+
79
+ - 返回键处理必须叫 `onBackPressed`,不能叫 `onBack`、`goBack`、`handleBack` 等任何其他名字
80
+ - 按键事件必须叫 `onKeyDown` / `onKeyUp`,不能叫 `handleKeyDown`、`onKeyPress` 等
81
+ - 生命周期必须叫 `onESCreate` / `onESResume` / `onESDestroy` 等,不能改名
82
+ - 这些函数必须在 `setup()` 中定义,并且必须在 `return { }` 中导出,缺一不可
83
+
84
+ ### 每个页面必须包含的内容(Checklist)
85
+
86
+ - `onESCreate(params)` — 页面生命周期入口,必须定义并 return
87
+ - `onBackPressed()` — 返回键处理,必须定义并 return(通常调用 `router.back()`)
88
+ - 至少一个元素设置 `:autofocus="true"` — 否则页面打开后没有焦点,遥控器无法操作
89
+ - 页面根元素尺寸 `width: 1920px; height: 1080px`
90
+
91
+ ### 组件名称(必须精确匹配,不能用 HTML 标签替代)
92
+
93
+ - 图片组件是 `qt-image`,不是 `qt-img`、`<img>`
94
+ - 文字必须用 `<qt-text>` 或 `<span>`,不能用 `<p>`、`<h1>`~`<h6>`、`<label>` 等 HTML 标签
95
+ - 容器用 `<div>`、`<qt-view>`、`<qt-row>`、`<qt-column>`,不能用 `<section>`、`<main>`、`<article>` 等语义标签
96
+ - 按钮用 `<qt-button>` 或可获焦的 `<div>`,不能用 `<button>`
97
+
98
+ ### 强制组件命名规范 (CRITICAL)
99
+
100
+ **严禁凭空想象或使用标准 Web 标签。必须严格遵守以下映射:**
101
+
102
+ | 必须使用的标签 | 严禁使用的标签 (Do NOT use) |
103
+ | -------------- | ---------------------------------- |
104
+ | `<qt-image>` | `<qt-img>`, `<img>` |
105
+ | `<qt-text>` | `<p>`, `<h1>`~`<h6>`, `<label>` |
106
+ | `<qt-button>` | `<button>` |
107
+ | `<div>` | `<section>`, `<main>`, `<article>` |
108
+ | `<span>` | `<p>`, `<label>` |
109
+
110
+ ### CSS 规则(这不是标准 Web CSS)
111
+
112
+ **`<style>` 中用 kebab-case(中划线),`<template>` 标签属性用 camelCase(驼峰)。不要搞反。**
113
+
114
+ 错误写法——不要在 `<style>` 中用驼峰:
115
+
116
+ ```css
117
+ /* 错误!驼峰写法在 <style> 中不生效 */
118
+ .item {
119
+ backgroundcolor: #333;
120
+ fontsize: 28px;
121
+ focusbackgroundcolor: #0066ff;
122
+ borderradius: 10px;
123
+ }
124
+ ```
125
+
126
+ 正确写法——`<style>` 中所有属性用中划线:
127
+
128
+ ```css
129
+ /* 正确——<style> 中一律 kebab-case,包括框架扩展属性 */
130
+ .item {
131
+ background-color: #333;
132
+ font-size: 28px;
133
+ focus-background-color: #0066ff;
134
+ border-radius: 10px;
135
+ }
136
+ ```
137
+
138
+ 正确写法——`<template>` 标签属性用驼峰:
139
+
140
+ ```vue
141
+ <!-- 正确——标签属性用 camelCase -->
142
+ <div :focusable="true" :focusScale="1.1" :enableFocusBorder="true">
143
+ ```
144
+
145
+ 其他 CSS 规则:
146
+
147
+ - **CRITICAL: NO `auto` sizing**. All elements MUST have explicit `px` values.
148
+ - **CRITICAL: NO `alert()`**. Use `useESToast().showToast()` instead.
149
+ - **CRITICAL: NO `e.preventDefault()`** or `e.stopPropagation()`. These do not exist in the native event system.
150
+ - **CRITICAL: NO `window` or `document` (DOM) objects**. The runtime is not a browser.
151
+ - **CRITICAL: Static styles MUST be in `<style>` (kebab-case), Dynamic styles MUST be in `:style` attributes.**
152
+ - **CRITICAL: NO `-webkit-font-smoothing: antialiased;`**. This is not supported.
153
+ - **CRITICAL: ONLY use `div` and `span` for standard tags.** Do NOT use `p`, `h1-h6`, `section`, etc.
154
+ - **⚠️ 强制要求:默认布局为 `flex-direction: column`**。与 Web 浏览器不同,QuickTVUI 默认就是垂直布局。你几乎不需要写 `display: flex`。
155
+ - 只有本文档"二、样式属性"章节中列出的属性才能使用
156
+ - `display: flex` 和 `flex-direction: column` 是支持的,但它们是默认值,通常不需要写
157
+ - 不要用 `<style scoped>`(在原生渲染中不可靠,直接用 `<style>`)
158
+ - 不支持 `%`、`auto`、`vh`、`vw`、`rem`、`em` 单位,只支持 `px`
159
+ - 不支持 CSS 简写如 `margin: 5px 10px`,必须拆写为 `margin-top: 5px; margin-right: 10px`
160
+
161
+ ### clipChildren / clipPadding(TV 开发必设,不设会导致焦点放大被裁切)
162
+
163
+ Android 默认裁切超出父容器边界的子元素。TV 端使用 `focusScale` 放大焦点项时,放大部分会被父容器裁切掉,导致显示异常。
164
+
165
+ **强制规则:**
166
+ - 任何子元素使用了 `focusScale` 的容器,必须设置 `:clipChildren="false"`
167
+ - 列表组件(`qt-list-view`、`qt-waterfall`、`qt-grid-view`)必须同时设置 `:clipChildren="false"` 和 `:clipPadding="false"`
168
+ - 这两个属性写在 `<template>` 中,使用 camelCase
169
+
170
+ ```vue
171
+ <!-- 容器内有焦点放大的子元素 -->
172
+ <div :clipChildren="false">
173
+ <div :focusable="true" :focusScale="1.1">...</div>
174
+ </div>
175
+
176
+ <!-- 列表组件必须同时设置两个 -->
177
+ <qt-list-view :clipChildren="false" :clipPadding="false" />
178
+ <qt-waterfall :clipChildren="false" :clipPadding="false" />
179
+ ```
180
+
181
+ ### import 来源
182
+
183
+ - `defineComponent` 从 `vue` 导入(对),不要从 `@vue/runtime-core` 导入
184
+ - 路由用 `useESRouter`,从 `@extscreen/es3-router` 导入
185
+ - 原生模块从 `@extscreen/es3-core` 导入
186
+
187
+ ---
188
+
189
+ ## 一、TV 焦点系统
190
+
191
+ TV 端没有鼠标/触摸,用户通过遥控器方向键移动焦点、确认键点击。每个页面必须有可获焦元素。
192
+
193
+ ### 基础属性
194
+
195
+ ```vue
196
+ <!-- 可获焦 + 焦点放大 + 焦点边框 -->
197
+ <div :focusable="true" :focusScale="1.1" :enableFocusBorder="true">
198
+ <qt-text text="按钮" :duplicateParentState="true" />
199
+ </div>
200
+
201
+ <!-- 自动获焦(初始化/可见性变化/列表数据重置时触发) -->
202
+ <div :autofocus="true" :focusable="true"></div>
203
+
204
+ <!-- 请求焦点 -->
205
+ <div :requestFocus="true" :focusable="true"></div>
206
+
207
+ <!-- 列表自动聚焦到第5项 -->
208
+ <qt-list-view :autofocusPosition="5"></qt-list-view>
209
+ ```
210
+
211
+ ### 焦点 CSS 扩展属性
212
+
213
+ ```css
214
+ .item {
215
+ backgroundcolor: grey;
216
+ focus-background-color: black; /* 焦点态背景色 */
217
+ focus-color: white; /* 焦点态文字色 */
218
+ select-background-color: blue; /* 选中态背景色 */
219
+ select-color: yellow; /* 选中态文字色 */
220
+ enable-focus-border: true; /* 启用焦点边框 */
221
+ focus-border-radius: 5px; /* 焦点边框圆角 */
222
+ focus-border-width: 3px; /* 焦点边框宽度 */
223
+ focus-border-color: red; /* 焦点边框颜色 */
224
+ enable-black-border: true; /* 焦点内部黑色边框 */
225
+ }
226
+ ```
227
+
228
+ ### 焦点方向控制
229
+
230
+ ```vue
231
+ <!-- 指定各方向下一个焦点元素 -->
232
+ <div :focusable="true" :nextFocusName="{ down: 'listC', right: 'listB' }" />
233
+
234
+ <!-- 阻止焦点向某方向移动 -->
235
+ <qt-list-view :blockFocusDirections="['left', 'right']" />
236
+
237
+ <!-- 禁用子树焦点(如弹窗时禁用主页面) -->
238
+ <div :descendantFocusability="2"></div>
239
+
240
+ <!-- 根据焦点状态显示/隐藏元素 -->
241
+ <qt-text showOnState="focused" text="焦点时显示" />
242
+ ```
243
+
244
+ ### 焦点 API
245
+
246
+ ```javascript
247
+ // 全局默认设置
248
+ Native.callNative("FocusModule", "setDefaultFocusBorderColor", "#ffffff");
249
+ Native.callNative("FocusModule", "setDefaultFocusScale", 1.1);
250
+ Native.callNative("FocusModule", "setDefaultFocusBorderEnable", true);
251
+ Native.callNative("FocusModule", "setDefaultFocusBorderCorner", 5);
252
+
253
+ // 编程式请求焦点
254
+ ESFocusManager.requestFocus(this.$refs.view);
255
+ ```
256
+
257
+ ---
258
+
259
+ ## 二、样式属性(写代码必读)
260
+
261
+ QuickTVUI 的样式是 Web CSS 的子集,默认 Flexbox 布局,默认 flex-direction: column。
262
+ 以下是全部支持的属性,不在此列表中的属性均不支持。
263
+
264
+ ### 基本规则
265
+
266
+ - 只支持 px 单位(不支持 %、auto、vh/vw/rem/em)
267
+ - 不支持 CSS 简写属性(如 `margin: 5px 10px`,必须拆写)
268
+ - 不支持 CSS 变量 `var(--xxx)`、`!important`
269
+ - 不需要写 `display: flex`(默认就是)
270
+ - 所有元素必须显式指定 width 和 height
271
+ - 文字必须用 `<span>` 或 `<qt-text>` 包裹
272
+
273
+ ### 布局与尺寸
274
+
275
+ ```
276
+ width, height, left, top
277
+ overflow, direction, z-index, visibility
278
+ opacity, transform
279
+ ```
280
+
281
+ ### 背景
282
+
283
+ ```
284
+ background-color, background-image
285
+ background-position-x, background-position-y, background-size
286
+ linear-gradient
287
+ ```
288
+
289
+ ### 边框
290
+
291
+ ```
292
+ border-color, border-style, border-width, border-radius
293
+ border-top-color, border-top-style, border-top-width
294
+ border-bottom-color, border-bottom-style, border-bottom-width
295
+ border-left-color, border-left-style, border-left-width
296
+ border-right-color, border-right-style, border-right-width
297
+ border-top-left-radius, border-top-right-radius
298
+ border-bottom-left-radius, border-bottom-right-radius
299
+ ```
300
+
301
+ ### 阴影
302
+
303
+ ```
304
+ shadow-color, shadow-offset, shadow-offset-x, shadow-offset-y
305
+ shadow-opacity, shadow-radius
306
+ ```
307
+
308
+ ### 文字
309
+
310
+ ```
311
+ color, text, text-align, text-align-vertical
312
+ font-size, font-family, font-style, font-weight, fake-bold
313
+ letter-spacing, line-height, line-spacing-extra, line-spacing-multiplier
314
+ number-of-lines, ellipsize-mode, enable-scale, break-strategy
315
+ text-decoration-color, text-decoration-line, text-decoration-style
316
+ text-shadow-color, text-shadow-offset, text-shadow-radius
317
+ vertical-align
318
+ ```
319
+
320
+ ### 图片
321
+
322
+ ```
323
+ src, resize-mode, tint-color, tint-color-blend-mode
324
+ cap-insets, default-source
325
+ ```
326
+
327
+ ### 焦点态样式
328
+
329
+ ```
330
+ focus-background-color /* 焦点背景色 */
331
+ focus-color /* 焦点文字色 */
332
+ select-color /* 选中文字色 */
333
+ select-background-color /* 选中背景色 */
334
+ enable-focus-border /* 是否启用焦点边框 */
335
+ focus-border /* 焦点边框 */
336
+ focus-border-width /* 焦点边框宽度 */
337
+ focus-border-color /* 焦点边框颜色 */
338
+ focus-border-color-string /* 焦点边框颜色(字符串) */
339
+ focus-border-style /* 焦点边框样式 */
340
+ focus-border-radius /* 焦点边框圆角 */
341
+ focus-border-top-left-radius /* 焦点边框左上圆角 */
342
+ focus-border-top-right-radius /* 焦点边框右上圆角 */
343
+ focus-border-bottom-right-radius /* 焦点边框右下圆角 */
344
+ focus-border-bottom-left-radius /* 焦点边框左下圆角 */
345
+ focus-border-type /* 焦点边框类型 */
346
+ enable-black-border /* 焦点内部黑色边框 */
347
+ ```
348
+
349
+ ### 输入与其他
350
+
351
+ ```
352
+ caret-color /* 光标颜色 */
353
+ placeholderTextColor /* 占位文字颜色 */
354
+ blur /* 模糊效果 */
355
+ ```
356
+
357
+ ### 颜色格式
358
+
359
+ ```
360
+ '#f0f' '#ff00ff' '#ff00ff00'(含透明度)
361
+ 'rgb(255, 0, 255)' 'rgba(255, 255, 255, 1.0)'
362
+ 'hsl(360, 100%, 100%)' 'hsla(360, 100%, 100%, 1.0)'
363
+ 'transparent'
364
+ 支持 140+ CSS 命名颜色(red, blue, green 等)
365
+ ```
366
+
367
+ ---
368
+
369
+ ## 三、页面与路由
370
+
371
+ ### 路由配置
372
+
373
+ ```typescript
374
+ // routes.ts
375
+ const routes = [
376
+ { path: '/index', name: 'index', component: index },
377
+ { path: '/detail', name: 'detail', component: detail },
378
+ { path: '/error', name: 'error', component: error },
379
+ ]
380
+
381
+ // main.ts
382
+ import { createESRouter } from '@extscreen/es3-router'
383
+ const router = createESRouter({ main: 'index', error: 'error', limit: 10, routes })
384
+ const app = createESApp(application, router)
385
+
386
+ // App.vue
387
+ <template>
388
+ <div id="root"><es-router-view /></div>
389
+ </template>
390
+ ```
391
+
392
+ ### 页面跳转
393
+
394
+ ```typescript
395
+ const router = useESRouter();
396
+ router.push({ name: "detail", params: { id: "123" } }); // 打开页面
397
+ router.back(); // 关闭页面
398
+ ```
399
+
400
+ ### 页面生命周期
401
+
402
+ 只有在 routes.ts 中声明的组件才是 Page,子组件不能监听生命周期。生命周期方法不能用 `async`。
403
+
404
+ ```
405
+ onESCreate(params) → 页面创建,初始化 UI 和资源,params 含启动参数
406
+ onESStart() → 页面可见但无焦点
407
+ onESResume() → 页面可见且有焦点(可交互)
408
+ onESPause() → 页面即将停止
409
+ onESStop() → 页面完全不可见
410
+ onESDestroy() → 页面销毁
411
+ onESRestart() → 页面从停止恢复
412
+ onESNewIntent() → SingleTask 模式下重复打开同一页面
413
+ ```
414
+
415
+ ### 按键事件
416
+
417
+ ```typescript
418
+ // setup() 中定义,必须在 return 中导出
419
+ function onKeyDown(keyEvent: ESKeyEvent) {
420
+ // keyEvent.keyCode, keyEvent.action, keyEvent.keyRepeat
421
+ }
422
+ function onKeyUp(keyEvent: ESKeyEvent) {}
423
+ function onBackPressed() {
424
+ router.back();
425
+ }
426
+ return { onKeyDown, onKeyUp, onBackPressed };
427
+ ```
428
+
429
+ 常用键值:
430
+
431
+ - `ES_KEYCODE_DPAD_UP(19)` / `DOWN(20)` / `LEFT(21)` / `RIGHT(22)` — 方向键
432
+ - `ES_KEYCODE_DPAD_CENTER(23)` / `ES_KEYCODE_ENTER(66)` — 确认键
433
+ - `ES_KEYCODE_BACK(4)` — 返回键
434
+ - `ES_KEYCODE_MENU(82)` — 菜单键
435
+
436
+ ---
437
+
438
+ ## 四、常用组件 API
439
+
440
+ ### qt-button
441
+
442
+ ```vue
443
+ <qt-button
444
+ text="确定"
445
+ :focusable="true"
446
+ :focusScale="1.08"
447
+ size="default"
448
+ @focus="onFocus"
449
+ @click="onClick"
450
+ />
451
+ ```
452
+
453
+ | 属性 | 类型 | 默认值 | 说明 |
454
+ | ------------------ | ---------- | ------- | ------------------------------- |
455
+ | text | string | - | 按钮文本 |
456
+ | size | enum | default | default/large/medium/small/mini |
457
+ | focusable | boolean | true | 是否可获焦 |
458
+ | focusScale | number | 1.08 | 焦点放大倍数 |
459
+ | focusBorder | boolean | false | 焦点边框 |
460
+ | disabled | boolean | false | 禁用 |
461
+ | round | boolean | false | 圆角 |
462
+ | icon / focusIcon | string | - | 标准/焦点图标 |
463
+ | gradientBackground | QTGradient | - | 渐变背景 |
464
+
465
+ Events: `focus(isFocused: boolean)`, `click()`
466
+
467
+ ### qt-text
468
+
469
+ ```vue
470
+ <qt-text
471
+ text="标题"
472
+ :fontSize="28"
473
+ textColor="#ffffff"
474
+ :focusable="false"
475
+ :duplicateParentState="true"
476
+ gravity="center"
477
+ />
478
+ ```
479
+
480
+ | 属性 | 类型 | 说明 |
481
+ | ------------------------------------ | ------- | ------------------------------ |
482
+ | text | string | 文字内容 |
483
+ | fontSize / textSize | number | 字体大小 |
484
+ | textColor / focusColor / selectColor | string | 标准/焦点/选中文字颜色 |
485
+ | gravity | enum | 重心(center等) |
486
+ | lines / maxLines | number | 行数/最大行数 |
487
+ | ellipsizeMode | number | 省略模式 |
488
+ | lineSpacing / lineHeight | number | 行间距/行高 |
489
+ | autoWidth / autoHeight | boolean | 宽度/高度自适应 |
490
+ | duplicateParentState | boolean | 继承父类状态 |
491
+ | showOnState | enum | normal/focused/selected 时显示 |
492
+
493
+ Exposes: `setText(text)`, `setTextSize(size)`, `setTextColor(color)`
494
+
495
+ ### qt-image
496
+
497
+ ```vue
498
+ <qt-image
499
+ src="https://example.com/img.png"
500
+ :focusable="false"
501
+ :enableFade="true"
502
+ :fadeDuration="200"
503
+ />
504
+ ```
505
+
506
+ | 属性 | 类型 | 说明 |
507
+ | -------------------- | ------- | ------------ |
508
+ | src | string | 图片地址 |
509
+ | focusable | boolean | 是否可获焦 |
510
+ | focusScale | number | 焦点放大倍数 |
511
+ | enableFocusBorder | boolean | 焦点边框 |
512
+ | duplicateParentState | boolean | 继承父类状态 |
513
+ | enableFade | boolean | 淡入效果 |
514
+ | fadeDuration | number | 淡入时间(ms) |
515
+ | postDelay | number | 延迟加载(ms) |
516
+ | resizeMode | string | 缩放模式 |
517
+
518
+ Events: `load()`, `loadStart()`, `loadEnd(success, image)`, `error()`
519
+
520
+ ### qt-input
521
+
522
+ ```vue
523
+ <qt-input
524
+ hintText="请输入"
525
+ :textSize="22"
526
+ textColor="#ffffff"
527
+ :strokeWidth="1"
528
+ strokeColor="#979797"
529
+ :strokeRadius="16"
530
+ @onTextChange="onTextChange"
531
+ @onFocusChanged="onFocusChanged"
532
+ />
533
+ ```
534
+
535
+ | 属性 | 类型 | 默认值 | 说明 |
536
+ | ------------------------------ | ------- | --------------- | ----------------- |
537
+ | text | string | - | 文字内容 |
538
+ | size | enum | small | 输入框尺寸 |
539
+ | hintText | string | 请输入 | 提示文字 |
540
+ | hintColor | string | #A8A8A8 | 提示文字颜色 |
541
+ | textColor | string | #ffffff | 输入文字颜色 |
542
+ | textSize | number | 22 | 文字大小 |
543
+ | strokeWidth / focusStrokeWidth | number | 1/3 | 边框/焦点边框宽度 |
544
+ | strokeColor / focusStrokeColor | string | #979797/#ffffff | 边框/焦点边框颜色 |
545
+ | strokeRadius | number | 16 | 边框圆角 |
546
+ | disable | boolean | false | 禁用 |
547
+ | mutiline | boolean | false | 多行输入 |
548
+ | maxlength | number | - | 最大字符数 |
549
+
550
+ Events: `onFocusChanged`, `onTextChange`
551
+
552
+ ### qt-waterfall(瀑布流列表)
553
+
554
+ ```vue
555
+ <qt-waterfall
556
+ ref="waterfallRef"
557
+ :focusable="false"
558
+ :blockFocusDirections="['left', 'right']"
559
+ @onItemClick="onItemClick"
560
+ @onItemFocused="onItemFocused"
561
+ @onScroll="onScroll"
562
+ />
563
+ ```
564
+
565
+ 核心属性:enablePlaceholder, blockFocusDirections, autofocusPosition, focusMemory, useDiff, listenBoundEvent, makeChildVisibleType, scrollFactor, infiniteMode
566
+
567
+ Events:
568
+
569
+ - `onScroll(scrollX, scrollY)` — 滚动
570
+ - `onItemClick(sectionIndex, itemIndex, item)` — 点击
571
+ - `onItemFocused(sectionIndex, itemIndex, isFocused, item)` — 焦点变化
572
+ - `onSectionBind(pageIndex, sectionIndex)` — 板块绑定
573
+
574
+ ### 其他常用组件
575
+
576
+ | 组件 | 用途 | 关键属性 |
577
+ | --------------- | ------------ | ---------------------------------------------------- |
578
+ | qt-card | 卡片 | load(cardId, useCache), reload(), requestCardFocus() |
579
+ | qt-tabs | 标签页 | defaultIndex, defaultFocusIndex, itemList |
580
+ | qt-seek-bar | 进度条/滑块 | progress, range, seekBarMode, thumbWidth |
581
+ | qt-dialog | 弹窗 | 全局弹窗 / 路由弹窗两种模式 |
582
+ | qt-list-view | 列表 | autofocusPosition, blockFocusDirections |
583
+ | qt-grid-view | 网格 | autofocusPosition |
584
+ | qt-scroll-view | 滚动容器 | - |
585
+ | qt-row | 横向flex容器 | 等同 flex-direction: row |
586
+ | qt-column | 纵向flex容器 | 等同 flex-direction: column |
587
+ | qt-view | 通用容器 | 等同 div |
588
+ | qt-loading | 加载中 | - |
589
+ | qt-progress-bar | 进度条 | - |
590
+ | qt-poster | 海报图 | - |
591
+ | qt-collapse | 折叠面板 | - |
592
+ | qt-nav-bar | 导航栏 | - |
593
+ | qt-web-view | 网页容器 | - |
594
+ | qt-animation | 动画 | alpha/rotation/scale/translation |
595
+
596
+ > 完整组件 API 详见 https://quicktvui.com
597
+
598
+ ---
599
+
600
+ ## 五、原生模块 API
601
+
602
+ 通过全局 `qt` 对象或直接 import 使用。
603
+
604
+ ### 本地存储
605
+
606
+ ```typescript
607
+ import { useESLocalStorage } from "@extscreen/es3-core";
608
+ const storage = useESLocalStorage();
609
+ await storage.putString("key", "value");
610
+ const val = await storage.getString("key", "default");
611
+ // 同理: putInt/getInt, putBoolean/getBoolean, putLong/getLong
612
+ ```
613
+
614
+ ### Toast
615
+
616
+ ```typescript
617
+ import { useESToast } from "@extscreen/es3-core";
618
+ const toast = useESToast();
619
+ toast.showToast("提示信息");
620
+ toast.showLongToast("长提示");
621
+ toast.showShortToast("短提示");
622
+ ```
623
+
624
+ ### 设备信息
625
+
626
+ ```typescript
627
+ import { useESDevice } from "@extscreen/es3-core";
628
+ const device = useESDevice();
629
+ device.getScreenWidth(); // 屏幕宽度
630
+ device.getScreenHeight(); // 屏幕高度
631
+ device.getIPAddress(); // IP 地址
632
+ device.getDevice(); // 完整设备信息对象
633
+ ```
634
+
635
+ ### 网络
636
+
637
+ ```typescript
638
+ import { useESNetwork } from "@extscreen/es3-core";
639
+ const network = useESNetwork();
640
+ network.isNetworkConnected(); // 是否联网
641
+ network.getActiveNetworkInfo(); // 网络信息
642
+ network.addListener(listener); // 监听网络变化
643
+ // 网络类型: NONE(-1), MOBILE(0), WIFI(1), ETHERNET(9)
644
+ ```
645
+
646
+ ### 音频控制
647
+
648
+ ```typescript
649
+ import { useESAudio } from "@extscreen/es3-core";
650
+ const audio = useESAudio();
651
+ audio.getStreamMusicVolume(); // 当前音量
652
+ audio.getStreamMusicMaxVolume(); // 最大音量
653
+ audio.setStreamVolume(streamType, volume, flags);
654
+ audio.setStreamMute(streamType, true);
655
+ ```
656
+
657
+ ### 事件总线
658
+
659
+ ```typescript
660
+ import { useESEventBus } from "@extscreen/es3-core";
661
+ const eventBus = useESEventBus();
662
+ eventBus.on("eventName", callback); // 监听
663
+ eventBus.once("eventName", callback); // 一次性监听
664
+ eventBus.emit("eventName", ...args); // 发送
665
+ eventBus.off("eventName", callback); // 取消监听
666
+ ```
667
+
668
+ ### 亮度控制
669
+
670
+ ```typescript
671
+ import { useESBrightness } from "@extscreen/es3-core";
672
+ const brightness = useESBrightness();
673
+ brightness.getScreenBrightness();
674
+ brightness.changeScreenBrightness(value);
675
+ ```
676
+
677
+ ---
678
+
679
+ ## 六、渐变背景(QTGradient)
680
+
681
+ ```typescript
682
+ // 线性渐变示例
683
+ const gradient: QTGradient = {
684
+ colors: ["#FF0000", "#0000FF"],
685
+ orientation: 6, // LEFT_RIGHT
686
+ cornerRadius: 8,
687
+ };
688
+ // orientation: 0=TOP_BOTTOM, 4=BOTTOM_TOP, 6=LEFT_RIGHT, 2=RIGHT_LEFT
689
+ // 使用时 background-color 必须设为 transparent
690
+ ```
691
+
692
+ ---
693
+
694
+ ## 七、代码模板
695
+
696
+ ### 最小 TV 页面
697
+
698
+ ```vue
699
+ <template>
700
+ <div class="page">
701
+ <div
702
+ class="item"
703
+ :focusable="true"
704
+ :focusScale="1.1"
705
+ :enableFocusBorder="true"
706
+ :autofocus="true"
707
+ @click="onClick"
708
+ >
709
+ <qt-text text="Hello TV" :duplicateParentState="true" class="text" />
710
+ </div>
711
+ </div>
712
+ </template>
713
+
714
+ <script lang="ts">
715
+ import { defineComponent } from "vue";
716
+ import { useESRouter } from "@extscreen/es3-router";
717
+
718
+ export default defineComponent({
719
+ setup() {
720
+ const router = useESRouter();
721
+
722
+ function onESCreate(params) {
723
+ // 页面初始化
724
+ }
725
+ function onClick() {}
726
+ function onBackPressed() {
727
+ router.back();
728
+ }
729
+
730
+ return { onESCreate, onClick, onBackPressed };
731
+ },
732
+ });
733
+ </script>
734
+
735
+ <style>
736
+ .page {
737
+ width: 1920px;
738
+ height: 1080px;
739
+ background-color: #000000;
740
+ }
741
+ .item {
742
+ width: 300px;
743
+ height: 100px;
744
+ background-color: #333333;
745
+ focus-background-color: #0066ff;
746
+ }
747
+ .text {
748
+ width: 300px;
749
+ height: 100px;
750
+ font-size: 28px;
751
+ color: #ffffff;
752
+ }
753
+ </style>
754
+ ```
755
+
756
+ ### 详情页模板(带参数接收 + 返回键处理)
757
+
758
+ ```vue
759
+ <template>
760
+ <div class="detail-page">
761
+ <qt-text class="detail-title" :text="title" gravity="center" />
762
+ <div
763
+ class="detail-back-btn"
764
+ :focusable="true"
765
+ :focusScale="1.1"
766
+ :enableFocusBorder="true"
767
+ :autofocus="true"
768
+ @click="onBackPressed"
769
+ >
770
+ <qt-text
771
+ text="返回"
772
+ :duplicateParentState="true"
773
+ class="detail-back-text"
774
+ gravity="center"
775
+ />
776
+ </div>
777
+ </div>
778
+ </template>
779
+
780
+ <script lang="ts">
781
+ import { defineComponent, ref } from "vue";
782
+ import { useESRouter } from "@extscreen/es3-router";
783
+
784
+ export default defineComponent({
785
+ setup() {
786
+ const router = useESRouter();
787
+ const title = ref("详情页");
788
+
789
+ function onESCreate(params) {
790
+ // 接收路由参数
791
+ if (params && params.title) {
792
+ title.value = params.title;
793
+ }
794
+ }
795
+
796
+ function onBackPressed() {
797
+ router.back();
798
+ }
799
+
800
+ return { title, onESCreate, onBackPressed };
801
+ },
802
+ });
803
+ </script>
804
+
805
+ <style>
806
+ .detail-page {
807
+ width: 1920px;
808
+ height: 1080px;
809
+ background-color: #1a1a1a;
810
+ align-items: center;
811
+ justify-content: center;
812
+ }
813
+ .detail-title {
814
+ width: 600px;
815
+ height: 80px;
816
+ font-size: 48px;
817
+ color: #ffffff;
818
+ margin-bottom: 40px;
819
+ }
820
+ .detail-back-btn {
821
+ width: 240px;
822
+ height: 70px;
823
+ background-color: #333333;
824
+ focus-background-color: #0066ff;
825
+ border-radius: 35px;
826
+ align-items: center;
827
+ justify-content: center;
828
+ }
829
+ .detail-back-text {
830
+ width: 240px;
831
+ height: 70px;
832
+ font-size: 26px;
833
+ color: #ffffff;
834
+ }
835
+ </style>
836
+ ```