@funhub/platform 0.2.4-beta.4 → 0.2.4

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 (209) hide show
  1. package/dist/assets/icons/channel-list/channel-active-indicator.mjs +2 -0
  2. package/dist/assets/icons/common/header-menu.mjs +2 -0
  3. package/dist/assets/icons/common/header-search-icon.mjs +2 -0
  4. package/dist/assets/icons/common/right_arrow_thin.mjs +2 -0
  5. package/dist/assets/icons/eye-off-icon.mjs +1 -1
  6. package/dist/assets/icons/marquee-close.mjs +2 -0
  7. package/dist/assets/icons/marquee-speaker.mjs +2 -0
  8. package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +2 -0
  9. package/dist/biz.d.mts +10 -6
  10. package/dist/biz.mjs +1 -1
  11. package/dist/common.d.mts +5 -2
  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 +7 -3
  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 +9 -4
  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 +1 -31
  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 +4 -3
  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 +5 -0
  28. package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +21 -6
  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 +7 -1
  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 +14 -15
  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 +5 -1
  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 +2 -1
  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-operate.mjs +1 -1
  53. package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
  54. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  55. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  56. package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +1 -13
  57. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  58. package/dist/components/biz/business/detail/video-detail-recommend/material.mjs +1 -1
  59. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
  60. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +2 -0
  61. package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -1
  62. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.d.mts +1 -1
  63. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  64. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +4 -3
  65. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  66. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -1
  67. package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -1
  68. package/dist/components/biz/business/header-search/header-search/client.mjs +1 -1
  69. package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
  70. package/dist/components/biz/business/header-search/shared/header-action.mjs +2 -0
  71. package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +2 -0
  72. package/dist/components/biz/business/header-search/shared/header-shell.mjs +2 -0
  73. package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
  74. package/dist/components/biz/business/header-search/shared/search.mjs +1 -1
  75. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +0 -8
  76. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  77. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +0 -8
  78. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +0 -8
  79. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  80. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +0 -8
  81. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  82. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  83. package/dist/components/biz/business/hot-recommend/client.d.mts +17 -0
  84. package/dist/components/biz/business/hot-recommend/client.mjs +2 -0
  85. package/dist/components/biz/business/hot-recommend/index.d.mts +5 -0
  86. package/dist/components/biz/business/hot-recommend/material.d.mts +24 -0
  87. package/dist/components/biz/business/hot-recommend/material.mjs +2 -0
  88. package/dist/components/biz/business/hot-recommend/schema.d.mts +23 -0
  89. package/dist/components/biz/business/hot-recommend/schema.mjs +2 -0
  90. package/dist/components/biz/business/hot-recommend/server.d.mts +11 -0
  91. package/dist/components/biz/business/hot-recommend/server.mjs +2 -0
  92. package/dist/components/biz/business/index.d.mts +10 -5
  93. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  94. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  95. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  96. package/dist/components/biz/business/marquee/client.mjs +1 -1
  97. package/dist/components/biz/business/marquee/marquee.module.mjs +2 -6
  98. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
  99. package/dist/components/biz/business/profile/index.d.mts +1 -1
  100. package/dist/components/biz/business/profile/profile-header/client.d.mts +2 -1
  101. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  102. package/dist/components/biz/business/profile/profile-header/index.d.mts +1 -1
  103. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  104. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  105. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  106. package/dist/components/biz/business/profile/profile-main/empty-state.mjs +2 -0
  107. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  108. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  109. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +2 -0
  110. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  111. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +5 -1
  112. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  113. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
  114. package/dist/components/biz/business/ranking-recommend/client.d.mts +17 -0
  115. package/dist/components/biz/business/ranking-recommend/client.mjs +70 -0
  116. package/dist/components/biz/business/ranking-recommend/material.d.mts +35 -0
  117. package/dist/components/biz/business/ranking-recommend/material.mjs +2 -0
  118. package/dist/components/biz/business/ranking-recommend/schema.d.mts +35 -0
  119. package/dist/components/biz/business/ranking-recommend/schema.mjs +2 -0
  120. package/dist/components/biz/business/ranking-recommend/server.d.mts +11 -0
  121. package/dist/components/biz/business/ranking-recommend/server.mjs +2 -0
  122. package/dist/components/biz/business/ranking-recommend/shared/query.mjs +2 -0
  123. package/dist/components/biz/business/ranking-recommend/shared.d.mts +15 -0
  124. package/dist/components/biz/business/ranking-recommend/shared.mjs +2 -0
  125. package/dist/components/biz/business/search-history/client.mjs +1 -1
  126. package/dist/components/biz/business/search-history/schema.mjs +1 -1
  127. package/dist/components/biz/business/search-input/client.mjs +1 -1
  128. package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
  129. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  130. package/dist/components/common/collection-popup/create-collection-sheet.d.mts +41 -0
  131. package/dist/components/common/collection-popup/create-collection-sheet.mjs +2 -0
  132. package/dist/components/common/collection-popup/index.d.mts +1 -0
  133. package/dist/components/common/collection-popup/index.mjs +1 -1
  134. package/dist/components/common/icons/setting.mjs +1 -1
  135. package/dist/components/common/list/collection-list/collection-list-item.d.mts +8 -0
  136. package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -1
  137. package/dist/components/common/list/collection-list/collection-list.d.mts +6 -0
  138. package/dist/components/common/list/collection-list/collection-list.mjs +1 -1
  139. package/dist/components/common/list/collection-list/collection-select-icon.mjs +2 -0
  140. package/dist/components/common/list/waterfall-recommend/index.d.mts +2 -0
  141. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +116 -0
  142. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +2 -0
  143. package/dist/components/common/series-episodes/index.d.mts +3 -1
  144. package/dist/components/common/series-episodes/index.mjs +1 -1
  145. package/dist/components/common/tab-bar/index.mjs +1 -1
  146. package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +2 -0
  147. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  148. package/dist/components/pages/edit/page.mjs +1 -1
  149. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
  150. package/dist/components/pages/home/client.mjs +1 -1
  151. package/dist/components/pages/login/auth-page-styles.mjs +6 -0
  152. package/dist/components/pages/login/login-client.mjs +1 -1
  153. package/dist/components/pages/login/register.mjs +1 -1
  154. package/dist/components/pages/login/verify.mjs +1 -4
  155. package/dist/components/pages/publish/components/collection.mjs +1 -1
  156. package/dist/components/pages/search/page-client.mjs +1 -1
  157. package/dist/components/pages/search/search-result/index.mjs +1 -1
  158. package/dist/components/pages/search/search-result/search-all.mjs +1 -1
  159. package/dist/components/pages/search/search-result/search-user.mjs +1 -1
  160. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  161. package/dist/components/pages/search/search-result/shared.mjs +2 -0
  162. package/dist/components/pages/search/top-header.mjs +1 -1
  163. package/dist/components/pages/search-result/page-client.mjs +1 -1
  164. package/dist/components/pages/search-result/search-all.mjs +1 -1
  165. package/dist/components/pages/search-result/search-empty.mjs +2 -0
  166. package/dist/components/pages/search-result/search-tab.mjs +1 -1
  167. package/dist/components/pages/search-result/search-user.mjs +1 -1
  168. package/dist/components/pages/search-result/search-video-info.mjs +2 -0
  169. package/dist/components/pages/search-result/shared.mjs +2 -0
  170. package/dist/components/pages/search-result/top-header.mjs +2 -0
  171. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +2 -2
  172. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  173. package/dist/components/pages/user-follow/_components/follow-no-login.mjs +1 -1
  174. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  175. package/dist/components/pages/video-list/video-list-recommend-item.mjs +2 -0
  176. package/dist/components/pages/video-list/video-list-skeleton.d.mts +2 -3
  177. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  178. package/dist/components/ui/box.d.mts +1 -1
  179. package/dist/i18n/locales/en.mjs +2 -2
  180. package/dist/i18n/locales/zh-CN.mjs +2 -2
  181. package/dist/materials.d.mts +3 -1
  182. package/dist/materials.mjs +1 -1
  183. package/dist/service/generated/client.d.mts +38 -2
  184. package/dist/service/generated/client.mjs +1 -1
  185. package/dist/service/generated/tanstack.d.mts +47 -2
  186. package/dist/service/generated/tanstack.mjs +1 -1
  187. package/dist/service.d.mts +3 -3
  188. package/dist/service.mjs +1 -1
  189. package/dist/theme-tokens.d.mts +9 -0
  190. package/dist/theme-tokens.mjs +2 -0
  191. package/dist/types.d.mts +662 -9
  192. package/dist/utils/helper.d.mts +1 -1
  193. package/dist/utils/helper.mjs +1 -1
  194. package/package.json +8 -2
  195. package/theme.css +170 -59
  196. package/dist/assets/icons/detail/collect_nor.mjs +0 -2
  197. package/dist/assets/icons/detail/collect_sel.mjs +0 -2
  198. package/dist/assets/icons/detail/share.mjs +0 -2
  199. package/dist/assets/icons/marquee-enter.mjs +0 -2
  200. package/dist/assets/icons/right_arrow.mjs +0 -2
  201. package/dist/assets/icons/search/avatar.mjs +0 -2
  202. package/dist/assets/images/marquee.mjs +0 -2
  203. package/dist/components/biz/business/detail/shared/detail-introduction.mjs +0 -2
  204. package/dist/components/common/collection-popup/collection-create-modal.mjs +0 -2
  205. package/dist/components/common/skeleton/search-video-card-skeleton.mjs +0 -2
  206. package/dist/components/pages/search/search-utils.mjs +0 -2
  207. package/dist/components/pages/search-result/search-result-skeleton.mjs +0 -2
  208. package/dist/components/pages/search-result/search-video.mjs +0 -2
  209. package/dist/components/pages/video-list/video-list-item.mjs +0 -2
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useLoginModalStore as i}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../../../hooks/query/use-query.mjs";import o from"../../../../common/interaction-animations.module.mjs";import s from"../../../../common/collection-popup/index.mjs";import c from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as l}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as u}from"../../../../../hooks/use-content-operate.mjs";import d from"../../../../../assets/icons/detail/check-ok.mjs";import f from"../../../../../assets/icons/detail/collect_nor.mjs";import p from"../../../../../assets/icons/detail/collect_sel.mjs";import ee from"../../../../../assets/icons/detail/give_like.mjs";import m from"../../../../../assets/icons/detail/give_like_sel.mjs";import te from"../../../../../assets/icons/detail/share.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{usePathname as C,useSearchParams as ne}from"next/navigation";import{useTranslations as w}from"next-intl";function T({mode:T=`renderer`,information:O,onUpdate:k}){let A=T===`editor`||!O?.id||O.id.startsWith(`preview-`),j=`${C()}?${ne()?.toString()||``}`,M=v(j),N=w(`components.biz.business.detail`),P=l(),[F,I]=y(!1),[L,R]=y(!1),z=v(0),B=v(0),V=e(e=>e.userId),H=e(e=>e.isLogin),U=a();g(()=>{M.current!==j&&(c.clear(),M.current=j)},[j]),g(()=>()=>{c.clear()},[]);let W=h(()=>{V&&(U([`user-profile`,`mine`,V,`user-like-video`]),U([`user-profile`,`mine`,V,`user-like-post`]),U([`user-profile`,`mine`,V,`user-collect-video`,V]),U([`user-profile`,`mine`,V,`user-collect-post`,V]))},[U,V]),{likeAnimation:G,handleLikeOperate:K,handleDefaultCollectionOperate:q,handleShareOperate:J}=u({id:O.id,isLike:O.like||!1,isDislike:O.dislike||!1,isCollect:O.collect||!1,likeCnt:D(O.static?.like_cnt),dislikeCnt:D(O.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!A,animationClasses:{like:o.likeShakeAnimation,dislike:o.dislikeShakeAnimation}}),Y=h(e=>{k?.({...e})},[k]),X=h(async()=>{if(F)return;if(!H){i.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,I(!0);let t=O.like||!1,n=O.dislike||!1,r=D(O.static?.like_cnt),a=D(O.static?.dislike_cnt),o=!t,s=Math.max(0,r+(o?1:-1)),c=o?!1:n,l=o&&n?Math.max(0,a-1):a;Y({like:o,dislike:c,static:{...O.static,like_cnt:s,dislike_cnt:l}});try{let e=await K();if(!e){Y({like:t,dislike:n,static:{...O.static,like_cnt:r,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??c,static:{...O.static,like_cnt:e.likeCnt,dislike_cnt:e.dislikeCnt??l}}),W(),window.sensors?.track?.(`detail_like_click`,{object_id:O.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),S.error(N(`detailOperate.operateFailed`))}finally{I(!1)}},[K,O,W,F,H,N,Y]),Z=_(()=>O.id,[O.id]),re=h(()=>{J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y]),Q=h(()=>{s.show({mode:`select`,onCollect:async e=>{try{let n=await t({new_collection_id:e,content_id:O.id});if(n.code!==0)throw Error(n.message||N(`detailOperate.collectFailed`));Y({collect:!0}),W(),S.success(N(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),S.error(N(`detailOperate.collectFailed`))}}})},[O.id,W,N,Y]),$=h(e=>{let t=e||N(`detailOperate.defaultCollection`);S.custom(e=>x(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[x(`div`,{className:`flex items-center gap-[10px]`,children:[b(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:b(d,{className:`w-[14px] h-[14px]`})}),x(`div`,{className:`flex items-center gap-[6px]`,children:[b(`span`,{className:`text-[14px] leading-[20px]`,children:N(`detailOperate.collectAdded`)}),b(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),b(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{S.dismiss(e),Q()},children:N(`detailOperate.modifyCollection`)})]}))},[Q,N]),ie=h(async()=>{if(L)return;if(!H){i.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e;let t=O.collect||!1,n=!t;R(!0),Y({collect:n}),n&&P.trigger(o.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t}),S.error(e?.message||N(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&S.success(N(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t}),console.error(`收藏操作失败:`,e),S.error(e?.message||N(`detailOperate.collectFailed`))}finally{R(!1)}},[P,q,O.id,O.collect,W,L,H,$,N,Y]);return x(n,{className:`w-full h-[42px] mt-[16px] flex items-center justify-between ${A?`pointer-events-none`:``}`,children:[x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center ${F?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:X,children:[O.like?b(m,{className:`w-[20px] h-[20px] ${G.animationClass}`}):b(ee,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:O.static?O.static.like_cnt===0?N(`detailOperate.like`):E(O.static?.like_cnt):N(`detailOperate.like`)})]}),x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:ie,children:[O.collect?b(p,{className:`w-[20px] h-[20px] ${P.animationClass}`}):b(f,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:N(`detailOperate.collection`)})]}),x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center cursor-pointer`,onClick:re,children:[b(te,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:N(`detailOperate.share`)})]})]})}function E(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(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}export{T as DetailOperate};
2
+ "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useLoginModalStore as i}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../../../hooks/query/use-query.mjs";import o from"../../../../common/interaction-animations.module.mjs";import s from"../../../../common/collection-popup/index.mjs";import c from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as l}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as ee}from"../../../../../hooks/use-content-operate.mjs";import te from"../../../../../assets/icons/detail/check-ok.mjs";import{useCallback as u,useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{usePathname as v,useSearchParams as y}from"next/navigation";import{useTranslations as b}from"next-intl";function x({className:e}){return h(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:h(`path`,{d:`M21.2121 6.89394C21.2121 4.25805 19.0753 2.12121 16.4394 2.12121C14.8261 2.12121 13.3991 2.92114 12.5336 4.15024C12.3349 4.4321 12.0115 4.59976 11.6667 4.59976C11.3218 4.59976 10.9984 4.4321 10.7997 4.15024C9.93421 2.92114 8.50725 2.12121 6.89394 2.12121C4.25804 2.12121 2.12121 4.25805 2.12121 6.89394C2.12121 9.40321 3.62133 11.9321 5.72562 14.0572C7.68391 16.0348 10.0088 17.5016 11.6667 18.137C13.3246 17.5016 15.6494 16.0348 17.6077 14.0572C19.712 11.9321 21.2121 9.40321 21.2121 6.89394ZM23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function S({className:e}){return h(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:h(`path`,{d:`M23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function C({className:e}){return h(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:h(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06ZM9.37675 8.14386C9.22265 8.45841 8.92279 8.6767 8.57614 8.72697L3.33644 9.48615L7.1365 13.2013C7.38683 13.446 7.50059 13.799 7.43996 14.1438L6.54096 19.2509L11.1675 16.7859L11.2866 16.731C11.5714 16.6219 11.8921 16.6405 12.1649 16.7859L16.7946 19.253L15.9028 14.1427C15.8428 13.7988 15.9559 13.4467 16.2052 13.2023L20.0001 9.48511L14.7967 8.72697C14.4525 8.67672 14.155 8.46057 14.0002 8.14904L11.6719 3.45827L9.37675 8.14386Z`,fill:`currentColor`})})}function ne({className:e}){return h(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:h(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06Z`,fill:`currentColor`})})}function w({className:e}){return h(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:h(`path`,{d:`M11.7968 0.0846035C12.212 -0.0873746 12.69 0.00771373 13.0078 0.325488L23.0077 10.3254C23.22 10.5377 23.3375 10.8271 23.3332 11.1273C23.3288 11.4272 23.2029 11.7123 22.9849 11.9183L12.985 21.3627C12.6625 21.6673 12.1901 21.7509 11.7827 21.5754C11.3753 21.3998 11.1111 20.9991 11.1111 20.5554V15.6216C8.22953 15.9648 6.08879 17.6095 4.58982 19.3391C3.74967 20.3085 3.13167 21.2821 2.7246 22.0148C2.52173 22.38 2.37311 22.6823 2.27646 22.8894C2.22828 22.9927 2.19344 23.0722 2.17121 23.1238C2.16011 23.1495 2.15201 23.169 2.14734 23.1802C2.1451 23.1856 2.14372 23.1893 2.143 23.191C1.94502 23.6852 1.42342 23.9699 0.900603 23.8692C0.377728 23.7684 0 23.3102 0 22.7776C0 17.9877 0.696606 13.8374 2.60632 10.8582C4.41013 8.04448 7.21019 6.40446 11.1111 6.14686V1.11107C11.1111 0.661725 11.3817 0.256615 11.7968 0.0846035ZM13.3333 7.22216C13.3333 7.8358 12.8358 8.33326 12.2222 8.33326C8.37436 8.33326 5.97849 9.71592 4.47697 12.0583C3.44269 13.6719 2.79177 15.8074 2.46852 18.4168C2.60946 18.2401 2.75584 18.061 2.91014 17.8829C4.8356 15.6613 7.89407 13.3332 12.2222 13.3332C12.8358 13.3332 13.3333 13.8307 13.3333 14.4443V17.9773L20.6282 11.0882L13.3333 3.79335V7.22216Z`,fill:`currentColor`})})}function T({mode:T=`renderer`,information:O,onUpdate:k}){let A=T===`editor`||!O?.id||O.id.startsWith(`preview-`),j=`${v()}?${y()?.toString()||``}`,M=p(j),N=b(`components.biz.business.detail`),P=l(),[F,I]=m(!1),[L,R]=m(!1),z=p(0),B=p(0),V=e(e=>e.userId),H=e(e=>e.isLogin),U=a();d(()=>{M.current!==j&&(c.clear(),M.current=j)},[j]),d(()=>()=>{c.clear()},[]);let W=u(()=>{V&&(U([`user-profile`,`mine`,V,`user-like-video`]),U([`user-profile`,`mine`,V,`user-like-post`]),U([`user-profile`,`mine`,V,`user-collect-video`,V]),U([`user-profile`,`mine`,V,`user-collect-post`,V]))},[U,V]),{likeAnimation:G,handleLikeOperate:K,handleDefaultCollectionOperate:q,handleShareOperate:J}=ee({id:O.id,isLike:O.like||!1,isDislike:O.dislike||!1,isCollect:O.collect||!1,likeCnt:D(O.static?.like_cnt),dislikeCnt:D(O.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!A,animationClasses:{like:o.likeShakeAnimation,dislike:o.dislikeShakeAnimation}}),Y=u(e=>{k?.({...e})},[k]),X=u(async()=>{if(F)return;if(!H){i.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,I(!0);let t=O.like||!1,n=O.dislike||!1,r=D(O.static?.like_cnt),a=D(O.static?.dislike_cnt),o=!t,s=Math.max(0,r+(o?1:-1)),c=o?!1:n,l=o&&n?Math.max(0,a-1):a;Y({like:o,dislike:c,static:{...O.static,like_cnt:s,dislike_cnt:l}});try{let e=await K();if(!e){Y({like:t,dislike:n,static:{...O.static,like_cnt:r,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??c,static:{...O.static,like_cnt:e.likeCnt,dislike_cnt:e.dislikeCnt??l}}),W(),window.sensors?.track?.(`detail_like_click`,{object_id:O.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),_.error(N(`detailOperate.operateFailed`))}finally{I(!1)}},[K,O,W,F,H,N,Y]),Z=f(()=>O.id,[O.id]),re=u(()=>{J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y]),Q=u(()=>{s.show({mode:`select`,onCollect:async e=>{try{let n=await t({new_collection_id:e,content_id:O.id});if(n.code!==0)throw Error(n.message||N(`detailOperate.collectFailed`));Y({collect:!0}),W(),_.success(N(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),_.error(N(`detailOperate.collectFailed`))}}})},[O.id,W,N,Y]),$=u(e=>{let t=e||N(`detailOperate.defaultCollection`);_.custom(e=>g(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[g(`div`,{className:`flex items-center gap-[10px]`,children:[h(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:h(te,{className:`w-[14px] h-[14px]`})}),g(`div`,{className:`flex items-center gap-[6px]`,children:[h(`span`,{className:`text-[14px] leading-[20px]`,children:N(`detailOperate.collectAdded`)}),h(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),h(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{_.dismiss(e),Q()},children:N(`detailOperate.modifyCollection`)})]}))},[Q,N]),ie=u(async()=>{if(L)return;if(!H){i.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e;let t=O.collect||!1,n=!t;R(!0),Y({collect:n}),n&&P.trigger(o.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t}),_.error(e?.message||N(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&_.success(N(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t}),console.error(`收藏操作失败:`,e),_.error(e?.message||N(`detailOperate.collectFailed`))}finally{R(!1)}},[P,q,O.id,O.collect,W,L,H,$,N,Y]);return g(n,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${A?`pointer-events-none`:``}`,children:[g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${F?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:X,children:[O.like?h(S,{className:`size-[28px] text-[#FF5D8F] ${G.animationClass}`}):h(x,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] ${O.like?`text-[#FF5D8F]`:`text-white`}`,children:O.static?O.static.like_cnt===0?N(`detailOperate.like`):E(O.static?.like_cnt):N(`detailOperate.like`)})]}),g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:ie,children:[O.collect?h(ne,{className:`size-[28px] text-[#FFC039] ${P.animationClass}`}):h(C,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] text-white`,children:N(`detailOperate.collection`)})]}),g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:re,children:[h(w,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] text-white`,children:N(`detailOperate.share`)})]})]})}function E(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(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}export{T as DetailOperate};
@@ -1,2 +1,2 @@
1
1
 
2
- const e=`/static/components-thumb/video_player.png`,t=[{id:`tag-1`,name:`标签`,group:`类型`},{id:`tag-2`,name:`标签`,group:`类型`},{id:`tag-3`,name:`标签`,group:`类型`}],n=Array.from({length:6}).map((e,t)=>({id:`episode-${t+1}`,name:`第${t+1}集`,preview_m3u8_url:``,m3u8_url:``})),r={id:`preview-detail`,mid:`preview-detail`,name:`电影名称电影名称电影名称电影名称电影名称`,img_x:e,img_y:e,preview_images:[e],description:`简介文案,简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案。`,score:`9.6`,is_more_link:`y`,update_status:`1`,tags:t,links:n,content_type:0,play_count:123,episode_cnt:n.length,like:!1,dislike:!1,collect:!1,static:{like_cnt:0,dislike_cnt:0}};function i(e=6){let t=Math.max(1,Math.floor(e));return Array.from({length:t}).map((e,t)=>({...r,id:`preview-recommend-${t+1}`,name:`猜你喜欢 ${t+1}`,play_count:8e3+t*873}))}export{i as buildEditorPreviewRecommendList,r as editorPreviewInformation};
2
+ const e=`/static/components-thumb/items_cover.png`,t=[{id:`tag-1`,name:`标签`,group:`类型`},{id:`tag-2`,name:`标签`,group:`类型`},{id:`tag-3`,name:`标签`,group:`类型`}],n=Array.from({length:6}).map((e,t)=>({id:`episode-${t+1}`,name:`第${t+1}集`,preview_m3u8_url:``,m3u8_url:``})),r={id:`preview-detail`,mid:`preview-detail`,name:`电影名称电影名称电影名称电影名称电影名称`,img_x:e,img_y:e,preview_images:[e],description:`简介文案,简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案简介文案。`,score:`9.6`,is_more_link:`y`,update_status:`1`,tags:t,links:n,content_type:0,play_count:123,episode_cnt:n.length,like:!1,dislike:!1,collect:!1,static:{like_cnt:0,dislike_cnt:0}};function i(e=6){let t=Math.max(1,Math.floor(e));return Array.from({length:t}).map((e,t)=>({...r,id:`preview-recommend-${t+1}`,name:`猜你喜欢 ${t+1}`,play_count:8e3+t*873,img_type:t%3==1?`long`:`short`}))}export{i as buildEditorPreviewRecommendList,r as editorPreviewInformation};
@@ -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(``);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};
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};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -6,18 +6,6 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
  /**
7
7
  * 推荐模块客户端组件。
8
8
  */
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;
9
+ declare function VideoDetailRecommendClient(props: VideoDetailRecommendProps): react_jsx_runtime0.JSX.Element | null;
22
10
  //#endregion
23
11
  export { VideoDetailRecommendClient };
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -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/video_guess_you_like.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/grid_waterfall_two_column.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(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};
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};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{useRequest as n}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as r}from"../../../../common/keep-scroll-position/index.mjs";import{useCardDecoration as i}from"../../../../../hooks/use-card-decoration.mjs";import{buildEditorPreviewRecommendList as a}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as o}from"../shared/runtime-context-provider.mjs";import{applyPlayCountDelta as s,clampColumns as c,mergeManualAndPool as ee,normalizeRecommendRuntimeProps as te,resolveRows as ne}from"./utils.mjs";import{useCallback as re,useEffect as l,useMemo as u,useState as ie}from"react";function d({rows:d,columns:f,smartTagEnabled:h,smartTagIds:g,title:fe,showPlayCount:pe,playCountDelta:me,showEpisode:he,enableInfinite:ge,items:v,mode:y=`renderer`}){let b=o()?.detailId||``,x=y===`editor`,S=x,{getVerticalHoCoverImageUrl:C,getTitleText:w}=i(),T=u(()=>te({smartTagEnabled:h,smartTagIds:g,enableInfinite:ge,items:v}),[ge,v,h,g]),E=T.smartTagEnabled,D=T.smartTagIds,O=u(()=>T.items??[],[T.items]),k=T.enableInfinite&&!x,A=!E,j=k&&E&&!S,_e=ne(d,k),M=c(f),N=_e*M,P=Math.max(1,N),F=u(()=>[`video-detail-recommend`,b||`unknown`,P,D.join(`,`)].join(`:`),[b,P,D]),[ve,I]=r(`${F}:pool`,[]),[L,R]=r(`${F}:has-more`,!1),[z,B]=ie(!1),V=u(()=>a(N),[N]),{data:H,isFetching:ye,isPending:be}=n([`video-detail-recommend`,b,j?`paged`:`all`,P,D.join(`,`)],async()=>S?null:await e({page_size:P,tags:D}),{enabled:!S&&E,refetchOnMount:`always`}),U=u(()=>S?V:p(H?.data?.videos),[H?.data?.videos,V,S]);l(()=>{if(!j){B(!1);return}I(e=>{if(!U.length)return e;if(!e.length)return U;let t=[...U],n=new Set(U.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=m(H?.data?.videos,P);R(t=>t||e),B(!1)},[H?.data?.videos,U,P,R,I,j]);let W=j?ve:U,G=u(()=>A?Array.from(new Set(O.map(e=>_(e.contentId)).filter(Boolean))):[],[O,A]),{data:K,isFetching:xe,isPending:Se}=n([`video-detail-recommend-manual-details`,G.join(`,`)],async()=>{if(!G.length)return[];let e=await t({ids:G});return(Array.isArray(e.data?.videos)?e.data.videos:[]).map(e=>ae(e))},{enabled:G.length>0,refetchOnMount:`always`}),q=u(()=>A?new Set(O.map(e=>_(e.contentId)).filter(Boolean)):new Set,[O,A]),J=u(()=>S?W:W.filter(e=>!q.has(e.id)),[W,S,q]),Y=u(()=>{if(!A||!O.length)return[];let e=new Map;return W.forEach(t=>{let n=_(t.id);n&&e.set(n,t)}),(K||[]).forEach(t=>{let n=_(t.id);n&&e.set(n,t)}),O.map((t,n)=>{let r=S?V[n%Math.max(1,V.length)]:le(t,n),i=_(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},s=t.titleMode===`custom`?t.title:w(o),c=t.coverMode===`content`?C(o)||a:a||C(o);return{info:{...o,name:s||o.name,img_y:c||o.img_y,img_x:c||o.img_x},config:{showPlayCount:t.showPlayCount,playCountDelta:t.playCountDelta,showEpisode:t.showEpisode}}}).filter(Boolean)},[V,W,w,C,S,K,O,A]),X=u(()=>J.map(e=>({info:e})),[J]),Ce=A&&O.length>0,we=u(()=>Ce?Y:ee(Y,X,N),[Ce,Y,N,X]),Z=u(()=>{if(j||k){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 we},[we,Y,X,k,j]),Q=L&&Z.length>0?Math.max(0,Z.length-4):-1,$=Q>=0?`${F}:${Q}`:``,Te=String(fe||``).trim(),Ee=re(async()=>{if(!(!j||!L||z)){B(!0);try{let t=await e({page_size:P,tags:D}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=p(n),i=0;I(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}),R(m(n,P)&&i>0)}catch(e){console.error(`猜你喜欢分页加载失败`,e),R(!1)}finally{B(!1)}}},[L,z,P,D,R,I,j]);l(()=>{if(!$||!L||z||!j)return;let e=document.querySelector(`[data-detail-recommend-trigger="${$}"]`);if(!(e instanceof HTMLElement))return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!z&&Ee()});return t.observe(e),()=>{t.disconnect()}},[Ee,L,z,j,$]);let De=!S&&(z||E&&(ye||be)||G.length>0&&(xe||Se));return{uiItems:u(()=>Z.map((e,t)=>{let n=pe!==!1&&(e.config?.showPlayCount??!0),r=Number(e.config?.playCountDelta??me??0),i=e.config?.showEpisode??he;return{sourceIndex:t,info:e.info,title:w(e.info),coverUrl:C(e.info),detailPath:y===`renderer`?ce(e.info):``,playCountText:se(s(e.info.play_count||0,r)),videoInfoText:oe(e.info),showPlayCount:n,showEpisode:i,score:ue(e.info.score),cardKind:de(e.info)}}),[Z,w,C,y,me,he,pe]),shouldShowLoading:De,isPreview:S,resolvedColumns:M,resolvedModuleTitle:Te,triggerIndex:Q,triggerMarker:$}}function f(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 p(e){return Array.isArray(e)?e.map(e=>f(e)):[]}function ae(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 m(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 oe(e){if(h(e)){let t=Number(e.episode_cnt||e.links?.length||0);return t>0?`全${t}集`:``}return g(Number(e.duration||0))}function h(e){return e.is_more_link===`y`}function g(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 se(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 ce(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}function _(e){return typeof e==`string`?e.trim():``}function le(e,t){let n=_(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:``}}function ue(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){return String(e.img_type??``).trim().toLowerCase()===`long`?`short`:`tall`}export{d as useVideoDetailRecommendData};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -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
- * 顶部-头像&搜索框。
8
+ * 顶部功能样式3:头像、搜索条、菜单。
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{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};
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};
@@ -6,9 +6,10 @@ 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
- * 顶部-头像&搜索框&logo:
10
- * - logoSrc:可配置 logo 图片地址(为空时使用内置 SVG)
11
- * - logoHref:可配置 logo 点击跳转地址
9
+ * 顶部-头像&搜索词&菜单:
10
+ * - 为兼容历史数据,沿用 logoSrc / logoHref 字段名
11
+ * - logoSrc:可配置右侧菜单图标地址(为空时仅保留占位)
12
+ * - logoHref:可配置右侧菜单点击跳转地址
12
13
  */
13
14
  declare const headerAvatarLogoSearchInspectorPropsSchema: zod.ZodObject<{
14
15
  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(`/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};
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};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -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{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};
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};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Image as t}from"../../../../ui/image.mjs";import{jsx as n}from"react/jsx-runtime";import r from"next/link";function i(i){let{ariaLabel:a,fallbackIcon:o,href:s,imageAlt:c=`header-action`,imageClassName:l,imageSrc:u,className:d}=i;return n(r,{href:s,"aria-label":a,className:e(`relative flex shrink-0 items-center justify-center text-text1`,d),children:u?n(t,{src:u,alt:c,fill:!0,sizes:`40px`,className:e(`object-cover`,l)}):o})}export{i as HeaderAction};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import t from"../../../../../assets/icons/common/header-search-icon.mjs";import{jsx as n}from"react/jsx-runtime";import r from"next/link";function i(i){let{ariaLabel:a=`打开搜索页`,href:o=`/search`,className:s,iconClassName:c}=i;return n(r,{href:o,"aria-label":a,className:e(`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-text1`,s),children:n(t,{className:e(`h-[24px] w-[24px]`,c),"aria-hidden":!0})})}export{i as HeaderSearchIcon};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Box as t}from"../../../../ui/box.mjs";import{jsx as n}from"react/jsx-runtime";function r(r){let{children:i,className:a,mode:o=`renderer`}=r;return n(t,{as:`header`,className:e(`flex items-center px-[16px] pt-[8px] pb-[16px]`,o===`editor`&&`pointer-events-none`,a),children:i})}export{r as HeaderShell};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -28,14 +28,6 @@ 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>>;
39
31
  ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
40
32
  ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
41
33
  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: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};
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};
@@ -28,14 +28,6 @@ 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>>;
39
31
  ad_advertise_url: zod.ZodOptional<zod.ZodString>;
40
32
  ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
41
33
  badge_url: zod.ZodOptional<zod.ZodString>;
@@ -26,14 +26,6 @@ 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>>;
37
29
  ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
38
30
  ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
39
31
  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: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};
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};
@@ -26,14 +26,6 @@ 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>>;
37
29
  ad_advertise_url: zod.ZodOptional<zod.ZodString>;
38
30
  ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
39
31
  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{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};
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};
@@ -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/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};
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};
@@ -0,0 +1,17 @@
1
+
2
+ import { InferSchemaProps } from "../../../../utils/schema/schema.mjs";
3
+ import "../../../../utils.mjs";
4
+ import { hotRecommendInspectorPropsSchema } from "./schema.mjs";
5
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
+
7
+ //#region components/biz/business/hot-recommend/client.d.ts
8
+ type HotRecommendProps = InferSchemaProps<typeof hotRecommendInspectorPropsSchema>;
9
+ interface ClientProps extends HotRecommendProps {
10
+ onItemClick?: (keyword: string) => void;
11
+ }
12
+ /**
13
+ * 热门推荐物料组件 - 客户端部分
14
+ */
15
+ declare function HotRecommendClient(props: ClientProps): react_jsx_runtime0.JSX.Element | null;
16
+ //#endregion
17
+ export { HotRecommendClient, HotRecommendProps };
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useCallback as r,useId as i,useMemo as a,useRef as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{usePathname as u,useSearchParams as d}from"next/navigation";const f=[];function p(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function m({className:e=``}){let t=i().replace(/:/g,``);return l(`svg`,{viewBox:`0 0 62.4481 14.192`,fill:`none`,"aria-hidden":!0,className:e,children:[l(`g`,{children:[c(`path`,{d:`M50.7201 4V3.04H47.9841V0.768H50.7201V0H53.3281V0.768H57.1201V0H59.7441V0.768H62.4481V3.04H59.7441V4H57.1201V3.04H53.3281V4H50.7201ZM48.1281 8.32C48.4587 8.32 48.8054 8.27733 49.1681 8.192C49.5307 8.096 49.8934 7.968 50.2561 7.808C50.6294 7.63733 50.9867 7.43467 51.3281 7.2C51.6801 6.95467 52.0054 6.688 52.3041 6.4H48.3041V4.464H53.5681C53.7067 4.112 53.7761 3.72267 53.7761 3.296H56.4641C56.4641 3.68 56.4107 4.06933 56.3041 4.464H62.1121V6.4H55.5041C55.4401 6.51733 55.3707 6.62933 55.2961 6.736C55.2321 6.832 55.1574 6.93867 55.0721 7.056H61.1841V7.536C61.1841 7.94133 61.1147 8.33067 60.9761 8.704C60.8481 9.07733 60.5921 9.39733 60.2081 9.664H62.3041V11.488H59.2801V11.696C59.2801 12.1653 59.2267 12.5547 59.1201 12.864C59.0134 13.1733 58.8534 13.4187 58.6401 13.6C58.4267 13.792 58.1601 13.9253 57.8401 14C57.5201 14.0747 57.1521 14.112 56.7361 14.112H54.7361V12.432H55.2481C55.5894 12.4213 55.8561 12.4 56.0481 12.368C56.2507 12.336 56.4001 12.288 56.4961 12.224C56.6027 12.16 56.6721 12.0853 56.7041 12C56.7361 11.9147 56.7521 11.8133 56.7521 11.696V11.488H53.2161V9.664H56.7521V9.44C57.2321 9.44 57.6267 9.39733 57.9361 9.312C58.2454 9.216 58.4747 9.04 58.6241 8.784H54.4641V7.856C54.1547 8.208 53.8187 8.544 53.4561 8.864C53.1041 9.17333 52.7254 9.456 52.3201 9.712V14.176H49.7761V10.784C49.2534 10.912 48.7041 10.976 48.1281 10.976V8.32Z`,fill:`url(#${t})`}),c(`path`,{d:`M40.3361 0.0159912C40.3361 0.805325 40.2614 1.53066 40.1121 2.19199H46.3841V4.28799H44.3361V5.45599H46.1601V7.31199H44.3361V8.47999H46.1601V10.352H44.3361V11.648H46.4961V13.968H40.1121V14.192H37.5681V5.63199C37.3441 5.69599 37.1201 5.72799 36.8961 5.72799V2.92799C37.2694 2.92799 37.5361 2.68799 37.6961 2.20799C37.8561 1.72799 37.9361 0.997325 37.9361 0.0159912H40.3361ZM33.2641 0.0159912H35.6641V2.20799H36.6721V4.57599H35.6641V6.20799L36.6881 6.09599V8.47999L35.6641 8.62399V10.992C35.6641 11.408 35.6427 11.8027 35.6001 12.176C35.5574 12.56 35.4507 12.8907 35.2801 13.168C35.1201 13.456 34.8801 13.68 34.5601 13.84C34.2401 14.0107 33.8081 14.096 33.2641 14.096H32.1921V11.872H32.6241C32.9014 11.872 33.0774 11.7973 33.1521 11.648C33.2267 11.488 33.2641 11.184 33.2641 10.736V8.97599L31.9841 9.15199V6.63999L33.2641 6.49599V4.57599H32.0641V2.20799H33.2641V0.0159912ZM41.6001 0.0159912H44.4161L44.4641 1.90399H41.6481L41.6001 0.0159912ZM40.1121 5.45599H41.8881V4.28799H40.1121V5.45599ZM40.1121 8.47999H41.8881V7.31199H40.1121V8.47999ZM40.1121 11.648H41.8881V10.352H40.1121V11.648Z`,fill:`url(#${t})`}),c(`path`,{d:`M16.6721 2.49599L16.6081 0.0159912H19.8401L19.9041 2.49599H16.6721ZM24.9601 14.192V11.68H25.7121C26.0427 11.68 26.2987 11.6587 26.4801 11.616C26.6721 11.5733 26.8161 11.4987 26.9121 11.392C27.0081 11.2747 27.0667 11.12 27.0881 10.928C27.1094 10.736 27.1201 10.4907 27.1201 10.192V2.68799H20.8001V0.175991H29.9521V10.448C29.9521 11.2267 29.8827 11.8613 29.7441 12.352C29.6161 12.8427 29.3921 13.2213 29.0721 13.488C28.7521 13.7653 28.3201 13.952 27.7761 14.048C27.2321 14.144 26.5494 14.192 25.7281 14.192H24.9601ZM16.5441 14.192V3.23199H19.3761V14.192H16.5441Z`,fill:`url(#${t})`}),c(`path`,{d:`M6.48499e-05 7.18399V5.10399L1.87206 5.02399V3.82399H0.176065V1.45599H1.87206V0.0159912H4.25607V1.45599H6.00007V3.82399H4.25607V4.91199L5.84007 4.84799V6.92799L4.25607 6.99199V8.36799C4.25607 8.73066 4.22407 9.06132 4.16007 9.35999C4.09607 9.65866 3.97873 9.91466 3.80806 10.128C3.64807 10.3413 3.41873 10.5067 3.12007 10.624C2.83207 10.7413 2.45873 10.8 2.00006 10.8H0.592065V8.68799H1.05606C1.24806 8.68799 1.3974 8.66666 1.50406 8.62399C1.6214 8.58132 1.70673 8.52266 1.76006 8.44799C1.8134 8.36266 1.8454 8.26666 1.85606 8.15999C1.86673 8.04266 1.87206 7.91999 1.87206 7.79199V7.10399L6.48499e-05 7.18399ZM13.8081 10.864C12.7627 10.864 12.0054 10.624 11.5361 10.144C11.0774 9.66399 10.8481 8.86933 10.8481 7.75999V3.82399H9.84007V4.87999V5.02399H10.5121V6.68799H9.76007C9.6854 7.46666 9.55206 8.12266 9.36006 8.65599C9.17873 9.18932 8.9174 9.62133 8.57607 9.95199C8.2454 10.2827 7.8294 10.5227 7.32807 10.672C6.82673 10.8213 6.2294 10.896 5.53607 10.896V8.79999C5.8774 8.79999 6.1654 8.76799 6.40007 8.70399C6.6454 8.63999 6.84273 8.52799 6.99207 8.36799C7.1414 8.20799 7.25873 7.99466 7.34407 7.72799C7.4294 7.45066 7.48807 7.10399 7.52007 6.68799H6.35207V5.02399H7.58406V4.84799V3.82399H6.44807V1.45599H7.60007V0.0159912H9.85606V1.45599H13.2321V7.24799C13.2321 7.66399 13.2747 7.92533 13.3601 8.03199C13.4561 8.13866 13.6321 8.19199 13.8881 8.19199H14.3521V10.864H13.8081ZM0.144065 14.192L0.256065 11.232H3.21606L3.10406 14.192H0.144065ZM11.3921 14.192L11.2481 11.232H14.2241L14.3681 14.192H11.3921ZM4.17606 14.192L4.03207 11.296H6.73607L6.86407 14.192H4.17606ZM7.77607 14.192L7.63207 11.296H10.3841L10.5121 14.192H7.77607Z`,fill:`url(#${t})`})]}),c(`defs`,{children:l(`linearGradient`,{id:t,x1:`33.7161`,y1:`-4.59601`,x2:`60.7161`,y2:`18.404`,gradientUnits:`userSpaceOnUse`,children:[c(`stop`,{stopColor:`#E914E9`}),c(`stop`,{offset:`1`,stopColor:`#6C43EE`})]})})]})}function h({className:e=``}){return c(`svg`,{viewBox:`0 0 16.6667 16.6667`,fill:`none`,"aria-hidden":!0,className:e,children:c(`path`,{d:`M8.33333 1.66667C6.04287 1.66667 4.0209 2.82188 2.82036 4.58333H5V6.25H0V1.25H1.66667V3.3328C3.18651 1.30972 5.60637 0 8.33333 0C12.9357 0 16.6667 3.73096 16.6667 8.33333H15C15 4.65143 12.0152 1.66667 8.33333 1.66667ZM1.66667 8.33333C1.66667 12.0152 4.65143 15 8.33333 15C10.6238 15 12.6458 13.8447 13.8463 12.0833H11.6667V10.4167H16.6667V15.4167H15V13.3338C13.4802 15.3569 11.0603 16.6667 8.33333 16.6667C3.73096 16.6667 0 12.9357 0 8.33333H1.66667Z`,fill:`currentColor`})})}function g({variant:e,className:t=``}){let n=i().replace(/:/g,``),r=e===`gold`?`#FFF047`:`#D7D7D7`;return l(`svg`,{viewBox:`0 0 10 8`,fill:`none`,"aria-hidden":!0,className:t,children:[c(`path`,{d:`M0.72289 1.44405L2.67531 2.6057L4.62168 0.173795C4.77092 -0.0126857 5.06132 -0.0558774 5.27027 0.0773202C5.31202 0.103935 5.34852 0.136533 5.37837 0.173795L7.32476 2.6057L9.27714 1.44405C9.49083 1.31693 9.77946 1.36845 9.92192 1.55913C9.98315 1.64113 10.0097 1.73991 9.99682 1.83779L9.23283 7.63352C9.20526 7.84249 9.00682 8 8.77105 8H1.22899C0.99323 8 0.794784 7.84249 0.767236 7.63352L0.00322932 1.83779C-0.0267734 1.61019 0.155642 1.40398 0.410663 1.3772C0.520333 1.36569 0.631013 1.38938 0.72289 1.44405ZM5.00005 5.51033C5.51357 5.51033 5.92993 5.13878 5.92993 4.68043C5.92993 4.22209 5.51357 3.85054 5.00005 3.85054C4.48647 3.85054 4.07016 4.22209 4.07016 4.68043C4.07016 5.13878 4.48647 5.51033 5.00005 5.51033Z`,fill:`url(#${n})`}),c(`defs`,{children:l(`linearGradient`,{id:n,x1:`5`,y1:`0`,x2:`5`,y2:`8`,gradientUnits:`userSpaceOnUse`,children:[c(`stop`,{stopColor:r}),c(`stop`,{offset:`1`,stopColor:r,stopOpacity:`0`})]})})]})}function _(i){let{title:_,displayCount:v=4,items:y=f,onItemClick:b,mode:x=`renderer`}=i,S=x===`editor`,C=e(),w=u(),T=d(),E=_.trim()||`热门推荐`,D=Math.max(1,v||0),[O,k]=s(0),[A,j]=s(!1),M=o(null),N=r(()=>{A||(j(!0),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{k(e=>e+1),j(!1),M.current=null},500))},[A]),P=a(()=>p(y,D),[D,y,O]);if(y.length===0)return null;let F=e=>{if(b){b(e);return}let t=new URLSearchParams(T.toString());t.set(`q`,e);let n=w.includes(`/search-result`)?w:`/search-result`;C.push(`${n}?${t.toString()}`)};return l(t,{className:`relative mx-[16px] mt-[24px] overflow-hidden rounded-[12px] bg-black${S?` pointer-events-none`:``}`,children:[c(t,{className:`pointer-events-none absolute inset-0 rounded-[12px]`,style:{background:`linear-gradient(180deg, #9756E3 0%, #6C43EE 100%), linear-gradient(180deg, rgba(255,30,255,0.7) 0%, rgba(108,67,238,0) 100%)`,padding:`0.5px`,WebkitMask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,WebkitMaskComposite:`xor`,mask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,maskComposite:`exclude`}}),c(t,{className:`pointer-events-none absolute inset-x-0 top-0 rounded-t-[12px] mix-blend-plus-lighter`,style:{height:`259px`,background:`linear-gradient(180deg, rgba(151,86,227,0.4) 0%, rgba(151,86,227,0) 85%)`}}),l(t,{className:`relative px-[24px] pb-[18px] pt-[22px]`,children:[l(t,{className:`flex items-center justify-between`,children:[E===`热门推荐`?c(m,{className:`h-[14.192px] w-[62.448px] shrink-0`}):c(n,{className:`shrink-0 bg-[linear-gradient(90deg,#E914E9_0%,#6C43EE_100%)] bg-clip-text font-["PingFang_SC"] text-[16px] font-semibold leading-none text-transparent`,children:E}),c(`button`,{type:`button`,"aria-label":`刷新`,className:`flex h-[20px] w-[20px] shrink-0 items-center justify-center text-white/40 transition-opacity active:opacity-70`,onClick:N,children:c(h,{className:`h-[16.6667px] w-[16.6667px] ${A?`animate-spin`:``}`})})]}),c(t,{className:`mt-[7px]`,children:P.map((e,r)=>{let i=r<3,a=r<2,o=i?`text-[#C922EF]`:`text-white/70`,s=i?`text-white/90`:`text-white/70`;return l(t,{children:[l(`button`,{type:`button`,className:`flex h-[48px] w-full items-center gap-[4px] text-left transition-opacity active:opacity-70`,onClick:()=>F(e.label),children:[l(t,{className:`relative flex h-[24px] w-[20px] shrink-0 items-end justify-center`,children:[a?c(g,{variant:r===0?`gold`:`silver`,className:`absolute left-1/2 top-0 h-[8px] w-[10px] -translate-x-1/2`}):null,c(n,{className:`font-['DIN_Black'] text-[14px] font-normal not-italic leading-[24px] ${o}`,children:r+1})]}),c(n,{className:`min-w-0 flex-1 truncate font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] ${s}`,children:e.label})]}),r<P.length-1?c(t,{className:`h-px w-full bg-white/[0.08]`}):null]},`${e.label}-${r}`)})})]})]})}export{_ as HotRecommendClient};
@@ -0,0 +1,5 @@
1
+
2
+ import { hotRecommendInspectorPropsSchema } from "./schema.mjs";
3
+ import { HotRecommendClient, HotRecommendProps } from "./client.mjs";
4
+ import { HotRecommendServer } from "./server.mjs";
5
+ import { hotRecommendMaterial } from "./material.mjs";