@funhub/platform 0.2.31 → 0.2.32

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 (889) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +1 -18
  2. package/dist/assets/icons/channel-list/channel-active-indicator.mjs +1 -31
  3. package/dist/assets/icons/clear.mjs +1 -17
  4. package/dist/assets/icons/close-icon.mjs +1 -18
  5. package/dist/assets/icons/close.mjs +1 -14
  6. package/dist/assets/icons/common/collect_nor.mjs +1 -21
  7. package/dist/assets/icons/common/collect_sel.mjs +1 -21
  8. package/dist/assets/icons/common/follow_sel.mjs +1 -17
  9. package/dist/assets/icons/common/follow_user.mjs +1 -17
  10. package/dist/assets/icons/common/full_screen.mjs +1 -17
  11. package/dist/assets/icons/common/god_comment.mjs +1 -17
  12. package/dist/assets/icons/common/header-menu.mjs +1 -29
  13. package/dist/assets/icons/common/header-search-icon.mjs +1 -17
  14. package/dist/assets/icons/common/heart-like.mjs +1 -31
  15. package/dist/assets/icons/common/heart-unlike.mjs +1 -18
  16. package/dist/assets/icons/common/qq.mjs +1 -32
  17. package/dist/assets/icons/common/right_arrow.mjs +1 -14
  18. package/dist/assets/icons/common/right_arrow_thin.mjs +1 -17
  19. package/dist/assets/icons/common/share.mjs +1 -17
  20. package/dist/assets/icons/common/solid-arrow.mjs +1 -17
  21. package/dist/assets/icons/common/video_play.mjs +1 -18
  22. package/dist/assets/icons/common/wechat-friends.mjs +1 -40
  23. package/dist/assets/icons/common/wechat.mjs +1 -39
  24. package/dist/assets/icons/detail/check-ok.mjs +1 -17
  25. package/dist/assets/icons/detail/comment.mjs +1 -19
  26. package/dist/assets/icons/detail/commet_at.mjs +1 -53
  27. package/dist/assets/icons/detail/give_like.mjs +1 -20
  28. package/dist/assets/icons/detail/give_like_sel.mjs +1 -27
  29. package/dist/assets/icons/detail/min-collection.mjs +1 -38
  30. package/dist/assets/icons/detail/publish_pic.mjs +1 -27
  31. package/dist/assets/icons/detail/publish_video.mjs +1 -30
  32. package/dist/assets/icons/detail/un_like.mjs +1 -20
  33. package/dist/assets/icons/detail/un_like_sel.mjs +1 -27
  34. package/dist/assets/icons/detail/video_flag.mjs +1 -17
  35. package/dist/assets/icons/detail/video_play.mjs +1 -18
  36. package/dist/assets/icons/dislike.mjs +1 -20
  37. package/dist/assets/icons/dislike_sel.mjs +1 -27
  38. package/dist/assets/icons/empty/img-empty-adduser.mjs +1 -463
  39. package/dist/assets/icons/empty/img-empty-nodata.mjs +1 -194
  40. package/dist/assets/icons/eye-icon.mjs +1 -21
  41. package/dist/assets/icons/eye-off-icon.mjs +1 -24
  42. package/dist/assets/icons/filter_dark.mjs +1 -17
  43. package/dist/assets/icons/follow_nor.mjs +1 -44
  44. package/dist/assets/icons/follow_sel.mjs +1 -31
  45. package/dist/assets/icons/left-arrow-icon.mjs +1 -18
  46. package/dist/assets/icons/left_arrow.mjs +1 -14
  47. package/dist/assets/icons/like.mjs +1 -20
  48. package/dist/assets/icons/like_sel.mjs +1 -27
  49. package/dist/assets/icons/marquee-close.mjs +1 -29
  50. package/dist/assets/icons/marquee-enter.mjs +1 -17
  51. package/dist/assets/icons/marquee-speaker.mjs +1 -22
  52. package/dist/assets/icons/publish/publish_add.mjs +1 -17
  53. package/dist/assets/icons/publish/publish_at.mjs +1 -53
  54. package/dist/assets/icons/publish/publish_collection.mjs +1 -28
  55. package/dist/assets/icons/publish/publish_pic.mjs +1 -27
  56. package/dist/assets/icons/publish/publish_video.mjs +1 -30
  57. package/dist/assets/icons/refresh.mjs +1 -18
  58. package/dist/assets/icons/search/filter.mjs +1 -17
  59. package/dist/assets/icons/search.mjs +1 -23
  60. package/dist/assets/icons/share/share-link.mjs +1 -39
  61. package/dist/assets/icons/tabs/follow.mjs +1 -20
  62. package/dist/assets/icons/tabs/follow_active.mjs +1 -17
  63. package/dist/assets/icons/tabs/home.mjs +1 -17
  64. package/dist/assets/icons/tabs/home_active.mjs +1 -17
  65. package/dist/assets/icons/tabs/mine.mjs +1 -26
  66. package/dist/assets/icons/tabs/mine_active.mjs +1 -17
  67. package/dist/assets/icons/view.mjs +1 -17
  68. package/dist/assets/images/add.mjs +1 -5
  69. package/dist/assets/images/default_avatar.mjs +1 -5
  70. package/dist/assets/images/default_collection_cover.mjs +1 -5
  71. package/dist/assets/images/empty/img_empty_adduser.mjs +1 -463
  72. package/dist/assets/images/empty/img_empty_message.mjs +1 -408
  73. package/dist/assets/images/empty/img_empty_network.mjs +1 -168
  74. package/dist/assets/images/empty/img_empty_nodata.mjs +1 -194
  75. package/dist/assets/images/empty/img_empty_picture.mjs +1 -59
  76. package/dist/assets/images/empty/img_empty_search.mjs +1 -250
  77. package/dist/assets/images/frame.mjs +1 -5
  78. package/dist/assets/images/less.mjs +1 -5
  79. package/dist/assets/images/logo.mjs +1 -5
  80. package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +1 -29
  81. package/dist/assets/images/subscript.mjs +1 -5
  82. package/dist/assets/images/user/default_avatar.mjs +1 -5
  83. package/dist/biz.mjs +1 -169
  84. package/dist/cli/init/create-client.mjs +1 -12
  85. package/dist/cli/init/create-sdk.mjs +1 -12
  86. package/dist/cli/init/shared/command.mjs +1 -31
  87. package/dist/cli/init/shared/constants.mjs +1 -24
  88. package/dist/cli/init/shared/create-project.mjs +2 -58
  89. package/dist/cli/init/shared/file.mjs +1 -21
  90. package/dist/cli/init/shared/package-manager.mjs +1 -42
  91. package/dist/cli/init/shared/prompts.mjs +1 -107
  92. package/dist/cli/init/shared/template.mjs +1 -66
  93. package/dist/cli.mjs +2 -128
  94. package/dist/common.mjs +1 -51
  95. package/dist/components/biz/basics/card-item/defaults/default-props.mjs +1 -10
  96. package/dist/components/biz/basics/card-item/runtime/client.mjs +1 -83
  97. package/dist/components/biz/basics/card-item/runtime/corners.mjs +1 -33
  98. package/dist/components/biz/basics/card-item/schema/component.mjs +1 -14
  99. package/dist/components/biz/basics/card-item/schema/data.schema.mjs +1 -8
  100. package/dist/components/biz/basics/card-item/schema/event.schema.mjs +1 -8
  101. package/dist/components/biz/basics/card-item/schema/index.mjs +1 -17
  102. package/dist/components/biz/basics/card-item/schema/props.schema.mjs +1 -18
  103. package/dist/components/biz/basics/card-item/schema/style.schema.mjs +1 -7
  104. package/dist/components/biz/basics/card-layout/defaults/default-props.mjs +1 -13
  105. package/dist/components/biz/basics/card-layout/runtime/client.mjs +1 -38
  106. package/dist/components/biz/basics/card-layout/schema/component.mjs +1 -14
  107. package/dist/components/biz/basics/card-layout/schema/data.schema.mjs +1 -8
  108. package/dist/components/biz/basics/card-layout/schema/event.schema.mjs +1 -5
  109. package/dist/components/biz/basics/card-layout/schema/index.mjs +1 -17
  110. package/dist/components/biz/basics/card-layout/schema/props.schema.mjs +1 -28
  111. package/dist/components/biz/basics/card-layout/schema/style.schema.mjs +1 -7
  112. package/dist/components/biz/basics/fullscreen-feed/basic-fullscreen.mjs +1 -268
  113. package/dist/components/biz/basics/fullscreen-feed/defaults/default-props.mjs +1 -11
  114. package/dist/components/biz/basics/fullscreen-feed/index.mjs +1 -12
  115. package/dist/components/biz/basics/fullscreen-feed/runtime/adapters.mjs +1 -97
  116. package/dist/components/biz/basics/fullscreen-feed/runtime/bottom-info.mjs +1 -125
  117. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -390
  118. package/dist/components/biz/basics/fullscreen-feed/runtime/comment-modal.mjs +1 -107
  119. package/dist/components/biz/basics/fullscreen-feed/runtime/interaction-sync.mjs +1 -134
  120. package/dist/components/biz/basics/fullscreen-feed/runtime/post-slide.mjs +1 -232
  121. package/dist/components/biz/basics/fullscreen-feed/runtime/styles.module.mjs +152 -25
  122. package/dist/components/biz/basics/fullscreen-feed/runtime/use-mixed-feed-controller.mjs +1 -193
  123. package/dist/components/biz/basics/fullscreen-feed/runtime/use-series-feed-controller.mjs +1 -212
  124. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -270
  125. package/dist/components/biz/basics/fullscreen-feed/runtime/video-slide.mjs +1 -376
  126. package/dist/components/biz/basics/fullscreen-feed/schema/component.mjs +1 -14
  127. package/dist/components/biz/basics/fullscreen-feed/schema/data.schema.mjs +1 -11
  128. package/dist/components/biz/basics/fullscreen-feed/schema/event.schema.mjs +1 -13
  129. package/dist/components/biz/basics/fullscreen-feed/schema/index.mjs +1 -17
  130. package/dist/components/biz/basics/fullscreen-feed/schema/props.schema.mjs +1 -20
  131. package/dist/components/biz/basics/fullscreen-feed/schema/style.schema.mjs +1 -5
  132. package/dist/components/biz/basics/logo/variants/basic-logo/defaults/default-props.mjs +1 -19
  133. package/dist/components/biz/basics/logo/variants/basic-logo/index.mjs +1 -9
  134. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -171
  135. package/dist/components/biz/basics/logo/variants/basic-logo/schema/component.mjs +1 -14
  136. package/dist/components/biz/basics/logo/variants/basic-logo/schema/data.schema.mjs +1 -9
  137. package/dist/components/biz/basics/logo/variants/basic-logo/schema/event.schema.mjs +1 -23
  138. package/dist/components/biz/basics/logo/variants/basic-logo/schema/index.mjs +1 -17
  139. package/dist/components/biz/basics/logo/variants/basic-logo/schema/props.schema.mjs +1 -78
  140. package/dist/components/biz/basics/logo/variants/basic-logo/schema/style.schema.mjs +1 -7
  141. package/dist/components/biz/basics/search/shared/components/search-box.mjs +1 -56
  142. package/dist/components/biz/basics/search/shared/config/default-data.mjs +1 -15
  143. package/dist/components/biz/basics/search/shared/config/schema.mjs +1 -50
  144. package/dist/components/biz/basics/search/variants/basic-search/defaults/default-props.mjs +1 -10
  145. package/dist/components/biz/basics/search/variants/basic-search/index.mjs +1 -12
  146. package/dist/components/biz/basics/search/variants/basic-search/runtime/client.mjs +1 -33
  147. package/dist/components/biz/basics/search/variants/basic-search/schema/component.mjs +1 -14
  148. package/dist/components/biz/basics/search/variants/basic-search/schema/data.schema.mjs +1 -8
  149. package/dist/components/biz/basics/search/variants/basic-search/schema/event.schema.mjs +1 -7
  150. package/dist/components/biz/basics/search/variants/basic-search/schema/index.mjs +1 -17
  151. package/dist/components/biz/basics/search/variants/basic-search/schema/props.schema.mjs +1 -7
  152. package/dist/components/biz/basics/search/variants/basic-search/schema/style.schema.mjs +1 -7
  153. package/dist/components/biz/basics/search/variants/filter-search/defaults/default-props.mjs +1 -14
  154. package/dist/components/biz/basics/search/variants/filter-search/index.mjs +1 -12
  155. package/dist/components/biz/basics/search/variants/filter-search/runtime/client.mjs +1 -63
  156. package/dist/components/biz/basics/search/variants/filter-search/schema/component.mjs +1 -14
  157. package/dist/components/biz/basics/search/variants/filter-search/schema/data.schema.mjs +1 -8
  158. package/dist/components/biz/basics/search/variants/filter-search/schema/event.schema.mjs +1 -7
  159. package/dist/components/biz/basics/search/variants/filter-search/schema/index.mjs +1 -17
  160. package/dist/components/biz/basics/search/variants/filter-search/schema/props.schema.mjs +1 -22
  161. package/dist/components/biz/basics/search/variants/filter-search/schema/style.schema.mjs +1 -7
  162. package/dist/components/biz/basics/search/variants/simple-search/defaults/default-props.mjs +1 -10
  163. package/dist/components/biz/basics/search/variants/simple-search/index.mjs +1 -9
  164. package/dist/components/biz/basics/search/variants/simple-search/runtime/client.mjs +1 -37
  165. package/dist/components/biz/basics/search/variants/simple-search/schema/component.mjs +1 -14
  166. package/dist/components/biz/basics/search/variants/simple-search/schema/data.schema.mjs +1 -8
  167. package/dist/components/biz/basics/search/variants/simple-search/schema/event.schema.mjs +1 -7
  168. package/dist/components/biz/basics/search/variants/simple-search/schema/index.mjs +1 -17
  169. package/dist/components/biz/basics/search/variants/simple-search/schema/props.schema.mjs +1 -7
  170. package/dist/components/biz/basics/search/variants/simple-search/schema/style.schema.mjs +1 -7
  171. package/dist/components/biz/basics/search/variants/tag-search/defaults/default-props.mjs +1 -18
  172. package/dist/components/biz/basics/search/variants/tag-search/index.mjs +1 -9
  173. package/dist/components/biz/basics/search/variants/tag-search/runtime/client.mjs +1 -67
  174. package/dist/components/biz/basics/search/variants/tag-search/schema/component.mjs +1 -14
  175. package/dist/components/biz/basics/search/variants/tag-search/schema/data.schema.mjs +1 -8
  176. package/dist/components/biz/basics/search/variants/tag-search/schema/event.schema.mjs +1 -7
  177. package/dist/components/biz/basics/search/variants/tag-search/schema/index.mjs +1 -17
  178. package/dist/components/biz/basics/search/variants/tag-search/schema/props.schema.mjs +1 -37
  179. package/dist/components/biz/basics/search/variants/tag-search/schema/style.schema.mjs +1 -7
  180. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -142
  181. package/dist/components/biz/business/advertisement/ad-provider.mjs +1 -50
  182. package/dist/components/biz/business/advertisement/ad-query.mjs +1 -39
  183. package/dist/components/biz/business/advertisement/ad-runtime-provider.mjs +1 -21
  184. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -274
  185. package/dist/components/biz/business/advertisement/banner-ad/material.mjs +1 -21
  186. package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +1 -55
  187. package/dist/components/biz/business/advertisement/banner-ad/server.mjs +1 -24
  188. package/dist/components/biz/business/advertisement/feed-ad/index.mjs +1 -36
  189. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -109
  190. package/dist/components/biz/business/advertisement/floating-ad/material.mjs +1 -21
  191. package/dist/components/biz/business/advertisement/floating-ad/schema.mjs +1 -11
  192. package/dist/components/biz/business/advertisement/floating-ad/server.mjs +1 -24
  193. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -187
  194. package/dist/components/biz/business/advertisement/icon-ad/material.mjs +1 -21
  195. package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +1 -42
  196. package/dist/components/biz/business/advertisement/icon-ad/server.mjs +1 -24
  197. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -203
  198. package/dist/components/biz/business/advertisement/popup-ad/material.mjs +1 -21
  199. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -48
  200. package/dist/components/biz/business/advertisement/popup-ad/server.mjs +1 -24
  201. package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -370
  202. package/dist/components/biz/business/advertisement/text-ad/material.mjs +1 -21
  203. package/dist/components/biz/business/advertisement/text-ad/schema.mjs +1 -34
  204. package/dist/components/biz/business/advertisement/text-ad/server.mjs +1 -24
  205. package/dist/components/biz/business/banner/variants/basic-banner/defaults/default-props.mjs +1 -15
  206. package/dist/components/biz/business/banner/variants/basic-banner/index.mjs +1 -12
  207. package/dist/components/biz/business/banner/variants/basic-banner/inspector-schema.mjs +1 -62
  208. package/dist/components/biz/business/banner/variants/basic-banner/material.mjs +1 -21
  209. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -140
  210. package/dist/components/biz/business/banner/variants/basic-banner/schema/component.mjs +1 -14
  211. package/dist/components/biz/business/banner/variants/basic-banner/schema/data.schema.mjs +1 -53
  212. package/dist/components/biz/business/banner/variants/basic-banner/schema/event.schema.mjs +1 -5
  213. package/dist/components/biz/business/banner/variants/basic-banner/schema/index.mjs +1 -17
  214. package/dist/components/biz/business/banner/variants/basic-banner/schema/props.schema.mjs +1 -40
  215. package/dist/components/biz/business/banner/variants/basic-banner/schema/style.schema.mjs +1 -7
  216. package/dist/components/biz/business/banner/variants/basic-banner/server.mjs +1 -25
  217. package/dist/components/biz/business/banner-carousel/client.mjs +1 -133
  218. package/dist/components/biz/business/banner-carousel/default-props.mjs +1 -15
  219. package/dist/components/biz/business/banner-carousel/material.mjs +1 -22
  220. package/dist/components/biz/business/banner-carousel/schema.mjs +1 -94
  221. package/dist/components/biz/business/banner-carousel/server.mjs +1 -87
  222. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/defaults/default-props.mjs +1 -8
  223. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/index.mjs +1 -9
  224. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/runtime/client.mjs +1 -41
  225. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/component.mjs +1 -14
  226. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/data.schema.mjs +1 -8
  227. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/event.schema.mjs +1 -5
  228. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/index.mjs +1 -17
  229. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/props.schema.mjs +1 -12
  230. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/style.schema.mjs +1 -7
  231. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/defaults/default-props.mjs +1 -8
  232. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/index.mjs +1 -9
  233. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/runtime/client.mjs +1 -106
  234. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/component.mjs +1 -14
  235. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/data.schema.mjs +1 -8
  236. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/event.schema.mjs +1 -5
  237. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/index.mjs +1 -17
  238. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/props.schema.mjs +1 -12
  239. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/style.schema.mjs +1 -7
  240. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/defaults/default-props.mjs +1 -8
  241. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/index.mjs +1 -9
  242. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/runtime/client.mjs +1 -41
  243. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/component.mjs +1 -14
  244. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/data.schema.mjs +1 -8
  245. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/event.schema.mjs +1 -5
  246. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/index.mjs +1 -17
  247. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/props.schema.mjs +1 -12
  248. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/style.schema.mjs +1 -7
  249. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/defaults/default-props.mjs +1 -8
  250. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/index.mjs +1 -9
  251. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/runtime/client.mjs +1 -41
  252. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/component.mjs +1 -14
  253. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/data.schema.mjs +1 -8
  254. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/event.schema.mjs +1 -5
  255. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/index.mjs +1 -17
  256. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/props.schema.mjs +1 -12
  257. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/style.schema.mjs +1 -7
  258. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/defaults/default-props.mjs +1 -8
  259. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/index.mjs +1 -9
  260. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/runtime/client.mjs +1 -106
  261. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/component.mjs +1 -14
  262. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/data.schema.mjs +1 -8
  263. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/event.schema.mjs +1 -5
  264. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/index.mjs +1 -17
  265. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/props.schema.mjs +1 -12
  266. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/style.schema.mjs +1 -7
  267. package/dist/components/biz/business/channel-list/channel-filter-dialog.mjs +1 -190
  268. package/dist/components/biz/business/channel-list/client.mjs +1 -157
  269. package/dist/components/biz/business/channel-list/default-props.mjs +1 -13
  270. package/dist/components/biz/business/channel-list/material.mjs +1 -21
  271. package/dist/components/biz/business/channel-list/schema.mjs +1 -40
  272. package/dist/components/biz/business/comment/comment-input.mjs +5 -772
  273. package/dist/components/biz/business/comment/comment-item.mjs +1 -182
  274. package/dist/components/biz/business/comment/comment-list.mjs +1 -722
  275. package/dist/components/biz/business/comment/comment-media.mjs +1 -57
  276. package/dist/components/biz/business/comment/comment-rich-text.mjs +1 -69
  277. package/dist/components/biz/business/comment/reply-detail.mjs +1 -969
  278. package/dist/components/biz/business/comment/time-display.mjs +1 -20
  279. package/dist/components/biz/business/comment/use-keyboard-handler.mjs +1 -142
  280. package/dist/components/biz/business/contact/contact-item.mjs +1 -45
  281. package/dist/components/biz/business/contact/contact-list.mjs +1 -212
  282. package/dist/components/biz/business/contact/contact-search.mjs +1 -128
  283. package/dist/components/biz/business/detail/shared/detail-follow-action.mjs +1 -114
  284. package/dist/components/biz/business/detail/shared/detail-info-tags.mjs +1 -33
  285. package/dist/components/biz/business/detail/shared/detail-info-title.mjs +1 -84
  286. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -432
  287. package/dist/components/biz/business/detail/shared/detail-structured-data.mjs +1 -63
  288. package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -67
  289. package/dist/components/biz/business/detail/shared/material-route-context.mjs +1 -44
  290. package/dist/components/biz/business/detail/shared/metadata-utils.mjs +1 -21
  291. package/dist/components/biz/business/detail/shared/post-recommend-list.mjs +1 -184
  292. package/dist/components/biz/business/detail/shared/registry.mjs +1 -55
  293. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -225
  294. package/dist/components/biz/business/detail/shared/seo-config.mjs +1 -28
  295. package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +1 -320
  296. package/dist/components/biz/business/detail/shared/video-detail-server-data.mjs +1 -46
  297. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -902
  298. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -97
  299. package/dist/components/biz/business/detail/video-detail-actions/material.mjs +1 -18
  300. package/dist/components/biz/business/detail/video-detail-actions/schema.mjs +1 -11
  301. package/dist/components/biz/business/detail/video-detail-actions/server.mjs +1 -47
  302. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -201
  303. package/dist/components/biz/business/detail/video-detail-info/material.mjs +1 -18
  304. package/dist/components/biz/business/detail/video-detail-info/schema.mjs +1 -14
  305. package/dist/components/biz/business/detail/video-detail-info/server.mjs +1 -45
  306. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/client.mjs +1 -51
  307. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/material.mjs +1 -18
  308. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/schema.mjs +1 -14
  309. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/server.mjs +1 -45
  310. package/dist/components/biz/business/detail/video-detail-player/client.mjs +1 -136
  311. package/dist/components/biz/business/detail/video-detail-player/material.mjs +1 -18
  312. package/dist/components/biz/business/detail/video-detail-player/schema.mjs +1 -11
  313. package/dist/components/biz/business/detail/video-detail-player/server.mjs +1 -17
  314. package/dist/components/biz/business/detail/video-detail-player-bridge-only/client.mjs +1 -17
  315. package/dist/components/biz/business/detail/video-detail-player-bridge-only/material.mjs +1 -18
  316. package/dist/components/biz/business/detail/video-detail-player-bridge-only/schema.mjs +1 -13
  317. package/dist/components/biz/business/detail/video-detail-player-bridge-only/server.mjs +1 -17
  318. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -89
  319. package/dist/components/biz/business/detail/video-detail-recommend/material.mjs +1 -18
  320. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -35
  321. package/dist/components/biz/business/detail/video-detail-recommend/server.mjs +1 -35
  322. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -548
  323. package/dist/components/biz/business/detail/video-detail-recommend/utils.mjs +1 -60
  324. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/defaults/default-props.mjs +1 -12
  325. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/index.mjs +1 -9
  326. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/runtime/client.mjs +1 -66
  327. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/component.mjs +1 -14
  328. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/data.schema.mjs +1 -43
  329. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/event.schema.mjs +1 -5
  330. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/index.mjs +1 -17
  331. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/props.schema.mjs +1 -32
  332. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/style.schema.mjs +1 -7
  333. package/dist/components/biz/business/floating-ball/client.mjs +1 -31
  334. package/dist/components/biz/business/floating-ball/material.mjs +1 -18
  335. package/dist/components/biz/business/floating-ball/schema.mjs +1 -20
  336. package/dist/components/biz/business/floating-ball/server.mjs +1 -17
  337. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/defaults/default-props.mjs +1 -11
  338. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/index.mjs +1 -9
  339. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/runtime/client.mjs +1 -71
  340. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/schema/component.mjs +1 -14
  341. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/schema/data.schema.mjs +1 -11
  342. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/schema/index.mjs +1 -17
  343. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/defaults/default-props.mjs +1 -11
  344. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/index.mjs +1 -9
  345. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/runtime/client.mjs +1 -64
  346. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/schema/component.mjs +1 -14
  347. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/schema/data.schema.mjs +1 -11
  348. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/schema/index.mjs +1 -17
  349. package/dist/components/biz/business/fullscreen-feed/variants/shared/runtime-compat.mjs +1 -522
  350. package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -21
  351. package/dist/components/biz/business/header-search/header-avatar-icon/material.mjs +1 -18
  352. package/dist/components/biz/business/header-search/header-avatar-icon/schema.mjs +1 -11
  353. package/dist/components/biz/business/header-search/header-avatar-icon/server.mjs +1 -17
  354. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -142
  355. package/dist/components/biz/business/header-search/header-avatar-logo-search/material.mjs +1 -18
  356. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -23
  357. package/dist/components/biz/business/header-search/header-avatar-logo-search/server.mjs +1 -17
  358. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -38
  359. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/material.mjs +1 -18
  360. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/schema.mjs +1 -20
  361. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/server.mjs +1 -17
  362. package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -32
  363. package/dist/components/biz/business/header-search/header-logo-search/material.mjs +1 -18
  364. package/dist/components/biz/business/header-search/header-logo-search/schema.mjs +1 -22
  365. package/dist/components/biz/business/header-search/header-logo-search/server.mjs +1 -17
  366. package/dist/components/biz/business/header-search/header-search/client.mjs +1 -19
  367. package/dist/components/biz/business/header-search/header-search/material.mjs +1 -18
  368. package/dist/components/biz/business/header-search/header-search/schema.mjs +1 -11
  369. package/dist/components/biz/business/header-search/header-search/server.mjs +1 -17
  370. package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -53
  371. package/dist/components/biz/business/header-search/shared/header-action.mjs +1 -29
  372. package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +1 -26
  373. package/dist/components/biz/business/header-search/shared/header-shell.mjs +1 -21
  374. package/dist/components/biz/business/header-search/shared/logo.mjs +1 -25
  375. package/dist/components/biz/business/header-search/shared/search.mjs +1 -47
  376. package/dist/components/biz/business/home-recommend/home-recommend-grid/client.mjs +1 -48
  377. package/dist/components/biz/business/home-recommend/home-recommend-grid/index.mjs +1 -14
  378. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -229
  379. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.mjs +1 -18
  380. package/dist/components/biz/business/home-recommend/home-recommend-grid/schema.mjs +1 -24
  381. package/dist/components/biz/business/home-recommend/home-recommend-grid/server.mjs +1 -48
  382. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.mjs +1 -47
  383. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/index.mjs +1 -14
  384. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -211
  385. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.mjs +1 -18
  386. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/schema.mjs +1 -24
  387. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/server.mjs +1 -42
  388. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -890
  389. package/dist/components/biz/business/home-recommend/shared/home-recommend-default-config.mjs +1 -24
  390. package/dist/components/biz/business/home-recommend/shared/home-recommend-play-count.mjs +1 -31
  391. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -178
  392. package/dist/components/biz/business/home-recommend/shared/home-recommend-runtime-props.mjs +1 -47
  393. package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +1 -336
  394. package/dist/components/biz/business/home-recommend/shared/home-recommend-smart-layout.mjs +1 -73
  395. package/dist/components/biz/business/home-recommend/shared/home-recommend-smart-tag.mjs +1 -21
  396. package/dist/components/biz/business/home-recommend/shared/home-recommend-video-detail.mjs +1 -73
  397. package/dist/components/biz/business/image-text-recommend/client.mjs +1 -436
  398. package/dist/components/biz/business/image-text-recommend/material.mjs +1 -21
  399. package/dist/components/biz/business/image-text-recommend/schema.mjs +1 -79
  400. package/dist/components/biz/business/image-text-recommend/server.mjs +1 -53
  401. package/dist/components/biz/business/image-text-recommend/shared/query.mjs +1 -33
  402. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -106
  403. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -256
  404. package/dist/components/biz/business/large-feature-grid/material.mjs +1 -21
  405. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -127
  406. package/dist/components/biz/business/large-feature-grid/server.mjs +1 -16
  407. package/dist/components/biz/business/marquee/client.mjs +1 -303
  408. package/dist/components/biz/business/marquee/material.mjs +1 -21
  409. package/dist/components/biz/business/marquee/schema.mjs +1 -86
  410. package/dist/components/biz/business/marquee/server.mjs +1 -17
  411. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/defaults/default-props.mjs +1 -21
  412. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/index.mjs +1 -9
  413. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/channel-filter-dialog.mjs +1 -180
  414. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -159
  415. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/component.mjs +1 -14
  416. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/data.schema.mjs +1 -9
  417. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/event.schema.mjs +1 -27
  418. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/index.mjs +1 -17
  419. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/props.schema.mjs +1 -92
  420. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/style.schema.mjs +1 -7
  421. package/dist/components/biz/business/post-card/variants/basic-post-card/defaults/default-props.mjs +1 -8
  422. package/dist/components/biz/business/post-card/variants/basic-post-card/index.mjs +1 -9
  423. package/dist/components/biz/business/post-card/variants/basic-post-card/runtime/client.mjs +1 -119
  424. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/component.mjs +1 -14
  425. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/data.schema.mjs +1 -8
  426. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/event.schema.mjs +1 -5
  427. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/index.mjs +1 -17
  428. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/props.schema.mjs +1 -5
  429. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/style.schema.mjs +1 -7
  430. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -343
  431. package/dist/components/biz/business/profile/profile-header/material.mjs +1 -59
  432. package/dist/components/biz/business/profile/profile-header/schema.mjs +1 -11
  433. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -262
  434. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -182
  435. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -235
  436. package/dist/components/biz/business/profile/profile-main/empty-state.mjs +1 -43
  437. package/dist/components/biz/business/profile/profile-main/material.mjs +1 -18
  438. package/dist/components/biz/business/profile/profile-main/schema.mjs +1 -11
  439. package/dist/components/biz/business/profile/profile-main/server.mjs +1 -13
  440. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -275
  441. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -747
  442. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/server.mjs +1 -13
  443. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -178
  444. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -259
  445. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/server.mjs +1 -13
  446. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -258
  447. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/server.mjs +1 -13
  448. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -149
  449. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/server.mjs +1 -13
  450. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -266
  451. package/dist/components/biz/business/profile/profile-main/variants.mjs +1 -40
  452. package/dist/components/biz/business/profile/tracking.mjs +1 -19
  453. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/defaults/default-props.mjs +1 -15
  454. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/index.mjs +1 -9
  455. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/runtime/client.mjs +1 -168
  456. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/runtime/recommended-users-skeleton.mjs +1 -119
  457. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/component.mjs +1 -14
  458. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/data.schema.mjs +1 -9
  459. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/event.schema.mjs +1 -17
  460. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/index.mjs +1 -17
  461. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/props.schema.mjs +1 -54
  462. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/style.schema.mjs +1 -7
  463. package/dist/components/biz/business/search-bar/variants/basic-search-bar/defaults/default-props.mjs +1 -15
  464. package/dist/components/biz/business/search-bar/variants/basic-search-bar/index.mjs +1 -9
  465. package/dist/components/biz/business/search-bar/variants/basic-search-bar/runtime/client.mjs +1 -54
  466. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/component.mjs +1 -14
  467. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/data.schema.mjs +1 -9
  468. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/event.schema.mjs +1 -5
  469. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/index.mjs +1 -17
  470. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/props.schema.mjs +1 -117
  471. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/style.schema.mjs +1 -7
  472. package/dist/components/biz/business/search-bar/variants/detail-search-bar/defaults/default-props.mjs +1 -22
  473. package/dist/components/biz/business/search-bar/variants/detail-search-bar/index.mjs +1 -9
  474. package/dist/components/biz/business/search-bar/variants/detail-search-bar/runtime/client.mjs +1 -53
  475. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/component.mjs +1 -14
  476. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/data.schema.mjs +1 -9
  477. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/event.schema.mjs +1 -5
  478. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/index.mjs +1 -17
  479. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/props.schema.mjs +1 -117
  480. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/style.schema.mjs +1 -7
  481. package/dist/components/biz/business/search-bar/variants/filter-search-bar/defaults/default-props.mjs +1 -15
  482. package/dist/components/biz/business/search-bar/variants/filter-search-bar/index.mjs +1 -9
  483. package/dist/components/biz/business/search-bar/variants/filter-search-bar/runtime/client.mjs +1 -52
  484. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/component.mjs +1 -14
  485. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/data.schema.mjs +1 -9
  486. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/event.schema.mjs +1 -25
  487. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/index.mjs +1 -17
  488. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/props.schema.mjs +1 -128
  489. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/style.schema.mjs +1 -7
  490. package/dist/components/biz/business/search-bar/variants/tag-search-bar/defaults/default-props.mjs +1 -15
  491. package/dist/components/biz/business/search-bar/variants/tag-search-bar/index.mjs +1 -12
  492. package/dist/components/biz/business/search-bar/variants/tag-search-bar/runtime/client.mjs +1 -58
  493. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/component.mjs +1 -14
  494. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/data.schema.mjs +1 -9
  495. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/event.schema.mjs +1 -38
  496. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/index.mjs +1 -17
  497. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/props.schema.mjs +1 -144
  498. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/style.schema.mjs +1 -7
  499. package/dist/components/biz/business/search-history/client.mjs +1 -182
  500. package/dist/components/biz/business/search-history/material.mjs +1 -18
  501. package/dist/components/biz/business/search-history/schema.mjs +1 -16
  502. package/dist/components/biz/business/search-history/server.mjs +1 -17
  503. package/dist/components/biz/business/search-input/client.mjs +1 -115
  504. package/dist/components/biz/business/search-input/material.mjs +1 -18
  505. package/dist/components/biz/business/search-input/schema.mjs +1 -11
  506. package/dist/components/biz/business/search-input/server.mjs +1 -17
  507. package/dist/components/biz/business/shortcut-grid/client.mjs +1 -86
  508. package/dist/components/biz/business/shortcut-grid/material.mjs +1 -18
  509. package/dist/components/biz/business/shortcut-grid/schema.mjs +1 -65
  510. package/dist/components/biz/business/shortcut-grid/server.mjs +1 -17
  511. package/dist/components/biz/business/tab-bar/client.mjs +1 -157
  512. package/dist/components/biz/business/tab-bar/material.mjs +1 -21
  513. package/dist/components/biz/business/tab-bar/schema.mjs +1 -11
  514. package/dist/components/biz/business/tab-bar/server.mjs +1 -17
  515. package/dist/components/biz/business/text-recommend/client.mjs +1 -104
  516. package/dist/components/biz/business/text-recommend/material.mjs +1 -18
  517. package/dist/components/biz/business/text-recommend/schema.mjs +1 -25
  518. package/dist/components/biz/business/text-recommend/server.mjs +1 -18
  519. package/dist/components/biz/example/button/client.mjs +1 -43
  520. package/dist/components/biz/example/button/material.mjs +1 -18
  521. package/dist/components/biz/example/button/schema.mjs +1 -44
  522. package/dist/components/biz/example/button/server.mjs +1 -32
  523. package/dist/components/biz/example/button/variants.mjs +1 -22
  524. package/dist/components/biz/renderer/renderer.mjs +1 -73
  525. package/dist/components/biz/utils/constants/card-spec.mjs +1 -48
  526. package/dist/components/biz/utils/helpers/get-channel-list.mjs +1 -14
  527. package/dist/components/biz/utils/helpers/url.mjs +1 -16
  528. package/dist/components/biz/utils/schema/data.mjs +1 -22
  529. package/dist/components/biz/utils/styles/helpers.mjs +1 -84
  530. package/dist/components/biz/utils/styles/schema.mjs +1 -306
  531. package/dist/components/biz/utils/transformers/card-grid.mjs +1 -67
  532. package/dist/components/biz/utils/transformers/data.mjs +1 -171
  533. package/dist/components/common/analytics-init/analytics-init.mjs +1 -75
  534. package/dist/components/common/analytics-init/page-lifecycle-tracker.mjs +1 -248
  535. package/dist/components/common/analytics-init/sensor-init.mjs +1 -126
  536. package/dist/components/common/at-element/index.mjs +1 -47
  537. package/dist/components/common/background-preview-modal/background-preview-modal.mjs +1 -73
  538. package/dist/components/common/blocked-dialog/blocked-dialog.mjs +1 -54
  539. package/dist/components/common/cards/mini-three-card.mjs +1 -55
  540. package/dist/components/common/cards/style.module.mjs +24 -12
  541. package/dist/components/common/collection-popup/create-collection-sheet.mjs +1 -271
  542. package/dist/components/common/collection-popup/index.mjs +1 -293
  543. package/dist/components/common/debug-locale-switcher/index.mjs +1 -59
  544. package/dist/components/common/delete-confirm-dialog/delete-confirm-dialog.mjs +1 -66
  545. package/dist/components/common/empty/index.mjs +1 -51
  546. package/dist/components/common/follow-button/index.mjs +1 -133
  547. package/dist/components/common/follow-button/unfollow-confirm-dialog.mjs +1 -23
  548. package/dist/components/common/funhub-provider/funhub-provider.mjs +1 -50
  549. package/dist/components/common/header-nav/client.mjs +1 -51
  550. package/dist/components/common/icons/add.mjs +1 -21
  551. package/dist/components/common/icons/comment.mjs +1 -30
  552. package/dist/components/common/icons/delete.mjs +1 -32
  553. package/dist/components/common/icons/left-arrow.mjs +1 -15
  554. package/dist/components/common/icons/more.mjs +1 -30
  555. package/dist/components/common/icons/right-arrow.mjs +1 -19
  556. package/dist/components/common/icons/setting.mjs +1 -27
  557. package/dist/components/common/icons/share.mjs +1 -20
  558. package/dist/components/common/icons/video.mjs +1 -22
  559. package/dist/components/common/image-crop-modal/image-crop-modal.mjs +2 -128
  560. package/dist/components/common/info-card/card-header.mjs +1 -71
  561. package/dist/components/common/info-card/card-text.mjs +1 -49
  562. package/dist/components/common/interaction-animations.module.mjs +84 -14
  563. package/dist/components/common/intl-provider/intl-provider.mjs +1 -21
  564. package/dist/components/common/keep-scroll-position/index.mjs +1 -39
  565. package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -139
  566. package/dist/components/common/list/collection-list/collection-list.mjs +1 -27
  567. package/dist/components/common/list/collection-list/collection-select-icon.mjs +1 -53
  568. package/dist/components/common/list/post-list/post-list-item.mjs +1 -54
  569. package/dist/components/common/list/post-list/post-list.mjs +1 -143
  570. package/dist/components/common/list/user-activity-list/user-activity-list-actions.mjs +1 -269
  571. package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -469
  572. package/dist/components/common/list/user-activity-list/user-activity-list.mjs +1 -143
  573. package/dist/components/common/list/video-list/video-list-item.mjs +1 -100
  574. package/dist/components/common/list/video-list/video-list.mjs +1 -152
  575. package/dist/components/common/list/waterfall-recommend/recommend-badge-style.mjs +1 -18
  576. package/dist/components/common/list/waterfall-recommend/waterfall-recommend-display.mjs +1 -26
  577. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -183
  578. package/dist/components/common/locale-sync/locale-sync.mjs +1 -62
  579. package/dist/components/common/login-dialog/login-dialog.mjs +1 -46
  580. package/dist/components/common/media-preview/index.mjs +1 -162
  581. package/dist/components/common/media-preview/video-play.mjs +1 -237
  582. package/dist/components/common/page-loading/index.mjs +1 -20
  583. package/dist/components/common/page-skeleton/page-skeleton.mjs +1 -7
  584. package/dist/components/common/photo-grid/common-photo-grid.mjs +1 -321
  585. package/dist/components/common/photo-grid/index.mjs +1 -226
  586. package/dist/components/common/photo-preview/common-photo-preview.mjs +1 -97
  587. package/dist/components/common/photo-preview/decrypt-loading.mjs +2 -66
  588. package/dist/components/common/photo-preview/index.mjs +1 -64
  589. package/dist/components/common/photo-preview/style.mjs +19 -7
  590. package/dist/components/common/picker/gender-picker/gender-picker.mjs +1 -66
  591. package/dist/components/common/picker/picker-drawer/picker-drawer.mjs +1 -78
  592. package/dist/components/common/popup-video/index.mjs +1 -98
  593. package/dist/components/common/popup-video/popup-video.module.mjs +16 -7
  594. package/dist/components/common/series-episodes/index.mjs +1 -826
  595. package/dist/components/common/share-popup/share-content.mjs +1 -155
  596. package/dist/components/common/share-popup/share-drawer.mjs +1 -100
  597. package/dist/components/common/share-popup/share-popup.mjs +1 -326
  598. package/dist/components/common/skeleton/post-list-item-skeleton.mjs +1 -99
  599. package/dist/components/common/skeleton/user-activity-list-item-skeleton.mjs +1 -146
  600. package/dist/components/common/skeleton/video-list-item-skeleton.mjs +1 -110
  601. package/dist/components/common/tab-bar/index.mjs +1 -150
  602. package/dist/components/common/theme-sync/index.mjs +1 -22
  603. package/dist/components/common/top-nav-bar/client.mjs +1 -70
  604. package/dist/components/common/top-nav-bar/fullscreen.mjs +1 -27
  605. package/dist/components/common/top-nav-bar/index.mjs +1 -29
  606. package/dist/components/common/top-nav-bar/normal.mjs +1 -20
  607. package/dist/components/common/user-info-initializer/index.mjs +1 -37
  608. package/dist/components/common/video-player/create-video.mjs +2 -27
  609. package/dist/components/common/video-player/index.mjs +5 -700
  610. package/dist/components/common/video-player/playing-videos.mjs +1 -73
  611. package/dist/components/common/video-player/preroll-skip-button-content.mjs +1 -20
  612. package/dist/components/common/video-player/process-m3u8-cache.mjs +1 -281
  613. package/dist/components/common/video-player/style.module.mjs +260 -7
  614. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -155
  615. package/dist/components/common/video-player/video-player-ref-context.mjs +1 -18
  616. package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -167
  617. package/dist/components/common/video-player/video-preroll-ad.mjs +1 -187
  618. package/dist/components/common/wait-loading.mjs +1 -119
  619. package/dist/components/pages/(follow)/_components/follow-button/index.mjs +1 -80
  620. package/dist/components/pages/(follow)/_components/header-nav/index.mjs +1 -13
  621. package/dist/components/pages/(follow)/_components/interaction-tabs/index.mjs +1 -44
  622. package/dist/components/pages/(follow)/_components/user-list/index.mjs +1 -139
  623. package/dist/components/pages/(follow)/_components/user-list/user-list-item.mjs +1 -46
  624. package/dist/components/pages/(follow)/fans/index.mjs +1 -10
  625. package/dist/components/pages/(follow)/fans/page.mjs +1 -95
  626. package/dist/components/pages/(follow)/followed/index.mjs +1 -10
  627. package/dist/components/pages/(follow)/followed/page.mjs +1 -95
  628. package/dist/components/pages/collection-add/index.mjs +1 -10
  629. package/dist/components/pages/collection-add/page.mjs +1 -164
  630. package/dist/components/pages/collection-create/form.mjs +1 -164
  631. package/dist/components/pages/collection-create/index.mjs +1 -10
  632. package/dist/components/pages/collection-create/page.mjs +1 -28
  633. package/dist/components/pages/collection-detail/_components/collection-detail-card.mjs +1 -183
  634. package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +1 -135
  635. package/dist/components/pages/collection-detail/detail.mjs +1 -539
  636. package/dist/components/pages/collection-detail/index.mjs +1 -10
  637. package/dist/components/pages/collection-detail/page.mjs +1 -18
  638. package/dist/components/pages/edit/index.mjs +1 -10
  639. package/dist/components/pages/edit/page.mjs +1 -683
  640. package/dist/components/pages/feed-series/feed-series-client.mjs +1 -383
  641. package/dist/components/pages/feed-series/page.mjs +1 -97
  642. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -271
  643. package/dist/components/pages/feedback/index.mjs +1 -10
  644. package/dist/components/pages/feedback/page.mjs +1 -10
  645. package/dist/components/pages/fullscreen-feed/index.mjs +1 -10
  646. package/dist/components/pages/fullscreen-feed/page.mjs +1 -105
  647. package/dist/components/pages/home/channel-matcher.mjs +1 -30
  648. package/dist/components/pages/home/client.mjs +1 -149
  649. package/dist/components/pages/home/index.mjs +1 -59
  650. package/dist/components/pages/login/agreement-dialog.mjs +1 -104
  651. package/dist/components/pages/login/auth-guard.mjs +1 -37
  652. package/dist/components/pages/login/auth-page-styles.mjs +2 -17
  653. package/dist/components/pages/login/forgot.mjs +1 -136
  654. package/dist/components/pages/login/index.mjs +1 -107
  655. package/dist/components/pages/login/login-client.mjs +1 -233
  656. package/dist/components/pages/login/password.mjs +1 -186
  657. package/dist/components/pages/login/register.mjs +1 -204
  658. package/dist/components/pages/login/reset-password.mjs +1 -193
  659. package/dist/components/pages/login/tracking.mjs +1 -32
  660. package/dist/components/pages/login/verify.mjs +1 -243
  661. package/dist/components/pages/post-detail/page.mjs +1 -28
  662. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -516
  663. package/dist/components/pages/profile/index.mjs +1 -10
  664. package/dist/components/pages/profile/page.mjs +1 -28
  665. package/dist/components/pages/publish/components/collection-card.mjs +1 -49
  666. package/dist/components/pages/publish/components/collection-popup.mjs +1 -81
  667. package/dist/components/pages/publish/components/collection.mjs +1 -97
  668. package/dist/components/pages/publish/components/cover-item.mjs +1 -46
  669. package/dist/components/pages/publish/components/editor.mjs +1 -208
  670. package/dist/components/pages/publish/components/header.mjs +1 -31
  671. package/dist/components/pages/publish/components/material-grid.mjs +1 -52
  672. package/dist/components/pages/publish/components/material-item.mjs +1 -68
  673. package/dist/components/pages/publish/components/toolbar.mjs +1 -39
  674. package/dist/components/pages/publish/components/upload-progress.mjs +1 -53
  675. package/dist/components/pages/publish/components/video-item.mjs +1 -36
  676. package/dist/components/pages/publish/constants.mjs +1 -8
  677. package/dist/components/pages/publish/hooks/use-file-upload.mjs +1 -162
  678. package/dist/components/pages/publish/page-client.mjs +1 -345
  679. package/dist/components/pages/publish/page.mjs +1 -11
  680. package/dist/components/pages/publish/utils/file-upload.mjs +1 -155
  681. package/dist/components/pages/publish/utils/publish-utils.mjs +1 -11
  682. package/dist/components/pages/search/hot-recommend.mjs +1 -192
  683. package/dist/components/pages/search/hot-search.mjs +1 -70
  684. package/dist/components/pages/search/index.mjs +1 -17
  685. package/dist/components/pages/search/page-client.mjs +1 -211
  686. package/dist/components/pages/search/search-result/index.mjs +1 -31
  687. package/dist/components/pages/search/search-result/search-all.mjs +1 -167
  688. package/dist/components/pages/search/search-result/search-user.mjs +1 -306
  689. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -134
  690. package/dist/components/pages/search/search-result/shared.mjs +1 -114
  691. package/dist/components/pages/search/style.module.mjs +85 -12
  692. package/dist/components/pages/search/top-header.mjs +1 -131
  693. package/dist/components/pages/search/tracking.mjs +1 -51
  694. package/dist/components/pages/search-result/page-client.mjs +1 -130
  695. package/dist/components/pages/search-result/search-all.mjs +1 -180
  696. package/dist/components/pages/search-result/search-empty.mjs +1 -52
  697. package/dist/components/pages/search-result/search-tab.mjs +1 -95
  698. package/dist/components/pages/search-result/search-user.mjs +1 -315
  699. package/dist/components/pages/search-result/search-video-info.mjs +1 -195
  700. package/dist/components/pages/search-result/shared.mjs +1 -46
  701. package/dist/components/pages/search-result/top-header.mjs +1 -105
  702. package/dist/components/pages/search-result/tracking.mjs +1 -39
  703. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +1 -381
  704. package/dist/components/pages/settings/_components/settings.mjs +1 -192
  705. package/dist/components/pages/settings/index.mjs +1 -10
  706. package/dist/components/pages/settings/page.mjs +1 -13
  707. package/dist/components/pages/user-follow/_components/follow-no-login.mjs +1 -34
  708. package/dist/components/pages/user-follow/_components/follow-top-header.mjs +1 -25
  709. package/dist/components/pages/user-follow/_components/post-tab.mjs +1 -96
  710. package/dist/components/pages/user-follow/index.mjs +1 -10
  711. package/dist/components/pages/user-follow/page.mjs +1 -106
  712. package/dist/components/pages/user-follow/skeleton.mjs +1 -62
  713. package/dist/components/pages/video-detail/page.mjs +1 -47
  714. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -395
  715. package/dist/components/pages/video-list/index.mjs +1 -61
  716. package/dist/components/pages/video-list/types.mjs +1 -16
  717. package/dist/components/pages/video-list/video-list-client.mjs +1 -144
  718. package/dist/components/pages/video-list/video-list-recommend-item.mjs +1 -94
  719. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -91
  720. package/dist/components/ui/accordion.mjs +1 -62
  721. package/dist/components/ui/alert-dialog.mjs +1 -114
  722. package/dist/components/ui/alert.mjs +1 -50
  723. package/dist/components/ui/aspect-ratio.mjs +1 -17
  724. package/dist/components/ui/avatar.mjs +1 -107
  725. package/dist/components/ui/badge.d.mts +1 -1
  726. package/dist/components/ui/badge.mjs +1 -38
  727. package/dist/components/ui/box.mjs +1 -17
  728. package/dist/components/ui/breadcrumb.mjs +1 -84
  729. package/dist/components/ui/button-group.mjs +1 -49
  730. package/dist/components/ui/button.d.mts +1 -1
  731. package/dist/components/ui/button.mjs +1 -50
  732. package/dist/components/ui/card.mjs +1 -65
  733. package/dist/components/ui/carousel.mjs +1 -142
  734. package/dist/components/ui/checkbox.mjs +1 -25
  735. package/dist/components/ui/collapsible.mjs +1 -31
  736. package/dist/components/ui/combobox.mjs +1 -185
  737. package/dist/components/ui/context-menu.mjs +1 -150
  738. package/dist/components/ui/dialog.mjs +1 -109
  739. package/dist/components/ui/drawer.mjs +1 -91
  740. package/dist/components/ui/dropdown-menu.mjs +1 -154
  741. package/dist/components/ui/empty-icons.mjs +7 -96
  742. package/dist/components/ui/empty.mjs +1 -95
  743. package/dist/components/ui/field.mjs +1 -131
  744. package/dist/components/ui/hover-card.mjs +1 -43
  745. package/dist/components/ui/image.mjs +1 -257
  746. package/dist/components/ui/infinite-scroll.mjs +1 -168
  747. package/dist/components/ui/input-group.mjs +1 -90
  748. package/dist/components/ui/input.mjs +1 -19
  749. package/dist/components/ui/item.mjs +1 -137
  750. package/dist/components/ui/kbd.mjs +1 -24
  751. package/dist/components/ui/label.mjs +1 -18
  752. package/dist/components/ui/legacy/badge.mjs +1 -80
  753. package/dist/components/ui/legacy/button.mjs +1 -55
  754. package/dist/components/ui/legacy/input.mjs +1 -22
  755. package/dist/components/ui/legacy/popover.mjs +1 -69
  756. package/dist/components/ui/link.mjs +1 -52
  757. package/dist/components/ui/list.mjs +5 -221
  758. package/dist/components/ui/loading.mjs +1 -44
  759. package/dist/components/ui/mask.mjs +1 -17
  760. package/dist/components/ui/menubar.mjs +1 -154
  761. package/dist/components/ui/native-select.mjs +1 -43
  762. package/dist/components/ui/pagination.mjs +1 -90
  763. package/dist/components/ui/popover.mjs +1 -73
  764. package/dist/components/ui/popup.mjs +1 -44
  765. package/dist/components/ui/progress.mjs +1 -53
  766. package/dist/components/ui/radio-group.mjs +1 -34
  767. package/dist/components/ui/rate.mjs +1 -69
  768. package/dist/components/ui/scroll-area.mjs +1 -43
  769. package/dist/components/ui/select.mjs +1 -113
  770. package/dist/components/ui/separator.mjs +1 -20
  771. package/dist/components/ui/sheet.mjs +1 -109
  772. package/dist/components/ui/skeleton.mjs +1 -16
  773. package/dist/components/ui/slider.mjs +1 -46
  774. package/dist/components/ui/sonner.mjs +1 -34
  775. package/dist/components/ui/spinner.mjs +1 -18
  776. package/dist/components/ui/switch.mjs +1 -65
  777. package/dist/components/ui/table.mjs +1 -78
  778. package/dist/components/ui/tabs.mjs +1 -54
  779. package/dist/components/ui/text.mjs +1 -20
  780. package/dist/components/ui/textarea.mjs +1 -16
  781. package/dist/components/ui/time.mjs +1 -91
  782. package/dist/components/ui/toggle-group.mjs +1 -59
  783. package/dist/components/ui/toggle.mjs +1 -41
  784. package/dist/components/ui/tooltip.mjs +1 -49
  785. package/dist/components/ui/wheel-picker.mjs +1 -28
  786. package/dist/constants/event-key.mjs +1 -18
  787. package/dist/constants/query-key.mjs +1 -32
  788. package/dist/constants/revalidate.mjs +1 -9
  789. package/dist/constants/site.mjs +1 -11
  790. package/dist/constants/url-prefix.mjs +1 -11
  791. package/dist/hooks/image-text-recommend.mjs +1 -71
  792. package/dist/hooks/query/hydration-boundary.mjs +1 -34
  793. package/dist/hooks/query/use-query.mjs +1 -114
  794. package/dist/hooks/use-auth.mjs +1 -198
  795. package/dist/hooks/use-browse-report.mjs +1 -489
  796. package/dist/hooks/use-card-decoration.mjs +1 -96
  797. package/dist/hooks/use-content-operate.mjs +1 -526
  798. package/dist/hooks/use-first-row-height.mjs +1 -105
  799. package/dist/hooks/use-follow.mjs +1 -69
  800. package/dist/hooks/use-fullscreen-gestures.mjs +1 -144
  801. package/dist/hooks/use-interaction-animation.mjs +1 -26
  802. package/dist/hooks/use-is-client.mjs +1 -20
  803. package/dist/hooks/use-keyboard-open.mjs +1 -56
  804. package/dist/hooks/use-like-dislike.mjs +1 -40
  805. package/dist/hooks/use-min-duration-loading.mjs +1 -63
  806. package/dist/hooks/use-search-history.mjs +1 -53
  807. package/dist/hooks/use-sticky.mjs +1 -50
  808. package/dist/hooks.mjs +1 -17
  809. package/dist/i18n/locales/en.mjs +3 -836
  810. package/dist/i18n/locales/zh-CN.mjs +3 -836
  811. package/dist/i18n/messages.mjs +1 -20
  812. package/dist/i18n/translator.mjs +1 -38
  813. package/dist/i18n.mjs +1 -165
  814. package/dist/materials.mjs +1 -73
  815. package/dist/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +1 -17
  816. package/dist/pages.mjs +1 -23
  817. package/dist/seo/build-metadata.mjs +1 -163
  818. package/dist/seo/config/index.mjs +1 -22
  819. package/dist/seo/config/page.mjs +6 -301
  820. package/dist/seo/config/site.mjs +1 -25
  821. package/dist/seo/constants.mjs +1 -31
  822. package/dist/seo/helpers.mjs +1 -120
  823. package/dist/seo/resource-hints.mjs +1 -60
  824. package/dist/seo/robots.mjs +1 -36
  825. package/dist/seo/sitemap.mjs +1 -44
  826. package/dist/seo/structured-data/article.mjs +1 -51
  827. package/dist/seo/structured-data/common.mjs +1 -60
  828. package/dist/seo/structured-data/video.mjs +1 -41
  829. package/dist/seo/viewport.mjs +1 -31
  830. package/dist/seo.mjs +1 -15
  831. package/dist/service/advertisement.mjs +1 -88
  832. package/dist/service/generated/client.mjs +1 -1281
  833. package/dist/service/generated/tanstack.mjs +1 -1179
  834. package/dist/service/register-by-verify-email-code.mjs +1 -17
  835. package/dist/service.mjs +1 -6
  836. package/dist/store/create-store.mjs +1 -25
  837. package/dist/store/modules/app-config-store.mjs +1 -28
  838. package/dist/store/modules/blind-spot-ad-store.mjs +1 -95
  839. package/dist/store/modules/blocked-modal-store.mjs +1 -30
  840. package/dist/store/modules/follow-ids-store.mjs +1 -12
  841. package/dist/store/modules/login-modal-store.mjs +1 -155
  842. package/dist/store/modules/media-preview-store.mjs +1 -54
  843. package/dist/store/modules/publish-store.mjs +1 -31
  844. package/dist/store/modules/use-demo-store.mjs +1 -17
  845. package/dist/store/modules/user-store.mjs +1 -133
  846. package/dist/store/modules/video-player-ref-store.mjs +1 -13
  847. package/dist/store.mjs +1 -12
  848. package/dist/theme-tokens.mjs +1 -82
  849. package/dist/types/safe-at-user.mjs +1 -15
  850. package/dist/types/safe-comment.mjs +1 -30
  851. package/dist/types/safe-grid.mjs +1 -36
  852. package/dist/types/safe-replay.mjs +1 -43
  853. package/dist/types/share.mjs +1 -16
  854. package/dist/ui.mjs +1 -58
  855. package/dist/utils/api-collect.mjs +1 -14
  856. package/dist/utils/browser-fingerprint.mjs +1 -53
  857. package/dist/utils/channel-storage.mjs +1 -57
  858. package/dist/utils/cn.mjs +1 -15
  859. package/dist/utils/common.mjs +1 -311
  860. package/dist/utils/db.mjs +1 -80
  861. package/dist/utils/decrypt-image-client.mjs +1 -325
  862. package/dist/utils/decrypt.worker.mjs +2 -20
  863. package/dist/utils/device-id.mjs +1 -20
  864. package/dist/utils/email-validator.mjs +1 -108
  865. package/dist/utils/event-bus.mjs +1 -33
  866. package/dist/utils/follow-service.mjs +1 -87
  867. package/dist/utils/get-res-url.mjs +1 -94
  868. package/dist/utils/helper.mjs +1 -33
  869. package/dist/utils/http.mjs +1 -202
  870. package/dist/utils/image-compression.mjs +1 -59
  871. package/dist/utils/image-crop.mjs +1 -63
  872. package/dist/utils/loaders.mjs +1 -51
  873. package/dist/utils/login-modal-bridge.mjs +1 -65
  874. package/dist/utils/media.mjs +1 -128
  875. package/dist/utils/password-validator.mjs +1 -86
  876. package/dist/utils/request-user-id.mjs +1 -16
  877. package/dist/utils/s3-uploader.mjs +1 -40
  878. package/dist/utils/schema/material.mjs +1 -24
  879. package/dist/utils/schema/schema.mjs +1 -207
  880. package/dist/utils/schema/utils.mjs +1 -27
  881. package/dist/utils/share-manager.mjs +1 -183
  882. package/dist/utils/tools.mjs +1 -92
  883. package/dist/utils/tracking.mjs +1 -183
  884. package/dist/utils/uint8.mjs +1 -46
  885. package/dist/utils/upload-file.mjs +1 -429
  886. package/dist/utils/use-compatible-router.mjs +1 -84
  887. package/dist/utils.mjs +1 -27
  888. package/package.json +1 -1
  889. package/theme.css +1 -1
@@ -1,903 +1,2 @@
1
1
 
2
- 'use client';
3
-
4
- import { cn } from "../../../../../utils/cn.mjs";
5
- import { useUserStore } from "../../../../../store/modules/user-store.mjs";
6
- import { gUserGetVisitorPermissionConfig, pContentMatchAds } from "../../../../../service/generated/client.mjs";
7
- import { pContentMatchAdsKey } from "../../../../../service/generated/tanstack.mjs";
8
- import { pxToVw } from "../../../../../utils/helper.mjs";
9
- import { trackVideoEvent } from "../../../../../utils/tracking.mjs";
10
- import { Image } from "../../../../ui/image.mjs";
11
- import { Box } from "../../../../ui/box.mjs";
12
- import { Text } from "../../../../ui/text.mjs";
13
- import { useLoginModalStore } from "../../../../../store/modules/login-modal-store.mjs";
14
- import { useRequest } from "../../../../../hooks/query/use-query.mjs";
15
- import { useBrowseReport } from "../../../../../hooks/use-browse-report.mjs";
16
- import { MediaPreview, useMediaPreview } from "../../../../common/media-preview/index.mjs";
17
- import CommonPlayer from "../../../../common/video-player/index.mjs";
18
- import SvgVideoPlay from "../../../../../assets/icons/detail/video_play.mjs";
19
- import { UserActivityMediaGrid } from "../../../../common/list/user-activity-list/user-activity-list-item.mjs";
20
- import { VideoPlayerRefContext } from "../../../../common/video-player/video-player-ref-context.mjs";
21
- import { VideoBlindAdOverlay } from "../../../../common/video-player/video-blind-ad-overlay.mjs";
22
- import { VideoPrerollAd } from "../../../../common/video-player/video-preroll-ad.mjs";
23
- import { VideoPrerollAdOverlay } from "../../../../common/video-player/video-preroll-ad-overlay.mjs";
24
- import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
25
- import { jsx, jsxs } from "react/jsx-runtime";
26
- import { useTranslations } from "next-intl";
27
-
28
- //#region components/biz/business/detail/shared/video-hero.tsx
29
- const DETAIL_VIDEO_MAX_HEIGHT = 242;
30
- const DETAIL_SEARCH_BAR_HEIGHT = 0;
31
- const VIDEO_PROGRESS_SESSION_KEY = "__reportData_detail_page__";
32
- function toPositiveNumber(value) {
33
- const parsed = Number(value);
34
- if (Number.isFinite(parsed) && parsed > 0) return parsed;
35
- return 0;
36
- }
37
- function resolveVisitorLimitSeconds(permissionConfig) {
38
- if (!permissionConfig) return 0;
39
- for (const key of [
40
- "seconds",
41
- "stay_seconds",
42
- "play_seconds",
43
- "watch_seconds"
44
- ]) {
45
- const parsed = toPositiveNumber(permissionConfig[key]);
46
- if (parsed > 0) return parsed;
47
- }
48
- for (const key of [
49
- "内容",
50
- "content",
51
- "video",
52
- "视频"
53
- ]) {
54
- const item = permissionConfig[key];
55
- const parsed = toPositiveNumber(item?.rule?.seconds);
56
- if (parsed > 0) return parsed;
57
- }
58
- for (const item of Object.values(permissionConfig)) {
59
- const parsed = toPositiveNumber(item?.rule?.seconds);
60
- if (parsed > 0) return parsed;
61
- }
62
- return 0;
63
- }
64
- function DetailHero(props) {
65
- return /* @__PURE__ */ jsx(DetailHeroImpl, { ...props });
66
- }
67
- const DetailHeroImpl = memo(({ mode = "renderer", information, isVideo, episodeIndex = 0, resumeProgressSeconds = 0, className = "" }) => {
68
- const isEditor = mode === "editor";
69
- const userId = useUserStore((s) => s.userId);
70
- const imageData = useMemo(() => ({
71
- id: information.id,
72
- name: information.name,
73
- preview_images: information.preview_images,
74
- img_y: information.img_y,
75
- img_x: information.img_x
76
- }), [
77
- information.id,
78
- information.name,
79
- information.preview_images,
80
- information.img_y,
81
- information.img_x
82
- ]);
83
- const resolvedMedias = useMemo(() => {
84
- const rawMedias = information?.medias;
85
- const medias = Array.isArray(rawMedias) ? rawMedias.filter(Boolean) : [];
86
- if (medias.length > 0) return medias;
87
- return (imageData.preview_images?.length ? imageData.preview_images : [imageData.img_y || imageData.img_x || ""].filter(Boolean)).filter(Boolean).map((url) => ({
88
- media_url: url,
89
- is_video: false,
90
- cover_image: ""
91
- }));
92
- }, [
93
- imageData.img_x,
94
- imageData.img_y,
95
- imageData.preview_images,
96
- information
97
- ]);
98
- const mediaPreview = useMediaPreview();
99
- const mediaPreviewItems = useMemo(() => {
100
- return resolvedMedias.filter(Boolean).map((media) => {
101
- const type = media?.is_video ? "video" : "image";
102
- const src = String(media?.media_url || "");
103
- const cover = media?.cover_image || information.img_y || information.img_x;
104
- return {
105
- src,
106
- type,
107
- ...cover ? { cover: String(cover) } : {}
108
- };
109
- }).filter((item) => Boolean(item.src));
110
- }, [
111
- information.img_x,
112
- information.img_y,
113
- resolvedMedias
114
- ]);
115
- const handleMediaPreviewOpen = useCallback((startIndex) => {
116
- if (isEditor || !mediaPreviewItems.length) return;
117
- mediaPreview.open(mediaPreviewItems, startIndex);
118
- }, [
119
- isEditor,
120
- mediaPreview,
121
- mediaPreviewItems
122
- ]);
123
- const prerollRequestBody = useMemo(() => {
124
- return {
125
- user_id: userId,
126
- ad_type: "preroll"
127
- };
128
- }, [userId]);
129
- const prerollEpisodeId = useMemo(() => {
130
- const safeEpisodeIndex = Math.max(0, Number(episodeIndex) || 0);
131
- const episodeId = information?.links?.[safeEpisodeIndex]?.id;
132
- if (episodeId) return String(episodeId);
133
- return `ep-${safeEpisodeIndex + 1}`;
134
- }, [episodeIndex, information?.links]);
135
- const { data: prerollMatchRes, isLoading: isPrerollLoading, isFetched: isPrerollFetched } = useRequest(useMemo(() => {
136
- return [
137
- "detail-preroll-ad",
138
- information.id,
139
- prerollEpisodeId,
140
- ...pContentMatchAdsKey(prerollRequestBody)
141
- ];
142
- }, [
143
- information.id,
144
- prerollEpisodeId,
145
- prerollRequestBody
146
- ]), () => pContentMatchAds(prerollRequestBody), {
147
- enabled: !isEditor && isVideo,
148
- staleTime: 0,
149
- refetchOnMount: "always",
150
- refetchOnWindowFocus: false
151
- });
152
- const prerollState = useMemo(() => {
153
- return {
154
- data: prerollMatchRes?.data ?? null,
155
- isLoading: isPrerollLoading,
156
- isFetched: isPrerollFetched
157
- };
158
- }, [
159
- isPrerollFetched,
160
- isPrerollLoading,
161
- prerollMatchRes?.data
162
- ]);
163
- if (isEditor) return /* @__PURE__ */ jsx("img", {
164
- src: "/static/components-thumb/video_player.png",
165
- alt: "video-preview",
166
- className: "w-full block"
167
- });
168
- if (isVideo) return /* @__PURE__ */ jsx(StableDetailPlayerBox, {
169
- information,
170
- episodeIndex,
171
- resumeProgressSeconds,
172
- isEditor,
173
- prerollState
174
- });
175
- return /* @__PURE__ */ jsxs("div", {
176
- className: cn("w-full", className),
177
- children: [/* @__PURE__ */ jsxs(Box, {
178
- className: "mt-3 px-[12px] space-y-1",
179
- children: [/* @__PURE__ */ jsx(Text, {
180
- as: "p",
181
- className: "break-all",
182
- dangerouslySetInnerHTML: { __html: information.description }
183
- }), /* @__PURE__ */ jsx(UserActivityMediaGrid, {
184
- medias: resolvedMedias,
185
- onItemClick: handleMediaPreviewOpen
186
- })]
187
- }), /* @__PURE__ */ jsx(MediaPreview, {})]
188
- });
189
- });
190
- DetailHero.displayName = "DetailHero";
191
- /**
192
- * 稳定的播放器组件包装器,防止因为 information 对象引用变化导致播放器重新创建。
193
- */
194
- const StableDetailPlayerBox = memo(({ information, episodeIndex, resumeProgressSeconds, isEditor, prerollState }) => {
195
- const stableProps = useMemo(() => ({
196
- id: information.id,
197
- mid: information.mid,
198
- img_width: information.img_width,
199
- img_height: information.img_height,
200
- img_y: information.img_y,
201
- img_x: information.img_x,
202
- preview_images: information.preview_images
203
- }), [
204
- information.id,
205
- information.mid,
206
- information.img_width,
207
- information.img_height,
208
- information.img_y,
209
- information.img_x,
210
- information.preview_images
211
- ]);
212
- return /* @__PURE__ */ jsx(DetailPlayerBox, {
213
- information: {
214
- ...information,
215
- ...stableProps
216
- },
217
- episodeIndex,
218
- resumeProgressSeconds,
219
- isEditor,
220
- prerollState
221
- });
222
- }, (prevProps, nextProps) => {
223
- const prev = prevProps.information;
224
- const next = nextProps.information;
225
- return prev.id === next.id && prev.mid === next.mid && prev.img_width === next.img_width && prev.img_height === next.img_height && prev.img_y === next.img_y && prev.img_x === next.img_x && prevProps.resumeProgressSeconds === nextProps.resumeProgressSeconds && prevProps.episodeIndex === nextProps.episodeIndex && prevProps.isEditor === nextProps.isEditor && prevProps.prerollState.data === nextProps.prerollState.data && prevProps.prerollState.isLoading === nextProps.prerollState.isLoading && prevProps.prerollState.isFetched === nextProps.prerollState.isFetched;
226
- });
227
- StableDetailPlayerBox.displayName = "StableDetailPlayerBox";
228
- /**
229
- * 详情页视频播放器容器,固定吸顶展示。
230
- */
231
- function DetailPlayerBox({ information, episodeIndex, resumeProgressSeconds, isEditor, prerollState }) {
232
- const playerRef = useRef(null);
233
- const prerollRef = useRef(null);
234
- const resumeMainPlayTimerRef = useRef(null);
235
- const t = useTranslations("components.biz.business.detail");
236
- const isLogin = useUserStore((state) => state.isLogin);
237
- const userId = useUserStore((state) => state.userId);
238
- const openLoginModal = useLoginModalStore((state) => state.open);
239
- const isLoginModalOpen = useLoginModalStore((state) => state.isOpen);
240
- const currentTimeRef = useRef(0);
241
- const videoDurationRef = useRef(0);
242
- const hasTriggeredVisitorLimitRef = useRef(false);
243
- const shouldBlockPlaybackUntilLoginRef = useRef(false);
244
- const lastLoggedRemainingSecondsRef = useRef(null);
245
- const hasLoggedVisitorConfigRef = useRef(false);
246
- const hasLoggedSkipReasonRef = useRef(false);
247
- const wasLoginModalOpenRef = useRef(false);
248
- const episodeNumber = Math.max(0, Number(episodeIndex) || 0);
249
- const browseEpisode = episodeNumber + 1;
250
- const [isMainPlayerReady, setIsMainPlayerReady] = useState(false);
251
- const [activeLayer, setActiveLayer] = useState("main");
252
- const [prerollStartMode, setPrerollStartMode] = useState("auto");
253
- const [prerollCompleted, setPrerollCompleted] = useState(false);
254
- const [hasMainEnded, setHasMainEnded] = useState(false);
255
- const [requiresMainUserGesture, setRequiresMainUserGesture] = useState(false);
256
- const [prerollSessionKey, setPrerollSessionKey] = useState(0);
257
- const browseContentId = useMemo(() => {
258
- return information?.id;
259
- }, [information?.id]);
260
- const playerData = useMemo(() => ({
261
- id: information.id,
262
- mid: information.mid,
263
- img_width: information.img_width,
264
- img_height: information.img_height,
265
- img_y: information.img_y,
266
- img_x: information.img_x,
267
- preview_images: information.preview_images,
268
- links: information.links
269
- }), [
270
- information.id,
271
- information.mid,
272
- information.img_width,
273
- information.img_height,
274
- information.img_y,
275
- information.img_x,
276
- information.preview_images,
277
- information.links
278
- ]);
279
- const parentId = useMemo(() => {
280
- return playerData.mid || playerData.id;
281
- }, [playerData.id, playerData.mid]);
282
- const currentEpisodeId = useMemo(() => {
283
- const episodeId = playerData.links?.[episodeNumber]?.id;
284
- if (episodeId) return String(episodeId);
285
- return `ep-${episodeNumber + 1}`;
286
- }, [episodeNumber, playerData.links]);
287
- const localProgressStorageKey = useMemo(() => {
288
- return `${VIDEO_PROGRESS_SESSION_KEY}${playerData.id}:${currentEpisodeId}`;
289
- }, [currentEpisodeId, playerData.id]);
290
- const prerollData = prerollState.data;
291
- const isPrerollLoading = prerollState.isLoading;
292
- const isPrerollFetched = prerollState.isFetched;
293
- const prerollMaterial = prerollData?.materials?.[0];
294
- const prerollHit = prerollData?.hit === true;
295
- const hasPrerollVideo = Boolean(String(prerollMaterial?.advertise_video || "").trim());
296
- const shouldUsePreroll = prerollHit && Boolean(prerollMaterial) && hasPrerollVideo;
297
- const { data: visitorPermissionRes } = useRequest(useMemo(() => {
298
- return ["detail-visitor-permission-config", userId || "guest"];
299
- }, [userId]), () => gUserGetVisitorPermissionConfig({ user_id: userId || "" }), {
300
- enabled: !isEditor,
301
- staleTime: 60 * 1e3,
302
- refetchOnWindowFocus: false
303
- });
304
- const visitorLimitSeconds = useMemo(() => {
305
- return resolveVisitorLimitSeconds(visitorPermissionRes?.data?.permission_config);
306
- }, [visitorPermissionRes?.data?.permission_config]);
307
- useEffect(() => {
308
- if (hasLoggedVisitorConfigRef.current) return;
309
- if (!visitorPermissionRes) return;
310
- hasLoggedVisitorConfigRef.current = true;
311
- console.log("[visitor-limit] permission config:", visitorPermissionRes?.data?.permission_config || null);
312
- console.log(`[visitor-limit] resolved limit: ${visitorLimitSeconds}s`);
313
- }, [visitorLimitSeconds, visitorPermissionRes]);
314
- const sessionResumeSeconds = useMemo(() => {
315
- if (isEditor || typeof window === "undefined") return 0;
316
- try {
317
- const data = sessionStorage.getItem(localProgressStorageKey);
318
- if (!data) return 0;
319
- const parsed = JSON.parse(data);
320
- const currentTime = Number(parsed.currentTime || 0);
321
- const duration = Number(parsed.duration || 0);
322
- if (!Number.isFinite(currentTime) || !Number.isFinite(duration)) return 0;
323
- if (currentTime > 0 && duration > 0) return currentTime;
324
- } catch (error) {
325
- console.error("读取 sessionStorage 数据失败:", error);
326
- }
327
- return 0;
328
- }, [isEditor, localProgressStorageKey]);
329
- const apiResumeSeconds = useMemo(() => {
330
- const seconds = Number(resumeProgressSeconds || 0);
331
- return Number.isFinite(seconds) && seconds > 0 ? seconds : 0;
332
- }, [resumeProgressSeconds]);
333
- const startTimeSeconds = useMemo(() => {
334
- return apiResumeSeconds > 0 ? apiResumeSeconds : sessionResumeSeconds;
335
- }, [apiResumeSeconds, sessionResumeSeconds]);
336
- const videoData = useMemo(() => {
337
- const hlsList = extractHlsList(information);
338
- const videoUrl = hlsList[hlsList.length ? Math.max(0, Math.min(episodeNumber, hlsList.length - 1)) : 0]?.url || "";
339
- const hasVideo = Boolean(hlsList.length);
340
- if (!hasVideo) return {
341
- hasVideo: false,
342
- hlsList: [],
343
- videoUrl: "",
344
- width: 1,
345
- height: 1,
346
- resolution: "0x0",
347
- aspectRatio: 1,
348
- poster: ""
349
- };
350
- const width = Number(playerData.img_width || 0) || 1;
351
- const height = Number(playerData.img_height || 0) || 1;
352
- return {
353
- hasVideo,
354
- hlsList,
355
- videoUrl,
356
- width,
357
- height,
358
- resolution: buildResolutionText(width, height),
359
- aspectRatio: (width || 1) / (height || 1),
360
- poster: playerData.img_y || playerData.img_x || playerData.preview_images?.[0] || ""
361
- };
362
- }, [
363
- information.id,
364
- information.links,
365
- episodeNumber,
366
- playerData.img_width,
367
- playerData.img_height,
368
- playerData.img_y,
369
- playerData.img_x,
370
- playerData.preview_images
371
- ]);
372
- /**
373
- * 记录播放进度,便于下次进入恢复播放。
374
- */
375
- const handleProgressUpdate = useCallback((currentTime, duration) => {
376
- currentTimeRef.current = currentTime;
377
- videoDurationRef.current = duration;
378
- if (isLogin || visitorLimitSeconds <= 0 || hasTriggeredVisitorLimitRef.current) {
379
- if (!hasLoggedSkipReasonRef.current) {
380
- hasLoggedSkipReasonRef.current = true;
381
- console.log(`[visitor-limit] skip: isLogin=${isLogin}, limit=${visitorLimitSeconds}, triggered=${hasTriggeredVisitorLimitRef.current}`);
382
- }
383
- return;
384
- }
385
- if (currentTime < visitorLimitSeconds) {
386
- const remainingSeconds = Math.max(0, Math.ceil(visitorLimitSeconds - currentTime));
387
- if (lastLoggedRemainingSecondsRef.current !== remainingSeconds) {
388
- lastLoggedRemainingSecondsRef.current = remainingSeconds;
389
- console.log(`[visitor-limit] remaining: ${remainingSeconds}s`);
390
- }
391
- return;
392
- }
393
- hasTriggeredVisitorLimitRef.current = true;
394
- shouldBlockPlaybackUntilLoginRef.current = true;
395
- try {
396
- playerRef.current?.getPlayer?.()?.pause?.();
397
- } catch (error) {
398
- console.warn("暂停视频失败:", error);
399
- }
400
- openLoginModal();
401
- }, [
402
- isLogin,
403
- openLoginModal,
404
- visitorLimitSeconds
405
- ]);
406
- useEffect(() => {
407
- if (isLogin) {
408
- hasTriggeredVisitorLimitRef.current = false;
409
- shouldBlockPlaybackUntilLoginRef.current = false;
410
- lastLoggedRemainingSecondsRef.current = null;
411
- hasLoggedSkipReasonRef.current = false;
412
- }
413
- }, [isLogin]);
414
- useEffect(() => {
415
- const wasOpen = wasLoginModalOpenRef.current;
416
- wasLoginModalOpenRef.current = isLoginModalOpen;
417
- if (!wasOpen || isLoginModalOpen || isLogin) return;
418
- if (!shouldBlockPlaybackUntilLoginRef.current) return;
419
- try {
420
- playerRef.current?.getPlayer?.()?.pause?.();
421
- } catch (error) {
422
- console.warn("登录弹窗关闭后暂停视频失败:", error);
423
- }
424
- }, [isLogin, isLoginModalOpen]);
425
- const playerMergeConfig = useMemo(() => {
426
- if (videoData.videoUrl.endsWith("m3u8")) return {
427
- startTimeSeconds,
428
- preload: "none"
429
- };
430
- return { startTimeSeconds };
431
- }, [startTimeSeconds, videoData.videoUrl]);
432
- useEffect(() => {
433
- currentTimeRef.current = 0;
434
- videoDurationRef.current = 0;
435
- hasTriggeredVisitorLimitRef.current = false;
436
- shouldBlockPlaybackUntilLoginRef.current = false;
437
- lastLoggedRemainingSecondsRef.current = null;
438
- hasLoggedSkipReasonRef.current = false;
439
- hasLoggedVisitorConfigRef.current = false;
440
- wasLoginModalOpenRef.current = false;
441
- }, [browseContentId, episodeNumber]);
442
- useEffect(() => {
443
- setIsMainPlayerReady(false);
444
- setHasMainEnded(false);
445
- setPrerollCompleted(false);
446
- setRequiresMainUserGesture(false);
447
- setPrerollStartMode("auto");
448
- setPrerollSessionKey((prev) => prev + 1);
449
- if (isEditor) {
450
- setActiveLayer("main");
451
- return;
452
- }
453
- if (shouldUsePreroll) {
454
- setActiveLayer("preroll");
455
- return;
456
- }
457
- setActiveLayer("main");
458
- }, [
459
- browseContentId,
460
- currentEpisodeId,
461
- isEditor,
462
- playerData.id,
463
- shouldUsePreroll
464
- ]);
465
- useEffect(() => {
466
- return () => {
467
- if (resumeMainPlayTimerRef.current) {
468
- window.clearInterval(resumeMainPlayTimerRef.current);
469
- resumeMainPlayTimerRef.current = null;
470
- }
471
- };
472
- }, []);
473
- useEffect(() => {
474
- if (activeLayer !== "preroll") return;
475
- const player = playerRef.current?.getPlayer?.();
476
- if (!player) return;
477
- try {
478
- if (!player.paused) player.pause?.();
479
- } catch (error) {
480
- console.warn("贴片展示时暂停正片失败:", error);
481
- }
482
- }, [
483
- activeLayer,
484
- currentEpisodeId,
485
- playerData.id
486
- ]);
487
- /**
488
- * 同步播放器静音状态,兼容 xgplayer 实例与底层 video 元素。
489
- */
490
- const syncPlayerMutedState = useCallback((muted) => {
491
- const player = playerRef.current?.getPlayer?.();
492
- if (!player) return null;
493
- try {
494
- if ("muted" in player) player.muted = muted;
495
- if ("video" in player && player.video) player.video.muted = muted;
496
- player.volume = muted ? 0 : 1;
497
- } catch (error) {
498
- console.warn("同步详情页播放器静音状态失败:", error);
499
- }
500
- return player;
501
- }, []);
502
- const attemptResumeMainPlayback = useCallback(() => {
503
- if (resumeMainPlayTimerRef.current) {
504
- window.clearInterval(resumeMainPlayTimerRef.current);
505
- resumeMainPlayTimerRef.current = null;
506
- }
507
- let attemptCount = 0;
508
- resumeMainPlayTimerRef.current = window.setInterval(() => {
509
- attemptCount += 1;
510
- const player = playerRef.current?.getPlayer?.();
511
- if (!player) {
512
- if (attemptCount >= 8 && resumeMainPlayTimerRef.current) {
513
- window.clearInterval(resumeMainPlayTimerRef.current);
514
- resumeMainPlayTimerRef.current = null;
515
- }
516
- return;
517
- }
518
- if (resumeMainPlayTimerRef.current) {
519
- window.clearInterval(resumeMainPlayTimerRef.current);
520
- resumeMainPlayTimerRef.current = null;
521
- }
522
- player.play?.().catch((error) => {
523
- const errorName = typeof error === "object" && error && "name" in error ? String(error.name || "") : "";
524
- const errorMessage = typeof error === "object" && error && "message" in error ? String(error.message || "") : String(error || "");
525
- if (errorName === "NotAllowedError" || /user didn't interact|NotAllowedError/i.test(errorMessage)) {
526
- const mutedPlayer = syncPlayerMutedState(true);
527
- if (!mutedPlayer) {
528
- setRequiresMainUserGesture(true);
529
- return;
530
- }
531
- mutedPlayer.play?.().then(() => {
532
- setRequiresMainUserGesture(false);
533
- }).catch((mutedError) => {
534
- console.warn("详情页静音自动播放失败:", mutedError);
535
- setRequiresMainUserGesture(true);
536
- });
537
- return;
538
- }
539
- console.warn("详情页恢复正片播放失败:", error);
540
- });
541
- }, 180);
542
- }, [syncPlayerMutedState]);
543
- const shouldAutoStartMain = !isEditor && isPrerollFetched && !isPrerollLoading && !hasMainEnded && (!shouldUsePreroll || prerollCompleted);
544
- useEffect(() => {
545
- if (!shouldAutoStartMain || !isMainPlayerReady) return;
546
- setRequiresMainUserGesture(false);
547
- attemptResumeMainPlayback();
548
- }, [
549
- attemptResumeMainPlayback,
550
- isMainPlayerReady,
551
- shouldAutoStartMain
552
- ]);
553
- const browseReport = useBrowseReport({
554
- contentId: browseContentId,
555
- browseEpisode,
556
- contentType: 1,
557
- enabled: !isEditor && Boolean(browseContentId),
558
- intervalMs: 60 * 1e3,
559
- getCurrentTimeSeconds: () => currentTimeRef.current,
560
- getDurationSeconds: () => videoDurationRef.current,
561
- seriesId: playerData.mid || void 0,
562
- source: "detail",
563
- playMode: "normal"
564
- });
565
- /** 构建视频事件 payload 的公共字段。 */
566
- const buildVideoPayload = useCallback(() => {
567
- const duration = videoDurationRef.current;
568
- const currentTime = currentTimeRef.current;
569
- const progress = duration > 0 ? Math.round(currentTime / duration * 100) : 0;
570
- return {
571
- media_id: information.id,
572
- video_id: currentEpisodeId,
573
- video_title: information.name,
574
- video_type_id: information.cat_id || "",
575
- video_type_name: information.cat_name || "",
576
- video_content_type: information.content_type === 2 ? "short_video" : "video",
577
- recommend_trace_id: "",
578
- video_tag_key: information.tags?.map((tag) => tag.id).join(",") || "",
579
- video_tag_name: information.tags?.map((tag) => tag.name).join(",") || "",
580
- video_duration: duration,
581
- play_duration: currentTime,
582
- play_progress: progress
583
- };
584
- }, [
585
- currentEpisodeId,
586
- information.cat_id,
587
- information.cat_name,
588
- information.content_type,
589
- information.id,
590
- information.name,
591
- information.tags
592
- ]);
593
- useCallback(() => {
594
- browseReport.handlePlay();
595
- trackVideoEvent({
596
- ...buildVideoPayload(),
597
- video_behavior_key: "video_play",
598
- video_behavior_name: "播放"
599
- });
600
- }, [browseReport, buildVideoPayload]);
601
- useCallback(() => {
602
- browseReport.handlePause();
603
- trackVideoEvent({
604
- ...buildVideoPayload(),
605
- video_behavior_key: "video_pause",
606
- video_behavior_name: "暂停"
607
- });
608
- }, [browseReport, buildVideoPayload]);
609
- useCallback(() => {
610
- browseReport.handleEnded();
611
- const duration = videoDurationRef.current;
612
- const currentTime = currentTimeRef.current;
613
- if ((duration > 0 ? currentTime / duration : 0) >= .95) trackVideoEvent({
614
- ...buildVideoPayload(),
615
- video_behavior_key: "video_complete",
616
- video_behavior_name: "播放完成"
617
- });
618
- }, [browseReport, buildVideoPayload]);
619
- const handlePrerollFinished = useCallback(() => {
620
- if (hasMainEnded) {
621
- const player = playerRef.current?.getPlayer?.();
622
- if (player) player.currentTime = 0;
623
- }
624
- setPrerollCompleted(true);
625
- setRequiresMainUserGesture(false);
626
- setPrerollStartMode("manual");
627
- setHasMainEnded(false);
628
- setActiveLayer("main");
629
- }, [hasMainEnded]);
630
- const handlePrerollAutoplayBlocked = useCallback(() => {
631
- setPrerollStartMode("manual");
632
- }, []);
633
- const handleMainPlayerReady = useCallback(() => {
634
- setIsMainPlayerReady(true);
635
- }, []);
636
- const handleMainPlay = useCallback(() => {
637
- setHasMainEnded(false);
638
- setRequiresMainUserGesture(false);
639
- }, []);
640
- const handleMainPlayerPlay = useCallback(() => {
641
- if (!isLogin && shouldBlockPlaybackUntilLoginRef.current) {
642
- try {
643
- playerRef.current?.getPlayer?.()?.pause?.();
644
- } catch (error) {
645
- console.warn("未登录拦截播放时暂停视频失败:", error);
646
- }
647
- if (!isLoginModalOpen) openLoginModal();
648
- return;
649
- }
650
- handleMainPlay();
651
- browseReport.handlePlay();
652
- trackVideoEvent({
653
- ...buildVideoPayload(),
654
- video_behavior_key: "video_play",
655
- video_behavior_name: "播放"
656
- });
657
- }, [
658
- browseReport,
659
- buildVideoPayload,
660
- handleMainPlay,
661
- isLogin,
662
- isLoginModalOpen,
663
- openLoginModal
664
- ]);
665
- const handleMainPlayerPause = useCallback(() => {
666
- browseReport.handlePause();
667
- trackVideoEvent({
668
- ...buildVideoPayload(),
669
- video_behavior_key: "video_pause",
670
- video_behavior_name: "暂停"
671
- });
672
- }, [browseReport, buildVideoPayload]);
673
- const handleMainEnded = useCallback(() => {
674
- browseReport.handleEnded();
675
- const duration = videoDurationRef.current;
676
- const currentTime = currentTimeRef.current;
677
- if ((duration > 0 ? currentTime / duration : 0) >= .95) trackVideoEvent({
678
- ...buildVideoPayload(),
679
- video_behavior_key: "video_complete",
680
- video_behavior_name: "播放完成"
681
- });
682
- if (!shouldUsePreroll) return;
683
- setHasMainEnded(true);
684
- setRequiresMainUserGesture(false);
685
- setPrerollCompleted(false);
686
- setPrerollStartMode("manual");
687
- setPrerollSessionKey((prev) => prev + 1);
688
- setActiveLayer("main");
689
- }, [
690
- browseReport,
691
- buildVideoPayload,
692
- shouldUsePreroll
693
- ]);
694
- const showPrerollGate = shouldUsePreroll && activeLayer === "main" && (hasMainEnded || !prerollCompleted && prerollStartMode === "manual");
695
- const showMainPlaybackGate = activeLayer === "main" && requiresMainUserGesture;
696
- const shouldDeferMainPlayerMount = !isEditor && !isPrerollFetched;
697
- const showPrerollLoadingGate = shouldDeferMainPlayerMount;
698
- const shouldUseDefaultMainAutoplayBehavior = shouldAutoStartMain;
699
- const shouldRenderMainPlayer = !shouldDeferMainPlayerMount && (!shouldUsePreroll || prerollCompleted);
700
- async function handleOpenPrerollByUserGesture() {
701
- if (!shouldUsePreroll) return;
702
- setHasMainEnded(false);
703
- setPrerollCompleted(false);
704
- setPrerollStartMode("manual");
705
- setActiveLayer("preroll");
706
- if (!await prerollRef.current?.play?.()) setActiveLayer("main");
707
- }
708
- async function handleOpenMainByUserGesture() {
709
- const player = syncPlayerMutedState(false);
710
- if (!player) return;
711
- try {
712
- await player.play?.();
713
- setRequiresMainUserGesture(false);
714
- } catch (error) {
715
- console.warn("用户点击后启动正片播放失败:", error);
716
- }
717
- }
718
- useEffect(() => {
719
- if (isEditor) return;
720
- const persistProgress = () => {
721
- if (typeof window === "undefined") return;
722
- if (currentTimeRef.current <= 0 || videoDurationRef.current <= 0) return;
723
- try {
724
- sessionStorage.setItem(localProgressStorageKey, JSON.stringify({
725
- episodeId: currentEpisodeId,
726
- currentTime: currentTimeRef.current,
727
- duration: videoDurationRef.current
728
- }));
729
- } catch (error) {
730
- console.error("写入 sessionStorage 失败:", error);
731
- }
732
- };
733
- const handleBeforeUnload = () => {
734
- persistProgress();
735
- };
736
- const handleVisibilityChange = () => {
737
- if (document.visibilityState === "hidden") persistProgress();
738
- };
739
- const handlePopState = () => {
740
- persistProgress();
741
- };
742
- window.addEventListener("beforeunload", handleBeforeUnload);
743
- document.addEventListener("visibilitychange", handleVisibilityChange);
744
- window.addEventListener("popstate", handlePopState);
745
- return () => {
746
- window.removeEventListener("beforeunload", handleBeforeUnload);
747
- document.removeEventListener("visibilitychange", handleVisibilityChange);
748
- window.removeEventListener("popstate", handlePopState);
749
- persistProgress();
750
- };
751
- }, [
752
- currentEpisodeId,
753
- isEditor,
754
- localProgressStorageKey
755
- ]);
756
- if (!videoData.hasVideo) return /* @__PURE__ */ jsx("div", {
757
- className: "mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3",
758
- children: t("videoHero.noVideos")
759
- });
760
- const dimensions = calculateVideoDimensions(430, videoData.aspectRatio, DETAIL_VIDEO_MAX_HEIGHT);
761
- const playerHeight = dimensions.height > 0 ? pxToVw(dimensions.height) : "auto";
762
- const playerReservedHeight = dimensions.height > 0 ? `calc(${playerHeight} + ${DETAIL_SEARCH_BAR_HEIGHT}px)` : "auto";
763
- const playerMaxHeight = pxToVw(DETAIL_VIDEO_MAX_HEIGHT);
764
- return /* @__PURE__ */ jsxs(VideoPlayerRefContext, {
765
- value: playerRef,
766
- children: [/* @__PURE__ */ jsx(Box, {
767
- suppressHydrationWarning: true,
768
- className: "w-full",
769
- style: {
770
- height: playerReservedHeight,
771
- maxWidth: "100%",
772
- maxHeight: `calc(${playerMaxHeight} + ${DETAIL_SEARCH_BAR_HEIGHT}px)`
773
- }
774
- }), /* @__PURE__ */ jsxs(Box, {
775
- className: "w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]",
776
- children: [videoData.poster && /* @__PURE__ */ jsxs("div", {
777
- className: "w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden",
778
- style: { height: playerHeight },
779
- children: [/* @__PURE__ */ jsx(Image, {
780
- src: videoData.poster,
781
- alt: t("videoHero.coverAlt"),
782
- fill: true,
783
- className: "object-cover",
784
- priority: true
785
- }), /* @__PURE__ */ jsx("div", { className: "w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]" })]
786
- }), /* @__PURE__ */ jsxs(Box, {
787
- suppressHydrationWarning: true,
788
- "data-aspect-ratio": videoData.resolution,
789
- className: "w-full overflow-hidden flex justify-center relative z-[2]",
790
- style: {
791
- height: playerHeight,
792
- maxWidth: "100%",
793
- maxHeight: playerMaxHeight,
794
- backdropFilter: "blur(0)",
795
- WebkitBackdropFilter: "blur(0)"
796
- },
797
- children: [
798
- shouldRenderMainPlayer && /* @__PURE__ */ jsx(CommonPlayer, {
799
- ref: playerRef,
800
- plyerId: `detail-player-${playerData.id}-${episodeNumber}`,
801
- parentId,
802
- ...shouldUseDefaultMainAutoplayBehavior ? { autoplay: true } : { autoplay: false },
803
- resolution: videoData.resolution || "0x0",
804
- videoUrl: videoData.videoUrl,
805
- poster: videoData.poster,
806
- mergeConfig: playerMergeConfig,
807
- onProgressUpdate: isEditor ? void 0 : handleProgressUpdate,
808
- onPlay: isEditor ? void 0 : handleMainPlayerPlay,
809
- onPause: isEditor ? void 0 : handleMainPlayerPause,
810
- onEnded: isEditor ? void 0 : handleMainEnded,
811
- onPlayerReady: handleMainPlayerReady
812
- }, `stable-player-${playerData.id}-${episodeNumber}-${shouldUseDefaultMainAutoplayBehavior ? "default-autoplay" : "manual"}`),
813
- !isEditor && shouldUsePreroll && /* @__PURE__ */ jsx(VideoPrerollAd, {
814
- ref: prerollRef,
815
- adData: prerollData,
816
- visible: activeLayer === "preroll",
817
- autoStart: activeLayer === "preroll" && prerollStartMode === "auto",
818
- sessionKey: `${playerData.id}-${currentEpisodeId}-${prerollSessionKey}`,
819
- onAutoplayBlocked: handlePrerollAutoplayBlocked,
820
- onFinish: handlePrerollFinished,
821
- onSkip: handlePrerollFinished
822
- }),
823
- showPrerollGate && !showMainPlaybackGate && /* @__PURE__ */ jsx("button", {
824
- type: "button",
825
- className: "absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white",
826
- onClick: () => {
827
- handleOpenPrerollByUserGesture();
828
- },
829
- children: /* @__PURE__ */ jsx("span", {
830
- className: "flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]",
831
- children: /* @__PURE__ */ jsx(SvgVideoPlay, { className: "w-[18px] h-[24px] text-white translate-x-[1px]" })
832
- })
833
- }),
834
- showMainPlaybackGate && /* @__PURE__ */ jsx("button", {
835
- type: "button",
836
- className: "absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white",
837
- onClick: () => {
838
- handleOpenMainByUserGesture();
839
- },
840
- children: /* @__PURE__ */ jsx("span", {
841
- className: "flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]",
842
- children: /* @__PURE__ */ jsx(SvgVideoPlay, { className: "w-[18px] h-[24px] text-white translate-x-[1px]" })
843
- })
844
- }),
845
- showPrerollLoadingGate && /* @__PURE__ */ jsx("div", {
846
- className: "absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white",
847
- children: /* @__PURE__ */ jsx("span", {
848
- className: "rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm",
849
- children: "加载中"
850
- })
851
- }),
852
- /* @__PURE__ */ jsx(VideoBlindAdOverlay, {
853
- videoId: playerData.id,
854
- episode: browseEpisode
855
- }),
856
- /* @__PURE__ */ jsx(VideoPrerollAdOverlay, {
857
- videoId: playerData.id,
858
- episode: browseEpisode
859
- })
860
- ]
861
- })]
862
- })]
863
- });
864
- }
865
- /**
866
- * 构建分辨率文本
867
- */
868
- function buildResolutionText(width, height) {
869
- if (!width || !height) return "";
870
- return `${width}x${height}`;
871
- }
872
- /**
873
- * 计算视频尺寸
874
- */
875
- function calculateVideoDimensions(parentWidth, aspectRatio, maxHeight) {
876
- const heightFromWidth = parentWidth / aspectRatio;
877
- if (heightFromWidth <= maxHeight) return {
878
- width: parentWidth,
879
- height: heightFromWidth
880
- };
881
- return {
882
- width: maxHeight * aspectRatio,
883
- height: maxHeight
884
- };
885
- }
886
- /**
887
- * 提取 HLS 播放列表
888
- */
889
- function extractHlsList(info) {
890
- const linkList = info.links || [];
891
- if (linkList.length > 0) return linkList.map((item, index) => {
892
- return {
893
- text: item.name || String(index + 1),
894
- url: item.m3u8_url || item.preview_m3u8_url || "",
895
- definition: "",
896
- isDefault: index === 0
897
- };
898
- }).filter((item) => item.url);
899
- return [];
900
- }
901
-
902
- //#endregion
903
- export { DetailHero };
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetVisitorPermissionConfig as n,pContentMatchAds as r}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as i}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as a}from"../../../../../utils/helper.mjs";import{trackVideoEvent as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as ee}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as te}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as ne}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as re}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as m}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as ie}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as g}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as ae}from"next-intl";function T(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function oe(e){if(!e)return 0;for(let t of[`seconds`,`stay_seconds`,`play_seconds`,`watch_seconds`]){let n=T(e[t]);if(n>0)return n}for(let t of[`内容`,`content`,`video`,`视频`]){let n=e[t],r=T(n?.rule?.seconds);if(r>0)return r}for(let t of Object.values(e)){let e=T(t?.rule?.seconds);if(e>0)return e}return 0}function E(e){return C(D,{...e})}const D=_(({mode:n=`renderer`,information:a,isVideo:o,episodeIndex:s=0,resumeProgressSeconds:ee=0,className:ne=``})=>{let f=n===`editor`,p=t(e=>e.userId),m=b(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),h=b(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,a]),ie=d(),g=b(()=>h.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,h]),_=v(e=>{f||!g.length||ie.open(g,e)},[f,ie,g]),y=b(()=>({user_id:p,ad_type:`preroll`}),[p]),x=b(()=>{let e=Math.max(0,Number(s)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[s,a?.links]),{data:S,isLoading:ae,isFetched:T}=te(b(()=>[`detail-preroll-ad`,a.id,x,...i(y)],[a.id,x,y]),()=>r(y),{enabled:!f&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),oe=b(()=>({data:S?.data??null,isLoading:ae,isFetched:T}),[T,ae,S?.data]);return f?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?C(O,{information:a,episodeIndex:s,resumeProgressSeconds:ee,isEditor:f,prerollState:oe}):w(`div`,{className:e(`w-full`,ne),children:[w(c,{className:`mt-3 px-[12px] space-y-1`,children:[C(l,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),C(re,{medias:h,onItemClick:_})]}),C(u,{})]})});E.displayName=`DetailHero`;const O=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(k,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});O.displayName=`StableDetailPlayerBox`;function k({information:e,episodeIndex:r,resumeProgressSeconds:i,isEditor:l,prerollState:u}){let d=x(null),re=x(null),_=x(null),T=ae(`components.biz.business.detail`),E=t(e=>e.isLogin),D=t(e=>e.userId),O=ee(e=>e.open),k=ee(e=>e.isOpen),A=x(0),j=x(0),M=x(!1),N=x(!1),P=x(null),ue=x(!1),F=x(!1),de=x(!1),I=Math.max(0,Number(r)||0),fe=I+1,[pe,me]=S(!1),[L,R]=S(`main`),[he,z]=S(`auto`),[ge,B]=S(!1),[V,H]=S(!1),[_e,U]=S(!1),[ve,ye]=S(0),W=b(()=>e?.id,[e?.id]),G=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),be=b(()=>G.mid||G.id,[G.id,G.mid]),K=b(()=>{let e=G.links?.[I]?.id;return e?String(e):`ep-${I+1}`},[I,G.links]),q=b(()=>`__reportData_detail_page__${G.id}:${K}`,[K,G.id]),xe=u.data,Se=u.isLoading,Ce=u.isFetched,we=xe?.materials?.[0],Te=xe?.hit===!0,Ee=!!String(we?.advertise_video||``).trim(),J=Te&&!!we&&Ee,{data:Y}=te(b(()=>[`detail-visitor-permission-config`,D||`guest`],[D]),()=>n({user_id:D||``}),{enabled:!l,staleTime:60*1e3,refetchOnWindowFocus:!1}),X=b(()=>oe(Y?.data?.permission_config),[Y?.data?.permission_config]);y(()=>{ue.current||Y&&(ue.current=!0,console.log(`[visitor-limit] permission config:`,Y?.data?.permission_config||null),console.log(`[visitor-limit] resolved limit: ${X}s`))},[X,Y]);let De=b(()=>{if(l||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(q);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[l,q]),Oe=b(()=>{let e=Number(i||0);return Number.isFinite(e)&&e>0?e:0},[i]),ke=b(()=>Oe>0?Oe:De,[Oe,De]),Z=b(()=>{let t=le(e),n=t[t.length?Math.max(0,Math.min(I,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(G.img_width||0)||1,a=Number(G.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:se(i,a),aspectRatio:(i||1)/(a||1),poster:G.img_y||G.img_x||G.preview_images?.[0]||``}},[e.id,e.links,I,G.img_width,G.img_height,G.img_y,G.img_x,G.preview_images]),Ae=v((e,t)=>{if(A.current=e,j.current=t,E||X<=0||M.current){F.current||(F.current=!0,console.log(`[visitor-limit] skip: isLogin=${E}, limit=${X}, triggered=${M.current}`));return}if(e<X){let t=Math.max(0,Math.ceil(X-e));P.current!==t&&(P.current=t,console.log(`[visitor-limit] remaining: ${t}s`));return}M.current=!0,N.current=!0;try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`暂停视频失败:`,e)}O()},[E,O,X]);y(()=>{E&&(M.current=!1,N.current=!1,P.current=null,F.current=!1)},[E]),y(()=>{let e=de.current;if(de.current=k,!(!e||k||E)&&N.current)try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`登录弹窗关闭后暂停视频失败:`,e)}},[E,k]);let je=b(()=>Z.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:ke,preload:`none`}:{startTimeSeconds:ke},[ke,Z.videoUrl]);y(()=>{A.current=0,j.current=0,M.current=!1,N.current=!1,P.current=null,F.current=!1,ue.current=!1,de.current=!1},[W,I]),y(()=>{if(me(!1),H(!1),B(!1),U(!1),z(`auto`),ye(e=>e+1),l){R(`main`);return}if(J){R(`preroll`);return}R(`main`)},[W,K,l,G.id,J]),y(()=>()=>{_.current&&=(window.clearInterval(_.current),null)},[]),y(()=>{if(L!==`preroll`)return;let e=d.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[L,K,G.id]);let Me=v(e=>{let t=d.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),Ne=v(()=>{_.current&&=(window.clearInterval(_.current),null);let e=0;_.current=window.setInterval(()=>{e+=1;let t=d.current?.getPlayer?.();if(!t){e>=8&&_.current&&(window.clearInterval(_.current),_.current=null);return}_.current&&=(window.clearInterval(_.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Me(!0);if(!e){U(!0);return}e.play?.().then(()=>{U(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),U(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Me]),Pe=!l&&Ce&&!Se&&!V&&(!J||ge);y(()=>{!Pe||!pe||(U(!1),Ne())},[Ne,pe,Pe]);let Q=ne({contentId:W,browseEpisode:fe,contentType:1,enabled:!l&&!!W,intervalMs:60*1e3,getCurrentTimeSeconds:()=>A.current,getDurationSeconds:()=>j.current,seriesId:G.mid||void 0,source:`detail`,playMode:`normal`}),$=v(()=>{let t=j.current,n=A.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:K,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[K,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);v(()=>{Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$]),v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Q,$]);let Fe=v(()=>{if(V){let e=d.current?.getPlayer?.();e&&(e.currentTime=0)}B(!0),U(!1),z(`manual`),H(!1),R(`main`)},[V]),Ie=v(()=>{z(`manual`)},[]),Le=v(()=>{me(!0)},[]),Re=v(()=>{H(!1),U(!1)},[]),ze=v(()=>{if(!E&&N.current){try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`未登录拦截播放时暂停视频失败:`,e)}k||O();return}Re(),Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$,Re,E,k,O]),Be=v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),Ve=v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),J&&(H(!0),U(!1),B(!1),z(`manual`),ye(e=>e+1),R(`main`))},[Q,$,J]),He=J&&L===`main`&&(V||!ge&&he===`manual`),Ue=L===`main`&&_e,We=!l&&!Ce,Ge=We,Ke=Pe,qe=!We&&(!J||ge);async function Je(){J&&(H(!1),B(!1),z(`manual`),R(`preroll`),await re.current?.play?.()||R(`main`))}async function Ye(){let e=Me(!1);if(e)try{await e.play?.(),U(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(l)return;let e=()=>{if(!(typeof window>`u`)&&!(A.current<=0||j.current<=0))try{sessionStorage.setItem(q,JSON.stringify({episodeId:K,currentTime:A.current,duration:j.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[K,l,q]),!Z.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:T(`videoHero.noVideos`)});let Xe=ce(430,Z.aspectRatio,242),Ze=Xe.height>0?a(Xe.height):`auto`,Qe=Xe.height>0?`calc(${Ze} + 0px)`:`auto`,$e=a(242);return w(m,{value:d,children:[C(c,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Qe,maxWidth:`100%`,maxHeight:`calc(${$e} + 0px)`}}),w(c,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[Z.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Ze},children:[C(s,{src:Z.poster,alt:T(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(c,{suppressHydrationWarning:!0,"data-aspect-ratio":Z.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Ze,maxWidth:`100%`,maxHeight:$e,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[qe&&C(f,{ref:d,plyerId:`detail-player-${G.id}-${I}`,parentId:be,...Ke?{autoplay:!0}:{autoplay:!1},resolution:Z.resolution||`0x0`,videoUrl:Z.videoUrl,poster:Z.poster,mergeConfig:je,onProgressUpdate:l?void 0:Ae,onPlay:l?void 0:ze,onPause:l?void 0:Be,onEnded:l?void 0:Ve,onPlayerReady:Le},`stable-player-${G.id}-${I}-${Ke?`default-autoplay`:`manual`}`),!l&&J&&C(ie,{ref:re,adData:xe,visible:L===`preroll`,autoStart:L===`preroll`&&he===`auto`,sessionKey:`${G.id}-${K}-${ve}`,onAutoplayBlocked:Ie,onFinish:Fe,onSkip:Fe}),He&&!Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Je()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ye()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ge&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:G.id,episode:fe}),C(g,{videoId:G.id,episode:fe})]})]})]})}function se(e,t){return!e||!t?``:`${e}x${t}`}function ce(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function le(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{E as DetailHero};