@funhub/platform 0.1.154 → 0.1.155

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/assets/icons/marquee-enter.mjs +2 -0
  2. package/dist/components/biz/basics/search/shared/components/search-box.mjs +1 -1
  3. package/dist/components/biz/basics/search/variants/basic-search/runtime/client.mjs +1 -1
  4. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  5. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  6. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  7. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  8. package/dist/components/biz/business/marquee/client.mjs +1 -1
  9. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  10. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  11. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  12. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  13. package/dist/components/biz/business/search-bar/variants/basic-search-bar/runtime/client.mjs +1 -1
  14. package/dist/components/common/image-crop-modal/image-crop-modal.mjs +2 -2
  15. package/dist/components/common/series-episodes/index.mjs +1 -1
  16. package/dist/components/pages/publish/components/upload-progress.mjs +1 -1
  17. package/dist/components/pages/search/hot-recommend.mjs +1 -1
  18. package/dist/components/pages/search/style.module.mjs +3 -31
  19. package/dist/components/pages/search/top-header.mjs +1 -1
  20. package/dist/components/pages/search-result/search-all.mjs +1 -1
  21. package/dist/components/pages/search-result/search-tab.mjs +1 -1
  22. package/dist/components/pages/search-result/search-user.mjs +1 -1
  23. package/dist/components/pages/search-result/search-video.mjs +1 -1
  24. package/dist/components/pages/video-list/index.mjs +1 -1
  25. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  26. package/dist/components/ui/badge.d.mts +1 -1
  27. package/dist/components/ui/button.d.mts +1 -1
  28. package/dist/components/ui/item.mjs +1 -1
  29. package/dist/components/ui/loading.d.mts +42 -0
  30. package/dist/pages.mjs +1 -1
  31. package/dist/ui.d.mts +2 -2
  32. package/dist/ui.mjs +1 -1
  33. package/dist/utils/image-crop.mjs +1 -1
  34. package/dist/utils/tools.mjs +1 -1
  35. package/package.json +28 -28
  36. package/dist/components/common/image-crop/image-crop.mjs +0 -2
  37. package/dist/components/common/image-crop/show-image-crop.mjs +0 -2
  38. package/dist/components/ui/dots-loading.d.mts +0 -25
  39. package/dist/components/ui/dots-loading.mjs +0 -2
@@ -0,0 +1,2 @@
1
+
2
+ import*as e from"react";const t=t=>e.createElement(`svg`,{preserveAspectRatio:`none`,width:`1em`,height:`1em`,overflow:`visible`,style:{display:`block`},viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...t},e.createElement(`path`,{id:`Subtract`,d:`M8 0C12.4183 6.44256e-08 16 3.58172 16 8C16 12.4183 12.4183 16 8 16C3.58172 16 1.28855e-07 12.4183 0 8C0 3.58172 3.58172 0 8 0ZM6.77148 4.34668C6.54772 4.16153 6.21731 4.17499 6.00879 4.38672C5.80047 4.5985 5.78833 4.93303 5.9707 5.16016L6.00879 5.20508L9.02441 8.2666L6.00879 11.3281C5.78643 11.554 5.78652 11.9206 6.00879 12.1465C6.23121 12.3723 6.59195 12.3722 6.81445 12.1465L10.2334 8.67578C10.4558 8.44989 10.4558 8.08333 10.2334 7.85742L6.81445 4.38672L6.77148 4.34668Z`,fill:`var(--fill-0, #F59E0B)`}));export{t as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{pxToVw as e}from"../../../../../../utils/helper.mjs";import{Box as t}from"../../../../../ui/box.mjs";import{Text as n}from"../../../../../ui/text.mjs";import r from"../../../../../ui/link.mjs";import i from"../../../../../../assets/icons/search.mjs";import"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";function s({placeholder:s,searchUrl:c,iconSize:l,showPlaceholderText:u,borderColor:d,onClick:f,marginRight:p=16,className:m=`flex-1`,wrapperStyle:h}){let g=a(r,{className:m,href:c,onClick:()=>{f?.()},children:o(t,{className:`h-[38px] flex px-[12px] items-center rounded-[19px] cursor-pointer transition-colors text-text3 relative`,style:{border:`1px solid ${d}`,marginRight:p>0?e(p):void 0},children:[a(i,{width:e(l),height:e(l)}),u&&a(n,{className:`ml-[4px] text-text3 text-[16px] leading-none select-none flex-1`,children:s})]})});return h?a(t,{style:h,children:g}):g}export{s as SearchBox};
2
+ "use client";import{cn as e}from"../../../../../../utils/cn.mjs";import{pxToVw as t}from"../../../../../../utils/helper.mjs";import{Box as n}from"../../../../../ui/box.mjs";import{Text as r}from"../../../../../ui/text.mjs";import i from"../../../../../ui/link.mjs";import a from"../../../../../../assets/icons/search.mjs";import"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c({placeholder:c,searchUrl:l,iconSize:u,showPlaceholderText:d,borderColor:f,onClick:p,marginRight:m=16,className:h=`flex-1`,boxClassName:g,textClassName:_,wrapperStyle:v}){let y={border:`1px solid ${f}`,marginRight:m>0?t(m):void 0},b=o(i,{className:h,href:l,onClick:()=>{p?.()},children:s(n,{className:e(`h-[38px] flex px-[12px] items-center rounded-[19px] cursor-pointer transition-colors text-text3 relative`,g),style:y,children:[o(a,{width:t(u),height:t(u)}),d&&o(r,{className:e(`ml-[4px] text-text3 text-[16px] leading-none select-none flex-1`,_),children:c})]})});return v?o(n,{style:v,children:b}):b}export{c as SearchBox};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{defaultProps as t}from"../defaults/default-props.mjs";import{SearchBox as n}from"../../../shared/components/search-box.mjs";import{jsx as r}from"react/jsx-runtime";const i={};function a({props:a=i,styles:o,events:s}){let{placeholder:c,searchUrl:l=t.searchUrl,iconSize:u=t.iconSize,showPlaceholderText:d=t.showPlaceholderText,borderColor:f=t.borderColor}={...t,...a};return r(n,{placeholder:c,searchUrl:l,iconSize:u,showPlaceholderText:d,borderColor:f,onClick:()=>{s?.onClick?.()},marginRight:0,wrapperStyle:o?e(o,{}):void 0})}export{a as default};
2
+ "use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{defaultProps as t}from"../defaults/default-props.mjs";import{SearchBox as n}from"../../../shared/components/search-box.mjs";import{jsx as r}from"react/jsx-runtime";const i={};function a({props:a=i,styles:o,events:s}){let{placeholder:c,searchUrl:l=t.searchUrl,iconSize:u=t.iconSize,showPlaceholderText:d=t.showPlaceholderText,borderColor:f=t.borderColor}={...t,...a};return r(n,{placeholder:c,searchUrl:l,iconSize:u,showPlaceholderText:d,borderColor:f,boxClassName:`h-[40px] rounded-[20px] bg-bg2 py-[8px]`,textClassName:`ml-[8px] text-[16px] leading-[24px]`,onClick:()=>{s?.onClick?.()},marginRight:0,wrapperStyle:o?e(o,{}):void 0})}export{a as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useLoginModalStore as i}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../../../hooks/query/use-query.mjs";import{debounceFun as o}from"../../../../../utils/tools.mjs";import s from"../../../../common/interaction-animations.module.mjs";import c from"../../../../common/collection-popup/index.mjs";import l from"../../../../common/share-popup/share-popup.mjs";import{useContentOperate as u}from"../../../../../hooks/use-content-operate.mjs";import d from"../../../../../assets/icons/detail/check-ok.mjs";import f from"../../../../../assets/icons/detail/collect_nor.mjs";import p from"../../../../../assets/icons/detail/collect_sel.mjs";import ee from"../../../../../assets/icons/detail/give_like.mjs";import m from"../../../../../assets/icons/detail/give_like_sel.mjs";import te from"../../../../../assets/icons/detail/share.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{usePathname as C,useSearchParams as w}from"next/navigation";import{useTranslations as ne}from"next-intl";function T({mode:T=`renderer`,information:O,onUpdate:k}){let A=T===`editor`||!O?.id||O.id.startsWith(`preview-`),j=`${C()}?${w()?.toString()||``}`,M=v(j),N=ne(`components.biz.business.detail`),[P,F]=y(!1),[I,L]=y(!1),R=v(0),z=e(e=>e.userId),B=e(e=>e.isLogin),V=a();g(()=>{M.current!==j&&(l.clear(),M.current=j)},[j]),g(()=>()=>{l.clear()},[]);let H=h(()=>{z&&(V([`user-profile`,`mine`,z,`user-like-video`]),V([`user-profile`,`mine`,z,`user-like-post`]),V([`user-profile`,`mine`,z,`user-collect-video`,z]),V([`user-profile`,`mine`,z,`user-collect-post`,z]))},[V,z]),{likeAnimation:U,handleLikeOperate:W,handleDefaultCollectionOperate:G,handleShareOperate:K}=u({id:O.id,isLike:O.like||!1,isDislike:O.dislike||!1,isCollect:O.collect||!1,likeCnt:D(O.static?.like_cnt),dislikeCnt:D(O.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!A,animationClasses:{like:s.likeShakeAnimation,dislike:s.dislikeShakeAnimation}}),q=h(e=>{k?.({...e})},[k]),J=h(async()=>{if(P)return;if(!B){i.getState().open();return}let e=Date.now();if(e-R.current<300)return;R.current=e,F(!0);let t=O.like||!1,n=O.dislike||!1,r=D(O.static?.like_cnt),a=D(O.static?.dislike_cnt),o=!t,s=Math.max(0,r+(o?1:-1)),c=o?!1:n,l=o&&n?Math.max(0,a-1):a;q({like:o,dislike:c,static:{...O.static,like_cnt:s,dislike_cnt:l}});try{let e=await W();if(!e){q({like:t,dislike:n,static:{...O.static,like_cnt:r,dislike_cnt:a}});return}q({like:e.isLike,dislike:e.isDislike??c,static:{...O.static,like_cnt:e.likeCnt,dislike_cnt:e.dislikeCnt??l}}),H(),window.sensors?.track?.(`detail_like_click`,{object_id:O.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),S.error(N(`detailOperate.operateFailed`))}finally{F(!1)}},[W,O,H,P,B,N,q]),Y=_(()=>O.id,[O.id]),X=h(()=>{K(({isCollect:e})=>{q({collect:e})},Y)},[K,Y,q]),Z=h(()=>{c.show({mode:`select`,onCollect:async e=>{try{let n=await t({new_collection_id:e,content_id:O.id});if(n.code!==0)throw Error(n.message||N(`detailOperate.collectFailed`));q({collect:!0}),H(),S.success(N(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),S.error(N(`detailOperate.collectFailed`))}}})},[O.id,H,N,q]),Q=h(e=>{let t=e||N(`detailOperate.defaultCollection`);S.custom(e=>x(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[x(`div`,{className:`flex items-center gap-[10px]`,children:[b(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:b(d,{className:`w-[14px] h-[14px]`})}),x(`div`,{className:`flex items-center gap-[6px]`,children:[b(`span`,{className:`text-[14px] leading-[20px]`,children:N(`detailOperate.collectAdded`)}),b(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),b(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{S.dismiss(e),Z()},children:N(`detailOperate.modifyCollection`)})]}))},[Z,N]),$=h(async()=>{if(I)return;if(!B){i.getState().open();return}let e=O.collect||!1;L(!0),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:e?`取消收藏`:`收藏`});try{let t=await G({currentCollect:e,onUpdate:({isCollect:e})=>{q({collect:e})}});if(!t?.success){S.error(t?.message||N(`detailOperate.collectFailed`));return}H(),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:t.isCollect?`收藏`:`取消收藏`}),!e&&t.isCollect&&Q(t.collectionTitle),e&&t.isCollect===!1&&S.success(N(`detailOperate.uncollectSuccess`))}catch(e){console.error(`收藏操作失败:`,e),S.error(e?.message||N(`detailOperate.collectFailed`))}finally{L(!1)}},[G,O.collect,O.id,H,I,B,Q,N,q]),re=_(()=>o($,300),[$]);return x(n,{className:`w-full h-[42px] mt-[16px] flex items-center justify-between ${A?`pointer-events-none`:``}`,children:[x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center ${P?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:J,children:[O.like?b(m,{className:`w-[20px] h-[20px] ${U.animationClass}`}):b(ee,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:O.static?O.static.like_cnt===0?N(`detailOperate.like`):E(O.static?.like_cnt):N(`detailOperate.like`)})]}),x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center ${I?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:re,children:[O.collect?b(p,{className:`w-[20px] h-[20px]`}):b(f,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:N(`detailOperate.collection`)})]}),x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center cursor-pointer`,onClick:X,children:[b(te,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:N(`detailOperate.share`)})]})]})}function E(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function D(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}export{T as DetailOperate};
2
+ "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useLoginModalStore as i}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../../../hooks/query/use-query.mjs";import o from"../../../../common/interaction-animations.module.mjs";import s from"../../../../common/collection-popup/index.mjs";import c from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as l}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as u}from"../../../../../hooks/use-content-operate.mjs";import d from"../../../../../assets/icons/detail/check-ok.mjs";import f from"../../../../../assets/icons/detail/collect_nor.mjs";import p from"../../../../../assets/icons/detail/collect_sel.mjs";import ee from"../../../../../assets/icons/detail/give_like.mjs";import m from"../../../../../assets/icons/detail/give_like_sel.mjs";import te from"../../../../../assets/icons/detail/share.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{usePathname as C,useSearchParams as ne}from"next/navigation";import{useTranslations as w}from"next-intl";function T({mode:T=`renderer`,information:O,onUpdate:k}){let A=T===`editor`||!O?.id||O.id.startsWith(`preview-`),j=`${C()}?${ne()?.toString()||``}`,M=v(j),N=w(`components.biz.business.detail`),P=l(),[F,I]=y(!1),[L,R]=y(!1),z=v(0),B=v(0),V=e(e=>e.userId),H=e(e=>e.isLogin),U=a();g(()=>{M.current!==j&&(c.clear(),M.current=j)},[j]),g(()=>()=>{c.clear()},[]);let W=h(()=>{V&&(U([`user-profile`,`mine`,V,`user-like-video`]),U([`user-profile`,`mine`,V,`user-like-post`]),U([`user-profile`,`mine`,V,`user-collect-video`,V]),U([`user-profile`,`mine`,V,`user-collect-post`,V]))},[U,V]),{likeAnimation:G,handleLikeOperate:K,handleDefaultCollectionOperate:q,handleShareOperate:J}=u({id:O.id,isLike:O.like||!1,isDislike:O.dislike||!1,isCollect:O.collect||!1,likeCnt:D(O.static?.like_cnt),dislikeCnt:D(O.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!A,animationClasses:{like:o.likeShakeAnimation,dislike:o.dislikeShakeAnimation}}),Y=h(e=>{k?.({...e})},[k]),X=h(async()=>{if(F)return;if(!H){i.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,I(!0);let t=O.like||!1,n=O.dislike||!1,r=D(O.static?.like_cnt),a=D(O.static?.dislike_cnt),o=!t,s=Math.max(0,r+(o?1:-1)),c=o?!1:n,l=o&&n?Math.max(0,a-1):a;Y({like:o,dislike:c,static:{...O.static,like_cnt:s,dislike_cnt:l}});try{let e=await K();if(!e){Y({like:t,dislike:n,static:{...O.static,like_cnt:r,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??c,static:{...O.static,like_cnt:e.likeCnt,dislike_cnt:e.dislikeCnt??l}}),W(),window.sensors?.track?.(`detail_like_click`,{object_id:O.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),S.error(N(`detailOperate.operateFailed`))}finally{I(!1)}},[K,O,W,F,H,N,Y]),Z=_(()=>O.id,[O.id]),re=h(()=>{J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y]),Q=h(()=>{s.show({mode:`select`,onCollect:async e=>{try{let n=await t({new_collection_id:e,content_id:O.id});if(n.code!==0)throw Error(n.message||N(`detailOperate.collectFailed`));Y({collect:!0}),W(),S.success(N(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),S.error(N(`detailOperate.collectFailed`))}}})},[O.id,W,N,Y]),$=h(e=>{let t=e||N(`detailOperate.defaultCollection`);S.custom(e=>x(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[x(`div`,{className:`flex items-center gap-[10px]`,children:[b(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:b(d,{className:`w-[14px] h-[14px]`})}),x(`div`,{className:`flex items-center gap-[6px]`,children:[b(`span`,{className:`text-[14px] leading-[20px]`,children:N(`detailOperate.collectAdded`)}),b(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),b(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{S.dismiss(e),Q()},children:N(`detailOperate.modifyCollection`)})]}))},[Q,N]),ie=h(async()=>{if(L)return;if(!H){i.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e;let t=O.collect||!1,n=!t;R(!0),Y({collect:n}),n&&P.trigger(o.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t}),S.error(e?.message||N(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:O.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&S.success(N(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t}),console.error(`收藏操作失败:`,e),S.error(e?.message||N(`detailOperate.collectFailed`))}finally{R(!1)}},[P,q,O.id,O.collect,W,L,H,$,N,Y]);return x(n,{className:`w-full h-[42px] mt-[16px] flex items-center justify-between ${A?`pointer-events-none`:``}`,children:[x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center ${F?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:X,children:[O.like?b(m,{className:`w-[20px] h-[20px] ${G.animationClass}`}):b(ee,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:O.static?O.static.like_cnt===0?N(`detailOperate.like`):E(O.static?.like_cnt):N(`detailOperate.like`)})]}),x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:ie,children:[O.collect?b(p,{className:`w-[20px] h-[20px] ${P.animationClass}`}):b(f,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:N(`detailOperate.collection`)})]}),x(n,{className:`w-[25%] h-full flex flex-col items-center justify-center cursor-pointer`,onClick:re,children:[b(te,{className:`w-[20px] h-[20px] text-text2`}),b(r,{className:`text-[12px] text-text2 leading-[20px]`,children:N(`detailOperate.share`)})]})]})}function E(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function D(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}export{T as DetailOperate};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{DotsLoading as r}from"../../../../ui/dots-loading.mjs";import{Text as i}from"../../../../ui/text.mjs";import{useRequest as a}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as o}from"../../../../common/keep-scroll-position/index.mjs";import ee from"../../../../../assets/icons/detail/video_flag.mjs";import{MiniThreeCard as s}from"../../../../common/cards/mini-three-card.mjs";import{useCardDecoration as c}from"../../../../../hooks/use-card-decoration.mjs";import{buildEditorPreviewRecommendList as l}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as u}from"../shared/runtime-context-provider.mjs";import{applyPlayCountDelta as te,clampColumns as ne,mergeManualAndPool as d,normalizeRecommendRuntimeProps as re,resolveRows as ie}from"./utils.mjs";import{useCallback as ae,useEffect as f,useMemo as p,useRef as oe,useState as se}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";function g({rows:g,columns:_,smartTagEnabled:b,smartTagIds:x,title:pe,showPlayCount:me,playCountDelta:he,showEpisode:ge,enableInfinite:_e,items:ve,mode:ye=`renderer`}){let C=u()?.detailId||``,be=ye===`editor`,w=be,{getVerticalHoCoverImageUrl:T,getTitleText:E}=c(),D=oe(null),O=p(()=>re({smartTagEnabled:b,smartTagIds:x,enableInfinite:_e,items:ve}),[_e,ve,b,x]),k=O.smartTagEnabled,A=O.smartTagIds,j=p(()=>O.items??[],[O.items]),M=O.enableInfinite&&!be,N=!k,P=M&&k&&!w,xe=ie(g,M),F=ne(_),I=xe*F,L=Math.max(1,I),R=p(()=>[`video-detail-recommend`,C||`unknown`,L,A.join(`,`)].join(`:`),[C,L,A]),[Se,z]=o(`${R}:pool`,[]),[B,V]=o(`${R}:has-more`,!1),[H,U]=se(!1),W=p(()=>l(I),[I]),{data:G,isFetching:Ce,isPending:we}=a([`video-detail-recommend`,C,P?`paged`:`all`,L,A.join(`,`)],async()=>w?null:await e({page_size:L,tags:A}),{enabled:!w&&k,refetchOnMount:`always`}),K=p(()=>w?W:v(G?.data?.videos),[G?.data?.videos,W,w]);f(()=>{if(!P){U(!1);return}z(e=>{if(!K.length)return e;if(!e.length)return K;let t=[...K],n=new Set(K.map(e=>e.id).filter(Boolean));return e.forEach(e=>{(!e.id||!n.has(e.id))&&(t.push(e),e.id&&n.add(e.id))}),t});let e=y(G?.data?.videos,L);V(t=>t||e),U(!1)},[G?.data?.videos,K,L,V,z,P]);let q=P?Se:K,J=p(()=>N?Array.from(new Set(j.map(e=>S(e.contentId)).filter(Boolean))):[],[j,N]),{data:Te,isFetching:Ee,isPending:De}=a([`video-detail-recommend-manual-details`,J.join(`,`)],async()=>{if(!J.length)return[];let e=await t({ids:J});return(Array.isArray(e.data?.videos)?e.data.videos:[]).map(e=>ce(e))},{enabled:J.length>0,refetchOnMount:`always`}),Oe=p(()=>N?new Set(j.map(e=>S(e.contentId)).filter(Boolean)):new Set,[j,N]),ke=p(()=>w?q:q.filter(e=>!Oe.has(e.id)),[q,w,Oe]),Y=p(()=>{if(!N||!j.length)return[];let e=new Map;return q.forEach(t=>{let n=S(t.id);n&&e.set(n,t)}),(Te||[]).forEach(t=>{let n=S(t.id);n&&e.set(n,t)}),j.map((t,n)=>{let r=w?W[n%Math.max(1,W.length)]:fe(t,n),i=S(t.contentId),a=typeof t.coverUrl==`string`?t.coverUrl.trim():``,o=e.get(i)??{...r,id:i||r.id||`preview-manual-${n+1}`,name:r.name||`猜你喜欢 ${n+1}`,img_y:a||r.img_y,img_x:a||r.img_x},ee=t.titleMode===`custom`?t.title:E(o),s=t.coverMode===`content`?T(o)||a:a||T(o);return{info:{...o,name:ee||o.name,img_y:s||o.img_y,img_x:s||o.img_x},config:{showPlayCount:t.showPlayCount,playCountDelta:t.playCountDelta,showEpisode:t.showEpisode}}}).filter(Boolean)},[W,q,E,T,w,Te,j,N]),X=p(()=>ke.map(e=>({info:e})),[ke]),Z=N&&j.length>0,Ae=p(()=>Z?Y:d(Y,X,I),[Z,Y,I,X]),Q=p(()=>{if(P){if(!Y.length)return X;let e=new Set(Y.map(e=>e.info.id).filter(Boolean));return Y.concat(X.filter(t=>!e.has(t.info.id)))}if(M){if(!Y.length)return X;let e=new Set(Y.map(e=>e.info.id).filter(Boolean));return Y.concat(X.filter(t=>!e.has(t.info.id)))}return Ae},[Ae,Y,X,M,P]),je=B&&Q.length>0?Math.max(0,Q.length-4):-1,Me=String(pe||``).trim(),$=ae(async()=>{if(!(!P||!B||H)){U(!0);try{let t=await e({page_size:L,tags:A}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=v(n),i=0;z(e=>{let t=new Set(e.map(e=>e.id).filter(Boolean)),n=[...e];return r.forEach(e=>{(!e.id||!t.has(e.id))&&(n.push(e),e.id&&t.add(e.id))}),i=n.length-e.length,n}),V(y(n,L)&&i>0)}catch(e){console.error(`猜你喜欢分页加载失败`,e),V(!1)}finally{U(!1)}}},[B,H,L,A,V,z,P]);if(f(()=>{if(!P)return;let e=D.current;if(!e||!B)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!H&&$()});return t.observe(e),()=>{t.disconnect()}},[$,B,H,P,je]),!Q.length)return null;let Ne=!w&&(H||k&&(Ce||we)||J.length>0&&(Ee||De));return h(n,{className:`w-full mt-[16px] ${w?`pointer-events-none`:``}`,children:[Me?m(i,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:Me}):null,m(n,{className:`w-full flex flex-wrap px-[12px]`,children:Q.map((e,t)=>{let n=E(e.info),r=me!==!1&&(e.config?.showPlayCount??!0),a=Number(e.config?.playCountDelta??he??0),o=e.config?.showEpisode??ge,c=ue(te(e.info.play_count||0,a)),l=le(e.info),u=Number.isFinite(F)&&F>0?F:3,ne=`${100/u}%`,d=t%u,re=u>1?{paddingLeft:8*d/u,paddingRight:8*(u-d-1)/u}:null;return m(`div`,{ref:t===je?D:void 0,style:{width:ne,...re||{}},children:m(s,{url:T(e.info),text:n,textChild:m(i,{as:`h3`,className:`text-text1 text-[16px] h-[24px] leading-[24px] my-[4px] line-clamp-1`,children:n}),style:{width:`100%`},bottomLeftChild:r?h(`div`,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] rounded-[4px] bg-[#333] ml-[4px] flex items-center`,children:[m(ee,{className:`w-[16px] h-[auto] text-[#fff] mr-[4px]`}),c]}):null,bottomRightChild:o&&l?m(`div`,{className:`text-[#fff] text-[12px] leading-[20px] pr-2`,children:l}):null,linkPath:w?``:de(e.info)})},`guess-like-${t}`)})}),Ne&&m(n,{className:`w-full flex justify-center py-[12px]`,children:m(r,{})})]})}function _(e){let t=e.is_more_link?`y`:`n`;return{id:e.video_id||``,mid:``,name:e.name||``,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:e.content_type,episode_cnt:e.episode_count||0,show_at:e.show_at??``,position:``,img_type:e.img_type??``,img_x:e.img_x??``,img_y:e.img_y??``,img_width:``,img_height:``,play_count:e.play_count,preview_images:[],duration:String(e.duration??``),score:String(e.score??``),is_more_link:t,update_status:String(e.update_status??``),description:e.description??``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:e.source_tags??``,source_actor:[],links:Array.isArray(e.episodes)?e.episodes.map(e=>({id:e.id??``,name:e.name??``,preview_m3u8_url:e.preview_m3u8_url??``,m3u8_url:e.m3u8_url??``})):[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}function v(e){return Array.isArray(e)?e.map(e=>_(e)):[]}function ce(e){let t=String(e?.id||e?.mid||e?.video_id||``),n=e?.is_more_link===`y`?`y`:`n`,r=Array.isArray(e?.links)?e.links.map(e=>({id:String(e?.id||``),name:String(e?.name||``),preview_m3u8_url:String(e?.preview_m3u8_url||``),m3u8_url:String(e?.m3u8_url||``)})):[],i=Array.isArray(e?.video_episodes)?e.video_episodes.length:0,a=Number(e?.episode_cnt||i||r.length||0);return{id:t,mid:String(e?.mid||t),name:String(e?.name||``),cat_id:String(e?.cat_id||``),cat_name:String(e?.cat_name||``),status:String(e?.status||`1`),status_text:String(e?.status_text||``),create_time:String(e?.create_time||``),content_type:e?.content_type,episode_cnt:Number.isFinite(a)?a:0,show_at:String(e?.show_at||``),position:String(e?.position||``),img_type:String(e?.img_type||``),img_x:String(e?.img_x||``),img_y:String(e?.img_y||``),img_width:String(e?.img_width||``),img_height:String(e?.img_height||``),play_count:Number(e?.play_count??e?.browse_count??0),preview_images:Array.isArray(e?.preview_images)?e.preview_images:[],duration:String(e?.duration||``),score:String(e?.score||``),is_more_link:n,update_status:String(e?.update_status||``),description:String(e?.description||``),language:String(e?.language||``),director:String(e?.director||``),actor:String(e?.actor||``),area:String(e?.area||``),issue_date:String(e?.issue_date||``),publisher:String(e?.publisher||``),series:String(e?.series||``),number:String(e?.number||``),tags:Array.isArray(e?.tags)?e.tags:[],source_tags:String(e?.source_tags||``),source_actor:Array.isArray(e?.source_actor)?e.source_actor:[],links:r,money:String(e?.money||``),up_user:String(e?.up_user||``),source_username:String(e?.source_username||``),task_id:String(e?.task_id||``),file_status:String(e?.file_status||``)}}function y(e,t){if(!Array.isArray(e)||e.length===0)return!1;let n=e[0];if(typeof n?.has_more==`boolean`)return n.has_more;let r=Number(n?.total??0);return Number.isFinite(r)&&r>0?r>t:e.length>=t}function le(e){if(b(e)){let t=Number(e.episode_cnt||e.links?.length||0);return t>0?`全${t}集`:``}return x(Number(e.duration||0))}function b(e){return e.is_more_link===`y`}function x(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function ue(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function de(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}function S(e){return typeof e==`string`?e.trim():``}function fe(e,t){let n=S(e.contentId)||`manual-${t+1}`,r=typeof e.coverUrl==`string`?e.coverUrl.trim():``,i=typeof e.title==`string`?e.title.trim():``,a=typeof e.description==`string`?e.description.trim():``;return{id:n,mid:n,name:i||`猜你喜欢 ${t+1}`,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:1,episode_cnt:0,show_at:``,position:``,img_type:``,img_x:r,img_y:r,img_width:``,img_height:``,play_count:0,preview_images:[],duration:``,score:``,is_more_link:`n`,update_status:``,description:a,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:``,source_actor:[],links:[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}export{g as VideoDetailRecommendClient};
2
+ "use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import i from"../../../../ui/loading.mjs";import{useRequest as a}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as o}from"../../../../common/keep-scroll-position/index.mjs";import ee from"../../../../../assets/icons/detail/video_flag.mjs";import{MiniThreeCard as s}from"../../../../common/cards/mini-three-card.mjs";import{useCardDecoration as c}from"../../../../../hooks/use-card-decoration.mjs";import{buildEditorPreviewRecommendList as l}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as u}from"../shared/runtime-context-provider.mjs";import{applyPlayCountDelta as te,clampColumns as ne,mergeManualAndPool as d,normalizeRecommendRuntimeProps as re,resolveRows as ie}from"./utils.mjs";import{useCallback as ae,useEffect as f,useMemo as p,useRef as oe,useState as se}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";function g({rows:g,columns:_,smartTagEnabled:b,smartTagIds:x,title:pe,showPlayCount:me,playCountDelta:he,showEpisode:ge,enableInfinite:_e,items:ve,mode:ye=`renderer`}){let C=u()?.detailId||``,be=ye===`editor`,w=be,{getVerticalHoCoverImageUrl:T,getTitleText:E}=c(),D=oe(null),O=p(()=>re({smartTagEnabled:b,smartTagIds:x,enableInfinite:_e,items:ve}),[_e,ve,b,x]),k=O.smartTagEnabled,A=O.smartTagIds,j=p(()=>O.items??[],[O.items]),M=O.enableInfinite&&!be,N=!k,P=M&&k&&!w,xe=ie(g,M),F=ne(_),I=xe*F,L=Math.max(1,I),R=p(()=>[`video-detail-recommend`,C||`unknown`,L,A.join(`,`)].join(`:`),[C,L,A]),[Se,z]=o(`${R}:pool`,[]),[B,V]=o(`${R}:has-more`,!1),[H,U]=se(!1),W=p(()=>l(I),[I]),{data:G,isFetching:Ce,isPending:we}=a([`video-detail-recommend`,C,P?`paged`:`all`,L,A.join(`,`)],async()=>w?null:await e({page_size:L,tags:A}),{enabled:!w&&k,refetchOnMount:`always`}),K=p(()=>w?W:v(G?.data?.videos),[G?.data?.videos,W,w]);f(()=>{if(!P){U(!1);return}z(e=>{if(!K.length)return e;if(!e.length)return K;let t=[...K],n=new Set(K.map(e=>e.id).filter(Boolean));return e.forEach(e=>{(!e.id||!n.has(e.id))&&(t.push(e),e.id&&n.add(e.id))}),t});let e=y(G?.data?.videos,L);V(t=>t||e),U(!1)},[G?.data?.videos,K,L,V,z,P]);let q=P?Se:K,J=p(()=>N?Array.from(new Set(j.map(e=>S(e.contentId)).filter(Boolean))):[],[j,N]),{data:Te,isFetching:Ee,isPending:De}=a([`video-detail-recommend-manual-details`,J.join(`,`)],async()=>{if(!J.length)return[];let e=await t({ids:J});return(Array.isArray(e.data?.videos)?e.data.videos:[]).map(e=>ce(e))},{enabled:J.length>0,refetchOnMount:`always`}),Oe=p(()=>N?new Set(j.map(e=>S(e.contentId)).filter(Boolean)):new Set,[j,N]),ke=p(()=>w?q:q.filter(e=>!Oe.has(e.id)),[q,w,Oe]),Y=p(()=>{if(!N||!j.length)return[];let e=new Map;return q.forEach(t=>{let n=S(t.id);n&&e.set(n,t)}),(Te||[]).forEach(t=>{let n=S(t.id);n&&e.set(n,t)}),j.map((t,n)=>{let r=w?W[n%Math.max(1,W.length)]:fe(t,n),i=S(t.contentId),a=typeof t.coverUrl==`string`?t.coverUrl.trim():``,o=e.get(i)??{...r,id:i||r.id||`preview-manual-${n+1}`,name:r.name||`猜你喜欢 ${n+1}`,img_y:a||r.img_y,img_x:a||r.img_x},ee=t.titleMode===`custom`?t.title:E(o),s=t.coverMode===`content`?T(o)||a:a||T(o);return{info:{...o,name:ee||o.name,img_y:s||o.img_y,img_x:s||o.img_x},config:{showPlayCount:t.showPlayCount,playCountDelta:t.playCountDelta,showEpisode:t.showEpisode}}}).filter(Boolean)},[W,q,E,T,w,Te,j,N]),X=p(()=>ke.map(e=>({info:e})),[ke]),Z=N&&j.length>0,Ae=p(()=>Z?Y:d(Y,X,I),[Z,Y,I,X]),Q=p(()=>{if(P){if(!Y.length)return X;let e=new Set(Y.map(e=>e.info.id).filter(Boolean));return Y.concat(X.filter(t=>!e.has(t.info.id)))}if(M){if(!Y.length)return X;let e=new Set(Y.map(e=>e.info.id).filter(Boolean));return Y.concat(X.filter(t=>!e.has(t.info.id)))}return Ae},[Ae,Y,X,M,P]),je=B&&Q.length>0?Math.max(0,Q.length-4):-1,Me=String(pe||``).trim(),$=ae(async()=>{if(!(!P||!B||H)){U(!0);try{let t=await e({page_size:L,tags:A}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=v(n),i=0;z(e=>{let t=new Set(e.map(e=>e.id).filter(Boolean)),n=[...e];return r.forEach(e=>{(!e.id||!t.has(e.id))&&(n.push(e),e.id&&t.add(e.id))}),i=n.length-e.length,n}),V(y(n,L)&&i>0)}catch(e){console.error(`猜你喜欢分页加载失败`,e),V(!1)}finally{U(!1)}}},[B,H,L,A,V,z,P]);if(f(()=>{if(!P)return;let e=D.current;if(!e||!B)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!H&&$()});return t.observe(e),()=>{t.disconnect()}},[$,B,H,P,je]),!Q.length)return null;let Ne=!w&&(H||k&&(Ce||we)||J.length>0&&(Ee||De));return h(n,{className:`w-full mt-[16px] ${w?`pointer-events-none`:``}`,children:[Me?m(r,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:Me}):null,m(n,{className:`w-full flex flex-wrap px-[12px]`,children:Q.map((e,t)=>{let n=E(e.info),i=me!==!1&&(e.config?.showPlayCount??!0),a=Number(e.config?.playCountDelta??he??0),o=e.config?.showEpisode??ge,c=ue(te(e.info.play_count||0,a)),l=le(e.info),u=Number.isFinite(F)&&F>0?F:3,ne=`${100/u}%`,d=t%u,re=u>1?{paddingLeft:8*d/u,paddingRight:8*(u-d-1)/u}:null;return m(`div`,{ref:t===je?D:void 0,style:{width:ne,...re||{}},children:m(s,{url:T(e.info),text:n,textChild:m(r,{as:`h3`,className:`text-text1 text-[16px] h-[24px] leading-[24px] my-[4px] line-clamp-1`,children:n}),style:{width:`100%`},bottomLeftChild:i?h(`div`,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] py-0 rounded-[4px] bg-[rgba(255,255,255,0.1)] ml-[4px] flex items-center gap-[4px]`,children:[m(ee,{className:`w-[12px] h-[12px] text-[#fff] shrink-0`}),c]}):null,bottomRightChild:o&&l?m(`div`,{className:`text-[#fff] text-[12px] leading-[20px] pr-2`,children:l}):null,linkPath:w?``:de(e.info)})},`guess-like-${t}`)})}),Ne&&m(n,{className:`w-full flex justify-center py-[12px]`,children:m(i,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function _(e){let t=e.is_more_link?`y`:`n`;return{id:e.video_id||``,mid:``,name:e.name||``,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:e.content_type,episode_cnt:e.episode_count||0,show_at:e.show_at??``,position:``,img_type:e.img_type??``,img_x:e.img_x??``,img_y:e.img_y??``,img_width:``,img_height:``,play_count:e.play_count,preview_images:[],duration:String(e.duration??``),score:String(e.score??``),is_more_link:t,update_status:String(e.update_status??``),description:e.description??``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:e.source_tags??``,source_actor:[],links:Array.isArray(e.episodes)?e.episodes.map(e=>({id:e.id??``,name:e.name??``,preview_m3u8_url:e.preview_m3u8_url??``,m3u8_url:e.m3u8_url??``})):[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}function v(e){return Array.isArray(e)?e.map(e=>_(e)):[]}function ce(e){let t=String(e?.id||e?.mid||e?.video_id||``),n=e?.is_more_link===`y`?`y`:`n`,r=Array.isArray(e?.links)?e.links.map(e=>({id:String(e?.id||``),name:String(e?.name||``),preview_m3u8_url:String(e?.preview_m3u8_url||``),m3u8_url:String(e?.m3u8_url||``)})):[],i=Array.isArray(e?.video_episodes)?e.video_episodes.length:0,a=Number(e?.episode_cnt||i||r.length||0);return{id:t,mid:String(e?.mid||t),name:String(e?.name||``),cat_id:String(e?.cat_id||``),cat_name:String(e?.cat_name||``),status:String(e?.status||`1`),status_text:String(e?.status_text||``),create_time:String(e?.create_time||``),content_type:e?.content_type,episode_cnt:Number.isFinite(a)?a:0,show_at:String(e?.show_at||``),position:String(e?.position||``),img_type:String(e?.img_type||``),img_x:String(e?.img_x||``),img_y:String(e?.img_y||``),img_width:String(e?.img_width||``),img_height:String(e?.img_height||``),play_count:Number(e?.play_count??e?.browse_count??0),preview_images:Array.isArray(e?.preview_images)?e.preview_images:[],duration:String(e?.duration||``),score:String(e?.score||``),is_more_link:n,update_status:String(e?.update_status||``),description:String(e?.description||``),language:String(e?.language||``),director:String(e?.director||``),actor:String(e?.actor||``),area:String(e?.area||``),issue_date:String(e?.issue_date||``),publisher:String(e?.publisher||``),series:String(e?.series||``),number:String(e?.number||``),tags:Array.isArray(e?.tags)?e.tags:[],source_tags:String(e?.source_tags||``),source_actor:Array.isArray(e?.source_actor)?e.source_actor:[],links:r,money:String(e?.money||``),up_user:String(e?.up_user||``),source_username:String(e?.source_username||``),task_id:String(e?.task_id||``),file_status:String(e?.file_status||``)}}function y(e,t){if(!Array.isArray(e)||e.length===0)return!1;let n=e[0];if(typeof n?.has_more==`boolean`)return n.has_more;let r=Number(n?.total??0);return Number.isFinite(r)&&r>0?r>t:e.length>=t}function le(e){if(b(e)){let t=Number(e.episode_cnt||e.links?.length||0);return t>0?`全${t}集`:``}return x(Number(e.duration||0))}function b(e){return e.is_more_link===`y`}function x(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function ue(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function de(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}function S(e){return typeof e==`string`?e.trim():``}function fe(e,t){let n=S(e.contentId)||`manual-${t+1}`,r=typeof e.coverUrl==`string`?e.coverUrl.trim():``,i=typeof e.title==`string`?e.title.trim():``,a=typeof e.description==`string`?e.description.trim():``;return{id:n,mid:n,name:i||`猜你喜欢 ${t+1}`,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:1,episode_cnt:0,show_at:``,position:``,img_type:``,img_x:r,img_y:r,img_width:``,img_height:``,play_count:0,preview_images:[],duration:``,score:``,is_more_link:`n`,update_status:``,description:a,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:``,source_actor:[],links:[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}export{g as VideoDetailRecommendClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../../utils/use-compatible-router.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{DotsLoading as i}from"../../../../ui/dots-loading.mjs";import{Text as a}from"../../../../ui/text.mjs";import{useGridFirstRowHeight as o,useWaterfallFirstRowHeight as s}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as c}from"../../../../../hooks/use-min-duration-loading.mjs";import l from"../../../../../assets/icons/detail/video_flag.mjs";import{MiniThreeCard as u}from"../../../../common/cards/mini-three-card.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ee,HOME_RECOMMEND_DEFAULT_GRID_ROWS as te,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as d,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as ne,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as f,HOME_RECOMMEND_MAX_GRID_COLUMNS as p,HOME_RECOMMEND_MAX_GRID_ROWS as re}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as ie}from"./home-recommend-preview.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ae}from"./home-recommend-video-detail.mjs";import{useCallback as m,useEffect as h,useLayoutEffect as oe,useMemo as g,useRef as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";const se={},ce={list:[]};function x({variant:n,props:l=se,data:u=ce,mode:ie=`renderer`}){let x=ie===`editor`,C=t(),{list:w,title:fe,cursor:T}=u,E=g(()=>Array.isArray(w)?w:[],[w]),D=g(()=>Array.isArray(u.icons)?u.icons:[],[u.icons]),{rows:pe,columns:me,moreLink:O,title:k,smartTagEnabled:he,smartTagIds:A,catId:_e,showPlayCount:ve,playCountDelta:ye,showEpisode:be,enableInfinite:xe,items:M}=l,N=he===!0,P=xe===!0&&N,F=!x&&P&&E.length>=16,I=g(()=>Array.isArray(A)?A.map(e=>String(e||``).trim()).filter(Boolean):[],[A]),L=typeof _e==`string`?_e.trim():``,R=g(()=>N||!Array.isArray(M)?``:M.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,M]),[Se,Ce]=v(0),[z,B]=v(E),[we,Te]=v(D),[V,H]=v(()=>typeof T==`string`?T:void 0),[U,Ee]=v(!1),W=_(null),De=_(null),G=_(null),Oe=_([]),K=_({left:null,right:null}),q=_(!1),ke=_(``),{isLoading:Ae,show:je,hide:Me}=c(500);h(()=>{B(E),Te(D),H(typeof T==`string`?T:void 0)},[T,D,E]);let Ne=ue(pe,te,re),J=ue(me,ee,p),Y=P?16:n===`grid`?Ne*J:16,Pe=g(()=>[n,N?`smart`:`manual:${R}`,I.join(`,`),L,String(Y)].join(`|`),[N,R,L,Y,I,n]),Fe=Ne*J,Ie=x&&n===`grid`,X=Ie?z.slice(0,Fe):z,Le=Ie?we.slice(0,Fe):we,Re=n===`waterfall`?6:4,Z=X.length>0?Math.max(0,X.length-Re):-1,ze=!!V,Be=k&&k.trim()||fe||``,Ve=ve??f,He=Number(ye??d),Ue=be??ne,We=!P,Q=We?le(O):``,Ge=We&&!!Q,Ke=o({enabled:!x&&n===`grid`,containerRef:De,firstRowItemRef:Oe,columns:J,itemsCount:X.length,deps:[n]}),qe=s({enabled:!x&&n===`waterfall`,containerRef:W,firstRowRef:K,deps:[n,X.length]}),Je=n===`grid`?Ke:qe,Ye=m(async()=>{if(!x&&ke.current!==Pe&&(ke.current=Pe,N||R))try{if(je(),!N){if(!R)return;B(await ae(z));return}let t=await e({page_size:Y,tags:I.length>0?I:void 0,cat_id:L||void 0},{cache:`no-store`}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=t.data?.cursor;n.length>0&&B(n),H(r)}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{Me()}},[Me,x,N,R,Pe,L,Y,I,z,je]);h(()=>{Ye()},[Ye]);let Xe=m(async()=>{let t=V;if(!(!F||!t||q.current)){q.current=!0,Ee(!0);try{let n=await e({cursor:t,page_size:Y,tags:I.length>0?I:void 0,cat_id:L||void 0}),r=Array.isArray(n.data?.videos)?n.data.videos:[],i=n.data?.cursor;r.length>0&&B(e=>e.concat(r)),H(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),H(void 0)}finally{q.current=!1,Ee(!1)}}},[V,L,Y,I,F]),Ze=m(()=>{if(Q){if(Q.startsWith(`http`)){window.location.href=Q;return}C.push(Q)}},[Q,C]);h(()=>{let e=G.current;if(!e||!F||!ze)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||U||Xe()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[Xe,ze,U,X.length,Y,F,Z]),oe(()=>{let e=W.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Ce(t>0?(t-12)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let $=g(()=>n===`waterfall`?ge(X,Le,Se):{left:[],right:[]},[Se,Le,X,n]);if(h(()=>{n===`waterfall`&&($.left.length||(K.current.left=null),$.right.length||(K.current.right=null))},[n,$.left.length,$.right.length]),!X.length)return null;let Qe=!x&&Ae,$e=!x&&U,et=Je>0?Je/2:160;return b(r,{className:`w-full mt-[16px]`,children:[b(r,{className:`flex items-center justify-between px-[12px] mb-[8px]`,children:[y(a,{className:`flex-1 min-w-0 text-text1 text-[18px] leading-[26px] font-bold line-clamp-1`,children:Be}),Ge&&y(a,{className:`text-text3 text-[12px] leading-[18px] cursor-pointer`,onClick:Ze,children:`更多`})]}),n===`grid`&&b(r,{ref:De,className:`w-full flex flex-wrap px-[12px] relative`,children:[X.map((e,t)=>{let r=Le[t],i=de(e),a=Ve&&(i?.showPlayCount??!0),o=i?.playCountDelta??He,s=i?.showEpisode??Ue,c=t%J,l=J>1?{paddingLeft:12*c/J,paddingRight:12*(J-c-1)/J}:void 0;return y(`div`,{ref:e=>{t===Z&&(G.current=e),t<J&&(Oe.current[t]=e)},className:`min-w-0`,style:{width:`${100/J}%`,...l||{}},children:y(S,{variant:n,item:e,icon:r,index:t,showPlayCount:a,playCountDelta:o,showEpisode:s,widthStyle:{width:`100%`}})},j(e,t))}),Qe&&y(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-10 pointer-events-none`,style:{top:et},"aria-hidden":!0,children:y(i,{})})]}),n===`waterfall`&&b(r,{ref:W,className:`w-full px-[12px] flex gap-[12px] relative`,children:[y(r,{className:`flex-1 min-w-0 flex flex-col`,children:$.left.map((e,t)=>{let r=de(e.item),i=Ve&&(r?.showPlayCount??!0),a=r?.playCountDelta??He,o=r?.showEpisode??Ue;return y(`div`,{ref:n=>{e.index===Z&&(G.current=n),t===0&&(K.current.left=n)},children:y(S,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},j(e.item,e.index))})}),y(r,{className:`flex-1 min-w-0 flex flex-col`,children:$.right.map((e,t)=>{let r=de(e.item),i=Ve&&(r?.showPlayCount??!0),a=r?.playCountDelta??He,o=r?.showEpisode??Ue;return y(`div`,{ref:n=>{e.index===Z&&(G.current=n),t===0&&(K.current.right=n)},children:y(S,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},j(e.item,e.index))})}),Qe&&y(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-10 pointer-events-none`,style:{top:et},"aria-hidden":!0,children:y(i,{})})]}),$e&&y(r,{className:`w-full flex justify-center py-[12px]`,children:y(i,{})})]})}function S({variant:e,item:t,icon:n,index:i,showPlayCount:o,playCountDelta:s,showEpisode:c,widthStyle:ee}){let te=fe(t),d=t.name||t?.title||``,ne=pe(me(t.static?.browse_cnt??0,s)),f=E(t,c),p=he(t,n,i);return y(u,{url:te,text:d,className:`w-full`,style:ee,topRightChild:p?y(C,{url:p}):void 0,bottomLeftChild:o?b(r,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] rounded-[4px] bg-[#333] ml-[4px] flex items-center`,children:[y(l,{className:`w-[16px] h-[auto] text-[#fff] mr-[4px]`}),ne]}):null,bottomRightChild:c?f&&y(a,{className:`text-[#fff] text-[12px] leading-[18px] pr-2`,children:f}):null,textChild:y(r,{className:`py-[4px]`,children:y(a,{as:`h3`,className:`text-text1 text-[16px] leading-[24px] ${e===`waterfall`?`break-words line-clamp-3`:`line-clamp-1`}`,children:d})}),linkPath:w(t)})}function C({url:e}){return y(r,{className:`relative w-[40px] h-[20px]`,children:y(n,{src:e,alt:`corner`,width:40,height:20,className:`w-full h-auto`})})}function w(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function le(e){return e?e.trim():``}function ue(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function de(e){return e[ie]}function fe(e){return e.img_y||e.img_x||e?.coverUrl}function T(e){return typeof e==`string`?e:``}function E(e,t){if(!t)return``;if(D(e)){let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}return k(Number(e.duration||0))}function D(e){if(Number(e.type??0)===2)return!0;let t=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(t)&&t>1}function pe(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e6?`${O(e/1e6)}M`:e>=1e3?`${O(e/1e3)}k`:Math.floor(e).toString()}function me(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function O(e){let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function k(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 he(e,t,n){return T(e.badge_url)||T(t?.material_url)||``}function ge(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=A(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 A(e,t){if(!e)return 0;let n=e*1.3461538461538463,r=E(t,!0)?18:0;return n+20+r+6+16}function j(e,t){return e.id?`home-recommend-${e.id}`:`home-recommend-${t}`}export{x as default};
2
+ "use client";import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../../utils/use-compatible-router.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import a from"../../../../ui/loading.mjs";import{useGridFirstRowHeight as o,useWaterfallFirstRowHeight as s}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as c}from"../../../../../hooks/use-min-duration-loading.mjs";import l from"../../../../../assets/icons/detail/video_flag.mjs";import{MiniThreeCard as u}from"../../../../common/cards/mini-three-card.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ee,HOME_RECOMMEND_DEFAULT_GRID_ROWS as te,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as d,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as ne,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as f,HOME_RECOMMEND_MAX_GRID_COLUMNS as p,HOME_RECOMMEND_MAX_GRID_ROWS as re}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as ie}from"./home-recommend-preview.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ae}from"./home-recommend-video-detail.mjs";import{useCallback as oe,useEffect as m,useLayoutEffect as se,useMemo as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";const ce={},le={list:[]};function b({variant:n,props:l=ce,data:u=le,mode:ie=`renderer`}){let b=ie===`editor`,S=t(),{list:C,title:pe,cursor:w}=u,T=h(()=>Array.isArray(C)?C:[],[C]),E=h(()=>Array.isArray(u.icons)?u.icons:[],[u.icons]),{rows:me,columns:he,moreLink:D,title:O,smartTagEnabled:ge,smartTagIds:k,catId:ve,showPlayCount:ye,playCountDelta:be,showEpisode:xe,enableInfinite:Se,items:j}=l,M=ge===!0,N=Se===!0&&M,P=!b&&N&&T.length>=16,F=h(()=>Array.isArray(k)?k.map(e=>String(e||``).trim()).filter(Boolean):[],[k]),I=typeof ve==`string`?ve.trim():``,L=h(()=>M||!Array.isArray(j)?``:j.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[M,j]),[Ce,we]=_(0),[R,z]=_(T),[Te,Ee]=_(E),[B,V]=_(()=>typeof w==`string`?w:void 0),[H,De]=_(!1),U=g(null),Oe=g(null),W=g(null),ke=g([]),G=g({left:null,right:null}),Ae=g(!1),je=g(``),{isLoading:Me,show:Ne,hide:Pe}=c(600),Fe=de(me,te,re),K=de(he,ee,p),q=N?16:n===`grid`?Fe*K:16,J=h(()=>[n,M?`smart`:`manual:${L}`,F.join(`,`),I,String(q)].join(`|`),[M,L,I,q,F,n]);m(()=>{je.current!==J&&(z(T),Ee(E),V(typeof w==`string`?w:void 0))},[w,E,T,J]);let Ie=Fe*K,Le=b&&n===`grid`,Y=Le?R.slice(0,Ie):R,Re=Le?Te.slice(0,Ie):Te,ze=n===`waterfall`?6:4,X=Y.length>0?Math.max(0,Y.length-ze):-1,Be=!!B,Ve=O&&O.trim()||pe||``,He=ye??f,Ue=Number(be??d),We=xe??ne,Ge=!N,Z=Ge?ue(D):``,Ke=Ge&&!!Z,qe=o({enabled:!b&&n===`grid`,containerRef:Oe,firstRowItemRef:ke,columns:K,itemsCount:Y.length,deps:[n]}),Je=s({enabled:!b&&n===`waterfall`,containerRef:U,firstRowRef:G,deps:[n,Y.length]}),Ye=n===`grid`?qe:Je,Xe=oe(async()=>{if(!b&&je.current!==J&&(je.current=J,M||L))try{if(Ne(),!M){if(!L)return;z(await ae(R));return}let t=await e({page_size:q,tags:F.length>0?F:void 0,cat_id:I||void 0},{cache:`no-store`}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=t.data?.cursor;z(n),V(r)}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{Pe()}},[Pe,b,M,L,J,I,q,F,R,Ne]);m(()=>{Xe()},[Xe]);let Ze=oe(async()=>{let t=B;if(!(!P||!t||Ae.current)){Ae.current=!0,De(!0);try{let n=await e({cursor:t,page_size:q,tags:F.length>0?F:void 0,cat_id:I||void 0}),r=Array.isArray(n.data?.videos)?n.data.videos:[],i=n.data?.cursor;r.length>0&&z(e=>e.concat(r)),V(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),V(void 0)}finally{Ae.current=!1,De(!1)}}},[B,I,q,F,P]),Qe=oe(()=>{if(Z){if(Z.startsWith(`http`)){window.location.href=Z;return}S.push(Z)}},[Z,S]);m(()=>{let e=W.current;if(!e||!P||!Be)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||H||Ze()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[Ze,Be,H,Y.length,q,P,X]),se(()=>{let e=U.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;we(t>0?(t-12)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let Q=h(()=>n===`waterfall`?_e(Y,Re,Ce):{left:[],right:[]},[Ce,Re,Y,n]);if(m(()=>{n===`waterfall`&&(Q.left.length||(G.current.left=null),Q.right.length||(G.current.right=null))},[n,Q.left.length,Q.right.length]),!Y.length)return null;let $=!b&&Me,$e=!b&&H,et=Ye>0?Ye/2:160;return y(r,{className:`w-full mt-[16px]`,children:[y(r,{className:`flex items-center justify-between px-[12px] mb-[8px]`,children:[v(i,{className:`flex-1 min-w-0 text-text1 text-[18px] leading-[26px] font-bold line-clamp-1`,children:Ve}),Ke&&v(i,{className:`text-text3 text-[12px] leading-[18px] cursor-pointer`,onClick:Qe,children:`更多`})]}),n===`grid`&&y(r,{ref:Oe,className:`w-full flex flex-wrap px-[12px] relative`,children:[Y.map((e,t)=>{let r=Re[t],i=fe(e),a=He&&(i?.showPlayCount??!0),o=i?.playCountDelta??Ue,s=i?.showEpisode??We,c=t%K,l=K>1?{paddingLeft:12*c/K,paddingRight:12*(K-c-1)/K}:void 0;return v(`div`,{ref:e=>{t===X&&(W.current=e),t<K&&(ke.current[t]=e)},className:`min-w-0`,style:{width:`${100/K}%`,...l||{}},children:v(x,{variant:n,item:e,icon:r,index:t,showPlayCount:a,playCountDelta:o,showEpisode:s,widthStyle:{width:`100%`}})},A(e,t))}),$&&v(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&v(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:et},"aria-hidden":!0,children:v(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&y(r,{ref:U,className:`w-full px-[12px] flex gap-[12px] relative`,children:[v(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.left.map((e,t)=>{let r=fe(e.item),i=He&&(r?.showPlayCount??!0),a=r?.playCountDelta??Ue,o=r?.showEpisode??We;return v(`div`,{ref:n=>{e.index===X&&(W.current=n),t===0&&(G.current.left=n)},children:v(x,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},A(e.item,e.index))})}),v(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.right.map((e,t)=>{let r=fe(e.item),i=He&&(r?.showPlayCount??!0),a=r?.playCountDelta??Ue,o=r?.showEpisode??We;return v(`div`,{ref:n=>{e.index===X&&(W.current=n),t===0&&(G.current.right=n)},children:v(x,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},A(e.item,e.index))})}),$&&v(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&v(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:et},"aria-hidden":!0,children:v(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),$e&&v(r,{className:`w-full flex justify-center py-[12px]`,children:v(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function x({variant:e,item:t,icon:n,index:a,showPlayCount:o,playCountDelta:s,showEpisode:c,widthStyle:ee}){let te=pe(t),d=t.name||t?.title||``,ne=me(he(t.static?.browse_cnt??0,s)),f=T(t,c),p=ge(t,n,a);return v(u,{url:te,text:d,className:`w-full`,style:ee,topRightChild:p?v(S,{url:p}):void 0,bottomLeftChild:o?y(r,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] py-0 rounded-[4px] bg-[rgba(255,255,255,0.1)] ml-[4px] flex items-center gap-[4px]`,children:[v(l,{className:`w-[12px] h-[12px] text-[#fff] shrink-0`}),ne]}):null,bottomRightChild:c?f&&v(i,{className:`text-[#fff] text-[12px] leading-[18px] pr-2`,children:f}):null,textChild:v(r,{className:`py-[4px]`,children:v(i,{as:`h3`,className:`text-text1 text-[16px] leading-[24px] ${e===`waterfall`?`break-words line-clamp-3`:`line-clamp-1`}`,children:d})}),linkPath:C(t)})}function S({url:e}){return v(r,{className:`relative w-[40px] h-[20px]`,children:v(n,{src:e,alt:`corner`,width:40,height:20,className:`w-full h-auto`})})}function C(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ue(e){return e?e.trim():``}function de(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function fe(e){return e[ie]}function pe(e){return e.img_y||e.img_x||e?.coverUrl}function w(e){return typeof e==`string`?e:``}function T(e,t){if(!t)return``;if(E(e)){let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}return O(Number(e.duration||0))}function E(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 me(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e6?`${D(e/1e6)}M`:e>=1e3?`${D(e/1e3)}k`:Math.floor(e).toString()}function he(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function D(e){let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function O(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 ge(e,t,n){return w(e.badge_url)||w(t?.material_url)||``}function _e(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=k(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 k(e,t){if(!e)return 0;let n=e*1.3461538461538463,r=T(t,!0)?18:0;return n+20+r+6+16}function A(e,t){return e.id?`home-recommend-${e.id}`:`home-recommend-${t}`}export{b as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{DotsLoading as r}from"../../../ui/dots-loading.mjs";import{Text as i}from"../../../ui/text.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{LargeGridItemClient as l}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as u}from"./schema.mjs";import{useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";const _=[],v=u.data??[];function y(e){return e==null}function b(e,t){return y(e)?t:e}function x(e){return typeof e==`string`?e.trim():``}function S(e){return x(e)}function C(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function w(e){let t=e,n=x(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)||(C(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function T(e,t){return t?{...e,...t,id:b(t.id,e.id),cover:b(t.cover,e.cover),title:b(t.title,e.title),desc:b(t.desc,e.desc),play_count:b(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:b(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:b(t.tagImageUrl,e.tagImageUrl)}:e}function E(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:b(t.title,e.title),moreUrl:b(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?T(n,t.items):t.items}}function D({mode:u=`renderer`,data:y=_}){let b=u===`editor`,x=y??_,T=Array.isArray(x)&&x.length>0,D=f(()=>T?[E(v[0],x[0])]:v,[T,x]),[O,k]=m(D),A=p(``),j=p(null),{isLoading:M,show:N,hide:P,cancel:F}=s(500);d(()=>{k(D)},[D]);let I=o({enabled:!b,containerRef:j,itemRef:j,deps:[O.length]}),L=f(()=>{if(b||!T)return``;let e=D.map(e=>S(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[T,b,D]);if(d(()=>{if(b||!e()||!L||A.current===L)return;A.current=L;let n=!1;async function r(){try{N();let e=await t({ids:L.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=S(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;k(e=>e.map(e=>{let t=e.items;if(!t)return e;let n=S(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=C(r.play_count)??C(r.browse_count),o=w(r);return{...e,items:{...t,play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||P()}}return r(),()=>{n=!0,F()}},[F,L,P,b,N]),!O||O.length===0)return null;let R=O[0],z=R?.title,B=R?.moreUrl,V=I>0?I/2:160,H=!b&&M;return g(n,{className:b?`p-3 pointer-events-none`:`p-3`,children:[g(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[z&&h(i,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:z}),B&&g(a,{href:B,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,h(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),g(n,{className:`relative`,children:[O.map((e,t)=>{let{items:r}=e;return r?h(n,{ref:t===0?j:void 0,className:t>0?`mt-3`:``,children:h(l,{data:r})},`large-feature-grid-items-${t}`):null}),H&&h(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-10 pointer-events-none`,style:{top:V},"aria-hidden":!0,children:h(r,{})})]})]})}export{D as LargeFeatureGridClient};
2
+ "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/loading.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{LargeGridItemClient as l}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as u}from"./schema.mjs";import{useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";const _=[],v=u.data??[];function y(e){return e==null}function b(e,t){return y(e)?t:e}function x(e){return typeof e==`string`?e.trim():``}function S(e){return x(e)}function C(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function w(e){let t=e,n=x(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)||(C(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function T(e,t){return t?{...e,...t,id:b(t.id,e.id),cover:b(t.cover,e.cover),title:b(t.title,e.title),desc:b(t.desc,e.desc),play_count:b(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:b(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:b(t.tagImageUrl,e.tagImageUrl)}:e}function E(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:b(t.title,e.title),moreUrl:b(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?T(n,t.items):t.items}}function D({mode:u=`renderer`,data:y=_}){let b=u===`editor`,x=y??_,T=Array.isArray(x)&&x.length>0,D=f(()=>T?[E(v[0],x[0])]:v,[T,x]),[O,k]=m(D),A=p(``),j=p(null),{isLoading:M,show:N,hide:P,cancel:F}=s(500);d(()=>{k(D)},[D]);let I=o({enabled:!b,containerRef:j,itemRef:j,deps:[O.length]}),L=f(()=>{if(b||!T)return``;let e=D.map(e=>S(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[T,b,D]);if(d(()=>{if(b||!e()||!L||A.current===L)return;A.current=L;let n=!1;async function r(){try{N();let e=await t({ids:L.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=S(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;k(e=>e.map(e=>{let t=e.items;if(!t)return e;let n=S(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=C(r.play_count)??C(r.browse_count),o=w(r);return{...e,items:{...t,play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||P()}}return r(),()=>{n=!0,F()}},[F,L,P,b,N]),!O||O.length===0)return null;let R=O[0],z=R?.title,B=R?.moreUrl,V=I>0?I/2:160,H=!b&&M;return g(n,{className:b?`p-3 pointer-events-none`:`p-3`,children:[g(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[z&&h(r,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:z}),B&&g(a,{href:B,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,h(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),g(n,{className:`relative`,children:[O.map((e,t)=>{let{items:r}=e;return r?h(n,{ref:t===0?j:void 0,className:t>0?`mt-3`:``,children:h(l,{data:r})},`large-feature-grid-items-${t}`):null}),H&&h(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),H&&h(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:V},"aria-hidden":!0,children:h(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{D as LargeFeatureGridClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../../assets/icons/right_arrow.mjs";import a from"../../../../assets/images/marquee.mjs";import o from"./marquee.module.mjs";import{defaultMarqueePeriod as s}from"./schema.mjs";import{useEffect as c,useMemo as l,useRef as u,useState as d}from"react";import{X as f}from"lucide-react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{useTranslations as h}from"next-intl";const g=[],_=`marquee_list`;let v=null;function y(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function b(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function x(){if(v)return v;let e=localStorage.getItem(_);if(!e)return v={},{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};return Object.entries(t).forEach(([e,t])=>{if(!t||typeof t!=`object`)return;let r=t.closedAt;typeof r!=`number`||Number.isNaN(r)||(n[e]={closedAt:r})}),v=n,n}catch{return v={},{}}}function S(e){v=e,localStorage.setItem(_,JSON.stringify(e))}function C(e){return x()[e]??{}}function w(e,t){S({...x(),[e]:t})}function T(e,t){return b(e.closedAt,t)}function E(_){let v=h(`components.biz.business.marquee`),{marqueeKey:b,contents:x=g,click:S,close:E,displayStrategy:D,mode:O=`renderer`}=_,k=O===`editor`,A=e(),j=u(!1),[M,N]=d(k),[P,F]=d(k),[I,L]=d(!1),[R,z]=d(0);c(()=>{L(!0)},[]);let B=l(()=>{let e=D?.period??s,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,a=n?new Date(n).getTime():2**53-1;return r>=i&&r<=a},[D?.period]),V=l(()=>(x??[]).map(e=>({...e,text:y(String(e?.text??``))})).filter(e=>!!e.text),[x]),H=b?.trim()??``;if(c(()=>{z(0)},[l(()=>V.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[V]),H]),c(()=>{k||H||j.current||process.env.NODE_ENV===`production`||(j.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[k,H]),c(()=>{if(I){if(k){N(!0),F(!0);return}if(!D?.rule||!B||V.length===0){N(!1),F(!0);return}if(!H){N(!1),F(!0);return}N(!T(C(H),D.rule)),F(!0)}},[D?.rule,k,I,B,V.length,H]),!k&&(!I||!P||!M||!B)||V.length===0)return null;let U=V[R%V.length],W=S?.enabled===!0,G=S?.link||U.link,K=W&&!!G,q=E?.enabled===!0;function J(){!H||!D?.rule||V.length===0||w(H,{...C(H),closedAt:Date.now()})}let Y=e=>{e.stopPropagation(),N(!1),J()};function X(e){if(typeof window>`u`){A.push(e);return}if(window.isWebView===!0)try{let t=new URL(e,window.location.href);if(t.origin===window.location.origin){let e=t.pathname.split(`/`).filter(Boolean),n=e.findIndex(e=>e===`video`);n>=0&&(e[n]=`webview`,t.pathname=`/${e.join(`/`)}`)}window.location.href=t.toString();return}catch{window.location.href=e;return}A.push(e)}function Z(){k||K&&G&&(N(!1),J(),X(G))}let Q=()=>{k||!M||V.length<=1||z(e=>(e+1)%V.length)},$=k?o[`marquee-item-paused`]:V.length>1?o[`marquee-item-once`]:o[`marquee-item-loop`];return p(n,{className:k?`px-3 py-2 w-full bg-bg1 pointer-events-none`:`px-3 py-2 w-full bg-bg1`,children:m(n,{className:`pl-[2px] pr-[12px] py-[2px] flex items-center w-full cursor-pointer relative rounded-[8px] overflow-hidden ${o[`marquee-shell`]}`,onClick:Z,children:[p(n,{className:`relative shrink-0 w-[36px] h-[36px] mr-[4px]`,children:p(t,{src:typeof a==`string`?a:a.src,alt:v(`noticeAlt`),fill:!0,className:`object-cover`,unoptimized:!0})}),p(n,{className:`flex-1 overflow-hidden relative h-[22px] ml-1`,children:p(n,{className:`absolute inset-y-0 left-0 flex items-center whitespace-nowrap ${$}`,onAnimationEnd:Q,children:p(r,{className:`inline-block text-[14px] text-[#f59e0b] leading-[22px] font-medium`,children:U.text})},`marquee-item-${R}`)}),m(n,{className:`flex items-center gap-[12px] shrink-0 ml-[4px]`,children:[K&&p(i,{className:`w-[16px] h-[16px] text-[#f59e0b]`}),q&&p(n,{className:`opacity-30 hover:opacity-100 transition-opacity`,onClick:Y,children:p(f,{className:`w-[12px] h-[12px] text-[#F59E0B]`})})]})]})})}export{E as MarqueeClient};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../../assets/icons/marquee-enter.mjs";import a from"../../../../assets/images/marquee.mjs";import o from"./marquee.module.mjs";import{defaultMarqueePeriod as s}from"./schema.mjs";import{useEffect as c,useMemo as l,useRef as u,useState as d}from"react";import{X as f}from"lucide-react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{useTranslations as h}from"next-intl";const g=[],_=`marquee_list`;let v=null;function y(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function b(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function x(){if(v)return v;let e=localStorage.getItem(_);if(!e)return v={},{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};return Object.entries(t).forEach(([e,t])=>{if(!t||typeof t!=`object`)return;let r=t.closedAt;typeof r!=`number`||Number.isNaN(r)||(n[e]={closedAt:r})}),v=n,n}catch{return v={},{}}}function S(e){v=e,localStorage.setItem(_,JSON.stringify(e))}function C(e){return x()[e]??{}}function w(e,t){S({...x(),[e]:t})}function T(e,t){return b(e.closedAt,t)}function E(_){let v=h(`components.biz.business.marquee`),{marqueeKey:b,contents:x=g,click:S,close:E,displayStrategy:D,mode:O=`renderer`}=_,k=O===`editor`,A=e(),j=u(!1),[M,N]=d(k),[P,F]=d(k),[I,L]=d(!1),[R,z]=d(0);c(()=>{L(!0)},[]);let B=l(()=>{let e=D?.period??s,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,a=n?new Date(n).getTime():2**53-1;return r>=i&&r<=a},[D?.period]),V=l(()=>(x??[]).map(e=>({...e,text:y(String(e?.text??``))})).filter(e=>!!e.text),[x]),H=b?.trim()??``;if(c(()=>{z(0)},[l(()=>V.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[V]),H]),c(()=>{k||H||j.current||process.env.NODE_ENV===`production`||(j.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[k,H]),c(()=>{if(I){if(k){N(!0),F(!0);return}if(!D?.rule||!B||V.length===0){N(!1),F(!0);return}if(!H){N(!1),F(!0);return}N(!T(C(H),D.rule)),F(!0)}},[D?.rule,k,I,B,V.length,H]),!k&&(!I||!P||!M||!B)||V.length===0)return null;let U=V[R%V.length],W=S?.enabled===!0,G=S?.link||U.link,K=W&&!!G,q=E?.enabled===!0;function J(){!H||!D?.rule||V.length===0||w(H,{...C(H),closedAt:Date.now()})}let Y=e=>{e.stopPropagation(),N(!1),J()};function X(e){if(typeof window>`u`){A.push(e);return}if(window.isWebView===!0)try{let t=new URL(e,window.location.href);if(t.origin===window.location.origin){let e=t.pathname.split(`/`).filter(Boolean),n=e.findIndex(e=>e===`video`);n>=0&&(e[n]=`webview`,t.pathname=`/${e.join(`/`)}`)}window.location.href=t.toString();return}catch{window.location.href=e;return}A.push(e)}function Z(){k||K&&G&&(N(!1),J(),X(G))}let Q=()=>{k||!M||V.length<=1||z(e=>(e+1)%V.length)},$=k?o[`marquee-item-paused`]:V.length>1?o[`marquee-item-once`]:o[`marquee-item-loop`];return p(n,{className:k?`px-3 py-2 w-full bg-bg1 pointer-events-none`:`px-3 py-2 w-full bg-bg1`,children:m(n,{className:`pl-[2px] pr-[12px] py-[2px] flex items-center w-full cursor-pointer relative rounded-[8px] overflow-hidden ${o[`marquee-shell`]}`,onClick:Z,children:[p(n,{className:`relative shrink-0 w-[36px] h-[36px] mr-[4px]`,children:p(t,{src:typeof a==`string`?a:a.src,alt:v(`noticeAlt`),fill:!0,className:`object-cover`,unoptimized:!0})}),p(n,{className:`flex-1 overflow-hidden relative h-[22px] ml-1`,children:p(n,{className:`absolute inset-y-0 left-0 flex items-center whitespace-nowrap ${$}`,onAnimationEnd:Q,children:p(r,{className:`inline-block text-[14px] text-[#f59e0b] leading-[22px] font-medium`,children:U.text})},`marquee-item-${R}`)}),m(n,{className:`flex items-center gap-[12px] shrink-0 ml-[4px]`,children:[K&&p(i,{className:`h-[16px] w-[16px] shrink-0`}),q&&p(n,{className:`opacity-30 hover:opacity-100 transition-opacity`,onClick:Y,children:p(f,{className:`w-[12px] h-[12px] text-[#F59E0B]`})})]})]})})}export{E as MarqueeClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as r,gUserViewUserInfo as i}from"../../../../../service/generated/client.mjs";import{useRouter as a}from"../../../../../utils/use-compatible-router.mjs";import{Box as o}from"../../../../ui/box.mjs";import{Skeleton as s}from"../../../../ui/skeleton.mjs";import{Text as c}from"../../../../ui/text.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as u}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as d}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as f}from"../../../../common/icons/setting.mjs";import{UserProfileAvatar as p}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as m}from"./user-profile-cover-background.mjs";import{useEffect as ee,useMemo as te,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";import y from"next/link";const b=n.persist,x=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,S=`/images/mine/img_mine_head_bg.png`;function C({showBackButton:n,isMine:r,enableCustomBackground:i,className:a}){return _(o,{className:e(`flex flex-col relative`,a),children:[_(o,{className:`absolute top-0 p-3 z-10 flex items-center justify-between w-full`,children:[g(t,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!n}),disabled:!0,children:g(d,{className:`w-4 h-4`})}),g(o,{className:e({invisible:!r}),children:g(f,{})})]}),g(o,{className:i?`h-33.75`:`h-24`,children:g(s,{className:`h-full w-full rounded-none`})}),_(o,{className:`flex-1 px-3`,children:[_(o,{className:`relative flex justify-end`,children:[g(s,{className:`absolute bottom-3 left-0 h-22 w-22 rounded-full`}),g(o,{className:`py-4 h-12`})]}),_(o,{className:`flex items-center justify-between gap-1`,children:[g(s,{className:`h-7 w-[132px]`}),g(s,{className:`h-10 w-[104px] rounded-full shrink-0`})]}),_(o,{className:`min-h-11 pt-1 pb-0 flex flex-col gap-2`,children:[g(s,{className:`h-4 w-[76%]`}),g(s,{className:`h-4 w-[58%]`})]})]})]})}function w({id:s,enableCustomBackground:w=!0,showBackButton:T=!0,requireLogin:E=!1,isEditorPreview:D=!1,className:O,mode:k=`renderer`}){let A=v(`components.pages.profile`),j=D||k===`editor`,M=!j,N=a(),{open:ne}=l(),{isLogin:P,userId:F,token:re}=n(),[ie,I]=h(!1);ee(()=>{if(!b){I(!0);return}I(b.hasHydrated());let e=b.onHydrate(()=>{I(!1)}),t=b.onFinishHydration(()=>{I(!0)});return()=>{e(),t()}},[]);let L=j?!1:P&&!!F&&!!re,R=j?``:F,z=R,B=s==null||!!s&&!!z&&s===z,V=B?[`user-profile`,`mine`]:[`user-profile`,`profile`,s],{data:H,isLoading:U}=u(j?[`editor-preview`,...V]:V,()=>s?i({target_user_id:s,user_id:R||s}):r({user_id:s||R||``}),{staleTime:0,enabled:M&&(!!s||!!R)}),W=te(()=>{let e=H?H.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${s??``}`,avatar:e.avatar||x,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||S}:{}},[s,H]),G=j||E&&B&&!L,K=B&&L&&!G,q=!L,J=w&&K,Y=w&&q,ae={name:A(`client.welcomeToPlanet`),description:A(`client.exploreAdventures`),avatar:x,followingCnt:0,followersCnt:0,likeCnt:0,background:S};function X(){ne()}function oe(){N.back()}let se=G?g(t,{className:`rounded-full`,size:`lg`,onClick:X,children:A(`client.loginNow`)}):B?g(y,{href:`/edit`,children:g(t,{variant:`outline`,className:`rounded-full`,children:A(`client.editProfile`)})}):null,Z=G?ae:W,Q=Z.name||``,$=Z.description||Z.signature||``,ce=Z.avatar||``;return M&&U&&!H?g(C,{showBackButton:T,isMine:B,enableCustomBackground:w,className:O}):_(o,{className:e(`flex flex-col relative`,O),children:[_(o,{className:`absolute top-0 p-3 z-10 flex items-center justify-between w-full`,children:[g(t,{variant:`ghost`,size:`icon-xs`,onClick:oe,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!T}),children:g(d,{className:`w-4 h-4`})}),g(y,{href:`/settings`,className:e({invisible:!B}),children:g(f,{})})]}),g(m,{isMine:J,enableCustomBackground:w,src:Z.background,onUnauthorizedClick:Y?X:void 0}),_(o,{className:`flex-1 px-3`,children:[_(o,{className:`relative flex justify-end`,children:[g(p,{isMine:K,src:ce,alt:Q||`avatar`,onUnauthorizedClick:q?X:void 0}),g(o,{className:`flex divide-x divide-text1/5 py-4 h-12`})]}),_(o,{className:`flex items-center justify-between gap-1`,children:[P&&B?g(y,{href:`/edit`,children:g(c,{as:`p`,className:`text-text1 max-w-[14em] text-xl overflow-hidden whitespace-nowrap text-ellipsis font-bold `,children:Q})}):g(c,{as:`p`,className:`text-text1 max-w-[14em] text-xl overflow-hidden whitespace-nowrap text-ellipsis font-bold `,children:Q}),se]}),$&&g(o,{className:`min-h-11 pt-1 pb-0`,children:g(c,{as:`p`,className:`text-sm line-clamp-2 break-all text-text1/66`,children:$})})]})]})}export{w as UserProfileHeaderClient};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as r,gUserViewUserInfo as i}from"../../../../../service/generated/client.mjs";import{useRouter as a}from"../../../../../utils/use-compatible-router.mjs";import{Box as o}from"../../../../ui/box.mjs";import{Text as s}from"../../../../ui/text.mjs";import{Skeleton as c}from"../../../../ui/skeleton.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as u}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as d}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as f}from"../../../../common/icons/setting.mjs";import{UserProfileAvatar as p}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as m}from"./user-profile-cover-background.mjs";import{useEffect as ee,useMemo as te,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";import y from"next/link";const b=n.persist,x=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,S=`/images/mine/img_mine_head_bg.png`;function C({showBackButton:n,isMine:r,enableCustomBackground:i,className:a}){return _(o,{className:e(`flex flex-col relative`,a),children:[_(o,{className:`absolute top-0 p-3 z-10 flex items-center justify-between w-full`,children:[g(t,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!n}),disabled:!0,children:g(d,{className:`w-4 h-4`})}),g(o,{className:e({invisible:!r}),children:g(f,{})})]}),g(o,{className:i?`h-33.75`:`h-24`,children:g(c,{className:`h-full w-full rounded-none`})}),_(o,{className:`flex-1 px-3`,children:[_(o,{className:`relative flex justify-end`,children:[g(c,{className:`absolute bottom-3 left-0 h-22 w-22 rounded-full`}),g(o,{className:`py-4 h-12`})]}),_(o,{className:`flex items-center justify-between gap-1`,children:[g(c,{className:`h-7 w-[132px]`}),g(c,{className:`h-10 w-[104px] rounded-full shrink-0`})]}),_(o,{className:`min-h-11 pt-1 pb-0 flex flex-col gap-2`,children:[g(c,{className:`h-4 w-[76%]`}),g(c,{className:`h-4 w-[58%]`})]})]})]})}function w({id:c,enableCustomBackground:w=!0,showBackButton:T=!0,requireLogin:E=!1,isEditorPreview:D=!1,className:O,mode:k=`renderer`}){let A=v(`components.pages.profile`),j=D||k===`editor`,M=!j,N=a(),{open:ne}=l(),{isLogin:P,userId:F,token:re}=n(),[ie,I]=h(!1);ee(()=>{if(!b){I(!0);return}I(b.hasHydrated());let e=b.onHydrate(()=>{I(!1)}),t=b.onFinishHydration(()=>{I(!0)});return()=>{e(),t()}},[]);let L=j?!1:P&&!!F&&!!re,R=j?``:F,z=R,B=c==null||!!c&&!!z&&c===z,V=B?[`user-profile`,`mine`]:[`user-profile`,`profile`,c],{data:H,isLoading:U}=u(j?[`editor-preview`,...V]:V,()=>c?i({target_user_id:c,user_id:R||c}):r({user_id:c||R||``}),{staleTime:0,enabled:M&&(!!c||!!R)}),W=te(()=>{let e=H?H.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${c??``}`,avatar:e.avatar||x,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||S}:{}},[c,H]),G=j||E&&B&&!L,K=B&&L&&!G,q=!L,J=w&&K,Y=w&&q,ae={name:A(`client.welcomeToPlanet`),description:A(`client.exploreAdventures`),avatar:x,followingCnt:0,followersCnt:0,likeCnt:0,background:S};function X(){ne()}function oe(){N.back()}let se=G?g(t,{className:`rounded-full`,size:`lg`,onClick:X,children:A(`client.loginNow`)}):B?g(y,{href:`/edit`,children:g(t,{variant:`outline`,className:`rounded-full`,children:A(`client.editProfile`)})}):null,Z=G?ae:W,Q=Z.name||``,$=Z.description||Z.signature||``,ce=Z.avatar||``;return M&&U&&!H?g(C,{showBackButton:T,isMine:B,enableCustomBackground:w,className:O}):_(o,{className:e(`flex flex-col relative`,O),children:[_(o,{className:`absolute top-0 p-3 z-10 flex items-center justify-between w-full`,children:[g(t,{variant:`ghost`,size:`icon-xs`,onClick:oe,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!T}),children:g(d,{className:`w-4 h-4`})}),g(y,{href:`/settings`,className:e({invisible:!B}),children:g(f,{})})]}),g(m,{isMine:J,enableCustomBackground:w,src:Z.background,onUnauthorizedClick:Y?X:void 0}),_(o,{className:`flex-1 px-3`,children:[_(o,{className:`relative flex justify-end`,children:[g(p,{isMine:K,src:ce,alt:Q||`avatar`,onUnauthorizedClick:q?X:void 0}),g(o,{className:`flex divide-x divide-text1/5 py-4 h-12`})]}),_(o,{className:`flex items-center justify-between gap-1`,children:[P&&B?g(y,{href:`/edit`,children:g(s,{as:`p`,className:`text-text1 max-w-[14em] text-xl overflow-hidden whitespace-nowrap text-ellipsis font-bold `,children:Q})}):g(s,{as:`p`,className:`text-text1 max-w-[14em] text-xl overflow-hidden whitespace-nowrap text-ellipsis font-bold `,children:Q}),se]}),$&&g(o,{className:`min-h-11 pt-1 pb-0`,children:g(s,{as:`p`,className:`text-sm line-clamp-2 break-all text-text1/66`,children:$})})]})]})}export{w as UserProfileHeaderClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pUserUploadUserBgImage as t}from"../../../../../service/generated/client.mjs";import{uploadFile as n}from"../../../../../utils/upload-file.mjs";import{Image as r}from"../../../../ui/image.mjs";import{Box as i}from"../../../../ui/box.mjs";import{Input as a}from"../../../../ui/input.mjs";import{useDeleteRequest as o}from"../../../../../hooks/query/use-query.mjs";import{BackgroundPreviewModal as s}from"../../../../common/background-preview-modal/background-preview-modal.mjs";import{showImageCrop as c}from"../../../../common/image-crop/show-image-crop.mjs";import{useEffect as l,useRef as u,useState as d}from"react";import{Fragment as f,jsx as p,jsxs as m}from"react/jsx-runtime";import{toast as h}from"sonner";import{useTranslations as g}from"next-intl";const _=[`image/jpeg`,`image/png`];function v(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return _.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function y({isMine:_,enableCustomBackground:y=!0,src:b,onUnauthorizedClick:x}){let S=g(`components.pages.profile`),C=`/images/mine/img_mine_head_bg.png`,w=u(null),{userId:T,setUserInfo:E,userInfo:D}=e(),O=o(),[k,A]=d(!1),[j,M]=d(!1),N=y&&(!!_||typeof x==`function`);l(()=>{y||M(!1)},[y]);let P=()=>{if(y){if(_){k||M(!0);return}x?.()}},F=()=>{M(!1)};function I(){k||w.current?.click()}async function L(e){let r=e.target.files?.[0];if(e.target&&(e.target.value=``),r)try{if(!v(r)){h.error(S(`client.imageTypeInvalid`));return}if(r.size>5242880){h.error(S(`client.imageTooLarge`));return}A(!0);let e=await n(await c(r,{aspectRatio:430/256,cropShape:`rect`,quality:.92,maxWidth:1920,maxHeight:1920}),1);await t({user_id:String(T),bg_image:e.objectKey}),E({...D,bg_image:e.objectKey}),O([`user-profile`,`mine`]),M(!1),h.success(S(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传背景图失败`,e),e instanceof Error&&e.message!==`用户取消`&&h.error(S(`client.uploadFailed`))}finally{A(!1)}}return m(f,{children:[p(i,{className:y?`h-33.75`:`h-24`,children:y?p(i,{className:`relative h-full w-full`,onClick:N?P:void 0,children:p(r,{alt:`cover background`,fill:!0,objectFit:`cover`,className:`pointer-events-none`,src:b||C})}):p(i,{className:`h-full w-full bg-bg1`})}),y&&m(f,{children:[p(s,{open:j,onClose:F,bgUrl:b||C,onUpload:I}),p(a,{ref:w,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:L})]})]})}export{y as UserProfileCoverBackground};
2
+ "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{pUserUploadUserBgImage as t}from"../../../../../service/generated/client.mjs";import{uploadFile as n}from"../../../../../utils/upload-file.mjs";import{Image as r}from"../../../../ui/image.mjs";import{Box as i}from"../../../../ui/box.mjs";import{Input as a}from"../../../../ui/input.mjs";import{useDeleteRequest as o}from"../../../../../hooks/query/use-query.mjs";import{ImageCropModal as s}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{BackgroundPreviewModal as c}from"../../../../common/background-preview-modal/background-preview-modal.mjs";import{useCallback as l,useEffect as u,useRef as d,useState as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";import{toast as g}from"sonner";import{useTranslations as _}from"next-intl";const v=[`image/jpeg`,`image/png`];function y(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return v.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function b({isMine:v,enableCustomBackground:b=!0,src:x,onUnauthorizedClick:S}){let C=_(`components.pages.profile`),w=`/images/mine/img_mine_head_bg.png`,T=d(null),{userId:E,setUserInfo:D,userInfo:O}=e(),k=o(),[A,j]=f(!1),[M,N]=f(!1),[P,F]=f(!1),[I,L]=f(``),R=b&&(!!v||typeof S==`function`),z=l(()=>{I&&(URL.revokeObjectURL(I),L(``))},[I]),B=()=>{if(b){if(v){A||N(!0);return}S?.()}},V=()=>{N(!1)};function H(){A||T.current?.click()}async function U(e){let t=e.target.files?.[0];if(e.target&&(e.target.value=``),t)try{if(!y(t)){g.error(C(`client.imageTypeInvalid`));return}if(t.size>5242880){g.error(C(`client.imageTooLarge`));return}z(),L(URL.createObjectURL(t)),N(!1),F(!0)}catch(e){console.error(`上传背景图失败`,e),g.error(C(`client.uploadFailed`))}}let W=l(()=>{F(!1),z()},[z]);u(()=>{b||(N(!1),F(!1),z())},[z,b]);async function G(e){if(!E){g.error(C(`client.loginRequiredForUpload`));return}try{j(!0);let r=await n(new File([e],`background.jpg`,{type:`image/jpeg`}),1);await t({user_id:String(E),bg_image:r.objectKey}),D({...O,bg_image:r.objectKey}),k([`user-profile`,`mine`]),N(!1),F(!1),g.success(C(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传背景图失败`,e),g.error(C(`client.uploadFailed`))}finally{z(),j(!1)}}return h(p,{children:[m(i,{className:b?`h-33.75`:`h-24`,children:b?m(i,{className:`relative h-full w-full`,onClick:R?B:void 0,children:m(r,{alt:`cover background`,fill:!0,objectFit:`cover`,className:`pointer-events-none`,src:x||w})}):m(i,{className:`h-full w-full bg-bg1`})}),b&&h(p,{children:[m(c,{open:M,onClose:V,bgUrl:x||w,onUpload:H}),m(a,{ref:T,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:U}),m(s,{open:P,onClose:W,imageSrc:I,onConfirm:G,cropShape:`rect`,aspectRatio:430/256})]})]})}export{b as UserProfileCoverBackground};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Tabs as a,TabsList as o,TabsTrigger as s}from"../../../../ui/tabs.mjs";import{Text as c}from"../../../../ui/text.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{profileMainMineTabOptions as u,profileMainProfileTabOptions as d}from"./variants.mjs";import{useEffect as f,useMemo as p,useRef as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";import{parseAsString as v,useQueryState as y}from"nuqs";function b(e){return e?[...u]:[...d]}function x(e,t){let n=b(t);return n.includes(e)?e:n[0]}function S(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function C(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(S(t))return t;t=t.parentElement}return null}function w(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function T(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function E({profileId:u,currentUserId:d,isMine:S,renderMode:E,className:D,children:O}){let k=_(`components.pages.profile`),A=m(null),j=l(e=>e.open),M=n(e=>e.userId),N=b(S),[P,F]=y(`tab`,v.withDefault(`collect`)),I=p(()=>x(P,S),[S,P]),L=S?d||M||``:u,R=p(()=>`profile-scroll:${L||(S?`mine`:`guest`)}:${I}`,[S,I,L]);f(()=>{P!==I&&F(I,{shallow:!1})},[I,F,P]),f(()=>{if(typeof window>`u`)return;let e=C(A.current),t=window.sessionStorage.getItem(R),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{T(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(R,String(w(e))),r=!1}))};return e?(e.addEventListener(`scroll`,i,{passive:!0}),()=>{e.removeEventListener(`scroll`,i)}):(window.addEventListener(`scroll`,i,{passive:!0}),()=>{window.removeEventListener(`scroll`,i)})},[R]);let z={collect:k(`client.collect`),like:k(`client.like`),history:k(`client.history`)},B=O;return E===`login-required`?B=g(r,{className:`flex gap-4 flex-col items-center justify-center py-10 text-center`,children:[h(c,{className:`text-base text-text1`,children:k(`client.loginToView`)}),h(t,{size:`lg`,variant:`secondary`,onClick:j,children:k(`client.loginNow`)})]}):E===`privacy-collect`?B=h(i,{type:`no-content`,text:k(`client.collectionNotPublic`)}):E===`privacy-like`&&(B=h(i,{type:`no-content`,text:k(`client.likeNotPublic`)})),g(r,{ref:A,className:e(D),children:[h(r,{className:`border-b bg-bg1 sticky z-10 top-0 border-text1/5 h-10`,children:h(a,{value:I,onValueChange:e=>{F(e,{shallow:!1})},className:`w-fit`,children:h(o,{variant:`default`,className:`inline-flex h-9`,children:N.map(e=>h(s,{value:e,className:`p-2.5 !text-base !w-fit data-active:!text-lg data-active:font-bold`,children:z[e]},e))})})}),h(r,{className:`p-2`,children:B})]})}export{E as UserProfileMainShell};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Text as a}from"../../../../ui/text.mjs";import{Tabs as o,TabsList as s,TabsTrigger as c}from"../../../../ui/tabs.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{profileMainMineTabOptions as u,profileMainProfileTabOptions as d}from"./variants.mjs";import{useEffect as f,useMemo as p,useRef as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";import{parseAsString as v,useQueryState as y}from"nuqs";function b(e){return e?[...u]:[...d]}function x(e,t){let n=b(t);return n.includes(e)?e:n[0]}function S(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function C(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(S(t))return t;t=t.parentElement}return null}function w(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function T(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function E({profileId:u,currentUserId:d,isMine:S,renderMode:E,className:D,children:O}){let k=_(`components.pages.profile`),A=m(null),j=l(e=>e.open),M=n(e=>e.userId),N=b(S),[P,F]=y(`tab`,v.withDefault(`collect`)),I=p(()=>x(P,S),[S,P]),L=S?d||M||``:u,R=p(()=>`profile-scroll:${L||(S?`mine`:`guest`)}:${I}`,[S,I,L]);f(()=>{P!==I&&F(I,{shallow:!1})},[I,F,P]),f(()=>{if(typeof window>`u`)return;let e=C(A.current),t=window.sessionStorage.getItem(R),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{T(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(R,String(w(e))),r=!1}))};return e?(e.addEventListener(`scroll`,i,{passive:!0}),()=>{e.removeEventListener(`scroll`,i)}):(window.addEventListener(`scroll`,i,{passive:!0}),()=>{window.removeEventListener(`scroll`,i)})},[R]);let z={collect:k(`client.collect`),like:k(`client.like`),history:k(`client.history`)},B=O;return E===`login-required`?B=g(r,{className:`flex gap-4 flex-col items-center justify-center py-10 text-center`,children:[h(a,{className:`text-base text-text1`,children:k(`client.loginToView`)}),h(t,{size:`lg`,variant:`secondary`,onClick:j,children:k(`client.loginNow`)})]}):E===`privacy-collect`?B=h(i,{type:`no-content`,text:k(`client.collectionNotPublic`)}):E===`privacy-like`&&(B=h(i,{type:`no-content`,text:k(`client.likeNotPublic`)})),g(r,{ref:A,className:e(D),children:[h(r,{className:`border-b bg-bg1 sticky z-10 top-0 border-text1/5 h-10`,children:h(o,{value:I,onValueChange:e=>{F(e,{shallow:!1})},className:`w-fit`,children:h(s,{variant:`default`,className:`inline-flex h-9`,children:N.map(e=>h(c,{value:e,className:`p-2.5 !text-base !w-fit data-active:!text-lg data-active:font-bold`,children:z[e]},e))})})}),h(r,{className:`p-2`,children:B})]})}export{E as UserProfileMainShell};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{gCommunityGetSubscribedCollections as n,gCommunityGetUserCollections as r,gInteractionListCollects as i,pInteractionBatchDeleteCollects as a}from"../../../../../../../service/generated/client.mjs";import{Box as o}from"../../../../../../ui/box.mjs";import{Checkbox as ee}from"../../../../../../ui/checkbox.mjs";import{Tabs as te,TabsList as ne,TabsTrigger as s}from"../../../../../../ui/tabs.mjs";import{Text as re}from"../../../../../../ui/text.mjs";import{useMutation as ie,usePaginated as c,useUpdateRequest as ae}from"../../../../../../../hooks/query/use-query.mjs";import{DeleteConfirmDialog as oe}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as se}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as ce}from"../../../../../../common/list/post-list/post-list.mjs";import{VideoList as le}from"../../../../../../common/list/video-list/video-list.mjs";import{useEffect as l,useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useTranslations as h}from"next-intl";import g from"dayjs";import ue from"next/link";import{parseAsString as _,useQueryState as v}from"nuqs";const y={video:1,post:2};function de(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??w).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function b(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function fe(e,t){let n=t[e.content_id||``]?.create_time,r=b(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:g(n).toDate().getTime()}}function pe(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:e.img_x||``,duration:Number(e.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:g(n).toDate().getTime()}}function x(e){let t=b(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function S(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function C(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(x),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,contents:r===0?S(e.collection_id||`collection`):n}}const w=[],me=[`video`,`post`,`collection`],he=[`created`,`subscribed`];function T({mode:g=`renderer`,userId:b,showCreateAction:x=!1,queryKeyPrefix:S,isMine:T=!1}){let ge=h(),E=h(`components.pages.profile.components.tabs`),D=g===`renderer`,O=S??[],[k,A]=v(`collectTab`,_.withDefault(`video`)),[j,M]=v(`collectCollectionTab`,_.withDefault(`created`)),N=u(()=>me.includes(k)?k:`video`,[k]),P=u(()=>he.includes(j)?j:`created`,[j]),[F,I]=d(!1),[_e,L]=d(!1),[R,z]=d(()=>new Set),{userId:ve,userInfo:ye}=t(),B=b||ve||ye?.userId||``,be=ae();async function xe(e,t){if(!B)return{data:{list:[],total:0}};let n=await i({user_id:B,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},a=t===y.video?(n.data?.video_infos??[]).map(e=>pe(e,r)):(n.data?.post_infos??[]).map(e=>fe(e,r));return{data:{list:a,total:n.data?.total??a.length}}}let V=c({key:[...O,`user-collect-video`,B],initialPageParam:1,async queryFn(e){return xe(e,y.video)},options:{staleTime:0,enabled:D},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),H=c({key:[...O,`user-collect-post`,B],initialPageParam:1,options:{staleTime:0,enabled:D},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function Se(e){if(!B)return{data:{list:[],total:0}};let t=await r({page:e,user_id:b,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(C),total:t.data?.data?.total??n.length}}}async function Ce(e){if(!B)return{data:{list:[],total:0}};let t=(await n({page:e,user_id:b,page_size:10})).data?.data,r=t?.collections??[];return{data:{list:r.map(C),total:t?.total??r.length}}}let U=c({key:[...O,`user-collection-created`,B],initialPageParam:1,options:{staleTime:0,enabled:D},async queryFn(e){return Se(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),W=c({key:[...O,`user-collection-subscribed`,B],initialPageParam:1,options:{staleTime:0,enabled:D},async queryFn(e){return Ce(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),G=u(()=>V.data?.pages.flatMap(e=>e.data?.list??w)??w,[V.data]),K=u(()=>H.data?.pages.flatMap(e=>e.data?.list??w)??w,[H.data]),we=u(()=>U.data?.pages.flatMap(e=>e.data?.list??w)??w,[U.data]),Te=u(()=>W.data?.pages.flatMap(e=>e.data?.list??w)??w,[W.data]),Ee=N===`video`?G:N===`post`?K:w,q=new Set(Ee.map(e=>e.id)),J=N===`video`?V:H,Y=P===`created`?U:W,De=P===`created`?we:Te,X=N===`video`,Oe=[...O,`user-collect-video`,B],ke=[...O,`user-collect-post`,B],{mutateAsync:Ae,isPending:Z}=ie(async e=>await a({app_id:0,user_id:B,folder_id:``,content_type:X?1:2,content_ids:e})),je=()=>{I(!F),z(new Set)};l(()=>{z(new Set),N===`collection`&&I(!1)},[N]),l(()=>{k!==N&&A(N)},[N,k,A]),l(()=>{j!==P&&M(P)},[P,j,M]);let Q=e=>{z(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},Me=()=>{R.size===q.size&&q.size>0?z(new Set):z(new Set(q))};function Ne(){R.size===0||Z||L(!0)}function Pe(){Z||L(!1)}async function Fe(){if(!(R.size===0||Z)){if(!B){m.error(E(`collectTab.pleaseLogin`));return}try{let e=Array.from(R),t=await Ae(e);if(t.code===0){m.success(E(`collectTab.uncollectedSuccess`));let t=new Set(e);be(X?Oe:ke,e=>de(e,t)),L(!1),z(new Set),I(!1)}else m.error(t.message||E(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),m.error(E(`collectTab.operationFailed`))}}}let $=async()=>{if(D){if(N===`collection`){await Y.fetchNextPage();return}await J.fetchNextPage()}};return p(o,{children:[p(o,{className:`flex justify-between items-center`,children:[f(te,{value:N,onValueChange:e=>{A(e)},children:p(ne,{variant:`tag`,children:[f(s,{value:`video`,className:`text-sm`,children:E(`collectTab.video`)}),f(s,{value:`collection`,className:`text-sm`,children:E(`collectTab.collections`)})]})}),N===`collection`?x&&f(ue,{href:`/collection/create`,className:`flex items-center justify-center rounded-full text-text3 text-sm`,children:ge(`components.pages.collectionCreate.form.create`)}):T&&f(e,{variant:`ghost`,size:`sm`,className:`h-6.25 px-0 text-sm text-text3`,onClick:je,children:E(F?`collectTab.cancel`:`collectTab.edit`)})]}),f(o,{className:`pt-2`,children:N===`video`?f(le,{list:G,showVideoProgress:!1,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:$,emptyText:E(`collectTab.emptyContent`),isEditMode:F,selectedIds:R,onToggleSelection:Q}):N===`post`?f(ce,{list:K,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:$,emptyText:E(`collectTab.emptyContent`),isEditMode:F,selectedIds:R,onToggleSelection:Q}):f(se,{list:De,loading:Y.isFetching,hasMore:Y.hasNextPage??!1,loadMore:$,emptyText:E(`collectTab.emptyContent`)})}),F&&N!==`collection`&&p(o,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-height)]`,children:[p(o,{className:`flex items-center gap-2`,children:[f(ee,{checked:R.size===q.size&&q.size>0,onCheckedChange:Me}),f(re,{className:`text-sm text-text1`,children:E(`collectTab.selectAll`)})]}),f(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:R.size>0?`default`:`outline`,disabled:R.size===0||Z,onClick:Ne,children:E(Z?`collectTab.processing`:`collectTab.delete`)})]}),f(oe,{open:_e,onOpenChange:L,onCancel:Pe,onConfirm:Fe,title:``,description:E(`collectTab.deleteConfirmDescription`),confirmText:E(`collectTab.delete`),cancelText:E(`collectTab.cancel`),isConfirming:Z})]})}export{T as CollectTab};
2
+ "use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{gCommunityGetSubscribedCollections as n,gCommunityGetUserCollections as r,gInteractionListCollects as i,pInteractionBatchDeleteCollects as a}from"../../../../../../../service/generated/client.mjs";import{Box as o}from"../../../../../../ui/box.mjs";import{Checkbox as ee}from"../../../../../../ui/checkbox.mjs";import{Text as te}from"../../../../../../ui/text.mjs";import{Tabs as ne,TabsList as re,TabsTrigger as s}from"../../../../../../ui/tabs.mjs";import{useMutation as ie,usePaginated as c,useUpdateRequest as ae}from"../../../../../../../hooks/query/use-query.mjs";import{DeleteConfirmDialog as oe}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as se}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as ce}from"../../../../../../common/list/post-list/post-list.mjs";import{VideoList as le}from"../../../../../../common/list/video-list/video-list.mjs";import{useEffect as l,useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useTranslations as h}from"next-intl";import g from"dayjs";import ue from"next/link";import{parseAsString as _,useQueryState as v}from"nuqs";const y={video:1,post:2};function de(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??w).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function b(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function fe(e,t){let n=t[e.content_id||``]?.create_time,r=b(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:g(n).toDate().getTime()}}function pe(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:e.img_x||``,duration:Number(e.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:g(n).toDate().getTime()}}function x(e){let t=b(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function S(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function C(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(x),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,contents:r===0?S(e.collection_id||`collection`):n}}const w=[],me=[`video`,`post`,`collection`],he=[`created`,`subscribed`];function T({mode:g=`renderer`,userId:b,showCreateAction:x=!1,queryKeyPrefix:S,isMine:T=!1}){let ge=h(),E=h(`components.pages.profile.components.tabs`),D=g===`renderer`,O=S??[],[k,A]=v(`collectTab`,_.withDefault(`video`)),[j,M]=v(`collectCollectionTab`,_.withDefault(`created`)),N=u(()=>me.includes(k)?k:`video`,[k]),P=u(()=>he.includes(j)?j:`created`,[j]),[F,I]=d(!1),[_e,L]=d(!1),[R,z]=d(()=>new Set),{userId:ve,userInfo:ye}=t(),B=b||ve||ye?.userId||``,be=ae();async function xe(e,t){if(!B)return{data:{list:[],total:0}};let n=await i({user_id:B,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},a=t===y.video?(n.data?.video_infos??[]).map(e=>pe(e,r)):(n.data?.post_infos??[]).map(e=>fe(e,r));return{data:{list:a,total:n.data?.total??a.length}}}let V=c({key:[...O,`user-collect-video`,B],initialPageParam:1,async queryFn(e){return xe(e,y.video)},options:{staleTime:0,enabled:D},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),H=c({key:[...O,`user-collect-post`,B],initialPageParam:1,options:{staleTime:0,enabled:D},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function Se(e){if(!B)return{data:{list:[],total:0}};let t=await r({page:e,user_id:b,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(C),total:t.data?.data?.total??n.length}}}async function Ce(e){if(!B)return{data:{list:[],total:0}};let t=(await n({page:e,user_id:b,page_size:10})).data?.data,r=t?.collections??[];return{data:{list:r.map(C),total:t?.total??r.length}}}let U=c({key:[...O,`user-collection-created`,B],initialPageParam:1,options:{staleTime:0,enabled:D},async queryFn(e){return Se(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),W=c({key:[...O,`user-collection-subscribed`,B],initialPageParam:1,options:{staleTime:0,enabled:D},async queryFn(e){return Ce(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),G=u(()=>V.data?.pages.flatMap(e=>e.data?.list??w)??w,[V.data]),K=u(()=>H.data?.pages.flatMap(e=>e.data?.list??w)??w,[H.data]),we=u(()=>U.data?.pages.flatMap(e=>e.data?.list??w)??w,[U.data]),Te=u(()=>W.data?.pages.flatMap(e=>e.data?.list??w)??w,[W.data]),Ee=N===`video`?G:N===`post`?K:w,q=new Set(Ee.map(e=>e.id)),J=N===`video`?V:H,Y=P===`created`?U:W,De=P===`created`?we:Te,X=N===`video`,Oe=[...O,`user-collect-video`,B],ke=[...O,`user-collect-post`,B],{mutateAsync:Ae,isPending:Z}=ie(async e=>await a({app_id:0,user_id:B,folder_id:``,content_type:X?1:2,content_ids:e})),je=()=>{I(!F),z(new Set)};l(()=>{z(new Set),N===`collection`&&I(!1)},[N]),l(()=>{k!==N&&A(N)},[N,k,A]),l(()=>{j!==P&&M(P)},[P,j,M]);let Q=e=>{z(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},Me=()=>{R.size===q.size&&q.size>0?z(new Set):z(new Set(q))};function Ne(){R.size===0||Z||L(!0)}function Pe(){Z||L(!1)}async function Fe(){if(!(R.size===0||Z)){if(!B){m.error(E(`collectTab.pleaseLogin`));return}try{let e=Array.from(R),t=await Ae(e);if(t.code===0){m.success(E(`collectTab.uncollectedSuccess`));let t=new Set(e);be(X?Oe:ke,e=>de(e,t)),L(!1),z(new Set),I(!1)}else m.error(t.message||E(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),m.error(E(`collectTab.operationFailed`))}}}let $=async()=>{if(D){if(N===`collection`){await Y.fetchNextPage();return}await J.fetchNextPage()}};return p(o,{children:[p(o,{className:`flex justify-between items-center`,children:[f(ne,{value:N,onValueChange:e=>{A(e)},children:p(re,{variant:`tag`,children:[f(s,{value:`video`,className:`text-sm`,children:E(`collectTab.video`)}),f(s,{value:`collection`,className:`text-sm`,children:E(`collectTab.collections`)})]})}),N===`collection`?x&&f(ue,{href:`/collection/create`,className:`flex items-center justify-center rounded-full text-text3 text-sm`,children:ge(`components.pages.collectionCreate.form.create`)}):T&&f(e,{variant:`ghost`,size:`sm`,className:`h-6.25 px-0 text-sm text-text3`,onClick:je,children:E(F?`collectTab.cancel`:`collectTab.edit`)})]}),f(o,{className:`pt-2`,children:N===`video`?f(le,{list:G,showVideoProgress:!1,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:$,emptyText:E(`collectTab.emptyContent`),isEditMode:F,selectedIds:R,onToggleSelection:Q}):N===`post`?f(ce,{list:K,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:$,emptyText:E(`collectTab.emptyContent`),isEditMode:F,selectedIds:R,onToggleSelection:Q}):f(se,{list:De,loading:Y.isFetching,hasMore:Y.hasNextPage??!1,loadMore:$,emptyText:E(`collectTab.emptyContent`)})}),F&&N!==`collection`&&p(o,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-height)]`,children:[p(o,{className:`flex items-center gap-2`,children:[f(ee,{checked:R.size===q.size&&q.size>0,onCheckedChange:Me}),f(te,{className:`text-sm text-text1`,children:E(`collectTab.selectAll`)})]}),f(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:R.size>0?`default`:`outline`,disabled:R.size===0||Z,onClick:Ne,children:E(Z?`collectTab.processing`:`collectTab.delete`)})]}),f(oe,{open:_e,onOpenChange:L,onCancel:Pe,onConfirm:Fe,title:``,description:E(`collectTab.deleteConfirmDescription`),confirmText:E(`collectTab.delete`),cancelText:E(`collectTab.cancel`),isConfirming:Z})]})}export{T as CollectTab};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{pxToVw as t}from"../../../../../../../utils/helper.mjs";import{Box as n}from"../../../../../../ui/box.mjs";import r from"../../../../../basics/logo/variants/basic-logo/index.mjs";import i from"../../../../../basics/search/variants/basic-search/index.mjs";import{defaultProps as a}from"../defaults/default-props.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c={},l={list:[]};function u({props:u=c,styles:d,events:f,data:p=l}){let{logo:m,search:h,gap:g=a.gap}={...a,...u},{list:_}=p,v=()=>{f?.onLogoClick?.()},y=(e,t)=>{f?.onLogoChannelChange?.(e,t)},b=()=>{f?.onSearchClick?.()},x=d?e(d,{}):void 0;return s(n,{as:`header`,className:`w-full flex items-center px-[16px] py-[8px]`,style:{...g>0?{gap:t(g)}:void 0,...x},children:[o(r,{props:m,events:{onClick:v,onChannelChange:y},data:_}),o(i,{props:h,events:{onClick:b}})]})}export{u as default};
2
+ "use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{pxToVw as t}from"../../../../../../../utils/helper.mjs";import{Box as n}from"../../../../../../ui/box.mjs";import r from"../../../../../basics/logo/variants/basic-logo/index.mjs";import i from"../../../../../basics/search/variants/basic-search/index.mjs";import{defaultProps as a}from"../defaults/default-props.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c={},l={list:[]};function u({props:u=c,styles:d,events:f,data:p=l}){let{logo:m,search:h,gap:g=a.gap}={...a,...u},{list:_}=p,v=()=>{f?.onLogoClick?.()},y=(e,t)=>{f?.onLogoChannelChange?.(e,t)},b=()=>{f?.onSearchClick?.()},x=d?e(d,{}):void 0;return s(n,{as:`header`,className:`w-full flex items-center px-[12px] py-[8px]`,style:{...g>0?{gap:t(g)}:void 0,...x},children:[o(r,{props:m,events:{onClick:v,onChannelChange:y},data:_}),o(i,{props:h,events:{onClick:b}})]})}export{u as default};
@@ -1,5 +1,5 @@
1
1
 
2
- "use client";import{cn as e}from"../../../utils/cn.mjs";import{Dialog as t,DialogContent as n}from"../../ui/dialog.mjs";import{getCroppedImg as r}from"../../../utils/image-crop.mjs";import{useCallback as i,useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";import l from"react-easy-crop";function u({open:u,onClose:d,imageSrc:f,onConfirm:p,cropShape:m=`round`}){let h=c(`components.common`),[g,_]=a({x:0,y:0}),[v,y]=a(1),[b,x]=a(null),[S,C]=a(!1),w=i((e,t)=>{x(t)},[]);async function T(){if(b)try{C(!0),p(await r(f,b,{circular:m===`round`,maxWidth:800,maxHeight:800})),E()}catch(e){console.error(`裁剪图片失败`,e)}finally{C(!1)}}function E(){_({x:0,y:0}),y(1),x(null),d()}return o(t,{open:u,onOpenChange:E,children:o(n,{showCloseButton:!1,className:`bg-black/90 !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto`,children:s(`div`,{className:`relative flex h-full w-full flex-col`,children:[o(`div`,{className:`relative flex-1 overflow-hidden bg-black`,children:o(l,{image:f,crop:g,zoom:v,aspect:1,cropShape:m,onCropChange:_,onZoomChange:y,onCropComplete:w})}),o(`div`,{className:`absolute bottom-28 left-0 right-0 px-8`,children:s(`div`,{className:`mx-auto max-w-md`,children:[o(`input`,{type:`range`,min:1,max:3,step:.1,value:v,onChange:e=>y(Number(e.target.value)),className:`w-full appearance-none bg-tra nsparent cursor-pointer focus-within:outline-none`,style:{WebkitAppearance:`none`,background:`rgba(255, 255, 255, 0.3)`,height:`4px`,borderRadius:`2px`}}),o(`style`,{children:`
2
+ "use client";import{cn as e}from"../../../utils/cn.mjs";import{Dialog as t,DialogContent as n}from"../../ui/dialog.mjs";import{getCroppedImg as r}from"../../../utils/image-crop.mjs";import{useCallback as i,useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";import l from"react-easy-crop";function u({open:u,onClose:d,imageSrc:f,onConfirm:p,cropShape:m=`round`,aspectRatio:h=1}){let g=c(`components.common`),[_,v]=a({x:0,y:0}),[y,b]=a(1),[x,S]=a(null),[C,w]=a(!1),T=i((e,t)=>{S(t)},[]);async function E(){if(x)try{w(!0),p(await r(f,x,{circular:m===`round`,maxWidth:800,maxHeight:800})),D()}catch(e){console.error(`裁剪图片失败`,e)}finally{w(!1)}}function D(){v({x:0,y:0}),b(1),S(null),d()}return o(t,{open:u,onOpenChange:D,children:o(n,{showCloseButton:!1,className:`bg-black/90 !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto`,children:s(`div`,{className:`relative flex h-full w-full flex-col`,children:[o(`div`,{className:`relative flex-1 overflow-hidden bg-black`,children:o(l,{image:f,crop:_,zoom:y,aspect:h,cropShape:m,onCropChange:v,onZoomChange:b,onCropComplete:T})}),o(`div`,{className:`absolute bottom-28 left-0 right-0 px-8`,children:s(`div`,{className:`mx-auto max-w-md`,children:[o(`input`,{type:`range`,min:1,max:3,step:.1,value:y,onChange:e=>b(Number(e.target.value)),className:`w-full appearance-none bg-tra nsparent cursor-pointer focus-within:outline-none`,style:{WebkitAppearance:`none`,background:`rgba(255, 255, 255, 0.3)`,height:`4px`,borderRadius:`2px`}}),o(`style`,{children:`
3
3
  input[type="range"] {
4
4
  outline: none;
5
5
  }
@@ -31,4 +31,4 @@
31
31
  input[type="range"]::-moz-range-thumb:focus {
32
32
  outline: none;
33
33
  }
34
- `})]})}),o(`div`,{className:`absolute bottom-8 left-0 right-0 px-8`,children:s(`div`,{className:`mx-auto flex max-w-md gap-4`,children:[o(`button`,{type:`button`,onClick:E,disabled:S,className:e(`flex-1 rounded-full py-3 text-base font-medium transition-colors`,`bg-bg1 text-text1 hover:bg-bg1/90`,`disabled:opacity-50 disabled:cursor-not-allowed`),children:h(`imageCropModal.cancel`)}),o(`button`,{type:`button`,onClick:T,disabled:S,className:e(`flex-1 rounded-full py-3 text-base font-medium transition-colors`,`bg-primary text-primary-foreground hover:bg-primary/80`,`disabled:opacity-50 disabled:cursor-not-allowed`),children:h(S?`imageCropModal.processing`:`imageCropModal.confirm`)})]})})]})})})}export{u as ImageCropModal};
34
+ `})]})}),o(`div`,{className:`absolute bottom-8 left-0 right-0 px-8`,children:s(`div`,{className:`mx-auto flex max-w-md gap-4`,children:[o(`button`,{type:`button`,onClick:D,disabled:C,className:e(`flex-1 rounded-full py-3 text-base font-medium transition-colors`,`bg-bg1 text-text1 hover:bg-bg1/90`,`disabled:opacity-50 disabled:cursor-not-allowed`),children:g(`imageCropModal.cancel`)}),o(`button`,{type:`button`,onClick:E,disabled:C,className:e(`flex-1 rounded-full py-3 text-base font-medium transition-colors`,`bg-primary text-primary-foreground hover:bg-primary/80`,`disabled:opacity-50 disabled:cursor-not-allowed`),children:g(C?`imageCropModal.processing`:`imageCropModal.confirm`)})]})})]})})})}export{u as ImageCropModal};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Sheet as t,SheetContent as n,SheetHeader as r,SheetTitle as i}from"../../ui/sheet.mjs";import{Switch as a}from"../../ui/switch.mjs";import{Text as o}from"../../ui/text.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/close.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCallback as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";function x(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.id||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function S(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function C(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function w(e){return e.mode===`detail`?_(E,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):_(T,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle})}function T({open:s,variant:l,title:d,updateStatus:g,summaryText:y,seriesList:S,activeEpisodeId:w,showEpisodeTitle:T=!1,onToggleTitle:E,onClose:D,onSelectEpisode:O,popupBodyStyle:k}){let A=b(`components.common.seriesEpisodes`),j=!!E,M=j&&T,N=m(null),P=m(null),F=p(()=>x(S,`episode`,e=>A(`episodeLabel`,{episode:e})),[S,A]),I=p(()=>{if(F.length===0)return[];let e=[];return F.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[F]),L=p(()=>{if(!w)return 0;let e=F.findIndex(e=>e.id===w);return e<0?0:Math.floor(e/50)},[w,F]),[R,z]=h(L);f(()=>{z(L)},[L]);let B=p(()=>typeof y==`string`&&y.trim()?y:C(F.length,g,A),[F.length,y,A,g]),V=d||A(`selectorTitle`);function H(){let e=N.current;if(e){P.current&&=(window.cancelAnimationFrame(P.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}P.current=window.requestAnimationFrame(()=>{P.current=null;let e=N.current;e&&(e.scrollTop=0)})}}f(()=>{s&&H()},[s,T,R]);function U(e){E&&(E(e),H())}function W(e){O?.(e.id,e.series_num),D()}let G=M?2:5,K=I.length>1?_(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:I.map((e,t)=>{if(e.length===0)return null;let n=t===R,r=t*50+1,i=Math.min((t+1)*50,F.length);return v(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{z(t),H()},children:[r,`-`,i,n&&_(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,q=v(`div`,{className:`pb-[8px] flex justify-between`,children:[_(`span`,{className:`text-[16px] text-text1`,children:B}),j&&v(`div`,{className:`flex items-center gap-[4px]`,children:[_(a,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:T,onCheckedChange:e=>{U(!!e)}}),_(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{U(!T)},children:A(`episodeTitle`)})]})]}),J=_(`div`,{className:`grid w-full gap-2 ${G===2?`grid-cols-2`:`grid-cols-5`}`,children:(I[R]||[]).map((e,t)=>{let n=!!(w&&e.id===w);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{W(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${M?`h-[72px] px-[10px] text-[14px]`:``} ${t%G===0?``:`border-l-0`}`,children:M?_(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})});return l===`sheet`?_(t,{open:s,onOpenChange:e=>!e&&D(),children:v(n,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] max-h-[70vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[_(r,{className:`pt-3 pb-0`,children:_(i,{className:`flex items-center justify-between text-lg text-text1`,children:V})}),v(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[K,q]}),_(`div`,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:J})]})}):_(u,{open:s,onOpenChange:e=>{e||D()},showCloseButton:!1,className:`border-0 bg-transparent p-0`,children:v(e,{className:`w-full flex flex-col bg-bg1 px-[12px] text-text1`,style:{height:`70vh`,...k,maxHeight:`70vh`},children:[v(e,{className:`shrink-0 flex justify-between items-center h-[48px]`,children:[_(o,{className:`text-[16px] font-bold text-text1`,children:V}),_(e,{className:`pl-[12px] h-full flex items-center`,onClick:D,children:_(c,{className:`w-[14px] h-[14px] text-text1 cursor-pointer`})})]}),v(e,{className:`flex-1 h-0 w-full pb-[12px] flex flex-col gap-3`,children:[K,q,_(e,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto`,children:J})]})]})})}function E({information:t,series_num:n,onEpisodeChange:r}){let i=b(`components.common`),[a,c]=s(`detail-series-popup-${t.id}`,!1),[u,x]=s(`detail-series-title-toggle-${t.id}`,!1),[C,w]=s(`detail-series-scroll-left-${t.id}`,null),[E,D]=h(n);f(()=>{D(n)},[t.id,n]);let O=p(()=>S((t.links||[]).map(e=>({id:e.id,name:e.name})),t.id||`episode`,e=>i(`seriesEpisodes.episodeLabel`,{episode:e})),[t.id,t.links,i]),k=t.update_status===`1`?i(`seriesEpisodes.completedSeriesTotal`,{total:t.links.length}):i(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:t.links.length}),A=p(()=>t.links[E-1]?.id||t.links[0]?.id||``,[t.links,E]),j=m(null),M=m(null),N=m(null),P=m(!1),F=m(null),I=m(null),L=m(null),[R,z]=h(!1),B=d((e,t=`smooth`)=>{let n=j.current?.querySelector(`[data-content-id="${e}"]`);if(n&&j.current){let e=j.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),V=d(()=>{I.current!==null&&(window.clearTimeout(I.current),I.current=null)},[]),H=d(()=>{L.current!==null&&(window.clearTimeout(L.current),L.current=null)},[]),U=d(()=>{F.current!==null&&(y.dismiss(F.current),F.current=null),V(),H()},[H,V]),W=d(()=>{M.current=null,N.current=null,U(),z(!1)},[U]),G=d((e,t)=>{H(),L.current=window.setTimeout(()=>{L.current=null,M.current===e&&W()},Math.max(0,t))},[H,W]);f(()=>{P.current=!1},[t.id]),f(()=>{if(P.current||!A)return;let e=window.requestAnimationFrame(()=>{let e=j.current;e&&(typeof C==`number`?e.scrollTo({left:Math.max(0,C),behavior:`auto`}):(B(A,`auto`),w(Math.max(0,Math.round(e.scrollLeft)))),P.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[A,C,B,w]),f(()=>{let e=M.current;!e||e!==n||G(e,1e3)},[G,n]),f(()=>()=>{W()},[W]);let K=d((e,t,n)=>{let r=j.current;if(!r||!e)return t;let i=r.querySelector(`[data-content-id="${e}"]`);if(!i)return t;let a=r.getBoundingClientRect();if(a.width<=0||typeof n!=`number`||(n-a.left)/a.width<.5)return t;let o=i.offsetLeft+i.offsetWidth/2,s=r.clientWidth/2,c=Math.max(0,r.scrollWidth-r.clientWidth),l=Math.min(c,Math.max(0,o-s));return r.scrollTo({left:l,behavior:`smooth`}),Math.round(l)},[]),q=d((e,a=`inline`,o,s)=>{if(e!==E){if(!t.links[e-1]){y.error(i(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){let n=String(t.id||``).trim(),r=`/webview/${encodeURIComponent(n)}/${encodeURIComponent(String(t.name||``))}/episode/${e}`,{search:i,hash:a}=window.location;window.location.href=`${r}${i}${a}`;return}try{D(e);let c=o||t.links[e-1]?.id||``,l=Math.max(0,Math.round(j.current?.scrollLeft||0));a===`popup`?(c&&B(c,`auto`),w(Math.max(0,Math.round(j.current?.scrollLeft||0)))):w(K(c,l,s)),z(!0),U(),F.current=y.loading(i(`seriesEpisodes.episodeSwitching`)),M.current=e,N.current=a,I.current=window.setTimeout(()=>{M.current===e&&(D(n),W(),y.error(i(`seriesEpisodes.episodeSwitchFailed`)))},8e3),r(e)}catch(e){D(n),W(),console.error(`切换剧集失败`,e),y.error(i(`seriesEpisodes.episodeSwitchFailed`))}}},[W,U,t.id,t.links,t.name,r,E,n,K,B,w,i]),[J,Y]=h(`70vh`),X=d(()=>{if(typeof window>`u`)return;let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Y(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Y(`70vh`);return}Y(`${n}px`)},[]);return f(()=>{if(!a)return;X();let e=()=>{X()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[X,a]),O.length<=1?null:v(g,{children:[v(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[v(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>c(!0),children:[_(o,{className:`text-[14px] text-text2 leading-[20px]`,children:k}),_(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),_(`div`,{ref:j,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${u?`h-[76px]`:`h-[60px]`} ${R?`touch-none`:``}`,children:O.map((e,t)=>_(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${u?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===A?`!border-theme5 bg-line1`:``}`,onClick:n=>{q(t+1,`inline`,e.id,n.clientX)},children:_(o,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===A?`font-bold !text-theme5`:``}`,children:u?e.title:e.series_num})},e.id))})]}),_(T,{title:i(`seriesEpisodes.selectorTitle`),variant:`popup`,open:a,updateStatus:t.update_status,summaryText:k,seriesList:(t.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:A,showEpisodeTitle:u,onToggleTitle:e=>{x(e)},onClose:()=>c(!1),onSelectEpisode:(e,t)=>{c(!1),q(t,`popup`,e)},popupBodyStyle:{height:J}})]})}export{w as SeriesEpisodes};
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import{Sheet as n,SheetContent as r,SheetHeader as i,SheetTitle as a}from"../../ui/sheet.mjs";import{Switch as o}from"../../ui/switch.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/close.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCallback as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";function x(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.id||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function S(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function C(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function w(e){return e.mode===`detail`?_(E,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):_(T,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle})}function T({open:s,variant:l,title:d,updateStatus:g,summaryText:y,seriesList:S,activeEpisodeId:w,showEpisodeTitle:T=!1,onToggleTitle:E,onClose:D,onSelectEpisode:O,popupBodyStyle:k}){let A=b(`components.common.seriesEpisodes`),j=!!E,M=j&&T,N=m(null),P=m(null),F=p(()=>x(S,`episode`,e=>A(`episodeLabel`,{episode:e})),[S,A]),I=p(()=>{if(F.length===0)return[];let e=[];return F.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[F]),L=p(()=>{if(!w)return 0;let e=F.findIndex(e=>e.id===w);return e<0?0:Math.floor(e/50)},[w,F]),[R,z]=h(L);f(()=>{z(L)},[L]);let B=p(()=>typeof y==`string`&&y.trim()?y:C(F.length,g,A),[F.length,y,A,g]),V=d||A(`selectorTitle`);function H(){let e=N.current;if(e){P.current&&=(window.cancelAnimationFrame(P.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}P.current=window.requestAnimationFrame(()=>{P.current=null;let e=N.current;e&&(e.scrollTop=0)})}}f(()=>{s&&H()},[s,T,R]);function U(e){E&&(E(e),H())}function W(e){O?.(e.id,e.series_num),D()}let G=M?2:5,K=I.length>1?_(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:I.map((e,t)=>{if(e.length===0)return null;let n=t===R,r=t*50+1,i=Math.min((t+1)*50,F.length);return v(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{z(t),H()},children:[r,`-`,i,n&&_(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,q=v(`div`,{className:`pb-[8px] flex justify-between`,children:[_(`span`,{className:`text-[16px] text-text1`,children:B}),j&&v(`div`,{className:`flex items-center gap-[4px]`,children:[_(o,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:T,onCheckedChange:e=>{U(!!e)}}),_(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{U(!T)},children:A(`episodeTitle`)})]})]}),J=_(`div`,{className:`grid w-full gap-2 ${G===2?`grid-cols-2`:`grid-cols-5`}`,children:(I[R]||[]).map((e,t)=>{let n=!!(w&&e.id===w);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{W(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${M?`h-[72px] px-[10px] text-[14px]`:``} ${t%G===0?``:`border-l-0`}`,children:M?_(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})});return l===`sheet`?_(n,{open:s,onOpenChange:e=>!e&&D(),children:v(r,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[_(i,{className:`pt-3 pb-0`,children:_(a,{className:`flex items-center justify-between text-lg text-text1`,children:V})}),v(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[K,q]}),_(`div`,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:J})]})}):_(u,{open:s,onOpenChange:e=>{e||D()},showCloseButton:!1,className:`border-0 bg-transparent p-0`,children:v(e,{className:`w-full flex flex-col bg-bg1 px-[12px] text-text1`,style:{height:`70vh`,...k},children:[v(e,{className:`shrink-0 flex justify-between items-center h-[48px]`,children:[_(t,{className:`text-[16px] font-bold text-text1`,children:V}),_(e,{className:`pl-[12px] h-full flex items-center`,onClick:D,children:_(c,{className:`w-[14px] h-[14px] text-text1 cursor-pointer`})})]}),v(e,{className:`flex-1 h-0 w-full pb-[12px] flex flex-col gap-3`,children:[K,q,_(e,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto`,children:J})]})]})})}function E({information:n,series_num:r,onEpisodeChange:i}){let a=b(`components.common`),[o,c]=s(`detail-series-popup-${n.id}`,!1),[u,x]=s(`detail-series-title-toggle-${n.id}`,!1),[C,w]=s(`detail-series-scroll-left-${n.id}`,null),[E,D]=h(r);f(()=>{D(r)},[n.id,r]);let O=p(()=>S((n.links||[]).map(e=>({id:e.id,name:e.name})),n.id||`episode`,e=>a(`seriesEpisodes.episodeLabel`,{episode:e})),[n.id,n.links,a]),k=n.update_status===`1`?a(`seriesEpisodes.completedSeriesTotal`,{total:n.links.length}):a(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:n.links.length}),A=p(()=>n.links[E-1]?.id||n.links[0]?.id||``,[n.links,E]),j=m(null),M=m(null),N=m(null),P=m(!1),F=m(null),I=m(null),L=m(null),[R,z]=h(!1),B=d((e,t=`smooth`)=>{let n=j.current?.querySelector(`[data-content-id="${e}"]`);if(n&&j.current){let e=j.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),V=d(()=>{I.current!==null&&(window.clearTimeout(I.current),I.current=null)},[]),H=d(()=>{L.current!==null&&(window.clearTimeout(L.current),L.current=null)},[]),U=d(()=>{F.current!==null&&(y.dismiss(F.current),F.current=null),V(),H()},[H,V]),W=d(()=>{M.current=null,N.current=null,U(),z(!1)},[U]),G=d((e,t)=>{H(),L.current=window.setTimeout(()=>{L.current=null,M.current===e&&W()},Math.max(0,t))},[H,W]);f(()=>{P.current=!1},[n.id]),f(()=>{if(P.current||!A)return;let e=window.requestAnimationFrame(()=>{let e=j.current;e&&(typeof C==`number`?e.scrollTo({left:Math.max(0,C),behavior:`auto`}):(B(A,`auto`),w(Math.max(0,Math.round(e.scrollLeft)))),P.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[A,C,B,w]),f(()=>{let e=M.current;!e||e!==r||G(e,1e3)},[G,r]),f(()=>()=>{W()},[W]);let K=d((e,t,n)=>{let r=j.current;if(!r||!e)return t;let i=r.querySelector(`[data-content-id="${e}"]`);if(!i)return t;let a=r.getBoundingClientRect();if(a.width<=0||typeof n!=`number`||(n-a.left)/a.width<.5)return t;let o=i.offsetLeft+i.offsetWidth/2,s=r.clientWidth/2,c=Math.max(0,r.scrollWidth-r.clientWidth),l=Math.min(c,Math.max(0,o-s));return r.scrollTo({left:l,behavior:`smooth`}),Math.round(l)},[]),q=d((e,t=`inline`,o,s)=>{if(e!==E){if(!n.links[e-1]){y.error(a(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){let t=String(n.id||``).trim(),r=`/webview/${encodeURIComponent(t)}/${encodeURIComponent(String(n.name||``))}/episode/${e}`,{search:i,hash:a}=window.location;window.location.href=`${r}${i}${a}`;return}try{D(e);let c=o||n.links[e-1]?.id||``,l=Math.max(0,Math.round(j.current?.scrollLeft||0));t===`popup`?(c&&B(c,`auto`),w(Math.max(0,Math.round(j.current?.scrollLeft||0)))):w(K(c,l,s)),z(!0),U(),F.current=y.loading(a(`seriesEpisodes.episodeSwitching`)),M.current=e,N.current=t,I.current=window.setTimeout(()=>{M.current===e&&(D(r),W(),y.error(a(`seriesEpisodes.episodeSwitchFailed`)))},8e3),i(e)}catch(e){D(r),W(),console.error(`切换剧集失败`,e),y.error(a(`seriesEpisodes.episodeSwitchFailed`))}}},[W,U,n.id,n.links,n.name,i,E,r,K,B,w,a]),[J,Y]=h(`70vh`),X=d(()=>{if(typeof window>`u`)return;if(window.isWebView===!0){Y(`100vh`);return}let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Y(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Y(`70vh`);return}Y(`${n}px`)},[]);return f(()=>{if(!o)return;X();let e=()=>{X()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[X,o]),O.length<=1?null:v(g,{children:[v(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[v(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>c(!0),children:[_(t,{className:`text-[14px] text-text2 leading-[20px]`,children:k}),_(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),_(`div`,{ref:j,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${u?`h-[76px]`:`h-[60px]`} ${R?`touch-none`:``}`,children:O.map((e,n)=>_(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${u?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===A?`!border-theme5 bg-line1`:``}`,onClick:t=>{q(n+1,`inline`,e.id,t.clientX)},children:_(t,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===A?`font-bold !text-theme5`:``}`,children:u?e.title:e.series_num})},e.id))})]}),_(T,{title:a(`seriesEpisodes.selectorTitle`),variant:`popup`,open:o,updateStatus:n.update_status,summaryText:k,seriesList:(n.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:A,showEpisodeTitle:u,onToggleTitle:e=>{x(e)},onClose:()=>c(!1),onSelectEpisode:(e,t)=>{c(!1),q(t,`popup`,e)},popupBodyStyle:{height:J}})]})}export{w as SeriesEpisodes};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../ui/box.mjs";import{Progress as t}from"../../../ui/progress.mjs";import{Text as n}from"../../../ui/text.mjs";import{memo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{useTranslations as o}from"next-intl";const s=r(({currentFiles:r,totalFiles:s,currentTasks:c,totalTasks:l})=>{let u=o(`components.pages.publish.components`),d=l>0?Math.round(c/l*100):0;return i(e,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/20`,children:a(e,{className:`w-full max-w-[200px] bg-bg1 rounded-lg p-4 shadow-lg`,children:[a(n,{className:`mb-3 text-center text-[16px] font-medium`,style:{color:`rgb(253, 76, 94)`},children:[u(`uploadProgress.uploading`),`...`]}),i(e,{className:`mb-2 **:[data-slot=progress-track]:h-2 **:[data-slot=progress-track]:bg-[rgba(253,76,94,0.2)] **:[data-slot=progress-track]:rounded-full`,children:i(t,{value:d,className:`w-full **:[data-slot=progress-indicator]:bg-[rgb(253,76,94)]`})}),a(n,{className:`text-center text-xs opacity-70`,style:{color:`rgb(253, 76, 94)`},children:[r,`/`,s,`(`,d,`%)`]})]})})});export{s as UploadProgress};
2
+ "use client";import{Box as e}from"../../../ui/box.mjs";import{Text as t}from"../../../ui/text.mjs";import{Progress as n}from"../../../ui/progress.mjs";import{memo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{useTranslations as o}from"next-intl";const s=r(({currentFiles:r,totalFiles:s,currentTasks:c,totalTasks:l})=>{let u=o(`components.pages.publish.components`),d=l>0?Math.round(c/l*100):0;return i(e,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/20`,children:a(e,{className:`w-full max-w-[200px] bg-bg1 rounded-lg p-4 shadow-lg`,children:[a(t,{className:`mb-3 text-center text-[16px] font-medium`,style:{color:`rgb(253, 76, 94)`},children:[u(`uploadProgress.uploading`),`...`]}),i(e,{className:`mb-2 **:[data-slot=progress-track]:h-2 **:[data-slot=progress-track]:bg-[rgba(253,76,94,0.2)] **:[data-slot=progress-track]:rounded-full`,children:i(n,{value:d,className:`w-full **:[data-slot=progress-indicator]:bg-[rgb(253,76,94)]`})}),a(t,{className:`text-center text-xs opacity-70`,style:{color:`rgb(253, 76, 94)`},children:[r,`/`,s,`(`,d,`%)`]})]})})});export{s as UploadProgress};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gCommunityGetHotContentList as t,gContentGetHotVideoList as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{Skeleton as a}from"../../ui/skeleton.mjs";import{Text as o}from"../../ui/text.mjs";import{useRequest as s}from"../../../hooks/query/use-query.mjs";import{getPostDetailPagePath as c}from"../../../utils/tools.mjs";import l from"../../common/at-element/index.mjs";import{useCardDecoration as u}from"../../../hooks/use-card-decoration.mjs";import d from"../../ui/rate.mjs";import f from"./style.module.mjs";import{memo as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";import _ from"next/link";const v=p(({list:e})=>{let t=g(`components.pages.search`),{getCalculationScore:n}=u();return e.length===0?m(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(254,201,207,0.5) 0%, rgba(254,201,207,0.1) 100%)`,borderColor:`rgba(255,119,131,0.2)`},children:h(i,{children:[m(o,{className:`leading-[26px] block text-theme5 text-[18px] font-bold`,children:t(`hotRecommend.hotVideosTitle`)}),h(`div`,{className:`flex flex-col gap-[8px]`,children:[m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`})]})]})}):h(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(254,201,207,0.5) 0%, rgba(254,201,207,0.1) 100%)`,borderColor:`rgba(255,119,131,0.2)`},children:[m(o,{className:`leading-[26px] block text-theme5 text-[18px] font-bold`,children:t(`hotRecommend.hotVideosTitle`)}),e.map((e,t)=>h(_,{className:`w-full flex items-center justify-between mt-[12px] shrink-0`,href:c({id:e.video_id,contentType:0}),children:[h(i,{className:`w-[76px] h-[102px] rounded-[8px] overflow-hidden relative bg-bg2`,children:[m(r,{src:e.cover||``,fill:!0,alt:e.name||``,objectFit:`cover`}),m(i,{className:`w-[18px] h-[18px] rounded-tl-[8px] rounded-br-[8px] flex items-center justify-center overflow-hidden absolute left-0 top-0 z-[1]`,style:{background:t>2?`linear-gradient( 218deg, #909BB7 0%, #5D7198 100%)`:`linear-gradient( 175deg, #FD4C5E 0%, #F05D19 100%)`},children:m(o,{className:`text-[12px] leading-[12px] text-white`,children:t+1})})]}),h(i,{className:`flex-1 flex flex-col ml-[12px]`,children:[m(o,{className:`leading-[26px] text-text1 text-[18px] font-bold max-w-[200px] line-clamp-1 mb-[4px]`,children:e.name}),h(i,{className:`flex items-center`,style:{transform:`scale(0.6)`,transformOrigin:`left center`},children:[m(d,{allowHalf:!0,value:n({score:String(e.score??0)})}),m(o,{className:`ml-[8px] text-[24px] text-[#F59E0B] font-bold leading-[24px]`,children:e.score?(Number(e.score)/10).toFixed(1):0})]}),m(i,{className:`w-fit mt-[4px] h-[20px] leading-[20px] px-[6px] text-text2 text-[12px] bg-line1 rounded-[4px]`,children:e.cat_name})]})]},String(e.video_id??t)))]})}),y=p(({list:e})=>{let t=g(`components.pages.search`);return e.length===0?h(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(153,215,255,0.5) 0%, rgba(153,215,255,0.1) 100%)`,borderColor:`rgba(31,167,255,0.2)`},children:[m(o,{className:`leading-[26px] block text-theme1 text-[18px] font-bold mb-[4px]`,children:t(`hotRecommend.hotPostsTitle`)}),h(`div`,{className:`flex flex-col gap-[8px]`,children:[m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`}),m(a,{className:`w-full h-[28px] mt-[8px]`})]})]}):h(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(153,215,255,0.5) 0%, rgba(153,215,255,0.1) 100%)`,borderColor:`rgba(31,167,255,0.2)`},children:[m(o,{className:`leading-[26px] block text-theme1 text-[18px] font-bold mb-[4px]`,children:t(`hotRecommend.hotPostsTitle`)}),e.map((e,t)=>h(_,{className:`w-full h-[48px] mt-[8px] flex items-center`,href:c({id:e.content_id,contentType:1}),children:[h(o,{className:`text-[16px] leading-[24px] font-bold ${t<3?`text-theme1`:`text-text3`}`,children:[t+1,`.`]}),m(o,{className:`ml-[8px] text-[16px] text-text1 leading-[24px] line-clamp-1 max-w-[260px] ${f.hotInfoTitle}`,children:m(l,{text:e.title??``,atUsers:[]})})]},String(e.content_id??t)))]})});function b({isShow:r}){let{userInfo:a}=e(),{data:o}=s([`hotVideo`],()=>n({user_id:a.user_id})),c=o?.data?.hot_video_list??[],{data:l}=s([`hotContent`],()=>t({user_id:a.user_id})),u=l?.data?.hot_content_list??[];return r?h(i,{className:`w-full px-[12px] flex gap-x-[12px] flex-nowrap pb-[24px] ${f.gScrollBoxX}`,children:[m(v,{list:c}),m(y,{list:u})]}):null}export{b as default};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gCommunityGetHotContentList as t,gContentGetHotVideoList as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{Text as a}from"../../ui/text.mjs";import{Skeleton as o}from"../../ui/skeleton.mjs";import{useRequest as s}from"../../../hooks/query/use-query.mjs";import{getPostDetailPagePath as c}from"../../../utils/tools.mjs";import l from"../../common/at-element/index.mjs";import{useCardDecoration as u}from"../../../hooks/use-card-decoration.mjs";import d from"../../ui/rate.mjs";import f from"./style.module.mjs";import{memo as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";import _ from"next/link";const v=p(({list:e})=>{let t=g(`components.pages.search`),{getCalculationScore:n}=u();return e.length===0?m(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(254,201,207,0.5) 0%, rgba(254,201,207,0.1) 100%)`,borderColor:`rgba(255,119,131,0.2)`},children:h(i,{children:[m(a,{className:`leading-[26px] block text-theme5 text-[18px] font-bold`,children:t(`hotRecommend.hotVideosTitle`)}),h(`div`,{className:`flex flex-col gap-[8px]`,children:[m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`})]})]})}):h(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(254,201,207,0.5) 0%, rgba(254,201,207,0.1) 100%)`,borderColor:`rgba(255,119,131,0.2)`},children:[m(a,{className:`leading-[26px] block text-theme5 text-[18px] font-bold`,children:t(`hotRecommend.hotVideosTitle`)}),e.map((e,t)=>h(_,{className:`w-full flex items-center justify-between mt-[12px] shrink-0`,href:c({id:e.video_id,contentType:0}),children:[h(i,{className:`w-[76px] h-[102px] rounded-[8px] overflow-hidden relative bg-bg2`,children:[m(r,{src:e.cover||``,fill:!0,alt:e.name||``,objectFit:`cover`}),m(i,{className:`w-[18px] h-[18px] rounded-tl-[8px] rounded-br-[8px] flex items-center justify-center overflow-hidden absolute left-0 top-0 z-[1]`,style:{background:t>2?`linear-gradient( 218deg, #909BB7 0%, #5D7198 100%)`:`linear-gradient( 175deg, #FD4C5E 0%, #F05D19 100%)`},children:m(a,{className:`text-[12px] leading-[12px] text-white`,children:t+1})})]}),h(i,{className:`flex-1 flex flex-col ml-[12px]`,children:[m(a,{className:`leading-[26px] text-text1 text-[18px] font-bold max-w-[200px] line-clamp-1 mb-[4px]`,children:e.name}),h(i,{className:`flex items-center`,style:{transform:`scale(0.6)`,transformOrigin:`left center`},children:[m(d,{allowHalf:!0,value:n({score:String(e.score??0)})}),m(a,{className:`ml-[8px] text-[24px] text-[#F59E0B] font-bold leading-[24px]`,children:e.score?(Number(e.score)/10).toFixed(1):0})]}),m(i,{className:`w-fit mt-[4px] h-[20px] leading-[20px] px-[6px] text-text2 text-[12px] bg-line1 rounded-[4px]`,children:e.cat_name})]})]},String(e.video_id??t)))]})}),y=p(({list:e})=>{let t=g(`components.pages.search`);return e.length===0?h(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(153,215,255,0.5) 0%, rgba(153,215,255,0.1) 100%)`,borderColor:`rgba(31,167,255,0.2)`},children:[m(a,{className:`leading-[26px] block text-theme1 text-[18px] font-bold mb-[4px]`,children:t(`hotRecommend.hotPostsTitle`)}),h(`div`,{className:`flex flex-col gap-[8px]`,children:[m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`}),m(o,{className:`w-full h-[28px] mt-[8px]`})]})]}):h(i,{className:`w-[324px] h-auto border rounded-[12px] shrink-0 p-[12px]`,style:{background:`linear-gradient( 156deg, rgba(153,215,255,0.5) 0%, rgba(153,215,255,0.1) 100%)`,borderColor:`rgba(31,167,255,0.2)`},children:[m(a,{className:`leading-[26px] block text-theme1 text-[18px] font-bold mb-[4px]`,children:t(`hotRecommend.hotPostsTitle`)}),e.map((e,t)=>h(_,{className:`w-full h-[48px] mt-[8px] flex items-center`,href:c({id:e.content_id,contentType:1}),children:[h(a,{className:`text-[16px] leading-[24px] font-bold ${t<3?`text-theme1`:`text-text3`}`,children:[t+1,`.`]}),m(a,{className:`ml-[8px] text-[16px] text-text1 leading-[24px] line-clamp-1 max-w-[260px] ${f.hotInfoTitle}`,children:m(l,{text:e.title??``,atUsers:[]})})]},String(e.content_id??t)))]})});function b({isShow:r}){let{userInfo:a}=e(),{data:o}=s([`hotVideo`],()=>n({user_id:a.user_id})),c=o?.data?.hot_video_list??[],{data:l}=s([`hotContent`],()=>t({user_id:a.user_id})),u=l?.data?.hot_content_list??[];return r?h(i,{className:`w-full px-[12px] flex gap-x-[12px] flex-nowrap pb-[24px] ${f.gScrollBoxX}`,children:[m(v,{list:c}),m(y,{list:u})]}):null}export{b as default};
@@ -1,34 +1,5 @@
1
1
 
2
- import e from"../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs";var t=`.style-module_searchInput__5zpUG {
3
- position: relative;
4
- z-index: 1;
5
- height: 100%;
6
- display: flex;
7
- align-items: center;
8
- font-size: 3.255814vw;
9
- color: var(--color-text1) !important;
10
- font-weight: 400;
11
- padding-left: 8.372093vw;
12
- line-height: 4.651163vw;
13
- padding-top: 1.395349vw;
14
- padding-bottom: 1.395349vw;
15
- }
16
- .style-module_searchInput__5zpUG .adm-input-element {
17
- font-size: 14px;
18
- color: var(--color-text1) !important;
19
- font-weight: normal;
20
- padding-left: 36px;
21
- line-height: 20px;
22
- padding-top: 6px;
23
- padding-bottom: 6px;
24
- }
25
- .style-module_searchInput__5zpUG .adm-input-element::placeholder {
26
- color: var(--color-text3) !important;
27
- }
28
- .style-module_searchInput__5zpUG .adm-input-clear {
29
- margin-right: 6px;
30
- }
31
- .style-module_customSearchHistory__sDuK0 {
2
+ import e from"../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs";var t=`.style-module_customSearchHistory__sDuK0 {
32
3
  display: flex;
33
4
  flex-direction: column-reverse;
34
5
  align-items: flex-end;
@@ -112,4 +83,5 @@ import e from"../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-
112
83
  }
113
84
  .style-module_gScrollBoxX__CRiTV::-webkit-scrollbar {
114
85
  display: none; /* Chrome, Safari and Opera */
115
- }`,n={searchInput:`style-module_searchInput__5zpUG`,customSearchHistory:`style-module_customSearchHistory__sDuK0`,hotInfoTitle:`style-module_hotInfoTitle__fVniI`,gScrollBoxX:`style-module_gScrollBoxX__CRiTV`};e(t);export{n as default};
86
+ }
87
+ `,n={customSearchHistory:`style-module_customSearchHistory__sDuK0`,hotInfoTitle:`style-module_hotInfoTitle__fVniI`,gScrollBoxX:`style-module_gScrollBoxX__CRiTV`};e(t);export{n as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Input as e}from"../../ui/input.mjs";import{useKeepAliveEffect as t,useKeepAliveState as n}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as r}from"../../../utils/tools.mjs";import{HeaderNav as i}from"../../common/header-nav/client.mjs";import a from"../../../assets/icons/search.mjs";import o from"../../../assets/icons/clear.mjs";import s from"./style.module.mjs";import{memo as c,useCallback as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{useSearchParams as f}from"next/navigation";import{useTranslations as p}from"next-intl";function m(){}const h=c(({setSearchInputVal:c,initInputVal:h,initInputVersion:g,addSearchHistory:_,clearCallback:v=m})=>{let y=p(`components.pages.search`),[b,x]=n(`search-input-val`,``),S=f().get(`q`),C=e=>{let t=e.target.value;x(t)},w=l(e=>{c(e),_(e)},[_,c]);return t(()=>{h&&(x(h),w(h))},[h,g],`search-init-input-effect`),t(()=>{S&&(x(S),w(S))},[S],`search-url-params-effect`),u(i,{className:`h-[55px]`,rightChild:u(`div`,{className:`cursor-pointer w-[52px] flex items-center justify-center`,onClick:()=>{b&&w(b)},children:u(`span`,{className:`text-[16px] text-text1`,children:y(`topHeader.search`)})}),centerChild:d(`header`,{className:`w-[calc(100%-52px-48px)] ml-[-15px] h-[35px] rounded-[20px] flex items-center justify-center relative overflow-hidden border-line1 border-[1px]`,children:[u(`div`,{className:`absolute left-0 top-0 w-full h-full bg-bg2 opacity-50`}),u(a,{className:`w-[16px] h-[16px] text-text3 absolute left-[12px] top-[9px] z-[1]`}),u(e,{placeholder:y(`topHeader.placeholder`),maxLength:20,value:b,className:s.searchInput,onChange:C,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!b)return;w(b)}}}),b&&u(o,{className:`w-[15px] h-[15px] text-text3 z-10 absolute right-[12px]`,onClick:()=>{r()||(x(``),c(``),v())}})]})})});export{h as default};
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{isPCEnv as a}from"../../../utils/tools.mjs";import{LeftArrowIcon as o}from"../../common/icons/left-arrow.mjs";import s from"../../../assets/icons/search.mjs";import c from"../../../assets/icons/clear.mjs";import{memo as l,useCallback as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useSearchParams as p}from"next/navigation";import{useTranslations as m}from"next-intl";function h(){}const g=l(({setSearchInputVal:l,initInputVal:g,initInputVersion:_,addSearchHistory:v,clearCallback:y=h})=>{let b=m(`components.pages.search`),x=e(),[S,C]=i(`search-input-val`,``),w=p().get(`q`),T=e=>{let t=e.target.value;C(t)},E=u(e=>{l(e),v(e)},[v,l]);r(()=>{g&&(C(g),E(g))},[g,_],`search-init-input-effect`),r(()=>{w&&(C(w),E(w))},[w],`search-url-params-effect`);function D(){if(n.dismiss(),window.location.search.split(`from_code=`)[1]){x.push(`/`);return}x.back()}return d(`div`,{className:`app-top-nav relative w-full h-[55px]`,children:d(`header`,{className:`fixed top-0 left-0 right-0 z-50 bg-bg1`,style:{willChange:`transform`,transform:`translateZ(0)`},children:f(`div`,{className:`mx-auto flex h-[55px] items-center gap-[12px] px-[12px] py-[8px]`,children:[d(`button`,{type:`button`,"aria-label":`返回`,className:`flex shrink-0 items-center justify-center text-text1`,onClick:D,children:d(o,{className:`h-[16px] w-[16px]`})}),d(`div`,{className:`h-[40px] flex-1 rounded-[20px] bg-[linear-gradient(175deg,rgba(253,76,94,0.4)_0%,rgba(255,119,131,0.4)_100%)] p-px`,children:f(`div`,{className:`relative h-full w-full overflow-hidden rounded-[19px] bg-bg1`,children:[d(`div`,{className:`absolute inset-0 bg-bg2 opacity-50`}),d(s,{className:`absolute left-[12px] top-1/2 z-[1] h-[14px] w-[14px] -translate-y-1/2 text-text3`}),d(t,{placeholder:b(`topHeader.placeholder`),maxLength:20,value:S,className:`!relative !z-[1] !h-full !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[34px] !pr-[34px] !py-0 !text-[14px] !leading-[22px] !text-text1 placeholder:!text-text3`,onChange:T,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!S)return;E(S)}}}),S&&d(c,{className:`absolute right-[12px] top-1/2 z-10 h-[15px] w-[15px] -translate-y-1/2 text-text3`,onClick:()=>{a()||(C(``),l(``),y())}})]})}),d(`button`,{type:`button`,className:`flex shrink-0 items-center justify-center text-[16px] leading-[24px] text-text1`,onClick:()=>{S&&E(S)},children:b(`topHeader.search`)})]})})})});export{g as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetRecommendVideoList as e}from"../../../service/generated/client.mjs";import{gContentGetRecommendVideoListKey as t}from"../../../service/generated/tanstack.mjs";import{Box as n}from"../../ui/box.mjs";import{List as r}from"../../ui/list.mjs";import{useRequest as i}from"../../../hooks/query/use-query.mjs";import{SearchResultSkeleton as a}from"./search-result-skeleton.mjs";import o from"./search-user.mjs";import s from"./search-video.mjs";import{useMemo as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";function f(e,t=1){return JSON.stringify({type:1,keywords:e,sort:t})}function p({searchInputVal:p,sort:m,refreshVersion:h}){let g=d(`components.pages.search.searchResult`),_=c(()=>f(p,m),[p,m]),{data:v,isFetching:y,isLoading:b}=i(c(()=>[...t({data_type:2,extra_params:_,page:1,page_size:10}),h],[h,_]),async()=>(await e({data_type:2,extra_params:_,page:1,page_size:10})).data??{}),x=c(()=>v?.videos?.list??[],[v]),S=c(()=>!!v?.videos?.has_more,[v]),C=c(()=>v?.users?.list??[],[v]),w=x.length===0&&C.length===0&&!y;return x.length===0&&C.length===0&&(b||y)?l(a,{}):w?l(n,{className:`w-full pt-[12px]`,children:l(r,{loading:y,empty:`nodata`,emptyText:g(`searchAll.emptyResult`)})}):u(n,{className:`w-full pt-[12px]`,children:[C.length>0&&l(o,{mode:`all`,list:C}),l(s,{mode:`all`,list:x,hasMore:S})]})}export{p as default};
2
+ "use client";import{gContentGetRecommendVideoList as e}from"../../../service/generated/client.mjs";import{gContentGetRecommendVideoListKey as t}from"../../../service/generated/tanstack.mjs";import{Box as n}from"../../ui/box.mjs";import{List as r}from"../../ui/list.mjs";import{useRequest as i}from"../../../hooks/query/use-query.mjs";import{SearchResultSkeleton as a}from"./search-result-skeleton.mjs";import o from"./search-user.mjs";import s from"./search-video.mjs";import{useMemo as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";function f(e,t=1){return JSON.stringify({type:1,keywords:e,sort:t})}function p({searchInputVal:p,sort:m,refreshVersion:h}){let g=d(`components.pages.search.searchResult`),_=c(()=>f(p,m),[p,m]),{data:v,isFetching:y,isLoading:b}=i(c(()=>[...t({data_type:2,extra_params:_,page:1,page_size:10}),h],[h,_]),async()=>(await e({data_type:2,extra_params:_,page:1,page_size:10})).data??{}),x=c(()=>v?.videos?.list??[],[v]),S=c(()=>!!v?.videos?.has_more,[v]),C=c(()=>v?.users?.list??[],[v]),w=x.length===0&&C.length===0&&!y;return x.length===0&&C.length===0&&(b||y)?l(a,{}):w?l(n,{className:`w-full pt-[12px]`,children:l(r,{loading:y,empty:`nodata`,emptyText:g(`searchAll.emptyResult`)})}):u(n,{className:`w-full`,children:[C.length>0&&l(o,{mode:`all`,list:C}),l(s,{mode:`all`,list:x,hasMore:S})]})}export{p as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{Box as t}from"../../ui/box.mjs";import{Popover as n,PopoverContent as r,PopoverTrigger as i}from"../../ui/popover.mjs";import{Text as a}from"../../ui/text.mjs";import o from"../../../assets/icons/search/filter.mjs";import{memo as s,useState as c}from"react";import{ChevronUpIcon as l}from"lucide-react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";const p=[{label:`综合`,value:1},{label:`最新`,value:2},{label:`最热`,value:3}],m=s(({searchType:s,onChange:m,tabList:h,sort:g,onSortChange:_})=>{let[v,y]=c(!1);return f(u,{children:[f(t,{as:`nav`,className:`w-full h-[42px] bg-bg1 flex items-center justify-between px-[3px] fixed top-[54px] left-0 right-0 z-40`,children:[d(t,{className:`flex items-center`,children:h.map(e=>d(a,{className:`h-[30px] rounded-[15px] leading-[30px] px-[9px] text-[16px] bg-transparent transition-all duration-150 ${s===e.value?`text-theme5 !text-[20px] font-bold`:`text-text2`}`,onClick:()=>{s!==e.value&&m(e.value)},children:e.label},e.value))}),f(n,{open:v,onOpenChange:y,children:[d(i,{"aria-label":`排序筛选`,className:`shrink-0 w-7 h-7 rounded-[min(var(--radius-md),12px)] inline-flex items-center justify-center`,children:d(o,{className:`w-[16px] h-[16px]`})}),f(r,{side:`bottom`,align:`end`,className:`w-[100vw] bg-muted`,children:[d(a,{as:`p`,className:`text-[14px] font-medium text-text1 mb-[12px]`,children:`排序方式`}),f(t,{className:`flex flex-col gap-[8px]`,children:[d(t,{className:`flex justify-between gap-[8px]`,children:p.map(t=>d(e,{variant:g===t.value?`default`:`outline`,size:`sm`,className:`w-[100px]`,onClick:()=>{_(t.value),y(!1)},children:t.label},t.value))}),f(e,{variant:`ghost`,size:`sm`,className:`w-full justify-center gap-[4px] text-text2`,onClick:()=>y(!1),children:[d(l,{className:`w-[14px] h-[14px]`}),`收起`]})]})]})]})]}),d(t,{className:`w-full h-[42px]`})]})});m.displayName=`SearchTab`;export{p as SORT_OPTIONS,m as SearchTab};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{Box as t}from"../../ui/box.mjs";import{Text as n}from"../../ui/text.mjs";import{Popover as r,PopoverContent as i,PopoverTrigger as a}from"../../ui/popover.mjs";import o from"../../../assets/icons/search/filter.mjs";import{memo as s,useState as c}from"react";import{ChevronUpIcon as l}from"lucide-react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";const p=[{label:`综合`,value:1},{label:`最新`,value:2},{label:`最热`,value:3}],m=s(({searchType:s,onChange:m,tabList:h,sort:g,onSortChange:_})=>{let[v,y]=c(!1);return f(u,{children:[f(t,{as:`nav`,className:`w-full h-[42px] bg-bg1 flex items-center justify-between px-[3px] fixed top-[54px] left-0 right-0 z-40`,children:[d(t,{className:`flex items-center`,children:h.map(e=>d(n,{className:`h-[30px] rounded-[15px] leading-[30px] px-[9px] text-[16px] bg-transparent transition-all duration-150 ${s===e.value?`text-theme5 !text-[20px] font-bold`:`text-text2`}`,onClick:()=>{s!==e.value&&m(e.value)},children:e.label},e.value))}),f(r,{open:v,onOpenChange:y,children:[d(a,{"aria-label":`排序筛选`,className:`shrink-0 w-7 h-7 rounded-[min(var(--radius-md),12px)] inline-flex items-center justify-center`,children:d(o,{className:`w-[16px] h-[16px]`})}),f(i,{side:`bottom`,align:`end`,className:`w-[100vw] bg-muted`,children:[d(n,{as:`p`,className:`text-[14px] font-medium text-text1 mb-[12px]`,children:`排序方式`}),f(t,{className:`flex flex-col gap-[8px]`,children:[d(t,{className:`flex justify-between gap-[8px]`,children:p.map(t=>d(e,{variant:g===t.value?`default`:`outline`,size:`sm`,className:`w-[100px]`,onClick:()=>{_(t.value),y(!1)},children:t.label},t.value))}),f(e,{variant:`ghost`,size:`sm`,className:`w-full justify-center gap-[4px] text-text2`,onClick:()=>y(!1),children:[d(l,{className:`w-[14px] h-[14px]`}),`收起`]})]})]})]})]}),d(t,{className:`w-full h-[42px]`})]})});m.displayName=`SearchTab`;export{p as SORT_OPTIONS,m as SearchTab};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as r}from"../../../service/generated/client.mjs";import{Image as i}from"../../ui/image.mjs";import{Box as a}from"../../ui/box.mjs";import{Item as o}from"../../ui/item.mjs";import{List as s}from"../../ui/list.mjs";import{Skeleton as c}from"../../ui/skeleton.mjs";import{Text as l}from"../../ui/text.mjs";import{usePaginated as u,useUpdateRequest as d}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as f}from"../../../hooks/use-auth.mjs";import{eventKey as p}from"../../../constants/event-key.mjs";import m from"../../../assets/icons/right_arrow.mjs";import h from"../../../assets/images/user/default_avatar.mjs";import{memo as g,useCallback as _,useEffect as v,useMemo as y,useState as b}from"react";import{jsx as x,jsxs as S}from"react/jsx-runtime";import{useTranslations as C}from"next-intl";import w from"next/link";const T=typeof h==`string`?h:h.src;function E(){return x(a,{className:`w-full`,children:Array.from({length:6}).map((e,t)=>S(a,{className:`w-full h-[56px] flex items-center justify-between mb-[12px]`,children:[S(a,{className:`flex items-center`,children:[x(c,{className:`w-[56px] h-[56px] rounded-[28px]`}),S(a,{className:`ml-[8px]`,children:[x(c,{className:`w-[120px] h-[18px] mb-[8px]`}),x(c,{className:`w-[72px] h-[14px]`})]})]}),x(c,{className:`w-[76px] h-[34px] rounded-[18px]`})]},`search-user-skeleton-${t}`))})}const D=g(({item:e,onUpdate:t})=>{let r=C(`components.pages.search.searchResult`),{userInfo:o}=n();return _(n=>{t({...e,is_following:n?1:0})},[e,t]),x(a,{className:`w-full h-[56px] bg-bg1 flex flex-row items-center justify-between mb-[12px]`,children:S(w,{className:`cursor-pointer flex flex-row items-center justify-center`,href:`/profile/${e.user_id}`,children:[x(a,{className:`w-[56px] h-[56px] rounded-[28px] overflow-hidden bg-bg2 relative`,children:x(i,{src:e.avatar||T,fill:!0,objectFit:`cover`,alt:e.nick_name})}),S(a,{className:`flex flex-col ml-[8px]`,children:[x(l,{as:`span`,className:`text-text1 text-[16px] leading-[24px] h-[24px] font-bold w-[200px] inline-block truncate`,children:e.nick_name}),S(l,{as:`span`,className:`text-text2 leading-[22px] text-[14px]`,children:[e.follower_count??0,r(`searchUser.followersSuffix`)]})]})]})})});D.displayName=`UserItem`;const O=g(({list:n})=>{let r=f(),[i,o]=b({});v(()=>{o({})},[n]);let s=_(e=>{e.user_id&&o(t=>({...t,[e.user_id]:e.is_following?1:0}))},[]),c=y(()=>n.slice(0,3).map(e=>{let t=e.user_id||``;return!t||i[t]===void 0?e:{...e,is_following:i[t]}}),[i,n,3]),u=n.length>3,d=_(()=>{t.emit(p.EXCHANGE_SEARCH_TYPE,`user`)},[]);return c.length===0?null:S(a,{className:`w-full pt-[12px]`,children:[x(a,{className:`px-[12px]`,children:c.map((e,t)=>x(D,{item:e,onUpdate:e=>{r(()=>s(e))}},String(e.user_id??t)))}),u&&x(a,{className:`w-full flex items-center justify-center`,children:S(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:d,children:[x(l,{as:`span`,children:`查看更多`}),x(m,{className:`w-[12px] h-[12px]`})]})})]})});O.displayName=`SearchUserWithLimit`;const k=g(({inputVal:e,sort:t,refreshVersion:n})=>{let i=C(`components.pages.search.searchResult`),c=f(),l=_(async n=>await r({data_type:2,extra_params:JSON.stringify({type:4,keywords:e,sort:t}),page:n||1,page_size:20}),[e,t]),p=y(()=>[`searchByKeyForUser`,e,4,t,n],[e,t,n]),m=u({key:p,initialPageParam:1,async queryFn(e){return(await l(e))?.data?.users??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),h=d(),g=_((e,t)=>{e&&h(p,n=>n&&{...n,pages:n.pages.map(n=>({...n,list:(n.list??[]).map(n=>n.user_id===e?{...n,is_following:t?1:0}:n)}))})},[h,p]),v=async e=>{try{await m.fetchNextPage()}catch(e){console.error(`获取用户列表失败`,e)}},b=(m?.data?.pages??[]).flatMap(e=>e.list??[]),S=!!(m?.isPending||m?.isFetching);return S&&b.length===0?x(E,{}):x(a,{className:`w-full`,children:x(s,{loading:S,hasMore:m?.hasNextPage??!1,loadMore:v,empty:`nodata`,emptyText:i(`searchUser.emptyResult`),children:b.map((e,t)=>x(o,{children:x(D,{item:e,onUpdate:e=>{c(()=>{g(e.user_id||``,!!e.is_following)})}})},String(e.user_id??t)))})})});k.displayName=`SearchUserWithPagination`;const A=g(e=>e.mode===`all`?x(O,{list:e.list??[]}):x(k,{inputVal:e.inputVal??``,sort:e.sort??1,refreshVersion:e.refreshVersion??0}));A.displayName=`SearchUser`;export{A as default};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as r}from"../../../service/generated/client.mjs";import{Image as i}from"../../ui/image.mjs";import{Box as a}from"../../ui/box.mjs";import{Item as o}from"../../ui/item.mjs";import{List as s}from"../../ui/list.mjs";import{Text as c}from"../../ui/text.mjs";import{Skeleton as l}from"../../ui/skeleton.mjs";import{usePaginated as u,useUpdateRequest as d}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as f}from"../../../hooks/use-auth.mjs";import{eventKey as p}from"../../../constants/event-key.mjs";import m from"../../../assets/icons/right_arrow.mjs";import h from"../../../assets/images/user/default_avatar.mjs";import{memo as g,useCallback as _,useEffect as v,useMemo as y,useState as b}from"react";import{jsx as x,jsxs as S}from"react/jsx-runtime";import{useTranslations as C}from"next-intl";import w from"next/link";const T=typeof h==`string`?h:h.src;function E(){return x(a,{className:`w-full`,children:Array.from({length:6}).map((e,t)=>S(a,{className:`w-full h-[56px] flex items-center justify-between mb-[12px]`,children:[S(a,{className:`flex items-center`,children:[x(l,{className:`w-[56px] h-[56px] rounded-[28px]`}),S(a,{className:`ml-[8px]`,children:[x(l,{className:`w-[120px] h-[18px] mb-[8px]`}),x(l,{className:`w-[72px] h-[14px]`})]})]}),x(l,{className:`w-[76px] h-[34px] rounded-[18px]`})]},`search-user-skeleton-${t}`))})}const D=g(({item:e,onUpdate:t})=>{let r=C(`components.pages.search.searchResult`),{userInfo:o}=n();return _(n=>{t({...e,is_following:n?1:0})},[e,t]),x(a,{className:`w-full h-[56px] bg-bg1 flex flex-row items-center justify-between mb-[12px]`,children:S(w,{className:`cursor-pointer flex flex-row items-center justify-center`,href:`/profile/${e.user_id}`,children:[x(a,{className:`w-[56px] h-[56px] rounded-[28px] overflow-hidden bg-bg2 relative`,children:x(i,{src:e.avatar||T,fill:!0,objectFit:`cover`,alt:e.nick_name})}),S(a,{className:`flex flex-col ml-[8px]`,children:[x(c,{as:`span`,className:`text-text1 text-[16px] leading-[24px] h-[24px] font-bold w-[200px] inline-block truncate`,children:e.nick_name}),S(c,{as:`span`,className:`text-text2 leading-[22px] text-[14px]`,children:[e.follower_count??0,r(`searchUser.followersSuffix`)]})]})]})})});D.displayName=`UserItem`;const O=g(({list:n})=>{let r=f(),[i,o]=b({});v(()=>{o({})},[n]);let s=_(e=>{e.user_id&&o(t=>({...t,[e.user_id]:e.is_following?1:0}))},[]),l=y(()=>n.slice(0,3).map(e=>{let t=e.user_id||``;return!t||i[t]===void 0?e:{...e,is_following:i[t]}}),[i,n,3]),u=n.length>3,d=_(()=>{t.emit(p.EXCHANGE_SEARCH_TYPE,`user`)},[]);return l.length===0?null:S(a,{className:`w-full pt-[12px]`,children:[x(a,{className:`px-[12px]`,children:l.map((e,t)=>x(D,{item:e,onUpdate:e=>{r(()=>s(e))}},String(e.user_id??t)))}),u&&x(a,{className:`w-full flex items-center justify-center`,children:S(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:d,children:[x(c,{as:`span`,children:`查看更多`}),x(m,{className:`w-[12px] h-[12px]`})]})})]})});O.displayName=`SearchUserWithLimit`;const k=g(({inputVal:e,sort:t,refreshVersion:n})=>{let i=C(`components.pages.search.searchResult`),c=f(),l=_(async n=>await r({data_type:2,extra_params:JSON.stringify({type:4,keywords:e,sort:t}),page:n||1,page_size:20}),[e,t]),p=y(()=>[`searchByKeyForUser`,e,4,t,n],[e,t,n]),m=u({key:p,initialPageParam:1,async queryFn(e){return(await l(e))?.data?.users??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),h=d(),g=_((e,t)=>{e&&h(p,n=>n&&{...n,pages:n.pages.map(n=>({...n,list:(n.list??[]).map(n=>n.user_id===e?{...n,is_following:t?1:0}:n)}))})},[h,p]),v=async e=>{try{await m.fetchNextPage()}catch(e){console.error(`获取用户列表失败`,e)}},b=(m?.data?.pages??[]).flatMap(e=>e.list??[]),S=!!(m?.isPending||m?.isFetching);return S&&b.length===0?x(E,{}):x(a,{className:`w-full`,children:x(s,{loading:S,hasMore:m?.hasNextPage??!1,loadMore:v,empty:`nodata`,emptyText:i(`searchUser.emptyResult`),children:b.map((e,t)=>x(o,{children:x(D,{item:e,onUpdate:e=>{c(()=>{g(e.user_id||``,!!e.is_following)})}})},String(e.user_id??t)))})})});k.displayName=`SearchUserWithPagination`;const A=g(e=>e.mode===`all`?x(O,{list:e.list??[]}):x(k,{inputVal:e.inputVal??``,sort:e.sort??1,refreshVersion:e.refreshVersion??0}));A.displayName=`SearchUser`;export{A as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{Item as a}from"../../ui/item.mjs";import{List as o}from"../../ui/list.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import{eventKey as l}from"../../../constants/event-key.mjs";import{formatVideoDuration as u,getPostDetailPagePath as d}from"../../../utils/tools.mjs";import{apiCollectCustom as f}from"../../../utils/api-collect.mjs";import p from"../../../assets/icons/view.mjs";import m from"../../../assets/icons/right_arrow.mjs";import{SearchVideoCardSkeleton as h}from"../../common/skeleton/search-video-card-skeleton.mjs";import{memo as g,useCallback as _,useMemo as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";import S from"next/link";const C=g(()=>y(h,{count:3}));C.displayName=`SearchVideoListSkeleton`;function w(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function T(e){let t=Number(e.episode_count||0),n=Number.isFinite(t)&&t>0,r=String(e.update_status??``).trim();return!n||t<=1?u(Number(e.duration||0)):r===`1`?`${t}集全`:`更新至${t}集`}const E=g(({item:e})=>{let t=e.name||``,n=e.img_x||e.img_y||``,a=T(e);return b(S,{className:`mb-[12px] block w-full border-b border-line1 px-[12px] pb-[12px]`,href:d({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[b(i,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[n&&y(r,{src:n,alt:t||`封面`,fill:!0,objectFit:`cover`}),y(i,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),b(i,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[y(p,{className:`h-[14px] w-[14px] text-white`}),y(s,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:w(e.play_count)})]}),a&&y(i,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:y(s,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:a})})]}),b(i,{className:`flex items-center justify-between gap-[12px] pt-[10px] px-2`,children:[b(i,{className:`flex-1 min-w-0`,children:[y(s,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:t}),e.description&&y(s,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:e.description})]}),y(s,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})});E.displayName=`VideoItem`;const D=g(({list:e})=>y(i,{className:`w-full px-[12px] pt-[12px]`,children:e.map((e,t)=>y(E,{item:e},String(e.video_id??t)))}));D.displayName=`VideoListContent`;const O=g(({list:n,hasMore:r})=>{let a=_(()=>{t.emit(l.EXCHANGE_SEARCH_TYPE,`video`)},[]);return b(i,{className:`w-full`,children:[y(D,{list:n}),r&&y(i,{className:`w-full flex items-center justify-center`,children:b(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:a,children:[y(s,{as:`span`,children:`查看更多`}),y(m,{className:`w-[12px] h-[12px]`})]})})]})});O.displayName=`SearchVideoWithAll`;const k=g(({inputVal:e,sort:t,refreshVersion:r})=>{let s=x(`components.pages.search.searchResult`),l=_(async r=>await n({data_type:2,extra_params:JSON.stringify({type:3,keywords:e,sort:t}),page:r||1,page_size:20}),[e,t]),u=c({key:v(()=>[`searchByKeyForVideoInfo`,e,3,t,r],[e,t,r]),initialPageParam:1,async queryFn(e){return(await l(e))?.data?.videos??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),d=v(()=>{let e=u.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[u.data?.pages]),f=u.isPending||u.isFetching;return f&&d.length===0?y(C,{}):y(i,{className:`w-full`,children:y(o,{loading:f,hasMore:u.hasNextPage??!1,loadMore:async e=>{try{await u.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},empty:`nodata`,emptyText:s(`searchVideoInfo.noRelevantContent`),children:d.map((e,t)=>y(a,{className:`p-0`,children:y(E,{item:e})},String(e.video_id??t)))})})});k.displayName=`SearchVideoWithPagination`;const A=g(e=>e.mode===`all`?y(O,{list:e.list,hasMore:e.hasMore}):y(k,{inputVal:e.inputVal,sort:e.sort,refreshVersion:e.refreshVersion}));A.displayName=`SearchVideo`;export{A as default};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{Item as a}from"../../ui/item.mjs";import{List as o}from"../../ui/list.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import{eventKey as l}from"../../../constants/event-key.mjs";import{formatVideoDuration as u,getPostDetailPagePath as d}from"../../../utils/tools.mjs";import{apiCollectCustom as f}from"../../../utils/api-collect.mjs";import p from"../../../assets/icons/view.mjs";import{SearchVideoCardSkeleton as m}from"../../common/skeleton/search-video-card-skeleton.mjs";import h from"../../../assets/icons/right_arrow.mjs";import{memo as g,useCallback as _,useMemo as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";import S from"next/link";const C=g(()=>y(m,{count:3}));C.displayName=`SearchVideoListSkeleton`;function w(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function T(e){let t=Number(e.episode_count||0),n=Number.isFinite(t)&&t>0,r=String(e.update_status??``).trim();return!n||t<=1?u(Number(e.duration||0)):r===`1`?`${t}集全`:`更新至${t}集`}const E=g(({item:e})=>{let t=e.name||``,n=e.img_x||e.img_y||``,a=T(e);return b(S,{className:`mb-[12px] block w-full border-b border-line1 px-[12px] pb-[12px]`,href:d({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[b(i,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[n&&y(r,{src:n,alt:t||`封面`,fill:!0,objectFit:`cover`}),y(i,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),b(i,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[y(p,{className:`h-[14px] w-[14px] text-white`}),y(s,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:w(e.play_count)})]}),a&&y(i,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:y(s,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:a})})]}),b(i,{className:`flex items-center justify-between gap-[12px] pt-[10px] px-2`,children:[b(i,{className:`flex-1 min-w-0`,children:[y(s,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:t}),e.description&&y(s,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:e.description})]}),y(s,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})});E.displayName=`VideoItem`;const D=g(({list:e})=>y(i,{children:e.map((e,t)=>y(E,{item:e},String(e.video_id??t)))}));D.displayName=`VideoListContent`;const O=g(({list:n,hasMore:r})=>{let a=_(()=>{t.emit(l.EXCHANGE_SEARCH_TYPE,`video`)},[]);return b(i,{className:`w-full`,children:[y(D,{list:n}),r&&y(i,{className:`w-full flex items-center justify-center`,children:b(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:a,children:[y(s,{as:`span`,children:`查看更多`}),y(h,{className:`w-[12px] h-[12px]`})]})})]})});O.displayName=`SearchVideoWithAll`;const k=g(({inputVal:e,sort:t,refreshVersion:r})=>{let s=x(`components.pages.search.searchResult`),l=_(async r=>await n({data_type:2,extra_params:JSON.stringify({type:3,keywords:e,sort:t}),page:r||1,page_size:20}),[e,t]),u=c({key:v(()=>[`searchByKeyForVideoInfo`,e,3,t,r],[e,t,r]),initialPageParam:1,async queryFn(e){return(await l(e))?.data?.videos??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),d=v(()=>{let e=u.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[u.data?.pages]),f=u.isPending||u.isFetching;return f&&d.length===0?y(C,{}):y(i,{className:`w-full`,children:y(o,{loading:f,hasMore:u.hasNextPage??!1,loadMore:async e=>{try{await u.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},empty:`nodata`,emptyText:s(`searchVideoInfo.noRelevantContent`),children:d.map((e,t)=>y(a,{className:`p-0`,children:y(E,{item:e})},String(e.video_id??t)))})})});k.displayName=`SearchVideoWithPagination`;const A=g(e=>e.mode===`all`?y(O,{list:e.list,hasMore:e.hasMore}):y(k,{inputVal:e.inputVal,sort:e.sort,refreshVersion:e.refreshVersion}));A.displayName=`SearchVideo`;export{A as default};
@@ -1,2 +1,2 @@
1
1
 
2
- import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as n,pContentGetPopularVideoListKey as r}from"../../../service/generated/tanstack.mjs";import{HydrationBoundary as i}from"../../../hooks/query/hydration-boundary.mjs";import{revalidate as a}from"../../../constants/revalidate.mjs";import{getNextVideoListPageParam as o,resolveNextCursor as s}from"./types.mjs";import c from"./video-list-client.mjs";import{jsx as l}from"react/jsx-runtime";async function u({title:u=`列表页`,tags:d=[]}={}){let f={page_size:10,tags:d.length?d:void 0};return l(i,{prefetch:[{type:`infinite`,queryKey:r(f),queryFn:async e=>{let n=(await t({page_size:10,cursor:e||void 0,tags:d.length?d:void 0},{revalidate:a.TIME})).data;return{list:n?.videos??[],nextCursor:s(n)}},initialPageParam:``,getNextPageParam:e=>o(e)},{type:`infinite`,queryKey:n(f),queryFn:async t=>{let n=(await e({page_size:10,cursor:t||void 0,tags:d.length?d:void 0},{revalidate:a.TIME})).data;return{list:n?.videos??[],nextCursor:s(n)}},initialPageParam:``,getNextPageParam:e=>o(e)}],children:l(c,{title:u,tags:d})})}export{u as VideoListPage};
2
+ import{pContentGetNewstVideoList as e,pContentGetTopRatedVideoList as t}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as n,pContentGetTopRatedVideoListKey as r}from"../../../service/generated/tanstack.mjs";import{HydrationBoundary as i}from"../../../hooks/query/hydration-boundary.mjs";import{revalidate as a}from"../../../constants/revalidate.mjs";import{getNextVideoListPageParam as o,resolveNextCursor as s}from"./types.mjs";import c from"./video-list-client.mjs";import{jsx as l}from"react/jsx-runtime";async function u({title:u=`列表页`,tags:d=[]}={}){let f={page_size:10,tags:d.length?d:void 0};return l(i,{prefetch:[{type:`infinite`,queryKey:r(f),queryFn:async e=>{let n=(await t({page_size:10,cursor:e||void 0,tags:d.length?d:void 0},{revalidate:a.TIME})).data,r=Array.isArray(n?.videos)?n.videos:[];return{list:r,nextCursor:r.length<10?``:s(n)}},initialPageParam:``,getNextPageParam:e=>o(e)},{type:`infinite`,queryKey:n(f),queryFn:async t=>{let n=(await e({page_size:10,cursor:t||void 0,tags:d.length?d:void 0},{revalidate:a.TIME})).data;return{list:n?.videos??[],nextCursor:s(n)}},initialPageParam:``,getNextPageParam:e=>o(e)}],children:l(c,{title:u,tags:d})})}export{u as VideoListPage};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{pContentGetNewstVideoList as t,pContentGetTopRatedVideoList as n}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as r,pContentGetTopRatedVideoListKey as i}from"../../../service/generated/tanstack.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{InfiniteScroll as s}from"../../ui/infinite-scroll.mjs";import{Text as c}from"../../ui/text.mjs";import{usePaginated as l}from"../../../hooks/query/use-query.mjs";import u from"../../../assets/icons/left_arrow.mjs";import{getNextVideoListPageParam as d,resolveNextCursor as f}from"./types.mjs";import{VideoListItemComponent as p}from"./video-list-item.mjs";import{useMemo as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import v from"next/link";const y=[];function b({title:b=`列表页`,tags:x=y}){let S=a(),[C,w]=h(`hot`),T=m(()=>({page_size:10,tags:x.length?x:void 0}),[x]),{data:E,fetchNextPage:D,hasNextPage:O,isFetching:k,isFetchingNextPage:A}=l({key:m(()=>C===`hot`?i(T):r(T),[T,C]),queryFn:async e=>{let r={page_size:10,cursor:e||void 0,tags:x.length?x:void 0},i=(C===`hot`?await n(r):await t(r)).data;return{list:i?.videos??[],nextCursor:f(i)}},getNextPageParam:d,initialPageParam:``,options:{staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1,refetchOnReconnect:!1}}),j=m(()=>E?.pages?.flatMap(e=>e.list)??[],[E?.pages]);function M(){S.back()}let N=m(()=>j.map((e,t)=>{let n=e.id??e.mid??``;return g(v,{href:`/video/${n}/${e.name??``}`,children:g(p,{item:e})},n)}),[j]);return _(o,{as:`main`,className:`min-h-[100dvh] bg-bg1`,children:[_(o,{className:`fixed top-0 left-0 right-0 z-20 bg-bg1`,children:[_(o,{as:`header`,className:`flex items-center gap-2 px-4 py-3`,children:[g(u,{className:`w-[16px] h-[16px]`,onClick:M}),g(c,{as:`h1`,className:`flex-1 min-w-0 flex justify-center overflow-hidden text-[18px] pr-[16px]`,children:g(c,{className:`block max-w-full truncate`,children:b})})]}),_(o,{as:`nav`,className:`px-4 pb-2 flex gap-2`,children:[g(e,{type:`button`,onClick:()=>w(`hot`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`hot`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最热`}),g(e,{type:`button`,onClick:()=>w(`latest`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`latest`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最新`})]})]}),g(s,{loadMore:()=>D().then(()=>void 0),hasMore:O,threshold:300,className:`pt-[88px]`,children:g(o,{className:`grid grid-cols-2 gap-3 p-4`,children:N})})]})}export{b as default};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{pContentGetNewstVideoList as t,pContentGetTopRatedVideoList as n}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as r,pContentGetTopRatedVideoListKey as i}from"../../../service/generated/tanstack.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{InfiniteScroll as s}from"../../ui/infinite-scroll.mjs";import{Text as c}from"../../ui/text.mjs";import{usePaginated as l}from"../../../hooks/query/use-query.mjs";import u from"../../../assets/icons/left_arrow.mjs";import{getNextVideoListPageParam as d,resolveNextCursor as f}from"./types.mjs";import{VideoListItemComponent as p}from"./video-list-item.mjs";import{VideoListSkeleton as m}from"./video-list-skeleton.mjs";import{useEffect as h,useMemo as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import b from"next/link";const x=[];function S({title:S=`列表页`,tags:C=x}){let w=a(),[T,E]=_(`hot`),D=g(()=>({page_size:10,tags:C.length?C:void 0}),[C]),{data:O,fetchNextPage:k,hasNextPage:A,isPending:j,isFetching:M}=l({key:g(()=>T===`hot`?i(D):r(D),[D,T]),queryFn:async e=>{let r={page_size:10,cursor:e||void 0,tags:C.length?C:void 0},i=(T===`hot`?await n(r):await t(r)).data,a=Array.isArray(i?.videos)?i.videos:[];return{list:a,nextCursor:T===`hot`&&a.length<10?``:f(i)}},getNextPageParam:d,initialPageParam:``,options:{staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1,refetchOnReconnect:!1}}),N=g(()=>O?.pages?.flatMap(e=>e.list)??[],[O?.pages]),P=(O?.pages?.length??0)>0,F=g(()=>P?A??!1:!0,[P,A]),I=N.length===0&&(!P||j||M);h(()=>{typeof window>`u`||window.scrollTo({top:0,behavior:`auto`})},[T]);function L(){w.back()}let R=g(()=>N.map(e=>{let t=e.id??e.mid??``;return v(b,{href:`/video/${t}/${e.name??``}`,children:v(p,{item:e})},t)}),[N]);return I?v(m,{}):y(o,{as:`main`,className:`min-h-[100dvh] bg-bg1`,children:[y(o,{className:`fixed top-0 left-0 right-0 z-20 bg-bg1`,children:[y(o,{as:`header`,className:`flex items-center gap-2 px-4 py-3`,children:[v(u,{className:`w-[16px] h-[16px]`,onClick:L}),v(c,{as:`h1`,className:`flex-1 min-w-0 flex justify-center overflow-hidden text-[18px] pr-[16px]`,children:v(c,{className:`block max-w-full truncate`,children:S})})]}),y(o,{as:`nav`,className:`px-4 pb-2 flex gap-2`,children:[v(e,{type:`button`,onClick:()=>E(`hot`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${T===`hot`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最热`}),v(e,{type:`button`,onClick:()=>E(`latest`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${T===`latest`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最新`})]})]}),v(s,{loadMore:()=>k().then(()=>void 0),hasMore:F,noMoreText:`没有更多了`,threshold:300,className:`pt-[88px]`,children:v(o,{className:`grid grid-cols-2 gap-3 p-4`,children:R})},T)]})}export{S as default};
@@ -6,7 +6,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
6
6
  //#region components/ui/badge.d.ts
7
7
  /** badgeVariants 工具定义。 */
8
8
  declare const badgeVariants: (props?: ({
9
- variant?: "default" | "destructive" | "secondary" | "outline" | "ghost" | "link" | null | undefined;
9
+ variant?: "default" | "link" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
10
10
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
11
11
  /** Badge 组件。 */
12
12
  declare function Badge({
@@ -7,7 +7,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
7
7
  //#region components/ui/button.d.ts
8
8
  /** buttonVariants 工具定义。 */
9
9
  declare const buttonVariants: (props?: ({
10
- variant?: "default" | "destructive" | "secondary" | "outline" | "ghost" | "link" | null | undefined;
10
+ variant?: "default" | "link" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
11
11
  size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
12
12
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
13
13
  /** Button 组件属性。 */
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../utils/cn.mjs";import{Separator as t}from"./separator.mjs";import"react";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";import{mergeProps as i}from"@base-ui/react/merge-props";import{useRender as a}from"@base-ui/react/use-render";function o({className:t,...r}){return n(`div`,{role:`list`,"data-slot":`item-group`,className:e(`gap-4 has-[[data-size=sm]]:gap-2.5 has-[[data-size=xs]]:gap-2 group/item-group flex w-full flex-col`,t),...r})}function s({className:r,...i}){return n(t,{"data-slot":`item-separator`,orientation:`horizontal`,className:e(`my-2`,r),...i})}const c=r(`[a]:hover:bg-muted rounded-lg border text-sm w-full group/item focus-visible:border-ring focus-visible:ring-ring/50 flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:ring-[3px] [a]:transition-colors`,{variants:{variant:{default:`border-transparent`,outline:`border-border`,muted:`bg-muted/50 border-transparent`},size:{default:`gap-2.5 px-3 py-2.5`,sm:`gap-2.5 px-3 py-2.5`,xs:`gap-2 px-2.5 py-2 [[data-slot=dropdown-menu-content]_&]:p-0`}},defaultVariants:{variant:`default`,size:`default`}});function l({className:t,variant:n=`default`,size:r=`default`,render:o,...s}){return a({defaultTagName:`div`,props:i({className:e(c({variant:n,size:r,className:t}))},s),render:o,state:{slot:`item`,variant:n,size:r}})}const u=r(`gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none`,{variants:{variant:{default:`bg-transparent`,icon:`[&_svg:not([class*='w-']):not([class*='h-'])]:w-4 [&_svg:not([class*='w-']):not([class*='h-'])]:h-4`,image:`w-10 h-10 overflow-hidden rounded-sm group-data-[size=sm]/item:w-8 group-data-[size=sm]/item:h-8 group-data-[size=xs]/item:w-6 group-data-[size=xs]/item:h-6 [&_img]:w-full [&_img]:h-full [&_img]:object-cover`}},defaultVariants:{variant:`default`}});function d({className:t,variant:r=`default`,...i}){return n(`div`,{"data-slot":`item-media`,"data-variant":r,className:e(u({variant:r,className:t})),...i})}function f({className:t,...r}){return n(`div`,{"data-slot":`item-content`,className:e(`gap-1 group-data-[size=xs]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none`,t),...r})}function p({className:t,...r}){return n(`div`,{"data-slot":`item-title`,className:e(`gap-2 text-sm leading-snug font-medium underline-offset-4 line-clamp-1 flex w-fit items-center`,t),...r})}function m({className:t,...r}){return n(`p`,{"data-slot":`item-description`,className:e(`text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs [&>a:hover]:text-primary line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4`,t),...r})}function h({className:t,...r}){return n(`div`,{"data-slot":`item-actions`,className:e(`gap-2 flex items-center`,t),...r})}function g({className:t,...r}){return n(`div`,{"data-slot":`item-header`,className:e(`gap-2 flex basis-full items-center justify-between`,t),...r})}function _({className:t,...r}){return n(`div`,{"data-slot":`item-footer`,className:e(`gap-2 flex basis-full items-center justify-between`,t),...r})}export{l as Item,h as ItemActions,f as ItemContent,m as ItemDescription,_ as ItemFooter,o as ItemGroup,g as ItemHeader,d as ItemMedia,s as ItemSeparator,p as ItemTitle};
2
+ "use client";import{cn as e}from"../../utils/cn.mjs";import{Separator as t}from"./separator.mjs";import"react";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";import{mergeProps as i}from"@base-ui/react/merge-props";import{useRender as a}from"@base-ui/react/use-render";function o({className:t,...r}){return n(`div`,{role:`list`,"data-slot":`item-group`,className:e(`gap-4 has-[[data-size=sm]]:gap-2.5 has-[[data-size=xs]]:gap-2 group/item-group flex w-full flex-col`,t),...r})}function s({className:r,...i}){return n(t,{"data-slot":`item-separator`,orientation:`horizontal`,className:e(`my-2`,r),...i})}const c=r(`[a]:hover:bg-muted rounded-lg border text-sm w-full group/item focus-visible:border-ring focus-visible:ring-ring/50 flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:ring-[3px] [a]:transition-colors`,{variants:{variant:{default:`border-0`,outline:`border-border`,muted:`bg-muted/50 border-transparent`},size:{default:`gap-2.5 px-3 py-2.5`,sm:`gap-2.5 px-3 py-2.5`,xs:`gap-2 px-2.5 py-2 [[data-slot=dropdown-menu-content]_&]:p-0`}},defaultVariants:{variant:`default`,size:`default`}});function l({className:t,variant:n=`default`,size:r=`default`,render:o,...s}){return a({defaultTagName:`div`,props:i({className:e(c({variant:n,size:r,className:t}))},s),render:o,state:{slot:`item`,variant:n,size:r}})}const u=r(`gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none`,{variants:{variant:{default:`bg-transparent`,icon:`[&_svg:not([class*='w-']):not([class*='h-'])]:w-4 [&_svg:not([class*='w-']):not([class*='h-'])]:h-4`,image:`w-10 h-10 overflow-hidden rounded-sm group-data-[size=sm]/item:w-8 group-data-[size=sm]/item:h-8 group-data-[size=xs]/item:w-6 group-data-[size=xs]/item:h-6 [&_img]:w-full [&_img]:h-full [&_img]:object-cover`}},defaultVariants:{variant:`default`}});function d({className:t,variant:r=`default`,...i}){return n(`div`,{"data-slot":`item-media`,"data-variant":r,className:e(u({variant:r,className:t})),...i})}function f({className:t,...r}){return n(`div`,{"data-slot":`item-content`,className:e(`gap-1 group-data-[size=xs]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none`,t),...r})}function p({className:t,...r}){return n(`div`,{"data-slot":`item-title`,className:e(`gap-2 text-sm leading-snug font-medium underline-offset-4 line-clamp-1 flex w-fit items-center`,t),...r})}function m({className:t,...r}){return n(`p`,{"data-slot":`item-description`,className:e(`text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs [&>a:hover]:text-primary line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4`,t),...r})}function h({className:t,...r}){return n(`div`,{"data-slot":`item-actions`,className:e(`gap-2 flex items-center`,t),...r})}function g({className:t,...r}){return n(`div`,{"data-slot":`item-header`,className:e(`gap-2 flex basis-full items-center justify-between`,t),...r})}function _({className:t,...r}){return n(`div`,{"data-slot":`item-footer`,className:e(`gap-2 flex basis-full items-center justify-between`,t),...r})}export{l as Item,h as ItemActions,f as ItemContent,m as ItemDescription,_ as ItemFooter,o as ItemGroup,g as ItemHeader,d as ItemMedia,s as ItemSeparator,p as ItemTitle};
@@ -0,0 +1,42 @@
1
+
2
+ import * as React from "react";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
+
5
+ //#region components/ui/loading.d.ts
6
+ type LoadingSize = 'small' | 'medium' | 'large';
7
+ interface LoadingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'className'> {
8
+ /**
9
+ * 提示文本
10
+ * @default 来自 i18n: components.ui.loading.label
11
+ */
12
+ label?: string;
13
+ /**
14
+ * 自定义类名
15
+ */
16
+ className?: string;
17
+ /**
18
+ * 大小
19
+ * @default "medium"
20
+ */
21
+ size?: LoadingSize;
22
+ /**
23
+ * 是否显示文本
24
+ * @default true
25
+ */
26
+ showLabel?: boolean;
27
+ /**
28
+ * 自定义颜色
29
+ * @default ""
30
+ */
31
+ color?: string;
32
+ }
33
+ declare function Loading({
34
+ label,
35
+ className,
36
+ size,
37
+ showLabel,
38
+ color,
39
+ ...rest
40
+ }: LoadingProps): react_jsx_runtime0.JSX.Element;
41
+ //#endregion
42
+ export { Loading };
package/dist/pages.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- import{FansPage as e}from"./components/pages/(follow)/fans/index.mjs";import{FollowedPage as t}from"./components/pages/(follow)/followed/index.mjs";import{CollectionAddPage as n}from"./components/pages/collection-add/index.mjs";import{CollectionCreatePage as r}from"./components/pages/collection-create/index.mjs";import{CollectionDetailPage as i}from"./components/pages/collection-detail/index.mjs";import{EditPage as a}from"./components/pages/edit/index.mjs";import o from"./components/pages/feed-series/page.mjs";import{FeedbackPage as s}from"./components/pages/feedback/index.mjs";import{FullscreenFeedPage as c}from"./components/pages/fullscreen-feed/index.mjs";import{HomePage as l}from"./components/pages/home/index.mjs";import{AuthGuard as u}from"./components/pages/login/auth-guard.mjs";import d from"./components/pages/post-detail/page.mjs";import{UserProfilePage as f}from"./components/pages/profile/index.mjs";import p from"./components/pages/publish/page.mjs";import{SearchPage as m}from"./components/pages/search/index.mjs";import h from"./components/pages/search-result/page-client.mjs";import{SettingsPage as g}from"./components/pages/settings/index.mjs";import{UserFollowPage as _}from"./components/pages/user-follow/index.mjs";import v from"./components/pages/video-detail/page.mjs";import{VideoListPage as y}from"./components/pages/video-list/index.mjs";import{VideoListSkeleton as b}from"./components/pages/video-list/video-list-skeleton.mjs";export{u as AuthGuard,n as CollectionAddPage,r as CollectionCreatePage,i as CollectionDetailPage,a as EditPage,e as FansPage,o as FeedSeriesPage,s as FeedbackPage,t as FollowedPage,c as FullscreenFeedPage,l as HomePage,d as PostDetailPage,p as PublishPage,m as SearchPage,h as SearchResultPage,g as SettingsPage,_ as UserFollowPage,f as UserProfilePage,v as VideoDetailPage,y as VideoListPage,b as VideoListSkeleton};
2
+ import{FansPage as e}from"./components/pages/(follow)/fans/index.mjs";import{FollowedPage as t}from"./components/pages/(follow)/followed/index.mjs";import{CollectionAddPage as n}from"./components/pages/collection-add/index.mjs";import{CollectionCreatePage as r}from"./components/pages/collection-create/index.mjs";import{CollectionDetailPage as i}from"./components/pages/collection-detail/index.mjs";import{EditPage as a}from"./components/pages/edit/index.mjs";import o from"./components/pages/feed-series/page.mjs";import{FeedbackPage as s}from"./components/pages/feedback/index.mjs";import{FullscreenFeedPage as c}from"./components/pages/fullscreen-feed/index.mjs";import{HomePage as l}from"./components/pages/home/index.mjs";import{AuthGuard as u}from"./components/pages/login/auth-guard.mjs";import d from"./components/pages/post-detail/page.mjs";import{UserProfilePage as f}from"./components/pages/profile/index.mjs";import p from"./components/pages/publish/page.mjs";import{SearchPage as m}from"./components/pages/search/index.mjs";import h from"./components/pages/search-result/page-client.mjs";import{SettingsPage as g}from"./components/pages/settings/index.mjs";import{UserFollowPage as _}from"./components/pages/user-follow/index.mjs";import v from"./components/pages/video-detail/page.mjs";import{VideoListSkeleton as y}from"./components/pages/video-list/video-list-skeleton.mjs";import{VideoListPage as b}from"./components/pages/video-list/index.mjs";export{u as AuthGuard,n as CollectionAddPage,r as CollectionCreatePage,i as CollectionDetailPage,a as EditPage,e as FansPage,o as FeedSeriesPage,s as FeedbackPage,t as FollowedPage,c as FullscreenFeedPage,l as HomePage,d as PostDetailPage,p as PublishPage,m as SearchPage,h as SearchResultPage,g as SettingsPage,_ as UserFollowPage,f as UserProfilePage,v as VideoDetailPage,b as VideoListPage,y as VideoListSkeleton};
package/dist/ui.d.mts CHANGED
@@ -17,7 +17,6 @@ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./component
17
17
  import { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, useComboboxAnchor } from "./components/ui/combobox.mjs";
18
18
  import { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from "./components/ui/context-menu.mjs";
19
19
  import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from "./components/ui/dialog.mjs";
20
- import { DotsLoading } from "./components/ui/dots-loading.mjs";
21
20
  import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger } from "./components/ui/drawer.mjs";
22
21
  import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./components/ui/dropdown-menu.mjs";
23
22
  import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, EmptyType } from "./components/ui/empty.mjs";
@@ -31,6 +30,7 @@ import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGr
31
30
  import { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle } from "./components/ui/item.mjs";
32
31
  import { Kbd, KbdGroup } from "./components/ui/kbd.mjs";
33
32
  import { List, ListItem } from "./components/ui/list.mjs";
33
+ import { Loading } from "./components/ui/loading.mjs";
34
34
  import { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from "./components/ui/menubar.mjs";
35
35
  import { NativeSelect, NativeSelectOptGroup, NativeSelectOption } from "./components/ui/native-select.mjs";
36
36
  import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "./components/ui/pagination.mjs";
@@ -55,4 +55,4 @@ import { ToggleGroup, ToggleGroupItem } from "./components/ui/toggle-group.mjs";
55
55
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./components/ui/tooltip.mjs";
56
56
  import { WheelPicker, WheelPickerClassNames, WheelPickerOption, WheelPickerWrapper } from "./components/ui/wheel-picker.mjs";
57
57
  import { toast } from "sonner";
58
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BaseImageProps, Box, BoxAs, BoxComponentProps, BoxProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, CommonImageProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DotsLoading, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, EmptyType, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, HoverCard, HoverCardContent, HoverCardTrigger, Image, ImageProps, ImagePropsWithFill, ImagePropsWithSize, InfiniteScroll, InfiniteScrollProps, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, List, ListItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NativeSelect, NativeSelectOptGroup, NativeSelectOption, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text, TextAs, TextComponentProps, TextProps, Textarea, Time, TimeMode, TimeProps, TimeValue, TimeValueUnit, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, WheelPicker, WheelPickerClassNames, WheelPickerOption, WheelPickerWrapper, badgeVariants, buttonGroupVariants, buttonVariants, normalizeTimeToMilliseconds, tabsListVariants, toast, toggleVariants, useCarousel, useComboboxAnchor };
58
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BaseImageProps, Box, BoxAs, BoxComponentProps, BoxProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, CommonImageProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, EmptyType, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, HoverCard, HoverCardContent, HoverCardTrigger, Image, ImageProps, ImagePropsWithFill, ImagePropsWithSize, InfiniteScroll, InfiniteScrollProps, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, List, ListItem, Loading, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NativeSelect, NativeSelectOptGroup, NativeSelectOption, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text, TextAs, TextComponentProps, TextProps, Textarea, Time, TimeMode, TimeProps, TimeValue, TimeValueUnit, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, WheelPicker, WheelPickerClassNames, WheelPickerOption, WheelPickerWrapper, badgeVariants, buttonGroupVariants, buttonVariants, normalizeTimeToMilliseconds, tabsListVariants, toast, toggleVariants, useCarousel, useComboboxAnchor };
package/dist/ui.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- import{Accordion as e,AccordionContent as t,AccordionItem as n,AccordionTrigger as r}from"./components/ui/accordion.mjs";import{Alert as i,AlertAction as a,AlertDescription as o,AlertTitle as s}from"./components/ui/alert.mjs";import{Button as c,buttonVariants as l}from"./components/ui/button.mjs";import{AlertDialog as u,AlertDialogAction as d,AlertDialogCancel as f,AlertDialogContent as p,AlertDialogDescription as m,AlertDialogFooter as h,AlertDialogHeader as g,AlertDialogMedia as _,AlertDialogOverlay as v,AlertDialogPortal as y,AlertDialogTitle as b,AlertDialogTrigger as x}from"./components/ui/alert-dialog.mjs";import{AspectRatio as S}from"./components/ui/aspect-ratio.mjs";import{Image as C}from"./components/ui/image.mjs";import{Avatar as w,AvatarBadge as T,AvatarFallback as E,AvatarGroup as D,AvatarGroupCount as O,AvatarImage as k}from"./components/ui/avatar.mjs";import{Badge as A,badgeVariants as j}from"./components/ui/badge.mjs";import{Box as M}from"./components/ui/box.mjs";import{Breadcrumb as N,BreadcrumbEllipsis as P,BreadcrumbItem as F,BreadcrumbLink as I,BreadcrumbList as L,BreadcrumbPage as R,BreadcrumbSeparator as z}from"./components/ui/breadcrumb.mjs";import{Separator as B}from"./components/ui/separator.mjs";import{ButtonGroup as V,ButtonGroupSeparator as H,ButtonGroupText as U,buttonGroupVariants as W}from"./components/ui/button-group.mjs";import{Card as G,CardAction as K,CardContent as q,CardDescription as J,CardFooter as Y,CardHeader as X,CardTitle as Z}from"./components/ui/card.mjs";import{Carousel as Q,CarouselContent as $,CarouselItem as ee,CarouselNext as te,CarouselPrevious as ne,useCarousel as re}from"./components/ui/carousel.mjs";import{Checkbox as ie}from"./components/ui/checkbox.mjs";import{Collapsible as ae,CollapsibleContent as oe,CollapsibleTrigger as se}from"./components/ui/collapsible.mjs";import{Input as ce}from"./components/ui/input.mjs";import{Textarea as le}from"./components/ui/textarea.mjs";import{InputGroup as ue,InputGroupAddon as de,InputGroupButton as fe,InputGroupInput as pe,InputGroupText as me,InputGroupTextarea as he}from"./components/ui/input-group.mjs";import{Combobox as ge,ComboboxChip as _e,ComboboxChips as ve,ComboboxChipsInput as ye,ComboboxCollection as be,ComboboxContent as xe,ComboboxEmpty as Se,ComboboxGroup as Ce,ComboboxInput as we,ComboboxItem as Te,ComboboxLabel as Ee,ComboboxList as De,ComboboxSeparator as Oe,ComboboxTrigger as ke,ComboboxValue as Ae,useComboboxAnchor as je}from"./components/ui/combobox.mjs";import{ContextMenu as Me,ContextMenuCheckboxItem as Ne,ContextMenuContent as Pe,ContextMenuGroup as Fe,ContextMenuItem as Ie,ContextMenuLabel as Le,ContextMenuPortal as Re,ContextMenuRadioGroup as ze,ContextMenuRadioItem as Be,ContextMenuSeparator as Ve,ContextMenuShortcut as He,ContextMenuSub as Ue,ContextMenuSubContent as We,ContextMenuSubTrigger as Ge,ContextMenuTrigger as Ke}from"./components/ui/context-menu.mjs";import{Dialog as qe,DialogClose as Je,DialogContent as Ye,DialogDescription as Xe,DialogFooter as Ze,DialogHeader as Qe,DialogOverlay as $e,DialogPortal as et,DialogTitle as tt,DialogTrigger as nt}from"./components/ui/dialog.mjs";import{DotsLoading as rt}from"./components/ui/dots-loading.mjs";import{Drawer as it,DrawerClose as at,DrawerContent as ot,DrawerDescription as st,DrawerFooter as ct,DrawerHeader as lt,DrawerOverlay as ut,DrawerPortal as dt,DrawerTitle as ft,DrawerTrigger as pt}from"./components/ui/drawer.mjs";import{DropdownMenu as mt,DropdownMenuCheckboxItem as ht,DropdownMenuContent as gt,DropdownMenuGroup as _t,DropdownMenuItem as vt,DropdownMenuLabel as yt,DropdownMenuPortal as bt,DropdownMenuRadioGroup as xt,DropdownMenuRadioItem as St,DropdownMenuSeparator as Ct,DropdownMenuShortcut as wt,DropdownMenuSub as Tt,DropdownMenuSubContent as Et,DropdownMenuSubTrigger as Dt,DropdownMenuTrigger as Ot}from"./components/ui/dropdown-menu.mjs";import{Empty as kt,EmptyContent as At,EmptyDescription as jt,EmptyHeader as Mt,EmptyMedia as Nt,EmptyState as Pt,EmptyTitle as Ft}from"./components/ui/empty.mjs";import{Label as It}from"./components/ui/label.mjs";import{Field as Lt,FieldContent as Rt,FieldDescription as zt,FieldError as Bt,FieldGroup as Vt,FieldLabel as Ht,FieldLegend as Ut,FieldSeparator as Wt,FieldSet as Gt,FieldTitle as Kt}from"./components/ui/field.mjs";import{HoverCard as qt,HoverCardContent as Jt,HoverCardTrigger as Yt}from"./components/ui/hover-card.mjs";import{InfiniteScroll as Xt}from"./components/ui/infinite-scroll.mjs";import{Item as Zt,ItemActions as Qt,ItemContent as $t,ItemDescription as en,ItemFooter as tn,ItemGroup as nn,ItemHeader as rn,ItemMedia as an,ItemSeparator as on,ItemTitle as sn}from"./components/ui/item.mjs";import{Kbd as cn,KbdGroup as ln}from"./components/ui/kbd.mjs";import{List as un,ListItem as dn}from"./components/ui/list.mjs";import{Menubar as fn,MenubarCheckboxItem as pn,MenubarContent as mn,MenubarGroup as hn,MenubarItem as gn,MenubarLabel as _n,MenubarMenu as vn,MenubarPortal as yn,MenubarRadioGroup as bn,MenubarRadioItem as xn,MenubarSeparator as Sn,MenubarShortcut as Cn,MenubarSub as wn,MenubarSubContent as Tn,MenubarSubTrigger as En,MenubarTrigger as Dn}from"./components/ui/menubar.mjs";import{NativeSelect as On,NativeSelectOptGroup as kn,NativeSelectOption as An}from"./components/ui/native-select.mjs";import{Pagination as jn,PaginationContent as Mn,PaginationEllipsis as Nn,PaginationItem as Pn,PaginationLink as Fn,PaginationNext as In,PaginationPrevious as Ln}from"./components/ui/pagination.mjs";import{Popover as Rn,PopoverContent as zn,PopoverDescription as Bn,PopoverHeader as Vn,PopoverTitle as Hn,PopoverTrigger as Un}from"./components/ui/popover.mjs";import{Progress as Wn,ProgressIndicator as Gn,ProgressLabel as Kn,ProgressTrack as qn,ProgressValue as Jn}from"./components/ui/progress.mjs";import{RadioGroup as Yn,RadioGroupItem as Xn}from"./components/ui/radio-group.mjs";import{ScrollArea as Zn,ScrollBar as Qn}from"./components/ui/scroll-area.mjs";import{Select as $n,SelectContent as er,SelectGroup as tr,SelectItem as nr,SelectLabel as rr,SelectScrollDownButton as ir,SelectScrollUpButton as ar,SelectSeparator as or,SelectTrigger as sr,SelectValue as cr}from"./components/ui/select.mjs";import{Sheet as lr,SheetClose as ur,SheetContent as dr,SheetDescription as fr,SheetFooter as pr,SheetHeader as mr,SheetTitle as hr,SheetTrigger as gr}from"./components/ui/sheet.mjs";import{Skeleton as _r}from"./components/ui/skeleton.mjs";import{Slider as vr}from"./components/ui/slider.mjs";import{Toaster as yr}from"./components/ui/sonner.mjs";import{Spinner as br}from"./components/ui/spinner.mjs";import{Switch as xr}from"./components/ui/switch.mjs";import{Table as Sr,TableBody as Cr,TableCaption as wr,TableCell as Tr,TableFooter as Er,TableHead as Dr,TableHeader as Or,TableRow as kr}from"./components/ui/table.mjs";import{Tabs as Ar,TabsContent as jr,TabsList as Mr,TabsTrigger as Nr,tabsListVariants as Pr}from"./components/ui/tabs.mjs";import{Text as Fr}from"./components/ui/text.mjs";import{Time as Ir,normalizeTimeToMilliseconds as Lr}from"./components/ui/time.mjs";import{Toggle as Rr,toggleVariants as zr}from"./components/ui/toggle.mjs";import{ToggleGroup as Br,ToggleGroupItem as Vr}from"./components/ui/toggle-group.mjs";import{Tooltip as Hr,TooltipContent as Ur,TooltipProvider as Wr,TooltipTrigger as Gr}from"./components/ui/tooltip.mjs";import{WheelPicker as Kr,WheelPickerWrapper as qr}from"./components/ui/wheel-picker.mjs";import{toast as Jr}from"sonner";export{e as Accordion,t as AccordionContent,n as AccordionItem,r as AccordionTrigger,i as Alert,a as AlertAction,o as AlertDescription,u as AlertDialog,d as AlertDialogAction,f as AlertDialogCancel,p as AlertDialogContent,m as AlertDialogDescription,h as AlertDialogFooter,g as AlertDialogHeader,_ as AlertDialogMedia,v as AlertDialogOverlay,y as AlertDialogPortal,b as AlertDialogTitle,x as AlertDialogTrigger,s as AlertTitle,S as AspectRatio,w as Avatar,T as AvatarBadge,E as AvatarFallback,D as AvatarGroup,O as AvatarGroupCount,k as AvatarImage,A as Badge,M as Box,N as Breadcrumb,P as BreadcrumbEllipsis,F as BreadcrumbItem,I as BreadcrumbLink,L as BreadcrumbList,R as BreadcrumbPage,z as BreadcrumbSeparator,c as Button,V as ButtonGroup,H as ButtonGroupSeparator,U as ButtonGroupText,G as Card,K as CardAction,q as CardContent,J as CardDescription,Y as CardFooter,X as CardHeader,Z as CardTitle,Q as Carousel,$ as CarouselContent,ee as CarouselItem,te as CarouselNext,ne as CarouselPrevious,ie as Checkbox,ae as Collapsible,oe as CollapsibleContent,se as CollapsibleTrigger,ge as Combobox,_e as ComboboxChip,ve as ComboboxChips,ye as ComboboxChipsInput,be as ComboboxCollection,xe as ComboboxContent,Se as ComboboxEmpty,Ce as ComboboxGroup,we as ComboboxInput,Te as ComboboxItem,Ee as ComboboxLabel,De as ComboboxList,Oe as ComboboxSeparator,ke as ComboboxTrigger,Ae as ComboboxValue,Me as ContextMenu,Ne as ContextMenuCheckboxItem,Pe as ContextMenuContent,Fe as ContextMenuGroup,Ie as ContextMenuItem,Le as ContextMenuLabel,Re as ContextMenuPortal,ze as ContextMenuRadioGroup,Be as ContextMenuRadioItem,Ve as ContextMenuSeparator,He as ContextMenuShortcut,Ue as ContextMenuSub,We as ContextMenuSubContent,Ge as ContextMenuSubTrigger,Ke as ContextMenuTrigger,qe as Dialog,Je as DialogClose,Ye as DialogContent,Xe as DialogDescription,Ze as DialogFooter,Qe as DialogHeader,$e as DialogOverlay,et as DialogPortal,tt as DialogTitle,nt as DialogTrigger,rt as DotsLoading,it as Drawer,at as DrawerClose,ot as DrawerContent,st as DrawerDescription,ct as DrawerFooter,lt as DrawerHeader,ut as DrawerOverlay,dt as DrawerPortal,ft as DrawerTitle,pt as DrawerTrigger,mt as DropdownMenu,ht as DropdownMenuCheckboxItem,gt as DropdownMenuContent,_t as DropdownMenuGroup,vt as DropdownMenuItem,yt as DropdownMenuLabel,bt as DropdownMenuPortal,xt as DropdownMenuRadioGroup,St as DropdownMenuRadioItem,Ct as DropdownMenuSeparator,wt as DropdownMenuShortcut,Tt as DropdownMenuSub,Et as DropdownMenuSubContent,Dt as DropdownMenuSubTrigger,Ot as DropdownMenuTrigger,kt as Empty,At as EmptyContent,jt as EmptyDescription,Mt as EmptyHeader,Nt as EmptyMedia,Pt as EmptyState,Ft as EmptyTitle,Lt as Field,Rt as FieldContent,zt as FieldDescription,Bt as FieldError,Vt as FieldGroup,Ht as FieldLabel,Ut as FieldLegend,Wt as FieldSeparator,Gt as FieldSet,Kt as FieldTitle,qt as HoverCard,Jt as HoverCardContent,Yt as HoverCardTrigger,C as Image,Xt as InfiniteScroll,ce as Input,ue as InputGroup,de as InputGroupAddon,fe as InputGroupButton,pe as InputGroupInput,me as InputGroupText,he as InputGroupTextarea,Zt as Item,Qt as ItemActions,$t as ItemContent,en as ItemDescription,tn as ItemFooter,nn as ItemGroup,rn as ItemHeader,an as ItemMedia,on as ItemSeparator,sn as ItemTitle,cn as Kbd,ln as KbdGroup,It as Label,un as List,dn as ListItem,fn as Menubar,pn as MenubarCheckboxItem,mn as MenubarContent,hn as MenubarGroup,gn as MenubarItem,_n as MenubarLabel,vn as MenubarMenu,yn as MenubarPortal,bn as MenubarRadioGroup,xn as MenubarRadioItem,Sn as MenubarSeparator,Cn as MenubarShortcut,wn as MenubarSub,Tn as MenubarSubContent,En as MenubarSubTrigger,Dn as MenubarTrigger,On as NativeSelect,kn as NativeSelectOptGroup,An as NativeSelectOption,jn as Pagination,Mn as PaginationContent,Nn as PaginationEllipsis,Pn as PaginationItem,Fn as PaginationLink,In as PaginationNext,Ln as PaginationPrevious,Rn as Popover,zn as PopoverContent,Bn as PopoverDescription,Vn as PopoverHeader,Hn as PopoverTitle,Un as PopoverTrigger,Wn as Progress,Gn as ProgressIndicator,Kn as ProgressLabel,qn as ProgressTrack,Jn as ProgressValue,Yn as RadioGroup,Xn as RadioGroupItem,Zn as ScrollArea,Qn as ScrollBar,$n as Select,er as SelectContent,tr as SelectGroup,nr as SelectItem,rr as SelectLabel,ir as SelectScrollDownButton,ar as SelectScrollUpButton,or as SelectSeparator,sr as SelectTrigger,cr as SelectValue,B as Separator,lr as Sheet,ur as SheetClose,dr as SheetContent,fr as SheetDescription,pr as SheetFooter,mr as SheetHeader,hr as SheetTitle,gr as SheetTrigger,_r as Skeleton,vr as Slider,br as Spinner,xr as Switch,Sr as Table,Cr as TableBody,wr as TableCaption,Tr as TableCell,Er as TableFooter,Dr as TableHead,Or as TableHeader,kr as TableRow,Ar as Tabs,jr as TabsContent,Mr as TabsList,Nr as TabsTrigger,Fr as Text,le as Textarea,Ir as Time,yr as Toaster,Rr as Toggle,Br as ToggleGroup,Vr as ToggleGroupItem,Hr as Tooltip,Ur as TooltipContent,Wr as TooltipProvider,Gr as TooltipTrigger,Kr as WheelPicker,qr as WheelPickerWrapper,j as badgeVariants,W as buttonGroupVariants,l as buttonVariants,Lr as normalizeTimeToMilliseconds,Pr as tabsListVariants,Jr as toast,zr as toggleVariants,re as useCarousel,je as useComboboxAnchor};
2
+ import{Accordion as e,AccordionContent as t,AccordionItem as n,AccordionTrigger as r}from"./components/ui/accordion.mjs";import{Alert as i,AlertAction as a,AlertDescription as o,AlertTitle as s}from"./components/ui/alert.mjs";import{Button as c,buttonVariants as l}from"./components/ui/button.mjs";import{AlertDialog as u,AlertDialogAction as d,AlertDialogCancel as f,AlertDialogContent as p,AlertDialogDescription as m,AlertDialogFooter as h,AlertDialogHeader as g,AlertDialogMedia as _,AlertDialogOverlay as v,AlertDialogPortal as y,AlertDialogTitle as b,AlertDialogTrigger as x}from"./components/ui/alert-dialog.mjs";import{AspectRatio as S}from"./components/ui/aspect-ratio.mjs";import{Image as C}from"./components/ui/image.mjs";import{Avatar as w,AvatarBadge as T,AvatarFallback as E,AvatarGroup as D,AvatarGroupCount as O,AvatarImage as k}from"./components/ui/avatar.mjs";import{Badge as A,badgeVariants as j}from"./components/ui/badge.mjs";import{Box as M}from"./components/ui/box.mjs";import{Breadcrumb as N,BreadcrumbEllipsis as P,BreadcrumbItem as F,BreadcrumbLink as I,BreadcrumbList as L,BreadcrumbPage as R,BreadcrumbSeparator as z}from"./components/ui/breadcrumb.mjs";import{Separator as B}from"./components/ui/separator.mjs";import{ButtonGroup as V,ButtonGroupSeparator as H,ButtonGroupText as U,buttonGroupVariants as W}from"./components/ui/button-group.mjs";import{Card as G,CardAction as K,CardContent as q,CardDescription as J,CardFooter as Y,CardHeader as X,CardTitle as Z}from"./components/ui/card.mjs";import{Carousel as Q,CarouselContent as $,CarouselItem as ee,CarouselNext as te,CarouselPrevious as ne,useCarousel as re}from"./components/ui/carousel.mjs";import{Checkbox as ie}from"./components/ui/checkbox.mjs";import{Collapsible as ae,CollapsibleContent as oe,CollapsibleTrigger as se}from"./components/ui/collapsible.mjs";import{Input as ce}from"./components/ui/input.mjs";import{Textarea as le}from"./components/ui/textarea.mjs";import{InputGroup as ue,InputGroupAddon as de,InputGroupButton as fe,InputGroupInput as pe,InputGroupText as me,InputGroupTextarea as he}from"./components/ui/input-group.mjs";import{Combobox as ge,ComboboxChip as _e,ComboboxChips as ve,ComboboxChipsInput as ye,ComboboxCollection as be,ComboboxContent as xe,ComboboxEmpty as Se,ComboboxGroup as Ce,ComboboxInput as we,ComboboxItem as Te,ComboboxLabel as Ee,ComboboxList as De,ComboboxSeparator as Oe,ComboboxTrigger as ke,ComboboxValue as Ae,useComboboxAnchor as je}from"./components/ui/combobox.mjs";import{ContextMenu as Me,ContextMenuCheckboxItem as Ne,ContextMenuContent as Pe,ContextMenuGroup as Fe,ContextMenuItem as Ie,ContextMenuLabel as Le,ContextMenuPortal as Re,ContextMenuRadioGroup as ze,ContextMenuRadioItem as Be,ContextMenuSeparator as Ve,ContextMenuShortcut as He,ContextMenuSub as Ue,ContextMenuSubContent as We,ContextMenuSubTrigger as Ge,ContextMenuTrigger as Ke}from"./components/ui/context-menu.mjs";import{Dialog as qe,DialogClose as Je,DialogContent as Ye,DialogDescription as Xe,DialogFooter as Ze,DialogHeader as Qe,DialogOverlay as $e,DialogPortal as et,DialogTitle as tt,DialogTrigger as nt}from"./components/ui/dialog.mjs";import{Drawer as rt,DrawerClose as it,DrawerContent as at,DrawerDescription as ot,DrawerFooter as st,DrawerHeader as ct,DrawerOverlay as lt,DrawerPortal as ut,DrawerTitle as dt,DrawerTrigger as ft}from"./components/ui/drawer.mjs";import{DropdownMenu as pt,DropdownMenuCheckboxItem as mt,DropdownMenuContent as ht,DropdownMenuGroup as gt,DropdownMenuItem as _t,DropdownMenuLabel as vt,DropdownMenuPortal as yt,DropdownMenuRadioGroup as bt,DropdownMenuRadioItem as xt,DropdownMenuSeparator as St,DropdownMenuShortcut as Ct,DropdownMenuSub as wt,DropdownMenuSubContent as Tt,DropdownMenuSubTrigger as Et,DropdownMenuTrigger as Dt}from"./components/ui/dropdown-menu.mjs";import{Empty as Ot,EmptyContent as kt,EmptyDescription as At,EmptyHeader as jt,EmptyMedia as Mt,EmptyState as Nt,EmptyTitle as Pt}from"./components/ui/empty.mjs";import{Label as Ft}from"./components/ui/label.mjs";import{Field as It,FieldContent as Lt,FieldDescription as Rt,FieldError as zt,FieldGroup as Bt,FieldLabel as Vt,FieldLegend as Ht,FieldSeparator as Ut,FieldSet as Wt,FieldTitle as Gt}from"./components/ui/field.mjs";import{HoverCard as Kt,HoverCardContent as qt,HoverCardTrigger as Jt}from"./components/ui/hover-card.mjs";import{InfiniteScroll as Yt}from"./components/ui/infinite-scroll.mjs";import{Item as Xt,ItemActions as Zt,ItemContent as Qt,ItemDescription as $t,ItemFooter as en,ItemGroup as tn,ItemHeader as nn,ItemMedia as rn,ItemSeparator as an,ItemTitle as on}from"./components/ui/item.mjs";import{Kbd as sn,KbdGroup as cn}from"./components/ui/kbd.mjs";import{List as ln,ListItem as un}from"./components/ui/list.mjs";import{Text as dn}from"./components/ui/text.mjs";import fn from"./components/ui/loading.mjs";import{Menubar as pn,MenubarCheckboxItem as mn,MenubarContent as hn,MenubarGroup as gn,MenubarItem as _n,MenubarLabel as vn,MenubarMenu as yn,MenubarPortal as bn,MenubarRadioGroup as xn,MenubarRadioItem as Sn,MenubarSeparator as Cn,MenubarShortcut as wn,MenubarSub as Tn,MenubarSubContent as En,MenubarSubTrigger as Dn,MenubarTrigger as On}from"./components/ui/menubar.mjs";import{NativeSelect as kn,NativeSelectOptGroup as An,NativeSelectOption as jn}from"./components/ui/native-select.mjs";import{Pagination as Mn,PaginationContent as Nn,PaginationEllipsis as Pn,PaginationItem as Fn,PaginationLink as In,PaginationNext as Ln,PaginationPrevious as Rn}from"./components/ui/pagination.mjs";import{Popover as zn,PopoverContent as Bn,PopoverDescription as Vn,PopoverHeader as Hn,PopoverTitle as Un,PopoverTrigger as Wn}from"./components/ui/popover.mjs";import{Progress as Gn,ProgressIndicator as Kn,ProgressLabel as qn,ProgressTrack as Jn,ProgressValue as Yn}from"./components/ui/progress.mjs";import{RadioGroup as Xn,RadioGroupItem as Zn}from"./components/ui/radio-group.mjs";import{ScrollArea as Qn,ScrollBar as $n}from"./components/ui/scroll-area.mjs";import{Select as er,SelectContent as tr,SelectGroup as nr,SelectItem as rr,SelectLabel as ir,SelectScrollDownButton as ar,SelectScrollUpButton as or,SelectSeparator as sr,SelectTrigger as cr,SelectValue as lr}from"./components/ui/select.mjs";import{Sheet as ur,SheetClose as dr,SheetContent as fr,SheetDescription as pr,SheetFooter as mr,SheetHeader as hr,SheetTitle as gr,SheetTrigger as _r}from"./components/ui/sheet.mjs";import{Skeleton as vr}from"./components/ui/skeleton.mjs";import{Slider as yr}from"./components/ui/slider.mjs";import{Toaster as br}from"./components/ui/sonner.mjs";import{Spinner as xr}from"./components/ui/spinner.mjs";import{Switch as Sr}from"./components/ui/switch.mjs";import{Table as Cr,TableBody as wr,TableCaption as Tr,TableCell as Er,TableFooter as Dr,TableHead as Or,TableHeader as kr,TableRow as Ar}from"./components/ui/table.mjs";import{Tabs as jr,TabsContent as Mr,TabsList as Nr,TabsTrigger as Pr,tabsListVariants as Fr}from"./components/ui/tabs.mjs";import{Time as Ir,normalizeTimeToMilliseconds as Lr}from"./components/ui/time.mjs";import{Toggle as Rr,toggleVariants as zr}from"./components/ui/toggle.mjs";import{ToggleGroup as Br,ToggleGroupItem as Vr}from"./components/ui/toggle-group.mjs";import{Tooltip as Hr,TooltipContent as Ur,TooltipProvider as Wr,TooltipTrigger as Gr}from"./components/ui/tooltip.mjs";import{WheelPicker as Kr,WheelPickerWrapper as qr}from"./components/ui/wheel-picker.mjs";import{toast as Jr}from"sonner";export{e as Accordion,t as AccordionContent,n as AccordionItem,r as AccordionTrigger,i as Alert,a as AlertAction,o as AlertDescription,u as AlertDialog,d as AlertDialogAction,f as AlertDialogCancel,p as AlertDialogContent,m as AlertDialogDescription,h as AlertDialogFooter,g as AlertDialogHeader,_ as AlertDialogMedia,v as AlertDialogOverlay,y as AlertDialogPortal,b as AlertDialogTitle,x as AlertDialogTrigger,s as AlertTitle,S as AspectRatio,w as Avatar,T as AvatarBadge,E as AvatarFallback,D as AvatarGroup,O as AvatarGroupCount,k as AvatarImage,A as Badge,M as Box,N as Breadcrumb,P as BreadcrumbEllipsis,F as BreadcrumbItem,I as BreadcrumbLink,L as BreadcrumbList,R as BreadcrumbPage,z as BreadcrumbSeparator,c as Button,V as ButtonGroup,H as ButtonGroupSeparator,U as ButtonGroupText,G as Card,K as CardAction,q as CardContent,J as CardDescription,Y as CardFooter,X as CardHeader,Z as CardTitle,Q as Carousel,$ as CarouselContent,ee as CarouselItem,te as CarouselNext,ne as CarouselPrevious,ie as Checkbox,ae as Collapsible,oe as CollapsibleContent,se as CollapsibleTrigger,ge as Combobox,_e as ComboboxChip,ve as ComboboxChips,ye as ComboboxChipsInput,be as ComboboxCollection,xe as ComboboxContent,Se as ComboboxEmpty,Ce as ComboboxGroup,we as ComboboxInput,Te as ComboboxItem,Ee as ComboboxLabel,De as ComboboxList,Oe as ComboboxSeparator,ke as ComboboxTrigger,Ae as ComboboxValue,Me as ContextMenu,Ne as ContextMenuCheckboxItem,Pe as ContextMenuContent,Fe as ContextMenuGroup,Ie as ContextMenuItem,Le as ContextMenuLabel,Re as ContextMenuPortal,ze as ContextMenuRadioGroup,Be as ContextMenuRadioItem,Ve as ContextMenuSeparator,He as ContextMenuShortcut,Ue as ContextMenuSub,We as ContextMenuSubContent,Ge as ContextMenuSubTrigger,Ke as ContextMenuTrigger,qe as Dialog,Je as DialogClose,Ye as DialogContent,Xe as DialogDescription,Ze as DialogFooter,Qe as DialogHeader,$e as DialogOverlay,et as DialogPortal,tt as DialogTitle,nt as DialogTrigger,rt as Drawer,it as DrawerClose,at as DrawerContent,ot as DrawerDescription,st as DrawerFooter,ct as DrawerHeader,lt as DrawerOverlay,ut as DrawerPortal,dt as DrawerTitle,ft as DrawerTrigger,pt as DropdownMenu,mt as DropdownMenuCheckboxItem,ht as DropdownMenuContent,gt as DropdownMenuGroup,_t as DropdownMenuItem,vt as DropdownMenuLabel,yt as DropdownMenuPortal,bt as DropdownMenuRadioGroup,xt as DropdownMenuRadioItem,St as DropdownMenuSeparator,Ct as DropdownMenuShortcut,wt as DropdownMenuSub,Tt as DropdownMenuSubContent,Et as DropdownMenuSubTrigger,Dt as DropdownMenuTrigger,Ot as Empty,kt as EmptyContent,At as EmptyDescription,jt as EmptyHeader,Mt as EmptyMedia,Nt as EmptyState,Pt as EmptyTitle,It as Field,Lt as FieldContent,Rt as FieldDescription,zt as FieldError,Bt as FieldGroup,Vt as FieldLabel,Ht as FieldLegend,Ut as FieldSeparator,Wt as FieldSet,Gt as FieldTitle,Kt as HoverCard,qt as HoverCardContent,Jt as HoverCardTrigger,C as Image,Yt as InfiniteScroll,ce as Input,ue as InputGroup,de as InputGroupAddon,fe as InputGroupButton,pe as InputGroupInput,me as InputGroupText,he as InputGroupTextarea,Xt as Item,Zt as ItemActions,Qt as ItemContent,$t as ItemDescription,en as ItemFooter,tn as ItemGroup,nn as ItemHeader,rn as ItemMedia,an as ItemSeparator,on as ItemTitle,sn as Kbd,cn as KbdGroup,Ft as Label,ln as List,un as ListItem,fn as Loading,pn as Menubar,mn as MenubarCheckboxItem,hn as MenubarContent,gn as MenubarGroup,_n as MenubarItem,vn as MenubarLabel,yn as MenubarMenu,bn as MenubarPortal,xn as MenubarRadioGroup,Sn as MenubarRadioItem,Cn as MenubarSeparator,wn as MenubarShortcut,Tn as MenubarSub,En as MenubarSubContent,Dn as MenubarSubTrigger,On as MenubarTrigger,kn as NativeSelect,An as NativeSelectOptGroup,jn as NativeSelectOption,Mn as Pagination,Nn as PaginationContent,Pn as PaginationEllipsis,Fn as PaginationItem,In as PaginationLink,Ln as PaginationNext,Rn as PaginationPrevious,zn as Popover,Bn as PopoverContent,Vn as PopoverDescription,Hn as PopoverHeader,Un as PopoverTitle,Wn as PopoverTrigger,Gn as Progress,Kn as ProgressIndicator,qn as ProgressLabel,Jn as ProgressTrack,Yn as ProgressValue,Xn as RadioGroup,Zn as RadioGroupItem,Qn as ScrollArea,$n as ScrollBar,er as Select,tr as SelectContent,nr as SelectGroup,rr as SelectItem,ir as SelectLabel,ar as SelectScrollDownButton,or as SelectScrollUpButton,sr as SelectSeparator,cr as SelectTrigger,lr as SelectValue,B as Separator,ur as Sheet,dr as SheetClose,fr as SheetContent,pr as SheetDescription,mr as SheetFooter,hr as SheetHeader,gr as SheetTitle,_r as SheetTrigger,vr as Skeleton,yr as Slider,xr as Spinner,Sr as Switch,Cr as Table,wr as TableBody,Tr as TableCaption,Er as TableCell,Dr as TableFooter,Or as TableHead,kr as TableHeader,Ar as TableRow,jr as Tabs,Mr as TabsContent,Nr as TabsList,Pr as TabsTrigger,dn as Text,le as Textarea,Ir as Time,br as Toaster,Rr as Toggle,Br as ToggleGroup,Vr as ToggleGroupItem,Hr as Tooltip,Ur as TooltipContent,Wr as TooltipProvider,Gr as TooltipTrigger,Kr as WheelPicker,qr as WheelPickerWrapper,j as badgeVariants,W as buttonGroupVariants,l as buttonVariants,Lr as normalizeTimeToMilliseconds,Fr as tabsListVariants,Jr as toast,zr as toggleVariants,re as useCarousel,je as useComboboxAnchor};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defaultImageCompressionQuality as e,getImageCompressionQuality as t}from"./image-compression.mjs";async function n(t,n,r={}){let{fileType:a=`image/jpeg`,quality:o=e,maxWidth:s,maxHeight:c,circular:l=!1}=r,u=await i(t),d=document.createElement(`canvas`),f=d.getContext(`2d`);if(!f)throw Error(`无法获取 canvas 上下文`);let p=n.width,m=n.height;if(s||c){let e=s?p/s:1,t=c?m/c:1,n=Math.max(e,t);n>1&&(p/=n,m/=n)}return d.width=p,d.height=m,l&&(f.beginPath(),f.arc(p/2,m/2,p/2,0,2*Math.PI),f.closePath(),f.clip()),f.drawImage(u,n.x,n.y,n.width,n.height,0,0,p,m),new Promise((e,t)=>{d.toBlob(n=>{n?e(n):t(Error(`无法生成图片 Blob`))},a,o)})}async function r(e,t,r=`cropped-image.jpg`,i={}){let a=await n(e,t,i);return new File([a],r,{type:a.type})}function i(e){return new Promise((t,n)=>{let r=new Image;r.addEventListener(`load`,()=>t(r)),r.addEventListener(`error`,e=>n(e)),r.src=e})}function a(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function o(e){return[`image/jpeg`,`image/jpg`,`image/png`,`image/webp`,`image/gif`].includes(e.type)}function s(e){return t(e)}export{a as fileToDataUrl,r as getCroppedFile,n as getCroppedImg,s as getOptimalQuality,o as validateImageFile};
2
+ import{defaultImageCompressionQuality as e}from"./image-compression.mjs";async function t(t,r,i={}){let{fileType:a=`image/jpeg`,quality:o=e,maxWidth:s,maxHeight:c,circular:l=!1}=i,u=await n(t),d=document.createElement(`canvas`),f=d.getContext(`2d`);if(!f)throw Error(`无法获取 canvas 上下文`);let p=r.width,m=r.height;if(s||c){let e=s?p/s:1,t=c?m/c:1,n=Math.max(e,t);n>1&&(p/=n,m/=n)}return d.width=p,d.height=m,l&&(f.beginPath(),f.arc(p/2,m/2,p/2,0,2*Math.PI),f.closePath(),f.clip()),f.drawImage(u,r.x,r.y,r.width,r.height,0,0,p,m),new Promise((e,t)=>{d.toBlob(n=>{n?e(n):t(Error(`无法生成图片 Blob`))},a,o)})}function n(e){return new Promise((t,n)=>{let r=new Image;r.addEventListener(`load`,()=>t(r)),r.addEventListener(`error`,e=>n(e)),r.src=e})}export{t as getCroppedImg};
@@ -1,2 +1,2 @@
1
1
 
2
- function e(e){if(typeof e!=`number`||Number.isNaN(e))return`00:00`;e<0&&(e=0);let t=e,n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>e.toString().padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function t(e,t){let n=null;return((...r)=>{n&&clearTimeout(n),n=setTimeout(()=>e(...r),t)})}function n(){return/iPhone|iPad|iPod/i.test(navigator.userAgent)}function r({id:e,contentType:t}){return t===0?`/video/${e}`:`/post/${e}`}function i(e){let{text:t=``,atUsers:n=[]}=e;return t.replace(/<@_user>(\w+)<\/@_user>/g,(e,t)=>`<span class="mention" data-id="${t}">@${n.find(e=>e.userId===t||e.user_id===t)?.name||``}</span>`)}function a(e,t){return t?.includes(`download`)||!e?!1:![`Mobile`,`Android`,`iPhone`,`iPad`,`iPod`,`BlackBerry`,`Windows Phone`,`Opera Mini`,`IEMobile`,`Mobile Safari`,`webOS`,`Kindle`,`Silk`,`Fennec`,`Maemo`,`Tablet`,`HarmonyOS`,`OpenHarmony`].some(t=>e.includes(t))}function o(){return a(navigator?.userAgent)}export{t as debounceFun,e as formatVideoDuration,r as getPostDetailPagePath,n as isMobileIOS,o as isPCEnv,i as replaceAtUserElementHtmlStr};
2
+ function e(e){if(typeof e!=`number`||Number.isNaN(e))return`00:00`;e<0&&(e=0);let t=e,n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>e.toString().padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function t(){return/iPhone|iPad|iPod/i.test(navigator.userAgent)}function n({id:e,contentType:t}){return t===0?`/video/${e}`:`/post/${e}`}function r(e){let{text:t=``,atUsers:n=[]}=e;return t.replace(/<@_user>(\w+)<\/@_user>/g,(e,t)=>`<span class="mention" data-id="${t}">@${n.find(e=>e.userId===t||e.user_id===t)?.name||``}</span>`)}function i(e,t){return t?.includes(`download`)||!e?!1:![`Mobile`,`Android`,`iPhone`,`iPad`,`iPod`,`BlackBerry`,`Windows Phone`,`Opera Mini`,`IEMobile`,`Mobile Safari`,`webOS`,`Kindle`,`Silk`,`Fennec`,`Maemo`,`Tablet`,`HarmonyOS`,`OpenHarmony`].some(t=>e.includes(t))}function a(){return i(navigator?.userAgent)}export{e as formatVideoDuration,n as getPostDetailPagePath,t as isMobileIOS,a as isPCEnv,r as replaceAtUserElementHtmlStr};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@funhub/platform",
3
3
  "type": "module",
4
- "version": "0.1.154",
4
+ "version": "0.1.155",
5
5
  "private": false,
6
6
  "sideEffects": [
7
7
  "**/*.css"
@@ -70,30 +70,6 @@
70
70
  "dist",
71
71
  "theme.css"
72
72
  ],
73
- "scripts": {
74
- "dev:web": "next dev",
75
- "build:web": "next build",
76
- "prebuild": "pnpm i18n:build",
77
- "build": "cross-env TSDOWN_ENV=production tsdown",
78
- "predev": "pnpm i18n:build",
79
- "dev": "node scripts/dev-with-i18n-watch.mjs",
80
- "dev:core": "cross-env TSDOWN_ENV=development tsdown --watch",
81
- "publish:platform": "node scripts/publish-platform.mjs",
82
- "gen:api": "node ./scripts/generate-from-swagger.cjs",
83
- "pp": "pnpm publish:platform",
84
- "start": "next start",
85
- "prelint": "pnpm i18n:build",
86
- "lint": "eslint . --fix",
87
- "pretypecheck": "pnpm i18n:build",
88
- "typecheck": "tsc --noEmit",
89
- "i18n:find": "node scripts/i18n-locale-tool.mjs find",
90
- "i18n:set": "node scripts/i18n-locale-tool.mjs set",
91
- "i18n:flatten": "node scripts/i18n-flat-sync.mjs flatten",
92
- "i18n:build": "node scripts/i18n-flat-sync.mjs build",
93
- "i18n:watch": "node scripts/i18n-flat-sync.mjs watch",
94
- "i18n:check": "node scripts/i18n-flat-sync.mjs check",
95
- "pretest": "pnpm i18n:build"
96
- },
97
73
  "peerDependencies": {
98
74
  "@tanstack/query-core": ">=5",
99
75
  "@tanstack/react-query": ">=5",
@@ -142,7 +118,6 @@
142
118
  "zustand": "^5.0.9"
143
119
  },
144
120
  "devDependencies": {
145
- "@funhub/eslint-config": "workspace:*",
146
121
  "@svgr/webpack": "^8.1.0",
147
122
  "@types/crypto-js": "^4.2.2",
148
123
  "@types/lodash-es": "^4.17.12",
@@ -151,6 +126,31 @@
151
126
  "rollup-plugin-postcss": "^4.0.2",
152
127
  "rollup-preserve-directives": "^1.1.3",
153
128
  "tsdown": "0.20.3",
154
- "vite-plugin-svgr": "^4.3.0"
129
+ "vite-plugin-svgr": "^4.3.0",
130
+ "@funhub/eslint-config": "0.0.1"
131
+ },
132
+ "scripts": {
133
+ "dev:web": "next dev",
134
+ "build:web": "next build",
135
+ "prebuild": "pnpm i18n:build",
136
+ "build": "cross-env TSDOWN_ENV=production tsdown",
137
+ "predev": "pnpm i18n:build",
138
+ "dev": "node scripts/dev-with-i18n-watch.mjs",
139
+ "dev:core": "cross-env TSDOWN_ENV=development tsdown --watch",
140
+ "publish:platform": "node scripts/publish-platform.mjs",
141
+ "gen:api": "node ./scripts/generate-from-swagger.cjs",
142
+ "pp": "pnpm publish:platform",
143
+ "start": "next start",
144
+ "prelint": "pnpm i18n:build",
145
+ "lint": "eslint . --fix",
146
+ "pretypecheck": "pnpm i18n:build",
147
+ "typecheck": "tsc --noEmit",
148
+ "i18n:find": "node scripts/i18n-locale-tool.mjs find",
149
+ "i18n:set": "node scripts/i18n-locale-tool.mjs set",
150
+ "i18n:flatten": "node scripts/i18n-flat-sync.mjs flatten",
151
+ "i18n:build": "node scripts/i18n-flat-sync.mjs build",
152
+ "i18n:watch": "node scripts/i18n-flat-sync.mjs watch",
153
+ "i18n:check": "node scripts/i18n-flat-sync.mjs check",
154
+ "pretest": "pnpm i18n:build"
155
155
  }
156
- }
156
+ }
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{defaultImageCompressionQuality as e}from"../../../utils/image-compression.mjs";import{Dialog as t,DialogContent as n}from"../../ui/dialog.mjs";import{fileToDataUrl as r,getCroppedFile as i,getOptimalQuality as a,validateImageFile as o}from"../../../utils/image-crop.mjs";import{useCallback as s,useEffect as c,useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import p from"react-easy-crop";function m({visible:m,file:h,quality:g,outputFormat:_=`jpeg`,maxWidth:v,maxHeight:y,cropShape:b=`round`,onCropComplete:x,onCancel:S,className:C}){let[w,T]=u(``),[E,D]=u(!1),[O,k]=u(``),[A,j]=u({crop:{x:0,y:0},zoom:1,croppedAreaPixels:null}),M=l(()=>g===void 0?h?a(h.size):e:g,[g,h]);c(()=>{if(!h||!m){T(``),k(``);return}if(!o(h)){k(`请选择有效的图片文件(支持 JPEG、PNG、WebP、GIF 格式)`);return}if(h.size>20*1024*1024){k(`文件大小不能超过 20MB`);return}D(!0),k(``),r(h).then(e=>{T(e),D(!1)}).catch(e=>{console.error(`图片加载失败:`,e),k(`图片加载失败,请重试`),D(!1)})},[h,m]),c(()=>{m&&j({crop:{x:0,y:0},zoom:1,croppedAreaPixels:null})},[m,h]);let N=s(e=>{j(t=>({...t,crop:e}))},[]),P=s(e=>{j(t=>({...t,zoom:e}))},[]),F=s((e,t)=>{j(e=>({...e,croppedAreaPixels:t}))},[]),I=s(async()=>{if(!h||!A.croppedAreaPixels){k(`请先选择裁剪区域`);return}D(!0),k(``);try{let e=`image/${_}`;x({file:await i(w,A.croppedAreaPixels,`cropped.${_}`,{fileType:e,quality:M,maxWidth:v,maxHeight:y,circular:b===`round`}),originalFile:h,cropArea:A.croppedAreaPixels})}catch(e){console.error(`裁剪失败:`,e),k(`裁剪失败,请重试`)}finally{D(!1)}},[h,A.croppedAreaPixels,M,_,v,y,b,w,x]),L=s(()=>{S()},[S]);return m?d(t,{open:m,onOpenChange:L,children:d(n,{showCloseButton:!1,className:`bg-black/90 !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto ${C||``}`,children:f(`div`,{className:`relative flex h-full w-full flex-col`,children:[w&&!O&&f(`div`,{className:`absolute top-0 left-0 right-0 z-10 flex h-16 items-center justify-between px-4`,children:[d(`button`,{type:`button`,className:`flex h-full items-center justify-center px-4 text-white transition-colors hover:text-white/80`,onClick:L,disabled:E,children:d(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:d(`path`,{d:`M14.55.2a.889.889 0 0 1 1.25 1.25l-.06.067L9.255 8l6.483 6.482.06.069a.888.888 0 0 1-1.25 1.25l-.067-.062L8 9.256l-6.482 6.483A.888.888 0 1 1 .26 14.482L6.742 8 .26 1.517.2 1.45A.888.888 0 0 1 1.45.2l.067.062 6.482 6.482L14.482.261l.068-.062Z`})})}),d(`button`,{type:`button`,className:`h-8 rounded-full bg-primary px-4 text-base font-medium text-primary-foreground transition-colors hover:bg-primary/80 disabled:opacity-50`,onClick:I,disabled:E||!A.croppedAreaPixels||!!O,children:`确定`})]}),f(`div`,{className:`relative flex-1 overflow-hidden bg-black`,children:[E&&f(`div`,{className:`absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center gap-2 text-white`,children:[d(`div`,{className:`h-5 w-5 animate-spin rounded-full border-2 border-white/30 border-t-white`}),d(`span`,{children:`处理中...`})]}),O&&d(`div`,{className:`absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 text-center text-red-500`,children:O}),w&&!O&&d(p,{image:w,crop:A.crop,zoom:A.zoom,onCropChange:N,onZoomChange:P,onCropComplete:F,showGrid:!0,cropShape:b,restrictPosition:!0,zoomWithScroll:!0})]})]})})}):null}export{m as ImageCrop};
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{ImageCrop as e}from"./image-crop.mjs";import"react";import{jsx as t}from"react/jsx-runtime";import{createRoot as n}from"react-dom/client";function r(r,i){return new Promise((a,o)=>{if(!r){o(Error(`文件参数不能为空`));return}if(![`image/jpeg`,`image/jpg`,`image/png`,`image/webp`,`image/gif`].includes(r.type)){o(Error(`不支持的文件类型,请选择图片文件`));return}if(r.size>20*1024*1024){o(Error(`文件大小不能超过 20MB`));return}if(i?.aspectRatio!==void 0&&(i.aspectRatio<=0||!Number.isFinite(i.aspectRatio))){o(Error(`aspectRatio 必须是一个大于0的有限数`));return}if(i?.quality!==void 0&&(i.quality<0||i.quality>1)){o(Error(`quality 必须在 0-1 之间`));return}if(i?.maxWidth!==void 0&&i.maxWidth<=0){o(Error(`maxWidth 必须大于0`));return}if(i?.maxHeight!==void 0&&i.maxHeight<=0){o(Error(`maxHeight 必须大于0`));return}let s=document.createElement(`div`);document.body.appendChild(s);let c=n(s),l=()=>{c.unmount(),document.body.removeChild(s)};c.render(t(e,{visible:!0,file:r,aspectRatio:i?.aspectRatio||1,quality:i?.quality,outputFormat:i?.outputFormat||`jpeg`,maxWidth:i?.maxWidth,maxHeight:i?.maxHeight,cropShape:i?.cropShape||`round`,onCropComplete:e=>{l(),a(e.file)},onCancel:()=>{l()}}))})}export{r as showImageCrop};
@@ -1,25 +0,0 @@
1
-
2
- import * as React from "react";
3
- import * as react_jsx_runtime0 from "react/jsx-runtime";
4
-
5
- //#region components/ui/dots-loading.d.ts
6
- /** DotsLoading 组件属性。 */
7
- interface DotsLoadingProps extends React.HTMLAttributes<HTMLDivElement> {
8
- /**
9
- * 点的大小(px)。
10
- * @default 6
11
- */
12
- dotSize?: number;
13
- }
14
- /**
15
- * DotsLoading
16
- *
17
- * 三个点的 loading 动画,用于列表底部轻量提示。
18
- */
19
- declare function DotsLoading({
20
- className,
21
- dotSize,
22
- ...rest
23
- }: DotsLoadingProps): react_jsx_runtime0.JSX.Element;
24
- //#endregion
25
- export { DotsLoading };
@@ -1,2 +0,0 @@
1
-
2
- "use client";import{cn as e}from"../../utils/cn.mjs";import{jsx as t,jsxs as n}from"react/jsx-runtime";function r({className:r,dotSize:i=6,...a}){let o={width:i,height:i};return n(`div`,{className:e(`inline-flex items-center gap-2 text-text2`,r),role:`status`,"aria-label":`Loading`,...a,children:[t(`span`,{className:`inline-block rounded-full bg-current animate-bounce`,style:{...o,animationDelay:`0ms`}}),t(`span`,{className:`inline-block rounded-full bg-current animate-bounce`,style:{...o,animationDelay:`150ms`}}),t(`span`,{className:`inline-block rounded-full bg-current animate-bounce`,style:{...o,animationDelay:`300ms`}})]})}export{r as DotsLoading};