@funhub/platform 0.2.28 → 0.2.30
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.
- package/dist/biz.d.mts +6 -4
- package/dist/biz.mjs +1 -1
- package/dist/cli/init/create-client.mjs +1 -1
- package/dist/cli/init/shared/constants.mjs +1 -1
- package/dist/cli/init/shared/create-project.mjs +1 -1
- package/dist/cli/init/shared/prompts.mjs +1 -1
- package/dist/cli/init/shared/template.mjs +1 -1
- package/dist/cli.mjs +2 -2
- package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
- package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-match.d.mts +0 -7
- package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
- package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
- package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +0 -3
- package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +0 -6
- package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
- package/dist/components/biz/business/channel-list/client.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
- package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +1 -1
- package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
- package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
- package/dist/components/biz/business/index.d.mts +5 -3
- package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
- package/dist/components/biz/business/marquee/client.mjs +1 -1
- package/dist/components/biz/business/profile/index.d.mts +5 -3
- package/dist/components/biz/business/profile/profile-header/client.d.mts +4 -2
- package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/index.d.mts +4 -2
- package/dist/components/biz/business/profile/profile-header/material.d.mts +48 -6
- package/dist/components/biz/business/profile/profile-header/material.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/my-client.d.mts +12 -0
- package/dist/components/biz/business/profile/profile-header/my-client.mjs +2 -0
- package/dist/components/biz/business/profile/profile-header/my-profile-actions.mjs +2 -0
- package/dist/components/biz/business/profile/profile-header/my-profile-header.mjs +2 -0
- package/dist/components/biz/business/profile/profile-header/schema.d.mts +15 -5
- package/dist/components/biz/business/profile/profile-header/schema.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/shared.mjs +2 -0
- package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/visitor-client.d.mts +12 -0
- package/dist/components/biz/business/profile/profile-header/visitor-client.mjs +2 -0
- package/dist/components/biz/business/profile/profile-header/visitor-profile-actions.mjs +2 -0
- package/dist/components/biz/business/profile/profile-header/visitor-profile-header.mjs +2 -0
- package/dist/components/biz/business/profile/profile-main/client.d.mts +2 -0
- package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/index.d.mts +2 -2
- package/dist/components/biz/business/profile/profile-main/material.d.mts +3 -0
- package/dist/components/biz/business/profile/profile-main/schema.d.mts +9 -3
- package/dist/components/biz/business/profile/profile-main/schema.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/shell.d.mts +7 -0
- package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.d.mts +5 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/editor-preview-waterfall.mjs +2 -0
- package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.d.mts +5 -1
- package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +5 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.d.mts +3 -0
- package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/variants.d.mts +28 -3
- package/dist/components/biz/business/profile/profile-main/variants.mjs +1 -1
- package/dist/components/biz/business/search-history/client.mjs +1 -1
- package/dist/components/biz/business/search-input/client.mjs +1 -1
- package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/biz/business/text-recommend/client.mjs +1 -1
- package/dist/components/common/analytics-init/page-lifecycle-tracker.mjs +1 -1
- package/dist/components/common/background-preview-modal/background-preview-modal.mjs +1 -1
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -1
- package/dist/components/common/popup-video/index.mjs +1 -1
- package/dist/components/common/series-episodes/index.mjs +1 -1
- package/dist/components/common/tab-bar/index.mjs +1 -1
- package/dist/components/common/top-nav-bar/client.mjs +1 -1
- package/dist/components/common/video-player/style.module.mjs +0 -4
- package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
- package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
- package/dist/components/pages/collection-add/page.mjs +1 -1
- package/dist/components/pages/edit/page.mjs +1 -1
- package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
- package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
- package/dist/components/pages/profile/layout.d.mts +2 -0
- package/dist/components/pages/profile/page.mjs +1 -1
- package/dist/components/pages/search/hot-recommend.mjs +1 -1
- package/dist/components/pages/search/hot-search.mjs +1 -1
- package/dist/components/pages/search/page-client.mjs +1 -1
- package/dist/components/pages/search/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
- package/dist/components/pages/search/top-header.mjs +1 -1
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search-result/search-tab.mjs +1 -1
- package/dist/components/pages/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search-result/top-header.mjs +1 -1
- package/dist/components/pages/settings/_components/settings.mjs +1 -1
- package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-recommend-item.mjs +1 -1
- package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/button.d.mts +2 -2
- package/dist/components/ui/empty.d.mts +1 -1
- package/dist/components/ui/item.d.mts +2 -2
- package/dist/components/ui/toggle.d.mts +1 -1
- package/dist/hooks/use-content-operate.mjs +1 -1
- package/dist/i18n/locales/en.mjs +1 -1
- package/dist/i18n/locales/zh-CN.mjs +1 -1
- package/dist/materials.d.mts +2 -2
- package/dist/materials.mjs +1 -1
- package/dist/service/advertisement.d.mts +0 -4
- package/dist/service/advertisement.mjs +1 -1
- package/dist/utils/common.mjs +1 -1
- package/dist/utils/http.mjs +1 -1
- package/dist/utils/tracking.d.mts +11 -3
- package/dist/utils/tracking.mjs +1 -1
- package/dist/utils/use-compatible-router.mjs +1 -1
- package/dist/utils.d.mts +2 -2
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
- package/theme.css +0 -47
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{decryptImageToUint8Array as e}from"../../../../../utils/decrypt-image-client.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gContentGetVideoDetail as n,pInteractionBrowse as r}from"../../../../../service/generated/client.mjs";import{uint8ArrayToBase64 as i}from"../../../../../utils/uint8.mjs";import{resolveM3u8Urls as a,resolveVideoPlayerSrc as o}from"../../../../common/video-player/process-m3u8-cache.mjs";import{useLoginModalStore as s}from"../../../../../store/modules/login-modal-store.mjs";import{batchQueryContentInteractions as c}from"../../../../../hooks/use-content-operate.mjs";import{
|
|
2
|
+
"use client";import{decryptImageToUint8Array as e}from"../../../../../utils/decrypt-image-client.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gContentGetVideoDetail as n,pInteractionBrowse as r}from"../../../../../service/generated/client.mjs";import{uint8ArrayToBase64 as i}from"../../../../../utils/uint8.mjs";import{resolveM3u8Urls as a,resolveVideoPlayerSrc as o}from"../../../../common/video-player/process-m3u8-cache.mjs";import{useLoginModalStore as s}from"../../../../../store/modules/login-modal-store.mjs";import{batchQueryContentInteractions as c}from"../../../../../hooks/use-content-operate.mjs";import{useCallback as l,useEffect as u,useRef as d}from"react";import{usePathname as f}from"next/navigation";import{useQueryClient as p}from"@tanstack/react-query";const m=new Map,h=new Map;function g(){if(typeof window>`u`)return!1;let e={open:!1};return window.dispatchEvent(new CustomEvent(`funhub:detail-series-popup-query`,{detail:e})),!!e.open}function _(){typeof window>`u`||window.dispatchEvent(new Event(`funhub:detail-series-popup-close`))}function v(e){let t=Math.floor(Number(e)||1);return t>0?t:1}function y(e){let t=typeof e==`string`?e:typeof window>`u`?``:window.location.pathname,n=String(t||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);if(r<0)return{detailId:``,currentSeriesNum:1,episodeIndex:0};let i=n[r+1]||``;try{let e=decodeURIComponent(i),t=n.slice(r+1),a=t.findIndex(e=>e===`episode`),o=v(a>=0?t[a+1]:t[2]);return{detailId:e,currentSeriesNum:o,episodeIndex:Math.max(0,o-1)}}catch{let e=n.slice(r+1),t=e.findIndex(e=>e===`episode`),a=v(t>=0?e[t+1]:e[2]);return{detailId:i,currentSeriesNum:a,episodeIndex:Math.max(0,a-1)}}}function b(e){for(;e.size>5;){let t=e.keys().next().value;if(!t)break;e.delete(t)}}function x(e){let t=e,n=t?.data?.video||t?.video||t;if(!(!n||typeof n!=`object`))return{...n,content_type:1,episode_cnt:n.links?.length||0}}function S(e){let t=String(e||``).trim();return t?[[`video-detail`,t]]:[]}function C(v){let{enabled:C=!0}=v,w=p(),T=y(f()).detailId,E=d({detailId:``}),D=d(null),O=d(new Map),k=d(new Map);u(()=>{E.current={detailId:T},D.current=null},[T]);let A=l(async e=>{let t=String(e||``).trim();if(!t)return;if(E.current.detailId===t&&E.current.information)return E.current.information;let r=m.get(t);if(r)return E.current={detailId:t,information:r},r;let i=S(t).map(e=>w.getQueryData(e)).map(x).find(Boolean);if(i)return E.current={detailId:t,information:i},m.set(t,i),i;if(D.current?.detailId===t)return await D.current.promise;if(h.has(t)){let e=await h.get(t);return e&&(E.current={detailId:t,information:e}),e}let a=n({id:t}).then(e=>{let n=x(e);if(n)return E.current={detailId:t,information:n},m.set(t,n),n});D.current={detailId:t,promise:a},h.set(t,a);try{return await a}finally{D.current?.detailId===t&&(D.current=null),h.get(t)===a&&h.delete(t)}},[w]),j=l(async t=>{let n=String(t||``).trim();if(!n)return``;let r=O.current.get(n);if(r)return r;let a=k.current.get(n);if(a)return await a;let o=(async()=>{try{let t=await e(n);if(!t)return``;let r=i(t.bytes);return O.current.delete(n),O.current.set(n,r),b(O.current),r}catch{return``}finally{k.current.delete(n)}})();return k.current.set(n,o),await o},[]),M=l(async e=>{let t=String(e||``).trim();if(!t)return``;let n=j(t),r,i=new Promise(e=>{r=setTimeout(()=>{e(``)},150)}),a=await Promise.race([n,i]);return r!==void 0&&clearTimeout(r),a},[j]),N=l(async()=>{let e;for(let t=0;t<2;t++){let t=y();if(e=await A(t.detailId),y().detailId===t.detailId)break}let t=y(),n=a(Array.isArray(e?.links)?e.links:[],t.currentSeriesNum),r=n[0]?await o(n[0]):``,i=e?.name||``,s=String(t.detailId||``).trim(),c=t.currentSeriesNum;return{poster:await M(String(e?.img_y||e?.img_x||e?.preview_images?.[0]||``).trim()),src:r,title:i,contentId:s,episode:c}},[A,M]),P=l(async()=>{if(!t.getState().isLogin)return null;let e=y();if(!e.detailId)return null;let n=await c([e.detailId],1);return n?.interaction_list?.[0]?n.interaction_list[0].browse_record:null},[]),F=l(async e=>{if(!t.getState().isLogin)return;let n=y();if(!n.detailId)return;let i=e.browse_episode||n.currentSeriesNum,a=Date.now(),o=String(e.browse_key||a);try{await r({app_id:0,content_type:1,content_id:n.detailId,browse_duration:Number(e.browse_duration||0),browse_episode:String(i),browse_key:o,browse_page_ts:a})}catch{console.error(`上报播放进度失败`)}},[]),I=l(()=>{let e=s.getState(),t=!!e.isOpen,n=g();return!t&&!n?!0:(t&&e.close(),n&&_(),!1)},[]);u(()=>{if(!C||typeof window>`u`)return;let e=window;return e.getVideoInfoAsync=N,e.getVideoBrowseRecordAsync=P,e.reportVideoProgress=F,e.guardWebViewNavigation=I,()=>{e.getVideoInfoAsync===N&&delete e.getVideoInfoAsync,e.getVideoBrowseRecordAsync===P&&delete e.getVideoBrowseRecordAsync,e.reportVideoProgress===F&&delete e.reportVideoProgress,e.guardWebViewNavigation===I&&delete e.guardWebViewNavigation}},[P,N,I,C,F])}export{C as useVideoDetailWebViewBridge};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetVisitorPermissionConfig as n,pContentMatchAds as r}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as i}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as a}from"../../../../../utils/helper.mjs";import{trackVideoEvent as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as ee}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as te}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as ne}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as re}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as m}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as ie}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as g}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as ae}from"next-intl";function T(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function oe(e){if(!e)return 0;for(let t of[`seconds`,`stay_seconds`,`play_seconds`,`watch_seconds`]){let n=T(e[t]);if(n>0)return n}for(let t of[`内容`,`content`,`video`,`视频`]){let n=e[t],r=T(n?.rule?.seconds);if(r>0)return r}for(let t of Object.values(e)){let e=T(t?.rule?.seconds);if(e>0)return e}return 0}function E(e){return C(D,{...e})}const D=_(({mode:n=`renderer`,information:a,isVideo:o,episodeIndex:s=0,resumeProgressSeconds:ee=0,className:ne=``})=>{let f=n===`editor`,p=t(e=>e.userId),m=b(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),h=b(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,a]),ie=d(),g=b(()=>h.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,h]),_=v(e=>{f||!g.length||ie.open(g,e)},[f,ie,g]),y=b(()=>({user_id:p,ad_type:`preroll`}),[p]),x=b(()=>{let e=Math.max(0,Number(s)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[s,a?.links]),{data:S,isLoading:ae,isFetched:T}=te(b(()=>[`detail-preroll-ad`,a.id,x,...i(y)],[a.id,x,y]),()=>r(y),{enabled:!f&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),oe=b(()=>({data:S?.data??null,isLoading:ae,isFetched:T}),[T,ae,S?.data]);return f?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?C(O,{information:a,episodeIndex:s,resumeProgressSeconds:ee,isEditor:f,prerollState:oe}):w(`div`,{className:e(`w-full`,ne),children:[w(c,{className:`mt-3 px-[12px] space-y-1`,children:[C(l,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),C(re,{medias:h,onItemClick:_})]}),C(u,{})]})});E.displayName=`DetailHero`;const O=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(k,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});O.displayName=`StableDetailPlayerBox`;function k({information:e,episodeIndex:r,resumeProgressSeconds:i,isEditor:l,prerollState:u}){let d=x(null),re=x(null),_=x(null),T=ae(`components.biz.business.detail`),E=t(e=>e.isLogin),D=t(e=>e.userId),O=ee(e=>e.open),k=ee(e=>e.isOpen),A=x(0),j=x(0),M=x(!1),N=x(!1),P=x(null),ue=x(!1),F=x(!1),de=x(!1),I=Math.max(0,Number(r)||0),fe=I+1,[pe,me]=S(!1),[L,R]=S(`main`),[he,z]=S(`auto`),[ge,B]=S(!1),[V,H]=S(!1),[_e,U]=S(!1),[ve,ye]=S(0),W=b(()=>e?.id,[e?.id]),G=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),be=b(()=>G.mid||G.id,[G.id,G.mid]),K=b(()=>{let e=G.links?.[I]?.id;return e?String(e):`ep-${I+1}`},[I,G.links]),q=b(()=>`__reportData_detail_page__${G.id}:${K}`,[K,G.id]),xe=u.data,Se=u.isLoading,Ce=u.isFetched,we=xe?.materials?.[0],Te=xe?.hit===!0,Ee=!!String(we?.advertise_video||``).trim(),J=Te&&!!we&&Ee,{data:Y}=te(b(()=>[`detail-visitor-permission-config`,D||`guest`],[D]),()=>n({user_id:D||``}),{enabled:!l,staleTime:60*1e3,refetchOnWindowFocus:!1}),X=b(()=>oe(Y?.data?.permission_config),[Y?.data?.permission_config]);y(()=>{ue.current||Y&&(ue.current=!0,console.log(`[visitor-limit] permission config:`,Y?.data?.permission_config||null),console.log(`[visitor-limit] resolved limit: ${X}s`))},[X,Y]);let De=b(()=>{if(l||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(q);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[l,q]),Oe=b(()=>{let e=Number(i||0);return Number.isFinite(e)&&e>0?e:0},[i]),ke=b(()=>Oe>0?Oe:De,[Oe,De]),Z=b(()=>{let t=le(e),n=t[t.length?Math.max(0,Math.min(I,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(G.img_width||0)||1,a=Number(G.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:se(i,a),aspectRatio:(i||1)/(a||1),poster:G.img_y||G.img_x||G.preview_images?.[0]||``}},[e.id,e.links,I,G.img_width,G.img_height,G.img_y,G.img_x,G.preview_images]),Ae=v((e,t)=>{if(A.current=e,j.current=t,E||X<=0||M.current){F.current||(F.current=!0,console.log(`[visitor-limit] skip: isLogin=${E}, limit=${X}, triggered=${M.current}`));return}if(e<X){let t=Math.max(0,Math.ceil(X-e));P.current!==t&&(P.current=t,console.log(`[visitor-limit] remaining: ${t}s`));return}M.current=!0,N.current=!0;try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`暂停视频失败:`,e)}O()},[E,O,X]);y(()=>{E&&(M.current=!1,N.current=!1,P.current=null,F.current=!1)},[E]),y(()=>{let e=de.current;if(de.current=k,!(!e||k||E)&&N.current)try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`登录弹窗关闭后暂停视频失败:`,e)}},[E,k]);let je=b(()=>Z.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:ke,preload:`none`}:{startTimeSeconds:ke},[ke,Z.videoUrl]);y(()=>{A.current=0,j.current=0,M.current=!1,N.current=!1,P.current=null,F.current=!1,ue.current=!1,de.current=!1},[W,I]),y(()=>{if(me(!1),H(!1),B(!1),U(!1),z(`auto`),ye(e=>e+1),l){R(`main`);return}if(J){R(`preroll`);return}R(`main`)},[W,K,l,G.id,J]),y(()=>()=>{_.current&&=(window.clearInterval(_.current),null)},[]),y(()=>{if(L!==`preroll`)return;let e=d.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[L,K,G.id]);let Me=v(e=>{let t=d.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),Ne=v(()=>{_.current&&=(window.clearInterval(_.current),null);let e=0;_.current=window.setInterval(()=>{e+=1;let t=d.current?.getPlayer?.();if(!t){e>=8&&_.current&&(window.clearInterval(_.current),_.current=null);return}_.current&&=(window.clearInterval(_.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Me(!0);if(!e){U(!0);return}e.play?.().then(()=>{U(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),U(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Me]),Pe=!l&&Ce&&!Se&&!V&&(!J||ge);y(()=>{!Pe||!pe||(U(!1),Ne())},[Ne,pe,Pe]);let Q=ne({contentId:W,browseEpisode:fe,contentType:1,enabled:!l&&!!W,intervalMs:60*1e3,getCurrentTimeSeconds:()=>A.current,getDurationSeconds:()=>j.current}),$=v(()=>{let t=j.current,n=A.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:K,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[K,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);v(()=>{Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$]),v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Q,$]);let Fe=v(()=>{if(V){let e=d.current?.getPlayer?.();e&&(e.currentTime=0)}B(!0),U(!1),z(`manual`),H(!1),R(`main`)},[V]),Ie=v(()=>{z(`manual`)},[]),Le=v(()=>{me(!0)},[]),Re=v(()=>{H(!1),U(!1)},[]),ze=v(()=>{if(!E&&N.current){try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`未登录拦截播放时暂停视频失败:`,e)}k||O();return}Re(),Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$,Re,E,k,O]),Be=v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),Ve=v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),J&&(H(!0),U(!1),B(!1),z(`manual`),ye(e=>e+1),R(`main`))},[Q,$,J]),He=J&&L===`main`&&(V||!ge&&he===`manual`),Ue=L===`main`&&_e,We=!l&&!Ce,Ge=We,Ke=Pe,qe=!We&&(!J||ge);async function Je(){J&&(H(!1),B(!1),z(`manual`),R(`preroll`),await re.current?.play?.()||R(`main`))}async function Ye(){let e=Me(!1);if(e)try{await e.play?.(),U(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(l)return;let e=()=>{if(!(typeof window>`u`)&&!(A.current<=0||j.current<=0))try{sessionStorage.setItem(q,JSON.stringify({episodeId:K,currentTime:A.current,duration:j.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[K,l,q]),!Z.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:T(`videoHero.noVideos`)});let Xe=ce(430,Z.aspectRatio,242),Ze=Xe.height>0?a(Xe.height):`auto`,Qe=Xe.height>0?`calc(${Ze} + 0px)`:`auto`,$e=a(242);return w(m,{value:d,children:[C(c,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Qe,maxWidth:`100%`,maxHeight:`calc(${$e} + 0px)`}}),w(c,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[Z.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Ze},children:[C(s,{src:Z.poster,alt:T(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(c,{suppressHydrationWarning:!0,"data-aspect-ratio":Z.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Ze,maxWidth:`100%`,maxHeight:$e,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[qe&&C(f,{ref:d,plyerId:`detail-player-${G.id}-${I}`,parentId:be,...Ke?{autoplay:!0}:{autoplay:!1},resolution:Z.resolution||`0x0`,videoUrl:Z.videoUrl,poster:Z.poster,mergeConfig:je,onProgressUpdate:l?void 0:Ae,onPlay:l?void 0:ze,onPause:l?void 0:Be,onEnded:l?void 0:Ve,onPlayerReady:Le},`stable-player-${G.id}-${I}-${Ke?`default-autoplay`:`manual`}`),!l&&J&&C(ie,{ref:re,adData:xe,visible:L===`preroll`,autoStart:L===`preroll`&&he===`auto`,sessionKey:`${G.id}-${K}-${ve}`,onAutoplayBlocked:Ie,onFinish:Fe,onSkip:Fe}),He&&!Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Je()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ye()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ge&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:G.id,episode:fe}),C(g,{videoId:G.id,episode:fe})]})]})]})}function se(e,t){return!e||!t?``:`${e}x${t}`}function ce(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function le(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{E as DetailHero};
|
|
2
|
+
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetVisitorPermissionConfig as n,pContentMatchAds as r}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as i}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as a}from"../../../../../utils/helper.mjs";import{trackVideoEvent as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as ee}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as te}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as ne}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as re}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as m}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as ie}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as g}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as T}from"next-intl";function E(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function ae(e){if(!e)return 0;for(let t of[`seconds`,`stay_seconds`,`play_seconds`,`watch_seconds`]){let n=E(e[t]);if(n>0)return n}for(let t of[`内容`,`content`,`video`,`视频`]){let n=e[t],r=E(n?.rule?.seconds);if(r>0)return r}for(let t of Object.values(e)){let e=E(t?.rule?.seconds);if(e>0)return e}return 0}function D(e){return C(oe,{...e})}const oe=_(({mode:n=`renderer`,information:a,isVideo:o,episodeIndex:s=0,resumeProgressSeconds:ee=0,className:ne=``})=>{let f=n===`editor`,p=t(e=>e.userId),m=b(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),h=b(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,a]),ie=d(),g=b(()=>h.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,h]),_=v(e=>{f||!g.length||ie.open(g,e)},[f,ie,g]),y=b(()=>({user_id:p,ad_type:`preroll`}),[p]),x=b(()=>{let e=Math.max(0,Number(s)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[s,a?.links]),{data:S,isLoading:T,isFetched:E}=te(b(()=>[`detail-preroll-ad`,a.id,x,...i(y)],[a.id,x,y]),()=>r(y),{enabled:!f&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),ae=b(()=>({data:S?.data??null,isLoading:T,isFetched:E}),[E,T,S?.data]);return f?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?T?C(`div`,{className:`aspect-video w-full bg-background`}):C(O,{information:a,episodeIndex:s,resumeProgressSeconds:ee,isEditor:f,prerollState:ae}):w(`div`,{className:e(`w-full`,ne),children:[w(c,{className:`mt-3 px-[12px] space-y-1`,children:[C(l,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),C(re,{medias:h,onItemClick:_})]}),C(u,{})]})});D.displayName=`DetailHero`;const O=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(k,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});O.displayName=`StableDetailPlayerBox`;function k({information:e,episodeIndex:r,resumeProgressSeconds:i,isEditor:l,prerollState:u}){let d=x(null),re=x(null),_=x(null),E=T(`components.biz.business.detail`),D=t(e=>e.isLogin),oe=t(e=>e.userId),O=ee(e=>e.open),k=ee(e=>e.isOpen),A=x(0),j=x(0),M=x(!1),N=x(!1),P=x(null),ue=x(!1),F=x(!1),de=x(!1),I=Math.max(0,Number(r)||0),fe=I+1,[pe,me]=S(!1),[L,R]=S(`main`),[he,z]=S(`auto`),[ge,B]=S(!1),[V,H]=S(!1),[_e,U]=S(!1),[ve,ye]=S(0),W=b(()=>e?.id,[e?.id]),G=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),be=b(()=>G.mid||G.id,[G.id,G.mid]),K=b(()=>{let e=G.links?.[I]?.id;return e?String(e):`ep-${I+1}`},[I,G.links]),q=b(()=>`__reportData_detail_page__${G.id}:${K}`,[K,G.id]),xe=u.data,Se=u.isLoading,Ce=u.isFetched,we=xe?.materials?.[0],Te=xe?.hit===!0,Ee=!!String(we?.advertise_video||``).trim(),J=Te&&!!we&&Ee,{data:Y}=te(b(()=>[`detail-visitor-permission-config`,oe||`guest`],[oe]),()=>n({user_id:oe||``}),{enabled:!l,staleTime:60*1e3,refetchOnWindowFocus:!1}),X=b(()=>ae(Y?.data?.permission_config),[Y?.data?.permission_config]);y(()=>{ue.current||Y&&(ue.current=!0,console.log(`[visitor-limit] permission config:`,Y?.data?.permission_config||null),console.log(`[visitor-limit] resolved limit: ${X}s`))},[X,Y]);let De=b(()=>{if(l||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(q);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[l,q]),Oe=b(()=>{let e=Number(i||0);return Number.isFinite(e)&&e>0?e:0},[i]),ke=b(()=>Oe>0?Oe:De,[Oe,De]),Z=b(()=>{let t=le(e),n=t[t.length?Math.max(0,Math.min(I,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(G.img_width||0)||1,a=Number(G.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:se(i,a),aspectRatio:(i||1)/(a||1),poster:G.img_y||G.img_x||G.preview_images?.[0]||``}},[e.id,e.links,I,G.img_width,G.img_height,G.img_y,G.img_x,G.preview_images]),Ae=v((e,t)=>{if(A.current=e,j.current=t,D||X<=0||M.current){F.current||(F.current=!0,console.log(`[visitor-limit] skip: isLogin=${D}, limit=${X}, triggered=${M.current}`));return}if(e<X){let t=Math.max(0,Math.ceil(X-e));P.current!==t&&(P.current=t,console.log(`[visitor-limit] remaining: ${t}s`));return}M.current=!0,N.current=!0;try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`暂停视频失败:`,e)}O()},[D,O,X]);y(()=>{D&&(M.current=!1,N.current=!1,P.current=null,F.current=!1)},[D]),y(()=>{let e=de.current;if(de.current=k,!(!e||k||D)&&N.current)try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`登录弹窗关闭后暂停视频失败:`,e)}},[D,k]);let je=b(()=>Z.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:ke,preload:`none`}:{startTimeSeconds:ke},[ke,Z.videoUrl]);y(()=>{A.current=0,j.current=0,M.current=!1,N.current=!1,P.current=null,F.current=!1,ue.current=!1,de.current=!1},[W,I]),y(()=>{if(me(!1),H(!1),B(!1),U(!1),z(`auto`),ye(e=>e+1),l){R(`main`);return}if(J){R(`preroll`);return}R(`main`)},[W,K,l,G.id,J]),y(()=>()=>{_.current&&=(window.clearInterval(_.current),null)},[]),y(()=>{if(L!==`preroll`)return;let e=d.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[L,K,G.id]);let Me=v(e=>{let t=d.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),Ne=v(()=>{_.current&&=(window.clearInterval(_.current),null);let e=0;_.current=window.setInterval(()=>{e+=1;let t=d.current?.getPlayer?.();if(!t){e>=8&&_.current&&(window.clearInterval(_.current),_.current=null);return}_.current&&=(window.clearInterval(_.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Me(!0);if(!e){U(!0);return}e.play?.().then(()=>{U(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),U(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Me]),Pe=!l&&Ce&&!Se&&!V&&(!J||ge);y(()=>{!Pe||!pe||(U(!1),Ne())},[Ne,pe,Pe]);let Q=ne({contentId:W,browseEpisode:fe,contentType:1,enabled:!l&&!!W,intervalMs:60*1e3,getCurrentTimeSeconds:()=>A.current,getDurationSeconds:()=>j.current}),$=v(()=>{let t=j.current,n=A.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:K,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[K,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);v(()=>{Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$]),v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Q,$]);let Fe=v(()=>{if(V){let e=d.current?.getPlayer?.();e&&(e.currentTime=0)}B(!0),U(!1),z(`manual`),H(!1),R(`main`)},[V]),Ie=v(()=>{z(`manual`)},[]),Le=v(()=>{me(!0)},[]),Re=v(()=>{H(!1),U(!1)},[]),ze=v(()=>{if(!D&&N.current){try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`未登录拦截播放时暂停视频失败:`,e)}k||O();return}Re(),Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$,Re,D,k,O]),Be=v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),Ve=v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),J&&(H(!0),U(!1),B(!1),z(`manual`),ye(e=>e+1),R(`main`))},[Q,$,J]),He=J&&L===`main`&&(V||!ge&&he===`manual`),Ue=L===`main`&&_e,We=!l&&!Ce,Ge=We,Ke=Pe,qe=!We&&(!J||ge);async function Je(){J&&(H(!1),B(!1),z(`manual`),R(`preroll`),await re.current?.play?.()||R(`main`))}async function Ye(){let e=Me(!1);if(e)try{await e.play?.(),U(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(l)return;let e=()=>{if(!(typeof window>`u`)&&!(A.current<=0||j.current<=0))try{sessionStorage.setItem(q,JSON.stringify({episodeId:K,currentTime:A.current,duration:j.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[K,l,q]),!Z.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:E(`videoHero.noVideos`)});let Xe=ce(430,Z.aspectRatio,242),Ze=Xe.height>0?a(Xe.height):`auto`,Qe=Xe.height>0?`calc(${Ze} + 0px)`:`auto`,$e=a(242);return w(m,{value:d,children:[C(c,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Qe,maxWidth:`100%`,maxHeight:`calc(${$e} + 0px)`}}),w(c,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[Z.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Ze},children:[C(s,{src:Z.poster,alt:E(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(c,{suppressHydrationWarning:!0,"data-aspect-ratio":Z.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Ze,maxWidth:`100%`,maxHeight:$e,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[qe&&C(f,{ref:d,plyerId:`detail-player-${G.id}-${I}`,parentId:be,...Ke?{autoplay:!0}:{autoplay:!1},resolution:Z.resolution||`0x0`,videoUrl:Z.videoUrl,poster:Z.poster,mergeConfig:je,onProgressUpdate:l?void 0:Ae,onPlay:l?void 0:ze,onPause:l?void 0:Be,onEnded:l?void 0:Ve,onPlayerReady:Le},`stable-player-${G.id}-${I}-${Ke?`default-autoplay`:`manual`}`),!l&&J&&C(ie,{ref:re,adData:xe,visible:L===`preroll`,autoStart:L===`preroll`&&he===`auto`,sessionKey:`${G.id}-${K}-${ve}`,onAutoplayBlocked:Ie,onFinish:Fe,onSkip:Fe}),He&&!Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Je()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ye()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ge&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:G.id}),C(g,{videoId:G.id})]})]})]})}function se(e,t){return!e||!t?``:`${e}x${t}`}function ce(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function le(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{D as DetailHero};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useRequest as e}from"../../../../../hooks/query/use-query.mjs";import{batchQueryContentInteractions as t}from"../../../../../hooks/use-content-operate.mjs";import{DetailOperate as n}from"../shared/detail-operate.mjs";import{editorPreviewInformation as r}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as i}from"../shared/runtime-context-provider.mjs";import{useCallback as a,useEffect as o,useRef as s,useState as c}from"react";import{jsx as l}from"react/jsx-runtime";function u({mode:u=`renderer`}){let d=i(),f=d?.information,p=d?.onUpdateInformation,m=u===`editor`,h=u===`renderer`,g=m,_=g?r:f,[v,y]=c(_),b=s(_),x=s(``),S=s(!1);o(()=>{y(_)},[_]);let C=p?_:v;o(()=>{b.current=C},[C]);let w=h&&!!_?.id,{data:T}=e([`video-detail-actions-interaction`,_?.id],async()=>_?.id?await t([_.id],1):null,{enabled:w,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),E=a(e=>{if(!g){if(S.current=!0,p){p(e);return}y(t=>{if(!t)return t;let n=e.static?{...t.static||{},...e.static||{}}:t.static;return{...t,...e,static:n}})}},[p,g]);return o(()=>{if(S.current)return;let e=T?.interaction_list?.[0],t=b.current;if(!e||!t)return;let n=`${e.is_liked?1:0}-${e.is_disliked?1:0}-${e.is_collected?1:0}`;if(x.current===n)return;x.current=n;let r=e.is_liked||!1,i=e.is_disliked||!1,a=e.is_collected||!1,o=!!t.like,s=!!t.dislike,c=!!t.collect;o===r&&s===i&&c===a||E({like:r,dislike:i,collect:a})},[E,T]),C?l(`div`,{className:g?`pointer-events-none`:void 0,children:l(n,{mode:u,information:C,onUpdate:E})}):null}export{u as VideoDetailActionsClient};
|
|
2
|
+
"use client";import{useRequest as e}from"../../../../../hooks/query/use-query.mjs";import{batchQueryContentInteractions as t}from"../../../../../hooks/use-content-operate.mjs";import{DetailOperate as n}from"../shared/detail-operate.mjs";import{editorPreviewInformation as r}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as i}from"../shared/runtime-context-provider.mjs";import{useCallback as a,useEffect as o,useRef as s,useState as c}from"react";import{jsx as l}from"react/jsx-runtime";function u({mode:u=`renderer`}){let d=i(),f=d?.information,p=d?.onUpdateInformation,m=u===`editor`,h=u===`renderer`,g=m,_=g?r:f,[v,y]=c(_),b=s(_),x=s(``),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.like_count,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?{like_count: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 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
|
|
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 leading-[16px] ${c?`text-[#CA3FE9]`:`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`),videoTitle:r.name,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};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Box as e}from"../../../../ui/box.mjs";import t from"../../../../ui/loading.mjs";import{WaterfallRecommend as n}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{useVideoDetailRecommendData as r}from"./shared.mjs";import{useCallback as i,useMemo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(e){let t=[],n=[],r=0,i=0;return e.forEach(e=>{let a=(e.cardKind===`short`?142:216)+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,badgeImageUrl:e.badgeImageUrl,episodeText:e.showEpisode?e.videoInfoText:``,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
|
|
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`?142:216)+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,badgeImageUrl:e.badgeImageUrl,episodeText:e.showEpisode?e.videoInfoText:``,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
|
-
"use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../../service/generated/client.mjs";import{
|
|
2
|
+
"use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../../service/generated/client.mjs";import{Button as n}from"../../../../ui/button.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:t,userInfo:r}=e(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 t?h(_,{href:`/user/mine`,"aria-label":`打开个人主页`,className:`shrink-0`,children:u}):h(n,{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:n}){let{userInfo:r}=e(v(e=>({userInfo:e.userInfo}))),i=r?.user_id||`guest`,{data:a}=u([`header-search-hot-keyword`,i],()=>t({user_id:i}),{enabled:!n}),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};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{trackAdClick as n,trackAdImpression as r,trackAppPageView as i,trackPageClick as a,trackRecommendListClick as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import u from"../../../../ui/loading.mjs";import ee from"../../../../ui/link.mjs";import{useGridFirstRowHeight as d,useWaterfallFirstRowHeight as te}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as ne}from"../../../../../hooks/use-min-duration-loading.mjs";import re from"../../../../../assets/icons/common/right_arrow.mjs";import ie from"../../../../../assets/icons/common/right_arrow_thin.mjs";import ae from"../../../../../assets/icons/detail/video_flag.mjs";import{isFeedAdItem as f}from"../../advertisement/feed-ad/index.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as p,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as oe,normalizeRecommendBadgeUrl as m}from"../../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{WATERFALL_TALL_CARD_ASPECT_RATIO as h,buildWaterfallRecommendLegacyDisplay as se}from"../../../../common/list/waterfall-recommend/waterfall-recommend-display.mjs";import{WaterfallRecommend as g}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ce,HOME_RECOMMEND_DEFAULT_GRID_ROWS as le,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as ue,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as de,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as fe,HOME_RECOMMEND_DEFAULT_TITLE as pe,HOME_RECOMMEND_MAX_GRID_COLUMNS as me,HOME_RECOMMEND_MAX_GRID_ROWS as he}from"./home-recommend-default-config.mjs";import{buildHomeRecommendHeatText as _,resolveHomeRecommendBrowseCount as v}from"./home-recommend-play-count.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as y}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as ge}from"./home-recommend-smart-layout.mjs";import{limitPopularVideoPageItems as _e}from"./home-recommend-smart-tag.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ve}from"./home-recommend-video-detail.mjs";import{useCallback as b,useEffect as x,useLayoutEffect as ye,useMemo as S,useRef as C,useState as w}from"react";import{Fragment as be,jsx as T,jsxs as E}from"react/jsx-runtime";const xe={backgroundImage:`var(--gradient-card-mask-medium)`},Se={},Ce={list:[]},D=new Map,O=[];function we(e){if(e)return D.get(e)}function Te(e,t){if(!e||(D.has(e)||O.push(e),D.set(e,{items:[...t.items],cursor:t.cursor}),O.length<=120))return;let n=O.shift();n&&D.delete(n)}function Ee({variant:s,props:ae=Se,data:p=Ce,mode:oe=`renderer`}){let m=oe===`editor`,{list:h,title:se,cursor:_}=p,v=S(()=>Array.isArray(h)?h:[],[h]),y=S(()=>Array.isArray(p.icons)?p.icons:[],[p.icons]),{rows:xe,columns:D,moreLink:O,title:Ee,showPlayCount:Oe,playCountDelta:k,showEpisode:A,enableInfinite:Me,items:j,smartLayout:M}=ae,N=M?.enabled===!0,P=N&&ge(M?.sortRule),F=Me===!0&&N,I=!m&&F&&v.length>=16,L=S(()=>N||!Array.isArray(j)?``:j.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,j]),[R,Ne]=w(0),[z,B]=w(v),[Le,Re]=w(y),[ze,V]=w(()=>typeof _==`string`?_:void 0),[Be,Ve]=w(!1),He=C(null),Ue=C(null),We=C(null),Ge=C([]),H=C({left:null,right:null}),Ke=C(null),qe=C(!1),Je=C(new Set),U=C(new Map),Ye=C(!1),W=C(``),{isLoading:Xe,show:Ze,hide:Qe}=ne(600),$e=Ae(xe,le,he),G=Ae(D,ce,me),K=F?16:s===`grid`?$e*G:16,q=S(()=>[s,(()=>{if(!N||!M)return`manual:${L}`;if(P)return`smart:newest:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}`;let e=String(M.sortRule??``);return`smart:popular:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}:sr:${e}`})(),String(K)].join(`|`),[N,L,K,M,P,s]);x(()=>{B(v),Re(y),V(typeof _==`string`?_:void 0)},[_,y,v]);let et=$e*G,tt=m&&s===`grid`,J=tt?z.slice(0,et):z,nt=tt?Le.slice(0,et):Le,rt=s===`waterfall`?6:4,it=J.length>0?Math.max(0,J.length-rt):-1,at=!!ze;x(()=>{if(m)return;let e=J.filter(e=>f(e)).map(e=>e.ad?.ad_code||``).filter(Boolean).join(`,`);e&&r({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:e,ad_type:`feed`})},[J.length,m]);let ot=b(e=>{let t=e.ad?.ad_code||``;t&&n({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:t,ad_type:`feed`})},[]),Y=Ee&&Ee.trim()||se||pe;x(()=>{if(m)return;let e=Ke.current;if(!e)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!qe.current&&(qe.current=!0,i({page_key:`home`,page_name:`首页`,current_page_key:Y,current_page_name:Y}),t.disconnect())},{threshold:.5});return t.observe(e),()=>{t.disconnect()}},[m,Y,J.length]),x(()=>{let e=U.current;return()=>{e.forEach(e=>e.disconnect()),e.clear()}},[]);let st=b(e=>{let t=e.id||``;!t||Je.current.has(t)||(Je.current.add(t),i({page_key:`home`,page_name:`首页`,current_page_key:t,current_page_name:e.name||``}))},[]),ct=b((e,t)=>{if(f(e)){ot(e);return}o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,t,e.name||e.id||``)},[ot,Y]);function lt(){a(`home`,`首页`,null,`recommend_more`,{recommend_id:Y})}let X=Oe??fe,Z=Number(k??ue),Q=A??de,ut=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,dt=s===`grid`?ie:m?re:ie,ft=ke(O),pt=(s===`waterfall`||!F)&&!!ft,mt=pt?ft:``,ht=s===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`,gt=`size-[16px] text-text1`,_t=d({enabled:!m&&s===`grid`,containerRef:Ue,firstRowItemRef:Ge,columns:G,itemsCount:J.length,deps:[s]}),vt=te({enabled:!m&&s===`waterfall`,containerRef:He,firstRowRef:H,deps:[s,J.length]}),yt=s===`grid`?_t:vt,bt=b(async()=>{if(m||W.current===q)return;let e=we(q);if(e){B(e.items),N&&V(e.cursor);return}if(N||L){W.current=q;try{if(Ze(),!N){if(!L)return;let e=await ve(v);B(e),Te(q,{items:e});return}if(!M)return;let e=await t({page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},{cache:`no-store`}),n=_e(e.data?.videos,K),r=e.data?.cursor;B(n),V(r),Te(q,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{W.current===q&&(W.current=``),Qe()}}},[Qe,v,m,N,L,q,K,Ze,M]);x(()=>{bt()},[bt]);let xt=b(async()=>{let n=ze;if(!(!I||!n||Ye.current)){Ye.current=!0,Ve(!0);try{if(!M)return;let r={cursor:n,page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},i=P?await e(r):await t(r),a=Array.isArray(i.data?.videos)?i.data.videos:[],o=i.data?.cursor;a.length>0&&B(e=>e.concat(a)),V(e=>{if(!(!a.length||!o))return o===e?void 0:o})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),V(void 0)}finally{Ye.current=!1,Ve(!1)}}},[ze,K,I,M,P]);x(()=>{let e=We.current;if(!e||!I||!at)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||Be||xt()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[xt,at,Be,J.length,K,I,it]),ye(()=>{let e=He.current;if(!e||s!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Ne(t>0?(t-15)/2:0)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[s]);let $=S(()=>s===`waterfall`?Fe(J,nt,R):{left:[],right:[]},[R,nt,J,s]),St=S(()=>s===`waterfall`?{left:$.left.map(e=>Pe(e,X,Z,Q)),right:$.right.map(e=>Pe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,s,$.left,$.right]);if(x(()=>{s===`waterfall`&&($.left.length||(H.current.left=null),$.right.length||(H.current.right=null))},[s,$.left.length,$.right.length]),!J.length)return null;let Ct=!m&&Xe,wt=!m&&Be,Tt=yt>0?yt/2:160;return E(c,{ref:Ke,className:`w-full mt-[16px]`,children:[s===`grid`&&E(c,{className:`flex items-center justify-between no-vw-x-16 mb-[16px]`,children:[T(l,{className:ut,children:Y}),pt&&T(ee,{href:mt,"aria-label":`更多`,className:ht,onClick:lt,children:T(dt,{className:gt})})]}),s===`grid`&&E(c,{ref:Ue,className:`relative flex w-full flex-wrap items-start gap-[8px] no-vw-x-16`,children:[J.map((e,t)=>{let n=nt[t],r=je(e);return T(`div`,{ref:e=>{t===it&&(We.current=e),t<G&&(Ge.current[t]=e)},className:`w-[calc((100%-8px)/2)]`,children:T(De,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`},onContentClick:ct,onContentView:st})},Ie(e,t))}),Ct&&T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),Ct&&T(c,{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:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),s===`waterfall`&&T(g,{title:Y,moreHref:mt||void 0,onMoreClick:lt,moreIcon:pt?T(dt,{className:gt}):void 0,titleClassName:ut,moreLinkClassName:ht,columns:St,containerClassName:`relative flex w-full gap-[8px] no-vw-x-16`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{let{sourceIndex:i}=e;i===it&&(We.current=r),n===0&&(H.current[t]=r);let a=U.current.get(i);if(a&&(a.disconnect(),U.current.delete(i)),r&&!m){let e=J[i];if(e&&!f(e)){let t=new IntersectionObserver(n=>{n[0]?.isIntersecting&&(st(e),t.disconnect(),U.current.delete(i))},{threshold:.5});t.observe(r),U.current.set(i,t)}}},overlay:Ct?E(be,{children:[T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),T(c,{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:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0,onItemClick:e=>{let t=J[e.sourceIndex];t&&(f(t)?ot(t):(o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,null,t.name||t.id||``)))}}),wt&&T(c,{className:`w-full flex justify-center py-[12px]`,children:T(u,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function De({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c}){return T(Oe,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c})}function Oe({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:u,onContentView:d}){let te=C(null),ne=M(e,j(e)),re=e.name||e?.title||``,ie=e.id?k(e):`#`,g=se({title:re,badgeImageUrl:z(e,t,n),episodeText:I(e,a),heatText:r?_(v(e),i):``,score:P(e.score)}),ce=m(g.topLeftBadgeImageUrl);return x(()=>{let t=te.current;if(!t||!d||f(e))return;let n=new IntersectionObserver(t=>{t[0]?.isIntersecting&&(d(e),n.disconnect())},{threshold:.5});return n.observe(t),()=>{n.disconnect()}},[e,d]),T(ee,{href:ie,className:`block w-full`,onClick:t=>u?.(e,t),style:o,children:E(be,{children:[E(c,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:h},children:[ne&&T(s,{src:ne,alt:re||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),T(c,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:xe,"aria-hidden":!0}),ce&&T(c,{className:oe,children:T(s,{src:ce,alt:`角标`,width:96,height:18,className:p})}),g.topRightScoreText&&T(l,{as:`span`,className:`absolute right-[8px] top-[8px] z-10 shrink-0 text-[14px] leading-[22px] font-semibold text-[#FFC24B]`,children:g.topRightScoreText}),E(c,{className:`absolute left-[8px] right-[8px] bottom-[8px] z-10 flex items-end justify-between gap-[8px]`,children:[T(c,{className:`flex min-w-0 items-center gap-[4px]`,children:g.bottomLeftHeatText&&E(be,{children:[T(ae,{className:`h-[16px] w-[16px] shrink-0 text-white`}),T(l,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:g.bottomLeftHeatText})]})}),g.bottomRightEpisodeText&&T(l,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:g.bottomRightEpisodeText})]})]}),T(c,{className:`mt-[8px] h-[44px] overflow-hidden`,children:T(l,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:g.title})})]})})}function k(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ke(e){return e?e.trim():``}function Ae(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function je(e){return e[y]}function A(e){return typeof e==`string`?e:``}function Me(e){return typeof e==`string`?e.trim():``}function j(e){return Me(e.img_type).toLowerCase()===`long`?`short`:`tall`}function M(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function N(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?F(e,!0):``)}function P(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function F(e,t){return t?L(e)||Ne(Number(e.duration||0)):``}function I(e,t){return t?L(e):``}function L(e){if(!R(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function R(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 Ne(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 z(e,t,n){return A(e.badge_url)||A(t?.material_url)||``}function Pe(e,t,n,r){let i=j(e.item),a=M(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?k(e.item):`#`,c=z(e.item,e.icon,e.index),l=F(e.item,r),u=N(e.item,r),ee=t?_(v(e.item),n):``,d=P(e.item.score);return{key:Ie(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,episodeText:l,metaPrimaryText:u,heatText:ee,score:d}}function Fe(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=B(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 B(e,t){return e?(j(t)===`tall`?216:142)+16:0}function Ie(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{Ee as default};
|
|
2
|
+
"use client";import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{trackAdClick as n,trackAdImpression as r,trackAppPageView as i,trackPageClick as a,trackRecommendListClick as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import u from"../../../../ui/loading.mjs";import ee from"../../../../ui/link.mjs";import{useGridFirstRowHeight as d,useWaterfallFirstRowHeight as te}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as ne}from"../../../../../hooks/use-min-duration-loading.mjs";import re from"../../../../../assets/icons/common/right_arrow.mjs";import ie from"../../../../../assets/icons/common/right_arrow_thin.mjs";import ae from"../../../../../assets/icons/detail/video_flag.mjs";import{isFeedAdItem as f}from"../../advertisement/feed-ad/index.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as p,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as oe,normalizeRecommendBadgeUrl as m}from"../../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{WATERFALL_TALL_CARD_ASPECT_RATIO as h,buildWaterfallRecommendLegacyDisplay as se}from"../../../../common/list/waterfall-recommend/waterfall-recommend-display.mjs";import{WaterfallRecommend as g}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ce,HOME_RECOMMEND_DEFAULT_GRID_ROWS as le,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as ue,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as de,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as fe,HOME_RECOMMEND_DEFAULT_TITLE as pe,HOME_RECOMMEND_MAX_GRID_COLUMNS as me,HOME_RECOMMEND_MAX_GRID_ROWS as he}from"./home-recommend-default-config.mjs";import{buildHomeRecommendHeatText as _,resolveHomeRecommendBrowseCount as v}from"./home-recommend-play-count.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as y}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as ge}from"./home-recommend-smart-layout.mjs";import{limitPopularVideoPageItems as _e}from"./home-recommend-smart-tag.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ve}from"./home-recommend-video-detail.mjs";import{useCallback as b,useEffect as x,useLayoutEffect as ye,useMemo as S,useRef as C,useState as w}from"react";import{Fragment as be,jsx as T,jsxs as E}from"react/jsx-runtime";const xe={backgroundImage:`var(--gradient-card-mask-medium)`},Se={},Ce={list:[]},D=new Map,O=[];function we(e){if(e)return D.get(e)}function Te(e,t){if(!e||(D.has(e)||O.push(e),D.set(e,{items:[...t.items],cursor:t.cursor}),O.length<=120))return;let n=O.shift();n&&D.delete(n)}function Ee({variant:s,props:ae=Se,data:p=Ce,mode:oe=`renderer`}){let m=oe===`editor`,{list:h,title:se,cursor:_}=p,v=S(()=>Array.isArray(h)?h:[],[h]),y=S(()=>Array.isArray(p.icons)?p.icons:[],[p.icons]),{rows:xe,columns:D,moreLink:O,title:Ee,showPlayCount:Oe,playCountDelta:k,showEpisode:A,enableInfinite:Me,items:j,smartLayout:M}=ae,N=M?.enabled===!0,P=N&&ge(M?.sortRule),F=Me===!0&&N,I=!m&&F&&v.length>=16,L=S(()=>N||!Array.isArray(j)?``:j.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,j]),[R,Ne]=w(0),[z,B]=w(v),[Le,Re]=w(y),[ze,V]=w(()=>typeof _==`string`?_:void 0),[Be,Ve]=w(!1),He=C(null),Ue=C(null),We=C(null),Ge=C([]),H=C({left:null,right:null}),Ke=C(null),qe=C(!1),Je=C(new Set),U=C(new Map),Ye=C(!1),W=C(``),{isLoading:Xe,show:Ze,hide:Qe}=ne(600),$e=Ae(xe,le,he),G=Ae(D,ce,me),K=F?16:s===`grid`?$e*G:16,q=S(()=>[s,(()=>{if(!N||!M)return`manual:${L}`;if(P)return`smart:newest:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}`;let e=String(M.sortRule??``);return`smart:popular:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}:sr:${e}`})(),String(K)].join(`|`),[N,L,K,M,P,s]);x(()=>{B(v),Re(y),V(typeof _==`string`?_:void 0)},[_,y,v]);let et=$e*G,tt=m&&s===`grid`,J=tt?z.slice(0,et):z,nt=tt?Le.slice(0,et):Le,rt=s===`waterfall`?6:4,it=J.length>0?Math.max(0,J.length-rt):-1,at=!!ze;x(()=>{if(m)return;let e=J.filter(e=>f(e)).map(e=>e.ad?.ad_code||``).filter(Boolean).join(`,`);e&&r({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:e,ad_type:`feed`})},[J.length,m]);let ot=b(e=>{let t=e.ad?.ad_code||``;t&&n({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:t,ad_type:`feed`})},[]),Y=Ee&&Ee.trim()||se||pe;x(()=>{if(m)return;let e=Ke.current;if(!e)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!qe.current&&(qe.current=!0,i({page_key:`home`,page_name:`首页`,current_page_key:Y,current_page_name:Y}),t.disconnect())},{threshold:.5});return t.observe(e),()=>{t.disconnect()}},[m,Y,J.length]),x(()=>{let e=U.current;return()=>{e.forEach(e=>e.disconnect()),e.clear()}},[]);let st=b(e=>{let t=e.id||``;!t||Je.current.has(t)||(Je.current.add(t),i({page_key:`home`,page_name:`首页`,current_page_key:t,current_page_name:e.name||``}))},[]),ct=b((e,t)=>{if(f(e)){ot(e);return}o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,t,e.name||e.id||``)},[ot,Y]);function lt(){o({page_key:`home`,page_name:`首页`,recommend_id:Y,recommend_trace_info:`更多`})}let X=Oe??fe,Z=Number(k??ue),Q=A??de,ut=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,dt=s===`grid`?ie:m?re:ie,ft=ke(O),pt=(s===`waterfall`||!F)&&!!ft,mt=pt?ft:``,ht=s===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`,gt=`size-[16px] text-text1`,_t=d({enabled:!m&&s===`grid`,containerRef:Ue,firstRowItemRef:Ge,columns:G,itemsCount:J.length,deps:[s]}),vt=te({enabled:!m&&s===`waterfall`,containerRef:He,firstRowRef:H,deps:[s,J.length]}),yt=s===`grid`?_t:vt,bt=b(async()=>{if(m||W.current===q)return;let e=we(q);if(e){B(e.items),N&&V(e.cursor);return}if(N||L){W.current=q;try{if(Ze(),!N){if(!L)return;let e=await ve(v);B(e),Te(q,{items:e});return}if(!M)return;let e=await t({page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},{cache:`no-store`}),n=_e(e.data?.videos,K),r=e.data?.cursor;B(n),V(r),Te(q,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{W.current===q&&(W.current=``),Qe()}}},[Qe,v,m,N,L,q,K,Ze,M]);x(()=>{bt()},[bt]);let xt=b(async()=>{let n=ze;if(!(!I||!n||Ye.current)){Ye.current=!0,Ve(!0);try{if(!M)return;let r={cursor:n,page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},i=P?await e(r):await t(r),a=Array.isArray(i.data?.videos)?i.data.videos:[],o=i.data?.cursor;a.length>0&&B(e=>e.concat(a)),V(e=>{if(!(!a.length||!o))return o===e?void 0:o})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),V(void 0)}finally{Ye.current=!1,Ve(!1)}}},[ze,K,I,M,P]);x(()=>{let e=We.current;if(!e||!I||!at)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||Be||xt()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[xt,at,Be,J.length,K,I,it]),ye(()=>{let e=He.current;if(!e||s!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Ne(t>0?(t-15)/2:0)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[s]);let $=S(()=>s===`waterfall`?Fe(J,nt,R):{left:[],right:[]},[R,nt,J,s]),St=S(()=>s===`waterfall`?{left:$.left.map(e=>Pe(e,X,Z,Q)),right:$.right.map(e=>Pe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,s,$.left,$.right]);if(x(()=>{s===`waterfall`&&($.left.length||(H.current.left=null),$.right.length||(H.current.right=null))},[s,$.left.length,$.right.length]),!J.length)return null;let Ct=!m&&Xe,wt=!m&&Be,Tt=yt>0?yt/2:160;return E(c,{ref:Ke,className:`w-full mt-[16px]`,children:[s===`grid`&&E(c,{className:`flex items-center justify-between pl-[16px] pr-0 mb-[16px]`,children:[T(l,{className:ut,children:Y}),pt&&T(ee,{href:mt,"aria-label":`更多`,className:ht,onClick:lt,children:T(dt,{className:gt})})]}),s===`grid`&&E(c,{ref:Ue,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[J.map((e,t)=>{let n=nt[t],r=je(e);return T(`div`,{ref:e=>{t===it&&(We.current=e),t<G&&(Ge.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:T(De,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`},onContentClick:ct,onContentView:st})},Ie(e,t))}),Ct&&T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),Ct&&T(c,{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:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),s===`waterfall`&&T(g,{title:Y,moreHref:mt||void 0,onMoreClick:lt,moreIcon:pt?T(dt,{className:gt}):void 0,titleClassName:ut,moreLinkClassName:ht,columns:St,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{let{sourceIndex:i}=e;i===it&&(We.current=r),n===0&&(H.current[t]=r);let a=U.current.get(i);if(a&&(a.disconnect(),U.current.delete(i)),r&&!m){let e=J[i];if(e&&!f(e)){let t=new IntersectionObserver(n=>{n[0]?.isIntersecting&&(st(e),t.disconnect(),U.current.delete(i))},{threshold:.5});t.observe(r),U.current.set(i,t)}}},overlay:Ct?E(be,{children:[T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),T(c,{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:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0,onItemClick:e=>{let t=J[e.sourceIndex];t&&(f(t)?ot(t):(o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,null,t.name||t.id||``)))}}),wt&&T(c,{className:`w-full flex justify-center py-[12px]`,children:T(u,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function De({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c}){return T(Oe,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c})}function Oe({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:u,onContentView:d}){let te=C(null),ne=M(e,j(e)),re=e.name||e?.title||``,ie=e.id?k(e):`#`,g=se({title:re,badgeImageUrl:z(e,t,n),episodeText:I(e,a),heatText:r?_(v(e),i):``,score:P(e.score)}),ce=m(g.topLeftBadgeImageUrl);return x(()=>{let t=te.current;if(!t||!d||f(e))return;let n=new IntersectionObserver(t=>{t[0]?.isIntersecting&&(d(e),n.disconnect())},{threshold:.5});return n.observe(t),()=>{n.disconnect()}},[e,d]),T(ee,{href:ie,className:`block w-full`,onClick:t=>u?.(e,t),style:o,children:E(be,{children:[E(c,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:h},children:[ne&&T(s,{src:ne,alt:re||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),T(c,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:xe,"aria-hidden":!0}),ce&&T(c,{className:oe,children:T(s,{src:ce,alt:`角标`,width:96,height:18,className:p})}),g.topRightScoreText&&T(l,{as:`span`,className:`absolute right-[8px] top-[8px] z-10 shrink-0 text-[14px] leading-[22px] font-semibold text-[#FFC24B]`,children:g.topRightScoreText}),E(c,{className:`absolute left-[8px] right-[8px] bottom-[8px] z-10 flex items-end justify-between gap-[8px]`,children:[T(c,{className:`flex min-w-0 items-center gap-[4px]`,children:g.bottomLeftHeatText&&E(be,{children:[T(ae,{className:`h-[16px] w-[16px] shrink-0 text-white`}),T(l,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:g.bottomLeftHeatText})]})}),g.bottomRightEpisodeText&&T(l,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:g.bottomRightEpisodeText})]})]}),T(c,{className:`mt-[8px] h-[44px] overflow-hidden`,children:T(l,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:g.title})})]})})}function k(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ke(e){return e?e.trim():``}function Ae(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function je(e){return e[y]}function A(e){return typeof e==`string`?e:``}function Me(e){return typeof e==`string`?e.trim():``}function j(e){return Me(e.img_type).toLowerCase()===`long`?`short`:`tall`}function M(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function N(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?F(e,!0):``)}function P(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function F(e,t){return t?L(e)||Ne(Number(e.duration||0)):``}function I(e,t){return t?L(e):``}function L(e){if(!R(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function R(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 Ne(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 z(e,t,n){return A(e.badge_url)||A(t?.material_url)||``}function Pe(e,t,n,r){let i=j(e.item),a=M(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?k(e.item):`#`,c=z(e.item,e.icon,e.index),l=F(e.item,r),u=N(e.item,r),ee=t?_(v(e.item),n):``,d=P(e.item.score);return{key:Ie(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,episodeText:l,metaPrimaryText:u,heatText:ee,score:d}}function Fe(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=B(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 B(e,t){return e?(j(t)===`tall`?216:142)+16:0}function Ie(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{Ee as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as e,HOME_RECOMMEND_DEFAULT_GRID_ROWS as t,HOME_RECOMMEND_DEFAULT_TITLE as n,HOME_RECOMMEND_MAX_GRID_COLUMNS as r,HOME_RECOMMEND_MAX_GRID_ROWS as i}from"./home-recommend-default-config.mjs";const a=`/static/components-thumb/items_cover.png`,o=`__homeRecommendCardConfig`,s=[`东野圭吾作品:11字谜案`,`诡异纸嫁衣:深夜回魂`,`夜行者档案:无声证词`,`狐面新娘:冥婚谜局`,`赤焰长歌:风雪诛心`,`山海禁术:九尾秘闻`],c=[`烧脑悬疑`,`民俗怪谈`,`悬疑推理`,`东方奇幻`,`古风权谋`,`奇诡冒险`],l=[8.9,9.1,8.7,9.3,8.8,9],u=[``,`独播`,``,`巅峰榜·历史上榜`,``,`独播`],d=Array.from({length:60},(e,t)=>{let n=t%2==0,r=s[t%s.length],i=c[t%c.length],o=l[t%l.length],d=u[t%u.length],f=d?[{id:`preview-tag-${t+1}`,name:d}]:void 0,p={browse_cnt:
|
|
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,dynamicRecommendEnabled: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};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import t from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as n,pContentGetNewstVideoList as r,pContentGetPopularVideoList as i}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as a,pContentGetNewstVideoListKey as o,pContentGetPopularVideoListKey as s}from"../../../../service/generated/tanstack.mjs";import{Image as c}from"../../../ui/image.mjs";import{Box as l}from"../../../ui/box.mjs";import{Text as u}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as d,buildImageTextRecommendRemoteMap as f,getImageTextRecommendFixedIds as ee,resolveImageTextRecommendVideoId as te}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import{normalizeHomeRecommendSmartLayout as ne}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import re from"../../../../assets/images/frame.mjs";import ie from"../../../../assets/images/subscript.mjs";import{buildImageTextSmartListBody as m,resolveImageTextSmartListKind as ae}from"./shared/query.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as oe,useState as v}from"react";import{Fragment as se,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as ce}from"next-intl";import le from"next/link";const x=[];function S(e){return typeof e==`string`?e:e.src}function ue(e,n){if(!e||!e.trim())return S(n);if(e.startsWith(`http`)||e.startsWith(`//`)||e.startsWith(`data:`))return e;let r=t();return r?`${r}${e.startsWith(`/`)?e:`/${e}`}`:e}function C(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function w(e){return e==null?``:e.name||``}function T(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function E(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 D(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function de(e,t,n){return e?T(e,n)===2&&t?D(e,t):E(Number(e.duration??e.detail?.duration??0)):``}function fe(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function pe(t,n){if(!t)return``;let r=t,i=n?Number(r.static?.browse_count??0):Number(r.browse_count??0);return!Number.isFinite(i)||i<=0?``:e(i)}function me(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function O(e){let{title:t,items:T=x,commonPlayCount:E,commonEpisodes:D,layout:O,mode:k=`renderer`}=e,A=ce(`components.biz.business.imageTextRecommend`),j=k===`renderer`,M=k===`editor`,[N,P]=v({}),[F,I]=v([]),[L,R]=v(0),[z,B]=v(void 0),V=oe(null),H=_(()=>ne(O),[O]),U=H?.enabled===!0,W=_(()=>ae(H?.sortRule),[H?.sortRule]),G=T?.length??0,K=_(()=>ee(T,U),[U,T]),q=_(()=>K.slice(0,d),[K]),J=_(()=>{if(H?.enabled)return m(H,{targetCount:G})},[H,G]),{data:Y}=p(_(()=>!J||!U?[`image-text-recommend`,`smart-idle`]:W===`newest`?o(J):s(J),[J,U,W]),async()=>!J||!U?{data:{videos:[],cursor:``}}:W===`newest`?r(J):i(J),{enabled:j&&!M&&U&&T.length>0&&!!J,staleTime:1/0}),{data:X}=p(a({ids:q}),()=>n({ids:q}),{enabled:j&&!M&&!U&&q.length>0,staleTime:1/0}),Z=_(()=>U&&G>d?Math.ceil(G/d):K.length>0?Math.ceil(K.length/d):0,[U,G,K.length]),Q=h((e,t)=>A(t?`updatedTo`:`allEpisodes`,{count:e}),[A]),he=h(async(e,t)=>{if(e.length===0)return;let r=f((await n({ids:e})).data?.videos??[]);P(e=>t?{...e,...r}:r)},[]);g(()=>{if(M)return;if(U){let e=Y?.data?.videos??[];G>d?(I(e.slice(0,d)),B(Y?.data?.cursor),R(e.length>0?1:0)):(I(e.slice(0,G)),R(0)),P({});return}if(q.length===0){P({}),I([]),R(0),B(void 0);return}let e=X?.data?.videos??[];P(f(e)),I([]),B(void 0),R(e.length>0?1:0)},[M,U,Y,X,q,G]),g(()=>{if(M||Z<1||L<1||L>=Z)return;let e=V.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let n=L;if(U&&H){let e=m(H,{targetCount:G,cursor:z,pageSize:d});(W===`newest`?r:i)(e).then(e=>{let t=e.data?.videos??[];I(e=>[...e,...t.slice(0,d)]),B(e.data?.cursor),R(n+1)}).catch(()=>{})}else{let e=n*d,t=K.slice(e,e+d);t.length>0&&(he(t,!0),R(n+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[M,U,H,W,K,L,Z,G,z,he]),g(()=>{if(M||!U||!H||G<=0)return;let e=H,t,n=!1;function a(){t=window.setTimeout(()=>{let t=m(e,{targetCount:G,pageSize:Math.max(20,G*10)});(W===`newest`?r:i)(t).then(e=>{n||I((e.data?.videos??[]).slice(0,G))}).catch(()=>{n||I([])}).finally(()=>{n||a()})},me())}return a(),()=>{n=!0,t!==void 0&&window.clearTimeout(t)}},[M,U,H,W,G]);let $=_(()=>!T||T.length===0?x:M?T:U&&G>d?T.slice(0,F.length):T,[T,M,U,G,F.length]),ge=_(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=U?F[t]:n?N[n]:void 0,i=U?r?w(r):(e?.title??``).trim():(e?.title??``).trim()||(r?w(r):``),a=(e?.cover??``).trim(),o=U?C(r)||a:a||(e?.useVideoPoster?C(r):``),s=U&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=de(r,Q,U),l=pe(r,U);return{...e,contentId:n||(r?te(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):x,[Q,U,$,N,F]);if(!T||T.length===0)return null;let _e=L>=1&&L<Z?U?F.length-2:L*d-2:-1;return b(l,{className:M?`bg-bg1
|
|
2
|
+
"use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import t from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as n,pContentGetNewstVideoList as r,pContentGetPopularVideoList as i}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as a,pContentGetNewstVideoListKey as o,pContentGetPopularVideoListKey as s}from"../../../../service/generated/tanstack.mjs";import{Image as c}from"../../../ui/image.mjs";import{Box as l}from"../../../ui/box.mjs";import{Text as u}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as d,buildImageTextRecommendRemoteMap as f,getImageTextRecommendFixedIds as ee,resolveImageTextRecommendVideoId as te}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import{normalizeHomeRecommendSmartLayout as ne}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import re from"../../../../assets/images/frame.mjs";import ie from"../../../../assets/images/subscript.mjs";import{buildImageTextSmartListBody as m,resolveImageTextSmartListKind as ae}from"./shared/query.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as oe,useState as v}from"react";import{Fragment as se,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as ce}from"next-intl";import le from"next/link";const x=[];function S(e){return typeof e==`string`?e:e.src}function ue(e,n){if(!e||!e.trim())return S(n);if(e.startsWith(`http`)||e.startsWith(`//`)||e.startsWith(`data:`))return e;let r=t();return r?`${r}${e.startsWith(`/`)?e:`/${e}`}`:e}function C(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function w(e){return e==null?``:e.name||``}function T(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function E(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 D(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function de(e,t,n){return e?T(e,n)===2&&t?D(e,t):E(Number(e.duration??e.detail?.duration??0)):``}function fe(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function pe(t,n){if(!t)return``;let r=t,i=n?Number(r.static?.browse_count??0):Number(r.browse_count??0);return!Number.isFinite(i)||i<=0?``:e(i)}function me(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function O(e){let{title:t,items:T=x,commonPlayCount:E,commonEpisodes:D,layout:O,mode:k=`renderer`}=e,A=ce(`components.biz.business.imageTextRecommend`),j=k===`renderer`,M=k===`editor`,[N,P]=v({}),[F,I]=v([]),[L,R]=v(0),[z,B]=v(void 0),V=oe(null),H=_(()=>ne(O),[O]),U=H?.enabled===!0,W=_(()=>ae(H?.sortRule),[H?.sortRule]),G=T?.length??0,K=_(()=>ee(T,U),[U,T]),q=_(()=>K.slice(0,d),[K]),J=_(()=>{if(H?.enabled)return m(H,{targetCount:G})},[H,G]),{data:Y}=p(_(()=>!J||!U?[`image-text-recommend`,`smart-idle`]:W===`newest`?o(J):s(J),[J,U,W]),async()=>!J||!U?{data:{videos:[],cursor:``}}:W===`newest`?r(J):i(J),{enabled:j&&!M&&U&&T.length>0&&!!J,staleTime:1/0}),{data:X}=p(a({ids:q}),()=>n({ids:q}),{enabled:j&&!M&&!U&&q.length>0,staleTime:1/0}),Z=_(()=>U&&G>d?Math.ceil(G/d):K.length>0?Math.ceil(K.length/d):0,[U,G,K.length]),Q=h((e,t)=>A(t?`updatedTo`:`allEpisodes`,{count:e}),[A]),he=h(async(e,t)=>{if(e.length===0)return;let r=f((await n({ids:e})).data?.videos??[]);P(e=>t?{...e,...r}:r)},[]);g(()=>{if(M)return;if(U){let e=Y?.data?.videos??[];G>d?(I(e.slice(0,d)),B(Y?.data?.cursor),R(e.length>0?1:0)):(I(e.slice(0,G)),R(0)),P({});return}if(q.length===0){P({}),I([]),R(0),B(void 0);return}let e=X?.data?.videos??[];P(f(e)),I([]),B(void 0),R(e.length>0?1:0)},[M,U,Y,X,q,G]),g(()=>{if(M||Z<1||L<1||L>=Z)return;let e=V.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let n=L;if(U&&H){let e=m(H,{targetCount:G,cursor:z,pageSize:d});(W===`newest`?r:i)(e).then(e=>{let t=e.data?.videos??[];I(e=>[...e,...t.slice(0,d)]),B(e.data?.cursor),R(n+1)}).catch(()=>{})}else{let e=n*d,t=K.slice(e,e+d);t.length>0&&(he(t,!0),R(n+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[M,U,H,W,K,L,Z,G,z,he]),g(()=>{if(M||!U||!H||G<=0)return;let e=H,t,n=!1;function a(){t=window.setTimeout(()=>{let t=m(e,{targetCount:G,pageSize:Math.max(20,G*10)});(W===`newest`?r:i)(t).then(e=>{n||I((e.data?.videos??[]).slice(0,G))}).catch(()=>{n||I([])}).finally(()=>{n||a()})},me())}return a(),()=>{n=!0,t!==void 0&&window.clearTimeout(t)}},[M,U,H,W,G]);let $=_(()=>!T||T.length===0?x:M?T:U&&G>d?T.slice(0,F.length):T,[T,M,U,G,F.length]),ge=_(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=U?F[t]:n?N[n]:void 0,i=U?r?w(r):(e?.title??``).trim():(e?.title??``).trim()||(r?w(r):``),a=(e?.cover??``).trim(),o=U?C(r)||a:a||(e?.useVideoPoster?C(r):``),s=U&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=de(r,Q,U),l=pe(r,U);return{...e,contentId:n||(r?te(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):x,[Q,U,$,N,F]);if(!T||T.length===0)return null;let _e=L>=1&&L<Z?U?F.length-2:L*d-2:-1;return b(l,{className:M?`bg-bg1 px-3 py-3 pointer-events-none`:`bg-bg1 px-3 py-3`,children:[t&&y(l,{className:`mb-3 flex items-center justify-between`,children:y(u,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:t})}),y(l,{className:`flex overflow-x-auto pb-2 scrollbar-hide space-x-2`,children:ge.map((e,t)=>{let n=E||(e.showPlayCount??!1),r=(e.playCountText??``).trim(),i=r!==``,a=D||(e.showEpisodes??!1),o=(e.episodeOrDurationText??``).trim(),s=a&&o!==``,d=k===`renderer`?fe(e.contentId??``,e.title??``):``,f=b(se,{children:[b(l,{className:`relative rounded-lg overflow-hidden bg-bg2 w-[116px] h-[134px]`,children:[M||e.cover?y(c,{src:ue(e.cover,re),alt:e.title??``,fill:!0,className:`object-cover`}):y(l,{className:`w-full h-full flex items-center justify-center`,children:y(u,{className:`text-text3 text-xs`,children:A(`noCover`)})}),!U&&(e.badge??``).trim()?y(l,{className:`absolute top-0 right-0 w-8 h-8`,children:y(c,{src:(e.badge??``).trim()||S(ie),alt:``,fill:!0,sizes:`32px`,className:`object-contain object-right-top`,unoptimized:!0})}):null,b(l,{className:`absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent pb-1 pt-3 px-1 flex justify-between items-center gap-1`,children:[y(l,{className:`flex items-center min-w-0 shrink`,children:n&&i?b(l,{className:`flex items-center gap-1 rounded bg-overlay px-1 py-0`,children:[y(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`10`,viewBox:`0 0 12 10`,fill:`none`,className:`shrink-0`,"aria-hidden":!0,children:y(`path`,{d:`M7.56 5.18437L5.013 6.56737C4.893 6.63337 4.761 6.66937 4.638 6.66937C4.269 6.66937 4.002 6.38737 4.002 5.99737V3.28237C4.002 2.89237 4.269 2.61037 4.638 2.61037C4.764 2.61037 4.893 2.64637 5.013 2.70937L7.572 4.09237C7.803 4.21837 7.938 4.41637 7.938 4.63237C7.938 4.85137 7.8 5.05537 7.56 5.18437ZM9.807 9.27637L2.133 8.52937C0.954 8.52937 0 7.57537 0 6.39637V2.79937C0 1.62037 0.954 0.666368 2.133 0.666368L9.81 0.000367165C10.989 0.000367165 11.943 0.954367 11.943 2.13337V7.14337C11.9422 7.70935 11.7168 8.25188 11.3163 8.65181C10.9158 9.05174 10.373 9.27637 9.807 9.27637ZM10.875 2.13337C10.875 1.99351 10.8475 1.85502 10.7939 1.72581C10.7404 1.5966 10.662 1.47919 10.5631 1.3803C10.4642 1.2814 10.3468 1.20296 10.2176 1.14944C10.0883 1.09591 9.94986 1.06837 9.81 1.06837L2.133 1.73437C1.99314 1.73437 1.85465 1.76191 1.72544 1.81544C1.59623 1.86896 1.47883 1.9474 1.37993 2.0463C1.28104 2.14519 1.20259 2.2626 1.14907 2.39181C1.09555 2.52102 1.068 2.65951 1.068 2.79937V6.39637C1.068 6.67882 1.1802 6.94971 1.37993 7.14944C1.57966 7.34916 1.85054 7.46137 2.133 7.46137L9.807 8.20837C9.94686 8.20837 10.0853 8.18082 10.2146 8.1273C10.3438 8.07378 10.4612 7.99533 10.5601 7.89644C10.659 7.79754 10.7374 7.68014 10.7909 7.55093C10.8445 7.42171 10.872 7.28323 10.872 7.14337V2.13337H10.875Z`,fill:`white`})}),y(u,{className:`text-white text-[12px] leading-[20px]`,children:r})]}):null}),y(l,{className:`flex items-center shrink-0`,children:s?y(u,{className:`text-white text-[12px] leading-[20px]`,children:o}):null})]})]}),y(l,{className:`mt-2 py-2`,children:y(u,{className:`text-[16px] text-text1 font-bold leading-[24px] line-clamp-1`,children:e.title})})]});return y(l,{ref:t===_e?V:void 0,className:`flex-shrink-0 w-[116px]`,children:d?y(le,{href:d,className:`block`,children:f}):f},t)})})]})}export{O as ImageTextRecommendClient};
|
|
@@ -97,12 +97,15 @@ import { BasicPostCardClient } from "./post-card/variants/basic-post-card/runtim
|
|
|
97
97
|
import { schema as schema$13 } from "./post-card/variants/basic-post-card/schema/index.mjs";
|
|
98
98
|
import "./post-card/index.mjs";
|
|
99
99
|
import { ProfileHeaderInspectorProps, UserProfileHeaderAuthConfig, UserProfileHeaderClientProps, profileHeaderInspectorDefaultProps, profileHeaderInspectorPropsSchema } from "./profile/profile-header/schema.mjs";
|
|
100
|
-
import { UserProfileHeaderClient
|
|
101
|
-
import {
|
|
100
|
+
import { UserProfileHeaderClient } from "./profile/profile-header/client.mjs";
|
|
101
|
+
import { MyProfileHeaderClient } from "./profile/profile-header/my-client.mjs";
|
|
102
|
+
import { VisitorProfileHeaderClient } from "./profile/profile-header/visitor-client.mjs";
|
|
103
|
+
import { myProfileHeaderMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, visitorProfileHeaderMaterial } from "./profile/profile-header/material.mjs";
|
|
102
104
|
import { ProfileMainInspectorProps, UserProfileMainProps, profileMainInspectorDefaultProps, profileMainInspectorPropsSchema } from "./profile/profile-main/schema.mjs";
|
|
103
105
|
import { UserProfileMainClient } from "./profile/profile-main/client.mjs";
|
|
104
106
|
import { UserProfileMain } from "./profile/profile-main/server.mjs";
|
|
105
107
|
import { profileMainMaterial } from "./profile/profile-main/material.mjs";
|
|
108
|
+
import { ProfileMainBaseTabKey, ProfileMainContentType, ProfileMainSecondaryTabKey, ProfileMainTabKey, getProfileMainSecondaryTabOptions, getProfileMainTabOptions, profileMainBaseTabOptions, profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainContentTypeOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainPublishTabOption, profileMainSecondaryTabDisplayOrder, profileMainTabOptions } from "./profile/profile-main/variants.mjs";
|
|
106
109
|
import { UserProfileMainRenderMode, UserProfileMainShell, UserProfileMainShellProps } from "./profile/profile-main/shell.mjs";
|
|
107
110
|
import { CollectTab, CollectTabProps } from "./profile/profile-main/tabs/collect-tab/client.mjs";
|
|
108
111
|
import { CollectTabServer } from "./profile/profile-main/tabs/collect-tab/server.mjs";
|
|
@@ -112,7 +115,6 @@ import { LikeDetailItem, LikeTab, LikeTabProps } from "./profile/profile-main/ta
|
|
|
112
115
|
import { LikeTabServer } from "./profile/profile-main/tabs/like-tab/server.mjs";
|
|
113
116
|
import { PublishTab, PublishTabProps, PublishTabUserInfo } from "./profile/profile-main/tabs/publish-tab/client.mjs";
|
|
114
117
|
import { PublishTabServer } from "./profile/profile-main/tabs/publish-tab/server.mjs";
|
|
115
|
-
import { profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainTabOptions } from "./profile/profile-main/variants.mjs";
|
|
116
118
|
import "./profile/index.mjs";
|
|
117
119
|
import { defaultProps as defaultProps$12 } from "./recommended-users/variants/basic-recommended-users/defaults/default-props.mjs";
|
|
118
120
|
import { BasicRecommendedUsersClient } from "./recommended-users/variants/basic-recommended-users/runtime/client.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{formatCompactCount as e}from"../../../../utils/common.mjs";import{
|
|
2
|
+
import{formatCompactCount as e}from"../../../../utils/common.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/link.mjs";import a from"../../../../assets/icons/view.mjs";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";function l(t){let n=Number(t||0);return Number.isNaN(n)||n<=0?``:e(n)}function u({data:e}){return e?s(n,{className:`flex flex-col gap-[12px]`,children:(Array.isArray(e)?e:[e]).map((e,u)=>{if(!e||typeof e!=`object`)return null;let{id:d,title:f,desc:p,cover:m,tagImageUrl:h,showEpisode:g,episodeText:_,showPlayCount:v,play_count:y}=e,b=f||``,x=d?`/video/${d}/${b?encodeURIComponent(b):``}`:`#`,S=_==null?``:String(_).trim(),C=(g??!0)&&S!==``,w=v??!0,T=l(y)||`0`;return s(n,{children:s(i,{href:x,className:`block`,children:c(n,{className:`relative h-[204px] w-full overflow-hidden rounded-[8px] bg-[rgba(6,3,20,0.5)]`,children:[c(n,{className:`relative h-[134px] w-full overflow-hidden rounded-t-[8px]`,children:[m&&s(t,{src:m,alt:b||`封面`,fill:!0,objectFit:`cover`}),h&&String(h).trim()&&s(n,{className:`absolute left-[16px] top-[12px]`,children:s(n,{className:`inline-flex items-center justify-center rounded-[4px] px-[4px] py-[4px]`,style:{background:`linear-gradient(90deg, #CA3FE9 0%, #9756E3 100%)`},children:s(t,{src:String(h),alt:``,width:75,height:14,className:`h-[14px] w-auto object-contain`})})}),c(n,{className:`absolute bottom-[12px] left-[16px] right-[16px] flex items-center justify-between`,children:[s(n,{className:`flex items-center gap-[4px]`,children:w&&c(o,{children:[s(a,{className:`size-[22px] text-white opacity-80`}),s(r,{className:`text-[14px] leading-[20px] text-white`,children:T})]})}),C&&s(r,{className:`text-[14px] leading-[20px] text-white`,children:S})]})]}),s(n,{className:`px-[16px] pt-[12px]`,children:c(n,{className:`flex flex-col gap-[2px]`,children:[s(r,{className:`line-clamp-1 text-[16px] font-medium leading-[22px] text-white`,children:b}),p&&s(r,{className:`line-clamp-1 text-[14px] leading-[20px] text-white/50`,children:p})]})})]})})},d||b||`large-grid-item-${u}`)})}):null}export{u as LargeGridItemClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{
|
|
2
|
+
"use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/loading.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{isFeedAdItem as l}from"../advertisement/feed-ad/index.mjs";import{LargeGridItemClient as u}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as d}from"./schema.mjs";import{useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";const v=[],y=d.data??[];function b(e){return e==null}function x(e,t){return b(e)?t:e}function S(e){return typeof e==`string`?e.trim():``}function C(e){return S(e)}function w(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function T(e){let t=e,n=S(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(w(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function E(e,t){return t?{...e,...t,id:x(t.id,e.id),cover:x(t.cover,e.cover),title:x(t.title,e.title),desc:x(t.desc,e.desc),play_count:x(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:x(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:x(t.tagImageUrl,e.tagImageUrl)}:e}function D(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:x(t.title,e.title),moreUrl:x(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?E(n,t.items):t.items}}function O({mode:d=`renderer`,data:b=v}){let x=d===`editor`,E=b??v,O=Array.isArray(E)&&E.length>0,k=p(()=>O?[D(y[0],E[0])]:y,[O,E]),[A,j]=h(k),M=m(``),N=m(null),{isLoading:P,show:F,hide:I,cancel:L}=s(500);f(()=>{j(k)},[k]);let R=o({enabled:!x,containerRef:N,itemRef:N,deps:[A.length]}),z=p(()=>{if(x||!O)return``;let e=k.map(e=>C(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[O,x,k]);if(f(()=>{if(x||!e()||!z||M.current===z)return;M.current=z;let n=!1;async function r(){try{F();let e=await t({ids:z.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=C(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;j(e=>e.map(e=>{let t=e.items;if(!t||l(t))return e;let n=C(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=w(r.play_count)??w(r.browse_count)??w(r.view_count),o=T(r),s=S(r.name),c=S(r.description||r.content_description),u=t.useContentCover?S(r.img_x||r.img_y):``;return{...e,items:{...t,title:s||t.title,desc:c||t.desc,...u?{cover:u}:{},play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||I()}}return r(),()=>{n=!0,L()}},[L,z,I,x,F]),!A||A.length===0)return null;let B=A[0],V=B?.title,H=B?.moreUrl,U=R>0?R/2:160,W=!x&&P;return _(n,{className:x?`p-3 pointer-events-none`:`p-3`,children:[_(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[V&&g(r,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:V}),H&&_(a,{href:H,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,g(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),_(n,{className:`relative`,children:[A.map((e,t)=>{let{items:r}=e;return r?g(n,{ref:t===0?N:void 0,className:t>0?`mt-3`:``,children:g(u,{data:r})},`large-feature-grid-items-${t}`):null}),W&&g(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),W&&g(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:U},"aria-hidden":!0,children:g(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{O as LargeFeatureGridClient};
|
|
@@ -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=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),is_ad:e.boolean(!1,{fieldType:`switch`,label:`是否广告`,required:!1}),ad:e.object({ad_code:e.string(void 0,{label:`广告业务编码`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),ad_advertise_type:e.number(void 0,{label:`广告类型`,required:!1}),ad_advertise_desc:e.string(void 0,{label:`广告文案描述`,required:!1}),ad_ext_data:e.string(void 0,{label:`广告扩展信息`,required:!1})},{label:`广告对象`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),
|
|
2
|
+
import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),is_ad:e.boolean(!1,{fieldType:`switch`,label:`是否广告`,required:!1}),ad:e.object({ad_code:e.string(void 0,{label:`广告业务编码`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),ad_advertise_type:e.number(void 0,{label:`广告类型`,required:!1}),ad_advertise_desc:e.string(void 0,{label:`广告文案描述`,required:!1}),ad_ext_data:e.string(void 0,{label:`广告扩展信息`,required:!1})},{label:`广告对象`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),useContentCover:e.boolean(!0,{fieldType:`switch`,label:`沿用内容海报`,required:!1}),title:e.string(void 0,{label:`内容标题`}),desc:e.string(void 0,{label:`内容简介`,required:!1}),tagImageUrl:e.string(void 0,{label:`角标图`,required:!1})})}),{label:`大图推荐数据`,required:!1,defaultValue:[{title:`推荐位名称`,moreUrl:`/channel`,moreLinkType:`content-list`,items:{id:`22edc8693ebbdaf1`,cover:`https://base-resources.guadd.fun/md-204/dcc-file/f7/f70a9f9f0c17aa9aff6c3a3e03a822db-small.jpg`,play_count:`11111`,showPlayCount:!0,episodeText:`连载中`,showEpisode:!0,useContentCover:!0,title:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`,desc:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`}}]})})),i=t(r);export{i as largeFeatureGridInspectorDefaultProps,r as largeFeatureGridInspectorPropsSchema};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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 r from"../../../../assets/icons/marquee-close.mjs";import i from"../../../../assets/icons/marquee-enter.mjs";import a from"../../../../assets/icons/marquee-speaker.mjs";import{defaultMarqueePeriod as o}from"./schema.mjs";import{useEffect as s,useLayoutEffect as c,useMemo as l,useRef as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";const m=[],h=`marquee_list`;let g=null;function _(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function v(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function y(){if(g)return g;let e=localStorage.getItem(h);if(!e)return g={},{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};return Object.entries(t).forEach(([e,t])=>{if(!t||typeof t!=`object`)return;let r=t.closedAt;typeof r!=`number`||Number.isNaN(r)||(n[e]={closedAt:r})}),g=n,n}catch{return g={},{}}}function b(e){g=e,localStorage.setItem(h,JSON.stringify(e))}function x(e){return y()[e]??{}}function S(e,t){b({...y(),[e]:t})}function C(e,t){return v(e.closedAt,t)}function w(h){let{marqueeKey:g,contents:v=m,close:y,displayStrategy:b,mode:w=`renderer`}=h,T=w===`editor`,E=e(),D=u(!1),O=u(null),k=u(null),[A,j]=d(T),[M,N]=d(T),[P,F]=d(!1),[I,L]=d(0);s(()=>{F(!0)},[]);let R=l(()=>{let e=b?.period??o,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,a=n?new Date(n).getTime():2**53-1;return r>=i&&r<=a},[b?.period]),z=l(()=>(v??[]).map(e=>({...e,text:_(String(e?.text??``))})).filter(e=>!!e.text),[v]),B=g?.trim()??``,V=l(()=>z.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[z]);if(s(()=>{L(0)},[V,B]),s(()=>{T||B||D.current||process.env.NODE_ENV===`production`||(D.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[T,B]),s(()=>{if(P){if(T){j(!0),N(!0);return}if(!b?.rule||!R||z.length===0){j(!1),N(!0);return}if(!B){j(!0),N(!0);return}j(!C(x(B),b.rule)),N(!0)}},[b?.rule,T,P,R,z.length,B]),c(()=>{if(T)return;let e=O.current,t=k.current;if(!e||!t)return;let n=e.offsetWidth,r=t.scrollWidth,i=n+r,a=Math.max(i/80,3)*1e3,o=t.animate([{transform:`translateX(${n}px)`},{transform:`translateX(-${r}px)`}],{duration:a,iterations:z.length<=1?1/0:1,easing:`linear`,fill:`forwards`});return o.onfinish=()=>{z.length>1&&L(e=>(e+1)%z.length)},()=>o.cancel()},[I,V,T,A,z.length]),!T&&(!P||!M||!A||!R)||z.length===0)return null;let H=z[I%z.length],U=H?.click,W=U?.enabled===!0,G=U?.link,K=W&&!!G,q=y?.enabled===!0,J=K,Y=q;function X(){!B||!b?.rule||z.length===0||S(B,{...x(B),closedAt:Date.now()})}let Z=e=>{e.stopPropagation(),j(!1),X()};function Q(e){if(typeof window>`u`){E.push(e);return}if(window.isWebView===!0)try{let t=new URL(e,window.location.href);if(t.origin===window.location.origin){let e=t.pathname.split(`/`).filter(Boolean),n=e.findIndex(e=>e===`video`);n>=0&&(e[n]=`webview`,t.pathname=`/${e.join(`/`)}`)}window.location.href=t.toString();return}catch{window.location.href=e;return}E.push(e)}function $(){T||K&&G&&(j(!1),X(),Q(G))}let ee=f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0,children:f(i,{className:`h-5 w-5 opacity-50`,"aria-hidden":!0})}),te=f(`button`,{type:`button`,"aria-label":`关闭`,className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,onClick:Z,children:f(r,{className:`h-5 w-5`,"aria-hidden":!0})}),ne=f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0}),re=p(t,{className:`flex min-w-6 shrink-0 items-center justify-end `,children:[J?ee:null,Y?q?te:f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0,children:f(r,{className:`h-5 w-5`,"aria-hidden":!0})}):null,!J&&!Y?ne:null]});return p(t,{className:`grid h-8 w-full grid-cols-[20px_minmax(0,1fr)_auto] items-center gap-2 bg-white/10
|
|
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 r from"../../../../assets/icons/marquee-close.mjs";import i from"../../../../assets/icons/marquee-enter.mjs";import a from"../../../../assets/icons/marquee-speaker.mjs";import{defaultMarqueePeriod as o}from"./schema.mjs";import{useEffect as s,useLayoutEffect as c,useMemo as l,useRef as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";const m=[],h=`marquee_list`;let g=null;function _(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function v(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function y(){if(g)return g;let e=localStorage.getItem(h);if(!e)return g={},{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};return Object.entries(t).forEach(([e,t])=>{if(!t||typeof t!=`object`)return;let r=t.closedAt;typeof r!=`number`||Number.isNaN(r)||(n[e]={closedAt:r})}),g=n,n}catch{return g={},{}}}function b(e){g=e,localStorage.setItem(h,JSON.stringify(e))}function x(e){return y()[e]??{}}function S(e,t){b({...y(),[e]:t})}function C(e,t){return v(e.closedAt,t)}function w(h){let{marqueeKey:g,contents:v=m,close:y,displayStrategy:b,mode:w=`renderer`}=h,T=w===`editor`,E=e(),D=u(!1),O=u(null),k=u(null),[A,j]=d(T),[M,N]=d(T),[P,F]=d(!1),[I,L]=d(0);s(()=>{F(!0)},[]);let R=l(()=>{let e=b?.period??o,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,a=n?new Date(n).getTime():2**53-1;return r>=i&&r<=a},[b?.period]),z=l(()=>(v??[]).map(e=>({...e,text:_(String(e?.text??``))})).filter(e=>!!e.text),[v]),B=g?.trim()??``,V=l(()=>z.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[z]);if(s(()=>{L(0)},[V,B]),s(()=>{T||B||D.current||process.env.NODE_ENV===`production`||(D.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[T,B]),s(()=>{if(P){if(T){j(!0),N(!0);return}if(!b?.rule||!R||z.length===0){j(!1),N(!0);return}if(!B){j(!0),N(!0);return}j(!C(x(B),b.rule)),N(!0)}},[b?.rule,T,P,R,z.length,B]),c(()=>{if(T)return;let e=O.current,t=k.current;if(!e||!t)return;let n=e.offsetWidth,r=t.scrollWidth,i=n+r,a=Math.max(i/80,3)*1e3,o=t.animate([{transform:`translateX(${n}px)`},{transform:`translateX(-${r}px)`}],{duration:a,iterations:z.length<=1?1/0:1,easing:`linear`,fill:`forwards`});return o.onfinish=()=>{z.length>1&&L(e=>(e+1)%z.length)},()=>o.cancel()},[I,V,T,A,z.length]),!T&&(!P||!M||!A||!R)||z.length===0)return null;let H=z[I%z.length],U=H?.click,W=U?.enabled===!0,G=U?.link,K=W&&!!G,q=y?.enabled===!0,J=K,Y=q;function X(){!B||!b?.rule||z.length===0||S(B,{...x(B),closedAt:Date.now()})}let Z=e=>{e.stopPropagation(),j(!1),X()};function Q(e){if(typeof window>`u`){E.push(e);return}if(window.isWebView===!0)try{let t=new URL(e,window.location.href);if(t.origin===window.location.origin){let e=t.pathname.split(`/`).filter(Boolean),n=e.findIndex(e=>e===`video`);n>=0&&(e[n]=`webview`,t.pathname=`/${e.join(`/`)}`)}window.location.href=t.toString();return}catch{window.location.href=e;return}E.push(e)}function $(){T||K&&G&&(j(!1),X(),Q(G))}let ee=f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0,children:f(i,{className:`h-5 w-5 opacity-50`,"aria-hidden":!0})}),te=f(`button`,{type:`button`,"aria-label":`关闭`,className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,onClick:Z,children:f(r,{className:`h-5 w-5`,"aria-hidden":!0})}),ne=f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0}),re=p(t,{className:`flex min-w-6 shrink-0 items-center justify-end `,children:[J?ee:null,Y?q?te:f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0,children:f(r,{className:`h-5 w-5`,"aria-hidden":!0})}):null,!J&&!Y?ne:null]});return p(t,{className:`grid h-8 w-full grid-cols-[20px_minmax(0,1fr)_auto] items-center gap-2 bg-white/10 px-4 py-1 backdrop-blur-[2px] ${K?`cursor-pointer`:``} ${T?`pointer-events-none`:``}`,onClick:$,children:[f(a,{className:`h-5 w-5 shrink-0`,"aria-hidden":!0}),f(t,{ref:O,className:`relative h-5 min-w-0 w-full overflow-hidden`,children:f(t,{ref:k,className:`absolute inset-y-0 left-0 flex items-center whitespace-nowrap`,children:f(n,{className:`inline-block font-sans text-[14px] font-normal leading-[20px] not-italic text-white/90`,children:H.text})},`marquee-item-${I}`)}),re]})}export{w as MarqueeClient};
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
|
|
2
2
|
import { ProfileHeaderInspectorProps, UserProfileHeaderAuthConfig, UserProfileHeaderClientProps, profileHeaderInspectorDefaultProps, profileHeaderInspectorPropsSchema } from "./profile-header/schema.mjs";
|
|
3
|
-
import { UserProfileHeaderClient
|
|
4
|
-
import {
|
|
3
|
+
import { UserProfileHeaderClient } from "./profile-header/client.mjs";
|
|
4
|
+
import { MyProfileHeaderClient } from "./profile-header/my-client.mjs";
|
|
5
|
+
import { VisitorProfileHeaderClient } from "./profile-header/visitor-client.mjs";
|
|
6
|
+
import { myProfileHeaderMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, visitorProfileHeaderMaterial } from "./profile-header/material.mjs";
|
|
5
7
|
import "./profile-header/index.mjs";
|
|
6
8
|
import { ProfileMainInspectorProps, UserProfileMainProps, profileMainInspectorDefaultProps, profileMainInspectorPropsSchema } from "./profile-main/schema.mjs";
|
|
7
9
|
import { UserProfileMainClient } from "./profile-main/client.mjs";
|
|
8
10
|
import { UserProfileMain } from "./profile-main/server.mjs";
|
|
9
11
|
import { profileMainMaterial } from "./profile-main/material.mjs";
|
|
12
|
+
import { ProfileMainBaseTabKey, ProfileMainContentType, ProfileMainSecondaryTabKey, ProfileMainTabKey, getProfileMainSecondaryTabOptions, getProfileMainTabOptions, profileMainBaseTabOptions, profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainContentTypeOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainPublishTabOption, profileMainSecondaryTabDisplayOrder, profileMainTabOptions } from "./profile-main/variants.mjs";
|
|
10
13
|
import { UserProfileMainRenderMode, UserProfileMainShell, UserProfileMainShellProps } from "./profile-main/shell.mjs";
|
|
11
14
|
import { CollectTab, CollectTabProps } from "./profile-main/tabs/collect-tab/client.mjs";
|
|
12
15
|
import { CollectTabServer } from "./profile-main/tabs/collect-tab/server.mjs";
|
|
@@ -16,5 +19,4 @@ import { LikeDetailItem, LikeTab, LikeTabProps } from "./profile-main/tabs/like-
|
|
|
16
19
|
import { LikeTabServer } from "./profile-main/tabs/like-tab/server.mjs";
|
|
17
20
|
import { PublishTab, PublishTabProps, PublishTabUserInfo } from "./profile-main/tabs/publish-tab/client.mjs";
|
|
18
21
|
import { PublishTabServer } from "./profile-main/tabs/publish-tab/server.mjs";
|
|
19
|
-
import { profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainTabOptions } from "./profile-main/variants.mjs";
|
|
20
22
|
import "./profile-main/index.mjs";
|
|
@@ -3,13 +3,15 @@ import { UserProfileHeaderClientProps } from "./schema.mjs";
|
|
|
3
3
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region components/biz/business/profile/profile-header/client.d.ts
|
|
6
|
-
declare const defaultBackground = "/images/mine/img_mine_head_bg.png";
|
|
7
6
|
/**
|
|
8
7
|
* 用户资料头部组件,包含资料请求与头部交互。
|
|
9
8
|
*/
|
|
10
9
|
declare function UserProfileHeaderClient({
|
|
11
10
|
id,
|
|
11
|
+
isMine,
|
|
12
|
+
defaultBackgroundSrc,
|
|
12
13
|
enableCustomBackground,
|
|
14
|
+
showInteractionSection,
|
|
13
15
|
showBackButton,
|
|
14
16
|
requireLogin,
|
|
15
17
|
isEditorPreview,
|
|
@@ -17,4 +19,4 @@ declare function UserProfileHeaderClient({
|
|
|
17
19
|
mode
|
|
18
20
|
}: UserProfileHeaderClientProps): react_jsx_runtime0.JSX.Element;
|
|
19
21
|
//#endregion
|
|
20
|
-
export { UserProfileHeaderClient
|
|
22
|
+
export { UserProfileHeaderClient };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as n,gUserViewUserInfo as r
|
|
2
|
+
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as n,gUserViewUserInfo as r}from"../../../../../service/generated/client.mjs";import{useRouter as i}from"../../../../../utils/use-compatible-router.mjs";import{Button as a}from"../../../../ui/button.mjs";import{Box as o}from"../../../../ui/box.mjs";import{Skeleton as s}from"../../../../ui/skeleton.mjs";import{useLoginModalStore as c}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as l}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as u}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as d}from"../../../../common/icons/setting.mjs";import{trackProfilePageClick as ee}from"../tracking.mjs";import{defaultBackground as f}from"./shared.mjs";import{MyProfileHeader as p}from"./my-profile-header.mjs";import{UserProfileCoverBackground as m}from"./user-profile-cover-background.mjs";import{VisitorProfileHeader as h}from"./visitor-profile-header.mjs";import{useEffect as g,useMemo as te,useState as ne}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as re}from"next-intl";import ie from"next/link";const y=t.persist,b=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,ae={userId:`editor-preview-user`,isFollowing:!0,name:`昵称`,avatar:b,followingCnt:1200,followersCnt:45800,likeCnt:128e3,signature:`这里是个人简介,描述创作者的信息,展示创作者的爱好、名称及相关一切信息..`,background:f},x={followingCnt:1200,followersCnt:45800,likeCnt:128e3};function S({showBackButton:t,isMine:n,enableCustomBackground:r,className:i}){return v(o,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,i),children:[_(o,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,r?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),v(o,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[_(a,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!t}),disabled:!0,children:_(u,{className:`w-4 h-4`})}),_(o,{className:e({invisible:!n}),children:_(d,{className:`text-text1`})})]}),v(o,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[_(s,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),v(o,{className:`min-w-0 flex-1`,children:[_(s,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),v(o,{className:`mt-1 flex flex-col gap-1`,children:[_(s,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),_(s,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function C({id:s,isMine:C=!1,defaultBackgroundSrc:w=``,enableCustomBackground:T=!0,showInteractionSection:oe=!0,showBackButton:E=!0,requireLogin:D=!1,isEditorPreview:O=!1,className:k,mode:A=`renderer`}){let j=re(`components.pages.profile`),M=O||A===`editor`,N=!M,P=i(),{open:F}=c(),{isLogin:I,userId:L,token:R}=t(),[se,z]=ne(!1);g(()=>{if(!y){z(!0);return}z(y.hasHydrated());let e=y.onHydrate(()=>{z(!1)}),t=y.onFinishHydration(()=>{z(!0)});return()=>{e(),t()}},[]);let B=M?!1:I&&!!L&&!!R,V=M?``:L,H=s,U=C?[`user-profile`,`mine`]:[`user-profile`,`profile`,H],{data:W,isLoading:G}=l(M?[`editor-preview`,...U]:U,()=>H?r({target_user_id:H,user_id:V||H}):n({user_id:s||V||``}),{staleTime:0,enabled:N&&(!!H||!!V)}),K=te(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${H??``}`,avatar:e.avatar||b,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||w||f}:{}},[w,W,H]),q=!M&&D&&C&&!B,J=C&&B&&!q,Y=!B,ce=T&&J,le=T&&Y,ue={name:j(`client.welcomeToPlanet`),description:j(`client.exploreAdventures`),avatar:b,followingCnt:0,followersCnt:0,likeCnt:0,background:w||f};function X(){F()}function de(){P.back()}let Z=M?{...ae,background:w||f}:q?ue:K,fe=Z.followingCnt||x.followingCnt,pe=Z.followersCnt||x.followersCnt,me=Z.likeCnt||x.likeCnt,he=Z.userId||H||V||``,Q=oe&&!q,$=[{key:`follow`,label:j(`components.userProfileHeader.follow`),value:fe},{key:`fans`,label:j(`components.userProfileHeader.fans`),value:pe},{key:`likesReceived`,label:j(`components.userProfileHeader.likesReceived`),value:me}];return N&&G&&!W?_(S,{showBackButton:E,isMine:C,enableCustomBackground:T,className:k}):v(o,{className:e(`relative px-4 pb-8 pt-[16px]`,k),children:[_(o,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:_(m,{isMine:ce,enableCustomBackground:T,src:Z.background,onUnauthorizedClick:le?X:void 0})}),_(o,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,T?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),v(o,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[_(a,{variant:`ghost`,size:`icon-xs`,onClick:de,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!E}),children:_(u,{className:`h-4 w-4`})}),C?_(ie,{href:`/settings`,className:`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,onClick:e=>{ee(e,`settings`)},children:_(d,{})}):_(o,{className:`h-8 w-8`})]}),C?_(p,{userInfo:Z,interactionStats:$,showInteractionSection:Q,canEditProfileMedia:J,shouldPromptLoginOnMediaClick:Y,storeIsLogin:I,isMine:C,isAuthenticated:B,onOpenLoginDialog:X}):_(h,{userInfo:{...Z,userId:he},interactionStats:$,showInteractionSection:Q,canEditProfileMedia:J,shouldPromptLoginOnMediaClick:Y,storeIsLogin:I,isMine:C,currentUserId:V,onOpenLoginDialog:X,useLocalPreview:M})]})}export{C as UserProfileHeaderClient};
|