@funhub/platform 0.2.13 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/biz.mjs +1 -1
- package/dist/common.d.mts +2 -1
- package/dist/common.mjs +1 -1
- package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
- package/dist/components/biz/business/advertisement/banner-ad/client.d.mts +3 -1
- package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +12 -0
- package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +12 -0
- package/dist/components/biz/business/advertisement/icon-ad/client.d.mts +3 -1
- package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +12 -0
- package/dist/components/biz/business/advertisement/popup-ad/client.d.mts +3 -1
- package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
- package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +3 -1
- package/dist/components/biz/business/advertisement/text-ad/client.d.mts +3 -1
- package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +12 -0
- package/dist/components/biz/business/detail/shared/detail-info-tags.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-info-title.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
- 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/shell.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/tracking.mjs +2 -0
- package/dist/components/biz/business/search-bar/variants/basic-search-bar/runtime/client.mjs +1 -1
- package/dist/components/biz/business/search-history/client.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/common/analytics-init/analytics-init.mjs +1 -1
- package/dist/components/common/analytics-init/index.d.mts +2 -1
- package/dist/components/common/analytics-init/sensor-init.d.mts +20 -0
- package/dist/components/common/analytics-init/sensor-init.mjs +2 -0
- package/dist/components/common/list/user-activity-list/user-activity-list-item.d.mts +2 -0
- package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -1
- package/dist/components/common/list/user-activity-list/user-activity-list.d.mts +2 -0
- package/dist/components/common/list/user-activity-list/user-activity-list.mjs +1 -1
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +4 -1
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -1
- package/dist/components/common/login-dialog/login-dialog.mjs +1 -1
- package/dist/components/common/series-episodes/index.mjs +1 -1
- package/dist/components/common/top-nav-bar/client.mjs +1 -1
- package/dist/components/common/video-player/preroll-skip-button-content.mjs +2 -0
- package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
- package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +2 -0
- package/dist/components/common/video-player/video-preroll-ad.mjs +1 -1
- package/dist/components/pages/(follow)/_components/header-nav/index.mjs +1 -1
- package/dist/components/pages/collection-add/page.mjs +1 -1
- package/dist/components/pages/collection-create/form.mjs +1 -1
- package/dist/components/pages/collection-detail/detail.mjs +1 -1
- package/dist/components/pages/edit/page.mjs +1 -1
- package/dist/components/pages/feed-series/feed-series-client.mjs +1 -1
- package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
- package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
- package/dist/components/pages/home/client.mjs +1 -1
- package/dist/components/pages/home/index.mjs +1 -1
- package/dist/components/pages/login/index.mjs +1 -1
- package/dist/components/pages/login/login-client.mjs +1 -1
- package/dist/components/pages/login/register.mjs +1 -1
- package/dist/components/pages/login/tracking.mjs +2 -0
- package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
- package/dist/components/pages/publish/page-client.mjs +1 -1
- package/dist/components/pages/search/hot-recommend.mjs +1 -1
- package/dist/components/pages/search/page-client.mjs +1 -1
- package/dist/components/pages/search/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
- package/dist/components/pages/search/search-result/shared.mjs +1 -1
- package/dist/components/pages/search/tracking.mjs +2 -0
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/search-result/tracking.mjs +2 -0
- package/dist/components/pages/settings/_components/settings.mjs +1 -1
- package/dist/components/pages/user-follow/_components/post-tab.mjs +1 -1
- package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-client.mjs +1 -1
- package/dist/components/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/components/ui/link.mjs +1 -1
- package/dist/utils/tracking.d.mts +231 -0
- package/dist/utils/tracking.mjs +2 -0
- package/dist/utils.d.mts +2 -1
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
|
@@ -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(),_.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};
|
|
2
|
+
"use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as t}from"../../../../../service/generated/client.mjs";import{trackPageClick as n}from"../../../../../utils/tracking.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import{useLoginModalStore as a}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as o}from"../../../../../hooks/query/use-query.mjs";import s from"../../../../common/interaction-animations.module.mjs";import c from"../../../../common/collection-popup/index.mjs";import l from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as u}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 d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{toast as v}from"sonner";import{usePathname as y,useSearchParams as b}from"next/navigation";import{useTranslations as x}from"next-intl";function S({className:e}){return g(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:g(`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 C({className:e}){return g(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:g(`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 w({className:e}){return g(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:g(`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 T({className:e}){return g(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:g(`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 E({className:e}){return g(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:g(`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 D({mode:D=`renderer`,information:k,onUpdate:A}){let j=D===`editor`||!k?.id||k.id.startsWith(`preview-`),M=`${y()}?${b()?.toString()||``}`,N=m(M),P=x(`components.biz.business.detail`),F=u(),[I,L]=h(!1),[R,z]=h(!1),B=m(0),V=m(0),H=e(e=>e.userId),U=e(e=>e.isLogin),W=o();f(()=>{N.current!==M&&(l.clear(),N.current=M)},[M]),f(()=>()=>{l.clear()},[]);let G=d(()=>{H&&(W([`user-profile`,`mine`,H,`user-like-video`]),W([`user-profile`,`mine`,H,`user-like-post`]),W([`user-profile`,`mine`,H,`user-collect-video`,H]),W([`user-profile`,`mine`,H,`user-collect-post`,H]))},[W,H]),{likeAnimation:K,handleLikeOperate:q,handleDefaultCollectionOperate:J,handleShareOperate:Y}=ee({id:k.id,isLike:k.like||!1,isDislike:k.dislike||!1,isCollect:k.collect||!1,likeCnt:O(k.static?.like_cnt),dislikeCnt:O(k.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!j,animationClasses:{like:s.likeShakeAnimation,dislike:s.dislikeShakeAnimation}}),X=d(e=>{A?.({...e})},[A]),re=d(async()=>{if(I)return;if(!U){a.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e,n(`page_video_detail`,`详情页`,null,`detail_like`,{object_id:k.id}),L(!0);let t=k.like||!1,r=k.dislike||!1,i=O(k.static?.like_cnt),o=O(k.static?.dislike_cnt),s=!t,c=Math.max(0,i+(s?1:-1)),l=s?!1:r,u=s&&r?Math.max(0,o-1):o;X({like:s,dislike:l,static:{...k.static,like_cnt:c,dislike_cnt:u}});try{let e=await q();if(!e){X({like:t,dislike:r,static:{...k.static,like_cnt:i,dislike_cnt:o}});return}X({like:e.isLike,dislike:e.isDislike??l,static:{...k.static,like_cnt:e.likeCnt,dislike_cnt:e.dislikeCnt??u}}),G(),v.success(e.isLike?P(`detailOperate.likeSuccess`):P(`detailOperate.unlikeSuccess`)),window.sensors?.track?.(`detail_like_click`,{object_id:k.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),v.error(P(`detailOperate.likeFailed`))}finally{L(!1)}},[q,k,G,I,U,P,X]),Z=p(()=>k.id,[k.id]),ie=d(()=>{n(`page_video_detail`,`详情页`,null,`detail_share`,{object_id:k.id}),Y(({isCollect:e})=>{X({collect:e})},Z)},[Y,Z,X,k.id]),Q=d(()=>{c.show({mode:`select`,onCollect:async e=>{try{let n=await t({new_collection_id:e,content_id:k.id});if(n.code!==0)throw Error(n.message||P(`detailOperate.collectFailed`));X({collect:!0}),G(),v.success(P(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),v.error(P(`detailOperate.collectFailed`))}}})},[k.id,G,P,X]),$=d(e=>{let t=e||P(`detailOperate.defaultCollection`);v.custom(e=>_(`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:[_(`div`,{className:`flex items-center gap-[10px]`,children:[g(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:g(te,{className:`w-[14px] h-[14px]`})}),_(`div`,{className:`flex items-center gap-[6px]`,children:[g(`span`,{className:`text-[14px] leading-[20px]`,children:P(`detailOperate.collectAdded`)}),g(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),g(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{v.dismiss(e),Q()},children:P(`detailOperate.modifyCollection`)})]}))},[Q,P]),ae=d(async()=>{if(R)return;if(!U){a.getState().open();return}let e=Date.now();if(e-V.current<300)return;V.current=e,n(`page_video_detail`,`详情页`,null,`detail_collect`,{object_id:k.id});let t=k.collect||!1,r=!t;z(!0),X({collect:r}),r&&F.trigger(s.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:k.id,action:t?`取消收藏`:`收藏`});try{let e=await J({currentCollect:t,onUpdate:({isCollect:e})=>{X({collect:e})}});if(!e?.success){X({collect:t}),v.error(e?.message||P(`detailOperate.collectFailed`));return}X({collect:e.isCollect??r}),G(),window.sensors?.track?.(`detail_fav_click`,{object_id:k.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&v.success(P(`detailOperate.uncollectSuccess`))}catch(e){X({collect:t}),console.error(`收藏操作失败:`,e),v.error(e?.message||P(`detailOperate.collectFailed`))}finally{z(!1)}},[F,J,k.id,k.collect,G,R,U,$,P,X]);return _(r,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${j?`pointer-events-none`:``}`,children:[_(r,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${I?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:re,children:[k.like?g(C,{className:`size-[28px] text-[#FF5D8F] ${K.animationClass}`}):g(S,{className:`size-[28px] text-white`}),g(i,{className:`text-center text-[14px] leading-[22px] ${k.like?`text-[#FF5D8F]`:`text-white`}`,children:k.static?k.static.like_cnt===0?P(`detailOperate.like`):ne(k.static?.like_cnt):P(`detailOperate.like`)})]}),_(r,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${R?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:ae,children:[k.collect?g(T,{className:`size-[28px] text-[#FFC039] ${F.animationClass}`}):g(w,{className:`size-[28px] text-white`}),g(i,{className:`text-center text-[14px] leading-[22px] text-white`,children:P(`detailOperate.collection`)})]}),_(r,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:ie,children:[g(E,{className:`size-[28px] text-white`}),g(i,{className:`text-center text-[14px] leading-[22px] text-white`,children:P(`detailOperate.share`)})]})]})}function ne(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 O(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}export{D as DetailOperate};
|
|
@@ -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{pContentMatchAds as n}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as r}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as i}from"../../../../../utils/helper.mjs";import{Image as a}from"../../../../ui/image.mjs";import{Box as o}from"../../../../ui/box.mjs";import{Text as s}from"../../../../ui/text.mjs";import{useRequest as c}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as l}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as m}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as ee}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as g}from"../../../../common/video-player/video-preroll-ad.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as te}from"next-intl";function T(e){return C(E,{...e})}const E=_(({mode:i=`renderer`,information:a,isVideo:l,episodeIndex:f=0,resumeProgressSeconds:p=0,className:ee=``})=>{let h=i===`editor`,g=t(e=>e.userId),_=b(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),y=b(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(_.preview_images?.length?_.preview_images:[_.img_y||_.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[_.img_x,_.img_y,_.preview_images,a]),x=d(),S=b(()=>y.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,y]),te=v(e=>{h||!S.length||x.open(S,e)},[h,x,S]),T=b(()=>({user_id:g,ad_type:`preroll`}),[g]),E=b(()=>{let e=Math.max(0,Number(f)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[f,a?.links]),{data:O,isLoading:k,isFetched:A}=c(b(()=>[`detail-preroll-ad`,a.id,E,...r(T)],[a.id,E,T]),()=>n(T),{enabled:!h&&l,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),ne=b(()=>({data:O?.data??null,isLoading:k,isFetched:A}),[A,k,O?.data]);return h?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):l?k?C(`div`,{className:`aspect-video w-full bg-background`}):C(D,{information:a,episodeIndex:f,resumeProgressSeconds:p,isEditor:h,prerollState:ne}):w(`div`,{className:e(`w-full`,ee),children:[w(o,{className:`mt-3 px-[12px] space-y-1`,children:[C(s,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),C(m,{medias:y,onItemClick:te})]}),C(u,{})]})});T.displayName=`DetailHero`;const D=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(O,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});D.displayName=`StableDetailPlayerBox`;function O({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:s}){let c=x(null),u=x(null),d=x(null),m=te(`components.biz.business.detail`),_=x(0),T=x(0),E=Math.max(0,Number(t)||0),D=E+1,[O,re]=S(!1),[j,M]=S(`main`),[ie,N]=S(`auto`),[P,F]=S(!1),[I,L]=S(!1),[ae,R]=S(!1),[oe,se]=S(0),z=b(()=>e?.id,[e?.id]),B=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),ce=b(()=>B.mid||B.id,[B.id,B.mid]),V=b(()=>{let e=B.links?.[E]?.id;return e?String(e):`ep-${E+1}`},[E,B.links]),H=b(()=>`__reportData_detail_page__${B.id}:${V}`,[V,B.id]),U=s.data,le=s.isLoading,ue=s.isFetched,de=U?.materials?.[0],fe=U?.hit===!0,pe=!!String(de?.advertise_video||``).trim(),W=fe&&!!de&&pe,G=b(()=>{if(r||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(H);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[r,H]),K=b(()=>{let e=Number(n||0);return Number.isFinite(e)&&e>0?e:0},[n]),q=b(()=>K>0?K:G,[K,G]),J=b(()=>{let t=ne(e),n=t[t.length?Math.max(0,Math.min(E,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(B.img_width||0)||1,a=Number(B.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:k(i,a),aspectRatio:(i||1)/(a||1),poster:B.img_y||B.img_x||B.preview_images?.[0]||``}},[e.id,e.links,E,B.img_width,B.img_height,B.img_y,B.img_x,B.preview_images]),me=v((e,t)=>{_.current=e,T.current=t},[]),he=b(()=>J.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:q,preload:`none`}:{startTimeSeconds:q},[q,J.videoUrl]);y(()=>{_.current=0,T.current=0},[z,E]),y(()=>{if(re(!1),L(!1),F(!1),R(!1),N(`auto`),se(e=>e+1),r){M(`main`);return}if(W){M(`preroll`);return}M(`main`)},[z,V,r,B.id,W]),y(()=>()=>{d.current&&=(window.clearInterval(d.current),null)},[]),y(()=>{if(j!==`preroll`)return;let e=c.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[j,V,B.id]);let Y=v(e=>{let t=c.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),ge=v(()=>{d.current&&=(window.clearInterval(d.current),null);let e=0;d.current=window.setInterval(()=>{e+=1;let t=c.current?.getPlayer?.();if(!t){e>=8&&d.current&&(window.clearInterval(d.current),d.current=null);return}d.current&&=(window.clearInterval(d.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Y(!0);if(!e){R(!0);return}e.play?.().then(()=>{R(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),R(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Y]),X=!r&&ue&&!le&&!I&&(!W||P);y(()=>{!X||!O||(R(!1),ge())},[ge,O,X]);let Z=l({contentId:z,browseEpisode:D,contentType:1,enabled:!r&&!!z,intervalMs:60*1e3,getCurrentTimeSeconds:()=>_.current,getDurationSeconds:()=>T.current}),_e=v(()=>{if(I){let e=c.current?.getPlayer?.();e&&(e.currentTime=0)}F(!0),R(!1),N(`manual`),L(!1),M(`main`)},[I]),ve=v(()=>{N(`manual`)},[]),ye=v(()=>{re(!0)},[]),be=v(()=>{L(!1),R(!1)},[]),xe=v(()=>{be(),Z.handlePlay()},[Z,be]),Se=v(()=>{Z.handleEnded(),W&&(L(!0),R(!1),F(!1),N(`manual`),se(e=>e+1),M(`main`))},[Z,W]),Ce=W&&j===`main`&&(I||!P&&ie===`manual`),we=j===`main`&&ae,Te=!r&&!ue,Ee=Te,De=X,Oe=!Te&&(!W||P);async function ke(){W&&(L(!1),F(!1),N(`manual`),M(`preroll`),await u.current?.play?.()||M(`main`))}async function Ae(){let e=Y(!1);if(e)try{await e.play?.(),R(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(r)return;let e=()=>{if(!(typeof window>`u`)&&!(_.current<=0||T.current<=0))try{sessionStorage.setItem(H,JSON.stringify({episodeId:V,currentTime:_.current,duration:T.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},i=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,i),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,i),e()}},[V,r,H]),!J.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:m(`videoHero.noVideos`)});let Q=A(430,J.aspectRatio,242),$=Q.height>0?i(Q.height):`auto`,je=Q.height>0?`calc(${$} + 0px)`:`auto`,Me=i(242);return w(ee,{value:c,children:[C(o,{suppressHydrationWarning:!0,className:`w-full`,style:{height:je,maxWidth:`100%`,maxHeight:`calc(${Me} + 0px)`}}),w(o,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[J.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:$},children:[C(a,{src:J.poster,alt:m(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(o,{suppressHydrationWarning:!0,"data-aspect-ratio":J.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:$,maxWidth:`100%`,maxHeight:Me,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[Oe&&C(f,{ref:c,plyerId:`detail-player-${B.id}-${E}`,parentId:ce,...De?{autoplay:!0}:{autoplay:!1},resolution:J.resolution||`0x0`,videoUrl:J.videoUrl,poster:J.poster,mergeConfig:he,onProgressUpdate:r?void 0:me,onPlay:r?void 0:xe,onPause:r?void 0:Z.handlePause,onEnded:r?void 0:Se,onPlayerReady:ye},`stable-player-${B.id}-${E}-${De?`default-autoplay`:`manual`}`),!r&&W&&C(g,{ref:u,adData:U,visible:j===`preroll`,autoStart:j===`preroll`&&ie===`auto`,sessionKey:`${B.id}-${V}-${oe}`,onAutoplayBlocked:ve,onFinish:_e,onSkip:_e}),Ce&&!we&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{ke()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),we&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ae()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ee&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:B.id})]})]})]})}function k(e,t){return!e||!t?``:`${e}x${t}`}function A(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function ne(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{T as DetailHero};
|
|
2
|
+
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{pContentMatchAds as n}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as r}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as i}from"../../../../../utils/helper.mjs";import{trackVideoEvent as a}from"../../../../../utils/tracking.mjs";import{Image as o}from"../../../../ui/image.mjs";import{Box as s}from"../../../../ui/box.mjs";import{Text as c}from"../../../../ui/text.mjs";import{useRequest as l}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as u}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as d,useMediaPreview as f}from"../../../../common/media-preview/index.mjs";import ee from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as m}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as h}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as g}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as _}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as v}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as y,useCallback as b,useEffect as x,useMemo as S,useRef as C,useState as w}from"react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";function O(e){return T(k,{...e})}const k=y(({mode:i=`renderer`,information:a,isVideo:o,episodeIndex:u=0,resumeProgressSeconds:ee=0,className:p=``})=>{let h=i===`editor`,g=t(e=>e.userId),_=S(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),v=S(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(_.preview_images?.length?_.preview_images:[_.img_y||_.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[_.img_x,_.img_y,_.preview_images,a]),y=f(),x=S(()=>v.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,v]),C=b(e=>{h||!x.length||y.open(x,e)},[h,y,x]),w=S(()=>({user_id:g,ad_type:`preroll`}),[g]),D=S(()=>{let e=Math.max(0,Number(u)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[u,a?.links]),{data:O,isLoading:k,isFetched:j}=l(S(()=>[`detail-preroll-ad`,a.id,D,...r(w)],[a.id,D,w]),()=>n(w),{enabled:!h&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),te=S(()=>({data:O?.data??null,isLoading:k,isFetched:j}),[j,k,O?.data]);return h?T(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?k?T(`div`,{className:`aspect-video w-full bg-background`}):T(A,{information:a,episodeIndex:u,resumeProgressSeconds:ee,isEditor:h,prerollState:te}):E(`div`,{className:e(`w-full`,p),children:[E(s,{className:`mt-3 px-[12px] space-y-1`,children:[T(c,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),T(m,{medias:v,onItemClick:C})]}),T(d,{})]})});O.displayName=`DetailHero`;const A=y(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=S(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return T(j,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});A.displayName=`StableDetailPlayerBox`;function j({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:c}){let l=C(null),d=C(null),f=C(null),m=D(`components.biz.business.detail`),y=C(0),O=C(0),k=Math.max(0,Number(t)||0),A=k+1,[j,ie]=w(!1),[M,N]=w(`main`),[ae,P]=w(`auto`),[F,I]=w(!1),[L,R]=w(!1),[oe,z]=w(!1),[se,ce]=w(0),B=S(()=>e?.id,[e?.id]),V=S(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),le=S(()=>V.mid||V.id,[V.id,V.mid]),H=S(()=>{let e=V.links?.[k]?.id;return e?String(e):`ep-${k+1}`},[k,V.links]),U=S(()=>`__reportData_detail_page__${V.id}:${H}`,[H,V.id]),W=c.data,ue=c.isLoading,de=c.isFetched,fe=W?.materials?.[0],pe=W?.hit===!0,me=!!String(fe?.advertise_video||``).trim(),G=pe&&!!fe&&me,he=S(()=>{if(r||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(U);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[r,U]),K=S(()=>{let e=Number(n||0);return Number.isFinite(e)&&e>0?e:0},[n]),q=S(()=>K>0?K:he,[K,he]),J=S(()=>{let t=re(e),n=t[t.length?Math.max(0,Math.min(k,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(V.img_width||0)||1,a=Number(V.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:te(i,a),aspectRatio:(i||1)/(a||1),poster:V.img_y||V.img_x||V.preview_images?.[0]||``}},[e.id,e.links,k,V.img_width,V.img_height,V.img_y,V.img_x,V.preview_images]),ge=b((e,t)=>{y.current=e,O.current=t},[]),_e=S(()=>J.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:q,preload:`none`}:{startTimeSeconds:q},[q,J.videoUrl]);x(()=>{y.current=0,O.current=0},[B,k]),x(()=>{if(ie(!1),R(!1),I(!1),z(!1),P(`auto`),ce(e=>e+1),r){N(`main`);return}if(G){N(`preroll`);return}N(`main`)},[B,H,r,V.id,G]),x(()=>()=>{f.current&&=(window.clearInterval(f.current),null)},[]),x(()=>{if(M!==`preroll`)return;let e=l.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[M,H,V.id]);let Y=b(e=>{let t=l.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),ve=b(()=>{f.current&&=(window.clearInterval(f.current),null);let e=0;f.current=window.setInterval(()=>{e+=1;let t=l.current?.getPlayer?.();if(!t){e>=8&&f.current&&(window.clearInterval(f.current),f.current=null);return}f.current&&=(window.clearInterval(f.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Y(!0);if(!e){z(!0);return}e.play?.().then(()=>{z(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),z(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Y]),X=!r&&de&&!ue&&!L&&(!G||F);x(()=>{!X||!j||(z(!1),ve())},[ve,j,X]);let Z=u({contentId:B,browseEpisode:A,contentType:1,enabled:!r&&!!B,intervalMs:60*1e3,getCurrentTimeSeconds:()=>y.current,getDurationSeconds:()=>O.current}),Q=b(()=>{let t=O.current,n=y.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:H,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[H,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);b(()=>{Z.handlePlay(),a({...Q(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Z,Q]),b(()=>{Z.handlePause(),a({...Q(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Z,Q]),b(()=>{Z.handleEnded();let e=O.current,t=y.current;(e>0?t/e:0)>=.95&&a({...Q(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Z,Q]);let ye=b(()=>{if(L){let e=l.current?.getPlayer?.();e&&(e.currentTime=0)}I(!0),z(!1),P(`manual`),R(!1),N(`main`)},[L]),be=b(()=>{P(`manual`)},[]),xe=b(()=>{ie(!0)},[]),Se=b(()=>{R(!1),z(!1)},[]),Ce=b(()=>{Se(),Z.handlePlay(),a({...Q(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Z,Q,Se]),we=b(()=>{Z.handlePause(),a({...Q(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Z,Q]),Te=b(()=>{Z.handleEnded();let e=O.current,t=y.current;(e>0?t/e:0)>=.95&&a({...Q(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),G&&(R(!0),z(!1),I(!1),P(`manual`),ce(e=>e+1),N(`main`))},[Z,Q,G]),Ee=G&&M===`main`&&(L||!F&&ae===`manual`),De=M===`main`&&oe,Oe=!r&&!de,ke=Oe,Ae=X,je=!Oe&&(!G||F);async function Me(){G&&(R(!1),I(!1),P(`manual`),N(`preroll`),await d.current?.play?.()||N(`main`))}async function Ne(){let e=Y(!1);if(e)try{await e.play?.(),z(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(x(()=>{if(r)return;let e=()=>{if(!(typeof window>`u`)&&!(y.current<=0||O.current<=0))try{sessionStorage.setItem(U,JSON.stringify({episodeId:H,currentTime:y.current,duration:O.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},i=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,i),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,i),e()}},[H,r,U]),!J.hasVideo)return T(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:m(`videoHero.noVideos`)});let $=ne(430,J.aspectRatio,242),Pe=$.height>0?i($.height):`auto`,Fe=$.height>0?`calc(${Pe} + 0px)`:`auto`,Ie=i(242);return E(h,{value:l,children:[T(s,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Fe,maxWidth:`100%`,maxHeight:`calc(${Ie} + 0px)`}}),E(s,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[J.poster&&E(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Pe},children:[T(o,{src:J.poster,alt:m(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),T(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),E(s,{suppressHydrationWarning:!0,"data-aspect-ratio":J.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Pe,maxWidth:`100%`,maxHeight:Ie,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[je&&T(ee,{ref:l,plyerId:`detail-player-${V.id}-${k}`,parentId:le,...Ae?{autoplay:!0}:{autoplay:!1},resolution:J.resolution||`0x0`,videoUrl:J.videoUrl,poster:J.poster,mergeConfig:_e,onProgressUpdate:r?void 0:ge,onPlay:r?void 0:Ce,onPause:r?void 0:we,onEnded:r?void 0:Te,onPlayerReady:xe},`stable-player-${V.id}-${k}-${Ae?`default-autoplay`:`manual`}`),!r&&G&&T(_,{ref:d,adData:W,visible:M===`preroll`,autoStart:M===`preroll`&&ae===`auto`,sessionKey:`${V.id}-${H}-${se}`,onAutoplayBlocked:be,onFinish:ye,onSkip:ye}),Ee&&!De&&T(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Me()},children:T(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:T(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),De&&T(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ne()},children:T(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:T(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),ke&&T(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:T(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),T(g,{videoId:V.id}),T(v,{videoId:V.id})]})]})]})}function te(e,t){return!e||!t?``:`${e}x${t}`}function ne(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function re(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{O as DetailHero};
|
|
@@ -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 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{isHomeRecommendLatestSortRule as ue}from"./home-recommend-smart-layout.mjs";import{limitPopularVideoPageItems as de}from"./home-recommend-smart-tag.mjs";import{enrichHomeRecommendItemsWithVideoDetails as fe}from"./home-recommend-video-detail.mjs";import{useCallback as pe,useEffect as x,useLayoutEffect as me,useMemo as S,useRef as C,useState as w}from"react";import{Fragment as he,jsx as T,jsxs as E}from"react/jsx-runtime";const ge={backgroundImage:`var(--gradient-card-mask-medium)`},_e={},ve={list:[]},D=new Map,O=[];function ye(e){if(e)return D.get(e)}function be(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 xe({variant:n,props:f=_e,data:p=ve,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:ge,moreLink:D,title:O,showPlayCount:xe,playCountDelta:Ce,showEpisode:k,enableInfinite:De,items:A,smartLayout:j}=f,M=j?.enabled===!0,N=M&&ue(j?.sortRule),P=De===!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,Oe]=w(0),[R,z]=w(y),[je,Ne]=w(b),[Pe,B]=w(()=>typeof g==`string`?g:void 0),[V,Fe]=w(!1),Ie=C(null),Le=C(null),H=C(null),Re=C([]),U=C({left:null,right:null}),W=C(!1),G=C(``),{isLoading:ze,show:Be,hide:Ve}=l(600),He=Te(le,ie,ce),K=Te(ge,re,se),q=P?16:n===`grid`?He*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),Ne(b),B(typeof g==`string`?g:void 0)},[g,b,y]);let Ue=He*K,We=m&&n===`grid`,Y=We?R.slice(0,Ue):R,Ge=We?je.slice(0,Ue):je,Ke=n===`waterfall`?6:4,qe=Y.length>0?Math.max(0,Y.length-Ke):-1,Je=!!Pe,Ye=O&&O.trim()||te||oe,X=xe??v,Z=Number(Ce??ae),Q=k??_,Xe=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,Ze=n===`grid`?d:m?u:d,Qe=we(D),$e=(n===`waterfall`||!P)&&!!Qe,et=$e?Qe:``,tt=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`}`,nt=`size-[16px] text-text1`,rt=s({enabled:!m&&n===`grid`,containerRef:Le,firstRowItemRef:Re,columns:K,itemsCount:Y.length,deps:[n]}),it=c({enabled:!m&&n===`waterfall`,containerRef:Ie,firstRowRef:U,deps:[n,Y.length]}),at=n===`grid`?rt:it,ot=pe(async()=>{if(m||G.current===J)return;let e=ye(J);if(e){z(e.items),M&&B(e.cursor);return}if(M||I){G.current=J;try{if(Be(),!M){if(!I)return;let e=await fe(y);z(e),be(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=de(e.data?.videos,q),r=e.data?.cursor;z(n),B(r),be(J,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{G.current===J&&(G.current=``),Ve()}}},[Ve,y,m,M,I,J,q,Be,j]);x(()=>{ot()},[ot]);let st=pe(async()=>{let n=Pe;if(!(!F||!n||W.current)){W.current=!0,Fe(!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,Fe(!1)}}},[Pe,q,F,j,N]);x(()=>{let e=H.current;if(!e||!F||!Je)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||V||st()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[st,Je,V,Y.length,q,F,qe]),me(()=>{let e=Ie.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Oe(t>0?(t-15)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let $=S(()=>n===`waterfall`?Ae(Y,Ge,L):{left:[],right:[]},[L,Ge,Y,n]),ct=S(()=>n===`waterfall`?{left:$.left.map(e=>ke(e,X,Z,Q)),right:$.right.map(e=>ke(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 lt=!m&&ze,ut=!m&&V,dt=at>0?at/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:Xe,children:Ye}),$e&&T(o,{href:et,"aria-label":`更多`,className:tt,children:T(Ze,{className:nt})})]}),n===`grid`&&E(r,{ref:Le,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[Y.map((e,t)=>{let n=Ge[t],r=Ee(e);return T(`div`,{ref:e=>{t===qe&&(H.current=e),t<K&&(Re.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:T(Se,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`}})},Me(e,t))}),lt&&T(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),lt&&T(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:dt},"aria-hidden":!0,children:T(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&T(ne,{title:Ye,moreHref:et||void 0,moreIcon:$e?T(Ze,{className:nt}):void 0,titleClassName:Xe,moreLinkClassName:tt,columns:ct,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{e.sourceIndex===qe&&(H.current=r),n===0&&(U.current[t]=r)},overlay:lt?E(he,{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:dt},"aria-hidden":!0,children:T(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0}),ut&&T(r,{className:`w-full flex justify-center py-[12px]`,children:T(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function Se({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o}){return T(Ce,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o})}function Ce({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(he,{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:ge,"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(he,{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 we(e){return e?e.trim():``}function Te(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function Ee(e){return e[le]}function De(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(!Oe(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function Oe(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 De(e.badge_url)||De(t?.material_url)||``}function ke(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:Me(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 Ae(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=je(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 je(e,t){return e?(j(t)===`tall`?216:142)+16:0}function Me(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{xe as default};
|
|
2
|
+
"use client";import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{trackAdClick as n,trackAdImpression as r,trackAppPageView as i,trackPageClick as a,trackRecommendListClick as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import u from"../../../../ui/loading.mjs";import ee from"../../../../ui/link.mjs";import{useGridFirstRowHeight as d,useWaterfallFirstRowHeight as te}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as ne}from"../../../../../hooks/use-min-duration-loading.mjs";import re from"../../../../../assets/icons/common/right_arrow.mjs";import f from"../../../../../assets/icons/common/right_arrow_thin.mjs";import ie from"../../../../../assets/icons/detail/video_flag.mjs";import{isFeedAdItem as p}from"../../advertisement/feed-ad/index.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as m,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as ae,normalizeRecommendBadgeUrl as h}from"../../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{WATERFALL_SHORT_CARD_ASPECT_RATIO as g,WATERFALL_TALL_CARD_ASPECT_RATIO as oe,buildWaterfallRecommendLegacyDisplay as _}from"../../../../common/list/waterfall-recommend/waterfall-recommend-display.mjs";import{WaterfallRecommend as v}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as se,HOME_RECOMMEND_DEFAULT_GRID_ROWS as y,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as ce,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as le,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as ue,HOME_RECOMMEND_DEFAULT_TITLE as de,HOME_RECOMMEND_MAX_GRID_COLUMNS as fe,HOME_RECOMMEND_MAX_GRID_ROWS as pe}from"./home-recommend-default-config.mjs";import{buildHomeRecommendHeatText as b,resolveHomeRecommendBrowseCount as x}from"./home-recommend-play-count.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as me}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as he}from"./home-recommend-smart-layout.mjs";import{limitPopularVideoPageItems as ge}from"./home-recommend-smart-tag.mjs";import{enrichHomeRecommendItemsWithVideoDetails as _e}from"./home-recommend-video-detail.mjs";import{useCallback as S,useEffect as C,useLayoutEffect as ve,useMemo as w,useRef as T,useState as E}from"react";import{Fragment as ye,jsx as D,jsxs as O}from"react/jsx-runtime";const be={backgroundImage:`var(--gradient-card-mask-medium)`},xe={},Se={list:[]},k=new Map,A=[];function Ce(e){if(e)return k.get(e)}function we(e,t){if(!e||(k.has(e)||A.push(e),k.set(e,{items:[...t.items],cursor:t.cursor}),A.length<=120))return;let n=A.shift();n&&k.delete(n)}function Te({variant:s,props:ie=xe,data:m=Se,mode:ae=`renderer`}){let h=ae===`editor`,{list:g,title:oe,cursor:_}=m,b=w(()=>Array.isArray(g)?g:[],[g]),x=w(()=>Array.isArray(m.icons)?m.icons:[],[m.icons]),{rows:me,columns:be,moreLink:k,title:A,showPlayCount:Te,playCountDelta:De,showEpisode:Oe,enableInfinite:Me,items:j,smartLayout:M}=ie,N=M?.enabled===!0,P=N&&he(M?.sortRule),F=Me===!0&&N,I=!h&&F&&b.length>=16,L=w(()=>N||!Array.isArray(j)?``:j.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,j]),[R,Ne]=E(0),[Pe,z]=E(b),[Le,ze]=E(x),[Be,B]=E(()=>typeof _==`string`?_:void 0),[Ve,He]=E(!1),Ue=T(null),We=T(null),Ge=T(null),Ke=T([]),V=T({left:null,right:null}),qe=T(null),Je=T(!1),Ye=T(new Set),H=T(new Map),Xe=T(!1),U=T(``),{isLoading:Ze,show:Qe,hide:$e}=ne(600),et=Ae(me,y,pe),W=Ae(be,se,fe),G=F?16:s===`grid`?et*W:16,K=w(()=>[s,(()=>{if(!N||!M)return`manual:${L}`;if(P)return`smart:newest:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}`;let e=String(M.sortRule??``);return`smart:popular:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}:sr:${e}`})(),String(G)].join(`|`),[N,L,G,M,P,s]);C(()=>{z(b),ze(x),B(typeof _==`string`?_:void 0)},[_,x,b]);let tt=et*W,nt=h&&s===`grid`,q=nt?Pe.slice(0,tt):Pe,J=nt?Le.slice(0,tt):Le,rt=s===`waterfall`?6:4,it=q.length>0?Math.max(0,q.length-rt):-1,at=!!Be;C(()=>{if(h)return;let e=q.filter(e=>p(e)).map(e=>e.ad?.ad_code||``).filter(Boolean).join(`,`);e&&r({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:e,ad_type:`feed`})},[q.length,h]);let ot=S(e=>{let t=e.ad?.ad_code||``;t&&n({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:t,ad_type:`feed`})},[]),Y=A&&A.trim()||oe||de;C(()=>{if(h)return;let e=qe.current;if(!e)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!Je.current&&(Je.current=!0,i({page_key:`home`,page_name:`首页`,current_page_key:Y,current_page_name:Y}),t.disconnect())},{threshold:.5});return t.observe(e),()=>{t.disconnect()}},[h,Y,q.length]),C(()=>{let e=H.current;return()=>{e.forEach(e=>e.disconnect()),e.clear()}},[]);let st=S(e=>{let t=e.id||``;!t||Ye.current.has(t)||(Ye.current.add(t),i({page_key:`home`,page_name:`首页`,current_page_key:t,current_page_name:e.name||``}))},[]),ct=S((e,t)=>{if(p(e)){ot(e);return}o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,t,e.name||e.id||``)},[ot,Y]);function lt(){o({page_key:`home`,page_name:`首页`,recommend_id:Y,recommend_trace_info:`更多`})}let X=Te??ue,Z=Number(De??ce),Q=Oe??le,ut=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,dt=s===`grid`?f:h?re:f,ft=ke(k),pt=(s===`waterfall`||!F)&&!!ft,mt=pt?ft:``,ht=s===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${h?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${h?`opacity-100`:`opacity-50`}`,gt=`size-[16px] text-text1`,_t=d({enabled:!h&&s===`grid`,containerRef:We,firstRowItemRef:Ke,columns:W,itemsCount:q.length,deps:[s]}),vt=te({enabled:!h&&s===`waterfall`,containerRef:Ue,firstRowRef:V,deps:[s,q.length]}),yt=s===`grid`?_t:vt,bt=S(async()=>{if(h||U.current===K)return;let e=Ce(K);if(e){z(e.items),N&&B(e.cursor);return}if(N||L){U.current=K;try{if(Qe(),!N){if(!L)return;let e=await _e(b);z(e),we(K,{items:e});return}if(!M)return;let e=await t({page_size:G,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},{cache:`no-store`}),n=ge(e.data?.videos,G),r=e.data?.cursor;z(n),B(r),we(K,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{U.current===K&&(U.current=``),$e()}}},[$e,b,h,N,L,K,G,Qe,M]);C(()=>{bt()},[bt]);let xt=S(async()=>{let n=Be;if(!(!I||!n||Xe.current)){Xe.current=!0,He(!0);try{if(!M)return;let r={cursor:n,page_size:G,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},i=P?await e(r):await t(r),a=Array.isArray(i.data?.videos)?i.data.videos:[],o=i.data?.cursor;a.length>0&&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{Xe.current=!1,He(!1)}}},[Be,G,I,M,P]);C(()=>{let e=Ge.current;if(!e||!I||!at)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||Ve||xt()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[xt,at,Ve,q.length,G,I,it]),ve(()=>{let e=Ue.current;if(!e||s!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Ne(t>0?(t-15)/2:0)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[s]);let $=w(()=>s===`waterfall`?Ie(q,J,R):{left:[],right:[]},[R,J,q,s]),St=w(()=>s===`waterfall`?{left:$.left.map(e=>Fe(e,X,Z,Q)),right:$.right.map(e=>Fe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,s,$.left,$.right]);if(C(()=>{s===`waterfall`&&($.left.length||(V.current.left=null),$.right.length||(V.current.right=null))},[s,$.left.length,$.right.length]),!q.length)return null;let Ct=!h&&Ze,wt=!h&&Ve,Tt=yt>0?yt/2:160;return O(c,{ref:qe,className:`w-full mt-[16px]`,children:[s===`grid`&&O(c,{className:`flex items-center justify-between pl-[16px] pr-0 mb-[16px]`,children:[D(l,{className:ut,children:Y}),pt&&D(ee,{href:mt,"aria-label":`更多`,className:ht,onClick:lt,children:D(dt,{className:gt})})]}),s===`grid`&&O(c,{ref:We,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[q.map((e,t)=>{let n=J[t],r=je(e);return D(`div`,{ref:e=>{t===it&&(Ge.current=e),t<W&&(Ke.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:D(Ee,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`},onContentClick:ct,onContentView:st})},Re(e,t))}),Ct&&D(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),Ct&&D(c,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:Tt},"aria-hidden":!0,children:D(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),s===`waterfall`&&D(v,{title:Y,moreHref:mt||void 0,onMoreClick:lt,moreIcon:pt?D(dt,{className:gt}):void 0,titleClassName:ut,moreLinkClassName:ht,columns:St,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{let{sourceIndex:i}=e;i===it&&(Ge.current=r),n===0&&(V.current[t]=r);let a=H.current.get(i);if(a&&(a.disconnect(),H.current.delete(i)),r&&!h){let e=q[i];if(e&&!p(e)){let t=new IntersectionObserver(n=>{n[0]?.isIntersecting&&(st(e),t.disconnect(),H.current.delete(i))},{threshold:.5});t.observe(r),H.current.set(i,t)}}},overlay:Ct?O(ye,{children:[D(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),D(c,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:Tt},"aria-hidden":!0,children:D(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0,onItemClick:e=>{let t=q[e.sourceIndex];t&&(p(t)?ot(t):(o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,null,t.name||t.id||``)))}}),wt&&D(c,{className:`w-full flex justify-center py-[12px]`,children:D(u,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function Ee({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c}){return D(De,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c})}function De({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:u,onContentView:d}){let te=T(null),ne=M(e),re=ne===`short`?g:oe,f=N(e,ne),v=e.name||e?.title||``,se=e.id?Oe(e):`#`,y=_({title:v,badgeImageUrl:z(e,t,n),episodeText:L(e,a),heatText:r?b(x(e),i):``,score:F(e.score)}),ce=h(y.topLeftBadgeImageUrl);return C(()=>{let t=te.current;if(!t||!d||p(e))return;let n=new IntersectionObserver(t=>{t[0]?.isIntersecting&&(d(e),n.disconnect())},{threshold:.5});return n.observe(t),()=>{n.disconnect()}},[e,d]),D(ee,{href:se,className:`block w-full`,onClick:t=>u?.(e,t),style:o,children:O(ye,{children:[O(c,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:re},children:[f&&D(s,{src:f,alt:v||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),D(c,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:be,"aria-hidden":!0}),ce&&D(c,{className:ae,children:D(s,{src:ce,alt:`角标`,width:96,height:18,className:m})}),y.topRightScoreText&&D(l,{as:`span`,className:`absolute right-[8px] top-[8px] z-10 shrink-0 text-[14px] leading-[22px] font-semibold text-[#FFC24B]`,children:y.topRightScoreText}),O(c,{className:`absolute left-[8px] right-[8px] bottom-[8px] z-10 flex items-end justify-between gap-[8px]`,children:[D(c,{className:`flex min-w-0 items-center gap-[4px]`,children:y.bottomLeftHeatText&&O(ye,{children:[D(ie,{className:`h-[16px] w-[16px] shrink-0 text-white`}),D(l,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:y.bottomLeftHeatText})]})}),y.bottomRightEpisodeText&&D(l,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:y.bottomRightEpisodeText})]})]}),D(c,{className:`mt-[8px] overflow-hidden`,children:D(l,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:y.title})})]})})}function Oe(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ke(e){return e?e.trim():``}function Ae(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function je(e){return e[me]}function Me(e){return typeof e==`string`?e:``}function j(e){return typeof e==`string`?e.trim():``}function M(e){return j(e.img_type).toLowerCase()===`long`?`short`:`tall`}function N(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function P(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?I(e,!0):``)}function F(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function I(e,t){return t?R(e)||Pe(Number(e.duration||0)):``}function L(e,t){return t?R(e):``}function R(e){if(!Ne(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function Ne(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 Pe(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 Me(e.badge_url)||Me(t?.material_url)||``}function Fe(e,t,n,r){let i=M(e.item),a=N(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?Oe(e.item):`#`,c=z(e.item,e.icon,e.index),l=I(e.item,r),u=P(e.item,r),ee=t?b(x(e.item),n):``,d=F(e.item.score);return{key:Re(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,episodeText:l,metaPrimaryText:u,heatText:ee,score:d}}function Ie(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=Le(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 Le(e,t){return e?(M(t)===`tall`?216:142)+16:0}function Re(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{Te as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{pxToVw as t}from"../../../../../../../utils/helper.mjs";import{
|
|
2
|
+
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{pxToVw as t}from"../../../../../../../utils/helper.mjs";import{trackNavigation as n}from"../../../../../../../utils/tracking.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import i from"../../../../../../ui/link.mjs";import{urlPrefix as a}from"../../../../../../../constants/url-prefix.mjs";import{useSticky as o}from"../../../../../../../hooks/use-sticky.mjs";import s from"../../../../../../../assets/icons/search.mjs";import c,{loadHiddenChannelIdsFromStorage as l}from"./channel-filter-dialog.mjs";import{defaultProps as u}from"../defaults/default-props.mjs";import d from"../../../../../../../assets/icons/filter_dark.mjs";import{clsx as f}from"clsx";import{useEffect as p,useMemo as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";const y={},b={list:[],currentChannelId:null,isFullfeed:!1};function x(e,t){return t===0?`/`:`${a.CHANNEL}/${encodeURIComponent(e.cn_name)}`}function S({props:a=y,styles:S,events:C,data:w=b}){let{searchUrl:T,searchIconSize:E,filterIconSize:D,channelItemHeight:O,channelItemFontSize:k,channelItemActiveFontSize:A,channelItemGap:j}={...u,...a},[M,N]=h(!1),{isSticky:P,ref:F}=o(),[I,L]=h(w.list),R=m(()=>w.currentChannelId??null,[w.currentChannelId]);p(()=>{let e=l();L(w.list.filter(t=>!e.includes(t.id)))},[w.list]);let z=e=>{L(e)},B=(e,t)=>{n({navigation_key:`navigation_channel_${e.cn_name}`,navigation_name:e.cn_name}),C?.onChannelChange?.(e,t)},V=()=>{N(!0),C?.onFilterClick?.()},H=()=>{C?.onSearchClick?.()},U=S?e(S,{}):void 0,W=P?D+E+24:D+16;return v(g,{children:[P&&_(r,{className:`w-full`,style:{height:t(44)}}),_(r,{as:`nav`,ref:F,className:f(`w-full bg-transparent transition-all duration-200`,!w.isFullfeed&&P&&`fixed top-0 left-0 right-0 z-50`,w.isFullfeed&&`fixed top-[54px] left-0 z-10 w-full`),style:U,children:v(r,{className:`relative flex items-center h-[44px]`,children:[_(r,{className:`flex-1 overflow-x-auto overflow-y-hidden [&::-webkit-scrollbar]:hidden`,style:{scrollbarWidth:`none`,msOverflowStyle:`none`,WebkitOverflowScrolling:`touch`},children:_(r,{className:`flex items-center h-full`,style:{paddingLeft:t(16),paddingRight:t(W+16),gap:t(j)},children:I.map((e,n)=>{let r=R===e.id||R===null&&n===0;return _(i,{href:x(e,n),className:f(`whitespace-nowrap cursor-pointer transition-all duration-200`,`flex items-center justify-center`),style:{height:t(O),fontSize:t(r?A:k),fontWeight:r?`bold`:`normal`,color:r?`var(--color-theme5)`:`var(--color-text2)`},onClick:()=>B(e,n),children:e.cn_name},e.id||`channel-${n}`)})})}),v(r,{className:`flex items-center gap-[12px] px-[8px]`,children:[_(r,{className:`flex items-center justify-center cursor-pointer`,style:{width:t(D+8),height:t(D+8)},onClick:V,children:_(d,{width:t(D),height:t(D),style:{color:`var(--color-text1)`}})}),P&&_(i,{href:T,onClick:H,children:_(r,{className:`flex items-center justify-center cursor-pointer`,style:{width:t(E+8),height:t(E+8)},children:_(s,{width:t(E),height:t(E),style:{color:`var(--color-text1)`}})})})]})]})}),_(c,{open:M,onOpenChange:N,channels:w.list,currentChannelId:R,onChannelClick:B,onChannelsChange:z})]})}export{S as default};
|
|
@@ -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{
|
|
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{trackProfilePageClick as y}from"../tracking.mjs";import{UserProfileAvatar as b}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as x}from"./user-profile-cover-background.mjs";import{useEffect as S,useMemo as ee,useState as te}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 M({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 N({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`,N=!w,re=s(),{open:P}=f(),{isLogin:F,userId:I,token:L}=n(),[ie,R]=te(!1);S(()=>{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:ae}=h(w?[`editor-preview`,...U]:U,()=>a?i({target_user_id:a,user_id:B||a}):r({user_id:a||B||``}),{staleTime:0,enabled:N&&(!!a||!!B)}),G=ee(()=>{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,oe=o&&q,se=o&&J,ce={name:C(`client.welcomeToPlanet`),description:C(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j};function Y(){P()}function le(){re.back()}let X=K?null:H?z?T(O,{href:`/edit`,onClick:e=>{y(e,`edit_profile`)},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?ce:G,Q=Z.name||``,$=Z.description||Z.signature||``,ue=Z.avatar||``;return N&&ae&&!W?T(M,{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(x,{isMine:oe,enableCustomBackground:o,src:Z.background,onUnauthorizedClick:se?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:le,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}),onClick:e=>{y(e,`settings`)},children:T(v,{})})]}),E(c,{className:e(`relative z-10 mt-[56px] flex justify-between gap-3 items-center`),children:[T(b,{isMine:q,src:ue,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{N 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{
|
|
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{trackProfilePageClick as h}from"../tracking.mjs";import{ImageCropModal as g}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as _,useState as v}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as C}from"next-intl";const w=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,T=[`image/jpeg`,`image/png`];function E(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return T.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function D({isMine:T,src:D,alt:O,onUnauthorizedClick:k}){let A=C(`components.pages.profile`),j=_(null),{userId:M,setUserInfo:N,userInfo:P}=n(),F=m(),[I,L]=v(!1),[R,z]=v(!1),[B,V]=v(``),[H,U]=v(!1);function W(e){if(h(e,`avatar`),!H){if(T){L(!0);return}k?.()}}function G(){B&&(URL.revokeObjectURL(B),V(``))}function K(){L(!1)}function q(){H||j.current?.click()}async function J(e){let t=(await r({user_id:String(M)})).data;return{user_id:String(M),nick_name:t?.nick_name??P?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??P?.signature??void 0,gender:t?.gender??P?.gender??void 0}}function Y(e){let t=e.target.files?.[0];if(t){if(!E(t)){S.error(A(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){S.error(A(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}V(URL.createObjectURL(t)),z(!0),e.target&&(e.target.value=``)}}async function X(e){if(!M){S.error(A(`client.loginRequiredForUpload`));return}try{U(!0);let t=await a(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await J(t.objectKey);await i(n),N({...P,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),F([`user-profile`,`mine`]),F([`user-profile`,`profile`,String(M)]),F([`user-edit-info`,String(M)]),L(!1),z(!1),S.success(A(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),S.error(A(`client.uploadFailed`))}finally{G(),U(!1)}}function Z(){z(!1),G()}return x(y,{children:[T||k?b(t,{variant:`ghost`,size:`icon`,className:`h-[72px] w-[72px] rounded-full p-0 hover:bg-transparent`,onClick:W,"aria-label":`打开头像预览`,children:b(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:x(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[b(c,{src:D||w,alt:O||`avatar`}),b(s,{})]})})}):b(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:x(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[b(c,{src:D||w,alt:O||`avatar`}),b(s,{})]})}),b(d,{open:I,onOpenChange:K,children:b(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:x(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:[b(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:K,"aria-label":`关闭头像预览`,children:b(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:b(`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`})})}),x(o,{className:`w-50 h-50`,children:[b(c,{src:D||w,alt:O||`avatar`}),b(s,{})]}),x(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:q,disabled:H,children:[b(p,{as:`span`,className:`text-base font-medium text-text1`,children:H?`上传中...`:`更换头像`}),x(`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:[b(`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`}),b(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),b(u,{ref:j,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:Y}),b(g,{open:R,onClose:Z,imageSrc:B,onConfirm:X})]})}export{D as UserProfileAvatar};
|
|
@@ -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{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Text as a}from"../../../../ui/text.mjs";import{Tabs as o,TabsList as s,TabsTrigger as c}from"../../../../ui/tabs.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{profileMainMineTabOptions as
|
|
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{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Text as a}from"../../../../ui/text.mjs";import{Tabs as o,TabsList as s,TabsTrigger as c}from"../../../../ui/tabs.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{trackProfilePageClick as u}from"../tracking.mjs";import{profileMainMineTabOptions as d,profileMainProfileTabOptions as f}from"./variants.mjs";import{useEffect as p,useId as m,useMemo as h,useRef as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";import{parseAsString as b,useQueryState as x}from"nuqs";function S(e){let t=m();return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`37`,height:`10`,viewBox:`0 0 37 10`,fill:`none`,...e,children:[_(`path`,{d:`M32.8921 0.212888C34.4317 -0.398985 36.1765 0.353067 36.7886 1.89258C37.4004 3.43219 36.6484 5.17704 35.1089 5.78906L29.9204 7.85058C26.0475 9.38961 21.7156 9.29046 17.9175 7.57519C15.9234 6.67463 13.6771 6.5 11.5679 7.08203L3.79833 9.22656C2.20143 9.66708 0.549808 8.72958 0.108873 7.13281C-0.331916 5.53567 0.605478 3.88317 2.20262 3.44238L9.97118 1.29785C13.431 0.342993 17.1161 0.629191 20.3872 2.10644C22.7028 3.15218 25.3434 3.21271 27.7046 2.27441L32.8921 0.212888Z`,fill:`url(#${t})`}),_(`defs`,{children:v(`linearGradient`,{id:t,x1:`3.00047`,y1:`5.00097`,x2:`34.0005`,y2:`5.00097`,gradientUnits:`userSpaceOnUse`,children:[_(`stop`,{stopColor:`var(--color-brand-tag-gradient-start)`}),_(`stop`,{offset:`1`,stopColor:`var(--color-brand-tag-gradient-end)`})]})})]})}function C(e){return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`68`,height:`58`,viewBox:`0 0 68 58`,fill:`none`,...e,children:[_(`rect`,{x:`0.5`,y:`0.5`,width:`67`,height:`57`,rx:`7.5`,fill:`#1B1829`,stroke:`#322F3E`}),_(`path`,{d:`M27.1175 33.8211L27.118 23.9652C27.1182 21.7159 29.502 20.2667 31.4989 21.3021L40.5835 26.0125C42.6976 27.1086 42.7531 30.1126 40.681 31.2861L31.5959 36.4317C29.596 37.5644 27.1173 36.1195 27.1175 33.8211Z`,fill:`#54525E`})]})}function w(e){return e?[...d]:[...f]}function T(e,t){let n=w(t);return n.includes(e)?e:n[0]}function E(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function D(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(E(t))return t;t=t.parentElement}return null}function O(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function k(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function A({profileId:d,currentUserId:f,isMine:m,renderMode:E,className:A,children:j}){let M=y(`components.pages.profile`),N=g(null),P=l(e=>e.open),F=n(e=>e.userId),I=g(``),L=w(m),[R,z]=x(`tab`,b.withDefault(`collect`)),B=h(()=>T(R,m),[m,R]),V=f||F||``,H=m?V:d,U=h(()=>`profile-scroll:${H||(m?`mine`:`guest`)}:${B}`,[m,B,H]);p(()=>{R!==B&&z(B,{shallow:!1})},[B,z,R]),p(()=>{if(typeof window>`u`)return;let e=`${m?`mine`:`profile`}:${H||``}:${B}`;I.current!==e&&(I.current=e)},[m,d,V,B,H]),p(()=>{if(typeof window>`u`)return;let e=D(N.current),t=window.sessionStorage.getItem(U),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{k(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(U,String(O(e))),r=!1}))};return e?(e.addEventListener(`scroll`,i,{passive:!0}),()=>{e.removeEventListener(`scroll`,i)}):(window.addEventListener(`scroll`,i,{passive:!0}),()=>{window.removeEventListener(`scroll`,i)})},[U]);let W={collect:M(`client.collect`),like:M(`client.like`),history:M(`client.history`)},G=j;return E===`login-required`?G=v(r,{className:`flex flex-col items-center pt-[132px] text-center`,children:[_(C,{className:`h-[58px] w-[68px]`}),_(a,{className:`mt-[16px] text-[15px] leading-[normal] text-[#54525E]`,children:M(`client.loginToSeeMoreVideos`)}),_(t,{type:`button`,onClick:P,className:`mt-[16px] h-[40px] min-w-[100px] rounded-[8px] border-0 bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] px-[24px] py-0 text-[16px] font-normal leading-[24px] text-white active:opacity-90`,children:M(`client.loginNow`)})]}):E===`privacy-collect`?G=_(i,{type:`no-content`,text:M(`client.collectionNotPublic`)}):E===`privacy-like`&&(G=_(i,{type:`no-content`,text:M(`client.likeNotPublic`)})),v(r,{ref:N,className:e(`relative grow overflow-hidden rounded-t-[24px] bg-[var(--color-surface-panel-dark)]`,A),children:[_(r,{className:`sticky top-0 z-10 bg-[var(--color-surface-panel-dark)] px-4 pt-8`,children:_(o,{value:B,onValueChange:e=>{z(e,{shallow:!1})},className:`h-6 w-full`,children:_(s,{variant:`default`,className:`h-6 w-fit gap-8 px-0`,children:L.map(t=>v(c,{value:t,onClick:e=>{u(e,`${t}_tab`)},className:e(`group/profile-main-tab !flex-none !h-6 min-w-8 !px-0 !py-0 !pb-0 text-[16px] !font-normal leading-6 text-[var(--color-text-secondary)]`,`data-[active]:!text-text1 data-[active]:!font-semibold data-[active]:!text-[18px]`,`data-[state=active]:!text-text1 data-[state=active]:!font-semibold data-[state=active]:!text-[18px]`,`after:hidden`),children:[_(S,{"aria-hidden":`true`,className:e(`pointer-events-none absolute bottom-0 left-1/2 h-[10px] w-[37px] -translate-x-1/2 opacity-0 transition-opacity duration-200`,`group-data-[active]/profile-main-tab:opacity-100`,`group-data-[state=active]/profile-main-tab:opacity-100`)}),_(`span`,{className:`relative z-10`,children:W[t]})]},t))})})}),_(r,{className:`relative px-4 pb-6 pt-7`,children:G})]})}export{A as UserProfileMainShell};
|
|
@@ -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{gCommunityGetSubscribedCollections as r,gCommunityGetUserCollections as i,gInteractionListCollects as ee,pCommunityBatchDeleteCollection as te,pInteractionBatchDeleteCollects as ne}from"../../../../../../../service/generated/client.mjs";import{Box as a}from"../../../../../../ui/box.mjs";import{Text as o}from"../../../../../../ui/text.mjs";import{Tabs as re,TabsList as ie,TabsTrigger as ae}from"../../../../../../ui/tabs.mjs";import{useMutation as oe,usePaginated as s,useUpdateRequest as se}from"../../../../../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as ce}from"../../../../../../common/collection-popup/create-collection-sheet.mjs";import{DeleteConfirmDialog as le}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as ue}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as de}from"../../../../../../common/list/post-list/post-list.mjs";import{ProfileMainEmptyState as c}from"../../empty-state.mjs";import{CollectVideoWaterfall as fe}from"./video-waterfall.mjs";import{useEffect as l,useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useTranslations as h}from"next-intl";import g from"dayjs";import{parseAsString as pe,useQueryState as me}from"nuqs";const he={video:1,post:2};function ge(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??y).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function _(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 _e(e,t){let n=t[e.content_id||``]?.create_time,r=_(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:g(n).toDate().getTime()}}function ve(e){return e.tags?.find(e=>e?.name?.trim())?.name?.trim()||String(e.cat_name||``).trim()||``}function ye(e){let t=String(e.img_type||``).trim().toLowerCase();return t===`short`?e.img_y||e.img_x||``:t===`long`?e.img_x||e.img_y||``:e.img_y||e.img_x||``}function be(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:ye(e),duration:Number(e.duration??e.detail?.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:g(n).toDate().getTime(),imgType:e.img_type||e.media?.img_type||``,score:e.score??e.detail?.score,metaPrimaryText:ve(e)}}function xe(e){let t=_(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function v(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function Se(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(xe),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,isDefaultCollection:!!e.is_default,contents:r===0?v(e.collection_id||`collection`):n}}const y=[],Ce=[`video`,`post`,`collection`],we=[`created`,`subscribed`];function Te({className:t}){return f(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:f(`path`,{d:`M7.33398 7.3335V4.66683H8.66732V7.3335H11.334V8.66683H8.66732V11.3335H7.33398V8.66683H4.66732V7.3335H7.33398ZM8.00065 14.6668C4.31875 14.6668 1.33398 11.682 1.33398 8.00016C1.33398 4.31826 4.31875 1.3335 8.00065 1.3335C11.6825 1.3335 14.6673 4.31826 14.6673 8.00016C14.6673 11.682 11.6825 14.6668 8.00065 14.6668ZM8.00065 13.3335C10.9462 13.3335 13.334 10.9457 13.334 8.00016C13.334 5.05464 10.9462 2.66683 8.00065 2.66683C5.05513 2.66683 2.66732 5.05464 2.66732 8.00016C2.66732 10.9457 5.05513 13.3335 8.00065 13.3335Z`,fill:`currentColor`})})}function Ee({className:t}){return f(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:f(`g`,{children:f(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M10.7666 2.12385C10.9828 1.94731 11.3023 1.95935 11.5039 2.16096L13.8389 4.49592C13.942 4.5991 13.9999 4.73966 14 4.88557C14 5.03152 13.942 5.17199 13.8389 5.27522L11.5078 7.6053C11.5063 7.60688 11.5055 7.60959 11.5039 7.61116C11.5023 7.61279 11.4997 7.61345 11.498 7.61506L5.27539 13.8387C5.17216 13.9418 5.03168 13.9998 4.88574 13.9998H2.55078C2.24679 13.9998 2.00001 13.753 2 13.449V11.1141C2 10.9681 2.05794 10.8277 2.16113 10.7244L10.7246 2.16096L10.7666 2.12385ZM3.10059 11.3416V12.8992H4.6582L10.335 7.22151L8.77734 5.66389L3.10059 11.3416ZM9.55664 4.88459L11.1143 6.44221L12.6709 4.88557L11.1133 3.32893L9.55664 4.88459Z`,fill:`currentColor`})})})}const De=`flex items-center gap-[2px] text-[14px] leading-6 text-[var(--color-text-secondary)]`;function Oe(){return e(`!flex !items-center !flex-none !h-6 !w-auto !rounded-[4px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function b({mode:e=`renderer`,userId:g,showCreateAction:_=!1,queryKeyPrefix:ve,isMine:ye=!1}){let xe=h(),v=h(`components.pages.collectionDetail`),b=h(`components.pages.profile.components.tabs`),x=e===`renderer`,S=ve??[],[C,w]=me(`collectTab`,pe.withDefault(`video`)),[T,ke]=me(`collectCollectionTab`,pe.withDefault(`created`)),E=u(()=>Ce.includes(C)?C:`video`,[C]),D=u(()=>we.includes(T)?T:`created`,[T]),[O,k]=d(!1),[A,j]=d(!1),[Ae,M]=d(!1),[je,N]=d(!1),[Me,Ne]=d(!1),[P,F]=d(()=>new Set),[I,L]=d(()=>new Set),{userId:Pe,userInfo:Fe}=n(),R=g||Pe||Fe?.userId||``,Ie=se();async function Le(e,t){if(!R)return{data:{list:[],total:0}};let n=await ee({user_id:R,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},i=t===he.video?(n.data?.video_infos??[]).map(e=>be(e,r)):(n.data?.post_infos??[]).map(e=>_e(e,r));return{data:{list:i,total:n.data?.total??i.length}}}let z=s({key:[...S,`user-collect-video`,R],initialPageParam:1,async queryFn(e){return Le(e,he.video)},options:{staleTime:0,enabled:x},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),B=s({key:[...S,`user-collect-post`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function Re(e){if(!R)return{data:{list:[],total:0}};let t=await i({page:e,user_id:g,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(Se),total:t.data?.data?.total??n.length}}}async function ze(e){if(!R)return{data:{list:[],total:0}};let t=(await r({page:e,user_id:g,page_size:10})).data?.data,n=t?.collections??[];return{data:{list:n.map(Se),total:t?.total??n.length}}}let V=s({key:[...S,`user-collection-created`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return Re(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),H=s({key:[...S,`user-collection-subscribed`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return ze(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),U=u(()=>z.data?.pages.flatMap(e=>e.data?.list??y)??y,[z.data]),W=u(()=>B.data?.pages.flatMap(e=>e.data?.list??y)??y,[B.data]),Be=u(()=>V.data?.pages.flatMap(e=>e.data?.list??y)??y,[V.data]),Ve=u(()=>H.data?.pages.flatMap(e=>e.data?.list??y)??y,[H.data]),He=E===`video`?U:E===`post`?W:y,G=new Set(He.map(e=>e.id)),Ue=G.size,We=Ue>0&&P.size===Ue,K=E===`video`?z:B,q=D===`created`?V:H,J=D===`created`?Be:Ve,Y=E===`video`?U.length===0&&!K.isFetching:E===`post`?W.length===0&&!K.isFetching:J.length===0&&!q.isFetching,X=u(()=>new Set(J.filter(e=>!e.isDefaultCollection).map(e=>e.id)),[J]),Ge=X.size>0&&[...X].every(e=>I.has(e)),Ke=E===`video`,qe=_&&D===`created`,Je=[...S,`user-collect-video`,R],Ye=[...S,`user-collect-post`,R],{mutateAsync:Xe,isPending:Z}=oe(async e=>await ne({app_id:0,user_id:R,folder_id:``,content_type:Ke?1:2,content_ids:e})),{mutateAsync:Ze,isPending:Q}=oe(async e=>await te({collection_ids:e})),Qe=()=>{k(!O),F(new Set)};function $e(){qe&&(j(e=>!e),L(new Set))}l(()=>{if(F(new Set),E===`collection`){k(!1),M(!1);return}k(!1),L(new Set),j(!1),N(!1)},[E]),l(()=>{L(new Set),j(!1),N(!1)},[D]),l(()=>{C!==E&&w(E)},[E,C,w]),l(()=>{T!==D&&ke(D)},[D,T,ke]);let et=e=>{F(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},tt=()=>{P.size===G.size&&G.size>0?F(new Set):F(new Set(G))};function nt(e){if(J.find(t=>t.id===e)?.isDefaultCollection){m.error(v(`detail.defaultCollectionDeleteNotSupported`));return}L(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function rt(){if(Ge){L(new Set);return}L(new Set(X))}function it(){P.size===0||Z||M(!0)}function at(){Z||M(!1)}function ot(){Q||N(!1)}async function st(){if(!(P.size===0||Z)){if(!R){m.error(b(`collectTab.pleaseLogin`));return}try{let e=Array.from(P),t=await Xe(e);if(t.code===0){m.success(b(`collectTab.uncollectedSuccess`));let t=new Set(e);Ie(Ke?Je:Ye,e=>ge(e,t)),M(!1),F(new Set),k(!1)}else m.error(t.message||b(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),m.error(b(`collectTab.operationFailed`))}}}function ct(){I.size===0||Q||N(!0)}async function lt(){if(!(I.size===0||Q)){if(!R){m.error(b(`collectTab.pleaseLogin`));return}try{let e=await Ze(Array.from(I));if(e.code===0){m.success(v(`detail.deleteSuccess`)),await q.refetch(),N(!1),L(new Set),j(!1);return}m.error(e.message||v(`detail.deleteFailed`))}catch(e){console.error(`删除收藏夹失败`,e),m.error(v(`detail.deleteFailed`))}}}let $=async()=>{if(x){if(E===`collection`){await q.fetchNextPage();return}await K.fetchNextPage()}};return p(a,{children:[p(a,{className:`flex items-center justify-between`,children:[f(re,{value:E,onValueChange:e=>{w(e)},children:p(ie,{variant:`tag`,className:`!h-6 !gap-4 !p-0`,children:[f(ae,{value:`video`,className:Oe(),children:b(`collectTab.video`)}),f(ae,{value:`collection`,className:Oe(),children:b(`collectTab.collections`)})]})}),E===`collection`?_&&p(a,{className:`flex items-center gap-3`,children:[p(`button`,{type:`button`,className:De,onClick:()=>Ne(!0),children:[f(Te,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:xe(`components.pages.collectionCreate.form.create`)})]}),qe&&p(`button`,{type:`button`,className:De,onClick:$e,children:[!A&&f(Ee,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:b(A?`collectTab.cancel`:`collectTab.edit`)})]})]}):(E===`video`||E===`post`)&&ye&&p(t,{variant:`ghost`,size:`sm`,className:`h-6 gap-[2px] px-0 text-[14px] leading-6 text-[var(--color-text-secondary)] hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:Qe,children:[O?null:f(Ee,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:b(O?`collectTab.cancel`:`collectTab.edit`)})]})]}),f(a,{className:`pt-4`,children:E===`video`?Y?f(c,{text:b(`collectTab.emptyContent`)}):f(fe,{list:U,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:O,selectedIds:P,onToggleSelection:et}):E===`post`?Y?f(c,{text:b(`collectTab.emptyContent`)}):f(de,{list:W,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:O,selectedIds:P,onToggleSelection:et}):Y?f(c,{text:b(`collectTab.emptyContent`)}):f(ue,{list:J,loading:q.isFetching,hasMore:q.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:A,selectedIds:I,onToggleSelection:nt})}),O&&E!==`collection`&&p(a,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[p(a,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:tt,children:b(We?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:P.size===0||Z,onClick:it,children:b(Z?`collectTab.processing`:`collectTab.delete`)})]}),f(a,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),A&&p(a,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[p(a,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:rt,children:b(Ge?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:I.size===0||Q,onClick:ct,children:b(Q?`collectTab.processing`:`collectTab.delete`)})]}),f(a,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),f(le,{open:Ae,onOpenChange:M,onCancel:at,onConfirm:st,title:``,description:b(`collectTab.deleteConfirmDescription`),confirmText:b(`collectTab.delete`),cancelText:b(`collectTab.cancel`),isConfirming:Z}),f(le,{open:je,onOpenChange:N,onCancel:ot,onConfirm:lt,title:v(`detail.deleteCollection`),isConfirming:Q}),f(ce,{visible:Me,onClose:()=>Ne(!1),onCreated:()=>{V.refetch()}})]})}export{b as CollectTab};
|
|
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{gCommunityGetSubscribedCollections as r,gCommunityGetUserCollections as i,gInteractionListCollects as ee,pCommunityBatchDeleteCollection as te,pInteractionBatchDeleteCollects as ne}from"../../../../../../../service/generated/client.mjs";import{Box as a}from"../../../../../../ui/box.mjs";import{Text as o}from"../../../../../../ui/text.mjs";import{Tabs as re,TabsList as ie,TabsTrigger as ae}from"../../../../../../ui/tabs.mjs";import{useMutation as oe,usePaginated as s,useUpdateRequest as se}from"../../../../../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as ce}from"../../../../../../common/collection-popup/create-collection-sheet.mjs";import{DeleteConfirmDialog as le}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as ue}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as de}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as fe}from"../../../tracking.mjs";import{ProfileMainEmptyState as c}from"../../empty-state.mjs";import{CollectVideoWaterfall as pe}from"./video-waterfall.mjs";import{useEffect as l,useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useTranslations as h}from"next-intl";import g from"dayjs";import{parseAsString as me,useQueryState as he}from"nuqs";const ge={video:1,post:2};function _e(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??y).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function _(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 ve(e,t){let n=t[e.content_id||``]?.create_time,r=_(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:g(n).toDate().getTime()}}function ye(e){return e.tags?.find(e=>e?.name?.trim())?.name?.trim()||String(e.cat_name||``).trim()||``}function be(e){let t=String(e.img_type||``).trim().toLowerCase();return t===`short`?e.img_y||e.img_x||``:t===`long`?e.img_x||e.img_y||``:e.img_y||e.img_x||``}function xe(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:be(e),duration:Number(e.duration??e.detail?.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:g(n).toDate().getTime(),imgType:e.img_type||e.media?.img_type||``,score:e.score??e.detail?.score,metaPrimaryText:ye(e)}}function Se(e){let t=_(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function v(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function Ce(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(Se),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,isDefaultCollection:!!e.is_default,contents:r===0?v(e.collection_id||`collection`):n}}const y=[],we=[`video`,`post`,`collection`],Te=[`created`,`subscribed`];function Ee({className:t}){return f(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:f(`path`,{d:`M7.33398 7.3335V4.66683H8.66732V7.3335H11.334V8.66683H8.66732V11.3335H7.33398V8.66683H4.66732V7.3335H7.33398ZM8.00065 14.6668C4.31875 14.6668 1.33398 11.682 1.33398 8.00016C1.33398 4.31826 4.31875 1.3335 8.00065 1.3335C11.6825 1.3335 14.6673 4.31826 14.6673 8.00016C14.6673 11.682 11.6825 14.6668 8.00065 14.6668ZM8.00065 13.3335C10.9462 13.3335 13.334 10.9457 13.334 8.00016C13.334 5.05464 10.9462 2.66683 8.00065 2.66683C5.05513 2.66683 2.66732 5.05464 2.66732 8.00016C2.66732 10.9457 5.05513 13.3335 8.00065 13.3335Z`,fill:`currentColor`})})}function De({className:t}){return f(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:f(`g`,{children:f(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M10.7666 2.12385C10.9828 1.94731 11.3023 1.95935 11.5039 2.16096L13.8389 4.49592C13.942 4.5991 13.9999 4.73966 14 4.88557C14 5.03152 13.942 5.17199 13.8389 5.27522L11.5078 7.6053C11.5063 7.60688 11.5055 7.60959 11.5039 7.61116C11.5023 7.61279 11.4997 7.61345 11.498 7.61506L5.27539 13.8387C5.17216 13.9418 5.03168 13.9998 4.88574 13.9998H2.55078C2.24679 13.9998 2.00001 13.753 2 13.449V11.1141C2 10.9681 2.05794 10.8277 2.16113 10.7244L10.7246 2.16096L10.7666 2.12385ZM3.10059 11.3416V12.8992H4.6582L10.335 7.22151L8.77734 5.66389L3.10059 11.3416ZM9.55664 4.88459L11.1143 6.44221L12.6709 4.88557L11.1133 3.32893L9.55664 4.88459Z`,fill:`currentColor`})})})}const Oe=`flex items-center gap-[2px] text-[14px] leading-6 text-[var(--color-text-secondary)]`;function ke(){return e(`!flex !items-center !flex-none !h-6 !w-auto !rounded-[4px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function b({mode:e=`renderer`,userId:g,showCreateAction:_=!1,queryKeyPrefix:ye,isMine:be=!1}){let Se=h(),v=h(`components.pages.collectionDetail`),b=h(`components.pages.profile.components.tabs`),x=e===`renderer`,S=ye??[],[C,w]=he(`collectTab`,me.withDefault(`video`)),[T,Ae]=he(`collectCollectionTab`,me.withDefault(`created`)),E=u(()=>we.includes(C)?C:`video`,[C]),D=u(()=>Te.includes(T)?T:`created`,[T]),[O,k]=d(!1),[A,j]=d(!1),[je,M]=d(!1),[Me,N]=d(!1),[Ne,Pe]=d(!1),[P,F]=d(()=>new Set),[I,L]=d(()=>new Set),{userId:Fe,userInfo:Ie}=n(),R=g||Fe||Ie?.userId||``,Le=se();async function Re(e,t){if(!R)return{data:{list:[],total:0}};let n=await ee({user_id:R,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},i=t===ge.video?(n.data?.video_infos??[]).map(e=>xe(e,r)):(n.data?.post_infos??[]).map(e=>ve(e,r));return{data:{list:i,total:n.data?.total??i.length}}}let z=s({key:[...S,`user-collect-video`,R],initialPageParam:1,async queryFn(e){return Re(e,ge.video)},options:{staleTime:0,enabled:x},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),B=s({key:[...S,`user-collect-post`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function ze(e){if(!R)return{data:{list:[],total:0}};let t=await i({page:e,user_id:g,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(Ce),total:t.data?.data?.total??n.length}}}async function Be(e){if(!R)return{data:{list:[],total:0}};let t=(await r({page:e,user_id:g,page_size:10})).data?.data,n=t?.collections??[];return{data:{list:n.map(Ce),total:t?.total??n.length}}}let V=s({key:[...S,`user-collection-created`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return ze(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),H=s({key:[...S,`user-collection-subscribed`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return Be(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),U=u(()=>z.data?.pages.flatMap(e=>e.data?.list??y)??y,[z.data]),W=u(()=>B.data?.pages.flatMap(e=>e.data?.list??y)??y,[B.data]),Ve=u(()=>V.data?.pages.flatMap(e=>e.data?.list??y)??y,[V.data]),He=u(()=>H.data?.pages.flatMap(e=>e.data?.list??y)??y,[H.data]),Ue=E===`video`?U:E===`post`?W:y,G=new Set(Ue.map(e=>e.id)),We=G.size,Ge=We>0&&P.size===We,K=E===`video`?z:B,q=D===`created`?V:H,J=D===`created`?Ve:He,Y=E===`video`?U.length===0&&!K.isFetching:E===`post`?W.length===0&&!K.isFetching:J.length===0&&!q.isFetching,X=u(()=>new Set(J.filter(e=>!e.isDefaultCollection).map(e=>e.id)),[J]),Ke=X.size>0&&[...X].every(e=>I.has(e)),qe=E===`video`,Je=_&&D===`created`,Ye=[...S,`user-collect-video`,R],Xe=[...S,`user-collect-post`,R],{mutateAsync:Ze,isPending:Z}=oe(async e=>await ne({app_id:0,user_id:R,folder_id:``,content_type:qe?1:2,content_ids:e})),{mutateAsync:Qe,isPending:Q}=oe(async e=>await te({collection_ids:e})),$e=()=>{k(!O),F(new Set)};function et(){Je&&(j(e=>!e),L(new Set))}l(()=>{if(F(new Set),E===`collection`){k(!1),M(!1);return}k(!1),L(new Set),j(!1),N(!1)},[E]),l(()=>{L(new Set),j(!1),N(!1)},[D]),l(()=>{C!==E&&w(E)},[E,C,w]),l(()=>{T!==D&&Ae(D)},[D,T,Ae]);let tt=e=>{F(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},nt=()=>{P.size===G.size&&G.size>0?F(new Set):F(new Set(G))};function rt(e){if(J.find(t=>t.id===e)?.isDefaultCollection){m.error(v(`detail.defaultCollectionDeleteNotSupported`));return}L(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function it(){if(Ke){L(new Set);return}L(new Set(X))}function at(){P.size===0||Z||M(!0)}function ot(){Z||M(!1)}function st(){Q||N(!1)}async function ct(){if(!(P.size===0||Z)){if(!R){m.error(b(`collectTab.pleaseLogin`));return}try{let e=Array.from(P),t=await Ze(e);if(t.code===0){m.success(b(`collectTab.uncollectedSuccess`));let t=new Set(e);Le(qe?Ye:Xe,e=>_e(e,t)),M(!1),F(new Set),k(!1)}else m.error(t.message||b(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),m.error(b(`collectTab.operationFailed`))}}}function lt(){I.size===0||Q||N(!0)}async function ut(){if(!(I.size===0||Q)){if(!R){m.error(b(`collectTab.pleaseLogin`));return}try{let e=await Qe(Array.from(I));if(e.code===0){m.success(v(`detail.deleteSuccess`)),await q.refetch(),N(!1),L(new Set),j(!1);return}m.error(e.message||v(`detail.deleteFailed`))}catch(e){console.error(`删除收藏夹失败`,e),m.error(v(`detail.deleteFailed`))}}}let $=async()=>{if(x){if(E===`collection`){await q.fetchNextPage();return}await K.fetchNextPage()}};return p(a,{children:[p(a,{className:`flex items-center justify-between`,children:[f(re,{value:E,onValueChange:e=>{w(e)},children:p(ie,{variant:`tag`,className:`!h-6 !gap-4 !p-0`,children:[f(ae,{value:`video`,className:ke(),children:b(`collectTab.video`)}),f(ae,{value:`collection`,className:ke(),children:b(`collectTab.collections`)})]})}),E===`collection`?_&&p(a,{className:`flex items-center gap-3`,children:[p(`button`,{type:`button`,className:Oe,onClick:()=>Pe(!0),children:[f(Ee,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:Se(`components.pages.collectionCreate.form.create`)})]}),Je&&p(`button`,{type:`button`,className:Oe,onClick:et,children:[!A&&f(De,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:b(A?`collectTab.cancel`:`collectTab.edit`)})]})]}):(E===`video`||E===`post`)&&be&&p(t,{variant:`ghost`,size:`sm`,className:`h-6 gap-[2px] px-0 text-[14px] leading-6 text-[var(--color-text-secondary)] hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:$e,children:[O?null:f(De,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:b(O?`collectTab.cancel`:`collectTab.edit`)})]})]}),f(a,{onClick:e=>{fe(e,`content_item`)},className:`pt-4`,children:E===`video`?Y?f(c,{text:b(`collectTab.emptyContent`)}):f(pe,{list:U,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:O,selectedIds:P,onToggleSelection:tt}):E===`post`?Y?f(c,{text:b(`collectTab.emptyContent`)}):f(de,{list:W,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:O,selectedIds:P,onToggleSelection:tt}):Y?f(c,{text:b(`collectTab.emptyContent`)}):f(ue,{list:J,loading:q.isFetching,hasMore:q.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:A,selectedIds:I,onToggleSelection:rt})}),O&&E!==`collection`&&p(a,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[p(a,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:nt,children:b(Ge?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:P.size===0||Z,onClick:at,children:b(Z?`collectTab.processing`:`collectTab.delete`)})]}),f(a,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),A&&p(a,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[p(a,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:it,children:b(Ke?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:I.size===0||Q,onClick:lt,children:b(Q?`collectTab.processing`:`collectTab.delete`)})]}),f(a,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),f(le,{open:je,onOpenChange:M,onCancel:ot,onConfirm:ct,title:``,description:b(`collectTab.deleteConfirmDescription`),confirmText:b(`collectTab.delete`),cancelText:b(`collectTab.cancel`),isConfirming:Z}),f(le,{open:Me,onOpenChange:N,onCancel:st,onConfirm:ut,title:v(`detail.deleteCollection`),isConfirming:Q}),f(ce,{visible:Ne,onClose:()=>Pe(!1),onCreated:()=>{V.refetch()}})]})}export{b as CollectTab};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionBatchClearBrowse as n}from"../../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{
|
|
2
|
+
"use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionBatchClearBrowse as n}from"../../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getHistoryData as ee,likeContentType as p}from"../../utils.mjs";import{useEffect as m,useMemo as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";import{parseAsString as x,useQueryState as S}from"nuqs";function te(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n.title||n.text||``,coverImage:n.cover_image_thumbnail||n.cover_image||n.cover_horizontal_image_thumbnail||void 0,publishTime:r}}function C(e){let{detail:t,content_play_progress:n}=e,{user_info:r,info:i,statics_cnt:a,publish_time:o,parent_content_info:s}=t,c=(Array.isArray(i?.tags)?i.tags:[]).map(e=>typeof e==`string`?e.trim():e&&typeof e==`object`&&`name`in e?String(e.name||``).trim():``).find(Boolean)||``,l=String(i?.img_type||``).trim().toLowerCase(),u=l===`long`||!l&&!!i?.cover_horizontal_image_thumbnail,d=u?i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image_thumbnail||i?.img_y||i?.cover_image||``:i?.cover_image_thumbnail||i?.img_y||i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image||``;return{is_more_link:i.is_more_link,id:e.id,title:i.title||i.text||i.name||``,coverImage:d,duration:Number(i.video_duration??0),progress:n?.percent??0,seriesNum:n?.series_num,authorName:r.name,viewCount:i?.play_count??a?.browse_cnt??0,publishTime:o,type:s?.type,imgType:l||(u?`long`:`short`),score:i?.score,metaPrimaryText:c}}function w(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}const T=[`video`,`post`];function E({mode:E=`renderer`,targetUserId:D,queryKeyPrefix:O}){let k=b(`components.pages.profile.components.tabs`),A=E===`renderer`,j=O??[],[M,N]=S(`historyTab`,x.withDefault(`video`)),P=h(()=>T.includes(M)?M:`video`,[M]),[F,I]=g(!1),[L,R]=g(()=>new Set),z=t(e=>e.userId),B=c(),V=[...j,`user-history-video`],H=[...j,`user-history-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return ee({targetUserId:D,page:e,contentType:p.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(te))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:ne,isPending:Q}=o(async e=>await n({app_id:0,user_id:z,content_type:e.contentType,content_ids:e.contentIds}));m(()=>{R(new Set)},[P]),m(()=>{M!==P&&N(P)},[P,M,N]);let re=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ie=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},ae=async()=>{if(!(L.size===0||Q)){if(!z){y.error(k(`historyTab.pleaseLogin`));return}try{let e=Array.from(L),t=await ne({contentIds:e,contentType:Z?1:2});if(t.code===0){y.success(k(`historyTab.historyDeletedSuccess`));let t=new Set(e);B(Z?V:H,e=>w(e,t,e=>e.id)),R(new Set),I(!1)}else y.error(t.message||k(`historyTab.deleteFailed`))}catch(e){console.error(`删除浏览记录失败`,e),y.error(k(`historyTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return v(r,{children:[_(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?_(d,{text:k(`historyTab.emptyContent`)}):_(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`)}):Y?_(d,{text:k(`historyTab.emptyContent`)}):_(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:re})}),F&&v(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[v(r,{className:`flex items-center gap-2`,children:[_(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ie}),_(a,{className:`text-sm text-text1`,children:k(`historyTab.selectAll`)})]}),_(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:ae,children:k(Q?`historyTab.processing`:`historyTab.delete`)})]})]})}export{E as HistoryTab};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionUnifiedBatchLikeDislike as n}from"../../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{
|
|
2
|
+
"use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionUnifiedBatchLikeDislike as n}from"../../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getLikeData as ee,likeContentType as p}from"../../utils.mjs";import{useEffect as m,useMemo as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";import{parseAsString as x,useQueryState as te}from"nuqs";function S(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function C(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n?.name||n?.text||n?.content||``,coverImage:n?.cover_image_thumbnail||n?.cover_image||n?.cover_horizontal_image_thumbnail||``,publishTime:r??0}}function w(e){let{detail:t}=e,{user_info:n,info:r,statics_cnt:i,publish_time:a,parent_content_info:o}=t,s=(Array.isArray(r?.tags)?r.tags:[]).map(e=>typeof e==`string`?e.trim():e&&typeof e==`object`&&`name`in e?String(e.name||``).trim():``).find(Boolean)||``,c=String(r?.img_type||``).trim().toLowerCase(),l=c===`long`||!c&&!!r?.cover_horizontal_image_thumbnail,u=l?r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image_thumbnail||r?.img_y||r?.cover_image||``:r?.cover_image_thumbnail||r?.img_y||r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image||``;return{id:e.id,is_more_link:r?.is_more_link||!1,title:r?.name||r?.text||r?.content||``,coverImage:u,duration:Number(r?.video_duration??0),progress:e.content_play_progress?.percent??0,seriesNum:e.content_play_progress?.series_num,authorName:n?.name||``,viewCount:r?.play_count??i?.browse_cnt??0,publishTime:a??0,type:o?.type,imgType:c||(l?`long`:`short`),score:r?.score,metaPrimaryText:s}}const T=[`video`,`post`];function E({mode:E=`renderer`,targetUserId:D,queryKeyPrefix:O,isMine:ne=!1}){let k=b(`components.pages.profile.components.tabs`),A=E===`renderer`,j=O??[],[M,N]=te(`likeTab`,x.withDefault(`video`)),P=h(()=>T.includes(M)?M:`video`,[M]),[F,I]=g(!1),[L,R]=g(()=>new Set),z=t(e=>e.userId),B=c(),V=[...j,`user-like-video`],H=[...j,`user-like-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return ee({targetUserId:D,page:e,contentType:p.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,options:{staleTime:0,enabled:A},initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(w))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:re,isPending:Q}=o(async e=>await n({app_id:0,user_id:z,action:`cancel_like`,content_ids:e,content_type:Z?1:2}));m(()=>{R(new Set)},[P]),m(()=>{M!==P&&N(P)},[P,M,N]);let ie=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ae=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},oe=async()=>{if(!(L.size===0||Q)){if(!z){y.error(k(`likeTab.pleaseLogin`));return}try{let e=Array.from(L),t=await re(e);if(t.code===0){y.success(k(`likeTab.unlikedSuccess`));let t=new Set(e);B(Z?V:H,e=>S(e,t,e=>e.id)),R(new Set),I(!1)}else y.error(t.message||k(`likeTab.unlikeFailed`))}catch(e){console.error(`取消点赞失败`,e),y.error(k(`likeTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return v(r,{children:[_(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?_(d,{text:k(`likeTab.emptyContent`)}):_(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`)}):Y?_(d,{text:k(`likeTab.emptyContent`)}):_(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:ie})}),F&&v(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[v(r,{className:`flex items-center gap-2`,children:[_(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ae}),_(a,{className:`text-sm text-text1`,children:k(`likeTab.selectAll`)})]}),_(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:oe,children:k(Q?`likeTab.processing`:`likeTab.delete`)})]})]})}export{E as LikeTab};
|
package/dist/components/biz/business/search-bar/variants/basic-search-bar/runtime/client.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{pxToVw as t}from"../../../../../../../utils/helper.mjs";import{
|
|
2
|
+
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{pxToVw as t}from"../../../../../../../utils/helper.mjs";import{trackPageClick as n}from"../../../../../../../utils/tracking.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import i from"../../../../../basics/logo/variants/basic-logo/index.mjs";import a from"../../../../../basics/search/variants/basic-search/index.mjs";import{defaultProps as o}from"../defaults/default-props.mjs";import{jsx as s,jsxs as c}from"react/jsx-runtime";const l={},u={list:[]};function d({props:d=l,styles:f,events:p,data:m=u}){let{logo:h,search:g,gap:_=o.gap,pageKey:v=`home`,pageName:y=`首页`}={...o,...d},{list:b}=m;function x(){p?.onLogoClick?.()}function S(e,t){p?.onLogoChannelChange?.(e,t)}function C(){n(v,y,null,`search_bar`),p?.onSearchClick?.()}let w=f?e(f,{}):void 0;return c(r,{as:`header`,className:`w-full flex items-center px-[12px] py-[8px]`,style:{..._>0?{gap:t(_)}:void 0,...w},children:[s(i,{props:h,events:{onClick:x,onChannelChange:S},data:b}),s(a,{props:g,events:{onClick:C}})]})}export{d as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{
|
|
2
|
+
"use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{trackKeywordClick as n}from"../../../../utils/tracking.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as l}from"../../../common/icons/delete.mjs";import{useLayoutEffect as u,useMemo as d,useRef as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{usePathname as g,useSearchParams as _}from"next/navigation";function v(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function y(y){let{title:b,rows:x=2,clearText:S,confirmDescription:C,onHistoryClick:w,mode:T=`renderer`}=y,E=T===`editor`,D=b??`搜索历史`,O=S??`清空`,k=C??`确定要清除所有搜索历史吗?`,A=d(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=p(!1),[N,P]=p(null),F=f(null),I=f([]),L=f(null),R=r(),z=g(),B=_(),{userInfo:V}=t(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=d(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(u(()=>{if(K.length===0){P(null);return}let e=F.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];I.current.slice(0,K.length).forEach(e=>{if(!e)return;let r=e.getBoundingClientRect(),i=Math.round(r.top-t.top),a=Math.round(r.bottom-t.top),o=n.find(e=>Math.abs(e.top-i)<=1);if(o){o.bottom=Math.max(o.bottom,a);return}n.push({top:i,bottom:a})}),n.sort((e,t)=>e.top-t.top);let r=n.slice(0,x).reduce((e,t)=>Math.max(e,t.bottom),0);P(e=>e===r?e:r)},n=()=>{L.current!=null&&cancelAnimationFrame(L.current),L.current=requestAnimationFrame(()=>{L.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),I.current.slice(0,K.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)}},[K,x]),K.length===0)return null;let q=(e,t)=>{if(n({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:t,search_trace_id:``}),U(e),w){w(e);return}let r=new URLSearchParams(B.toString());r.set(`q`,e);let i=z.includes(`/search-result`)?z:`/search-result`;R.push(`${i}?${r.toString()}`)};return h(i,{className:E?`mt-[24px] px-[16px] py-[16px]`:`mt-[24px] px-[16px] py-0`,children:[h(i,{className:`mb-[15px] flex items-center justify-between`,children:[m(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),m(`button`,{type:`button`,"aria-label":O,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white/50`,onClick:()=>M(!0),children:m(l,{className:`h-[24px] w-[24px]`})})]}),m(i,{ref:F,className:`flex flex-wrap content-start items-center gap-[6px] overflow-hidden`,style:N?{maxHeight:`${N}px`}:void 0,children:K.map((e,t)=>m(i,{ref:e=>{I.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${E?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>q(e,t),children:m(a,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] text-white`,children:v(e,8)})},t))}),m(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{useMemo as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{usePathname as s}from"next/navigation";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},d={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function f(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function p(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function m(e,t){let n=f(t);if(e.configType===1){let t=f(p(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function h(e,t){return e.findIndex(e=>m(e,t))}function g(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function _(f){let{items:m=l,mode:_=`renderer`}=f,v=s(),y=i(()=>{if(_===`editor`)return 0;let e=h(m??[],v);return e>=0?e:0},[m,v,_]),b=i(()=>(m??[]).some(e=>g(e)&&e.label.trim()!==``),[m]);if(!m?.length)return null;function x(t,n){_===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let S=`size-full rounded-[6px] bg-white/20`;return a(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:a(n,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:d,children:m.map((e,i)=>{let s=y===i,l=s?e.activeIcon:e.icon,u=e.label,d=g(e)&&u.trim()!==``,f=p(e),m=b?s?`gap-[5px]`:`gap-[4px]`:``,h=s?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#BFBFBF]`;return o(c,{href:f,className:`flex flex-col items-center justify-center ${m}`,"aria-current":s?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>x(t,e),children:[a(n,{className:`relative size-5 shrink-0`,children:l?a(t,{src:l,alt:u,fill:!0,className:`object-contain`}):a(n,{className:s?`${S} bg-[#C043E8]`:S})}),b&&d?a(r,{"data-active":s,className:h,children:u}):null]},i)})})})}export{_ as TabBarClient};
|