@funhub/platform 0.2.10 → 0.2.12
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/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
- package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/registry.d.mts +1 -0
- 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/detail/video-detail-recommend/material.d.mts +1 -0
- package/dist/components/biz/business/detail/video-detail-recommend/schema.d.mts +1 -0
- package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/utils.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-play-count.mjs +2 -0
- package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-smart-tag.mjs +2 -0
- package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-avatar.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/utils.mjs +1 -1
- package/dist/components/common/collection-popup/create-collection-sheet.d.mts +3 -0
- package/dist/components/common/collection-popup/create-collection-sheet.mjs +1 -1
- package/dist/components/common/collection-popup/index.mjs +1 -1
- package/dist/components/common/list/waterfall-recommend/recommend-badge-style.mjs +2 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend-display.mjs +2 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +5 -7
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -1
- package/dist/components/common/series-episodes/index.d.mts +1 -0
- package/dist/components/common/series-episodes/index.mjs +1 -1
- package/dist/components/pages/collection-detail/detail.mjs +1 -1
- package/dist/components/pages/feed-series/feed-series-client.mjs +1 -1
- package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
- package/dist/components/pages/search/search-result/shared.mjs +1 -1
- package/dist/components/pages/search-result/search-video-info.mjs +1 -1
- package/dist/components/pages/settings/_components/reset-password-drawer.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/image.d.mts +4 -4
- package/dist/components/ui/item.d.mts +1 -1
- package/dist/i18n/locales/en.mjs +1 -1
- package/dist/i18n/locales/zh-CN.mjs +1 -1
- package/dist/materials.d.mts +1 -2
- package/dist/materials.mjs +1 -1
- package/dist/utils/password-validator.mjs +1 -1
- package/dist/utils/schema/inspector.d.mts +2 -2
- package/package.json +1 -1
- package/dist/components/biz/business/ranking-recommend/client.d.mts +0 -17
- package/dist/components/biz/business/ranking-recommend/client.mjs +0 -70
- package/dist/components/biz/business/ranking-recommend/material.d.mts +0 -35
- package/dist/components/biz/business/ranking-recommend/material.mjs +0 -2
- package/dist/components/biz/business/ranking-recommend/schema.d.mts +0 -35
- package/dist/components/biz/business/ranking-recommend/schema.mjs +0 -2
- package/dist/components/biz/business/ranking-recommend/server.d.mts +0 -11
- package/dist/components/biz/business/ranking-recommend/server.mjs +0 -2
- package/dist/components/biz/business/ranking-recommend/shared/query.mjs +0 -2
- package/dist/components/biz/business/ranking-recommend/shared.d.mts +0 -15
- package/dist/components/biz/business/ranking-recommend/shared.mjs +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Image as e}from"../../../../ui/image.mjs";import{Box as t}from"../../../../ui/box.mjs";import{Carousel as n,CarouselContent as r,CarouselItem as i}from"../../../../ui/carousel.mjs";import{Text as a}from"../../../../ui/text.mjs";import o from"../../../../ui/link.mjs";import{adaptBannerAdProps as s,hasMatchedAds as c}from"../ad-match.mjs";import{useAdProvider as l}from"../ad-provider.mjs";import{bannerAdInspectorDefaultProps as u}from"./schema.mjs";import d from"clsx";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={"700x400":{minHeight:`400px`,aspectRatio:`7 / 4`,titleFontSize:`14px`},"700x200":{minHeight:`200px`,aspectRatio:`7 / 2`,titleFontSize:`14px`},"720x150":{minHeight:`150px`,aspectRatio:`24 / 5`,titleFontSize:`12px`},"720x300":{minHeight:`300px`,aspectRatio:`12 / 5`,titleFontSize:`14px`}},y=[{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告一`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告二`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告三`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告四`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告五`}];function b(e,t){return Array.isArray(e)&&e.length>0?e:t??[]}function x(e,t){return typeof e==`number`&&e>0?e:t}function S(e,t){return typeof e==`number`&&e>0?e:t}function C(e,t){return e??t}function w({mode:w=`renderer`,displayCount:T,switchInterval:E=3e3,styleSize:D=`700x400`,items:O,pointerEventsDisabled:k=!1}){let A=w===`editor`?{displayCount:x(T,u.displayCount),switchInterval:S(E,u.switchInterval),styleSize:C(D,u.styleSize),items:b(O,y)}:{displayCount:T,switchInterval:E,styleSize:D,items:O},j=l(),M=p(()=>c(j?.matchData)?s(j?.matchData):{displayCount:A.displayCount,switchInterval:A.switchInterval,styleSize:A.styleSize,items:A.items??[]},[j?.matchData,A.displayCount,A.items,A.styleSize,A.switchInterval]),[N,P]=h(),[F,I]=h(0),L=m(null),R=p(()=>typeof M.displayCount==`number`?M.items.slice(0,Math.max(M.displayCount,0)):M.items,[M]);if(f(()=>{if(!N||R.length<=1)return;let e=()=>{I(N.selectedScrollSnap())};return N.on(`select`,e),e(),()=>{N.off(`select`,e)}},[N,R.length]),f(()=>{if(!(!N||R.length<=1))return L.current=setInterval(()=>{if(N.canScrollNext()){N.scrollNext();return}N.scrollTo(0)},M.switchInterval??3e3),()=>{L.current&&=(clearInterval(L.current),null)}},[N,M.switchInterval,R.length]),R.length===0)return null;let z=v[M.styleSize??`700x400`];return g(t,{as:`section`,className:`w-full px-[12px] py-[12px]`,"aria-label":`Banner 广告`,style:{pointerEvents:k?`none`:void 0},children:_(n,{setApi:P,opts:{align:`start`,loop:R.length>1},className:`w-full`,children:[g(r,{className:`ml-0`,children:R.map((n,r)=>g(i,{className:`pl-0`,children:_(o,{href:n.jumpUrl,className:d(`relative block w-full overflow-hidden bg-white`),style:{minHeight:z
|
|
2
|
+
"use client";import{Image as e}from"../../../../ui/image.mjs";import{Box as t}from"../../../../ui/box.mjs";import{Carousel as n,CarouselContent as r,CarouselItem as i}from"../../../../ui/carousel.mjs";import{Text as a}from"../../../../ui/text.mjs";import o from"../../../../ui/link.mjs";import{adaptBannerAdProps as s,hasMatchedAds as c}from"../ad-match.mjs";import{useAdProvider as l}from"../ad-provider.mjs";import{bannerAdInspectorDefaultProps as u}from"./schema.mjs";import d from"clsx";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={"700x400":{minHeight:`400px`,aspectRatio:`7 / 4`,titleFontSize:`14px`},"700x200":{minHeight:`200px`,aspectRatio:`7 / 2`,titleFontSize:`14px`},"720x150":{minHeight:`150px`,aspectRatio:`24 / 5`,titleFontSize:`12px`},"720x300":{minHeight:`300px`,aspectRatio:`12 / 5`,titleFontSize:`14px`}},y=[{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告一`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告二`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告三`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告四`},{coverUrl:`/static/components-resource/banner.png`,jumpUrl:`/search`,title:`Banner 广告五`}];function b(e,t){return Array.isArray(e)&&e.length>0?e:t??[]}function x(e,t){return typeof e==`number`&&e>0?e:t}function S(e,t){return typeof e==`number`&&e>0?e:t}function C(e,t){return e??t}function w({mode:w=`renderer`,displayCount:T,switchInterval:E=3e3,styleSize:D=`700x400`,items:O,pointerEventsDisabled:k=!1}){let A=w===`editor`?{displayCount:x(T,u.displayCount),switchInterval:S(E,u.switchInterval),styleSize:C(D,u.styleSize),items:b(O,y)}:{displayCount:T,switchInterval:E,styleSize:D,items:O},j=l(),M=p(()=>c(j?.matchData)?s(j?.matchData):{displayCount:A.displayCount,switchInterval:A.switchInterval,styleSize:A.styleSize,items:A.items??[]},[j?.matchData,A.displayCount,A.items,A.styleSize,A.switchInterval]),[N,P]=h(),[F,I]=h(0),L=m(null),R=p(()=>typeof M.displayCount==`number`?M.items.slice(0,Math.max(M.displayCount,0)):M.items,[M]);if(f(()=>{if(!N||R.length<=1)return;let e=()=>{I(N.selectedScrollSnap())};return N.on(`select`,e),e(),()=>{N.off(`select`,e)}},[N,R.length]),f(()=>{if(!(!N||R.length<=1))return L.current=setInterval(()=>{if(N.canScrollNext()){N.scrollNext();return}N.scrollTo(0)},M.switchInterval??3e3),()=>{L.current&&=(clearInterval(L.current),null)}},[N,M.switchInterval,R.length]),R.length===0)return null;let z=v[M.styleSize??`700x400`];return g(t,{as:`section`,className:`w-full px-[12px] py-[12px]`,"aria-label":`Banner 广告`,style:{pointerEvents:k?`none`:void 0},children:_(n,{setApi:P,opts:{align:`start`,loop:R.length>1},className:`w-full`,children:[g(r,{className:`ml-0`,children:R.map((n,r)=>g(i,{className:`pl-0`,children:_(o,{href:n.jumpUrl,className:d(`relative block w-full overflow-hidden bg-white`),style:{minHeight:z?.minHeight,aspectRatio:z?.aspectRatio,borderRadius:`10px`},children:[g(t,{className:`absolute inset-0`,children:g(e,{src:n.coverUrl,alt:n.title||`Banner 广告`,fill:!0,className:`object-cover object-center`,unoptimized:!0})}),g(t,{className:`absolute inset-x-0 bottom-0`,style:{height:`28%`,background:`linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%)`,opacity:.84}}),g(t,{className:`absolute right-0 top-0 overflow-hidden`,style:{width:`56px`,height:`25px`,backgroundColor:`rgba(255, 255, 255, 0.16)`,borderBottomLeftRadius:`8px`},children:g(a,{className:`flex h-full items-center justify-center text-white`,style:{fontSize:`12px`,lineHeight:`normal`,fontWeight:400},children:`广告`})}),n.title?g(a,{className:`absolute line-clamp-2 text-white`,style:{left:`16px`,bottom:`16px`,maxWidth:`calc(100% - 120px)`,fontSize:z.titleFontSize,lineHeight:`normal`,fontWeight:500},children:n.title}):null]})},`${n.jumpUrl}-${r}`))}),R.length>1?g(t,{className:`pointer-events-none absolute bottom-[18px] right-[16px] z-10 flex items-center gap-[6px]`,children:R.map((e,n)=>g(t,{className:`rounded-full transition-all duration-300`,style:{width:n===F?`16px`:`8px`,height:`8px`,backgroundColor:n===F?`#FFFFFF`:`rgba(255, 255, 255, 0.78)`}},n))}):null]})})}export{w as BannerAd};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Image as e}from"../../../../ui/image.mjs";import{Box as t}from"../../../../ui/box.mjs";import{Text as n}from"../../../../ui/text.mjs";import r from"../../../../ui/link.mjs";import{adaptIconAdProps as i,hasMatchedAds as a}from"../ad-match.mjs";import{useAdProvider as o}from"../ad-provider.mjs";import{iconAdInspectorDefaultProps as s}from"./schema.mjs";import{useMemo as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";const d=[{title:`图标广告1`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告2`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告3`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告4`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告5`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`}];function f(e,t){return Array.isArray(e)&&e.length>0?e:t??[]}function p(e,t){return typeof e==`number`&&e>0?e:t}function m({mode:m=`renderer`,displayCount:h,items:g,pointerEventsDisabled:_=!1}){let v=m===`editor`?{displayCount:p(h,s.displayCount),items:f(g,d)}:{displayCount:h,items:g},y=o(),b=c(()=>a(y?.matchData)?i(y?.matchData):{displayCount:v.displayCount,items:v.items??[]},[y?.matchData,v.displayCount,v.items]),x=b.displayCount??b
|
|
2
|
+
"use client";import{Image as e}from"../../../../ui/image.mjs";import{Box as t}from"../../../../ui/box.mjs";import{Text as n}from"../../../../ui/text.mjs";import r from"../../../../ui/link.mjs";import{adaptIconAdProps as i,hasMatchedAds as a}from"../ad-match.mjs";import{useAdProvider as o}from"../ad-provider.mjs";import{iconAdInspectorDefaultProps as s}from"./schema.mjs";import{useMemo as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";const d=[{title:`图标广告1`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告2`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告3`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告4`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`},{title:`图标广告5`,icon:`/static/components-resource/banner.png`,jumpUrl:`/search`,badgeText:`广告`}];function f(e,t){return Array.isArray(e)&&e.length>0?e:t??[]}function p(e,t){return typeof e==`number`&&e>0?e:t}function m({mode:m=`renderer`,displayCount:h,items:g,pointerEventsDisabled:_=!1}){let v=m===`editor`?{displayCount:p(h,s.displayCount),items:f(g,d)}:{displayCount:h,items:g},y=o(),b=c(()=>a(y?.matchData)?i(y?.matchData):{displayCount:v.displayCount,items:v.items??[]},[y?.matchData,v.displayCount,v.items]),x=b.displayCount??b?.items?.length,S=Math.min(Math.max(x,0),Math.min(b.items.length,5)),C=b.items.slice(0,S);return C.length===0?null:l(t,{as:`section`,className:`w-full`,"aria-label":`图标广告`,style:{pointerEvents:_?`none`:void 0},children:l(t,{className:`flex overflow-x-auto`,style:{gap:`8px`,padding:`16px 24px`,backgroundColor:`#131313`,alignItems:`center`,justifyContent:C.length>=5?`space-between`:`flex-start`},children:C.map((i,a)=>l(r,{href:i.jumpUrl,className:`block shrink-0`,style:{width:`100px`},children:u(t,{className:`flex flex-col items-center`,style:{gap:`12px`},children:[l(t,{className:`relative overflow-hidden`,style:{width:`100px`,height:`61px`,borderRadius:`10px`,backgroundColor:`#616161`},children:l(e,{src:i.icon,alt:i.title||`图标广告`,fill:!0,className:`object-cover object-center`,unoptimized:!0})}),l(n,{className:`truncate text-center text-white`,style:{width:`100px`,fontSize:`12px`,lineHeight:1,fontWeight:500},children:i.title}),l(t,{className:`flex items-center justify-center`,style:{minWidth:`35px`,padding:`2px 8px`,borderRadius:`4px`,backgroundColor:`rgba(255, 255, 255, 0.33)`},children:l(n,{className:`whitespace-nowrap text-white`,style:{fontSize:`10px`,lineHeight:`normal`,fontWeight:400},children:i.badgeText||`广告`})})]})},`${i.jumpUrl}-${a}`))})})}export{m as IconAd};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{mergeStyles as e}from"../../utils/styles/helpers.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Carousel as r,CarouselContent as i,CarouselItem as a}from"../../../ui/carousel.mjs";import{Text as o}from"../../../ui/text.mjs";import s from"../../../ui/link.mjs";import
|
|
2
|
+
"use client";import{mergeStyles as e}from"../../utils/styles/helpers.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Carousel as r,CarouselContent as i,CarouselItem as a}from"../../../ui/carousel.mjs";import{Text as o}from"../../../ui/text.mjs";import s from"../../../ui/link.mjs";import{defaultProps as c}from"./default-props.mjs";import l from"clsx";import{useIsClient as u}from"foxact/use-is-client";import{useEffect as d,useRef as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";const g={list:[]};function _({mode:_=`renderer`,props:v=g,styles:y,events:b,...x}){let S=_===`editor`,{autoplay:C=c.autoplay,interval:w=c.interval,loop:T=c.loop,showIndicator:E=c.showIndicator,list:D=[]}={...c,...v,...x},[O,k]=p(),[A,j]=p(0),M=u(),N=f(null);if(d(()=>{if(!O||!M)return;let e=()=>{j(O.selectedScrollSnap())};return O.on(`select`,e),e(),()=>{O.off(`select`,e)}},[O,b,M]),d(()=>{if(!(!C||!O||D.length<=1))return N.current=setInterval(()=>{O.canScrollNext()?O.scrollNext():T&&O.scrollTo(0)},w*1e3),()=>{N.current&&=(clearInterval(N.current),null)}},[C,O,w,T,D.length]),!D||D.length===0)return null;let P=D[A],F=y?e(y,{}):void 0,I=P?.title==null?``:String(P.title).trim();return m(n,{className:l(`w-full px-[16px]`,S&&`pointer-events-none`),style:F,children:h(n,{className:`relative w-full overflow-hidden rounded-[8px]`,children:[m(r,{setApi:k,opts:{align:`start`,loop:T,skipSnaps:!1,dragFree:!1},className:`w-full`,children:m(i,{className:`ml-0`,children:D.map((e,n)=>m(a,{className:`pl-0`,children:m(s,{href:e.target,className:l(`block relative w-full overflow-hidden touch-manipulation`,`aspect-[358/166]`),children:m(t,{src:e.coverUrl,alt:e.title||`Banner ${n+1}`,fill:!0,objectFit:`cover`,unoptimized:!0})})},n))})}),(I||E&&D.length>1)&&m(n,{className:`absolute inset-0 pointer-events-none`,style:{background:`linear-gradient(180deg, rgba(8, 2, 17, 0) 0%, rgba(8, 2, 17, 0.28) 55%, rgba(8, 2, 17, 0.4) 100%)`}}),I&&m(n,{className:l(`absolute left-[16px] bottom-[14px] pointer-events-none`,`right-[58px]`),children:m(o,{as:`p`,className:`text-[16px] leading-[22px] text-white/90 line-clamp-1`,children:I})}),E&&D.length>1&&m(n,{className:l(`absolute bottom-[22px] flex items-center gap-[6px] pointer-events-auto`,`right-[16px]`),children:D.map((e,t)=>m(`button`,{type:`button`,className:l(`block size-[4px] rounded-full`,t===A?`bg-white`:`bg-white/60`),"aria-label":`跳转到第 ${t+1} 个 Banner`,onClick:()=>O?.scrollTo(t)},t))})]})})}export{_ as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useLoginModalStore as i}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../../../hooks/query/use-query.mjs";import o from"../../../../common/interaction-animations.module.mjs";import s from"../../../../common/collection-popup/index.mjs";import c from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as l}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as ee}from"../../../../../hooks/use-content-operate.mjs";import te from"../../../../../assets/icons/detail/check-ok.mjs";import{useCallback as u,useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{usePathname as v,useSearchParams as y}from"next/navigation";import{useTranslations as b}from"next-intl";function x({className:e}){return h(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:h(`path`,{d:`M21.2121 6.89394C21.2121 4.25805 19.0753 2.12121 16.4394 2.12121C14.8261 2.12121 13.3991 2.92114 12.5336 4.15024C12.3349 4.4321 12.0115 4.59976 11.6667 4.59976C11.3218 4.59976 10.9984 4.4321 10.7997 4.15024C9.93421 2.92114 8.50725 2.12121 6.89394 2.12121C4.25804 2.12121 2.12121 4.25805 2.12121 6.89394C2.12121 9.40321 3.62133 11.9321 5.72562 14.0572C7.68391 16.0348 10.0088 17.5016 11.6667 18.137C13.3246 17.5016 15.6494 16.0348 17.6077 14.0572C19.712 11.9321 21.2121 9.40321 21.2121 6.89394ZM23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function S({className:e}){return h(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:h(`path`,{d:`M23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function C({className:e}){return h(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:h(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06ZM9.37675 8.14386C9.22265 8.45841 8.92279 8.6767 8.57614 8.72697L3.33644 9.48615L7.1365 13.2013C7.38683 13.446 7.50059 13.799 7.43996 14.1438L6.54096 19.2509L11.1675 16.7859L11.2866 16.731C11.5714 16.6219 11.8921 16.6405 12.1649 16.7859L16.7946 19.253L15.9028 14.1427C15.8428 13.7988 15.9559 13.4467 16.2052 13.2023L20.0001 9.48511L14.7967 8.72697C14.4525 8.67672 14.155 8.46057 14.0002 8.14904L11.6719 3.45827L9.37675 8.14386Z`,fill:`currentColor`})})}function ne({className:e}){return h(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:h(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06Z`,fill:`currentColor`})})}function w({className:e}){return h(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:h(`path`,{d:`M11.7968 0.0846035C12.212 -0.0873746 12.69 0.00771373 13.0078 0.325488L23.0077 10.3254C23.22 10.5377 23.3375 10.8271 23.3332 11.1273C23.3288 11.4272 23.2029 11.7123 22.9849 11.9183L12.985 21.3627C12.6625 21.6673 12.1901 21.7509 11.7827 21.5754C11.3753 21.3998 11.1111 20.9991 11.1111 20.5554V15.6216C8.22953 15.9648 6.08879 17.6095 4.58982 19.3391C3.74967 20.3085 3.13167 21.2821 2.7246 22.0148C2.52173 22.38 2.37311 22.6823 2.27646 22.8894C2.22828 22.9927 2.19344 23.0722 2.17121 23.1238C2.16011 23.1495 2.15201 23.169 2.14734 23.1802C2.1451 23.1856 2.14372 23.1893 2.143 23.191C1.94502 23.6852 1.42342 23.9699 0.900603 23.8692C0.377728 23.7684 0 23.3102 0 22.7776C0 17.9877 0.696606 13.8374 2.60632 10.8582C4.41013 8.04448 7.21019 6.40446 11.1111 6.14686V1.11107C11.1111 0.661725 11.3817 0.256615 11.7968 0.0846035ZM13.3333 7.22216C13.3333 7.8358 12.8358 8.33326 12.2222 8.33326C8.37436 8.33326 5.97849 9.71592 4.47697 12.0583C3.44269 13.6719 2.79177 15.8074 2.46852 18.4168C2.60946 18.2401 2.75584 18.061 2.91014 17.8829C4.8356 15.6613 7.89407 13.3332 12.2222 13.3332C12.8358 13.3332 13.3333 13.8307 13.3333 14.4443V17.9773L20.6282 11.0882L13.3333 3.79335V7.22216Z`,fill:`currentColor`})})}function T({mode:T=`renderer`,information:O,onUpdate:k}){let A=T===`editor`||!O?.id||O.id.startsWith(`preview-`),j=`${v()}?${y()?.toString()||``}`,M=p(j),N=b(`components.biz.business.detail`),P=l(),[F,I]=m(!1),[L,R]=m(!1),z=p(0),B=p(0),V=e(e=>e.userId),H=e(e=>e.isLogin),U=a();d(()=>{M.current!==j&&(c.clear(),M.current=j)},[j]),d(()=>()=>{c.clear()},[]);let W=u(()=>{V&&(U([`user-profile`,`mine`,V,`user-like-video`]),U([`user-profile`,`mine`,V,`user-like-post`]),U([`user-profile`,`mine`,V,`user-collect-video`,V]),U([`user-profile`,`mine`,V,`user-collect-post`,V]))},[U,V]),{likeAnimation:G,handleLikeOperate:K,handleDefaultCollectionOperate:q,handleShareOperate:J}=ee({id:O.id,isLike:O.like||!1,isDislike:O.dislike||!1,isCollect:O.collect||!1,likeCnt:D(O.static?.like_cnt),dislikeCnt:D(O.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!A,animationClasses:{like:o.likeShakeAnimation,dislike:o.dislikeShakeAnimation}}),Y=u(e=>{k?.({...e})},[k]),X=u(async()=>{if(F)return;if(!H){i.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,I(!0);let t=O.like||!1,n=O.dislike||!1,r=D(O.static?.like_cnt),a=D(O.static?.dislike_cnt),o=!t,s=Math.max(0,r+(o?1:-1)),c=o?!1:n,l=o&&n?Math.max(0,a-1):a;Y({like:o,dislike:c,static:{...O.static,like_cnt:s,dislike_cnt:l}});try{let e=await K();if(!e){Y({like:t,dislike:n,static:{...O.static,like_cnt:r,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??c,static:{...O.static,like_cnt:e.likeCnt,dislike_cnt:e.dislikeCnt??l}}),W(),window.sensors?.track?.(`detail_like_click`,{object_id:O.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),_.error(N(`detailOperate.operateFailed`))}finally{I(!1)}},[K,O,W,F,H,N,Y]),Z=f(()=>O.id,[O.id]),re=u(()=>{J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y]),Q=u(()=>{s.show({mode:`select`,onCollect:async e=>{try{let n=await t({new_collection_id:e,content_id:O.id});if(n.code!==0)throw Error(n.message||N(`detailOperate.collectFailed`));Y({collect:!0}),W(),_.success(N(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),_.error(N(`detailOperate.collectFailed`))}}})},[O.id,W,N,Y]),$=u(e=>{let t=e||N(`detailOperate.defaultCollection`);_.custom(e=>g(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[g(`div`,{className:`flex items-center gap-[10px]`,children:[h(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:h(te,{className:`w-[14px] h-[14px]`})}),g(`div`,{className:`flex items-center gap-[6px]`,children:[h(`span`,{className:`text-[14px] leading-[20px]`,children:N(`detailOperate.collectAdded`)}),h(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),h(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{_.dismiss(e),Q()},children:N(`detailOperate.modifyCollection`)})]}))},[Q,N]),ie=u(async()=>{if(L)return;if(!H){i.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e;let t=O.collect||!1,n=!t;R(!0),Y({collect:n}),n&&P.trigger(o.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t}),_.error(e?.message||N(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&_.success(N(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t}),console.error(`收藏操作失败:`,e),_.error(e?.message||N(`detailOperate.collectFailed`))}finally{R(!1)}},[P,q,O.id,O.collect,W,L,H,$,N,Y]);return g(n,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${A?`pointer-events-none`:``}`,children:[g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${F?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:X,children:[O.like?h(S,{className:`size-[28px] text-[#FF5D8F] ${G.animationClass}`}):h(x,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] ${O.like?`text-[#FF5D8F]`:`text-white`}`,children:O.static?O.static.like_cnt===0?N(`detailOperate.like`):E(O.static?.like_cnt):N(`detailOperate.like`)})]}),g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:ie,children:[O.collect?h(ne,{className:`size-[28px] text-[#FFC039] ${P.animationClass}`}):h(C,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] text-white`,children:N(`detailOperate.collection`)})]}),g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:re,children:[h(w,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] text-white`,children:N(`detailOperate.share`)})]})]})}function E(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function D(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}export{T as DetailOperate};
|
|
2
|
+
"use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useLoginModalStore as i}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../../../hooks/query/use-query.mjs";import o from"../../../../common/interaction-animations.module.mjs";import s from"../../../../common/collection-popup/index.mjs";import c from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as l}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as ee}from"../../../../../hooks/use-content-operate.mjs";import te from"../../../../../assets/icons/detail/check-ok.mjs";import{useCallback as u,useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{usePathname as v,useSearchParams as y}from"next/navigation";import{useTranslations as b}from"next-intl";function x({className:e}){return h(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:h(`path`,{d:`M21.2121 6.89394C21.2121 4.25805 19.0753 2.12121 16.4394 2.12121C14.8261 2.12121 13.3991 2.92114 12.5336 4.15024C12.3349 4.4321 12.0115 4.59976 11.6667 4.59976C11.3218 4.59976 10.9984 4.4321 10.7997 4.15024C9.93421 2.92114 8.50725 2.12121 6.89394 2.12121C4.25804 2.12121 2.12121 4.25805 2.12121 6.89394C2.12121 9.40321 3.62133 11.9321 5.72562 14.0572C7.68391 16.0348 10.0088 17.5016 11.6667 18.137C13.3246 17.5016 15.6494 16.0348 17.6077 14.0572C19.712 11.9321 21.2121 9.40321 21.2121 6.89394ZM23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function S({className:e}){return h(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:h(`path`,{d:`M23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function C({className:e}){return h(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:h(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06ZM9.37675 8.14386C9.22265 8.45841 8.92279 8.6767 8.57614 8.72697L3.33644 9.48615L7.1365 13.2013C7.38683 13.446 7.50059 13.799 7.43996 14.1438L6.54096 19.2509L11.1675 16.7859L11.2866 16.731C11.5714 16.6219 11.8921 16.6405 12.1649 16.7859L16.7946 19.253L15.9028 14.1427C15.8428 13.7988 15.9559 13.4467 16.2052 13.2023L20.0001 9.48511L14.7967 8.72697C14.4525 8.67672 14.155 8.46057 14.0002 8.14904L11.6719 3.45827L9.37675 8.14386Z`,fill:`currentColor`})})}function ne({className:e}){return h(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:h(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06Z`,fill:`currentColor`})})}function w({className:e}){return h(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:h(`path`,{d:`M11.7968 0.0846035C12.212 -0.0873746 12.69 0.00771373 13.0078 0.325488L23.0077 10.3254C23.22 10.5377 23.3375 10.8271 23.3332 11.1273C23.3288 11.4272 23.2029 11.7123 22.9849 11.9183L12.985 21.3627C12.6625 21.6673 12.1901 21.7509 11.7827 21.5754C11.3753 21.3998 11.1111 20.9991 11.1111 20.5554V15.6216C8.22953 15.9648 6.08879 17.6095 4.58982 19.3391C3.74967 20.3085 3.13167 21.2821 2.7246 22.0148C2.52173 22.38 2.37311 22.6823 2.27646 22.8894C2.22828 22.9927 2.19344 23.0722 2.17121 23.1238C2.16011 23.1495 2.15201 23.169 2.14734 23.1802C2.1451 23.1856 2.14372 23.1893 2.143 23.191C1.94502 23.6852 1.42342 23.9699 0.900603 23.8692C0.377728 23.7684 0 23.3102 0 22.7776C0 17.9877 0.696606 13.8374 2.60632 10.8582C4.41013 8.04448 7.21019 6.40446 11.1111 6.14686V1.11107C11.1111 0.661725 11.3817 0.256615 11.7968 0.0846035ZM13.3333 7.22216C13.3333 7.8358 12.8358 8.33326 12.2222 8.33326C8.37436 8.33326 5.97849 9.71592 4.47697 12.0583C3.44269 13.6719 2.79177 15.8074 2.46852 18.4168C2.60946 18.2401 2.75584 18.061 2.91014 17.8829C4.8356 15.6613 7.89407 13.3332 12.2222 13.3332C12.8358 13.3332 13.3333 13.8307 13.3333 14.4443V17.9773L20.6282 11.0882L13.3333 3.79335V7.22216Z`,fill:`currentColor`})})}function T({mode:T=`renderer`,information:O,onUpdate:k}){let A=T===`editor`||!O?.id||O.id.startsWith(`preview-`),j=`${v()}?${y()?.toString()||``}`,M=p(j),N=b(`components.biz.business.detail`),P=l(),[F,I]=m(!1),[L,R]=m(!1),z=p(0),B=p(0),V=e(e=>e.userId),H=e(e=>e.isLogin),U=a();d(()=>{M.current!==j&&(c.clear(),M.current=j)},[j]),d(()=>()=>{c.clear()},[]);let W=u(()=>{V&&(U([`user-profile`,`mine`,V,`user-like-video`]),U([`user-profile`,`mine`,V,`user-like-post`]),U([`user-profile`,`mine`,V,`user-collect-video`,V]),U([`user-profile`,`mine`,V,`user-collect-post`,V]))},[U,V]),{likeAnimation:G,handleLikeOperate:K,handleDefaultCollectionOperate:q,handleShareOperate:J}=ee({id:O.id,isLike:O.like||!1,isDislike:O.dislike||!1,isCollect:O.collect||!1,likeCnt:D(O.static?.like_cnt),dislikeCnt:D(O.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!A,animationClasses:{like:o.likeShakeAnimation,dislike:o.dislikeShakeAnimation}}),Y=u(e=>{k?.({...e})},[k]),X=u(async()=>{if(F)return;if(!H){i.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,I(!0);let t=O.like||!1,n=O.dislike||!1,r=D(O.static?.like_cnt),a=D(O.static?.dislike_cnt),o=!t,s=Math.max(0,r+(o?1:-1)),c=o?!1:n,l=o&&n?Math.max(0,a-1):a;Y({like:o,dislike:c,static:{...O.static,like_cnt:s,dislike_cnt:l}});try{let e=await K();if(!e){Y({like:t,dislike:n,static:{...O.static,like_cnt:r,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??c,static:{...O.static,like_cnt:e.likeCnt,dislike_cnt:e.dislikeCnt??l}}),W(),_.success(e.isLike?N(`detailOperate.likeSuccess`):N(`detailOperate.unlikeSuccess`)),window.sensors?.track?.(`detail_like_click`,{object_id:O.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),_.error(N(`detailOperate.likeFailed`))}finally{I(!1)}},[K,O,W,F,H,N,Y]),Z=f(()=>O.id,[O.id]),re=u(()=>{J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y]),Q=u(()=>{s.show({mode:`select`,onCollect:async e=>{try{let n=await t({new_collection_id:e,content_id:O.id});if(n.code!==0)throw Error(n.message||N(`detailOperate.collectFailed`));Y({collect:!0}),W(),_.success(N(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),_.error(N(`detailOperate.collectFailed`))}}})},[O.id,W,N,Y]),$=u(e=>{let t=e||N(`detailOperate.defaultCollection`);_.custom(e=>g(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[g(`div`,{className:`flex items-center gap-[10px]`,children:[h(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:h(te,{className:`w-[14px] h-[14px]`})}),g(`div`,{className:`flex items-center gap-[6px]`,children:[h(`span`,{className:`text-[14px] leading-[20px]`,children:N(`detailOperate.collectAdded`)}),h(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),h(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{_.dismiss(e),Q()},children:N(`detailOperate.modifyCollection`)})]}))},[Q,N]),ie=u(async()=>{if(L)return;if(!H){i.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e;let t=O.collect||!1,n=!t;R(!0),Y({collect:n}),n&&P.trigger(o.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t}),_.error(e?.message||N(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&_.success(N(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t}),console.error(`收藏操作失败:`,e),_.error(e?.message||N(`detailOperate.collectFailed`))}finally{R(!1)}},[P,q,O.id,O.collect,W,L,H,$,N,Y]);return g(n,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${A?`pointer-events-none`:``}`,children:[g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${F?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:X,children:[O.like?h(S,{className:`size-[28px] text-[#FF5D8F] ${G.animationClass}`}):h(x,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] ${O.like?`text-[#FF5D8F]`:`text-white`}`,children:O.static?O.static.like_cnt===0?N(`detailOperate.like`):E(O.static?.like_cnt):N(`detailOperate.like`)})]}),g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:ie,children:[O.collect?h(ne,{className:`size-[28px] text-[#FFC039] ${P.animationClass}`}):h(C,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] text-white`,children:N(`detailOperate.collection`)})]}),g(n,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:re,children:[h(w,{className:`size-[28px] text-white`}),h(r,{className:`text-center text-[14px] leading-[22px] text-white`,children:N(`detailOperate.share`)})]})]})}function E(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function D(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}export{T as DetailOperate};
|
|
@@ -72,6 +72,7 @@ declare const videoDetailMaterials: MaterialMap<readonly [DefineMaterialOption<t
|
|
|
72
72
|
upload: "upload";
|
|
73
73
|
}>>;
|
|
74
74
|
coverUrl: z$1.ZodOptional<z$1.ZodString>;
|
|
75
|
+
badge_url: z$1.ZodOptional<z$1.ZodString>;
|
|
75
76
|
titleMode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
76
77
|
content: "content";
|
|
77
78
|
custom: "custom";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import e from"../../../../../assets/icons/common/right_arrow_thin.mjs";import{DetailStyleOneActiveBorderLayer as t,SeriesEpisodes as n}from"../../../../common/series-episodes/index.mjs";import{useCardDecoration as r}from"../../../../../hooks/use-card-decoration.mjs";import{editorPreviewInformation as i}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as a}from"../shared/runtime-context-provider.mjs";import{useEffect as o,useMemo as s,useRef as c,useState as l}from"react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m(e,t,n){let r=Number.parseInt(e.id||``,10);return Number.isNaN(r)?e.name?.trim()||n(t):n(r)}function h({text:e}){let t=p(`components.biz.business.detail.detailIntroduction`),[n,r]=l(!1),[i,a]=l(!1),s=c(null);return o(()=>{r(!1)},[e]),o(()=>{if(n){a(!0);return}let t=s.current;if(!e||!t){a(!1);return}let r=()=>{a(t.scrollHeight>t.clientHeight+1)};r();let i=new ResizeObserver(r);return i.observe(t),()=>{i.disconnect()}},[n,e]),e?f(`div`,{className:`relative w-full`,children:[d(`p`,{ref:s,className:`w-full font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/50 ${n?``:`line-clamp-3`}`,children:e}),i&&d(`button`,{type:`button`,className:`font-['PingFang_SC'] text-[14px] font-medium not-italic leading-normal text-[#9054E5] ${n?`mt-[8px] ml-auto block`:`absolute right-0 bottom-0 flex h-[24px] w-[40px] items-center justify-end bg-gradient-to-r from-transparent via-[#161616] to-[#161616]`}`,onClick:()=>r(e=>!e),children:t(n?`collapse`:`expand`)})]}):null}function g({information:r,currentSeriesNum:i,onEpisodeChange:a}){let o=p(`components.common.seriesEpisodes`);function s(e){return o(`episodeLabel`,{episode:e})}let[c,h]=l(!1),[g,_]=l(!1),v=r.links?.length??0,y=r.links?.[i-1]?.id||r.links?.[0]?.id||``;return v<=1?null:f(u,{children:[f(`div`,{className:`mt-[16px] flex w-full flex-col gap-[16px]`,children:[f(`button`,{type:`button`,className:`flex w-full items-center justify-between`,onClick:()=>h(!0),children:[d(`span`,{className:`font-['PingFang_SC'] text-[18px] font-medium not-italic leading-[24px] text-text1`,children:o(`selectorTitle`)}),d(`span`,{className:`flex items-center opacity-60`,children:d(`span`,{className:`flex h-[24px] w-[24px] items-center justify-center p-[2px]`,children:d(e,{className:`h-[20px] w-[20px] text-text1`})})})]}),d(`div`,{className:`flex gap-[8px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:(r.links||[]).map((e,n)=>{let o=n+1,c=o===i,l=m(e,o,s);return f(`button`,{type:`button`,className:g?`relative flex h-[40px] min-w-[88px] shrink-0 items-center justify-center overflow-hidden rounded-[8px] px-[16px] transition-colors ${c?``:`bg-white/10`}`:`relative flex h-[56px] w-[56px] shrink-0 items-center justify-center overflow-hidden rounded-[8px] transition-colors ${c?``:`bg-white/10`}`,onClick:()=>a(o),children:[c&&d(t,{}),d(`span`,{className:`relative z-10
|
|
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`?
|
|
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};
|
|
@@ -25,6 +25,7 @@ declare const videoDetailRecommendMaterial: DefineMaterialOption<typeof VideoDet
|
|
|
25
25
|
upload: "upload";
|
|
26
26
|
}>>;
|
|
27
27
|
coverUrl: zod.ZodOptional<zod.ZodString>;
|
|
28
|
+
badge_url: zod.ZodOptional<zod.ZodString>;
|
|
28
29
|
titleMode: zod.ZodOptional<zod.ZodEnum<{
|
|
29
30
|
content: "content";
|
|
30
31
|
custom: "custom";
|
|
@@ -21,6 +21,7 @@ declare const videoDetailRecommendInspectorPropsSchema: z$1.ZodObject<{
|
|
|
21
21
|
upload: "upload";
|
|
22
22
|
}>>;
|
|
23
23
|
coverUrl: z$1.ZodOptional<z$1.ZodString>;
|
|
24
|
+
badge_url: z$1.ZodOptional<z$1.ZodString>;
|
|
24
25
|
titleMode: z$1.ZodOptional<z$1.ZodEnum<{
|
|
25
26
|
content: "content";
|
|
26
27
|
custom: "custom";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({rows:e.number(2,{label:`行数`}),columns:e.number(2,{label:`列数`}),smartTagEnabled:e.boolean(!1,{label:`智能铺设`}),title:e.string(`猜你喜欢`,{label:`推荐位名称`}),showPlayCount:e.boolean(!0,{label:`显示播放量`}),playCountDelta:e.number(0,{label:`播放量浮动`}),showEpisode:e.boolean(!0,{label:`显示集数`}),enableInfinite:e.boolean(!1,{label:`无限下拉`}),smartTagIds:n.array(n.string()).optional(),items:n.array(n.object({contentId:n.string(),coverMode:n.enum([`upload`,`content`]).optional(),coverUrl:n.string().optional(),titleMode:n.enum([`custom`,`content`]).optional(),title:n.string().optional(),description:n.string().optional(),showPlayCount:n.boolean().optional(),playCountDelta:n.number().optional(),showEpisode:n.boolean().optional()})).optional()}));({...t(r)});export{r as videoDetailRecommendInspectorPropsSchema};
|
|
2
|
+
import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({rows:e.number(2,{label:`行数`}),columns:e.number(2,{label:`列数`}),smartTagEnabled:e.boolean(!1,{label:`智能铺设`}),title:e.string(`猜你喜欢`,{label:`推荐位名称`}),showPlayCount:e.boolean(!0,{label:`显示播放量`}),playCountDelta:e.number(0,{label:`播放量浮动`}),showEpisode:e.boolean(!0,{label:`显示集数`}),enableInfinite:e.boolean(!1,{label:`无限下拉`}),smartTagIds:n.array(n.string()).optional(),items:n.array(n.object({contentId:n.string(),coverMode:n.enum([`upload`,`content`]).optional(),coverUrl:n.string().optional(),badge_url:n.string().optional(),titleMode:n.enum([`custom`,`content`]).optional(),title:n.string().optional(),description:n.string().optional(),showPlayCount:n.boolean().optional(),playCountDelta:n.number().optional(),showEpisode:n.boolean().optional()})).optional()}));({...t(r)});export{r as videoDetailRecommendInspectorPropsSchema};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{useRequest as n}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as r}from"../../../../common/keep-scroll-position/index.mjs";import{
|
|
2
|
+
"use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{useRequest as n}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as r}from"../../../../common/keep-scroll-position/index.mjs";import{normalizeRecommendBadgeUrl as i}from"../../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{useCardDecoration as a}from"../../../../../hooks/use-card-decoration.mjs";import{buildEditorPreviewRecommendList as o}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as s}from"../shared/runtime-context-provider.mjs";import{applyPlayCountDelta as ee,clampColumns as c,limitRecommendDisplayList as l,mergeManualAndPool as te,normalizeRecommendRuntimeProps as ne,resolveRows as re}from"./utils.mjs";import{useCallback as ie,useEffect as ae,useMemo as u,useState as oe}from"react";function se({rows:se,columns:ce,smartTagEnabled:f,smartTagIds:p,title:ve,showPlayCount:g,playCountDelta:_,showEpisode:v,enableInfinite:ye,items:y,mode:b=`renderer`}){let x=s()?.detailId||``,be=b===`editor`,S=be,{getVerticalHoCoverImageUrl:C,getTitleText:w}=a(),T=u(()=>ne({smartTagEnabled:f,smartTagIds:p,enableInfinite:ye,items:y}),[ye,y,f,p]),E=T.smartTagEnabled,D=T.smartTagIds,O=u(()=>T.items??[],[T.items]),k=T.enableInfinite&&!be,A=!E,j=k&&E&&!S,xe=re(se,k),M=c(ce),N=xe*M,P=Math.max(1,N),F=u(()=>[`video-detail-recommend`,x||`unknown`,P,D.join(`,`)].join(`:`),[x,P,D]),[Se,I]=r(`${F}:pool`,[]),[L,R]=r(`${F}:cursor`,void 0),[z,B]=r(`${F}:has-more`,!1),[V,H]=oe(!1),U=u(()=>o(N),[N]),{data:W,isFetching:Ce,isPending:we}=n([`video-detail-recommend`,x,j?`paged`:`all`,P,D.join(`,`)],async()=>S?null:await e({cursor:L,page_size:P,tags:D}),{enabled:!S&&E,refetchOnMount:`always`}),G=u(()=>S?U:le(W?.data?.videos),[W?.data?.videos,U,S]);ae(()=>{if(!j){H(!1),R(void 0);return}I(e=>{if(!G.length)return e;if(!e.length)return G;let t=[...G],n=new Set(G.map(e=>e.id).filter(Boolean));return e.forEach(e=>{(!e.id||!n.has(e.id))&&(t.push(e),e.id&&n.add(e.id))}),t});let e=d(W?.data);R(e);let t=e?!0:de(W?.data?.videos,P);B(e=>e||t),H(!1)},[W?.data,G,P,B,R,I,j]);let K=j?Se:G,q=u(()=>A?Array.from(new Set(O.map(e=>m(e.contentId)).filter(Boolean))):[],[O,A]),{data:Te,isFetching:Ee,isPending:De}=n([`video-detail-recommend-manual-details`,q.join(`,`)],async()=>{if(!q.length)return[];let e=await t({ids:q});return(Array.isArray(e.data?.videos)?e.data.videos:[]).map(e=>ue(e))},{enabled:q.length>0,refetchOnMount:`always`}),Oe=u(()=>A?new Set(O.map(e=>m(e.contentId)).filter(Boolean)):new Set,[O,A]),ke=u(()=>S?K:K.filter(e=>!Oe.has(e.id)),[K,S,Oe]),J=u(()=>{if(!A||!O.length)return[];let e=new Map;return K.forEach(t=>{let n=m(t.id);n&&e.set(n,t)}),(Te||[]).forEach(t=>{let n=m(t.id);n&&e.set(n,t)}),O.map((t,n)=>{let r=S?U[n%Math.max(1,U.length)]:he(t,n),a=m(t.contentId),o=typeof t.coverUrl==`string`?t.coverUrl.trim():``,s=e.get(a)??{...r,id:a||r.id||`preview-manual-${n+1}`,name:r.name||`猜你喜欢 ${n+1}`,img_y:o||r.img_y,img_x:o||r.img_x},ee=t.titleMode===`custom`?t.title:w(s),c=t.coverMode===`content`?C(s)||o:o||C(s),l=i(t.badge_url);return{info:{...s,name:ee||s.name,img_y:c||s.img_y,img_x:c||s.img_x,badge_url:l||h(s)},config:{showPlayCount:t.showPlayCount,playCountDelta:t.playCountDelta,showEpisode:t.showEpisode}}}).filter(Boolean)},[U,K,w,C,S,Te,O,A]),Y=u(()=>ke.map(e=>({info:e})),[ke]),Ae=A&&O.length>0,je=u(()=>Ae?J:te(J,Y,N),[Ae,J,N,Y]),Me=u(()=>{if(j||k){if(!J.length)return Y;let e=new Set(J.map(e=>e.info.id).filter(Boolean));return J.concat(Y.filter(t=>!e.has(t.info.id)))}return je},[je,J,Y,k,j]),X=u(()=>l(Me,N,k),[N,Me,k]),Z=z&&X.length>0?Math.max(0,X.length-4):-1,Q=Z>=0?`${F}:${Z}`:``,Ne=String(ve||``).trim(),$=ie(async()=>{if(!(!j||!z||V)){H(!0);try{let t=await e({cursor:L,page_size:P,tags:D}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=d(t.data),i=le(n),a=0;I(e=>{let t=new Set(e.map(e=>e.id).filter(Boolean)),n=[...e];return i.forEach(e=>{(!e.id||!t.has(e.id))&&(n.push(e),e.id&&t.add(e.id))}),a=n.length-e.length,n}),R(r),B((r?!0:de(n,P))&&a>0)}catch(e){console.error(`猜你喜欢分页加载失败`,e),B(!1)}finally{H(!1)}}},[z,V,L,P,D,B,R,I,j]);ae(()=>{if(!Q||!z||V||!j)return;let e=document.querySelector(`[data-detail-recommend-trigger="${Q}"]`);if(!(e instanceof HTMLElement))return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!V&&$()});return t.observe(e),()=>{t.disconnect()}},[$,z,V,j,Q]);let Pe=!S&&(V||E&&(Ce||we)||q.length>0&&(Ee||De));return{uiItems:u(()=>X.map((e,t)=>{let n=g!==!1&&(e.config?.showPlayCount??!0),r=Number(e.config?.playCountDelta??_??0),i=e.config?.showEpisode??v;return{sourceIndex:t,info:e.info,title:w(e.info),coverUrl:C(e.info),badgeImageUrl:h(e.info),detailPath:b===`renderer`?me(e.info):``,playCountText:pe(ee(e.info.play_count||0,r)),videoInfoText:fe(e.info),showPlayCount:n,showEpisode:i,score:ge(e.info.score),cardKind:_e(e.info)}}),[X,w,C,b,_,v,g]),shouldShowLoading:Pe,isPreview:S,resolvedColumns:M,resolvedModuleTitle:Ne,triggerIndex:Z,triggerMarker:Q}}function ce(e){let t=e.is_more_link?`y`:`n`;return{id:e.video_id||``,mid:``,name:e.name||``,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:e.content_type,episode_cnt:e.episode_count||0,show_at:e.show_at??``,position:``,img_type:e.img_type??``,img_x:e.img_x??``,img_y:e.img_y??``,img_width:``,img_height:``,play_count:e.play_count,preview_images:[],duration:String(e.duration??``),score:String(e.score??``),is_more_link:t,update_status:String(e.update_status??``),description:e.description??``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:e.source_tags??``,source_actor:[],links:Array.isArray(e.episodes)?e.episodes.map(e=>({id:e.id??``,name:e.name??``,preview_m3u8_url:e.preview_m3u8_url??``,m3u8_url:e.m3u8_url??``})):[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}function le(e){return Array.isArray(e)?e.map(e=>ce(e)):[]}function ue(e){let t=String(e?.id||e?.mid||e?.video_id||``),n=e?.is_more_link===`y`?`y`:`n`,r=Array.isArray(e?.links)?e.links.map(e=>({id:String(e?.id||``),name:String(e?.name||``),preview_m3u8_url:String(e?.preview_m3u8_url||``),m3u8_url:String(e?.m3u8_url||``)})):[],i=Array.isArray(e?.video_episodes)?e.video_episodes.length:0,a=Number(e?.episode_cnt||i||r.length||0);return{id:t,mid:String(e?.mid||t),name:String(e?.name||``),cat_id:String(e?.cat_id||``),cat_name:String(e?.cat_name||``),status:String(e?.status||`1`),status_text:String(e?.status_text||``),create_time:String(e?.create_time||``),content_type:e?.content_type,episode_cnt:Number.isFinite(a)?a:0,show_at:String(e?.show_at||``),position:String(e?.position||``),img_type:String(e?.img_type||``),img_x:String(e?.img_x||``),img_y:String(e?.img_y||``),img_width:String(e?.img_width||``),img_height:String(e?.img_height||``),play_count:Number(e?.play_count??e?.browse_count??0),preview_images:Array.isArray(e?.preview_images)?e.preview_images:[],duration:String(e?.duration||``),score:String(e?.score||``),is_more_link:n,update_status:String(e?.update_status||``),description:String(e?.description||``),language:String(e?.language||``),director:String(e?.director||``),actor:String(e?.actor||``),area:String(e?.area||``),issue_date:String(e?.issue_date||``),publisher:String(e?.publisher||``),series:String(e?.series||``),number:String(e?.number||``),tags:Array.isArray(e?.tags)?e.tags:[],source_tags:String(e?.source_tags||``),source_actor:Array.isArray(e?.source_actor)?e.source_actor:[],links:r,money:String(e?.money||``),up_user:String(e?.up_user||``),source_username:String(e?.source_username||``),task_id:String(e?.task_id||``),file_status:String(e?.file_status||``)}}function de(e,t){if(!Array.isArray(e)||e.length===0)return!1;let n=e[0];if(typeof n?.has_more==`boolean`)return n.has_more;let r=Number(n?.total??0);return Number.isFinite(r)&&r>0?r>t:e.length>=t}function d(e){let t=e?.cursor;return typeof t==`string`&&t.trim()?t:void 0}function fe(e){if(f(e)){let t=Number(e.episode_cnt||e.links?.length||0);return t>0?`全${t}集`:``}return p(Number(e.duration||0))}function f(e){return e.is_more_link===`y`}function p(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function pe(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function me(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}function m(e){return typeof e==`string`?e.trim():``}function h(e){return i(e.badge_url)}function he(e,t){let n=m(e.contentId)||`manual-${t+1}`,r=typeof e.coverUrl==`string`?e.coverUrl.trim():``,i=typeof e.title==`string`?e.title.trim():``,a=typeof e.description==`string`?e.description.trim():``;return{id:n,mid:n,name:i||`猜你喜欢 ${t+1}`,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:1,episode_cnt:0,show_at:``,position:``,img_type:``,img_x:r,img_y:r,img_width:``,img_height:``,play_count:0,preview_images:[],duration:``,score:``,is_more_link:`n`,update_status:``,description:a,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:``,source_actor:[],links:[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}function ge(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function _e(e){return String(e.img_type??``).trim().toLowerCase()===`long`?`short`:`tall`}export{se as useVideoDetailRecommendData};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
function e(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===1;if(typeof e==`string`){let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`y`||t===`yes`||t===`on`}return!1}function t(t){let n=e(t.smartTagEnabled),r=Array.isArray(t.smartTagIds)?t.smartTagIds.map(e=>String(e||``).trim()).filter(Boolean):[],i=n?e(t.enableInfinite):!1,a=Array.isArray(t.items)?t.items.filter(Boolean):t.items;return{...t,smartTagEnabled:n,smartTagIds:r,enableInfinite:i,items:a}}function n(e,t){let n=Number(e||1);if(!Number.isFinite(n))return 1;let r=Math.max(1,Math.floor(n));return t?r:Math.min(10,r)}function r(e){let t=Number(e??3);return Number.isFinite(t)?Math.min(6,Math.max(1,Math.floor(t))):3}function i(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function a(e,t,n){let r=Math.max(0,n),i=e.slice(0,r);return i.length>=r?i:i.concat(t.slice(0,r-i.length))}export{i as applyPlayCountDelta,r as clampColumns,a as mergeManualAndPool,t as normalizeRecommendRuntimeProps,n as resolveRows};
|
|
2
|
+
function e(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===1;if(typeof e==`string`){let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`y`||t===`yes`||t===`on`}return!1}function t(t){let n=e(t.smartTagEnabled),r=Array.isArray(t.smartTagIds)?t.smartTagIds.map(e=>String(e||``).trim()).filter(Boolean):[],i=n?e(t.enableInfinite):!1,a=Array.isArray(t.items)?t.items.filter(Boolean):t.items;return{...t,smartTagEnabled:n,smartTagIds:r,enableInfinite:i,items:a}}function n(e,t){let n=Number(e||1);if(!Number.isFinite(n))return 1;let r=Math.max(1,Math.floor(n));return t?r:Math.min(10,r)}function r(e){let t=Number(e??3);return Number.isFinite(t)?Math.min(6,Math.max(1,Math.floor(t))):3}function i(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function a(e,t,n){let r=Math.max(0,n),i=e.slice(0,r);return i.length>=r?i:i.concat(t.slice(0,r-i.length))}function o(e,t,n){return n?e:e.slice(0,Math.max(0,t))}export{i as applyPlayCountDelta,r as clampColumns,o as limitRecommendDisplayList,a as mergeManualAndPool,t as normalizeRecommendRuntimeProps,n as resolveRows};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import a from"../../../../ui/loading.mjs";import o from"../../../../ui/link.mjs";import{useGridFirstRowHeight as s,useWaterfallFirstRowHeight as c}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as l}from"../../../../../hooks/use-min-duration-loading.mjs";import u from"../../../../../assets/icons/common/right_arrow.mjs";import d from"../../../../../assets/icons/common/right_arrow_thin.mjs";import{WaterfallRecommend as f}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ee,HOME_RECOMMEND_DEFAULT_GRID_ROWS as p,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as m,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as h,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as te,HOME_RECOMMEND_DEFAULT_TITLE as ne,HOME_RECOMMEND_MAX_GRID_COLUMNS as re,HOME_RECOMMEND_MAX_GRID_ROWS as ie}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as ae}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as oe}from"./home-recommend-smart-layout.mjs";import{enrichHomeRecommendItemsWithVideoDetails as se}from"./home-recommend-video-detail.mjs";import{useCallback as ce,useEffect as g,useId as _,useLayoutEffect as le,useMemo as v,useRef as y,useState as b}from"react";import{Fragment as ue,jsx as x,jsxs as S}from"react/jsx-runtime";const de={backgroundImage:`var(--gradient-card-mask-medium)`},fe={},pe={list:[]},C=new Map,w=[];function me(e){if(e)return C.get(e)}function he(e,t){if(!e||(C.has(e)||w.push(e),C.set(e,{items:[...t.items],cursor:t.cursor}),w.length<=120))return;let n=w.shift();n&&C.delete(n)}function ge({variant:n,props:ae=fe,data:_=pe,mode:de=`renderer`}){let C=de===`editor`,{list:w,title:ge,cursor:T}=_,E=v(()=>Array.isArray(w)?w:[],[w]),D=v(()=>Array.isArray(_.icons)?_.icons:[],[_.icons]),{rows:O,columns:xe,moreLink:k,title:A,showPlayCount:j,playCountDelta:Se,showEpisode:Ce,enableInfinite:M,items:N,smartLayout:P}=ae,F=P?.enabled===!0,I=F&&oe(P?.sortRule),L=M===!0&&F,R=!C&&L&&E.length>=16,z=v(()=>F||!Array.isArray(N)?``:N.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[F,N]),[B,we]=b(0),[De,V]=b(E),[ke,Ae]=b(D),[je,H]=b(()=>typeof T==`string`?T:void 0),[Me,Ne]=b(!1),Pe=y(null),Fe=y(null),Ie=y(null),Le=y([]),U=y({left:null,right:null}),Re=y(!1),W=y(``),{isLoading:ze,show:Be,hide:Ve}=l(600),He=ye(O,p,ie),G=ye(xe,ee,re),K=L?16:n===`grid`?He*G:16,q=v(()=>[n,(()=>{if(!F||!P)return`manual:${z}`;if(I)return`smart:newest:${P.tagIds.join(`,`)}:${P.catIds.join(`,`)}`;let e=String(P.sortRule??``);return`smart:popular:${P.tagIds.join(`,`)}:${P.catIds.join(`,`)}:sr:${e}`})(),String(K)].join(`|`),[F,z,K,P,I,n]);g(()=>{V(E),Ae(D),H(typeof T==`string`?T:void 0)},[T,D,E]);let Ue=He*G,We=C&&n===`grid`,J=We?De.slice(0,Ue):De,Ge=We?ke.slice(0,Ue):ke,Ke=n===`waterfall`?6:4,qe=J.length>0?Math.max(0,J.length-Ke):-1,Je=!!je,Ye=A&&A.trim()||ge||ne,Y=j??te,X=Number(Se??m),Z=Ce??h,Xe=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,Ze=n===`grid`?d:C?u:d,Qe=ve(k),$e=(n===`waterfall`||!L)&&!!Qe,et=$e?Qe:``,tt=n===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`,nt=`size-[16px] text-text1`,rt=s({enabled:!C&&n===`grid`,containerRef:Fe,firstRowItemRef:Le,columns:G,itemsCount:J.length,deps:[n]}),it=c({enabled:!C&&n===`waterfall`,containerRef:Pe,firstRowRef:U,deps:[n,J.length]}),at=n===`grid`?rt:it,ot=ce(async()=>{if(C||W.current===q)return;let n=me(q);if(n){V(n.items),F&&H(n.cursor);return}if(F||z){W.current=q;try{if(Be(),!F){if(!z)return;let e=await se(E);V(e),he(q,{items:e});return}if(!P)return;let n={page_size:K,tags:P.tagIds.length>0?P.tagIds:void 0,cat_ids:P.catIds.length>0?P.catIds:void 0},r=I?await e(n,{cache:`no-store`}):await t(n,{cache:`no-store`}),i=Array.isArray(r.data?.videos)?r.data.videos:[],a=r.data?.cursor;V(i),H(a),he(q,{items:i,cursor:a})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{W.current===q&&(W.current=``),Ve()}}},[Ve,E,C,F,z,q,K,Be,P,I]);g(()=>{ot()},[ot]);let st=ce(async()=>{let n=je;if(!(!R||!n||Re.current)){Re.current=!0,Ne(!0);try{if(!P)return;let r={cursor:n,page_size:K,tags:P.tagIds.length>0?P.tagIds:void 0,cat_ids:P.catIds.length>0?P.catIds:void 0},i=I?await e(r):await t(r),a=Array.isArray(i.data?.videos)?i.data.videos:[],o=i.data?.cursor;a.length>0&&V(e=>e.concat(a)),H(e=>{if(!(!a.length||!o))return o===e?void 0:o})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),H(void 0)}finally{Re.current=!1,Ne(!1)}}},[je,K,R,P,I]);g(()=>{let e=Ie.current;if(!e||!R||!Je)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||Me||st()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[st,Je,Me,J.length,K,R,qe]),le(()=>{let e=Pe.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;we(t>0?(t-15)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let Q=v(()=>n===`waterfall`?Ee(J,Ge,B):{left:[],right:[]},[B,Ge,J,n]),ct=v(()=>n===`waterfall`?{left:Q.left.map(e=>Te(e,Y,X,Z)),right:Q.right.map(e=>Te(e,Y,X,Z))}:{left:[],right:[]},[X,Z,Y,n,Q.left,Q.right]);if(g(()=>{n===`waterfall`&&(Q.left.length||(U.current.left=null),Q.right.length||(U.current.right=null))},[n,Q.left.length,Q.right.length]),!J.length)return null;let $=!C&&ze,lt=!C&&Me,ut=at>0?at/2:160;return S(r,{className:`w-full mt-[16px]`,children:[n===`grid`&&S(r,{className:`flex items-center justify-between pl-[16px] pr-0 mb-[16px]`,children:[x(i,{className:Xe,children:Ye}),$e&&x(o,{href:et,"aria-label":`更多`,className:tt,children:x(Ze,{className:nt})})]}),n===`grid`&&S(r,{ref:Fe,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[J.map((e,t)=>{let n=Ge[t],r=be(e);return x(`div`,{ref:e=>{t===qe&&(Ie.current=e),t<G&&(Le.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:x(_e,{item:e,icon:n,index:t,showPlayCount:Y&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??X,showEpisode:r?.showEpisode??Z,widthStyle:{width:`100%`}})},Oe(e,t))}),$&&x(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&x(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:ut},"aria-hidden":!0,children:x(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&x(f,{title:Ye,moreHref:et||void 0,moreIcon:$e?x(Ze,{className:nt}):void 0,titleClassName:Xe,moreLinkClassName:tt,columns:ct,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{e.sourceIndex===qe&&(Ie.current=r),n===0&&(U.current[t]=r)},overlay:$?S(ue,{children:[x(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),x(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:ut},"aria-hidden":!0,children:x(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0}),lt&&x(r,{className:`w-full flex justify-center py-[12px]`,children:x(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function _e({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o}){return x(T,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o})}function T({item:e,icon:t,index:a,showPlayCount:s,playCountDelta:c,showEpisode:l,widthStyle:u}){let d=xe(e),f=e.name||e?.title||``,ee=e.id?O(e):`#`,p=we(e,t,a),m=I(e,l),h=s?M(e.static?.browse_cnt??0,c):``;return x(o,{href:ee,className:`block w-full`,style:u,children:S(r,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:`109 / 150`},children:[d&&x(n,{src:d,alt:f||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),x(r,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:de,"aria-hidden":!0}),p&&x(r,{className:`absolute left-[8px] top-[8px] z-10`,children:x(E,{url:p})}),m&&x(r,{className:`absolute right-[8px] top-[10px] z-10 max-w-[56px]`,children:x(i,{as:`span`,className:`block text-right text-[10px] leading-[14px] font-medium not-italic text-text1 line-clamp-1 font-['PingFang_SC']`,children:m})}),S(r,{className:`absolute left-[8px] right-[8px] bottom-[8px] top-[78px] z-10 flex flex-col justify-end`,children:[x(r,{className:`flex min-h-[40px] w-full items-end`,children:x(i,{as:`h3`,className:`w-full line-clamp-2 text-[14px] font-medium not-italic leading-normal text-white font-['PingFang_SC']`,children:f})}),h&&S(r,{className:`flex h-[20px] items-center gap-[6px]`,children:[x(D,{className:`h-[15px] w-[12px] shrink-0`}),x(i,{as:`span`,className:`shrink-0 whitespace-nowrap text-[14px] font-normal not-italic leading-normal text-text3 font-['PingFang_SC']`,children:h})]})]})]})})}function E({url:e}){return x(n,{src:e,alt:`角标`,width:96,height:18,className:`h-[18px] w-auto max-w-[96px] object-contain`})}function D({className:e}){let t=_().replace(/:/g,``),n=`grid-heat-outer-${t}`,r=`grid-heat-highlight-left-${t}`,i=`grid-heat-highlight-right-${t}`;return S(`svg`,{viewBox:`0 0 11.9811 15`,fill:`none`,"aria-hidden":!0,className:e,children:[x(`path`,{d:`M2.94686 4.47572C4.52521 4.03871 4.39118 0.994604 4.39118 0C7.76131 0.497302 8.72372 3.31535 9.20563 4.97302C14.02 7.45953 12.568 15.9138 4.87263 14.9191C-2.42073 13.9763 -0.183446 5.34241 2.94686 4.47572Z`,fill:`url(#${n})`}),x(`path`,{d:`M5.66995 6.45327C6.82541 4.06622 5.16406 1.16037 4.20118 0C4.13684 1.21533 4.37554 3.91735 2.75432 4.45159C1.0513 5.01279 0.16048 7.16814 0 8.16274L3.26275 9.93438C3.58371 9.76861 4.51449 8.84032 5.66995 6.45327Z`,fill:`url(#${r})`,transform:`translate(0.19 0.01)`}),x(`path`,{d:`M3.55359 3.57102C2.65587 2.53581 3.298 0.846416 3.48828 0C0.514078 0.39887 -0.0720454 5.22416 0.0066677 7.58695L4.28508 8.57876C4.99512 7.12607 4.45131 4.60622 3.55359 3.57102Z`,fill:`url(#${i})`,transform:`translate(7.39 2.85)`}),S(`defs`,{children:[S(`linearGradient`,{id:n,x1:`7.35676`,y1:`1.93157`,x2:`3.49864`,y2:`15.4663`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{offset:`0.0817308`,stopColor:`#FF3F49`}),x(`stop`,{offset:`0.6`,stopColor:`#FF4D56`}),x(`stop`,{offset:`1`,stopColor:`#FFA060`})]}),S(`linearGradient`,{id:r,x1:`4.39349`,y1:`0`,x2:`0.834125`,y2:`10.4383`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFBCB5`}),x(`stop`,{offset:`0.834055`,stopColor:`#FE676F`,stopOpacity:`0`})]}),S(`linearGradient`,{id:i,x1:`2.30551`,y1:`2.82163`,x2:`0.860506`,y2:`6.96924`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFA49B`}),x(`stop`,{offset:`1`,stopColor:`#FE676F`,stopOpacity:`0`})]})]})]})}function O(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ve(e){return e?e.trim():``}function ye(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function be(e){return e[ae]}function xe(e){return e.img_y||e.img_x||e?.coverUrl}function k(e){return typeof e==`string`?e:``}function A(e){return typeof e==`string`?e.trim():``}function j(e){return A(e.img_type).toLowerCase()===`long`?`short`:`tall`}function Se(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function Ce(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?F(e,!0):``)}function M(e,t){let n=z(e,t);return n<=0?``:`${N(n)}热度`}function N(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e4?`${Math.floor(e/1e4)}万`:Math.floor(e).toString()}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)||B(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 z(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function B(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 we(e,t,n){return k(e.badge_url)||k(t?.material_url)||``}function Te(e,t,n,r){let i=j(e.item),a=Se(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?O(e.item):`#`,c=we(e.item,e.icon,e.index),l=Ce(e.item,r),u=t?M(e.item.static?.browse_cnt??0,n):``,d=P(e.item.score);return{key:Oe(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,metaPrimaryText:l,heatText:u,score:d}}function Ee(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=De(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 De(e,t){return e?(j(t)===`tall`?218:120)+16:0}function Oe(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{ge as default};
|
|
2
|
+
"use client";import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import a from"../../../../ui/loading.mjs";import o from"../../../../ui/link.mjs";import{useGridFirstRowHeight as s,useWaterfallFirstRowHeight as c}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as l}from"../../../../../hooks/use-min-duration-loading.mjs";import u from"../../../../../assets/icons/common/right_arrow.mjs";import d from"../../../../../assets/icons/common/right_arrow_thin.mjs";import f from"../../../../../assets/icons/detail/video_flag.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as p,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as ee,normalizeRecommendBadgeUrl as m}from"../../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{WATERFALL_SHORT_CARD_ASPECT_RATIO as h,WATERFALL_TALL_CARD_ASPECT_RATIO as te,buildWaterfallRecommendLegacyDisplay as g}from"../../../../common/list/waterfall-recommend/waterfall-recommend-display.mjs";import{WaterfallRecommend as ne}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as re,HOME_RECOMMEND_DEFAULT_GRID_ROWS as ie,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as ae,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as _,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as v,HOME_RECOMMEND_DEFAULT_TITLE as oe,HOME_RECOMMEND_MAX_GRID_COLUMNS as se,HOME_RECOMMEND_MAX_GRID_ROWS as ce}from"./home-recommend-default-config.mjs";import{buildHomeRecommendHeatText as y,resolveHomeRecommendBrowseCount as b}from"./home-recommend-play-count.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as le}from"./home-recommend-preview.mjs";import{limitPopularVideoPageItems as ue}from"./home-recommend-smart-tag.mjs";import{enrichHomeRecommendItemsWithVideoDetails as de}from"./home-recommend-video-detail.mjs";import{useCallback as fe,useEffect as x,useLayoutEffect as pe,useMemo as S,useRef as C,useState as w}from"react";import{Fragment as me,jsx as T,jsxs as E}from"react/jsx-runtime";const he={backgroundImage:`var(--gradient-card-mask-medium)`},ge={},_e={list:[]},D=new Map,O=[];function ve(e){if(e)return D.get(e)}function ye(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 be({variant:n,props:f=ge,data:p=_e,mode:ee=`renderer`}){let m=ee===`editor`,{list:h,title:te,cursor:g}=p,y=S(()=>Array.isArray(h)?h:[],[h]),b=S(()=>Array.isArray(p.icons)?p.icons:[],[p.icons]),{rows:le,columns:he,moreLink:D,title:O,showPlayCount:be,playCountDelta:Se,showEpisode:k,enableInfinite:Ee,items:A,smartLayout:j}=f,M=j?.enabled===!0,N=M&&isHomeRecommendLatestSortRule(j?.sortRule),P=Ee===!0&&M,F=!m&&P&&y.length>=16,I=S(()=>M||!Array.isArray(A)?``:A.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[M,A]),[L,De]=w(0),[R,z]=w(y),[Ae,Me]=w(b),[Ne,B]=w(()=>typeof g==`string`?g:void 0),[V,Pe]=w(!1),Fe=C(null),Ie=C(null),H=C(null),Le=C([]),U=C({left:null,right:null}),W=C(!1),G=C(``),{isLoading:Re,show:ze,hide:Be}=l(600),Ve=we(le,ie,ce),K=we(he,re,se),q=P?16:n===`grid`?Ve*K:16,J=S(()=>[n,(()=>{if(!M||!j)return`manual:${I}`;if(N)return`smart:newest:${j.tagIds.join(`,`)}:${j.catIds.join(`,`)}`;let e=String(j.sortRule??``);return`smart:popular:${j.tagIds.join(`,`)}:${j.catIds.join(`,`)}:sr:${e}`})(),String(q)].join(`|`),[M,I,q,j,N,n]);x(()=>{z(y),Me(b),B(typeof g==`string`?g:void 0)},[g,b,y]);let He=Ve*K,Ue=m&&n===`grid`,Y=Ue?R.slice(0,He):R,We=Ue?Ae.slice(0,He):Ae,Ge=n===`waterfall`?6:4,Ke=Y.length>0?Math.max(0,Y.length-Ge):-1,qe=!!Ne,Je=O&&O.trim()||te||oe,X=be??v,Z=Number(Se??ae),Q=k??_,Ye=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,Xe=n===`grid`?d:m?u:d,Ze=Ce(D),Qe=(n===`waterfall`||!P)&&!!Ze,$e=Qe?Ze:``,et=n===`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`}`,tt=`size-[16px] text-text1`,nt=s({enabled:!m&&n===`grid`,containerRef:Ie,firstRowItemRef:Le,columns:K,itemsCount:Y.length,deps:[n]}),rt=c({enabled:!m&&n===`waterfall`,containerRef:Fe,firstRowRef:U,deps:[n,Y.length]}),it=n===`grid`?nt:rt,at=fe(async()=>{if(m||G.current===J)return;let e=ve(J);if(e){z(e.items),M&&B(e.cursor);return}if(M||I){G.current=J;try{if(ze(),!M){if(!I)return;let e=await de(y);z(e),ye(J,{items:e});return}if(!j)return;let e=await t({page_size:q,tags:j.tagIds.length>0?j.tagIds:void 0,cat_ids:j.catIds.length>0?j.catIds:void 0},{cache:`no-store`}),n=ue(e.data?.videos,q),r=e.data?.cursor;z(n),B(r),ye(J,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{G.current===J&&(G.current=``),Be()}}},[Be,y,m,M,I,J,q,ze,j,N]);x(()=>{at()},[at]);let ot=fe(async()=>{let n=Ne;if(!(!F||!n||W.current)){W.current=!0,Pe(!0);try{if(!j)return;let r={cursor:n,page_size:q,tags:j.tagIds.length>0?j.tagIds:void 0,cat_ids:j.catIds.length>0?j.catIds:void 0},i=N?await e(r):await t(r),a=Array.isArray(i.data?.videos)?i.data.videos:[],o=i.data?.cursor;a.length>0&&z(e=>e.concat(a)),B(e=>{if(!(!a.length||!o))return o===e?void 0:o})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),B(void 0)}finally{W.current=!1,Pe(!1)}}},[Ne,q,F,j,N]);x(()=>{let e=H.current;if(!e||!F||!qe)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||V||ot()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[ot,qe,V,Y.length,q,F,Ke]),pe(()=>{let e=Fe.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;De(t>0?(t-15)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let $=S(()=>n===`waterfall`?ke(Y,We,L):{left:[],right:[]},[L,We,Y,n]),st=S(()=>n===`waterfall`?{left:$.left.map(e=>Oe(e,X,Z,Q)),right:$.right.map(e=>Oe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,n,$.left,$.right]);if(x(()=>{n===`waterfall`&&($.left.length||(U.current.left=null),$.right.length||(U.current.right=null))},[n,$.left.length,$.right.length]),!Y.length)return null;let ct=!m&&Re,lt=!m&&V,ut=it>0?it/2:160;return E(r,{className:`w-full mt-[16px]`,children:[n===`grid`&&E(r,{className:`flex items-center justify-between pl-[16px] pr-0 mb-[16px]`,children:[T(i,{className:Ye,children:Je}),Qe&&T(o,{href:$e,"aria-label":`更多`,className:et,children:T(Xe,{className:tt})})]}),n===`grid`&&E(r,{ref:Ie,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[Y.map((e,t)=>{let n=We[t],r=Te(e);return T(`div`,{ref:e=>{t===Ke&&(H.current=e),t<K&&(Le.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:T(xe,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`}})},je(e,t))}),ct&&T(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),ct&&T(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:ut},"aria-hidden":!0,children:T(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&T(ne,{title:Je,moreHref:$e||void 0,moreIcon:Qe?T(Xe,{className:tt}):void 0,titleClassName:Ye,moreLinkClassName:et,columns:st,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{e.sourceIndex===Ke&&(H.current=r),n===0&&(U.current[t]=r)},overlay:ct?E(me,{children:[T(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),T(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:ut},"aria-hidden":!0,children:T(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0}),lt&&T(r,{className:`w-full flex justify-center py-[12px]`,children:T(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function xe({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o}){return T(Se,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o})}function Se({item:e,icon:t,index:a,showPlayCount:s,playCountDelta:c,showEpisode:l,widthStyle:u}){let d=j(e),ne=d===`short`?h:te,re=M(e,d),ie=e.name||e?.title||``,ae=e.id?k(e):`#`,_=g({title:ie,badgeImageUrl:z(e,t,a),episodeText:I(e,l),heatText:s?y(b(e),c):``,score:P(e.score)}),v=m(_.topLeftBadgeImageUrl);return T(o,{href:ae,className:`block w-full`,style:u,children:E(me,{children:[E(r,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:ne},children:[re&&T(n,{src:re,alt:ie||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),T(r,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:he,"aria-hidden":!0}),v&&T(r,{className:ee,children:T(n,{src:v,alt:`角标`,width:96,height:18,className:p})}),_.topRightScoreText&&T(i,{as:`span`,className:`absolute right-[8px] top-[8px] z-10 shrink-0 text-[14px] leading-[22px] font-semibold text-[#FFC24B]`,children:_.topRightScoreText}),E(r,{className:`absolute left-[8px] right-[8px] bottom-[8px] z-10 flex items-end justify-between gap-[8px]`,children:[T(r,{className:`flex min-w-0 items-center gap-[4px]`,children:_.bottomLeftHeatText&&E(me,{children:[T(f,{className:`h-[16px] w-[16px] shrink-0 text-white`}),T(i,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:_.bottomLeftHeatText})]})}),_.bottomRightEpisodeText&&T(i,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:_.bottomRightEpisodeText})]})]}),T(r,{className:`mt-[8px] overflow-hidden`,children:T(i,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:_.title})})]})})}function k(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function Ce(e){return e?e.trim():``}function we(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function Te(e){return e[le]}function Ee(e){return typeof e==`string`?e:``}function A(e){return typeof e==`string`?e.trim():``}function j(e){return A(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)||R(Number(e.duration||0)):``}function I(e,t){return t?L(e):``}function L(e){if(!De(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function De(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 R(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 Ee(e.badge_url)||Ee(t?.material_url)||``}function Oe(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),d=t?y(b(e.item),n):``,f=P(e.item.score);return{key:je(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,episodeText:l,metaPrimaryText:u,heatText:d,score:f}}function ke(e,t,n){let r=[],i=[],a=n<=0,o=0,s=0;return e.forEach((e,c)=>{let l=t[c];if(a){c%2==0?r.push({item:e,icon:l,index:c}):i.push({item:e,icon:l,index:c});return}let u=Ae(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 Ae(e,t){return e?(j(t)===`tall`?216:142)+16:0}function je(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{be as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
function e(e){let t=e.static,n=Number(t?.browse_cnt??t?.browse_count??0);return!Number.isFinite(n)||n<0?0:n}function t(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e4?`${Math.floor(e/1e4)}万`:Math.floor(e).toString()}function n(e,n){let r=Number(e||0),i=Number(n||0);return!Number.isFinite(r)||!Number.isFinite(i)?`0`:t(Math.max(0,r+i))}export{n as buildHomeRecommendHeatText,e as resolveHomeRecommendBrowseCount};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{resolveHomeRecommendFeedMode as n}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as r}from"./home-recommend-preview.mjs";import{
|
|
2
|
+
import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{resolveHomeRecommendFeedMode as n}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as r}from"./home-recommend-preview.mjs";import{limitPopularVideoPageItems as i,resolvePopularVideoPageSize as a}from"./home-recommend-smart-tag.mjs";import{batchGetHomeRecommendVideoDetailMap as o}from"./home-recommend-video-detail.mjs";function s(e){return typeof e==`string`?e.trim():``}function c(e){return typeof e==`string`?e.trim():``}function l(e){return Array.isArray(e)?e.map(e=>c(e)).filter(Boolean):[]}function u(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function d(e,t){let n=e,r=s(n.video_id||e.id||e.mid)||t,i=u(n.play_count)??u(e.browse_count),a=u(n.like_count),o=u(n.collect_count),c=(Array.isArray(n.episodes)?n.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0),l=i!==void 0||a!==void 0||o!==void 0?{browse_cnt:i,like_cnt:a,collect_cnt:o}:void 0;return{id:r,mid:s(e.mid),name:e.name||``,img_x:e.img_x||``,img_y:e.img_y||``,img_type:e.img_type,cat_id:e.cat_id,cat_name:e.cat_name,status:e.status,status_text:e.status_text,show_at:e.show_at,update_status:e.update_status,description:e.description,language:e.language,director:e.director,issue_date:e.issue_date,actor:e.actor,up_user:e.up_user,time:e.time,money:e.money,source_username:e.source_username,task_id:e.task_id,error_msg:e.error_msg,file_status:e.file_status,score:u(e.score)??void 0,duration:u(e.duration)??void 0,episode_cnt:c>0?c:void 0,type:e.is_more_link?2:1,static:l}}function f(e){let t={showPlayCount:e.showPlayCount,playCountDelta:e.playCountDelta,showEpisode:e.showEpisode};if(!(t.showPlayCount===void 0&&t.playCountDelta===void 0&&t.showEpisode===void 0))return t}function p(e,t){let n=c(t.coverUrl),i=t.coverMode===`content`?e.img_y||e.img_x||n||``:n||e.img_y||e.img_x||``,a=c(t.title),o=t.titleMode===`custom`||a&&t.titleMode!==`content`?a:e.name||``,s=c(t.description),l=c(t.badge_url),u=f(t);return{...e,name:o||e.name,img_y:i||e.img_y||e.img_x,img_x:i||e.img_x||e.img_y,description:s||e.description,badge_url:l||e.badge_url,[r]:u}}function m(e){let t=s(e.contentId),n=c(e.coverUrl),r=c(e.title),i=c(e.description);return{id:t,mid:t,name:r||``,img_x:n,img_y:n,description:i,type:1}}async function h(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:s(e.contentId)})),n=t.filter(e=>!!e.contentId).map(e=>({id:e.contentId})),r=n.length?await o(n):new Map;return t.map(e=>{let t=e.contentId?r.get(e.contentId):void 0;return p(t?d(t,e.contentId||``):m(e),e)})}async function g(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:s(e.contentId)})).filter(e=>!!e.contentId);if(!t.length)return[];let n=await o(t.map(e=>({id:e.contentId})));return t.map(e=>{let t=n.get(e.contentId||``);return p(t?d(t,e.contentId||``):m(e),e)})}async function _(t,n,r){let i=a(t),o=l(n),u=(Array.isArray(r)?r:[]).map(e=>c(e)).filter(Boolean);try{let t=[],n=new Set,r=new Set,a=``;for(;t.length<i;){let c=a||`__first__`;if(r.has(c))break;r.add(c);let l=await e({cursor:a||void 0,page_size:i-t.length,tags:o.length>0?o:void 0,cat_ids:u.length>0?u:void 0}),d=Array.isArray(l.data?.videos)?l.data.videos:[];d.forEach(e=>{let r=s(e?.id||e?.mid);r&&n.has(r)||(r&&n.add(r),t.push(e))});let f=l.data?.cursor??``;if(!f||!d.length){a=``;break}a=f}return{videos:t.slice(0,i),nextCursor:a,loaded:!0}}catch(e){return console.error(`推荐位获取最新视频失败(server)`,e),{videos:[],nextCursor:``,loaded:!1}}}async function v(e,n,r){let a=Math.max(1,Math.floor(Number(e)||16)),o=l(n),u=(Array.isArray(r)?r:[]).map(e=>c(e)).filter(Boolean);try{let e=[],n=new Set,r=new Set,c=``;for(;e.length<a;){let i=c||`__first__`;if(r.has(i))break;r.add(i);let l=await t({cursor:c||void 0,page_size:a-e.length,tags:o.length>0?o:void 0,cat_ids:u.length>0?u:void 0}),d=Array.isArray(l.data?.videos)?l.data.videos:[];d.forEach(t=>{let r=s(t?.id||t?.mid);r&&n.has(r)||(r&&n.add(r),e.push(t))});let f=l.data?.cursor??``;if(!f||!d.length){c=``;break}c=f}return{videos:i(e,a),nextCursor:c,loaded:!0}}catch(e){return console.error(`推荐位获取热门视频失败(server)`,e),{videos:[],nextCursor:``,loaded:!1}}}async function y({enableInfinite:e,pageSize:t=16,items:r=[],smartLayout:i}){let a=i?.enabled===!0,o=n(a),s=Array.isArray(r)&&r.length>0,c={list:[],icons:[],title:``,cursor:``,show_style:void 0};if(!a)return s?{feedMode:o,data:{...c,list:await h(r),cursor:``}}:{feedMode:o,data:{...c,list:[],cursor:``}};if(o===`manual-with-video-detail`&&i){let n=isHomeRecommendLatestSortRule(i.sortRule)?await _(t,i.tagIds,i.catIds):await v(t,i.tagIds,i.catIds);if(n.loaded){let t=e===!0;return{feedMode:o,data:{...c,list:n.videos,cursor:t?n.nextCursor:``}}}try{let e=await g(r);return{feedMode:o,data:{...c,list:e,cursor:``}}}catch(e){return console.error(`推荐位智能铺设补齐视频详情失败(server)`,e),{feedMode:o,data:{...c,list:[],cursor:``}}}}return{feedMode:o,data:c}}export{y as resolveHomeRecommendServerData};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as r,gUserViewUserInfo as i,pInteractionFollow as a,pInteractionUnfollow as o}from"../../../../../service/generated/client.mjs";import{useRouter as s}from"../../../../../utils/use-compatible-router.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{Skeleton as u}from"../../../../ui/skeleton.mjs";import{toast as d}from"../../../../../ui.mjs";import{useLoginModalStore as f}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as h,useUpdateRequest as g}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as _}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as v}from"../../../../common/icons/setting.mjs";import{UserProfileAvatar as y}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as b}from"./user-profile-cover-background.mjs";import{useEffect as x,useMemo as S,useState as ee}from"react";import{Check as C,Plus as w}from"lucide-react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";import O from"next/link";const k=n.persist,A=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,j=`/images/mine/img_mine_head_bg.png`;function te({showBackButton:n,isMine:r,enableCustomBackground:i,className:a}){return E(c,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,a),children:[T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,i?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!n}),disabled:!0,children:T(_,{className:`w-4 h-4`})}),T(c,{className:e({invisible:!r}),children:T(v,{className:`text-text1`})})]}),E(c,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[T(u,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),E(c,{className:`min-w-0 flex-1`,children:[T(u,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),E(c,{className:`mt-1 flex flex-col gap-1`,children:[T(u,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),T(u,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function ne({userId:n,currentUserId:r,isFollowing:i}){let s=D(`components.pages.profile`),{open:c}=f(),l=p(),u=g(),{mutateAsync:h,isPending:_}=m(async e=>a(e)),{mutateAsync:v,isPending:y}=m(async e=>o(e)),b=_||y;async function x(){if(!b){if(!r){c();return}try{if(i){let e=await v({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.unfollowSuccess`)),S(!1),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.unfollowFailed`))}else{let e=await h({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.followSuccess`)),S(!0),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.followFailed`))}}catch(e){console.error(`关注操作失败`,e),d.error(s(`client.operationFailed`))}}}function S(e){u([`user-profile`,`profile`,n],t=>!t||!t.data?t:{...t,data:{...t.data,is_following:e}})}return E(t,{type:`button`,variant:`ghost`,size:`xs`,className:e(`h-6 min-w-0 gap-1 rounded-full border px-2 py-0 text-[14px] font-normal leading-5 shadow-none`,`disabled:pointer-events-none disabled:opacity-100`,i?`border-[var(--color-text-tertiary)] bg-transparent text-[var(--color-text-tertiary)] hover:!bg-[var(--color-surface-white10)] hover:!text-[var(--color-text-tertiary)]`:`border-[var(--color-text-secondary)] bg-[var(--color-overlay-create-top-black50)] text-[var(--color-text-secondary)] backdrop-blur-[2px] hover:!bg-[var(--color-overlay-create-top-black50)] hover:!text-[var(--color-text-secondary)]`),onClick:x,disabled:b,children:[T(i?C:w,{className:`size-[14px]`}),s(b?`client.processing`:i?`client.followed`:`client.follow`)]})}function M({id:a,enableCustomBackground:o=!0,showBackButton:u=!0,requireLogin:d=!1,isEditorPreview:p=!1,className:m,mode:g=`renderer`}){let C=D(`components.pages.profile`),w=p||g===`editor`,M=!w,N=s(),{open:P}=f(),{isLogin:F,userId:I,token:L}=n(),[re,R]=ee(!1);x(()=>{if(!k){R(!0);return}R(k.hasHydrated());let e=k.onHydrate(()=>{R(!1)}),t=k.onFinishHydration(()=>{R(!0)});return()=>{e(),t()}},[]);let z=w?!1:F&&!!I&&!!L,B=w?``:I,V=B,H=a==null||!!a&&!!V&&a===V,U=H?[`user-profile`,`mine`]:[`user-profile`,`profile`,a],{data:W,isLoading:ie}=h(w?[`editor-preview`,...U]:U,()=>a?i({target_user_id:a,user_id:B||a}):r({user_id:a||B||``}),{staleTime:0,enabled:M&&(!!a||!!B)}),G=S(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${a??``}`,avatar:e.avatar||A,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||j}:{}},[a,W]),K=w||d&&H&&!z,q=H&&z&&!K,J=!z,ae=o&&q,oe=o&&J,se={name:C(`client.welcomeToPlanet`),description:C(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j};function Y(){P()}function ce(){N.back()}let X=K?null:H?z?T(O,{href:`/edit`,children:T(t,{variant:`ghost`,className:`h-auto min-h-0 rounded-full border border-[rgba(255,255,255,0.8)] bg-[rgba(11,3,23,0.5)] px-2 py-1 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)] backdrop-blur-[2px] hover:bg-[rgba(11,3,23,0.65)] hover:text-[rgba(255,255,255,0.9)]`,children:C(`client.editProfile`)})}):null:T(ne,{userId:a||``,currentUserId:B,isFollowing:G?.isFollowing}),Z=K?se:G,Q=Z.name||``,$=Z.description||Z.signature||``,le=Z.avatar||``;return M&&ie&&!W?T(te,{showBackButton:u,isMine:H,enableCustomBackground:o,className:m}):E(c,{className:e(`relative px-4 pb-8 pt-[16px]`,m),children:[T(c,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:T(b,{isMine:ae,enableCustomBackground:o,src:Z.background,onUnauthorizedClick:oe?Y:void 0})}),T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,o?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,onClick:ce,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!u}),children:T(_,{className:`h-4 w-4`})}),T(O,{href:`/settings`,className:e(`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,{invisible:!H}),children:T(v,{})})]}),E(c,{className:e(`relative z-10 mt-[56px] flex justify-between gap-3 items-center`),children:[T(y,{isMine:q,src:le,alt:Q||`avatar`,onUnauthorizedClick:J?Y:void 0}),E(c,{className:`min-w-0 flex-1`,children:[E(c,{className:e(`flex justify-between gap-3 items-center`),children:[F&&H?T(O,{href:`/edit`,className:`min-w-0`,children:T(l,{as:`p`,className:`
|
|
2
|
+
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as r,gUserViewUserInfo as i,pInteractionFollow as a,pInteractionUnfollow as o}from"../../../../../service/generated/client.mjs";import{useRouter as s}from"../../../../../utils/use-compatible-router.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{Skeleton as u}from"../../../../ui/skeleton.mjs";import{toast as d}from"../../../../../ui.mjs";import{useLoginModalStore as f}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as h,useUpdateRequest as g}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as _}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as v}from"../../../../common/icons/setting.mjs";import{UserProfileAvatar as y}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as b}from"./user-profile-cover-background.mjs";import{useEffect as x,useMemo as S,useState as ee}from"react";import{Check as C,Plus as w}from"lucide-react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";import O from"next/link";const k=n.persist,A=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,j=`/images/mine/img_mine_head_bg.png`;function te({showBackButton:n,isMine:r,enableCustomBackground:i,className:a}){return E(c,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,a),children:[T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,i?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!n}),disabled:!0,children:T(_,{className:`w-4 h-4`})}),T(c,{className:e({invisible:!r}),children:T(v,{className:`text-text1`})})]}),E(c,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[T(u,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),E(c,{className:`min-w-0 flex-1`,children:[T(u,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),E(c,{className:`mt-1 flex flex-col gap-1`,children:[T(u,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),T(u,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function ne({userId:n,currentUserId:r,isFollowing:i}){let s=D(`components.pages.profile`),{open:c}=f(),l=p(),u=g(),{mutateAsync:h,isPending:_}=m(async e=>a(e)),{mutateAsync:v,isPending:y}=m(async e=>o(e)),b=_||y;async function x(){if(!b){if(!r){c();return}try{if(i){let e=await v({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.unfollowSuccess`)),S(!1),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.unfollowFailed`))}else{let e=await h({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.followSuccess`)),S(!0),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.followFailed`))}}catch(e){console.error(`关注操作失败`,e),d.error(s(`client.operationFailed`))}}}function S(e){u([`user-profile`,`profile`,n],t=>!t||!t.data?t:{...t,data:{...t.data,is_following:e}})}return E(t,{type:`button`,variant:`ghost`,size:`xs`,className:e(`h-6 min-w-0 gap-1 rounded-full border px-2 py-0 text-[14px] font-normal leading-5 shadow-none`,`disabled:pointer-events-none disabled:opacity-100`,i?`border-[var(--color-text-tertiary)] bg-transparent text-[var(--color-text-tertiary)] hover:!bg-[var(--color-surface-white10)] hover:!text-[var(--color-text-tertiary)]`:`border-[var(--color-text-secondary)] bg-[var(--color-overlay-create-top-black50)] text-[var(--color-text-secondary)] backdrop-blur-[2px] hover:!bg-[var(--color-overlay-create-top-black50)] hover:!text-[var(--color-text-secondary)]`),onClick:x,disabled:b,children:[T(i?C:w,{className:`size-[14px]`}),s(b?`client.processing`:i?`client.followed`:`client.follow`)]})}function M({id:a,enableCustomBackground:o=!0,showBackButton:u=!0,requireLogin:d=!1,isEditorPreview:p=!1,className:m,mode:g=`renderer`}){let C=D(`components.pages.profile`),w=p||g===`editor`,M=!w,N=s(),{open:P}=f(),{isLogin:F,userId:I,token:L}=n(),[re,R]=ee(!1);x(()=>{if(!k){R(!0);return}R(k.hasHydrated());let e=k.onHydrate(()=>{R(!1)}),t=k.onFinishHydration(()=>{R(!0)});return()=>{e(),t()}},[]);let z=w?!1:F&&!!I&&!!L,B=w?``:I,V=B,H=a==null||!!a&&!!V&&a===V,U=H?[`user-profile`,`mine`]:[`user-profile`,`profile`,a],{data:W,isLoading:ie}=h(w?[`editor-preview`,...U]:U,()=>a?i({target_user_id:a,user_id:B||a}):r({user_id:a||B||``}),{staleTime:0,enabled:M&&(!!a||!!B)}),G=S(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${a??``}`,avatar:e.avatar||A,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||j}:{}},[a,W]),K=w||d&&H&&!z,q=H&&z&&!K,J=!z,ae=o&&q,oe=o&&J,se={name:C(`client.welcomeToPlanet`),description:C(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j};function Y(){P()}function ce(){N.back()}let X=K?null:H?z?T(O,{href:`/edit`,children:T(t,{variant:`ghost`,className:`h-auto min-h-0 rounded-full border border-[rgba(255,255,255,0.8)] bg-[rgba(11,3,23,0.5)] px-2 py-1 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)] backdrop-blur-[2px] hover:bg-[rgba(11,3,23,0.65)] hover:text-[rgba(255,255,255,0.9)]`,children:C(`client.editProfile`)})}):null:T(ne,{userId:a||``,currentUserId:B,isFollowing:G?.isFollowing}),Z=K?se:G,Q=Z.name||``,$=Z.description||Z.signature||``,le=Z.avatar||``;return M&&ie&&!W?T(te,{showBackButton:u,isMine:H,enableCustomBackground:o,className:m}):E(c,{className:e(`relative px-4 pb-8 pt-[16px]`,m),children:[T(c,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:T(b,{isMine:ae,enableCustomBackground:o,src:Z.background,onUnauthorizedClick:oe?Y:void 0})}),T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,o?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,onClick:ce,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!u}),children:T(_,{className:`h-4 w-4`})}),T(O,{href:`/settings`,className:e(`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,{invisible:!H}),children:T(v,{})})]}),E(c,{className:e(`relative z-10 mt-[56px] flex justify-between gap-3 items-center`),children:[T(y,{isMine:q,src:le,alt:Q||`avatar`,onUnauthorizedClick:J?Y:void 0}),E(c,{className:`min-w-0 flex-1`,children:[E(c,{className:e(`flex justify-between gap-3 items-center`),children:[F&&H?T(O,{href:`/edit`,className:`block min-w-0 max-w-[195px]`,children:T(l,{as:`p`,className:`truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,children:Q})}):T(l,{as:`p`,className:`min-w-0 max-w-[195px] truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,onClick:()=>{!F&&H&&Y()},children:Q}),X?T(c,{className:`shrink-0 pt-0.5`,children:X}):null]}),$&&T(c,{className:`pt-1`,children:T(l,{as:`p`,className:`line-clamp-2 max-w-[195px] break-words text-[14px] leading-[20px] text-[var(--color-text-white80)]`,children:$})})]})]})]})}export{M as UserProfileHeaderClient,j as defaultBackground};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as r,pUserEditUserInfo as i}from"../../../../../service/generated/client.mjs";import{uploadFile as a}from"../../../../../utils/upload-file.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"../../../../ui/avatar.mjs";import{Box as l}from"../../../../ui/box.mjs";import{Input as u}from"../../../../ui/input.mjs";import{Dialog as d,DialogContent as f}from"../../../../ui/dialog.mjs";import{Text as p}from"../../../../ui/text.mjs";import{useDeleteRequest as m}from"../../../../../hooks/query/use-query.mjs";import{ImageCropModal as h}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";const C=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,w=[`image/jpeg`,`image/png`];function T(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return w.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function E({isMine:w,src:E,alt:D,onUnauthorizedClick:O}){let k=S(`components.pages.profile`),A=g(null),{userId:j,setUserInfo:M,userInfo:N}=n(),P=m(),[F,I]=_(!1),[L,R]=_(!1),[z,B]=_(``),[V,H]=_(!1);function U(){if(!V){if(w){I(!0);return}O?.()}}function W(){z&&(URL.revokeObjectURL(z),B(``))}function G(){I(!1)}function K(){V||A.current?.click()}async function q(e){let t=(await r({user_id:String(j)})).data;return{user_id:String(j),nick_name:t?.nick_name??N?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??N?.signature??void 0,gender:t?.gender??N?.gender??void 0}}function J(e){let t=e.target.files?.[0];if(t){if(!T(t)){x.error(k(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){x.error(k(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}B(URL.createObjectURL(t)),R(!0),e.target&&(e.target.value=``)}}async function Y(e){if(!j){x.error(k(`client.loginRequiredForUpload`));return}try{H(!0);let t=await a(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await q(t.objectKey);await i(n),M({...N,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),P([`user-profile`,`mine`]),P([`user-profile`,`profile`,String(j)]),P([`user-edit-info`,String(j)]),I(!1),R(!1),x.success(k(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),x.error(k(`client.uploadFailed`))}finally{W(),H(!1)}}function X(){R(!1),W()}return b(v,{children:[w||O?y(t,{variant:`ghost`,size:`icon`,className:`h-[72px] w-[72px] rounded-full p-0 hover:bg-transparent`,onClick:U,"aria-label":`打开头像预览`,children:y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})})}):y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})}),y(d,{open:F,onOpenChange:G,children:y(f,{showCloseButton:!1,className:`bg-
|
|
2
|
+
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as r,pUserEditUserInfo as i}from"../../../../../service/generated/client.mjs";import{uploadFile as a}from"../../../../../utils/upload-file.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"../../../../ui/avatar.mjs";import{Box as l}from"../../../../ui/box.mjs";import{Input as u}from"../../../../ui/input.mjs";import{Dialog as d,DialogContent as f}from"../../../../ui/dialog.mjs";import{Text as p}from"../../../../ui/text.mjs";import{useDeleteRequest as m}from"../../../../../hooks/query/use-query.mjs";import{ImageCropModal as h}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";const C=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,w=[`image/jpeg`,`image/png`];function T(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return w.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function E({isMine:w,src:E,alt:D,onUnauthorizedClick:O}){let k=S(`components.pages.profile`),A=g(null),{userId:j,setUserInfo:M,userInfo:N}=n(),P=m(),[F,I]=_(!1),[L,R]=_(!1),[z,B]=_(``),[V,H]=_(!1);function U(){if(!V){if(w){I(!0);return}O?.()}}function W(){z&&(URL.revokeObjectURL(z),B(``))}function G(){I(!1)}function K(){V||A.current?.click()}async function q(e){let t=(await r({user_id:String(j)})).data;return{user_id:String(j),nick_name:t?.nick_name??N?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??N?.signature??void 0,gender:t?.gender??N?.gender??void 0}}function J(e){let t=e.target.files?.[0];if(t){if(!T(t)){x.error(k(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){x.error(k(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}B(URL.createObjectURL(t)),R(!0),e.target&&(e.target.value=``)}}async function Y(e){if(!j){x.error(k(`client.loginRequiredForUpload`));return}try{H(!0);let t=await a(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await q(t.objectKey);await i(n),M({...N,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),P([`user-profile`,`mine`]),P([`user-profile`,`profile`,String(j)]),P([`user-edit-info`,String(j)]),I(!1),R(!1),x.success(k(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),x.error(k(`client.uploadFailed`))}finally{W(),H(!1)}}function X(){R(!1),W()}return b(v,{children:[w||O?y(t,{variant:`ghost`,size:`icon`,className:`h-[72px] w-[72px] rounded-full p-0 hover:bg-transparent`,onClick:U,"aria-label":`打开头像预览`,children:y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})})}):y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})}),y(d,{open:F,onOpenChange:G,children:y(f,{showCloseButton:!1,className:`bg-transparent !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto `,children:b(l,{className:`fixed top-0 left-0 right-0 bottom-0 z-50 bg-black flex h-full w-full flex-col items-center justify-center`,children:[y(t,{variant:`ghost`,size:`icon`,className:`absolute left-0 top-0 h-14 w-14 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:G,"aria-label":`关闭头像预览`,children:y(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:y(`path`,{d:`M14.55.2a.889.889 0 0 1 1.25 1.25l-.06.067L9.255 8l6.483 6.482.06.069a.888.888 0 0 1-1.25 1.25l-.067-.062L8 9.256l-6.482 6.483A.888.888 0 1 1 .26 14.482L6.742 8 .26 1.517.2 1.45A.888.888 0 0 1 1.45.2l.067.062 6.482 6.482L14.482.261l.068-.062Z`})})}),b(o,{className:`w-50 h-50`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]}),b(t,{variant:`ghost`,className:e(`absolute bottom-8 left-0 right-0 mx-auto flex w-[366px] max-w-[90%] items-center justify-between rounded-3xl bg-[var(--color-surface-white10)] px-3 py-3 transition-colors hover:bg-[var(--color-surface-white20)]`,`active:scale-95 h-auto`),onClick:K,disabled:V,children:[y(p,{as:`span`,className:`text-base font-medium text-text1`,children:V?`上传中...`:`更换头像`}),b(`svg`,{className:`w-6 h-6 text-text1`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:[y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z`}),y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),y(u,{ref:A,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:J}),y(h,{open:L,onClose:X,imageSrc:z,onConfirm:Y})]})}export{E as UserProfileAvatar};
|
package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{Image as e}from"../../../../../../ui/image.mjs";import{Box as t}from"../../../../../../ui/box.mjs";import{EmptyState as n}from"../../../../../../ui/empty.mjs";import{InfiniteScroll as r}from"../../../../../../ui/infinite-scroll.mjs";import{Text as i}from"../../../../../../ui/text.mjs";import{Skeleton as a}from"../../../../../../ui/skeleton.mjs";import o from"../../../../../../ui/link.mjs";import{CollectionSelectIcon as s,CollectionSelectedIcon as c}from"../../../../../../common/list/collection-list/collection-select-icon.mjs";import{VideoIcon as l}from"../../../../../../common/icons/video.mjs";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";const m=`h-[128px] w-[173px]`,h={backgroundImage:`linear-gradient(179.56deg, rgba(8, 2, 17, 0.5) 1.27%, rgba(8, 2, 17, 0) 33.97%, rgba(8, 2, 17, 0) 63.33%, rgba(8, 2, 17, 0.5) 98.57%)`};function g(e){let t=Number.isFinite(e)?Math.max(0,e):0;return t<1e3?String(Math.floor(t)):t<1e6?`${(Math.floor(t/100)/10).toFixed(1)}K`:`${(Math.floor(t/1e5)/10).toFixed(1)}M`}function _(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let 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 v(){return d(t,{className:`flex w-full flex-col gap-4`,children:Array.from({length:4},(e,n)=>f(t,{className:`flex gap-3`,children:[d(a,{className:`shrink-0 rounded-[8px] bg-white/8 ${m}`}),f(t,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-1`,children:[d(a,{className:`h-5 w-full rounded bg-white/8`}),d(a,{className:`h-4 w-full rounded bg-white/8`})]})]},`collect-video-skeleton-${n}`))})}function y({item:n,isEditMode:r,isSelected:a,onToggleSelection:v}){let y=p(`components.ui.list.videoList`),b=n.id||``,x=g(n.viewCount),S=_(n.duration),C=n.is_more_link!==void 0&&n.is_more_link!==null,w=n.is_more_link?y(`videoListItem.series`):y(`videoListItem.movie`),T=n.metaPrimaryText?.trim()?`简介:${n.metaPrimaryText.trim()}`:``;function E(){!r||!b||v?.(b)}let D=f(t,{className:`flex min-w-0 gap-3`,children:[f(t,{className:`relative shrink-0 overflow-hidden rounded-[8px] bg-[#18111f] ${m}`,children:[n.coverImage&&d(e,{src:n.coverImage,alt:n.title||`cover`,fill:!0,objectFit:`cover`,className:`object-cover`}),d(t,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:h,"aria-hidden":!0}),!r&&f(u,{children:[C&&d(t,{className:`absolute left-2 top-3 z-10 flex max-h-[18px] items-center rounded bg-white/20 px-1 py-0.5`,children:d(i,{className:`text-center text-[12px] leading-[14px] text-white`,children:w})}),f(t,{className:`absolute bottom-3 left-2 right-2 z-10 flex items-center justify-between`,children:[f(t,{className:`flex min-w-0 items-center gap-1`,children:[d(l,{className:`size-4 shrink-0 text-white opacity-80`,"aria-hidden":!0}),x?d(i,{className:`truncate text-[14px] leading-5 text-white`,children:x}):null]}),S?d(i,{className:`shrink-0 text-[14px] leading-5 text-white`,children:S}):null]})]}),r&&d(t,{className:`pointer-events-none absolute left-2 top-2 z-20`,children:d(a?c:s,{})})]}),f(t,{className:`flex min-w-0 flex-1 flex-col gap-4`,children:[d(i,{as:`h3`,className:`line-clamp-2 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)]`,children:n.title}),T?d(i,{className:`line-clamp-2 text-[12px] leading-4 text-[rgba(255,255,255,0.5)]`,children:T}):null]})]});return r?d(`button`,{type:`button`,className:`w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:E,"aria-pressed":a,disabled:!b,children:D}):d(o,{href:n.id?`/video/${n.id}/${n.title}`:`#`,className:`block w-full`,children:D})}function b({list:e,loading:i=!1,hasMore:a=!1,loadMore:o,emptyText:s=``,isEditMode:c=!1,selectedIds:l,onToggleSelection:u}){return i&&e.length===0?d(v,{}):e.length===0?d(n,{type:`no-content`,text:s,className:`!pt-[72px]`}):d(r,{loadMore:async()=>{await o?.()},hasMore:!!o&&a,noMoreText:`没有更多了`,className:`w-full`,children:d(t,{className:`flex w-full flex-col gap-4`,children:e.map((e,t)=>{let n=e.id?`collect-video-row-${e.id}-${t}`:`collect-video-row-${t}`;return d(y,{item:e,isEditMode:c,isSelected:!!(e.id&&l?.has(e.id)),onToggleSelection:u},n)})})})}export{b as CollectVideoWaterfall};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{gInteractionGetBrowseList as e,gInteractionGetLikeList as t}from"../../../../../service/generated/client.mjs";import n from"dayjs";const r={video:1,post:2};function i(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function a(e,t){let r=e.name,a=n(t?t?.[e.content_id||``]?.create_time:e.create_time).toDate().getTime(),o=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{name:r,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:o,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:a,parent_content_info:{type:0}}}}function o(e,t){let r=e.is_more_link,i=n(t?t?.[e.id||``]?.create_time:e.show_at).toDate().getTime(),a=Number(e.duration??0),o=Number.isFinite(a)?Math.max(0,Math.floor(a)):0,s=e.img_y||e.img_x||``,c=e.img_x||e.img_y||``;return{id:e.id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:s||c,cover_image_thumbnail:s,cover_horizontal_image_thumbnail:c,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:o},statics_cnt:{browse_cnt:e.play_count||0},publish_time:i,parent_content_info:{type:0}}}}function s(e,t){let r=e.name,a=e.is_more_link,o=t[e.content_id||``].browse_time,s=n(o).toDate().getTime(),c=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{is_more_link:a,name:r||e.content,title:r||e.content,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:c,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:s,parent_content_info:{type:0}}}}function c(e,t){let r=e.is_more_link,i=t[e.id||``].browse_time,a=n(i).toDate().getTime(),o=Number(e.duration??0),s=Number.isFinite(o)?Math.max(0,Math.floor(o)):0,c=e.img_y||e.img_x||``,l=e.img_x||e.img_y||``,u=t[e.id||``]?.browse_duration||0,d=Number(t[e.id||``]?.browse_episode),f=0,p=0;return Number.isNaN(d)||(f=d),s&&u&&(p=Math.min(100,Math.floor(u/s*100))),{id:e.id||``,content_play_progress:{percent:p,series_num:f},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:c||l,cover_image_thumbnail:c,cover_horizontal_image_thumbnail:l,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:s},statics_cnt:{browse_cnt:e.play_count||0},publish_time:a,parent_content_info:{type:0}}}}async function l({targetUserId:e,page:n,contentType:i,pageSize:s=10}){if(!e)return{data:{list:[],total:0}};let c=await t({user_id:e,page:n,content_type:i,page_size:s}),l=c.data.like_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},u=
|
|
2
|
+
import{gInteractionGetBrowseList as e,gInteractionGetLikeList as t}from"../../../../../service/generated/client.mjs";import n from"dayjs";const r={video:1,post:2};function i(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function a(e,t){let r=e.name,a=n(t?t?.[e.content_id||``]?.create_time:e.create_time).toDate().getTime(),o=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{name:r,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:o,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:a,parent_content_info:{type:0}}}}function o(e,t){let r=e.is_more_link,i=n(t?t?.[e.id||``]?.create_time:e.show_at).toDate().getTime(),a=Number(e.duration??0),o=Number.isFinite(a)?Math.max(0,Math.floor(a)):0,s=e.img_y||e.img_x||``,c=e.img_x||e.img_y||``;return{id:e.id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:s||c,cover_image_thumbnail:s,cover_horizontal_image_thumbnail:c,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:o},statics_cnt:{browse_cnt:e.play_count||0},publish_time:i,parent_content_info:{type:0}}}}function s(e,t){let r=e.name,a=e.is_more_link,o=t[e.content_id||``].browse_time,s=n(o).toDate().getTime(),c=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{is_more_link:a,name:r||e.content,title:r||e.content,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:c,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:s,parent_content_info:{type:0}}}}function c(e,t){let r=e.is_more_link,i=t[e.id||``].browse_time,a=n(i).toDate().getTime(),o=Number(e.duration??0),s=Number.isFinite(o)?Math.max(0,Math.floor(o)):0,c=e.img_y||e.img_x||``,l=e.img_x||e.img_y||``,u=t[e.id||``]?.browse_duration||0,d=Number(t[e.id||``]?.browse_episode),f=0,p=0;return Number.isNaN(d)||(f=d),s&&u&&(p=Math.min(100,Math.floor(u/s*100))),{id:e.id||``,content_play_progress:{percent:p,series_num:f},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:c||l,cover_image_thumbnail:c,cover_horizontal_image_thumbnail:l,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:s},statics_cnt:{browse_cnt:e.play_count||0},publish_time:a,parent_content_info:{type:0}}}}async function l({targetUserId:e,page:n,contentType:i,pageSize:s=10}){if(!e)return{data:{list:[],total:0}};let c=await t({user_id:e,page:n,content_type:i,page_size:s}),l=c.data.like_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},u=c.data?.like_items?.map(e=>i===r.post?a(e.post_info,l):o(e?.video_info,l))||[],d=c.data?.has_more,f=typeof d==`boolean`?d:void 0;return{data:{list:u,total:c.data?.total??u.length,has_more:f}}}async function u({targetUserId:t,page:n,contentType:i,pageSize:a=10,authConfig:o}){if(!t)return{data:{list:[],total:0}};let l=await e({user_id:t,page:n,page_size:a,content_type:i},o),u=l.data.records?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},d=(l.data?.browse_items??[]).map(e=>i===r.post?s(e.post_info,u):c(e?.video_info,u)),f=l.data?.has_more?!0:void 0;return{data:{list:d,total:l.data?.total??d.length,has_more:f}}}export{u as getHistoryData,l as getLikeData,r as likeContentType};
|
|
@@ -11,6 +11,8 @@ interface CreateCollectionSheetProps {
|
|
|
11
11
|
visible: boolean;
|
|
12
12
|
/** 弹窗模式。 */
|
|
13
13
|
mode?: 'create' | 'edit';
|
|
14
|
+
/** 是否展示描述输入框。 */
|
|
15
|
+
showDescription?: boolean;
|
|
14
16
|
/** 编辑模式下的收藏夹 ID。 */
|
|
15
17
|
collectionId?: string;
|
|
16
18
|
/** 编辑模式的初始值。 */
|
|
@@ -30,6 +32,7 @@ interface CreateCollectionSheetProps {
|
|
|
30
32
|
declare function CreateCollectionSheet({
|
|
31
33
|
visible,
|
|
32
34
|
mode,
|
|
35
|
+
showDescription,
|
|
33
36
|
collectionId,
|
|
34
37
|
initialValues,
|
|
35
38
|
onClose,
|
|
@@ -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{gCommunityGetCollectionInfo as n,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as o,InputGroupAddon as s,InputGroupTextarea as c}from"../../ui/input-group.mjs";import{useDeleteRequest as l,useRequest as u}from"../../../hooks/query/use-query.mjs";import d from"../../ui/popup.mjs";import{useCallback as f,useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{XIcon as _}from"lucide-react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";
|
|
2
|
+
"use client";import{cn as e}from"../../../utils/cn.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as o,InputGroupAddon as s,InputGroupTextarea as c}from"../../ui/input-group.mjs";import{useDeleteRequest as l,useRequest as u}from"../../../hooks/query/use-query.mjs";import d from"../../ui/popup.mjs";import{useCallback as f,useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{XIcon as _}from"lucide-react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";function S(e){return{title:(e?.title??``).slice(0,50),description:(e?.description??``).slice(0,100)}}function C({visible:C,mode:w=`create`,showDescription:T=!0,collectionId:E,initialValues:D,onClose:O,onCreated:k,onUpdated:A,onSuccess:j}){let M=x(`components.pages.collectionCreate`),N=x(`components.common.collectionPopup`),{userId:P}=t(),F=l(),I=w===`edit`,L=D?.title!==void 0||D?.description!==void 0,R=C&&I&&!!E&&!L,z=typeof document>`u`?void 0:document.body,B=h(!1),[V,H]=g(!1),[U,W]=g(()=>S()),G=u([`collection-detail`,E,`sheet`],()=>n({collection_id:E}),{enabled:R}),K=G.data?.data?.data?.collection;p(()=>{C||(B.current=!1,H(!1))},[C]),p(()=>{if(!(!C||B.current)){if(!I){W(S()),B.current=!0;return}if(L){W(S(D)),B.current=!0;return}K&&(W(S({title:K.title,description:K.description})),B.current=!0)}},[K,L,D,I,C]);let q=f((e,t)=>{W(n=>({...n,[e]:t}))},[]),J=m(()=>R&&!B.current&&G.isLoading,[G.isLoading,R]),Y=M(I?`form.editTitle`:`form.createTitle`),X=I?M(`form.save`):N(`createModalAction`),Z=M(I?`form.saving`:`form.creating`);function Q(e){e||O?.()}function $(e){P&&(F([`user-profile`,`mine`]),F([`user-profile`,`mine`,P]),F([`user-profile`,`mine`,P,`user-collection-created`,P])),e&&F([`collection-detail`,e])}async function ee(){if(V)return;let e=U.title.trim(),t=U.description.trim();if(!e){b.error(M(`form.titleRequired`));return}if(I&&!E){b.error(M(`form.collectionNotFound`));return}let n=b.loading(Z);try{H(!0);let a=I?await i({collection_id:E,title:e,description:t,cover_image:``}):await r({title:e,description:t,cover_image:``});if(a.code!==0){b.error(a.message||M(I?`form.saveFailed`:`form.createFailed`),{id:n});return}$(E),b.success(I?N(`updateSuccess`):M(`form.createSuccess`),{id:n}),j?.(),I?A?.():k?.(),O?.()}catch(e){console.error(I?`编辑收藏夹失败`:`创建收藏夹失败`,e),b.error(M(I?`form.saveFailed`:`form.createFailed`),{id:n})}finally{H(!1)}}return v(d,{open:C,onOpenChange:Q,showCloseButton:!1,className:`!z-[1210] max-h-[85vh] rounded-t-[24px] bg-[var(--color-surface-panel-dark)] p-0 text-[var(--color-text-primary)] backdrop-blur-[50px]`,overlayClassName:`!z-[1200] overlay-create-collection`,overlayForceRender:!0,portalContainer:z,children:y(`div`,{className:`flex flex-col pb-[34px]`,children:[y(`div`,{className:`flex h-14 items-center justify-between px-4`,children:[v(`span`,{className:`text-lg font-medium text-[var(--color-text-primary)]`,children:Y}),v(`button`,{type:`button`,className:`flex h-6 w-6 items-center justify-center rounded text-[var(--color-text-primary)] opacity-60 hover:opacity-100`,onClick:()=>O?.(),"aria-label":`关闭`,children:v(_,{size:24})})]}),y(`div`,{className:`flex flex-col gap-4 px-4`,children:[y(a,{className:`flex flex-col gap-2`,children:[y(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:[v(`span`,{className:`text-[var(--color-border-required)]`,children:`* `}),M(`form.label`)]}),y(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3`,`focus-within:!border-[var(--color-border-danger)] focus-within:!ring-0`,J?`opacity-60`:``),children:[v(c,{maxLength:50,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.titlePlaceholder`),value:U.title,onChange:e=>q(`title`,e.target.value),disabled:V||J}),y(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[y(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.title.length,`/`,50]}),v(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`title`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),T&&y(a,{className:`flex flex-col gap-2`,children:[v(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:M(`form.descriptionLabel`)}),y(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3 focus-within:ring-0`,`focus-within:!border-[var(--color-border-danger)]`,J?`opacity-60`:``),children:[v(c,{maxLength:100,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.descriptionPlaceholder`),value:U.description,onChange:e=>q(`description`,e.target.value),disabled:V||J}),y(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[y(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.description.length,`/`,100]}),v(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`description`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),v(`button`,{type:`button`,className:`h-12 w-full max-w-[358px] self-center rounded-[var(--radius-pill)] text-base font-medium text-[var(--color-text-primary)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-50`,style:{background:`var(--gradient-action-button)`},onClick:ee,disabled:V||J,children:V?Z:X})]})]})})}export{C as CreateCollectionSheet};
|