@funhub/platform 0.2.35 → 0.2.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.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/header-search/header-avatar-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
- package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
- 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/search-input/client.mjs +1 -1
- package/dist/components/common/analytics-init/sensor-init.mjs +1 -1
- package/dist/components/common/media-preview/index.mjs +1 -1
- package/dist/components/common/top-nav-bar/client.mjs +1 -1
- package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
- package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
- package/dist/components/pages/login/login-client.mjs +1 -1
- package/dist/components/pages/login/password.mjs +1 -1
- package/dist/components/pages/login/register.mjs +1 -1
- package/dist/components/pages/login/verify.mjs +1 -1
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/search-result/search-tab.mjs +1 -1
- package/dist/components/pages/search-result/top-header.mjs +1 -1
- package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
- package/dist/components/ui/button.d.mts +1 -1
- package/dist/components/ui/empty.d.mts +1 -1
- package/dist/components/ui/item.d.mts +1 -1
- package/dist/store/modules/user-store.mjs +1 -1
- package/dist/types.d.mts +4 -0
- package/dist/utils/tracking.d.mts +20 -1
- package/dist/utils/tracking.mjs +1 -1
- package/dist/utils.d.mts +2 -2
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{
|
|
2
|
+
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{trackPageClick as t}from"../../../../../../../utils/tracking.mjs";import{disablePageScroll as n,enablePageScroll as r,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 c from"../../../../../../ui/link.mjs";import{urlPrefix as l}from"../../../../../../../constants/url-prefix.mjs";import u from"../../../../../../ui/legacy/button.mjs";import{defaultProps as d}from"../defaults/default-props.mjs";import f from"../../../../../../../assets/images/logo.mjs";import{loadHiddenChannelIdsFromStorage as p}from"../../../../../business/nav-bar/variants/basic-nav-bar/runtime/channel-filter-dialog.mjs";import{Popover as m}from"../../../../../../ui/legacy/popover.mjs";import{Mask as h}from"../../../../../../ui/mask.mjs";import{clsx as g}from"clsx";import{usePathname as _}from"next/navigation";import{useEffect as v,useMemo as y,useRef as b,useState as x}from"react";import{useIsClient as S}from"foxact/use-is-client";import{jsx as C,jsxs as w}from"react/jsx-runtime";const T={overscrollBehavior:`contain`},E={},D=[];function O(e,t){return t===0?`/`:`${l.CHANNEL}/${encodeURIComponent(e.cn_name)}`}function k(e,t,n){return g(`w-full leading-[58px] px-[20px] text-[16px] text-text2 border-t border-solid border-line1 transition-all duration-150 block`,e===0&&`border-t-0`,t&&`!text-[20px] !text-theme5 !font-bold`,n&&`!text-(--color-theme5)`)}function A(e){let t=e;try{t=decodeURIComponent(e)}catch{t=e}return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function j(e){e.stopPropagation()}function M({props:l=E,styles:g,events:M,data:N=D}){let{logoAlt:P,logoWidth:F,logoHeight:I,popoverPlacement:L,popoverWidth:R,maxHeight:z,itemHeight:B,currentChannelId:V,pageKey:H=`home`,pageName:U=`首页`}={...d,...l},[W,G]=x(!1),K=b(null),q=_(),[J,Y]=x(V??null),X=S(),Z=(e,t)=>{Y(e.id),M?.onChannelChange?.(e,t),setTimeout(()=>{G(!1)},150)};v(()=>{if(V||!q||N.length===0)return;let e=A(q),t=N.find((t,n)=>A(O(t,n))===e);t?Y(t.id):e===`/`&&Y(N[0]?.id||null)},[q,X,N,V]);let Q=y(()=>{if(!X||!W)return N;let e=p();return N.filter(t=>!e.includes(t.id))},[N,X,W]);v(()=>{if(W)return n(),()=>{r()}},[W]);let $=g?e(g,{}):{},ee={width:i(R),maxHeight:i(z),...T};return w(o,{style:$,className:`leading-0 flex items-center`,children:[C(h,{visible:W,onMaskClick:()=>{G(!1)}}),C(m,{placement:L,visible:W,content:C(o,{as:`nav`,className:`overflow-y-auto overscroll-contain`,style:ee,onTouchMove:j,children:Q.map((e,t)=>{let n=O(e,t),r=A(q||``)===A(n);return C(c,{href:n,className:k(t,J===e.id,r),style:{height:i(B)},onClick:()=>Z(e,t),children:e.cn_name},e.id||`channel-${t}`)})}),children:C(s,{ref:K,as:`h1`,className:`flex items-center`,children:C(u,{onClick:()=>{t(H,U,null,`logo`),G(e=>!e),M?.onClick?.()},className:`!m-0 !p-0`,children:C(a,{alt:P,src:typeof f==`string`?f:f.src,width:F,height:I})})},`logo-button`)})]})}export{M as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{formatCompactCount as e}from"../../../../../utils/common.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as n}from"../../../../../service/generated/client.mjs";import{trackPageClick as r}from"../../../../../utils/tracking.mjs";import{Box as i}from"../../../../ui/box.mjs";import{Text as a}from"../../../../ui/text.mjs";import{useLoginModalStore as o}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as s}from"../../../../../hooks/query/use-query.mjs";import c from"../../../../common/interaction-animations.module.mjs";import l from"../../../../common/collection-popup/index.mjs";import u from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as ee}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as d}from"../../../../../hooks/use-content-operate.mjs";import te from"../../../../../assets/icons/detail/check-ok.mjs";import{toast as f}from"sonner";import{usePathname as ne,useSearchParams as re}from"next/navigation";import{useCallback as p,useEffect as m,useMemo as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as ie}from"next-intl";function ae({className:e}){return v(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:v(`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 oe({className:e}){return v(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:v(`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 se({className:e}){return v(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:v(`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 b({className:e}){return v(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:v(`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 x({className:e}){return v(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:v(`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 S({mode:S=`renderer`,information:E,onUpdate:D}){let O=S===`editor`||!E?.id||E.id.startsWith(`preview-`),k=`${ne()}?${re()?.toString()||``}`,A=g(k),j=ie(`components.biz.business.detail`),M=ee(),N=h(()=>w(E),[E]),P=h(()=>T(E),[E]),[F,I]=_(!1),[L,R]=_(!1),z=g(0),B=g(0),V=t(e=>e.userId),H=t(e=>e.isLogin),U=s();m(()=>{A.current!==k&&(u.clear(),A.current=k)},[k]),m(()=>()=>{u.clear()},[]);let W=p(()=>{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}=d({id:E.id,isLike:E.like||!1,isDislike:E.dislike||!1,isCollect:!!E.collect||!1,likeCnt:w(E),dislikeCnt:C(E.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!O,animationClasses:{like:c.likeShakeAnimation,dislike:c.dislikeShakeAnimation}}),Y=p(e=>{D?.({...e})},[D]),X=p(async()=>{if(F)return;if(!H){o.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,r(`page_video_detail`,`详情页`,null,`detail_like`,{object_id:E.id}),I(!0);let t=E.like||!1,n=E.dislike||!1,i=w(E),a=C(E.static?.dislike_cnt),s=!t,c=Math.max(0,i+(s?1:-1)),l=s?!1:n,u=s&&n?Math.max(0,a-1):a;Y({like:s,dislike:l,like_count:c,static:{...E.static,dislike_cnt:u}});try{let e=await K();if(!e){Y({like:t,dislike:n,like_count:i,static:{...E.static,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??l,like_count:e.likeCnt,static:{...E.static,dislike_cnt:e.dislikeCnt??u}}),W(),f.success(e.isLike?j(`detailOperate.likeSuccess`):j(`detailOperate.unlikeSuccess`)),window.sensors?.track?.(`detail_like_click`,{object_id:E.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),f.error(j(`detailOperate.likeFailed`))}finally{I(!1)}},[K,E,W,F,H,j,Y]),Z=h(()=>E.id,[E.id]),ce=p(()=>{r(`page_video_detail`,`详情页`,null,`detail_share`,{object_id:E.id}),J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y,E.id]),Q=p(()=>{l.show({mode:`select`,onCollect:async e=>{try{let t=await n({new_collection_id:e,content_id:E.id});if(t.code!==0)throw Error(t.message||j(`detailOperate.collectFailed`));Y({collect:!0}),W(),f.success(j(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),f.error(j(`detailOperate.collectFailed`))}}})},[E.id,W,j,Y]),$=p(e=>{let t=e||j(`detailOperate.defaultCollection`);f.custom(e=>y(`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:[y(`div`,{className:`flex items-center gap-[10px]`,children:[v(`div`,{className:`w-[14px] h-[14px] rounded-full bg-white flex items-center justify-center`,children:v(te,{className:`w-[14px] h-[14px]`})}),y(`div`,{className:`flex items-center gap-[6px]`,children:[v(`span`,{className:`text-[14px] leading-[20px]`,children:j(`detailOperate.collectAdded`)}),v(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),v(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{f.dismiss(e),Q()},children:j(`detailOperate.modifyCollection`)})]}))},[Q,j]),le=p(async()=>{if(L)return;if(!H){o.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e,r(`page_video_detail`,`详情页`,null,`detail_collect`,{object_id:E.id});let t=E.collect||!1,n=!t,i=T(E),a=Math.max(0,i+(n?1:-1));R(!0),Y({collect:n,collect_count:a}),n&&M.trigger(c.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t,collect_count:i}),f.error(e?.message||j(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n,collect_count:a}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&f.success(j(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t,collect_count:i}),console.error(`收藏操作失败:`,e),f.error(e?.message||j(`detailOperate.collectFailed`))}finally{R(!1)}},[M,q,E,W,L,H,$,j,Y]);return y(i,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${O?`pointer-events-none`:``}`,children:[y(i,{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:[E.like?v(oe,{className:`size-[28px] text-[#FF5D8F] ${G.animationClass}`}):v(ae,{className:`size-[28px] text-white`}),v(a,{className:`text-center text-[14px] leading-[22px] ${E.like?`text-[#FF5D8F]`:`text-white`}`,children:N>0?e(N):j(`detailOperate.like`)})]}),y(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:le,children:[E.collect?v(b,{className:`size-[28px] text-[#FFC039] ${M.animationClass}`}):v(se,{className:`size-[28px] text-white`}),v(a,{className:`text-center text-[14px] leading-[22px] ${E.collect?`text-[#FFC039]`:`text-white`}`,children:P>0?e(P):j(`detailOperate.collection`)})]}),y(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:ce,children:[v(x,{className:`size-[28px] text-white`}),v(a,{className:`text-center text-[14px] leading-[22px] text-white`,children:j(`detailOperate.share`)})]})]})}function C(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}function w(e){return C(e.like_count)}function T(e){return C(e.collect_count)}export{S as DetailOperate};
|
|
2
|
+
"use client";import{formatCompactCount as e}from"../../../../../utils/common.mjs";import{trackPageClick as t}from"../../../../../utils/tracking.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as r}from"../../../../../service/generated/client.mjs";import{Box as i}from"../../../../ui/box.mjs";import{Text as a}from"../../../../ui/text.mjs";import{useLoginModalStore as o}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as s}from"../../../../../hooks/query/use-query.mjs";import c from"../../../../common/interaction-animations.module.mjs";import l from"../../../../common/collection-popup/index.mjs";import u from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as ee}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as te}from"../../../../../hooks/use-content-operate.mjs";import ne from"../../../../../assets/icons/detail/check-ok.mjs";import{toast as d}from"sonner";import{usePathname as re,useSearchParams as ie}from"next/navigation";import{useCallback as f,useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";function ae({className:e}){return _(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:_(`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 oe({className:e}){return _(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:_(`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 se({className:e}){return _(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:_(`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 b({className:e}){return _(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:_(`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 x({className:e}){return _(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:_(`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 S({mode:S=`renderer`,information:E,onUpdate:D}){let O=S===`editor`||!E?.id||E.id.startsWith(`preview-`),k=`${re()}?${ie()?.toString()||``}`,A=h(k),j=y(`components.biz.business.detail`),M=ee(),N=m(()=>w(E),[E]),P=m(()=>T(E),[E]),[F,I]=g(!1),[L,R]=g(!1),z=h(0),B=h(0),V=n(e=>e.userId),H=n(e=>e.isLogin),U=s();p(()=>{A.current!==k&&(u.clear(),A.current=k)},[k]),p(()=>()=>{u.clear()},[]);let W=f(()=>{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}=te({id:E.id,isLike:E.like||!1,isDislike:E.dislike||!1,isCollect:!!E.collect||!1,likeCnt:w(E),dislikeCnt:C(E.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!O,animationClasses:{like:c.likeShakeAnimation,dislike:c.dislikeShakeAnimation}}),Y=f(e=>{D?.({...e})},[D]),X=f(async()=>{if(F)return;if(!H){o.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,t(`page_video_detail`,`详情页`,null,`detail_like`,{object_id:E.id}),I(!0);let n=E.like||!1,r=E.dislike||!1,i=w(E),a=C(E.static?.dislike_cnt),s=!n,c=Math.max(0,i+(s?1:-1)),l=s?!1:r,u=s&&r?Math.max(0,a-1):a;Y({like:s,dislike:l,like_count:c,static:{...E.static,dislike_cnt:u}});try{let e=await K();if(!e){Y({like:n,dislike:r,like_count:i,static:{...E.static,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??l,like_count:e.likeCnt,static:{...E.static,dislike_cnt:e.dislikeCnt??u}}),W(),d.success(e.isLike?j(`detailOperate.likeSuccess`):j(`detailOperate.unlikeSuccess`)),window.sensors?.track?.(`detail_like_click`,{object_id:E.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),d.error(j(`detailOperate.likeFailed`))}finally{I(!1)}},[K,E,W,F,H,j,Y]),Z=m(()=>E.id,[E.id]),ce=f(()=>{t(`page_video_detail`,`详情页`,null,`detail_share`,{object_id:E.id}),J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y,E.id]),Q=f(()=>{l.show({mode:`select`,onCollect:async e=>{try{let t=await r({new_collection_id:e,content_id:E.id});if(t.code!==0)throw Error(t.message||j(`detailOperate.collectFailed`));Y({collect:!0}),W(),d.success(j(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),d.error(j(`detailOperate.collectFailed`))}}})},[E.id,W,j,Y]),$=f(e=>{let t=e||j(`detailOperate.defaultCollection`);d.custom(e=>v(`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:[v(`div`,{className:`flex items-center gap-[10px]`,children:[_(`div`,{className:`w-[14px] h-[14px] rounded-full bg-white flex items-center justify-center`,children:_(ne,{className:`w-[14px] h-[14px]`})}),v(`div`,{className:`flex items-center gap-[6px]`,children:[_(`span`,{className:`text-[14px] leading-[20px]`,children:j(`detailOperate.collectAdded`)}),_(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),_(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{d.dismiss(e),Q()},children:j(`detailOperate.modifyCollection`)})]}))},[Q,j]),le=f(async()=>{if(L)return;if(!H){o.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e,t(`page_video_detail`,`详情页`,null,`detail_collect`,{object_id:E.id});let n=E.collect||!1,r=!n,i=T(E),a=Math.max(0,i+(r?1:-1));R(!0),Y({collect:r,collect_count:a}),r&&M.trigger(c.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:n?`取消收藏`:`收藏`});try{let e=await q({currentCollect:n,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:n,collect_count:i}),d.error(e?.message||j(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??r,collect_count:a}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:e.isCollect?`收藏`:`取消收藏`}),!n&&e.isCollect&&$(e.collectionTitle),n&&e.isCollect===!1&&d.success(j(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:n,collect_count:i}),console.error(`收藏操作失败:`,e),d.error(e?.message||j(`detailOperate.collectFailed`))}finally{R(!1)}},[M,q,E,W,L,H,$,j,Y]);return v(i,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${O?`pointer-events-none`:``}`,children:[v(i,{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:[E.like?_(oe,{className:`size-[28px] text-[#FF5D8F] ${G.animationClass}`}):_(ae,{className:`size-[28px] text-white`}),_(a,{className:`text-center text-[14px] leading-[22px] ${E.like?`text-[#FF5D8F]`:`text-white`}`,children:N>0?e(N):j(`detailOperate.like`)})]}),v(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:le,children:[E.collect?_(b,{className:`size-[28px] text-[#FFC039] ${M.animationClass}`}):_(se,{className:`size-[28px] text-white`}),_(a,{className:`text-center text-[14px] leading-[22px] ${E.collect?`text-[#FFC039]`:`text-white`}`,children:P>0?e(P):j(`detailOperate.collection`)})]}),v(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:ce,children:[_(x,{className:`size-[28px] text-white`}),_(a,{className:`text-center text-[14px] leading-[22px] text-white`,children:j(`detailOperate.share`)})]})]})}function C(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}function w(e){return C(e.like_count)}function T(e){return C(e.collect_count)}export{S 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{gUserGetVisitorPermissionConfig as n,pContentMatchAds as r}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as i}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as a}from"../../../../../utils/helper.mjs";import{trackVideoEvent as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as ee}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as te}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as ne}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as re}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as m}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as ie}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as g}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as ae}from"next-intl";function T(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function oe(e){if(!e)return 0;for(let t of[`seconds`,`stay_seconds`,`play_seconds`,`watch_seconds`]){let n=T(e[t]);if(n>0)return n}for(let t of[`内容`,`content`,`video`,`视频`]){let n=e[t],r=T(n?.rule?.seconds);if(r>0)return r}for(let t of Object.values(e)){let e=T(t?.rule?.seconds);if(e>0)return e}return 0}function E(e){return C(D,{...e})}const D=_(({mode:n=`renderer`,information:a,isVideo:o,episodeIndex:s=0,resumeProgressSeconds:ee=0,className:ne=``})=>{let f=n===`editor`,p=t(e=>e.userId),m=b(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),h=b(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,a]),ie=d(),g=b(()=>h.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,h]),_=v(e=>{f||!g.length||ie.open(g,e)},[f,ie,g]),y=b(()=>({user_id:p,ad_type:`preroll`}),[p]),x=b(()=>{let e=Math.max(0,Number(s)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[s,a?.links]),{data:S,isLoading:ae,isFetched:T}=te(b(()=>[`detail-preroll-ad`,a.id,x,...i(y)],[a.id,x,y]),()=>r(y),{enabled:!f&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),oe=b(()=>({data:S?.data??null,isLoading:ae,isFetched:T}),[T,ae,S?.data]);return f?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?C(O,{information:a,episodeIndex:s,resumeProgressSeconds:ee,isEditor:f,prerollState:oe}):w(`div`,{className:e(`w-full`,ne),children:[w(c,{className:`mt-3 px-[12px] space-y-1`,children:[C(l,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),C(re,{medias:h,onItemClick:_})]}),C(u,{})]})});E.displayName=`DetailHero`;const O=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(k,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});O.displayName=`StableDetailPlayerBox`;function k({information:e,episodeIndex:r,resumeProgressSeconds:i,isEditor:l,prerollState:u}){let d=x(null),re=x(null),_=x(null),T=ae(`components.biz.business.detail`),E=t(e=>e.isLogin),D=t(e=>e.userId),O=ee(e=>e.open),k=ee(e=>e.isOpen),A=x(0),j=x(0),M=x(!1),N=x(!1),P=x(null),ue=x(!1),F=x(!1),de=x(!1),I=Math.max(0,Number(r)||0),fe=I+1,[pe,me]=S(!1),[L,R]=S(`main`),[he,z]=S(`auto`),[ge,B]=S(!1),[V,H]=S(!1),[_e,U]=S(!1),[ve,ye]=S(0),W=b(()=>e?.id,[e?.id]),G=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),be=b(()=>G.mid||G.id,[G.id,G.mid]),K=b(()=>{let e=G.links?.[I]?.id;return e?String(e):`ep-${I+1}`},[I,G.links]),q=b(()=>`__reportData_detail_page__${G.id}:${K}`,[K,G.id]),xe=u.data,Se=u.isLoading,Ce=u.isFetched,we=xe?.materials?.[0],Te=xe?.hit===!0,Ee=!!String(we?.advertise_video||``).trim(),J=Te&&!!we&&Ee,{data:Y}=te(b(()=>[`detail-visitor-permission-config`,D||`guest`],[D]),()=>n({user_id:D||``}),{enabled:!l,staleTime:60*1e3,refetchOnWindowFocus:!1}),X=b(()=>oe(Y?.data?.permission_config),[Y?.data?.permission_config]);y(()=>{ue.current||Y&&(ue.current=!0,console.log(`[visitor-limit] permission config:`,Y?.data?.permission_config||null),console.log(`[visitor-limit] resolved limit: ${X}s`))},[X,Y]);let De=b(()=>{if(l||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(q);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[l,q]),Oe=b(()=>{let e=Number(i||0);return Number.isFinite(e)&&e>0?e:0},[i]),ke=b(()=>Oe>0?Oe:De,[Oe,De]),Z=b(()=>{let t=le(e),n=t[t.length?Math.max(0,Math.min(I,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(G.img_width||0)||1,a=Number(G.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:se(i,a),aspectRatio:(i||1)/(a||1),poster:G.img_y||G.img_x||G.preview_images?.[0]||``}},[e.id,e.links,I,G.img_width,G.img_height,G.img_y,G.img_x,G.preview_images]),Ae=v((e,t)=>{if(A.current=e,j.current=t,E||X<=0||M.current){F.current||(F.current=!0,console.log(`[visitor-limit] skip: isLogin=${E}, limit=${X}, triggered=${M.current}`));return}if(e<X){let t=Math.max(0,Math.ceil(X-e));P.current!==t&&(P.current=t,console.log(`[visitor-limit] remaining: ${t}s`));return}M.current=!0,N.current=!0;try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`暂停视频失败:`,e)}O()},[E,O,X]);y(()=>{E&&(M.current=!1,N.current=!1,P.current=null,F.current=!1)},[E]),y(()=>{let e=de.current;if(de.current=k,!(!e||k||E)&&N.current)try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`登录弹窗关闭后暂停视频失败:`,e)}},[E,k]);let je=b(()=>Z.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:ke,preload:`none`}:{startTimeSeconds:ke},[ke,Z.videoUrl]);y(()=>{A.current=0,j.current=0,M.current=!1,N.current=!1,P.current=null,F.current=!1,ue.current=!1,de.current=!1},[W,I]),y(()=>{if(me(!1),H(!1),B(!1),U(!1),z(`auto`),ye(e=>e+1),l){R(`main`);return}if(J){R(`preroll`);return}R(`main`)},[W,K,l,G.id,J]),y(()=>()=>{_.current&&=(window.clearInterval(_.current),null)},[]),y(()=>{if(L!==`preroll`)return;let e=d.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[L,K,G.id]);let Me=v(e=>{let t=d.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),Ne=v(()=>{_.current&&=(window.clearInterval(_.current),null);let e=0;_.current=window.setInterval(()=>{e+=1;let t=d.current?.getPlayer?.();if(!t){e>=8&&_.current&&(window.clearInterval(_.current),_.current=null);return}_.current&&=(window.clearInterval(_.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Me(!0);if(!e){U(!0);return}e.play?.().then(()=>{U(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),U(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Me]),Pe=!l&&Ce&&!Se&&!V&&(!J||ge);y(()=>{!Pe||!pe||(U(!1),Ne())},[Ne,pe,Pe]);let Q=ne({contentId:W,browseEpisode:fe,contentType:1,enabled:!l&&!!W,intervalMs:60*1e3,getCurrentTimeSeconds:()=>A.current,getDurationSeconds:()=>j.current,seriesId:G.mid||void 0,source:`detail`,playMode:`normal`}),$=v(()=>{let t=j.current,n=A.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:K,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[K,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);v(()=>{Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$]),v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Q,$]);let Fe=v(()=>{if(V){let e=d.current?.getPlayer?.();e&&(e.currentTime=0)}B(!0),U(!1),z(`manual`),H(!1),R(`main`)},[V]),Ie=v(()=>{z(`manual`)},[]),Le=v(()=>{me(!0)},[]),Re=v(()=>{H(!1),U(!1)},[]),ze=v(()=>{if(!E&&N.current){try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`未登录拦截播放时暂停视频失败:`,e)}k||O();return}Re(),Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$,Re,E,k,O]),Be=v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),Ve=v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),J&&(H(!0),U(!1),B(!1),z(`manual`),ye(e=>e+1),R(`main`))},[Q,$,J]),He=J&&L===`main`&&(V||!ge&&he===`manual`),Ue=L===`main`&&_e,We=!l&&!Ce,Ge=We,Ke=Pe,qe=!We&&(!J||ge);async function Je(){J&&(H(!1),B(!1),z(`manual`),R(`preroll`),await re.current?.play?.()||R(`main`))}async function Ye(){let e=Me(!1);if(e)try{await e.play?.(),U(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(l)return;let e=()=>{if(!(typeof window>`u`)&&!(A.current<=0||j.current<=0))try{sessionStorage.setItem(q,JSON.stringify({episodeId:K,currentTime:A.current,duration:j.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[K,l,q]),!Z.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:T(`videoHero.noVideos`)});let Xe=ce(430,Z.aspectRatio,242),Ze=Xe.height>0?a(Xe.height):`auto`,Qe=Xe.height>0?`calc(${Ze} + 0px)`:`auto`,$e=a(242);return w(m,{value:d,children:[C(c,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Qe,maxWidth:`100%`,maxHeight:`calc(${$e} + 0px)`}}),w(c,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[Z.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Ze},children:[C(s,{src:Z.poster,alt:T(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(c,{suppressHydrationWarning:!0,"data-aspect-ratio":Z.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Ze,maxWidth:`100%`,maxHeight:$e,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[qe&&C(f,{ref:d,plyerId:`detail-player-${G.id}-${I}`,parentId:be,...Ke?{autoplay:!0}:{autoplay:!1},resolution:Z.resolution||`0x0`,videoUrl:Z.videoUrl,poster:Z.poster,mergeConfig:je,onProgressUpdate:l?void 0:Ae,onPlay:l?void 0:ze,onPause:l?void 0:Be,onEnded:l?void 0:Ve,onPlayerReady:Le},`stable-player-${G.id}-${I}-${Ke?`default-autoplay`:`manual`}`),!l&&J&&C(ie,{ref:re,adData:xe,visible:L===`preroll`,autoStart:L===`preroll`&&he===`auto`,sessionKey:`${G.id}-${K}-${ve}`,onAutoplayBlocked:Ie,onFinish:Fe,onSkip:Fe}),He&&!Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Je()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ye()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ge&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:G.id,episode:fe}),C(g,{videoId:G.id,episode:fe})]})]})]})}function se(e,t){return!e||!t?``:`${e}x${t}`}function ce(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function le(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{E as DetailHero};
|
|
2
|
+
"use client";import{cn as e}from"../../../../../utils/cn.mjs";import{trackVideoEvent as t}from"../../../../../utils/tracking.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetVisitorPermissionConfig as r,pContentMatchAds as i}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as a}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as o}from"../../../../../utils/helper.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as ee}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as te}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as ne}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as re}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as m}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as ie}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as g}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as ae}from"next-intl";function T(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function oe(e){if(!e)return 0;for(let t of[`seconds`,`stay_seconds`,`play_seconds`,`watch_seconds`]){let n=T(e[t]);if(n>0)return n}for(let t of[`内容`,`content`,`video`,`视频`]){let n=e[t],r=T(n?.rule?.seconds);if(r>0)return r}for(let t of Object.values(e)){let e=T(t?.rule?.seconds);if(e>0)return e}return 0}function E(e){return C(D,{...e})}const D=_(({mode:t=`renderer`,information:r,isVideo:o,episodeIndex:s=0,resumeProgressSeconds:ee=0,className:ne=``})=>{let f=t===`editor`,p=n(e=>e.userId),m=b(()=>({id:r.id,name:r.name,preview_images:r.preview_images,img_y:r.img_y,img_x:r.img_x}),[r.id,r.name,r.preview_images,r.img_y,r.img_x]),h=b(()=>{let e=r?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,r]),ie=d(),g=b(()=>h.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),i=e?.cover_image||r.img_y||r.img_x;return{src:n,type:t,...i?{cover:String(i)}:{}}}).filter(e=>!!e.src),[r.img_x,r.img_y,h]),_=v(e=>{f||!g.length||ie.open(g,e)},[f,ie,g]),y=b(()=>({user_id:p,ad_type:`preroll`}),[p]),x=b(()=>{let e=Math.max(0,Number(s)||0),t=r?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[s,r?.links]),{data:S,isLoading:ae,isFetched:T}=te(b(()=>[`detail-preroll-ad`,r.id,x,...a(y)],[r.id,x,y]),()=>i(y),{enabled:!f&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),oe=b(()=>({data:S?.data??null,isLoading:ae,isFetched:T}),[T,ae,S?.data]);return f?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?C(O,{information:r,episodeIndex:s,resumeProgressSeconds:ee,isEditor:f,prerollState:oe}):w(`div`,{className:e(`w-full`,ne),children:[w(c,{className:`mt-3 px-[12px] space-y-1`,children:[C(l,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:r.description}}),C(re,{medias:h,onItemClick:_})]}),C(u,{})]})});E.displayName=`DetailHero`;const O=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(k,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});O.displayName=`StableDetailPlayerBox`;function k({information:e,episodeIndex:i,resumeProgressSeconds:a,isEditor:l,prerollState:u}){let d=x(null),re=x(null),_=x(null),T=ae(`components.biz.business.detail`),E=n(e=>e.isLogin),D=n(e=>e.userId),O=ee(e=>e.open),k=ee(e=>e.isOpen),A=x(0),j=x(0),M=x(!1),N=x(!1),P=x(null),ue=x(!1),F=x(!1),de=x(!1),I=Math.max(0,Number(i)||0),fe=I+1,[pe,me]=S(!1),[L,R]=S(`main`),[he,z]=S(`auto`),[ge,B]=S(!1),[V,H]=S(!1),[_e,U]=S(!1),[ve,ye]=S(0),W=b(()=>e?.id,[e?.id]),G=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),be=b(()=>G.mid||G.id,[G.id,G.mid]),K=b(()=>{let e=G.links?.[I]?.id;return e?String(e):`ep-${I+1}`},[I,G.links]),q=b(()=>`__reportData_detail_page__${G.id}:${K}`,[K,G.id]),xe=u.data,Se=u.isLoading,Ce=u.isFetched,we=xe?.materials?.[0],Te=xe?.hit===!0,Ee=!!String(we?.advertise_video||``).trim(),J=Te&&!!we&&Ee,{data:Y}=te(b(()=>[`detail-visitor-permission-config`,D||`guest`],[D]),()=>r({user_id:D||``}),{enabled:!l,staleTime:60*1e3,refetchOnWindowFocus:!1}),X=b(()=>oe(Y?.data?.permission_config),[Y?.data?.permission_config]);y(()=>{ue.current||Y&&(ue.current=!0,console.log(`[visitor-limit] permission config:`,Y?.data?.permission_config||null),console.log(`[visitor-limit] resolved limit: ${X}s`))},[X,Y]);let De=b(()=>{if(l||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(q);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[l,q]),Oe=b(()=>{let e=Number(a||0);return Number.isFinite(e)&&e>0?e:0},[a]),ke=b(()=>Oe>0?Oe:De,[Oe,De]),Z=b(()=>{let t=le(e),n=t[t.length?Math.max(0,Math.min(I,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(G.img_width||0)||1,a=Number(G.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:se(i,a),aspectRatio:(i||1)/(a||1),poster:G.img_y||G.img_x||G.preview_images?.[0]||``}},[e.id,e.links,I,G.img_width,G.img_height,G.img_y,G.img_x,G.preview_images]),Ae=v((e,t)=>{if(A.current=e,j.current=t,E||X<=0||M.current){F.current||(F.current=!0,console.log(`[visitor-limit] skip: isLogin=${E}, limit=${X}, triggered=${M.current}`));return}if(e<X){let t=Math.max(0,Math.ceil(X-e));P.current!==t&&(P.current=t,console.log(`[visitor-limit] remaining: ${t}s`));return}M.current=!0,N.current=!0;try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`暂停视频失败:`,e)}O()},[E,O,X]);y(()=>{E&&(M.current=!1,N.current=!1,P.current=null,F.current=!1)},[E]),y(()=>{let e=de.current;if(de.current=k,!(!e||k||E)&&N.current)try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`登录弹窗关闭后暂停视频失败:`,e)}},[E,k]);let je=b(()=>Z.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:ke,preload:`none`}:{startTimeSeconds:ke},[ke,Z.videoUrl]);y(()=>{A.current=0,j.current=0,M.current=!1,N.current=!1,P.current=null,F.current=!1,ue.current=!1,de.current=!1},[W,I]),y(()=>{if(me(!1),H(!1),B(!1),U(!1),z(`auto`),ye(e=>e+1),l){R(`main`);return}if(J){R(`preroll`);return}R(`main`)},[W,K,l,G.id,J]),y(()=>()=>{_.current&&=(window.clearInterval(_.current),null)},[]),y(()=>{if(L!==`preroll`)return;let e=d.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[L,K,G.id]);let Me=v(e=>{let t=d.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),Ne=v(()=>{_.current&&=(window.clearInterval(_.current),null);let e=0;_.current=window.setInterval(()=>{e+=1;let t=d.current?.getPlayer?.();if(!t){e>=8&&_.current&&(window.clearInterval(_.current),_.current=null);return}_.current&&=(window.clearInterval(_.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Me(!0);if(!e){U(!0);return}e.play?.().then(()=>{U(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),U(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Me]),Pe=!l&&Ce&&!Se&&!V&&(!J||ge);y(()=>{!Pe||!pe||(U(!1),Ne())},[Ne,pe,Pe]);let Q=ne({contentId:W,browseEpisode:fe,contentType:1,enabled:!l&&!!W,intervalMs:60*1e3,getCurrentTimeSeconds:()=>A.current,getDurationSeconds:()=>j.current,seriesId:G.mid||void 0,source:`detail`,playMode:`normal`}),$=v(()=>{let t=j.current,n=A.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:K,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[K,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);v(()=>{Q.handlePlay(),t({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$]),v(()=>{Q.handlePause(),t({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),v(()=>{Q.handleEnded();let e=j.current,n=A.current;(e>0?n/e:0)>=.95&&t({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Q,$]);let Fe=v(()=>{if(V){let e=d.current?.getPlayer?.();e&&(e.currentTime=0)}B(!0),U(!1),z(`manual`),H(!1),R(`main`)},[V]),Ie=v(()=>{z(`manual`)},[]),Le=v(()=>{me(!0)},[]),Re=v(()=>{H(!1),U(!1)},[]),ze=v(()=>{if(!E&&N.current){try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`未登录拦截播放时暂停视频失败:`,e)}k||O();return}Re(),Q.handlePlay(),t({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$,Re,E,k,O]),Be=v(()=>{Q.handlePause(),t({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),Ve=v(()=>{Q.handleEnded();let e=j.current,n=A.current;(e>0?n/e:0)>=.95&&t({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),J&&(H(!0),U(!1),B(!1),z(`manual`),ye(e=>e+1),R(`main`))},[Q,$,J]),He=J&&L===`main`&&(V||!ge&&he===`manual`),Ue=L===`main`&&_e,We=!l&&!Ce,Ge=We,Ke=Pe,qe=!We&&(!J||ge);async function Je(){J&&(H(!1),B(!1),z(`manual`),R(`preroll`),await re.current?.play?.()||R(`main`))}async function Ye(){let e=Me(!1);if(e)try{await e.play?.(),U(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(l)return;let e=()=>{if(!(typeof window>`u`)&&!(A.current<=0||j.current<=0))try{sessionStorage.setItem(q,JSON.stringify({episodeId:K,currentTime:A.current,duration:j.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[K,l,q]),!Z.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:T(`videoHero.noVideos`)});let Xe=ce(430,Z.aspectRatio,242),Ze=Xe.height>0?o(Xe.height):`auto`,Qe=Xe.height>0?`calc(${Ze} + 0px)`:`auto`,$e=o(242);return w(m,{value:d,children:[C(c,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Qe,maxWidth:`100%`,maxHeight:`calc(${$e} + 0px)`}}),w(c,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[Z.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Ze},children:[C(s,{src:Z.poster,alt:T(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(c,{suppressHydrationWarning:!0,"data-aspect-ratio":Z.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Ze,maxWidth:`100%`,maxHeight:$e,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[qe&&C(f,{ref:d,plyerId:`detail-player-${G.id}-${I}`,parentId:be,...Ke?{autoplay:!0}:{autoplay:!1},resolution:Z.resolution||`0x0`,videoUrl:Z.videoUrl,poster:Z.poster,mergeConfig:je,onProgressUpdate:l?void 0:Ae,onPlay:l?void 0:ze,onPause:l?void 0:Be,onEnded:l?void 0:Ve,onPlayerReady:Le},`stable-player-${G.id}-${I}-${Ke?`default-autoplay`:`manual`}`),!l&&J&&C(ie,{ref:re,adData:xe,visible:L===`preroll`,autoStart:L===`preroll`&&he===`auto`,sessionKey:`${G.id}-${K}-${ve}`,onAutoplayBlocked:Ie,onFinish:Fe,onSkip:Fe}),He&&!Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Je()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ye()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ge&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:G.id,episode:fe}),C(g,{videoId:G.id,episode:fe})]})]})]})}function se(e,t){return!e||!t?``:`${e}x${t}`}function ce(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function le(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{E as DetailHero};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{trackPageClick as e}from"../../../../../utils/tracking.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as n}from"../../../../../service/generated/client.mjs";import{Button as r}from"../../../../ui/button.mjs";import{Image as i}from"../../../../ui/image.mjs";import{Avatar as a,AvatarFallback as o,AvatarImage as s}from"../../../../ui/avatar.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as u}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as d}from"../../../../../hooks/query/use-query.mjs";import f from"../../../../../assets/icons/common/header-menu.mjs";import p from"../../../../../assets/icons/common/header-search-icon.mjs";import{headerAvatarLogoSearchInspectorDefaultProps as m}from"./schema.mjs";import{useMemo as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import v from"next/link";import{useShallow as y}from"zustand/react/shallow";function b(){let{isLogin:n,userInfo:i}=t(y(e=>({isLogin:e.isLogin,userInfo:e.userInfo}))),l=u(e=>e.open),d=i?.avatar_url||i?.avatar||void 0;function f(){e(`home`,`首页`,null,`header_avatar`)}function p(){e(`home`,`首页`,null,`header_avatar`),l()}let m=g(c,{className:`relative flex h-[38px] w-[38px] items-center justify-center rounded-full bg-white/20`,children:g(c,{className:`flex h-[32px] w-[32px] items-center justify-center overflow-hidden rounded-full border-2 border-white/20 bg-[#2A1C18]`,children:_(a,{className:`h-full w-full`,children:[g(s,{src:d,alt:`用户头像`,className:`object-cover`}),g(o,{className:`bg-[radial-gradient(circle_at_35%_30%,#f4b1ad_0%,#915f72_42%,#3b2442_100%)]`})]})})});return n?g(v,{href:`/user/mine`,"aria-label":`打开个人主页`,className:`shrink-0`,onClick:f,children:m}):g(r,{onClick:p,"aria-label":`登录`,className:`m-0 inline-flex h-auto w-auto shrink-0 bg-transparent p-0 hover:bg-transparent`,children:m})}function x({isEditor:r}){let{userInfo:i}=t(y(e=>({userInfo:e.userInfo}))),a=i?.user_id||`guest`,{data:o}=d([`header-search-hot-keyword`,a],()=>n({user_id:a}),{enabled:!r}),s=h(()=>{let e=(o?.data?.recommend_list??[])[0]?.title;return typeof e==`string`&&e.trim()?e.trim():`请输入搜索关键字`},[o]);return g(v,{href:`/search`,"aria-label":`打开搜索页`,className:`flex h-[34px] flex-1 items-center justify-center overflow-hidden rounded-full bg-black/40 px-[14px] backdrop-blur-[2px]`,onClick:()=>e(`home`,`首页`,null,`header_search`),children:_(c,{className:`flex h-[20px] items-center gap-[4px] text-white/50`,children:[g(p,{className:`h-[20px] w-[20px] shrink-0`,"aria-hidden":!0}),g(l,{as:`span`,className:`block text-[14px] leading-none text-white/50`,children:s})]})})}function S({logoHref:t,logoSrc:n}){return g(v,{href:t,"aria-label":`打开功能菜单`,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white`,onClick:()=>e(`home`,`首页`,null,`header_menu`),children:n?g(c,{className:`relative h-[24px] w-[24px] overflow-hidden rounded-full`,children:g(i,{src:n,alt:`menu`,fill:!0,sizes:`24px`,className:`object-cover`})}):g(f,{className:`h-[24px] w-[24px]`})})}function C(e){let{mode:t=`renderer`,...n}=e,r=t===`editor`,{logoSrc:i,logoHref:a}={...m,...n};return _(c,{as:`header`,className:r?`flex items-center justify-between gap-[12px] py-[4px] no-vw-x-16 pointer-events-none`:`flex items-center justify-between gap-[12px] py-[4px] no-vw-x-16`,children:[g(b,{}),g(x,{isEditor:r}),g(S,{logoSrc:i,logoHref:a})]})}export{C as HeaderAvatarLogoSearchClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{trackAdClick as n,trackAdImpression as r,trackAppPageView as i,trackPageClick as a,trackRecommendListClick as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import u from"../../../../ui/loading.mjs";import ee from"../../../../ui/link.mjs";import{useGridFirstRowHeight as d,useWaterfallFirstRowHeight as te}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as ne}from"../../../../../hooks/use-min-duration-loading.mjs";import re from"../../../../../assets/icons/common/right_arrow.mjs";import ie from"../../../../../assets/icons/common/right_arrow_thin.mjs";import ae from"../../../../../assets/icons/detail/video_flag.mjs";import{isFeedAdItem as f}from"../../advertisement/feed-ad/index.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as p,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as oe,normalizeRecommendBadgeUrl as m}from"../../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{WATERFALL_TALL_CARD_ASPECT_RATIO as h,buildWaterfallRecommendLegacyDisplay as se}from"../../../../common/list/waterfall-recommend/waterfall-recommend-display.mjs";import{WaterfallRecommend as g}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ce,HOME_RECOMMEND_DEFAULT_GRID_ROWS as le,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as ue,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as de,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as fe,HOME_RECOMMEND_DEFAULT_TITLE as pe,HOME_RECOMMEND_MAX_GRID_COLUMNS as me,HOME_RECOMMEND_MAX_GRID_ROWS as he}from"./home-recommend-default-config.mjs";import{buildHomeRecommendHeatText as _,resolveHomeRecommendBrowseCount as v}from"./home-recommend-play-count.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as y}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as ge}from"./home-recommend-smart-layout.mjs";import{limitPopularVideoPageItems as _e}from"./home-recommend-smart-tag.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ve}from"./home-recommend-video-detail.mjs";import{useCallback as b,useEffect as x,useLayoutEffect as ye,useMemo as S,useRef as C,useState as w}from"react";import{Fragment as be,jsx as T,jsxs as E}from"react/jsx-runtime";const xe={backgroundImage:`var(--gradient-card-mask-light)`},Se={},Ce={list:[]},D=new Map,O=[];function we(e){if(e)return D.get(e)}function Te(e,t){if(!e||(D.has(e)||O.push(e),D.set(e,{items:[...t.items],cursor:t.cursor}),O.length<=120))return;let n=O.shift();n&&D.delete(n)}function Ee({variant:s,props:ae=Se,data:p=Ce,mode:oe=`renderer`}){let m=oe===`editor`,{list:h,title:se,cursor:_}=p,v=S(()=>Array.isArray(h)?h:[],[h]),y=S(()=>Array.isArray(p.icons)?p.icons:[],[p.icons]),{rows:xe,columns:D,moreLink:O,title:Ee,showPlayCount:Oe,playCountDelta:k,showEpisode:A,enableInfinite:Me,items:j,smartLayout:M}=ae,N=M?.enabled===!0,P=N&&ge(M?.sortRule),F=Me===!0&&N,I=!m&&F&&v.length>=16,L=S(()=>N||!Array.isArray(j)?``:j.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,j]),[R,Ne]=w(0),[z,B]=w(v),[Le,Re]=w(y),[ze,V]=w(()=>typeof _==`string`?_:void 0),[Be,Ve]=w(!1),He=C(null),Ue=C(null),We=C(null),Ge=C([]),H=C({left:null,right:null}),Ke=C(null),qe=C(!1),Je=C(new Set),U=C(new Map),Ye=C(!1),W=C(``),{isLoading:Xe,show:Ze,hide:Qe}=ne(600),$e=Ae(xe,le,he),G=Ae(D,ce,me),K=F?16:s===`grid`?$e*G:16,q=S(()=>[s,(()=>{if(!N||!M)return`manual:${L}`;if(P)return`smart:newest:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}`;let e=String(M.sortRule??``);return`smart:popular:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}:sr:${e}`})(),String(K)].join(`|`),[N,L,K,M,P,s]);x(()=>{B(v),Re(y),V(typeof _==`string`?_:void 0)},[_,y,v]);let et=$e*G,tt=m&&s===`grid`,J=tt?z.slice(0,et):z,nt=tt?Le.slice(0,et):Le,rt=s===`waterfall`?6:4,it=J.length>0?Math.max(0,J.length-rt):-1,at=!!ze;x(()=>{if(m)return;let e=J.filter(e=>f(e)).map(e=>e.ad?.ad_code||``).filter(Boolean).join(`,`);e&&r({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:e,ad_type:`feed`})},[J.length,m]);let ot=b(e=>{let t=e.ad?.ad_code||``;t&&n({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:t,ad_type:`feed`})},[]),Y=Ee&&Ee.trim()||se||pe;x(()=>{if(m)return;let e=Ke.current;if(!e)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!qe.current&&(qe.current=!0,i({page_key:`home`,page_name:`首页`,current_page_key:Y,current_page_name:Y}),t.disconnect())},{threshold:.5});return t.observe(e),()=>{t.disconnect()}},[m,Y,J.length]),x(()=>{let e=U.current;return()=>{e.forEach(e=>e.disconnect()),e.clear()}},[]);let st=b(e=>{let t=e.id||``;!t||Je.current.has(t)||(Je.current.add(t),i({page_key:`home`,page_name:`首页`,current_page_key:t,current_page_name:e.name||``}))},[]),ct=b((e,t)=>{if(f(e)){ot(e);return}o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,t,e.name||e.id||``)},[ot,Y]);function lt(){a(`home`,`首页`,null,`recommend_more`,{recommend_id:Y})}let X=Oe??fe,Z=Number(k??ue),Q=A??de,ut=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,dt=s===`grid`?ie:m?re:ie,ft=ke(O),pt=(s===`waterfall`||!F)&&!!ft,mt=pt?ft:``,ht=s===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`,gt=`size-[16px] text-text1`,_t=d({enabled:!m&&s===`grid`,containerRef:Ue,firstRowItemRef:Ge,columns:G,itemsCount:J.length,deps:[s]}),vt=te({enabled:!m&&s===`waterfall`,containerRef:He,firstRowRef:H,deps:[s,J.length]}),yt=s===`grid`?_t:vt,bt=b(async()=>{if(m||W.current===q)return;let e=we(q);if(e){B(e.items),N&&V(e.cursor);return}if(N||L){W.current=q;try{if(Ze(),!N){if(!L)return;let e=await ve(v);B(e),Te(q,{items:e});return}if(!M)return;let e=await t({page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},{cache:`no-store`}),n=_e(e.data?.videos,K),r=e.data?.cursor;B(n),V(r),Te(q,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{W.current===q&&(W.current=``),Qe()}}},[Qe,v,m,N,L,q,K,Ze,M]);x(()=>{bt()},[bt]);let xt=b(async()=>{let n=ze;if(!(!I||!n||Ye.current)){Ye.current=!0,Ve(!0);try{if(!M)return;let r={cursor:n,page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},i=P?await e(r):await t(r),a=Array.isArray(i.data?.videos)?i.data.videos:[],o=i.data?.cursor;a.length>0&&B(e=>e.concat(a)),V(e=>{if(!(!a.length||!o))return o===e?void 0:o})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),V(void 0)}finally{Ye.current=!1,Ve(!1)}}},[ze,K,I,M,P]);x(()=>{let e=We.current;if(!e||!I||!at)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||Be||xt()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[xt,at,Be,J.length,K,I,it]),ye(()=>{let e=He.current;if(!e||s!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Ne(t>0?(t-15)/2:0)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[s]);let $=S(()=>s===`waterfall`?Fe(J,nt,R):{left:[],right:[]},[R,nt,J,s]),St=S(()=>s===`waterfall`?{left:$.left.map(e=>Pe(e,X,Z,Q)),right:$.right.map(e=>Pe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,s,$.left,$.right]);if(x(()=>{s===`waterfall`&&($.left.length||(H.current.left=null),$.right.length||(H.current.right=null))},[s,$.left.length,$.right.length]),!J.length)return null;let Ct=!m&&Xe,wt=!m&&Be,Tt=yt>0?yt/2:160;return E(c,{ref:Ke,className:`w-full mt-[8px]`,children:[s===`grid`&&E(c,{className:`flex items-center justify-between no-vw-x-16 mb-[16px]`,children:[T(l,{className:ut,children:Y}),pt&&T(ee,{href:mt,"aria-label":`更多`,className:ht,onClick:lt,children:T(dt,{className:gt})})]}),s===`grid`&&E(c,{ref:Ue,className:`relative flex w-full flex-wrap items-start gap-[8px] no-vw-x-16`,children:[J.map((e,t)=>{let n=nt[t],r=je(e);return T(`div`,{ref:e=>{t===it&&(We.current=e),t<G&&(Ge.current[t]=e)},className:`w-[calc((100%-8px)/2)]`,children:T(De,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`},onContentClick:ct,onContentView:st})},Ie(e,t))}),Ct&&T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),Ct&&T(c,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:Tt},"aria-hidden":!0,children:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),s===`waterfall`&&T(g,{title:Y,moreHref:mt||void 0,onMoreClick:lt,moreIcon:pt?T(dt,{className:gt}):void 0,titleClassName:ut,moreLinkClassName:ht,columns:St,containerClassName:`relative flex w-full gap-[8px] no-vw-x-16`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{let{sourceIndex:i}=e;i===it&&(We.current=r),n===0&&(H.current[t]=r);let a=U.current.get(i);if(a&&(a.disconnect(),U.current.delete(i)),r&&!m){let e=J[i];if(e&&!f(e)){let t=new IntersectionObserver(n=>{n[0]?.isIntersecting&&(st(e),t.disconnect(),U.current.delete(i))},{threshold:.5});t.observe(r),U.current.set(i,t)}}},overlay:Ct?E(be,{children:[T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),T(c,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:Tt},"aria-hidden":!0,children:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0,onItemClick:e=>{let t=J[e.sourceIndex];t&&(f(t)?ot(t):(o({page_key:`home`,page_name:`首页`,recommend_id:Y}),a(`home`,`首页`,null,t.name||t.id||``)))}}),wt&&T(c,{className:`w-full flex justify-center py-[12px]`,children:T(u,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function De({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c}){return T(Oe,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c})}function Oe({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:u,onContentView:d}){let te=C(null),ne=M(e,j(e)),re=e.name||e?.title||``,ie=e.id?k(e):`#`,g=se({title:re,badgeImageUrl:z(e,t,n),episodeText:I(e,a),heatText:r?_(v(e),i):``,score:P(e.score)}),ce=m(g.topLeftBadgeImageUrl);return x(()=>{let t=te.current;if(!t||!d||f(e))return;let n=new IntersectionObserver(t=>{t[0]?.isIntersecting&&(d(e),n.disconnect())},{threshold:.5});return n.observe(t),()=>{n.disconnect()}},[e,d]),T(ee,{href:ie,className:`block w-full`,onClick:t=>u?.(e,t),style:o,children:E(be,{children:[E(c,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:h},children:[ne&&T(s,{src:ne,alt:re||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),T(c,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:xe,"aria-hidden":!0}),ce&&T(c,{className:oe,children:T(s,{src:ce,alt:`角标`,width:96,height:18,className:p})}),E(c,{className:`absolute left-[8px] right-[8px] bottom-[8px] z-10 flex items-end justify-between gap-[8px]`,children:[T(c,{className:`flex min-w-0 items-center gap-[4px]`,children:g.bottomLeftHeatText&&E(be,{children:[T(ae,{className:`h-[16px] w-[16px] shrink-0 text-white`}),T(l,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:g.bottomLeftHeatText})]})}),g.bottomRightEpisodeText&&T(l,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:g.bottomRightEpisodeText})]})]}),T(c,{className:`mt-[8px] h-[44px] overflow-hidden`,children:T(l,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:g.title})})]})})}function k(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ke(e){return e?e.trim():``}function Ae(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function je(e){return e[y]}function A(e){return typeof e==`string`?e:``}function Me(e){return typeof e==`string`?e.trim():``}function j(e){return Me(e.img_type).toLowerCase()===`long`?`short`:`tall`}function M(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function N(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?F(e,!0):``)}function P(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function F(e,t){return t?L(e)||Ne(Number(e.duration||0)):``}function I(e,t){return t?L(e):``}function L(e){if(!R(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function R(e){if(Number(e.type??0)===2)return!0;let t=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(t)&&t>1}function Ne(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function z(e,t,n){return A(e.badge_url)||A(t?.material_url)||``}function Pe(e,t,n,r){let i=j(e.item),a=M(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?k(e.item):`#`,c=z(e.item,e.icon,e.index),l=F(e.item,r),u=N(e.item,r),ee=t?_(v(e.item),n):``,d=P(e.item.score);return{key:Ie(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,episodeText:l,metaPrimaryText:u,heatText:ee,score:d}}function Fe(e,t,n){let r=[],i=[],a=n<=0,o=0,s=0;return e.forEach((e,c)=>{let l=t[c];if(a){c%2==0?r.push({item:e,icon:l,index:c}):i.push({item:e,icon:l,index:c});return}let u=B(n,e);o<=s?(r.push({item:e,icon:l,index:c}),o+=u):(i.push({item:e,icon:l,index:c}),s+=u)}),{left:r,right:i}}function B(e,t){return e?(j(t)===`tall`?216:142)+16:0}function Ie(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{Ee as default};
|
|
2
|
+
"use client";import{trackAdClick as e,trackAdImpression as t,trackAppPageView as n,trackPageClick as r,trackRecommendListClick as i}from"../../../../../utils/tracking.mjs";import{pContentGetNewstVideoList as a,pContentGetPopularVideoList as o}from"../../../../../service/generated/client.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import u from"../../../../ui/loading.mjs";import ee from"../../../../ui/link.mjs";import{useGridFirstRowHeight as d,useWaterfallFirstRowHeight as te}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as ne}from"../../../../../hooks/use-min-duration-loading.mjs";import re from"../../../../../assets/icons/common/right_arrow.mjs";import ie from"../../../../../assets/icons/common/right_arrow_thin.mjs";import ae from"../../../../../assets/icons/detail/video_flag.mjs";import{isFeedAdItem as f}from"../../advertisement/feed-ad/index.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as p,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as oe,normalizeRecommendBadgeUrl as m}from"../../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{WATERFALL_TALL_CARD_ASPECT_RATIO as h,buildWaterfallRecommendLegacyDisplay as se}from"../../../../common/list/waterfall-recommend/waterfall-recommend-display.mjs";import{WaterfallRecommend as g}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ce,HOME_RECOMMEND_DEFAULT_GRID_ROWS as le,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as ue,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as de,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as fe,HOME_RECOMMEND_DEFAULT_TITLE as pe,HOME_RECOMMEND_MAX_GRID_COLUMNS as me,HOME_RECOMMEND_MAX_GRID_ROWS as he}from"./home-recommend-default-config.mjs";import{buildHomeRecommendHeatText as _,resolveHomeRecommendBrowseCount as v}from"./home-recommend-play-count.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as y}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as ge}from"./home-recommend-smart-layout.mjs";import{limitPopularVideoPageItems as _e}from"./home-recommend-smart-tag.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ve}from"./home-recommend-video-detail.mjs";import{useCallback as b,useEffect as x,useLayoutEffect as ye,useMemo as S,useRef as C,useState as w}from"react";import{Fragment as be,jsx as T,jsxs as E}from"react/jsx-runtime";const xe={backgroundImage:`var(--gradient-card-mask-light)`},Se={},Ce={list:[]},D=new Map,O=[];function we(e){if(e)return D.get(e)}function Te(e,t){if(!e||(D.has(e)||O.push(e),D.set(e,{items:[...t.items],cursor:t.cursor}),O.length<=120))return;let n=O.shift();n&&D.delete(n)}function Ee({variant:s,props:ae=Se,data:p=Ce,mode:oe=`renderer`}){let m=oe===`editor`,{list:h,title:se,cursor:_}=p,v=S(()=>Array.isArray(h)?h:[],[h]),y=S(()=>Array.isArray(p.icons)?p.icons:[],[p.icons]),{rows:xe,columns:D,moreLink:O,title:Ee,showPlayCount:Oe,playCountDelta:k,showEpisode:A,enableInfinite:Me,items:j,smartLayout:M}=ae,N=M?.enabled===!0,P=N&&ge(M?.sortRule),F=Me===!0&&N,I=!m&&F&&v.length>=16,L=S(()=>N||!Array.isArray(j)?``:j.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,j]),[R,Ne]=w(0),[z,B]=w(v),[Le,Re]=w(y),[ze,V]=w(()=>typeof _==`string`?_:void 0),[Be,Ve]=w(!1),He=C(null),Ue=C(null),We=C(null),Ge=C([]),H=C({left:null,right:null}),Ke=C(null),qe=C(!1),Je=C(new Set),U=C(new Map),Ye=C(!1),W=C(``),{isLoading:Xe,show:Ze,hide:Qe}=ne(600),$e=Ae(xe,le,he),G=Ae(D,ce,me),K=F?16:s===`grid`?$e*G:16,q=S(()=>[s,(()=>{if(!N||!M)return`manual:${L}`;if(P)return`smart:newest:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}`;let e=String(M.sortRule??``);return`smart:popular:${M.tagIds.join(`,`)}:${M.catIds.join(`,`)}:sr:${e}`})(),String(K)].join(`|`),[N,L,K,M,P,s]);x(()=>{B(v),Re(y),V(typeof _==`string`?_:void 0)},[_,y,v]);let et=$e*G,tt=m&&s===`grid`,J=tt?z.slice(0,et):z,nt=tt?Le.slice(0,et):Le,rt=s===`waterfall`?6:4,it=J.length>0?Math.max(0,J.length-rt):-1,at=!!ze;x(()=>{if(m)return;let e=J.filter(e=>f(e)).map(e=>e.ad?.ad_code||``).filter(Boolean).join(`,`);e&&t({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:e,ad_type:`feed`})},[J.length,m]);let ot=b(t=>{let n=t.ad?.ad_code||``;n&&e({page_key:`home`,page_name:`首页`,ad_slot_key:`home_feed`,ad_slot_name:`信息流广告`,ad_id:n,ad_type:`feed`})},[]),Y=Ee&&Ee.trim()||se||pe;x(()=>{if(m)return;let e=Ke.current;if(!e)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!qe.current&&(qe.current=!0,n({page_key:`home`,page_name:`首页`,current_page_key:Y,current_page_name:Y}),t.disconnect())},{threshold:.5});return t.observe(e),()=>{t.disconnect()}},[m,Y,J.length]),x(()=>{let e=U.current;return()=>{e.forEach(e=>e.disconnect()),e.clear()}},[]);let st=b(e=>{let t=e.id||``;!t||Je.current.has(t)||(Je.current.add(t),n({page_key:`home`,page_name:`首页`,current_page_key:t,current_page_name:e.name||``}))},[]),ct=b((e,t)=>{if(f(e)){ot(e);return}i({page_key:`home`,page_name:`首页`,recommend_id:Y}),r(`home`,`首页`,t,e.name||e.id||``)},[ot,Y]);function lt(){r(`home`,`首页`,null,`recommend_more`,{recommend_id:Y})}let X=Oe??fe,Z=Number(k??ue),Q=A??de,ut=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,dt=s===`grid`?ie:m?re:ie,ft=ke(O),pt=(s===`waterfall`||!F)&&!!ft,mt=pt?ft:``,ht=s===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${m?`opacity-100`:`opacity-50`}`,gt=`size-[16px] text-text1`,_t=d({enabled:!m&&s===`grid`,containerRef:Ue,firstRowItemRef:Ge,columns:G,itemsCount:J.length,deps:[s]}),vt=te({enabled:!m&&s===`waterfall`,containerRef:He,firstRowRef:H,deps:[s,J.length]}),yt=s===`grid`?_t:vt,bt=b(async()=>{if(m||W.current===q)return;let e=we(q);if(e){B(e.items),N&&V(e.cursor);return}if(N||L){W.current=q;try{if(Ze(),!N){if(!L)return;let e=await ve(v);B(e),Te(q,{items:e});return}if(!M)return;let e=await o({page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},{cache:`no-store`}),t=_e(e.data?.videos,K),n=e.data?.cursor;B(t),V(n),Te(q,{items:t,cursor:n})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{W.current===q&&(W.current=``),Qe()}}},[Qe,v,m,N,L,q,K,Ze,M]);x(()=>{bt()},[bt]);let xt=b(async()=>{let e=ze;if(!(!I||!e||Ye.current)){Ye.current=!0,Ve(!0);try{if(!M)return;let t={cursor:e,page_size:K,tags:M.tagIds.length>0?M.tagIds:void 0,cat_ids:M.catIds.length>0?M.catIds:void 0},n=P?await a(t):await o(t),r=Array.isArray(n.data?.videos)?n.data.videos:[],i=n.data?.cursor;r.length>0&&B(e=>e.concat(r)),V(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),V(void 0)}finally{Ye.current=!1,Ve(!1)}}},[ze,K,I,M,P]);x(()=>{let e=We.current;if(!e||!I||!at)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||Be||xt()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[xt,at,Be,J.length,K,I,it]),ye(()=>{let e=He.current;if(!e||s!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Ne(t>0?(t-15)/2:0)};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect()}},[s]);let $=S(()=>s===`waterfall`?Fe(J,nt,R):{left:[],right:[]},[R,nt,J,s]),St=S(()=>s===`waterfall`?{left:$.left.map(e=>Pe(e,X,Z,Q)),right:$.right.map(e=>Pe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,s,$.left,$.right]);if(x(()=>{s===`waterfall`&&($.left.length||(H.current.left=null),$.right.length||(H.current.right=null))},[s,$.left.length,$.right.length]),!J.length)return null;let Ct=!m&&Xe,wt=!m&&Be,Tt=yt>0?yt/2:160;return E(c,{ref:Ke,className:`w-full mt-[8px]`,children:[s===`grid`&&E(c,{className:`flex items-center justify-between no-vw-x-16 mb-[16px]`,children:[T(l,{className:ut,children:Y}),pt&&T(ee,{href:mt,"aria-label":`更多`,className:ht,onClick:lt,children:T(dt,{className:gt})})]}),s===`grid`&&E(c,{ref:Ue,className:`relative flex w-full flex-wrap items-start gap-[8px] no-vw-x-16`,children:[J.map((e,t)=>{let n=nt[t],r=je(e);return T(`div`,{ref:e=>{t===it&&(We.current=e),t<G&&(Ge.current[t]=e)},className:`w-[calc((100%-8px)/2)]`,children:T(De,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`},onContentClick:ct,onContentView:st})},Ie(e,t))}),Ct&&T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),Ct&&T(c,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:Tt},"aria-hidden":!0,children:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),s===`waterfall`&&T(g,{title:Y,moreHref:mt||void 0,onMoreClick:lt,moreIcon:pt?T(dt,{className:gt}):void 0,titleClassName:ut,moreLinkClassName:ht,columns:St,containerClassName:`relative flex w-full gap-[8px] no-vw-x-16`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{let{sourceIndex:i}=e;i===it&&(We.current=r),n===0&&(H.current[t]=r);let a=U.current.get(i);if(a&&(a.disconnect(),U.current.delete(i)),r&&!m){let e=J[i];if(e&&!f(e)){let t=new IntersectionObserver(n=>{n[0]?.isIntersecting&&(st(e),t.disconnect(),U.current.delete(i))},{threshold:.5});t.observe(r),U.current.set(i,t)}}},overlay:Ct?E(be,{children:[T(c,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),T(c,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:Tt},"aria-hidden":!0,children:T(u,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0,onItemClick:e=>{let t=J[e.sourceIndex];t&&(f(t)?ot(t):(i({page_key:`home`,page_name:`首页`,recommend_id:Y}),r(`home`,`首页`,null,t.name||t.id||``)))}}),wt&&T(c,{className:`w-full flex justify-center py-[12px]`,children:T(u,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function De({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c}){return T(Oe,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:s,onContentView:c})}function Oe({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o,onContentClick:u,onContentView:d}){let te=C(null),ne=M(e,j(e)),re=e.name||e?.title||``,ie=e.id?k(e):`#`,g=se({title:re,badgeImageUrl:z(e,t,n),episodeText:I(e,a),heatText:r?_(v(e),i):``,score:P(e.score)}),ce=m(g.topLeftBadgeImageUrl);return x(()=>{let t=te.current;if(!t||!d||f(e))return;let n=new IntersectionObserver(t=>{t[0]?.isIntersecting&&(d(e),n.disconnect())},{threshold:.5});return n.observe(t),()=>{n.disconnect()}},[e,d]),T(ee,{href:ie,className:`block w-full`,onClick:t=>u?.(e,t),style:o,children:E(be,{children:[E(c,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:h},children:[ne&&T(s,{src:ne,alt:re||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),T(c,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:xe,"aria-hidden":!0}),ce&&T(c,{className:oe,children:T(s,{src:ce,alt:`角标`,width:96,height:18,className:p})}),E(c,{className:`absolute left-[8px] right-[8px] bottom-[8px] z-10 flex items-end justify-between gap-[8px]`,children:[T(c,{className:`flex min-w-0 items-center gap-[4px]`,children:g.bottomLeftHeatText&&E(be,{children:[T(ae,{className:`h-[16px] w-[16px] shrink-0 text-white`}),T(l,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:g.bottomLeftHeatText})]})}),g.bottomRightEpisodeText&&T(l,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:g.bottomRightEpisodeText})]})]}),T(c,{className:`mt-[8px] h-[44px] overflow-hidden`,children:T(l,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:g.title})})]})})}function k(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ke(e){return e?e.trim():``}function Ae(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function je(e){return e[y]}function A(e){return typeof e==`string`?e:``}function Me(e){return typeof e==`string`?e.trim():``}function j(e){return Me(e.img_type).toLowerCase()===`long`?`short`:`tall`}function M(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function N(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?F(e,!0):``)}function P(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function F(e,t){return t?L(e)||Ne(Number(e.duration||0)):``}function I(e,t){return t?L(e):``}function L(e){if(!R(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function R(e){if(Number(e.type??0)===2)return!0;let t=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(t)&&t>1}function Ne(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function z(e,t,n){return A(e.badge_url)||A(t?.material_url)||``}function Pe(e,t,n,r){let i=j(e.item),a=M(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?k(e.item):`#`,c=z(e.item,e.icon,e.index),l=F(e.item,r),u=N(e.item,r),ee=t?_(v(e.item),n):``,d=P(e.item.score);return{key:Ie(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,episodeText:l,metaPrimaryText:u,heatText:ee,score:d}}function Fe(e,t,n){let r=[],i=[],a=n<=0,o=0,s=0;return e.forEach((e,c)=>{let l=t[c];if(a){c%2==0?r.push({item:e,icon:l,index:c}):i.push({item:e,icon:l,index:c});return}let u=B(n,e);o<=s?(r.push({item:e,icon:l,index:c}),o+=u):(i.push({item:e,icon:l,index:c}),s+=u)}),{left:r,right:i}}function B(e,t){return e?(j(t)===`tall`?216:142)+16:0}function Ie(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{Ee as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import t from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as n,pContentGetNewstVideoList as r,pContentGetPopularVideoList as i}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as a,pContentGetNewstVideoListKey as o,pContentGetPopularVideoListKey as s}from"../../../../service/generated/tanstack.mjs";import{Image as c}from"../../../ui/image.mjs";import{Box as l}from"../../../ui/box.mjs";import{Text as u}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as d,buildImageTextRecommendRemoteMap as f,getImageTextRecommendFixedIds as ee,resolveImageTextRecommendVideoId as te}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import{normalizeHomeRecommendSmartLayout as ne}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import re from"../../../../assets/images/frame.mjs";import ie from"../../../../assets/images/subscript.mjs";import{buildImageTextSmartListBody as m,resolveImageTextSmartListKind as ae}from"./shared/query.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as oe,useState as v}from"react";import{Fragment as se,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as ce}from"next-intl";import le from"next/link";const x=[];function S(e){return typeof e==`string`?e:e.src}function ue(e,n){if(!e||!e.trim())return S(n);if(e.startsWith(`http`)||e.startsWith(`//`)||e.startsWith(`data:`))return e;let r=t();return r?`${r}${e.startsWith(`/`)?e:`/${e}`}`:e}function C(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function w(e){return e==null?``:e.name||``}function T(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function E(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function D(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function de(e,t,n){return e?T(e,n)===2&&t?D(e,t):E(Number(e.duration??e.detail?.duration??0)):``}function fe(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function pe(t,n){if(!t)return``;let r=t,i=n?Number(r.static?.browse_count??0):Number(r.browse_count??0);return!Number.isFinite(i)||i<=0?``:e(i)}function me(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function O(e){let{title:t,items:T=x,commonPlayCount:E,commonEpisodes:D,layout:O,mode:k=`renderer`}=e,A=ce(`components.biz.business.imageTextRecommend`),j=k===`renderer`,M=k===`editor`,[N,P]=v({}),[F,I]=v([]),[L,R]=v(0),[z,B]=v(void 0),V=oe(null),H=_(()=>ne(O),[O]),U=H?.enabled===!0,W=_(()=>ae(H?.sortRule),[H?.sortRule]),G=T?.length??0,K=_(()=>ee(T,U),[U,T]),q=_(()=>K.slice(0,d),[K]),J=_(()=>{if(H?.enabled)return m(H,{targetCount:G})},[H,G]),{data:Y}=p(_(()=>!J||!U?[`image-text-recommend`,`smart-idle`]:W===`newest`?o(J):s(J),[J,U,W]),async()=>!J||!U?{data:{videos:[],cursor:``}}:W===`newest`?r(J):i(J),{enabled:j&&!M&&U&&T.length>0&&!!J,staleTime:1/0}),{data:X}=p(a({ids:q}),()=>n({ids:q}),{enabled:j&&!M&&!U&&q.length>0,staleTime:1/0}),Z=_(()=>U&&G>d?Math.ceil(G/d):K.length>0?Math.ceil(K.length/d):0,[U,G,K.length]),Q=h((e,t)=>A(t?`updatedTo`:`allEpisodes`,{count:e}),[A]),he=h(async(e,t)=>{if(e.length===0)return;let r=f((await n({ids:e})).data?.videos??[]);P(e=>t?{...e,...r}:r)},[]);g(()=>{if(M)return;if(U){let e=Y?.data?.videos??[];G>d?(I(e.slice(0,d)),B(Y?.data?.cursor),R(e.length>0?1:0)):(I(e.slice(0,G)),R(0)),P({});return}if(q.length===0){P({}),I([]),R(0),B(void 0);return}let e=X?.data?.videos??[];P(f(e)),I([]),B(void 0),R(e.length>0?1:0)},[M,U,Y,X,q,G]),g(()=>{if(M||Z<1||L<1||L>=Z)return;let e=V.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let n=L;if(U&&H){let e=m(H,{targetCount:G,cursor:z,pageSize:d});(W===`newest`?r:i)(e).then(e=>{let t=e.data?.videos??[];I(e=>[...e,...t.slice(0,d)]),B(e.data?.cursor),R(n+1)}).catch(()=>{})}else{let e=n*d,t=K.slice(e,e+d);t.length>0&&(he(t,!0),R(n+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[M,U,H,W,K,L,Z,G,z,he]),g(()=>{if(M||!U||!H||G<=0)return;let e=H,t,n=!1;function a(){t=window.setTimeout(()=>{let t=m(e,{targetCount:G,pageSize:Math.max(20,G*10)});(W===`newest`?r:i)(t).then(e=>{n||I((e.data?.videos??[]).slice(0,G))}).catch(()=>{n||I([])}).finally(()=>{n||a()})},me())}return a(),()=>{n=!0,t!==void 0&&window.clearTimeout(t)}},[M,U,H,W,G]);let $=_(()=>!T||T.length===0?x:M?T:U&&G>d?T.slice(0,F.length):T,[T,M,U,G,F.length]),ge=_(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=U?F[t]:n?N[n]:void 0,i=U?r?w(r):(e?.title??``).trim():(e?.title??``).trim()||(r?w(r):``),a=(e?.cover??``).trim(),o=U?C(r)||a:a||(e?.useVideoPoster?C(r):``),s=U&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=de(r,Q,U),l=pe(r,U);return{...e,contentId:n||(r?te(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):x,[Q,U,$,N,F]);if(!T||T.length===0)return null;let _e=L>=1&&L<Z?U?F.length-2:L*d-2:-1;return b(l,{className:M?`bg-bg1 no-vw-x-16 py-
|
|
2
|
+
"use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import t from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as n,pContentGetNewstVideoList as r,pContentGetPopularVideoList as i}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as a,pContentGetNewstVideoListKey as o,pContentGetPopularVideoListKey as s}from"../../../../service/generated/tanstack.mjs";import{Image as c}from"../../../ui/image.mjs";import{Box as l}from"../../../ui/box.mjs";import{Text as u}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as d,buildImageTextRecommendRemoteMap as f,getImageTextRecommendFixedIds as ee,resolveImageTextRecommendVideoId as te}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import{normalizeHomeRecommendSmartLayout as ne}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import re from"../../../../assets/images/frame.mjs";import ie from"../../../../assets/images/subscript.mjs";import{buildImageTextSmartListBody as m,resolveImageTextSmartListKind as ae}from"./shared/query.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as oe,useState as v}from"react";import{Fragment as se,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as ce}from"next-intl";import le from"next/link";const x=[];function S(e){return typeof e==`string`?e:e.src}function ue(e,n){if(!e||!e.trim())return S(n);if(e.startsWith(`http`)||e.startsWith(`//`)||e.startsWith(`data:`))return e;let r=t();return r?`${r}${e.startsWith(`/`)?e:`/${e}`}`:e}function C(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function w(e){return e==null?``:e.name||``}function T(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function E(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function D(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function de(e,t,n){return e?T(e,n)===2&&t?D(e,t):E(Number(e.duration??e.detail?.duration??0)):``}function fe(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function pe(t,n){if(!t)return``;let r=t,i=n?Number(r.static?.browse_count??0):Number(r.browse_count??0);return!Number.isFinite(i)||i<=0?``:e(i)}function me(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function O(e){let{title:t,items:T=x,commonPlayCount:E,commonEpisodes:D,layout:O,mode:k=`renderer`}=e,A=ce(`components.biz.business.imageTextRecommend`),j=k===`renderer`,M=k===`editor`,[N,P]=v({}),[F,I]=v([]),[L,R]=v(0),[z,B]=v(void 0),V=oe(null),H=_(()=>ne(O),[O]),U=H?.enabled===!0,W=_(()=>ae(H?.sortRule),[H?.sortRule]),G=T?.length??0,K=_(()=>ee(T,U),[U,T]),q=_(()=>K.slice(0,d),[K]),J=_(()=>{if(H?.enabled)return m(H,{targetCount:G})},[H,G]),{data:Y}=p(_(()=>!J||!U?[`image-text-recommend`,`smart-idle`]:W===`newest`?o(J):s(J),[J,U,W]),async()=>!J||!U?{data:{videos:[],cursor:``}}:W===`newest`?r(J):i(J),{enabled:j&&!M&&U&&T.length>0&&!!J,staleTime:1/0}),{data:X}=p(a({ids:q}),()=>n({ids:q}),{enabled:j&&!M&&!U&&q.length>0,staleTime:1/0}),Z=_(()=>U&&G>d?Math.ceil(G/d):K.length>0?Math.ceil(K.length/d):0,[U,G,K.length]),Q=h((e,t)=>A(t?`updatedTo`:`allEpisodes`,{count:e}),[A]),he=h(async(e,t)=>{if(e.length===0)return;let r=f((await n({ids:e})).data?.videos??[]);P(e=>t?{...e,...r}:r)},[]);g(()=>{if(M)return;if(U){let e=Y?.data?.videos??[];G>d?(I(e.slice(0,d)),B(Y?.data?.cursor),R(e.length>0?1:0)):(I(e.slice(0,G)),R(0)),P({});return}if(q.length===0){P({}),I([]),R(0),B(void 0);return}let e=X?.data?.videos??[];P(f(e)),I([]),B(void 0),R(e.length>0?1:0)},[M,U,Y,X,q,G]),g(()=>{if(M||Z<1||L<1||L>=Z)return;let e=V.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let n=L;if(U&&H){let e=m(H,{targetCount:G,cursor:z,pageSize:d});(W===`newest`?r:i)(e).then(e=>{let t=e.data?.videos??[];I(e=>[...e,...t.slice(0,d)]),B(e.data?.cursor),R(n+1)}).catch(()=>{})}else{let e=n*d,t=K.slice(e,e+d);t.length>0&&(he(t,!0),R(n+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[M,U,H,W,K,L,Z,G,z,he]),g(()=>{if(M||!U||!H||G<=0)return;let e=H,t,n=!1;function a(){t=window.setTimeout(()=>{let t=m(e,{targetCount:G,pageSize:Math.max(20,G*10)});(W===`newest`?r:i)(t).then(e=>{n||I((e.data?.videos??[]).slice(0,G))}).catch(()=>{n||I([])}).finally(()=>{n||a()})},me())}return a(),()=>{n=!0,t!==void 0&&window.clearTimeout(t)}},[M,U,H,W,G]);let $=_(()=>!T||T.length===0?x:M?T:U&&G>d?T.slice(0,F.length):T,[T,M,U,G,F.length]),ge=_(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=U?F[t]:n?N[n]:void 0,i=U?r?w(r):(e?.title??``).trim():(e?.title??``).trim()||(r?w(r):``),a=(e?.cover??``).trim(),o=U?C(r)||a:a||(e?.useVideoPoster?C(r):``),s=U&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=de(r,Q,U),l=pe(r,U);return{...e,contentId:n||(r?te(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):x,[Q,U,$,N,F]);if(!T||T.length===0)return null;let _e=L>=1&&L<Z?U?F.length-2:L*d-2:-1;return b(l,{className:M?`bg-bg1 no-vw-x-16 py-[16px] pointer-events-none`:`bg-bg1 no-vw-x-16 py-[16px]`,children:[t&&y(l,{className:`mb-3 flex items-center justify-between`,children:y(u,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:t})}),y(l,{className:`flex overflow-x-auto pb-2 scrollbar-hide space-x-2`,children:ge.map((e,t)=>{let n=E||(e.showPlayCount??!1),r=(e.playCountText??``).trim(),i=r!==``,a=D||(e.showEpisodes??!1),o=(e.episodeOrDurationText??``).trim(),s=a&&o!==``,d=k===`renderer`?fe(e.contentId??``,e.title??``):``,f=b(se,{children:[b(l,{className:`relative rounded-lg overflow-hidden bg-bg2 w-[116px] h-[134px]`,children:[M||e.cover?y(c,{src:ue(e.cover,re),alt:e.title??``,fill:!0,className:`object-cover`}):y(l,{className:`w-full h-full flex items-center justify-center`,children:y(u,{className:`text-text3 text-xs`,children:A(`noCover`)})}),!U&&(e.badge??``).trim()?y(l,{className:`absolute top-0 right-0 w-8 h-8`,children:y(c,{src:(e.badge??``).trim()||S(ie),alt:``,fill:!0,sizes:`32px`,className:`object-contain object-right-top`,unoptimized:!0})}):null,b(l,{className:`absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent pb-1 pt-3 px-1 flex justify-between items-center gap-1`,children:[y(l,{className:`flex items-center min-w-0 shrink`,children:n&&i?b(l,{className:`flex items-center gap-1 rounded bg-overlay px-1 py-0`,children:[y(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`10`,viewBox:`0 0 12 10`,fill:`none`,className:`shrink-0`,"aria-hidden":!0,children:y(`path`,{d:`M7.56 5.18437L5.013 6.56737C4.893 6.63337 4.761 6.66937 4.638 6.66937C4.269 6.66937 4.002 6.38737 4.002 5.99737V3.28237C4.002 2.89237 4.269 2.61037 4.638 2.61037C4.764 2.61037 4.893 2.64637 5.013 2.70937L7.572 4.09237C7.803 4.21837 7.938 4.41637 7.938 4.63237C7.938 4.85137 7.8 5.05537 7.56 5.18437ZM9.807 9.27637L2.133 8.52937C0.954 8.52937 0 7.57537 0 6.39637V2.79937C0 1.62037 0.954 0.666368 2.133 0.666368L9.81 0.000367165C10.989 0.000367165 11.943 0.954367 11.943 2.13337V7.14337C11.9422 7.70935 11.7168 8.25188 11.3163 8.65181C10.9158 9.05174 10.373 9.27637 9.807 9.27637ZM10.875 2.13337C10.875 1.99351 10.8475 1.85502 10.7939 1.72581C10.7404 1.5966 10.662 1.47919 10.5631 1.3803C10.4642 1.2814 10.3468 1.20296 10.2176 1.14944C10.0883 1.09591 9.94986 1.06837 9.81 1.06837L2.133 1.73437C1.99314 1.73437 1.85465 1.76191 1.72544 1.81544C1.59623 1.86896 1.47883 1.9474 1.37993 2.0463C1.28104 2.14519 1.20259 2.2626 1.14907 2.39181C1.09555 2.52102 1.068 2.65951 1.068 2.79937V6.39637C1.068 6.67882 1.1802 6.94971 1.37993 7.14944C1.57966 7.34916 1.85054 7.46137 2.133 7.46137L9.807 8.20837C9.94686 8.20837 10.0853 8.18082 10.2146 8.1273C10.3438 8.07378 10.4612 7.99533 10.5601 7.89644C10.659 7.79754 10.7374 7.68014 10.7909 7.55093C10.8445 7.42171 10.872 7.28323 10.872 7.14337V2.13337H10.875Z`,fill:`white`})}),y(u,{className:`text-white text-[12px] leading-[20px]`,children:r})]}):null}),y(l,{className:`flex items-center shrink-0`,children:s?y(u,{className:`text-white text-[12px] leading-[20px]`,children:o}):null})]})]}),y(l,{className:`mt-2 py-2`,children:y(u,{className:`text-[16px] text-text1 font-bold leading-[24px] line-clamp-1`,children:e.title})})]});return y(l,{ref:t===_e?V:void 0,className:`flex-shrink-0 w-[116px]`,children:d?y(le,{href:d,className:`block`,children:f}):f},t)})})]})}export{O as ImageTextRecommendClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{isClient as e}from"../../../../utils/common.mjs";import{
|
|
2
|
+
"use client";import{isClient as e}from"../../../../utils/common.mjs";import{trackAppPageView as t}from"../../../../utils/tracking.mjs";import{pContentBatchGetVideoDetail as n}from"../../../../service/generated/client.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{useSingleFirstRowHeight as s}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as c}from"../../../../hooks/use-min-duration-loading.mjs";import l from"../../../../assets/icons/common/right_arrow.mjs";import{isFeedAdItem as u}from"../advertisement/feed-ad/index.mjs";import{normalizeRecommendBadgeUrl as d}from"../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{LargeGridItemClient as f}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as p}from"./schema.mjs";import{useEffect as m,useMemo as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";const b=[],x=p.data??[];function S(e){return e==null}function C(e,t){return S(e)?t:e}function w(e){return typeof e==`string`?e.trim():``}function T(e){return w(e)}function E(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function D(e){let t=e,n=w(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(E(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function O(e,t){return t?{...e,...t,id:C(t.id,e.id),cover:C(t.cover,e.cover),title:C(t.title,e.title),desc:C(t.desc,e.desc),play_count:C(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:C(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,score:C(t.score,e.score),useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:C(t.tagImageUrl,e.tagImageUrl)}:e}function k(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:C(t.title,e.title),moreUrl:C(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?O(n,t.items):t.items}}function A({mode:p=`renderer`,data:S=b}){let C=p===`editor`,O=S??b,A=Array.isArray(O)&&O.length>0,j=h(()=>A?[k(x[0],O[0])]:x,[A,O]),[M,N]=_(j),P=g(``),F=g(null),I=g(null),L=g(!1),{isLoading:R,show:z,hide:B,cancel:V}=c(500);m(()=>{N(j)},[j]);let H=s({enabled:!C,containerRef:F,itemRef:F,deps:[M.length]}),U=h(()=>{if(C||!A)return``;let e=j.map(e=>T(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[A,C,j]);if(m(()=>{if(C||!e()||!U||P.current===U)return;P.current=U;let t=!1;async function r(){try{z();let e=await n({ids:U.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=T(e.video_id||e.id||e.mid);t&&i.set(t,e)}),t)return;N(e=>e.map(e=>{let t=e.items;if(!t||u(t))return e;let n=T(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=r,o=E(a.play_count)??E(r.browse_count)??E(r.view_count),s=D(r),c=w(r.name),l=w(r.description||r.content_description),f=t.useContentCover?w(r.img_x||r.img_y):``,p=d(a.badge_url),m=r.score==null?``:String(r.score).trim();return{...e,items:{...t,title:c||t.title,desc:l||t.desc,...f?{cover:f}:{},play_count:o??t.play_count,episodeText:s||t.episodeText,score:m||t.score,tagImageUrl:p||t.tagImageUrl}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{t||B()}}return r(),()=>{t=!0,V()}},[V,U,B,C,z]),m(()=>{if(C)return;let e=I.current;if(!e)return;let n=new IntersectionObserver(e=>{if(e[0]?.isIntersecting&&!L.current){L.current=!0;let e=M[0]?.title||``;t({page_key:`home`,page_name:`首页`,current_page_key:e,current_page_name:e}),n.disconnect()}},{threshold:.5});return n.observe(e),()=>{n.disconnect()}},[C,M]),!M||M.length===0)return null;let W=M[0],G=W?.title,K=W?.moreUrl,q=H>0?H/2:160,J=!C&&R;return y(r,{ref:I,className:`py-4 no-vw-x-16`,children:[y(r,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[G&&v(i,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:G}),K&&y(o,{href:K,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,v(l,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),y(r,{className:`relative`,children:[M.map((e,t)=>{let{items:n}=e;return n?v(r,{ref:t===0?F:void 0,className:t>0?`mt-3`:``,children:v(f,{data:n})},`large-feature-grid-items-${t}`):null}),J&&v(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),J&&v(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:q},"aria-hidden":!0,children:v(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{A as LargeFeatureGridClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{
|
|
2
|
+
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{trackAppPageView as t,trackPageClick as n}from"../../../../../../../utils/tracking.mjs";import{pxToVw as r}from"../../../../../../../utils/helper.mjs";import{Box as i}from"../../../../../../ui/box.mjs";import a from"../../../../../../ui/link.mjs";import{urlPrefix as o}from"../../../../../../../constants/url-prefix.mjs";import{useSticky as s}from"../../../../../../../hooks/use-sticky.mjs";import c from"../../../../../../../assets/icons/search.mjs";import l,{loadHiddenChannelIdsFromStorage as u}from"./channel-filter-dialog.mjs";import{defaultProps as d}from"../defaults/default-props.mjs";import f from"../../../../../../../assets/icons/filter_dark.mjs";import{clsx as p}from"clsx";import{useEffect as m,useMemo as h,useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";const b={},x={list:[],currentChannelId:null,isFullfeed:!1};function S(e,t){return t===0?`/`:`${o.CHANNEL}/${encodeURIComponent(e.cn_name)}`}function C({props:o=b,styles:C,events:w,data:T=x}){let{searchUrl:E,searchIconSize:D,filterIconSize:O,channelItemHeight:k,channelItemFontSize:A,channelItemActiveFontSize:j,channelItemGap:M}={...d,...o},[N,P]=g(!1),{isSticky:F,ref:I}=s(),[L,R]=g(T.list),z=h(()=>T.currentChannelId??null,[T.currentChannelId]),B=h(()=>T.list.find(e=>e.id===z)?.cn_name??``,[T.list,z]);m(()=>{z&&t({page_key:`page_home_channel_${z}`,page_name:`首页频道-${B}`})},[z,B]),m(()=>{let e=u();R(T.list.filter(t=>!e.includes(t.id)))},[T.list]);let V=e=>{R(e)},H=(e,t)=>{n(`home`,`首页`,null,`channel_tab`,{channel_name:e.cn_name}),w?.onChannelChange?.(e,t)},U=()=>{P(!0),w?.onFilterClick?.()},W=()=>{w?.onSearchClick?.()},G=C?e(C,{}):void 0,K=F?O+D+24:O+16;return y(_,{children:[F&&v(i,{className:`w-full`,style:{height:r(44)}}),v(i,{as:`nav`,ref:I,className:p(`w-full bg-[var(--color-surface-white10)] backdrop-blur-[2px] transition-all duration-200`,!T.isFullfeed&&F&&`safe-top-offset fixed left-0 right-0 z-50`,T.isFullfeed&&`fixed top-[54px] left-0 z-10 w-full`),style:G,children:y(i,{className:`relative flex items-center h-[44px]`,children:[v(i,{className:`flex-1 overflow-x-auto overflow-y-hidden [&::-webkit-scrollbar]:hidden`,style:{scrollbarWidth:`none`,msOverflowStyle:`none`,WebkitOverflowScrolling:`touch`},children:v(i,{className:`flex items-center h-full`,style:{paddingLeft:r(16),paddingRight:r(K+16),gap:r(M)},children:L.map((e,t)=>{let n=z===e.id||z===null&&t===0;return v(a,{href:S(e,t),className:p(`whitespace-nowrap cursor-pointer transition-all duration-200`,`flex items-center justify-center`),style:{height:r(k),fontSize:r(n?j:A),fontWeight:n?`bold`:`normal`,color:n?`var(--color-theme5)`:`var(--color-text2)`},onClick:()=>H(e,t),children:e.cn_name},e.id||`channel-${t}`)})})}),y(i,{className:`flex items-center gap-[12px] px-[8px]`,children:[v(i,{className:`flex items-center justify-center cursor-pointer`,style:{width:r(O+8),height:r(O+8)},onClick:U,children:v(f,{width:r(O),height:r(O),style:{color:`var(--color-text1)`}})}),F&&v(a,{href:E,onClick:W,children:v(i,{className:`flex items-center justify-center cursor-pointer`,style:{width:r(D+8),height:r(D+8)},children:v(c,{width:r(D),height:r(D),style:{color:`var(--color-text1)`}})})})]})]})}),v(l,{open:N,onOpenChange:P,channels:T.list,currentChannelId:z,onChannelClick:H,onChannelsChange:V})]})}export{C as default};
|
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{
|
|
2
|
+
"use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{trackPageClick as t}from"../../../../../../../utils/tracking.mjs";import{pxToVw as n}from"../../../../../../../utils/helper.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(){t(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:n(_)}: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{
|
|
2
|
+
"use client";import e from"../../../../utils/event-bus.mjs";import{trackKeywordClick as t}from"../../../../utils/tracking.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.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{usePathname as u,useSearchParams as d}from"next/navigation";import{useLayoutEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";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=p(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=h(!1),[N,P]=h(null),F=m(null),I=m([]),L=m(null),R=r(),z=u(),B=d(),{userInfo:V}=n(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=p(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(f(()=>{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,n)=>{if(t({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:n,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 _(i,{className:E?`mt-[24px] no-vw-x-16 py-[16px]`:`mt-[24px] no-vw-x-16 py-0 pb-[16px]`,children:[_(i,{className:`mb-[15px] flex items-center justify-between`,children:[g(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),g(`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:g(l,{className:`h-[24px] w-[24px]`})})]}),g(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)=>g(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:g(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))}),g(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{LeftArrowIcon as r}from"../../../common/icons/left-arrow.mjs";import i from"../../../../assets/icons/search.mjs";import a from"../../../../assets/icons/clear.mjs";import{usePathname as o,useSearchParams as s}from"next/navigation";import{useCallback as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(e){if(!e||typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>e==null?``:String(e).trim()).filter(Boolean):[]}catch{return[]}}function p(p){let{placeholder:m,defaultPlaceholder:h,searchLabel:g,storageKey:_=`guest`,onSearch:v,mode:y=`renderer`}=p,b=m||(h??`请输入搜索内容`),x=g??`搜索`,S=y===`editor`,[C,w]=l(``),T=e(),E=o(),D=s(),O=`search_history_${_}`,k=c(e=>{if(S)return;let t=e.trim();if(t){try{let e=[t,...f(localStorage.getItem(O)).filter(e=>e!==t)].slice(0,20);localStorage.setItem(O,JSON.stringify(e))}catch(e){console.error(`Failed to save search history`,e)}if(v)v(t);else{let e=new URLSearchParams(D.toString());e.set(`q`,t);let n=E.includes(`/search-result`)?E:`/search-result`;T.push(`${n}?${e.toString()}`)}}},[O,S,v,E,T,D]),A=()=>{S||T.back()};return d(t,{className:`flex h-[66px] w-full items-center gap-[8px] no-vw-x-16 py-[16px]${S?` pointer-events-none`:``}`,children:[u(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:u(r,{className:`h-[16px] w-[16px]`})}),
|
|
2
|
+
"use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{LeftArrowIcon as r}from"../../../common/icons/left-arrow.mjs";import i from"../../../../assets/icons/search.mjs";import a from"../../../../assets/icons/clear.mjs";import{usePathname as o,useSearchParams as s}from"next/navigation";import{useCallback as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(e){if(!e||typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>e==null?``:String(e).trim()).filter(Boolean):[]}catch{return[]}}function p(p){let{placeholder:m,defaultPlaceholder:h,searchLabel:g,storageKey:_=`guest`,onSearch:v,mode:y=`renderer`}=p,b=m||(h??`请输入搜索内容`),x=g??`搜索`,S=y===`editor`,[C,w]=l(``),T=e(),E=o(),D=s(),O=`search_history_${_}`,k=c(e=>{if(S)return;let t=e.trim();if(t){try{let e=[t,...f(localStorage.getItem(O)).filter(e=>e!==t)].slice(0,20);localStorage.setItem(O,JSON.stringify(e))}catch(e){console.error(`Failed to save search history`,e)}if(v)v(t);else{let e=new URLSearchParams(D.toString());e.set(`q`,t);let n=E.includes(`/search-result`)?E:`/search-result`;T.push(`${n}?${e.toString()}`)}}},[O,S,v,E,T,D]),A=()=>{S||T.back()};return d(t,{className:`flex h-[66px] w-full items-center gap-[8px] no-vw-x-16 py-[16px]${S?` pointer-events-none`:``}`,children:[u(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:u(r,{className:`h-[16px] w-[16px]`})}),u(t,{className:`flex h-[34px] min-w-0 flex-1 items-stretch overflow-hidden rounded-full p-[1px]`,style:{background:`linear-gradient(90deg, rgba(230,42,255,0.9) 0%, rgba(239,255,69,0.5) 25%, rgba(233,69,255,0.8) 50%, rgba(233,69,255,0.9) 100%)`},children:d(t,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 items-center overflow-hidden rounded-full bg-black backdrop-blur-[2px]`,children:[d(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[u(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:u(i,{className:`h-[14px] w-[14px] text-white/60`})}),u(n,{className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white !caret-white placeholder:!text-white/90 focus-visible:!ring-0`,placeholder:b,value:C,maxLength:128,onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k(C))}}),C&&u(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:u(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),u(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white active:opacity-90`,onClick:()=>k(C),children:x})]})})]})}export{p as SearchInputClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{getOrCreateBrowserFingerprint as e}from"../../../utils/browser-fingerprint.mjs";import{userSelectors as t}from"../../../store/modules/user-store.mjs";import{useEffect as n}from"react";const r=`funhub-sensor-sdk-script`;let i=!1,a=``;function o(){let e=`__funhub_session_id`,t=sessionStorage.getItem(e);return t||(t=crypto.randomUUID().replace(/-/g,``),sessionStorage.setItem(e,t)),t}function s(){let e=navigator.userAgent;return/android/i.test(e)?`Android`:/iPad|iPhone|iPod/.test(e)?`iOS`:`PC`}function c(){return{channel:process.env.NEXT_PUBLIC_TRACK_CHANNEL||``,event_id:crypto.randomUUID().replace(/-/g,``),app_id:process.env.NEXT_PUBLIC_TRACK_APP_ID||``,uid:t.getUserId()||``,sid:o(),client_ts:Math.floor(Date.now()/1e3),device:s(),device_id:a,user_agent:navigator.userAgent,device_brand:``,device_model:``}}function l(){
|
|
2
|
+
"use client";import{getOrCreateBrowserFingerprint as e}from"../../../utils/browser-fingerprint.mjs";import{userSelectors as t}from"../../../store/modules/user-store.mjs";import{useEffect as n}from"react";const r=`funhub-sensor-sdk-script`;let i=!1,a=``;function o(){let e=`__funhub_session_id`,t=sessionStorage.getItem(e);return t||(t=crypto.randomUUID().replace(/-/g,``),sessionStorage.setItem(e,t)),t}function s(){let e=navigator.userAgent;return/android/i.test(e)?`Android`:/iPad|iPhone|iPod/.test(e)?`iOS`:`PC`}function c(){return{channel:process.env.NEXT_PUBLIC_TRACK_CHANNEL||``,event_id:crypto.randomUUID().replace(/-/g,``),app_id:process.env.NEXT_PUBLIC_TRACK_APP_ID||``,uid:t.getUserId()||``,sid:o(),client_ts:Math.floor(Date.now()/1e3),device:s(),device_id:a,user_agent:navigator.userAgent,device_brand:``,device_model:``}}function l(){let e=process.env.NEXT_PUBLIC_SENSOR_SERVER_URL;return e?{server_url:e,is_track_single_page:!1,use_client_time:!0,send_type:`beacon`,heatmap:{clickmap:`not_collect`,scroll_notice_map:`not_collect`}}:(console.warn(`[SensorInit] NEXT_PUBLIC_SENSOR_SERVER_URL is not configured, skipping sensor initialization.`),null)}function u(){return typeof window>`u`||window.sensorsDataAnalytic201505?Promise.resolve():(window.__funhubSensorSdkLoader||(window.__funhubSensorSdkLoader=new Promise((e,t)=>{let n=document.getElementById(r);if(n){n.addEventListener(`load`,()=>e(),{once:!0}),n.addEventListener(`error`,()=>t(Error(`load sensor sdk failed`)),{once:!0});return}let i=document.createElement(`script`);i.id=r,i.async=!0,i.src=`/sensorsdata.js`,i.onload=()=>e(),i.onerror=()=>t(Error(`load sensor sdk failed`)),document.head.appendChild(i)})),window.__funhubSensorSdkLoader)}function d(){return n(()=>{let t=!1;async function n(){if(i||(await u(),t))return;a=await e();let n=window.sensorsDataAnalytic201505;if(!n)return;let r=l();if(!r||i)return;i=!0,n.init(r),n.quick(`autoTrack`);let o=n.track.bind(n);n.track=(e,t)=>{let n={...c()};return n.payload={...t},o(e,n)},window.sensors=n}return n(),()=>{t=!0}},[]),null}export{d as SensorInit};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{cn as e}from"../../../utils/cn.mjs";import{Image as t}from"../../ui/image.mjs";import{Carousel as n,CarouselContent as r,CarouselItem as i,CarouselNext as a,CarouselPrevious as o}from"../../ui/carousel.mjs";import{Dialog as s,DialogContent as c}from"../../ui/dialog.mjs";import{CloseIcon as l}from"../../../assets/icons/close-icon.mjs";import{useMediaPreviewStore as u}from"../../../store/modules/media-preview-store.mjs";import{VideoPlay as d}from"./video-play.mjs";import{useEffect as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";function _(){let{openWithMediaList:e,close:t,setOpen:n}=u();function r(t,n=0){e(t,n)}return{open:r,close:t,setOpen:n}}function v(_){let{className:v}=_,{isOpen:y,setOpen:b,close:x,mediaList:S,startIndex:C,setStartIndex:w}=u(),[T,E]=m(null),[D,O]=m(null),[k,A]=m(0),j=p(!1);if(f(()=>{y||!S.length||x()},[x,y,S.length]),f(()=>{y&&!j.current&&(O(C),A(e=>e+1)),!y&&j.current&&O(null),j.current=y},[y,S.length,C]),f(()=>{if(!y||!T||!S.length)return;let e=Math.min(Math.max(C,0),Math.max(S.length-1,0));T.selectedScrollSnap()!==e&&T.scrollTo(e,!0)},[T,y,C,S.length]),f(()=>{if(!T||!S.length||!y)return;function e(){T&&w(T.selectedScrollSnap())}return T.on(`select`,e),T.on(`reInit`,e),()=>{T.off(`select`,e),T.off(`reInit`,e)}},[T,y,w,S.length]),!S.length&&!y)return null;function M(e){if(e){b(!0);return}x()}function N(){x()}function P(e){e.stopPropagation()}return h(s,{open:y,onOpenChange:M,children:g(c,{showCloseButton:!1,className:e(`border-none z-[10000] flex h-screen w-screen max-w-none items-center justify-center rounded-none bg-black text-white`,v),onClick:P,children:[g(`div`,{className:`absolute left-0 right-0 w-full flex justify-between items-center top-[calc(env(safe-
|
|
2
|
+
"use client";import{cn as e}from"../../../utils/cn.mjs";import{Image as t}from"../../ui/image.mjs";import{Carousel as n,CarouselContent as r,CarouselItem as i,CarouselNext as a,CarouselPrevious as o}from"../../ui/carousel.mjs";import{Dialog as s,DialogContent as c}from"../../ui/dialog.mjs";import{CloseIcon as l}from"../../../assets/icons/close-icon.mjs";import{useMediaPreviewStore as u}from"../../../store/modules/media-preview-store.mjs";import{VideoPlay as d}from"./video-play.mjs";import{useEffect as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";function _(){let{openWithMediaList:e,close:t,setOpen:n}=u();function r(t,n=0){e(t,n)}return{open:r,close:t,setOpen:n}}function v(_){let{className:v}=_,{isOpen:y,setOpen:b,close:x,mediaList:S,startIndex:C,setStartIndex:w}=u(),[T,E]=m(null),[D,O]=m(null),[k,A]=m(0),j=p(!1);if(f(()=>{y||!S.length||x()},[x,y,S.length]),f(()=>{y&&!j.current&&(O(C),A(e=>e+1)),!y&&j.current&&O(null),j.current=y},[y,S.length,C]),f(()=>{if(!y||!T||!S.length)return;let e=Math.min(Math.max(C,0),Math.max(S.length-1,0));T.selectedScrollSnap()!==e&&T.scrollTo(e,!0)},[T,y,C,S.length]),f(()=>{if(!T||!S.length||!y)return;function e(){T&&w(T.selectedScrollSnap())}return T.on(`select`,e),T.on(`reInit`,e),()=>{T.off(`select`,e),T.off(`reInit`,e)}},[T,y,w,S.length]),!S.length&&!y)return null;function M(e){if(e){b(!0);return}x()}function N(){x()}function P(e){e.stopPropagation()}return h(s,{open:y,onOpenChange:M,children:g(c,{showCloseButton:!1,className:e(`border-none z-[10000] flex h-screen w-screen max-w-none items-center justify-center rounded-none bg-black text-white`,v),onClick:P,children:[g(`div`,{className:`absolute left-0 right-0 w-full flex justify-between items-center top-[calc(env(--safe-top-offset)+60px)] z-[999] rounded-full bg-black/60 px-3 py-1 text-xs text-white`,children:[h(`div`,{className:`text-white`,children:`${C+1}/${S.length}`}),h(l,{className:`h-[12px] w-[12px] text-white`,onClick:N})]}),g(n,{className:e(`w-full`),opts:{loop:!1,startIndex:C},setApi:E,children:[h(r,{className:`will-change-transform`,children:S.map((n,r)=>h(i,{className:`will-change-transform`,children:h(`div`,{className:`relative h-[70vh] w-full overflow-hidden rounded-lg will-change-transform transform-gpu`,children:n.type===`video`?h(d,{url:n.src,cover:n.cover,isActive:r===C,autoPlayMuted:n.autoPlayMuted,previewAutoPlay:y&&D===r,previewAutoPlaySeed:k},`${n.src}-${r}`):h(t,{src:n.src,alt:`预览`,fill:!0,className:e(`object-contain will-change-transform`)})})},`${n.src}-${r}`))}),h(o,{}),h(a,{})]})]})})}export{v as MediaPreview,_ as useMediaPreview};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{
|
|
2
|
+
"use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{trackAppPageView as t}from"../../../utils/tracking.mjs";import{gContentGetAppChannelBlock as n,gContentGetAppChannels as r}from"../../../service/generated/client.mjs";import{Box as i}from"../../ui/box.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{queryKey as o}from"../../../constants/query-key.mjs";import{matchChannelByPath as s}from"../../pages/home/channel-matcher.mjs";import{TopNavBarFullscreen as c}from"./fullscreen.mjs";import{TopNavBarNormal as l}from"./normal.mjs";import{usePathname as u}from"next/navigation";import{useEffect as d,useMemo as f}from"react";import{jsx as p}from"react/jsx-runtime";function m(e){return e===`/`?[]:e.startsWith(`/category/`)?e.replace(`/category/`,``).split(`/`).map(e=>decodeURIComponent(e)):[]}function h({categoryPath:h,currentChannelId:g}){let _=u()||`/`,{data:v}=a([o.CHANNEL],()=>r()),y=f(()=>e(v?.data),[v?.data]),b=f(()=>typeof window>`u`?h||[]:m(_),[h,_]),x=f(()=>y.length===0?null:s(b,y),[b,y])?.id??g??``;d(()=>{t({page_key:`page_home_top_nav`,page_name:`首页顶部导航栏`})},[]);let{data:S}=a(o.GET_CONTENT_LIST(x),()=>n({channel_id:x}),{enabled:!!x}),C=f(()=>S?.data?.blocks||[],[S?.data?.blocks]),w=f(()=>C.length>0&&C[0].show_style===6,[C]);return p(i,{className:`w-full`,"data-top-nav-root":`true`,children:p(w?c:l,{channelDataList:y,currentChannelId:x})})}export{h as TopNavBar};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{trackAdClick as e,trackAdImpression as t}from"../../../utils/tracking.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as r}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as i}from"../../../service/generated/tanstack.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as o}from"./video-player-ref-context.mjs";import{create as s}from"zustand";import{createJSONStorage as c,persist as l}from"zustand/middleware";import{useEffect as u,useRef as d,useState as f}from"react";import{useIsClient as p}from"foxact/use-is-client";import{jsx as m}from"react/jsx-runtime";import{createPortal as h}from"react-dom";const g=s()(l((e,t)=>({shownVideoIds:new Set,hasShown:e=>t().shownVideoIds.has(e),markAsShown:n=>{let r=t().shownVideoIds;if(!r.has(n)){let t=new Set(r);t.add(n),e({shownVideoIds:t})}}}),{name:`video-blind-ad-storage`,storage:typeof window<`u`?c(()=>sessionStorage):void 0,partialize:e=>({shownVideoIds:Array.from(e.shownVideoIds)}),merge:(e,t)=>({...t,shownVideoIds:new Set(e.shownVideoIds||[])})})),_=`video_blind`;function v(e,t){return`${e}:${Math.max(1,Math.floor(Number(t)||1))}`}function y({videoId:s,episode:c}){let l=o(),y=p(),b=n(e=>e.userId),{hasShown:x,markAsShown:S}=g(),[C,w]=f(!1),T=d(!1),E={user_id:b,ad_type:`blind`},{data:D,isLoading:O}=a(i(E),()=>r(E)),k=v(s,c),A=x(k),j=D?.data?.materials?.[0]?.advertise_code||``,M=!A&&C;u(()=>{!M||!j||t({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:j,ad_type:`blind`})},[M,j]),u(()=>{if(!D||A)return;let e=(D.data?.settings?.trigger_video_progress_min??0)*60,t=null,n=null;function r(n){if(T.current){t?.off(`timeupdate`,r);return}Number(n?.currentTime||t?.currentTime||0)>=e&&(T.current=!0,w(!0))}function i(){let n=l?.current?.getPlayer?.();return n?(t=n,Number(n.currentTime||0)>=e?(T.current=!0,w(!0),!0):(n.on(`timeupdate`,r),!0)):!1}return i()||(n=window.setInterval(()=>{i()&&n!==null&&(window.clearInterval(n),n=null)},200)),()=>{n!==null&&window.clearInterval(n),t?.off(`timeupdate`,r)}},[l,D,A]),u(()=>{if(M)return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}},[M]);function N(){A||(j&&e({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:j,ad_type:`blind`}),S(k),window.open(D?.data.materials?.[0].advertise_url))}return!y||typeof document>`u`||O||D?.data?.hit===!1||A||!C?null:h(m(`div`,{className:`blind-ad-overlay fixed inset-0 h-screen w-screen z-[99999]`,onClick:N}),document.body)}export{y as VideoBlindAdOverlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{trackAdClick as e,trackAdImpression as t,trackAdvertising as n}from"../../../utils/tracking.mjs";import{useUserStore as r}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as i}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as a}from"../../../service/generated/tanstack.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as s}from"./video-player-ref-context.mjs";import{PrerollSkipButtonContent as c}from"./preroll-skip-button-content.mjs";import{useCallback as l,useEffect as u,useRef as d,useState as f}from"react";import{useIsClient as p}from"foxact/use-is-client";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{createPortal as g}from"react-dom";const _=`video_preroll`;function v(e,t){return`${e}:${Math.max(1,Math.floor(Number(t)||1))}`}const y=new Set;function b({videoId:b,episode:x}){let S=s(),C=p(),w=r(e=>e.userId),[T,E]=f(!1),[D,O]=f(0),k=d(null),A=d(!1),j={user_id:w,ad_type:`preroll`},{data:M,isLoading:N}=o(a(j),()=>i(j)),P=M?.data?.materials?.[0],F=M?.data?.settings?.skip_seconds??5,I=P?.advertise_code||``,L=v(b,x),R=y.has(L);u(()=>{if(M?.data?.hit!==!0||!P||A.current||R)return;function e(){if(!A.current){A.current=!0,E(!0),O(F);try{S?.current?.getPlayer()?.pause?.()}catch{}}}let t=S?.current?.getPlayer();if(t)if(S?.current?.isPlayerReady())e();else return t.once?.(`ready`,e),()=>{t.off?.(`ready`,e)}},[M,R,P,S,F]),u(()=>{if(!(!T||F<=0))return k.current=setInterval(()=>{O(e=>e<=1?(k.current&&=(clearInterval(k.current),null),0):e-1)},1e3),()=>{k.current&&=(clearInterval(k.current),null)}},[T,F]),u(()=>{!T||!I||t({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:I,ad_type:`preroll`})},[T,I]);let z=l(()=>{k.current&&=(clearInterval(k.current),null),E(!1),y.add(L);try{S?.current?.getPlayer()?.play?.().catch?.(()=>{})}catch{}I&&n({event_type:`close`,advertising_key:_,advertising_name:`视频贴片广告`,advertising_id:I})},[I,S,L]);function B(){I&&e({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:I,ad_type:`preroll`}),P?.advertise_url&&window.open(P.advertise_url)}return!C||typeof document>`u`||N||!T?null:g(h(`div`,{className:`fixed inset-0 z-[99998] bg-black`,children:[P?.advertise_icon&&m(`img`,{src:P.advertise_icon,alt:P.advertise_name||`视频贴片广告`,className:`h-full w-full cursor-pointer object-cover`,onClick:B}),m(`div`,{className:`absolute right-4 top-4 z-10`,children:D<=0?m(`button`,{type:`button`,className:`cursor-pointer rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,onClick:z,children:m(c,{label:`跳过广告`})}):h(`div`,{className:`rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,children:[D,`秒后可跳过`]})})]}),document.body)}export{b as VideoPrerollAdOverlay};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{ensureGuestIdentity as e}from"../../../store/modules/user-store.mjs";import{Button as t}from"../../ui/button.mjs";import{Box as n}from"../../ui/box.mjs";import{Checkbox as r}from"../../ui/checkbox.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{CloseIcon as o}from"../../../assets/icons/close-icon.mjs";import{EyeIcon as s}from"../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as c}from"../../../assets/icons/eye-off-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{authGradientTextStyle as u,authPanelBackgroundStyle as d}from"./auth-page-styles.mjs";import{trackLoginPageClick as f}from"./tracking.mjs";import{useCallback as p,useMemo as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";function y(y){let b=v(`components.pages.login`),{onClose:x,onForgotPassword:S,onRegister:C,onSubmit:w,errorText:T}=y,[E,D]=h(``),[O,k]=h(``),[A,j]=h(!1),[M,N]=h(!1),[P,F]=h(!1),[I,L]=h(null),R=m(()=>E.trim().length>0&&O.length>0&&P&&!M,[E,O,P,M]),z=p(()=>{e(!0),C?.()},[C]);async function B(){if(R)try{N(!0),await w?.({email:E.trim(),password:O})}finally{N(!1)}}return _(n,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:d,children:[_(n,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(safe-
|
|
2
|
+
"use client";import{ensureGuestIdentity as e}from"../../../store/modules/user-store.mjs";import{Button as t}from"../../ui/button.mjs";import{Box as n}from"../../ui/box.mjs";import{Checkbox as r}from"../../ui/checkbox.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{CloseIcon as o}from"../../../assets/icons/close-icon.mjs";import{EyeIcon as s}from"../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as c}from"../../../assets/icons/eye-off-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{authGradientTextStyle as u,authPanelBackgroundStyle as d}from"./auth-page-styles.mjs";import{trackLoginPageClick as f}from"./tracking.mjs";import{useCallback as p,useMemo as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";function y(y){let b=v(`components.pages.login`),{onClose:x,onForgotPassword:S,onRegister:C,onSubmit:w,errorText:T}=y,[E,D]=h(``),[O,k]=h(``),[A,j]=h(!1),[M,N]=h(!1),[P,F]=h(!1),[I,L]=h(null),R=m(()=>E.trim().length>0&&O.length>0&&P&&!M,[E,O,P,M]),z=p(()=>{e(!0),C?.()},[C]);async function B(){if(R)try{N(!0),await w?.({email:E.trim(),password:O})}finally{N(!1)}}return _(n,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:d,children:[_(n,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(--safe-top-offset)+152px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[g(t,{type:`button`,variant:`ghost`,onClick:x,"aria-label":b(`loginClient.close`),className:`absolute top-[calc(env(--safe-top-offset)+12px)] right-[24px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:g(o,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),_(n,{className:`flex w-full flex-col`,children:[g(a,{className:`text-[28px] leading-[32px] font-medium text-[#E6E6E6]`,children:b(`loginClient.title`)}),g(a,{className:`mt-[16px] text-[14px] leading-[24px] text-[#E6E6E6]`,children:b(`loginClient.subtitle`)}),_(`form`,{className:`mt-[48px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),B()},children:[g(n,{className:`flex h-[48px] items-center rounded-[8px] bg-white/10 px-[22px]`,children:g(i,{placeholder:b(`loginClient.emailPlaceholder`),type:`email`,name:`funhub-login-email`,value:E,onChange:e=>D(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`})}),_(n,{className:`mt-[24px] flex h-[48px] items-center justify-between rounded-[8px] bg-white/10 px-[16px]`,children:[g(i,{placeholder:b(`loginClient.passwordPlaceholder`),type:A?`text`:`password`,name:`funhub-login-password`,value:O,onChange:e=>k(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`}),g(t,{type:`button`,variant:`ghost`,className:`ml-[12px] h-[24px] w-[24px] cursor-pointer select-none !p-0 text-white/50 hover:text-white/80`,"aria-label":b(A?`loginClient.hidePassword`:`loginClient.showPassword`),onClick:()=>j(e=>!e),children:g(A?s:c,{className:`h-[20px] w-[20px]`,"aria-hidden":`true`,focusable:`false`})})]}),!!T&&g(n,{className:`mt-[8px] text-[12px] leading-[16px] text-theme5`,children:T})]}),_(n,{className:`mt-[16px] flex items-center justify-between text-[14px] leading-[24px] text-[#9DA3AC]`,children:[_(a,{as:`span`,className:`whitespace-nowrap`,children:[b(`loginClient.noAccount`),g(t,{type:`button`,variant:`link`,onClick:z,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,children:b(`loginClient.registerLink`)})]}),g(t,{type:`button`,variant:`link`,onClick:S,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] text-[#9DA3AC] !no-underline hover:text-text1 hover:!no-underline`,children:b(`loginClient.forgotPassword`)})]})]}),_(n,{className:`flex w-full flex-col`,children:[_(n,{className:`flex items-center`,children:[g(r,{checked:P,onCheckedChange:e=>F(e===!0),"aria-label":b(`loginClient.agreeToTerms`),className:`mt-px size-[16px] border-white/60 bg-transparent data-[checked]:border-theme5 data-[checked]:bg-theme5 data-[checked]:text-white`}),_(a,{as:`span`,className:`ml-[8px] text-[12px] leading-[16px] text-[#9DA3AC]`,children:[b(`loginClient.agreeToTermsPrefix`),_(t,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>L(`terms`),children:[`《`,b(`loginClient.userAgreement`),`》`]}),b(`loginClient.and`),_(t,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>L(`privacy`),children:[`《`,b(`loginClient.privacyPolicy`),`》`]})]})]}),g(t,{type:`button`,"data-skip-dialog-track":`true`,onClick:e=>{f(e,`login_submit`),B()},disabled:!R,className:`mt-[16px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${R?``:`!text-white/60`}`,style:{background:R?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:b(M?`loginClient.loggingIn`:`loginClient.login`)})]})]}),g(l,{type:I,onClose:()=>L(null)})]})}export{y as LoginClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{getCookie as e,hashPassword as t}from"../../../utils/common.mjs";import{pUserRegister as
|
|
2
|
+
"use client";import{getCookie as e,hashPassword as t}from"../../../utils/common.mjs";import{trackGuestAccountBind as n}from"../../../utils/tracking.mjs";import{pUserRegister as r,pUserResetForgetPassword as i,pUserResetPassword as a}from"../../../service/generated/client.mjs";import{getPasswordValidationErrorText as o,validatePasswordPair as s}from"../../../utils/password-validator.mjs";import{Button as c}from"../../ui/button.mjs";import{Box as l}from"../../ui/box.mjs";import{Input as u}from"../../ui/input.mjs";import{Text as d}from"../../ui/text.mjs";import{useLoginModalStore as f}from"../../../store/modules/login-modal-store.mjs";import{useSetAuthFields as p,useUserId as m}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as h}from"../../../assets/icons/left-arrow-icon.mjs";import{EyeIcon as g}from"../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as _}from"../../../assets/icons/eye-off-icon.mjs";import{toast as v}from"sonner";import{useCallback as y,useMemo as b,useState as x}from"react";import{jsx as S,jsxs as C}from"react/jsx-runtime";import{useTranslations as w}from"next-intl";function T(T){let E=w(`components.pages.login`),{email:D,onClose:O}=T,k=p(),A=m(),{resolveLogin:j}=f(),[M,N]=x(``),[P,F]=x(``),[I,L]=x(!1),[R,z]=x(!1),[B,V]=x(!1),[H,U]=x(``),{verifyStep:W}=f(),G=y(async()=>{let n=t(M);return W===`reset-password`?await a({user_id:A,password:n}):W===`forgot-password`?await i({email:D,password:n}):await r({email:D,user_id:await e(`guestUserId`),password:n})},[W,A,D,M]),K=b(()=>s(M,P),[M,P]),q=b(()=>o(K),[K]),J=q!==``,Y=K.type===`not-match`,X=b(()=>M.length>0&&P.length>0&&q===``&&!B,[M,P,q,B]);async function Z(){if(X)try{V(!0),U(``);let{data:e}=await G();e?.user_id&&(k({token:e.token,expireTime:e.expire_time,userId:e.user_id}),v.success(E(`password.passwordSetSuccess`)),n({event_time:Math.floor(Date.now()/1e3)})),j(!0)}catch(e){U(e.message??E(`password.submitFailed`))}finally{V(!1)}}let Q=E(W===`reset-password`?`password.confirmModify`:W===`forgot-password`?`password.confirmReset`:`password.register`),$=E(W===`reset-password`||W===`forgot-password`?`password.setNewPassword`:`password.setLoginPassword`);return C(l,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[C(l,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[S(c,{type:`button`,onClick:O,"aria-label":E(`password.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:S(h,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),S(d,{className:`text-[14px] text-text2`})]}),C(l,{className:`px-[24px] flex flex-col mt-[15px]`,children:[S(l,{className:`flex flex-col`,children:S(d,{className:`text-[24px] leading-[32px] font-bold`,children:$})}),C(`form`,{className:`mt-[58px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),Z()},children:[C(l,{className:`space-y-[16px]`,children:[C(l,{className:`flex items-center justify-between px-[28px] rounded-[50px] h-[66px] bg-line1 border ${J?`border-theme5`:`border-line1`}`,children:[S(u,{placeholder:E(`password.passwordPlaceholder`),type:I?`text`:`password`,name:`funhub-password`,value:M,onChange:e=>N(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`}),S(c,{type:`button`,onClick:()=>L(!I),className:`ml-[10px] cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:S(I?g:_,{className:`w-[20px] h-[20px] text-text3`})})]}),C(l,{className:`flex items-center justify-between px-[28px] rounded-[50px] h-[66px] bg-line1 border ${Y?`border-theme5`:`border-line1`}`,children:[S(u,{placeholder:E(`password.confirmPasswordPlaceholder`),type:R?`text`:`password`,name:`funhub-confirm-password`,value:P,onChange:e=>F(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`}),S(c,{type:`button`,onClick:()=>z(!R),className:`ml-[10px] cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:S(R?g:_,{className:`w-[20px] h-[20px] text-text3`})})]})]}),S(l,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:q||H}),S(c,{type:`submit`,disabled:!X,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:B?E(`password.submitting`):Q})]})]})]})}export{T as Password};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{isValidEmail as e}from"../../../utils/email-validator.mjs";import{pUserSendEmailCode as t}from"../../../service/generated/client.mjs";import{Button as n}from"../../ui/button.mjs";import{Box as r}from"../../ui/box.mjs";import{Checkbox as i}from"../../ui/checkbox.mjs";import{Input as a}from"../../ui/input.mjs";import{Text as o}from"../../ui/text.mjs";import{useLoginModalStore as s}from"../../../store/modules/login-modal-store.mjs";import{LeftArrowIcon as c}from"../../../assets/icons/left-arrow-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{authGradientTextStyle as u,authPanelBackgroundStyle as d}from"./auth-page-styles.mjs";import{trackLoginPageClick as f}from"./tracking.mjs";import{useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";function v(v){let y=_(`components.pages.login`),{onClose:b,onLogin:x,onVerify:S}=v,{setVerifyStep:C}=s(),[w,T]=m(``),[E,D]=m(!1),[O,k]=m(``),[A,j]=m(!1),[M,N]=m(null),P=p(()=>w.trim().length>0&&A&&!E,[w,A,E]);function F(e){T(e),O&&k(``)}async function I(){if(P)try{D(!0),k(``);let n=w.trim();if(!e(n)){k(y(`register.invalidEmail`));return}await t({email:n}),C(`register-verify`),S?.(n)}catch(e){k(e.message??y(`register.sendFailed`))}finally{D(!1)}}return g(r,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:d,children:[g(r,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(safe-
|
|
2
|
+
"use client";import{isValidEmail as e}from"../../../utils/email-validator.mjs";import{pUserSendEmailCode as t}from"../../../service/generated/client.mjs";import{Button as n}from"../../ui/button.mjs";import{Box as r}from"../../ui/box.mjs";import{Checkbox as i}from"../../ui/checkbox.mjs";import{Input as a}from"../../ui/input.mjs";import{Text as o}from"../../ui/text.mjs";import{useLoginModalStore as s}from"../../../store/modules/login-modal-store.mjs";import{LeftArrowIcon as c}from"../../../assets/icons/left-arrow-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{authGradientTextStyle as u,authPanelBackgroundStyle as d}from"./auth-page-styles.mjs";import{trackLoginPageClick as f}from"./tracking.mjs";import{useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";function v(v){let y=_(`components.pages.login`),{onClose:b,onLogin:x,onVerify:S}=v,{setVerifyStep:C}=s(),[w,T]=m(``),[E,D]=m(!1),[O,k]=m(``),[A,j]=m(!1),[M,N]=m(null),P=p(()=>w.trim().length>0&&A&&!E,[w,A,E]);function F(e){T(e),O&&k(``)}async function I(){if(P)try{D(!0),k(``);let n=w.trim();if(!e(n)){k(y(`register.invalidEmail`));return}await t({email:n}),C(`register-verify`),S?.(n)}catch(e){k(e.message??y(`register.sendFailed`))}finally{D(!1)}}return g(r,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:d,children:[g(r,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(--safe-top-offset)+152px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[h(n,{type:`button`,variant:`ghost`,onClick:b,"aria-label":y(`register.back`),className:`absolute top-[calc(env(--safe-top-offset)+12px)] left-[24px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:h(c,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),g(r,{className:`flex w-full flex-col`,children:[h(o,{className:`text-[28px] leading-[32px] font-medium text-[#E6E6E6]`,children:y(`loginClient.title`)}),h(o,{className:`mt-[16px] text-[14px] leading-[24px] text-[#E6E6E6]`,children:y(`loginClient.subtitle`)}),h(`form`,{className:`mt-[48px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),I()},children:h(r,{className:`flex h-[48px] items-center rounded-[8px] bg-white/10 px-[22px]`,children:h(a,{placeholder:y(`register.emailPlaceholder`),type:`email`,name:`funhub-register-email`,value:w,onChange:e=>F(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`})})}),!!O&&h(r,{className:`mt-[8px] min-h-[16px] text-[12px] leading-[16px] text-theme5`,children:O}),h(r,{className:`mt-[16px] flex items-center justify-between text-[14px] leading-[24px] text-[#9DA3AC]`,children:g(o,{as:`span`,className:`whitespace-nowrap`,children:[y(`register.hasAccount`),h(n,{type:`button`,variant:`link`,onClick:x,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,children:y(`register.loginLink`)})]})})]}),g(r,{className:`flex w-full flex-col`,children:[g(r,{className:`flex items-center`,children:[h(i,{checked:A,onCheckedChange:e=>j(e===!0),"aria-label":y(`loginClient.agreeToTerms`),className:`mt-px size-[16px] border-white/60 bg-transparent data-[checked]:border-theme5 data-[checked]:bg-theme5 data-[checked]:text-white`}),g(o,{as:`span`,className:`ml-[8px] text-[12px] leading-[16px] text-[#9DA3AC]`,children:[y(`loginClient.agreeToTermsPrefix`),g(n,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>N(`terms`),children:[`《`,y(`loginClient.userAgreement`),`》`]}),y(`loginClient.and`),g(n,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>N(`privacy`),children:[`《`,y(`loginClient.privacyPolicy`),`》`]})]})]}),h(n,{type:`button`,"data-skip-dialog-track":`true`,onClick:e=>{f(e,`register_submit`),I()},disabled:!P,className:`mt-[16px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${P?``:`!text-white/60`}`,style:{background:P?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:y(E?`register.sending`:`register.getCode`)})]})]}),h(l,{type:M,onClose:()=>N(null)})]})}export{v as Register};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{getCookie as e}from"../../../utils/common.mjs";import{cn as t}from"../../../utils/cn.mjs";import{pUserSendEmailCode as
|
|
2
|
+
"use client";import{getCookie as e}from"../../../utils/common.mjs";import{cn as t}from"../../../utils/cn.mjs";import{trackGuestAccountBind as n}from"../../../utils/tracking.mjs";import{pUserSendEmailCode as r,pUserSendResetPasswordEmailCode as i,pUserVerifyForgetEmailCode as a,pUserVerifyResetPasswordEmailCode as o}from"../../../service/generated/client.mjs";import{pUserRegisterByVerifyEmailCodeCompat as s}from"../../../service/register-by-verify-email-code.mjs";import{Button as c}from"../../ui/button.mjs";import{Box as l}from"../../ui/box.mjs";import{Text as u}from"../../ui/text.mjs";import{useLoginModalStore as d}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as f}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as p,useUserId as m}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as h}from"../../../assets/icons/left-arrow-icon.mjs";import{authPanelBackgroundStyle as g}from"./auth-page-styles.mjs";import{toast as _}from"sonner";import{useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as T}from"next-intl";function E(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function D(D){let O=T(`components.pages.login`),{email:k,onClose:A,onPassword:j}=D,{verifyStep:M,resolveLogin:N}=d(),[P,F]=S([,,,,,,].fill(``)),[I,L]=S(0),[R,z]=S(!1),[B,V]=S(60),[H,U]=S(!1),[W,G]=S(``),K=x(null),q=m(),J=p(),Y=f(),X=b(()=>E(k),[k]),Z=v(async()=>{if(M===`reset-password`)return await o({user_id:q,email_code:P.join(``)});if(M===`forgot-password`)return await a({email:k,email_code:P.join(``)});if(M===`register-verify`){let t=await e(`guestUserId`);return await s({email:k,email_code:P.join(``),user_id:t})}throw Error(O(`verify.invalidCode`))},[M,P,q,k,O]),Q=b(()=>P.every(e=>e!==``)&&!R,[P,R]);y(()=>{if(B<=0)return;let e=setInterval(()=>{V(e=>e-1)},1e3);return()=>clearInterval(e)},[B]),y(()=>{K.current?.focus()},[]);let $=v(e=>{let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...P],r=t.split(``),i=I;for(let e of r)i<6&&(n[i]=e,i++);F(n),L(Math.min(i,5)),G(``)},[P,I]),ee=v(e=>{if(e.key===`Backspace`){e.preventDefault();let t=[...P];P[I]?t[I]=``:I>0&&(t[I-1]=``,L(I-1)),F(t),G(``)}else e.key===`ArrowLeft`&&I>0?L(I-1):e.key===`ArrowRight`&&I<5&&L(I+1)},[P,I]),te=v(e=>{L(e),K.current?.focus()},[]);async function ne(){if(!(B>0||H))try{U(!0),M===`reset-password`?await i({user_id:q}):await r({email:k}),V(60),G(``)}finally{U(!1)}}async function re(){if(Q)try{z(!0);let e=await Z();if(M===`register-verify`){let t=e?.data;if(t?.user_id){J({token:t.token??``,expireTime:t.expire_time??0,userId:t.user_id}),n({event_time:Math.floor(Date.now()/1e3)}),_.success(O(`index.loginSuccess`)),Y([`user-profile`,`mine`]),N(!0);return}}j?.(k)}catch(e){G(e.message??O(`verify.invalidCode`))}finally{z(!1)}}return C(l,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:g,children:w(l,{className:`relative z-[1] mx-auto min-h-screen w-full max-w-[390px] px-[32px] pt-[calc(env(--safe-top-offset)+136px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[C(c,{type:`button`,variant:`ghost`,onClick:A,"aria-label":O(`verify.back`),className:`absolute top-[calc(env(--safe-top-offset)+12px)] left-[16px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:C(h,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),w(l,{className:`w-full`,children:[C(l,{children:C(u,{className:`text-[28px] leading-[32px] font-medium text-text1`,children:O(`verify.title`)})}),w(l,{className:`mt-[6px]`,children:[C(u,{className:`ml-[4px] text-[14px] leading-[28px] text-white/60`,children:O(`verify.sentTo`)}),C(u,{className:`mt-[6px] text-[14px] leading-[28px] text-white/60`,children:X})]}),w(`form`,{className:`mt-[44px]`,onSubmit:e=>{e.preventDefault(),re()},children:[w(l,{className:`relative h-[50px]`,children:[C(`input`,{ref:K,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:$,onKeyDown:ee,className:`absolute inset-0 opacity-0 pointer-events-none h-full w-full border-none bg-transparent text-base outline-none`,autoComplete:`one-time-code`}),C(l,{className:`flex w-full items-center justify-between`,children:P.map((e,n)=>C(l,{onClick:()=>te(n),className:t(`flex h-[50px] w-[50px] cursor-pointer items-center justify-center rounded-[8px] bg-white/10 transition-all duration-200`,W?`border-[0.5px] border-[var(--color-verification-error)]`:n===I?`ring-1 ring-white/25 bg-white/[0.14]`:``),children:C(u,{className:t(`select-none text-[28px] leading-none font-medium`,W?`text-[var(--color-verification-error)]`:`text-text1`),children:e})},n))})]}),!!W&&C(l,{className:`mt-[8px] text-[14px] leading-[24px] text-[var(--color-verification-error)]`,children:W}),C(c,{type:`submit`,disabled:!Q,className:`mt-[44px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${Q?``:`!text-white/60`}`,style:{background:Q?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:O(R?`verify.verifying`:`verify.nextStep`)}),C(c,{type:`button`,variant:`ghost`,onClick:ne,disabled:B>0||H,className:`mt-[16px] flex w-full items-center justify-center bg-transparent !p-0 text-[15px] leading-[24px] text-[#9DA3AC] hover:bg-transparent hover:text-text1 disabled:cursor-not-allowed disabled:opacity-100`,children:B>0?O(`verify.resendCountdown`,{seconds:B}):O(`verify.resend`)})]})]})]})})}export{D as Verify};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{useRouter as r}from"../../../utils/use-compatible-router.mjs";import{Box as i}from"../../ui/box.mjs";import{eventKey as a}from"../../../constants/event-key.mjs";import{useSearchHistory as o}from"../../../hooks/use-search-history.mjs";import{trackSearchResultPageView as s}from"./tracking.mjs";import{SEARCH_RESULT_SORT_OPTIONS as c}from"./shared.mjs";import l from"./search-user.mjs";import u from"./search-video-info.mjs";import d from"./search-all.mjs";import{SearchTab as f}from"./search-tab.mjs";import p from"./top-header.mjs";import{useSearchParams as m}from"next/navigation";import{useEffect as h,useMemo as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";const x=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.user`,value:`user`}];function S(){r();let S=b(`components.pages.search.pageClient`),{userInfo:C}=n(),w=C?.user_id||`guest`,T=m().get(`q`)?.toString()||``,[E,D]=_(T),[O,k]=_(0);h(()=>{D(T),k(e=>e+1)},[T]);let[A,j]=_(x[0].value),[M,N]=_(c[0].value),[P,F]=_(0),{addHistory:I}=o({storageKey:w}),L=g(()=>x.map(e=>({value:e.value,label:S(e.labelKey)})),[S]),R=g(()=>E.trim()!==``,[E]);return h(()=>(t.on(a.EXCHANGE_SEARCH_TYPE,j),()=>{t.off(a.EXCHANGE_SEARCH_TYPE,j)}),[j]),h(()=>{E.trim()&&s(A,E)},[A,E]),y(i,{className:`flex h-dvh w-full flex-col`,children:[v(i,{className:`shrink-0`,children:v(p,{setSearchInputVal:t=>{t!==E&&(D(t),e({q:t}))},initInputVal:T,initInputVersion:O,addSearchHistory:I})}),v(i,{className:`
|
|
2
|
+
"use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{useRouter as r}from"../../../utils/use-compatible-router.mjs";import{Box as i}from"../../ui/box.mjs";import{eventKey as a}from"../../../constants/event-key.mjs";import{useSearchHistory as o}from"../../../hooks/use-search-history.mjs";import{trackSearchResultPageView as s}from"./tracking.mjs";import{SEARCH_RESULT_SORT_OPTIONS as c}from"./shared.mjs";import l from"./search-user.mjs";import u from"./search-video-info.mjs";import d from"./search-all.mjs";import{SearchTab as f}from"./search-tab.mjs";import p from"./top-header.mjs";import{useSearchParams as m}from"next/navigation";import{useEffect as h,useMemo as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";const x=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.user`,value:`user`}];function S(){r();let S=b(`components.pages.search.pageClient`),{userInfo:C}=n(),w=C?.user_id||`guest`,T=m().get(`q`)?.toString()||``,[E,D]=_(T),[O,k]=_(0);h(()=>{D(T),k(e=>e+1)},[T]);let[A,j]=_(x[0].value),[M,N]=_(c[0].value),[P,F]=_(0),{addHistory:I}=o({storageKey:w}),L=g(()=>x.map(e=>({value:e.value,label:S(e.labelKey)})),[S]),R=g(()=>E.trim()!==``,[E]);return h(()=>(t.on(a.EXCHANGE_SEARCH_TYPE,j),()=>{t.off(a.EXCHANGE_SEARCH_TYPE,j)}),[j]),h(()=>{E.trim()&&s(A,E)},[A,E]),y(i,{className:`flex h-dvh w-full flex-col`,children:[v(i,{className:`shrink-0`,children:v(p,{setSearchInputVal:t=>{t!==E&&(D(t),e({q:t}))},initInputVal:T,initInputVersion:O,addSearchHistory:I})}),v(i,{className:`min-h-0 flex-1 overflow-hidden rounded-t-[16px]`,children:R&&y(i,{className:`flex h-full flex-col bg-[linear-gradient(180deg,rgba(6,3,21,0.9)_0%,rgba(6,3,21,0)_100%)] backdrop-blur-[2px]`,children:[v(f,{searchType:A,tabList:L,onChange:e=>{j(e)},sort:M,onSortChange:e=>{N(e),F(e=>e+1)}}),y(`div`,{className:`min-h-0 flex-1 overflow-y-auto pb-[24px]`,children:[A===`user`&&v(l,{inputVal:E,sort:M,refreshVersion:P}),A===`all`&&v(d,{searchInputVal:E,sort:M,refreshVersion:P}),A===`video`&&v(u,{inputVal:E,sort:M,refreshVersion:P})]})]})})]})}export{S as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Box as e}from"../../ui/box.mjs";import{Popover as t,PopoverContent as n,PopoverTrigger as r}from"../../ui/popover.mjs";import{SEARCH_RESULT_SORT_OPTIONS as i}from"./shared.mjs";import{memo as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({className:e}){return c(`svg`,{viewBox:`0 0 22 15`,fill:`currentColor`,"aria-hidden":!0,className:e,children:[s(`rect`,{x:`0`,y:`0`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`6.5`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`13`,width:`13.5`,height:`2`,rx:`1`}),s(`path`,{d:`M15 1C15 0.447715 15.4477 0 16 0C16.5523 0 17 0.447715 17 1V11.2969L18.2412 9.84961C18.6006 9.43028 19.2311 9.38179 19.6504 9.74121C20.0697 10.1006 20.1182 10.7311 19.7588 11.1504L16.7588 14.6504C16.4865 14.9681 16.0458 15.0826 15.6533 14.9375C15.2608 14.7923 15 14.4185 15 14V1Z`})]})}const u=a(({searchType:a,onChange:u,tabList:d,sort:f,onSortChange:p})=>{let[m,h]=o(!1);return s(e,{as:`nav`,className:`safe-top-offset sticky z-40 no-vw-x-16 pb-[16px] pt-[
|
|
2
|
+
"use client";import{Box as e}from"../../ui/box.mjs";import{Popover as t,PopoverContent as n,PopoverTrigger as r}from"../../ui/popover.mjs";import{SEARCH_RESULT_SORT_OPTIONS as i}from"./shared.mjs";import{memo as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({className:e}){return c(`svg`,{viewBox:`0 0 22 15`,fill:`currentColor`,"aria-hidden":!0,className:e,children:[s(`rect`,{x:`0`,y:`0`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`6.5`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`13`,width:`13.5`,height:`2`,rx:`1`}),s(`path`,{d:`M15 1C15 0.447715 15.4477 0 16 0C16.5523 0 17 0.447715 17 1V11.2969L18.2412 9.84961C18.6006 9.43028 19.2311 9.38179 19.6504 9.74121C20.0697 10.1006 20.1182 10.7311 19.7588 11.1504L16.7588 14.6504C16.4865 14.9681 16.0458 15.0826 15.6533 14.9375C15.2608 14.7923 15 14.4185 15 14V1Z`})]})}const u=a(({searchType:a,onChange:u,tabList:d,sort:f,onSortChange:p})=>{let[m,h]=o(!1);return s(e,{as:`nav`,className:`safe-top-offset sticky z-40 no-vw-x-16 pb-[16px] pt-[24px]`,children:c(e,{className:`flex h-[24px] items-center justify-between`,children:[s(e,{className:`flex items-center gap-[10px]`,children:d.map(e=>s(`button`,{type:`button`,className:`text-[16px] leading-[24px] transition-colors ${a===e.value?`font-medium text-white`:`font-normal text-white/80`}`,onClick:()=>{a!==e.value&&u(e.value)},children:e.label},e.value))}),c(t,{open:m,onOpenChange:h,children:[s(r,{"aria-label":`排序筛选`,className:`flex size-[24px] items-center justify-center`,children:s(l,{className:`h-[15px] w-[20px] text-white/40`})}),s(n,{side:`bottom`,align:`end`,sideOffset:8,className:`w-[132px] border border-white/10 bg-[#10071E]/95 p-[8px] backdrop-blur-[18px]`,children:s(e,{className:`flex flex-col gap-[4px]`,children:i.map(e=>s(`button`,{type:`button`,className:`rounded-[8px] px-[12px] py-[8px] text-left text-[14px] leading-[20px] ${e.value===f?`bg-white/10 text-white`:`text-white/70`}`,onClick:()=>{p(e.value),h(!1)},children:e.label},e.value))})})]})]})})});u.displayName=`SearchTab`;export{u as SearchTab};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{LeftArrowIcon as a}from"../../common/icons/left-arrow.mjs";import{useSearchParams as o}from"next/navigation";import{memo as s,useCallback as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";const f=s(({setSearchInputVal:s,initInputVal:f,initInputVersion:p,addSearchHistory:m})=>{let h=d(`components.pages.search`),g=e(),[_,v]=i(`search-input-val`,``),y=o().get(`q`),b=e=>{v(e.target.value)},x=c(e=>{s(e),m(e)},[m,s]);r(()=>{f&&(v(f),x(f))},[x,f,p,v],`search-init-input-effect`),r(()=>{y&&(v(y),x(y))},[x,v,y],`search-url-params-effect`);function S(){if(n.dismiss(),window.location.search.split(`from_code=`)[1]){g.push(`/`);return}g.back()}return l(`div`,{className:`app-top-nav w-full`,children:u(`header`,{className:`flex h-[60px] items-center gap-[8px] no-vw-x-16 pb-[10px] pt-[16px]`,children:[l(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white`,onClick:S,children:l(a,{className:`h-[16px] w-[16px]`})}),l(`div`,{className:`relative h-[34px] min-w-0 flex-1`,children:
|
|
2
|
+
"use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{LeftArrowIcon as a}from"../../common/icons/left-arrow.mjs";import{useSearchParams as o}from"next/navigation";import{memo as s,useCallback as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";const f=s(({setSearchInputVal:s,initInputVal:f,initInputVersion:p,addSearchHistory:m})=>{let h=d(`components.pages.search`),g=e(),[_,v]=i(`search-input-val`,``),y=o().get(`q`),b=e=>{v(e.target.value)},x=c(e=>{s(e),m(e)},[m,s]);r(()=>{f&&(v(f),x(f))},[x,f,p,v],`search-init-input-effect`),r(()=>{y&&(v(y),x(y))},[x,v,y],`search-url-params-effect`);function S(){if(n.dismiss(),window.location.search.split(`from_code=`)[1]){g.push(`/`);return}g.back()}return l(`div`,{className:`app-top-nav w-full`,children:u(`header`,{className:`flex h-[60px] items-center gap-[8px] no-vw-x-16 pb-[10px] pt-[16px]`,children:[l(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white`,onClick:S,children:l(a,{className:`h-[16px] w-[16px]`})}),l(`div`,{className:`relative h-[34px] min-w-0 flex-1`,children:l(`div`,{className:`flex h-full min-w-0 flex-1 items-stretch overflow-hidden rounded-[100px] p-[1px]`,style:{background:`linear-gradient(90deg, rgba(230,42,255,0.9) 0%, rgba(239,255,69,0.5) 25%, rgba(233,69,255,0.8) 50%, rgba(233,69,255,0.9) 100%)`},children:u(`div`,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 items-center overflow-hidden rounded-[100px] bg-black backdrop-blur-[2px]`,children:[l(`div`,{className:`flex h-full min-w-0 flex-1 items-center pl-[20px] pr-[8px]`,children:l(t,{placeholder:h(`topHeader.placeholder`),maxLength:20,value:_,className:`!h-[24px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !py-0 !text-[14px] !leading-[24px] !text-white/90 placeholder:!text-white/90`,onChange:b,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!_.trim())return;x(_.trim())}}})}),l(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white`,onClick:()=>{_.trim()&&x(_.trim())},children:h(`topHeader.search`)})]})})})]})})});f.displayName=`SearchTopHeader`;export{f as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{cn as t}from"../../../utils/cn.mjs";import{
|
|
2
|
+
"use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{cn as t}from"../../../utils/cn.mjs";import{trackAppPageView as n}from"../../../utils/tracking.mjs";import{gContentGetAppChannels as r,gContentGetVideoDetail as i}from"../../../service/generated/client.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{EmptyState as o}from"../../ui/empty.mjs";import{buildVideoPlayerSrc as ee}from"../../common/video-player/process-m3u8-cache.mjs";import{notifyBridgeEpisodeChanged as te}from"../../../utils/login-modal-bridge.mjs";import{useRequest as s}from"../../../hooks/query/use-query.mjs";import{queryKey as c}from"../../../constants/query-key.mjs";import{useKeepAliveEffect as l,useKeepAliveState as u}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as d}from"../../../utils/api-collect.mjs";import ne from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{normalizeHomeRecommendRuntimeProps as re}from"../../biz/business/home-recommend/shared/home-recommend-runtime-props.mjs";import{VideoDetailMaterialRuntimeProvider as f}from"../../biz/business/detail/shared/runtime-context-provider.mjs";import{resolveMaterialProps as ie,videoDetailMaterials as ae}from"../../biz/business/detail/shared/registry.mjs";import{DetailHero as oe}from"../../biz/business/detail/shared/video-hero.mjs";import{useParams as p,useSearchParams as m}from"next/navigation";import{Fragment as h,useCallback as g,useEffect as _,useMemo as v,useRef as se}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import{useTranslations as S}from"next-intl";const C=[{id:`detail-info`,componentName:`video-detail-info`,props:{}},{id:`detail-info-title-tags-episodes`,componentName:`video-detail-info-title-tags-episodes`,props:{}},{id:`detail-actions`,componentName:`video-detail-actions`,props:{}},{id:`detail-recommend`,componentName:`video-detail-recommend`,props:{title:`猜你喜欢`,rows:2,columns:3,recommendContentConfig:{enabled:!1,categories:[],tags:[{name:`腐剧`}],sortRule:`popular`,contentForms:[]},showPlayCount:!0,playCountDelta:0,showEpisode:!0,enableInfinite:!1,items:[{contentId:`d6a35ba3279e6f0d`,contentName:`贺总的私宠罪妻`,titleMode:`custom`,title:`贺总的私宠罪妻`,description:`简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百`,coverMode:`upload`,coverUrl:`/truss/20260227/69a136457d10f.jpgxxx`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`b0f42fed731239a7`,contentName:`少年江湖物语`,titleMode:`custom`,title:`少年江湖物语`,description:`网剧《少年江湖物语》讲述了一个江湖中邪不压正,青春正好,有情有爱的温暖故事。剧中有魔教教主,有天下第一剑客,有身世成谜的江湖大夫,有忠心耿耿的小丫鬟,更有艳压秦淮的当红花魁,众多看似完全没有交集的人物纷纷亮相登场,搅乱江湖一池春水。`,coverMode:`content`,coverUrl:`/md-204/uploads/default/other/2024-08-26/14664d2c31e61c201a29cd4abba267c5.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`c2304e94ec0ba208`,contentName:`王的男人`,titleMode:`custom`,title:`王的男人`,description:`朝鲜第十代王燕山王君时期,艺人长生(甘宇成饰)和孔吉(李俊基饰)因为不肯加入当地的艺人团,来到京城汉阳谋生。此时暴君燕山君(郑镇荣饰)沉迷于宠妾张绿水(姜成妍饰),朝纲混乱,民不聊生。长生与孔吉二人在街头开始表演讽刺君主的喜剧,大受欢迎,却遭逮捕。后要求到王面前表演,求得一笑。结果,多亏孔吉的急中生智,燕山君才笑了出来。两人随即被留在宫中取乐,孔吉更是因为美色令王倍加宠爱。他们不停表演,大臣们却各自心怀鬼胎,导致了杀戮局面。最终,君王和艺人的命运又将如何呢?`,coverMode:`content`,coverUrl:`/md-204/resource/8c/8cb28f46831558fbeb2f34b2076c3b4e.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`c7ffc6a558ae8683`,contentName:`怒`,titleMode:`custom`,title:`怒`,description:`炎炎夏日,东京八王子郊外社区,一对夫妇惨遭杀害。事后凶手用血在墙上写下大大的“怒”字,随后逃亡,销声匿迹长达一年之久。而在此期间,三个身份不明的男子和身边的人相遇了。曾自甘堕落的爱子(宫崎葵饰)被父亲(渡边谦饰)领回海滨小镇,邂逅了不善言辞的哲也(松山研一饰)。在东京工作的同性恋优马(妻夫木聪饰)将柔情似水的直人(绫野刚饰)带回了家,他不相信对方,却又尝试去相信。随母亲搬到冲绳的小泉(广濑铃饰)跟着同学辰哉(佐久本宝饰)登上一座荒岛,在废墟中遇到了背包客田中(森山未来饰),他们短暂成为朋友,而可怕的命运突然降临泉的头上。不久之后,通缉令遍布全国,三个男子的真实身份引人生疑……本片根据吉田修一的同名原作改编。`,coverMode:`content`,coverUrl:`/md-204/resource/24/24ef267eef2c35b5e4cf12dac8b55c14.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`98217427ed96ec51`,contentName:`熔炉`,titleMode:`custom`,title:`熔炉`,description:`来自首尔的哑语美术老师仁浩(孔宥饰)来到雾津,应聘慈爱聋哑人学校。天降大雾,他意外撞车,维修时邂逅了人权组织成员柔珍(郑有美饰)。仁浩妻子早亡,8岁女儿天生哮喘由祖母照看,所以他不辞辛苦谋职养家。然而,双胞胎的校长与教导主任竟逼仁浩索贿5千万韩元。同时,仁浩逐渐发现学校笼罩着一种紧张压抑的气氛,令人窒息。有三个孩子引人关注:聪颖的金妍斗(金贤秀饰)、贪吃的陈宥利(郑仁絮饰)和弟弟自杀身亡的全民秀(白承焕饰),民秀总是满脸淤青。下课后,仁浩还听到女厕所中有呼喊与哭泣,在门卫的阻拦下他未深究。之后。他意外目睹了校长行贿警察,教导员毒打民秀,宿导溺罚妍斗的行径。一个惊天的隐秘被慢慢揭开,真相令韩国震惊……本片取材于2005年光州一所聋哑障碍人学校的真实事件,改编自韩国作家孔枝泳的同名小说。`,coverMode:`content`,coverUrl:`/md-204/resource/b4/b410ccdcd86936455b9460a9152aaa47.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`caa2b4eb4eb40de0`,contentName:`再次来寻我`,titleMode:`custom`,title:`再次来寻我`,description:`在宇回到曾经与初恋志勋相遇的303号房,这里即将被拆迁,他在房间里回忆和志勋的点点滴滴,突然被书桌上的电话所吸引,一拿起话筒听到的竟是志勋的声音!在房子主人的同意下,在宇带着电话离开了303室,在回家的途中他发现自己像走在一个陌生的地方,而对面走来的竟是已消失已久的志勋…`,coverMode:`content`,coverUrl:`/md-204/resource/2b/2b43375f2248c1a012847d4507fd21a3.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0}]}}];function ce(e,t){let n=String(e||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);return r<0?!1:n[r+1]===t}function w({detailId:d,initialInformation:w,isWebView:T=!1,materialConfig:E}){let D=S(`components.pages.videoDetail`),O=a(),k=p(),le=m(),A=se(!1),j=k.level,M=Array.isArray(j)?j:typeof j==`string`?[j]:[],N=M.findIndex(e=>e===`episode`),ue=N>=0?M[N+1]:M[2],P=Math.max(1,Number(ue)||1),[F,I]=u(`detail-current-series-num-${d}`,P);_(()=>{I(P)},[P,I]);let L=Math.max(1,Number(F)||1),R=Math.max(0,L-1),{data:z,isPending:B,isFetching:V,isError:H,isSuccess:de}=s(v(()=>[`video-detail`,d],[d]),async()=>d?await i({id:d}):null,{enabled:!!d}),U=v(()=>{let e=z?.data?.video;return!e||typeof e!=`object`?null:{...e,content_type:1,episode_cnt:e.links?.length||0}},[z?.data?.video]),fe=w??U??null,[W,G]=u(`detail-information-${d}`,fe);_(()=>{!W?.id||A.current||(A.current=!0,n({page_key:`page_video_detail`,page_name:`详情页`}))},[W?.id]);let pe=W?.links?.[R]?.id||``,K=!!d&&!W&&(B||V),q=!d||!!W||H||de,[me,he]=u(`info-detail-active-tab-${d}`,`video`),[J,Y]=u(`info-detail-comment-add-count-${d}`,0),[X,ge]=u(`info-detail-comment-total-${d}`,void 0);_(()=>{!W&&U&&G(U)},[W,U,G]);let Z=g(e=>{G(t=>t&&{...t,...e})},[G]);l(()=>{W?.id&&W.id},[W?.id],`detail-page-report-${d}`),_(()=>{!W||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:W.id||d,author_id:W.up_user,object_type:W.content_type,object_category:W.content_type,object_tags:W.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[d,W]),_(()=>{Y(0)},[pe,Y]),v(()=>(typeof X==`number`?X:0)+J,[J,X]);let _e=g(()=>{},[!1,he]);g(()=>{Y(e=>e+1)},[Y]),_(()=>{},[!1,_e,W?.id,le]);let Q=g(e=>{let t=Math.max(1,Math.floor(Number(e)||1));if(typeof window>`u`)return;let n=String(W?.id||d||``).trim();if(!n)return;let r=T||window.isWebView===!0,i=`/${r?`webview`:`video`}/${n}/${encodeURIComponent(W?.name||``)}/episode/${t}`,{search:a,hash:o,pathname:s}=window.location,c=`${i}${a}${o}`,l=`${s}${a}${o}`,u=ce(s,n);if(l!==c){if(r){let e=W?.links?.[Math.max(0,t-1)],r=ee(String(e?.m3u8_url||e?.preview_m3u8_url||``).trim());te({poster:String(W?.img_y||W?.img_x||W?.preview_images?.[0]||``).trim(),src:r,title:String(W?.title||W?.name||``).trim(),contentId:n,episode:t}),L!==t&&I(t);return}u&&typeof window.history?.replaceState==`function`?(window.history.replaceState(window.history.state,``,c),I(t)):O.replace(c,{scroll:!1});return}L!==t&&I(t)},[L,d,W?.id,W?.img_x,W?.img_y,W?.links,W?.name,W?.preview_images,W?.title,T,O,I]);_(()=>{let e=Array.isArray(W?.links)?W.links.length:0;e<=0||L<=e||Q(1)},[L,Q,W?.links]);let $=W?.status===`1`,{data:ve}=s([c.CHANNEL],()=>r()),ye=e(ve?.data),be=v(()=>{if(E!==void 0){let e=new Map(C.map(e=>[e.componentName,e]));return E.map(t=>{let n=e.get(t.componentName);return{...n,...t,props:{...n?.props??{},...t.props??{}}}})}return C},[E]),xe=v(()=>({information:W??void 0,currentSeriesNum:L,onEpisodeChange:Q,onUpdateInformation:Z,detailId:d,episodeIndex:R,isShow:!0,isWebView:T,isInformationLoading:K,isInformationResolved:q}),[L,d,R,Q,Z,W,K,q,T,!0]),Se=g(e=>{if(!W)return null;let t=ae[e.componentName];if(!t)return null;let n=t.clientComponent,r=ie(t,e.props);return r.isValid?b(n,{...e.componentName===`video-detail-recommend`?re(r.props):r.props}):b(`div`,{children:`组件配置错误`})},[W]);return x(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 ${T?``:`pt-11`}`,children:[!T&&b(`div`,{className:`fixed bg-black top-0 left-0 right-0 z-[1000]`,children:b(ne,{data:{list:ye}})}),b(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:x(y,{children:[W&&!$&&b(o,{type:`no-content`,text:D(`videoDetailClient.videoUnavailable`)}),W&&$&&x(y,{children:[!T&&b(oe,{isVideo:!0,information:W,episodeIndex:R}),b(`div`,{id:`selectPopupPosition`,className:`w-full`}),!1,x(`div`,{className:t(`w-full`,!1),children:[b(f,{value:xe,children:be.map(e=>b(h,{children:Se(e)},e.id))}),!1]}),!1]}),!W&&b(o,{type:`no-content`,text:D(`videoDetailClient.videoDeleted`)})]})})]})}export{w as default};
|
|
@@ -8,7 +8,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
|
|
|
8
8
|
/** buttonVariants 工具定义。 */
|
|
9
9
|
declare const buttonVariants: (props?: ({
|
|
10
10
|
variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
11
|
-
size?: "
|
|
11
|
+
size?: "icon" | "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
13
13
|
/** Button 组件属性。 */
|
|
14
14
|
type ButtonProps = Button.Props & VariantProps<typeof buttonVariants> & {
|
|
@@ -34,7 +34,7 @@ type EmptyStateProps = React.ComponentProps<'div'> & {
|
|
|
34
34
|
};
|
|
35
35
|
/** emptyMediaVariants 工具定义。 */
|
|
36
36
|
declare const emptyMediaVariants: (props?: ({
|
|
37
|
-
variant?: "
|
|
37
|
+
variant?: "icon" | "default" | null | undefined;
|
|
38
38
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
39
39
|
/** EmptyMedia 组件。 */
|
|
40
40
|
declare function EmptyMedia({
|
|
@@ -82,7 +82,7 @@ declare function Item({
|
|
|
82
82
|
}: ItemProps): React.ReactElement;
|
|
83
83
|
/** itemMediaVariants 工具定义。 */
|
|
84
84
|
declare const itemMediaVariants: (props?: ({
|
|
85
|
-
variant?: "
|
|
85
|
+
variant?: "icon" | "default" | "image" | null | undefined;
|
|
86
86
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
87
87
|
/** ItemMedia 组件。 */
|
|
88
88
|
declare function ItemMedia({
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{generateDynamicSign as e,getCookie as t,isClient as n,removeCookie as r,setCookie as i}from"../../utils/common.mjs";import{getOrCreateBrowserFingerprint as a}from"../../utils/browser-fingerprint.mjs";import{createStore as o}from"../create-store.mjs";import{
|
|
2
|
+
import{generateDynamicSign as e,getCookie as t,isClient as n,removeCookie as r,setCookie as i}from"../../utils/common.mjs";import{getOrCreateBrowserFingerprint as a}from"../../utils/browser-fingerprint.mjs";import{createStore as o}from"../create-store.mjs";import{trackGuestAccountCreated as s}from"../../utils/tracking.mjs";import{useFollowIdsState as c}from"./follow-ids-store.mjs";import{usePublishStore as l}from"./publish-store.mjs";import{gUserGetGuestIdentity as u}from"../../service/generated/client.mjs";const d={userStore:`user-store`,publishStore:`publish-store`},f={userInfo:{},isLogin:!1,token:``,expireTime:0,userId:``};let p=null;function m(){c.setState({followIds:[]}),l.getState().init()}function h(){try{r(`token`),r(`userId`),r(`guestUserId`)}catch(e){console.warn(`clear auth cookie failed`,e)}try{localStorage.removeItem(d.userStore),localStorage.removeItem(d.publishStore)}catch(e){console.warn(`clear local storage failed`,e)}}const g=o(e=>({...f,setUserInfo:t=>{e({userInfo:t})},setUserId:t=>{n()&&i(`userId`,t),e({userId:t})},setIsLogin:t=>{e({isLogin:t})},setToken:t=>{n()&&(i(`token`,t),i(`guestUserId`,``)),e({token:t})},setExpireTime:t=>{e({expireTime:t})},updateUserInfo:t=>{e(e=>({userInfo:{...e.userInfo,...t}}))},logout:()=>{m(),e({...f}),n()&&h()},clearUserInfo:()=>{e({userInfo:f.userInfo})}}),{name:`user-store`,persist:!0,partialize:e=>({userInfo:e.userInfo,isLogin:e.isLogin,token:e.token,expireTime:e.expireTime,userId:e.userId})});async function _(e=!1){let n=await t(`userId`);if(n&&!e)return n;let r=await t(`guestUserId`);return r&&!e?r:((!p||e)&&(p=v(e).finally(()=>{p=null})),await p)}async function v(t){try{let n=await a(t),r=await u({finger_id:n,sign:e(n)}),o=String(r.data?.user_id??``).trim();return r.data?.first_create_uid&&s({event_time:Math.floor(Date.now()/1e3)}),o&&i(`guestUserId`,o),o}catch(e){return console.warn(`ensure guest identity failed`,e),``}}const y={getUserInfo:()=>g.getState().userInfo,getIsLogin:()=>g.getState().isLogin,getToken:()=>g.getState().token,getExpireTime:()=>g.getState().expireTime,getUserId:()=>g.getState().userId};export{_ as ensureGuestIdentity,g as useUserStore,y as userSelectors};
|
package/dist/types.d.mts
CHANGED
|
@@ -219,5 +219,24 @@ interface PageLifecyclePayload {
|
|
|
219
219
|
* @param payload 页面生命周期 payload。
|
|
220
220
|
*/
|
|
221
221
|
declare function trackPageLifecycle(payload: PageLifecyclePayload): void;
|
|
222
|
+
/**
|
|
223
|
+
* guest_account_created / guest_account_bind 事件公共字段。
|
|
224
|
+
*/
|
|
225
|
+
interface GuestAccountPayload {
|
|
226
|
+
/** 事件上报时间(10 位 Unix 时间戳,单位秒)。 */
|
|
227
|
+
event_time: number;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* 游客账号创建上报(guest_account_created)。
|
|
231
|
+
* 只上报神策,不上报 WebSDK。
|
|
232
|
+
* @param payload 游客账号创建 payload。
|
|
233
|
+
*/
|
|
234
|
+
declare function trackGuestAccountCreated(payload: GuestAccountPayload): void;
|
|
235
|
+
/**
|
|
236
|
+
* 游客账号绑定上报(guest_account_bind)。
|
|
237
|
+
* 只上报神策,不上报 WebSDK。
|
|
238
|
+
* @param payload 游客账号绑定 payload。
|
|
239
|
+
*/
|
|
240
|
+
declare function trackGuestAccountBind(payload: GuestAccountPayload): void;
|
|
222
241
|
//#endregion
|
|
223
|
-
export { AdClickPayload, AdImpressionPayload, AdvertisingPayload, AppPageViewPayload, ClickPosition, KeywordClickPayload, NavigationPayload, PageLifecyclePayload, RecommendListClickPayload, VideoEventPayload, trackAdClick, trackAdImpression, trackAdvertising, trackAppPageView, trackKeywordClick, trackNavigation, trackPageClick, trackPageLifecycle, trackRecommendListClick, trackVideoEvent };
|
|
242
|
+
export { AdClickPayload, AdImpressionPayload, AdvertisingPayload, AppPageViewPayload, ClickPosition, GuestAccountPayload, KeywordClickPayload, NavigationPayload, PageLifecyclePayload, RecommendListClickPayload, VideoEventPayload, trackAdClick, trackAdImpression, trackAdvertising, trackAppPageView, trackGuestAccountBind, trackGuestAccountCreated, trackKeywordClick, trackNavigation, trackPageClick, trackPageLifecycle, trackRecommendListClick, trackVideoEvent };
|
package/dist/utils/tracking.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";function e(e,t,n,r,i){if(typeof window>`u`)return;let a=n?.pageX??0,o=n?.pageY??0,s=window.innerWidth||1,c=window.innerHeight||1,l={page_key:e,page_name:t,element_name:r,click_page_x:Math.round(a),click_page_y:Math.round(o),click_x_percent:Math.round(a/s*100),click_y_percent:Math.round(o/c*100),screen_width:window.screen.width,screen_height:window.screen.height,recommend_trace_id:``,...i};window.WebSDK?.track?.({event:`page_click`,payload:l}),window.sensors?.track?.(`page_click`,l)}function t(e){if(typeof window>`u`)return;let t={recommend_trace_id:``,recommend_id:``,recommend_trace_info:``,...e};window.WebSDK?.track?.({event:`recommend_list_click`,payload:t}),window.sensors?.track?.(`recommend_list_click`,t)}const n=new Set;function r(e){if(typeof window>`u`)return;let t=e.ad_id.split(`,`).map(e=>e.trim()).filter(Boolean),r=(e.creative_id??``).split(`,`).map(e=>e.trim()),i=t.reduce((t,r,i)=>(n.has(`${e.ad_slot_key}::${r}`)||t.push(i),t),[]);if(i.length===0)return;for(let r of i)n.add(`${e.ad_slot_key}::${t[r]}`);let a={...e,ad_id:i.map(e=>t[e]).join(`,`),creative_id:i.map(e=>r[e]??``).join(`,`)};window.WebSDK?.track?.({event:`ad_impression`,payload:a}),window.sensors?.track?.(`ad_impression`,a)}function i(e){typeof window>`u`||(window.WebSDK?.track?.({event:`advertising`,payload:e}),window.sensors?.track?.(`advertising`,e))}function a(e){typeof window>`u`||(window.WebSDK?.track?.({event:`navigation`,payload:e}),window.sensors?.track?.(`navigation`,e))}function o(e){typeof window>`u`||(window.WebSDK?.track?.({event:`video_event`,payload:e}),window.sensors?.track?.(`video_event`,e))}function s(e){typeof window>`u`||(window.WebSDK?.track?.({event:`keyword_click`,payload:e}),window.sensors?.track?.(`keyword_click`,e))}function c(e){if(typeof window>`u`)return;let t={creative_id:``,...e};window.WebSDK?.track?.({event:`ad_click`,payload:t}),window.sensors?.track?.(`ad_click`,t)}function l(e){if(typeof window>`u`)return;let t={user_type:`normal`,referrer_page_key:``,referrer_page_name:``,page_load_time:0,recommend_trace_id:``,...e};window.WebSDK?.track?.({event:`app_page_view`,payload:t}),window.sensors?.track?.(`app_page_view`,t)}function u(e){typeof window>`u`||(window.WebSDK?.track?.({event:`page_lifecycle`,payload:e}),window.sensors?.track?.(`page_lifecycle`,e))}export{c as trackAdClick,r as trackAdImpression,i as trackAdvertising,l as trackAppPageView,s as trackKeywordClick,a as trackNavigation,e as trackPageClick,u as trackPageLifecycle,t as trackRecommendListClick,o as trackVideoEvent};
|
|
2
|
+
"use client";function e(e,t,n,r,i){if(typeof window>`u`)return;let a=n?.pageX??0,o=n?.pageY??0,s=window.innerWidth||1,c=window.innerHeight||1,l={page_key:e,page_name:t,element_name:r,click_page_x:Math.round(a),click_page_y:Math.round(o),click_x_percent:Math.round(a/s*100),click_y_percent:Math.round(o/c*100),screen_width:window.screen.width,screen_height:window.screen.height,recommend_trace_id:``,...i};window.WebSDK?.track?.({event:`page_click`,payload:l}),window.sensors?.track?.(`page_click`,l)}function t(e){if(typeof window>`u`)return;let t={recommend_trace_id:``,recommend_id:``,recommend_trace_info:``,...e};window.WebSDK?.track?.({event:`recommend_list_click`,payload:t}),window.sensors?.track?.(`recommend_list_click`,t)}const n=new Set;function r(e){if(typeof window>`u`)return;let t=e.ad_id.split(`,`).map(e=>e.trim()).filter(Boolean),r=(e.creative_id??``).split(`,`).map(e=>e.trim()),i=t.reduce((t,r,i)=>(n.has(`${e.ad_slot_key}::${r}`)||t.push(i),t),[]);if(i.length===0)return;for(let r of i)n.add(`${e.ad_slot_key}::${t[r]}`);let a={...e,ad_id:i.map(e=>t[e]).join(`,`),creative_id:i.map(e=>r[e]??``).join(`,`)};window.WebSDK?.track?.({event:`ad_impression`,payload:a}),window.sensors?.track?.(`ad_impression`,a)}function i(e){typeof window>`u`||(window.WebSDK?.track?.({event:`advertising`,payload:e}),window.sensors?.track?.(`advertising`,e))}function a(e){typeof window>`u`||(window.WebSDK?.track?.({event:`navigation`,payload:e}),window.sensors?.track?.(`navigation`,e))}function o(e){typeof window>`u`||(window.WebSDK?.track?.({event:`video_event`,payload:e}),window.sensors?.track?.(`video_event`,e))}function s(e){typeof window>`u`||(window.WebSDK?.track?.({event:`keyword_click`,payload:e}),window.sensors?.track?.(`keyword_click`,e))}function c(e){if(typeof window>`u`)return;let t={creative_id:``,...e};window.WebSDK?.track?.({event:`ad_click`,payload:t}),window.sensors?.track?.(`ad_click`,t)}function l(e){if(typeof window>`u`)return;let t={user_type:`normal`,referrer_page_key:``,referrer_page_name:``,page_load_time:0,recommend_trace_id:``,...e};window.WebSDK?.track?.({event:`app_page_view`,payload:t}),window.sensors?.track?.(`app_page_view`,t)}function u(e){typeof window>`u`||(window.WebSDK?.track?.({event:`page_lifecycle`,payload:e}),window.sensors?.track?.(`page_lifecycle`,e))}function d(e){typeof window>`u`||window.sensors?.track?.(`guest_account_created`,e)}function f(e){typeof window>`u`||window.sensors?.track?.(`guest_account_bind`,e)}export{c as trackAdClick,r as trackAdImpression,i as trackAdvertising,l as trackAppPageView,f as trackGuestAccountBind,d as trackGuestAccountCreated,s as trackKeywordClick,a as trackNavigation,e as trackPageClick,u as trackPageLifecycle,t as trackRecommendListClick,o as trackVideoEvent};
|
package/dist/utils.d.mts
CHANGED
|
@@ -21,8 +21,8 @@ import { createInputAndSelectFile, getCoverImage, getImageResolutionFromFile } f
|
|
|
21
21
|
import { PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasswordValidationResult, PasswordValidationType, getFirstInvalidPasswordChar, getPasswordCharacterTypeCount, getPasswordValidationErrorText, validatePasswordPair } from "./utils/password-validator.mjs";
|
|
22
22
|
import { resolveRequestUserId } from "./utils/request-user-id.mjs";
|
|
23
23
|
import { PresignedUploadInfo, UploadToS3Options, UploadToS3Result, uploadToS3WithPresignedUrl } from "./utils/s3-uploader.mjs";
|
|
24
|
-
import { AdClickPayload, AdImpressionPayload, AdvertisingPayload, AppPageViewPayload, ClickPosition, KeywordClickPayload, NavigationPayload, PageLifecyclePayload, RecommendListClickPayload, VideoEventPayload, trackAdClick, trackAdImpression, trackAdvertising, trackAppPageView, trackKeywordClick, trackNavigation, trackPageClick, trackPageLifecycle, trackRecommendListClick, trackVideoEvent } from "./utils/tracking.mjs";
|
|
24
|
+
import { AdClickPayload, AdImpressionPayload, AdvertisingPayload, AppPageViewPayload, ClickPosition, GuestAccountPayload, KeywordClickPayload, NavigationPayload, PageLifecyclePayload, RecommendListClickPayload, VideoEventPayload, trackAdClick, trackAdImpression, trackAdvertising, trackAppPageView, trackGuestAccountBind, trackGuestAccountCreated, trackKeywordClick, trackNavigation, trackPageClick, trackPageLifecycle, trackRecommendListClick, trackVideoEvent } from "./utils/tracking.mjs";
|
|
25
25
|
import { base64ToUint8Array, uint8ArrayToBase64, uint8ArrayToNumberArray } from "./utils/uint8.mjs";
|
|
26
26
|
import { UploadFileResult, encryptBncBuffer, uploadFile } from "./utils/upload-file.mjs";
|
|
27
27
|
import { CompatibleRouter, useRouter } from "./utils/use-compatible-router.mjs";
|
|
28
|
-
export { AdClickPayload, AdImpressionPayload, AdvertisingPayload, AppPageViewPayload, ClickPosition, CompatibleRouter, ComponentPropsSchemaBuilderHelpers, DefineMaterialOption, eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, KeywordClickPayload, MaterialCategory, MaterialComponentMode, MaterialComponentProps, MaterialMap, NavigationPayload, OverwriteMaterialOption, PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PageLifecyclePayload, PasswordValidationResult, PasswordValidationType, PresignedUploadInfo, RecommendListClickPayload, RequestConfig, RequestMethod, ResponseData, SchemaHasDefaultValue, UploadFileResult, UploadToS3Options, UploadToS3Result, VideoEventPayload, array, base64ToUint8Array, boolean, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, datetime, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, defineComponentPropsSchema, defineMaterial, disablePageScroll, enablePageScroll, encryptBncBuffer, enumSchema as enum, enumSchema, followUser, formatCompactCount, formatVideoDuration, generateDynamicSign, generateMaterialMap, generateMaterialMapGroupByCategory, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getFirstInvalidPasswordChar, getImageCompressionQuality, getImageResolutionFromFile, getOrCreateBrowserFingerprint, getOrCreateDeviceId, getPasswordCharacterTypeCount, getPasswordValidationErrorText, getResUrl, getSchemaDefaultProps, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, isValidEmail, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, number, object, overwriteMaterial, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, resolveImageUrl, resolveRequestUserId, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, shouldProbeImageUrl, shouldUseApiResDirectly, string, stringToNumber, stripHtmlTags, timeRange, trackAdClick, trackAdImpression, trackAdvertising, trackAppPageView, trackKeywordClick, trackNavigation, trackPageClick, trackPageLifecycle, trackRecommendListClick, trackVideoEvent, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, useRouter, validatePasswordPair, withInspectorMeta };
|
|
28
|
+
export { AdClickPayload, AdImpressionPayload, AdvertisingPayload, AppPageViewPayload, ClickPosition, CompatibleRouter, ComponentPropsSchemaBuilderHelpers, DefineMaterialOption, eventBus as EventBus, GuestAccountPayload, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, KeywordClickPayload, MaterialCategory, MaterialComponentMode, MaterialComponentProps, MaterialMap, NavigationPayload, OverwriteMaterialOption, PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PageLifecyclePayload, PasswordValidationResult, PasswordValidationType, PresignedUploadInfo, RecommendListClickPayload, RequestConfig, RequestMethod, ResponseData, SchemaHasDefaultValue, UploadFileResult, UploadToS3Options, UploadToS3Result, VideoEventPayload, array, base64ToUint8Array, boolean, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, datetime, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, defineComponentPropsSchema, defineMaterial, disablePageScroll, enablePageScroll, encryptBncBuffer, enumSchema as enum, enumSchema, followUser, formatCompactCount, formatVideoDuration, generateDynamicSign, generateMaterialMap, generateMaterialMapGroupByCategory, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getFirstInvalidPasswordChar, getImageCompressionQuality, getImageResolutionFromFile, getOrCreateBrowserFingerprint, getOrCreateDeviceId, getPasswordCharacterTypeCount, getPasswordValidationErrorText, getResUrl, getSchemaDefaultProps, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, isValidEmail, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, number, object, overwriteMaterial, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, resolveImageUrl, resolveRequestUserId, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, shouldProbeImageUrl, shouldUseApiResDirectly, string, stringToNumber, stripHtmlTags, timeRange, trackAdClick, trackAdImpression, trackAdvertising, trackAppPageView, trackGuestAccountBind, trackGuestAccountCreated, trackKeywordClick, trackNavigation, trackPageClick, trackPageLifecycle, trackRecommendListClick, trackVideoEvent, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, useRouter, validatePasswordPair, withInspectorMeta };
|
package/dist/utils.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{debounceFun as ee,formatCompactCount as te,formatVideoDuration as ne,generateDynamicSign as e,generateUUID as t,getAtUserElement as n,getCookie as r,getCurrentSecondTime as i,getUserId as a,hashPassword as o,isClient as s,isMobileDevice as c,numToString as l,parseResolution as u,parseTextAtUserIds as d,randomString as f,removeCookie as p,replaceAtUserElement as m,replaceAtUserElementHtmlStr as h,secondToTime as g,setCookie as _,stringToNumber as v,stripHtmlTags as y,updateUrlParams as b}from"./utils/common.mjs";import{getOrCreateBrowserFingerprint as x}from"./utils/browser-fingerprint.mjs";import{clearMyChannelsFromStorage as S,loadHiddenChannelIdsFromStorage as C,loadMyChannelsFromStorage as w,saveHiddenChannelIdsToStorage as T}from"./utils/channel-storage.mjs";import{cn as E}from"./utils/cn.mjs";import D from"./utils/get-res-url.mjs";import{decryptImageToArrayBuffer as O,decryptImageToUint8Array as k,decryptImageUrl as A,guessImageContentTypeFromUrl as j,isEncryptedImageUrl as M,resolveImageUrl as N,shouldProbeImageUrl as P,shouldUseApiResDirectly as F}from"./utils/decrypt-image-client.mjs";import{getOrCreateDeviceId as I}from"./utils/device-id.mjs";import{isValidEmail as L}from"./utils/email-validator.mjs";import R from"./utils/event-bus.mjs";import{
|
|
2
|
+
import{debounceFun as ee,formatCompactCount as te,formatVideoDuration as ne,generateDynamicSign as e,generateUUID as t,getAtUserElement as n,getCookie as r,getCurrentSecondTime as i,getUserId as a,hashPassword as o,isClient as s,isMobileDevice as c,numToString as l,parseResolution as u,parseTextAtUserIds as d,randomString as f,removeCookie as p,replaceAtUserElement as m,replaceAtUserElementHtmlStr as h,secondToTime as g,setCookie as _,stringToNumber as v,stripHtmlTags as y,updateUrlParams as b}from"./utils/common.mjs";import{getOrCreateBrowserFingerprint as x}from"./utils/browser-fingerprint.mjs";import{clearMyChannelsFromStorage as S,loadHiddenChannelIdsFromStorage as C,loadMyChannelsFromStorage as w,saveHiddenChannelIdsToStorage as T}from"./utils/channel-storage.mjs";import{cn as E}from"./utils/cn.mjs";import D from"./utils/get-res-url.mjs";import{decryptImageToArrayBuffer as O,decryptImageToUint8Array as k,decryptImageUrl as A,guessImageContentTypeFromUrl as j,isEncryptedImageUrl as M,resolveImageUrl as N,shouldProbeImageUrl as P,shouldUseApiResDirectly as F}from"./utils/decrypt-image-client.mjs";import{getOrCreateDeviceId as I}from"./utils/device-id.mjs";import{isValidEmail as L}from"./utils/email-validator.mjs";import R from"./utils/event-bus.mjs";import{trackAdClick as z,trackAdImpression as B,trackAdvertising as V,trackAppPageView as H,trackGuestAccountBind as U,trackGuestAccountCreated as W,trackKeywordClick as G,trackNavigation as K,trackPageClick as q,trackPageLifecycle as J,trackRecommendListClick as Y,trackVideoEvent as X}from"./utils/tracking.mjs";import{resolveRequestUserId as Z}from"./utils/request-user-id.mjs";import re,{HttpClient as Q,HttpError as ie}from"./utils/http.mjs";import{checkFollowStatus as ae,followUser as oe,getAppId as se,getCurrentUserId as ce,unfollowUser as le}from"./utils/follow-service.mjs";import{disablePageScroll as ue,enablePageScroll as de,normalizeClassName as fe,pxToVw as pe}from"./utils/helper.mjs";import{compressImage as me,defaultImageCompressionMaxSizeMB as he,defaultImageCompressionQuality as ge,getImageCompressionQuality as _e,imageCompressionQualityRules as ve}from"./utils/image-compression.mjs";import{components as ye,loadComponent as be,rewriteComponent as xe}from"./utils/loaders.mjs";import{createInputAndSelectFile as Se,getCoverImage as Ce,getImageResolutionFromFile as we}from"./utils/media.mjs";import{PASSWORD_ALLOWED_SPECIAL_CHARS as Te,PASSWORD_MAX_LENGTH as Ee,PASSWORD_MIN_LENGTH as De,getFirstInvalidPasswordChar as Oe,getPasswordCharacterTypeCount as ke,getPasswordValidationErrorText as Ae,validatePasswordPair as je}from"./utils/password-validator.mjs";import{uploadToS3WithPresignedUrl as Me}from"./utils/s3-uploader.mjs";import{defineMaterial as Ne,overwriteMaterial as Pe}from"./utils/schema/material.mjs";import{INSPECTOR_META_KEY as Fe,array as Ie,boolean as Le,datetime as Re,defineComponentPropsSchema as ze,enumSchema as $,getSchemaDefaultProps as Be,number as Ve,object as He,string as Ue,timeRange as We,withInspectorMeta as Ge}from"./utils/schema/schema.mjs";import{generateMaterialMap as Ke,generateMaterialMapGroupByCategory as qe}from"./utils/schema/utils.mjs";import{base64ToUint8Array as Je,uint8ArrayToBase64 as Ye,uint8ArrayToNumberArray as Xe}from"./utils/uint8.mjs";import{encryptBncBuffer as Ze,uploadFile as Qe}from"./utils/upload-file.mjs";import{useRouter as $e}from"./utils/use-compatible-router.mjs";export{R as EventBus,Q as HttpClient,ie as HttpError,Fe as INSPECTOR_META_KEY,Te as PASSWORD_ALLOWED_SPECIAL_CHARS,Ee as PASSWORD_MAX_LENGTH,De as PASSWORD_MIN_LENGTH,Ie as array,Je as base64ToUint8Array,Le as boolean,ae as checkFollowStatus,S as clearMyChannelsFromStorage,E as cn,ye as components,me as compressImage,Se as createInputAndSelectFile,Re as datetime,ee as debounceFun,O as decryptImageToArrayBuffer,k as decryptImageToUint8Array,A as decryptImageUrl,he as defaultImageCompressionMaxSizeMB,ge as defaultImageCompressionQuality,ze as defineComponentPropsSchema,Ne as defineMaterial,ue as disablePageScroll,de as enablePageScroll,Ze as encryptBncBuffer,$ as enum,$ as enumSchema,oe as followUser,te as formatCompactCount,ne as formatVideoDuration,e as generateDynamicSign,Ke as generateMaterialMap,qe as generateMaterialMapGroupByCategory,t as generateUUID,se as getAppId,n as getAtUserElement,r as getCookie,Ce as getCoverImage,i as getCurrentSecondTime,ce as getCurrentUserId,Oe as getFirstInvalidPasswordChar,_e as getImageCompressionQuality,we as getImageResolutionFromFile,x as getOrCreateBrowserFingerprint,I as getOrCreateDeviceId,ke as getPasswordCharacterTypeCount,Ae as getPasswordValidationErrorText,D as getResUrl,Be as getSchemaDefaultProps,a as getUserId,j as guessImageContentTypeFromUrl,o as hashPassword,re as httpClient,ve as imageCompressionQualityRules,s as isClient,M as isEncryptedImageUrl,c as isMobileDevice,L as isValidEmail,be as loadComponent,C as loadHiddenChannelIdsFromStorage,w as loadMyChannelsFromStorage,fe as normalizeClassName,l as numToString,Ve as number,He as object,Pe as overwriteMaterial,u as parseResolution,d as parseTextAtUserIds,pe as pxToVw,f as randomString,p as removeCookie,m as replaceAtUserElement,h as replaceAtUserElementHtmlStr,N as resolveImageUrl,Z as resolveRequestUserId,xe as rewriteComponent,T as saveHiddenChannelIdsToStorage,g as secondToTime,_ as setCookie,P as shouldProbeImageUrl,F as shouldUseApiResDirectly,Ue as string,v as stringToNumber,y as stripHtmlTags,We as timeRange,z as trackAdClick,B as trackAdImpression,V as trackAdvertising,H as trackAppPageView,U as trackGuestAccountBind,W as trackGuestAccountCreated,G as trackKeywordClick,K as trackNavigation,q as trackPageClick,J as trackPageLifecycle,Y as trackRecommendListClick,X as trackVideoEvent,Ye as uint8ArrayToBase64,Xe as uint8ArrayToNumberArray,le as unfollowUser,b as updateUrlParams,Qe as uploadFile,Me as uploadToS3WithPresignedUrl,$e as useRouter,je as validatePasswordPair,Ge as withInspectorMeta};
|