@funhub/platform 0.1.127 → 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 (816) 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/components/common/skeleton/search-video-card-skeleton.mjs +0 -2
  815. package/dist/service/register-by-verify-email-code.d.mts +0 -15
  816. package/dist/service/register-by-verify-email-code.mjs +0 -2
package/dist/utils/db.mjs CHANGED
@@ -1,2 +1,81 @@
1
1
 
2
- let e=null;function t(){return e||(typeof window>`u`||!(`indexedDB`in window)?(e=Promise.reject(Error(`IndexedDB 在当前环境不可用。`)),e):(e=new Promise((e,t)=>{let n=window.indexedDB.open(`funhub`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(`kv`)||e.createObjectStore(`kv`)},n.onsuccess=()=>{e(n.result)},n.onerror=()=>{t(n.error??Error(`打开 IndexedDB 失败。`))}}),e))}function n(e){return new Promise((t,n)=>{e.onsuccess=()=>{t(e.result)},e.onerror=()=>{n(e.error??Error(`IndexedDB 请求失败。`))}})}function r(e){return new Promise((t,n)=>{e.oncomplete=()=>{t()},e.onerror=()=>{n(e.error??Error(`IndexedDB 事务失败。`))},e.onabort=()=>{n(e.error??Error(`IndexedDB 事务中止。`))}})}async function i(e){return await n((await t()).transaction(`kv`,`readonly`).objectStore(`kv`).get(e))??null}async function a(e,n){let i=(await t()).transaction(`kv`,`readwrite`);i.objectStore(`kv`).put(n,e),await r(i)}export{i as getItem,a as setItem};
2
+ //#region utils/db.ts
3
+ const DB_NAME = "funhub";
4
+ const DB_VERSION = 1;
5
+ const STORE_NAME = "kv";
6
+ let dbPromise = null;
7
+ /**
8
+ * 打开 IndexedDB 数据库并返回实例。
9
+ */
10
+ function openDb() {
11
+ if (dbPromise) return dbPromise;
12
+ if (typeof window === "undefined" || !("indexedDB" in window)) {
13
+ dbPromise = Promise.reject(/* @__PURE__ */ new Error("IndexedDB 在当前环境不可用。"));
14
+ return dbPromise;
15
+ }
16
+ dbPromise = new Promise((resolve, reject) => {
17
+ const request = window.indexedDB.open(DB_NAME, DB_VERSION);
18
+ request.onupgradeneeded = () => {
19
+ const db = request.result;
20
+ if (!db.objectStoreNames.contains(STORE_NAME)) db.createObjectStore(STORE_NAME);
21
+ };
22
+ request.onsuccess = () => {
23
+ resolve(request.result);
24
+ };
25
+ request.onerror = () => {
26
+ reject(request.error ?? /* @__PURE__ */ new Error("打开 IndexedDB 失败。"));
27
+ };
28
+ });
29
+ return dbPromise;
30
+ }
31
+ /**
32
+ * 将 IDBRequest 包装为 Promise。
33
+ */
34
+ function requestToPromise(request) {
35
+ return new Promise((resolve, reject) => {
36
+ request.onsuccess = () => {
37
+ resolve(request.result);
38
+ };
39
+ request.onerror = () => {
40
+ reject(request.error ?? /* @__PURE__ */ new Error("IndexedDB 请求失败。"));
41
+ };
42
+ });
43
+ }
44
+ /**
45
+ * 等待事务完成。
46
+ */
47
+ function waitForTransaction(tx) {
48
+ return new Promise((resolve, reject) => {
49
+ tx.oncomplete = () => {
50
+ resolve();
51
+ };
52
+ tx.onerror = () => {
53
+ reject(tx.error ?? /* @__PURE__ */ new Error("IndexedDB 事务失败。"));
54
+ };
55
+ tx.onabort = () => {
56
+ reject(tx.error ?? /* @__PURE__ */ new Error("IndexedDB 事务中止。"));
57
+ };
58
+ });
59
+ }
60
+ /**
61
+ * 从 IndexedDB 获取数据。
62
+ * @param key 存储键。
63
+ * @returns 对应键的值,不存在时返回 `null`。
64
+ */
65
+ async function getItem(key) {
66
+ return await requestToPromise((await openDb()).transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(key)) ?? null;
67
+ }
68
+ /**
69
+ * 写入 IndexedDB 数据。
70
+ * @param key 存储键。
71
+ * @param value 需要写入的值。
72
+ * @returns 写入完成后 resolve。
73
+ */
74
+ async function setItem(key, value) {
75
+ const tx = (await openDb()).transaction(STORE_NAME, "readwrite");
76
+ tx.objectStore(STORE_NAME).put(value, key);
77
+ await waitForTransaction(tx);
78
+ }
79
+
80
+ //#endregion
81
+ export { getItem, setItem };
@@ -1,2 +1,326 @@
1
1
 
2
- "use client";import{getItem as e,setItem as t}from"./db.mjs";import{createBncDecryptWorker as n}from"./decrypt.worker.mjs";import r from"./get-res-url.mjs";const i=new Map,a=new Map;let o=null;function s(){if(typeof window>`u`)return null;if(o)return o;let e=[];function t(){let e={worker:n(),busy:!1,current:null},t=()=>{try{e.worker.terminate()}catch{}e.worker=n(),e.busy=!1,e.current=null,r(e)},r=e=>{e.worker.addEventListener(`message`,t=>{let n=t.data;if(!e.current||n?.id!==e.current.id)return;let{resolve:r}=e.current;e.current=null,e.busy=!1,r(n),b()}),e.worker.addEventListener(`error`,n=>{if(e.current){let{reject:t}=e.current;e.current=null,e.busy=!1,t(n)}t(),b()})};return r(e),e}for(let n=0;n<4;n++)e.push(t());return o=e,o}const c=[];function l(e){if(!e)return!1;let t=e.split(`?`)[0];return/bnc$/i.test(t)||/xxx$/i.test(t)}function u(e){let t=String(e||``).split(`?`)[0].toLowerCase().match(/\.(jpg|jpeg|png|gif|webp)(?:\.?(?:bnc|xxx))?$/i)?.[1];return t===`jpg`||t===`jpeg`?`image/jpeg`:t===`png`?`image/png`:t===`gif`?`image/gif`:t===`webp`?`image/webp`:`application/octet-stream`}function d(e,t){return!t||e.startsWith(`http`)?e:`${t.endsWith(`/`)?t.slice(0,-1):t}${e.startsWith(`/`)?e:`/${e}`}`}function f(e){return Array.from(new Set(e.filter(e=>!!e?.trim())))}function p(e,t=3e3){return typeof window>`u`?Promise.resolve(!1):new Promise(n=>{let r=new XMLHttpRequest,i=!1,a=e=>{if(!i){i=!0,clearTimeout(o);try{r.abort()}catch{}n(e)}},o=window.setTimeout(()=>{a(!1)},t);r.onreadystatechange=()=>{r.readyState===2&&a(r.status===200||r.status===206)},r.onerror=()=>{a(!1)},r.onabort=()=>{a(!1)};try{r.open(`GET`,e,!0),r.setRequestHeader(`Range`,`bytes=0-0`),r.send()}catch{a(!1)}})}function m(e){return/^(?:https?:)?\/\//.test(e)||e.startsWith(`data:`)}function h(e){return e.startsWith(`/md-204`)}function g(e){return!e?.trim()||l(e)||h(e)?!1:!m(e)}async function _(e){if(h(e))return d(e,r());if(!g(e))return e;let t=e.startsWith(`/`)?e:`/${e}`,n=i.get(t);if(n)return n;let o=a.get(t);if(o)return o;let s=(async()=>{let e=r(),n=t,a=d(t,e),o=f([n,a]),s=await new Promise(e=>{let t=o.length,n=!1;if(!t){e(null);return}let r=t=>{n||(n=!0,e(t))};for(let e of o)p(e).then(n=>{if(n){r(e);return}--t,t===0&&r(null)}).catch(()=>{--t,t===0&&r(null)})});if(s)return i.set(t,s),s;let c=a||n;return i.set(t,c),c})().finally(()=>{a.delete(t)});return a.set(t,s),s}async function v(n,i){if(!n?.trim())return null;if(l(n)){let r=await e(n);if(r instanceof ArrayBuffer)return{buffer:r,contentType:u(n)};let{buffer:a,contentType:o,error:s}=await x(n,i);return s?null:(await t(n,a),{buffer:a,contentType:o??u(n)})}let a=r(),o=h(n)?d(n,a):g(n)?await _(n):n.startsWith(`http`)?n:n.startsWith(`/`)?d(n,a):d(`/${n}`,a),s=await fetch(o);return s.ok?{buffer:await s.arrayBuffer(),contentType:s.headers.get(`content-type`)||u(n)}:null}async function y(e,t){let n=await v(e,t);return n?{bytes:new Uint8Array(n.buffer),contentType:n.contentType}:null}function b(){let e=s();if(e)for(let t of e){if(t.busy)continue;let e=c.shift();if(!e)return;t.busy=!0,t.current={id:e.id,resolve:e.resolve,reject:e.reject};let n={id:e.id,mode:`bnc-url`,url:e.url,apiRes:r(),secretKey:e.secretKey};t.worker.postMessage(n)}}function x(e,t){if(!s())return Promise.resolve({id:`no-worker`,buffer:new ArrayBuffer(0),error:`worker not available`});let n=typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`;return new Promise((r,i)=>{c.push({id:n,url:e,secretKey:t,resolve:r,reject:i}),b()})}async function S(n,i){let a=await e(n);if(a instanceof ArrayBuffer)return URL.createObjectURL(new Blob([a],{type:u(n)}));if(l(n)){let{buffer:e,contentType:r,error:a}=await x(n,i);return a?``:(await t(n,e),URL.createObjectURL(new Blob([e],{type:r??u(n)})))}else return m(n)?n:h(n)?d(n,r()):g(n)?_(n):n}export{v as decryptImageToArrayBuffer,y as decryptImageToUint8Array,S as decryptImageUrl,u as guessImageContentTypeFromUrl,l as isEncryptedImageUrl,_ as resolveImageUrl,g as shouldProbeImageUrl,h as shouldUseApiResDirectly};
2
+ 'use client';
3
+
4
+ import { getItem, setItem } from "./db.mjs";
5
+ import { createBncDecryptWorker } from "./decrypt.worker.mjs";
6
+ import getResUrl from "./get-res-url.mjs";
7
+
8
+ //#region utils/decrypt-image-client.ts
9
+ const WORKER_POOL_SIZE = 4;
10
+ const FIRST_BYTE_PROBE_TIMEOUT = 3e3;
11
+ const RESOLVED_IMAGE_SRC_CACHE = /* @__PURE__ */ new Map();
12
+ const RESOLVED_IMAGE_SRC_TASKS = /* @__PURE__ */ new Map();
13
+ let workerPool = null;
14
+ function ensureWorkerPool() {
15
+ if (typeof window === "undefined") return null;
16
+ if (workerPool) return workerPool;
17
+ const pool = [];
18
+ function createState() {
19
+ const state = {
20
+ worker: createBncDecryptWorker(),
21
+ busy: false,
22
+ current: null
23
+ };
24
+ const replaceWorker = () => {
25
+ try {
26
+ state.worker.terminate();
27
+ } catch {}
28
+ state.worker = createBncDecryptWorker();
29
+ state.busy = false;
30
+ state.current = null;
31
+ attachHandlers(state);
32
+ };
33
+ const attachHandlers = (s) => {
34
+ s.worker.addEventListener("message", (event) => {
35
+ const data = event.data;
36
+ if (!s.current) return;
37
+ if (data?.id !== s.current.id) return;
38
+ const { resolve } = s.current;
39
+ s.current = null;
40
+ s.busy = false;
41
+ resolve(data);
42
+ drainQueue();
43
+ });
44
+ s.worker.addEventListener("error", (err) => {
45
+ if (s.current) {
46
+ const { reject } = s.current;
47
+ s.current = null;
48
+ s.busy = false;
49
+ reject(err);
50
+ }
51
+ replaceWorker();
52
+ drainQueue();
53
+ });
54
+ };
55
+ attachHandlers(state);
56
+ return state;
57
+ }
58
+ for (let i = 0; i < WORKER_POOL_SIZE; i++) pool.push(createState());
59
+ workerPool = pool;
60
+ return workerPool;
61
+ }
62
+ const taskQueue = [];
63
+ /**
64
+ * 判断是否为加密图片链接(兼容 query)。
65
+ * @param url 图片 URL。
66
+ * @returns 是否为 `.bnc` / `.xxx` 资源。
67
+ */
68
+ function isEncryptedImageUrl(url) {
69
+ if (!url) return false;
70
+ const pureUrl = url.split("?")[0];
71
+ return /bnc$/i.test(pureUrl) || /xxx$/i.test(pureUrl);
72
+ }
73
+ /**
74
+ * 从图片 URL 推断可能的 MIME 类型(不依赖网络响应头)。
75
+ *
76
+ * 说明:
77
+ * - `.jpgxxx` / `.jpg.bnc` / `.jpgbnc` 等兼容形式,都会被识别为 `image/jpeg`
78
+ * - 无法推断时回退 `application/octet-stream`
79
+ * @param url 图片 URL。
80
+ * @returns 推断得到的 MIME 类型。
81
+ */
82
+ function guessImageContentTypeFromUrl(url) {
83
+ const ext = String(url || "").split("?")[0].toLowerCase().match(/\.(jpg|jpeg|png|gif|webp)(?:\.?(?:bnc|xxx))?$/i)?.[1];
84
+ if (ext === "jpg" || ext === "jpeg") return "image/jpeg";
85
+ if (ext === "png") return "image/png";
86
+ if (ext === "gif") return "image/gif";
87
+ if (ext === "webp") return "image/webp";
88
+ return "application/octet-stream";
89
+ }
90
+ /** 将相对路径拼接为带 apiRes 的完整地址。 */
91
+ function appendApiRes(url, apiRes) {
92
+ if (!apiRes) return url;
93
+ if (url.startsWith("http")) return url;
94
+ return `${apiRes.endsWith("/") ? apiRes.slice(0, -1) : apiRes}${url.startsWith("/") ? url : `/${url}`}`;
95
+ }
96
+ /** 对候选 URL 去重并过滤空值。 */
97
+ function uniqueUrls(urls) {
98
+ return Array.from(new Set(urls.filter((item) => Boolean(item?.trim()))));
99
+ }
100
+ /**
101
+ * 通过请求 1 字节探测图片地址是否有效。
102
+ * - 使用 `Range: bytes=0-0`
103
+ * - 在收到响应头后立刻中止,避免下载整张图片
104
+ */
105
+ function probeImageUrlByFirstByte(url, timeoutMs = FIRST_BYTE_PROBE_TIMEOUT) {
106
+ if (typeof window === "undefined") return Promise.resolve(false);
107
+ return new Promise((resolve) => {
108
+ const xhr = new XMLHttpRequest();
109
+ let settled = false;
110
+ const finalize = (value) => {
111
+ if (settled) return;
112
+ settled = true;
113
+ clearTimeout(timer);
114
+ try {
115
+ xhr.abort();
116
+ } catch {}
117
+ resolve(value);
118
+ };
119
+ const timer = window.setTimeout(() => {
120
+ finalize(false);
121
+ }, timeoutMs);
122
+ xhr.onreadystatechange = () => {
123
+ if (xhr.readyState !== 2) return;
124
+ finalize(xhr.status === 200 || xhr.status === 206);
125
+ };
126
+ xhr.onerror = () => {
127
+ finalize(false);
128
+ };
129
+ xhr.onabort = () => {
130
+ finalize(false);
131
+ };
132
+ try {
133
+ xhr.open("GET", url, true);
134
+ xhr.setRequestHeader("Range", "bytes=0-0");
135
+ xhr.send();
136
+ } catch {
137
+ finalize(false);
138
+ }
139
+ });
140
+ }
141
+ function isCompleteImageUrl(url) {
142
+ return /^(?:https?:)?\/\//.test(url) || url.startsWith("data:");
143
+ }
144
+ /** 判断图片地址是否应直接拼接 apiRes。 */
145
+ function shouldUseApiResDirectly(url) {
146
+ return url.startsWith("/md-204");
147
+ }
148
+ /** 判断图片地址是否需要在原始路径和 apiRes 路径之间做探测。 */
149
+ function shouldProbeImageUrl(url) {
150
+ if (!url?.trim()) return false;
151
+ if (isEncryptedImageUrl(url)) return false;
152
+ if (shouldUseApiResDirectly(url)) return false;
153
+ return !isCompleteImageUrl(url);
154
+ }
155
+ /**
156
+ * 解析相对图片地址最终应使用的地址。
157
+ * 并发探测原始路径和 `${apiRes}${path}`,谁先成功就用谁。
158
+ */
159
+ async function resolveImageUrl(url) {
160
+ if (shouldUseApiResDirectly(url)) return appendApiRes(url, getResUrl());
161
+ if (!shouldProbeImageUrl(url)) return url;
162
+ const normalized = url.startsWith("/") ? url : `/${url}`;
163
+ const cached = RESOLVED_IMAGE_SRC_CACHE.get(normalized);
164
+ if (cached) return cached;
165
+ const pendingTask = RESOLVED_IMAGE_SRC_TASKS.get(normalized);
166
+ if (pendingTask) return pendingTask;
167
+ const task = (async () => {
168
+ const apiRes = getResUrl();
169
+ const originalCandidate = normalized;
170
+ const apiResCandidate = appendApiRes(normalized, apiRes);
171
+ const candidates = uniqueUrls([originalCandidate, apiResCandidate]);
172
+ const resolved = await new Promise((resolve) => {
173
+ let pendingCount = candidates.length;
174
+ let settled = false;
175
+ if (!pendingCount) {
176
+ resolve(null);
177
+ return;
178
+ }
179
+ const finish = (value) => {
180
+ if (settled) return;
181
+ settled = true;
182
+ resolve(value);
183
+ };
184
+ for (const candidate of candidates) probeImageUrlByFirstByte(candidate).then((ok) => {
185
+ if (ok) {
186
+ finish(candidate);
187
+ return;
188
+ }
189
+ pendingCount -= 1;
190
+ if (pendingCount === 0) finish(null);
191
+ }).catch(() => {
192
+ pendingCount -= 1;
193
+ if (pendingCount === 0) finish(null);
194
+ });
195
+ });
196
+ if (resolved) {
197
+ RESOLVED_IMAGE_SRC_CACHE.set(normalized, resolved);
198
+ return resolved;
199
+ }
200
+ const fallback = apiResCandidate || originalCandidate;
201
+ RESOLVED_IMAGE_SRC_CACHE.set(normalized, fallback);
202
+ return fallback;
203
+ })().finally(() => {
204
+ RESOLVED_IMAGE_SRC_TASKS.delete(normalized);
205
+ });
206
+ RESOLVED_IMAGE_SRC_TASKS.set(normalized, task);
207
+ return task;
208
+ }
209
+ /**
210
+ * 将「可能是加密」的图片 URL 解密/拉取为 ArrayBuffer。
211
+ *
212
+ * - bnc/xxx:走 worker 解密,并写入 IndexedDB 缓存
213
+ * - 非加密:直接 fetch 拉取原图 bytes(不会写缓存)
214
+ *
215
+ * 主要用于:
216
+ * - WebView 场景把 poster bytes 透出给原生(如 Dart 的 Uint8List)
217
+ * - 上传/分享等需要二进制内容的场景
218
+ * @param url 图片 URL。
219
+ * @param secretKey 可选解密密钥。
220
+ * @returns 成功时返回二进制与内容类型,失败时返回 `null`。
221
+ */
222
+ async function decryptImageToArrayBuffer(url, secretKey) {
223
+ if (!url?.trim()) return null;
224
+ if (isEncryptedImageUrl(url)) {
225
+ const cached = await getItem(url);
226
+ if (cached instanceof ArrayBuffer) return {
227
+ buffer: cached,
228
+ contentType: guessImageContentTypeFromUrl(url)
229
+ };
230
+ const { buffer, contentType, error } = await decryptBncUrlInWorker(url, secretKey);
231
+ if (error) return null;
232
+ await setItem(url, buffer);
233
+ return {
234
+ buffer,
235
+ contentType: contentType ?? guessImageContentTypeFromUrl(url)
236
+ };
237
+ }
238
+ const apiRes = getResUrl();
239
+ const fetchUrl = shouldUseApiResDirectly(url) ? appendApiRes(url, apiRes) : shouldProbeImageUrl(url) ? await resolveImageUrl(url) : url.startsWith("http") ? url : url.startsWith("/") ? appendApiRes(url, apiRes) : appendApiRes(`/${url}`, apiRes);
240
+ const res = await fetch(fetchUrl);
241
+ if (!res.ok) return null;
242
+ return {
243
+ buffer: await res.arrayBuffer(),
244
+ contentType: res.headers.get("content-type") || guessImageContentTypeFromUrl(url)
245
+ };
246
+ }
247
+ /**
248
+ * 将图片 URL 解密/拉取为 Uint8Array(JS 侧可视为等价 Uint8List)。
249
+ * @param url 图片 URL。
250
+ * @param secretKey 可选解密密钥。
251
+ * @returns 成功时返回字节数组与内容类型,失败时返回 `null`。
252
+ */
253
+ async function decryptImageToUint8Array(url, secretKey) {
254
+ const res = await decryptImageToArrayBuffer(url, secretKey);
255
+ if (!res) return null;
256
+ return {
257
+ bytes: new Uint8Array(res.buffer),
258
+ contentType: res.contentType
259
+ };
260
+ }
261
+ function drainQueue() {
262
+ const pool = ensureWorkerPool();
263
+ if (!pool) return;
264
+ for (const state of pool) {
265
+ if (state.busy) continue;
266
+ const task = taskQueue.shift();
267
+ if (!task) return;
268
+ state.busy = true;
269
+ state.current = {
270
+ id: task.id,
271
+ resolve: task.resolve,
272
+ reject: task.reject
273
+ };
274
+ const payload = {
275
+ id: task.id,
276
+ mode: "bnc-url",
277
+ url: task.url,
278
+ apiRes: getResUrl(),
279
+ secretKey: task.secretKey
280
+ };
281
+ state.worker.postMessage(payload);
282
+ }
283
+ }
284
+ function decryptBncUrlInWorker(url, secretKey) {
285
+ if (!ensureWorkerPool()) return Promise.resolve({
286
+ id: "no-worker",
287
+ buffer: /* @__PURE__ */ new ArrayBuffer(0),
288
+ error: "worker not available"
289
+ });
290
+ const id = typeof crypto !== "undefined" && "randomUUID" in crypto ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(16).slice(2)}`;
291
+ return new Promise((resolve, reject) => {
292
+ taskQueue.push({
293
+ id,
294
+ url,
295
+ secretKey,
296
+ resolve,
297
+ reject
298
+ });
299
+ drainQueue();
300
+ });
301
+ }
302
+ /**
303
+ * 仅处理 bnc 结尾的图片 URL:拉取密文 -> worker 解密 -> 返回本地 blobUrl
304
+ * - 非 bnc:原样返回(由调用方自行决定是否处理)
305
+ * @param url 图片 URL。
306
+ * @param secretKey 可选解密密钥。
307
+ * @returns 解密后的本地 blob URL,或原始 URL;失败时返回空字符串。
308
+ */
309
+ async function decryptImageUrl(url, secretKey) {
310
+ const cached = await getItem(url);
311
+ if (cached instanceof ArrayBuffer) return URL.createObjectURL(new Blob([cached], { type: guessImageContentTypeFromUrl(url) }));
312
+ if (isEncryptedImageUrl(url)) {
313
+ const { buffer, contentType, error } = await decryptBncUrlInWorker(url, secretKey);
314
+ if (error) return "";
315
+ await setItem(url, buffer);
316
+ return URL.createObjectURL(new Blob([buffer], { type: contentType ?? guessImageContentTypeFromUrl(url) }));
317
+ } else {
318
+ if (isCompleteImageUrl(url)) return url;
319
+ if (shouldUseApiResDirectly(url)) return appendApiRes(url, getResUrl());
320
+ if (shouldProbeImageUrl(url)) return resolveImageUrl(url);
321
+ return url;
322
+ }
323
+ }
324
+
325
+ //#endregion
326
+ export { decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, guessImageContentTypeFromUrl, isEncryptedImageUrl, resolveImageUrl, shouldProbeImageUrl, shouldUseApiResDirectly };
@@ -1,5 +1,6 @@
1
1
 
2
- const e=String.raw`/* @funhub/platform bnc decrypt worker (inline / wasm) */
2
+ //#region utils/decrypt.worker.ts
3
+ const BNC_DECRYPT_WORKER_SOURCE_TEMPLATE = String.raw`/* @funhub/platform bnc decrypt worker (inline / wasm) */
3
4
  const DEFAULT_BNC_KEY = '525202f9149e061d';
4
5
  const ORIGIN = "__ORIGIN__"; // injected
5
6
 
@@ -124,4 +125,21 @@ self.onmessage = async (event) => {
124
125
  self.postMessage({ id, error: (err && err.message) ? err.message : String(err) });
125
126
  }
126
127
  };
127
- `;function t(){if(typeof window>`u`)throw TypeError(`createBncDecryptWorker() must be called in browser runtime`);let t=window.location.origin,n=e.replaceAll(`__ORIGIN__`,t),r=new Blob([n],{type:`text/javascript`}),i=URL.createObjectURL(r),a=new Worker(i);return setTimeout(()=>URL.revokeObjectURL(i),0),a}export{t as createBncDecryptWorker};
128
+ `;
129
+ /**
130
+ * 在浏览器运行时创建 bnc 解密 Worker。
131
+ * @returns 可直接 postMessage 的 Worker 实例。
132
+ */
133
+ function createBncDecryptWorker() {
134
+ if (typeof window === "undefined") throw new TypeError("createBncDecryptWorker() must be called in browser runtime");
135
+ const origin = window.location.origin;
136
+ const source = BNC_DECRYPT_WORKER_SOURCE_TEMPLATE.replaceAll("__ORIGIN__", origin);
137
+ const blob = new Blob([source], { type: "text/javascript" });
138
+ const blobUrl = URL.createObjectURL(blob);
139
+ const w = new Worker(blobUrl);
140
+ setTimeout(() => URL.revokeObjectURL(blobUrl), 0);
141
+ return w;
142
+ }
143
+
144
+ //#endregion
145
+ export { createBncDecryptWorker };
@@ -1,2 +1,34 @@
1
1
 
2
- "use client";const e=new class{constructor(){this.events={}}on(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t)}off(e,t){let n=this.events[e];n&&(this.events[e]=n.filter(e=>e!==t))}emit(e,...t){let n=this.events[e];n&&n.forEach(e=>e(...t))}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};this.on(e,n)}};export{e as default};
2
+ 'use client';
3
+
4
+ //#region utils/event-bus.ts
5
+ var EventBus = class {
6
+ constructor() {
7
+ this.events = {};
8
+ }
9
+ on(event, handler) {
10
+ if (!this.events[event]) this.events[event] = [];
11
+ this.events[event].push(handler);
12
+ }
13
+ off(event, handler) {
14
+ const handlers = this.events[event];
15
+ if (!handlers) return;
16
+ this.events[event] = handlers.filter((listener) => listener !== handler);
17
+ }
18
+ emit(event, ...args) {
19
+ const handlers = this.events[event];
20
+ if (!handlers) return;
21
+ handlers.forEach((listener) => listener(...args));
22
+ }
23
+ once(event, handler) {
24
+ const onceHandler = (...args) => {
25
+ handler(...args);
26
+ this.off(event, onceHandler);
27
+ };
28
+ this.on(event, onceHandler);
29
+ }
30
+ };
31
+ const eventBus = new EventBus();
32
+
33
+ //#endregion
34
+ export { eventBus as default };
@@ -1,2 +1,88 @@
1
1
 
2
- import{useUserStore as e}from"../store/modules/user-store.mjs";import{pInteractionCheckFollow as t,pInteractionFollow as n,pInteractionUnfollow as r}from"../service/generated/client.mjs";async function i(e){try{let t=await n(e);return{success:t.code===0,message:t.message||`关注成功`,data:t.data}}catch(e){return console.error(`关注用户失败:`,e),{success:!1,message:`关注失败,请稍后重试`,data:null}}}async function a(e){try{let t=await r(e);return{success:t.code===0,message:t.message||`取消关注成功`,data:t.data}}catch(e){return console.error(`取消关注用户失败:`,e),{success:!1,message:`取消关注失败,请稍后重试`,data:null}}}async function o(e){try{let n=await t(e);return{success:n.code===0,message:n.message||`查询成功`,data:n.data}}catch(e){return console.error(`检查关注状态失败:`,e),{success:!1,message:`查询失败,请稍后重试`,data:null}}}function s(){return 0}function c(){return e.getState().userId||e.getState().userInfo?.userId}export{o as checkFollowStatus,i as followUser,s as getAppId,c as getCurrentUserId,a as unfollowUser};
2
+ import { useUserStore } from "../store/modules/user-store.mjs";
3
+ import { pInteractionCheckFollow, pInteractionFollow, pInteractionUnfollow } from "../service/generated/client.mjs";
4
+
5
+ //#region utils/follow-service.ts
6
+ /**
7
+ * 关注用户
8
+ * @param params 关注参数
9
+ * @returns 关注结果
10
+ */
11
+ async function followUser(params) {
12
+ try {
13
+ const response = await pInteractionFollow(params);
14
+ return {
15
+ success: response.code === 0,
16
+ message: response.message || "关注成功",
17
+ data: response.data
18
+ };
19
+ } catch (error) {
20
+ console.error("关注用户失败:", error);
21
+ return {
22
+ success: false,
23
+ message: "关注失败,请稍后重试",
24
+ data: null
25
+ };
26
+ }
27
+ }
28
+ /**
29
+ * 取消关注用户
30
+ * @param params 取消关注参数
31
+ * @returns 取消关注结果
32
+ */
33
+ async function unfollowUser(params) {
34
+ try {
35
+ const response = await pInteractionUnfollow(params);
36
+ return {
37
+ success: response.code === 0,
38
+ message: response.message || "取消关注成功",
39
+ data: response.data
40
+ };
41
+ } catch (error) {
42
+ console.error("取消关注用户失败:", error);
43
+ return {
44
+ success: false,
45
+ message: "取消关注失败,请稍后重试",
46
+ data: null
47
+ };
48
+ }
49
+ }
50
+ /**
51
+ * 检查是否关注用户
52
+ * @param data 检查关注参数
53
+ * @returns 关注状态
54
+ */
55
+ async function checkFollowStatus(data) {
56
+ try {
57
+ const response = await pInteractionCheckFollow(data);
58
+ return {
59
+ success: response.code === 0,
60
+ message: response.message || "查询成功",
61
+ data: response.data
62
+ };
63
+ } catch (error) {
64
+ console.error("检查关注状态失败:", error);
65
+ return {
66
+ success: false,
67
+ message: "查询失败,请稍后重试",
68
+ data: null
69
+ };
70
+ }
71
+ }
72
+ /**
73
+ * 获取应用ID(从环境变量或配置中获取)
74
+ * @returns 应用ID
75
+ */
76
+ function getAppId() {
77
+ return 0;
78
+ }
79
+ /**
80
+ * 获取当前用户ID(从用户状态或token中获取)
81
+ * @returns 用户ID
82
+ */
83
+ function getCurrentUserId() {
84
+ return useUserStore.getState().userId || useUserStore.getState().userInfo?.userId;
85
+ }
86
+
87
+ //#endregion
88
+ export { checkFollowStatus, followUser, getAppId, getCurrentUserId, unfollowUser };
@@ -1,2 +1,95 @@
1
1
 
2
- let e,t,n=!1;function r(){return typeof window<`u`}function i(e,t=2e3){return new Promise((n,r)=>{let i=new XMLHttpRequest,a=performance.now(),o=!1,s=window.setTimeout(()=>{o||(o=!0,i.abort(),r(Error(`timeout`)))},t);i.onreadystatechange=()=>{if(!o&&i.readyState===2){o=!0,clearTimeout(s);let e=performance.now()-a;i.abort(),n(e)}},i.onerror=()=>{o||(o=!0,clearTimeout(s),r(Error(`network error`)))},i.open(`GET`,e,!0),i.send()})}async function a(e,t){if(!t||t.length===0)return``;let n=t.map(t=>{let n=new URL(t+e);return n.searchParams.set(`_t`,String(Date.now())),n.toString()}),r=(await Promise.allSettled(n.map(e=>i(e)))).map((e,t)=>({r:e,i:t})).filter(e=>e.r.status===`fulfilled`).map(e=>({url:n[e.i],ms:e.r.value})).sort((e,t)=>e.ms-t.ms);if(!r.length)return``;try{return new URL(r[0].url).origin}catch(e){return console.warn(`Failed to parse fastest host URL:`,e),``}}function o(){if(!t&&(t=process.env.NEXT_PUBLIC_DEFAULT_CDN||``,!t))return console.warn(`NEXT_PUBLIC_DEFAULT_CDN is not configured`),``;if(!r())return t;let i=process.env.NEXT_PUBLIC_CDN_LIST;if(!i)return t;let o=i.split(`,`).filter(Boolean);return o.length===0?t:(!n&&o.length>0&&(n=!0,a(`/md-204/dcc-file/bd/bdacfcd4c9ff70353971a79dd9e8cb8c-small.bnc`,o).then(t=>{e=t}).catch(()=>{e=t})),e||t||``)}export{o as default};
2
+ //#region utils/get-res-url.ts
3
+ let api_url;
4
+ let default_cdn;
5
+ let flag = false;
6
+ /**
7
+ * 检查是否在客户端环境
8
+ */
9
+ function isClient() {
10
+ return typeof window !== "undefined";
11
+ }
12
+ function measureTtfbByXHR(url, timeoutMs = 2e3) {
13
+ return new Promise((resolve, reject) => {
14
+ const xhr = new XMLHttpRequest();
15
+ const t0 = performance.now();
16
+ let done = false;
17
+ const timeout = window.setTimeout(() => {
18
+ if (done) return;
19
+ done = true;
20
+ xhr.abort();
21
+ reject(/* @__PURE__ */ new Error("timeout"));
22
+ }, timeoutMs);
23
+ xhr.onreadystatechange = () => {
24
+ if (!done && xhr.readyState === 2) {
25
+ done = true;
26
+ clearTimeout(timeout);
27
+ const t = performance.now() - t0;
28
+ xhr.abort();
29
+ resolve(t);
30
+ }
31
+ };
32
+ xhr.onerror = () => {
33
+ if (done) return;
34
+ done = true;
35
+ clearTimeout(timeout);
36
+ reject(/* @__PURE__ */ new Error("network error"));
37
+ };
38
+ xhr.open("GET", url, true);
39
+ xhr.send();
40
+ });
41
+ }
42
+ async function pickFasterHostByTTFB(path, hosts) {
43
+ if (!hosts || hosts.length === 0) return "";
44
+ const urls = hosts.map((h) => {
45
+ const u = new URL(h + path);
46
+ u.searchParams.set("_t", String(Date.now()));
47
+ return u.toString();
48
+ });
49
+ const ok = (await Promise.allSettled(urls.map((u) => measureTtfbByXHR(u)))).map((r, i) => ({
50
+ r,
51
+ i
52
+ })).filter((x) => x.r.status === "fulfilled").map((x) => ({
53
+ url: urls[x.i],
54
+ ms: x.r.value
55
+ })).sort((a, b) => a.ms - b.ms);
56
+ if (!ok.length) return "";
57
+ try {
58
+ return new URL(ok[0].url).origin;
59
+ } catch (error) {
60
+ console.warn("Failed to parse fastest host URL:", error);
61
+ return "";
62
+ }
63
+ }
64
+ /**
65
+ * 获取资源URL
66
+ * - 服务端(SSG/SSR):直接返回默认CDN
67
+ * - 客户端:初始时返回默认CDN,测速完成后自动切换到最快的CDN
68
+ * @returns CDN URL
69
+ */
70
+ function getResUrl() {
71
+ if (!default_cdn) {
72
+ default_cdn = process.env.NEXT_PUBLIC_DEFAULT_CDN || "";
73
+ if (!default_cdn) {
74
+ console.warn("NEXT_PUBLIC_DEFAULT_CDN is not configured");
75
+ return "";
76
+ }
77
+ }
78
+ if (!isClient()) return default_cdn;
79
+ const cdnListEnv = process.env.NEXT_PUBLIC_CDN_LIST;
80
+ if (!cdnListEnv) return default_cdn;
81
+ const cdnList = cdnListEnv.split(",").filter(Boolean);
82
+ if (cdnList.length === 0) return default_cdn;
83
+ if (!flag && cdnList.length > 0) {
84
+ flag = true;
85
+ pickFasterHostByTTFB("/md-204/dcc-file/bd/bdacfcd4c9ff70353971a79dd9e8cb8c-small.bnc", cdnList).then((url) => {
86
+ api_url = url;
87
+ }).catch(() => {
88
+ api_url = default_cdn;
89
+ });
90
+ }
91
+ return api_url || default_cdn || "";
92
+ }
93
+
94
+ //#endregion
95
+ export { getResUrl as default };