@funhub/platform 0.1.126 → 0.1.130

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 (815) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +18 -1
  2. package/dist/assets/icons/clear.mjs +17 -1
  3. package/dist/assets/icons/close-icon.mjs +18 -1
  4. package/dist/assets/icons/close.mjs +14 -1
  5. package/dist/assets/icons/common/collect_nor.mjs +21 -1
  6. package/dist/assets/icons/common/collect_sel.mjs +21 -1
  7. package/dist/assets/icons/common/follow_sel.mjs +17 -1
  8. package/dist/assets/icons/common/follow_user.mjs +17 -1
  9. package/dist/assets/icons/common/full_screen.mjs +17 -1
  10. package/dist/assets/icons/common/god_comment.mjs +17 -1
  11. package/dist/assets/icons/common/heart-like.mjs +31 -1
  12. package/dist/assets/icons/common/heart-unlike.mjs +18 -1
  13. package/dist/assets/icons/common/qq.mjs +32 -1
  14. package/dist/assets/icons/common/right_arrow.mjs +14 -1
  15. package/dist/assets/icons/common/share.mjs +17 -1
  16. package/dist/assets/icons/common/solid-arrow.mjs +17 -1
  17. package/dist/assets/icons/common/video_play.mjs +18 -1
  18. package/dist/assets/icons/common/wechat-friends.mjs +40 -1
  19. package/dist/assets/icons/common/wechat.mjs +39 -1
  20. package/dist/assets/icons/detail/check-ok.mjs +17 -1
  21. package/dist/assets/icons/detail/collect_nor.mjs +21 -1
  22. package/dist/assets/icons/detail/collect_sel.mjs +21 -1
  23. package/dist/assets/icons/detail/comment.mjs +19 -1
  24. package/dist/assets/icons/detail/commet_at.mjs +53 -1
  25. package/dist/assets/icons/detail/give_like.mjs +20 -1
  26. package/dist/assets/icons/detail/give_like_sel.mjs +27 -1
  27. package/dist/assets/icons/detail/min-collection.mjs +38 -1
  28. package/dist/assets/icons/detail/publish_pic.mjs +27 -1
  29. package/dist/assets/icons/detail/publish_video.mjs +30 -1
  30. package/dist/assets/icons/detail/share.mjs +17 -1
  31. package/dist/assets/icons/detail/un_like.mjs +20 -1
  32. package/dist/assets/icons/detail/un_like_sel.mjs +27 -1
  33. package/dist/assets/icons/detail/video_flag.mjs +17 -1
  34. package/dist/assets/icons/detail/video_play.mjs +18 -1
  35. package/dist/assets/icons/dislike.mjs +20 -1
  36. package/dist/assets/icons/dislike_sel.mjs +27 -1
  37. package/dist/assets/icons/empty/img-empty-adduser.mjs +463 -1
  38. package/dist/assets/icons/empty/img-empty-nodata.mjs +194 -1
  39. package/dist/assets/icons/eye-icon.mjs +21 -1
  40. package/dist/assets/icons/eye-off-icon.mjs +21 -1
  41. package/dist/assets/icons/filter_dark.mjs +17 -1
  42. package/dist/assets/icons/follow_nor.mjs +44 -1
  43. package/dist/assets/icons/follow_sel.mjs +31 -1
  44. package/dist/assets/icons/left-arrow-icon.mjs +18 -1
  45. package/dist/assets/icons/left_arrow.mjs +14 -1
  46. package/dist/assets/icons/like.mjs +20 -1
  47. package/dist/assets/icons/like_sel.mjs +27 -1
  48. package/dist/assets/icons/publish/publish_add.mjs +17 -1
  49. package/dist/assets/icons/publish/publish_at.mjs +53 -1
  50. package/dist/assets/icons/publish/publish_collection.mjs +28 -1
  51. package/dist/assets/icons/publish/publish_pic.mjs +27 -1
  52. package/dist/assets/icons/publish/publish_video.mjs +30 -1
  53. package/dist/assets/icons/refresh.mjs +18 -1
  54. package/dist/assets/icons/right_arrow.mjs +14 -1
  55. package/dist/assets/icons/search/avatar.mjs +36 -1
  56. package/dist/assets/icons/search/filter.mjs +17 -1
  57. package/dist/assets/icons/search/video.mjs +27 -1
  58. package/dist/assets/icons/search.mjs +23 -1
  59. package/dist/assets/icons/share/share-link.mjs +39 -1
  60. package/dist/assets/icons/tabs/follow.mjs +20 -1
  61. package/dist/assets/icons/tabs/follow_active.mjs +17 -1
  62. package/dist/assets/icons/tabs/home.mjs +17 -1
  63. package/dist/assets/icons/tabs/home_active.mjs +17 -1
  64. package/dist/assets/icons/tabs/mine.mjs +26 -1
  65. package/dist/assets/icons/tabs/mine_active.mjs +17 -1
  66. package/dist/assets/icons/view.mjs +17 -1
  67. package/dist/assets/images/add.mjs +5 -1
  68. package/dist/assets/images/default_avatar.mjs +5 -1
  69. package/dist/assets/images/default_collection_cover.mjs +5 -1
  70. package/dist/assets/images/empty/img_empty_adduser.mjs +463 -1
  71. package/dist/assets/images/empty/img_empty_message.mjs +408 -1
  72. package/dist/assets/images/empty/img_empty_network.mjs +168 -1
  73. package/dist/assets/images/empty/img_empty_nodata.mjs +194 -1
  74. package/dist/assets/images/empty/img_empty_picture.mjs +59 -1
  75. package/dist/assets/images/empty/img_empty_search.mjs +250 -1
  76. package/dist/assets/images/frame.mjs +5 -1
  77. package/dist/assets/images/less.mjs +5 -1
  78. package/dist/assets/images/logo.mjs +5 -1
  79. package/dist/assets/images/marquee.mjs +5 -1
  80. package/dist/assets/images/subscript.mjs +5 -1
  81. package/dist/assets/images/user/default_avatar.mjs +5 -1
  82. package/dist/biz.mjs +144 -1
  83. package/dist/common.mjs +44 -1
  84. package/dist/components/biz/basics/card-item/defaults/default-props.mjs +10 -1
  85. package/dist/components/biz/basics/card-item/runtime/client.mjs +83 -1
  86. package/dist/components/biz/basics/card-item/runtime/corners.mjs +33 -1
  87. package/dist/components/biz/basics/card-item/schema/component.mjs +14 -1
  88. package/dist/components/biz/basics/card-item/schema/data.schema.mjs +8 -1
  89. package/dist/components/biz/basics/card-item/schema/event.schema.mjs +8 -1
  90. package/dist/components/biz/basics/card-item/schema/index.mjs +17 -1
  91. package/dist/components/biz/basics/card-item/schema/props.schema.mjs +18 -1
  92. package/dist/components/biz/basics/card-item/schema/style.schema.mjs +7 -1
  93. package/dist/components/biz/basics/card-layout/defaults/default-props.mjs +13 -1
  94. package/dist/components/biz/basics/card-layout/runtime/client.mjs +38 -1
  95. package/dist/components/biz/basics/card-layout/schema/component.mjs +14 -1
  96. package/dist/components/biz/basics/card-layout/schema/data.schema.mjs +8 -1
  97. package/dist/components/biz/basics/card-layout/schema/event.schema.mjs +5 -1
  98. package/dist/components/biz/basics/card-layout/schema/index.mjs +17 -1
  99. package/dist/components/biz/basics/card-layout/schema/props.schema.mjs +28 -1
  100. package/dist/components/biz/basics/card-layout/schema/style.schema.mjs +7 -1
  101. package/dist/components/biz/basics/fullscreen-feed/basic-fullscreen.mjs +268 -1
  102. package/dist/components/biz/basics/fullscreen-feed/defaults/default-props.mjs +11 -1
  103. package/dist/components/biz/basics/fullscreen-feed/index.mjs +12 -1
  104. package/dist/components/biz/basics/fullscreen-feed/runtime/adapters.mjs +97 -1
  105. package/dist/components/biz/basics/fullscreen-feed/runtime/bottom-info.mjs +125 -1
  106. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +390 -1
  107. package/dist/components/biz/basics/fullscreen-feed/runtime/comment-modal.mjs +107 -1
  108. package/dist/components/biz/basics/fullscreen-feed/runtime/interaction-sync.mjs +134 -1
  109. package/dist/components/biz/basics/fullscreen-feed/runtime/post-slide.mjs +232 -1
  110. package/dist/components/biz/basics/fullscreen-feed/runtime/styles.module.mjs +25 -152
  111. package/dist/components/biz/basics/fullscreen-feed/runtime/use-mixed-feed-controller.mjs +193 -1
  112. package/dist/components/biz/basics/fullscreen-feed/runtime/use-series-feed-controller.mjs +212 -1
  113. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +273 -1
  114. package/dist/components/biz/basics/fullscreen-feed/runtime/video-slide.mjs +373 -1
  115. package/dist/components/biz/basics/fullscreen-feed/schema/component.mjs +14 -1
  116. package/dist/components/biz/basics/fullscreen-feed/schema/data.schema.mjs +11 -1
  117. package/dist/components/biz/basics/fullscreen-feed/schema/event.schema.mjs +13 -1
  118. package/dist/components/biz/basics/fullscreen-feed/schema/index.mjs +17 -1
  119. package/dist/components/biz/basics/fullscreen-feed/schema/props.schema.mjs +20 -1
  120. package/dist/components/biz/basics/fullscreen-feed/schema/style.schema.mjs +5 -1
  121. package/dist/components/biz/basics/logo/variants/basic-logo/defaults/default-props.mjs +19 -1
  122. package/dist/components/biz/basics/logo/variants/basic-logo/index.mjs +9 -1
  123. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +169 -1
  124. package/dist/components/biz/basics/logo/variants/basic-logo/schema/component.mjs +14 -1
  125. package/dist/components/biz/basics/logo/variants/basic-logo/schema/data.schema.mjs +9 -1
  126. package/dist/components/biz/basics/logo/variants/basic-logo/schema/event.schema.mjs +23 -1
  127. package/dist/components/biz/basics/logo/variants/basic-logo/schema/index.mjs +17 -1
  128. package/dist/components/biz/basics/logo/variants/basic-logo/schema/props.schema.mjs +78 -1
  129. package/dist/components/biz/basics/logo/variants/basic-logo/schema/style.schema.mjs +7 -1
  130. package/dist/components/biz/basics/search/shared/components/search-box.mjs +55 -1
  131. package/dist/components/biz/basics/search/shared/config/default-data.mjs +15 -1
  132. package/dist/components/biz/basics/search/shared/config/schema.mjs +50 -1
  133. package/dist/components/biz/basics/search/variants/basic-search/defaults/default-props.mjs +10 -1
  134. package/dist/components/biz/basics/search/variants/basic-search/index.mjs +12 -1
  135. package/dist/components/biz/basics/search/variants/basic-search/runtime/client.mjs +31 -1
  136. package/dist/components/biz/basics/search/variants/basic-search/schema/component.mjs +14 -1
  137. package/dist/components/biz/basics/search/variants/basic-search/schema/data.schema.mjs +8 -1
  138. package/dist/components/biz/basics/search/variants/basic-search/schema/event.schema.mjs +7 -1
  139. package/dist/components/biz/basics/search/variants/basic-search/schema/index.mjs +17 -1
  140. package/dist/components/biz/basics/search/variants/basic-search/schema/props.schema.mjs +7 -1
  141. package/dist/components/biz/basics/search/variants/basic-search/schema/style.schema.mjs +7 -1
  142. package/dist/components/biz/basics/search/variants/filter-search/defaults/default-props.mjs +14 -1
  143. package/dist/components/biz/basics/search/variants/filter-search/index.mjs +12 -1
  144. package/dist/components/biz/basics/search/variants/filter-search/runtime/client.mjs +63 -1
  145. package/dist/components/biz/basics/search/variants/filter-search/schema/component.mjs +14 -1
  146. package/dist/components/biz/basics/search/variants/filter-search/schema/data.schema.mjs +8 -1
  147. package/dist/components/biz/basics/search/variants/filter-search/schema/event.schema.mjs +7 -1
  148. package/dist/components/biz/basics/search/variants/filter-search/schema/index.mjs +17 -1
  149. package/dist/components/biz/basics/search/variants/filter-search/schema/props.schema.mjs +22 -1
  150. package/dist/components/biz/basics/search/variants/filter-search/schema/style.schema.mjs +7 -1
  151. package/dist/components/biz/basics/search/variants/simple-search/defaults/default-props.mjs +10 -1
  152. package/dist/components/biz/basics/search/variants/simple-search/index.mjs +9 -1
  153. package/dist/components/biz/basics/search/variants/simple-search/runtime/client.mjs +37 -1
  154. package/dist/components/biz/basics/search/variants/simple-search/schema/component.mjs +14 -1
  155. package/dist/components/biz/basics/search/variants/simple-search/schema/data.schema.mjs +8 -1
  156. package/dist/components/biz/basics/search/variants/simple-search/schema/event.schema.mjs +7 -1
  157. package/dist/components/biz/basics/search/variants/simple-search/schema/index.mjs +17 -1
  158. package/dist/components/biz/basics/search/variants/simple-search/schema/props.schema.mjs +7 -1
  159. package/dist/components/biz/basics/search/variants/simple-search/schema/style.schema.mjs +7 -1
  160. package/dist/components/biz/basics/search/variants/tag-search/defaults/default-props.mjs +18 -1
  161. package/dist/components/biz/basics/search/variants/tag-search/index.mjs +9 -1
  162. package/dist/components/biz/basics/search/variants/tag-search/runtime/client.mjs +67 -1
  163. package/dist/components/biz/basics/search/variants/tag-search/schema/component.mjs +14 -1
  164. package/dist/components/biz/basics/search/variants/tag-search/schema/data.schema.mjs +8 -1
  165. package/dist/components/biz/basics/search/variants/tag-search/schema/event.schema.mjs +7 -1
  166. package/dist/components/biz/basics/search/variants/tag-search/schema/index.mjs +17 -1
  167. package/dist/components/biz/basics/search/variants/tag-search/schema/props.schema.mjs +37 -1
  168. package/dist/components/biz/basics/search/variants/tag-search/schema/style.schema.mjs +7 -1
  169. package/dist/components/biz/business/banner/variants/basic-banner/defaults/default-props.mjs +15 -1
  170. package/dist/components/biz/business/banner/variants/basic-banner/index.mjs +12 -1
  171. package/dist/components/biz/business/banner/variants/basic-banner/inspector-schema.mjs +64 -1
  172. package/dist/components/biz/business/banner/variants/basic-banner/material.mjs +21 -1
  173. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +126 -1
  174. package/dist/components/biz/business/banner/variants/basic-banner/schema/component.mjs +14 -1
  175. package/dist/components/biz/business/banner/variants/basic-banner/schema/data.schema.mjs +53 -1
  176. package/dist/components/biz/business/banner/variants/basic-banner/schema/event.schema.mjs +5 -1
  177. package/dist/components/biz/business/banner/variants/basic-banner/schema/index.mjs +17 -1
  178. package/dist/components/biz/business/banner/variants/basic-banner/schema/props.schema.mjs +40 -1
  179. package/dist/components/biz/business/banner/variants/basic-banner/schema/style.schema.mjs +7 -1
  180. package/dist/components/biz/business/banner/variants/basic-banner/server.mjs +25 -1
  181. package/dist/components/biz/business/banner-carousel/client.mjs +122 -1
  182. package/dist/components/biz/business/banner-carousel/default-props.mjs +15 -1
  183. package/dist/components/biz/business/banner-carousel/material.mjs +21 -1
  184. package/dist/components/biz/business/banner-carousel/schema.mjs +85 -1
  185. package/dist/components/biz/business/banner-carousel/server.mjs +22 -1
  186. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/defaults/default-props.mjs +8 -1
  187. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/index.mjs +9 -1
  188. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/runtime/client.mjs +41 -1
  189. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/component.mjs +14 -1
  190. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/data.schema.mjs +8 -1
  191. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/event.schema.mjs +5 -1
  192. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/index.mjs +17 -1
  193. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/props.schema.mjs +12 -1
  194. package/dist/components/biz/business/card-grid/variants/card-grid-2x3/schema/style.schema.mjs +7 -1
  195. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/defaults/default-props.mjs +8 -1
  196. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/index.mjs +9 -1
  197. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/runtime/client.mjs +106 -1
  198. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/component.mjs +14 -1
  199. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/data.schema.mjs +8 -1
  200. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/event.schema.mjs +5 -1
  201. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/index.mjs +17 -1
  202. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/props.schema.mjs +12 -1
  203. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/schema/style.schema.mjs +7 -1
  204. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/defaults/default-props.mjs +8 -1
  205. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/index.mjs +9 -1
  206. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/runtime/client.mjs +41 -1
  207. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/component.mjs +14 -1
  208. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/data.schema.mjs +8 -1
  209. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/event.schema.mjs +5 -1
  210. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/index.mjs +17 -1
  211. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/props.schema.mjs +12 -1
  212. package/dist/components/biz/business/card-grid/variants/card-grid-2x4/schema/style.schema.mjs +7 -1
  213. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/defaults/default-props.mjs +8 -1
  214. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/index.mjs +9 -1
  215. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/runtime/client.mjs +41 -1
  216. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/component.mjs +14 -1
  217. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/data.schema.mjs +8 -1
  218. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/event.schema.mjs +5 -1
  219. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/index.mjs +17 -1
  220. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/props.schema.mjs +12 -1
  221. package/dist/components/biz/business/card-grid/variants/card-grid-3x3/schema/style.schema.mjs +7 -1
  222. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/defaults/default-props.mjs +8 -1
  223. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/index.mjs +9 -1
  224. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/runtime/client.mjs +106 -1
  225. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/component.mjs +14 -1
  226. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/data.schema.mjs +8 -1
  227. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/event.schema.mjs +5 -1
  228. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/index.mjs +17 -1
  229. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/props.schema.mjs +12 -1
  230. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/schema/style.schema.mjs +7 -1
  231. package/dist/components/biz/business/channel-list/channel-filter-dialog.mjs +190 -1
  232. package/dist/components/biz/business/channel-list/client.mjs +136 -1
  233. package/dist/components/biz/business/channel-list/default-props.mjs +12 -1
  234. package/dist/components/biz/business/channel-list/material.mjs +21 -1
  235. package/dist/components/biz/business/channel-list/schema.mjs +39 -1
  236. package/dist/components/biz/business/comment/comment-input.mjs +772 -5
  237. package/dist/components/biz/business/comment/comment-item.mjs +190 -1
  238. package/dist/components/biz/business/comment/comment-list.mjs +722 -1
  239. package/dist/components/biz/business/comment/comment-media.mjs +57 -1
  240. package/dist/components/biz/business/comment/comment-rich-text.mjs +69 -1
  241. package/dist/components/biz/business/comment/reply-detail.mjs +978 -1
  242. package/dist/components/biz/business/comment/time-display.mjs +20 -1
  243. package/dist/components/biz/business/comment/use-keyboard-handler.mjs +142 -1
  244. package/dist/components/biz/business/contact/contact-item.mjs +45 -1
  245. package/dist/components/biz/business/contact/contact-list.mjs +212 -1
  246. package/dist/components/biz/business/contact/contact-search.mjs +128 -1
  247. package/dist/components/biz/business/detail/shared/detail-follow-action.mjs +105 -1
  248. package/dist/components/biz/business/detail/shared/detail-info-tags.mjs +24 -1
  249. package/dist/components/biz/business/detail/shared/detail-info-title.mjs +82 -1
  250. package/dist/components/biz/business/detail/shared/detail-introduction.mjs +109 -1
  251. package/dist/components/biz/business/detail/shared/detail-operate.mjs +340 -1
  252. package/dist/components/biz/business/detail/shared/detail-structured-data.mjs +63 -1
  253. package/dist/components/biz/business/detail/shared/editor-preview.mjs +67 -1
  254. package/dist/components/biz/business/detail/shared/material-route-context.mjs +44 -1
  255. package/dist/components/biz/business/detail/shared/metadata-utils.mjs +21 -1
  256. package/dist/components/biz/business/detail/shared/post-recommend-list.mjs +184 -1
  257. package/dist/components/biz/business/detail/shared/registry.mjs +52 -1
  258. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +191 -1
  259. package/dist/components/biz/business/detail/shared/seo-config.mjs +28 -1
  260. package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +89 -1
  261. package/dist/components/biz/business/detail/shared/video-detail-server-data.mjs +46 -1
  262. package/dist/components/biz/business/detail/shared/video-hero.mjs +395 -1
  263. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +106 -1
  264. package/dist/components/biz/business/detail/video-detail-actions/material.mjs +18 -1
  265. package/dist/components/biz/business/detail/video-detail-actions/schema.mjs +11 -1
  266. package/dist/components/biz/business/detail/video-detail-actions/server.mjs +47 -1
  267. package/dist/components/biz/business/detail/video-detail-info/client.mjs +41 -1
  268. package/dist/components/biz/business/detail/video-detail-info/material.mjs +18 -1
  269. package/dist/components/biz/business/detail/video-detail-info/schema.mjs +20 -1
  270. package/dist/components/biz/business/detail/video-detail-info/server.mjs +98 -1
  271. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/client.mjs +51 -1
  272. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/material.mjs +18 -1
  273. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/schema.mjs +20 -1
  274. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/server.mjs +45 -1
  275. package/dist/components/biz/business/detail/video-detail-player/client.mjs +144 -1
  276. package/dist/components/biz/business/detail/video-detail-player/material.mjs +18 -1
  277. package/dist/components/biz/business/detail/video-detail-player/schema.mjs +11 -1
  278. package/dist/components/biz/business/detail/video-detail-player/server.mjs +17 -1
  279. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +552 -1
  280. package/dist/components/biz/business/detail/video-detail-recommend/material.mjs +18 -1
  281. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +58 -1
  282. package/dist/components/biz/business/detail/video-detail-recommend/server.mjs +18 -1
  283. package/dist/components/biz/business/detail/video-detail-recommend/utils.mjs +68 -1
  284. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/defaults/default-props.mjs +12 -1
  285. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/index.mjs +9 -1
  286. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/runtime/client.mjs +66 -1
  287. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/component.mjs +14 -1
  288. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/data.schema.mjs +43 -1
  289. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/event.schema.mjs +5 -1
  290. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/index.mjs +17 -1
  291. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/props.schema.mjs +32 -1
  292. package/dist/components/biz/business/feature-grid/variants/basic-feature-grid/schema/style.schema.mjs +7 -1
  293. package/dist/components/biz/business/floating-ball/client.mjs +31 -1
  294. package/dist/components/biz/business/floating-ball/material.mjs +18 -1
  295. package/dist/components/biz/business/floating-ball/schema.mjs +22 -1
  296. package/dist/components/biz/business/floating-ball/server.mjs +17 -1
  297. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/defaults/default-props.mjs +11 -1
  298. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/index.mjs +9 -1
  299. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/runtime/client.mjs +71 -1
  300. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/schema/component.mjs +14 -1
  301. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/schema/data.schema.mjs +11 -1
  302. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-post-feed/schema/index.mjs +17 -1
  303. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/defaults/default-props.mjs +11 -1
  304. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/index.mjs +9 -1
  305. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/runtime/client.mjs +64 -1
  306. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/schema/component.mjs +14 -1
  307. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/schema/data.schema.mjs +11 -1
  308. package/dist/components/biz/business/fullscreen-feed/variants/fullscreen-video-feed/schema/index.mjs +17 -1
  309. package/dist/components/biz/business/fullscreen-feed/variants/shared/runtime-compat.mjs +522 -1
  310. package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +29 -1
  311. package/dist/components/biz/business/header-search/header-avatar-icon/material.mjs +18 -1
  312. package/dist/components/biz/business/header-search/header-avatar-icon/schema.mjs +11 -1
  313. package/dist/components/biz/business/header-search/header-avatar-icon/server.mjs +17 -1
  314. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +36 -1
  315. package/dist/components/biz/business/header-search/header-avatar-logo-search/material.mjs +18 -1
  316. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +24 -1
  317. package/dist/components/biz/business/header-search/header-avatar-logo-search/server.mjs +17 -1
  318. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +45 -1
  319. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/material.mjs +18 -1
  320. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/schema.mjs +22 -1
  321. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/server.mjs +17 -1
  322. package/dist/components/biz/business/header-search/header-logo-search/client.mjs +33 -1
  323. package/dist/components/biz/business/header-search/header-logo-search/material.mjs +18 -1
  324. package/dist/components/biz/business/header-search/header-logo-search/schema.mjs +24 -1
  325. package/dist/components/biz/business/header-search/header-logo-search/server.mjs +17 -1
  326. package/dist/components/biz/business/header-search/header-search/client.mjs +20 -1
  327. package/dist/components/biz/business/header-search/header-search/material.mjs +18 -1
  328. package/dist/components/biz/business/header-search/header-search/schema.mjs +11 -1
  329. package/dist/components/biz/business/header-search/header-search/server.mjs +17 -1
  330. package/dist/components/biz/business/header-search/shared/avatar.mjs +44 -1
  331. package/dist/components/biz/business/header-search/shared/logo.mjs +28 -1
  332. package/dist/components/biz/business/header-search/shared/search.mjs +28 -1
  333. package/dist/components/biz/business/home-recommend/home-recommend-grid/client.mjs +48 -1
  334. package/dist/components/biz/business/home-recommend/home-recommend-grid/index.mjs +14 -1
  335. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +193 -1
  336. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.mjs +18 -1
  337. package/dist/components/biz/business/home-recommend/home-recommend-grid/schema.mjs +24 -1
  338. package/dist/components/biz/business/home-recommend/home-recommend-grid/server.mjs +49 -1
  339. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.mjs +44 -1
  340. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/index.mjs +14 -1
  341. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +169 -1
  342. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.mjs +18 -1
  343. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/schema.mjs +24 -1
  344. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/server.mjs +44 -1
  345. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +498 -1
  346. package/dist/components/biz/business/home-recommend/shared/home-recommend-default-config.mjs +25 -1
  347. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +130 -1
  348. package/dist/components/biz/business/home-recommend/shared/home-recommend-runtime-props.mjs +34 -1
  349. package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +288 -1
  350. package/dist/components/biz/business/home-recommend/shared/home-recommend-video-detail.mjs +38 -1
  351. package/dist/components/biz/business/image-text-recommend/client.mjs +423 -1
  352. package/dist/components/biz/business/image-text-recommend/material.mjs +21 -1
  353. package/dist/components/biz/business/image-text-recommend/schema.mjs +117 -1
  354. package/dist/components/biz/business/image-text-recommend/server.mjs +53 -1
  355. package/dist/components/biz/business/image-text-recommend/shared/query.mjs +32 -1
  356. package/dist/components/biz/business/large-feature-grid/card-item.mjs +91 -1
  357. package/dist/components/biz/business/large-feature-grid/client.mjs +88 -1
  358. package/dist/components/biz/business/large-feature-grid/material.mjs +21 -1
  359. package/dist/components/biz/business/large-feature-grid/schema.mjs +81 -1
  360. package/dist/components/biz/business/large-feature-grid/server.mjs +16 -1
  361. package/dist/components/biz/business/marquee/client.mjs +230 -1
  362. package/dist/components/biz/business/marquee/marquee.module.mjs +13 -25
  363. package/dist/components/biz/business/marquee/material.mjs +21 -1
  364. package/dist/components/biz/business/marquee/schema.mjs +97 -1
  365. package/dist/components/biz/business/marquee/server.mjs +17 -1
  366. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/defaults/default-props.mjs +21 -1
  367. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/index.mjs +9 -1
  368. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/channel-filter-dialog.mjs +180 -1
  369. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +148 -1
  370. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/component.mjs +14 -1
  371. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/data.schema.mjs +9 -1
  372. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/event.schema.mjs +27 -1
  373. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/index.mjs +17 -1
  374. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/props.schema.mjs +92 -1
  375. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/schema/style.schema.mjs +7 -1
  376. package/dist/components/biz/business/post-card/variants/basic-post-card/defaults/default-props.mjs +8 -1
  377. package/dist/components/biz/business/post-card/variants/basic-post-card/index.mjs +9 -1
  378. package/dist/components/biz/business/post-card/variants/basic-post-card/runtime/client.mjs +119 -1
  379. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/component.mjs +14 -1
  380. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/data.schema.mjs +8 -1
  381. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/event.schema.mjs +5 -1
  382. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/index.mjs +17 -1
  383. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/props.schema.mjs +5 -1
  384. package/dist/components/biz/business/post-card/variants/basic-post-card/schema/style.schema.mjs +7 -1
  385. package/dist/components/biz/business/profile/profile-header/client.mjs +243 -1
  386. package/dist/components/biz/business/profile/profile-header/material.mjs +59 -1
  387. package/dist/components/biz/business/profile/profile-header/schema.mjs +11 -1
  388. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +235 -1
  389. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +135 -1
  390. package/dist/components/biz/business/profile/profile-main/client.mjs +234 -1
  391. package/dist/components/biz/business/profile/profile-main/material.mjs +18 -1
  392. package/dist/components/biz/business/profile/profile-main/schema.mjs +11 -1
  393. package/dist/components/biz/business/profile/profile-main/server.mjs +13 -1
  394. package/dist/components/biz/business/profile/profile-main/shell.mjs +187 -1
  395. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +519 -1
  396. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/server.mjs +13 -1
  397. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +250 -1
  398. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/server.mjs +13 -1
  399. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +250 -1
  400. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/server.mjs +13 -1
  401. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +149 -1
  402. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/server.mjs +13 -1
  403. package/dist/components/biz/business/profile/profile-main/utils.mjs +248 -1
  404. package/dist/components/biz/business/profile/profile-main/variants.mjs +40 -1
  405. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/defaults/default-props.mjs +15 -1
  406. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/index.mjs +9 -1
  407. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/runtime/client.mjs +168 -1
  408. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/runtime/recommended-users-skeleton.mjs +119 -1
  409. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/component.mjs +14 -1
  410. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/data.schema.mjs +9 -1
  411. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/event.schema.mjs +17 -1
  412. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/index.mjs +17 -1
  413. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/props.schema.mjs +54 -1
  414. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/schema/style.schema.mjs +7 -1
  415. package/dist/components/biz/business/search-bar/variants/basic-search-bar/defaults/default-props.mjs +15 -1
  416. package/dist/components/biz/business/search-bar/variants/basic-search-bar/index.mjs +9 -1
  417. package/dist/components/biz/business/search-bar/variants/basic-search-bar/runtime/client.mjs +52 -1
  418. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/component.mjs +14 -1
  419. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/data.schema.mjs +9 -1
  420. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/event.schema.mjs +5 -1
  421. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/index.mjs +17 -1
  422. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/props.schema.mjs +117 -1
  423. package/dist/components/biz/business/search-bar/variants/basic-search-bar/schema/style.schema.mjs +7 -1
  424. package/dist/components/biz/business/search-bar/variants/detail-search-bar/defaults/default-props.mjs +22 -1
  425. package/dist/components/biz/business/search-bar/variants/detail-search-bar/index.mjs +9 -1
  426. package/dist/components/biz/business/search-bar/variants/detail-search-bar/runtime/client.mjs +53 -1
  427. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/component.mjs +14 -1
  428. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/data.schema.mjs +9 -1
  429. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/event.schema.mjs +5 -1
  430. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/index.mjs +17 -1
  431. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/props.schema.mjs +117 -1
  432. package/dist/components/biz/business/search-bar/variants/detail-search-bar/schema/style.schema.mjs +7 -1
  433. package/dist/components/biz/business/search-bar/variants/filter-search-bar/defaults/default-props.mjs +15 -1
  434. package/dist/components/biz/business/search-bar/variants/filter-search-bar/index.mjs +9 -1
  435. package/dist/components/biz/business/search-bar/variants/filter-search-bar/runtime/client.mjs +52 -1
  436. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/component.mjs +14 -1
  437. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/data.schema.mjs +9 -1
  438. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/event.schema.mjs +25 -1
  439. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/index.mjs +17 -1
  440. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/props.schema.mjs +128 -1
  441. package/dist/components/biz/business/search-bar/variants/filter-search-bar/schema/style.schema.mjs +7 -1
  442. package/dist/components/biz/business/search-bar/variants/tag-search-bar/defaults/default-props.mjs +15 -1
  443. package/dist/components/biz/business/search-bar/variants/tag-search-bar/index.mjs +12 -1
  444. package/dist/components/biz/business/search-bar/variants/tag-search-bar/runtime/client.mjs +58 -1
  445. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/component.mjs +14 -1
  446. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/data.schema.mjs +9 -1
  447. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/event.schema.mjs +38 -1
  448. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/index.mjs +17 -1
  449. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/props.schema.mjs +144 -1
  450. package/dist/components/biz/business/search-bar/variants/tag-search-bar/schema/style.schema.mjs +7 -1
  451. package/dist/components/biz/business/search-history/client.mjs +121 -1
  452. package/dist/components/biz/business/search-history/material.mjs +18 -1
  453. package/dist/components/biz/business/search-history/schema.mjs +20 -1
  454. package/dist/components/biz/business/search-history/server.mjs +17 -1
  455. package/dist/components/biz/business/search-input/client.mjs +108 -1
  456. package/dist/components/biz/business/search-input/material.mjs +18 -1
  457. package/dist/components/biz/business/search-input/schema.mjs +11 -1
  458. package/dist/components/biz/business/search-input/server.mjs +17 -1
  459. package/dist/components/biz/business/shortcut-grid/client.mjs +64 -1
  460. package/dist/components/biz/business/shortcut-grid/material.mjs +18 -1
  461. package/dist/components/biz/business/shortcut-grid/schema.mjs +70 -1
  462. package/dist/components/biz/business/shortcut-grid/server.mjs +17 -1
  463. package/dist/components/biz/business/tab-bar/client.mjs +102 -1
  464. package/dist/components/biz/business/tab-bar/material.mjs +21 -1
  465. package/dist/components/biz/business/tab-bar/schema.mjs +11 -1
  466. package/dist/components/biz/business/tab-bar/server.mjs +17 -1
  467. package/dist/components/biz/business/text-recommend/client.mjs +69 -1
  468. package/dist/components/biz/business/text-recommend/material.mjs +18 -1
  469. package/dist/components/biz/business/text-recommend/schema.mjs +28 -1
  470. package/dist/components/biz/business/text-recommend/server.mjs +18 -1
  471. package/dist/components/biz/example/button/client.mjs +43 -1
  472. package/dist/components/biz/example/button/material.mjs +18 -1
  473. package/dist/components/biz/example/button/schema.mjs +47 -1
  474. package/dist/components/biz/example/button/server.mjs +32 -1
  475. package/dist/components/biz/example/button/variants.mjs +22 -1
  476. package/dist/components/biz/renderer/renderer.mjs +73 -1
  477. package/dist/components/biz/utils/constants/card-spec.mjs +48 -1
  478. package/dist/components/biz/utils/helpers/get-channel-list.mjs +14 -1
  479. package/dist/components/biz/utils/helpers/url.mjs +16 -1
  480. package/dist/components/biz/utils/schema/data.mjs +22 -1
  481. package/dist/components/biz/utils/styles/helpers.mjs +84 -1
  482. package/dist/components/biz/utils/styles/schema.mjs +306 -1
  483. package/dist/components/biz/utils/transformers/card-grid.mjs +71 -1
  484. package/dist/components/biz/utils/transformers/data.mjs +171 -1
  485. package/dist/components/common/at-element/index.mjs +47 -1
  486. package/dist/components/common/background-preview-modal/background-preview-modal.mjs +73 -1
  487. package/dist/components/common/blocked-dialog/blocked-dialog.mjs +54 -1
  488. package/dist/components/common/cards/mini-three-card.mjs +55 -1
  489. package/dist/components/common/cards/style.module.mjs +12 -24
  490. package/dist/components/common/collection-popup/collection-create-modal.mjs +130 -1
  491. package/dist/components/common/collection-popup/index.mjs +292 -1
  492. package/dist/components/common/debug-locale-switcher/index.mjs +59 -1
  493. package/dist/components/common/delete-confirm-dialog/delete-confirm-dialog.mjs +66 -1
  494. package/dist/components/common/empty/index.mjs +51 -1
  495. package/dist/components/common/follow-button/index.mjs +133 -1
  496. package/dist/components/common/follow-button/unfollow-confirm-dialog.mjs +23 -1
  497. package/dist/components/common/funhub-provider/funhub-provider.mjs +85 -1
  498. package/dist/components/common/header-nav/client.mjs +51 -1
  499. package/dist/components/common/icons/add.mjs +21 -1
  500. package/dist/components/common/icons/comment.mjs +30 -1
  501. package/dist/components/common/icons/delete.mjs +32 -1
  502. package/dist/components/common/icons/left-arrow.mjs +15 -1
  503. package/dist/components/common/icons/more.mjs +30 -1
  504. package/dist/components/common/icons/right-arrow.mjs +19 -1
  505. package/dist/components/common/icons/setting.mjs +45 -1
  506. package/dist/components/common/icons/share.mjs +20 -1
  507. package/dist/components/common/icons/video.mjs +22 -1
  508. package/dist/components/common/image-crop/image-crop.mjs +182 -1
  509. package/dist/components/common/image-crop/show-image-crop.mjs +102 -1
  510. package/dist/components/common/image-crop-modal/image-crop-modal.mjs +128 -2
  511. package/dist/components/common/info-card/card-header.mjs +70 -1
  512. package/dist/components/common/info-card/card-text.mjs +49 -1
  513. package/dist/components/common/interaction-animations.module.mjs +14 -84
  514. package/dist/components/common/intl-provider/intl-provider.mjs +21 -1
  515. package/dist/components/common/keep-scroll-position/index.mjs +39 -1
  516. package/dist/components/common/list/collection-list/collection-list-item.mjs +93 -1
  517. package/dist/components/common/list/collection-list/collection-list.mjs +21 -1
  518. package/dist/components/common/list/post-list/post-list-item.mjs +54 -1
  519. package/dist/components/common/list/post-list/post-list.mjs +143 -1
  520. package/dist/components/common/list/user-activity-list/user-activity-list-actions.mjs +269 -1
  521. package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +468 -1
  522. package/dist/components/common/list/user-activity-list/user-activity-list.mjs +139 -1
  523. package/dist/components/common/list/video-list/video-list-item.mjs +104 -1
  524. package/dist/components/common/list/video-list/video-list.mjs +152 -1
  525. package/dist/components/common/locale-sync/locale-sync.mjs +62 -1
  526. package/dist/components/common/login-dialog/login-dialog.mjs +29 -1
  527. package/dist/components/common/media-preview/index.mjs +162 -1
  528. package/dist/components/common/media-preview/video-play.mjs +237 -1
  529. package/dist/components/common/page-loading/index.mjs +20 -1
  530. package/dist/components/common/page-skeleton/page-skeleton.mjs +7 -1
  531. package/dist/components/common/photo-grid/common-photo-grid.d.mts +0 -1
  532. package/dist/components/common/photo-grid/common-photo-grid.mjs +320 -1
  533. package/dist/components/common/photo-grid/index.mjs +226 -1
  534. package/dist/components/common/photo-preview/common-photo-preview.mjs +96 -1
  535. package/dist/components/common/photo-preview/decrypt-loading.mjs +66 -2
  536. package/dist/components/common/photo-preview/index.d.mts +0 -2
  537. package/dist/components/common/photo-preview/index.mjs +63 -1
  538. package/dist/components/common/photo-preview/style.mjs +7 -19
  539. package/dist/components/common/picker/gender-picker/gender-picker.mjs +66 -1
  540. package/dist/components/common/picker/picker-drawer/picker-drawer.mjs +78 -1
  541. package/dist/components/common/popup-video/index.mjs +76 -1
  542. package/dist/components/common/popup-video/popup-video.module.mjs +7 -16
  543. package/dist/components/common/series-episodes/index.mjs +555 -1
  544. package/dist/components/common/share-popup/share-content.mjs +155 -1
  545. package/dist/components/common/share-popup/share-drawer.mjs +100 -1
  546. package/dist/components/common/share-popup/share-popup.mjs +326 -1
  547. package/dist/components/common/skeleton/post-list-item-skeleton.mjs +99 -1
  548. package/dist/components/common/skeleton/user-activity-list-item-skeleton.mjs +146 -1
  549. package/dist/components/common/skeleton/video-list-item-skeleton.mjs +110 -1
  550. package/dist/components/common/tab-bar/index.mjs +120 -1
  551. package/dist/components/common/theme-sync/index.mjs +22 -1
  552. package/dist/components/common/top-nav-bar/client.mjs +63 -1
  553. package/dist/components/common/top-nav-bar/fullscreen.mjs +27 -1
  554. package/dist/components/common/top-nav-bar/index.mjs +29 -1
  555. package/dist/components/common/top-nav-bar/normal.mjs +20 -1
  556. package/dist/components/common/video-player/create-video.mjs +27 -2
  557. package/dist/components/common/video-player/index.mjs +710 -5
  558. package/dist/components/common/video-player/playing-videos.mjs +73 -1
  559. package/dist/components/common/video-player/process-m3u8-cache.mjs +282 -1
  560. package/dist/components/common/video-player/style.module.mjs +7 -257
  561. package/dist/components/common/wait-loading.mjs +119 -1
  562. package/dist/components/pages/(follow)/_components/follow-button/index.mjs +80 -1
  563. package/dist/components/pages/(follow)/_components/header-nav/index.mjs +13 -1
  564. package/dist/components/pages/(follow)/_components/interaction-tabs/index.mjs +43 -1
  565. package/dist/components/pages/(follow)/_components/user-list/index.mjs +139 -1
  566. package/dist/components/pages/(follow)/_components/user-list/user-list-item.mjs +46 -1
  567. package/dist/components/pages/(follow)/fans/index.mjs +10 -1
  568. package/dist/components/pages/(follow)/fans/page.mjs +95 -1
  569. package/dist/components/pages/(follow)/followed/index.mjs +10 -1
  570. package/dist/components/pages/(follow)/followed/page.mjs +95 -1
  571. package/dist/components/pages/collection-add/index.mjs +10 -1
  572. package/dist/components/pages/collection-add/page.mjs +161 -1
  573. package/dist/components/pages/collection-create/form.mjs +163 -1
  574. package/dist/components/pages/collection-create/index.mjs +10 -1
  575. package/dist/components/pages/collection-create/page.mjs +28 -1
  576. package/dist/components/pages/collection-detail/_components/collection-detail-card.mjs +183 -1
  577. package/dist/components/pages/collection-detail/detail.mjs +538 -1
  578. package/dist/components/pages/collection-detail/index.mjs +10 -1
  579. package/dist/components/pages/collection-detail/page.mjs +18 -1
  580. package/dist/components/pages/edit/index.mjs +10 -1
  581. package/dist/components/pages/edit/page.mjs +655 -1
  582. package/dist/components/pages/feed-series/feed-series-client.mjs +382 -1
  583. package/dist/components/pages/feed-series/page.mjs +97 -1
  584. package/dist/components/pages/feedback/_components/feedback-form.mjs +256 -1
  585. package/dist/components/pages/feedback/index.mjs +10 -1
  586. package/dist/components/pages/feedback/page.mjs +10 -1
  587. package/dist/components/pages/fullscreen-feed/index.mjs +10 -1
  588. package/dist/components/pages/fullscreen-feed/page.mjs +104 -1
  589. package/dist/components/pages/home/channel-matcher.mjs +30 -1
  590. package/dist/components/pages/home/client.mjs +155 -1
  591. package/dist/components/pages/home/index.mjs +56 -1
  592. package/dist/components/pages/login/agreement-dialog.mjs +104 -1
  593. package/dist/components/pages/login/auth-guard.mjs +37 -1
  594. package/dist/components/pages/login/forgot.mjs +130 -1
  595. package/dist/components/pages/login/index.mjs +107 -1
  596. package/dist/components/pages/login/login-client.mjs +214 -1
  597. package/dist/components/pages/login/password.mjs +186 -1
  598. package/dist/components/pages/login/register.mjs +189 -1
  599. package/dist/components/pages/login/reset-password.mjs +193 -1
  600. package/dist/components/pages/login/verify.mjs +212 -3
  601. package/dist/components/pages/post-detail/page.mjs +28 -1
  602. package/dist/components/pages/post-detail/post-detail-client.mjs +516 -1
  603. package/dist/components/pages/profile/index.mjs +10 -1
  604. package/dist/components/pages/profile/page.mjs +28 -1
  605. package/dist/components/pages/publish/components/collection-card.mjs +49 -1
  606. package/dist/components/pages/publish/components/collection-popup.mjs +81 -1
  607. package/dist/components/pages/publish/components/collection.mjs +97 -1
  608. package/dist/components/pages/publish/components/cover-item.mjs +46 -1
  609. package/dist/components/pages/publish/components/editor.mjs +208 -1
  610. package/dist/components/pages/publish/components/header.mjs +31 -1
  611. package/dist/components/pages/publish/components/material-grid.mjs +52 -1
  612. package/dist/components/pages/publish/components/material-item.mjs +68 -1
  613. package/dist/components/pages/publish/components/toolbar.mjs +39 -1
  614. package/dist/components/pages/publish/components/upload-progress.mjs +53 -1
  615. package/dist/components/pages/publish/components/video-item.mjs +36 -1
  616. package/dist/components/pages/publish/constants.mjs +8 -1
  617. package/dist/components/pages/publish/hooks/use-file-upload.mjs +162 -1
  618. package/dist/components/pages/publish/page-client.mjs +345 -1
  619. package/dist/components/pages/publish/page.mjs +11 -1
  620. package/dist/components/pages/publish/utils/file-upload.mjs +155 -1
  621. package/dist/components/pages/publish/utils/publish-utils.mjs +11 -1
  622. package/dist/components/pages/search/hot-recommend.mjs +185 -1
  623. package/dist/components/pages/search/hot-search.mjs +70 -1
  624. package/dist/components/pages/search/index.mjs +17 -1
  625. package/dist/components/pages/search/page-client.mjs +159 -1
  626. package/dist/components/pages/search/search-result/index.mjs +22 -1
  627. package/dist/components/pages/search/search-result/search-all.mjs +223 -1
  628. package/dist/components/pages/search/search-result/search-user.mjs +203 -1
  629. package/dist/components/pages/search/search-result/search-video-info.mjs +324 -1
  630. package/dist/components/pages/search/search-utils.mjs +48 -1
  631. package/dist/components/pages/search/style.module.mjs +13 -113
  632. package/dist/components/pages/search/top-header.mjs +91 -1
  633. package/dist/components/pages/search-result/page-client.mjs +117 -1
  634. package/dist/components/pages/search-result/search-all.mjs +82 -1
  635. package/dist/components/pages/search-result/search-result-skeleton.mjs +22 -1
  636. package/dist/components/pages/search-result/search-tab.mjs +89 -1
  637. package/dist/components/pages/search-result/search-user.mjs +253 -1
  638. package/dist/components/pages/search-result/search-video.mjs +226 -1
  639. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +256 -4
  640. package/dist/components/pages/settings/_components/settings.mjs +183 -1
  641. package/dist/components/pages/settings/index.mjs +10 -1
  642. package/dist/components/pages/settings/page.mjs +13 -1
  643. package/dist/components/pages/user-follow/_components/follow-no-login.mjs +34 -1
  644. package/dist/components/pages/user-follow/_components/follow-top-header.mjs +25 -1
  645. package/dist/components/pages/user-follow/_components/post-tab.mjs +96 -1
  646. package/dist/components/pages/user-follow/index.mjs +10 -1
  647. package/dist/components/pages/user-follow/page.mjs +106 -1
  648. package/dist/components/pages/user-follow/skeleton.mjs +62 -1
  649. package/dist/components/pages/video-detail/page.mjs +47 -1
  650. package/dist/components/pages/video-detail/video-detail-client.mjs +357 -1
  651. package/dist/components/pages/video-list/index.mjs +59 -1
  652. package/dist/components/pages/video-list/types.mjs +16 -1
  653. package/dist/components/pages/video-list/video-list-client.mjs +106 -1
  654. package/dist/components/pages/video-list/video-list-item.mjs +92 -1
  655. package/dist/components/pages/video-list/video-list-skeleton.mjs +62 -1
  656. package/dist/components/ui/accordion.mjs +62 -1
  657. package/dist/components/ui/alert-dialog.mjs +114 -1
  658. package/dist/components/ui/alert.mjs +50 -1
  659. package/dist/components/ui/aspect-ratio.mjs +17 -1
  660. package/dist/components/ui/avatar.mjs +106 -1
  661. package/dist/components/ui/badge.d.mts +1 -1
  662. package/dist/components/ui/badge.mjs +38 -1
  663. package/dist/components/ui/box.mjs +17 -1
  664. package/dist/components/ui/breadcrumb.mjs +84 -1
  665. package/dist/components/ui/button-group.d.mts +1 -1
  666. package/dist/components/ui/button-group.mjs +49 -1
  667. package/dist/components/ui/button.d.mts +2 -2
  668. package/dist/components/ui/button.mjs +50 -1
  669. package/dist/components/ui/card.mjs +65 -1
  670. package/dist/components/ui/carousel.mjs +142 -1
  671. package/dist/components/ui/checkbox.mjs +25 -1
  672. package/dist/components/ui/collapsible.mjs +31 -1
  673. package/dist/components/ui/combobox.mjs +185 -1
  674. package/dist/components/ui/context-menu.mjs +150 -1
  675. package/dist/components/ui/dialog.mjs +109 -1
  676. package/dist/components/ui/drawer.mjs +91 -1
  677. package/dist/components/ui/dropdown-menu.mjs +154 -1
  678. package/dist/components/ui/empty-icons.mjs +96 -7
  679. package/dist/components/ui/empty.mjs +95 -1
  680. package/dist/components/ui/field.d.mts +1 -1
  681. package/dist/components/ui/field.mjs +131 -1
  682. package/dist/components/ui/hover-card.mjs +43 -1
  683. package/dist/components/ui/image.mjs +257 -1
  684. package/dist/components/ui/infinite-scroll.mjs +168 -1
  685. package/dist/components/ui/input-group.mjs +90 -1
  686. package/dist/components/ui/input.mjs +19 -1
  687. package/dist/components/ui/item.mjs +137 -1
  688. package/dist/components/ui/kbd.mjs +24 -1
  689. package/dist/components/ui/label.mjs +18 -1
  690. package/dist/components/ui/legacy/badge.mjs +80 -1
  691. package/dist/components/ui/legacy/button.mjs +55 -1
  692. package/dist/components/ui/legacy/input.mjs +22 -1
  693. package/dist/components/ui/legacy/popover.mjs +69 -1
  694. package/dist/components/ui/link.mjs +32 -1
  695. package/dist/components/ui/list.mjs +221 -5
  696. package/dist/components/ui/loading.mjs +44 -1
  697. package/dist/components/ui/mask.mjs +17 -1
  698. package/dist/components/ui/menubar.mjs +154 -1
  699. package/dist/components/ui/native-select.mjs +43 -1
  700. package/dist/components/ui/pagination.mjs +90 -1
  701. package/dist/components/ui/popover.mjs +73 -1
  702. package/dist/components/ui/popup.mjs +44 -1
  703. package/dist/components/ui/progress.mjs +53 -1
  704. package/dist/components/ui/radio-group.mjs +34 -1
  705. package/dist/components/ui/rate.mjs +69 -1
  706. package/dist/components/ui/scroll-area.mjs +43 -1
  707. package/dist/components/ui/select.mjs +113 -1
  708. package/dist/components/ui/separator.mjs +20 -1
  709. package/dist/components/ui/sheet.mjs +109 -1
  710. package/dist/components/ui/skeleton.mjs +16 -1
  711. package/dist/components/ui/slider.mjs +46 -1
  712. package/dist/components/ui/sonner.mjs +34 -1
  713. package/dist/components/ui/spinner.mjs +18 -1
  714. package/dist/components/ui/switch.mjs +65 -1
  715. package/dist/components/ui/table.mjs +78 -1
  716. package/dist/components/ui/tabs.mjs +54 -1
  717. package/dist/components/ui/text.mjs +20 -1
  718. package/dist/components/ui/textarea.mjs +16 -1
  719. package/dist/components/ui/time.mjs +91 -1
  720. package/dist/components/ui/toggle-group.mjs +59 -1
  721. package/dist/components/ui/toggle.mjs +41 -1
  722. package/dist/components/ui/tooltip.mjs +49 -1
  723. package/dist/components/ui/wheel-picker.mjs +28 -1
  724. package/dist/constants/event-key.mjs +18 -1
  725. package/dist/constants/query-key.mjs +32 -1
  726. package/dist/constants/revalidate.mjs +9 -1
  727. package/dist/constants/site.mjs +11 -1
  728. package/dist/constants/url-prefix.mjs +11 -1
  729. package/dist/hooks/image-text-recommend.mjs +71 -1
  730. package/dist/hooks/query/hydration-boundary.mjs +34 -1
  731. package/dist/hooks/query/use-query.mjs +114 -1
  732. package/dist/hooks/use-auth.mjs +198 -1
  733. package/dist/hooks/use-browse-report.mjs +466 -1
  734. package/dist/hooks/use-card-decoration.mjs +92 -1
  735. package/dist/hooks/use-content-operate.mjs +525 -1
  736. package/dist/hooks/use-follow.mjs +69 -1
  737. package/dist/hooks/use-fullscreen-gestures.mjs +144 -1
  738. package/dist/hooks/use-interaction-animation.mjs +26 -1
  739. package/dist/hooks/use-keyboard-open.mjs +56 -1
  740. package/dist/hooks/use-like-dislike.mjs +40 -1
  741. package/dist/hooks/use-search-history.mjs +53 -1
  742. package/dist/hooks/use-sticky.mjs +50 -1
  743. package/dist/hooks.mjs +14 -1
  744. package/dist/i18n/locales/en.mjs +820 -3
  745. package/dist/i18n/locales/zh-CN.mjs +820 -3
  746. package/dist/i18n/messages.mjs +20 -1
  747. package/dist/i18n/translator.mjs +38 -1
  748. package/dist/i18n.mjs +165 -1
  749. package/dist/materials.mjs +61 -1
  750. package/dist/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +17 -1
  751. package/dist/pages.mjs +23 -1
  752. package/dist/seo/build-metadata.mjs +163 -1
  753. package/dist/seo/config/index.mjs +22 -1
  754. package/dist/seo/config/page.mjs +301 -6
  755. package/dist/seo/config/site.mjs +25 -1
  756. package/dist/seo/constants.mjs +31 -1
  757. package/dist/seo/helpers.mjs +120 -1
  758. package/dist/seo/resource-hints.mjs +60 -1
  759. package/dist/seo/robots.mjs +36 -1
  760. package/dist/seo/sitemap.mjs +44 -1
  761. package/dist/seo/structured-data/article.mjs +51 -1
  762. package/dist/seo/structured-data/common.mjs +60 -1
  763. package/dist/seo/structured-data/video.mjs +41 -1
  764. package/dist/seo/viewport.mjs +31 -1
  765. package/dist/seo.mjs +15 -1
  766. package/dist/service/generated/client.mjs +1138 -1
  767. package/dist/service/generated/tanstack.mjs +1049 -1
  768. package/dist/service.d.mts +1 -2
  769. package/dist/service.mjs +4 -1
  770. package/dist/store/create-store.mjs +25 -1
  771. package/dist/store/modules/app-config-store.mjs +28 -1
  772. package/dist/store/modules/blocked-modal-store.mjs +30 -1
  773. package/dist/store/modules/follow-ids-store.mjs +12 -1
  774. package/dist/store/modules/login-modal-store.mjs +155 -1
  775. package/dist/store/modules/media-preview-store.mjs +54 -1
  776. package/dist/store/modules/publish-store.mjs +31 -1
  777. package/dist/store/modules/use-demo-store.mjs +17 -1
  778. package/dist/store/modules/user-store.mjs +113 -1
  779. package/dist/store.mjs +10 -1
  780. package/dist/types/safe-at-user.mjs +15 -1
  781. package/dist/types/safe-comment.mjs +30 -1
  782. package/dist/types/safe-grid.mjs +36 -1
  783. package/dist/types/safe-replay.mjs +43 -1
  784. package/dist/types/share.mjs +16 -1
  785. package/dist/ui.mjs +57 -1
  786. package/dist/utils/api-collect.mjs +14 -1
  787. package/dist/utils/channel-storage.mjs +57 -1
  788. package/dist/utils/cn.mjs +15 -1
  789. package/dist/utils/common.mjs +296 -1
  790. package/dist/utils/db.mjs +80 -1
  791. package/dist/utils/decrypt-image-client.mjs +325 -1
  792. package/dist/utils/decrypt.worker.mjs +20 -2
  793. package/dist/utils/event-bus.mjs +33 -1
  794. package/dist/utils/follow-service.mjs +87 -1
  795. package/dist/utils/get-res-url.mjs +94 -1
  796. package/dist/utils/helper.mjs +33 -1
  797. package/dist/utils/http.mjs +194 -1
  798. package/dist/utils/image-compression.mjs +59 -1
  799. package/dist/utils/image-crop.mjs +110 -1
  800. package/dist/utils/loaders.mjs +51 -1
  801. package/dist/utils/login-modal-bridge.mjs +65 -1
  802. package/dist/utils/media.mjs +128 -1
  803. package/dist/utils/password-validator.mjs +86 -1
  804. package/dist/utils/s3-uploader.mjs +40 -1
  805. package/dist/utils/schema/material.mjs +24 -1
  806. package/dist/utils/schema/schema.mjs +147 -1
  807. package/dist/utils/schema/utils.mjs +27 -1
  808. package/dist/utils/share-manager.mjs +183 -1
  809. package/dist/utils/tools.mjs +105 -1
  810. package/dist/utils/uint8.mjs +46 -1
  811. package/dist/utils/upload-file.mjs +429 -1
  812. package/dist/utils.mjs +21 -1
  813. package/package.json +30 -30
  814. package/dist/service/register-by-verify-email-code.d.mts +0 -15
  815. package/dist/service/register-by-verify-email-code.mjs +0 -2
@@ -1,2 +1,90 @@
1
1
 
2
- "use client";import e from"../../../../../utils/get-res-url.mjs";import{decryptImageToUint8Array as t}from"../../../../../utils/decrypt-image-client.mjs";import{pInteractionBrowse as n}from"../../../../../service/generated/client.mjs";import{uint8ArrayToBase64 as r}from"../../../../../utils/uint8.mjs";import{batchQueryContentInteractions as i}from"../../../../../hooks/use-content-operate.mjs";import{useCallback as a,useEffect as o,useMemo as s}from"react";function c(c){let{enabled:l=!0,detailId:u=``,information:d,episodeIndex:f=0,currentSeriesNum:p=1}=c,m=s(()=>String(u||d?.id||``).trim(),[u,d?.id]),h=a(async()=>{let n=d?.links?.[f]?.m3u8_url||``,i=n?`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${e()}/m3f/${n}`)}`:``,a=d?.img_y||d?.img_x||d?.preview_images?.[0]||``,o=``,s=await t(a);return s&&(o=r(s.bytes)),{poster:o,src:i,title:d?.name||``}},[f,d]),g=a(async()=>{if(!m)return null;let e=await i([m],1);return e?.interaction_list?.[0]?e.interaction_list[0].browse_record:null},[m]),_=a(async e=>{if(!m)return;let t=e.browse_episode||p,r=Date.now(),i=String(e.browse_key||r);try{await n({app_id:0,content_type:1,content_id:m,browse_duration:Number(e.browse_duration||0),browse_episode:String(t),browse_key:i,browse_page_ts:r})}catch(e){console.error(`上报播放进度失败:`,e)}},[p,m]);o(()=>{if(!l||typeof window>`u`)return;let e=window;return e.video=m?{[m]:d}:{},e.getVideoInfoAsync=h,e.getVideoBrowseRecordAsync=g,e.reportVideoBrowse=_,()=>{e.getVideoInfoAsync===h&&delete e.getVideoInfoAsync,e.getVideoBrowseRecordAsync===g&&delete e.getVideoBrowseRecordAsync,e.reportVideoBrowse===_&&delete e.reportVideoBrowse}},[g,h,l,d,_,m])}export{c as useVideoDetailWebViewBridge};
2
+ 'use client';
3
+
4
+ import getResUrl from "../../../../../utils/get-res-url.mjs";
5
+ import { decryptImageToUint8Array } from "../../../../../utils/decrypt-image-client.mjs";
6
+ import { pInteractionBrowse } from "../../../../../service/generated/client.mjs";
7
+ import { uint8ArrayToBase64 } from "../../../../../utils/uint8.mjs";
8
+ import { batchQueryContentInteractions } from "../../../../../hooks/use-content-operate.mjs";
9
+ import { useCallback, useEffect, useMemo } from "react";
10
+
11
+ //#region components/biz/business/detail/shared/use-video-detail-webview-bridge.ts
12
+ /**
13
+ * 同步 WebView 所需的全局方法与数据。
14
+ */
15
+ function useVideoDetailWebViewBridge(options) {
16
+ const { enabled = true, detailId = "", information, episodeIndex = 0, currentSeriesNum = 1 } = options;
17
+ const resolvedDetailId = useMemo(() => {
18
+ return String(detailId || information?.id || "").trim();
19
+ }, [detailId, information?.id]);
20
+ /**
21
+ * WebView 拉取当前播放信息。
22
+ */
23
+ const getVideoInfoAsync = useCallback(async () => {
24
+ const m3u8Url = information?.links?.[episodeIndex]?.m3u8_url || "";
25
+ const src = m3u8Url ? `${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${getResUrl()}/m3f/${m3u8Url}`)}` : "";
26
+ const posterUrl = information?.img_y || information?.img_x || information?.preview_images?.[0] || "";
27
+ let posterBase64 = "";
28
+ const res = await decryptImageToUint8Array(posterUrl);
29
+ if (res) posterBase64 = uint8ArrayToBase64(res.bytes);
30
+ return {
31
+ poster: posterBase64,
32
+ src,
33
+ title: information?.name || ""
34
+ };
35
+ }, [episodeIndex, information]);
36
+ /**
37
+ * WebView 拉取播放历史。
38
+ */
39
+ const getVideoBrowseRecordAsync = useCallback(async () => {
40
+ if (!resolvedDetailId) return null;
41
+ const res = await batchQueryContentInteractions([resolvedDetailId], 1);
42
+ if (res?.interaction_list?.[0]) return res.interaction_list[0].browse_record;
43
+ return null;
44
+ }, [resolvedDetailId]);
45
+ /**
46
+ * WebView 上报播放进度。
47
+ */
48
+ const reportVideoBrowse = useCallback(async (payload) => {
49
+ if (!resolvedDetailId) return;
50
+ const resolvedBrowseEpisode = payload.browse_episode || currentSeriesNum;
51
+ const browsePageTs = Date.now();
52
+ const browseKey = String(payload.browse_key || browsePageTs);
53
+ try {
54
+ await pInteractionBrowse({
55
+ app_id: 0,
56
+ content_type: 1,
57
+ content_id: resolvedDetailId,
58
+ browse_duration: Number(payload.browse_duration || 0),
59
+ browse_episode: String(resolvedBrowseEpisode),
60
+ browse_key: browseKey,
61
+ browse_page_ts: browsePageTs
62
+ });
63
+ } catch (error) {
64
+ console.error("上报播放进度失败:", error);
65
+ }
66
+ }, [currentSeriesNum, resolvedDetailId]);
67
+ useEffect(() => {
68
+ if (!enabled || typeof window === "undefined") return;
69
+ const runtimeWindow = window;
70
+ runtimeWindow.video = resolvedDetailId ? { [resolvedDetailId]: information } : {};
71
+ runtimeWindow.getVideoInfoAsync = getVideoInfoAsync;
72
+ runtimeWindow.getVideoBrowseRecordAsync = getVideoBrowseRecordAsync;
73
+ runtimeWindow.reportVideoBrowse = reportVideoBrowse;
74
+ return () => {
75
+ if (runtimeWindow.getVideoInfoAsync === getVideoInfoAsync) delete runtimeWindow.getVideoInfoAsync;
76
+ if (runtimeWindow.getVideoBrowseRecordAsync === getVideoBrowseRecordAsync) delete runtimeWindow.getVideoBrowseRecordAsync;
77
+ if (runtimeWindow.reportVideoBrowse === reportVideoBrowse) delete runtimeWindow.reportVideoBrowse;
78
+ };
79
+ }, [
80
+ getVideoBrowseRecordAsync,
81
+ getVideoInfoAsync,
82
+ enabled,
83
+ information,
84
+ reportVideoBrowse,
85
+ resolvedDetailId
86
+ ]);
87
+ }
88
+
89
+ //#endregion
90
+ export { useVideoDetailWebViewBridge };
@@ -1,2 +1,47 @@
1
1
 
2
- import{gContentGetVideoDetail as e}from"../../../../../service/generated/client.mjs";import{cache as t}from"react";function n(e){if(!e||typeof e!=`object`)return null;let t=e,n=Array.isArray(t.links)?t.links:[];return{...t,mid:String(t.mid||t.id||``),content_type:1,episode_cnt:n.length}}const r=t(async t=>{let r=String(t||``).trim();if(!r)return null;try{return n((await e({id:r},{revalidate:86400,tags:[`video-detail:ssr:${r}`]})).data?.video)}catch(e){return console.error(`详情物料服务端获取视频详情失败`,e),null}});async function i(e){let t=String(e||``).trim();return t?await r(t):null}export{i as getVideoDetailServerInformation};
2
+ import { gContentGetVideoDetail } from "../../../../../service/generated/client.mjs";
3
+ import { cache } from "react";
4
+
5
+ //#region components/biz/business/detail/shared/video-detail-server-data.ts
6
+ const VIDEO_DETAIL_SERVER_REVALIDATE_SECONDS = 1440 * 60;
7
+ /**
8
+ * 将视频详情接口数据映射为详情物料可消费的运行时信息。
9
+ */
10
+ function normalizeVideoDetailToInformation(detail) {
11
+ if (!detail || typeof detail !== "object") return null;
12
+ const raw = detail;
13
+ const links = Array.isArray(raw.links) ? raw.links : [];
14
+ return {
15
+ ...raw,
16
+ mid: String(raw.mid || raw.id || ""),
17
+ content_type: 1,
18
+ episode_cnt: links.length
19
+ };
20
+ }
21
+ /**
22
+ * 服务端获取视频详情(24 小时缓存 + 同请求去重)。
23
+ */
24
+ const fetchVideoDetailInformationCached = cache(async (detailId) => {
25
+ const resolvedDetailId = String(detailId || "").trim();
26
+ if (!resolvedDetailId) return null;
27
+ try {
28
+ return normalizeVideoDetailToInformation((await gContentGetVideoDetail({ id: resolvedDetailId }, {
29
+ revalidate: VIDEO_DETAIL_SERVER_REVALIDATE_SECONDS,
30
+ tags: [`video-detail:ssr:${resolvedDetailId}`]
31
+ })).data?.video);
32
+ } catch (error) {
33
+ console.error("详情物料服务端获取视频详情失败", error);
34
+ return null;
35
+ }
36
+ });
37
+ /**
38
+ * 获取详情物料服务端渲染所需的视频信息。
39
+ */
40
+ async function getVideoDetailServerInformation(detailId) {
41
+ const resolvedDetailId = String(detailId || "").trim();
42
+ if (!resolvedDetailId) return null;
43
+ return await fetchVideoDetailInformationCached(resolvedDetailId);
44
+ }
45
+
46
+ //#endregion
47
+ export { getVideoDetailServerInformation };
@@ -1,2 +1,396 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{pxToVw as t}from"../../../../../utils/helper.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import{useBrowseReport as a}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as o,useMediaPreview as s}from"../../../../common/media-preview/index.mjs";import c from"../../../../common/video-player/index.mjs";import{UserActivityMediaGrid as l}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{memo as u,useCallback as d,useEffect as f,useMemo as p,useRef as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";const y=u(({mode:t=`renderer`,information:n,isVideo:a,episodeIndex:c=0,resumeProgressSeconds:u=0,className:f=``})=>{let m=t===`editor`,h=p(()=>({id:n.id,name:n.name,preview_images:n.preview_images,img_y:n.img_y,img_x:n.img_x}),[n.id,n.name,n.preview_images,n.img_y,n.img_x]),v=p(()=>{let e=n?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(h.preview_images?.length?h.preview_images:[h.img_y||h.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[h.img_x,h.img_y,h.preview_images,n]),y=s(),x=p(()=>v.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,r=String(e?.media_url||``),i=e?.cover_image||n.img_y||n.img_x;return{src:r,type:t,...i?{cover:String(i)}:{}}}).filter(e=>!!e.src),[n.img_x,n.img_y,v]),S=d(e=>{m||!x.length||y.open(x,e)},[m,y,x]);return m?g(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):a?g(b,{information:n,episodeIndex:c,resumeProgressSeconds:u,isEditor:m}):_(`div`,{className:e(`w-full`,f),children:[_(r,{className:`mt-3 px-[12px] space-y-1`,children:[g(i,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:n.description}}),g(l,{medias:v,onItemClick:S})]}),g(o,{})]})});y.displayName=`DetailHero`;const b=u(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r})=>{let i=p(()=>({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 g(x,{information:{...e,...i},episodeIndex:t,resumeProgressSeconds:n,isEditor:r})},(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});b.displayName=`StableDetailPlayerBox`;function x({information:e,episodeIndex:i,resumeProgressSeconds:o,isEditor:s}){let l=v(`components.biz.business.detail`),u=m(0),y=m(0),b=Math.max(0,Number(i)||0),x=b+1,T=p(()=>e?.id,[e?.id]),E=p(()=>({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]),D=p(()=>E.mid||E.id,[E.id,E.mid]),O=p(()=>{let e=E.links?.[b]?.id;return e?String(e):`ep-${b+1}`},[b,E.links]),k=p(()=>`__reportData_detail_page__${E.id}:${O}`,[O,E.id]),A=p(()=>{if(s||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(k);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},[s,k]),j=p(()=>{let e=Number(o||0);return Number.isFinite(e)&&e>0?e:0},[o]),M=p(()=>j>0?j:A,[j,A]),N=p(()=>{let t=w(e),n=t[t.length?Math.max(0,Math.min(b,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(E.img_width||0)||1,a=Number(E.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:S(i,a),aspectRatio:(i||1)/(a||1),poster:E.img_y||E.img_x||E.preview_images?.[0]||``}},[e.id,e.links,b,E.img_width,E.img_height,E.img_y,E.img_x,E.preview_images]),P=d((e,t)=>{u.current=e,y.current=t},[]),F=p(()=>N.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:M,preload:`none`}:{startTimeSeconds:M},[M,N.videoUrl]);f(()=>{u.current=0,y.current=0},[T,b]);let I=a({contentId:T,browseEpisode:x,contentType:1,enabled:!s&&!!T,intervalMs:60*1e3,getCurrentTimeSeconds:()=>u.current,getDurationSeconds:()=>y.current});if(f(()=>{if(s)return;let e=()=>{if(!(typeof window>`u`)&&!(u.current<=0||y.current<=0))try{sessionStorage.setItem(k,JSON.stringify({episodeId:O,currentTime:u.current,duration:y.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()}},[O,s,k]),!N.hasVideo)return g(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:l(`videoHero.noVideos`)});let L=C(430,N.aspectRatio,242),R=L.height>0?t(L.height):`auto`,z=L.height>0?`calc(${R} + 0px)`:`auto`,B=t(242);return _(h,{children:[g(r,{suppressHydrationWarning:!0,className:`w-full`,style:{height:z,maxWidth:`100%`,maxHeight:`calc(${B} + 0px)`}}),_(r,{className:`w-full relative bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[N.poster&&_(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:R},children:[g(n,{src:N.poster,alt:l(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),g(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),g(r,{suppressHydrationWarning:!0,"data-aspect-ratio":N.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:R,maxWidth:`100%`,maxHeight:B,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:g(c,{plyerId:`detail-player-${E.id}-${b}`,parentId:D,resolution:N.resolution||`0x0`,videoUrl:N.videoUrl,poster:N.poster,mergeConfig:F,onProgressUpdate:s?void 0:P,onPlay:s?void 0:I.handlePlay,onPause:s?void 0:I.handlePause,onEnded:s?void 0:I.handleEnded},`stable-player-${E.id}-${b}`)})]})]})}function S(e,t){return!e||!t?``:`${e}x${t}`}function C(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function w(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{y as DetailHero};
2
+ 'use client';
3
+
4
+ import { cn } from "../../../../../utils/cn.mjs";
5
+ import { pxToVw } from "../../../../../utils/helper.mjs";
6
+ import { Image } from "../../../../ui/image.mjs";
7
+ import { Box } from "../../../../ui/box.mjs";
8
+ import { Text } from "../../../../ui/text.mjs";
9
+ import { useBrowseReport } from "../../../../../hooks/use-browse-report.mjs";
10
+ import { MediaPreview, useMediaPreview } from "../../../../common/media-preview/index.mjs";
11
+ import CommonPlayer from "../../../../common/video-player/index.mjs";
12
+ import { UserActivityMediaGrid } from "../../../../common/list/user-activity-list/user-activity-list-item.mjs";
13
+ import { memo, useCallback, useEffect, useMemo, useRef } from "react";
14
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
15
+ import { useTranslations } from "next-intl";
16
+
17
+ //#region components/biz/business/detail/shared/video-hero.tsx
18
+ const DETAIL_VIDEO_MAX_HEIGHT = 242;
19
+ const DETAIL_SEARCH_BAR_HEIGHT = 0;
20
+ const VIDEO_PROGRESS_SESSION_KEY = "__reportData_detail_page__";
21
+ const DetailHero = memo(({ mode = "renderer", information, isVideo, episodeIndex = 0, resumeProgressSeconds = 0, className = "" }) => {
22
+ const isEditor = mode === "editor";
23
+ const imageData = useMemo(() => ({
24
+ id: information.id,
25
+ name: information.name,
26
+ preview_images: information.preview_images,
27
+ img_y: information.img_y,
28
+ img_x: information.img_x
29
+ }), [
30
+ information.id,
31
+ information.name,
32
+ information.preview_images,
33
+ information.img_y,
34
+ information.img_x
35
+ ]);
36
+ const resolvedMedias = useMemo(() => {
37
+ const rawMedias = information?.medias;
38
+ const medias = Array.isArray(rawMedias) ? rawMedias.filter(Boolean) : [];
39
+ if (medias.length > 0) return medias;
40
+ return (imageData.preview_images?.length ? imageData.preview_images : [imageData.img_y || imageData.img_x || ""].filter(Boolean)).filter(Boolean).map((url) => ({
41
+ media_url: url,
42
+ is_video: false,
43
+ cover_image: ""
44
+ }));
45
+ }, [
46
+ imageData.img_x,
47
+ imageData.img_y,
48
+ imageData.preview_images,
49
+ information
50
+ ]);
51
+ const mediaPreview = useMediaPreview();
52
+ const mediaPreviewItems = useMemo(() => {
53
+ return resolvedMedias.filter(Boolean).map((media) => {
54
+ const type = media?.is_video ? "video" : "image";
55
+ const src = String(media?.media_url || "");
56
+ const cover = media?.cover_image || information.img_y || information.img_x;
57
+ return {
58
+ src,
59
+ type,
60
+ ...cover ? { cover: String(cover) } : {}
61
+ };
62
+ }).filter((item) => Boolean(item.src));
63
+ }, [
64
+ information.img_x,
65
+ information.img_y,
66
+ resolvedMedias
67
+ ]);
68
+ const handleMediaPreviewOpen = useCallback((startIndex) => {
69
+ if (isEditor || !mediaPreviewItems.length) return;
70
+ mediaPreview.open(mediaPreviewItems, startIndex);
71
+ }, [
72
+ isEditor,
73
+ mediaPreview,
74
+ mediaPreviewItems
75
+ ]);
76
+ if (isEditor) return /* @__PURE__ */ jsx("img", {
77
+ src: "/static/components-thumb/video_player.png",
78
+ alt: "video-preview",
79
+ className: "w-full block"
80
+ });
81
+ if (isVideo) return /* @__PURE__ */ jsx(StableDetailPlayerBox, {
82
+ information,
83
+ episodeIndex,
84
+ resumeProgressSeconds,
85
+ isEditor
86
+ });
87
+ return /* @__PURE__ */ jsxs("div", {
88
+ className: cn("w-full", className),
89
+ children: [/* @__PURE__ */ jsxs(Box, {
90
+ className: "mt-3 px-[12px] space-y-1",
91
+ children: [/* @__PURE__ */ jsx(Text, {
92
+ as: "p",
93
+ className: "break-all",
94
+ dangerouslySetInnerHTML: { __html: information.description }
95
+ }), /* @__PURE__ */ jsx(UserActivityMediaGrid, {
96
+ medias: resolvedMedias,
97
+ onItemClick: handleMediaPreviewOpen
98
+ })]
99
+ }), /* @__PURE__ */ jsx(MediaPreview, {})]
100
+ });
101
+ });
102
+ DetailHero.displayName = "DetailHero";
103
+ /**
104
+ * 稳定的播放器组件包装器,防止因为 information 对象引用变化导致播放器重新创建
105
+ */
106
+ const StableDetailPlayerBox = memo(({ information, episodeIndex, resumeProgressSeconds, isEditor }) => {
107
+ const stableProps = useMemo(() => ({
108
+ id: information.id,
109
+ mid: information.mid,
110
+ img_width: information.img_width,
111
+ img_height: information.img_height,
112
+ img_y: information.img_y,
113
+ img_x: information.img_x,
114
+ preview_images: information.preview_images
115
+ }), [
116
+ information.id,
117
+ information.mid,
118
+ information.img_width,
119
+ information.img_height,
120
+ information.img_y,
121
+ information.img_x,
122
+ information.preview_images
123
+ ]);
124
+ return /* @__PURE__ */ jsx(DetailPlayerBox, {
125
+ information: {
126
+ ...information,
127
+ ...stableProps
128
+ },
129
+ episodeIndex,
130
+ resumeProgressSeconds,
131
+ isEditor
132
+ });
133
+ }, (prevProps, nextProps) => {
134
+ const prev = prevProps.information;
135
+ const next = nextProps.information;
136
+ 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;
137
+ });
138
+ StableDetailPlayerBox.displayName = "StableDetailPlayerBox";
139
+ /**
140
+ * 详情页视频播放器容器,固定吸顶展示。
141
+ */
142
+ function DetailPlayerBox({ information, episodeIndex, resumeProgressSeconds, isEditor }) {
143
+ const t = useTranslations("components.biz.business.detail");
144
+ const currentTimeRef = useRef(0);
145
+ const videoDurationRef = useRef(0);
146
+ const episodeNumber = Math.max(0, Number(episodeIndex) || 0);
147
+ const browseEpisode = episodeNumber + 1;
148
+ const browseContentId = useMemo(() => {
149
+ return information?.id;
150
+ }, [information?.id]);
151
+ const playerData = useMemo(() => ({
152
+ id: information.id,
153
+ mid: information.mid,
154
+ img_width: information.img_width,
155
+ img_height: information.img_height,
156
+ img_y: information.img_y,
157
+ img_x: information.img_x,
158
+ preview_images: information.preview_images,
159
+ links: information.links
160
+ }), [
161
+ information.id,
162
+ information.mid,
163
+ information.img_width,
164
+ information.img_height,
165
+ information.img_y,
166
+ information.img_x,
167
+ information.preview_images,
168
+ information.links
169
+ ]);
170
+ const parentId = useMemo(() => {
171
+ return playerData.mid || playerData.id;
172
+ }, [playerData.id, playerData.mid]);
173
+ const currentEpisodeId = useMemo(() => {
174
+ const episodeId = playerData.links?.[episodeNumber]?.id;
175
+ if (episodeId) return String(episodeId);
176
+ return `ep-${episodeNumber + 1}`;
177
+ }, [episodeNumber, playerData.links]);
178
+ const localProgressStorageKey = useMemo(() => {
179
+ return `${VIDEO_PROGRESS_SESSION_KEY}${playerData.id}:${currentEpisodeId}`;
180
+ }, [currentEpisodeId, playerData.id]);
181
+ const sessionResumeSeconds = useMemo(() => {
182
+ if (isEditor || typeof window === "undefined") return 0;
183
+ try {
184
+ const data = sessionStorage.getItem(localProgressStorageKey);
185
+ if (!data) return 0;
186
+ const parsed = JSON.parse(data);
187
+ const currentTime = Number(parsed.currentTime || 0);
188
+ const duration = Number(parsed.duration || 0);
189
+ if (!Number.isFinite(currentTime) || !Number.isFinite(duration)) return 0;
190
+ if (currentTime > 0 && duration > 0) return currentTime;
191
+ } catch (error) {
192
+ console.error("读取 sessionStorage 数据失败:", error);
193
+ }
194
+ return 0;
195
+ }, [isEditor, localProgressStorageKey]);
196
+ const apiResumeSeconds = useMemo(() => {
197
+ const seconds = Number(resumeProgressSeconds || 0);
198
+ return Number.isFinite(seconds) && seconds > 0 ? seconds : 0;
199
+ }, [resumeProgressSeconds]);
200
+ const startTimeSeconds = useMemo(() => {
201
+ return apiResumeSeconds > 0 ? apiResumeSeconds : sessionResumeSeconds;
202
+ }, [apiResumeSeconds, sessionResumeSeconds]);
203
+ const videoData = useMemo(() => {
204
+ const hlsList = extractHlsList(information);
205
+ const videoUrl = hlsList[hlsList.length ? Math.max(0, Math.min(episodeNumber, hlsList.length - 1)) : 0]?.url || "";
206
+ const hasVideo = Boolean(hlsList.length);
207
+ if (!hasVideo) return {
208
+ hasVideo: false,
209
+ hlsList: [],
210
+ videoUrl: "",
211
+ width: 1,
212
+ height: 1,
213
+ resolution: "0x0",
214
+ aspectRatio: 1,
215
+ poster: ""
216
+ };
217
+ const width = Number(playerData.img_width || 0) || 1;
218
+ const height = Number(playerData.img_height || 0) || 1;
219
+ return {
220
+ hasVideo,
221
+ hlsList,
222
+ videoUrl,
223
+ width,
224
+ height,
225
+ resolution: buildResolutionText(width, height),
226
+ aspectRatio: (width || 1) / (height || 1),
227
+ poster: playerData.img_y || playerData.img_x || playerData.preview_images?.[0] || ""
228
+ };
229
+ }, [
230
+ information.id,
231
+ information.links,
232
+ episodeNumber,
233
+ playerData.img_width,
234
+ playerData.img_height,
235
+ playerData.img_y,
236
+ playerData.img_x,
237
+ playerData.preview_images
238
+ ]);
239
+ /**
240
+ * 记录播放进度,便于下次进入恢复播放。
241
+ */
242
+ const handleProgressUpdate = useCallback((currentTime, duration) => {
243
+ currentTimeRef.current = currentTime;
244
+ videoDurationRef.current = duration;
245
+ }, []);
246
+ const playerMergeConfig = useMemo(() => {
247
+ if (videoData.videoUrl.endsWith("m3u8")) return {
248
+ startTimeSeconds,
249
+ preload: "none"
250
+ };
251
+ return { startTimeSeconds };
252
+ }, [startTimeSeconds, videoData.videoUrl]);
253
+ useEffect(() => {
254
+ currentTimeRef.current = 0;
255
+ videoDurationRef.current = 0;
256
+ }, [browseContentId, episodeNumber]);
257
+ const browseReport = useBrowseReport({
258
+ contentId: browseContentId,
259
+ browseEpisode,
260
+ contentType: 1,
261
+ enabled: !isEditor && Boolean(browseContentId),
262
+ intervalMs: 60 * 1e3,
263
+ getCurrentTimeSeconds: () => currentTimeRef.current,
264
+ getDurationSeconds: () => videoDurationRef.current
265
+ });
266
+ useEffect(() => {
267
+ if (isEditor) return;
268
+ const persistProgress = () => {
269
+ if (typeof window === "undefined") return;
270
+ if (currentTimeRef.current <= 0 || videoDurationRef.current <= 0) return;
271
+ try {
272
+ sessionStorage.setItem(localProgressStorageKey, JSON.stringify({
273
+ episodeId: currentEpisodeId,
274
+ currentTime: currentTimeRef.current,
275
+ duration: videoDurationRef.current
276
+ }));
277
+ } catch (error) {
278
+ console.error("写入 sessionStorage 失败:", error);
279
+ }
280
+ };
281
+ const handleBeforeUnload = () => {
282
+ persistProgress();
283
+ };
284
+ const handleVisibilityChange = () => {
285
+ if (document.visibilityState === "hidden") persistProgress();
286
+ };
287
+ const handlePopState = () => {
288
+ persistProgress();
289
+ };
290
+ window.addEventListener("beforeunload", handleBeforeUnload);
291
+ document.addEventListener("visibilitychange", handleVisibilityChange);
292
+ window.addEventListener("popstate", handlePopState);
293
+ return () => {
294
+ window.removeEventListener("beforeunload", handleBeforeUnload);
295
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
296
+ window.removeEventListener("popstate", handlePopState);
297
+ persistProgress();
298
+ };
299
+ }, [
300
+ currentEpisodeId,
301
+ isEditor,
302
+ localProgressStorageKey
303
+ ]);
304
+ if (!videoData.hasVideo) return /* @__PURE__ */ jsx("div", {
305
+ className: "mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3",
306
+ children: t("videoHero.noVideos")
307
+ });
308
+ const dimensions = calculateVideoDimensions(430, videoData.aspectRatio, DETAIL_VIDEO_MAX_HEIGHT);
309
+ const playerHeight = dimensions.height > 0 ? pxToVw(dimensions.height) : "auto";
310
+ const playerReservedHeight = dimensions.height > 0 ? `calc(${playerHeight} + ${DETAIL_SEARCH_BAR_HEIGHT}px)` : "auto";
311
+ const playerMaxHeight = pxToVw(DETAIL_VIDEO_MAX_HEIGHT);
312
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Box, {
313
+ suppressHydrationWarning: true,
314
+ className: "w-full",
315
+ style: {
316
+ height: playerReservedHeight,
317
+ maxWidth: "100%",
318
+ maxHeight: `calc(${playerMaxHeight} + ${DETAIL_SEARCH_BAR_HEIGHT}px)`
319
+ }
320
+ }), /* @__PURE__ */ jsxs(Box, {
321
+ className: "w-full relative bg-bg2 !fixed !top-[44px] !left-0 z-[10]",
322
+ children: [videoData.poster && /* @__PURE__ */ jsxs("div", {
323
+ className: "w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden",
324
+ style: { height: playerHeight },
325
+ children: [/* @__PURE__ */ jsx(Image, {
326
+ src: videoData.poster,
327
+ alt: t("videoHero.coverAlt"),
328
+ fill: true,
329
+ className: "object-cover",
330
+ priority: true
331
+ }), /* @__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]" })]
332
+ }), /* @__PURE__ */ jsx(Box, {
333
+ suppressHydrationWarning: true,
334
+ "data-aspect-ratio": videoData.resolution,
335
+ className: "w-full overflow-hidden flex justify-center relative z-[2]",
336
+ style: {
337
+ height: playerHeight,
338
+ maxWidth: "100%",
339
+ maxHeight: playerMaxHeight,
340
+ backdropFilter: "blur(0)",
341
+ WebkitBackdropFilter: "blur(0)"
342
+ },
343
+ children: /* @__PURE__ */ jsx(CommonPlayer, {
344
+ plyerId: `detail-player-${playerData.id}-${episodeNumber}`,
345
+ parentId,
346
+ resolution: videoData.resolution || "0x0",
347
+ videoUrl: videoData.videoUrl,
348
+ poster: videoData.poster,
349
+ mergeConfig: playerMergeConfig,
350
+ onProgressUpdate: isEditor ? void 0 : handleProgressUpdate,
351
+ onPlay: isEditor ? void 0 : browseReport.handlePlay,
352
+ onPause: isEditor ? void 0 : browseReport.handlePause,
353
+ onEnded: isEditor ? void 0 : browseReport.handleEnded
354
+ }, `stable-player-${playerData.id}-${episodeNumber}`)
355
+ })]
356
+ })] });
357
+ }
358
+ /**
359
+ * 构建分辨率文本
360
+ */
361
+ function buildResolutionText(width, height) {
362
+ if (!width || !height) return "";
363
+ return `${width}x${height}`;
364
+ }
365
+ /**
366
+ * 计算视频尺寸
367
+ */
368
+ function calculateVideoDimensions(parentWidth, aspectRatio, maxHeight) {
369
+ const heightFromWidth = parentWidth / aspectRatio;
370
+ if (heightFromWidth <= maxHeight) return {
371
+ width: parentWidth,
372
+ height: heightFromWidth
373
+ };
374
+ return {
375
+ width: maxHeight * aspectRatio,
376
+ height: maxHeight
377
+ };
378
+ }
379
+ /**
380
+ * 提取 HLS 播放列表
381
+ */
382
+ function extractHlsList(info) {
383
+ const linkList = info.links || [];
384
+ if (linkList.length > 0) return linkList.map((item, index) => {
385
+ return {
386
+ text: item.name || String(index + 1),
387
+ url: item.m3u8_url || item.preview_m3u8_url || "",
388
+ definition: "",
389
+ isDefault: index === 0
390
+ };
391
+ }).filter((item) => item.url);
392
+ return [];
393
+ }
394
+
395
+ //#endregion
396
+ export { DetailHero };
@@ -1,2 +1,107 @@
1
1
 
2
- "use client";import{useRequest as e}from"../../../../../hooks/query/use-query.mjs";import{batchQueryContentInteractions as t}from"../../../../../hooks/use-content-operate.mjs";import{DetailOperate as n}from"../shared/detail-operate.mjs";import{editorPreviewInformation as r}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as i}from"../shared/runtime-context-provider.mjs";import{useCallback as a,useEffect as o,useRef as s,useState as c}from"react";import{jsx as l}from"react/jsx-runtime";function u({mode:u=`renderer`}){let d=i(),f=d?.information,p=d?.onUpdateInformation,m=!!d?.isWebView,h=u===`editor`,g=u===`renderer`,_=h,v=_?r:f,[y,b]=c(v),x=s(v),S=s(``);o(()=>{b(v)},[v]);let C=p?v:y;o(()=>{x.current=C},[C]);let w=g&&!m&&!!v?.id,{data:T}=e([`video-detail-actions-interaction`,v?.id],async()=>v?.id?await t([v.id],1):null,{enabled:w,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),E=a(e=>{if(!_){if(p){p(e);return}b(t=>{if(!t)return t;let n=e.static?{...t.static||{},...e.static||{}}:t.static;return{...t,...e,static:n}})}},[p,_]);return o(()=>{let e=T?.interaction_list?.[0],t=x.current;if(!e||!t)return;let n=`${e.is_liked?1:0}-${e.is_disliked?1:0}-${e.is_collected?1:0}`;if(S.current===n)return;S.current=n;let r=e.is_liked||!1,i=e.is_disliked||!1,a=e.is_collected||!1,o=!!t.like,s=!!t.dislike,c=!!t.collect,l=t.static?.like_cnt,u=typeof l==`number`?l:Number(l||0),d=u;!r&&u>0?d=Math.max(0,u-1):o===r?r&&u===0&&(d=1):d=Math.max(0,u+(r?1:-1));let f=d!==u;o===r&&s===i&&c===a&&!f||E({like:r,dislike:i,collect:a,...f?{static:{...t.static||{},like_cnt:d}}:{}})},[E,T]),C?l(`div`,{className:_?`pointer-events-none`:void 0,children:l(n,{mode:u,information:C,onUpdate:E})}):null}export{u as VideoDetailActionsClient};
2
+ 'use client';
3
+
4
+ import { useRequest } from "../../../../../hooks/query/use-query.mjs";
5
+ import { batchQueryContentInteractions } from "../../../../../hooks/use-content-operate.mjs";
6
+ import { DetailOperate } from "../shared/detail-operate.mjs";
7
+ import { editorPreviewInformation } from "../shared/editor-preview.mjs";
8
+ import { useVideoDetailMaterialRuntimeContext } from "../shared/runtime-context-provider.mjs";
9
+ import { useCallback, useEffect, useRef, useState } from "react";
10
+ import { jsx } from "react/jsx-runtime";
11
+
12
+ //#region components/biz/business/detail/video-detail-actions/client.tsx
13
+ /**
14
+ * 视频详情行为模块客户端组件。
15
+ */
16
+ function VideoDetailActionsClient({ mode = "renderer" }) {
17
+ const runtimeContext = useVideoDetailMaterialRuntimeContext();
18
+ const information = runtimeContext?.information;
19
+ const onUpdate = runtimeContext?.onUpdateInformation;
20
+ const isWebView = Boolean(runtimeContext?.isWebView);
21
+ const isEditor = mode === "editor";
22
+ const isRenderer = mode === "renderer";
23
+ const shouldUsePreview = isEditor;
24
+ const fallbackInformation = shouldUsePreview ? editorPreviewInformation : information;
25
+ const [localInformation, setLocalInformation] = useState(fallbackInformation);
26
+ const latestResolvedInformationRef = useRef(fallbackInformation);
27
+ const lastHydratedInteractionKeyRef = useRef("");
28
+ useEffect(() => {
29
+ setLocalInformation(fallbackInformation);
30
+ }, [fallbackInformation]);
31
+ const resolvedInformation = onUpdate ? fallbackInformation : localInformation;
32
+ useEffect(() => {
33
+ latestResolvedInformationRef.current = resolvedInformation;
34
+ }, [resolvedInformation]);
35
+ const shouldHydrateInteraction = isRenderer && !isWebView && Boolean(fallbackInformation?.id);
36
+ const { data: interactionData } = useRequest(["video-detail-actions-interaction", fallbackInformation?.id], async () => {
37
+ if (!fallbackInformation?.id) return null;
38
+ return await batchQueryContentInteractions([fallbackInformation.id], 1);
39
+ }, {
40
+ enabled: shouldHydrateInteraction,
41
+ staleTime: 0,
42
+ refetchOnMount: "always",
43
+ refetchOnWindowFocus: false
44
+ });
45
+ const handleUpdate = useCallback((data) => {
46
+ if (shouldUsePreview) return;
47
+ if (onUpdate) {
48
+ onUpdate(data);
49
+ return;
50
+ }
51
+ setLocalInformation((prev) => {
52
+ if (!prev) return prev;
53
+ const nextStatic = data.static ? {
54
+ ...prev.static || {},
55
+ ...data.static || {}
56
+ } : prev.static;
57
+ return {
58
+ ...prev,
59
+ ...data,
60
+ static: nextStatic
61
+ };
62
+ });
63
+ }, [onUpdate, shouldUsePreview]);
64
+ useEffect(() => {
65
+ const interaction = interactionData?.interaction_list?.[0];
66
+ const currentInfo = latestResolvedInformationRef.current;
67
+ if (!interaction || !currentInfo) return;
68
+ const interactionKey = `${interaction.is_liked ? 1 : 0}-${interaction.is_disliked ? 1 : 0}-${interaction.is_collected ? 1 : 0}`;
69
+ if (lastHydratedInteractionKeyRef.current === interactionKey) return;
70
+ lastHydratedInteractionKeyRef.current = interactionKey;
71
+ const nextLike = interaction.is_liked || false;
72
+ const nextDislike = interaction.is_disliked || false;
73
+ const nextCollect = interaction.is_collected || false;
74
+ const currentLike = Boolean(currentInfo.like);
75
+ const currentDislike = Boolean(currentInfo.dislike);
76
+ const currentCollect = Boolean(currentInfo.collect);
77
+ const rawLikeCnt = currentInfo.static?.like_cnt;
78
+ const resolvedLikeCnt = typeof rawLikeCnt === "number" ? rawLikeCnt : Number(rawLikeCnt || 0);
79
+ let nextLikeCnt = resolvedLikeCnt;
80
+ if (!nextLike && resolvedLikeCnt > 0) nextLikeCnt = Math.max(0, resolvedLikeCnt - 1);
81
+ else if (currentLike !== nextLike) nextLikeCnt = Math.max(0, resolvedLikeCnt + (nextLike ? 1 : -1));
82
+ else if (nextLike && resolvedLikeCnt === 0) nextLikeCnt = 1;
83
+ const shouldSyncLikeCnt = nextLikeCnt !== resolvedLikeCnt;
84
+ if (currentLike === nextLike && currentDislike === nextDislike && currentCollect === nextCollect && !shouldSyncLikeCnt) return;
85
+ handleUpdate({
86
+ like: nextLike,
87
+ dislike: nextDislike,
88
+ collect: nextCollect,
89
+ ...shouldSyncLikeCnt ? { static: {
90
+ ...currentInfo.static || {},
91
+ like_cnt: nextLikeCnt
92
+ } } : {}
93
+ });
94
+ }, [handleUpdate, interactionData]);
95
+ if (!resolvedInformation) return null;
96
+ return /* @__PURE__ */ jsx("div", {
97
+ className: shouldUsePreview ? "pointer-events-none" : void 0,
98
+ children: /* @__PURE__ */ jsx(DetailOperate, {
99
+ mode,
100
+ information: resolvedInformation,
101
+ onUpdate: handleUpdate
102
+ })
103
+ });
104
+ }
105
+
106
+ //#endregion
107
+ export { VideoDetailActionsClient };