@funhub/platform 0.2.4 → 0.2.6

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 (231) hide show
  1. package/dist/assets/icons/detail/collect_nor.mjs +2 -0
  2. package/dist/assets/icons/detail/collect_sel.mjs +2 -0
  3. package/dist/assets/icons/detail/share.mjs +2 -0
  4. package/dist/assets/icons/eye-off-icon.mjs +1 -1
  5. package/dist/assets/icons/marquee-enter.mjs +2 -0
  6. package/dist/assets/icons/right_arrow.mjs +2 -0
  7. package/dist/assets/icons/search/avatar.mjs +2 -0
  8. package/dist/assets/images/marquee.mjs +2 -0
  9. package/dist/biz.d.mts +6 -10
  10. package/dist/biz.mjs +1 -1
  11. package/dist/common.d.mts +2 -5
  12. package/dist/common.mjs +1 -1
  13. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
  14. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  15. package/dist/components/biz/business/advertisement/ad-match.d.mts +3 -7
  16. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  17. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
  18. package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +2 -2
  19. package/dist/components/biz/business/advertisement/banner-ad/material.mjs +1 -1
  20. package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +4 -9
  21. package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +1 -1
  22. package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +31 -1
  23. package/dist/components/biz/business/advertisement/feed-ad/index.mjs +1 -1
  24. package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +3 -4
  25. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
  26. package/dist/components/biz/business/advertisement/floating-ad/index.d.mts +1 -1
  27. package/dist/components/biz/business/advertisement/floating-ad/material.d.mts +0 -5
  28. package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +6 -21
  29. package/dist/components/biz/business/advertisement/floating-ad/schema.mjs +1 -1
  30. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
  31. package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +1 -1
  32. package/dist/components/biz/business/advertisement/icon-ad/material.mjs +1 -1
  33. package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +1 -7
  34. package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +1 -1
  35. package/dist/components/biz/business/advertisement/index.d.mts +4 -4
  36. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
  37. package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +1 -1
  38. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +2 -2
  39. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +15 -14
  40. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  41. package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
  42. package/dist/components/biz/business/advertisement/text-ad/material.d.mts +1 -1
  43. package/dist/components/biz/business/advertisement/text-ad/material.mjs +1 -1
  44. package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +1 -5
  45. package/dist/components/biz/business/advertisement/text-ad/schema.mjs +1 -1
  46. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
  47. package/dist/components/biz/business/banner-carousel/client.d.mts +1 -2
  48. package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
  49. package/dist/components/biz/business/banner-carousel/default-props.mjs +1 -1
  50. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  51. package/dist/components/biz/business/channel-list/default-props.mjs +1 -1
  52. package/dist/components/biz/business/detail/shared/detail-introduction.mjs +2 -0
  53. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  54. package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
  55. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  56. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
  57. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  58. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  59. package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +13 -1
  60. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  61. package/dist/components/biz/business/detail/video-detail-recommend/material.mjs +1 -1
  62. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
  63. package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -1
  64. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.d.mts +1 -1
  65. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  66. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +3 -4
  67. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  68. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -1
  69. package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -1
  70. package/dist/components/biz/business/header-search/header-search/client.mjs +1 -1
  71. package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
  72. package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
  73. package/dist/components/biz/business/header-search/shared/search.mjs +1 -1
  74. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +8 -0
  75. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  76. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +8 -0
  77. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +8 -0
  78. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  79. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +8 -0
  80. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  81. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  82. package/dist/components/biz/business/index.d.mts +5 -10
  83. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  84. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  85. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  86. package/dist/components/biz/business/marquee/client.mjs +1 -1
  87. package/dist/components/biz/business/marquee/marquee.module.mjs +6 -2
  88. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
  89. package/dist/components/biz/business/profile/index.d.mts +1 -1
  90. package/dist/components/biz/business/profile/profile-header/client.d.mts +1 -2
  91. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  92. package/dist/components/biz/business/profile/profile-header/index.d.mts +1 -1
  93. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  94. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  95. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  96. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  97. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  98. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  99. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +1 -5
  100. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  101. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
  102. package/dist/components/biz/business/search-history/client.mjs +1 -1
  103. package/dist/components/biz/business/search-history/schema.mjs +1 -1
  104. package/dist/components/biz/business/search-input/client.mjs +1 -1
  105. package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
  106. package/dist/components/biz/business/tab-bar/client.d.mts +2 -0
  107. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  108. package/dist/components/common/collection-popup/collection-create-modal.mjs +2 -0
  109. package/dist/components/common/collection-popup/index.d.mts +0 -1
  110. package/dist/components/common/collection-popup/index.mjs +1 -1
  111. package/dist/components/common/icons/setting.mjs +1 -1
  112. package/dist/components/common/list/collection-list/collection-list-item.d.mts +0 -8
  113. package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -1
  114. package/dist/components/common/list/collection-list/collection-list.d.mts +0 -6
  115. package/dist/components/common/list/collection-list/collection-list.mjs +1 -1
  116. package/dist/components/common/series-episodes/index.d.mts +1 -3
  117. package/dist/components/common/series-episodes/index.mjs +1 -1
  118. package/dist/components/common/skeleton/search-video-card-skeleton.mjs +2 -0
  119. package/dist/components/common/tab-bar/index.mjs +1 -1
  120. package/dist/components/common/video-player/index.d.mts +2 -1
  121. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +2 -0
  122. package/dist/components/common/video-player/video-player-ref-context.mjs +2 -0
  123. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  124. package/dist/components/pages/edit/page.mjs +1 -1
  125. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
  126. package/dist/components/pages/home/client.mjs +1 -1
  127. package/dist/components/pages/login/login-client.mjs +1 -1
  128. package/dist/components/pages/login/register.mjs +1 -1
  129. package/dist/components/pages/login/verify.mjs +4 -1
  130. package/dist/components/pages/publish/components/collection.mjs +1 -1
  131. package/dist/components/pages/search/page-client.mjs +1 -1
  132. package/dist/components/pages/search/search-result/index.mjs +1 -1
  133. package/dist/components/pages/search/search-result/search-all.mjs +1 -1
  134. package/dist/components/pages/search/search-result/search-user.mjs +1 -1
  135. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  136. package/dist/components/pages/search/search-utils.mjs +2 -0
  137. package/dist/components/pages/search/top-header.mjs +1 -1
  138. package/dist/components/pages/search-result/page-client.mjs +1 -1
  139. package/dist/components/pages/search-result/search-all.mjs +1 -1
  140. package/dist/components/pages/search-result/search-result-skeleton.mjs +2 -0
  141. package/dist/components/pages/search-result/search-tab.mjs +1 -1
  142. package/dist/components/pages/search-result/search-user.mjs +1 -1
  143. package/dist/components/pages/search-result/search-video.mjs +2 -0
  144. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +2 -2
  145. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  146. package/dist/components/pages/user-follow/_components/follow-no-login.mjs +1 -1
  147. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  148. package/dist/components/pages/video-list/video-list-item.mjs +2 -0
  149. package/dist/components/pages/video-list/video-list-skeleton.d.mts +3 -2
  150. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  151. package/dist/components/ui/badge.d.mts +1 -1
  152. package/dist/components/ui/box.d.mts +1 -1
  153. package/dist/components/ui/button.d.mts +2 -2
  154. package/dist/components/ui/image.d.mts +4 -4
  155. package/dist/components/ui/input-group.d.mts +1 -1
  156. package/dist/components/ui/item.d.mts +1 -1
  157. package/dist/hooks/use-is-client.d.mts +10 -0
  158. package/dist/hooks/use-is-client.mjs +2 -0
  159. package/dist/hooks.d.mts +2 -1
  160. package/dist/hooks.mjs +1 -1
  161. package/dist/i18n/locales/en.mjs +2 -2
  162. package/dist/i18n/locales/zh-CN.mjs +2 -2
  163. package/dist/materials.d.mts +1 -3
  164. package/dist/materials.mjs +1 -1
  165. package/dist/service/generated/client.d.mts +10 -2
  166. package/dist/service/generated/client.mjs +1 -1
  167. package/dist/service/generated/tanstack.d.mts +12 -2
  168. package/dist/service/generated/tanstack.mjs +1 -1
  169. package/dist/service.d.mts +3 -3
  170. package/dist/service.mjs +1 -1
  171. package/dist/store/modules/blind-spot-ad-store.d.mts +116 -0
  172. package/dist/store/modules/blind-spot-ad-store.mjs +2 -0
  173. package/dist/store/modules/video-player-ref-store.d.mts +21 -0
  174. package/dist/store/modules/video-player-ref-store.mjs +2 -0
  175. package/dist/store.d.mts +3 -1
  176. package/dist/store.mjs +1 -1
  177. package/dist/types.d.mts +171 -33
  178. package/dist/utils/helper.d.mts +1 -1
  179. package/dist/utils/helper.mjs +1 -1
  180. package/dist/utils/schema/inspector.d.mts +2 -2
  181. package/package.json +2 -8
  182. package/theme.css +59 -170
  183. package/dist/assets/icons/channel-list/channel-active-indicator.mjs +0 -2
  184. package/dist/assets/icons/common/header-menu.mjs +0 -2
  185. package/dist/assets/icons/common/header-search-icon.mjs +0 -2
  186. package/dist/assets/icons/common/right_arrow_thin.mjs +0 -2
  187. package/dist/assets/icons/marquee-close.mjs +0 -2
  188. package/dist/assets/icons/marquee-speaker.mjs +0 -2
  189. package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +0 -2
  190. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +0 -2
  191. package/dist/components/biz/business/header-search/shared/header-action.mjs +0 -2
  192. package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +0 -2
  193. package/dist/components/biz/business/header-search/shared/header-shell.mjs +0 -2
  194. package/dist/components/biz/business/hot-recommend/client.d.mts +0 -17
  195. package/dist/components/biz/business/hot-recommend/client.mjs +0 -2
  196. package/dist/components/biz/business/hot-recommend/index.d.mts +0 -5
  197. package/dist/components/biz/business/hot-recommend/material.d.mts +0 -24
  198. package/dist/components/biz/business/hot-recommend/material.mjs +0 -2
  199. package/dist/components/biz/business/hot-recommend/schema.d.mts +0 -23
  200. package/dist/components/biz/business/hot-recommend/schema.mjs +0 -2
  201. package/dist/components/biz/business/hot-recommend/server.d.mts +0 -11
  202. package/dist/components/biz/business/hot-recommend/server.mjs +0 -2
  203. package/dist/components/biz/business/profile/profile-main/empty-state.mjs +0 -2
  204. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +0 -2
  205. package/dist/components/biz/business/ranking-recommend/client.d.mts +0 -17
  206. package/dist/components/biz/business/ranking-recommend/client.mjs +0 -70
  207. package/dist/components/biz/business/ranking-recommend/material.d.mts +0 -35
  208. package/dist/components/biz/business/ranking-recommend/material.mjs +0 -2
  209. package/dist/components/biz/business/ranking-recommend/schema.d.mts +0 -35
  210. package/dist/components/biz/business/ranking-recommend/schema.mjs +0 -2
  211. package/dist/components/biz/business/ranking-recommend/server.d.mts +0 -11
  212. package/dist/components/biz/business/ranking-recommend/server.mjs +0 -2
  213. package/dist/components/biz/business/ranking-recommend/shared/query.mjs +0 -2
  214. package/dist/components/biz/business/ranking-recommend/shared.d.mts +0 -15
  215. package/dist/components/biz/business/ranking-recommend/shared.mjs +0 -2
  216. package/dist/components/common/collection-popup/create-collection-sheet.d.mts +0 -41
  217. package/dist/components/common/collection-popup/create-collection-sheet.mjs +0 -2
  218. package/dist/components/common/list/collection-list/collection-select-icon.mjs +0 -2
  219. package/dist/components/common/list/waterfall-recommend/index.d.mts +0 -2
  220. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +0 -116
  221. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +0 -2
  222. package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +0 -2
  223. package/dist/components/pages/login/auth-page-styles.mjs +0 -6
  224. package/dist/components/pages/search/search-result/shared.mjs +0 -2
  225. package/dist/components/pages/search-result/search-empty.mjs +0 -2
  226. package/dist/components/pages/search-result/search-video-info.mjs +0 -2
  227. package/dist/components/pages/search-result/shared.mjs +0 -2
  228. package/dist/components/pages/search-result/top-header.mjs +0 -2
  229. package/dist/components/pages/video-list/video-list-recommend-item.mjs +0 -2
  230. package/dist/theme-tokens.d.mts +0 -9
  231. package/dist/theme-tokens.mjs +0 -2
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{pxToVw as t}from"../../../../../utils/helper.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import{useBrowseReport as a}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as o,useMediaPreview as s}from"../../../../common/media-preview/index.mjs";import c from"../../../../common/video-player/index.mjs";import{UserActivityMediaGrid as l}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{memo as u,useCallback as d,useEffect as f,useMemo as p,useRef as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";const y=u(({mode:t=`renderer`,information:n,isVideo:a,episodeIndex:c=0,resumeProgressSeconds:u=0,className:f=``})=>{let m=t===`editor`,h=p(()=>({id:n.id,name:n.name,preview_images:n.preview_images,img_y:n.img_y,img_x:n.img_x}),[n.id,n.name,n.preview_images,n.img_y,n.img_x]),v=p(()=>{let e=n?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(h.preview_images?.length?h.preview_images:[h.img_y||h.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[h.img_x,h.img_y,h.preview_images,n]),y=s(),x=p(()=>v.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,r=String(e?.media_url||``),i=e?.cover_image||n.img_y||n.img_x;return{src:r,type:t,...i?{cover:String(i)}:{}}}).filter(e=>!!e.src),[n.img_x,n.img_y,v]),S=d(e=>{m||!x.length||y.open(x,e)},[m,y,x]);return m?g(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):a?g(b,{information:n,episodeIndex:c,resumeProgressSeconds:u,isEditor:m}):_(`div`,{className:e(`w-full`,f),children:[_(r,{className:`mt-3 px-[12px] space-y-1`,children:[g(i,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:n.description}}),g(l,{medias:v,onItemClick:S})]}),g(o,{})]})});y.displayName=`DetailHero`;const b=u(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r})=>{let i=p(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return g(x,{information:{...e,...i},episodeIndex:t,resumeProgressSeconds:n,isEditor:r})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor});b.displayName=`StableDetailPlayerBox`;function x({information:e,episodeIndex:i,resumeProgressSeconds:o,isEditor:s}){let l=v(`components.biz.business.detail`),u=m(0),y=m(0),b=Math.max(0,Number(i)||0),x=b+1,T=p(()=>e?.id,[e?.id]),E=p(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),D=p(()=>E.mid||E.id,[E.id,E.mid]),O=p(()=>{let e=E.links?.[b]?.id;return e?String(e):`ep-${b+1}`},[b,E.links]),k=p(()=>`__reportData_detail_page__${E.id}:${O}`,[O,E.id]),A=p(()=>{if(s||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(k);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[s,k]),j=p(()=>{let e=Number(o||0);return Number.isFinite(e)&&e>0?e:0},[o]),M=p(()=>j>0?j:A,[j,A]),N=p(()=>{let t=w(e),n=t[t.length?Math.max(0,Math.min(b,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(E.img_width||0)||1,a=Number(E.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:S(i,a),aspectRatio:(i||1)/(a||1),poster:E.img_y||E.img_x||E.preview_images?.[0]||``}},[e.id,e.links,b,E.img_width,E.img_height,E.img_y,E.img_x,E.preview_images]),P=d((e,t)=>{u.current=e,y.current=t},[]),F=p(()=>N.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:M,preload:`none`}:{startTimeSeconds:M},[M,N.videoUrl]);f(()=>{u.current=0,y.current=0},[T,b]);let I=a({contentId:T,browseEpisode:x,contentType:1,enabled:!s&&!!T,intervalMs:60*1e3,getCurrentTimeSeconds:()=>u.current,getDurationSeconds:()=>y.current});if(f(()=>{if(s)return;let e=()=>{if(!(typeof window>`u`)&&!(u.current<=0||y.current<=0))try{sessionStorage.setItem(k,JSON.stringify({episodeId:O,currentTime:u.current,duration:y.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[O,s,k]),!N.hasVideo)return g(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:l(`videoHero.noVideos`)});let L=C(430,N.aspectRatio,242),R=L.height>0?t(L.height):`auto`,z=L.height>0?`calc(${R} + 0px)`:`auto`,B=t(242);return _(h,{children:[g(r,{suppressHydrationWarning:!0,className:`w-full`,style:{height:z,maxWidth:`100%`,maxHeight:`calc(${B} + 0px)`}}),_(r,{className:`w-full relative bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[N.poster&&_(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:R},children:[g(n,{src:N.poster,alt:l(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),g(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),g(r,{suppressHydrationWarning:!0,"data-aspect-ratio":N.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:R,maxWidth:`100%`,maxHeight:B,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:g(c,{plyerId:`detail-player-${E.id}-${b}`,parentId:D,resolution:N.resolution||`0x0`,videoUrl:N.videoUrl,poster:N.poster,mergeConfig:F,onProgressUpdate:s?void 0:P,onPlay:s?void 0:I.handlePlay,onPause:s?void 0:I.handlePause,onEnded:s?void 0:I.handleEnded},`stable-player-${E.id}-${b}`)})]})]})}function S(e,t){return!e||!t?``:`${e}x${t}`}function C(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function w(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{y as DetailHero};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{pxToVw as t}from"../../../../../utils/helper.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import{useBrowseReport as a}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as o,useMediaPreview as s}from"../../../../common/media-preview/index.mjs";import c from"../../../../common/video-player/index.mjs";import{UserActivityMediaGrid as l}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as u}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as d}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{memo as f,useCallback as p,useEffect as m,useMemo as h,useRef as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";const b=f(({mode:t=`renderer`,information:n,isVideo:a,episodeIndex:c=0,resumeProgressSeconds:u=0,className:d=``})=>{let f=t===`editor`,m=h(()=>({id:n.id,name:n.name,preview_images:n.preview_images,img_y:n.img_y,img_x:n.img_x}),[n.id,n.name,n.preview_images,n.img_y,n.img_x]),g=h(()=>{let e=n?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,n]),y=s(),b=h(()=>g.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,r=String(e?.media_url||``),i=e?.cover_image||n.img_y||n.img_x;return{src:r,type:t,...i?{cover:String(i)}:{}}}).filter(e=>!!e.src),[n.img_x,n.img_y,g]),S=p(e=>{f||!b.length||y.open(b,e)},[f,y,b]);return f?_(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):a?_(x,{information:n,episodeIndex:c,resumeProgressSeconds:u,isEditor:f}):v(`div`,{className:e(`w-full`,d),children:[v(r,{className:`mt-3 px-[12px] space-y-1`,children:[_(i,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:n.description}}),_(l,{medias:g,onItemClick:S})]}),_(o,{})]})});b.displayName=`DetailHero`;const x=f(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r})=>{let i=h(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return _(S,{information:{...e,...i},episodeIndex:t,resumeProgressSeconds:n,isEditor:r})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor});x.displayName=`StableDetailPlayerBox`;function S({information:e,episodeIndex:i,resumeProgressSeconds:o,isEditor:s}){let l=g(null);console.log(`[video-hero] 创建 playerRef:`,{ref:l,current:l.current,infoId:e.id});let f=y(`components.biz.business.detail`),b=g(0),x=g(0),S=Math.max(0,Number(i)||0),E=S+1,D=h(()=>e?.id,[e?.id]),O=h(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),k=h(()=>O.mid||O.id,[O.id,O.mid]),A=h(()=>{let e=O.links?.[S]?.id;return e?String(e):`ep-${S+1}`},[S,O.links]),j=h(()=>`__reportData_detail_page__${O.id}:${A}`,[A,O.id]),M=h(()=>{if(s||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(j);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[s,j]),N=h(()=>{let e=Number(o||0);return Number.isFinite(e)&&e>0?e:0},[o]),P=h(()=>N>0?N:M,[N,M]),F=h(()=>{let t=T(e),n=t[t.length?Math.max(0,Math.min(S,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(O.img_width||0)||1,a=Number(O.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:C(i,a),aspectRatio:(i||1)/(a||1),poster:O.img_y||O.img_x||O.preview_images?.[0]||``}},[e.id,e.links,S,O.img_width,O.img_height,O.img_y,O.img_x,O.preview_images]),I=p((e,t)=>{b.current=e,x.current=t},[]),L=h(()=>F.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:P,preload:`none`}:{startTimeSeconds:P},[P,F.videoUrl]);m(()=>{b.current=0,x.current=0},[D,S]);let R=a({contentId:D,browseEpisode:E,contentType:1,enabled:!s&&!!D,intervalMs:60*1e3,getCurrentTimeSeconds:()=>b.current,getDurationSeconds:()=>x.current});if(m(()=>{if(s)return;let e=()=>{if(!(typeof window>`u`)&&!(b.current<=0||x.current<=0))try{sessionStorage.setItem(j,JSON.stringify({episodeId:A,currentTime:b.current,duration:x.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[A,s,j]),!F.hasVideo)return _(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:f(`videoHero.noVideos`)});let z=w(430,F.aspectRatio,242),B=z.height>0?t(z.height):`auto`,V=z.height>0?`calc(${B} + 0px)`:`auto`,H=t(242);return v(u,{value:l,children:[_(r,{suppressHydrationWarning:!0,className:`w-full`,style:{height:V,maxWidth:`100%`,maxHeight:`calc(${H} + 0px)`}}),v(r,{className:`w-full relative bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[F.poster&&v(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:B},children:[_(n,{src:F.poster,alt:f(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),_(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),v(r,{suppressHydrationWarning:!0,"data-aspect-ratio":F.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:B,maxWidth:`100%`,maxHeight:H,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[_(c,{ref:l,plyerId:`detail-player-${O.id}-${S}`,parentId:k,resolution:F.resolution||`0x0`,videoUrl:F.videoUrl,poster:F.poster,mergeConfig:L,onProgressUpdate:s?void 0:I,onPlay:s?void 0:R.handlePlay,onPause:s?void 0:R.handlePause,onEnded:s?void 0:R.handleEnded},`stable-player-${O.id}-${S}`),_(d,{videoId:O.id})]})]})]})}function C(e,t){return!e||!t?``:`${e}x${t}`}function w(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function T(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{b as DetailHero};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRequest as e}from"../../../../../hooks/query/use-query.mjs";import{batchQueryContentInteractions as t}from"../../../../../hooks/use-content-operate.mjs";import{DetailOperate as n}from"../shared/detail-operate.mjs";import{editorPreviewInformation as r}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as i}from"../shared/runtime-context-provider.mjs";import{useCallback as a,useEffect as o,useRef as s,useState as c}from"react";import{jsx as l}from"react/jsx-runtime";function u({mode:u=`renderer`}){let d=i(),f=d?.information,p=d?.onUpdateInformation,m=u===`editor`,h=u===`renderer`,g=m,_=g?r:f,[v,y]=c(_),b=s(_),x=s(``),S=s(!1);o(()=>{y(_)},[_]);let C=p?_:v;o(()=>{b.current=C},[C]);let w=h&&!!_?.id,{data:T}=e([`video-detail-actions-interaction`,_?.id],async()=>_?.id?await t([_.id],1):null,{enabled:w,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),E=a(e=>{if(!g){if(S.current=!0,p){p(e);return}y(t=>{if(!t)return t;let n=e.static?{...t.static||{},...e.static||{}}:t.static;return{...t,...e,static:n}})}},[p,g]);return o(()=>{if(S.current)return;let e=T?.interaction_list?.[0],t=b.current;if(!e||!t)return;let n=`${e.is_liked?1:0}-${e.is_disliked?1:0}-${e.is_collected?1:0}`;if(x.current===n)return;x.current=n;let r=e.is_liked||!1,i=e.is_disliked||!1,a=e.is_collected||!1,o=!!t.like,s=!!t.dislike,c=!!t.collect,l=t.static?.like_cnt,u=typeof l==`number`?l:Number(l||0),d=u;!r&&u>0?d=Math.max(0,u-1):o===r?r&&u===0&&(d=1):d=Math.max(0,u+(r?1:-1));let f=d!==u;o===r&&s===i&&c===a&&!f||E({like:r,dislike:i,collect:a,...f?{static:{...t.static||{},like_cnt:d}}:{}})},[E,T]),C?l(`div`,{className:g?`pointer-events-none`:void 0,children:l(n,{mode:u,information:C,onUpdate:E})}):null}export{u as VideoDetailActionsClient};
2
+ "use client";import{useRequest as e}from"../../../../../hooks/query/use-query.mjs";import{batchQueryContentInteractions as t}from"../../../../../hooks/use-content-operate.mjs";import{DetailOperate as n}from"../shared/detail-operate.mjs";import{editorPreviewInformation as r}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as i}from"../shared/runtime-context-provider.mjs";import{useCallback as a,useEffect as o,useRef as s,useState as c}from"react";import{jsx as l}from"react/jsx-runtime";function u({mode:u=`renderer`}){let d=i(),f=d?.information,p=d?.onUpdateInformation,m=u===`editor`,h=u===`renderer`,g=m,_=g?r:f,[v,y]=c(_),b=s(_),x=s(``);o(()=>{y(_)},[_]);let S=p?_:v;o(()=>{b.current=S},[S]);let C=h&&!!_?.id,{data:w}=e([`video-detail-actions-interaction`,_?.id],async()=>_?.id?await t([_.id],1):null,{enabled:C,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),T=a(e=>{if(!g){if(p){p(e);return}y(t=>{if(!t)return t;let n=e.static?{...t.static||{},...e.static||{}}:t.static;return{...t,...e,static:n}})}},[p,g]);return o(()=>{let e=w?.interaction_list?.[0],t=b.current;if(!e||!t)return;let n=`${e.is_liked?1:0}-${e.is_disliked?1:0}-${e.is_collected?1:0}`;if(x.current===n)return;x.current=n;let r=e.is_liked||!1,i=e.is_disliked||!1,a=e.is_collected||!1,o=!!t.like,s=!!t.dislike,c=!!t.collect,l=t.static?.like_cnt,u=typeof l==`number`?l:Number(l||0),d=u;!r&&u>0?d=Math.max(0,u-1):o===r?r&&u===0&&(d=1):d=Math.max(0,u+(r?1:-1));let f=d!==u;o===r&&s===i&&c===a&&!f||T({like:r,dislike:i,collect:a,...f?{static:{...t.static||{},like_cnt:d}}:{}})},[T,w]),S?l(`div`,{className:g?`pointer-events-none`:void 0,children:l(n,{mode:u,information:S,onUpdate:T})}):null}export{u as VideoDetailActionsClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../../../assets/icons/common/right_arrow_thin.mjs";import{DetailStyleOneActiveBorderLayer as t,SeriesEpisodes as n}from"../../../../common/series-episodes/index.mjs";import{useCardDecoration as r}from"../../../../../hooks/use-card-decoration.mjs";import{editorPreviewInformation as i}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as a}from"../shared/runtime-context-provider.mjs";import{useEffect as o,useMemo as s,useRef as c,useState as l}from"react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m(e,t,n){let r=Number.parseInt(e.id||``,10);return Number.isNaN(r)?e.name?.trim()||n(t):n(r)}function h({text:e}){let t=p(`components.biz.business.detail.detailIntroduction`),[n,r]=l(!1),[i,a]=l(!1),s=c(null);return o(()=>{r(!1)},[e]),o(()=>{if(n){a(!0);return}let t=s.current;if(!e||!t){a(!1);return}let r=()=>{a(t.scrollHeight>t.clientHeight+1)};r();let i=new ResizeObserver(r);return i.observe(t),()=>{i.disconnect()}},[n,e]),e?f(`div`,{className:`relative w-full`,children:[d(`p`,{ref:s,className:`w-full font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/50 ${n?``:`line-clamp-3`}`,children:e}),i&&d(`button`,{type:`button`,className:`font-['PingFang_SC'] text-[14px] font-medium not-italic leading-normal text-[#9054E5] ${n?`mt-[8px] ml-auto block`:`absolute right-0 bottom-0 flex h-[24px] w-[40px] items-center justify-end bg-gradient-to-r from-transparent via-[#161616] to-[#161616]`}`,onClick:()=>r(e=>!e),children:t(n?`collapse`:`expand`)})]}):null}function g({information:r,currentSeriesNum:i,onEpisodeChange:a}){let o=p(`components.common.seriesEpisodes`);function s(e){return o(`episodeLabel`,{episode:e})}let[c,h]=l(!1),[g,_]=l(!1),v=r.links?.length??0,y=r.links?.[i-1]?.id||r.links?.[0]?.id||``;return v<=1?null:f(u,{children:[f(`div`,{className:`mt-[16px] flex w-full flex-col gap-[16px]`,children:[f(`button`,{type:`button`,className:`flex w-full items-center justify-between`,onClick:()=>h(!0),children:[d(`span`,{className:`font-['PingFang_SC'] text-[18px] font-medium not-italic leading-[24px] text-text1`,children:o(`selectorTitle`)}),d(`span`,{className:`flex items-center opacity-60`,children:d(`span`,{className:`flex h-[24px] w-[24px] items-center justify-center p-[2px]`,children:d(e,{className:`h-[20px] w-[20px] text-text1`})})})]}),d(`div`,{className:`flex gap-[8px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:(r.links||[]).map((e,n)=>{let o=n+1,c=o===i,l=m(e,o,s);return f(`button`,{type:`button`,className:g?`relative flex h-[40px] min-w-[88px] shrink-0 items-center justify-center overflow-hidden rounded-[8px] px-[16px] transition-colors ${c?``:`bg-white/10`}`:`relative flex h-[56px] w-[56px] shrink-0 items-center justify-center overflow-hidden rounded-[8px] transition-colors ${c?``:`bg-white/10`}`,onClick:()=>a(o),children:[c&&d(t,{}),d(`span`,{className:`relative z-10 font-['PingFang_SC'] font-medium not-italic leading-[16px] ${c?`text-[#9756E3]`:`text-text1`} ${g?`text-[14px] whitespace-nowrap`:`text-[16px]`}`,children:g?l:o})]},e.id||`${r.id}-episode-${o}`)})})]}),d(n,{mode:`selector`,open:c,variant:`popup`,title:o(`selectorTitle`),updateStatus:r.update_status,seriesList:(r.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:y,showEpisodeTitle:g,onToggleTitle:e=>_(!!e),onClose:()=>h(!1),onSelectEpisode:(e,t)=>{h(!1),a(t)},popupStylePreset:`detail-style-one`})]})}function _({showTags:e=!0,showEpisodes:t=!0,mode:n=`renderer`}){let o=a(),c=o?.information,l=o?.currentSeriesNum??1,u=o?.onEpisodeChange,p=o?.isShow??!0,m=n===`editor`,{getTitleText:_}=r(),y=m,b=y?i:c,x=s(()=>b?_(b):``,[_,b]),S=s(()=>b?.description?.trim()||``,[b?.description]),C=s(()=>v(b?.score),[b?.score]);if(!b)return null;let w=Math.max(1,Number(l||1)),T=y?e=>{}:u??(()=>{}),E=e&&(b.tags?.length??0)>0,D=p&&!!S,O=(m||t)&&b.is_more_link===`y`&&(b.links?.length??0)>1;return!x&&!C&&!E&&!D&&!O?null:d(`div`,{className:y?`pointer-events-none`:void 0,children:f(`div`,{className:`w-full px-[12px] pt-[16px]`,children:[f(`div`,{className:`flex w-full flex-col gap-[12px]`,children:[(x||C)&&f(`div`,{className:`flex w-full items-center justify-between gap-[12px]`,children:[d(`p`,{className:`min-w-0 flex-1 truncate font-['PingFang_SC'] text-[18px] font-medium not-italic leading-normal text-text1`,children:x}),C&&d(`span`,{className:`shrink-0 font-['DIN'] text-[18px] font-bold not-italic leading-[20px] text-[#FFC039]`,children:C})]}),E&&d(`div`,{className:`flex items-center gap-[6px] overflow-x-auto overflow-y-hidden [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:(b.tags||[]).map((e,t)=>d(`div`,{className:`flex h-[24px] shrink-0 items-center justify-center rounded-[4px] bg-[rgba(217,217,217,0.2)] px-[4px] py-[2px]`,children:d(`span`,{className:`font-['PingFang_SC'] text-[12px] font-normal not-italic leading-[14px] text-text1`,children:e.name})},`${e.id||e.name}-${t}`))}),D&&d(h,{text:S})]}),O&&d(g,{information:b,currentSeriesNum:w,onEpisodeChange:T})]})})}function v(e){let t=Number(e||`0`);return!Number.isFinite(t)||t<=0?``:(t>10?t/10:t).toFixed(1)}export{_ as VideoDetailInfoClient};
2
+ "use client";import{SeriesEpisodes as e}from"../../../../common/series-episodes/index.mjs";import{DetailIntroduction as t}from"../shared/detail-introduction.mjs";import{editorPreviewInformation as n}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as r}from"../shared/runtime-context-provider.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o({showTags:o=!1,showEpisodes:s=!0,mode:c=`renderer`}){let l=r(),u=l?.information,d=l?.currentSeriesNum??1,f=l?.onEpisodeChange,p=l?.isShow??!0,m=c===`editor`,h=m,g=h?n:u;if(!g)return null;let _=Math.max(1,Number(d||1)),v=h?e=>{}:f??(()=>{}),y=g?.is_more_link===`y`&&(g?.links?.length??0)>1;return a(`div`,{className:h?`pointer-events-none`:void 0,children:[i(t,{information:g,isShow:p,showTags:o}),(m||s)&&y&&i(e,{mode:`detail`,series_num:_,information:g,onEpisodeChange:v})]})}export{o as VideoDetailInfoClient};
@@ -6,6 +6,18 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
  /**
7
7
  * 推荐模块客户端组件。
8
8
  */
9
- declare function VideoDetailRecommendClient(props: VideoDetailRecommendProps): react_jsx_runtime0.JSX.Element | null;
9
+ declare function VideoDetailRecommendClient({
10
+ rows,
11
+ columns,
12
+ smartTagEnabled,
13
+ smartTagIds,
14
+ title,
15
+ showPlayCount,
16
+ playCountDelta,
17
+ showEpisode,
18
+ enableInfinite,
19
+ items,
20
+ mode
21
+ }: VideoDetailRecommendProps): react_jsx_runtime0.JSX.Element | null;
10
22
  //#endregion
11
23
  export { VideoDetailRecommendClient };
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../../ui/box.mjs";import t from"../../../../ui/loading.mjs";import{WaterfallRecommend as n}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{useVideoDetailRecommendData as r}from"./shared.mjs";import{useCallback as i,useMemo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(e){let t=[],n=[],r=0,i=0;return e.forEach(e=>{let a=(e.cardKind===`short`?120:218)+16;r<=i?(t.push(e),r+=a):(n.push(e),i+=a)}),{left:t,right:n}}function l(l){let{uiItems:u,shouldShowLoading:d,isPreview:f,resolvedModuleTitle:p,triggerIndex:m,triggerMarker:h}=r(l),g=a(()=>u.map((e,t)=>({key:e.info.id?`detail-recommend-${e.info.id}-${t}`:`detail-recommend-${t}`,sourceIndex:e.sourceIndex,href:e.detailPath||`#`,cardKind:e.cardKind,coverUrl:e.coverUrl,title:e.title,metaPrimaryText:e.showEpisode?e.videoInfoText:``,heatText:e.showPlayCount?e.playCountText:``,score:e.score})),[u]),_=a(()=>c(g),[g]),v=!!p,y=i(({item:e})=>{if(!(e.sourceIndex!==m||!h))return e=>{e&&e.setAttribute(`data-detail-recommend-trigger`,h)}},[m,h]);return g.length?s(e,{className:f?`mt-[16px] w-full pointer-events-none`:`mt-[16px] w-full`,children:[o(n,{title:p,columns:_,sectionClassName:`w-full`,headerClassName:v?`mb-[8px] flex items-center justify-between px-[12px]`:`hidden`,titleClassName:`flex-1 min-w-0 text-[18px] leading-[26px] font-bold line-clamp-1 text-text1`,containerClassName:`relative flex w-full gap-[15px] px-[12px]`,getItemRef:y}),d&&o(e,{className:`w-full flex justify-center py-[12px]`,children:o(t,{size:`medium`,showLabel:!1,className:`text-theme5`})})]}):null}export{l as VideoDetailRecommendClient};
2
+ "use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import i from"../../../../ui/loading.mjs";import{useRequest as a}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as o}from"../../../../common/keep-scroll-position/index.mjs";import ee from"../../../../../assets/icons/detail/video_flag.mjs";import{MiniThreeCard as s}from"../../../../common/cards/mini-three-card.mjs";import{useCardDecoration as c}from"../../../../../hooks/use-card-decoration.mjs";import{buildEditorPreviewRecommendList as l}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as u}from"../shared/runtime-context-provider.mjs";import{applyPlayCountDelta as te,clampColumns as ne,mergeManualAndPool as d,normalizeRecommendRuntimeProps as re,resolveRows as ie}from"./utils.mjs";import{useCallback as ae,useEffect as f,useMemo as p,useRef as oe,useState as se}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";function g({rows:g,columns:_,smartTagEnabled:b,smartTagIds:x,title:pe,showPlayCount:me,playCountDelta:he,showEpisode:ge,enableInfinite:_e,items:ve,mode:ye=`renderer`}){let C=u()?.detailId||``,be=ye===`editor`,w=be,{getVerticalHoCoverImageUrl:T,getTitleText:E}=c(),D=oe(null),O=p(()=>re({smartTagEnabled:b,smartTagIds:x,enableInfinite:_e,items:ve}),[_e,ve,b,x]),k=O.smartTagEnabled,A=O.smartTagIds,j=p(()=>O.items??[],[O.items]),M=O.enableInfinite&&!be,N=!k,P=M&&k&&!w,xe=ie(g,M),F=ne(_),I=xe*F,L=Math.max(1,I),R=p(()=>[`video-detail-recommend`,C||`unknown`,L,A.join(`,`)].join(`:`),[C,L,A]),[Se,z]=o(`${R}:pool`,[]),[B,V]=o(`${R}:has-more`,!1),[H,U]=se(!1),W=p(()=>l(I),[I]),{data:G,isFetching:Ce,isPending:we}=a([`video-detail-recommend`,C,P?`paged`:`all`,L,A.join(`,`)],async()=>w?null:await e({page_size:L,tags:A}),{enabled:!w&&k,refetchOnMount:`always`}),K=p(()=>w?W:v(G?.data?.videos),[G?.data?.videos,W,w]);f(()=>{if(!P){U(!1);return}z(e=>{if(!K.length)return e;if(!e.length)return K;let t=[...K],n=new Set(K.map(e=>e.id).filter(Boolean));return e.forEach(e=>{(!e.id||!n.has(e.id))&&(t.push(e),e.id&&n.add(e.id))}),t});let e=y(G?.data?.videos,L);V(t=>t||e),U(!1)},[G?.data?.videos,K,L,V,z,P]);let q=P?Se:K,J=p(()=>N?Array.from(new Set(j.map(e=>S(e.contentId)).filter(Boolean))):[],[j,N]),{data:Te,isFetching:Ee,isPending:De}=a([`video-detail-recommend-manual-details`,J.join(`,`)],async()=>{if(!J.length)return[];let e=await t({ids:J});return(Array.isArray(e.data?.videos)?e.data.videos:[]).map(e=>ce(e))},{enabled:J.length>0,refetchOnMount:`always`}),Oe=p(()=>N?new Set(j.map(e=>S(e.contentId)).filter(Boolean)):new Set,[j,N]),ke=p(()=>w?q:q.filter(e=>!Oe.has(e.id)),[q,w,Oe]),Y=p(()=>{if(!N||!j.length)return[];let e=new Map;return q.forEach(t=>{let n=S(t.id);n&&e.set(n,t)}),(Te||[]).forEach(t=>{let n=S(t.id);n&&e.set(n,t)}),j.map((t,n)=>{let r=w?W[n%Math.max(1,W.length)]:fe(t,n),i=S(t.contentId),a=typeof t.coverUrl==`string`?t.coverUrl.trim():``,o=e.get(i)??{...r,id:i||r.id||`preview-manual-${n+1}`,name:r.name||`猜你喜欢 ${n+1}`,img_y:a||r.img_y,img_x:a||r.img_x},ee=t.titleMode===`custom`?t.title:E(o),s=t.coverMode===`content`?T(o)||a:a||T(o);return{info:{...o,name:ee||o.name,img_y:s||o.img_y,img_x:s||o.img_x},config:{showPlayCount:t.showPlayCount,playCountDelta:t.playCountDelta,showEpisode:t.showEpisode}}}).filter(Boolean)},[W,q,E,T,w,Te,j,N]),X=p(()=>ke.map(e=>({info:e})),[ke]),Z=N&&j.length>0,Ae=p(()=>Z?Y:d(Y,X,I),[Z,Y,I,X]),Q=p(()=>{if(P){if(!Y.length)return X;let e=new Set(Y.map(e=>e.info.id).filter(Boolean));return Y.concat(X.filter(t=>!e.has(t.info.id)))}if(M){if(!Y.length)return X;let e=new Set(Y.map(e=>e.info.id).filter(Boolean));return Y.concat(X.filter(t=>!e.has(t.info.id)))}return Ae},[Ae,Y,X,M,P]),je=B&&Q.length>0?Math.max(0,Q.length-4):-1,Me=String(pe||``).trim(),$=ae(async()=>{if(!(!P||!B||H)){U(!0);try{let t=await e({page_size:L,tags:A}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=v(n),i=0;z(e=>{let t=new Set(e.map(e=>e.id).filter(Boolean)),n=[...e];return r.forEach(e=>{(!e.id||!t.has(e.id))&&(n.push(e),e.id&&t.add(e.id))}),i=n.length-e.length,n}),V(y(n,L)&&i>0)}catch(e){console.error(`猜你喜欢分页加载失败`,e),V(!1)}finally{U(!1)}}},[B,H,L,A,V,z,P]);if(f(()=>{if(!P)return;let e=D.current;if(!e||!B)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!H&&$()});return t.observe(e),()=>{t.disconnect()}},[$,B,H,P,je]),!Q.length)return null;let Ne=!w&&(H||k&&(Ce||we)||J.length>0&&(Ee||De));return h(n,{className:`w-full mt-[16px] ${w?`pointer-events-none`:``}`,children:[Me?m(r,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:Me}):null,m(n,{className:`w-full flex flex-wrap px-[12px]`,children:Q.map((e,t)=>{let n=E(e.info),i=me!==!1&&(e.config?.showPlayCount??!0),a=Number(e.config?.playCountDelta??he??0),o=e.config?.showEpisode??ge,c=ue(te(e.info.play_count||0,a)),l=le(e.info),u=Number.isFinite(F)&&F>0?F:3,ne=`${100/u}%`,d=t%u,re=u>1?{paddingLeft:8*d/u,paddingRight:8*(u-d-1)/u}:null;return m(`div`,{ref:t===je?D:void 0,style:{width:ne,...re||{}},children:m(s,{url:T(e.info),text:n,textChild:m(r,{as:`h3`,className:`text-text1 text-[16px] h-[24px] leading-[24px] my-[4px] line-clamp-1`,children:n}),style:{width:`100%`},bottomLeftChild:i?h(`div`,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] py-0 rounded-[4px] bg-[rgba(255,255,255,0.1)] ml-[4px] flex items-center gap-[4px]`,children:[m(ee,{className:`w-[12px] h-[12px] text-[#fff] shrink-0`}),c]}):null,bottomRightChild:o&&l?m(`div`,{className:`text-[#fff] text-[12px] leading-[20px] pr-2`,children:l}):null,linkPath:w?``:de(e.info)})},`guess-like-${t}`)})}),Ne&&m(n,{className:`w-full flex justify-center py-[12px]`,children:m(i,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function _(e){let t=e.is_more_link?`y`:`n`;return{id:e.video_id||``,mid:``,name:e.name||``,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:e.content_type,episode_cnt:e.episode_count||0,show_at:e.show_at??``,position:``,img_type:e.img_type??``,img_x:e.img_x??``,img_y:e.img_y??``,img_width:``,img_height:``,play_count:e.play_count,preview_images:[],duration:String(e.duration??``),score:String(e.score??``),is_more_link:t,update_status:String(e.update_status??``),description:e.description??``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:e.source_tags??``,source_actor:[],links:Array.isArray(e.episodes)?e.episodes.map(e=>({id:e.id??``,name:e.name??``,preview_m3u8_url:e.preview_m3u8_url??``,m3u8_url:e.m3u8_url??``})):[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}function v(e){return Array.isArray(e)?e.map(e=>_(e)):[]}function ce(e){let t=String(e?.id||e?.mid||e?.video_id||``),n=e?.is_more_link===`y`?`y`:`n`,r=Array.isArray(e?.links)?e.links.map(e=>({id:String(e?.id||``),name:String(e?.name||``),preview_m3u8_url:String(e?.preview_m3u8_url||``),m3u8_url:String(e?.m3u8_url||``)})):[],i=Array.isArray(e?.video_episodes)?e.video_episodes.length:0,a=Number(e?.episode_cnt||i||r.length||0);return{id:t,mid:String(e?.mid||t),name:String(e?.name||``),cat_id:String(e?.cat_id||``),cat_name:String(e?.cat_name||``),status:String(e?.status||`1`),status_text:String(e?.status_text||``),create_time:String(e?.create_time||``),content_type:e?.content_type,episode_cnt:Number.isFinite(a)?a:0,show_at:String(e?.show_at||``),position:String(e?.position||``),img_type:String(e?.img_type||``),img_x:String(e?.img_x||``),img_y:String(e?.img_y||``),img_width:String(e?.img_width||``),img_height:String(e?.img_height||``),play_count:Number(e?.play_count??e?.browse_count??0),preview_images:Array.isArray(e?.preview_images)?e.preview_images:[],duration:String(e?.duration||``),score:String(e?.score||``),is_more_link:n,update_status:String(e?.update_status||``),description:String(e?.description||``),language:String(e?.language||``),director:String(e?.director||``),actor:String(e?.actor||``),area:String(e?.area||``),issue_date:String(e?.issue_date||``),publisher:String(e?.publisher||``),series:String(e?.series||``),number:String(e?.number||``),tags:Array.isArray(e?.tags)?e.tags:[],source_tags:String(e?.source_tags||``),source_actor:Array.isArray(e?.source_actor)?e.source_actor:[],links:r,money:String(e?.money||``),up_user:String(e?.up_user||``),source_username:String(e?.source_username||``),task_id:String(e?.task_id||``),file_status:String(e?.file_status||``)}}function y(e,t){if(!Array.isArray(e)||e.length===0)return!1;let n=e[0];if(typeof n?.has_more==`boolean`)return n.has_more;let r=Number(n?.total??0);return Number.isFinite(r)&&r>0?r>t:e.length>=t}function le(e){if(b(e)){let t=Number(e.episode_cnt||e.links?.length||0);return t>0?`全${t}集`:``}return x(Number(e.duration||0))}function b(e){return e.is_more_link===`y`}function x(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function ue(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function de(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}function S(e){return typeof e==`string`?e.trim():``}function fe(e,t){let n=S(e.contentId)||`manual-${t+1}`,r=typeof e.coverUrl==`string`?e.coverUrl.trim():``,i=typeof e.title==`string`?e.title.trim():``,a=typeof e.description==`string`?e.description.trim():``;return{id:n,mid:n,name:i||`猜你喜欢 ${t+1}`,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:1,episode_cnt:0,show_at:``,position:``,img_type:``,img_x:r,img_y:r,img_width:``,img_height:``,play_count:0,preview_images:[],duration:``,score:``,is_more_link:`n`,update_status:``,description:a,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:``,source_actor:[],links:[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}export{g as VideoDetailRecommendClient};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineMaterial as e}from"../../../../../utils/schema/material.mjs";import{VideoDetailRecommendClient as t}from"./client.mjs";import{videoDetailRecommendInspectorPropsSchema as n}from"./schema.mjs";import{VideoDetailRecommend as r}from"./server.mjs";const i=e({type:`video-detail-recommend`,name:`详情页-推荐模块`,icon:`/static/components-thumb/grid_waterfall_two_column.png`,category:`详情页`,serverComponent:r,clientComponent:t,propsSchema:n});export{i as videoDetailRecommendMaterial};
2
+ import{defineMaterial as e}from"../../../../../utils/schema/material.mjs";import{VideoDetailRecommendClient as t}from"./client.mjs";import{videoDetailRecommendInspectorPropsSchema as n}from"./schema.mjs";import{VideoDetailRecommend as r}from"./server.mjs";const i=e({type:`video-detail-recommend`,name:`详情页-推荐模块`,icon:`/static/components-thumb/video_guess_you_like.png`,category:`详情页`,serverComponent:r,clientComponent:t,propsSchema:n});export{i as videoDetailRecommendMaterial};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({rows:e.number(2,{label:`行数`}),columns:e.number(2,{label:`列数`}),smartTagEnabled:e.boolean(!1,{label:`智能铺设`}),title:e.string(`猜你喜欢`,{label:`推荐位名称`}),showPlayCount:e.boolean(!0,{label:`显示播放量`}),playCountDelta:e.number(0,{label:`播放量浮动`}),showEpisode:e.boolean(!0,{label:`显示集数`}),enableInfinite:e.boolean(!1,{label:`无限下拉`}),smartTagIds:n.array(n.string()).optional(),items:n.array(n.object({contentId:n.string(),coverMode:n.enum([`upload`,`content`]).optional(),coverUrl:n.string().optional(),titleMode:n.enum([`custom`,`content`]).optional(),title:n.string().optional(),description:n.string().optional(),showPlayCount:n.boolean().optional(),playCountDelta:n.number().optional(),showEpisode:n.boolean().optional()})).optional()}));({...t(r)});export{r as videoDetailRecommendInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({rows:e.number(1,{label:`行数`}),columns:e.number(2,{label:`列数`}),smartTagEnabled:e.boolean(!1,{label:`智能铺设`}),title:e.string(`猜你喜欢`,{label:`推荐位名称`}),showPlayCount:e.boolean(!0,{label:`显示播放量`}),playCountDelta:e.number(0,{label:`播放量浮动`}),showEpisode:e.boolean(!0,{label:`显示集数`}),enableInfinite:e.boolean(!1,{label:`无限下拉`}),smartTagIds:n.array(n.string()).optional(),items:n.array(n.object({contentId:n.string(),coverMode:n.enum([`upload`,`content`]).optional(),coverUrl:n.string().optional(),titleMode:n.enum([`custom`,`content`]).optional(),title:n.string().optional(),description:n.string().optional(),showPlayCount:n.boolean().optional(),playCountDelta:n.number().optional(),showEpisode:n.boolean().optional()})).optional()}));({...t(r)});export{r as videoDetailRecommendInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{UserAvatar as e}from"../shared/avatar.mjs";import{HeaderSearchIcon as t}from"../shared/header-search-icon.mjs";import{HeaderShell as n}from"../shared/header-shell.mjs";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a({mode:a=`renderer`}){return i(n,{mode:a,className:`justify-between gap-[16px]`,children:[r(e,{}),r(t,{})]})}export{a as HeaderAvatarIconClient};
2
+ "use client";import{Box as e}from"../../../../ui/box.mjs";import t from"../../../../../assets/icons/search.mjs";import{UserAvatar as n}from"../shared/avatar.mjs";import{jsx as r,jsxs as i}from"react/jsx-runtime";import a from"next/link";function o({mode:o=`renderer`}){return i(e,{as:`header`,className:o===`editor`?`px-[12px] py-[8px] flex gap-[16px] items-center justify-between pointer-events-none`:`px-[12px] py-[8px] flex gap-[16px] items-center justify-between`,children:[r(n,{}),r(a,{href:`/search`,"aria-label":`打开搜索页`,children:r(t,{className:`w-[22px] h-[22px] text-text1`,"aria-hidden":!0})})]})}export{o as HeaderAvatarIconClient};
@@ -5,7 +5,7 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
5
5
  //#region components/biz/business/header-search/header-avatar-logo-search/client.d.ts
6
6
  type HeaderAvatarLogoSearchClientProps = HeaderAvatarLogoSearchInspectorProps;
7
7
  /**
8
- * 顶部功能样式3:头像、搜索条、菜单。
8
+ * 顶部-头像&搜索框。
9
9
  */
10
10
  declare function HeaderAvatarLogoSearchClient(props: HeaderAvatarLogoSearchClientProps): react_jsx_runtime0.JSX.Element;
11
11
  //#endregion
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as n}from"../../../../../service/generated/client.mjs";import{Image as r}from"../../../../ui/image.mjs";import{Avatar as i,AvatarFallback as a,AvatarImage as o}from"../../../../ui/avatar.mjs";import{Box as s}from"../../../../ui/box.mjs";import{Text as c}from"../../../../ui/text.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as u}from"../../../../../hooks/query/use-query.mjs";import d from"../../../../../assets/icons/common/header-menu.mjs";import f from"../../../../../assets/icons/common/header-search-icon.mjs";import{headerAvatarLogoSearchInspectorDefaultProps as p}from"./schema.mjs";import{useMemo as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import _ from"next/link";import{useShallow as v}from"zustand/react/shallow";function y(){let{isLogin:n,userInfo:r}=t(v(e=>({isLogin:e.isLogin,userInfo:e.userInfo}))),c=l(e=>e.open),u=h(s,{className:`relative flex h-[38px] w-[38px] items-center justify-center rounded-full bg-white/20`,children:h(s,{className:`flex h-[32px] w-[32px] items-center justify-center overflow-hidden rounded-full border-2 border-white/20 bg-[#2A1C18]`,children:g(i,{className:`h-full w-full`,children:[h(o,{src:r?.avatar_url||r?.avatar||void 0,alt:`用户头像`,className:`object-cover`}),h(a,{className:`bg-[radial-gradient(circle_at_35%_30%,#f4b1ad_0%,#915f72_42%,#3b2442_100%)]`})]})})});return n?h(_,{href:`/user/mine`,"aria-label":`打开个人主页`,className:`shrink-0`,children:u}):h(e,{onClick:c,"aria-label":`登录`,className:`m-0 inline-flex h-auto w-auto shrink-0 bg-transparent p-0 hover:bg-transparent`,children:u})}function b({isEditor:e}){let{userInfo:r}=t(v(e=>({userInfo:e.userInfo}))),i=r?.user_id||`guest`,{data:a}=u([`header-search-hot-keyword`,i],()=>n({user_id:i}),{enabled:!e}),o=m(()=>{let e=(a?.data?.recommend_list??[])[0]?.title;return typeof e==`string`&&e.trim()?e.trim():`请输入搜索关键字`},[a]);return h(_,{href:`/search`,"aria-label":`打开搜索页`,className:`flex h-[34px] flex-1 items-center justify-center overflow-hidden rounded-full bg-black/40 px-[14px] backdrop-blur-[2px]`,children:g(s,{className:`flex h-[20px] items-center gap-[4px] text-white/50`,children:[h(f,{className:`h-[20px] w-[20px] shrink-0`,"aria-hidden":!0}),h(c,{as:`span`,className:`block text-[14px] leading-none text-white/50`,children:o})]})})}function x({logoHref:e,logoSrc:t}){return h(_,{href:e,"aria-label":`打开功能菜单`,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white`,children:t?h(s,{className:`relative h-[24px] w-[24px] overflow-hidden rounded-full`,children:h(r,{src:t,alt:`menu`,fill:!0,sizes:`24px`,className:`object-cover`})}):h(d,{className:`h-[24px] w-[24px]`})})}function S(e){let{mode:t=`renderer`,...n}=e,r=t===`editor`,{logoSrc:i,logoHref:a}={...p,...n};return g(s,{as:`header`,className:r?`flex items-center justify-between gap-[12px] px-[16px] pt-[8px] pb-[16px] pointer-events-none`:`flex items-center justify-between gap-[12px] px-[16px] pt-[8px] pb-[16px]`,children:[h(y,{}),h(b,{isEditor:r}),h(x,{logoSrc:i,logoHref:a})]})}export{S as HeaderAvatarLogoSearchClient};
2
+ "use client";import{Box as e}from"../../../../ui/box.mjs";import{UserAvatar as t}from"../shared/avatar.mjs";import{Logo as n}from"../shared/logo.mjs";import{Search as r}from"../shared/search.mjs";import{headerAvatarLogoSearchInspectorDefaultProps as i}from"./schema.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";function s(s){let{mode:c=`renderer`,...l}=s,u=c===`editor`,{logoSrc:d,logoHref:f}={...i,...l};return o(e,{as:`header`,className:u?`px-[12px] py-[8px] flex gap-[8px] items-center pointer-events-none`:`px-[12px] py-[8px] flex gap-[8px] items-center`,children:[a(t,{}),a(r,{}),a(n,{logoSrc:d,logoHref:f})]})}export{s as HeaderAvatarLogoSearchClient};
@@ -6,10 +6,9 @@ import * as zod_v4_core0 from "zod/v4/core";
6
6
 
7
7
  //#region components/biz/business/header-search/header-avatar-logo-search/schema.d.ts
8
8
  /**
9
- * 顶部-头像&搜索词&菜单:
10
- * - 为兼容历史数据,沿用 logoSrc / logoHref 字段名
11
- * - logoSrc:可配置右侧菜单图标地址(为空时仅保留占位)
12
- * - logoHref:可配置右侧菜单点击跳转地址
9
+ * 顶部-头像&搜索框&logo:
10
+ * - logoSrc:可配置 logo 图片地址(为空时使用内置 SVG)
11
+ * - logoHref:可配置 logo 点击跳转地址
13
12
  */
14
13
  declare const headerAvatarLogoSearchInspectorPropsSchema: zod.ZodObject<{
15
14
  readonly logoSrc: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(``,{label:`菜单图标地址`,required:!1}),logoHref:e.string(`/`,{label:`菜单跳转地址`,required:!1})})),r=t(n);export{r as headerAvatarLogoSearchInspectorDefaultProps,n as headerAvatarLogoSearchInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(`/static/icons/video.svg`,{label:`LOGO 图片地址`,required:!1}),logoHref:e.string(`/`,{label:`LOGO 跳转地址`,required:!1})})),r=t(n);export{r as headerAvatarLogoSearchInspectorDefaultProps,n as headerAvatarLogoSearchInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../../ui/box.mjs";import{UserAvatar as t}from"../shared/avatar.mjs";import{HeaderSearchIcon as n}from"../shared/header-search-icon.mjs";import{HeaderShell as r}from"../shared/header-shell.mjs";import{Logo as i}from"../shared/logo.mjs";import{headerAvatarLogoSearchIconInspectorDefaultProps as a}from"./schema.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(c){let{mode:l=`renderer`,...u}=c,{logoSrc:d,logoHref:f}={...a,...u};return s(r,{mode:l,className:`gap-[16px]`,children:[o(t,{}),o(e,{className:`flex-1`}),o(n,{}),o(i,{logoSrc:d,logoHref:f,variant:`action`})]})}export{c as HeaderAvatarLogoSearchIconClient};
2
+ "use client";import{Box as e}from"../../../../ui/box.mjs";import t from"../../../../../assets/icons/search.mjs";import{UserAvatar as n}from"../shared/avatar.mjs";import{Logo as r}from"../shared/logo.mjs";import{headerAvatarLogoSearchIconInspectorDefaultProps as i}from"./schema.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";import s from"next/link";function c(c){let{mode:l=`renderer`,...u}=c,d=l===`editor`,{logoSrc:f,logoHref:p}={...i,...u};return o(e,{as:`header`,className:d?`px-[12px] py-[8px] flex gap-[16px] items-center pointer-events-none`:`px-[12px] py-[8px] flex gap-[16px] items-center`,children:[a(n,{}),a(e,{className:`flex-1`}),a(s,{href:`/search`,"aria-label":`打开搜索页`,children:a(t,{className:`w-[22px] h-[22px] text-text1`,"aria-hidden":!0})}),a(r,{logoSrc:f,logoHref:p})]})}export{c as HeaderAvatarLogoSearchIconClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{HeaderShell as e}from"../shared/header-shell.mjs";import{Logo as t}from"../shared/logo.mjs";import{Search as n}from"../shared/search.mjs";import{headerLogoSearchInspectorDefaultProps as r}from"./schema.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o(o){let{mode:s=`renderer`,...c}=o,{logoSrc:l,logoHref:u}={...r,...c};return a(e,{mode:s,className:`gap-[8px]`,children:[i(t,{logoSrc:l,logoHref:u}),i(n,{mode:s})]})}export{o as HeaderLogoSearchClient};
2
+ "use client";import{Box as e}from"../../../../ui/box.mjs";import{Logo as t}from"../shared/logo.mjs";import{Search as n}from"../shared/search.mjs";import{headerLogoSearchInspectorDefaultProps as r}from"./schema.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o(o){let{mode:s=`renderer`,...c}=o,l=s===`editor`,{logoSrc:u,logoHref:d}={...r,...c};return a(e,{as:`header`,className:l?`px-[12px] py-[8px] flex gap-[8px] pointer-events-none`:`px-[12px] py-[8px] flex gap-[8px]`,children:[i(t,{logoSrc:u,logoHref:d}),i(n,{})]})}export{o as HeaderLogoSearchClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{HeaderShell as e}from"../shared/header-shell.mjs";import{Search as t}from"../shared/search.mjs";import{jsx as n}from"react/jsx-runtime";function r({mode:r=`renderer`}){return n(e,{mode:r,children:n(t,{mode:r})})}export{r as HeaderSearchClient};
2
+ "use client";import{Box as e}from"../../../../ui/box.mjs";import{Search as t}from"../shared/search.mjs";import{jsx as n}from"react/jsx-runtime";function r({mode:r=`renderer`}){return n(e,{as:`header`,className:r===`editor`?`px-[12px] py-[8px] pointer-events-none`:`px-[12px] py-[8px]`,children:n(t,{})})}export{r as HeaderSearchClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{Avatar as n,AvatarFallback as r,AvatarImage as i}from"../../../../ui/avatar.mjs";import{Box as a}from"../../../../ui/box.mjs";import{useLoginModalStore as o}from"../../../../../store/modules/login-modal-store.mjs";import{jsx as s,jsxs as c}from"react/jsx-runtime";import l from"next/link";import{useShallow as u}from"zustand/react/shallow";function d(){let{isLogin:d,userInfo:f}=t(u(e=>({isLogin:e.isLogin,userInfo:e.userInfo}))),p=o(e=>e.open),m=s(a,{className:`relative flex h-[38px] w-[38px] items-center justify-center rounded-full bg-white/20`,children:s(a,{className:`flex h-[32px] w-[32px] items-center justify-center overflow-hidden rounded-full border-2 border-white/20 bg-[#2A1C18]`,children:c(n,{className:`h-full w-full`,children:[s(i,{src:f?.avatar_url||f?.avatar||void 0,alt:`用户头像`,className:`object-cover`}),s(r,{className:`bg-[radial-gradient(circle_at_35%_30%,#f4b1ad_0%,#915f72_42%,#3b2442_100%)]`})]})})});return d?s(l,{href:`/user/mine`,"aria-label":`打开个人主页`,className:`shrink-0`,children:m}):s(e,{onClick:p,"aria-label":`登录`,className:`m-0 inline-flex h-auto w-auto shrink-0 bg-transparent p-0 hover:bg-transparent`,children:m})}export{d as UserAvatar};
2
+ "use client";import{Button as e}from"../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{Avatar as n,AvatarFallback as r,AvatarImage as i}from"../../../../ui/avatar.mjs";import{useLoginModalStore as a}from"../../../../../store/modules/login-modal-store.mjs";import o from"../../../../../assets/icons/search/avatar.mjs";import{jsx as s,jsxs as c}from"react/jsx-runtime";import l from"next/link";import{useShallow as u}from"zustand/react/shallow";function d(){let{isLogin:d,userInfo:f}=t(u(e=>({isLogin:e.isLogin,userInfo:e.userInfo}))),p=a(e=>e.open),m=f?.avatar_url||f?.avatar||void 0;return d?s(l,{href:`/user/mine`,children:c(n,{className:`w-[36px] h-[36px]`,children:[s(i,{src:m,alt:`用户头像`}),s(r,{})]})}):s(e,{onClick:p,"aria-label":`登录`,className:`inline-flex rounded-full w-[36px] h-[36px] bg-transparent p-0 m-0`,children:s(o,{className:`w-[36px] h-[36px]`})})}export{d as UserAvatar};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../../../assets/icons/search/video.mjs";import{HeaderAction as t}from"./header-action.mjs";import{jsx as n}from"react/jsx-runtime";function r(r){let{logoHref:i,logoSrc:a,variant:o=`default`}=r,s=o===`action`;return n(t,{href:i,ariaLabel:`打开 logo 入口`,imageSrc:a,imageAlt:`logo`,className:s?`h-[24px] w-[24px] text-white`:`h-[40px] w-[40px]`,imageClassName:s?`rounded-full object-cover`:`object-cover`,fallbackIcon:n(e,{className:s?`h-[24px] w-[24px]`:`h-[40px] w-[40px]`})})}export{r as Logo};
2
+ "use client";import{Image as e}from"../../../../ui/image.mjs";import t from"../../../../../assets/icons/search/video.mjs";import{jsx as n}from"react/jsx-runtime";import r from"next/link";function i(i){let{logoHref:a,logoSrc:o}=i;return n(r,{href:a,className:`flex items-center justify-center w-[40px] h-[40px] relative`,children:o?n(e,{src:o,alt:`logo`,fill:!0,sizes:`40px`,className:`h-[40px] w-[40px] object-cover`}):n(t,{className:`w-[40px] h-[40px]`})})}export{i as Logo};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useRequest as i}from"../../../../../hooks/query/use-query.mjs";import a from"../../../../../assets/icons/common/header-search-icon.mjs";import{useMemo as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import l from"next/link";import{useShallow as u}from"zustand/react/shallow";function d(d){let{mode:f=`renderer`}=d,p=f===`editor`,{userInfo:m}=e(u(e=>({userInfo:e.userInfo}))),h=m?.user_id||`guest`,{data:g}=i([`header-search-hot-keyword`,h],()=>t({user_id:h}),{enabled:!p}),_=o(()=>{let e=(g?.data?.recommend_list??[])[0]?.title;return typeof e==`string`&&e.trim()?e.trim():`请输入搜索关键字`},[g]);return s(l,{href:`/search`,"aria-label":`打开搜索页`,className:`flex h-[34px] flex-1 items-center justify-center overflow-hidden rounded-full bg-black/40 px-[14px] backdrop-blur-[2px]`,children:c(n,{className:`flex h-[20px] items-center gap-[4px] text-white/50`,children:[s(a,{className:`h-[20px] w-[20px] shrink-0`,"aria-hidden":!0}),s(r,{as:`span`,className:`block text-[14px] leading-none text-white/50`,children:_})]})})}export{d as Search};
2
+ "use client";import{Text as e}from"../../../../ui/text.mjs";import t from"../../../../../assets/icons/search.mjs";import{jsx as n,jsxs as r}from"react/jsx-runtime";import i from"next/link";function a(){return r(i,{href:`/search`,"aria-label":`打开搜索页`,className:`flex flex-1 items-center gap-[8px] border-[1px] border-[#FD4C5E] rounded-[20px] px-[12px] py-[8px] h-[40px]`,children:[n(t,{className:`w-[16px] h-[16px]`,"aria-hidden":!0}),n(e,{className:`flex-1 text-[16px] text-text3`,children:`请输入搜索关键字`})]})}export{a as Search};
@@ -28,6 +28,14 @@ declare const homeRecommendGridInspectorPropsSchema: z$1.ZodObject<{
28
28
  }>>;
29
29
  coverUrl: z$1.ZodOptional<z$1.ZodString>;
30
30
  is_ad: z$1.ZodOptional<z$1.ZodBoolean>;
31
+ ad: z$1.ZodOptional<z$1.ZodObject<{
32
+ ad_code: z$1.ZodOptional<z$1.ZodString>;
33
+ ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
34
+ ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
35
+ ad_advertise_type: z$1.ZodOptional<z$1.ZodNumber>;
36
+ ad_advertise_desc: z$1.ZodOptional<z$1.ZodString>;
37
+ ad_ext_data: z$1.ZodOptional<z$1.ZodString>;
38
+ }, z$1.core.$strip>>;
31
39
  ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
32
40
  ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
33
41
  badge_url: z$1.ZodOptional<z$1.ZodString>;
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE as n,HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as r,HOME_RECOMMEND_DEFAULT_GRID_ROWS as i,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as a,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as o,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as s,HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED as c,HOME_RECOMMEND_DEFAULT_TITLE as l}from"../shared/home-recommend-default-config.mjs";import u from"zod";const d=e(e=>({rows:e.number(i,{label:`行数`}),columns:e.number(r,{label:`列数`}),smartTagEnabled:e.boolean(c,{fieldType:`switch`,label:`智能铺设`}),title:e.string(l,{label:`推荐位名称`}),showPlayCount:e.boolean(s,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(a,{label:`播放量浮动`}),showEpisode:e.boolean(o,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`,required:!1}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),smartTagIds:u.array(u.string()).optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),items:u.array(u.object({contentId:u.string(),coverMode:u.enum([`upload`,`content`]).optional(),coverUrl:u.string().optional(),is_ad:u.boolean().optional(),ad_advertise_url:u.string().optional(),ad_advertise_icon:u.string().optional(),badge_url:u.string().optional(),titleMode:u.enum([`custom`,`content`]).optional(),title:u.string().optional(),description:u.string().optional(),showPlayCount:u.boolean().optional(),playCountDelta:u.number().optional(),showEpisode:u.boolean().optional()})).optional()})),f={...t(d),smartTagIds:[],items:[]},p={rows:{type:`number`,title:`行数`,default:f.rows},columns:{type:`number`,title:`列数`,default:f.columns},smartTagEnabled:{type:`boolean`,title:`智能铺设`,default:f.smartTagEnabled},title:{type:`string`,title:`推荐位名称`,default:f.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:f.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:f.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:f.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:f.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:f.moreLink},smartTagIds:{type:`array`,title:`智能铺设标签`,default:f.smartTagIds,items:{type:`string`,title:`标签 ID`}},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:f.catId},items:{type:`array`,title:`推荐项`,default:f.items,items:{type:`object`,title:`推荐项`,properties:{contentId:{type:`string`,title:`内容 ID`},coverMode:{type:`string`,title:`封面模式`},coverUrl:{type:`string`,title:`封面地址`},is_ad:{type:`boolean`,title:`是否广告`},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},badge_url:{type:`string`,title:`角标地址`},titleMode:{type:`string`,title:`标题模式`},title:{type:`string`,title:`标题`},description:{type:`string`,title:`简介`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{f as homeRecommendGridInspectorDefaultProps,d as homeRecommendGridInspectorPropsSchema,p as homeRecommendGridPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE as n,HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as r,HOME_RECOMMEND_DEFAULT_GRID_ROWS as i,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as a,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as o,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as s,HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED as c,HOME_RECOMMEND_DEFAULT_TITLE as l}from"../shared/home-recommend-default-config.mjs";import u from"zod";const d=e(e=>({rows:e.number(i,{label:`行数`}),columns:e.number(r,{label:`列数`}),smartTagEnabled:e.boolean(c,{fieldType:`switch`,label:`智能铺设`}),title:e.string(l,{label:`推荐位名称`}),showPlayCount:e.boolean(s,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(a,{label:`播放量浮动`}),showEpisode:e.boolean(o,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`,required:!1}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),smartTagIds:u.array(u.string()).optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),items:u.array(u.object({contentId:u.string(),coverMode:u.enum([`upload`,`content`]).optional(),coverUrl:u.string().optional(),is_ad:u.boolean().optional(),ad:u.object({ad_code:u.string().optional(),ad_advertise_url:u.string().optional(),ad_advertise_icon:u.string().optional(),ad_advertise_type:u.number().optional(),ad_advertise_desc:u.string().optional(),ad_ext_data:u.string().optional()}).optional(),ad_advertise_url:u.string().optional(),ad_advertise_icon:u.string().optional(),badge_url:u.string().optional(),titleMode:u.enum([`custom`,`content`]).optional(),title:u.string().optional(),description:u.string().optional(),showPlayCount:u.boolean().optional(),playCountDelta:u.number().optional(),showEpisode:u.boolean().optional()})).optional()})),f={...t(d),smartTagIds:[],items:[]},p={rows:{type:`number`,title:`行数`,default:f.rows},columns:{type:`number`,title:`列数`,default:f.columns},smartTagEnabled:{type:`boolean`,title:`智能铺设`,default:f.smartTagEnabled},title:{type:`string`,title:`推荐位名称`,default:f.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:f.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:f.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:f.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:f.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:f.moreLink},smartTagIds:{type:`array`,title:`智能铺设标签`,default:f.smartTagIds,items:{type:`string`,title:`标签 ID`}},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:f.catId},items:{type:`array`,title:`推荐项`,default:f.items,items:{type:`object`,title:`推荐项`,properties:{contentId:{type:`string`,title:`内容 ID`},coverMode:{type:`string`,title:`封面模式`},coverUrl:{type:`string`,title:`封面地址`},is_ad:{type:`boolean`,title:`是否广告`},ad:{type:`object`,title:`广告对象`,properties:{ad_code:{type:`string`,title:`广告业务编码`},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},ad_advertise_type:{type:`number`,title:`广告类型`},ad_advertise_desc:{type:`string`,title:`广告文案描述`},ad_ext_data:{type:`string`,title:`广告扩展信息`}}},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},badge_url:{type:`string`,title:`角标地址`},titleMode:{type:`string`,title:`标题模式`},title:{type:`string`,title:`标题`},description:{type:`string`,title:`简介`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{f as homeRecommendGridInspectorDefaultProps,d as homeRecommendGridInspectorPropsSchema,p as homeRecommendGridPropsSchema};
@@ -28,6 +28,14 @@ declare const homeRecommendGridMaterial: DefineMaterialOption<typeof HomeRecomme
28
28
  }>>;
29
29
  coverUrl: zod.ZodOptional<zod.ZodString>;
30
30
  is_ad: zod.ZodOptional<zod.ZodBoolean>;
31
+ ad: zod.ZodOptional<zod.ZodObject<{
32
+ ad_code: zod.ZodOptional<zod.ZodString>;
33
+ ad_advertise_url: zod.ZodOptional<zod.ZodString>;
34
+ ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
35
+ ad_advertise_type: zod.ZodOptional<zod.ZodNumber>;
36
+ ad_advertise_desc: zod.ZodOptional<zod.ZodString>;
37
+ ad_ext_data: zod.ZodOptional<zod.ZodString>;
38
+ }, zod_v4_core0.$strip>>;
31
39
  ad_advertise_url: zod.ZodOptional<zod.ZodString>;
32
40
  ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
33
41
  badge_url: zod.ZodOptional<zod.ZodString>;
@@ -26,6 +26,14 @@ declare const homeRecommendWaterfallInspectorPropsSchema: z$1.ZodObject<{
26
26
  }>>;
27
27
  coverUrl: z$1.ZodOptional<z$1.ZodString>;
28
28
  is_ad: z$1.ZodOptional<z$1.ZodBoolean>;
29
+ ad: z$1.ZodOptional<z$1.ZodObject<{
30
+ ad_code: z$1.ZodOptional<z$1.ZodString>;
31
+ ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
32
+ ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
33
+ ad_advertise_type: z$1.ZodOptional<z$1.ZodNumber>;
34
+ ad_advertise_desc: z$1.ZodOptional<z$1.ZodString>;
35
+ ad_ext_data: z$1.ZodOptional<z$1.ZodString>;
36
+ }, z$1.core.$strip>>;
29
37
  ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
30
38
  ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
31
39
  badge_url: z$1.ZodOptional<z$1.ZodString>;
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE as n,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as r,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as i,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as a,HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED as o,HOME_RECOMMEND_DEFAULT_TITLE as s}from"../shared/home-recommend-default-config.mjs";import c from"zod";const l=e(e=>({smartTagEnabled:e.boolean(o,{fieldType:`switch`,label:`智能铺设`}),title:e.string(s,{label:`推荐位名称`}),showPlayCount:e.boolean(a,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(r,{label:`播放量浮动`}),showEpisode:e.boolean(i,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),smartTagIds:c.array(c.string()).optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),items:c.array(c.object({contentId:c.string(),coverMode:c.enum([`upload`,`content`]).optional(),coverUrl:c.string().optional(),is_ad:c.boolean().optional(),ad_advertise_url:c.string().optional(),ad_advertise_icon:c.string().optional(),badge_url:c.string().optional(),titleMode:c.enum([`custom`,`content`]).optional(),title:c.string().optional(),showPlayCount:c.boolean().optional(),playCountDelta:c.number().optional(),showEpisode:c.boolean().optional()})).optional()})),u={...t(l),smartTagIds:[],items:[]},d={smartTagEnabled:{type:`boolean`,title:`智能铺设`,default:u.smartTagEnabled},title:{type:`string`,title:`推荐位名称`,default:u.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:u.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:u.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:u.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:u.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:u.moreLink},smartTagIds:{type:`array`,title:`智能铺设标签`,default:u.smartTagIds,items:{type:`string`,title:`标签 ID`}},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:u.catId},items:{type:`array`,title:`推荐项`,default:u.items,items:{type:`object`,title:`推荐项`,properties:{contentId:{type:`string`,title:`内容 ID`},coverMode:{type:`string`,title:`封面模式`},coverUrl:{type:`string`,title:`封面地址`},is_ad:{type:`boolean`,title:`是否广告`},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},badge_url:{type:`string`,title:`角标地址`},titleMode:{type:`string`,title:`标题模式`},title:{type:`string`,title:`标题`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{u as homeRecommendWaterfallInspectorDefaultProps,l as homeRecommendWaterfallInspectorPropsSchema,d as homeRecommendWaterfallPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE as n,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as r,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as i,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as a,HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED as o,HOME_RECOMMEND_DEFAULT_TITLE as s}from"../shared/home-recommend-default-config.mjs";import c from"zod";const l=e(e=>({smartTagEnabled:e.boolean(o,{fieldType:`switch`,label:`智能铺设`}),title:e.string(s,{label:`推荐位名称`}),showPlayCount:e.boolean(a,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(r,{label:`播放量浮动`}),showEpisode:e.boolean(i,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),smartTagIds:c.array(c.string()).optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),items:c.array(c.object({contentId:c.string(),coverMode:c.enum([`upload`,`content`]).optional(),coverUrl:c.string().optional(),is_ad:c.boolean().optional(),ad:c.object({ad_code:c.string().optional(),ad_advertise_url:c.string().optional(),ad_advertise_icon:c.string().optional(),ad_advertise_type:c.number().optional(),ad_advertise_desc:c.string().optional(),ad_ext_data:c.string().optional()}).optional(),ad_advertise_url:c.string().optional(),ad_advertise_icon:c.string().optional(),badge_url:c.string().optional(),titleMode:c.enum([`custom`,`content`]).optional(),title:c.string().optional(),showPlayCount:c.boolean().optional(),playCountDelta:c.number().optional(),showEpisode:c.boolean().optional()})).optional()})),u={...t(l),smartTagIds:[],items:[]},d={smartTagEnabled:{type:`boolean`,title:`智能铺设`,default:u.smartTagEnabled},title:{type:`string`,title:`推荐位名称`,default:u.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:u.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:u.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:u.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:u.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:u.moreLink},smartTagIds:{type:`array`,title:`智能铺设标签`,default:u.smartTagIds,items:{type:`string`,title:`标签 ID`}},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:u.catId},items:{type:`array`,title:`推荐项`,default:u.items,items:{type:`object`,title:`推荐项`,properties:{contentId:{type:`string`,title:`内容 ID`},coverMode:{type:`string`,title:`封面模式`},coverUrl:{type:`string`,title:`封面地址`},is_ad:{type:`boolean`,title:`是否广告`},ad:{type:`object`,title:`广告对象`,properties:{ad_code:{type:`string`,title:`广告业务编码`},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},ad_advertise_type:{type:`number`,title:`广告类型`},ad_advertise_desc:{type:`string`,title:`广告文案描述`},ad_ext_data:{type:`string`,title:`广告扩展信息`}}},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},badge_url:{type:`string`,title:`角标地址`},titleMode:{type:`string`,title:`标题模式`},title:{type:`string`,title:`标题`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{u as homeRecommendWaterfallInspectorDefaultProps,l as homeRecommendWaterfallInspectorPropsSchema,d as homeRecommendWaterfallPropsSchema};
@@ -26,6 +26,14 @@ declare const homeRecommendWaterfallMaterial: DefineMaterialOption<typeof HomeRe
26
26
  }>>;
27
27
  coverUrl: zod.ZodOptional<zod.ZodString>;
28
28
  is_ad: zod.ZodOptional<zod.ZodBoolean>;
29
+ ad: zod.ZodOptional<zod.ZodObject<{
30
+ ad_code: zod.ZodOptional<zod.ZodString>;
31
+ ad_advertise_url: zod.ZodOptional<zod.ZodString>;
32
+ ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
33
+ ad_advertise_type: zod.ZodOptional<zod.ZodNumber>;
34
+ ad_advertise_desc: zod.ZodOptional<zod.ZodString>;
35
+ ad_ext_data: zod.ZodOptional<zod.ZodString>;
36
+ }, zod_v4_core0.$strip>>;
29
37
  ad_advertise_url: zod.ZodOptional<zod.ZodString>;
30
38
  ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
31
39
  badge_url: zod.ZodOptional<zod.ZodString>;
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{Image as t}from"../../../../ui/image.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import i from"../../../../ui/loading.mjs";import a from"../../../../ui/link.mjs";import{useGridFirstRowHeight as o,useWaterfallFirstRowHeight as s}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as c}from"../../../../../hooks/use-min-duration-loading.mjs";import l from"../../../../../assets/icons/common/right_arrow.mjs";import u from"../../../../../assets/icons/common/right_arrow_thin.mjs";import{WaterfallRecommend as d}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as f,HOME_RECOMMEND_DEFAULT_GRID_ROWS as ee,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as p,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as m,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as h,HOME_RECOMMEND_DEFAULT_TITLE as te,HOME_RECOMMEND_MAX_GRID_COLUMNS as ne,HOME_RECOMMEND_MAX_GRID_ROWS as re}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as ie}from"./home-recommend-preview.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ae}from"./home-recommend-video-detail.mjs";import{useCallback as oe,useEffect as g,useId as _,useLayoutEffect as se,useMemo as v,useRef as y,useState as b}from"react";import{Fragment as ce,jsx as x,jsxs as S}from"react/jsx-runtime";const le={backgroundImage:`var(--gradient-card-mask-medium)`},ue={},de={list:[]},C=new Map,w=[];function fe(e){if(e)return C.get(e)}function pe(e,t){if(!e||(C.has(e)||w.push(e),C.set(e,{items:[...t.items],cursor:t.cursor}),w.length<=120))return;let n=w.shift();n&&C.delete(n)}function me({variant:t,props:ie=ue,data:_=de,mode:le=`renderer`}){let C=le===`editor`,{list:w,title:me,cursor:T}=_,E=v(()=>Array.isArray(w)?w:[],[w]),D=v(()=>Array.isArray(_.icons)?_.icons:[],[_.icons]),{rows:ge,columns:be,moreLink:xe,title:Se,smartTagEnabled:Ce,smartTagIds:O,catId:we,showPlayCount:k,playCountDelta:Te,showEpisode:Ee,enableInfinite:De,items:A}=ie,j=Ce===!0,M=De===!0&&j,N=!C&&M&&E.length>=16,P=v(()=>Array.isArray(O)?O.map(e=>String(e||``).trim()).filter(Boolean):[],[O]),F=typeof we==`string`?we.trim():``,I=v(()=>j||!Array.isArray(A)?``:A.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[j,A]),[je,Me]=b(0),[L,R]=b(E),[Ne,Pe]=b(D),[z,B]=b(()=>typeof T==`string`?T:void 0),[V,Fe]=b(!1),Ie=y(null),Le=y(null),H=y(null),Re=y([]),U=y({left:null,right:null}),W=y(!1),G=y(``),{isLoading:ze,show:Be,hide:Ve}=c(600),He=ve(ge,ee,re),K=ve(be,f,ne),q=M?16:t===`grid`?He*K:16,J=v(()=>[t,j?`smart`:`manual:${I}`,P.join(`,`),F,String(q)].join(`|`),[j,I,F,q,P,t]);g(()=>{R(E),Pe(D),B(typeof T==`string`?T:void 0)},[T,D,E]);let Ue=He*K,We=C&&t===`grid`,Y=We?L.slice(0,Ue):L,Ge=We?Ne.slice(0,Ue):Ne,Ke=t===`waterfall`?6:4,qe=Y.length>0?Math.max(0,Y.length-Ke):-1,Je=!!z,Ye=Se&&Se.trim()||me||te,X=k??h,Z=Number(Te??p),Q=Ee??m,Xe=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,Ze=t===`grid`?u:C?l:u,Qe=_e(xe),$e=(t===`waterfall`||!M)&&!!Qe,et=$e?Qe:``,tt=t===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`,nt=`size-[16px] text-text1`,rt=o({enabled:!C&&t===`grid`,containerRef:Le,firstRowItemRef:Re,columns:K,itemsCount:Y.length,deps:[t]}),it=s({enabled:!C&&t===`waterfall`,containerRef:Ie,firstRowRef:U,deps:[t,Y.length]}),at=t===`grid`?rt:it,ot=oe(async()=>{if(C||G.current===J)return;let t=fe(J);if(t){R(t.items),j&&B(t.cursor);return}if(j||I){G.current=J;try{if(Be(),!j){if(!I)return;let e=await ae(L);R(e),pe(J,{items:e});return}let t=await e({page_size:q,tags:P.length>0?P:void 0,cat_id:F||void 0},{cache:`no-store`}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=t.data?.cursor;R(n),B(r),pe(J,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{G.current===J&&(G.current=``),Ve()}}},[Ve,C,j,I,J,F,q,P,L,Be]);g(()=>{ot()},[ot]);let st=oe(async()=>{let t=z;if(!(!N||!t||W.current)){W.current=!0,Fe(!0);try{let n=await e({cursor:t,page_size:q,tags:P.length>0?P:void 0,cat_id:F||void 0}),r=Array.isArray(n.data?.videos)?n.data.videos:[],i=n.data?.cursor;r.length>0&&R(e=>e.concat(r)),B(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),B(void 0)}finally{W.current=!1,Fe(!1)}}},[z,F,q,P,N]);g(()=>{let e=H.current;if(!e||!N||!Je)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||V||st()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[st,Je,V,Y.length,q,N,qe]),se(()=>{let e=Ie.current;if(!e||t!==`waterfall`)return;let n=()=>{let t=e.clientWidth||0;Me(t>0?(t-15)/2:0)};n();let r=new ResizeObserver(n);return r.observe(e),()=>{r.disconnect()}},[t]);let $=v(()=>t===`waterfall`?ke(Y,Ge,je):{left:[],right:[]},[je,Ge,Y,t]),ct=v(()=>t===`waterfall`?{left:$.left.map(e=>Oe(e,X,Z,Q)),right:$.right.map(e=>Oe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,t,$.left,$.right]);if(g(()=>{t===`waterfall`&&($.left.length||(U.current.left=null),$.right.length||(U.current.right=null))},[t,$.left.length,$.right.length]),!Y.length)return null;let lt=!C&&ze,ut=!C&&V,dt=at>0?at/2:160;return S(n,{className:`w-full mt-[16px]`,children:[t===`grid`&&S(n,{className:`flex items-center justify-between pl-[16px] pr-0 mb-[16px]`,children:[x(r,{className:Xe,children:Ye}),$e&&x(a,{href:et,"aria-label":`更多`,className:tt,children:x(Ze,{className:nt})})]}),t===`grid`&&S(n,{ref:Le,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[Y.map((e,t)=>{let n=Ge[t],r=ye(e);return x(`div`,{ref:e=>{t===qe&&(H.current=e),t<K&&(Re.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:x(he,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`}})},Ae(e,t))}),lt&&x(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),lt&&x(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:dt},"aria-hidden":!0,children:x(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),t===`waterfall`&&x(d,{title:Ye,moreHref:et||void 0,moreIcon:$e?x(Ze,{className:nt}):void 0,titleClassName:Xe,moreLinkClassName:tt,columns:ct,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{e.sourceIndex===qe&&(H.current=r),n===0&&(U.current[t]=r)},overlay:lt?S(ce,{children:[x(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),x(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:dt},"aria-hidden":!0,children:x(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0}),ut&&x(n,{className:`w-full flex justify-center py-[12px]`,children:x(i,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function he({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o}){return x(T,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o})}function T({item:e,icon:i,index:o,showPlayCount:s,playCountDelta:c,showEpisode:l,widthStyle:u}){let d=be(e),f=e.name||e?.title||``,ee=e.id?ge(e):`#`,p=F(e,i,o),m=A(e,l),h=s?k(e.static?.browse_cnt??0,c):``;return x(a,{href:ee,className:`block w-full`,style:u,children:S(n,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:`109 / 150`},children:[d&&x(t,{src:d,alt:f||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),x(n,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:le,"aria-hidden":!0}),p&&x(n,{className:`absolute left-[8px] top-[8px] z-10`,children:x(E,{url:p})}),m&&x(n,{className:`absolute right-[8px] top-[10px] z-10 max-w-[56px]`,children:x(r,{as:`span`,className:`block text-right text-[10px] leading-[14px] font-medium not-italic text-text1 line-clamp-1 font-['PingFang_SC']`,children:m})}),S(n,{className:`absolute left-[8px] right-[8px] bottom-[8px] top-[78px] z-10 flex flex-col justify-end`,children:[x(n,{className:`flex min-h-[40px] w-full items-end`,children:x(r,{as:`h3`,className:`w-full line-clamp-2 text-[14px] font-medium not-italic leading-normal text-white font-['PingFang_SC']`,children:f})}),h&&S(n,{className:`flex h-[20px] items-center gap-[6px]`,children:[x(D,{className:`h-[15px] w-[12px] shrink-0`}),x(r,{as:`span`,className:`shrink-0 whitespace-nowrap text-[14px] font-normal not-italic leading-normal text-text3 font-['PingFang_SC']`,children:h})]})]})]})})}function E({url:e}){return x(t,{src:e,alt:`角标`,width:96,height:18,className:`h-[18px] w-auto max-w-[96px] object-contain`})}function D({className:e}){let t=_().replace(/:/g,``),n=`grid-heat-outer-${t}`,r=`grid-heat-highlight-left-${t}`,i=`grid-heat-highlight-right-${t}`;return S(`svg`,{viewBox:`0 0 11.9811 15`,fill:`none`,"aria-hidden":!0,className:e,children:[x(`path`,{d:`M2.94686 4.47572C4.52521 4.03871 4.39118 0.994604 4.39118 0C7.76131 0.497302 8.72372 3.31535 9.20563 4.97302C14.02 7.45953 12.568 15.9138 4.87263 14.9191C-2.42073 13.9763 -0.183446 5.34241 2.94686 4.47572Z`,fill:`url(#${n})`}),x(`path`,{d:`M5.66995 6.45327C6.82541 4.06622 5.16406 1.16037 4.20118 0C4.13684 1.21533 4.37554 3.91735 2.75432 4.45159C1.0513 5.01279 0.16048 7.16814 0 8.16274L3.26275 9.93438C3.58371 9.76861 4.51449 8.84032 5.66995 6.45327Z`,fill:`url(#${r})`,transform:`translate(0.19 0.01)`}),x(`path`,{d:`M3.55359 3.57102C2.65587 2.53581 3.298 0.846416 3.48828 0C0.514078 0.39887 -0.0720454 5.22416 0.0066677 7.58695L4.28508 8.57876C4.99512 7.12607 4.45131 4.60622 3.55359 3.57102Z`,fill:`url(#${i})`,transform:`translate(7.39 2.85)`}),S(`defs`,{children:[S(`linearGradient`,{id:n,x1:`7.35676`,y1:`1.93157`,x2:`3.49864`,y2:`15.4663`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{offset:`0.0817308`,stopColor:`#FF3F49`}),x(`stop`,{offset:`0.6`,stopColor:`#FF4D56`}),x(`stop`,{offset:`1`,stopColor:`#FFA060`})]}),S(`linearGradient`,{id:r,x1:`4.39349`,y1:`0`,x2:`0.834125`,y2:`10.4383`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFBCB5`}),x(`stop`,{offset:`0.834055`,stopColor:`#FE676F`,stopOpacity:`0`})]}),S(`linearGradient`,{id:i,x1:`2.30551`,y1:`2.82163`,x2:`0.860506`,y2:`6.96924`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFA49B`}),x(`stop`,{offset:`1`,stopColor:`#FE676F`,stopOpacity:`0`})]})]})]})}function ge(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function _e(e){return e?e.trim():``}function ve(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function ye(e){return e[ie]}function be(e){return e.img_y||e.img_x||e?.coverUrl}function xe(e){return typeof e==`string`?e:``}function Se(e){return typeof e==`string`?e.trim():``}function Ce(e){return Se(e.img_type).toLowerCase()===`long`?`short`:`tall`}function O(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function we(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?De(e,!0):``)}function k(e,t){let n=N(e,t);return n<=0?``:`${Te(n)}热度`}function Te(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e4?`${Math.floor(e/1e4)}万`:Math.floor(e).toString()}function Ee(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function De(e,t){return t?j(e)||P(Number(e.duration||0)):``}function A(e,t){return t?j(e):``}function j(e){if(!M(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function M(e){if(Number(e.type??0)===2)return!0;let t=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(t)&&t>1}function N(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function P(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function F(e,t,n){return xe(e.badge_url)||xe(t?.material_url)||``}function Oe(e,t,n,r){let i=Ce(e.item),a=O(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?ge(e.item):`#`,c=F(e.item,e.icon,e.index),l=we(e.item,r),u=t?k(e.item.static?.browse_cnt??0,n):``,d=Ee(e.item.score);return{key:Ae(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,metaPrimaryText:l,heatText:u,score:d}}function ke(e,t,n){let r=[],i=[],a=n<=0,o=0,s=0;return e.forEach((e,c)=>{let l=t[c];if(a){c%2==0?r.push({item:e,icon:l,index:c}):i.push({item:e,icon:l,index:c});return}let u=I(n,e);o<=s?(r.push({item:e,icon:l,index:c}),o+=u):(i.push({item:e,icon:l,index:c}),s+=u)}),{left:r,right:i}}function I(e,t){return e?(Ce(t)===`tall`?218:120)+16:0}function Ae(e,t){return e.id?`home-recommend-${e.id}`:`home-recommend-${t}`}export{me as default};
2
+ "use client";import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../../utils/use-compatible-router.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import a from"../../../../ui/loading.mjs";import o from"../../../../ui/link.mjs";import{useGridFirstRowHeight as s,useWaterfallFirstRowHeight as c}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as l}from"../../../../../hooks/use-min-duration-loading.mjs";import u from"../../../../../assets/icons/detail/video_flag.mjs";import{getFeedAdIcon as ee,getFeedAdJumpUrl as d,isFeedAdItem as f}from"../../advertisement/feed-ad/index.mjs";import{MiniThreeCard as p}from"../../../../common/cards/mini-three-card.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as m,HOME_RECOMMEND_DEFAULT_GRID_ROWS as te,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as h,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as ne,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as g,HOME_RECOMMEND_MAX_GRID_COLUMNS as re,HOME_RECOMMEND_MAX_GRID_ROWS as ie}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as _}from"./home-recommend-preview.mjs";import{enrichHomeRecommendItemsWithVideoDetails as v}from"./home-recommend-video-detail.mjs";import{useCallback as y,useEffect as b,useLayoutEffect as ae,useMemo as x,useRef as S,useState as C}from"react";import{jsx as w,jsxs as T}from"react/jsx-runtime";const oe={},se={list:[]},ce=new Map;function E({variant:n,props:o=oe,data:u=se,mode:ee=`renderer`}){let d=ee===`editor`,f=t(),{list:p,title:_,cursor:E}=u,D=x(()=>Array.isArray(p)?p:[],[p]),O=x(()=>Array.isArray(u.icons)?u.icons:[],[u.icons]),{rows:pe,columns:me,moreLink:he,title:ge,smartTagEnabled:_e,smartTagIds:k,catId:A,showPlayCount:ve,playCountDelta:ye,showEpisode:xe,enableInfinite:Se,items:M}=o,N=_e===!0,Ce=Se===!0&&N,P=!d&&Ce&&D.length>=16,F=x(()=>Array.isArray(k)?k.map(e=>String(e||``).trim()).filter(Boolean):[],[k]),I=typeof A==`string`?A.trim():``,L=x(()=>N||!Array.isArray(M)?``:M.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,M]),[we,Te]=C(0),[R,z]=C(D),[B,Ee]=C(O),[V,H]=C(()=>typeof E==`string`?E:void 0),[De,Oe]=C(!1),ke=S(null),Ae=S(null),U=S(null),je=S([]),W=S({left:null,right:null}),Me=S(!1),G=S(``),{isLoading:Ne,show:Pe,hide:Fe}=l(600),Ie=de(pe,te,ie),K=de(me,m,re),q=Ce?16:n===`grid`?Ie*K:16,J=x(()=>[n,N?`smart`:`manual:${L}`,F.join(`,`),I,String(q)].join(`|`),[N,L,I,q,F,n]);b(()=>{let e=ce.get(J);if(e){z(e.items),Ee(e.icons),H(e.cursor),G.current=J;return}G.current!==J&&(z(D),Ee(O),H(typeof E==`string`?E:void 0))},[E,O,D,J]),b(()=>{d||ce.set(J,{items:R,icons:B,cursor:V})},[d,V,J,B,R]);let Le=Ie*K,Re=d&&n===`grid`,Y=Re?R.slice(0,Le):R,ze=Re?B.slice(0,Le):B,Be=n===`waterfall`?6:4,X=Y.length>0?Math.max(0,Y.length-Be):-1,Ve=!!V,He=ge&&ge.trim()||_||``,Ue=ve??g,We=Number(ye??h),Ge=xe??ne,Ke=!Ce,Z=Ke?ue(he):``,qe=Ke&&!!Z,Je=s({enabled:!d&&n===`grid`,containerRef:Ae,firstRowItemRef:je,columns:K,itemsCount:Y.length,deps:[n]}),Ye=c({enabled:!d&&n===`waterfall`,containerRef:ke,firstRowRef:W,deps:[n,Y.length]}),Xe=n===`grid`?Je:Ye,Ze=y(async()=>{if(d)return;if(G.current===J){G.current=J;return}let t=N||!!L;if(G.current=J,t)try{if(Pe(),!N){if(!L)return;z(await v(R));return}let t=await e({page_size:q,tags:F.length>0?F:void 0,cat_id:I||void 0},{cache:`no-store`}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=t.data?.cursor;z(n),H(r)}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{Fe()}},[Fe,d,N,L,J,I,q,F,R,Pe]);b(()=>{Ze()},[Ze]);let Qe=y(async()=>{let t=V;if(!(!P||!t||Me.current)){Me.current=!0,Oe(!0);try{let n=await e({cursor:t,page_size:q,tags:F.length>0?F:void 0,cat_id:I||void 0}),r=Array.isArray(n.data?.videos)?n.data.videos:[],i=n.data?.cursor;r.length>0&&z(e=>e.concat(r)),H(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),H(void 0)}finally{Me.current=!1,Oe(!1)}}},[V,I,q,F,P]),$e=y(()=>{if(Z){if(Z.startsWith(`http`)){window.location.href=Z;return}f.push(Z)}},[Z,f]);b(()=>{let e=U.current;if(!e||!P||!Ve)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||De||Qe()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[Qe,Ve,De,Y.length,q,P,X]),ae(()=>{let e=ke.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Te(t>0?(t-12)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let Q=x(()=>n===`waterfall`?be(Y,ze,we):{left:[],right:[]},[we,ze,Y,n]);if(b(()=>{n===`waterfall`&&(Q.left.length||(W.current.left=null),Q.right.length||(W.current.right=null))},[n,Q.left.length,Q.right.length]),!Y.length)return null;let $=!d&&Ne,et=!d&&De,tt=Xe>0?Xe/2:160;return T(r,{className:`w-full mt-[16px]`,children:[T(r,{className:`flex items-center justify-between px-[12px] mb-[8px]`,children:[w(i,{className:`flex-1 min-w-0 text-text1 text-[18px] leading-[26px] font-bold line-clamp-1`,children:He}),qe&&w(i,{className:`text-text3 text-[12px] leading-[18px] cursor-pointer`,onClick:$e,children:`更多`})]}),n===`grid`&&T(r,{ref:Ae,className:`w-full flex flex-wrap px-[12px] relative`,children:[Y.map((e,t)=>{let r=ze[t],i=fe(e),a=Ue&&(i?.showPlayCount??!0),o=i?.playCountDelta??We,s=i?.showEpisode??Ge,c=t%K,l=K>1?{paddingLeft:12*c/K,paddingRight:12*(K-c-1)/K}:void 0;return w(`div`,{ref:e=>{t===X&&(U.current=e),t<K&&(je.current[t]=e)},className:`min-w-0`,style:{width:`${100/K}%`,...l||{}},children:w(le,{variant:n,item:e,icon:r,index:t,showPlayCount:a,playCountDelta:o,showEpisode:s,widthStyle:{width:`100%`}})},j(e,t))}),$&&w(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&w(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:tt},"aria-hidden":!0,children:w(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&T(r,{ref:ke,className:`w-full px-[12px] flex gap-[12px] relative`,children:[w(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.left.map((e,t)=>{let r=fe(e.item),i=Ue&&(r?.showPlayCount??!0),a=r?.playCountDelta??We,o=r?.showEpisode??Ge;return w(`div`,{ref:n=>{e.index===X&&(U.current=n),t===0&&(W.current.left=n)},children:w(le,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},j(e.item,e.index))})}),w(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.right.map((e,t)=>{let r=fe(e.item),i=Ue&&(r?.showPlayCount??!0),a=r?.playCountDelta??We,o=r?.showEpisode??Ge;return w(`div`,{ref:n=>{e.index===X&&(U.current=n),t===0&&(W.current.right=n)},children:w(le,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},j(e.item,e.index))})}),$&&w(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&w(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:tt},"aria-hidden":!0,children:w(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),et&&w(r,{className:`w-full flex justify-center py-[12px]`,children:w(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function le({variant:e,item:t,icon:a,index:s,showPlayCount:c,playCountDelta:l,showEpisode:m,widthStyle:te}){let h=f(t),ne=pe(t),g=t.name||t?.title||``,re=_e(k(t.static?.browse_cnt??0,l)),ie=he(t,m),_=ye(t,a,s),v=h?d(t):O(t),y=c&&!h,b=m&&!h;if(h){let e=ee(t)||ne;return w(r,{className:`w-full`,style:te,children:T(o,{href:v,className:`block w-full`,children:[T(r,{className:`relative w-full overflow-hidden rounded-[8px] bg-white`,style:{aspectRatio:`175 / 280`},children:[e&&w(r,{className:`absolute top-0`,style:{left:`-44.57%`,width:`321.14%`,height:`100%`},children:w(n,{src:e,alt:g||`广告封面`,fill:!0,objectFit:`cover`})}),w(r,{className:`absolute right-0 top-0 flex items-center justify-center`,style:{width:`32%`,height:`8.93%`,minWidth:`56px`,minHeight:`25px`,borderBottomLeftRadius:`8px`,backgroundColor:`rgba(0, 0, 0, 0.33)`},children:w(i,{className:`text-white`,style:{fontSize:`12px`,lineHeight:`normal`},children:`广告`})})]}),w(r,{className:`pt-[8px]`,children:w(i,{as:`h3`,className:`line-clamp-1 text-[14px] leading-[20px] text-white`,children:g})})]})})}return w(p,{url:ne,text:g,className:`w-full`,style:te,topRightChild:_?w(D,{url:_}):void 0,bottomLeftChild:y?T(r,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] py-0 rounded-[4px] bg-[rgba(255,255,255,0.1)] ml-[4px] flex items-center gap-[4px]`,children:[w(u,{className:`w-[12px] h-[12px] text-[#fff] shrink-0`}),re]}):null,bottomRightChild:b?ie&&w(i,{className:`text-[#fff] text-[12px] leading-[18px] pr-2`,children:ie}):null,textChild:w(r,{className:`py-[4px]`,children:w(i,{as:`h3`,className:`text-text1 text-[16px] leading-[24px] ${e===`waterfall`?`break-words line-clamp-3`:`line-clamp-1`}`,children:g})}),linkPath:v})}function D({url:e}){return w(r,{className:`relative w-[40px] h-[20px]`,children:w(n,{src:e,alt:`corner`,width:40,height:20,className:`w-full h-auto`})})}function O(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ue(e){return e?e.trim():``}function de(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function fe(e){return e[_]}function pe(e){return e.img_y||e.img_x||e?.coverUrl}function me(e){return typeof e==`string`?e:``}function he(e,t){if(!t)return``;if(ge(e)){let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}return ve(Number(e.duration||0))}function ge(e){if(Number(e.type??0)===2)return!0;let t=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(t)&&t>1}function _e(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e6?`${A(e/1e6)}M`:e>=1e3?`${A(e/1e3)}k`:Math.floor(e).toString()}function k(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function A(e){let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function ve(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function ye(e,t,n){return me(e.badge_url)||me(t?.material_url)||``}function be(e,t,n){let r=[],i=[],a=n<=0,o=0,s=0;return e.forEach((e,c)=>{let l=t[c];if(a){c%2==0?r.push({item:e,icon:l,index:c}):i.push({item:e,icon:l,index:c});return}let u=xe(n,e);o<=s?(r.push({item:e,icon:l,index:c}),o+=u):(i.push({item:e,icon:l,index:c}),s+=u)}),{left:r,right:i}}function xe(e,t){if(!e)return 0;let n=e*1.3461538461538463,r=he(t,!0)?18:0;return n+20+r+6+16}function j(e,t){return e.id?`home-recommend-${e.id}`:`home-recommend-${t}`}export{E as default};
@@ -1,2 +1,2 @@
1
1
 
2
- import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as e,HOME_RECOMMEND_DEFAULT_GRID_ROWS as t,HOME_RECOMMEND_DEFAULT_TITLE as n,HOME_RECOMMEND_MAX_GRID_COLUMNS as r,HOME_RECOMMEND_MAX_GRID_ROWS as i}from"./home-recommend-default-config.mjs";const a=`/static/components-thumb/items_cover.png`,o=`__homeRecommendCardConfig`,s=[`东野圭吾作品:11字谜案`,`诡异纸嫁衣:深夜回魂`,`夜行者档案:无声证词`,`狐面新娘:冥婚谜局`,`赤焰长歌:风雪诛心`,`山海禁术:九尾秘闻`],c=[`烧脑悬疑`,`民俗怪谈`,`悬疑推理`,`东方奇幻`,`古风权谋`,`奇诡冒险`],l=[8.9,9.1,8.7,9.3,8.8,9],u=[``,`独播`,``,`巅峰榜·历史上榜`,``,`独播`],d=Array.from({length:60},(e,t)=>{let n=t%2==0,r=s[t%s.length],i=c[t%c.length],o=l[t%l.length],d=u[t%u.length],f=d?[{id:`preview-tag-${t+1}`,name:d}]:void 0,p={browse_cnt:2242e4+t*186e3};return{id:`preview-recommend-${t+1}`,name:r,img_y:a,img_x:a,img_type:t%3==1?`long`:`short`,cat_name:i,score:o,tags:f,type:n?2:1,duration:n?0:60*(18+t),episode_cnt:n?24+t%3*6:0,static:p}});function f({variant:e,enableInfinite:t,rows:n,columns:r,items:i}){let a=Array.isArray(i)?i.length:0;return e===`grid`?a>0?a:Math.max(g(n,r),2,a):t?Math.max(8,a):e===`waterfall`?Math.max(4,a):Math.max(2,a)}function p(e){let t=Math.max(1,Math.floor(e));return Array.from({length:t},(e,t)=>{let n=d[t%d.length];return{...n,id:`preview-recommend-${t+1}`,name:n.name}})}function m(e,t,n){return t.length?e.map((e,r)=>{let i=t[r];if(!i)return e;let a=(i.contentId?n.get(i.contentId):void 0)||e,s=i.titleMode===`custom`?i.title?.trim()||a.name||e.name||``:a.name||e.name||``,c=i.coverUrl?.trim()||``,l=i.coverMode===`content`,u=l?a.img_y||a.img_x||e.img_y||e.img_x||c||``:c||a.img_y||a.img_x||e.img_y||e.img_x||``,d=l?a.img_x||a.img_y||e.img_x||e.img_y||c||``:c||a.img_x||a.img_y||e.img_x||e.img_y||``,f=a.badge_url||e.badge_url||``,p=i.badge_url??f,m=h(i,a),g=i.is_ad===!0;return{...e,...a,id:a.id||e.id||`preview-recommend-${r+1}`,name:s,img_y:u,img_x:d,is_ad:g,ad_advertise_url:g?i.ad_advertise_url?.trim()||``:void 0,ad_advertise_icon:g?i.ad_advertise_icon?.trim()||u||d||``:void 0,badge_url:p||void 0,[o]:m}}):e}function h(e,t){let n=t[o],r={showPlayCount:e.showPlayCount??n?.showPlayCount,playCountDelta:e.playCountDelta??n?.playCountDelta,showEpisode:e.showEpisode??n?.showEpisode};if(!(r.showPlayCount===void 0&&r.playCountDelta===void 0&&r.showEpisode===void 0))return r}function g(n,a){return _(n,t,1,i)*_(a,e,1,r)}function _(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(r,Math.max(n,Math.floor(i))):t}function v({variant:e,schemaTitle:t,enableInfinite:r,smartTagEnabled:i,rows:a,columns:o,items:s}){let c=new Map,l=i?[]:Array.isArray(s)?s.filter(Boolean):[],u=m(p(f({variant:e,enableInfinite:r,rows:a,columns:o,items:l})),l,c);return{title:t&&t.trim()||n,list:u,icons:[],cursor:``,show_style:void 0}}export{o as HOME_RECOMMEND_CARD_CONFIG_FIELD,v as buildHomeRecommendEditorPreviewData};
2
+ import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as e,HOME_RECOMMEND_DEFAULT_GRID_ROWS as t,HOME_RECOMMEND_DEFAULT_TITLE as n,HOME_RECOMMEND_MAX_GRID_COLUMNS as r,HOME_RECOMMEND_MAX_GRID_ROWS as i}from"./home-recommend-default-config.mjs";const a=`/static/components-thumb/video_player.png`,o=`__homeRecommendCardConfig`,s=Array.from({length:60},(e,t)=>{let n=t%2==1,r={browse_cnt:12345+t*731};return{id:`preview-recommend-${t+1}`,name:`${`媒资标题`.repeat((t+1)*2)}`,img_y:a,img_x:a,type:n?2:1,duration:n?0:60*(18+t),episode_cnt:n?12+t%3*6:0,static:r}});function c({variant:e,enableInfinite:t,rows:n,columns:r,items:i}){let a=Array.isArray(i)?i.length:0;return e===`grid`?a>0?a:Math.max(f(n,r),2,a):t?Math.max(8,a):e===`waterfall`?Math.max(4,a):Math.max(2,a)}function l(e){let t=Math.max(1,Math.floor(e));return Array.from({length:t},(e,t)=>{let n=s[t%s.length];return{...n,id:`preview-recommend-${t+1}`,name:n.name}})}function u(e,t,n){return t.length?e.map((e,r)=>{let i=t[r];if(!i)return e;let a=(i.contentId?n.get(i.contentId):void 0)||e,s=i.titleMode===`custom`?i.title?.trim()||a.name||e.name||``:a.name||e.name||``,c=i.coverUrl?.trim()||``,l=i.coverMode===`content`,u=l?a.img_y||a.img_x||e.img_y||e.img_x||c||``:c||a.img_y||a.img_x||e.img_y||e.img_x||``,f=l?a.img_x||a.img_y||e.img_x||e.img_y||c||``:c||a.img_x||a.img_y||e.img_x||e.img_y||``,p=a.badge_url||e.badge_url||``,m=i.badge_url??p,h=d(i,a),g=i.is_ad===!0;return{...e,...a,id:a.id||e.id||`preview-recommend-${r+1}`,name:s,img_y:u,img_x:f,is_ad:g,ad_advertise_url:g?i.ad_advertise_url?.trim()||``:void 0,ad_advertise_icon:g?i.ad_advertise_icon?.trim()||u||f||``:void 0,badge_url:m||void 0,[o]:h}}):e}function d(e,t){let n=t[o],r={showPlayCount:e.showPlayCount??n?.showPlayCount,playCountDelta:e.playCountDelta??n?.playCountDelta,showEpisode:e.showEpisode??n?.showEpisode};if(!(r.showPlayCount===void 0&&r.playCountDelta===void 0&&r.showEpisode===void 0))return r}function f(n,a){return p(n,t,1,i)*p(a,e,1,r)}function p(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(r,Math.max(n,Math.floor(i))):t}function m({variant:e,schemaTitle:t,enableInfinite:r,smartTagEnabled:i,rows:a,columns:o,items:s}){let d=new Map,f=i?[]:Array.isArray(s)?s.filter(Boolean):[],p=u(l(c({variant:e,enableInfinite:r,rows:a,columns:o,items:f})),f,d);return{title:t&&t.trim()||n,list:p,icons:[],cursor:``,show_style:void 0}}export{o as HOME_RECOMMEND_CARD_CONFIG_FIELD,m as buildHomeRecommendEditorPreviewData};
@@ -3,24 +3,24 @@ import { defaultProps } from "../basics/fullscreen-feed/defaults/default-props.m
3
3
  import { FullscreenFeedClient } from "../basics/fullscreen-feed/runtime/client.mjs";
4
4
  import { schema } from "../basics/fullscreen-feed/schema/index.mjs";
5
5
  import { BannerAdInspectorProps, BannerAdItem, BannerAdProps, BannerAdStyleSize, bannerAdInspectorDefaultProps, bannerAdInspectorPropsSchema, bannerAdStyleSizeOptions } from "./advertisement/banner-ad/schema.mjs";
6
- import { FloatingAdEditableProps, FloatingAdInspectorProps, FloatingAdItem, FloatingAdProps, floatingAdInspectorDefaultProps, floatingAdInspectorPropsSchema } from "./advertisement/floating-ad/schema.mjs";
6
+ import { FloatingAdItem, FloatingAdProps, floatingAdInspectorDefaultProps, floatingAdInspectorPropsSchema } from "./advertisement/floating-ad/schema.mjs";
7
7
  import { IconAdInspectorProps, IconAdItem, IconAdProps, iconAdInspectorDefaultProps, iconAdInspectorPropsSchema } from "./advertisement/icon-ad/schema.mjs";
8
8
  import { TextAdInspectorProps, TextAdItem, TextAdProps, textAdInspectorDefaultProps, textAdInspectorPropsSchema } from "./advertisement/text-ad/schema.mjs";
9
- import { AdsMatchExtData, adaptBannerAdProps, adaptFloatingAdItem, adaptIconAdProps, adaptPopupAdMaterials, adaptTextAdProps, buildAdsMatchRequest, getFirstMatchedMaterial, hasMatchedAds, parseAdsMatchExtData, resolveAdsAppCode, sortAdsMatchMaterials } from "./advertisement/ad-match.mjs";
9
+ import { AdsMatchExtData, adaptBannerAdProps, adaptFloatingAdItems, adaptIconAdProps, adaptPopupAdMaterials, adaptTextAdProps, buildAdsMatchRequest, hasMatchedAds, parseAdsMatchExtData, resolveAdsAppCode, sortAdsMatchMaterials } from "./advertisement/ad-match.mjs";
10
10
  import { AdProvider, AdProviderProps, AdProviderValue, useAdProvider } from "./advertisement/ad-provider.mjs";
11
11
  import { AdsMatchQueryOptions, createAdsMatchPrefetchItem, createAdsMatchQueryFn, getAdsMatchQueryKey } from "./advertisement/ad-query.mjs";
12
12
  import { AdRuntimeProvider, AdRuntimeProviderProps } from "./advertisement/ad-runtime-provider.mjs";
13
13
  import { BannerAd } from "./advertisement/banner-ad/client.mjs";
14
14
  import { BannerAdServer } from "./advertisement/banner-ad/server.mjs";
15
15
  import { bannerAdMaterial } from "./advertisement/banner-ad/material.mjs";
16
- import { FeedAdBadge, FeedAdItemLike, getFeedAdIcon, getFeedAdJumpUrl, isFeedAdItem } from "./advertisement/feed-ad/index.mjs";
16
+ import { FeedAdBadge, FeedAdItemLike, FeedAdPayloadLike, getFeedAdIcon, getFeedAdJumpUrl, isFeedAdItem } from "./advertisement/feed-ad/index.mjs";
17
17
  import { FloatingAd } from "./advertisement/floating-ad/client.mjs";
18
18
  import { FloatingAdServer } from "./advertisement/floating-ad/server.mjs";
19
19
  import { floatingAdMaterial } from "./advertisement/floating-ad/material.mjs";
20
20
  import { IconAd } from "./advertisement/icon-ad/client.mjs";
21
21
  import { IconAdServer } from "./advertisement/icon-ad/server.mjs";
22
22
  import { iconAdMaterial } from "./advertisement/icon-ad/material.mjs";
23
- import { PopupAdInspectorProps, PopupAdItem, PopupAdProps, popupAdInspectorDefaultProps, popupAdInspectorPropsSchema } from "./advertisement/popup-ad/schema.mjs";
23
+ import { PopupAdBaseProps, PopupAdInspectorProps, PopupAdItem, PopupAdProps, popupAdInspectorDefaultProps, popupAdInspectorPropsSchema } from "./advertisement/popup-ad/schema.mjs";
24
24
  import { PopupAd } from "./advertisement/popup-ad/client.mjs";
25
25
  import { PopupAdServer } from "./advertisement/popup-ad/server.mjs";
26
26
  import { popupAdMaterial } from "./advertisement/popup-ad/material.mjs";
@@ -78,11 +78,6 @@ import { schema as schema$11 } from "./home-recommend/home-recommend-waterfall/s
78
78
  import { HomeRecommendWaterfall } from "./home-recommend/home-recommend-waterfall/server.mjs";
79
79
  import { homeRecommendWaterfallMaterial } from "./home-recommend/home-recommend-waterfall/material.mjs";
80
80
  import "./home-recommend/index.mjs";
81
- import { hotRecommendInspectorPropsSchema } from "./hot-recommend/schema.mjs";
82
- import { HotRecommendClient, HotRecommendProps } from "./hot-recommend/client.mjs";
83
- import { HotRecommendServer } from "./hot-recommend/server.mjs";
84
- import { hotRecommendMaterial } from "./hot-recommend/material.mjs";
85
- import "./hot-recommend/index.mjs";
86
81
  import { imageTextRecommendInspectorPropsSchema } from "./image-text-recommend/schema.mjs";
87
82
  import { ImageTextRecommendClient, ImageTextRecommendProps } from "./image-text-recommend/client.mjs";
88
83
  import { ImageTextRecommendServer } from "./image-text-recommend/server.mjs";
@@ -102,7 +97,7 @@ import { BasicPostCardClient } from "./post-card/variants/basic-post-card/runtim
102
97
  import { schema as schema$13 } from "./post-card/variants/basic-post-card/schema/index.mjs";
103
98
  import "./post-card/index.mjs";
104
99
  import { ProfileHeaderInspectorProps, UserProfileHeaderAuthConfig, UserProfileHeaderClientProps, profileHeaderInspectorDefaultProps, profileHeaderInspectorPropsSchema } from "./profile/profile-header/schema.mjs";
105
- import { UserProfileHeaderClient, defaultBackground } from "./profile/profile-header/client.mjs";
100
+ import { UserProfileHeaderClient } from "./profile/profile-header/client.mjs";
106
101
  import { profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground } from "./profile/profile-header/material.mjs";
107
102
  import { ProfileMainInspectorProps, UserProfileMainProps, profileMainInspectorDefaultProps, profileMainInspectorPropsSchema } from "./profile/profile-main/schema.mjs";
108
103
  import { UserProfileMainClient } from "./profile/profile-main/client.mjs";
@@ -1,2 +1,2 @@
1
1
 
2
- import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import i from"../../../../assets/icons/view.mjs";import{Fragment as a,jsx as o,jsxs as s}from"react/jsx-runtime";function c(e){let t=Number(e||0);if(Number.isNaN(t)||t<=0)return``;if(t>=1e6){let e=(t/1e6).toFixed(1);return e.endsWith(`.0`)?`${e.slice(0,-2)}M`:`${e}M`}return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(Math.floor(t))}function l({data:l}){return l?o(t,{className:`flex flex-col gap-[12px]`,children:(Array.isArray(l)?l:[l]).map((l,u)=>{if(!l||typeof l!=`object`)return null;let{id:d,title:f,desc:p,cover:m,tagImageUrl:h,showEpisode:g,episodeText:_,showPlayCount:v,play_count:y}=l,b=f||``,x=d?`/video/${d}/${b?encodeURIComponent(b):``}`:`#`,S=_==null?``:String(_).trim(),C=(g??!0)&&S!==``,w=v??!0,T=c(y)||`0`;return o(t,{children:o(r,{href:x,className:`block`,children:s(t,{className:`relative h-[204px] w-full overflow-hidden rounded-[8px] bg-[rgba(6,3,20,0.5)]`,children:[s(t,{className:`relative h-[134px] w-full overflow-hidden rounded-t-[8px]`,children:[m&&o(e,{src:m,alt:b||`封面`,fill:!0,objectFit:`cover`}),h&&String(h).trim()&&o(t,{className:`absolute left-[16px] top-[12px]`,children:o(t,{className:`inline-flex items-center justify-center rounded-[4px] px-[4px] py-[4px]`,style:{background:`linear-gradient(90deg, #CA3FE9 0%, #9756E3 100%)`},children:o(e,{src:String(h),alt:``,width:75,height:14,className:`h-[14px] w-auto object-contain`})})}),s(t,{className:`absolute bottom-[12px] left-[16px] right-[16px] flex items-center justify-between`,children:[o(t,{className:`flex items-center gap-[4px]`,children:w&&s(a,{children:[o(i,{className:`size-[22px] text-white opacity-80`}),o(n,{className:`text-[14px] leading-[20px] text-white`,children:T})]})}),C&&o(n,{className:`text-[14px] leading-[20px] text-white`,children:S})]})]}),o(t,{className:`px-[16px] pt-[12px]`,children:s(t,{className:`flex flex-col gap-[2px]`,children:[o(n,{className:`line-clamp-1 text-[16px] font-medium leading-[22px] text-white`,children:b}),p&&o(n,{className:`line-clamp-1 text-[14px] leading-[20px] text-white/50`,children:p})]})})]})})},d||b||`large-grid-item-${u}`)})}):null}export{l as LargeGridItemClient};
2
+ import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import{getFeedAdIcon as i,getFeedAdJumpUrl as a,isFeedAdItem as o}from"../advertisement/feed-ad/index.mjs";import s from"../../../../assets/icons/view.mjs";import{jsx as c,jsxs as l}from"react/jsx-runtime";function u(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function d({data:d}){return d?c(t,{children:(Array.isArray(d)?d:[d]).map((d,f)=>{if(!d||typeof d!=`object`)return null;let{id:p,title:m,desc:h,cover:g,tagImageUrl:_,showEpisode:v,episodeText:y,showPlayCount:b,play_count:x}=d,S=o(d),C=m||``,w=(S?i(d):``)||g,T=S?a(d):p?`/video/${p}/${C?encodeURIComponent(C):``}`:`#`,E=_?String(_):null,D=y==null?``:String(y).trim(),O=!S&&(v??!0)&&D!==``,k=!S&&(b??!0),A=u(x);return S?c(t,{children:c(r,{href:T,children:l(t,{className:`relative w-full overflow-hidden rounded-[8px] bg-[rgba(90,90,90,0.48)]`,style:{aspectRatio:`358 / 263`},children:[l(t,{className:`absolute inset-x-0 top-0 overflow-hidden`,style:{height:`83.65%`},children:[w&&c(t,{className:`absolute top-0`,style:{left:`-6.42%`,width:`202.24%`,height:`163.64%`},children:c(e,{src:w,alt:C||`广告封面`,fill:!0,objectFit:`cover`})}),c(t,{className:`absolute right-0 top-0 flex items-center justify-center`,style:{width:`15.64%`,height:`9.51%`,minWidth:`56px`,minHeight:`25px`,borderBottomLeftRadius:`16px`,backgroundColor:`rgba(0, 0, 0, 0.33)`},children:c(n,{className:`text-white`,style:{fontSize:`clamp(12px, 3.35vw, 16px)`,lineHeight:`normal`},children:`广告`})})]}),l(t,{className:`absolute inset-x-0 bottom-0 flex items-center justify-between bg-white`,style:{height:`16.35%`,minHeight:`43px`,padding:`0 3.35%`},children:[c(t,{className:`min-w-0 flex-1`,style:{paddingRight:`3.35%`},children:c(n,{as:`h3`,className:`line-clamp-1 text-[#161616]`,style:{fontSize:`clamp(14px, 3.9vw, 18px)`,lineHeight:`normal`},children:C})}),c(t,{className:`flex shrink-0 items-center justify-center rounded-[16px] border border-[#FD4C5E]`,style:{width:`14.53%`,height:`10.27%`,minWidth:`52px`,minHeight:`27px`},children:c(n,{className:`text-[#FD4C5E]`,style:{fontSize:`clamp(14px, 3.9vw, 18px)`,lineHeight:`normal`},children:`前往`})})]})]})})},p||C||`large-grid-item-${f}`):c(t,{children:l(r,{href:T,children:[l(t,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[w&&c(e,{src:w,alt:C||`封面`,fill:!0,objectFit:`cover`}),E&&c(t,{className:`absolute top-0 right-0 z-10 w-[37px] h-[20px]`,children:c(e,{src:E,alt:C||`角标`,fill:!0,sizes:`37px`,className:`object-contain`})}),c(t,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),k&&l(t,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[c(s,{className:`h-[14px] w-[14px] text-white`}),c(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:A})]}),O&&c(t,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:c(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:D})})]}),l(t,{className:`flex items-center justify-between gap-[12px] pt-[10px] px-2`,children:[l(t,{className:`flex-1 min-w-0`,children:[c(n,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:C}),h&&c(n,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:h})]}),c(n,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})},p||C||`large-grid-item-${f}`)})}):null}export{d as LargeGridItemClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/loading.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{isFeedAdItem as l}from"../advertisement/feed-ad/index.mjs";import{LargeGridItemClient as u}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as d}from"./schema.mjs";import{useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";const v=[],y=d.data??[];function b(e){return e==null}function x(e,t){return b(e)?t:e}function S(e){return typeof e==`string`?e.trim():``}function C(e){return S(e)}function w(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function T(e){let t=e,n=S(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(w(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function E(e,t){return t?{...e,...t,id:x(t.id,e.id),cover:x(t.cover,e.cover),title:x(t.title,e.title),desc:x(t.desc,e.desc),play_count:x(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:x(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:x(t.tagImageUrl,e.tagImageUrl)}:e}function D(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:x(t.title,e.title),moreUrl:x(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?E(n,t.items):t.items}}function O({mode:d=`renderer`,data:b=v}){let x=d===`editor`,S=b??v,E=Array.isArray(S)&&S.length>0,O=p(()=>E?[D(y[0],S[0])]:y,[E,S]),[k,A]=h(O),j=m(``),M=m(null),{isLoading:N,show:P,hide:F,cancel:I}=s(500);f(()=>{A(O)},[O]);let L=o({enabled:!x,containerRef:M,itemRef:M,deps:[k.length]}),R=p(()=>{if(x||!E)return``;let e=O.map(e=>C(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[E,x,O]);if(f(()=>{if(x||!e()||!R||j.current===R)return;j.current=R;let n=!1;async function r(){try{P();let e=await t({ids:R.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=C(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;A(e=>e.map(e=>{let t=e.items;if(!t||l(t))return e;let n=C(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=w(r.play_count)??w(r.browse_count)??w(r.view_count),o=T(r);return{...e,items:{...t,play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||F()}}return r(),()=>{n=!0,I()}},[I,R,F,x,P]),!k||k.length===0)return null;let z=k[0],B=z?.title,V=z?.moreUrl,H=L>0?L/2:160,U=!x&&N;return _(n,{className:x?`p-3 pointer-events-none`:`p-3`,children:[_(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[B&&g(r,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:B}),V&&_(a,{href:V,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,g(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),_(n,{className:`relative`,children:[k.map((e,t)=>{let{items:r}=e;return r?g(n,{ref:t===0?M:void 0,className:t>0?`mt-3`:``,children:g(u,{data:r})},`large-feature-grid-items-${t}`):null}),U&&g(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),U&&g(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:H},"aria-hidden":!0,children:g(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{O as LargeFeatureGridClient};
2
+ "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/loading.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{isFeedAdItem as l}from"../advertisement/feed-ad/index.mjs";import{LargeGridItemClient as u}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as d}from"./schema.mjs";import{useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";const v=[],y=d.data??[];function b(e){return e==null}function x(e,t){return b(e)?t:e}function S(e){return typeof e==`string`?e.trim():``}function C(e){return S(e)}function w(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function T(e){let t=e,n=S(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(w(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function E(e,t){return t?{...e,...t,id:x(t.id,e.id),cover:x(t.cover,e.cover),title:x(t.title,e.title),desc:x(t.desc,e.desc),play_count:x(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:x(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:x(t.tagImageUrl,e.tagImageUrl)}:e}function D(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:x(t.title,e.title),moreUrl:x(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?E(n,t.items):t.items}}function O({mode:d=`renderer`,data:b=v}){let x=d===`editor`,S=b??v,E=Array.isArray(S)&&S.length>0,O=p(()=>E?[D(y[0],S[0])]:y,[E,S]),[k,A]=h(O),j=m(``),M=m(null),{isLoading:N,show:P,hide:F,cancel:I}=s(500);f(()=>{A(O)},[O]);let L=o({enabled:!x,containerRef:M,itemRef:M,deps:[k.length]}),R=p(()=>{if(x||!E)return``;let e=O.map(e=>C(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[E,x,O]);if(f(()=>{if(x||!e()||!R||j.current===R)return;j.current=R;let n=!1;async function r(){try{P();let e=await t({ids:R.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=C(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;A(e=>e.map(e=>{let t=e.items;if(!t||l(t))return e;let n=C(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=w(r.play_count)??w(r.browse_count),o=T(r);return{...e,items:{...t,play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||F()}}return r(),()=>{n=!0,I()}},[I,R,F,x,P]),!k||k.length===0)return null;let z=k[0],B=z?.title,V=z?.moreUrl,H=L>0?L/2:160,U=!x&&N;return _(n,{className:x?`p-3 pointer-events-none`:`p-3`,children:[_(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[B&&g(r,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:B}),V&&_(a,{href:V,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,g(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),_(n,{className:`relative`,children:[k.map((e,t)=>{let{items:r}=e;return r?g(n,{ref:t===0?M:void 0,className:t>0?`mt-3`:``,children:g(u,{data:r})},`large-feature-grid-items-${t}`):null}),U&&g(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),U&&g(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:H},"aria-hidden":!0,children:g(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{O as LargeFeatureGridClient};