@funhub/platform 0.2.30 → 0.2.32

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 (143) hide show
  1. package/dist/biz.d.mts +4 -6
  2. package/dist/biz.mjs +1 -1
  3. package/dist/cli/init/create-client.mjs +1 -1
  4. package/dist/cli/init/shared/constants.mjs +1 -1
  5. package/dist/cli/init/shared/create-project.mjs +1 -1
  6. package/dist/cli/init/shared/prompts.mjs +1 -1
  7. package/dist/cli/init/shared/template.mjs +1 -1
  8. package/dist/cli.mjs +2 -2
  9. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
  10. package/dist/components/biz/basics/fullscreen-feed/runtime/video-slide.mjs +1 -1
  11. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  12. package/dist/components/biz/business/advertisement/ad-match.d.mts +7 -0
  13. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  14. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
  15. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +3 -0
  16. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +6 -0
  17. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  18. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  19. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  20. package/dist/components/biz/business/detail/shared/registry.d.mts +7 -2
  21. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  22. package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +1 -1
  23. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
  24. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  25. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  26. package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +10 -2
  27. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  28. package/dist/components/biz/business/detail/video-detail-recommend/index.d.mts +1 -1
  29. package/dist/components/biz/business/detail/video-detail-recommend/material.d.mts +7 -2
  30. package/dist/components/biz/business/detail/video-detail-recommend/schema.d.mts +7 -2
  31. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
  32. package/dist/components/biz/business/detail/video-detail-recommend/server.d.mts +1 -1
  33. package/dist/components/biz/business/detail/video-detail-recommend/server.mjs +1 -1
  34. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -1
  35. package/dist/components/biz/business/detail/video-detail-recommend/utils.mjs +1 -1
  36. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  37. package/dist/components/biz/business/home-recommend/home-recommend-grid/client.d.mts +1 -1
  38. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.d.mts +3 -1
  39. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.mjs +1 -1
  40. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  41. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  42. package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
  43. package/dist/components/biz/business/index.d.mts +3 -5
  44. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  45. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  46. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  47. package/dist/components/biz/business/marquee/client.mjs +1 -1
  48. package/dist/components/biz/business/profile/index.d.mts +3 -5
  49. package/dist/components/biz/business/profile/profile-header/client.d.mts +2 -4
  50. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  51. package/dist/components/biz/business/profile/profile-header/index.d.mts +2 -4
  52. package/dist/components/biz/business/profile/profile-header/material.d.mts +6 -48
  53. package/dist/components/biz/business/profile/profile-header/material.mjs +1 -1
  54. package/dist/components/biz/business/profile/profile-header/schema.d.mts +5 -15
  55. package/dist/components/biz/business/profile/profile-header/schema.mjs +1 -1
  56. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  57. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  58. package/dist/components/biz/business/profile/profile-main/client.d.mts +0 -2
  59. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  60. package/dist/components/biz/business/profile/profile-main/index.d.mts +2 -2
  61. package/dist/components/biz/business/profile/profile-main/material.d.mts +0 -3
  62. package/dist/components/biz/business/profile/profile-main/schema.d.mts +3 -9
  63. package/dist/components/biz/business/profile/profile-main/schema.mjs +1 -1
  64. package/dist/components/biz/business/profile/profile-main/shell.d.mts +0 -7
  65. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  66. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.d.mts +1 -5
  67. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  68. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -1
  69. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.d.mts +1 -5
  70. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  71. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +1 -5
  72. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  73. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.d.mts +0 -3
  74. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -1
  75. package/dist/components/biz/business/profile/profile-main/variants.d.mts +3 -28
  76. package/dist/components/biz/business/profile/profile-main/variants.mjs +1 -1
  77. package/dist/components/biz/business/search-history/client.mjs +1 -1
  78. package/dist/components/biz/business/search-input/client.mjs +1 -1
  79. package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
  80. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  81. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  82. package/dist/components/common/analytics-init/page-lifecycle-tracker.mjs +1 -1
  83. package/dist/components/common/background-preview-modal/background-preview-modal.mjs +1 -1
  84. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -1
  85. package/dist/components/common/popup-video/index.mjs +1 -1
  86. package/dist/components/common/series-episodes/index.mjs +1 -1
  87. package/dist/components/common/tab-bar/index.mjs +1 -1
  88. package/dist/components/common/top-nav-bar/client.mjs +1 -1
  89. package/dist/components/common/video-player/style.module.mjs +4 -0
  90. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
  91. package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
  92. package/dist/components/pages/collection-add/page.mjs +1 -1
  93. package/dist/components/pages/edit/page.mjs +1 -1
  94. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  95. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
  96. package/dist/components/pages/profile/layout.d.mts +0 -2
  97. package/dist/components/pages/profile/page.mjs +1 -1
  98. package/dist/components/pages/search/hot-recommend.mjs +1 -1
  99. package/dist/components/pages/search/hot-search.mjs +1 -1
  100. package/dist/components/pages/search/page-client.mjs +1 -1
  101. package/dist/components/pages/search/search-result/search-all.mjs +1 -1
  102. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  103. package/dist/components/pages/search/top-header.mjs +1 -1
  104. package/dist/components/pages/search-result/page-client.mjs +1 -1
  105. package/dist/components/pages/search-result/search-all.mjs +1 -1
  106. package/dist/components/pages/search-result/search-tab.mjs +1 -1
  107. package/dist/components/pages/search-result/search-user.mjs +1 -1
  108. package/dist/components/pages/search-result/top-header.mjs +1 -1
  109. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  110. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  111. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  112. package/dist/components/pages/video-list/video-list-recommend-item.mjs +1 -1
  113. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  114. package/dist/components/ui/badge.d.mts +1 -1
  115. package/dist/components/ui/button.d.mts +2 -2
  116. package/dist/components/ui/empty.d.mts +1 -1
  117. package/dist/components/ui/item.d.mts +1 -1
  118. package/dist/hooks/use-content-operate.mjs +1 -1
  119. package/dist/i18n/locales/en.mjs +1 -1
  120. package/dist/i18n/locales/zh-CN.mjs +1 -1
  121. package/dist/materials.d.mts +2 -2
  122. package/dist/materials.mjs +1 -1
  123. package/dist/service/advertisement.d.mts +4 -0
  124. package/dist/service/advertisement.mjs +1 -1
  125. package/dist/utils/common.mjs +1 -1
  126. package/dist/utils/http.mjs +1 -1
  127. package/dist/utils/tracking.d.mts +3 -11
  128. package/dist/utils/tracking.mjs +1 -1
  129. package/dist/utils/use-compatible-router.mjs +1 -1
  130. package/dist/utils.d.mts +2 -2
  131. package/dist/utils.mjs +1 -1
  132. package/package.json +1 -1
  133. package/theme.css +48 -1
  134. package/dist/components/biz/business/profile/profile-header/my-client.d.mts +0 -12
  135. package/dist/components/biz/business/profile/profile-header/my-client.mjs +0 -2
  136. package/dist/components/biz/business/profile/profile-header/my-profile-actions.mjs +0 -2
  137. package/dist/components/biz/business/profile/profile-header/my-profile-header.mjs +0 -2
  138. package/dist/components/biz/business/profile/profile-header/shared.mjs +0 -2
  139. package/dist/components/biz/business/profile/profile-header/visitor-client.d.mts +0 -12
  140. package/dist/components/biz/business/profile/profile-header/visitor-client.mjs +0 -2
  141. package/dist/components/biz/business/profile/profile-header/visitor-profile-actions.mjs +0 -2
  142. package/dist/components/biz/business/profile/profile-header/visitor-profile-header.mjs +0 -2
  143. package/dist/components/biz/business/profile/profile-main/tabs/editor-preview-waterfall.mjs +0 -2
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import t from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as n,pContentGetNewstVideoList as r,pContentGetPopularVideoList as i}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as a,pContentGetNewstVideoListKey as o,pContentGetPopularVideoListKey as s}from"../../../../service/generated/tanstack.mjs";import{Image as c}from"../../../ui/image.mjs";import{Box as l}from"../../../ui/box.mjs";import{Text as u}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as d,buildImageTextRecommendRemoteMap as f,getImageTextRecommendFixedIds as ee,resolveImageTextRecommendVideoId as te}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import{normalizeHomeRecommendSmartLayout as ne}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import re from"../../../../assets/images/frame.mjs";import ie from"../../../../assets/images/subscript.mjs";import{buildImageTextSmartListBody as m,resolveImageTextSmartListKind as ae}from"./shared/query.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as oe,useState as v}from"react";import{Fragment as se,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as ce}from"next-intl";import le from"next/link";const x=[];function S(e){return typeof e==`string`?e:e.src}function ue(e,n){if(!e||!e.trim())return S(n);if(e.startsWith(`http`)||e.startsWith(`//`)||e.startsWith(`data:`))return e;let r=t();return r?`${r}${e.startsWith(`/`)?e:`/${e}`}`:e}function C(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function w(e){return e==null?``:e.name||``}function T(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function E(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function D(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function de(e,t,n){return e?T(e,n)===2&&t?D(e,t):E(Number(e.duration??e.detail?.duration??0)):``}function fe(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function pe(t,n){if(!t)return``;let r=t,i=n?Number(r.static?.browse_count??0):Number(r.browse_count??0);return!Number.isFinite(i)||i<=0?``:e(i)}function me(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function O(e){let{title:t,items:T=x,commonPlayCount:E,commonEpisodes:D,layout:O,mode:k=`renderer`}=e,A=ce(`components.biz.business.imageTextRecommend`),j=k===`renderer`,M=k===`editor`,[N,P]=v({}),[F,I]=v([]),[L,R]=v(0),[z,B]=v(void 0),V=oe(null),H=_(()=>ne(O),[O]),U=H?.enabled===!0,W=_(()=>ae(H?.sortRule),[H?.sortRule]),G=T?.length??0,K=_(()=>ee(T,U),[U,T]),q=_(()=>K.slice(0,d),[K]),J=_(()=>{if(H?.enabled)return m(H,{targetCount:G})},[H,G]),{data:Y}=p(_(()=>!J||!U?[`image-text-recommend`,`smart-idle`]:W===`newest`?o(J):s(J),[J,U,W]),async()=>!J||!U?{data:{videos:[],cursor:``}}:W===`newest`?r(J):i(J),{enabled:j&&!M&&U&&T.length>0&&!!J,staleTime:1/0}),{data:X}=p(a({ids:q}),()=>n({ids:q}),{enabled:j&&!M&&!U&&q.length>0,staleTime:1/0}),Z=_(()=>U&&G>d?Math.ceil(G/d):K.length>0?Math.ceil(K.length/d):0,[U,G,K.length]),Q=h((e,t)=>A(t?`updatedTo`:`allEpisodes`,{count:e}),[A]),he=h(async(e,t)=>{if(e.length===0)return;let r=f((await n({ids:e})).data?.videos??[]);P(e=>t?{...e,...r}:r)},[]);g(()=>{if(M)return;if(U){let e=Y?.data?.videos??[];G>d?(I(e.slice(0,d)),B(Y?.data?.cursor),R(e.length>0?1:0)):(I(e.slice(0,G)),R(0)),P({});return}if(q.length===0){P({}),I([]),R(0),B(void 0);return}let e=X?.data?.videos??[];P(f(e)),I([]),B(void 0),R(e.length>0?1:0)},[M,U,Y,X,q,G]),g(()=>{if(M||Z<1||L<1||L>=Z)return;let e=V.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let n=L;if(U&&H){let e=m(H,{targetCount:G,cursor:z,pageSize:d});(W===`newest`?r:i)(e).then(e=>{let t=e.data?.videos??[];I(e=>[...e,...t.slice(0,d)]),B(e.data?.cursor),R(n+1)}).catch(()=>{})}else{let e=n*d,t=K.slice(e,e+d);t.length>0&&(he(t,!0),R(n+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[M,U,H,W,K,L,Z,G,z,he]),g(()=>{if(M||!U||!H||G<=0)return;let e=H,t,n=!1;function a(){t=window.setTimeout(()=>{let t=m(e,{targetCount:G,pageSize:Math.max(20,G*10)});(W===`newest`?r:i)(t).then(e=>{n||I((e.data?.videos??[]).slice(0,G))}).catch(()=>{n||I([])}).finally(()=>{n||a()})},me())}return a(),()=>{n=!0,t!==void 0&&window.clearTimeout(t)}},[M,U,H,W,G]);let $=_(()=>!T||T.length===0?x:M?T:U&&G>d?T.slice(0,F.length):T,[T,M,U,G,F.length]),ge=_(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=U?F[t]:n?N[n]:void 0,i=U?r?w(r):(e?.title??``).trim():(e?.title??``).trim()||(r?w(r):``),a=(e?.cover??``).trim(),o=U?C(r)||a:a||(e?.useVideoPoster?C(r):``),s=U&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=de(r,Q,U),l=pe(r,U);return{...e,contentId:n||(r?te(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):x,[Q,U,$,N,F]);if(!T||T.length===0)return null;let _e=L>=1&&L<Z?U?F.length-2:L*d-2:-1;return b(l,{className:M?`bg-bg1 px-3 py-3 pointer-events-none`:`bg-bg1 px-3 py-3`,children:[t&&y(l,{className:`mb-3 flex items-center justify-between`,children:y(u,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:t})}),y(l,{className:`flex overflow-x-auto pb-2 scrollbar-hide space-x-2`,children:ge.map((e,t)=>{let n=E||(e.showPlayCount??!1),r=(e.playCountText??``).trim(),i=r!==``,a=D||(e.showEpisodes??!1),o=(e.episodeOrDurationText??``).trim(),s=a&&o!==``,d=k===`renderer`?fe(e.contentId??``,e.title??``):``,f=b(se,{children:[b(l,{className:`relative rounded-lg overflow-hidden bg-bg2 w-[116px] h-[134px]`,children:[M||e.cover?y(c,{src:ue(e.cover,re),alt:e.title??``,fill:!0,className:`object-cover`}):y(l,{className:`w-full h-full flex items-center justify-center`,children:y(u,{className:`text-text3 text-xs`,children:A(`noCover`)})}),!U&&(e.badge??``).trim()?y(l,{className:`absolute top-0 right-0 w-8 h-8`,children:y(c,{src:(e.badge??``).trim()||S(ie),alt:``,fill:!0,sizes:`32px`,className:`object-contain object-right-top`,unoptimized:!0})}):null,b(l,{className:`absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent pb-1 pt-3 px-1 flex justify-between items-center gap-1`,children:[y(l,{className:`flex items-center min-w-0 shrink`,children:n&&i?b(l,{className:`flex items-center gap-1 rounded bg-overlay px-1 py-0`,children:[y(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`10`,viewBox:`0 0 12 10`,fill:`none`,className:`shrink-0`,"aria-hidden":!0,children:y(`path`,{d:`M7.56 5.18437L5.013 6.56737C4.893 6.63337 4.761 6.66937 4.638 6.66937C4.269 6.66937 4.002 6.38737 4.002 5.99737V3.28237C4.002 2.89237 4.269 2.61037 4.638 2.61037C4.764 2.61037 4.893 2.64637 5.013 2.70937L7.572 4.09237C7.803 4.21837 7.938 4.41637 7.938 4.63237C7.938 4.85137 7.8 5.05537 7.56 5.18437ZM9.807 9.27637L2.133 8.52937C0.954 8.52937 0 7.57537 0 6.39637V2.79937C0 1.62037 0.954 0.666368 2.133 0.666368L9.81 0.000367165C10.989 0.000367165 11.943 0.954367 11.943 2.13337V7.14337C11.9422 7.70935 11.7168 8.25188 11.3163 8.65181C10.9158 9.05174 10.373 9.27637 9.807 9.27637ZM10.875 2.13337C10.875 1.99351 10.8475 1.85502 10.7939 1.72581C10.7404 1.5966 10.662 1.47919 10.5631 1.3803C10.4642 1.2814 10.3468 1.20296 10.2176 1.14944C10.0883 1.09591 9.94986 1.06837 9.81 1.06837L2.133 1.73437C1.99314 1.73437 1.85465 1.76191 1.72544 1.81544C1.59623 1.86896 1.47883 1.9474 1.37993 2.0463C1.28104 2.14519 1.20259 2.2626 1.14907 2.39181C1.09555 2.52102 1.068 2.65951 1.068 2.79937V6.39637C1.068 6.67882 1.1802 6.94971 1.37993 7.14944C1.57966 7.34916 1.85054 7.46137 2.133 7.46137L9.807 8.20837C9.94686 8.20837 10.0853 8.18082 10.2146 8.1273C10.3438 8.07378 10.4612 7.99533 10.5601 7.89644C10.659 7.79754 10.7374 7.68014 10.7909 7.55093C10.8445 7.42171 10.872 7.28323 10.872 7.14337V2.13337H10.875Z`,fill:`white`})}),y(u,{className:`text-white text-[12px] leading-[20px]`,children:r})]}):null}),y(l,{className:`flex items-center shrink-0`,children:s?y(u,{className:`text-white text-[12px] leading-[20px]`,children:o}):null})]})]}),y(l,{className:`mt-2 py-2`,children:y(u,{className:`text-[16px] text-text1 font-bold leading-[24px] line-clamp-1`,children:e.title})})]});return y(l,{ref:t===_e?V:void 0,className:`flex-shrink-0 w-[116px]`,children:d?y(le,{href:d,className:`block`,children:f}):f},t)})})]})}export{O as ImageTextRecommendClient};
2
+ "use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import t from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as n,pContentGetNewstVideoList as r,pContentGetPopularVideoList as i}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as a,pContentGetNewstVideoListKey as o,pContentGetPopularVideoListKey as s}from"../../../../service/generated/tanstack.mjs";import{Image as c}from"../../../ui/image.mjs";import{Box as l}from"../../../ui/box.mjs";import{Text as u}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as d,buildImageTextRecommendRemoteMap as f,getImageTextRecommendFixedIds as ee,resolveImageTextRecommendVideoId as te}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import{normalizeHomeRecommendSmartLayout as ne}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import re from"../../../../assets/images/frame.mjs";import ie from"../../../../assets/images/subscript.mjs";import{buildImageTextSmartListBody as m,resolveImageTextSmartListKind as ae}from"./shared/query.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as oe,useState as v}from"react";import{Fragment as se,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as ce}from"next-intl";import le from"next/link";const x=[];function S(e){return typeof e==`string`?e:e.src}function ue(e,n){if(!e||!e.trim())return S(n);if(e.startsWith(`http`)||e.startsWith(`//`)||e.startsWith(`data:`))return e;let r=t();return r?`${r}${e.startsWith(`/`)?e:`/${e}`}`:e}function C(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function w(e){return e==null?``:e.name||``}function T(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function E(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function D(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function de(e,t,n){return e?T(e,n)===2&&t?D(e,t):E(Number(e.duration??e.detail?.duration??0)):``}function fe(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function pe(t,n){if(!t)return``;let r=t,i=n?Number(r.static?.browse_count??0):Number(r.browse_count??0);return!Number.isFinite(i)||i<=0?``:e(i)}function me(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function O(e){let{title:t,items:T=x,commonPlayCount:E,commonEpisodes:D,layout:O,mode:k=`renderer`}=e,A=ce(`components.biz.business.imageTextRecommend`),j=k===`renderer`,M=k===`editor`,[N,P]=v({}),[F,I]=v([]),[L,R]=v(0),[z,B]=v(void 0),V=oe(null),H=_(()=>ne(O),[O]),U=H?.enabled===!0,W=_(()=>ae(H?.sortRule),[H?.sortRule]),G=T?.length??0,K=_(()=>ee(T,U),[U,T]),q=_(()=>K.slice(0,d),[K]),J=_(()=>{if(H?.enabled)return m(H,{targetCount:G})},[H,G]),{data:Y}=p(_(()=>!J||!U?[`image-text-recommend`,`smart-idle`]:W===`newest`?o(J):s(J),[J,U,W]),async()=>!J||!U?{data:{videos:[],cursor:``}}:W===`newest`?r(J):i(J),{enabled:j&&!M&&U&&T.length>0&&!!J,staleTime:1/0}),{data:X}=p(a({ids:q}),()=>n({ids:q}),{enabled:j&&!M&&!U&&q.length>0,staleTime:1/0}),Z=_(()=>U&&G>d?Math.ceil(G/d):K.length>0?Math.ceil(K.length/d):0,[U,G,K.length]),Q=h((e,t)=>A(t?`updatedTo`:`allEpisodes`,{count:e}),[A]),he=h(async(e,t)=>{if(e.length===0)return;let r=f((await n({ids:e})).data?.videos??[]);P(e=>t?{...e,...r}:r)},[]);g(()=>{if(M)return;if(U){let e=Y?.data?.videos??[];G>d?(I(e.slice(0,d)),B(Y?.data?.cursor),R(e.length>0?1:0)):(I(e.slice(0,G)),R(0)),P({});return}if(q.length===0){P({}),I([]),R(0),B(void 0);return}let e=X?.data?.videos??[];P(f(e)),I([]),B(void 0),R(e.length>0?1:0)},[M,U,Y,X,q,G]),g(()=>{if(M||Z<1||L<1||L>=Z)return;let e=V.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let n=L;if(U&&H){let e=m(H,{targetCount:G,cursor:z,pageSize:d});(W===`newest`?r:i)(e).then(e=>{let t=e.data?.videos??[];I(e=>[...e,...t.slice(0,d)]),B(e.data?.cursor),R(n+1)}).catch(()=>{})}else{let e=n*d,t=K.slice(e,e+d);t.length>0&&(he(t,!0),R(n+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[M,U,H,W,K,L,Z,G,z,he]),g(()=>{if(M||!U||!H||G<=0)return;let e=H,t,n=!1;function a(){t=window.setTimeout(()=>{let t=m(e,{targetCount:G,pageSize:Math.max(20,G*10)});(W===`newest`?r:i)(t).then(e=>{n||I((e.data?.videos??[]).slice(0,G))}).catch(()=>{n||I([])}).finally(()=>{n||a()})},me())}return a(),()=>{n=!0,t!==void 0&&window.clearTimeout(t)}},[M,U,H,W,G]);let $=_(()=>!T||T.length===0?x:M?T:U&&G>d?T.slice(0,F.length):T,[T,M,U,G,F.length]),ge=_(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=U?F[t]:n?N[n]:void 0,i=U?r?w(r):(e?.title??``).trim():(e?.title??``).trim()||(r?w(r):``),a=(e?.cover??``).trim(),o=U?C(r)||a:a||(e?.useVideoPoster?C(r):``),s=U&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=de(r,Q,U),l=pe(r,U);return{...e,contentId:n||(r?te(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):x,[Q,U,$,N,F]);if(!T||T.length===0)return null;let _e=L>=1&&L<Z?U?F.length-2:L*d-2:-1;return b(l,{className:M?`bg-bg1 no-vw-x-16 py-3 pointer-events-none`:`bg-bg1 no-vw-x-16 py-3`,children:[t&&y(l,{className:`mb-3 flex items-center justify-between`,children:y(u,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:t})}),y(l,{className:`flex overflow-x-auto pb-2 scrollbar-hide space-x-2`,children:ge.map((e,t)=>{let n=E||(e.showPlayCount??!1),r=(e.playCountText??``).trim(),i=r!==``,a=D||(e.showEpisodes??!1),o=(e.episodeOrDurationText??``).trim(),s=a&&o!==``,d=k===`renderer`?fe(e.contentId??``,e.title??``):``,f=b(se,{children:[b(l,{className:`relative rounded-lg overflow-hidden bg-bg2 w-[116px] h-[134px]`,children:[M||e.cover?y(c,{src:ue(e.cover,re),alt:e.title??``,fill:!0,className:`object-cover`}):y(l,{className:`w-full h-full flex items-center justify-center`,children:y(u,{className:`text-text3 text-xs`,children:A(`noCover`)})}),!U&&(e.badge??``).trim()?y(l,{className:`absolute top-0 right-0 w-8 h-8`,children:y(c,{src:(e.badge??``).trim()||S(ie),alt:``,fill:!0,sizes:`32px`,className:`object-contain object-right-top`,unoptimized:!0})}):null,b(l,{className:`absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent pb-1 pt-3 px-1 flex justify-between items-center gap-1`,children:[y(l,{className:`flex items-center min-w-0 shrink`,children:n&&i?b(l,{className:`flex items-center gap-1 rounded bg-overlay px-1 py-0`,children:[y(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`10`,viewBox:`0 0 12 10`,fill:`none`,className:`shrink-0`,"aria-hidden":!0,children:y(`path`,{d:`M7.56 5.18437L5.013 6.56737C4.893 6.63337 4.761 6.66937 4.638 6.66937C4.269 6.66937 4.002 6.38737 4.002 5.99737V3.28237C4.002 2.89237 4.269 2.61037 4.638 2.61037C4.764 2.61037 4.893 2.64637 5.013 2.70937L7.572 4.09237C7.803 4.21837 7.938 4.41637 7.938 4.63237C7.938 4.85137 7.8 5.05537 7.56 5.18437ZM9.807 9.27637L2.133 8.52937C0.954 8.52937 0 7.57537 0 6.39637V2.79937C0 1.62037 0.954 0.666368 2.133 0.666368L9.81 0.000367165C10.989 0.000367165 11.943 0.954367 11.943 2.13337V7.14337C11.9422 7.70935 11.7168 8.25188 11.3163 8.65181C10.9158 9.05174 10.373 9.27637 9.807 9.27637ZM10.875 2.13337C10.875 1.99351 10.8475 1.85502 10.7939 1.72581C10.7404 1.5966 10.662 1.47919 10.5631 1.3803C10.4642 1.2814 10.3468 1.20296 10.2176 1.14944C10.0883 1.09591 9.94986 1.06837 9.81 1.06837L2.133 1.73437C1.99314 1.73437 1.85465 1.76191 1.72544 1.81544C1.59623 1.86896 1.47883 1.9474 1.37993 2.0463C1.28104 2.14519 1.20259 2.2626 1.14907 2.39181C1.09555 2.52102 1.068 2.65951 1.068 2.79937V6.39637C1.068 6.67882 1.1802 6.94971 1.37993 7.14944C1.57966 7.34916 1.85054 7.46137 2.133 7.46137L9.807 8.20837C9.94686 8.20837 10.0853 8.18082 10.2146 8.1273C10.3438 8.07378 10.4612 7.99533 10.5601 7.89644C10.659 7.79754 10.7374 7.68014 10.7909 7.55093C10.8445 7.42171 10.872 7.28323 10.872 7.14337V2.13337H10.875Z`,fill:`white`})}),y(u,{className:`text-white text-[12px] leading-[20px]`,children:r})]}):null}),y(l,{className:`flex items-center shrink-0`,children:s?y(u,{className:`text-white text-[12px] leading-[20px]`,children:o}):null})]})]}),y(l,{className:`mt-2 py-2`,children:y(u,{className:`text-[16px] text-text1 font-bold leading-[24px] line-clamp-1`,children:e.title})})]});return y(l,{ref:t===_e?V:void 0,className:`flex-shrink-0 w-[116px]`,children:d?y(le,{href:d,className:`block`,children:f}):f},t)})})]})}export{O as ImageTextRecommendClient};
@@ -97,15 +97,12 @@ import { BasicPostCardClient } from "./post-card/variants/basic-post-card/runtim
97
97
  import { schema as schema$13 } from "./post-card/variants/basic-post-card/schema/index.mjs";
98
98
  import "./post-card/index.mjs";
99
99
  import { ProfileHeaderInspectorProps, UserProfileHeaderAuthConfig, UserProfileHeaderClientProps, profileHeaderInspectorDefaultProps, profileHeaderInspectorPropsSchema } from "./profile/profile-header/schema.mjs";
100
- import { UserProfileHeaderClient } from "./profile/profile-header/client.mjs";
101
- import { MyProfileHeaderClient } from "./profile/profile-header/my-client.mjs";
102
- import { VisitorProfileHeaderClient } from "./profile/profile-header/visitor-client.mjs";
103
- import { myProfileHeaderMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, visitorProfileHeaderMaterial } from "./profile/profile-header/material.mjs";
100
+ import { UserProfileHeaderClient, defaultBackground } from "./profile/profile-header/client.mjs";
101
+ import { profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground } from "./profile/profile-header/material.mjs";
104
102
  import { ProfileMainInspectorProps, UserProfileMainProps, profileMainInspectorDefaultProps, profileMainInspectorPropsSchema } from "./profile/profile-main/schema.mjs";
105
103
  import { UserProfileMainClient } from "./profile/profile-main/client.mjs";
106
104
  import { UserProfileMain } from "./profile/profile-main/server.mjs";
107
105
  import { profileMainMaterial } from "./profile/profile-main/material.mjs";
108
- import { ProfileMainBaseTabKey, ProfileMainContentType, ProfileMainSecondaryTabKey, ProfileMainTabKey, getProfileMainSecondaryTabOptions, getProfileMainTabOptions, profileMainBaseTabOptions, profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainContentTypeOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainPublishTabOption, profileMainSecondaryTabDisplayOrder, profileMainTabOptions } from "./profile/profile-main/variants.mjs";
109
106
  import { UserProfileMainRenderMode, UserProfileMainShell, UserProfileMainShellProps } from "./profile/profile-main/shell.mjs";
110
107
  import { CollectTab, CollectTabProps } from "./profile/profile-main/tabs/collect-tab/client.mjs";
111
108
  import { CollectTabServer } from "./profile/profile-main/tabs/collect-tab/server.mjs";
@@ -115,6 +112,7 @@ import { LikeDetailItem, LikeTab, LikeTabProps } from "./profile/profile-main/ta
115
112
  import { LikeTabServer } from "./profile/profile-main/tabs/like-tab/server.mjs";
116
113
  import { PublishTab, PublishTabProps, PublishTabUserInfo } from "./profile/profile-main/tabs/publish-tab/client.mjs";
117
114
  import { PublishTabServer } from "./profile/profile-main/tabs/publish-tab/server.mjs";
115
+ import { profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainTabOptions } from "./profile/profile-main/variants.mjs";
118
116
  import "./profile/index.mjs";
119
117
  import { defaultProps as defaultProps$12 } from "./recommended-users/variants/basic-recommended-users/defaults/default-props.mjs";
120
118
  import { BasicRecommendedUsersClient } from "./recommended-users/variants/basic-recommended-users/runtime/client.mjs";
@@ -1,2 +1,2 @@
1
1
 
2
- 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{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/link.mjs";import a from"../../../../assets/icons/view.mjs";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";function l(t){let n=Number(t||0);return Number.isNaN(n)||n<=0?``:e(n)}function u({data:e}){return e?s(n,{className:`flex flex-col gap-[12px]`,children:(Array.isArray(e)?e:[e]).map((e,u)=>{if(!e||typeof e!=`object`)return null;let{id:d,title:f,desc:p,cover:m,tagImageUrl:h,showEpisode:g,episodeText:_,showPlayCount:v,play_count:y}=e,b=f||``,x=d?`/video/${d}/${b?encodeURIComponent(b):``}`:`#`,S=_==null?``:String(_).trim(),C=(g??!0)&&S!==``,w=v??!0,T=l(y)||`0`;return s(n,{children:s(i,{href:x,className:`block`,children:c(n,{className:`relative h-[204px] w-full overflow-hidden rounded-[8px] bg-[rgba(6,3,20,0.5)]`,children:[c(n,{className:`relative h-[134px] w-full overflow-hidden rounded-t-[8px]`,children:[m&&s(t,{src:m,alt:b||`封面`,fill:!0,objectFit:`cover`}),h&&String(h).trim()&&s(n,{className:`absolute left-[16px] top-[12px]`,children:s(n,{className:`inline-flex items-center justify-center rounded-[4px] px-[4px] py-[4px]`,style:{background:`linear-gradient(90deg, #CA3FE9 0%, #9756E3 100%)`},children:s(t,{src:String(h),alt:``,width:75,height:14,className:`h-[14px] w-auto object-contain`})})}),c(n,{className:`absolute bottom-[12px] left-[16px] right-[16px] flex items-center justify-between`,children:[s(n,{className:`flex items-center gap-[4px]`,children:w&&c(o,{children:[s(a,{className:`size-[22px] text-white opacity-80`}),s(r,{className:`text-[14px] leading-[20px] text-white`,children:T})]})}),C&&s(r,{className:`text-[14px] leading-[20px] text-white`,children:S})]})]}),s(n,{className:`px-[16px] pt-[12px]`,children:c(n,{className:`flex flex-col gap-[2px]`,children:[s(r,{className:`line-clamp-1 text-[16px] font-medium leading-[22px] text-white`,children:b}),p&&s(r,{className:`line-clamp-1 text-[14px] leading-[20px] text-white/50`,children:p})]})})]})})},d||b||`large-grid-item-${u}`)})}):null}export{u as LargeGridItemClient};
2
+ import{formatCompactCount as e}from"../../../../utils/common.mjs";import{trackRecommendListClick as t}from"../../../../utils/tracking.mjs";import{Image as n}from"../../../ui/image.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import a from"../../../ui/link.mjs";import{normalizeRecommendBadgeUrl as o}from"../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import s from"../../../../assets/icons/view.mjs";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";function d(t){let n=Number(t||0);return Number.isNaN(n)||n<=0?``:e(n)}function f(e){let t=Number(e);return!Number.isFinite(t)||t<=0?``:(Math.min(Math.max(t,0),100)/10).toFixed(1)}function p({data:e}){return e?l(r,{className:`flex flex-col gap-[12px]`,children:(Array.isArray(e)?e:[e]).map((e,p)=>{if(!e||typeof e!=`object`)return null;let{id:m,title:h,desc:g,cover:_,tagImageUrl:v,showEpisode:y,episodeText:b,showPlayCount:x,play_count:S,score:C}=e,w=h||``,T=m?`/video/${m}/${w?encodeURIComponent(w):``}`:`#`,E=b==null?``:String(b).trim(),D=(y??!0)&&E!==``,O=x??!0,k=o(v),A=d(S)||`0`,j=f(C);return l(r,{children:l(a,{href:T,className:`block`,onClick:()=>t({page_key:`home`,page_name:`首页`,recommend_id:m,recommend_trace_info:w}),children:u(r,{className:`relative h-[204px] w-full overflow-hidden rounded-[8px] bg-[rgba(67,60,97,.5)]`,children:[u(r,{className:`relative h-[134px] w-full overflow-hidden rounded-t-[8px]`,children:[_&&l(n,{src:_,alt:w||`封面`,fill:!0,objectFit:`cover`}),k&&l(r,{className:`absolute left-[16px] top-[12px] z-10 flex min-w-0 items-center`,children:l(n,{src:k,alt:`角标`,width:96,height:18,className:`h-[18px] w-auto max-w-[96px] rounded-[4px] object-contain`})}),j&&l(i,{as:`span`,className:`absolute right-[16px] top-[8px] z-10 shrink-0 text-[14px] font-semibold leading-[22px] text-[#FFC24B]`,children:j}),u(r,{className:`absolute bottom-[12px] left-[16px] right-[16px] flex items-center justify-between`,children:[l(r,{className:`flex items-center gap-[4px]`,children:O&&u(c,{children:[l(s,{className:`size-[22px] text-white opacity-80`}),l(i,{className:`text-[14px] leading-[20px] text-white`,children:A})]})}),D&&l(i,{className:`text-[14px] leading-[20px] text-white`,children:E})]})]}),l(r,{className:`pt-[12px] no-vw-x-16`,children:u(r,{className:`flex flex-col gap-[2px]`,children:[l(i,{className:`line-clamp-1 text-[16px] font-medium leading-[22px] text-[--color-text-secondary]`,children:w}),g&&l(i,{className:`line-clamp-1 text-[14px] leading-[20px] text-white/50`,children:g})]})})]})})},m||w||`large-grid-item-${p}`)})}):null}export{p as LargeGridItemClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/loading.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{isFeedAdItem as l}from"../advertisement/feed-ad/index.mjs";import{LargeGridItemClient as u}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as d}from"./schema.mjs";import{useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";const v=[],y=d.data??[];function b(e){return e==null}function x(e,t){return b(e)?t:e}function S(e){return typeof e==`string`?e.trim():``}function C(e){return S(e)}function w(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function T(e){let t=e,n=S(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(w(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function E(e,t){return t?{...e,...t,id:x(t.id,e.id),cover:x(t.cover,e.cover),title:x(t.title,e.title),desc:x(t.desc,e.desc),play_count:x(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:x(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:x(t.tagImageUrl,e.tagImageUrl)}:e}function D(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:x(t.title,e.title),moreUrl:x(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?E(n,t.items):t.items}}function O({mode:d=`renderer`,data:b=v}){let x=d===`editor`,E=b??v,O=Array.isArray(E)&&E.length>0,k=p(()=>O?[D(y[0],E[0])]:y,[O,E]),[A,j]=h(k),M=m(``),N=m(null),{isLoading:P,show:F,hide:I,cancel:L}=s(500);f(()=>{j(k)},[k]);let R=o({enabled:!x,containerRef:N,itemRef:N,deps:[A.length]}),z=p(()=>{if(x||!O)return``;let e=k.map(e=>C(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[O,x,k]);if(f(()=>{if(x||!e()||!z||M.current===z)return;M.current=z;let n=!1;async function r(){try{F();let e=await t({ids:z.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=C(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;j(e=>e.map(e=>{let t=e.items;if(!t||l(t))return e;let n=C(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=w(r.play_count)??w(r.browse_count)??w(r.view_count),o=T(r),s=S(r.name),c=S(r.description||r.content_description),u=t.useContentCover?S(r.img_x||r.img_y):``;return{...e,items:{...t,title:s||t.title,desc:c||t.desc,...u?{cover:u}:{},play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||I()}}return r(),()=>{n=!0,L()}},[L,z,I,x,F]),!A||A.length===0)return null;let B=A[0],V=B?.title,H=B?.moreUrl,U=R>0?R/2:160,W=!x&&P;return _(n,{className:x?`p-3 pointer-events-none`:`p-3`,children:[_(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[V&&g(r,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:V}),H&&_(a,{href:H,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,g(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),_(n,{className:`relative`,children:[A.map((e,t)=>{let{items:r}=e;return r?g(n,{ref:t===0?N:void 0,className:t>0?`mt-3`:``,children:g(u,{data:r})},`large-feature-grid-items-${t}`):null}),W&&g(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),W&&g(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:U},"aria-hidden":!0,children:g(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{O as LargeFeatureGridClient};
2
+ "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{trackAppPageView as n}from"../../../../utils/tracking.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import a from"../../../ui/loading.mjs";import o from"../../../ui/link.mjs";import{useSingleFirstRowHeight as s}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as c}from"../../../../hooks/use-min-duration-loading.mjs";import l from"../../../../assets/icons/common/right_arrow.mjs";import{isFeedAdItem as u}from"../advertisement/feed-ad/index.mjs";import{normalizeRecommendBadgeUrl as d}from"../../../common/list/waterfall-recommend/recommend-badge-style.mjs";import{LargeGridItemClient as f}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as p}from"./schema.mjs";import{useEffect as m,useMemo as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";const b=[],x=p.data??[];function S(e){return e==null}function C(e,t){return S(e)?t:e}function w(e){return typeof e==`string`?e.trim():``}function T(e){return w(e)}function E(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function D(e){let t=e,n=w(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(E(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function O(e,t){return t?{...e,...t,id:C(t.id,e.id),cover:C(t.cover,e.cover),title:C(t.title,e.title),desc:C(t.desc,e.desc),play_count:C(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:C(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,score:C(t.score,e.score),useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:C(t.tagImageUrl,e.tagImageUrl)}:e}function k(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:C(t.title,e.title),moreUrl:C(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?O(n,t.items):t.items}}function A({mode:p=`renderer`,data:S=b}){let C=p===`editor`,O=S??b,A=Array.isArray(O)&&O.length>0,j=h(()=>A?[k(x[0],O[0])]:x,[A,O]),[M,N]=_(j),P=g(``),F=g(null),I=g(null),L=g(!1),{isLoading:R,show:z,hide:B,cancel:V}=c(500);m(()=>{N(j)},[j]);let H=s({enabled:!C,containerRef:F,itemRef:F,deps:[M.length]}),U=h(()=>{if(C||!A)return``;let e=j.map(e=>T(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[A,C,j]);if(m(()=>{if(C||!e()||!U||P.current===U)return;P.current=U;let n=!1;async function r(){try{z();let e=await t({ids:U.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=T(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;N(e=>e.map(e=>{let t=e.items;if(!t||u(t))return e;let n=T(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=r,o=E(a.play_count)??E(r.browse_count)??E(r.view_count),s=D(r),c=w(r.name),l=w(r.description||r.content_description),f=t.useContentCover?w(r.img_x||r.img_y):``,p=d(a.badge_url),m=r.score==null?``:String(r.score).trim();return{...e,items:{...t,title:c||t.title,desc:l||t.desc,...f?{cover:f}:{},play_count:o??t.play_count,episodeText:s||t.episodeText,score:m||t.score,tagImageUrl:p||t.tagImageUrl}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||B()}}return r(),()=>{n=!0,V()}},[V,U,B,C,z]),m(()=>{if(C)return;let e=I.current;if(!e)return;let t=new IntersectionObserver(e=>{if(e[0]?.isIntersecting&&!L.current){L.current=!0;let e=M[0]?.title||``;n({page_key:`home`,page_name:`首页`,current_page_key:e,current_page_name:e}),t.disconnect()}},{threshold:.5});return t.observe(e),()=>{t.disconnect()}},[C,M]),!M||M.length===0)return null;let W=M[0],G=W?.title,K=W?.moreUrl,q=H>0?H/2:160,J=!C&&R;return y(r,{ref:I,className:`py-4 no-vw-x-16`,children:[y(r,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[G&&v(i,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:G}),K&&y(o,{href:K,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,v(l,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),y(r,{className:`relative`,children:[M.map((e,t)=>{let{items:n}=e;return n?v(r,{ref:t===0?F:void 0,className:t>0?`mt-3`:``,children:v(f,{data:n})},`large-feature-grid-items-${t}`):null}),J&&v(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),J&&v(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:q},"aria-hidden":!0,children:v(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{A as LargeFeatureGridClient};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),is_ad:e.boolean(!1,{fieldType:`switch`,label:`是否广告`,required:!1}),ad:e.object({ad_code:e.string(void 0,{label:`广告业务编码`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),ad_advertise_type:e.number(void 0,{label:`广告类型`,required:!1}),ad_advertise_desc:e.string(void 0,{label:`广告文案描述`,required:!1}),ad_ext_data:e.string(void 0,{label:`广告扩展信息`,required:!1})},{label:`广告对象`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),useContentCover:e.boolean(!0,{fieldType:`switch`,label:`沿用内容海报`,required:!1}),title:e.string(void 0,{label:`内容标题`}),desc:e.string(void 0,{label:`内容简介`,required:!1}),tagImageUrl:e.string(void 0,{label:`角标图`,required:!1})})}),{label:`大图推荐数据`,required:!1,defaultValue:[{title:`推荐位名称`,moreUrl:`/channel`,moreLinkType:`content-list`,items:{id:`22edc8693ebbdaf1`,cover:`https://base-resources.guadd.fun/md-204/dcc-file/f7/f70a9f9f0c17aa9aff6c3a3e03a822db-small.jpg`,play_count:`11111`,showPlayCount:!0,episodeText:`连载中`,showEpisode:!0,useContentCover:!0,title:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`,desc:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`}}]})})),i=t(r);export{i as largeFeatureGridInspectorDefaultProps,r as largeFeatureGridInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),is_ad:e.boolean(!1,{fieldType:`switch`,label:`是否广告`,required:!1}),ad:e.object({ad_code:e.string(void 0,{label:`广告业务编码`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),ad_advertise_type:e.number(void 0,{label:`广告类型`,required:!1}),ad_advertise_desc:e.string(void 0,{label:`广告文案描述`,required:!1}),ad_ext_data:e.string(void 0,{label:`广告扩展信息`,required:!1})},{label:`广告对象`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),score:e.string(void 0,{label:`评分`,required:!1}),useContentCover:e.boolean(!0,{fieldType:`switch`,label:`沿用内容海报`,required:!1}),title:e.string(void 0,{label:`内容标题`}),desc:e.string(void 0,{label:`内容简介`,required:!1}),tagImageUrl:e.string(void 0,{label:`角标图`,required:!1})})}),{label:`大图推荐数据`,required:!1,defaultValue:[{title:`推荐位名称`,moreUrl:`/channel`,moreLinkType:`content-list`,items:{id:`22edc8693ebbdaf1`,cover:`https://base-resources.guadd.fun/md-204/dcc-file/f7/f70a9f9f0c17aa9aff6c3a3e03a822db-small.jpg`,play_count:`11111`,showPlayCount:!0,episodeText:`连载中`,showEpisode:!0,score:`93`,useContentCover:!0,title:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`,desc:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`}}]})})),i=t(r);export{i as largeFeatureGridInspectorDefaultProps,r as largeFeatureGridInspectorPropsSchema};
@@ -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-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};
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 no-vw-x-16 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,15 +1,12 @@
1
1
 
2
2
  import { ProfileHeaderInspectorProps, UserProfileHeaderAuthConfig, UserProfileHeaderClientProps, profileHeaderInspectorDefaultProps, profileHeaderInspectorPropsSchema } from "./profile-header/schema.mjs";
3
- import { UserProfileHeaderClient } from "./profile-header/client.mjs";
4
- import { MyProfileHeaderClient } from "./profile-header/my-client.mjs";
5
- import { VisitorProfileHeaderClient } from "./profile-header/visitor-client.mjs";
6
- import { myProfileHeaderMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, visitorProfileHeaderMaterial } from "./profile-header/material.mjs";
3
+ import { UserProfileHeaderClient, defaultBackground } from "./profile-header/client.mjs";
4
+ import { profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground } from "./profile-header/material.mjs";
7
5
  import "./profile-header/index.mjs";
8
6
  import { ProfileMainInspectorProps, UserProfileMainProps, profileMainInspectorDefaultProps, profileMainInspectorPropsSchema } from "./profile-main/schema.mjs";
9
7
  import { UserProfileMainClient } from "./profile-main/client.mjs";
10
8
  import { UserProfileMain } from "./profile-main/server.mjs";
11
9
  import { profileMainMaterial } from "./profile-main/material.mjs";
12
- import { ProfileMainBaseTabKey, ProfileMainContentType, ProfileMainSecondaryTabKey, ProfileMainTabKey, getProfileMainSecondaryTabOptions, getProfileMainTabOptions, profileMainBaseTabOptions, profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainContentTypeOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainPublishTabOption, profileMainSecondaryTabDisplayOrder, profileMainTabOptions } from "./profile-main/variants.mjs";
13
10
  import { UserProfileMainRenderMode, UserProfileMainShell, UserProfileMainShellProps } from "./profile-main/shell.mjs";
14
11
  import { CollectTab, CollectTabProps } from "./profile-main/tabs/collect-tab/client.mjs";
15
12
  import { CollectTabServer } from "./profile-main/tabs/collect-tab/server.mjs";
@@ -19,4 +16,5 @@ import { LikeDetailItem, LikeTab, LikeTabProps } from "./profile-main/tabs/like-
19
16
  import { LikeTabServer } from "./profile-main/tabs/like-tab/server.mjs";
20
17
  import { PublishTab, PublishTabProps, PublishTabUserInfo } from "./profile-main/tabs/publish-tab/client.mjs";
21
18
  import { PublishTabServer } from "./profile-main/tabs/publish-tab/server.mjs";
19
+ import { profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainTabOptions } from "./profile-main/variants.mjs";
22
20
  import "./profile-main/index.mjs";
@@ -3,15 +3,13 @@ import { UserProfileHeaderClientProps } from "./schema.mjs";
3
3
  import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region components/biz/business/profile/profile-header/client.d.ts
6
+ declare const defaultBackground = "/images/mine/img_mine_head_bg.png";
6
7
  /**
7
8
  * 用户资料头部组件,包含资料请求与头部交互。
8
9
  */
9
10
  declare function UserProfileHeaderClient({
10
11
  id,
11
- isMine,
12
- defaultBackgroundSrc,
13
12
  enableCustomBackground,
14
- showInteractionSection,
15
13
  showBackButton,
16
14
  requireLogin,
17
15
  isEditorPreview,
@@ -19,4 +17,4 @@ declare function UserProfileHeaderClient({
19
17
  mode
20
18
  }: UserProfileHeaderClientProps): react_jsx_runtime0.JSX.Element;
21
19
  //#endregion
22
- export { UserProfileHeaderClient };
20
+ export { UserProfileHeaderClient, defaultBackground };
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as n,gUserViewUserInfo as r}from"../../../../../service/generated/client.mjs";import{useRouter as i}from"../../../../../utils/use-compatible-router.mjs";import{Button as a}from"../../../../ui/button.mjs";import{Box as o}from"../../../../ui/box.mjs";import{Skeleton as s}from"../../../../ui/skeleton.mjs";import{useLoginModalStore as c}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as l}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as u}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as d}from"../../../../common/icons/setting.mjs";import{trackProfilePageClick as ee}from"../tracking.mjs";import{defaultBackground as f}from"./shared.mjs";import{MyProfileHeader as p}from"./my-profile-header.mjs";import{UserProfileCoverBackground as m}from"./user-profile-cover-background.mjs";import{VisitorProfileHeader as h}from"./visitor-profile-header.mjs";import{useEffect as g,useMemo as te,useState as ne}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as re}from"next-intl";import ie from"next/link";const y=t.persist,b=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,ae={userId:`editor-preview-user`,isFollowing:!0,name:`昵称`,avatar:b,followingCnt:1200,followersCnt:45800,likeCnt:128e3,signature:`这里是个人简介,描述创作者的信息,展示创作者的爱好、名称及相关一切信息..`,background:f},x={followingCnt:1200,followersCnt:45800,likeCnt:128e3};function S({showBackButton:t,isMine:n,enableCustomBackground:r,className:i}){return v(o,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,i),children:[_(o,{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%)]`)}),v(o,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[_(a,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!t}),disabled:!0,children:_(u,{className:`w-4 h-4`})}),_(o,{className:e({invisible:!n}),children:_(d,{className:`text-text1`})})]}),v(o,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[_(s,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),v(o,{className:`min-w-0 flex-1`,children:[_(s,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),v(o,{className:`mt-1 flex flex-col gap-1`,children:[_(s,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),_(s,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function C({id:s,isMine:C=!1,defaultBackgroundSrc:w=``,enableCustomBackground:T=!0,showInteractionSection:oe=!0,showBackButton:E=!0,requireLogin:D=!1,isEditorPreview:O=!1,className:k,mode:A=`renderer`}){let j=re(`components.pages.profile`),M=O||A===`editor`,N=!M,P=i(),{open:F}=c(),{isLogin:I,userId:L,token:R}=t(),[se,z]=ne(!1);g(()=>{if(!y){z(!0);return}z(y.hasHydrated());let e=y.onHydrate(()=>{z(!1)}),t=y.onFinishHydration(()=>{z(!0)});return()=>{e(),t()}},[]);let B=M?!1:I&&!!L&&!!R,V=M?``:L,H=s,U=C?[`user-profile`,`mine`]:[`user-profile`,`profile`,H],{data:W,isLoading:G}=l(M?[`editor-preview`,...U]:U,()=>H?r({target_user_id:H,user_id:V||H}):n({user_id:s||V||``}),{staleTime:0,enabled:N&&(!!H||!!V)}),K=te(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${H??``}`,avatar:e.avatar||b,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||w||f}:{}},[w,W,H]),q=!M&&D&&C&&!B,J=C&&B&&!q,Y=!B,ce=T&&J,le=T&&Y,ue={name:j(`client.welcomeToPlanet`),description:j(`client.exploreAdventures`),avatar:b,followingCnt:0,followersCnt:0,likeCnt:0,background:w||f};function X(){F()}function de(){P.back()}let Z=M?{...ae,background:w||f}:q?ue:K,fe=Z.followingCnt||x.followingCnt,pe=Z.followersCnt||x.followersCnt,me=Z.likeCnt||x.likeCnt,he=Z.userId||H||V||``,Q=oe&&!q,$=[{key:`follow`,label:j(`components.userProfileHeader.follow`),value:fe},{key:`fans`,label:j(`components.userProfileHeader.fans`),value:pe},{key:`likesReceived`,label:j(`components.userProfileHeader.likesReceived`),value:me}];return N&&G&&!W?_(S,{showBackButton:E,isMine:C,enableCustomBackground:T,className:k}):v(o,{className:e(`relative px-4 pb-8 pt-[16px]`,k),children:[_(o,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:_(m,{isMine:ce,enableCustomBackground:T,src:Z.background,onUnauthorizedClick:le?X:void 0})}),_(o,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,T?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),v(o,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[_(a,{variant:`ghost`,size:`icon-xs`,onClick:de,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!E}),children:_(u,{className:`h-4 w-4`})}),C?_(ie,{href:`/settings`,className:`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,onClick:e=>{ee(e,`settings`)},children:_(d,{})}):_(o,{className:`h-8 w-8`})]}),C?_(p,{userInfo:Z,interactionStats:$,showInteractionSection:Q,canEditProfileMedia:J,shouldPromptLoginOnMediaClick:Y,storeIsLogin:I,isMine:C,isAuthenticated:B,onOpenLoginDialog:X}):_(h,{userInfo:{...Z,userId:he},interactionStats:$,showInteractionSection:Q,canEditProfileMedia:J,shouldPromptLoginOnMediaClick:Y,storeIsLogin:I,isMine:C,currentUserId:V,onOpenLoginDialog:X,useLocalPreview:M})]})}export{C as UserProfileHeaderClient};
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};
@@ -1,6 +1,4 @@
1
1
 
2
2
  import { ProfileHeaderInspectorProps, UserProfileHeaderAuthConfig, UserProfileHeaderClientProps, profileHeaderInspectorDefaultProps, profileHeaderInspectorPropsSchema } from "./schema.mjs";
3
- import { UserProfileHeaderClient } from "./client.mjs";
4
- import { MyProfileHeaderClient } from "./my-client.mjs";
5
- import { VisitorProfileHeaderClient } from "./visitor-client.mjs";
6
- import { myProfileHeaderMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, visitorProfileHeaderMaterial } from "./material.mjs";
3
+ import { UserProfileHeaderClient, defaultBackground } from "./client.mjs";
4
+ import { profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground } from "./material.mjs";
@@ -1,9 +1,7 @@
1
1
 
2
- import { SchemaHasDefaultValue } from "../../../../../utils/schema/schema.mjs";
3
2
  import { DefineMaterialOption } from "../../../../../utils/schema/material.mjs";
4
3
  import "../../../../../utils.mjs";
5
- import { MyProfileHeaderClient } from "./my-client.mjs";
6
- import { VisitorProfileHeaderClient } from "./visitor-client.mjs";
4
+ import { UserProfileHeaderClient } from "./client.mjs";
7
5
  import * as zod from "zod";
8
6
  import * as react_jsx_runtime0 from "react/jsx-runtime";
9
7
  import * as zod_v4_core0 from "zod/v4/core";
@@ -12,14 +10,10 @@ import * as zod_v4_core0 from "zod/v4/core";
12
10
  declare const profileHeaderMaterial: DefineMaterialOption<({
13
11
  mode,
14
12
  ...props
15
- }: React.ComponentProps<typeof MyProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, ({
13
+ }: React.ComponentProps<typeof UserProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, ({
16
14
  mode,
17
15
  ...props
18
- }: React.ComponentProps<typeof MyProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, zod.ZodObject<{
19
- readonly defaultBackgroundSrc: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
20
- readonly enableCustomBackground: zod.ZodBoolean & SchemaHasDefaultValue;
21
- readonly showInteractionSection: zod.ZodBoolean & SchemaHasDefaultValue;
22
- } & {
16
+ }: React.ComponentProps<typeof UserProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, zod.ZodObject<{
23
17
  mode: zod.ZodOptional<zod.ZodEnum<{
24
18
  renderer: "renderer";
25
19
  editor: "editor";
@@ -28,50 +22,14 @@ declare const profileHeaderMaterial: DefineMaterialOption<({
28
22
  declare const profileHeaderMaterialWithDisabledBackground: DefineMaterialOption<({
29
23
  mode,
30
24
  ...props
31
- }: React.ComponentProps<typeof MyProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, ({
25
+ }: React.ComponentProps<typeof UserProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, ({
32
26
  mode,
33
27
  ...props
34
- }: React.ComponentProps<typeof MyProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, zod.ZodObject<{
35
- readonly defaultBackgroundSrc: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
36
- readonly enableCustomBackground: zod.ZodBoolean & SchemaHasDefaultValue;
37
- readonly showInteractionSection: zod.ZodBoolean & SchemaHasDefaultValue;
38
- } & {
28
+ }: React.ComponentProps<typeof UserProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, zod.ZodObject<{
39
29
  mode: zod.ZodOptional<zod.ZodEnum<{
40
30
  renderer: "renderer";
41
31
  editor: "editor";
42
32
  }>>;
43
33
  }, zod_v4_core0.$strip>, "profile-header-with-disabled-background", "内容组件">;
44
- declare const myProfileHeaderMaterial: DefineMaterialOption<({
45
- mode,
46
- ...props
47
- }: React.ComponentProps<typeof MyProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, ({
48
- mode,
49
- ...props
50
- }: React.ComponentProps<typeof MyProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, zod.ZodObject<{
51
- readonly defaultBackgroundSrc: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
52
- readonly enableCustomBackground: zod.ZodBoolean & SchemaHasDefaultValue;
53
- readonly showInteractionSection: zod.ZodBoolean & SchemaHasDefaultValue;
54
- } & {
55
- mode: zod.ZodOptional<zod.ZodEnum<{
56
- renderer: "renderer";
57
- editor: "editor";
58
- }>>;
59
- }, zod_v4_core0.$strip>, "my-profile-header", "内容组件">;
60
- declare const visitorProfileHeaderMaterial: DefineMaterialOption<({
61
- mode,
62
- ...props
63
- }: React.ComponentProps<typeof VisitorProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, ({
64
- mode,
65
- ...props
66
- }: React.ComponentProps<typeof VisitorProfileHeaderClient>) => react_jsx_runtime0.JSX.Element, zod.ZodObject<{
67
- readonly defaultBackgroundSrc: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
68
- readonly enableCustomBackground: zod.ZodBoolean & SchemaHasDefaultValue;
69
- readonly showInteractionSection: zod.ZodBoolean & SchemaHasDefaultValue;
70
- } & {
71
- mode: zod.ZodOptional<zod.ZodEnum<{
72
- renderer: "renderer";
73
- editor: "editor";
74
- }>>;
75
- }, zod_v4_core0.$strip>, "visitor-profile-header", "内容组件">;
76
34
  //#endregion
77
- export { myProfileHeaderMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, visitorProfileHeaderMaterial };
35
+ export { profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground };
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineMaterial as e}from"../../../../../utils/schema/material.mjs";import{MyProfileHeaderClient as t}from"./my-client.mjs";import{profileHeaderInspectorPropsSchema as n}from"./schema.mjs";import{VisitorProfileHeaderClient as r}from"./visitor-client.mjs";import{jsx as i}from"react/jsx-runtime";function a(e){return e===`editor`?{id:`editor-preview-user`,requireLogin:!1,cookieToken:``,cookieUserId:``,token:``,currentUserId:``}:{}}const o=e({type:`profile-header`,category:`内容组件`,name:`用户信息模块(有背景图)`,icon:`/static/components-thumb/user_profile_with_background.png`,serverComponent:({mode:e=`renderer`,...n})=>i(t,{...n,...a(e),mode:e}),clientComponent:({mode:e=`renderer`,...n})=>i(t,{...n,...a(e),mode:e}),propsSchema:n}),s=e({type:`profile-header-with-disabled-background`,category:`内容组件`,name:`用户信息模块(无背景图)`,icon:`/static/components-thumb/user_profile_plain.png`,serverComponent:({mode:e=`renderer`,...n})=>i(t,{...n,...a(e),mode:e,enableCustomBackground:!1,showBackgroundImage:!1}),clientComponent:({mode:e=`renderer`,...n})=>i(t,{...n,...a(e),mode:e,enableCustomBackground:!1,showBackgroundImage:!1}),propsSchema:n}),c=e({type:`my-profile-header`,category:`内容组件`,name:`我的主页模块`,icon:`/static/components-thumb/user_profile_with_background.png`,serverComponent:({mode:e=`renderer`,...n})=>i(t,{...n,...a(e),mode:e}),clientComponent:({mode:e=`renderer`,...n})=>i(t,{...n,...a(e),mode:e}),propsSchema:n}),l=e({type:`visitor-profile-header`,category:`内容组件`,name:`他人主页模块`,icon:`/static/components-thumb/user_profile_with_background.png`,serverComponent:({mode:e=`renderer`,...t})=>i(r,{...t,...a(e),mode:e}),clientComponent:({mode:e=`renderer`,...t})=>i(r,{...t,...a(e),mode:e}),propsSchema:n});export{c as myProfileHeaderMaterial,o as profileHeaderMaterial,s as profileHeaderMaterialWithDisabledBackground,l as visitorProfileHeaderMaterial};
2
+ import{defineMaterial as e}from"../../../../../utils/schema/material.mjs";import{UserProfileHeaderClient as t}from"./client.mjs";import{profileHeaderInspectorPropsSchema as n}from"./schema.mjs";import{jsx as r}from"react/jsx-runtime";function i(e){return e===`editor`?{id:void 0,requireLogin:!0,cookieToken:``,cookieUserId:``,token:``,currentUserId:``}:{}}const a=e({type:`profile-header`,category:`内容组件`,name:`用户信息模块(有背景图)`,icon:`/static/components-thumb/user_profile_with_background.png`,serverComponent:({mode:e=`renderer`,...n})=>r(t,{...n,...i(e),mode:e}),clientComponent:({mode:e=`renderer`,...n})=>r(t,{...n,...i(e),mode:e}),propsSchema:n}),o=e({type:`profile-header-with-disabled-background`,category:`内容组件`,name:`用户信息模块(无背景图)`,icon:`/static/components-thumb/user_profile_plain.png`,serverComponent:({mode:e=`renderer`,...n})=>r(t,{...n,...i(e),mode:e,enableCustomBackground:!1}),clientComponent:({mode:e=`renderer`,...n})=>r(t,{...n,...i(e),mode:e,enableCustomBackground:!1}),propsSchema:n});export{a as profileHeaderMaterial,o as profileHeaderMaterialWithDisabledBackground};
@@ -1,5 +1,5 @@
1
1
 
2
- import { InferSchemaProps, SchemaHasDefaultValue } from "../../../../../utils/schema/schema.mjs";
2
+ import { InferSchemaProps } from "../../../../../utils/schema/schema.mjs";
3
3
  import "../../../../../utils.mjs";
4
4
  import * as zod from "zod";
5
5
  import * as zod_v4_core0 from "zod/v4/core";
@@ -9,31 +9,21 @@ import * as zod_v4_core0 from "zod/v4/core";
9
9
  * 用户资料头部物料 inspector 配置。
10
10
  */
11
11
  declare const profileHeaderInspectorPropsSchema: zod.ZodObject<{
12
- readonly defaultBackgroundSrc: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
13
- readonly enableCustomBackground: zod.ZodBoolean & SchemaHasDefaultValue;
14
- readonly showInteractionSection: zod.ZodBoolean & SchemaHasDefaultValue;
15
- } & {
16
12
  mode: zod.ZodOptional<zod.ZodEnum<{
17
13
  renderer: "renderer";
18
14
  editor: "editor";
19
15
  }>>;
20
16
  }, zod_v4_core0.$strip>;
21
- declare const profileHeaderInspectorDefaultProps: {
22
- readonly defaultBackgroundSrc: string;
23
- readonly enableCustomBackground: boolean;
24
- readonly showInteractionSection: boolean;
25
- };
17
+ declare const profileHeaderInspectorDefaultProps: {};
26
18
  type ProfileHeaderInspectorProps = InferSchemaProps<typeof profileHeaderInspectorPropsSchema>;
27
19
  interface UserProfileHeaderAuthConfig {
28
20
  headers?: Record<string, string>;
29
21
  }
30
- interface UserProfileHeaderClientProps extends Partial<ProfileHeaderInspectorProps> {
22
+ interface UserProfileHeaderClientProps extends ProfileHeaderInspectorProps {
31
23
  /** 用户 ID。 */
32
24
  id?: string;
33
- /** 是否为本人视角,优先级高于组件内部判断。 */
34
- isMine?: boolean;
35
- /** 是否展示背景图。 */
36
- showBackgroundImage?: boolean;
25
+ /** 是否允许自定义背景图。 */
26
+ enableCustomBackground?: boolean;
37
27
  /** 是否显示返回按钮。 */
38
28
  showBackButton?: boolean;
39
29
  /** 是否要求登录。 */
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({defaultBackgroundSrc:e.string(``,{label:`默认背景`,required:!1}),enableCustomBackground:e.boolean(!0,{fieldType:`switch`,label:`允许用户替换背景`,required:!0}),showInteractionSection:e.boolean(!0,{fieldType:`switch`,label:`是否展示互动组件`,required:!0})})),r=t(n);export{r as profileHeaderInspectorDefaultProps,n as profileHeaderInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({})),r=t(n);export{r as profileHeaderInspectorDefaultProps,n as profileHeaderInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{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};
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-[12px] bg-[var(--color-surface-white10)] p-[12px] 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{defaultBackground as c}from"./shared.mjs";import{BackgroundPreviewModal as l}from"../../../../common/background-preview-modal/background-preview-modal.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=c,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(l,{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};
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};
@@ -7,9 +7,7 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
7
7
  * 用户资料主体客户端组件。
8
8
  */
9
9
  declare function UserProfileMainClient({
10
- contentTypes,
11
10
  id,
12
- isMine,
13
11
  showCreateAction,
14
12
  requireLogin,
15
13
  className,
@@ -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{UserProfileMainShell as r}from"./shell.mjs";import{getProfileMainTabOptions as i}from"./variants.mjs";import{CollectTab as a}from"./tabs/collect-tab/client.mjs";import{HistoryTab as o}from"./tabs/history-tab/client.mjs";import{LikeTab as s}from"./tabs/like-tab/client.mjs";import{PublishTab as c}from"./tabs/publish-tab/client.mjs";import{useMemo as l}from"react";import{jsx as u}from"react/jsx-runtime";import{parseAsString as d,useQueryState as f}from"nuqs";const p=[`video`,`novel`,`comic`],m=[];function h({contentTypes:e,tab:t}){let n=i(e);return t&&n.includes(t)?t:n[0]}function g(e,t){return e&&(t===`collect`||t===`like`)}function _({contentTypes:_=p,id:v,isMine:y=!1,showCreateAction:b=!1,requireLogin:x=!1,className:S,currentUserId:C,mode:w=`renderer`,tab:T}){let E=w===`renderer`,D=e(e=>e.userId),[O]=f(`tab`,d),k=w===`editor`?``:C||D||``,A=!y&&!!v,j=y?k:v?String(v):void 0,M=y?[`user-profile`,`mine`]:[`user-profile`,`profile`,v],N=l(()=>i(_),[_]),P=l(()=>h({contentTypes:_,tab:O??T}),[_,T,O]),F=E&&g(A,P)&&!!v,{data:I}=n([`user-profile`,`privacy`,v,k],async()=>await t({target_user_id:String(v),user_id:k||String(v)}),{staleTime:0,enabled:F}),L=`content`;if(w===`editor`)L=`content`;else if(x&&y&&!k)L=`login-required`;else if(F&&I){let e=I.data??{},t=Number(e.collections_open??1)>0,n=Number(e.like_open??1)>0;P===`collect`&&!t&&(L=`privacy-collect`),P===`like`&&!n&&(L=`privacy-like`)}let R=L===`content`&&(!F||!!I),z=null;if(R)switch(P){case`like`:z=u(s,{mode:w,isMine:y,targetUserId:j,queryKeyPrefix:M,contentTypes:_.length?_:m});break;case`history`:z=u(o,{mode:w,targetUserId:j,queryKeyPrefix:M,contentTypes:_.length?_:m});break;case`publish`:z=u(c,{mode:w,targetUserId:j,queryKeyPrefix:M,isMine:y,contentTypes:_.length?_:m});break;default:z=u(a,{mode:w,isMine:y,userId:j,showCreateAction:b&&y,queryKeyPrefix:M,contentTypes:_.length?_:m});break}return u(r,{profileId:v,currentUserId:k,isMine:y,tabs:N,activeTab:w===`editor`?N[0]:void 0,renderMode:L,className:S,children:z})}export{_ 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};
@@ -3,7 +3,6 @@ import { ProfileMainInspectorProps, UserProfileMainProps, profileMainInspectorDe
3
3
  import { UserProfileMainClient } from "./client.mjs";
4
4
  import { UserProfileMain } from "./server.mjs";
5
5
  import { profileMainMaterial } from "./material.mjs";
6
- import { ProfileMainBaseTabKey, ProfileMainContentType, ProfileMainSecondaryTabKey, ProfileMainTabKey, getProfileMainSecondaryTabOptions, getProfileMainTabOptions, profileMainBaseTabOptions, profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainContentTypeOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainPublishTabOption, profileMainSecondaryTabDisplayOrder, profileMainTabOptions } from "./variants.mjs";
7
6
  import { UserProfileMainRenderMode, UserProfileMainShell, UserProfileMainShellProps } from "./shell.mjs";
8
7
  import { CollectTab, CollectTabProps } from "./tabs/collect-tab/client.mjs";
9
8
  import { CollectTabServer } from "./tabs/collect-tab/server.mjs";
@@ -13,4 +12,5 @@ import { LikeDetailItem, LikeTab, LikeTabProps } from "./tabs/like-tab/client.mj
13
12
  import { LikeTabServer } from "./tabs/like-tab/server.mjs";
14
13
  import { PublishTab, PublishTabProps, PublishTabUserInfo } from "./tabs/publish-tab/client.mjs";
15
14
  import { PublishTabServer } from "./tabs/publish-tab/server.mjs";
16
- import "./tabs/index.mjs";
15
+ import "./tabs/index.mjs";
16
+ import { profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainTabOptions } from "./variants.mjs";
@@ -1,5 +1,4 @@
1
1
 
2
- import { SchemaHasDefaultValue } from "../../../../../utils/schema/schema.mjs";
3
2
  import { DefineMaterialOption } from "../../../../../utils/schema/material.mjs";
4
3
  import "../../../../../utils.mjs";
5
4
  import { UserProfileMainClient } from "./client.mjs";
@@ -9,8 +8,6 @@ import * as zod_v4_core0 from "zod/v4/core";
9
8
 
10
9
  //#region components/biz/business/profile/profile-main/material.d.ts
11
10
  declare const profileMainMaterial: DefineMaterialOption<typeof UserProfileMain, typeof UserProfileMainClient, zod.ZodObject<{
12
- readonly contentTypes: zod.ZodOptional<zod.ZodArray<zod.ZodType<"video" | "novel" | "comic" | "post", unknown, zod_v4_core0.$ZodTypeInternals<"video" | "novel" | "comic" | "post", unknown>>>> & SchemaHasDefaultValue;
13
- } & {
14
11
  mode: zod.ZodOptional<zod.ZodEnum<{
15
12
  renderer: "renderer";
16
13
  editor: "editor";