@funhub/platform 0.2.15 → 0.2.17

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 (129) hide show
  1. package/dist/assets/icons/marquee-enter.mjs +2 -0
  2. package/dist/biz.d.mts +1 -5
  3. package/dist/biz.mjs +1 -1
  4. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
  5. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
  6. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  7. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +1 -1
  8. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
  9. package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
  10. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/runtime/client.mjs +1 -1
  11. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/runtime/client.mjs +1 -1
  12. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  13. package/dist/components/biz/business/comment/comment-input.mjs +3 -3
  14. package/dist/components/biz/business/comment/comment-item.mjs +1 -1
  15. package/dist/components/biz/business/comment/comment-list.mjs +1 -1
  16. package/dist/components/biz/business/comment/reply-detail.mjs +1 -1
  17. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  18. package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
  19. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  20. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  21. package/dist/components/biz/business/detail/video-detail-player/schema.d.mts +1 -1
  22. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -1
  23. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  24. package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
  25. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  26. package/dist/components/biz/business/home-recommend/shared/home-recommend-play-count.mjs +1 -1
  27. package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
  28. package/dist/components/biz/business/index.d.mts +0 -5
  29. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  30. package/dist/components/biz/business/large-feature-grid/material.d.mts +1 -1
  31. package/dist/components/biz/business/marquee/client.mjs +1 -1
  32. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  33. package/dist/components/biz/business/profile/profile-header/material.d.mts +1 -1
  34. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  35. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  36. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  37. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  38. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  39. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -1
  40. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  41. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +2 -0
  42. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  43. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -1
  44. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
  45. package/dist/components/biz/business/search-history/client.mjs +1 -1
  46. package/dist/components/biz/business/search-input/client.mjs +1 -1
  47. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  48. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  49. package/dist/components/biz/renderer/renderer.d.mts +1 -1
  50. package/dist/components/biz/utils/transformers/card-grid.mjs +1 -1
  51. package/dist/components/common/blocked-dialog/blocked-dialog.mjs +1 -1
  52. package/dist/components/common/collection-popup/create-collection-sheet.mjs +1 -1
  53. package/dist/components/common/collection-popup/index.mjs +1 -1
  54. package/dist/components/common/follow-button/index.mjs +1 -1
  55. package/dist/components/common/info-card/card-header.mjs +1 -1
  56. package/dist/components/common/list/post-list/post-list.mjs +1 -1
  57. package/dist/components/common/list/user-activity-list/user-activity-list-actions.mjs +1 -1
  58. package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -1
  59. package/dist/components/common/list/video-list/video-list-item.mjs +1 -1
  60. package/dist/components/common/list/video-list/video-list.mjs +1 -1
  61. package/dist/components/common/popup-video/index.mjs +1 -1
  62. package/dist/components/common/series-episodes/index.mjs +1 -1
  63. package/dist/components/common/share-popup/share-content.mjs +1 -1
  64. package/dist/components/common/tab-bar/index.mjs +1 -1
  65. package/dist/components/common/top-nav-bar/client.mjs +1 -1
  66. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
  67. package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
  68. package/dist/components/pages/(follow)/_components/interaction-tabs/index.mjs +1 -1
  69. package/dist/components/pages/collection-add/page.mjs +1 -1
  70. package/dist/components/pages/collection-create/form.mjs +1 -1
  71. package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +1 -1
  72. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  73. package/dist/components/pages/edit/page.mjs +1 -1
  74. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
  75. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  76. package/dist/components/pages/login/forgot.mjs +1 -1
  77. package/dist/components/pages/login/index.mjs +1 -1
  78. package/dist/components/pages/login/login-client.mjs +1 -1
  79. package/dist/components/pages/login/password.mjs +1 -1
  80. package/dist/components/pages/login/register.mjs +1 -1
  81. package/dist/components/pages/login/reset-password.mjs +1 -1
  82. package/dist/components/pages/login/verify.mjs +1 -1
  83. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
  84. package/dist/components/pages/publish/components/header.mjs +1 -1
  85. package/dist/components/pages/publish/hooks/use-file-upload.mjs +1 -1
  86. package/dist/components/pages/publish/page-client.mjs +1 -1
  87. package/dist/components/pages/search/page-client.mjs +1 -1
  88. package/dist/components/pages/search/search-result/search-user.mjs +1 -1
  89. package/dist/components/pages/search/search-result/shared.mjs +1 -1
  90. package/dist/components/pages/search/top-header.mjs +1 -1
  91. package/dist/components/pages/search-result/page-client.mjs +1 -1
  92. package/dist/components/pages/search-result/search-user.mjs +1 -1
  93. package/dist/components/pages/search-result/search-video-info.mjs +1 -1
  94. package/dist/components/pages/search-result/shared.mjs +1 -1
  95. package/dist/components/pages/search-result/top-header.mjs +1 -1
  96. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +1 -1
  97. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  98. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  99. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  100. package/dist/components/pages/video-list/video-list-recommend-item.mjs +1 -1
  101. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  102. package/dist/components/ui/badge.d.mts +1 -1
  103. package/dist/components/ui/button.d.mts +1 -1
  104. package/dist/components/ui/image.d.mts +4 -4
  105. package/dist/components/ui/sonner.d.mts +1 -1
  106. package/dist/components/ui/sonner.mjs +1 -1
  107. package/dist/hooks/use-browse-report.d.mts +13 -0
  108. package/dist/hooks/use-browse-report.mjs +1 -1
  109. package/dist/hooks/use-content-operate.mjs +1 -1
  110. package/dist/i18n/locales/en.mjs +1 -1
  111. package/dist/i18n/locales/zh-CN.mjs +1 -1
  112. package/dist/materials.d.mts +1 -2
  113. package/dist/materials.mjs +1 -1
  114. package/dist/types/safe-information.d.mts +2 -0
  115. package/dist/utils/common.d.mts +9 -1
  116. package/dist/utils/common.mjs +1 -1
  117. package/dist/utils/schema/material.d.mts +1 -1
  118. package/dist/utils.d.mts +2 -2
  119. package/dist/utils.mjs +1 -1
  120. package/package.json +1 -1
  121. package/dist/components/biz/business/hot-recommend/client.d.mts +0 -17
  122. package/dist/components/biz/business/hot-recommend/client.mjs +0 -2
  123. package/dist/components/biz/business/hot-recommend/index.d.mts +0 -5
  124. package/dist/components/biz/business/hot-recommend/material.d.mts +0 -25
  125. package/dist/components/biz/business/hot-recommend/material.mjs +0 -2
  126. package/dist/components/biz/business/hot-recommend/schema.d.mts +0 -24
  127. package/dist/components/biz/business/hot-recommend/schema.mjs +0 -2
  128. package/dist/components/biz/business/hot-recommend/server.d.mts +0 -11
  129. package/dist/components/biz/business/hot-recommend/server.mjs +0 -2
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../../assets/icons/marquee-close.mjs";import i from"../../../../assets/icons/marquee-speaker.mjs";import{defaultMarqueePeriod as a}from"./schema.mjs";import{useEffect as o,useLayoutEffect as s,useMemo as c,useRef as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";const p=[],m=`marquee_list`;let h=null;function g(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function _(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 v(){if(h)return h;let e=localStorage.getItem(m);if(!e)return h={},{};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})}),h=n,n}catch{return h={},{}}}function y(e){h=e,localStorage.setItem(m,JSON.stringify(e))}function b(e){return v()[e]??{}}function x(e,t){y({...v(),[e]:t})}function S(e,t){return _(e.closedAt,t)}function C(m){let{marqueeKey:h,contents:_=p,close:v,displayStrategy:y,mode:C=`renderer`}=m,w=C===`editor`,T=e(),E=l(!1),D=l(null),O=l(null),[k,A]=u(w),[j,M]=u(w),[N,P]=u(!1),[F,I]=u(0);o(()=>{P(!0)},[]);let L=c(()=>{let e=y?.period??a,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,o=n?new Date(n).getTime():2**53-1;return r>=i&&r<=o},[y?.period]),R=c(()=>(_??[]).map(e=>({...e,text:g(String(e?.text??``))})).filter(e=>!!e.text),[_]),z=h?.trim()??``,B=c(()=>R.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[R]);if(o(()=>{I(0)},[B,z]),o(()=>{w||z||E.current||process.env.NODE_ENV===`production`||(E.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[w,z]),o(()=>{if(N){if(w){A(!0),M(!0);return}if(!y?.rule||!L||R.length===0){A(!1),M(!0);return}if(!z){A(!0),M(!0);return}A(!S(b(z),y.rule)),M(!0)}},[y?.rule,w,N,L,R.length,z]),s(()=>{if(w)return;let e=D.current,t=O.current;if(!e||!t)return;let n=e.offsetWidth,r=t.scrollWidth,i=n+r,a=Math.max(i/80,3)*1e3,o=t.animate([{transform:`translateX(${n}px)`},{transform:`translateX(-${r}px)`}],{duration:a,iterations:R.length<=1?1/0:1,easing:`linear`,fill:`forwards`});return o.onfinish=()=>{R.length>1&&I(e=>(e+1)%R.length)},()=>o.cancel()},[F,B,w,k,R.length]),!w&&(!N||!j||!k||!L)||R.length===0)return null;let V=R[F%R.length],H=V?.click,U=H?.enabled===!0,W=H?.link,G=U&&!!W,K=v?.enabled===!0;function q(){!z||!y?.rule||R.length===0||x(z,{...b(z),closedAt:Date.now()})}let J=e=>{e.stopPropagation(),A(!1),q()};function Y(e){if(typeof window>`u`){T.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}T.push(e)}function X(){w||G&&W&&(A(!1),q(),Y(W))}let Z=K?d(`button`,{type:`button`,"aria-label":`关闭`,className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,onClick:J,children:d(r,{className:`h-5 w-5`,"aria-hidden":!0})}):d(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0});return f(t,{className:`grid h-8 w-full grid-cols-[20px_1fr_24px] items-center gap-2 bg-white/10 px-4 py-1 backdrop-blur-[2px] ${G?`cursor-pointer`:``} ${w?`pointer-events-none`:``}`,onClick:X,children:[d(i,{className:`h-5 w-5 shrink-0`,"aria-hidden":!0}),d(t,{ref:D,className:`relative h-5 min-w-0 w-full overflow-hidden`,children:d(t,{ref:O,className:`absolute inset-y-0 left-0 flex items-center whitespace-nowrap`,children:d(n,{className:`inline-block font-sans text-[14px] font-normal leading-[20px] not-italic text-white/90`,children:V.text})},`marquee-item-${F}`)}),Z]})}export{C as MarqueeClient};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../../assets/icons/marquee-close.mjs";import i from"../../../../assets/icons/marquee-enter.mjs";import a from"../../../../assets/icons/marquee-speaker.mjs";import{defaultMarqueePeriod as o}from"./schema.mjs";import{useEffect as s,useLayoutEffect as c,useMemo as l,useRef as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";const m=[],h=`marquee_list`;let g=null;function _(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function v(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function y(){if(g)return g;let e=localStorage.getItem(h);if(!e)return g={},{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};return Object.entries(t).forEach(([e,t])=>{if(!t||typeof t!=`object`)return;let r=t.closedAt;typeof r!=`number`||Number.isNaN(r)||(n[e]={closedAt:r})}),g=n,n}catch{return g={},{}}}function b(e){g=e,localStorage.setItem(h,JSON.stringify(e))}function x(e){return y()[e]??{}}function S(e,t){b({...y(),[e]:t})}function C(e,t){return v(e.closedAt,t)}function w(h){let{marqueeKey:g,contents:v=m,close:y,displayStrategy:b,mode:w=`renderer`}=h,T=w===`editor`,E=e(),D=u(!1),O=u(null),k=u(null),[A,j]=d(T),[M,N]=d(T),[P,F]=d(!1),[I,L]=d(0);s(()=>{F(!0)},[]);let R=l(()=>{let e=b?.period??o,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,a=n?new Date(n).getTime():2**53-1;return r>=i&&r<=a},[b?.period]),z=l(()=>(v??[]).map(e=>({...e,text:_(String(e?.text??``))})).filter(e=>!!e.text),[v]),B=g?.trim()??``,V=l(()=>z.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[z]);if(s(()=>{L(0)},[V,B]),s(()=>{T||B||D.current||process.env.NODE_ENV===`production`||(D.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[T,B]),s(()=>{if(P){if(T){j(!0),N(!0);return}if(!b?.rule||!R||z.length===0){j(!1),N(!0);return}if(!B){j(!0),N(!0);return}j(!C(x(B),b.rule)),N(!0)}},[b?.rule,T,P,R,z.length,B]),c(()=>{if(T)return;let e=O.current,t=k.current;if(!e||!t)return;let n=e.offsetWidth,r=t.scrollWidth,i=n+r,a=Math.max(i/80,3)*1e3,o=t.animate([{transform:`translateX(${n}px)`},{transform:`translateX(-${r}px)`}],{duration:a,iterations:z.length<=1?1/0:1,easing:`linear`,fill:`forwards`});return o.onfinish=()=>{z.length>1&&L(e=>(e+1)%z.length)},()=>o.cancel()},[I,V,T,A,z.length]),!T&&(!P||!M||!A||!R)||z.length===0)return null;let H=z[I%z.length],U=H?.click,W=U?.enabled===!0,G=U?.link,K=W&&!!G,q=y?.enabled===!0,J=K,Y=q;function X(){!B||!b?.rule||z.length===0||S(B,{...x(B),closedAt:Date.now()})}let Z=e=>{e.stopPropagation(),j(!1),X()};function Q(e){if(typeof window>`u`){E.push(e);return}if(window.isWebView===!0)try{let t=new URL(e,window.location.href);if(t.origin===window.location.origin){let e=t.pathname.split(`/`).filter(Boolean),n=e.findIndex(e=>e===`video`);n>=0&&(e[n]=`webview`,t.pathname=`/${e.join(`/`)}`)}window.location.href=t.toString();return}catch{window.location.href=e;return}E.push(e)}function $(){T||K&&G&&(j(!1),X(),Q(G))}let ee=f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0,children:f(i,{className:`h-5 w-5 opacity-50`,"aria-hidden":!0})}),te=f(`button`,{type:`button`,"aria-label":`关闭`,className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,onClick:Z,children:f(r,{className:`h-5 w-5`,"aria-hidden":!0})}),ne=f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0}),re=p(t,{className:`flex min-w-6 shrink-0 items-center justify-end `,children:[J?ee:null,Y?q?te:f(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0,children:f(r,{className:`h-5 w-5`,"aria-hidden":!0})}):null,!J&&!Y?ne:null]});return p(t,{className:`grid h-8 w-full grid-cols-[20px_minmax(0,1fr)_auto] items-center gap-2 bg-white/10 px-4 py-1 backdrop-blur-[2px] ${K?`cursor-pointer`:``} ${T?`pointer-events-none`:``}`,onClick:$,children:[f(a,{className:`h-5 w-5 shrink-0`,"aria-hidden":!0}),f(t,{ref:O,className:`relative h-5 min-w-0 w-full overflow-hidden`,children:f(t,{ref:k,className:`absolute inset-y-0 left-0 flex items-center whitespace-nowrap`,children:f(n,{className:`inline-block font-sans text-[14px] font-normal leading-[20px] not-italic text-white/90`,children:H.text})},`marquee-item-${I}`)}),re]})}export{w as MarqueeClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as r,gUserViewUserInfo as i,pInteractionFollow as a,pInteractionUnfollow as o}from"../../../../../service/generated/client.mjs";import{useRouter as s}from"../../../../../utils/use-compatible-router.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{Skeleton as u}from"../../../../ui/skeleton.mjs";import{toast as d}from"../../../../../ui.mjs";import{useLoginModalStore as f}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as h,useUpdateRequest as g}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as _}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as v}from"../../../../common/icons/setting.mjs";import{trackProfilePageClick as y}from"../tracking.mjs";import{UserProfileAvatar as b}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as x}from"./user-profile-cover-background.mjs";import{useEffect as S,useMemo as ee,useState as te}from"react";import{Check as C,Plus as w}from"lucide-react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";import O from"next/link";const k=n.persist,A=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,j=`/images/mine/img_mine_head_bg.png`;function M({showBackButton:n,isMine:r,enableCustomBackground:i,className:a}){return E(c,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,a),children:[T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,i?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!n}),disabled:!0,children:T(_,{className:`w-4 h-4`})}),T(c,{className:e({invisible:!r}),children:T(v,{className:`text-text1`})})]}),E(c,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[T(u,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),E(c,{className:`min-w-0 flex-1`,children:[T(u,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),E(c,{className:`mt-1 flex flex-col gap-1`,children:[T(u,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),T(u,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function ne({userId:n,currentUserId:r,isFollowing:i}){let s=D(`components.pages.profile`),{open:c}=f(),l=p(),u=g(),{mutateAsync:h,isPending:_}=m(async e=>a(e)),{mutateAsync:v,isPending:y}=m(async e=>o(e)),b=_||y;async function x(){if(!b){if(!r){c();return}try{if(i){let e=await v({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.unfollowSuccess`)),S(!1),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.unfollowFailed`))}else{let e=await h({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.followSuccess`)),S(!0),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.followFailed`))}}catch(e){console.error(`关注操作失败`,e),d.error(s(`client.operationFailed`))}}}function S(e){u([`user-profile`,`profile`,n],t=>!t||!t.data?t:{...t,data:{...t.data,is_following:e}})}return E(t,{type:`button`,variant:`ghost`,size:`xs`,className:e(`h-6 min-w-0 gap-1 rounded-full border px-2 py-0 text-[14px] font-normal leading-5 shadow-none`,`disabled:pointer-events-none disabled:opacity-100`,i?`border-[var(--color-text-tertiary)] bg-transparent text-[var(--color-text-tertiary)] hover:!bg-[var(--color-surface-white10)] hover:!text-[var(--color-text-tertiary)]`:`border-[var(--color-text-secondary)] bg-[var(--color-overlay-create-top-black50)] text-[var(--color-text-secondary)] backdrop-blur-[2px] hover:!bg-[var(--color-overlay-create-top-black50)] hover:!text-[var(--color-text-secondary)]`),onClick:x,disabled:b,children:[T(i?C:w,{className:`size-[14px]`}),s(b?`client.processing`:i?`client.followed`:`client.follow`)]})}function N({id:a,enableCustomBackground:o=!0,showBackButton:u=!0,requireLogin:d=!1,isEditorPreview:p=!1,className:m,mode:g=`renderer`}){let C=D(`components.pages.profile`),w=p||g===`editor`,N=!w,re=s(),{open:P}=f(),{isLogin:F,userId:I,token:L}=n(),[ie,R]=te(!1);S(()=>{if(!k){R(!0);return}R(k.hasHydrated());let e=k.onHydrate(()=>{R(!1)}),t=k.onFinishHydration(()=>{R(!0)});return()=>{e(),t()}},[]);let z=w?!1:F&&!!I&&!!L,B=w?``:I,V=B,H=a==null||!!a&&!!V&&a===V,U=H?[`user-profile`,`mine`]:[`user-profile`,`profile`,a],{data:W,isLoading:ae}=h(w?[`editor-preview`,...U]:U,()=>a?i({target_user_id:a,user_id:B||a}):r({user_id:a||B||``}),{staleTime:0,enabled:N&&(!!a||!!B)}),G=ee(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${a??``}`,avatar:e.avatar||A,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||j}:{}},[a,W]),K=w||d&&H&&!z,q=H&&z&&!K,J=!z,oe=o&&q,se=o&&J,ce={name:C(`client.welcomeToPlanet`),description:C(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j};function Y(){P()}function le(){re.back()}let X=K?null:H?z?T(O,{href:`/edit`,onClick:e=>{y(e,`edit_profile`)},children:T(t,{variant:`ghost`,className:`h-auto min-h-0 rounded-full border border-[rgba(255,255,255,0.8)] bg-[rgba(11,3,23,0.5)] px-2 py-1 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)] backdrop-blur-[2px] hover:bg-[rgba(11,3,23,0.65)] hover:text-[rgba(255,255,255,0.9)]`,children:C(`client.editProfile`)})}):null:T(ne,{userId:a||``,currentUserId:B,isFollowing:G?.isFollowing}),Z=K?ce:G,Q=Z.name||``,$=Z.description||Z.signature||``,ue=Z.avatar||``;return N&&ae&&!W?T(M,{showBackButton:u,isMine:H,enableCustomBackground:o,className:m}):E(c,{className:e(`relative px-4 pb-8 pt-[16px]`,m),children:[T(c,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:T(x,{isMine:oe,enableCustomBackground:o,src:Z.background,onUnauthorizedClick:se?Y:void 0})}),T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,o?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,onClick:le,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!u}),children:T(_,{className:`h-4 w-4`})}),T(O,{href:`/settings`,className:e(`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,{invisible:!H}),onClick:e=>{y(e,`settings`)},children:T(v,{})})]}),E(c,{className:e(`relative z-10 mt-[56px] flex justify-between gap-3 items-center`),children:[T(b,{isMine:q,src:ue,alt:Q||`avatar`,onUnauthorizedClick:J?Y:void 0}),E(c,{className:`min-w-0 flex-1`,children:[E(c,{className:e(`flex justify-between gap-3 items-center`),children:[F&&H?T(O,{href:`/edit`,className:`block min-w-0 max-w-[195px]`,children:T(l,{as:`p`,className:`truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,children:Q})}):T(l,{as:`p`,className:`min-w-0 max-w-[195px] truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,onClick:()=>{!F&&H&&Y()},children:Q}),X?T(c,{className:`shrink-0 pt-0.5`,children:X}):null]}),$&&T(c,{className:`pt-1`,children:T(l,{as:`p`,className:`line-clamp-2 max-w-[195px] break-words text-[14px] leading-[20px] text-[var(--color-text-white80)]`,children:$})})]})]})]})}export{N as UserProfileHeaderClient,j as defaultBackground};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as n,gUserViewUserInfo as r,pInteractionFollow as i,pInteractionUnfollow as a}from"../../../../../service/generated/client.mjs";import{useRouter as o}from"../../../../../utils/use-compatible-router.mjs";import{Button as s}from"../../../../ui/button.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{Skeleton as u}from"../../../../ui/skeleton.mjs";import{toast as d}from"../../../../../ui.mjs";import{useLoginModalStore as f}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as h,useUpdateRequest as g}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as _}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as v}from"../../../../common/icons/setting.mjs";import{trackProfilePageClick as y}from"../tracking.mjs";import{UserProfileAvatar as b}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as x}from"./user-profile-cover-background.mjs";import{useEffect as S,useMemo as ee,useState as te}from"react";import{Check as C,Plus as w}from"lucide-react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";import O from"next/link";const k=t.persist,A=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,j=`/images/mine/img_mine_head_bg.png`;function M({showBackButton:t,isMine:n,enableCustomBackground:r,className:i}){return E(c,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,i),children:[T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,r?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(s,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!t}),disabled:!0,children:T(_,{className:`w-4 h-4`})}),T(c,{className:e({invisible:!n}),children:T(v,{className:`text-text1`})})]}),E(c,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[T(u,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),E(c,{className:`min-w-0 flex-1`,children:[T(u,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),E(c,{className:`mt-1 flex flex-col gap-1`,children:[T(u,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),T(u,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function ne({userId:t,currentUserId:n,isFollowing:r}){let o=D(`components.pages.profile`),{open:c}=f(),l=p(),u=g(),{mutateAsync:h,isPending:_}=m(async e=>i(e)),{mutateAsync:v,isPending:y}=m(async e=>a(e)),b=_||y;async function x(){if(!b){if(!n){c();return}try{if(r){let e=await v({app_id:0,follower_id:n,followee_id:t});e.code===0?(d.success(o(`client.unfollowSuccess`)),S(!1),l([`check-follow`,t]),l([`user-profile`,`profile`,t])):d.error(e.message||o(`client.unfollowFailed`))}else{let e=await h({app_id:0,follower_id:n,followee_id:t});e.code===0?(d.success(o(`client.followSuccess`)),S(!0),l([`check-follow`,t]),l([`user-profile`,`profile`,t])):d.error(e.message||o(`client.followFailed`))}}catch(e){console.error(`关注操作失败`,e),d.error(o(`client.operationFailed`))}}}function S(e){u([`user-profile`,`profile`,t],t=>!t||!t.data?t:{...t,data:{...t.data,is_following:e}})}return E(s,{type:`button`,variant:`ghost`,size:`xs`,className:e(`h-6 min-w-0 gap-1 rounded-full border px-2 py-0 text-[14px] font-normal leading-5 shadow-none`,`disabled:pointer-events-none disabled:opacity-100`,r?`border-[var(--color-text-tertiary)] bg-transparent text-[var(--color-text-tertiary)] hover:!bg-[var(--color-surface-white10)] hover:!text-[var(--color-text-tertiary)]`:`border-[var(--color-text-secondary)] bg-[var(--color-overlay-create-top-black50)] text-[var(--color-text-secondary)] backdrop-blur-[2px] hover:!bg-[var(--color-overlay-create-top-black50)] hover:!text-[var(--color-text-secondary)]`),onClick:x,disabled:b,children:[T(r?C:w,{className:`size-[14px]`}),o(b?`client.processing`:r?`client.followed`:`client.follow`)]})}function N({id:i,enableCustomBackground:a=!0,showBackButton:u=!0,requireLogin:d=!1,isEditorPreview:p=!1,className:m,mode:g=`renderer`}){let C=D(`components.pages.profile`),w=p||g===`editor`,N=!w,re=o(),{open:P}=f(),{isLogin:F,userId:I,token:L}=t(),[ie,R]=te(!1);S(()=>{if(!k){R(!0);return}R(k.hasHydrated());let e=k.onHydrate(()=>{R(!1)}),t=k.onFinishHydration(()=>{R(!0)});return()=>{e(),t()}},[]);let z=w?!1:F&&!!I&&!!L,B=w?``:I,V=B,H=i==null||!!i&&!!V&&i===V,U=H?[`user-profile`,`mine`]:[`user-profile`,`profile`,i],{data:W,isLoading:ae}=h(w?[`editor-preview`,...U]:U,()=>i?r({target_user_id:i,user_id:B||i}):n({user_id:i||B||``}),{staleTime:0,enabled:N&&(!!i||!!B)}),G=ee(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${i??``}`,avatar:e.avatar||A,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||j}:{}},[i,W]),K=w||d&&H&&!z,q=H&&z&&!K,J=!z,oe=a&&q,se=a&&J,ce={name:C(`client.welcomeToPlanet`),description:C(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j};function Y(){P()}function le(){re.back()}let X=K?null:H?z?T(O,{href:`/edit`,onClick:e=>{y(e,`edit_profile`)},children:T(s,{variant:`ghost`,className:`h-auto min-h-0 rounded-full border border-[rgba(255,255,255,0.8)] bg-[rgba(11,3,23,0.5)] px-2 py-1 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)] backdrop-blur-[2px] hover:bg-[rgba(11,3,23,0.65)] hover:text-[rgba(255,255,255,0.9)]`,children:C(`client.editProfile`)})}):null:T(ne,{userId:i||``,currentUserId:B,isFollowing:G?.isFollowing}),Z=K?ce:G,Q=Z.name||``,$=Z.description||Z.signature||``,ue=Z.avatar||``;return N&&ae&&!W?T(M,{showBackButton:u,isMine:H,enableCustomBackground:a,className:m}):E(c,{className:e(`relative px-4 pb-8 pt-[16px]`,m),children:[T(c,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:T(x,{isMine:oe,enableCustomBackground:a,src:Z.background,onUnauthorizedClick:se?Y:void 0})}),T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,a?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(s,{variant:`ghost`,size:`icon-xs`,onClick:le,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!u}),children:T(_,{className:`h-4 w-4`})}),T(O,{href:`/settings`,className:e(`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,{invisible:!H}),onClick:e=>{y(e,`settings`)},children:T(v,{})})]}),E(c,{className:e(`relative z-10 mt-[56px] flex justify-between gap-3 items-center`),children:[T(b,{isMine:q,src:ue,alt:Q||`avatar`,onUnauthorizedClick:J?Y:void 0}),E(c,{className:`min-w-0 flex-1`,children:[E(c,{className:e(`flex justify-between gap-3 items-center`),children:[F&&H?T(O,{href:`/edit`,className:`block min-w-0 max-w-[195px]`,children:T(l,{as:`p`,className:`truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,children:Q})}):T(l,{as:`p`,className:`min-w-0 max-w-[195px] truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,onClick:()=>{!F&&H&&Y()},children:Q}),X?T(c,{className:`shrink-0 pt-0.5`,children:X}):null]}),$&&T(c,{className:`pt-1`,children:T(l,{as:`p`,className:`line-clamp-2 max-w-[195px] break-words text-[14px] leading-[20px] text-[var(--color-text-white80)]`,children:$})})]})]})]})}export{N as UserProfileHeaderClient,j as defaultBackground};
@@ -2,8 +2,8 @@
2
2
  import { DefineMaterialOption } from "../../../../../utils/schema/material.mjs";
3
3
  import "../../../../../utils.mjs";
4
4
  import { UserProfileHeaderClient } from "./client.mjs";
5
- import * as react_jsx_runtime0 from "react/jsx-runtime";
6
5
  import * as zod from "zod";
6
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
7
7
  import * as zod_v4_core0 from "zod/v4/core";
8
8
 
9
9
  //#region components/biz/business/profile/profile-header/material.d.ts
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as r,pUserEditUserInfo as i}from"../../../../../service/generated/client.mjs";import{uploadFile as a}from"../../../../../utils/upload-file.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"../../../../ui/avatar.mjs";import{Box as l}from"../../../../ui/box.mjs";import{Input as u}from"../../../../ui/input.mjs";import{Dialog as d,DialogContent as f}from"../../../../ui/dialog.mjs";import{Text as p}from"../../../../ui/text.mjs";import{useDeleteRequest as m}from"../../../../../hooks/query/use-query.mjs";import{trackProfilePageClick as h}from"../tracking.mjs";import{ImageCropModal as g}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as _,useState as v}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as C}from"next-intl";const w=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,T=[`image/jpeg`,`image/png`];function E(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return T.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function D({isMine:T,src:D,alt:O,onUnauthorizedClick:k}){let A=C(`components.pages.profile`),j=_(null),{userId:M,setUserInfo:N,userInfo:P}=n(),F=m(),[I,L]=v(!1),[R,z]=v(!1),[B,V]=v(``),[H,U]=v(!1);function W(e){if(h(e,`avatar`),!H){if(T){L(!0);return}k?.()}}function G(){B&&(URL.revokeObjectURL(B),V(``))}function K(){L(!1)}function q(){H||j.current?.click()}async function J(e){let t=(await r({user_id:String(M)})).data;return{user_id:String(M),nick_name:t?.nick_name??P?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??P?.signature??void 0,gender:t?.gender??P?.gender??void 0}}function Y(e){let t=e.target.files?.[0];if(t){if(!E(t)){S.error(A(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){S.error(A(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}V(URL.createObjectURL(t)),z(!0),e.target&&(e.target.value=``)}}async function X(e){if(!M){S.error(A(`client.loginRequiredForUpload`));return}try{U(!0);let t=await a(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await J(t.objectKey);await i(n),N({...P,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),F([`user-profile`,`mine`]),F([`user-profile`,`profile`,String(M)]),F([`user-edit-info`,String(M)]),L(!1),z(!1),S.success(A(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),S.error(A(`client.uploadFailed`))}finally{G(),U(!1)}}function Z(){z(!1),G()}return x(y,{children:[T||k?b(t,{variant:`ghost`,size:`icon`,className:`h-[72px] w-[72px] rounded-full p-0 hover:bg-transparent`,onClick:W,"aria-label":`打开头像预览`,children:b(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:x(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[b(c,{src:D||w,alt:O||`avatar`}),b(s,{})]})})}):b(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:x(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[b(c,{src:D||w,alt:O||`avatar`}),b(s,{})]})}),b(d,{open:I,onOpenChange:K,children:b(f,{showCloseButton:!1,className:`bg-transparent !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto `,children:x(l,{className:`fixed top-0 left-0 right-0 bottom-0 z-50 bg-black flex h-full w-full flex-col items-center justify-center`,children:[b(t,{variant:`ghost`,size:`icon`,className:`absolute left-0 top-0 h-14 w-14 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:K,"aria-label":`关闭头像预览`,children:b(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:b(`path`,{d:`M14.55.2a.889.889 0 0 1 1.25 1.25l-.06.067L9.255 8l6.483 6.482.06.069a.888.888 0 0 1-1.25 1.25l-.067-.062L8 9.256l-6.482 6.483A.888.888 0 1 1 .26 14.482L6.742 8 .26 1.517.2 1.45A.888.888 0 0 1 1.45.2l.067.062 6.482 6.482L14.482.261l.068-.062Z`})})}),x(o,{className:`w-50 h-50`,children:[b(c,{src:D||w,alt:O||`avatar`}),b(s,{})]}),x(t,{variant:`ghost`,className:e(`absolute bottom-8 left-0 right-0 mx-auto flex w-[366px] max-w-[90%] items-center justify-between rounded-3xl bg-[var(--color-surface-white10)] px-3 py-3 transition-colors hover:bg-[var(--color-surface-white20)]`,`active:scale-95 h-auto`),onClick:q,disabled:H,children:[b(p,{as:`span`,className:`text-base font-medium text-text1`,children:H?`上传中...`:`更换头像`}),x(`svg`,{className:`w-6 h-6 text-text1`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:[b(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z`}),b(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),b(u,{ref:j,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:Y}),b(g,{open:R,onClose:Z,imageSrc:B,onConfirm:X})]})}export{D as UserProfileAvatar};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as n,pUserEditUserInfo as r}from"../../../../../service/generated/client.mjs";import{uploadFile as i}from"../../../../../utils/upload-file.mjs";import{Button as a}from"../../../../ui/button.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"../../../../ui/avatar.mjs";import{Box as l}from"../../../../ui/box.mjs";import{Input as u}from"../../../../ui/input.mjs";import{Dialog as d,DialogContent as f}from"../../../../ui/dialog.mjs";import{Text as p}from"../../../../ui/text.mjs";import{useDeleteRequest as m}from"../../../../../hooks/query/use-query.mjs";import{trackProfilePageClick as h}from"../tracking.mjs";import{ImageCropModal as g}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{toast as _}from"sonner";import{useRef as v,useState as y}from"react";import{Fragment as b,jsx as x,jsxs as S}from"react/jsx-runtime";import{useTranslations as C}from"next-intl";const w=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,T=[`image/jpeg`,`image/png`];function E(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return T.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function D({isMine:T,src:D,alt:O,onUnauthorizedClick:k}){let A=C(`components.pages.profile`),j=v(null),{userId:M,setUserInfo:N,userInfo:P}=t(),F=m(),[I,L]=y(!1),[R,z]=y(!1),[B,V]=y(``),[H,U]=y(!1);function W(e){if(h(e,`avatar`),!H){if(T){L(!0);return}k?.()}}function G(){B&&(URL.revokeObjectURL(B),V(``))}function K(){L(!1)}function q(){H||j.current?.click()}async function J(e){let t=(await n({user_id:String(M)})).data;return{user_id:String(M),nick_name:t?.nick_name??P?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??P?.signature??void 0,gender:t?.gender??P?.gender??void 0}}function Y(e){let t=e.target.files?.[0];if(t){if(!E(t)){_.error(A(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){_.error(A(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}V(URL.createObjectURL(t)),z(!0),e.target&&(e.target.value=``)}}async function X(e){if(!M){_.error(A(`client.loginRequiredForUpload`));return}try{U(!0);let t=await i(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await J(t.objectKey);await r(n),N({...P,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),F([`user-profile`,`mine`]),F([`user-profile`,`profile`,String(M)]),F([`user-edit-info`,String(M)]),L(!1),z(!1),_.success(A(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),_.error(A(`client.uploadFailed`))}finally{G(),U(!1)}}function Z(){z(!1),G()}return S(b,{children:[T||k?x(a,{variant:`ghost`,size:`icon`,className:`h-[72px] w-[72px] rounded-full p-0 hover:bg-transparent`,onClick:W,"aria-label":`打开头像预览`,children:x(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:S(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[x(c,{src:D||w,alt:O||`avatar`}),x(s,{})]})})}):x(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:S(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[x(c,{src:D||w,alt:O||`avatar`}),x(s,{})]})}),x(d,{open:I,onOpenChange:K,children:x(f,{showCloseButton:!1,className:`bg-transparent !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto `,children:S(l,{className:`fixed top-0 left-0 right-0 bottom-0 z-50 bg-black flex h-full w-full flex-col items-center justify-center`,children:[x(a,{variant:`ghost`,size:`icon`,className:`absolute left-0 top-0 h-14 w-14 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:K,"aria-label":`关闭头像预览`,children:x(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:x(`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`})})}),S(o,{className:`w-50 h-50`,children:[x(c,{src:D||w,alt:O||`avatar`}),x(s,{})]}),S(a,{variant:`ghost`,className:e(`absolute bottom-8 left-0 right-0 mx-auto flex w-[366px] max-w-[90%] items-center justify-between rounded-3xl bg-[var(--color-surface-white10)] px-3 py-3 transition-colors hover:bg-[var(--color-surface-white20)]`,`active:scale-95 h-auto`),onClick:q,disabled:H,children:[x(p,{as:`span`,className:`text-base font-medium text-text1`,children:H?`上传中...`:`更换头像`}),S(`svg`,{className:`w-6 h-6 text-text1`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:[x(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z`}),x(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),x(u,{ref:j,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:Y}),x(g,{open:R,onClose:Z,imageSrc:B,onConfirm:X})]})}export{D as UserProfileAvatar};
@@ -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{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{defaultBackground as l}from"./client.mjs";import{useCallback as u,useEffect as d,useRef as f,useState as p}from"react";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{useTranslations as v}from"next-intl";const y=[`image/jpeg`,`image/png`];function b(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return y.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function x({isMine:y,enableCustomBackground:x=!0,src:S,onUnauthorizedClick:C}){let w=v(`components.pages.profile`),T=l,E=f(null),{userId:D,setUserInfo:O,userInfo:k}=e(),A=o(),[j,M]=p(!1),[N,P]=p(!1),[F,I]=p(!1),[L,R]=p(``),z=x&&(!!y||typeof C==`function`),B=u(()=>{L&&(URL.revokeObjectURL(L),R(``))},[L]),V=()=>{if(x){if(y){j||P(!0);return}C?.()}},H=()=>{P(!1)};function U(){j||E.current?.click()}async function W(e){let t=e.target.files?.[0];if(e.target&&(e.target.value=``),t)try{if(!b(t)){_.error(w(`client.imageTypeInvalid`));return}if(t.size>5242880){_.error(w(`client.imageTooLarge`));return}B(),R(URL.createObjectURL(t)),P(!1),I(!0)}catch(e){console.error(`上传背景图失败`,e),_.error(w(`client.uploadFailed`))}}let G=u(()=>{I(!1),B()},[B]);d(()=>{x||(P(!1),I(!1),B())},[B,x]);async function K(e){if(!D){_.error(w(`client.loginRequiredForUpload`));return}try{M(!0);let r=await n(new File([e],`background.jpg`,{type:`image/jpeg`}),1);await t({user_id:String(D),bg_image:r.objectKey}),O({...k,bg_image:r.objectKey}),A([`user-profile`,`mine`]),P(!1),I(!1),_.success(w(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传背景图失败`,e),_.error(w(`client.uploadFailed`))}finally{B(),M(!1)}}return g(m,{children:[h(i,{className:`h-[284px]`,children:x?h(i,{className:`relative h-full w-full`,onClick:z?V:void 0,children:h(r,{alt:`cover background`,fill:!0,objectFit:`cover`,className:`pointer-events-none`,src:S||T})}):h(i,{className:`h-full w-full bg-bg1`})}),x&&g(m,{children:[h(c,{open:N,onClose:H,bgUrl:S||T,onUpload:U}),h(a,{ref:E,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:W}),h(s,{open:F,onClose:G,imageSrc:L,onConfirm:K,cropShape:`rect`,aspectRatio:430/256})]})]})}export{x 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{defaultBackground as l}from"./client.mjs";import{toast as u}from"sonner";import{useCallback as d,useEffect as f,useRef as p,useState as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";const y=[`image/jpeg`,`image/png`];function b(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return y.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function x({isMine:y,enableCustomBackground:x=!0,src:S,onUnauthorizedClick:C}){let w=v(`components.pages.profile`),T=l,E=p(null),{userId:D,setUserInfo:O,userInfo:k}=e(),A=o(),[j,M]=m(!1),[N,P]=m(!1),[F,I]=m(!1),[L,R]=m(``),z=x&&(!!y||typeof C==`function`),B=d(()=>{L&&(URL.revokeObjectURL(L),R(``))},[L]),V=()=>{if(x){if(y){j||P(!0);return}C?.()}},H=()=>{P(!1)};function U(){j||E.current?.click()}async function W(e){let t=e.target.files?.[0];if(e.target&&(e.target.value=``),t)try{if(!b(t)){u.error(w(`client.imageTypeInvalid`));return}if(t.size>5242880){u.error(w(`client.imageTooLarge`));return}B(),R(URL.createObjectURL(t)),P(!1),I(!0)}catch(e){console.error(`上传背景图失败`,e),u.error(w(`client.uploadFailed`))}}let G=d(()=>{I(!1),B()},[B]);f(()=>{x||(P(!1),I(!1),B())},[B,x]);async function K(e){if(!D){u.error(w(`client.loginRequiredForUpload`));return}try{M(!0);let r=await n(new File([e],`background.jpg`,{type:`image/jpeg`}),1);await t({user_id:String(D),bg_image:r.objectKey}),O({...k,bg_image:r.objectKey}),A([`user-profile`,`mine`]),P(!1),I(!1),u.success(w(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传背景图失败`,e),u.error(w(`client.uploadFailed`))}finally{B(),M(!1)}}return _(h,{children:[g(i,{className:`h-[284px]`,children:x?g(i,{className:`relative h-full w-full`,onClick:z?V:void 0,children:g(r,{alt:`cover background`,fill:!0,objectFit:`cover`,className:`pointer-events-none`,src:S||T})}):g(i,{className:`h-full w-full bg-bg1`})}),x&&_(h,{children:[g(c,{open:N,onClose:H,bgUrl:S||T,onUpload:U}),g(a,{ref:E,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:W}),g(s,{open:F,onClose:G,imageSrc:L,onConfirm:K,cropShape:`rect`,aspectRatio:430/256})]})]})}export{x as UserProfileCoverBackground};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{gUserViewUserInfo as t}from"../../../../../service/generated/client.mjs";import{useRequest as n}from"../../../../../hooks/query/use-query.mjs";import{profileMainMineTabOptions as r,profileMainProfileTabOptions as i}from"./variants.mjs";import{UserProfileMainShell as a}from"./shell.mjs";import{CollectVideoWaterfall as o}from"./tabs/collect-tab/video-waterfall.mjs";import{CollectTab as s}from"./tabs/collect-tab/client.mjs";import{HistoryTab as c}from"./tabs/history-tab/client.mjs";import{LikeTab as l}from"./tabs/like-tab/client.mjs";import{useMemo as u}from"react";import{jsx as d}from"react/jsx-runtime";import{parseAsString as f,useQueryState as p}from"nuqs";function m(e){return e*1e3}const h=[{id:`00d21b841126c976`,title:`朝朝暮暮都是你`,coverImage:`/md-204/uploads/default/other/2024-04-15/2750647625e6193940163169b77fb566.jpg`,duration:192,viewCount:237,createTime:1772175066,isMoreLink:!0},{id:`009f2e1820718add`,title:`狗哥的乡村爱情故事`,coverImage:`/md-204/uploads/default/other/2024-04-11/579bc5eb807d29657828945330b0ac47.jpg`,duration:74,viewCount:191,createTime:1770714221,isMoreLink:!0},{id:`02e2a11f78a3ffbf`,title:`唯爱百分之十二`,coverImage:`/md-204/resource/b6/b689e34f40d0e5baccb8f79630b99425.jpg`,duration:3348,viewCount:214,createTime:1770347155,isMoreLink:!0},{id:`2c19073cbd3c5c5a`,title:`疯狂磕学家`,coverImage:`/md-204/uploads/default/other/2024-08-23/5e174eeb8f2009dd7bb797fcabd5a649.jpg`,duration:2359,viewCount:17,createTime:1769757646,isMoreLink:!0},{id:`07e029915c2a9c96`,title:`我和祖宗做交易`,coverImage:`/md-204/uploads/default/other/2024-05-23/b53e50fa75986b41aac766c253a91fea.jpg`,duration:194,viewCount:75,createTime:1769670600,isMoreLink:!0},{id:`0ae1056a620b286f`,title:`识汝不识丁`,coverImage:`/md-204/uploads/default/other/2024-08-24/8958d46da3087a420d1d55e691dcb10a.jpg`,duration:2053,viewCount:13,createTime:1769651310,isMoreLink:!0},{id:`05564bf1aaf5fad6`,title:`我们的天空`,coverImage:`/md-204/resource/1a/1af6ce7117dcda390cf08db26e832684.jpg`,duration:2737,viewCount:180,createTime:1769566315,isMoreLink:!0},{id:`00f61e5be01409bb`,title:`我初初爱你`,coverImage:`/md-204/resource/bd/bd657a65bc6adc202a94acb8aca33f38.jpg`,duration:2898,viewCount:362,createTime:1769410683,isMoreLink:!0},{id:`062cd69d44fcb772`,title:`料理情缘`,coverImage:`/md-204/uploads/default/other/2023-11-27/de0491f07909b05fa012d15552e02cd0.png`,duration:2726,viewCount:33,createTime:1769157580,isMoreLink:!0},{id:`05751871b640b1a7`,title:`穷小伙被碎玻璃割伤眼睛,却因祸得福获得了一只超能神眼,人生直接开挂,之前欺负他的人统统匍匐在他脚下,征服姐妹花,走向人生巅峰!`,coverImage:`/md-204/dcc-file/29/29a0fdc86f0d756ad8f123e81693d233-small.jpgbnc`,duration:9236,viewCount:137,createTime:1769157575,isMoreLink:!1}].map((e,t)=>({id:e.id,title:e.title,coverImage:e.coverImage,duration:e.duration,authorName:``,viewCount:e.viewCount,publishTime:m(e.createTime),is_more_link:e.isMoreLink,imgType:t%3==1?`long`:`short`}));function g({isMine:e,tab:t}){let n=e?r:i;return t&&n.includes(t)?t:n[0]}function _(e,t){return e&&(t===`collect`||t===`like`)}function v({id:r,showCreateAction:i=!1,requireLogin:m=!1,className:v,currentUserId:y,mode:b=`renderer`,tab:x}){let S=b===`renderer`,C=e(e=>e.userId),[w]=p(`tab`,f),T=b===`editor`?``:y||C||``,E=r==null||!!T&&r===T,D=!E&&!!r,O=E?T:r?String(r):void 0,k=E?[`user-profile`,`mine`]:[`user-profile`,`profile`,r],A=u(()=>g({isMine:E,tab:w??x}),[E,x,w]),j=S&&_(D,A)&&!!r,{data:M}=n([`user-profile`,`privacy`,r,T],async()=>await t({target_user_id:String(r),user_id:T||String(r)}),{staleTime:0,enabled:j}),N=`content`;if(b===`editor`)N=`content`;else if(m&&E&&!T)N=`login-required`;else if(j&&M){let e=M.data??{},t=Number(e.collections_open??1)>0,n=Number(e.like_open??1)>0;A===`collect`&&!t&&(N=`privacy-collect`),A===`like`&&!n&&(N=`privacy-like`)}let P=N===`content`&&(!j||!!M),F=null;if(b===`editor`)F=d(o,{list:h,loading:!1,hasMore:!1});else if(P)switch(A){case`like`:F=d(l,{mode:b,isMine:E,targetUserId:O,queryKeyPrefix:k});break;case`history`:F=d(c,{mode:b,targetUserId:O,queryKeyPrefix:k});break;default:F=d(s,{mode:b,isMine:E,userId:O,showCreateAction:i&&E,queryKeyPrefix:k});break}return d(a,{profileId:r,currentUserId:T,isMine:E,renderMode:N,className:v,children:F})}export{v as UserProfileMainClient};
2
+ "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{gUserViewUserInfo as t}from"../../../../../service/generated/client.mjs";import{useRequest as n}from"../../../../../hooks/query/use-query.mjs";import{profileMainMineTabOptions as r,profileMainProfileTabOptions as i}from"./variants.mjs";import{UserProfileMainShell as a}from"./shell.mjs";import{CollectVideoWaterfall as o}from"./tabs/collect-tab/video-waterfall.mjs";import{CollectTab as s}from"./tabs/collect-tab/client.mjs";import{HistoryTab as c}from"./tabs/history-tab/client.mjs";import{LikeTab as l}from"./tabs/like-tab/client.mjs";import{useMemo as u}from"react";import{jsx as d}from"react/jsx-runtime";import{parseAsString as f,useQueryState as p}from"nuqs";function m(e){return e*1e3}const h=[{id:`00d21b841126c976`,title:`朝朝暮暮都是你`,coverImage:`/md-204/uploads/default/other/2024-04-15/2750647625e6193940163169b77fb566.jpg`,duration:192,viewCount:237,createTime:1772175066,isMoreLink:!0},{id:`009f2e1820718add`,title:`狗哥的乡村爱情故事`,coverImage:`/md-204/uploads/default/other/2024-04-11/579bc5eb807d29657828945330b0ac47.jpg`,duration:74,viewCount:191,createTime:1770714221,isMoreLink:!0},{id:`02e2a11f78a3ffbf`,title:`唯爱百分之十二`,coverImage:`/md-204/resource/b6/b689e34f40d0e5baccb8f79630b99425.jpg`,duration:3348,viewCount:214,createTime:1770347155,isMoreLink:!0},{id:`2c19073cbd3c5c5a`,title:`疯狂磕学家`,coverImage:`/md-204/uploads/default/other/2024-08-23/5e174eeb8f2009dd7bb797fcabd5a649.jpg`,duration:2359,viewCount:17,createTime:1769757646,isMoreLink:!0},{id:`07e029915c2a9c96`,title:`我和祖宗做交易`,coverImage:`/md-204/uploads/default/other/2024-05-23/b53e50fa75986b41aac766c253a91fea.jpg`,duration:194,viewCount:75,createTime:1769670600,isMoreLink:!0},{id:`0ae1056a620b286f`,title:`识汝不识丁`,coverImage:`/md-204/uploads/default/other/2024-08-24/8958d46da3087a420d1d55e691dcb10a.jpg`,duration:2053,viewCount:13,createTime:1769651310,isMoreLink:!0},{id:`05564bf1aaf5fad6`,title:`我们的天空`,coverImage:`/md-204/resource/1a/1af6ce7117dcda390cf08db26e832684.jpg`,duration:2737,viewCount:180,createTime:1769566315,isMoreLink:!0},{id:`00f61e5be01409bb`,title:`我初初爱你`,coverImage:`/md-204/resource/bd/bd657a65bc6adc202a94acb8aca33f38.jpg`,duration:2898,viewCount:362,createTime:1769410683,isMoreLink:!0},{id:`062cd69d44fcb772`,title:`料理情缘`,coverImage:`/md-204/uploads/default/other/2023-11-27/de0491f07909b05fa012d15552e02cd0.png`,duration:2726,viewCount:33,createTime:1769157580,isMoreLink:!0},{id:`05751871b640b1a7`,title:`穷小伙被碎玻璃割伤眼睛,却因祸得福获得了一只超能神眼,人生直接开挂,之前欺负他的人统统匍匐在他脚下,征服姐妹花,走向人生巅峰!`,coverImage:`/md-204/dcc-file/29/29a0fdc86f0d756ad8f123e81693d233-small.jpgbnc`,duration:9236,viewCount:137,createTime:1769157575,isMoreLink:!1}].map((e,t)=>({id:e.id,title:e.title,coverImage:e.coverImage,duration:e.duration,authorName:``,viewCount:e.viewCount,publishTime:m(e.createTime),is_more_link:e.isMoreLink,imgType:t%3==1?`long`:`short`,description:`示例文案,用于低代码编辑器预览列表第二行。`}));function g({isMine:e,tab:t}){let n=e?r:i;return t&&n.includes(t)?t:n[0]}function _(e,t){return e&&(t===`collect`||t===`like`)}function v({id:r,showCreateAction:i=!1,requireLogin:m=!1,className:v,currentUserId:y,mode:b=`renderer`,tab:x}){let S=b===`renderer`,C=e(e=>e.userId),[w]=p(`tab`,f),T=b===`editor`?``:y||C||``,E=r==null||!!T&&r===T,D=!E&&!!r,O=E?T:r?String(r):void 0,k=E?[`user-profile`,`mine`]:[`user-profile`,`profile`,r],A=u(()=>g({isMine:E,tab:w??x}),[E,x,w]),j=S&&_(D,A)&&!!r,{data:M}=n([`user-profile`,`privacy`,r,T],async()=>await t({target_user_id:String(r),user_id:T||String(r)}),{staleTime:0,enabled:j}),N=`content`;if(b===`editor`)N=`content`;else if(m&&E&&!T)N=`login-required`;else if(j&&M){let e=M.data??{},t=Number(e.collections_open??1)>0,n=Number(e.like_open??1)>0;A===`collect`&&!t&&(N=`privacy-collect`),A===`like`&&!n&&(N=`privacy-like`)}let P=N===`content`&&(!j||!!M),F=null;if(b===`editor`)F=d(o,{list:h,loading:!1,hasMore:!1});else if(P)switch(A){case`like`:F=d(l,{mode:b,isMine:E,targetUserId:O,queryKeyPrefix:k});break;case`history`:F=d(c,{mode:b,targetUserId:O,queryKeyPrefix:k});break;default:F=d(s,{mode:b,isMine:E,userId:O,showCreateAction:i&&E,queryKeyPrefix:k});break}return d(a,{profileId:r,currentUserId:T,isMine:E,renderMode:N,className:v,children:F})}export{v as UserProfileMainClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Text as a}from"../../../../ui/text.mjs";import{Tabs as o,TabsList as s,TabsTrigger as c}from"../../../../ui/tabs.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{trackProfilePageClick as u}from"../tracking.mjs";import{profileMainMineTabOptions as d,profileMainProfileTabOptions as f}from"./variants.mjs";import{useEffect as p,useId as m,useMemo as h,useRef as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";import{parseAsString as b,useQueryState as x}from"nuqs";function S(e){let t=m();return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`37`,height:`10`,viewBox:`0 0 37 10`,fill:`none`,...e,children:[_(`path`,{d:`M32.8921 0.212888C34.4317 -0.398985 36.1765 0.353067 36.7886 1.89258C37.4004 3.43219 36.6484 5.17704 35.1089 5.78906L29.9204 7.85058C26.0475 9.38961 21.7156 9.29046 17.9175 7.57519C15.9234 6.67463 13.6771 6.5 11.5679 7.08203L3.79833 9.22656C2.20143 9.66708 0.549808 8.72958 0.108873 7.13281C-0.331916 5.53567 0.605478 3.88317 2.20262 3.44238L9.97118 1.29785C13.431 0.342993 17.1161 0.629191 20.3872 2.10644C22.7028 3.15218 25.3434 3.21271 27.7046 2.27441L32.8921 0.212888Z`,fill:`url(#${t})`}),_(`defs`,{children:v(`linearGradient`,{id:t,x1:`3.00047`,y1:`5.00097`,x2:`34.0005`,y2:`5.00097`,gradientUnits:`userSpaceOnUse`,children:[_(`stop`,{stopColor:`var(--color-brand-tag-gradient-start)`}),_(`stop`,{offset:`1`,stopColor:`var(--color-brand-tag-gradient-end)`})]})})]})}function C(e){return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`68`,height:`58`,viewBox:`0 0 68 58`,fill:`none`,...e,children:[_(`rect`,{x:`0.5`,y:`0.5`,width:`67`,height:`57`,rx:`7.5`,fill:`#1B1829`,stroke:`#322F3E`}),_(`path`,{d:`M27.1175 33.8211L27.118 23.9652C27.1182 21.7159 29.502 20.2667 31.4989 21.3021L40.5835 26.0125C42.6976 27.1086 42.7531 30.1126 40.681 31.2861L31.5959 36.4317C29.596 37.5644 27.1173 36.1195 27.1175 33.8211Z`,fill:`#54525E`})]})}function w(e){return e?[...d]:[...f]}function T(e,t){let n=w(t);return n.includes(e)?e:n[0]}function E(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function D(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(E(t))return t;t=t.parentElement}return null}function O(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function k(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function A({profileId:d,currentUserId:f,isMine:m,renderMode:E,className:A,children:j}){let M=y(`components.pages.profile`),N=g(null),P=l(e=>e.open),F=n(e=>e.userId),I=g(``),L=w(m),[R,z]=x(`tab`,b.withDefault(`collect`)),B=h(()=>T(R,m),[m,R]),V=f||F||``,H=m?V:d,U=h(()=>`profile-scroll:${H||(m?`mine`:`guest`)}:${B}`,[m,B,H]);p(()=>{R!==B&&z(B,{shallow:!1})},[B,z,R]),p(()=>{if(typeof window>`u`)return;let e=`${m?`mine`:`profile`}:${H||``}:${B}`;I.current!==e&&(I.current=e)},[m,d,V,B,H]),p(()=>{if(typeof window>`u`)return;let e=D(N.current),t=window.sessionStorage.getItem(U),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{k(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(U,String(O(e))),r=!1}))};return e?(e.addEventListener(`scroll`,i,{passive:!0}),()=>{e.removeEventListener(`scroll`,i)}):(window.addEventListener(`scroll`,i,{passive:!0}),()=>{window.removeEventListener(`scroll`,i)})},[U]);let W={collect:M(`client.collect`),like:M(`client.like`),history:M(`client.history`)},G=j;return E===`login-required`?G=v(r,{className:`flex flex-col items-center pt-[132px] text-center`,children:[_(C,{className:`h-[58px] w-[68px]`}),_(a,{className:`mt-[16px] text-[15px] leading-[normal] text-[#54525E]`,children:M(`client.loginToSeeMoreVideos`)}),_(t,{type:`button`,onClick:P,className:`mt-[16px] h-[40px] min-w-[100px] rounded-[8px] border-0 bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] px-[24px] py-0 text-[16px] font-normal leading-[24px] text-white active:opacity-90`,children:M(`client.loginNow`)})]}):E===`privacy-collect`?G=_(i,{type:`no-content`,text:M(`client.collectionNotPublic`)}):E===`privacy-like`&&(G=_(i,{type:`no-content`,text:M(`client.likeNotPublic`)})),v(r,{ref:N,className:e(`relative grow overflow-hidden rounded-t-[24px] bg-[var(--color-surface-panel-dark)]`,A),children:[_(r,{className:`sticky top-0 z-10 bg-[var(--color-surface-panel-dark)] px-4 pt-8`,children:_(o,{value:B,onValueChange:e=>{z(e,{shallow:!1})},className:`h-6 w-full`,children:_(s,{variant:`default`,className:`h-6 w-fit gap-8 px-0`,children:L.map(t=>v(c,{value:t,onClick:e=>{u(e,`${t}_tab`)},className:e(`group/profile-main-tab !flex-none !h-6 min-w-8 !px-0 !py-0 !pb-0 text-[16px] !font-normal leading-6 text-[var(--color-text-secondary)]`,`data-[active]:!text-text1 data-[active]:!font-semibold data-[active]:!text-[18px]`,`data-[state=active]:!text-text1 data-[state=active]:!font-semibold data-[state=active]:!text-[18px]`,`after:hidden`),children:[_(S,{"aria-hidden":`true`,className:e(`pointer-events-none absolute bottom-0 left-1/2 h-[10px] w-[37px] -translate-x-1/2 opacity-0 transition-opacity duration-200`,`group-data-[active]/profile-main-tab:opacity-100`,`group-data-[state=active]/profile-main-tab:opacity-100`)}),_(`span`,{className:`relative z-10`,children:W[t]})]},t))})})}),_(r,{className:`relative px-4 pb-6 pt-7`,children:G})]})}export{A as UserProfileMainShell};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{Button as n}from"../../../../ui/button.mjs";import{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Text as a}from"../../../../ui/text.mjs";import{Tabs as o,TabsList as s,TabsTrigger as c}from"../../../../ui/tabs.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{trackProfilePageClick as u}from"../tracking.mjs";import{profileMainMineTabOptions as d,profileMainProfileTabOptions as f}from"./variants.mjs";import{useEffect as p,useId as m,useMemo as h,useRef as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";import{parseAsString as b,useQueryState as x}from"nuqs";function S(e){let t=m();return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`37`,height:`10`,viewBox:`0 0 37 10`,fill:`none`,...e,children:[_(`path`,{d:`M32.8921 0.212888C34.4317 -0.398985 36.1765 0.353067 36.7886 1.89258C37.4004 3.43219 36.6484 5.17704 35.1089 5.78906L29.9204 7.85058C26.0475 9.38961 21.7156 9.29046 17.9175 7.57519C15.9234 6.67463 13.6771 6.5 11.5679 7.08203L3.79833 9.22656C2.20143 9.66708 0.549808 8.72958 0.108873 7.13281C-0.331916 5.53567 0.605478 3.88317 2.20262 3.44238L9.97118 1.29785C13.431 0.342993 17.1161 0.629191 20.3872 2.10644C22.7028 3.15218 25.3434 3.21271 27.7046 2.27441L32.8921 0.212888Z`,fill:`url(#${t})`}),_(`defs`,{children:v(`linearGradient`,{id:t,x1:`3.00047`,y1:`5.00097`,x2:`34.0005`,y2:`5.00097`,gradientUnits:`userSpaceOnUse`,children:[_(`stop`,{stopColor:`var(--color-brand-tag-gradient-start)`}),_(`stop`,{offset:`1`,stopColor:`var(--color-brand-tag-gradient-end)`})]})})]})}function C(e){return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`68`,height:`58`,viewBox:`0 0 68 58`,fill:`none`,...e,children:[_(`rect`,{x:`0.5`,y:`0.5`,width:`67`,height:`57`,rx:`7.5`,fill:`#1B1829`,stroke:`#322F3E`}),_(`path`,{d:`M27.1175 33.8211L27.118 23.9652C27.1182 21.7159 29.502 20.2667 31.4989 21.3021L40.5835 26.0125C42.6976 27.1086 42.7531 30.1126 40.681 31.2861L31.5959 36.4317C29.596 37.5644 27.1173 36.1195 27.1175 33.8211Z`,fill:`#54525E`})]})}function w(e){return e?[...d]:[...f]}function T(e,t){let n=w(t);return n.includes(e)?e:n[0]}function E(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function D(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(E(t))return t;t=t.parentElement}return null}function O(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function k(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function A({profileId:d,currentUserId:f,isMine:m,renderMode:E,className:A,children:j}){let M=y(`components.pages.profile`),N=g(null),P=l(e=>e.open),F=t(e=>e.userId),I=g(``),L=w(m),[R,z]=x(`tab`,b.withDefault(`collect`)),B=h(()=>T(R,m),[m,R]),V=f||F||``,H=m?V:d,U=h(()=>`profile-scroll:${H||(m?`mine`:`guest`)}:${B}`,[m,B,H]);p(()=>{R!==B&&z(B,{shallow:!1})},[B,z,R]),p(()=>{if(typeof window>`u`)return;let e=`${m?`mine`:`profile`}:${H||``}:${B}`;I.current!==e&&(I.current=e)},[m,d,V,B,H]),p(()=>{if(typeof window>`u`)return;let e=D(N.current),t=window.sessionStorage.getItem(U),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{k(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(U,String(O(e))),r=!1}))};return e?(e.addEventListener(`scroll`,i,{passive:!0}),()=>{e.removeEventListener(`scroll`,i)}):(window.addEventListener(`scroll`,i,{passive:!0}),()=>{window.removeEventListener(`scroll`,i)})},[U]);let W={collect:M(`client.collect`),like:M(`client.like`),history:M(`client.history`)},G=j;return E===`login-required`?G=v(r,{className:`flex flex-col items-center pt-[132px] text-center`,children:[_(C,{className:`h-[58px] w-[68px]`}),_(a,{className:`mt-[16px] text-[15px] leading-[normal] text-[#54525E]`,children:M(`client.loginToSeeMoreVideos`)}),_(n,{type:`button`,onClick:P,className:`mt-[16px] h-[40px] min-w-[100px] rounded-[8px] border-0 bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] px-[24px] py-0 text-[16px] font-normal leading-[24px] text-white active:opacity-90`,children:M(`client.loginNow`)})]}):E===`privacy-collect`?G=_(i,{type:`no-content`,text:M(`client.collectionNotPublic`)}):E===`privacy-like`&&(G=_(i,{type:`no-content`,text:M(`client.likeNotPublic`)})),v(r,{ref:N,className:e(`relative grow overflow-hidden rounded-t-[24px] bg-[var(--color-surface-panel-dark)]`,A),children:[_(r,{className:`sticky top-0 z-10 bg-[var(--color-surface-panel-dark)] px-4 pt-8`,children:_(o,{value:B,onValueChange:e=>{z(e,{shallow:!1})},className:`h-6 w-full`,children:_(s,{variant:`default`,className:`h-6 w-fit gap-8 px-0`,children:L.map(t=>v(c,{value:t,onClick:e=>{u(e,`${t}_tab`)},className:e(`group/profile-main-tab !flex-none !h-6 min-w-8 !px-0 !py-0 !pb-0 text-[16px] !font-normal leading-6 text-[var(--color-text-secondary)]`,`data-[active]:!text-text1 data-[active]:!font-semibold data-[active]:!text-[18px]`,`data-[state=active]:!text-text1 data-[state=active]:!font-semibold data-[state=active]:!text-[18px]`,`after:hidden`),children:[_(S,{"aria-hidden":`true`,className:e(`pointer-events-none absolute bottom-0 left-1/2 h-[10px] w-[37px] -translate-x-1/2 opacity-0 transition-opacity duration-200`,`group-data-[active]/profile-main-tab:opacity-100`,`group-data-[state=active]/profile-main-tab:opacity-100`)}),_(`span`,{className:`relative z-10`,children:W[t]})]},t))})})}),_(r,{className:`relative px-4 pb-6 pt-7`,children:G})]})}export{A as UserProfileMainShell};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../../../utils/cn.mjs";import{Button as t}from"../../../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../../../store/modules/user-store.mjs";import{gCommunityGetSubscribedCollections as r,gCommunityGetUserCollections as i,gInteractionListCollects as ee,pCommunityBatchDeleteCollection as te,pInteractionBatchDeleteCollects as ne}from"../../../../../../../service/generated/client.mjs";import{Box as a}from"../../../../../../ui/box.mjs";import{Text as o}from"../../../../../../ui/text.mjs";import{Tabs as re,TabsList as ie,TabsTrigger as ae}from"../../../../../../ui/tabs.mjs";import{useMutation as oe,usePaginated as s,useUpdateRequest as se}from"../../../../../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as ce}from"../../../../../../common/collection-popup/create-collection-sheet.mjs";import{DeleteConfirmDialog as le}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as ue}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as de}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as fe}from"../../../tracking.mjs";import{ProfileMainEmptyState as c}from"../../empty-state.mjs";import{CollectVideoWaterfall as pe}from"./video-waterfall.mjs";import{useEffect as l,useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useTranslations as h}from"next-intl";import g from"dayjs";import{parseAsString as me,useQueryState as he}from"nuqs";const ge={video:1,post:2};function _e(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??y).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function _(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function ve(e,t){let n=t[e.content_id||``]?.create_time,r=_(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:g(n).toDate().getTime()}}function ye(e){return e.tags?.find(e=>e?.name?.trim())?.name?.trim()||String(e.cat_name||``).trim()||``}function be(e){let t=String(e.img_type||``).trim().toLowerCase();return t===`short`?e.img_y||e.img_x||``:t===`long`?e.img_x||e.img_y||``:e.img_y||e.img_x||``}function xe(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:be(e),duration:Number(e.duration??e.detail?.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:g(n).toDate().getTime(),imgType:e.img_type||e.media?.img_type||``,score:e.score??e.detail?.score,metaPrimaryText:ye(e)}}function Se(e){let t=_(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function v(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function Ce(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(Se),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,isDefaultCollection:!!e.is_default,contents:r===0?v(e.collection_id||`collection`):n}}const y=[],we=[`video`,`post`,`collection`],Te=[`created`,`subscribed`];function Ee({className:t}){return f(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:f(`path`,{d:`M7.33398 7.3335V4.66683H8.66732V7.3335H11.334V8.66683H8.66732V11.3335H7.33398V8.66683H4.66732V7.3335H7.33398ZM8.00065 14.6668C4.31875 14.6668 1.33398 11.682 1.33398 8.00016C1.33398 4.31826 4.31875 1.3335 8.00065 1.3335C11.6825 1.3335 14.6673 4.31826 14.6673 8.00016C14.6673 11.682 11.6825 14.6668 8.00065 14.6668ZM8.00065 13.3335C10.9462 13.3335 13.334 10.9457 13.334 8.00016C13.334 5.05464 10.9462 2.66683 8.00065 2.66683C5.05513 2.66683 2.66732 5.05464 2.66732 8.00016C2.66732 10.9457 5.05513 13.3335 8.00065 13.3335Z`,fill:`currentColor`})})}function De({className:t}){return f(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:f(`g`,{children:f(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M10.7666 2.12385C10.9828 1.94731 11.3023 1.95935 11.5039 2.16096L13.8389 4.49592C13.942 4.5991 13.9999 4.73966 14 4.88557C14 5.03152 13.942 5.17199 13.8389 5.27522L11.5078 7.6053C11.5063 7.60688 11.5055 7.60959 11.5039 7.61116C11.5023 7.61279 11.4997 7.61345 11.498 7.61506L5.27539 13.8387C5.17216 13.9418 5.03168 13.9998 4.88574 13.9998H2.55078C2.24679 13.9998 2.00001 13.753 2 13.449V11.1141C2 10.9681 2.05794 10.8277 2.16113 10.7244L10.7246 2.16096L10.7666 2.12385ZM3.10059 11.3416V12.8992H4.6582L10.335 7.22151L8.77734 5.66389L3.10059 11.3416ZM9.55664 4.88459L11.1143 6.44221L12.6709 4.88557L11.1133 3.32893L9.55664 4.88459Z`,fill:`currentColor`})})})}const Oe=`flex items-center gap-[2px] text-[14px] leading-6 text-[var(--color-text-secondary)]`;function ke(){return e(`!flex !items-center !flex-none !h-6 !w-auto !rounded-[4px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function b({mode:e=`renderer`,userId:g,showCreateAction:_=!1,queryKeyPrefix:ye,isMine:be=!1}){let Se=h(),v=h(`components.pages.collectionDetail`),b=h(`components.pages.profile.components.tabs`),x=e===`renderer`,S=ye??[],[C,w]=he(`collectTab`,me.withDefault(`video`)),[T,Ae]=he(`collectCollectionTab`,me.withDefault(`created`)),E=u(()=>we.includes(C)?C:`video`,[C]),D=u(()=>Te.includes(T)?T:`created`,[T]),[O,k]=d(!1),[A,j]=d(!1),[je,M]=d(!1),[Me,N]=d(!1),[Ne,Pe]=d(!1),[P,F]=d(()=>new Set),[I,L]=d(()=>new Set),{userId:Fe,userInfo:Ie}=n(),R=g||Fe||Ie?.userId||``,Le=se();async function Re(e,t){if(!R)return{data:{list:[],total:0}};let n=await ee({user_id:R,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},i=t===ge.video?(n.data?.video_infos??[]).map(e=>xe(e,r)):(n.data?.post_infos??[]).map(e=>ve(e,r));return{data:{list:i,total:n.data?.total??i.length}}}let z=s({key:[...S,`user-collect-video`,R],initialPageParam:1,async queryFn(e){return Re(e,ge.video)},options:{staleTime:0,enabled:x},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),B=s({key:[...S,`user-collect-post`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function ze(e){if(!R)return{data:{list:[],total:0}};let t=await i({page:e,user_id:g,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(Ce),total:t.data?.data?.total??n.length}}}async function Be(e){if(!R)return{data:{list:[],total:0}};let t=(await r({page:e,user_id:g,page_size:10})).data?.data,n=t?.collections??[];return{data:{list:n.map(Ce),total:t?.total??n.length}}}let V=s({key:[...S,`user-collection-created`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return ze(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),H=s({key:[...S,`user-collection-subscribed`,R],initialPageParam:1,options:{staleTime:0,enabled:x},async queryFn(e){return Be(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),U=u(()=>z.data?.pages.flatMap(e=>e.data?.list??y)??y,[z.data]),W=u(()=>B.data?.pages.flatMap(e=>e.data?.list??y)??y,[B.data]),Ve=u(()=>V.data?.pages.flatMap(e=>e.data?.list??y)??y,[V.data]),He=u(()=>H.data?.pages.flatMap(e=>e.data?.list??y)??y,[H.data]),Ue=E===`video`?U:E===`post`?W:y,G=new Set(Ue.map(e=>e.id)),We=G.size,Ge=We>0&&P.size===We,K=E===`video`?z:B,q=D===`created`?V:H,J=D===`created`?Ve:He,Y=E===`video`?U.length===0&&!K.isFetching:E===`post`?W.length===0&&!K.isFetching:J.length===0&&!q.isFetching,X=u(()=>new Set(J.filter(e=>!e.isDefaultCollection).map(e=>e.id)),[J]),Ke=X.size>0&&[...X].every(e=>I.has(e)),qe=E===`video`,Je=_&&D===`created`,Ye=[...S,`user-collect-video`,R],Xe=[...S,`user-collect-post`,R],{mutateAsync:Ze,isPending:Z}=oe(async e=>await ne({app_id:0,user_id:R,folder_id:``,content_type:qe?1:2,content_ids:e})),{mutateAsync:Qe,isPending:Q}=oe(async e=>await te({collection_ids:e})),$e=()=>{k(!O),F(new Set)};function et(){Je&&(j(e=>!e),L(new Set))}l(()=>{if(F(new Set),E===`collection`){k(!1),M(!1);return}k(!1),L(new Set),j(!1),N(!1)},[E]),l(()=>{L(new Set),j(!1),N(!1)},[D]),l(()=>{C!==E&&w(E)},[E,C,w]),l(()=>{T!==D&&Ae(D)},[D,T,Ae]);let tt=e=>{F(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},nt=()=>{P.size===G.size&&G.size>0?F(new Set):F(new Set(G))};function rt(e){if(J.find(t=>t.id===e)?.isDefaultCollection){m.error(v(`detail.defaultCollectionDeleteNotSupported`));return}L(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function it(){if(Ke){L(new Set);return}L(new Set(X))}function at(){P.size===0||Z||M(!0)}function ot(){Z||M(!1)}function st(){Q||N(!1)}async function ct(){if(!(P.size===0||Z)){if(!R){m.error(b(`collectTab.pleaseLogin`));return}try{let e=Array.from(P),t=await Ze(e);if(t.code===0){m.success(b(`collectTab.uncollectedSuccess`));let t=new Set(e);Le(qe?Ye:Xe,e=>_e(e,t)),M(!1),F(new Set),k(!1)}else m.error(t.message||b(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),m.error(b(`collectTab.operationFailed`))}}}function lt(){I.size===0||Q||N(!0)}async function ut(){if(!(I.size===0||Q)){if(!R){m.error(b(`collectTab.pleaseLogin`));return}try{let e=await Qe(Array.from(I));if(e.code===0){m.success(v(`detail.deleteSuccess`)),await q.refetch(),N(!1),L(new Set),j(!1);return}m.error(e.message||v(`detail.deleteFailed`))}catch(e){console.error(`删除收藏夹失败`,e),m.error(v(`detail.deleteFailed`))}}}let $=async()=>{if(x){if(E===`collection`){await q.fetchNextPage();return}await K.fetchNextPage()}};return p(a,{children:[p(a,{className:`flex items-center justify-between`,children:[f(re,{value:E,onValueChange:e=>{w(e)},children:p(ie,{variant:`tag`,className:`!h-6 !gap-4 !p-0`,children:[f(ae,{value:`video`,className:ke(),children:b(`collectTab.video`)}),f(ae,{value:`collection`,className:ke(),children:b(`collectTab.collections`)})]})}),E===`collection`?_&&p(a,{className:`flex items-center gap-3`,children:[p(`button`,{type:`button`,className:Oe,onClick:()=>Pe(!0),children:[f(Ee,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:Se(`components.pages.collectionCreate.form.create`)})]}),Je&&p(`button`,{type:`button`,className:Oe,onClick:et,children:[!A&&f(De,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:b(A?`collectTab.cancel`:`collectTab.edit`)})]})]}):(E===`video`||E===`post`)&&be&&p(t,{variant:`ghost`,size:`sm`,className:`h-6 gap-[2px] px-0 text-[14px] leading-6 text-[var(--color-text-secondary)] hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:$e,children:[O?null:f(De,{}),f(o,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:b(O?`collectTab.cancel`:`collectTab.edit`)})]})]}),f(a,{onClick:e=>{fe(e,`content_item`)},className:`pt-4`,children:E===`video`?Y?f(c,{text:b(`collectTab.emptyContent`)}):f(pe,{list:U,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:O,selectedIds:P,onToggleSelection:tt}):E===`post`?Y?f(c,{text:b(`collectTab.emptyContent`)}):f(de,{list:W,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:O,selectedIds:P,onToggleSelection:tt}):Y?f(c,{text:b(`collectTab.emptyContent`)}):f(ue,{list:J,loading:q.isFetching,hasMore:q.hasNextPage??!1,loadMore:$,emptyText:b(`collectTab.emptyContent`),isEditMode:A,selectedIds:I,onToggleSelection:rt})}),O&&E!==`collection`&&p(a,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[p(a,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:nt,children:b(Ge?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:P.size===0||Z,onClick:at,children:b(Z?`collectTab.processing`:`collectTab.delete`)})]}),f(a,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),A&&p(a,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[p(a,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:it,children:b(Ke?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),f(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:I.size===0||Q,onClick:lt,children:b(Q?`collectTab.processing`:`collectTab.delete`)})]}),f(a,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),f(le,{open:je,onOpenChange:M,onCancel:ot,onConfirm:ct,title:``,description:b(`collectTab.deleteConfirmDescription`),confirmText:b(`collectTab.delete`),cancelText:b(`collectTab.cancel`),isConfirming:Z}),f(le,{open:Me,onOpenChange:N,onCancel:st,onConfirm:ut,title:v(`detail.deleteCollection`),isConfirming:Q}),f(ce,{visible:Ne,onClose:()=>Pe(!1),onCreated:()=>{V.refetch()}})]})}export{b as CollectTab};
2
+ "use client";import{cn as e}from"../../../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{gCommunityGetSubscribedCollections as n,gCommunityGetUserCollections as r,gInteractionListCollects as i,pCommunityBatchDeleteCollection as a,pInteractionBatchDeleteCollects as ee}from"../../../../../../../service/generated/client.mjs";import{Button as te}from"../../../../../../ui/button.mjs";import{Box as o}from"../../../../../../ui/box.mjs";import{Text as s}from"../../../../../../ui/text.mjs";import{Tabs as ne,TabsList as re,TabsTrigger as ie}from"../../../../../../ui/tabs.mjs";import{useMutation as ae,usePaginated as c,useUpdateRequest as oe}from"../../../../../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as se}from"../../../../../../common/collection-popup/create-collection-sheet.mjs";import{DeleteConfirmDialog as ce}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as le}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as ue}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as de}from"../../../tracking.mjs";import{ProfileMainEmptyState as l}from"../../empty-state.mjs";import{CollectVideoWaterfall as fe}from"./video-waterfall.mjs";import{toast as u}from"sonner";import{useEffect as d,useMemo as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";import _ from"dayjs";import{parseAsString as pe,useQueryState as me}from"nuqs";const he={video:1,post:2};function ge(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??b).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 v(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function _e(e,t){let n=t[e.content_id||``]?.create_time,r=v(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:_(n).toDate().getTime()}}function ve(e){return String(e.description||e.detail?.description||``).trim()||``}function ye(e){let t=String(e.img_type||``).trim().toLowerCase();return t===`short`?e.img_y||e.img_x||``:t===`long`?e.img_x||e.img_y||``:e.img_y||e.img_x||``}function be(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:ye(e),duration:Number(e.duration??e.detail?.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:_(n).toDate().getTime(),imgType:e.img_type||e.media?.img_type||``,score:e.score??e.detail?.score,description:ve(e)}}function xe(e){let t=v(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function y(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function Se(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(xe),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,isDefaultCollection:!!e.is_default,contents:r===0?y(e.collection_id||`collection`):n}}const b=[],Ce=[`video`,`post`,`collection`],we=[`created`,`subscribed`];function Te({className:t}){return m(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:m(`path`,{d:`M7.33398 7.3335V4.66683H8.66732V7.3335H11.334V8.66683H8.66732V11.3335H7.33398V8.66683H4.66732V7.3335H7.33398ZM8.00065 14.6668C4.31875 14.6668 1.33398 11.682 1.33398 8.00016C1.33398 4.31826 4.31875 1.3335 8.00065 1.3335C11.6825 1.3335 14.6673 4.31826 14.6673 8.00016C14.6673 11.682 11.6825 14.6668 8.00065 14.6668ZM8.00065 13.3335C10.9462 13.3335 13.334 10.9457 13.334 8.00016C13.334 5.05464 10.9462 2.66683 8.00065 2.66683C5.05513 2.66683 2.66732 5.05464 2.66732 8.00016C2.66732 10.9457 5.05513 13.3335 8.00065 13.3335Z`,fill:`currentColor`})})}function Ee({className:t}){return m(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:m(`g`,{children:m(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M10.7666 2.12385C10.9828 1.94731 11.3023 1.95935 11.5039 2.16096L13.8389 4.49592C13.942 4.5991 13.9999 4.73966 14 4.88557C14 5.03152 13.942 5.17199 13.8389 5.27522L11.5078 7.6053C11.5063 7.60688 11.5055 7.60959 11.5039 7.61116C11.5023 7.61279 11.4997 7.61345 11.498 7.61506L5.27539 13.8387C5.17216 13.9418 5.03168 13.9998 4.88574 13.9998H2.55078C2.24679 13.9998 2.00001 13.753 2 13.449V11.1141C2 10.9681 2.05794 10.8277 2.16113 10.7244L10.7246 2.16096L10.7666 2.12385ZM3.10059 11.3416V12.8992H4.6582L10.335 7.22151L8.77734 5.66389L3.10059 11.3416ZM9.55664 4.88459L11.1143 6.44221L12.6709 4.88557L11.1133 3.32893L9.55664 4.88459Z`,fill:`currentColor`})})})}const De=`flex items-center gap-[2px] text-[14px] leading-6 text-[var(--color-text-secondary)]`;function Oe(){return e(`!flex !items-center !flex-none !h-6 !w-auto !rounded-[4px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function x({mode:e=`renderer`,userId:_,showCreateAction:v=!1,queryKeyPrefix:ve,isMine:ye=!1}){let xe=g(),y=g(`components.pages.collectionDetail`),x=g(`components.pages.profile.components.tabs`),S=e===`renderer`,C=ve??[],[w,T]=me(`collectTab`,pe.withDefault(`video`)),[E,ke]=me(`collectCollectionTab`,pe.withDefault(`created`)),D=f(()=>Ce.includes(w)?w:`video`,[w]),O=f(()=>we.includes(E)?E:`created`,[E]),[k,A]=p(!1),[j,M]=p(!1),[Ae,N]=p(!1),[je,P]=p(!1),[Me,Ne]=p(!1),[F,I]=p(()=>new Set),[L,R]=p(()=>new Set),{userId:Pe,userInfo:Fe}=t(),z=_||Pe||Fe?.userId||``,Ie=oe();async function Le(e,t){if(!z)return{data:{list:[],total:0}};let n=await i({user_id:z,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=n.data?.collect_items?.map(e=>t===he.video?be(e.video_info,r):_e(e.post_info,r))??[];return{data:{list:a,total:n.data?.total??a.length}}}let B=c({key:[...C,`user-collect-video`,z],initialPageParam:1,async queryFn(e){return Le(e,he.video)},options:{staleTime:0,enabled:S},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),V=c({key:[...C,`user-collect-post`,z],initialPageParam:1,options:{staleTime:0,enabled:S},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function Re(e){if(!z)return{data:{list:[],total:0}};let t=await r({page:e,user_id:_,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(Se),total:t.data?.data?.total??n.length}}}async function ze(e){if(!z)return{data:{list:[],total:0}};let t=(await n({page:e,user_id:_,page_size:10})).data?.data,r=t?.collections??[];return{data:{list:r.map(Se),total:t?.total??r.length}}}let H=c({key:[...C,`user-collection-created`,z],initialPageParam:1,options:{staleTime:0,enabled:S},async queryFn(e){return Re(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),U=c({key:[...C,`user-collection-subscribed`,z],initialPageParam:1,options:{staleTime:0,enabled:S},async queryFn(e){return ze(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),W=f(()=>B.data?.pages.flatMap(e=>e.data?.list??b)??b,[B.data]),G=f(()=>V.data?.pages.flatMap(e=>e.data?.list??b)??b,[V.data]),Be=f(()=>H.data?.pages.flatMap(e=>e.data?.list??b)??b,[H.data]),Ve=f(()=>U.data?.pages.flatMap(e=>e.data?.list??b)??b,[U.data]),He=D===`video`?W:D===`post`?G:b,K=new Set(He.map(e=>e.id)),Ue=K.size,We=Ue>0&&F.size===Ue,q=D===`video`?B:V,J=O===`created`?H:U,Y=O===`created`?Be:Ve,X=D===`video`?W.length===0&&!q.isFetching:D===`post`?G.length===0&&!q.isFetching:Y.length===0&&!J.isFetching,Z=f(()=>new Set(Y.filter(e=>!e.isDefaultCollection).map(e=>e.id)),[Y]),Ge=Z.size>0&&[...Z].every(e=>L.has(e)),Ke=D===`video`,qe=v&&O===`created`,Je=[...C,`user-collect-video`,z],Ye=[...C,`user-collect-post`,z],{mutateAsync:Xe,isPending:Q}=ae(async e=>await ee({app_id:0,user_id:z,folder_id:``,content_type:Ke?1:2,content_ids:e})),{mutateAsync:Ze,isPending:$}=ae(async e=>await a({collection_ids:e})),Qe=()=>{A(!k),I(new Set)};function $e(){qe&&(M(e=>!e),R(new Set))}d(()=>{if(I(new Set),D===`collection`){A(!1),N(!1);return}A(!1),R(new Set),M(!1),P(!1)},[D]),d(()=>{R(new Set),M(!1),P(!1)},[O]),d(()=>{w!==D&&T(D)},[D,w,T]),d(()=>{E!==O&&ke(O)},[O,E,ke]);let et=e=>{I(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},tt=()=>{F.size===K.size&&K.size>0?I(new Set):I(new Set(K))};function nt(e){if(Y.find(t=>t.id===e)?.isDefaultCollection){u.error(y(`detail.defaultCollectionDeleteNotSupported`));return}R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function rt(){if(Ge){R(new Set);return}R(new Set(Z))}function it(){F.size===0||Q||N(!0)}function at(){Q||N(!1)}function ot(){$||P(!1)}async function st(){if(!(F.size===0||Q)){if(!z){u.error(x(`collectTab.pleaseLogin`));return}try{let e=Array.from(F),t=await Xe(e);if(t.code===0){u.success(x(`collectTab.uncollectedSuccess`));let t=new Set(e);Ie(Ke?Je:Ye,e=>ge(e,t)),N(!1),I(new Set),A(!1)}else u.error(t.message||x(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),u.error(x(`collectTab.operationFailed`))}}}function ct(){L.size===0||$||P(!0)}async function lt(){if(!(L.size===0||$)){if(!z){u.error(x(`collectTab.pleaseLogin`));return}try{let e=await Ze(Array.from(L));if(e.code===0){u.success(y(`detail.deleteSuccess`)),await J.refetch(),P(!1),R(new Set),M(!1);return}u.error(e.message||y(`detail.deleteFailed`))}catch(e){console.error(`删除收藏夹失败`,e),u.error(y(`detail.deleteFailed`))}}}let ut=async()=>{if(S){if(D===`collection`){await J.fetchNextPage();return}await q.fetchNextPage()}};return h(o,{children:[h(o,{className:`flex items-center justify-between`,children:[m(ne,{value:D,onValueChange:e=>{T(e)},children:h(re,{variant:`tag`,className:`!h-6 !gap-4 !p-0`,children:[m(ie,{value:`video`,className:Oe(),children:x(`collectTab.video`)}),m(ie,{value:`collection`,className:Oe(),children:x(`collectTab.collections`)})]})}),D===`collection`?v&&h(o,{className:`flex items-center gap-3`,children:[h(`button`,{type:`button`,className:De,onClick:()=>Ne(!0),children:[m(Te,{}),m(s,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:xe(`components.pages.collectionCreate.form.create`)})]}),qe&&h(`button`,{type:`button`,className:De,onClick:$e,children:[!j&&m(Ee,{}),m(s,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:x(j?`collectTab.cancel`:`collectTab.edit`)})]})]}):(D===`video`||D===`post`)&&ye&&h(te,{variant:`ghost`,size:`sm`,className:`h-6 gap-[2px] px-0 text-[14px] leading-6 text-[var(--color-text-secondary)] hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:Qe,children:[k?null:m(Ee,{}),m(s,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:x(k?`collectTab.cancel`:`collectTab.edit`)})]})]}),m(o,{onClick:e=>{de(e,`content_item`)},className:`pt-4`,children:D===`video`?X?m(l,{text:x(`collectTab.emptyContent`)}):m(fe,{list:W,loading:q.isFetching,hasMore:q.hasNextPage??!1,loadMore:ut,emptyText:x(`collectTab.emptyContent`),isEditMode:k,selectedIds:F,onToggleSelection:et}):D===`post`?X?m(l,{text:x(`collectTab.emptyContent`)}):m(ue,{list:G,loading:q.isFetching,hasMore:q.hasNextPage??!1,loadMore:ut,emptyText:x(`collectTab.emptyContent`),isEditMode:k,selectedIds:F,onToggleSelection:et}):X?m(l,{text:x(`collectTab.emptyContent`)}):m(le,{list:Y,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:ut,emptyText:x(`collectTab.emptyContent`),isEditMode:j,selectedIds:L,onToggleSelection:nt})}),k&&D!==`collection`&&h(o,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[h(o,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:tt,children:x(We?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:F.size===0||Q,onClick:it,children:x(Q?`collectTab.processing`:`collectTab.delete`)})]}),m(o,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),j&&h(o,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[h(o,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:rt,children:x(Ge?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:L.size===0||$,onClick:ct,children:x($?`collectTab.processing`:`collectTab.delete`)})]}),m(o,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),m(ce,{open:Ae,onOpenChange:N,onCancel:at,onConfirm:st,title:``,description:x(`collectTab.deleteConfirmDescription`),confirmText:x(`collectTab.delete`),cancelText:x(`collectTab.cancel`),isConfirming:Q}),m(ce,{open:je,onOpenChange:P,onCancel:ot,onConfirm:lt,title:y(`detail.deleteCollection`),isConfirming:$}),m(se,{visible:Me,onClose:()=>Ne(!1),onCreated:()=>{H.refetch()}})]})}export{x as CollectTab};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Image as e}from"../../../../../../ui/image.mjs";import{Box as t}from"../../../../../../ui/box.mjs";import{EmptyState as n}from"../../../../../../ui/empty.mjs";import{InfiniteScroll as r}from"../../../../../../ui/infinite-scroll.mjs";import{Text as i}from"../../../../../../ui/text.mjs";import{Skeleton as a}from"../../../../../../ui/skeleton.mjs";import o from"../../../../../../ui/link.mjs";import{CollectionSelectIcon as s,CollectionSelectedIcon as c}from"../../../../../../common/list/collection-list/collection-select-icon.mjs";import{VideoIcon as l}from"../../../../../../common/icons/video.mjs";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";const m=`h-[128px] w-[173px]`,h={backgroundImage:`linear-gradient(179.56deg, rgba(8, 2, 17, 0.5) 1.27%, rgba(8, 2, 17, 0) 33.97%, rgba(8, 2, 17, 0) 63.33%, rgba(8, 2, 17, 0.5) 98.57%)`};function g(e){let t=Number.isFinite(e)?Math.max(0,e):0;return t<1e3?String(Math.floor(t)):t<1e6?`${(Math.floor(t/100)/10).toFixed(1)}K`:`${(Math.floor(t/1e5)/10).toFixed(1)}M`}function _(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function v(){return d(t,{className:`flex w-full flex-col gap-4`,children:Array.from({length:4},(e,n)=>f(t,{className:`flex gap-3`,children:[d(a,{className:`shrink-0 rounded-[8px] bg-white/8 ${m}`}),f(t,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-1`,children:[d(a,{className:`h-5 w-full rounded bg-white/8`}),d(a,{className:`h-4 w-full rounded bg-white/8`})]})]},`collect-video-skeleton-${n}`))})}function y({item:n,isEditMode:r,isSelected:a,onToggleSelection:v}){let y=p(`components.ui.list.videoList`),b=n.id||``,x=g(n.viewCount),S=_(n.duration),C=n.is_more_link!==void 0&&n.is_more_link!==null,w=n.is_more_link?y(`videoListItem.series`):y(`videoListItem.movie`),T=n.metaPrimaryText?.trim()?`简介:${n.metaPrimaryText.trim()}`:``;function E(){!r||!b||v?.(b)}let D=f(t,{className:`flex min-w-0 gap-3`,children:[f(t,{className:`relative shrink-0 overflow-hidden rounded-[8px] bg-[#18111f] ${m}`,children:[n.coverImage&&d(e,{src:n.coverImage,alt:n.title||`cover`,fill:!0,objectFit:`cover`,className:`object-cover`}),d(t,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:h,"aria-hidden":!0}),!r&&f(u,{children:[C&&d(t,{className:`absolute left-2 top-3 z-10 flex max-h-[18px] items-center rounded bg-white/20 px-1 py-0.5`,children:d(i,{className:`text-center text-[12px] leading-[14px] text-white`,children:w})}),f(t,{className:`absolute bottom-3 left-2 right-2 z-10 flex items-center justify-between`,children:[f(t,{className:`flex min-w-0 items-center gap-1`,children:[d(l,{className:`size-4 shrink-0 text-white opacity-80`,"aria-hidden":!0}),x?d(i,{className:`truncate text-[14px] leading-5 text-white`,children:x}):null]}),S?d(i,{className:`shrink-0 text-[14px] leading-5 text-white`,children:S}):null]})]}),r&&d(t,{className:`pointer-events-none absolute left-2 top-2 z-20`,children:d(a?c:s,{})})]}),f(t,{className:`flex min-w-0 flex-1 flex-col gap-4`,children:[d(i,{as:`h3`,className:`line-clamp-2 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)]`,children:n.title}),T?d(i,{className:`line-clamp-2 text-[12px] leading-4 text-[rgba(255,255,255,0.5)]`,children:T}):null]})]});return r?d(`button`,{type:`button`,className:`w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:E,"aria-pressed":a,disabled:!b,children:D}):d(o,{href:n.id?`/video/${n.id}/${n.title}`:`#`,className:`block w-full`,children:D})}function b({list:e,loading:i=!1,hasMore:a=!1,loadMore:o,emptyText:s=``,isEditMode:c=!1,selectedIds:l,onToggleSelection:u}){return i&&e.length===0?d(v,{}):e.length===0?d(n,{type:`no-content`,text:s,className:`!pt-[72px]`}):d(r,{loadMore:async()=>{await o?.()},hasMore:!!o&&a,noMoreText:`没有更多了`,className:`w-full`,children:d(t,{className:`flex w-full flex-col gap-4`,children:e.map((e,t)=>{let n=e.id?`collect-video-row-${e.id}-${t}`:`collect-video-row-${t}`;return d(y,{item:e,isEditMode:c,isSelected:!!(e.id&&l?.has(e.id)),onToggleSelection:u},n)})})})}export{b as CollectVideoWaterfall};
2
+ "use client";import{formatCompactCount as e}from"../../../../../../../utils/common.mjs";import{Image as t}from"../../../../../../ui/image.mjs";import{Box as n}from"../../../../../../ui/box.mjs";import{EmptyState as r}from"../../../../../../ui/empty.mjs";import{InfiniteScroll as i}from"../../../../../../ui/infinite-scroll.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{Skeleton as o}from"../../../../../../ui/skeleton.mjs";import s from"../../../../../../ui/link.mjs";import{CollectionSelectIcon as c,CollectionSelectedIcon as l}from"../../../../../../common/list/collection-list/collection-select-icon.mjs";import{VideoIcon as u}from"../../../../../../common/icons/video.mjs";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";import{useTranslations as m}from"next-intl";const h=`h-[128px] w-[173px]`,g={backgroundImage:`linear-gradient(179.56deg, rgba(8, 2, 17, 0.5) 1.27%, rgba(8, 2, 17, 0) 33.97%, rgba(8, 2, 17, 0) 63.33%, rgba(8, 2, 17, 0.5) 98.57%)`};function _(t){return e(Number.isFinite(t)?Math.max(0,t):0)}function v(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function y(){return f(n,{className:`flex w-full flex-col gap-4`,children:Array.from({length:4},(e,t)=>p(n,{className:`flex gap-3`,children:[f(o,{className:`shrink-0 rounded-[8px] bg-white/8 ${h}`}),p(n,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-1`,children:[f(o,{className:`h-5 w-full rounded bg-white/8`}),f(o,{className:`h-4 w-full rounded bg-white/8`})]})]},`collect-video-skeleton-${t}`))})}function b({item:e,isEditMode:r,isSelected:i,onToggleSelection:o}){let y=m(`components.ui.list.videoList`),b=e.id||``,x=_(e.viewCount),S=v(e.duration),C=e.is_more_link!==void 0&&e.is_more_link!==null,w=e.is_more_link?y(`videoListItem.series`):y(`videoListItem.movie`),T=e.description?.trim()?`简介:${e.description.trim()}`:``;function E(){!r||!b||o?.(b)}let D=p(n,{className:`flex min-w-0 gap-3`,children:[p(n,{className:`relative shrink-0 overflow-hidden rounded-[8px] bg-[#18111f] ${h}`,children:[e.coverImage&&f(t,{src:e.coverImage,alt:e.title||`cover`,fill:!0,objectFit:`cover`,className:`object-cover`}),f(n,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:g,"aria-hidden":!0}),!r&&p(d,{children:[C&&f(n,{className:`absolute left-2 top-3 z-10 flex max-h-[18px] items-center rounded bg-white/20 px-1 py-0.5`,children:f(a,{className:`text-center text-[12px] leading-[14px] text-white`,children:w})}),p(n,{className:`absolute bottom-3 left-2 right-2 z-10 flex items-center justify-between`,children:[p(n,{className:`flex min-w-0 items-center gap-1`,children:[f(u,{className:`size-4 shrink-0 text-white opacity-80`,"aria-hidden":!0}),x?f(a,{className:`truncate text-[14px] leading-5 text-white`,children:x}):null]}),S?f(a,{className:`shrink-0 text-[14px] leading-5 text-white`,children:S}):null]})]}),r&&f(n,{className:`pointer-events-none absolute left-2 top-2 z-20`,children:f(i?l:c,{})})]}),p(n,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-[20px]`,children:[f(a,{as:`h3`,className:`line-clamp-2 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)]`,children:e.title}),T?f(a,{className:`line-clamp-2 text-[12px] leading-4 text-[rgba(255,255,255,0.5)]`,children:T}):null]})]});return r?f(`button`,{type:`button`,className:`w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:E,"aria-pressed":i,disabled:!b,children:D}):f(s,{href:e.id?`/video/${e.id}/${e.title}`:`#`,className:`block w-full`,children:D})}function x({list:e,loading:t=!1,hasMore:a=!1,loadMore:o,emptyText:s=``,isEditMode:c=!1,selectedIds:l,onToggleSelection:u}){return t&&e.length===0?f(y,{}):e.length===0?f(r,{type:`no-content`,text:s,className:`!pt-[72px]`}):f(i,{loadMore:async()=>{await o?.()},hasMore:!!o&&a,noMoreText:`没有更多了`,className:`w-full`,children:f(n,{className:`flex w-full flex-col gap-4`,children:e.map((e,t)=>{let n=e.id?`collect-video-row-${e.id}-${t}`:`collect-video-row-${t}`;return f(b,{item:e,isEditMode:c,isSelected:!!(e.id&&l?.has(e.id)),onToggleSelection:u},n)})})})}export{x as CollectVideoWaterfall};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionBatchClearBrowse as n}from"../../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getHistoryData as ee,likeContentType as p}from"../../utils.mjs";import{useEffect as m,useMemo as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";import{parseAsString as x,useQueryState as S}from"nuqs";function te(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n.title||n.text||``,coverImage:n.cover_image_thumbnail||n.cover_image||n.cover_horizontal_image_thumbnail||void 0,publishTime:r}}function C(e){let{detail:t,content_play_progress:n}=e,{user_info:r,info:i,statics_cnt:a,publish_time:o,parent_content_info:s}=t,c=(Array.isArray(i?.tags)?i.tags:[]).map(e=>typeof e==`string`?e.trim():e&&typeof e==`object`&&`name`in e?String(e.name||``).trim():``).find(Boolean)||``,l=String(i?.img_type||``).trim().toLowerCase(),u=l===`long`||!l&&!!i?.cover_horizontal_image_thumbnail,d=u?i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image_thumbnail||i?.img_y||i?.cover_image||``:i?.cover_image_thumbnail||i?.img_y||i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image||``;return{is_more_link:i.is_more_link,id:e.id,title:i.title||i.text||i.name||``,coverImage:d,duration:Number(i.video_duration??0),progress:n?.percent??0,seriesNum:n?.series_num,authorName:r.name,viewCount:i?.play_count??a?.browse_cnt??0,publishTime:o,type:s?.type,imgType:l||(u?`long`:`short`),score:i?.score,metaPrimaryText:c}}function w(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}const T=[`video`,`post`];function E({mode:E=`renderer`,targetUserId:D,queryKeyPrefix:O}){let k=b(`components.pages.profile.components.tabs`),A=E===`renderer`,j=O??[],[M,N]=S(`historyTab`,x.withDefault(`video`)),P=h(()=>T.includes(M)?M:`video`,[M]),[F,I]=g(!1),[L,R]=g(()=>new Set),z=t(e=>e.userId),B=c(),V=[...j,`user-history-video`],H=[...j,`user-history-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return ee({targetUserId:D,page:e,contentType:p.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(te))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:ne,isPending:Q}=o(async e=>await n({app_id:0,user_id:z,content_type:e.contentType,content_ids:e.contentIds}));m(()=>{R(new Set)},[P]),m(()=>{M!==P&&N(P)},[P,M,N]);let re=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ie=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},ae=async()=>{if(!(L.size===0||Q)){if(!z){y.error(k(`historyTab.pleaseLogin`));return}try{let e=Array.from(L),t=await ne({contentIds:e,contentType:Z?1:2});if(t.code===0){y.success(k(`historyTab.historyDeletedSuccess`));let t=new Set(e);B(Z?V:H,e=>w(e,t,e=>e.id)),R(new Set),I(!1)}else y.error(t.message||k(`historyTab.deleteFailed`))}catch(e){console.error(`删除浏览记录失败`,e),y.error(k(`historyTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return v(r,{children:[_(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?_(d,{text:k(`historyTab.emptyContent`)}):_(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`)}):Y?_(d,{text:k(`historyTab.emptyContent`)}):_(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:re})}),F&&v(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[v(r,{className:`flex items-center gap-2`,children:[_(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ie}),_(a,{className:`text-sm text-text1`,children:k(`historyTab.selectAll`)})]}),_(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:ae,children:k(Q?`historyTab.processing`:`historyTab.delete`)})]})]})}export{E as HistoryTab};
2
+ "use client";import{useUserStore as e}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionBatchClearBrowse as t}from"../../../../../../../service/generated/client.mjs";import{Button as n}from"../../../../../../ui/button.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getHistoryData as p,likeContentType as m}from"../../utils.mjs";import{toast as h}from"sonner";import{useEffect as g,useMemo as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";import{parseAsString as S,useQueryState as C}from"nuqs";function w(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n.title||n.text||``,coverImage:n.cover_image_thumbnail||n.cover_image||n.cover_horizontal_image_thumbnail||void 0,publishTime:r}}function ee(e){let{detail:t,content_play_progress:n}=e,{user_info:r,info:i,statics_cnt:a,publish_time:o,parent_content_info:s}=t,c=(Array.isArray(i?.tags)?i.tags:[]).map(e=>typeof e==`string`?e.trim():e&&typeof e==`object`&&`name`in e?String(e.name||``).trim():``).find(Boolean)||``,l=String(i?.img_type||``).trim().toLowerCase(),u=l===`long`||!l&&!!i?.cover_horizontal_image_thumbnail,d=u?i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image_thumbnail||i?.img_y||i?.cover_image||``:i?.cover_image_thumbnail||i?.img_y||i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image||``,f=String(i?.description||``).trim()||c;return{is_more_link:i.is_more_link,id:e.id,title:i.title||i.text||i.name||``,coverImage:d,duration:Number(i.video_duration??0),progress:n?.percent??0,seriesNum:n?.series_num,authorName:r.name,viewCount:i?.play_count??a?.browse_cnt??0,publishTime:o,type:s?.type,imgType:l||(u?`long`:`short`),score:i?.score,description:f}}function T(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}const E=[`video`,`post`];function D({mode:D=`renderer`,targetUserId:O,queryKeyPrefix:te}){let k=x(`components.pages.profile.components.tabs`),A=D===`renderer`,j=te??[],[M,N]=C(`historyTab`,S.withDefault(`video`)),P=_(()=>E.includes(M)?M:`video`,[M]),[F,I]=v(!1),[L,R]=v(()=>new Set),z=e(e=>e.userId),B=c(),V=[...j,`user-history-video`],H=[...j,`user-history-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return p({targetUserId:O,page:e,contentType:m.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(ee))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(w))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:ne,isPending:Q}=o(async e=>await t({app_id:0,user_id:z,content_type:e.contentType,content_ids:e.contentIds}));g(()=>{R(new Set)},[P]),g(()=>{M!==P&&N(P)},[P,M,N]);let re=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ie=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},ae=async()=>{if(!(L.size===0||Q)){if(!z){h.error(k(`historyTab.pleaseLogin`));return}try{let e=Array.from(L),t=await ne({contentIds:e,contentType:Z?1:2});if(t.code===0){h.success(k(`historyTab.historyDeletedSuccess`));let t=new Set(e);B(Z?V:H,e=>T(e,t,e=>e.id)),R(new Set),I(!1)}else h.error(t.message||k(`historyTab.deleteFailed`))}catch(e){console.error(`删除浏览记录失败`,e),h.error(k(`historyTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return b(r,{children:[y(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?y(d,{text:k(`historyTab.emptyContent`)}):y(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`)}):Y?y(d,{text:k(`historyTab.emptyContent`)}):y(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:re})}),F&&b(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[b(r,{className:`flex items-center gap-2`,children:[y(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ie}),y(a,{className:`text-sm text-text1`,children:k(`historyTab.selectAll`)})]}),y(n,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:ae,children:k(Q?`historyTab.processing`:`historyTab.delete`)})]})]})}export{D as HistoryTab};
@@ -45,6 +45,8 @@ interface ExtendedContentInfo extends CommunityContentInfo {
45
45
  score?: number | string;
46
46
  text?: string;
47
47
  play_count?: number;
48
+ /** 视频简介(与标题区分,用于列表第二行)。 */
49
+ description?: string;
48
50
  }
49
51
  /**
50
52
  * 内容详情
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../../../../ui/button.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionUnifiedBatchLikeDislike as n}from"../../../../../../../service/generated/client.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getLikeData as ee,likeContentType as p}from"../../utils.mjs";import{useEffect as m,useMemo as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";import{parseAsString as x,useQueryState as te}from"nuqs";function S(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function C(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n?.name||n?.text||n?.content||``,coverImage:n?.cover_image_thumbnail||n?.cover_image||n?.cover_horizontal_image_thumbnail||``,publishTime:r??0}}function w(e){let{detail:t}=e,{user_info:n,info:r,statics_cnt:i,publish_time:a,parent_content_info:o}=t,s=(Array.isArray(r?.tags)?r.tags:[]).map(e=>typeof e==`string`?e.trim():e&&typeof e==`object`&&`name`in e?String(e.name||``).trim():``).find(Boolean)||``,c=String(r?.img_type||``).trim().toLowerCase(),l=c===`long`||!c&&!!r?.cover_horizontal_image_thumbnail,u=l?r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image_thumbnail||r?.img_y||r?.cover_image||``:r?.cover_image_thumbnail||r?.img_y||r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image||``;return{id:e.id,is_more_link:r?.is_more_link||!1,title:r?.name||r?.text||r?.content||``,coverImage:u,duration:Number(r?.video_duration??0),progress:e.content_play_progress?.percent??0,seriesNum:e.content_play_progress?.series_num,authorName:n?.name||``,viewCount:r?.play_count??i?.browse_cnt??0,publishTime:a??0,type:o?.type,imgType:c||(l?`long`:`short`),score:r?.score,metaPrimaryText:s}}const T=[`video`,`post`];function E({mode:E=`renderer`,targetUserId:D,queryKeyPrefix:O,isMine:ne=!1}){let k=b(`components.pages.profile.components.tabs`),A=E===`renderer`,j=O??[],[M,N]=te(`likeTab`,x.withDefault(`video`)),P=h(()=>T.includes(M)?M:`video`,[M]),[F,I]=g(!1),[L,R]=g(()=>new Set),z=t(e=>e.userId),B=c(),V=[...j,`user-like-video`],H=[...j,`user-like-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return ee({targetUserId:D,page:e,contentType:p.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,options:{staleTime:0,enabled:A},initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(w))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:re,isPending:Q}=o(async e=>await n({app_id:0,user_id:z,action:`cancel_like`,content_ids:e,content_type:Z?1:2}));m(()=>{R(new Set)},[P]),m(()=>{M!==P&&N(P)},[P,M,N]);let ie=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ae=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},oe=async()=>{if(!(L.size===0||Q)){if(!z){y.error(k(`likeTab.pleaseLogin`));return}try{let e=Array.from(L),t=await re(e);if(t.code===0){y.success(k(`likeTab.unlikedSuccess`));let t=new Set(e);B(Z?V:H,e=>S(e,t,e=>e.id)),R(new Set),I(!1)}else y.error(t.message||k(`likeTab.unlikeFailed`))}catch(e){console.error(`取消点赞失败`,e),y.error(k(`likeTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return v(r,{children:[_(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?_(d,{text:k(`likeTab.emptyContent`)}):_(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`)}):Y?_(d,{text:k(`likeTab.emptyContent`)}):_(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:ie})}),F&&v(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[v(r,{className:`flex items-center gap-2`,children:[_(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ae}),_(a,{className:`text-sm text-text1`,children:k(`likeTab.selectAll`)})]}),_(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:oe,children:k(Q?`likeTab.processing`:`likeTab.delete`)})]})]})}export{E as LikeTab};
2
+ "use client";import{useUserStore as e}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionUnifiedBatchLikeDislike as t}from"../../../../../../../service/generated/client.mjs";import{Button as n}from"../../../../../../ui/button.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getLikeData as ee,likeContentType as p}from"../../utils.mjs";import{toast as m}from"sonner";import{useEffect as h,useMemo as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";import{parseAsString as x,useQueryState as te}from"nuqs";function S(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function C(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n?.name||n?.text||n?.content||``,coverImage:n?.cover_image_thumbnail||n?.cover_image||n?.cover_horizontal_image_thumbnail||``,publishTime:r??0}}function w(e){let{detail:t}=e,{user_info:n,info:r,statics_cnt:i,publish_time:a,parent_content_info:o}=t,s=String(r?.img_type||``).trim().toLowerCase(),c=s===`long`||!s&&!!r?.cover_horizontal_image_thumbnail,l=c?r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image_thumbnail||r?.img_y||r?.cover_image||``:r?.cover_image_thumbnail||r?.img_y||r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image||``;console.log(r,222222);let u=String(r?.description||``).trim();return{id:e.id,is_more_link:r?.is_more_link||!1,title:r?.name||r?.text||r?.content||``,coverImage:l,duration:Number(r?.video_duration??0),progress:e.content_play_progress?.percent??0,seriesNum:e.content_play_progress?.series_num,authorName:n?.name||``,viewCount:r?.play_count??i?.browse_cnt??0,publishTime:a??0,type:o?.type,imgType:s||(c?`long`:`short`),score:r?.score,description:u}}const T=[`video`,`post`];function E({mode:E=`renderer`,targetUserId:D,queryKeyPrefix:O,isMine:ne=!1}){let k=b(`components.pages.profile.components.tabs`),A=E===`renderer`,j=O??[],[M,N]=te(`likeTab`,x.withDefault(`video`)),P=g(()=>T.includes(M)?M:`video`,[M]),[F,I]=_(!1),[L,R]=_(()=>new Set),z=e(e=>e.userId),B=c(),V=[...j,`user-like-video`],H=[...j,`user-like-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return ee({targetUserId:D,page:e,contentType:p.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,options:{staleTime:0,enabled:A},initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(w))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:re,isPending:Q}=o(async e=>await t({app_id:0,user_id:z,action:`cancel_like`,content_ids:e,content_type:Z?1:2}));h(()=>{R(new Set)},[P]),h(()=>{M!==P&&N(P)},[P,M,N]);let ie=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ae=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},oe=async()=>{if(!(L.size===0||Q)){if(!z){m.error(k(`likeTab.pleaseLogin`));return}try{let e=Array.from(L),t=await re(e);if(t.code===0){m.success(k(`likeTab.unlikedSuccess`));let t=new Set(e);B(Z?V:H,e=>S(e,t,e=>e.id)),R(new Set),I(!1)}else m.error(t.message||k(`likeTab.unlikeFailed`))}catch(e){console.error(`取消点赞失败`,e),m.error(k(`likeTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return y(r,{children:[v(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?v(d,{text:k(`likeTab.emptyContent`)}):v(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`)}):Y?v(d,{text:k(`likeTab.emptyContent`)}):v(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:ie})}),F&&y(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[y(r,{className:`flex items-center gap-2`,children:[v(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ae}),v(a,{className:`text-sm text-text1`,children:k(`likeTab.selectAll`)})]}),v(n,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:oe,children:k(Q?`likeTab.processing`:`likeTab.delete`)})]})]})}export{E as LikeTab};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{pCommunityDeleteContent as e}from"../../../../../../../service/generated/client.mjs";import{useDeleteRequest as t,useMutation as n,usePaginated as r,useUpdateRequest as i}from"../../../../../../../hooks/query/use-query.mjs";import{DeleteConfirmDialog as a}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{UserActivityList as o}from"../../../../../../common/list/user-activity-list/user-activity-list.mjs";import{useState as s}from"react";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{toast as d}from"sonner";import{useTranslations as f}from"next-intl";function p(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function m({mode:m=`renderer`,targetUserId:h,queryKeyPrefix:g,isMine:_=!1}){let v=f(`components.pages.profile.components.tabs`),y=m===`renderer`,b=g??[],x=t(),S=i(),[C,w]=s(null),{mutateAsync:T,isPending:E}=n(async t=>await e({content_id:t})),{data:D,isFetching:O,fetchNextPage:k,hasNextPage:A}=r({key:[...b,`user-publish`],initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:y},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),j=D?.pages.flatMap(e=>(e?.data||{}).list||[])??[];function M(e){w(e)}function N(){w(null)}async function P(){if(!(!C||E))try{await T(C);let e=new Set([C]);S([...b,`user-publish`],t=>p(t,e,e=>e.content_id)),d.success(v(`publishTab.deleteSuccess`)),w(null)}catch(e){console.error(`删除内容失败`,e),d.error(v(`publishTab.deleteFailed`))}}let F=j.map(e=>({...e,isDeleting:E&&C===e.content_id,onDelete:()=>M(e.content_id??``)})),I=async()=>{y&&await k()};function L(){x([...b,`user-publish`]),x(b)}function R(e){console.log(`分享到微信:`,e)}function z(e){console.log(`分享到QQ:`,e)}function B(e){console.log(`分享到朋友圈:`,e)}return u(c,{children:[l(o,{list:F,loading:O,hasMore:A,loadMore:I,canEdit:_,showGroupHeaders:!1,emptyText:v(`publishTab.emptyText`),onActionSuccess:L,onShareWeChat:R,onShareQQ:z,onShareMoments:B}),l(a,{open:!!C,onOpenChange:e=>!e&&N(),onCancel:N,onConfirm:P,isConfirming:E})]})}export{m as PublishTab};
2
+ "use client";import{pCommunityDeleteContent as e}from"../../../../../../../service/generated/client.mjs";import{useDeleteRequest as t,useMutation as n,usePaginated as r,useUpdateRequest as i}from"../../../../../../../hooks/query/use-query.mjs";import{DeleteConfirmDialog as a}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{UserActivityList as o}from"../../../../../../common/list/user-activity-list/user-activity-list.mjs";import{toast as s}from"sonner";import{useState as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";function p(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function m({mode:m=`renderer`,targetUserId:h,queryKeyPrefix:g,isMine:_=!1}){let v=f(`components.pages.profile.components.tabs`),y=m===`renderer`,b=g??[],x=t(),S=i(),[C,w]=c(null),{mutateAsync:T,isPending:E}=n(async t=>await e({content_id:t})),{data:D,isFetching:O,fetchNextPage:k,hasNextPage:A}=r({key:[...b,`user-publish`],initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:y},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),j=D?.pages.flatMap(e=>(e?.data||{}).list||[])??[];function M(e){w(e)}function N(){w(null)}async function P(){if(!(!C||E))try{await T(C);let e=new Set([C]);S([...b,`user-publish`],t=>p(t,e,e=>e.content_id)),s.success(v(`publishTab.deleteSuccess`)),w(null)}catch(e){console.error(`删除内容失败`,e),s.error(v(`publishTab.deleteFailed`))}}let F=j.map(e=>({...e,isDeleting:E&&C===e.content_id,onDelete:()=>M(e.content_id??``)})),I=async()=>{y&&await k()};function L(){x([...b,`user-publish`]),x(b)}function R(e){console.log(`分享到微信:`,e)}function z(e){console.log(`分享到QQ:`,e)}function B(e){console.log(`分享到朋友圈:`,e)}return d(l,{children:[u(o,{list:F,loading:O,hasMore:A,loadMore:I,canEdit:_,showGroupHeaders:!1,emptyText:v(`publishTab.emptyText`),onActionSuccess:L,onShareWeChat:R,onShareQQ:z,onShareMoments:B}),u(a,{open:!!C,onOpenChange:e=>!e&&N(),onCancel:N,onConfirm:P,isConfirming:E})]})}export{m as PublishTab};
@@ -1,2 +1,2 @@
1
1
 
2
- import{gInteractionGetBrowseList as e,gInteractionGetLikeList as t}from"../../../../../service/generated/client.mjs";import n from"dayjs";const r={video:1,post:2};function i(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function a(e,t){let r=e.name,a=n(t?t?.[e.content_id||``]?.create_time:e.create_time).toDate().getTime(),o=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{name:r,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:o,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:a,parent_content_info:{type:0}}}}function o(e,t){let r=e.is_more_link,i=n(t?t?.[e.id||``]?.create_time:e.show_at).toDate().getTime(),a=Number(e.duration??0),o=Number.isFinite(a)?Math.max(0,Math.floor(a)):0,s=e.img_y||e.img_x||``,c=e.img_x||e.img_y||``;return{id:e.id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:s||c,cover_image_thumbnail:s,cover_horizontal_image_thumbnail:c,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:o},statics_cnt:{browse_cnt:e.play_count||0},publish_time:i,parent_content_info:{type:0}}}}function s(e,t){let r=e.name,a=e.is_more_link,o=t[e.content_id||``].browse_time,s=n(o).toDate().getTime(),c=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{is_more_link:a,name:r||e.content,title:r||e.content,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:c,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:s,parent_content_info:{type:0}}}}function c(e,t){let r=e.is_more_link,i=t[e.id||``].browse_time,a=n(i).toDate().getTime(),o=Number(e.duration??0),s=Number.isFinite(o)?Math.max(0,Math.floor(o)):0,c=e.img_y||e.img_x||``,l=e.img_x||e.img_y||``,u=t[e.id||``]?.browse_duration||0,d=Number(t[e.id||``]?.browse_episode),f=0,p=0;return Number.isNaN(d)||(f=d),s&&u&&(p=Math.min(100,Math.floor(u/s*100))),{id:e.id||``,content_play_progress:{percent:p,series_num:f},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:c||l,cover_image_thumbnail:c,cover_horizontal_image_thumbnail:l,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:s},statics_cnt:{browse_cnt:e.play_count||0},publish_time:a,parent_content_info:{type:0}}}}async function l({targetUserId:e,page:n,contentType:i,pageSize:s=10}){if(!e)return{data:{list:[],total:0}};let c=await t({user_id:e,page:n,content_type:i,page_size:s}),l=c.data.like_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},u=c.data?.like_items?.map(e=>i===r.post?a(e.post_info,l):o(e?.video_info,l))||[],d=c.data?.has_more,f=typeof d==`boolean`?d:void 0;return{data:{list:u,total:c.data?.total??u.length,has_more:f}}}async function u({targetUserId:t,page:n,contentType:i,pageSize:a=10,authConfig:o}){if(!t)return{data:{list:[],total:0}};let l=await e({user_id:t,page:n,page_size:a,content_type:i},o),u=l.data.records?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},d=(l.data?.browse_items??[]).map(e=>i===r.post?s(e.post_info,u):c(e?.video_info,u)),f=l.data?.has_more?!0:void 0;return{data:{list:d,total:l.data?.total??d.length,has_more:f}}}export{u as getHistoryData,l as getLikeData,r as likeContentType};
2
+ import{gInteractionGetBrowseList as e,gInteractionGetLikeList as t}from"../../../../../service/generated/client.mjs";import n from"dayjs";const r={video:1,post:2};function i(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function a(e,t){let r=e.name,a=n(t?t?.[e.content_id||``]?.create_time:e.create_time).toDate().getTime(),o=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{name:r,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:o,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:a,parent_content_info:{type:0}}}}function o(e,t){let r=e.is_more_link,i=n(t?t?.[e.id||``]?.create_time:e.show_at).toDate().getTime(),a=Number(e.duration??0),o=Number.isFinite(a)?Math.max(0,Math.floor(a)):0,s=e.img_y||e.img_x||``,c=e.img_x||e.img_y||``;return{id:e.id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,description:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:s||c,cover_image_thumbnail:s,cover_horizontal_image_thumbnail:c,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:o},statics_cnt:{browse_cnt:e.play_count||0},publish_time:i,parent_content_info:{type:0}}}}function s(e,t){let r=e.name,a=e.is_more_link,o=t[e.content_id||``].browse_time,s=n(o).toDate().getTime(),c=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{is_more_link:a,name:r||e.content,title:r||e.content,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:c,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:s,parent_content_info:{type:0}}}}function c(e,t){let r=e.is_more_link,i=t[e.id||``].browse_time,a=n(i).toDate().getTime(),o=Number(e.duration??0),s=Number.isFinite(o)?Math.max(0,Math.floor(o)):0,c=e.img_y||e.img_x||``,l=e.img_x||e.img_y||``,u=t[e.id||``]?.browse_duration||0,d=Number(t[e.id||``]?.browse_episode),f=0,p=0;return Number.isNaN(d)||(f=d),s&&u&&(p=Math.min(100,Math.floor(u/s*100))),{id:e.id||``,content_play_progress:{percent:p,series_num:f},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,description:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:c||l,cover_image_thumbnail:c,cover_horizontal_image_thumbnail:l,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:s},statics_cnt:{browse_cnt:e.play_count||0},publish_time:a,parent_content_info:{type:0}}}}async function l({targetUserId:e,page:n,contentType:i,pageSize:s=10}){if(!e)return{data:{list:[],total:0}};let c=await t({user_id:e,page:n,content_type:i,page_size:s}),l=c.data.like_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},u=c.data?.like_items?.map(e=>i===r.post?a(e.post_info,l):o(e?.video_info,l))||[],d=c.data?.has_more,f=typeof d==`boolean`?d:void 0;return{data:{list:u,total:c.data?.total??u.length,has_more:f}}}async function u({targetUserId:t,page:n,contentType:i,pageSize:a=10,authConfig:o}){if(!t)return{data:{list:[],total:0}};let l=await e({user_id:t,page:n,page_size:a,content_type:i},o),u=l.data.records?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},d=(l.data?.browse_items??[]).map(e=>i===r.post?s(e.post_info,u):c(e?.video_info,u)),f=l.data?.has_more?!0:void 0;return{data:{list:d,total:l.data?.total??d.length,has_more:f}}}export{u as getHistoryData,l as getLikeData,r as likeContentType};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{trackKeywordClick as n}from"../../../../utils/tracking.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as l}from"../../../common/icons/delete.mjs";import{useLayoutEffect as u,useMemo as d,useRef as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{usePathname as g,useSearchParams as _}from"next/navigation";function v(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function y(y){let{title:b,rows:x=2,clearText:S,confirmDescription:C,onHistoryClick:w,mode:T=`renderer`}=y,E=T===`editor`,D=b??`搜索历史`,O=S??`清空`,k=C??`确定要清除所有搜索历史吗?`,A=d(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=p(!1),[N,P]=p(null),F=f(null),I=f([]),L=f(null),R=r(),z=g(),B=_(),{userInfo:V}=t(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=d(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(u(()=>{if(K.length===0){P(null);return}let e=F.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];I.current.slice(0,K.length).forEach(e=>{if(!e)return;let r=e.getBoundingClientRect(),i=Math.round(r.top-t.top),a=Math.round(r.bottom-t.top),o=n.find(e=>Math.abs(e.top-i)<=1);if(o){o.bottom=Math.max(o.bottom,a);return}n.push({top:i,bottom:a})}),n.sort((e,t)=>e.top-t.top);let r=n.slice(0,x).reduce((e,t)=>Math.max(e,t.bottom),0);P(e=>e===r?e:r)},n=()=>{L.current!=null&&cancelAnimationFrame(L.current),L.current=requestAnimationFrame(()=>{L.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),I.current.slice(0,K.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)}},[K,x]),K.length===0)return null;let q=(e,t)=>{if(n({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:t,search_trace_id:``}),U(e),w){w(e);return}let r=new URLSearchParams(B.toString());r.set(`q`,e);let i=z.includes(`/search-result`)?z:`/search-result`;R.push(`${i}?${r.toString()}`)};return h(i,{className:E?`mt-[24px] px-[16px] py-[16px]`:`mt-[24px] px-[16px] py-0`,children:[h(i,{className:`mb-[15px] flex items-center justify-between`,children:[m(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),m(`button`,{type:`button`,"aria-label":O,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white/50`,onClick:()=>M(!0),children:m(l,{className:`h-[24px] w-[24px]`})})]}),m(i,{ref:F,className:`flex flex-wrap content-start items-center gap-[6px] overflow-hidden`,style:N?{maxHeight:`${N}px`}:void 0,children:K.map((e,t)=>m(i,{ref:e=>{I.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${E?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>q(e,t),children:m(a,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] text-white`,children:v(e,8)})},t))}),m(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
2
+ "use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{trackKeywordClick as n}from"../../../../utils/tracking.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as l}from"../../../common/icons/delete.mjs";import{useLayoutEffect as u,useMemo as d,useRef as f,useState as p}from"react";import{usePathname as m,useSearchParams as h}from"next/navigation";import{jsx as g,jsxs as _}from"react/jsx-runtime";function v(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function y(y){let{title:b,rows:x=2,clearText:S,confirmDescription:C,onHistoryClick:w,mode:T=`renderer`}=y,E=T===`editor`,D=b??`搜索历史`,O=S??`清空`,k=C??`确定要清除所有搜索历史吗?`,A=d(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=p(!1),[N,P]=p(null),F=f(null),I=f([]),L=f(null),R=r(),z=m(),B=h(),{userInfo:V}=t(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=d(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(u(()=>{if(K.length===0){P(null);return}let e=F.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];I.current.slice(0,K.length).forEach(e=>{if(!e)return;let r=e.getBoundingClientRect(),i=Math.round(r.top-t.top),a=Math.round(r.bottom-t.top),o=n.find(e=>Math.abs(e.top-i)<=1);if(o){o.bottom=Math.max(o.bottom,a);return}n.push({top:i,bottom:a})}),n.sort((e,t)=>e.top-t.top);let r=n.slice(0,x).reduce((e,t)=>Math.max(e,t.bottom),0);P(e=>e===r?e:r)},n=()=>{L.current!=null&&cancelAnimationFrame(L.current),L.current=requestAnimationFrame(()=>{L.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),I.current.slice(0,K.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)}},[K,x]),K.length===0)return null;let q=(e,t)=>{if(n({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:t,search_trace_id:``}),U(e),w){w(e);return}let r=new URLSearchParams(B.toString());r.set(`q`,e);let i=z.includes(`/search-result`)?z:`/search-result`;R.push(`${i}?${r.toString()}`)};return _(i,{className:E?`mt-[24px] px-[16px] py-[16px]`:`mt-[24px] px-[16px] py-0`,children:[_(i,{className:`mb-[15px] flex items-center justify-between`,children:[g(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),g(`button`,{type:`button`,"aria-label":O,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white/50`,onClick:()=>M(!0),children:g(l,{className:`h-[24px] w-[24px]`})})]}),g(i,{ref:F,className:`flex flex-wrap content-start items-center gap-[6px] overflow-hidden`,style:N?{maxHeight:`${N}px`}:void 0,children:K.map((e,t)=>g(i,{ref:e=>{I.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${E?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>q(e,t),children:g(a,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] text-white`,children:v(e,8)})},t))}),g(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{LeftArrowIcon as r}from"../../../common/icons/left-arrow.mjs";import i from"../../../../assets/icons/search.mjs";import a from"../../../../assets/icons/clear.mjs";import{useCallback as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{usePathname as u,useSearchParams as d}from"next/navigation";function f(e){if(!e||typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>e==null?``:String(e).trim()).filter(Boolean):[]}catch{return[]}}function p(p){let{placeholder:m,defaultPlaceholder:h,searchLabel:g,storageKey:_=`guest`,onSearch:v,mode:y=`renderer`}=p,b=m||(h??`请输入搜索内容`),x=g??`搜索`,S=y===`editor`,[C,w]=s(``),T=e(),E=u(),D=d(),O=`search_history_${_}`,k=o(e=>{if(S)return;let t=e.trim();if(t){try{let e=[t,...f(localStorage.getItem(O)).filter(e=>e!==t)].slice(0,20);localStorage.setItem(O,JSON.stringify(e))}catch(e){console.error(`Failed to save search history`,e)}if(v)v(t);else{let e=new URLSearchParams(D.toString());e.set(`q`,t);let n=E.includes(`/search-result`)?E:`/search-result`;T.push(`${n}?${e.toString()}`)}}},[O,S,v,E,T,D]),A=()=>{S||T.back()};return l(t,{className:`flex h-[66px] w-full items-center gap-[8px] px-[16px] py-[16px]${S?` pointer-events-none`:``}`,children:[c(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:c(r,{className:`h-[16px] w-[16px]`})}),l(t,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[l(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[c(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:c(i,{className:`h-[14px] w-[14px] text-white/60`})}),c(n,{className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white !caret-white placeholder:!text-white/90 focus-visible:!ring-0`,placeholder:b,value:C,maxLength:128,onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k(C))}}),C&&c(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:c(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),c(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white active:opacity-90`,onClick:()=>k(C),children:x})]})]})}export{p as SearchInputClient};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{LeftArrowIcon as r}from"../../../common/icons/left-arrow.mjs";import i from"../../../../assets/icons/search.mjs";import a from"../../../../assets/icons/clear.mjs";import{useCallback as o,useState as s}from"react";import{usePathname as c,useSearchParams as l}from"next/navigation";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(e){if(!e||typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>e==null?``:String(e).trim()).filter(Boolean):[]}catch{return[]}}function p(p){let{placeholder:m,defaultPlaceholder:h,searchLabel:g,storageKey:_=`guest`,onSearch:v,mode:y=`renderer`}=p,b=m||(h??`请输入搜索内容`),x=g??`搜索`,S=y===`editor`,[C,w]=s(``),T=e(),E=c(),D=l(),O=`search_history_${_}`,k=o(e=>{if(S)return;let t=e.trim();if(t){try{let e=[t,...f(localStorage.getItem(O)).filter(e=>e!==t)].slice(0,20);localStorage.setItem(O,JSON.stringify(e))}catch(e){console.error(`Failed to save search history`,e)}if(v)v(t);else{let e=new URLSearchParams(D.toString());e.set(`q`,t);let n=E.includes(`/search-result`)?E:`/search-result`;T.push(`${n}?${e.toString()}`)}}},[O,S,v,E,T,D]),A=()=>{S||T.back()};return d(t,{className:`flex h-[66px] w-full items-center gap-[8px] px-[16px] py-[16px]${S?` pointer-events-none`:``}`,children:[u(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:u(r,{className:`h-[16px] w-[16px]`})}),d(t,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[d(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[u(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:u(i,{className:`h-[14px] w-[14px] text-white/60`})}),u(n,{className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white !caret-white placeholder:!text-white/90 focus-visible:!ring-0`,placeholder:b,value:C,maxLength:128,onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k(C))}}),C&&u(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:u(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),u(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white active:opacity-90`,onClick:()=>k(C),children:x})]})]})}export{p as SearchInputClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{useMemo as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{usePathname as s}from"next/navigation";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},d={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function f(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function p(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function m(e,t){let n=f(t);if(e.configType===1){let t=f(p(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function h(e,t){return e.findIndex(e=>m(e,t))}function g(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function _(f){let{items:m=l,mode:_=`renderer`}=f,v=s(),y=i(()=>{if(_===`editor`)return 0;let e=h(m??[],v);return e>=0?e:0},[m,v,_]),b=i(()=>(m??[]).some(e=>g(e)&&e.label.trim()!==``),[m]);if(!m?.length)return null;function x(t,n){_===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let S=`size-full rounded-[6px] bg-white/20`;return a(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:a(n,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:d,children:m.map((e,i)=>{let s=y===i,l=s?e.activeIcon:e.icon,u=e.label,d=g(e)&&u.trim()!==``,f=p(e),m=b?s?`gap-[5px]`:`gap-[4px]`:``,h=s?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#BFBFBF]`;return o(c,{href:f,className:`flex flex-col items-center justify-center ${m}`,"aria-current":s?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>x(t,e),children:[a(n,{className:`relative size-5 shrink-0`,children:l?a(t,{src:l,alt:u,fill:!0,className:`object-contain`}):a(n,{className:s?`${S} bg-[#C043E8]`:S})}),b&&d?a(r,{"data-active":s,className:h,children:u}):null]},i)})})})}export{_ as TabBarClient};
2
+ "use client";import{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{useMemo as i}from"react";import{usePathname as a}from"next/navigation";import{jsx as o,jsxs as s}from"react/jsx-runtime";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},d={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function f(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function p(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function m(e,t){let n=f(t);if(e.configType===1){let t=f(p(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function h(e,t){return e.findIndex(e=>m(e,t))}function g(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function _(f){let{items:m=l,mode:_=`renderer`}=f,v=a(),y=i(()=>{if(_===`editor`)return 0;let e=h(m??[],v);return e>=0?e:0},[m,v,_]),b=i(()=>(m??[]).some(e=>g(e)&&e.label.trim()!==``),[m]);if(!m?.length)return null;function x(t,n){_===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let S=`size-full rounded-[6px] bg-white/20`;return o(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:o(n,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:d,children:m.map((e,i)=>{let a=y===i,l=a?e.activeIcon:e.icon,u=e.label,d=g(e)&&u.trim()!==``,f=p(e),m=b?a?`gap-[5px]`:`gap-[4px]`:``,h=a?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#BFBFBF]`;return s(c,{href:f,className:`flex flex-col items-center justify-center ${m}`,"aria-current":a?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>x(t,e),children:[o(n,{className:`relative size-5 shrink-0`,children:l?o(t,{src:l,alt:u,fill:!0,className:`object-contain`}):o(n,{className:a?`${S} bg-[#C043E8]`:S})}),b&&d?o(r,{"data-active":a,className:h,children:u}):null]},i)})})})}export{_ as TabBarClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../service/generated/client.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/refresh.mjs";import{useMemo as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{usePathname as d,useSearchParams as f}from"next/navigation";import{useShallow as p}from"zustand/react/shallow";function m(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function h(h){let{title:g,displayCount:_=6,showRefresh:v=!1,onItemClick:y,mode:b=`renderer`}=h,x=b===`editor`,S=n(),C=d(),w=f(),[T,E]=c(0),{userInfo:D}=e(p(e=>({userInfo:e.userInfo}))),O=D?.user_id||`guest`,{data:k}=a([`text-recommend-keyword-list`,O],()=>t({user_id:O}),{enabled:!x}),A=s(()=>(k?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[k]),j=_*2,M=s(()=>x?Array.from({length:j},(e,t)=>({label:`推荐搜索${t+1}`})):A,[x,A,j]),N=s(()=>m(M,j),[M,T,j]);if(!x&&A.length<2)return null;let P=e=>{e.stopPropagation(),E(e=>e+1)},F=e=>{if(y){y(e);return}let t=new URLSearchParams(w.toString());t.set(`q`,e);let n=C.includes(`/search-result`)?C:`/search-result`;S.push(`${n}?${t.toString()}`)};return u(r,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${x?` pointer-events-none`:``}`,children:[u(r,{className:`flex items-center justify-between w-full`,children:[l(i,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:g}),v&&u(r,{className:`flex items-center gap-1 cursor-pointer active:opacity-70 transition-opacity`,onClick:P,children:[l(i,{className:`text-[14px] text-text3 leading-[22px]`,children:`换一批`}),l(o,{className:`w-3 h-3 text-text3`})]})]}),l(r,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:N.map((e,t)=>l(r,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>F(e.label),children:l(i,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${T}-${t}`))})]})}export{h as TextRecommendClient};
2
+ "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../service/generated/client.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/refresh.mjs";import{useMemo as s,useState as c}from"react";import{usePathname as l,useSearchParams as u}from"next/navigation";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useShallow as p}from"zustand/react/shallow";function m(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function h(h){let{title:g,displayCount:_=6,showRefresh:v=!1,onItemClick:y,mode:b=`renderer`}=h,x=b===`editor`,S=n(),C=l(),w=u(),[T,E]=c(0),{userInfo:D}=e(p(e=>({userInfo:e.userInfo}))),O=D?.user_id||`guest`,{data:k}=a([`text-recommend-keyword-list`,O],()=>t({user_id:O}),{enabled:!x}),A=s(()=>(k?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[k]),j=_*2,M=s(()=>x?Array.from({length:j},(e,t)=>({label:`推荐搜索${t+1}`})):A,[x,A,j]),N=s(()=>m(M,j),[M,T,j]);if(!x&&A.length<2)return null;let P=e=>{e.stopPropagation(),E(e=>e+1)},F=e=>{if(y){y(e);return}let t=new URLSearchParams(w.toString());t.set(`q`,e);let n=C.includes(`/search-result`)?C:`/search-result`;S.push(`${n}?${t.toString()}`)};return f(r,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${x?` pointer-events-none`:``}`,children:[f(r,{className:`flex items-center justify-between w-full`,children:[d(i,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:g}),v&&f(r,{className:`flex items-center gap-1 cursor-pointer active:opacity-70 transition-opacity`,onClick:P,children:[d(i,{className:`text-[14px] text-text3 leading-[22px]`,children:`换一批`}),d(o,{className:`w-3 h-3 text-text3`})]})]}),d(r,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:N.map((e,t)=>d(r,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>F(e.label),children:d(i,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${T}-${t}`))})]})}export{h as TextRecommendClient};
@@ -1,9 +1,9 @@
1
1
 
2
2
  import { DefineMaterialOption } from "../../../utils/schema/material.mjs";
3
3
  import "../../../utils.mjs";
4
+ import z$1 from "zod";
4
5
  import { ComponentType, ReactNode } from "react";
5
6
  import * as react_jsx_runtime0 from "react/jsx-runtime";
6
- import z$1 from "zod";
7
7
 
8
8
  //#region components/biz/renderer/renderer.d.ts
9
9
  type NodeInspectorProps = Record<string, unknown>;
@@ -1,2 +1,2 @@
1
1
 
2
- function e(e){if(!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 t(e){return e<1e3?e.toString():e<1e4?`${(e/1e3).toFixed(1)}k`:e<1e5?`${(e/1e4).toFixed(1)}w`:`${Math.floor(e/1e4)}w`}function n(n,r=`view-duration`){let i={},a=n.update_status===`1`,o=n.type;return r===`view-duration`?(i.leftBottom={type:`viewCount`,value:t(n.static.browse_cnt)},o===1&&n.duration?i.rightBottom={type:`episodeCount`,value:e(n.duration)}:o===2&&(i.rightBottom={type:`episodeCount`,value:a?`${n.episode_cnt}集全`:`更新至${n.episode_cnt}集`})):r===`category-score`&&(i.leftBottom={type:`category`,value:o===1?`电影`:`剧集`},i.rightBottom={type:`score`,value:n.score}),{id:n.id,title:n.name,cover:{vertical:n.img_y,horizontal:n.img_x},corners:i,type:o}}function r(e,t=`view-duration`){return e.map(e=>n(e,t))}export{r as transformContentListToCardItems,n as transformContentToCardItem};
2
+ import{formatCompactCount as e}from"../../../../utils/common.mjs";function t(e){if(!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 n(n,r=`view-duration`){let i={},a=n.update_status===`1`,o=n.type;return r===`view-duration`?(i.leftBottom={type:`viewCount`,value:e(n.static.browse_cnt)},o===1&&n.duration?i.rightBottom={type:`episodeCount`,value:t(n.duration)}:o===2&&(i.rightBottom={type:`episodeCount`,value:a?`${n.episode_cnt}集全`:`更新至${n.episode_cnt}集`})):r===`category-score`&&(i.leftBottom={type:`category`,value:o===1?`电影`:`剧集`},i.rightBottom={type:`score`,value:n.score}),{id:n.id,title:n.name,cover:{vertical:n.img_y,horizontal:n.img_x},corners:i,type:o}}function r(e,t=`view-duration`){return e.map(e=>n(e,t))}export{r as transformContentListToCardItems,n as transformContentToCardItem};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{AlertDialog as e,AlertDialogAction as t,AlertDialogContent as n,AlertDialogDescription as r,AlertDialogFooter as i,AlertDialogHeader as a,AlertDialogTitle as o}from"../../ui/alert-dialog.mjs";import{secondToTime as s}from"../../../utils/common.mjs";import{useBlockedModalStore as c}from"../../../store/modules/blocked-modal-store.mjs";import{useRouter as l}from"../../../utils/use-compatible-router.mjs";import{useLoginModalStore as u}from"../../../store/modules/login-modal-store.mjs";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m(){let m=l(),h=p(`components.common.blockedDialog`),{isOpen:g,blockedRemark:_,blockedEndTime:v,close:y,setOpen:b}=c(),x=v>0?s(v):h(`unblockTimePermanent`),S=_||h(`remarkDefault`);return d(e,{open:g,onOpenChange:e=>{b(e)},children:f(n,{size:`sm`,children:[f(a,{children:[d(o,{className:`text-[16px]`,children:h(`title`)}),d(r,{className:`text-center text-[14px] leading-6 whitespace-pre-line`,children:h(`description`,{remark:S,unblockTime:x})})]}),f(i,{children:[d(t,{onClick:()=>{u.getState().isOpen&&u.getState().setOpen(!1),y(),m.push(`/feedback`)},children:h(`contactSupport`)}),d(t,{onClick:y,children:h(`gotIt`)})]})]})})}export{m as BlockedDialog};
2
+ "use client";import{secondToTime as e}from"../../../utils/common.mjs";import{useBlockedModalStore as t}from"../../../store/modules/blocked-modal-store.mjs";import{useRouter as n}from"../../../utils/use-compatible-router.mjs";import{AlertDialog as r,AlertDialogAction as i,AlertDialogContent as a,AlertDialogDescription as o,AlertDialogFooter as s,AlertDialogHeader as c,AlertDialogTitle as l}from"../../ui/alert-dialog.mjs";import{useLoginModalStore as u}from"../../../store/modules/login-modal-store.mjs";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m(){let m=n(),h=p(`components.common.blockedDialog`),{isOpen:g,blockedRemark:_,blockedEndTime:v,close:y,setOpen:b}=t(),x=v>0?e(v):h(`unblockTimePermanent`),S=_||h(`remarkDefault`);return d(r,{open:g,onOpenChange:e=>{b(e)},children:f(a,{size:`sm`,children:[f(c,{children:[d(l,{className:`text-[16px]`,children:h(`title`)}),d(o,{className:`text-center text-[14px] leading-6 whitespace-pre-line`,children:h(`description`,{remark:S,unblockTime:x})})]}),f(s,{children:[d(i,{onClick:()=>{u.getState().isOpen&&u.getState().setOpen(!1),y(),m.push(`/feedback`)},children:h(`contactSupport`)}),d(i,{onClick:y,children:h(`gotIt`)})]})]})})}export{m as BlockedDialog};