@funhub/platform 0.1.31 → 0.1.33

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 (110) hide show
  1. package/config/tailwind/index.cjs +115 -1
  2. package/config/tailwind/index.d.ts +3 -0
  3. package/config/tailwind/index.mjs +115 -1
  4. package/dist/biz.d.mts +29 -25
  5. package/dist/biz.mjs +1 -1
  6. package/dist/common.mjs +1 -1
  7. package/dist/components/biz/basics/fullscreen-feed/index.mjs +1 -1
  8. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
  9. package/dist/components/biz/basics/fullscreen-feed/runtime/post-slide.mjs +1 -1
  10. package/dist/components/biz/basics/fullscreen-feed/runtime/use-mixed-feed-controller.mjs +1 -1
  11. package/dist/components/biz/basics/fullscreen-feed/runtime/use-series-feed-controller.mjs +1 -1
  12. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
  13. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  14. package/dist/components/biz/basics/search/shared/components/search-box.mjs +1 -1
  15. package/dist/components/biz/basics/search/variants/simple-search/runtime/client.mjs +1 -1
  16. package/dist/components/biz/business/banner/variants/basic-banner/inspector-schema.mjs +1 -1
  17. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
  18. package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
  19. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/runtime/client.mjs +1 -1
  20. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/runtime/client.mjs +1 -1
  21. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  22. package/dist/components/biz/business/comment/comment-item.mjs +1 -1
  23. package/dist/components/biz/business/comment/reply-detail.mjs +1 -1
  24. package/dist/components/biz/business/contact/contact-list.mjs +1 -1
  25. package/dist/components/biz/business/detail/detail-operate.mjs +1 -1
  26. package/dist/components/biz/business/detail/materials/video-detail-actions/schema.d.mts +1 -1
  27. package/dist/components/biz/business/detail/materials/video-detail-info/schema.d.mts +1 -1
  28. package/dist/components/biz/business/detail/materials/video-detail-info-title/schema.d.mts +1 -1
  29. package/dist/components/biz/business/detail/materials/video-detail-info-title-tags-episodes/schema.d.mts +1 -1
  30. package/dist/components/biz/business/detail/materials/video-detail-player/schema.d.mts +1 -1
  31. package/dist/components/biz/business/detail/materials/video-detail-recommend/client.mjs +1 -1
  32. package/dist/components/biz/business/detail/video-hero.mjs +1 -1
  33. package/dist/components/biz/business/floating-ball/client.d.mts +2 -2
  34. package/dist/components/biz/business/floating-ball/client.mjs +1 -1
  35. package/dist/components/biz/business/floating-ball/index.d.mts +5 -0
  36. package/dist/components/biz/business/floating-ball/material.d.mts +6 -1
  37. package/dist/components/biz/business/floating-ball/schema.d.mts +11 -4
  38. package/dist/components/biz/business/floating-ball/schema.mjs +1 -1
  39. package/dist/components/biz/business/fullscreen-feed/variants/shared/runtime-compat.mjs +1 -1
  40. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  41. package/dist/components/biz/business/index.d.mts +29 -24
  42. package/dist/components/biz/business/index.mjs +1 -1
  43. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  44. package/dist/components/biz/business/marquee/client.mjs +1 -1
  45. package/dist/components/biz/business/marquee/material.d.mts +1 -1
  46. package/dist/components/biz/business/marquee/schema.d.mts +2 -2
  47. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
  48. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  49. package/dist/components/biz/business/profile/profile-header/material.d.mts +1 -7
  50. package/dist/components/biz/business/profile/profile-header/schema.d.mts +14 -14
  51. package/dist/components/biz/business/profile/profile-header/schema.mjs +1 -1
  52. package/dist/components/biz/business/profile/profile-main/material.d.mts +1 -12
  53. package/dist/components/biz/business/profile/profile-main/schema.d.mts +14 -24
  54. package/dist/components/biz/business/profile/profile-main/schema.mjs +1 -1
  55. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -1
  56. package/dist/components/biz/business/recommended-users/variants/basic-recommended-users/runtime/client.mjs +1 -1
  57. package/dist/components/biz/business/search-bar/variants/detail-search-bar/runtime/client.mjs +1 -1
  58. package/dist/components/biz/business/search-history/client.mjs +1 -1
  59. package/dist/components/biz/business/search-input/client.mjs +1 -1
  60. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  61. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  62. package/dist/components/common/at-element/index.mjs +1 -1
  63. package/dist/components/common/blocked-dialog/blocked-dialog.mjs +1 -1
  64. package/dist/components/common/funhub-provider/funhub-provider.mjs +1 -1
  65. package/dist/components/common/header-nav/client.mjs +1 -1
  66. package/dist/components/common/info-card/card-header.mjs +1 -1
  67. package/dist/components/common/list/post-list/post-list.mjs +1 -1
  68. package/dist/components/common/list/user-activity-list/user-activity-list-actions.mjs +1 -1
  69. package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -1
  70. package/dist/components/common/list/video-list/video-list.mjs +1 -1
  71. package/dist/components/common/media-preview/index.mjs +1 -1
  72. package/dist/components/common/popup-video/index.mjs +1 -1
  73. package/dist/components/common/share-popup/share-popup.mjs +1 -1
  74. package/dist/components/common/tab-bar/index.mjs +1 -1
  75. package/dist/components/common/top-nav-bar/client.mjs +1 -1
  76. package/dist/components/common/video-player/index.mjs +2 -2
  77. package/dist/components/pages/(follow)/_components/interaction-tabs/index.mjs +1 -1
  78. package/dist/components/pages/(follow)/_components/user-list/index.mjs +1 -1
  79. package/dist/components/pages/collection-create/form.mjs +1 -1
  80. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  81. package/dist/components/pages/feed-series/feed-series-client.mjs +1 -1
  82. package/dist/components/pages/feed-series/page.mjs +1 -1
  83. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
  84. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  85. package/dist/components/pages/home/client.mjs +1 -1
  86. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
  87. package/dist/components/pages/profile/_components/user-profile-container/client.mjs +1 -1
  88. package/dist/components/pages/publish/components/collection.mjs +1 -1
  89. package/dist/components/pages/publish/components/header.mjs +1 -1
  90. package/dist/components/pages/publish/page-client.mjs +1 -1
  91. package/dist/components/pages/search/page-client.mjs +1 -1
  92. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  93. package/dist/components/pages/search/top-header.mjs +1 -1
  94. package/dist/components/pages/user-follow/_components/follow-no-login.mjs +1 -1
  95. package/dist/components/pages/video-detail/page.mjs +1 -1
  96. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  97. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  98. package/dist/components/ui/badge.d.mts +1 -1
  99. package/dist/components/ui/button-group.d.mts +1 -1
  100. package/dist/components/ui/button.d.mts +2 -2
  101. package/dist/components/ui/field.d.mts +1 -1
  102. package/dist/hooks/use-content-operate.mjs +1 -1
  103. package/dist/i18n.d.mts +1 -1
  104. package/dist/i18n.mjs +1 -1
  105. package/dist/materials.d.mts +5 -5
  106. package/dist/materials.mjs +1 -1
  107. package/dist/utils/share-manager.mjs +1 -1
  108. package/dist/utils.d.mts +4 -4
  109. package/dist/utils.mjs +1 -1
  110. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{useFollowIdsState as t}from"../../../store/modules/follow-ids-store.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetAppChannels as r,gContentGetVideoDetail as i}from"../../../service/generated/client.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useLoginModalStore as o}from"../../../store/modules/login-modal-store.mjs";import{useKeepAliveState as s}from"../../common/keep-scroll-position/index.mjs";import{batchQueryContentInteractions as c}from"../../../hooks/use-content-operate.mjs";import{queryKey as l}from"../../../constants/query-key.mjs";import u from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import ee from"../../biz/basics/fullscreen-feed/runtime/client.mjs";import{SeriesEpisodes as d}from"../../common/series-episodes/index.mjs";import{useCallback as f,useEffect as te,useLayoutEffect as ne,useMemo as p,useRef as re,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";function y(e,t){return(e||[]).map((e,n)=>({id:e.id||`${t||`episode`}-${n+1}`,name:e.name||String(n+1),preview_m3u8_url:e.preview_m3u8_url||e.preview_m3u8url||``,m3u8_url:e.m3u8_url||e.m3u8url||``}))}function b(e,t,n){let r=e.id||``,i=t||r,a=y(e.links,i),o=e.static,s=e.score===void 0||e.score===null?void 0:Number(e.score),c=e.duration===void 0||e.duration===null?void 0:Number(e.duration),l={id:i,mid:i,name:e.name||``,img_x:e.img_x||``,img_y:e.img_y||``,img_type:e.img_type||``,cat_id:e.cat_id||``,cat_name:e.cat_name||``,status:e.status||``,status_text:e.status_text||``,show_at:e.show_at||``,tags:[],update_status:e.update_status||``,description:e.description||``,language:e.language||``,director:e.director||``,issue_date:e.issue_date||``,actor:e.actor||``,up_user:e.up_user||``,money:e.money||``,source_username:e.source_username||``,task_id:e.task_id||``,file_status:e.file_status||``,score:Number.isFinite(s)?s:void 0,duration:Number.isFinite(c)?c:void 0,episode_cnt:a.length||0,links:[],static:{browse_cnt:Number(o?.browse_cnt||0),collect_cnt:Number(o?.collect_cnt||0),comment_cnt:Number(e.comment_count??o?.comment_cnt??0),like_cnt:Number(o?.like_cnt||0),share_cnt:Number(o?.share_cnt||0),dislike_cnt:Number(o?.dislike_cnt||0)},type:e.type??e.content_type,author:{avatar:``,user_id:``,nick_name:``,user_name:``,is_verified:!1}};if(a.length===0)return{seriesTitle:l.name,seriesList:[],contents:[{...l,links:[]}]};let u=a.map((e,t)=>{let r=e.id||`${i||`episode`}-${t+1}`,o=n(t+1),s=[e,...a.filter(t=>t.id!==e.id)];return{...l,id:r,mid:i,episode_name:o,links:s}});return{seriesTitle:l.name,seriesList:a,contents:u}}function x({params:y,initialContents:x}){let S=v(`components.pages.feedSeries`),C=v(`components.common.seriesEpisodes`),{locale:w,seriesId:T,episodeNum:E=`1`}=y,{userInfo:D,isLogin:O}=n(),{followIds:ie,setFollowIds:ae}=t(),k=p(()=>x??[],[x]),[A,j]=m({}),{data:oe}=a([l.CHANNEL],()=>r()),se=e(oe?.data),M=p(()=>`feed-series:${w||`default`}:${T}`,[w,T]),ce=p(()=>{let e=Number.parseInt(E??`1`,10);return Number.isNaN(e)?0:Math.max(0,e-1)},[E]),[N,le]=s(`${M}-active-index`,ce),[P,ue]=s(`${M}-user-interacted`,!1),[de,fe]=s(`${M}-series-title-toggle`,!1),[F,I]=m(!1),L=re(null),[R,z]=m(0),B=g(`div`,{ref:L,className:`fixed top-0 left-0 right-0 z-40`,children:g(u,{data:{list:se}})});ne(()=>{let e=L.current;if(!e)return;let t=()=>{z(Math.max(0,Math.round(e.getBoundingClientRect().height)))};t();let n=new ResizeObserver(()=>t());return n.observe(e),()=>{n.disconnect()}},[]);let{data:V,isFetching:H}=a(p(()=>[`feed-series-detail`,T],[T]),async()=>T?await i({id:T}):null,{enabled:!!T&&k.length===0}),U=p(()=>V?.data?.video,[V]),W=p(()=>U?b(U,T,e=>C(`episodeLabel`,{episode:e})):null,[U,T,C]),G=p(()=>k.length>0?k:W?.contents??[],[W?.contents,k]),K=p(()=>Object.keys(A).length===0?G:G.map(e=>{let t=A[e.id];return t?{...e,...t,static:t.static?{...e.static,...t.static}:e.static,author:t.author?{...e.author,...t.author}:e.author}:e}),[G,A]),q=W?.seriesTitle??(k[0]?.name||``),J=W?.seriesList??[],{data:Y}=a(p(()=>[`feed-series-interactions`,T,O],[O,T]),async()=>await c([T],1),{enabled:!!O&&!!T}),X=p(()=>Y?.interaction_list,[Y]);te(()=>{if(!X||X.length===0)return;let e=X.find(e=>e.content_id===T)||X[0];e&&j(t=>{let n=!1,r={...t};for(let t of G){let i=r[t.id],a={...i,is_liked:e.is_liked||!1,is_dislike:e.is_disliked??e.is_dislike??!1,is_collected:e.is_collected||!1,is_followed:e.is_followed||!1};(!i||i.is_liked!==a.is_liked||i.is_dislike!==a.is_dislike||i.is_collected!==a.is_collected||i.is_followed!==a.is_followed)&&(n=!0,r[t.id]=a)}return n?r:t})},[X,G,T]);let Z=f(({})=>{},[]),pe=f(()=>{o.getState().open()},[]),me=f((e,t)=>{let n=t.is_liked!==void 0||t.is_dislike!==void 0||t.is_collected!==void 0||t.is_followed!==void 0||t.static?.like_cnt!==void 0||t.static?.dislike_cnt!==void 0||t.static?.collect_cnt!==void 0||t.static?.comment_cnt!==void 0;j(r=>{if(!n)return{...r,[e]:{...r[e],...t,static:t.static?{...r[e]?.static,...t.static}:r[e]?.static,author:t.author?{...r[e]?.author,...t.author}:r[e]?.author}};let i=!1,a={...r};for(let e of G){let n=e.id,r=a[n],o=t.static?{...r?.static||{},...t.static}:r?.static,s=t.author?{...r?.author||{},...t.author}:r?.author,c={...r,...t,static:o,author:s},l=!1;if(t.is_liked!==void 0&&r?.is_liked!==t.is_liked&&(l=!0),t.is_dislike!==void 0&&r?.is_dislike!==t.is_dislike&&(l=!0),t.is_collected!==void 0&&r?.is_collected!==t.is_collected&&(l=!0),t.is_followed!==void 0&&r?.is_followed!==t.is_followed&&(l=!0),t.static){let e=r?.static||{};t.static.like_cnt!==void 0&&e.like_cnt!==t.static.like_cnt&&(l=!0),t.static.dislike_cnt!==void 0&&e.dislike_cnt!==t.static.dislike_cnt&&(l=!0),t.static.collect_cnt!==void 0&&e.collect_cnt!==t.static.collect_cnt&&(l=!0),t.static.comment_cnt!==void 0&&e.comment_cnt!==t.static.comment_cnt&&(l=!0)}if(t.author&&r?.author){let e=r.author,n=t.author;for(let t of Object.keys(n))if(e?.[t]!==n[t]){l=!0;break}}l&&(i=!0,a[n]=c)}return i?a:r})},[G]),Q=f((e,t)=>{le(e),Z({episodeId:T,episodeNum:e+1,mode:t===`jump`?`replace`:`push`})},[Z,T]),he=f(()=>({showSeriesButton:!0,seriesTitle:q,seriesText:`${N+1}/${J.length||K.length}`,onSeriesClick:()=>I(!0)}),[N,K.length,J.length,q]),$=p(()=>K[N]?.links?.[0]?.id||``,[N,K]);return T?H&&G.length===0?_(h,{children:[B,_(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/80`,children:[S(`feedSeriesClient.episodeLoading`),`...`]})]}):!H&&G.length===0?_(h,{children:[B,g(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/80`,children:S(`feedSeriesClient.noEpisodes`)})]}):_(h,{children:[B,g(ee,{items:K,activeIndex:N,top:R,videoConfig:{loop:!1,autoNext:!0},userInteracted:P,onUserInteracted:()=>ue(!0),onActiveIndexChange:Q,onDataUpdate:me,getNavigationInfo:he,currentUserId:D.userId||void 0,followIds:ie,onFollowIdsChange:ae,commentContentId:T,onRequireLogin:pe,activeEpisodeId:$}),F&&g(d,{mode:`selector`,variant:`sheet`,open:F,title:S(`feedSeriesClient.episodeSelectorTitle`),updateStatus:U?.update_status,seriesList:J,activeEpisodeId:$,showEpisodeTitle:de,onToggleTitle:fe,onClose:()=>I(!1),onSelectEpisode:(e,t)=>{I(!1),Q(Math.max(0,t-1),`jump`)}})]}):_(h,{children:[B,_(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/80`,children:[S(`feedSeriesClient.missingEpisode`),` `,`ID`]})]})}export{x as default};
2
+ "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{useFollowIdsState as t}from"../../../store/modules/follow-ids-store.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetAppChannels as r,gContentGetVideoDetail as i}from"../../../service/generated/client.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useLoginModalStore as o}from"../../../store/modules/login-modal-store.mjs";import{useKeepAliveState as s}from"../../common/keep-scroll-position/index.mjs";import{batchQueryContentInteractions as c}from"../../../hooks/use-content-operate.mjs";import l from"../../biz/basics/fullscreen-feed/runtime/client.mjs";import{queryKey as u}from"../../../constants/query-key.mjs";import ee from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{SeriesEpisodes as d}from"../../common/series-episodes/index.mjs";import{useCallback as f,useEffect as te,useLayoutEffect as ne,useMemo as p,useRef as re,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";function y(e,t){return(e||[]).map((e,n)=>({id:e.id||`${t||`episode`}-${n+1}`,name:e.name||String(n+1),preview_m3u8_url:e.preview_m3u8_url||e.preview_m3u8url||``,m3u8_url:e.m3u8_url||e.m3u8url||``}))}function b(e,t,n){let r=e.id||``,i=t||r,a=y(e.links,i),o=e.static,s=e.score===void 0||e.score===null?void 0:Number(e.score),c=e.duration===void 0||e.duration===null?void 0:Number(e.duration),l={id:i,mid:i,name:e.name||``,img_x:e.img_x||``,img_y:e.img_y||``,img_type:e.img_type||``,cat_id:e.cat_id||``,cat_name:e.cat_name||``,status:e.status||``,status_text:e.status_text||``,show_at:e.show_at||``,tags:[],update_status:e.update_status||``,description:e.description||``,language:e.language||``,director:e.director||``,issue_date:e.issue_date||``,actor:e.actor||``,up_user:e.up_user||``,money:e.money||``,source_username:e.source_username||``,task_id:e.task_id||``,file_status:e.file_status||``,score:Number.isFinite(s)?s:void 0,duration:Number.isFinite(c)?c:void 0,episode_cnt:a.length||0,links:[],static:{browse_cnt:Number(o?.browse_cnt||0),collect_cnt:Number(o?.collect_cnt||0),comment_cnt:Number(e.comment_count??o?.comment_cnt??0),like_cnt:Number(o?.like_cnt||0),share_cnt:Number(o?.share_cnt||0),dislike_cnt:Number(o?.dislike_cnt||0)},type:e.type??e.content_type,author:{avatar:``,user_id:``,nick_name:``,user_name:``,is_verified:!1}};if(a.length===0)return{seriesTitle:l.name,seriesList:[],contents:[{...l,links:[]}]};let u=a.map((e,t)=>{let r=e.id||`${i||`episode`}-${t+1}`,o=n(t+1),s=[e,...a.filter(t=>t.id!==e.id)];return{...l,id:r,mid:i,episode_name:o,links:s}});return{seriesTitle:l.name,seriesList:a,contents:u}}function x({params:y,initialContents:x}){let S=v(`components.pages.feedSeries`),C=v(`components.common.seriesEpisodes`),{locale:w,seriesId:T,episodeNum:E=`1`}=y,{userInfo:D,isLogin:O}=n(),{followIds:ie,setFollowIds:ae}=t(),k=p(()=>x??[],[x]),[A,j]=m({}),{data:oe}=a([u.CHANNEL],()=>r()),se=e(oe?.data),M=p(()=>`feed-series:${w||`default`}:${T}`,[w,T]),ce=p(()=>{let e=Number.parseInt(E??`1`,10);return Number.isNaN(e)?0:Math.max(0,e-1)},[E]),[N,le]=s(`${M}-active-index`,ce),[P,ue]=s(`${M}-user-interacted`,!1),[de,fe]=s(`${M}-series-title-toggle`,!1),[F,I]=m(!1),L=re(null),[R,z]=m(0),B=g(`div`,{ref:L,className:`fixed top-0 left-0 right-0 z-40`,children:g(ee,{data:{list:se}})});ne(()=>{let e=L.current;if(!e)return;let t=()=>{z(Math.max(0,Math.round(e.getBoundingClientRect().height)))};t();let n=new ResizeObserver(()=>t());return n.observe(e),()=>{n.disconnect()}},[]);let{data:V,isFetching:H}=a(p(()=>[`feed-series-detail`,T],[T]),async()=>T?await i({id:T}):null,{enabled:!!T&&k.length===0}),U=p(()=>V?.data?.video,[V]),W=p(()=>U?b(U,T,e=>C(`episodeLabel`,{episode:e})):null,[U,T,C]),G=p(()=>k.length>0?k:W?.contents??[],[W?.contents,k]),K=p(()=>Object.keys(A).length===0?G:G.map(e=>{let t=A[e.id];return t?{...e,...t,static:t.static?{...e.static,...t.static}:e.static,author:t.author?{...e.author,...t.author}:e.author}:e}),[G,A]),q=W?.seriesTitle??(k[0]?.name||``),J=W?.seriesList??[],{data:Y}=a(p(()=>[`feed-series-interactions`,T,O],[O,T]),async()=>await c([T],1),{enabled:!!O&&!!T}),X=p(()=>Y?.interaction_list,[Y]);te(()=>{if(!X||X.length===0)return;let e=X.find(e=>e.content_id===T)||X[0];e&&j(t=>{let n=!1,r={...t};for(let t of G){let i=r[t.id],a={...i,is_liked:e.is_liked||!1,is_dislike:e.is_disliked??e.is_dislike??!1,is_collected:e.is_collected||!1,is_followed:e.is_followed||!1};(!i||i.is_liked!==a.is_liked||i.is_dislike!==a.is_dislike||i.is_collected!==a.is_collected||i.is_followed!==a.is_followed)&&(n=!0,r[t.id]=a)}return n?r:t})},[X,G,T]);let Z=f(({})=>{},[]),pe=f(()=>{o.getState().open()},[]),me=f((e,t)=>{let n=t.is_liked!==void 0||t.is_dislike!==void 0||t.is_collected!==void 0||t.is_followed!==void 0||t.static?.like_cnt!==void 0||t.static?.dislike_cnt!==void 0||t.static?.collect_cnt!==void 0||t.static?.comment_cnt!==void 0;j(r=>{if(!n)return{...r,[e]:{...r[e],...t,static:t.static?{...r[e]?.static,...t.static}:r[e]?.static,author:t.author?{...r[e]?.author,...t.author}:r[e]?.author}};let i=!1,a={...r};for(let e of G){let n=e.id,r=a[n],o=t.static?{...r?.static||{},...t.static}:r?.static,s=t.author?{...r?.author||{},...t.author}:r?.author,c={...r,...t,static:o,author:s},l=!1;if(t.is_liked!==void 0&&r?.is_liked!==t.is_liked&&(l=!0),t.is_dislike!==void 0&&r?.is_dislike!==t.is_dislike&&(l=!0),t.is_collected!==void 0&&r?.is_collected!==t.is_collected&&(l=!0),t.is_followed!==void 0&&r?.is_followed!==t.is_followed&&(l=!0),t.static){let e=r?.static||{};t.static.like_cnt!==void 0&&e.like_cnt!==t.static.like_cnt&&(l=!0),t.static.dislike_cnt!==void 0&&e.dislike_cnt!==t.static.dislike_cnt&&(l=!0),t.static.collect_cnt!==void 0&&e.collect_cnt!==t.static.collect_cnt&&(l=!0),t.static.comment_cnt!==void 0&&e.comment_cnt!==t.static.comment_cnt&&(l=!0)}if(t.author&&r?.author){let e=r.author,n=t.author;for(let t of Object.keys(n))if(e?.[t]!==n[t]){l=!0;break}}l&&(i=!0,a[n]=c)}return i?a:r})},[G]),Q=f((e,t)=>{le(e),Z({episodeId:T,episodeNum:e+1,mode:t===`jump`?`replace`:`push`})},[Z,T]),he=f(()=>({showSeriesButton:!0,seriesTitle:q,seriesText:`${N+1}/${J.length||K.length}`,onSeriesClick:()=>I(!0)}),[N,K.length,J.length,q]),$=p(()=>K[N]?.links?.[0]?.id||``,[N,K]);return T?H&&G.length===0?_(h,{children:[B,_(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/80`,children:[S(`feedSeriesClient.episodeLoading`),`...`]})]}):!H&&G.length===0?_(h,{children:[B,g(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/80`,children:S(`feedSeriesClient.noEpisodes`)})]}):_(h,{children:[B,g(l,{items:K,activeIndex:N,top:R,videoConfig:{loop:!1,autoNext:!0},userInteracted:P,onUserInteracted:()=>ue(!0),onActiveIndexChange:Q,onDataUpdate:me,getNavigationInfo:he,currentUserId:D.userId||void 0,followIds:ie,onFollowIdsChange:ae,commentContentId:T,onRequireLogin:pe,activeEpisodeId:$}),F&&g(d,{mode:`selector`,variant:`sheet`,open:F,title:S(`feedSeriesClient.episodeSelectorTitle`),updateStatus:U?.update_status,seriesList:J,activeEpisodeId:$,showEpisodeTitle:de,onToggleTitle:fe,onClose:()=>I(!1),onSelectEpisode:(e,t)=>{I(!1),Q(Math.max(0,t-1),`jump`)}})]}):_(h,{children:[B,_(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/80`,children:[S(`feedSeriesClient.missingEpisode`),` `,`ID`]})]})}export{x as default};
@@ -1,2 +1,2 @@
1
1
 
2
- import{gContentGetVideoDetail as e}from"../../../service/generated/client.mjs";import{HydrationBoundary as t}from"../../../hooks/query/hydration-boundary.mjs";import{defaultLocale as n,isValidLocale as r,resolveLocaleByPriority as i,resolveLocaleFromAcceptLanguage as a}from"../../../i18n.mjs";import{normalizeEpisodeNumber as o,warmupProcessM3u8Auto as s}from"../../common/video-player/process-m3u8-cache.mjs";import{getTranslator as c}from"../../../i18n/translator.mjs";import l from"./feed-series-client.mjs";import{Suspense as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{cookies as p,headers as m}from"next/headers";function h(e){return r(e)?e:n}function g(e){return c(e)(`components.pages.feedSeries.page.videoLoading`)}function _({loadingText:e}){return f(`div`,{className:`relative h-screen w-full overflow-hidden bg-black text-white`,children:[d(`div`,{className:`absolute inset-0 bg-[radial-gradient(circle_at_50%_20%,rgba(255,255,255,0.14),rgba(0,0,0,0.9)_55%)]`}),d(`div`,{className:`absolute left-0 top-0 z-20 w-full px-4 pt-[max(env(safe-area-inset-top),14px)]`,children:d(`div`,{className:`h-10 w-full animate-pulse rounded-full bg-white/15`})}),d(`div`,{className:`pointer-events-none absolute inset-0 z-10 flex items-center justify-center`,children:f(`div`,{className:`relative flex h-[92px] w-[92px] items-center justify-center`,children:[d(`span`,{className:`absolute h-[68px] w-[68px] rounded-full bg-black/55 backdrop-blur-sm`}),d(`span`,{className:`h-10 w-10 animate-spin rounded-full border-[3px] border-white/25 border-t-white`})]})}),d(`div`,{className:`pointer-events-none absolute left-0 right-0 top-[calc(50%+62px)] z-10 text-center text-xs text-white/70`,children:e}),f(`div`,{className:`absolute right-3 bottom-10 z-20 flex flex-col items-center gap-4`,children:[d(`div`,{className:`h-12 w-12 animate-pulse rounded-full bg-white/20`}),d(`div`,{className:`h-6 w-6 animate-pulse rounded-full bg-white/20`}),d(`div`,{className:`h-6 w-6 animate-pulse rounded-full bg-white/20`}),d(`div`,{className:`h-6 w-6 animate-pulse rounded-full bg-white/20`})]}),f(`div`,{className:`absolute bottom-0 left-0 right-[56px] z-20 p-4`,children:[d(`div`,{className:`mb-3 h-5 w-[120px] animate-pulse rounded bg-white/20`}),d(`div`,{className:`mb-2 h-4 w-[75%] animate-pulse rounded bg-white/15`}),d(`div`,{className:`mb-4 h-4 w-[58%] animate-pulse rounded bg-white/15`}),d(`div`,{className:`h-10 w-full animate-pulse rounded-lg bg-white/20`})]})]})}async function v(n){let r=n?.params||{},i=r.seriesId||``,a=o(r.episodeNum,1),c=[];if(i){let t=await e({id:i});s(t?.data?.video?.links,a),c.push({queryKey:[`feed-series-detail`,i],queryFn:()=>Promise.resolve(t)})}return d(t,{prefetch:c,children:d(l,{...n})})}async function y(e){let t=await p(),r=await m();return d(u,{fallback:d(_,{loadingText:g(h(i(t.get(`NEXT_LOCALE`)?.value,a(r.get(`accept-language`)),n)))}),children:d(v,{...e})})}export{y as default};
2
+ import{gContentGetVideoDetail as e}from"../../../service/generated/client.mjs";import{HydrationBoundary as t}from"../../../hooks/query/hydration-boundary.mjs";import{normalizeEpisodeNumber as n,warmupProcessM3u8Auto as r}from"../../common/video-player/process-m3u8-cache.mjs";import{defaultLocale as i,isValidLocale as a,resolveLocaleByPriority as o,resolveLocaleFromAcceptLanguage as s}from"../../../i18n.mjs";import{getTranslator as c}from"../../../i18n/translator.mjs";import l from"./feed-series-client.mjs";import{Suspense as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{cookies as p,headers as m}from"next/headers";function h(e){return a(e)?e:i}function g(e){return c(e)(`components.pages.feedSeries.page.videoLoading`)}function _({loadingText:e}){return f(`div`,{className:`relative h-screen w-full overflow-hidden bg-black text-white`,children:[d(`div`,{className:`absolute inset-0 bg-[radial-gradient(circle_at_50%_20%,rgba(255,255,255,0.14),rgba(0,0,0,0.9)_55%)]`}),d(`div`,{className:`absolute left-0 top-0 z-20 w-full px-4 pt-[max(env(safe-area-inset-top),14px)]`,children:d(`div`,{className:`h-10 w-full animate-pulse rounded-full bg-white/15`})}),d(`div`,{className:`pointer-events-none absolute inset-0 z-10 flex items-center justify-center`,children:f(`div`,{className:`relative flex h-[92px] w-[92px] items-center justify-center`,children:[d(`span`,{className:`absolute h-[68px] w-[68px] rounded-full bg-black/55 backdrop-blur-sm`}),d(`span`,{className:`h-10 w-10 animate-spin rounded-full border-[3px] border-white/25 border-t-white`})]})}),d(`div`,{className:`pointer-events-none absolute left-0 right-0 top-[calc(50%+62px)] z-10 text-center text-xs text-white/70`,children:e}),f(`div`,{className:`absolute right-3 bottom-10 z-20 flex flex-col items-center gap-4`,children:[d(`div`,{className:`h-12 w-12 animate-pulse rounded-full bg-white/20`}),d(`div`,{className:`h-6 w-6 animate-pulse rounded-full bg-white/20`}),d(`div`,{className:`h-6 w-6 animate-pulse rounded-full bg-white/20`}),d(`div`,{className:`h-6 w-6 animate-pulse rounded-full bg-white/20`})]}),f(`div`,{className:`absolute bottom-0 left-0 right-[56px] z-20 p-4`,children:[d(`div`,{className:`mb-3 h-5 w-[120px] animate-pulse rounded bg-white/20`}),d(`div`,{className:`mb-2 h-4 w-[75%] animate-pulse rounded bg-white/15`}),d(`div`,{className:`mb-4 h-4 w-[58%] animate-pulse rounded bg-white/15`}),d(`div`,{className:`h-10 w-full animate-pulse rounded-lg bg-white/20`})]})]})}async function v(i){let a=i?.params||{},o=a.seriesId||``,s=n(a.episodeNum,1),c=[];if(o){let t=await e({id:o});r(t?.data?.video?.links,s),c.push({queryKey:[`feed-series-detail`,o],queryFn:()=>Promise.resolve(t)})}return d(t,{prefetch:c,children:d(l,{...i})})}async function y(e){let t=await p(),n=await m();return d(u,{fallback:d(_,{loadingText:g(h(o(t.get(`NEXT_LOCALE`)?.value,s(n.get(`accept-language`)),i)))}),children:d(v,{...e})})}export{y as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Button as t}from"../../../ui/button.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.mjs";import{pUserUserFeedback as r}from"../../../../service/generated/client.mjs";import{compressImage as i}from"../../../../utils/image-compression.mjs";import{uploadFile as a}from"../../../../utils/upload-file.mjs";import{Image as o}from"../../../ui/image.mjs";import{Box as s}from"../../../ui/box.mjs";import{InputGroup as c,InputGroupAddon as l,InputGroupInput as u,InputGroupTextarea as d}from"../../../ui/input-group.mjs";import{Field as f,FieldLabel as p}from"../../../ui/field.mjs";import{Text as m}from"../../../ui/text.mjs";import{HeaderNav as h}from"../../../common/header-nav/client.mjs";import{AddIcon as g}from"../../../common/icons/add.mjs";import{useRouter as _}from"next/navigation";import{useRef as v,useState as y}from"react";import{XIcon as b}from"lucide-react";import{jsx as x,jsxs as S}from"react/jsx-runtime";import{toast as C}from"sonner";import{useTranslations as w}from"next-intl";const T=new Set([`image/jpeg`,`image/jpg`,`image/png`]),E=new Set([`jpg`,`jpeg`,`png`]);function D(e){let t=e.type.toLowerCase(),n=e.name.split(`.`).pop()?.toLowerCase()||``;return t?T.has(t):E.has(n)}function O({className:T}={}){let E=w(`components.pages.feedback.components`),O=_(),{userId:k}=n(),A=v(null),[j,M]=y({content:``,contact:``}),[N,P]=y([]),[F,I]=y(!1),[L,R]=y(!1),z=!j.content.trim();function B(e,t){M(n=>({...n,[e]:t}))}function V(){L||F||N.length>=3||A.current?.click()}async function H(e){let t=Array.from(e.target.files??[]);if(!t.length)return;let n=3-N.length;if(n<=0){e.target&&(e.target.value=``);return}let r=t.slice(0,n),o=r.filter(D);if(!o.length){C.error(E(`feedbackForm.imageTypeInvalid`)),e.target&&(e.target.value=``);return}o.length!==r.length&&C.error(E(`feedbackForm.imageTypeInvalid`));try{R(!0);let e=[],t=!1;for(let n of o)try{let t=await a(await i(n),1);e.push(t.objectKey)}catch(e){console.error(`上传截图失败`,e),t=!0}e.length&&P(t=>[...t,...e].slice(0,3)),t&&C.error(E(`feedbackForm.screenshotUploadFailed`))}catch(e){console.error(`上传截图失败`,e),C.error(E(`feedbackForm.screenshotUploadFailed`))}finally{R(!1),e.target&&(e.target.value=``)}}function U(e){L||F||P(t=>t.filter((t,n)=>n!==e))}async function W(){let e=j.content.trim(),t=j.contact.trim();if(!e){C.error(E(`feedbackForm.missingFeedback`));return}if(e.length<4){C.error(E(`feedbackForm.contentMinLength`));return}if(!N.length){C.error(E(`feedbackForm.missingScreenshot`));return}if(F)return;let n=C.loading(E(`feedbackForm.loading`));try{I(!0);let i=await r({user_id:k,feedback_content:e,feedback_screenshots:N.length?N:void 0,contact_info:t||void 0});if(i.code===0){M({content:``,contact:``}),P([]),O.push(`/settings`),C.success(E(`feedbackForm.submitsuccess`),{id:n});return}C.error(i.message||E(`feedbackForm.message`),{id:n})}catch(e){console.error(`提交反馈失败`,e),C.error(e.message||E(`feedbackForm.message`),{id:n})}finally{I(!1)}}return S(s,{className:e(`min-h-screen bg-bg2`,T),children:[x(h,{title:E(`feedbackForm.title`),className:`!bg-bg2`,rightChild:x(t,{onClick:W,disabled:F||L||z,children:E(F?`feedbackForm.loading`:`feedbackForm.submit`)})}),S(s,{className:`pb-3`,children:[S(f,{className:`bg-bg2 px-3 border-none`,children:[x(p,{required:!0,children:E(`feedbackForm.label`)}),S(c,{children:[x(d,{className:`!bg-bg1 p-2.5`,maxLength:500,placeholder:E(`feedbackForm.placeholder`),value:j.content,onChange:e=>B(`content`,e.target.value)}),x(l,{className:`!bg-bg1`,align:`block-end`,children:x(`div`,{className:`text-right w-full`,children:S(`span`,{className:`text-xs`,children:[j.content.length,`/500`]})})})]})]}),S(f,{className:`bg-bg2 px-3 border-none`,children:[x(p,{required:!0,children:E(`feedbackForm.screenshotLabel`)}),x(`input`,{ref:A,type:`file`,multiple:!0,accept:`image/jpeg,image/jpg,image/png,.jpg,.jpeg,.png`,className:`hidden`,onChange:H}),S(s,{className:`mt-2 grid grid-cols-3 gap-2`,children:[N.map((e,n)=>S(s,{className:`relative overflow-hidden rounded-lg border border-line1 !bg-bg1 aspect-video`,children:[x(o,{src:e,alt:E(`feedbackForm.alt`),fill:!0,className:`object-cover`}),x(t,{size:`icon-xs`,variant:`secondary`,className:`absolute right-1 top-1 rounded-full bg-bg1/85`,onClick:()=>U(n),"aria-label":E(`feedbackForm.delete`),children:x(b,{})})]},`${e}-${n}`)),N.length<3&&S(s,{className:`flex flex-col aspect-video items-center justify-center gap-2 rounded-lg border border-dashed border-text1/10 !bg-bg1 py-3 text-center`,onClick:V,children:[x(g,{}),x(m,{className:`text-xs text-text3`,children:E(L?`feedbackForm.uploading`:`feedbackForm.addScreenshot`)})]})]})]}),S(f,{className:`bg-bg2 px-3 border-none`,children:[x(p,{children:E(`feedbackForm.contactLabel`)}),S(c,{children:[x(u,{className:`!bg-bg1 p-2.5`,placeholder:E(`feedbackForm.placeholder1_6d0242`),value:j.contact,onChange:e=>B(`contact`,e.target.value)}),x(l,{className:`!bg-bg1`,align:`block-end`,children:x(`div`,{className:`text-right w-full`,children:S(`span`,{className:`text-xs`,children:[j.contact.length,`/100`]})})})]})]})]})]})}export{O as FeedbackForm};
2
+ "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Button as t}from"../../../ui/button.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.mjs";import{pUserUserFeedback as r}from"../../../../service/generated/client.mjs";import{compressImage as i}from"../../../../utils/image-compression.mjs";import{uploadFile as a}from"../../../../utils/upload-file.mjs";import{Image as o}from"../../../ui/image.mjs";import{Box as s}from"../../../ui/box.mjs";import{InputGroup as c,InputGroupAddon as l,InputGroupInput as u,InputGroupTextarea as d}from"../../../ui/input-group.mjs";import{Field as f,FieldLabel as p}from"../../../ui/field.mjs";import{Text as m}from"../../../ui/text.mjs";import{HeaderNav as h}from"../../../common/header-nav/client.mjs";import{AddIcon as g}from"../../../common/icons/add.mjs";import{useRef as _,useState as v}from"react";import{XIcon as y}from"lucide-react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as C}from"next-intl";import{useRouter as w}from"next/navigation";const T=new Set([`image/jpeg`,`image/jpg`,`image/png`]),E=new Set([`jpg`,`jpeg`,`png`]);function D(e){let t=e.type.toLowerCase(),n=e.name.split(`.`).pop()?.toLowerCase()||``;return t?T.has(t):E.has(n)}function O({className:T}={}){let E=C(`components.pages.feedback.components`),O=w(),{userId:k}=n(),A=_(null),[j,M]=v({content:``,contact:``}),[N,P]=v([]),[F,I]=v(!1),[L,R]=v(!1),z=!j.content.trim();function B(e,t){M(n=>({...n,[e]:t}))}function V(){L||F||N.length>=3||A.current?.click()}async function H(e){let t=Array.from(e.target.files??[]);if(!t.length)return;let n=3-N.length;if(n<=0){e.target&&(e.target.value=``);return}let r=t.slice(0,n),o=r.filter(D);if(!o.length){S.error(E(`feedbackForm.imageTypeInvalid`)),e.target&&(e.target.value=``);return}o.length!==r.length&&S.error(E(`feedbackForm.imageTypeInvalid`));try{R(!0);let e=[],t=!1;for(let n of o)try{let t=await a(await i(n),1);e.push(t.objectKey)}catch(e){console.error(`上传截图失败`,e),t=!0}e.length&&P(t=>[...t,...e].slice(0,3)),t&&S.error(E(`feedbackForm.screenshotUploadFailed`))}catch(e){console.error(`上传截图失败`,e),S.error(E(`feedbackForm.screenshotUploadFailed`))}finally{R(!1),e.target&&(e.target.value=``)}}function U(e){L||F||P(t=>t.filter((t,n)=>n!==e))}async function W(){let e=j.content.trim(),t=j.contact.trim();if(!e){S.error(E(`feedbackForm.missingFeedback`));return}if(e.length<4){S.error(E(`feedbackForm.contentMinLength`));return}if(!N.length){S.error(E(`feedbackForm.missingScreenshot`));return}if(F)return;let n=S.loading(E(`feedbackForm.loading`));try{I(!0);let i=await r({user_id:k,feedback_content:e,feedback_screenshots:N.length?N:void 0,contact_info:t||void 0});if(i.code===0){M({content:``,contact:``}),P([]),O.push(`/settings`),S.success(E(`feedbackForm.submitsuccess`),{id:n});return}S.error(i.message||E(`feedbackForm.message`),{id:n})}catch(e){console.error(`提交反馈失败`,e),S.error(e.message||E(`feedbackForm.message`),{id:n})}finally{I(!1)}}return x(s,{className:e(`min-h-screen bg-bg2`,T),children:[b(h,{title:E(`feedbackForm.title`),className:`!bg-bg2`,rightChild:b(t,{onClick:W,disabled:F||L||z,children:E(F?`feedbackForm.loading`:`feedbackForm.submit`)})}),x(s,{className:`pb-3`,children:[x(f,{className:`bg-bg2 px-3 border-none`,children:[b(p,{required:!0,children:E(`feedbackForm.label`)}),x(c,{children:[b(d,{className:`!bg-bg1 p-2.5`,maxLength:500,placeholder:E(`feedbackForm.placeholder`),value:j.content,onChange:e=>B(`content`,e.target.value)}),b(l,{className:`!bg-bg1`,align:`block-end`,children:b(`div`,{className:`text-right w-full`,children:x(`span`,{className:`text-xs`,children:[j.content.length,`/500`]})})})]})]}),x(f,{className:`bg-bg2 px-3 border-none`,children:[b(p,{required:!0,children:E(`feedbackForm.screenshotLabel`)}),b(`input`,{ref:A,type:`file`,multiple:!0,accept:`image/jpeg,image/jpg,image/png,.jpg,.jpeg,.png`,className:`hidden`,onChange:H}),x(s,{className:`mt-2 grid grid-cols-3 gap-2`,children:[N.map((e,n)=>x(s,{className:`relative overflow-hidden rounded-lg border border-line1 !bg-bg1 aspect-video`,children:[b(o,{src:e,alt:E(`feedbackForm.alt`),fill:!0,className:`object-cover`}),b(t,{size:`icon-xs`,variant:`secondary`,className:`absolute right-1 top-1 rounded-full bg-bg1/85`,onClick:()=>U(n),"aria-label":E(`feedbackForm.delete`),children:b(y,{})})]},`${e}-${n}`)),N.length<3&&x(s,{className:`flex flex-col aspect-video items-center justify-center gap-2 rounded-lg border border-dashed border-text1/10 !bg-bg1 py-3 text-center`,onClick:V,children:[b(g,{}),b(m,{className:`text-xs text-text3`,children:E(L?`feedbackForm.uploading`:`feedbackForm.addScreenshot`)})]})]})]}),x(f,{className:`bg-bg2 px-3 border-none`,children:[b(p,{children:E(`feedbackForm.contactLabel`)}),x(c,{children:[b(u,{className:`!bg-bg1 p-2.5`,placeholder:E(`feedbackForm.placeholder1_6d0242`),value:j.contact,onChange:e=>B(`contact`,e.target.value)}),b(l,{className:`!bg-bg1`,align:`block-end`,children:b(`div`,{className:`text-right w-full`,children:x(`span`,{className:`text-xs`,children:[j.contact.length,`/100`]})})})]})]})]})]})}export{O as FeedbackForm};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../biz/basics/fullscreen-feed/runtime/client.mjs";import{useMixedFeedController as t}from"../../biz/basics/fullscreen-feed/runtime/use-mixed-feed-controller.mjs";import{useSeriesFeedController as n}from"../../biz/basics/fullscreen-feed/runtime/use-series-feed-controller.mjs";import{SeriesEpisodes as r}from"../../common/series-episodes/index.mjs";import{usePathname as i}from"next/navigation";import{useCallback as a,useEffect as o,useMemo as s}from"react";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";function f({blockId:f,seriesId:p,initialContents:m,videoConfig:h,hasBottom:g,pageSize:_=6,initialActiveIndex:v=0,items:y,onSwipeTo:b,onEpisodeNavigate:x,onGoToEpisode:S,currentUserId:C,followIds:w,onFollowIdsChange:T,onRequireLogin:E}){let D=d(`components.pages.fullscreenFeed`),O=i(),k=s(()=>{let e=p?`series:${p}`:`block:${f||``}`;return`${O||`unknown`}:fullscreen-feed:${e}:pageSize:${_}`},[f,_,O,p]),A=`${k}:series-controller`,j=`${k}:mixed-controller`,M=n({seriesId:p||``,initialContents:m,initialActiveIndex:v,onEpisodeNavigate:x,keepAliveKey:A}),N=t({blockId:f||``,initialContents:m,initialActiveIndex:v,pageSize:_,keepAliveKey:j}),P=p?M:N,F=y||P.items,I=P.activeIndex,L=P.userInteracted,R=a((e,t)=>{P.setActiveIndex(e,t),p||N.maybeLoadMore(e),b?.({activeIndex:e,items:F,direction:t})},[P,F,b,p,N]),z=a((e,t)=>{P.updateItemData(e,t)},[P]),B=a(e=>P.getNavigationInfo(e),[P]);return o(()=>{S&&S(e=>{R(e,`jump`)})},[S,R]),!f&&!p?l(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/70`,children:D(`page.missingParams`)}):u(c,{children:[l(e,{items:F,activeIndex:I,bottom:g?56:void 0,videoConfig:h,userInteracted:L,onUserInteracted:P.setUserInteracted,onActiveIndexChange:R,onDataUpdate:z,getNavigationInfo:B,currentUserId:C,followIds:w,onFollowIdsChange:T,onRequireLogin:E}),p&&M.isSeriesSelectorOpen&&l(r,{title:D(`page.episodeSelectorTitle`),mode:`selector`,variant:`sheet`,open:M.isSeriesSelectorOpen,seriesList:M.seriesMeta.seriesList,activeEpisodeId:M.activeEpisodeId,onClose:M.closeSeriesSelector,onSelectEpisode:M.onSelectEpisode})]})}export{f as default};
2
+ "use client";import e from"../../biz/basics/fullscreen-feed/runtime/client.mjs";import{useMixedFeedController as t}from"../../biz/basics/fullscreen-feed/runtime/use-mixed-feed-controller.mjs";import{useSeriesFeedController as n}from"../../biz/basics/fullscreen-feed/runtime/use-series-feed-controller.mjs";import{SeriesEpisodes as r}from"../../common/series-episodes/index.mjs";import{useCallback as i,useEffect as a,useMemo as o}from"react";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";import{useTranslations as u}from"next-intl";import{usePathname as d}from"next/navigation";function f({blockId:f,seriesId:p,initialContents:m,videoConfig:h,hasBottom:g,pageSize:_=6,initialActiveIndex:v=0,items:y,onSwipeTo:b,onEpisodeNavigate:x,onGoToEpisode:S,currentUserId:C,followIds:w,onFollowIdsChange:T,onRequireLogin:E}){let D=u(`components.pages.fullscreenFeed`),O=d(),k=o(()=>{let e=p?`series:${p}`:`block:${f||``}`;return`${O||`unknown`}:fullscreen-feed:${e}:pageSize:${_}`},[f,_,O,p]),A=`${k}:series-controller`,j=`${k}:mixed-controller`,M=n({seriesId:p||``,initialContents:m,initialActiveIndex:v,onEpisodeNavigate:x,keepAliveKey:A}),N=t({blockId:f||``,initialContents:m,initialActiveIndex:v,pageSize:_,keepAliveKey:j}),P=p?M:N,F=y||P.items,I=P.activeIndex,L=P.userInteracted,R=i((e,t)=>{P.setActiveIndex(e,t),p||N.maybeLoadMore(e),b?.({activeIndex:e,items:F,direction:t})},[P,F,b,p,N]),z=i((e,t)=>{P.updateItemData(e,t)},[P]),B=i(e=>P.getNavigationInfo(e),[P]);return a(()=>{S&&S(e=>{R(e,`jump`)})},[S,R]),!f&&!p?c(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/70`,children:D(`page.missingParams`)}):l(s,{children:[c(e,{items:F,activeIndex:I,bottom:g?56:void 0,videoConfig:h,userInteracted:L,onUserInteracted:P.setUserInteracted,onActiveIndexChange:R,onDataUpdate:z,getNavigationInfo:B,currentUserId:C,followIds:w,onFollowIdsChange:T,onRequireLogin:E}),p&&M.isSeriesSelectorOpen&&c(r,{title:D(`page.episodeSelectorTitle`),mode:`selector`,variant:`sheet`,open:M.isSeriesSelectorOpen,seriesList:M.seriesMeta.seriesList,activeEpisodeId:M.activeEpisodeId,onClose:M.closeSeriesSelector,onSelectEpisode:M.onSelectEpisode})]})}export{f as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetAppChannelBlock as e,gContentGetAppChannelBlockData as t,gContentListVisibleFloatingBall as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as o}from"../../../hooks/use-auth.mjs";import{useKeepAliveState as s}from"../../common/keep-scroll-position/index.mjs";import{queryKey as c}from"../../../constants/query-key.mjs";import{extractDataByComponentType as l}from"../../biz/utils/transformers/data.mjs";import{useRouter as u}from"next/navigation";import{useEffect as d,useLayoutEffect as f,useMemo as p,useRef as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";const v=`app-scroll-container`;function y(e){return typeof document>`u`?null:document.getElementById(e)}function b(){if(typeof document>`u`)return 0;let e=document.querySelector(`[data-top-nav-root="true"]`);return e&&e.getBoundingClientRect().height||0}function x({currentChannelId:x,isPGC:S}){let C=u(),w=o(),{data:T}=a(c.GET_CONTENT_LIST(x),()=>e({channel_id:x})),{data:E}=a([c.FLOATING_BALL],()=>n()),D=p(()=>T?.data?.blocks||[],[T?.data?.blocks]),O=p(()=>{let e=D.findIndex(e=>e.type===4),t=e>=0?D[e]:null;return{index:e,block:t,blockId:t?.id||``}},[D]),{data:k}=a([c.GUESS_YOU_LIKE_USER_DATA,O.blockId],()=>t({block_id:O.blockId}),{enabled:!!O.blockId}),A=p(()=>{if(O.index<0)return D;let e=k?.data.block?.data?.users||[];return D.map((t,n)=>n===O.index?{...t,data:{...t.data||{},users:e}}:t)},[D,k,O.index]),[j,M]=s(`home-scroll-top-${x}`,0),N=m(null),P=m({restored:!1,lastScrollTop:j,key:x,rafId:null}),F=m(M),I=m(j);d(()=>{F.current=M},[M]),d(()=>{I.current=j},[j]),d(()=>{P.current.key!==x&&(P.current.restored=!1,P.current.lastScrollTop=j,I.current=j,P.current.key=x)},[x,j]);let L=A.length>0;f(()=>{if(!L)return;N.current=y(v);let e=N.current;if(!e||P.current.restored||j<=0)return;let t=b(),n=Math.max(0,j+t);window.requestAnimationFrame(()=>{e.scrollTop=n,P.current.restored=!0,P.current.lastScrollTop=n})},[L,x,j]),d(()=>{N.current=y(v);let e=N.current;if(!e)return;function t(){P.current.restored=!0,P.current.rafId!==null&&window.cancelAnimationFrame(P.current.rafId),P.current.rafId=window.requestAnimationFrame(()=>{P.current.rafId=null;let e=N.current;if(!e)return;let t=e.scrollTop||0,n=b(),r=Math.max(0,t-n);Math.abs(t-P.current.lastScrollTop)>1&&(P.current.lastScrollTop=t,F.current(r))})}e.addEventListener(`scroll`,t,{passive:!0});let n=P.current.rafId;return()=>{n!==null&&window.cancelAnimationFrame(n),e.removeEventListener(`scroll`,t)}},[x]);let R=p(()=>l(A,S),[A,S]),z=p(()=>E?.data?.ball_infos?.find(e=>e.channel_id===x),[E?.data?.ball_infos,x]);return _(h,{children:[z&&g(i,{className:`fixed right-[20px] bottom-[80px] w-[52px] h-[52px] z-30 rounded-[16px] cursor-move select-none bg-[#FD4C5E33] overflow-hidden`,onClick:()=>{w(()=>{z?.jump_url&&C.push(z.jump_url)})},children:g(r,{src:z.material_url||``,alt:z.name||``,fill:!0,priority:!0,fetchPriority:`high`,sizes:`52px`,unoptimized:!0})}),R.map(e=>{let t=e.component,n=e.data.block_id||`block-${e.data.title||``}`;return g(t,{data:e.data},n)})]})}export{x as default};
2
+ "use client";import{gContentGetAppChannelBlock as e,gContentGetAppChannelBlockData as t,gContentListVisibleFloatingBall as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as o}from"../../../hooks/use-auth.mjs";import{useKeepAliveState as s}from"../../common/keep-scroll-position/index.mjs";import{queryKey as c}from"../../../constants/query-key.mjs";import{extractDataByComponentType as l}from"../../biz/utils/transformers/data.mjs";import{useEffect as u,useLayoutEffect as d,useMemo as f,useRef as p}from"react";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";import{useRouter as _}from"next/navigation";const v=`app-scroll-container`;function y(e){return typeof document>`u`?null:document.getElementById(e)}function b(){if(typeof document>`u`)return 0;let e=document.querySelector(`[data-top-nav-root="true"]`);return e&&e.getBoundingClientRect().height||0}function x({currentChannelId:x,isPGC:S}){let C=_(),w=o(),{data:T}=a(c.GET_CONTENT_LIST(x),()=>e({channel_id:x})),{data:E}=a([c.FLOATING_BALL],()=>n()),D=f(()=>T?.data?.blocks||[],[T?.data?.blocks]),O=f(()=>{let e=D.findIndex(e=>e.type===4),t=e>=0?D[e]:null;return{index:e,block:t,blockId:t?.id||``}},[D]),{data:k}=a([c.GUESS_YOU_LIKE_USER_DATA,O.blockId],()=>t({block_id:O.blockId}),{enabled:!!O.blockId}),A=f(()=>{if(O.index<0)return D;let e=k?.data.block?.data?.users||[];return D.map((t,n)=>n===O.index?{...t,data:{...t.data||{},users:e}}:t)},[D,k,O.index]),[j,M]=s(`home-scroll-top-${x}`,0),N=p(null),P=p({restored:!1,lastScrollTop:j,key:x,rafId:null}),F=p(M),I=p(j);u(()=>{F.current=M},[M]),u(()=>{I.current=j},[j]),u(()=>{P.current.key!==x&&(P.current.restored=!1,P.current.lastScrollTop=j,I.current=j,P.current.key=x)},[x,j]);let L=A.length>0;d(()=>{if(!L)return;N.current=y(v);let e=N.current;if(!e||P.current.restored||j<=0)return;let t=b(),n=Math.max(0,j+t);window.requestAnimationFrame(()=>{e.scrollTop=n,P.current.restored=!0,P.current.lastScrollTop=n})},[L,x,j]),u(()=>{N.current=y(v);let e=N.current;if(!e)return;function t(){P.current.restored=!0,P.current.rafId!==null&&window.cancelAnimationFrame(P.current.rafId),P.current.rafId=window.requestAnimationFrame(()=>{P.current.rafId=null;let e=N.current;if(!e)return;let t=e.scrollTop||0,n=b(),r=Math.max(0,t-n);Math.abs(t-P.current.lastScrollTop)>1&&(P.current.lastScrollTop=t,F.current(r))})}e.addEventListener(`scroll`,t,{passive:!0});let n=P.current.rafId;return()=>{n!==null&&window.cancelAnimationFrame(n),e.removeEventListener(`scroll`,t)}},[x]);let R=f(()=>l(A,S),[A,S]),z=f(()=>E?.data?.ball_infos?.find(e=>e.channel_id===x),[E?.data?.ball_infos,x]);return g(m,{children:[z&&h(i,{className:`fixed right-[20px] bottom-[80px] w-[52px] h-[52px] z-30 rounded-[16px] cursor-move select-none bg-[#FD4C5E33] overflow-hidden`,onClick:()=>{w(()=>{z?.jump_url&&C.push(z.jump_url)})},children:h(r,{src:z.material_url||``,alt:z.name||``,fill:!0,priority:!0,fetchPriority:`high`,sizes:`52px`,unoptimized:!0})}),R.map(e=>{let t=e.component,n=e.data.block_id||`block-${e.data.title||``}`;return h(t,{data:e.data},n)})]})}export{x as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetComments as n,gCommunityGetContentInfo as r,gCommunityGetContentList as i,gContentGetAppChannels as a}from"../../../service/generated/client.mjs";import{checkFollowStatus as o}from"../../../utils/follow-service.mjs";import{EmptyState as s}from"../../ui/empty.mjs";import{useRequest as c}from"../../../hooks/query/use-query.mjs";import{useBrowseReport as l}from"../../../hooks/use-browse-report.mjs";import{useKeepAliveEffect as u,useKeepAliveState as d}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as f}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as ee}from"../../../hooks/use-content-operate.mjs";import{queryKey as p}from"../../../constants/query-key.mjs";import m from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{DetailFollowAction as te}from"../../biz/business/detail/detail-follow-action.mjs";import{DetailOperate as ne}from"../../biz/business/detail/detail-operate.mjs";import{PostRecommendList as re}from"../../biz/business/detail/post-recommend-list.mjs";import{DetailHero as h}from"../../biz/business/detail/video-hero.mjs";import g from"../../biz/business/comment/comment-list.mjs";import _ from"../../common/info-card/card-header.mjs";import ie from"../../common/info-card/card-text.mjs";import{useSearchParams as ae}from"next/navigation";import{useCallback as v,useEffect as y,useMemo as b}from"react";import{Fragment as x,jsx as S,jsxs as C}from"react/jsx-runtime";import{useTranslations as oe}from"next-intl";function se(e){if(!e||typeof e!=`object`||!e.content_id)return null;let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1),r=t.filter(e=>e&&e.is_video===!0),i=n.map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),a=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),o=i.length?i:a,s=r.map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),c=o[0]||``,l=e.cover_image||s||c||``,u=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name));return{...t.length?{medias:t}:{},id:e.content_id,mid:e.content_id,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:l,img_y:l,img_width:``,img_height:``,preview_images:o,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:u,source_tags:u.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,static:{like_cnt:e.like_count||0,comment_cnt:e.comment_count||0,share_cnt:e.share_count||0,browse_cnt:e.view_count||0},info:{text:e.content||``,images:o}}}function ce(e){let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1).map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),r=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),i=n.length?n:r,a=t.filter(e=>e&&e.is_video===!0).map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),o=e.cover_image||a||i[0]||``,s=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name)),c=t.length?t:i.filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}));return{...c.length?{medias:c}:{},id:e.content_id||``,mid:e.content_id||``,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:o,img_y:o,img_width:``,img_height:``,preview_images:i,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:s,source_tags:s.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,statics_cnt:{like_cnt:String(e.like_count||0),dislike_cnt:String(e.dislike_count||0),comment_cnt:String(e.comment_count||0),share_cnt:String(e.share_count||0),browse_cnt:String(e.view_count||0),collect_cnt:String(e.collect_count||0)}}}function w({detailId:f,initialInformation:w,initialRecommendList:le,initialCommentList:T,initialCommentTotal:E,initialCommentHasMore:D}){let O=oe(`components.pages.postDetail`),k=ae(),{isLogin:ue,userInfo:de,userId:fe}=t(),A=fe||de?.userId||``;l({contentId:f,contentType:2,enabled:!!f,enableIntervalReport:!1,enableExitReport:!1});let{data:j}=c(b(()=>[`post-detail`,f],[f]),async()=>f?await r({content_id:f}):null,{enabled:!!f}),M=b(()=>{let e=j?.data?.data;return se(e)},[j?.data?.data]),pe=w??M??null,{data:N}=c(b(()=>[`post-detail-recommend`,f],[f]),async()=>f?await i({page:1,page_size:6,sort_by:`recommend`}):null,{enabled:!!f}),P=b(()=>(N?.data?.data?.contents??[]).filter(e=>e.content_id!==f).slice(0,4).map(e=>ce(e)),[f,N?.data?.data?.contents]),F=le??P??[],[I,L]=d(`detail-information-${f}`,pe),[R,z]=d(`detail-recommend-${f}`,F),[B,V]=d(`info-detail-comment-add-count-${f}`,0),H=b(()=>I?.content_type===0,[I?.content_type]),U=b(()=>[`post-detail-comments`,f,1,5],[5,f]),{data:W}=c(U,async()=>f?await n({content_id:f,page:1,page_size:5,sort_by:`latest`}):null,{enabled:!!f}),me=b(()=>{if(T?.length)return T;let e=W?.data?.data?.comments??[];if(e.length>0)return e},[W?.data?.data?.comments,T]),G=b(()=>{if(typeof E==`number`)return E;if(W?.data?.data)return typeof W?.data?.data?.total==`number`?W.data.data.total:void 0},[W?.data?.data,E]),K=b(()=>{if(typeof D==`boolean`)return D;if(W?.data?.data)return W?.data?.data?.has_more??!1},[W?.data?.data,D]),[q,J]=d(`post-detail-comment-total-${f}`,typeof E==`number`?E:void 0);y(()=>{typeof G==`number`&&J(e=>typeof e==`number`?Math.max(e,G):G)},[G,J]);let he=b(()=>[`detail-interaction`,I?.id,I?.content_type],[I?.content_type,I?.id]),Y=I?.up_user||``,ge=!!(A&&Y&&A===Y),_e=b(()=>[`detail-follow-status`,A,Y],[A,Y]),{data:X}=c(he,async()=>!I?.id||typeof I.content_type!=`number`?null:await ee([I.id],2),{enabled:!!I?.id}),{data:Z}=c(_e,async()=>!A||!Y?null:await o({app_id:0,follower_id:A,followee_ids:[Y]}),{enabled:!!ue&&!!A&&!!Y&&!ge});y(()=>{!I&&M&&L(M)},[I,M,L]),y(()=>{R.length===0&&P.length>0&&z(P)},[R.length,P,z]),y(()=>{if(!X?.interaction_list?.[0])return;let e=X.interaction_list[0];L(t=>{if(!t)return t;let n=t.static?.like_cnt,r=typeof n==`number`?n:Number(n||0),i=!!e.is_liked&&r===0;return{...t,like:e.is_liked||!1,dislike:e.is_disliked||!1,collect:e.is_collected||!1,static:i?{...t.static||{},like_cnt:1}:t.static}})},[X,L]),y(()=>{if(!Z?.data||!Y)return;let e=!!Z.data?.is_following_map?.[Y];L(t=>!t||t.is_followed===e?t:{...t,is_followed:e})},[Z?.data,Y,L]);let Q=v(e=>{L(t=>t&&{...t,...e})},[L]);u(()=>{I?.id&&I.id},[I?.id],`detail-page-report-${f}`),y(()=>{!I||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:I.id||f,author_id:I.up_user,object_type:I.content_type,object_category:I.content_type,object_tags:I.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[f,I]),y(()=>{V(0)},[I?.id,V]);let ve=b(()=>(typeof q==`number`?q:typeof G==`number`?G:0)+B,[B,q,G]);y(()=>{k?.get(`tab`)===`comment`&&(typeof window>`u`||window.requestAnimationFrame(()=>{document.getElementById(`detail-comments`)?.scrollIntoView({behavior:`smooth`,block:`start`})}))},[I?.id,k]);let $=I?.status===`2`,{data:ye}=c([p.CHANNEL],()=>a());return C(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 pt-11`,children:[S(`div`,{className:`fixed top-0 left-0 right-0 z-40`,children:S(m,{data:{list:e(ye?.data)}})}),S(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:C(x,{children:[I&&!$&&S(s,{type:`no-content`,text:O(`postDetailClient.postOffline`)}),I&&$&&C(x,{children:[H&&S(h,{information:I,isVideo:!0}),C(`article`,{className:`w-full`,children:[S(_,{infoData:I,rightChild:S(te,{information:I,onUpdate:Q})}),S(ie,{infoData:I,isEllipsis:!1}),!H&&S(`div`,{className:`mt-[12px]`,children:S(h,{information:I,isVideo:!1})})]}),S(ne,{information:I,onUpdate:Q}),C(`div`,{id:`detail-comments`,className:`w-full border-t-[8px] border-bg2 mt-[12px]`,children:[C(`div`,{className:`w-full px-[16px] h-[40px] flex items-center justify-between border-b-[1px] border-line1`,children:[S(`p`,{className:`text-[16px] text-text1 font-bold`,children:O(`postDetailClient.comment`)}),C(`p`,{className:`text-[12px] text-text3`,children:[ve,O(`postDetailClient.reactions`)]})]}),S(g,{listQueryKey:U,contentId:I.id,information:I,isShow:!1,isClickLoad:!0,initialComments:me,initialTotal:G,initialHasMore:K,addCommentCount:()=>{V(e=>e+1)},onTotalChange:e=>{J(t=>typeof t==`number`?Math.max(t,e):e)}})]}),R.length>0&&S(re,{information:I,initRecommendList:R})]}),!I&&S(s,{type:`no-content`,text:O(`postDetailClient.postDeleted`)})]})})]})}export{w as default};
2
+ "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetComments as n,gCommunityGetContentInfo as r,gCommunityGetContentList as i,gContentGetAppChannels as a}from"../../../service/generated/client.mjs";import{checkFollowStatus as o}from"../../../utils/follow-service.mjs";import{EmptyState as s}from"../../ui/empty.mjs";import{useRequest as c}from"../../../hooks/query/use-query.mjs";import{useBrowseReport as l}from"../../../hooks/use-browse-report.mjs";import{useKeepAliveEffect as u,useKeepAliveState as d}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as f}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as ee}from"../../../hooks/use-content-operate.mjs";import{queryKey as p}from"../../../constants/query-key.mjs";import m from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{DetailFollowAction as te}from"../../biz/business/detail/detail-follow-action.mjs";import{DetailOperate as ne}from"../../biz/business/detail/detail-operate.mjs";import{PostRecommendList as re}from"../../biz/business/detail/post-recommend-list.mjs";import{DetailHero as h}from"../../biz/business/detail/video-hero.mjs";import g from"../../biz/business/comment/comment-list.mjs";import ie from"../../common/info-card/card-header.mjs";import _ from"../../common/info-card/card-text.mjs";import{useCallback as ae,useEffect as v,useMemo 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";import{useSearchParams as oe}from"next/navigation";function se(e){if(!e||typeof e!=`object`||!e.content_id)return null;let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1),r=t.filter(e=>e&&e.is_video===!0),i=n.map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),a=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),o=i.length?i:a,s=r.map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),c=o[0]||``,l=e.cover_image||s||c||``,u=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name));return{...t.length?{medias:t}:{},id:e.content_id,mid:e.content_id,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:l,img_y:l,img_width:``,img_height:``,preview_images:o,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:u,source_tags:u.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,static:{like_cnt:e.like_count||0,comment_cnt:e.comment_count||0,share_cnt:e.share_count||0,browse_cnt:e.view_count||0},info:{text:e.content||``,images:o}}}function ce(e){let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1).map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),r=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),i=n.length?n:r,a=t.filter(e=>e&&e.is_video===!0).map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),o=e.cover_image||a||i[0]||``,s=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name)),c=t.length?t:i.filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}));return{...c.length?{medias:c}:{},id:e.content_id||``,mid:e.content_id||``,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:o,img_y:o,img_width:``,img_height:``,preview_images:i,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:s,source_tags:s.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,statics_cnt:{like_cnt:String(e.like_count||0),dislike_cnt:String(e.dislike_count||0),comment_cnt:String(e.comment_count||0),share_cnt:String(e.share_count||0),browse_cnt:String(e.view_count||0),collect_cnt:String(e.collect_count||0)}}}function w({detailId:f,initialInformation:w,initialRecommendList:le,initialCommentList:T,initialCommentTotal:E,initialCommentHasMore:D}){let O=C(`components.pages.postDetail`),k=oe(),{isLogin:ue,userInfo:de,userId:fe}=t(),A=fe||de?.userId||``;l({contentId:f,contentType:2,enabled:!!f,enableIntervalReport:!1,enableExitReport:!1});let{data:j}=c(y(()=>[`post-detail`,f],[f]),async()=>f?await r({content_id:f}):null,{enabled:!!f}),M=y(()=>{let e=j?.data?.data;return se(e)},[j?.data?.data]),pe=w??M??null,{data:N}=c(y(()=>[`post-detail-recommend`,f],[f]),async()=>f?await i({page:1,page_size:6,sort_by:`recommend`}):null,{enabled:!!f}),P=y(()=>(N?.data?.data?.contents??[]).filter(e=>e.content_id!==f).slice(0,4).map(e=>ce(e)),[f,N?.data?.data?.contents]),F=le??P??[],[I,L]=d(`detail-information-${f}`,pe),[R,z]=d(`detail-recommend-${f}`,F),[B,V]=d(`info-detail-comment-add-count-${f}`,0),H=y(()=>I?.content_type===0,[I?.content_type]),U=y(()=>[`post-detail-comments`,f,1,5],[5,f]),{data:W}=c(U,async()=>f?await n({content_id:f,page:1,page_size:5,sort_by:`latest`}):null,{enabled:!!f}),me=y(()=>{if(T?.length)return T;let e=W?.data?.data?.comments??[];if(e.length>0)return e},[W?.data?.data?.comments,T]),G=y(()=>{if(typeof E==`number`)return E;if(W?.data?.data)return typeof W?.data?.data?.total==`number`?W.data.data.total:void 0},[W?.data?.data,E]),K=y(()=>{if(typeof D==`boolean`)return D;if(W?.data?.data)return W?.data?.data?.has_more??!1},[W?.data?.data,D]),[q,J]=d(`post-detail-comment-total-${f}`,typeof E==`number`?E:void 0);v(()=>{typeof G==`number`&&J(e=>typeof e==`number`?Math.max(e,G):G)},[G,J]);let he=y(()=>[`detail-interaction`,I?.id,I?.content_type],[I?.content_type,I?.id]),Y=I?.up_user||``,ge=!!(A&&Y&&A===Y),_e=y(()=>[`detail-follow-status`,A,Y],[A,Y]),{data:X}=c(he,async()=>!I?.id||typeof I.content_type!=`number`?null:await ee([I.id],2),{enabled:!!I?.id}),{data:Z}=c(_e,async()=>!A||!Y?null:await o({app_id:0,follower_id:A,followee_ids:[Y]}),{enabled:!!ue&&!!A&&!!Y&&!ge});v(()=>{!I&&M&&L(M)},[I,M,L]),v(()=>{R.length===0&&P.length>0&&z(P)},[R.length,P,z]),v(()=>{if(!X?.interaction_list?.[0])return;let e=X.interaction_list[0];L(t=>{if(!t)return t;let n=t.static?.like_cnt,r=typeof n==`number`?n:Number(n||0),i=!!e.is_liked&&r===0;return{...t,like:e.is_liked||!1,dislike:e.is_disliked||!1,collect:e.is_collected||!1,static:i?{...t.static||{},like_cnt:1}:t.static}})},[X,L]),v(()=>{if(!Z?.data||!Y)return;let e=!!Z.data?.is_following_map?.[Y];L(t=>!t||t.is_followed===e?t:{...t,is_followed:e})},[Z?.data,Y,L]);let Q=ae(e=>{L(t=>t&&{...t,...e})},[L]);u(()=>{I?.id&&I.id},[I?.id],`detail-page-report-${f}`),v(()=>{!I||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:I.id||f,author_id:I.up_user,object_type:I.content_type,object_category:I.content_type,object_tags:I.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[f,I]),v(()=>{V(0)},[I?.id,V]);let ve=y(()=>(typeof q==`number`?q:typeof G==`number`?G:0)+B,[B,q,G]);v(()=>{k?.get(`tab`)===`comment`&&(typeof window>`u`||window.requestAnimationFrame(()=>{document.getElementById(`detail-comments`)?.scrollIntoView({behavior:`smooth`,block:`start`})}))},[I?.id,k]);let $=I?.status===`2`,{data:ye}=c([p.CHANNEL],()=>a());return S(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 pt-11`,children:[x(`div`,{className:`fixed top-0 left-0 right-0 z-40`,children:x(m,{data:{list:e(ye?.data)}})}),x(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:S(b,{children:[I&&!$&&x(s,{type:`no-content`,text:O(`postDetailClient.postOffline`)}),I&&$&&S(b,{children:[H&&x(h,{information:I,isVideo:!0}),S(`article`,{className:`w-full`,children:[x(ie,{infoData:I,rightChild:x(te,{information:I,onUpdate:Q})}),x(_,{infoData:I,isEllipsis:!1}),!H&&x(`div`,{className:`mt-[12px]`,children:x(h,{information:I,isVideo:!1})})]}),x(ne,{information:I,onUpdate:Q}),S(`div`,{id:`detail-comments`,className:`w-full border-t-[8px] border-bg2 mt-[12px]`,children:[S(`div`,{className:`w-full px-[16px] h-[40px] flex items-center justify-between border-b-[1px] border-line1`,children:[x(`p`,{className:`text-[16px] text-text1 font-bold`,children:O(`postDetailClient.comment`)}),S(`p`,{className:`text-[12px] text-text3`,children:[ve,O(`postDetailClient.reactions`)]})]}),x(g,{listQueryKey:U,contentId:I.id,information:I,isShow:!1,isClickLoad:!0,initialComments:me,initialTotal:G,initialHasMore:K,addCommentCount:()=>{V(e=>e+1)},onTotalChange:e=>{J(t=>typeof t==`number`?Math.max(t,e):e)}})]}),R.length>0&&x(re,{information:I,initRecommendList:R})]}),!I&&x(s,{type:`no-content`,text:O(`postDetailClient.postDeleted`)})]})})]})}export{w as default};
@@ -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{Box as n}from"../../../../ui/box.mjs";import{useLoginModalStore as r}from"../../../../../store/modules/login-modal-store.mjs";import{useRouter as i}from"next/navigation";import{useEffect as a,useMemo as o,useRef as s}from"react";import{jsx as c}from"react/jsx-runtime";import{parseAsString as l,useQueryState as u}from"nuqs";function d({id:d,cookieUserId:f,className:p,children:m}){let h=i(),g=s(null),_=s(!1),v=r(e=>e.isOpen),y=t(e=>e.isLogin),b=t(e=>e.userId),x=y&&!!b,S=b||f,C=d==null||!!d&&!!b&&d===b,w=C?S:d?String(d):void 0,[T]=u(`tab`,l.withDefault(`collect`)),E=o(()=>{let e=C?[`collect`,`publish`,`like`,`history`]:[`collect`,`publish`,`like`];return T&&e.includes(T)?T:e[0]},[C,T]),D=o(()=>`profile-scroll:${w||(C?`mine`:`guest`)}:${E}`,[C,E,w]);return a(()=>{if(v&&!x){_.current=!0;return}!v&&_.current&&(_.current=!1,x&&h.refresh())},[x,v,h]),a(()=>{if(typeof window>`u`)return;let e=g.current;if(!e)return;let t=window.sessionStorage.getItem(D),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{e.scrollTo({top:n})})},[D]),a(()=>{if(typeof window>`u`)return;let e=g.current;if(!e)return;let t=!1,n=()=>{t||(t=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(D,String(e.scrollTop)),t=!1}))};return e.addEventListener(`scroll`,n,{passive:!0}),()=>{e.removeEventListener(`scroll`,n)}},[D]),c(n,{ref:g,className:e(`profile-container w-full bg-bg1 flex flex-col h-full overflow-y-auto`,p),children:m})}export{d as UserProfileContainer};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{Box as n}from"../../../../ui/box.mjs";import{useLoginModalStore as r}from"../../../../../store/modules/login-modal-store.mjs";import{useEffect as i,useMemo as a,useRef as o}from"react";import{jsx as s}from"react/jsx-runtime";import{useRouter as c}from"next/navigation";import{parseAsString as l,useQueryState as u}from"nuqs";function d({id:d,cookieUserId:f,className:p,children:m}){let h=c(),g=o(null),_=o(!1),v=r(e=>e.isOpen),y=t(e=>e.isLogin),b=t(e=>e.userId),x=y&&!!b,S=b||f,C=d==null||!!d&&!!b&&d===b,w=C?S:d?String(d):void 0,[T]=u(`tab`,l.withDefault(`collect`)),E=a(()=>{let e=C?[`collect`,`publish`,`like`,`history`]:[`collect`,`publish`,`like`];return T&&e.includes(T)?T:e[0]},[C,T]),D=a(()=>`profile-scroll:${w||(C?`mine`:`guest`)}:${E}`,[C,E,w]);return i(()=>{if(v&&!x){_.current=!0;return}!v&&_.current&&(_.current=!1,x&&h.refresh())},[x,v,h]),i(()=>{if(typeof window>`u`)return;let e=g.current;if(!e)return;let t=window.sessionStorage.getItem(D),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{e.scrollTo({top:n})})},[D]),i(()=>{if(typeof window>`u`)return;let e=g.current;if(!e)return;let t=!1,n=()=>{t||(t=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(D,String(e.scrollTop)),t=!1}))};return e.addEventListener(`scroll`,n,{passive:!0}),()=>{e.removeEventListener(`scroll`,n)}},[D]),s(n,{ref:g,className:e(`profile-container w-full bg-bg1 flex flex-col h-full overflow-y-auto`,p),children:m})}export{d as UserProfileContainer};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gCommunityGetUserCollections as e}from"../../../../service/generated/client.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useRequest as r}from"../../../../hooks/query/use-query.mjs";import i from"../../../ui/legacy/button.mjs";import a from"../../../../assets/icons/publish/publish_collection.mjs";import{CollectionCard as o}from"./collection-card.mjs";import{CollectionPopup as s}from"./collection-popup.mjs";import{useRouter as c}from"next/navigation";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m({active:m,setActive:h}){let g=p(`components.pages.publish.components`),[_,v]=u([]),[y,b]=u(!1),x=c(),{data:S=[]}=r([`publish`,`collection-list`,`preview`,3],async()=>(await e({page:1,page_size:3})).data?.data?.collections??[]);function C(e){v(t=>t.some(t=>t.collection_id===e.collection_id)?t:[e,...t]),h(e.collection_id??``)}let w=l(()=>{let e=new Set,t=[];for(let n of[..._,...S]){let r=n.collection_id??``;if(!(!r||e.has(r))&&(e.add(r),t.push(n),t.length>=3))break}return t},[_,S]);return f(t,{children:[f(t,{className:`flex justify-between items-center px-[16px] py-[12px]`,children:[d(n,{className:`text-[14px] text-text1`,children:g(`collection.syncToCollection`)}),d(i,{type:`button`,className:`!text-[12px] text-theme5 bg-[rgba(253,76,94,.1)] rounded-[20px] w-[64px] h-[24px] px-[8px] py-[4px]`,onClick:()=>b(!0),children:g(`collection.moreCollections`)})]}),f(t,{className:`flex gap-[8px] px-[16px] pb-[12px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:[w.map(e=>d(o,{item:e,active:e.collection_id===m,onClick:()=>h(e.collection_id===m?``:e.collection_id??``)},e.collection_id)),f(i,{className:`flex w-[226px] h-[70px] shrink-0 items-center gap-[12px] rounded-[8px] px-[12px] py-[10px] bg-bg1`,onClick:()=>x.push(`/collection/create?type=publish`),children:[d(a,{width:52,height:52}),d(t,{className:`flex flex-1 flex-col overflow-hidden gap-[4px]`,children:d(n,{className:`text-[14px] text-text2 text-left`,children:g(`collection.createCollection`)})})]})]}),d(s,{open:y,onOpenChange:b,onSelect:C})]})}export{m as Collection};
2
+ "use client";import{gCommunityGetUserCollections as e}from"../../../../service/generated/client.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/legacy/button.mjs";import{useRequest as i}from"../../../../hooks/query/use-query.mjs";import a from"../../../../assets/icons/publish/publish_collection.mjs";import{CollectionCard as o}from"./collection-card.mjs";import{CollectionPopup as s}from"./collection-popup.mjs";import{useMemo as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";import{useRouter as p}from"next/navigation";function m({active:m,setActive:h}){let g=f(`components.pages.publish.components`),[_,v]=l([]),[y,b]=l(!1),x=p(),{data:S=[]}=i([`publish`,`collection-list`,`preview`,3],async()=>(await e({page:1,page_size:3})).data?.data?.collections??[]);function C(e){v(t=>t.some(t=>t.collection_id===e.collection_id)?t:[e,...t]),h(e.collection_id??``)}let w=c(()=>{let e=new Set,t=[];for(let n of[..._,...S]){let r=n.collection_id??``;if(!(!r||e.has(r))&&(e.add(r),t.push(n),t.length>=3))break}return t},[_,S]);return d(t,{children:[d(t,{className:`flex justify-between items-center px-[16px] py-[12px]`,children:[u(n,{className:`text-[14px] text-text1`,children:g(`collection.syncToCollection`)}),u(r,{type:`button`,className:`!text-[12px] text-theme5 bg-[rgba(253,76,94,.1)] rounded-[20px] w-[64px] h-[24px] px-[8px] py-[4px]`,onClick:()=>b(!0),children:g(`collection.moreCollections`)})]}),d(t,{className:`flex gap-[8px] px-[16px] pb-[12px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:[w.map(e=>u(o,{item:e,active:e.collection_id===m,onClick:()=>h(e.collection_id===m?``:e.collection_id??``)},e.collection_id)),d(r,{className:`flex w-[226px] h-[70px] shrink-0 items-center gap-[12px] rounded-[8px] px-[12px] py-[10px] bg-bg1`,onClick:()=>x.push(`/collection/create?type=publish`),children:[u(a,{width:52,height:52}),u(t,{className:`flex flex-1 flex-col overflow-hidden gap-[4px]`,children:u(n,{className:`text-[14px] text-text2 text-left`,children:g(`collection.createCollection`)})})]})]}),u(s,{open:y,onOpenChange:b,onSelect:C})]})}export{m as Collection};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../ui/button.mjs";import{Box as t}from"../../../ui/box.mjs";import n from"../../../../assets/icons/close.mjs";import{useRouter as r}from"next/navigation";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{useTranslations as o}from"next-intl";function s({onPublish:s,isEmpty:c}){let l=o(`components.pages.publish.components`),u=r();return a(t,{className:`flex h-[60px] w-full items-center justify-between px-[16px]`,children:[i(e,{type:`button`,className:`p-3 text-text1 bg-transparent`,onClick:()=>u.back(),children:i(n,{className:`h-[16px] w-[16px]`})}),i(e,{className:`h-[32px] rounded-[8px] bg-linear-to-r from-[#FD4C5E] to-[#F05D19] px-[12px] text-[16px] text-white font-normal`,disabled:c,onClick:s,children:l(`header.publish`)})]})}export{s as PublishHeader};
2
+ "use client";import{Button as e}from"../../../ui/button.mjs";import{Box as t}from"../../../ui/box.mjs";import n from"../../../../assets/icons/close.mjs";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{useTranslations as a}from"next-intl";import{useRouter as o}from"next/navigation";function s({onPublish:s,isEmpty:c}){let l=a(`components.pages.publish.components`),u=o();return i(t,{className:`flex h-[60px] w-full items-center justify-between px-[16px]`,children:[r(e,{type:`button`,className:`p-3 text-text1 bg-transparent`,onClick:()=>u.back(),children:r(n,{className:`h-[16px] w-[16px]`})}),r(e,{className:`h-[32px] rounded-[8px] bg-linear-to-r from-[#FD4C5E] to-[#F05D19] px-[12px] text-[16px] text-white font-normal`,disabled:c,onClick:s,children:l(`header.publish`)})]})}export{s as PublishHeader};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../utils/cn.mjs";import{AlertDialog as t,AlertDialogAction as n,AlertDialogCancel as r,AlertDialogContent as ee,AlertDialogDescription as te,AlertDialogFooter as ne,AlertDialogHeader as re,AlertDialogTitle as i}from"../../ui/alert-dialog.mjs";import{getAtUserElement as ie}from"../../../utils/common.mjs";import ae from"../../../utils/event-bus.mjs";import{pCommunityPublishContent as oe}from"../../../service/generated/client.mjs";import{Box as se}from"../../ui/box.mjs";import{useKeyboardOpen as ce}from"../../../hooks/use-keyboard-open.mjs";import a from"../../ui/popup.mjs";import{useMediaPreview as o}from"../../common/media-preview/index.mjs";import{eventKey as s}from"../../../constants/event-key.mjs";import{UploadProgress as c}from"./components/upload-progress.mjs";import{ContactList as l}from"../../biz/business/contact/contact-list.mjs";import{Collection as u}from"./components/collection.mjs";import{MAX_MATERIAL_COUNT as d}from"./constants.mjs";import{filterAtUserNames as le}from"./utils/publish-utils.mjs";import{PublishEditor as ue}from"./components/editor.mjs";import{PublishHeader as de}from"./components/header.mjs";import{MaterialGrid as fe}from"./components/material-grid.mjs";import{Toolbar as pe}from"./components/toolbar.mjs";import{useFileUpload as me}from"./hooks/use-file-upload.mjs";import{useRouter as he}from"next/navigation";import{useCallback as f,useEffect as ge,useMemo as _e,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{useTranslations as v}from"next-intl";function y({className:y}={}){let b=v(`components.pages.publish`),ve=he(),x=p(null),[ye,S]=m(!1),[C,w]=m(`0`),{isOpen:T}=ce(),[E,D]=m(null),[O,k]=m([]),[A,j]=m(``),[M,N]=m(``),[P,F]=m(``),[I,L]=m(0),[be,R]=m(``),[z,B]=m(``),[xe,V]=m(0),[H,U]=m(``),[W,G]=m([]),[Se,K]=m(!1),[Ce,q]=m(!1),[we,Te]=m(``),J=p(null);ge(()=>()=>{ae.emit(s.WAIT_LOADING_SHOW,{show:!1})},[]);let Y=f(e=>(Te(e),q(!0),new Promise(e=>{J.current=e})),[]),{selectFile:X}=me({onProgressUpdate:(e,t,n,r)=>{D(r>0?{currentFiles:e,totalFiles:t,currentTasks:n,totalTasks:r}:null)}}),Z=f(async()=>{if(A){if(!await Y(b(`pageClient.switchToPostConfirm`)))return;j(``),N(``),F(``),L(0),V(0),R(``),B(``)}if(O.length>=d){_.error(b(`pageClient.maxMaterialCount`));return}let e=await X(`material`,{maxMaterialCount:d-O.length});!e||e.type!==`material`||(e.errors.length>0&&_.error(e.errors.length===1?e.errors[0]:b(`pageClient.uploadFailedCount`,{count:e.errors.length})),e.items.length>0&&k(t=>[...t,...e.items].slice(0,d)))},[Y,O.length,X,B,N,F,k,R,L,V,j,b,A]),Ee=f(async()=>{if(O.length>0){if(!await Y(b(`pageClient.switchToVideoConfirm`)))return;k([])}let e=await X(`video`);!e||e.type!==`video`||(j(e.videoUrl),N(e.coverUrl),F(e.coverUrl),R(e.resolution),B(e.coverImageResolution),L(e.videoDuration),V(e.videoSize))},[Y,O.length,X,B,N,F,k,R,L,V,j,b]);function De(e){S(e)}function Oe(){S(!1)}let Q=_e(()=>(H.trim()===``||H.trim()===`<br>`)&&O.length===0&&!A,[H,O.length,A]),$=o(),ke=f(()=>{$.open(O.map(e=>({src:e.media_url,type:e.is_video?`video`:`image`,cover:e.cover_image})))},[O,$]),Ae=f(e=>{k(t=>t.filter((t,n)=>n!==e))},[k]),je=f(()=>{j(``),N(``),F(``),L(0),V(0),R(``),B(``)},[N,F,B,R,L,V,j]),Me=f(async()=>{let e=await X(`cover`);!e||e.type!==`cover`||(N(e.coverUrl),B(e.coverImageResolution))},[X,B,N]),Ne=f(e=>{S(!1),G(t=>[...t,e]),x.current?.restoreSelection();let t=`${ie(e)}&nbsp;`;x.current?.insertHtml(t)},[G]),Pe=f(()=>{x.current?.saveSelection(),S(!0)},[]);return g(se,{className:e(`relative min-h-screen max-w-full bg-bg2 overflow-hidden flex flex-col`,y),children:[h(de,{onPublish:async()=>{if(!Se){K(!0);try{if(Q){_.error(b(`pageClient.editContentFirst`));return}let e=H;if(e=e.replace(/<br>/g,``),!e&&O.length===0&&!A){_.error(b(`pageClient.editContentFirst`));return}let t=le(e,W),n={content:e,mentioned_users:t,collection_ids:C===`0`?[]:[C]};O.length>0?(n.medias=O.map(e=>(delete e.index,e)),n.type=1):A?(n.medias=[{media_url:A,is_video:!0,cover_image:M,video_resolution:be,cover_image_resolution:z,video_duration:I,video_size:xe}],n.type=2):n.type=3,await oe(n),_.success(b(`pageClient.publishSuccess`)),k([]),j(``),N(``),F(``),L(0),V(0),R(``),B(``),U(``),G([]),w(`0`),ve.back()}catch(e){console.error(e),_.error(b(`pageClient.publishFailed`))}finally{K(!1)}}},isEmpty:Q}),h(ue,{ref:x,content:H,onContentChange:U,atUsers:W,onAtUsersChange:G}),E&&h(c,{currentFiles:E.currentFiles,totalFiles:E.totalFiles,currentTasks:E.currentTasks,totalTasks:E.totalTasks}),(O.length>0||A)&&h(fe,{materialList:O,videoUrl:A,videoDuration:I,coverUrl:M,originCoverUrl:P,isKeyboardOpen:T,onMaterialDelete:Ae,onVideoDelete:je,onMaterialAdd:Z,onCoverClick:Me,onPreview:ke}),h(pe,{isKeyboardOpen:T,onMaterialClick:()=>void Z(),onVideoClick:()=>void Ee(),onAtUserClick:Pe}),h(u,{active:C,setActive:w}),h(t,{open:Ce,onOpenChange:e=>{q(e),e||(J.current?.(!1),J.current=null)},children:g(ee,{children:[g(re,{children:[h(i,{children:b(`pageClient.title`)}),h(te,{children:we})]}),g(ne,{children:[h(r,{onClick:()=>{q(!1),J.current?.(!1),J.current=null},children:b(`pageClient.cancel`)}),h(n,{onClick:()=>{q(!1),J.current?.(!0),J.current=null},children:b(`pageClient.resume`)})]})]})}),h(a,{open:ye,onOpenChange:De,showCloseButton:!1,className:`w-full rounded-[8px] bg-bg2`,children:h(l,{onSelect:Ne,onClose:Oe})})]})}export{y as PublishPageClient};
2
+ "use client";import{cn as e}from"../../../utils/cn.mjs";import{AlertDialog as t,AlertDialogAction as n,AlertDialogCancel as r,AlertDialogContent as ee,AlertDialogDescription as te,AlertDialogFooter as ne,AlertDialogHeader as re,AlertDialogTitle as ie}from"../../ui/alert-dialog.mjs";import{getAtUserElement as i}from"../../../utils/common.mjs";import ae from"../../../utils/event-bus.mjs";import{pCommunityPublishContent as oe}from"../../../service/generated/client.mjs";import{Box as se}from"../../ui/box.mjs";import{useKeyboardOpen as ce}from"../../../hooks/use-keyboard-open.mjs";import{useMediaPreview as a}from"../../common/media-preview/index.mjs";import o from"../../ui/popup.mjs";import{eventKey as s}from"../../../constants/event-key.mjs";import{UploadProgress as c}from"./components/upload-progress.mjs";import{ContactList as l}from"../../biz/business/contact/contact-list.mjs";import{Collection as u}from"./components/collection.mjs";import{MAX_MATERIAL_COUNT as d}from"./constants.mjs";import{filterAtUserNames as le}from"./utils/publish-utils.mjs";import{PublishEditor as ue}from"./components/editor.mjs";import{PublishHeader as de}from"./components/header.mjs";import{MaterialGrid as fe}from"./components/material-grid.mjs";import{Toolbar as pe}from"./components/toolbar.mjs";import{useFileUpload as me}from"./hooks/use-file-upload.mjs";import{useCallback as f,useEffect as he,useMemo as ge,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{useTranslations as _e}from"next-intl";import{useRouter as v}from"next/navigation";function y({className:y}={}){let b=_e(`components.pages.publish`),ve=v(),x=p(null),[ye,S]=m(!1),[C,w]=m(`0`),{isOpen:T}=ce(),[E,D]=m(null),[O,k]=m([]),[A,j]=m(``),[M,N]=m(``),[P,F]=m(``),[I,L]=m(0),[be,R]=m(``),[z,B]=m(``),[xe,V]=m(0),[H,U]=m(``),[W,G]=m([]),[Se,K]=m(!1),[Ce,q]=m(!1),[we,Te]=m(``),J=p(null);he(()=>()=>{ae.emit(s.WAIT_LOADING_SHOW,{show:!1})},[]);let Y=f(e=>(Te(e),q(!0),new Promise(e=>{J.current=e})),[]),{selectFile:X}=me({onProgressUpdate:(e,t,n,r)=>{D(r>0?{currentFiles:e,totalFiles:t,currentTasks:n,totalTasks:r}:null)}}),Z=f(async()=>{if(A){if(!await Y(b(`pageClient.switchToPostConfirm`)))return;j(``),N(``),F(``),L(0),V(0),R(``),B(``)}if(O.length>=d){_.error(b(`pageClient.maxMaterialCount`));return}let e=await X(`material`,{maxMaterialCount:d-O.length});!e||e.type!==`material`||(e.errors.length>0&&_.error(e.errors.length===1?e.errors[0]:b(`pageClient.uploadFailedCount`,{count:e.errors.length})),e.items.length>0&&k(t=>[...t,...e.items].slice(0,d)))},[Y,O.length,X,B,N,F,k,R,L,V,j,b,A]),Ee=f(async()=>{if(O.length>0){if(!await Y(b(`pageClient.switchToVideoConfirm`)))return;k([])}let e=await X(`video`);!e||e.type!==`video`||(j(e.videoUrl),N(e.coverUrl),F(e.coverUrl),R(e.resolution),B(e.coverImageResolution),L(e.videoDuration),V(e.videoSize))},[Y,O.length,X,B,N,F,k,R,L,V,j,b]);function De(e){S(e)}function Oe(){S(!1)}let Q=ge(()=>(H.trim()===``||H.trim()===`<br>`)&&O.length===0&&!A,[H,O.length,A]),$=a(),ke=f(()=>{$.open(O.map(e=>({src:e.media_url,type:e.is_video?`video`:`image`,cover:e.cover_image})))},[O,$]),Ae=f(e=>{k(t=>t.filter((t,n)=>n!==e))},[k]),je=f(()=>{j(``),N(``),F(``),L(0),V(0),R(``),B(``)},[N,F,B,R,L,V,j]),Me=f(async()=>{let e=await X(`cover`);!e||e.type!==`cover`||(N(e.coverUrl),B(e.coverImageResolution))},[X,B,N]),Ne=f(e=>{S(!1),G(t=>[...t,e]),x.current?.restoreSelection();let t=`${i(e)}&nbsp;`;x.current?.insertHtml(t)},[G]),Pe=f(()=>{x.current?.saveSelection(),S(!0)},[]);return g(se,{className:e(`relative min-h-screen max-w-full bg-bg2 overflow-hidden flex flex-col`,y),children:[h(de,{onPublish:async()=>{if(!Se){K(!0);try{if(Q){_.error(b(`pageClient.editContentFirst`));return}let e=H;if(e=e.replace(/<br>/g,``),!e&&O.length===0&&!A){_.error(b(`pageClient.editContentFirst`));return}let t=le(e,W),n={content:e,mentioned_users:t,collection_ids:C===`0`?[]:[C]};O.length>0?(n.medias=O.map(e=>(delete e.index,e)),n.type=1):A?(n.medias=[{media_url:A,is_video:!0,cover_image:M,video_resolution:be,cover_image_resolution:z,video_duration:I,video_size:xe}],n.type=2):n.type=3,await oe(n),_.success(b(`pageClient.publishSuccess`)),k([]),j(``),N(``),F(``),L(0),V(0),R(``),B(``),U(``),G([]),w(`0`),ve.back()}catch(e){console.error(e),_.error(b(`pageClient.publishFailed`))}finally{K(!1)}}},isEmpty:Q}),h(ue,{ref:x,content:H,onContentChange:U,atUsers:W,onAtUsersChange:G}),E&&h(c,{currentFiles:E.currentFiles,totalFiles:E.totalFiles,currentTasks:E.currentTasks,totalTasks:E.totalTasks}),(O.length>0||A)&&h(fe,{materialList:O,videoUrl:A,videoDuration:I,coverUrl:M,originCoverUrl:P,isKeyboardOpen:T,onMaterialDelete:Ae,onVideoDelete:je,onMaterialAdd:Z,onCoverClick:Me,onPreview:ke}),h(pe,{isKeyboardOpen:T,onMaterialClick:()=>void Z(),onVideoClick:()=>void Ee(),onAtUserClick:Pe}),h(u,{active:C,setActive:w}),h(t,{open:Ce,onOpenChange:e=>{q(e),e||(J.current?.(!1),J.current=null)},children:g(ee,{children:[g(re,{children:[h(ie,{children:b(`pageClient.title`)}),h(te,{children:we})]}),g(ne,{children:[h(r,{onClick:()=>{q(!1),J.current?.(!1),J.current=null},children:b(`pageClient.cancel`)}),h(n,{onClick:()=>{q(!1),J.current?.(!0),J.current=null},children:b(`pageClient.resume`)})]})]})}),h(o,{open:ye,onOpenChange:De,showCloseButton:!1,className:`w-full rounded-[8px] bg-bg2`,children:h(l,{onSelect:Ne,onClose:Oe})})]})}export{y as PublishPageClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as r}from"../../../service/generated/client.mjs";import{Text as i}from"../../ui/text.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useSearchHistory as o}from"../../../hooks/use-search-history.mjs";import{SearchHistoryServer as s}from"../../biz/business/search-history/server.mjs";import{eventKey as c}from"../../../constants/event-key.mjs";import l from"./hot-recommend.mjs";import u from"./hot-search.mjs";import d from"./search-result/index.mjs";import f from"./top-header.mjs";import{useSearchParams as p}from"next/navigation";import{memo as m,useEffect as h,useMemo as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";const S=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.post`,value:`info`},{labelKey:`tabs.user`,value:`user`}],C=m(({searchType:e,onChange:t,tabList:n})=>y(`nav`,{className:`w-full h-[42px] bg-bg1 flex items-center px-[3px] sticky top-[53px] left-0 z-50`,children:n.map(n=>y(i,{className:`h-[30px] rounded-[15px] leading-[30px] px-[9px] text-[16px] bg-transparent transition-all duration-150 ${e===n.value?`text-theme5 !text-[20px] font-bold`:`text-text2`}`,onClick:()=>{e!==n.value&&t(n.value)},children:n.label},n.value))}));function w(){let i=x(`components.pages.search.pageClient`),{userInfo:m}=n(),w=m?.user_id||`guest`,T=p().get(`q`)?.toString()||``,E=T?decodeURIComponent(T):``,{data:D,refetch:O}=a([`hotSearchKey`],()=>r({user_id:w})),k=g(()=>D?.data?.recommend_list??[],[D]),[A,j]=_(E),M=g(()=>S.map(e=>({value:e.value,label:i(e.labelKey)})),[i]),[N,P]=_(E),[F,I]=_(0),[L,R]=_(S[0].value),[,z]=_([]),{history:B,addHistory:V}=o({storageKey:w}),H=g(()=>A.trim()===``?k.length>0||B.length>0||A.trim()===``:!1,[k,A,B]),U=g(()=>A.trim()!==``&&!H,[A,H]);return h(()=>(t.on(c.EXCHANGE_SEARCH_TYPE,R),()=>{t.off(c.EXCHANGE_SEARCH_TYPE,R)}),[R]),b(`div`,{className:`w-full min-h-screen bg-bg1 pb-[12px]`,children:[y(f,{setSearchInputVal:t=>{t!==A&&(z([]),j(t),e({q:t}))},initInputVal:N,initInputVersion:F,addSearchHistory:V}),H&&b(`div`,{className:`w-full pt-[8px]`,children:[B.length>0&&y(s,{title:i(`searchHistory`),rows:`2`,onHistoryClick:e=>{P(e),I(e=>e+1)}}),y(u,{initHotSearchKeywordList:k,onRefreshHotKey:async()=>(await O()).data??{code:0,message:``,data:{recommend_list:[]}},onClick:e=>{P(e.title||``),I(e=>e+1)}})]}),y(l,{isShow:A.trim()===``}),U&&b(v,{children:[y(C,{searchType:L,tabList:M,onChange:e=>{R(e),z([])}}),y(d,{inputVal:A,searchType:L},`${L}-${A}`)]})]})}export{w as default};
2
+ "use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as r}from"../../../service/generated/client.mjs";import{Text as i}from"../../ui/text.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useSearchHistory as o}from"../../../hooks/use-search-history.mjs";import{eventKey as s}from"../../../constants/event-key.mjs";import{SearchHistoryServer as c}from"../../biz/business/search-history/server.mjs";import l from"./hot-recommend.mjs";import u from"./hot-search.mjs";import d from"./search-result/index.mjs";import f from"./top-header.mjs";import{memo as p,useEffect as m,useMemo as h,useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";import{useSearchParams as x}from"next/navigation";const S=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.post`,value:`info`},{labelKey:`tabs.user`,value:`user`}],C=p(({searchType:e,onChange:t,tabList:n})=>v(`nav`,{className:`w-full h-[42px] bg-bg1 flex items-center px-[3px] sticky top-[53px] left-0 z-50`,children:n.map(n=>v(i,{className:`h-[30px] rounded-[15px] leading-[30px] px-[9px] text-[16px] bg-transparent transition-all duration-150 ${e===n.value?`text-theme5 !text-[20px] font-bold`:`text-text2`}`,onClick:()=>{e!==n.value&&t(n.value)},children:n.label},n.value))}));function w(){let i=b(`components.pages.search.pageClient`),{userInfo:p}=n(),w=p?.user_id||`guest`,T=x().get(`q`)?.toString()||``,E=T?decodeURIComponent(T):``,{data:D,refetch:O}=a([`hotSearchKey`],()=>r({user_id:w})),k=h(()=>D?.data?.recommend_list??[],[D]),[A,j]=g(E),M=h(()=>S.map(e=>({value:e.value,label:i(e.labelKey)})),[i]),[N,P]=g(E),[F,I]=g(0),[L,R]=g(S[0].value),[,z]=g([]),{history:B,addHistory:V}=o({storageKey:w}),H=h(()=>A.trim()===``?k.length>0||B.length>0||A.trim()===``:!1,[k,A,B]),U=h(()=>A.trim()!==``&&!H,[A,H]);return m(()=>(t.on(s.EXCHANGE_SEARCH_TYPE,R),()=>{t.off(s.EXCHANGE_SEARCH_TYPE,R)}),[R]),y(`div`,{className:`w-full min-h-screen bg-bg1 pb-[12px]`,children:[v(f,{setSearchInputVal:t=>{t!==A&&(z([]),j(t),e({q:t}))},initInputVal:N,initInputVersion:F,addSearchHistory:V}),H&&y(`div`,{className:`w-full pt-[8px]`,children:[B.length>0&&v(c,{title:i(`searchHistory`),rows:`2`,onHistoryClick:e=>{P(e),I(e=>e+1)}}),v(u,{initHotSearchKeywordList:k,onRefreshHotKey:async()=>(await O()).data??{code:0,message:``,data:{recommend_list:[]}},onClick:e=>{P(e.title||``),I(e=>e+1)}})]}),v(l,{isShow:A.trim()===``}),U&&y(_,{children:[v(C,{searchType:L,tabList:M,onChange:e=>{R(e),z([])}}),v(d,{inputVal:A,searchType:L},`${L}-${A}`)]})]})}export{w as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetRecommendVideoList as e}from"../../../../service/generated/client.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{EmptyState as r}from"../../../ui/empty.mjs";import{usePaginated as i,useRefetchQuery as a,useUpdateRequest as o}from"../../../../hooks/query/use-query.mjs";import{getPostDetailPagePath as s}from"../../../../utils/tools.mjs";import{UserActivityList as c}from"../../../common/list/user-activity-list/user-activity-list.mjs";import{apiCollectCustom as l}from"../../../../utils/api-collect.mjs";import{VideoListItemSkeleton as u}from"../../../common/skeleton/video-list-item-skeleton.mjs";import{useCardDecoration as d}from"../../../../hooks/use-card-decoration.mjs";import f from"../../../ui/rate.mjs";import{mapRecommendContentToUserActivityItem as p}from"../search-utils.mjs";import{memo as m,useCallback as h,useMemo as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";import b from"next/link";const x=m(()=>_(n,{className:`w-full px-[12px] pt-[12px]`,children:Array.from({length:3}).map((e,t)=>_(u,{},`search-video-skeleton-${t}`))}));x.displayName=`SearchVideoListSkeleton`;const S=m(({item:e})=>{let{getCalculationScore:r}=d();return v(b,{className:`w-full flex items-center justify-between mb-[12px] pb-[12px] border-b border-line1 cursor-pointer px-[12px]`,href:s({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[_(n,{className:`w-[76px] h-[102px] shrink-0 rounded-[8px] overflow-hidden relative bg-bg2`,children:_(t,{src:e.img_y||e.img_x||``,fill:!0,objectFit:`cover`,alt:e.name||``})}),v(n,{className:`flex-1 min-w-0 flex flex-col ml-[12px]`,children:[_(`span`,{className:`leading-[26px] text-text1 text-[18px] font-bold max-w-[200px] line-clamp-1 mb-[4px]`,children:e.name||``}),v(n,{className:`flex items-center`,style:{transform:`scale(0.6)`,transformOrigin:`left center`},children:[_(f,{allowHalf:!0,value:r({score:String(e.score??0)})}),_(`span`,{className:`ml-[8px] text-[24px] text-[#F59E0B] font-bold leading-[24px]`,children:e.score?(Number(e.score)/10).toFixed(1):0})]}),v(n,{className:`w-full mt-[4px] flex items-center shrink-0 pr-[12px]`,children:[_(n,{className:`w-fit h-[20px] leading-[20px] px-[6px] text-text3 text-[12px] bg-line1 rounded-[4px] shrink-0 mr-[10px]`,children:e.group_name}),_(`span`,{className:`text-text2 text-[14px] leading-[22px] flex-1 min-w-0 line-clamp-1`,children:e.description})]})]})]})});S.displayName=`VideoItem`;const C=m(({list:e})=>_(n,{className:`w-full px-[12px] pt-[12px]`,children:e.map((e,t)=>_(S,{item:e},String(e.video_id??t)))}));C.displayName=`VideoList`;const w=m(({list:e,onUpdate:t,onActionSuccess:n})=>{let r=h(n=>{let r=e.findIndex(e=>e.content_id===n.content_id);if(r!==-1){let i=[...e];i[r]=n,t(i)}},[e,t]);return _(c,{list:g(()=>e.map(e=>({...p(e),onLikeSuccess(t){r({...e,like_count:String(t.count),dislike_count:t.dislikeCount===void 0?e.dislike_count:String(t.dislikeCount),interaction:{...e.interaction,is_liked:t.isLiked,is_dislike:t.isDisliked??e.interaction?.is_dislike}})},onDislikeSuccess(t){r({...e,like_count:t.likeCount===void 0?e.like_count:String(t.likeCount),dislike_count:String(t.count),interaction:{...e.interaction,is_dislike:t.isDisliked,is_liked:t.isLiked??e.interaction?.is_liked}})}})),[r,e]),showGroupHeaders:!1,onActionSuccess:n})});w.displayName=`InfoList`;const T=m(({searchType:t,inputVal:s})=>{let l=y(`components.pages.search.searchResult`),u=h(async n=>await e({data_type:2,extra_params:JSON.stringify({type:t===`video`?3:2,keywords:s}),page:n||1,page_size:20}),[s,20,t]),d=g(()=>[`searchByKeyForVideoInfo`,s,t===`video`?3:2],[s,t]),f=i({key:d,initialPageParam:1,async queryFn(e){let n=await u(e);return(t===`video`?n?.data?.videos:n?.data?.contents)??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),m=g(()=>{let e=f.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[f.data?.pages]),v=g(()=>m,[m,t]),b=o(),S=a(),w=h(e=>{b(d,t=>{if(!t)return t;let n=t.pages.map(t=>({...t,list:(t.list??[]).map(t=>t.content_id===e.content_id?e:t)}));return{...t,pages:n}})},[d,b]),T=h(()=>{S(d)},[d,S]),E=h(e=>({...p(e),onLikeSuccess(t){w({...e,like_count:String(t.count),dislike_count:t.dislikeCount===void 0?e.dislike_count:String(t.dislikeCount),interaction:{...e.interaction,is_liked:t.isLiked,is_dislike:t.isDisliked??e.interaction?.is_dislike}})},onDislikeSuccess(t){w({...e,like_count:t.likeCount===void 0?e.like_count:String(t.likeCount),dislike_count:String(t.count),interaction:{...e.interaction,is_dislike:t.isDisliked,is_liked:t.isLiked??e.interaction?.is_liked}})}}),[w]),D=g(()=>v.map(E),[E,v]),O=f.isPending||f.isFetching,k=t===`video`&&O&&v.length===0;return _(n,{className:`w-full`,children:t===`video`?k?_(x,{}):v.length>0?_(C,{list:v}):_(r,{type:`no-content`,text:l(`searchVideoInfo.noRelevantContent`),className:`mt-[12px]`}):_(c,{list:D,loading:O,hasMore:f.hasNextPage??!1,loadMore:async e=>{if(e!==!1)try{f&&await f.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},showGroupHeaders:!1,emptyText:l(`searchVideoInfo.noRelevantContent`),onActionSuccess:T})})});T.displayName=`SearchInfoOrVideoList`;export{C as VideoList,T as default};
2
+ "use client";import{gContentGetRecommendVideoList as e}from"../../../../service/generated/client.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{EmptyState as r}from"../../../ui/empty.mjs";import{usePaginated as i,useRefetchQuery as a,useUpdateRequest as o}from"../../../../hooks/query/use-query.mjs";import{getPostDetailPagePath as s}from"../../../../utils/tools.mjs";import{apiCollectCustom as c}from"../../../../utils/api-collect.mjs";import{UserActivityList as l}from"../../../common/list/user-activity-list/user-activity-list.mjs";import{VideoListItemSkeleton as u}from"../../../common/skeleton/video-list-item-skeleton.mjs";import{useCardDecoration as d}from"../../../../hooks/use-card-decoration.mjs";import f from"../../../ui/rate.mjs";import{mapRecommendContentToUserActivityItem as p}from"../search-utils.mjs";import{memo as m,useCallback as h,useMemo as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";import b from"next/link";const x=m(()=>_(n,{className:`w-full px-[12px] pt-[12px]`,children:Array.from({length:3}).map((e,t)=>_(u,{},`search-video-skeleton-${t}`))}));x.displayName=`SearchVideoListSkeleton`;const S=m(({item:e})=>{let{getCalculationScore:r}=d();return v(b,{className:`w-full flex items-center justify-between mb-[12px] pb-[12px] border-b border-line1 cursor-pointer px-[12px]`,href:s({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[_(n,{className:`w-[76px] h-[102px] shrink-0 rounded-[8px] overflow-hidden relative bg-bg2`,children:_(t,{src:e.img_y||e.img_x||``,fill:!0,objectFit:`cover`,alt:e.name||``})}),v(n,{className:`flex-1 min-w-0 flex flex-col ml-[12px]`,children:[_(`span`,{className:`leading-[26px] text-text1 text-[18px] font-bold max-w-[200px] line-clamp-1 mb-[4px]`,children:e.name||``}),v(n,{className:`flex items-center`,style:{transform:`scale(0.6)`,transformOrigin:`left center`},children:[_(f,{allowHalf:!0,value:r({score:String(e.score??0)})}),_(`span`,{className:`ml-[8px] text-[24px] text-[#F59E0B] font-bold leading-[24px]`,children:e.score?(Number(e.score)/10).toFixed(1):0})]}),v(n,{className:`w-full mt-[4px] flex items-center shrink-0 pr-[12px]`,children:[_(n,{className:`w-fit h-[20px] leading-[20px] px-[6px] text-text3 text-[12px] bg-line1 rounded-[4px] shrink-0 mr-[10px]`,children:e.group_name}),_(`span`,{className:`text-text2 text-[14px] leading-[22px] flex-1 min-w-0 line-clamp-1`,children:e.description})]})]})]})});S.displayName=`VideoItem`;const C=m(({list:e})=>_(n,{className:`w-full px-[12px] pt-[12px]`,children:e.map((e,t)=>_(S,{item:e},String(e.video_id??t)))}));C.displayName=`VideoList`;const w=m(({list:e,onUpdate:t,onActionSuccess:n})=>{let r=h(n=>{let r=e.findIndex(e=>e.content_id===n.content_id);if(r!==-1){let i=[...e];i[r]=n,t(i)}},[e,t]);return _(l,{list:g(()=>e.map(e=>({...p(e),onLikeSuccess(t){r({...e,like_count:String(t.count),dislike_count:t.dislikeCount===void 0?e.dislike_count:String(t.dislikeCount),interaction:{...e.interaction,is_liked:t.isLiked,is_dislike:t.isDisliked??e.interaction?.is_dislike}})},onDislikeSuccess(t){r({...e,like_count:t.likeCount===void 0?e.like_count:String(t.likeCount),dislike_count:String(t.count),interaction:{...e.interaction,is_dislike:t.isDisliked,is_liked:t.isLiked??e.interaction?.is_liked}})}})),[r,e]),showGroupHeaders:!1,onActionSuccess:n})});w.displayName=`InfoList`;const T=m(({searchType:t,inputVal:s})=>{let c=y(`components.pages.search.searchResult`),u=h(async n=>await e({data_type:2,extra_params:JSON.stringify({type:t===`video`?3:2,keywords:s}),page:n||1,page_size:20}),[s,20,t]),d=g(()=>[`searchByKeyForVideoInfo`,s,t===`video`?3:2],[s,t]),f=i({key:d,initialPageParam:1,async queryFn(e){let n=await u(e);return(t===`video`?n?.data?.videos:n?.data?.contents)??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),m=g(()=>{let e=f.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[f.data?.pages]),v=g(()=>m,[m,t]),b=o(),S=a(),w=h(e=>{b(d,t=>{if(!t)return t;let n=t.pages.map(t=>({...t,list:(t.list??[]).map(t=>t.content_id===e.content_id?e:t)}));return{...t,pages:n}})},[d,b]),T=h(()=>{S(d)},[d,S]),E=h(e=>({...p(e),onLikeSuccess(t){w({...e,like_count:String(t.count),dislike_count:t.dislikeCount===void 0?e.dislike_count:String(t.dislikeCount),interaction:{...e.interaction,is_liked:t.isLiked,is_dislike:t.isDisliked??e.interaction?.is_dislike}})},onDislikeSuccess(t){w({...e,like_count:t.likeCount===void 0?e.like_count:String(t.likeCount),dislike_count:String(t.count),interaction:{...e.interaction,is_dislike:t.isDisliked,is_liked:t.isLiked??e.interaction?.is_liked}})}}),[w]),D=g(()=>v.map(E),[E,v]),O=f.isPending||f.isFetching,k=t===`video`&&O&&v.length===0;return _(n,{className:`w-full`,children:t===`video`?k?_(x,{}):v.length>0?_(C,{list:v}):_(r,{type:`no-content`,text:c(`searchVideoInfo.noRelevantContent`),className:`mt-[12px]`}):_(l,{list:D,loading:O,hasMore:f.hasNextPage??!1,loadMore:async e=>{if(e!==!1)try{f&&await f.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},showGroupHeaders:!1,emptyText:c(`searchVideoInfo.noRelevantContent`),onActionSuccess:T})})});T.displayName=`SearchInfoOrVideoList`;export{C as VideoList,T as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../assets/icons/clear.mjs";import{Input as t}from"../../ui/input.mjs";import{useKeepAliveEffect as n,useKeepAliveState as r}from"../../common/keep-scroll-position/index.mjs";import i from"../../../assets/icons/search.mjs";import{isPCEnv as a}from"../../../utils/tools.mjs";import{HeaderNav as o}from"../../common/header-nav/client.mjs";import s from"./style.module.mjs";import{useSearchParams as c}from"next/navigation";import{memo as l,useCallback as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";const m=l(({setSearchInputVal:l,initInputVal:m,initInputVersion:h,addSearchHistory:g})=>{let _=p(`components.pages.search`),[v,y]=r(`search-input-val`,``),b=c().get(`q`),x=e=>{let t=e.target.value;y(t)},S=u(e=>{l(e),g(e)},[g,l]);return n(()=>{m&&(y(m),S(m))},[m,h],`search-init-input-effect`),n(()=>{b&&(y(b),S(b))},[b],`search-url-params-effect`),d(o,{className:`h-[55px]`,rightChild:d(`div`,{className:`cursor-pointer w-[52px] flex items-center justify-center`,onClick:()=>{v&&S(v)},children:d(`span`,{className:`text-[16px] text-text1`,children:_(`topHeader.search`)})}),centerChild:f(`header`,{className:`w-[calc(100%-52px-48px)] ml-[-15px] h-[35px] rounded-[20px] flex items-center justify-center relative overflow-hidden border-line1 border-[1px]`,children:[d(`div`,{className:`absolute left-0 top-0 w-full h-full bg-bg2 opacity-50`}),d(i,{className:`w-[16px] h-[16px] text-text3 absolute left-[12px] top-[9px] z-[1]`}),d(t,{placeholder:_(`topHeader.placeholder`),maxLength:20,value:v,className:s.searchInput,onChange:x,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!v)return;S(v)}}}),v&&d(e,{className:`w-[15px] h-[15px] text-text3 z-10 absolute right-[12px]`,onClick:()=>{a()||(y(``),l(``))}})]})})});export{m as default};
2
+ "use client";import{Input as e}from"../../ui/input.mjs";import{useKeepAliveEffect as t,useKeepAliveState as n}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as r}from"../../../utils/tools.mjs";import{HeaderNav as i}from"../../common/header-nav/client.mjs";import a from"../../../assets/icons/search.mjs";import o from"../../../assets/icons/clear.mjs";import s from"./style.module.mjs";import{memo as c,useCallback as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";import{useSearchParams as p}from"next/navigation";const m=c(({setSearchInputVal:c,initInputVal:m,initInputVersion:h,addSearchHistory:g})=>{let _=f(`components.pages.search`),[v,y]=n(`search-input-val`,``),b=p().get(`q`),x=e=>{let t=e.target.value;y(t)},S=l(e=>{c(e),g(e)},[g,c]);return t(()=>{m&&(y(m),S(m))},[m,h],`search-init-input-effect`),t(()=>{b&&(y(b),S(b))},[b],`search-url-params-effect`),u(i,{className:`h-[55px]`,rightChild:u(`div`,{className:`cursor-pointer w-[52px] flex items-center justify-center`,onClick:()=>{v&&S(v)},children:u(`span`,{className:`text-[16px] text-text1`,children:_(`topHeader.search`)})}),centerChild:d(`header`,{className:`w-[calc(100%-52px-48px)] ml-[-15px] h-[35px] rounded-[20px] flex items-center justify-center relative overflow-hidden border-line1 border-[1px]`,children:[u(`div`,{className:`absolute left-0 top-0 w-full h-full bg-bg2 opacity-50`}),u(a,{className:`w-[16px] h-[16px] text-text3 absolute left-[12px] top-[9px] z-[1]`}),u(e,{placeholder:_(`topHeader.placeholder`),maxLength:20,value:v,className:s.searchInput,onChange:x,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!v)return;S(v)}}}),v&&u(o,{className:`w-[15px] h-[15px] text-text3 z-10 absolute right-[12px]`,onClick:()=>{r()||(y(``),c(``))}})]})})});export{m as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useOpenLoginAsync as r}from"../../../../hooks/use-auth.mjs";import i from"../../../ui/legacy/button.mjs";import{memo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";const l=a(({className:a}={})=>{let l=c(`components.pages.userFollow.components`),u=r();return s(t,{className:e(`w-full bg-bg1 py-[20px] flex flex-col items-center justify-center relative z-[1]`,a),children:[s(n,{className:`text-[16px] leading-[22px] text-text1`,children:[l(`followNoLogin.notLoggedIn`),`~`]}),o(i,{className:`mt-[13px] w-[130px] h-[36px] leading-[36px] rounded-[8px] bg-theme5 text-[16px] text-white`,onClick:async()=>{await u()&&console.warn(`login success`)},children:l(`followNoLogin.login`)})]})});l.displayName=`FollowNoLogin`;export{l as FollowNoLogin};
2
+ "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/legacy/button.mjs";import{useOpenLoginAsync as i}from"../../../../hooks/use-auth.mjs";import{memo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";const l=a(({className:a}={})=>{let l=c(`components.pages.userFollow.components`),u=i();return s(t,{className:e(`w-full bg-bg1 py-[20px] flex flex-col items-center justify-center relative z-[1]`,a),children:[s(n,{className:`text-[16px] leading-[22px] text-text1`,children:[l(`followNoLogin.notLoggedIn`),`~`]}),o(r,{className:`mt-[13px] w-[130px] h-[36px] leading-[36px] rounded-[8px] bg-theme5 text-[16px] text-white`,onClick:async()=>{await u()&&console.warn(`login success`)},children:l(`followNoLogin.login`)})]})});l.displayName=`FollowNoLogin`;export{l as FollowNoLogin};
@@ -1,2 +1,2 @@
1
1
 
2
- import{gContentGetVideoDetail as e}from"../../../service/generated/client.mjs";import{HydrationBoundary as t}from"../../../hooks/query/hydration-boundary.mjs";import{revalidate as n}from"../../../constants/revalidate.mjs";import{normalizeEpisodeNumber as r,warmupProcessM3u8Auto as i}from"../../common/video-player/process-m3u8-cache.mjs";import{DetailStructuredData as a}from"../../biz/business/detail/detail-structured-data.mjs";import o from"./video-detail-client.mjs";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";async function u({params:u,isWebView:d=!1,materialConfig:f}){let{level:p}=await u,m=p?.[0]||``,h=p.findIndex(e=>e===`episode`),g=r(h>=0?p?.[h+1]:void 0,1),_=null,v=null;if(m){_=await e({id:m},{revalidate:n.TIME});let t=_?.data?.video;t&&typeof t==`object`&&(await i(t.links,g),v={...t,mid:t.mid||t.id||``,content_type:0,episode_cnt:t.links?.length||0})}return l(s,{children:[v&&c(a,{information:v,detailId:m}),c(t,{prefetch:m&&_?[{queryKey:[`video-detail`,m],queryFn:()=>Promise.resolve(_)}]:[],children:c(o,{detailId:m,isWebView:d,materialConfig:f})})]})}export{u as default};
2
+ import{gContentGetVideoDetail as e}from"../../../service/generated/client.mjs";import{HydrationBoundary as t}from"../../../hooks/query/hydration-boundary.mjs";import{normalizeEpisodeNumber as n,warmupProcessM3u8Auto as r}from"../../common/video-player/process-m3u8-cache.mjs";import{revalidate as i}from"../../../constants/revalidate.mjs";import{DetailStructuredData as a}from"../../biz/business/detail/detail-structured-data.mjs";import o from"./video-detail-client.mjs";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";async function u({params:u,isWebView:d=!1,materialConfig:f}){let{level:p}=await u,m=p?.[0]||``,h=p.findIndex(e=>e===`episode`),g=n(h>=0?p?.[h+1]:void 0,1),_=null,v=null;if(m){_=await e({id:m},{revalidate:i.TIME});let t=_?.data?.video;t&&typeof t==`object`&&(await r(t.links,g),v={...t,mid:t.mid||t.id||``,content_type:0,episode_cnt:t.links?.length||0})}return l(s,{children:[v&&c(a,{information:v,detailId:m}),c(t,{prefetch:m&&_?[{queryKey:[`video-detail`,m],queryFn:()=>Promise.resolve(_)}]:[],children:c(o,{detailId:m,isWebView:d,materialConfig:f})})]})}export{u as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{cn as t}from"../../../utils/cn.mjs";import n from"../../../utils/get-res-url.mjs";import{decryptImageToUint8Array as r}from"../../../utils/decrypt-image-client.mjs";import{gContentGetAppChannels as i,gContentGetVideoDetail as a,pInteractionBrowse as o}from"../../../service/generated/client.mjs";import{uint8ArrayToBase64 as s}from"../../../utils/uint8.mjs";import{EmptyState as c}from"../../ui/empty.mjs";import{useRequest as l}from"../../../hooks/query/use-query.mjs";import{useKeepAliveEffect as u,useKeepAliveState as d}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as f}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as p}from"../../../hooks/use-content-operate.mjs";import{queryKey as m}from"../../../constants/query-key.mjs";import ee from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{resolveMaterialProps as te,videoDetailMaterials as ne}from"../../biz/business/detail/materials/registry.mjs";import{DetailHero as re}from"../../biz/business/detail/video-hero.mjs";import{useParams as h,useSearchParams as g}from"next/navigation";import{Fragment as _,useCallback as v,useEffect as y,useMemo as b}from"react";import{Fragment as x,jsx as S,jsxs as C}from"react/jsx-runtime";import{useTranslations as w}from"next-intl";const T=[{id:`detail-info`,componentName:`video-detail-info`,props:{}},{id:`detail-actions`,componentName:`video-detail-actions`,props:{}},{id:`detail-recommend`,componentName:`video-detail-recommend`,props:{rows:2}}];function E({detailId:f,initialInformation:E,isWebView:D=!1,materialConfig:O}){let k=w(`components.pages.videoDetail`),ie=h(),ae=g(),A=ie.level,j=Array.isArray(A)?A:typeof A==`string`?[A]:[],M=j.findIndex(e=>e===`episode`),N=M>=0?j[M+1]:j[2],P=Math.max(1,Number(N)||1),[F,I]=d(`detail-current-series-num-${f}`,P);y(()=>{I(P)},[f,P,I]);let L=Math.max(0,F-1),{data:R}=l(b(()=>[`video-detail`,f],[f]),async()=>f?await a({id:f}):null,{enabled:!!f}),z=b(()=>{let e=R?.data?.video;return!e||typeof e!=`object`?null:{...e,content_type:1,episode_cnt:e.links?.length||0}},[R?.data?.video]),oe=E??z??null,[B,V]=d(`detail-information-${f}`,oe),H=B?.links?.[L]?.id||``,{data:U,isFetching:W,isFetchedAfterMount:G,isSuccess:K}=l(b(()=>[`detail-interaction`,B?.id,B?.content_type,H,F],[H,F,B?.content_type,B?.id]),async()=>!B?.id||typeof B.content_type!=`number`?null:await p([B.id],1),{enabled:D?!1:!!B?.id,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),se=b(()=>{if(!G||W||!K)return 0;let e=U?.interaction_list?.[0]?.browse_record,t=Number(e?.browse_duration||0);if(!Number.isFinite(t)||t<=0)return 0;let n=String(e?.browse_episode||``).trim();if(!n)return t;let r=Number.parseInt(n,10);return Number.isNaN(r)?0:r===F?t:0},[F,U,G,W,K]),[ce,le]=d(`info-detail-active-tab-${f}`,`video`),[q,J]=d(`info-detail-comment-add-count-${f}`,0),[Y,ue]=d(`info-detail-comment-total-${f}`,void 0),X=v(async e=>{let t=String(f||``).trim();if(!t)return;let n=e.browse_episode||F,r=Date.now(),i=String(e.browse_key||r);try{await o({app_id:0,content_type:1,content_id:t,browse_duration:Number(e.browse_duration||0),browse_episode:String(n),browse_key:i,browse_page_ts:r})}catch(e){console.error(`上报播放进度失败:`,e)}},[F,f]);y(()=>{!B&&z&&V(z),window.video={[f]:B},window.getVideoInfoAsync=async()=>{let e=B?.links?.[L]?.m3u8_url||``,t=e?`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${n()}/m3f/${e}`)}`:``,i=B?.img_y||B?.img_x||B?.preview_images?.[0]||``,a=``,o=await r(i);return o&&(a=s(o.bytes)),{poster:a,src:t,title:B?.name||``}},window.getVideoBrowseRecordAsync=async()=>{let e=await p([f],1);return e?.interaction_list?.[0]?e.interaction_list[0].browse_record:null},window.reportVideoBrowse=X},[f,L,B,z,V,X]),y(()=>{if(!U?.interaction_list?.[0])return;let e=U.interaction_list[0];V(t=>{if(!t)return t;let n=t.static?.like_cnt,r=typeof n==`number`?n:Number(n||0),i=!!e.is_liked&&r===0;return{...t,like:e.is_liked||!1,dislike:e.is_disliked||!1,collect:e.is_collected||!1,static:i?{...t.static||{},like_cnt:1}:t.static}})},[U,V]);let Z=v(e=>{V(t=>t&&{...t,...e})},[V]);u(()=>{B?.id&&B.id},[B?.id],`detail-page-report-${f}`),y(()=>{!B||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:B.id||f,author_id:B.up_user,object_type:B.content_type,object_category:B.content_type,object_tags:B.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[f,B]),y(()=>{J(0)},[H,J]),b(()=>(typeof Y==`number`?Y:0)+q,[q,Y]);let de=v(()=>{},[!1,le]);v(()=>{J(e=>e+1)},[J]),y(()=>{},[!1,de,B?.id,ae]);let Q=v(e=>{if(D){let t=encodeURIComponent(B?.name||``),n=`/webview/${B?.id}/${t}/episode/${e}`;window.location.href=n}else I(e)},[B?.id,B?.name,D,I]),$=B?.status===`1`,{data:fe}=l([m.CHANNEL],()=>i()),pe=e(fe?.data),me=b(()=>{if(O!==void 0){let e=new Map(T.map(e=>[e.componentName,e]));return O.map(t=>{let n=e.get(t.componentName);return{...n,...t,props:{...n?.props??{},...t.props??{}}}})}return T},[O]),he=v(e=>{if(!B)return null;let t=ne[e.componentName];if(!t)return null;let n=t.clientComponent,r=te(t,e.props);if(!r.isValid)return S(`div`,{children:`组件配置错误`});let i={};return e.componentName.startsWith(`video-detail-info`)&&(i.information=B,i.currentSeriesNum=F,i.onEpisodeChange=Q,i.isShow=!0),e.componentName===`video-detail-actions`&&(i.information=B,i.onUpdate=Z),e.componentName===`video-detail-recommend`&&(i.detailId=f),S(n,{...r.props,...i})},[F,f,Q,Z,B,!0]);return C(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 ${D?``:`pt-11`}`,children:[!D&&S(`div`,{className:`fixed bg-black top-0 left-0 right-0 z-[1000]`,children:S(ee,{data:{list:pe}})}),S(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:C(x,{children:[B&&!$&&S(c,{type:`no-content`,text:k(`videoDetailClient.videoUnavailable`)}),B&&$&&C(x,{children:[!D&&S(re,{isVideo:!0,information:B,episodeIndex:L,resumeProgressSeconds:se}),S(`div`,{id:`selectPopupPosition`,className:`w-full`}),!1,C(`div`,{className:t(`w-full`,!1),children:[me.map(e=>S(_,{children:he(e)},e.id)),!1]}),!1]}),!B&&S(c,{type:`no-content`,text:k(`videoDetailClient.videoDeleted`)})]})})]})}export{E as default};
2
+ "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{cn as t}from"../../../utils/cn.mjs";import n from"../../../utils/get-res-url.mjs";import{decryptImageToUint8Array as r}from"../../../utils/decrypt-image-client.mjs";import{gContentGetAppChannels as i,gContentGetVideoDetail as a,pInteractionBrowse as o}from"../../../service/generated/client.mjs";import{uint8ArrayToBase64 as s}from"../../../utils/uint8.mjs";import{EmptyState as c}from"../../ui/empty.mjs";import{useRequest as l}from"../../../hooks/query/use-query.mjs";import{useKeepAliveEffect as u,useKeepAliveState as d}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as f}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as p}from"../../../hooks/use-content-operate.mjs";import{queryKey as m}from"../../../constants/query-key.mjs";import ee from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{resolveMaterialProps as te,videoDetailMaterials as ne}from"../../biz/business/detail/materials/registry.mjs";import{DetailHero as re}from"../../biz/business/detail/video-hero.mjs";import{Fragment as h,useCallback as g,useEffect as _,useMemo as v}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import{useTranslations as ie}from"next-intl";import{useParams as S,useSearchParams as C}from"next/navigation";const w=[{id:`detail-info`,componentName:`video-detail-info`,props:{}},{id:`detail-actions`,componentName:`video-detail-actions`,props:{}},{id:`detail-recommend`,componentName:`video-detail-recommend`,props:{rows:2}}];function T({detailId:f,initialInformation:T,isWebView:E=!1,materialConfig:D}){let O=ie(`components.pages.videoDetail`),k=S(),ae=C(),A=k.level,j=Array.isArray(A)?A:typeof A==`string`?[A]:[],M=j.findIndex(e=>e===`episode`),N=M>=0?j[M+1]:j[2],P=Math.max(1,Number(N)||1),[F,I]=d(`detail-current-series-num-${f}`,P);_(()=>{I(P)},[f,P,I]);let L=Math.max(0,F-1),{data:R}=l(v(()=>[`video-detail`,f],[f]),async()=>f?await a({id:f}):null,{enabled:!!f}),z=v(()=>{let e=R?.data?.video;return!e||typeof e!=`object`?null:{...e,content_type:1,episode_cnt:e.links?.length||0}},[R?.data?.video]),oe=T??z??null,[B,V]=d(`detail-information-${f}`,oe),H=B?.links?.[L]?.id||``,{data:U,isFetching:W,isFetchedAfterMount:G,isSuccess:K}=l(v(()=>[`detail-interaction`,B?.id,B?.content_type,H,F],[H,F,B?.content_type,B?.id]),async()=>!B?.id||typeof B.content_type!=`number`?null:await p([B.id],1),{enabled:E?!1:!!B?.id,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),se=v(()=>{if(!G||W||!K)return 0;let e=U?.interaction_list?.[0]?.browse_record,t=Number(e?.browse_duration||0);if(!Number.isFinite(t)||t<=0)return 0;let n=String(e?.browse_episode||``).trim();if(!n)return t;let r=Number.parseInt(n,10);return Number.isNaN(r)?0:r===F?t:0},[F,U,G,W,K]),[ce,le]=d(`info-detail-active-tab-${f}`,`video`),[q,J]=d(`info-detail-comment-add-count-${f}`,0),[Y,ue]=d(`info-detail-comment-total-${f}`,void 0),X=g(async e=>{let t=String(f||``).trim();if(!t)return;let n=e.browse_episode||F,r=Date.now(),i=String(e.browse_key||r);try{await o({app_id:0,content_type:1,content_id:t,browse_duration:Number(e.browse_duration||0),browse_episode:String(n),browse_key:i,browse_page_ts:r})}catch(e){console.error(`上报播放进度失败:`,e)}},[F,f]);_(()=>{!B&&z&&V(z),window.video={[f]:B},window.getVideoInfoAsync=async()=>{let e=B?.links?.[L]?.m3u8_url||``,t=e?`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${n()}/m3f/${e}`)}`:``,i=B?.img_y||B?.img_x||B?.preview_images?.[0]||``,a=``,o=await r(i);return o&&(a=s(o.bytes)),{poster:a,src:t,title:B?.name||``}},window.getVideoBrowseRecordAsync=async()=>{let e=await p([f],1);return e?.interaction_list?.[0]?e.interaction_list[0].browse_record:null},window.reportVideoBrowse=X},[f,L,B,z,V,X]),_(()=>{if(!U?.interaction_list?.[0])return;let e=U.interaction_list[0];V(t=>{if(!t)return t;let n=t.static?.like_cnt,r=typeof n==`number`?n:Number(n||0),i=!!e.is_liked&&r===0;return{...t,like:e.is_liked||!1,dislike:e.is_disliked||!1,collect:e.is_collected||!1,static:i?{...t.static||{},like_cnt:1}:t.static}})},[U,V]);let Z=g(e=>{V(t=>t&&{...t,...e})},[V]);u(()=>{B?.id&&B.id},[B?.id],`detail-page-report-${f}`),_(()=>{!B||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:B.id||f,author_id:B.up_user,object_type:B.content_type,object_category:B.content_type,object_tags:B.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[f,B]),_(()=>{J(0)},[H,J]),v(()=>(typeof Y==`number`?Y:0)+q,[q,Y]);let de=g(()=>{},[!1,le]);g(()=>{J(e=>e+1)},[J]),_(()=>{},[!1,de,B?.id,ae]);let Q=g(e=>{if(E){let t=encodeURIComponent(B?.name||``),n=`/webview/${B?.id}/${t}/episode/${e}`;window.location.href=n}else I(e)},[B?.id,B?.name,E,I]),$=B?.status===`1`,{data:fe}=l([m.CHANNEL],()=>i()),pe=e(fe?.data),me=v(()=>{if(D!==void 0){let e=new Map(w.map(e=>[e.componentName,e]));return D.map(t=>{let n=e.get(t.componentName);return{...n,...t,props:{...n?.props??{},...t.props??{}}}})}return w},[D]),he=g(e=>{if(!B)return null;let t=ne[e.componentName];if(!t)return null;let n=t.clientComponent,r=te(t,e.props);if(!r.isValid)return b(`div`,{children:`组件配置错误`});let i={};return e.componentName.startsWith(`video-detail-info`)&&(i.information=B,i.currentSeriesNum=F,i.onEpisodeChange=Q,i.isShow=!0),e.componentName===`video-detail-actions`&&(i.information=B,i.onUpdate=Z),e.componentName===`video-detail-recommend`&&(i.detailId=f),b(n,{...r.props,...i})},[F,f,Q,Z,B,!0]);return x(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 ${E?``:`pt-11`}`,children:[!E&&b(`div`,{className:`fixed bg-black top-0 left-0 right-0 z-[1000]`,children:b(ee,{data:{list:pe}})}),b(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:x(y,{children:[B&&!$&&b(c,{type:`no-content`,text:O(`videoDetailClient.videoUnavailable`)}),B&&$&&x(y,{children:[!E&&b(re,{isVideo:!0,information:B,episodeIndex:L,resumeProgressSeconds:se}),b(`div`,{id:`selectPopupPosition`,className:`w-full`}),!1,x(`div`,{className:t(`w-full`,!1),children:[me.map(e=>b(h,{children:he(e)},e.id)),!1]}),!1]}),!B&&b(c,{type:`no-content`,text:O(`videoDetailClient.videoDeleted`)})]})})]})}export{T as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{gContentGetNewstVideoList as t,gContentGetPopularVideoList as n}from"../../../service/generated/client.mjs";import{gContentGetNewstVideoListKey as r,gContentGetPopularVideoListKey as i}from"../../../service/generated/tanstack.mjs";import{Box as a}from"../../ui/box.mjs";import{InfiniteScroll as o}from"../../ui/infinite-scroll.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import l from"../../../assets/icons/left_arrow.mjs";import{getNextVideoListPageParam as u,resolveNextCursor as d}from"./types.mjs";import{VideoListItemComponent as f}from"./video-list-item.mjs";import{useRouter as p}from"next/navigation";import{useMemo as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import v from"next/link";const y=[];function b({title:b=`列表页`,tags:x=y}){let S=p(),[C,w]=h(`hot`),T={page_size:10,tags:x.length?x:void 0},{data:E,fetchNextPage:D,hasNextPage:O}=c({key:C===`hot`?i(T):r(T),queryFn:async e=>{let r={page_size:10,cursor:e||void 0,tags:x.length?x:void 0},i=(C===`hot`?await n(r):await t(r)).data;return{list:i?.videos??[],nextCursor:d(i)}},getNextPageParam:u,initialPageParam:``}),k=m(()=>E?.pages?.flatMap(e=>e.list)??[],[E?.pages]);function A(){S.back()}let j=m(()=>k.map(e=>{let t=e.id??e.mid??``;return g(v,{href:`/video/${t}/${e.name??``}`,children:g(f,{item:e})},t)}),[k]);return _(a,{as:`main`,className:`h-[100dvh] max-h-[100dvh] flex flex-col bg-bg1 overflow-hidden [overscroll-behavior-y:none]`,children:[_(a,{className:`shrink-0 bg-bg1`,children:[_(a,{as:`header`,className:`flex items-center gap-2 px-4 py-3`,children:[g(l,{className:`w-[16px] h-[16px]`,onClick:A}),g(s,{as:`h1`,className:`flex-1 min-w-0 flex justify-center overflow-hidden text-[18px] pr-[16px]`,children:g(s,{className:`block max-w-full truncate`,children:b})})]}),_(a,{as:`nav`,className:`px-4 pb-2 flex gap-2`,children:[g(e,{type:`button`,onClick:()=>w(`hot`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`hot`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最热`}),g(e,{type:`button`,onClick:()=>w(`latest`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`latest`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最新`})]})]}),g(a,{id:`video-list-scroll-container`,className:`flex-1 min-h-0 overflow-y-auto [overscroll-behavior-y:none]`,children:g(o,{loadMore:()=>D().then(()=>void 0),hasMore:O,rootId:`video-list-scroll-container`,threshold:300,className:``,children:g(a,{className:`grid grid-cols-2 gap-3 p-4`,children:j})})})]})}export{b as default};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{gContentGetNewstVideoList as t,gContentGetPopularVideoList as n}from"../../../service/generated/client.mjs";import{gContentGetNewstVideoListKey as r,gContentGetPopularVideoListKey as i}from"../../../service/generated/tanstack.mjs";import{Box as a}from"../../ui/box.mjs";import{InfiniteScroll as o}from"../../ui/infinite-scroll.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import l from"../../../assets/icons/left_arrow.mjs";import{getNextVideoListPageParam as u,resolveNextCursor as d}from"./types.mjs";import{VideoListItemComponent as f}from"./video-list-item.mjs";import{useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import _ from"next/link";import{useRouter as v}from"next/navigation";const y=[];function b({title:b=`列表页`,tags:x=y}){let S=v(),[C,w]=m(`hot`),T={page_size:10,tags:x.length?x:void 0},{data:E,fetchNextPage:D,hasNextPage:O}=c({key:C===`hot`?i(T):r(T),queryFn:async e=>{let r={page_size:10,cursor:e||void 0,tags:x.length?x:void 0},i=(C===`hot`?await n(r):await t(r)).data;return{list:i?.videos??[],nextCursor:d(i)}},getNextPageParam:u,initialPageParam:``}),k=p(()=>E?.pages?.flatMap(e=>e.list)??[],[E?.pages]);function A(){S.back()}let j=p(()=>k.map(e=>{let t=e.id??e.mid??``;return h(_,{href:`/video/${t}/${e.name??``}`,children:h(f,{item:e})},t)}),[k]);return g(a,{as:`main`,className:`h-[100dvh] max-h-[100dvh] flex flex-col bg-bg1 overflow-hidden [overscroll-behavior-y:none]`,children:[g(a,{className:`shrink-0 bg-bg1`,children:[g(a,{as:`header`,className:`flex items-center gap-2 px-4 py-3`,children:[h(l,{className:`w-[16px] h-[16px]`,onClick:A}),h(s,{as:`h1`,className:`flex-1 min-w-0 flex justify-center overflow-hidden text-[18px] pr-[16px]`,children:h(s,{className:`block max-w-full truncate`,children:b})})]}),g(a,{as:`nav`,className:`px-4 pb-2 flex gap-2`,children:[h(e,{type:`button`,onClick:()=>w(`hot`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`hot`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最热`}),h(e,{type:`button`,onClick:()=>w(`latest`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`latest`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最新`})]})]}),h(a,{id:`video-list-scroll-container`,className:`flex-1 min-h-0 overflow-y-auto [overscroll-behavior-y:none]`,children:h(o,{loadMore:()=>D().then(()=>void 0),hasMore:O,rootId:`video-list-scroll-container`,threshold:300,className:``,children:h(a,{className:`grid grid-cols-2 gap-3 p-4`,children:j})})})]})}export{b as default};
@@ -6,7 +6,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
6
6
  //#region components/ui/badge.d.ts
7
7
  /** badgeVariants 工具定义。 */
8
8
  declare const badgeVariants: (props?: ({
9
- variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
9
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
10
10
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
11
11
  /** Badge 组件。 */
12
12
  declare function Badge({
@@ -8,7 +8,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
8
8
  //#region components/ui/button-group.d.ts
9
9
  /** buttonGroupVariants 工具定义。 */
10
10
  declare const buttonGroupVariants: (props?: ({
11
- orientation?: "horizontal" | "vertical" | null | undefined;
11
+ orientation?: "vertical" | "horizontal" | null | undefined;
12
12
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
13
13
  /** ButtonGroupText 组件属性。 */
14
14
  type ButtonGroupTextProps = useRender.ComponentProps<'div'>;
@@ -7,8 +7,8 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
7
7
  //#region components/ui/button.d.ts
8
8
  /** buttonVariants 工具定义。 */
9
9
  declare const buttonVariants: (props?: ({
10
- variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
11
- size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
10
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
11
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
12
12
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
13
13
  /** Button 组件属性。 */
14
14
  type ButtonProps = Button.Props & VariantProps<typeof buttonVariants> & {
@@ -51,7 +51,7 @@ declare function FieldGroup({
51
51
  }: FieldGroupProps): react_jsx_runtime0.JSX.Element;
52
52
  /** fieldVariants 工具定义。 */
53
53
  declare const fieldVariants: (props?: ({
54
- orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
54
+ orientation?: "vertical" | "horizontal" | "responsive" | null | undefined;
55
55
  } & class_variance_authority_types0.ClassProp) | undefined) => string;
56
56
  /** Field 组件。 */
57
57
  declare function Field({
@@ -1,2 +1,2 @@
1
1
 
2
- import{useUserStore as e}from"../store/modules/user-store.mjs";import{gCommunityGetUserCollections as t,pCommunityAddContentToCollection as n,pInteractionBatchQueryContentInteractions as r,pInteractionCancelDislike as i,pInteractionCancelLike as a,pInteractionDislike as o,pInteractionLike as s,pInteractionRemoveCollect as c}from"../service/generated/client.mjs";import{useLoginModalStore as l}from"../store/modules/login-modal-store.mjs";import u from"../components/common/collection-popup/index.mjs";import d from"../components/common/share-popup/share-popup.mjs";import{useInteractionAnimation as f}from"./use-interaction-animation.mjs";import{usePathname as p,useRouter as m,useSearchParams as h}from"next/navigation";import{useCallback as g,useEffect as _,useMemo as v,useState as y}from"react";import{toast as b}from"sonner";function x(){let t=e.getState().userId||e.getState().userInfo?.userId;if(!t){let{open:e}=l.getState();return e(),null}return t}async function S(t,n){try{let i=e.getState().userId||e.getState().userInfo?.userId;if(!i)return console.warn(`用户未登录,无法查询交互状态`),null;let a=await r({app_id:0,user_id:i,content_ids:t,content_type:n});return a.code===0?a.data:(console.error(`查询交互状态失败:`,a.message),null)}catch(e){return console.error(`查询交互状态异常:`,e),null}}async function C(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await s({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`点赞失败`}}catch(e){return console.error(`点赞失败:`,e),{success:!1,message:`点赞失败`}}}async function w(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await a({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`取消点赞失败`}}catch(e){return console.error(`取消点赞失败:`,e),{success:!1,message:`取消点赞失败`}}}async function T(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await o({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`点踩失败`}}catch(e){return console.error(`点踩异常:`,e),{success:!1,message:`点踩异常`}}}async function E(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await i({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`取消点踩失败`}}catch(e){return console.error(`取消点踩异常:`,e),{success:!1,message:`取消点踩异常`}}}function D({id:r,isLike:i,isDislike:a,isCollect:o,likeCnt:s,dislikeCnt:x,contentType:S,animationClasses:D,copyUrl:O,prefetchDefaultCollection:k=!1}){let{isLogin:A,userInfo:j,userId:M}=e(),N=m(),P=p(),F=h()?.toString()||``,[I,L]=y(void 0),R=D?.like||`like-shake-animation`,z=D?.dislike||`dislike-shake-animation`,B=v(()=>String(M||j?.userId||``),[M,j?.userId]);_(()=>{L(void 0)},[B]);let[V,H]=y(!1),[U,W]=y(!1);_(()=>{d.clear(),u.clear()},[P,F]),_(()=>()=>{d.clear(),u.clear()},[]);let G=g(async()=>{if(!A||!B)return null;try{let e=await t({page:1,page_size:40});if(e.code!==0)return L(null),null;let n=(e.data?.data?.collections??[]).find(e=>e?.is_default),r=(typeof n?.title==`string`?n.title.trim():``)||null;return L(r),r}catch(e){return console.error(`获取默认收藏夹失败:`,e),L(null),null}},[A,B]);_(()=>{!A||!B||k&&I===void 0&&G()},[I,G,A,k,B]);let K=g(()=>{if(!A){let{open:e}=l.getState();return e(),!1}return!0},[A]),q=f(),J=f(),Y=g(async e=>{try{return e?await C(r,S):await w(r,S)}catch(e){return console.error(`点赞操作失败`,e),{success:!1,message:`点赞操作失败`}}},[r,S]),X=g(async()=>{if(!(!K()||V)){H(!0);try{let e=!i;e&&q.trigger(R);let t={isLike:e,likeCnt:Math.max(0,s+(e?1:-1))};e&&a&&(t.isDislike=!1,t.dislikeCnt=Math.max(0,x-1));let n=await Y(e);if(!n.success){b.error(n.message||`点赞失败`);return}return t}finally{H(!1)}}},[q,i,a,s,x,Y,K,V,R]),Z=g(async e=>{try{return e?await T(r,S):await E(r,S)}catch(e){return console.error(`点踩操作失败`,e),{success:!1,message:`点踩操作失败`}}},[r,S]),ee=g(async()=>{if(!(!K()||U)){W(!0);try{let e=!a;e&&J.trigger(z);let t={isDislike:e,dislikeCnt:Math.max(0,x+(e?1:-1))};e&&i&&(t.isLike=!1,t.likeCnt=Math.max(0,s-1));let n=await Z(e);if(!n.success){b.error(n.message||`操作失败`);return}return t}finally{W(!1)}}},[J,i,a,s,x,Z,K,U,z]),Q=g(async({currentId:e,isCancel:t,collectionIds:r})=>{try{if(t){let t=String(M||j?.userId||``);if(!t)return{success:!1};let n=await c({app_id:0,user_id:t,content_id:e,content_type:S});return n.code===0?{success:!0}:{success:!1,message:n.message}}if(!String(M||j?.userId||``))return{success:!1};let i=r?.[0],a=await n({...i?{collection_id:i}:{},content_id:e,source_type:S});return a.code===0?{success:!0}:{success:!1,message:a.message}}catch(e){return console.error(`取消收藏操作失败`,e),{success:!1,message:e?.message}}},[M,j?.userId,S]),$=g(({currentCollect:e,onUpdate:t})=>K()?(e?(async()=>{let e=await Q({currentId:r,isCancel:!0});if(!e?.success){b.error(e?.message||`操作失败`);return}t({isCollect:!1})})():(d.clear(),u.show({toCreateCollection:()=>{N.push(`/collection/create?information_id=${r}`)},onCollect:e=>{(async()=>{let n=await Q({currentId:r,isCancel:!1,collectionIds:[e]});if(!n?.success){b.error(n?.message||`操作失败`);return}t({isCollect:!0})})()}})),!0):!1,[r,N,K,Q]),te=g(async({currentCollect:e,onUpdate:t})=>{if(!K())return;if(e){let e=await Q({currentId:r,isCancel:!0});return e?.success?(t({isCollect:!1}),{success:!0,isCollect:!1}):{success:!1,message:e?.message}}d.clear(),u.clear();let n=await Q({currentId:r,isCancel:!1});if(!n?.success)return{success:!1,message:n?.message};let i=I===void 0?await G():I;return t({isCollect:!0}),{success:!0,isCollect:!0,collectionTitle:i||void 0}},[I,G,Q,r,K]);return{likeAnimation:q,dislikeAnimation:J,handleLikeOperate:X,handleDislikeOperate:ee,handleShareOperate:g((e,t)=>{let n=typeof t==`string`?{otherId:t}:t,i=n?.otherId||r,a=n?.shareUrl;d.show({copyUrl:O,data:{id:r,isCollect:o,parentId:i},...a?{shareUrl:a}:{},onCollect:t=>{$({currentCollect:t,onUpdate:e})}})},[r,o,$,O]),handleToCollectionOperate:$,handleDefaultCollectionOperate:te}}export{S as batchQueryContentInteractions,D as useContentOperate};
2
+ import{useUserStore as e}from"../store/modules/user-store.mjs";import{gCommunityGetUserCollections as t,pCommunityAddContentToCollection as n,pInteractionBatchQueryContentInteractions as r,pInteractionCancelDislike as i,pInteractionCancelLike as a,pInteractionDislike as o,pInteractionLike as s,pInteractionRemoveCollect as c}from"../service/generated/client.mjs";import{useLoginModalStore as l}from"../store/modules/login-modal-store.mjs";import u from"../components/common/collection-popup/index.mjs";import d from"../components/common/share-popup/share-popup.mjs";import{useInteractionAnimation as f}from"./use-interaction-animation.mjs";import{useCallback as p,useEffect as m,useMemo as h,useState as g}from"react";import{toast as _}from"sonner";import{usePathname as v,useRouter as y,useSearchParams as b}from"next/navigation";function x(){let t=e.getState().userId||e.getState().userInfo?.userId;if(!t){let{open:e}=l.getState();return e(),null}return t}async function S(t,n){try{let i=e.getState().userId||e.getState().userInfo?.userId;if(!i)return console.warn(`用户未登录,无法查询交互状态`),null;let a=await r({app_id:0,user_id:i,content_ids:t,content_type:n});return a.code===0?a.data:(console.error(`查询交互状态失败:`,a.message),null)}catch(e){return console.error(`查询交互状态异常:`,e),null}}async function C(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await s({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`点赞失败`}}catch(e){return console.error(`点赞失败:`,e),{success:!1,message:`点赞失败`}}}async function w(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await a({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`取消点赞失败`}}catch(e){return console.error(`取消点赞失败:`,e),{success:!1,message:`取消点赞失败`}}}async function T(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await o({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`点踩失败`}}catch(e){return console.error(`点踩异常:`,e),{success:!1,message:`点踩异常`}}}async function E(e,t){try{let n=x();if(!n)return{success:!1,message:`请先登录`};let r=await i({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`取消点踩失败`}}catch(e){return console.error(`取消点踩异常:`,e),{success:!1,message:`取消点踩异常`}}}function D({id:r,isLike:i,isDislike:a,isCollect:o,likeCnt:s,dislikeCnt:x,contentType:S,animationClasses:D,copyUrl:O,prefetchDefaultCollection:k=!1}){let{isLogin:A,userInfo:j,userId:M}=e(),N=y(),P=v(),F=b()?.toString()||``,[I,L]=g(void 0),R=D?.like||`like-shake-animation`,z=D?.dislike||`dislike-shake-animation`,B=h(()=>String(M||j?.userId||``),[M,j?.userId]);m(()=>{L(void 0)},[B]);let[V,H]=g(!1),[U,W]=g(!1);m(()=>{d.clear(),u.clear()},[P,F]),m(()=>()=>{d.clear(),u.clear()},[]);let G=p(async()=>{if(!A||!B)return null;try{let e=await t({page:1,page_size:40});if(e.code!==0)return L(null),null;let n=(e.data?.data?.collections??[]).find(e=>e?.is_default),r=(typeof n?.title==`string`?n.title.trim():``)||null;return L(r),r}catch(e){return console.error(`获取默认收藏夹失败:`,e),L(null),null}},[A,B]);m(()=>{!A||!B||k&&I===void 0&&G()},[I,G,A,k,B]);let K=p(()=>{if(!A){let{open:e}=l.getState();return e(),!1}return!0},[A]),q=f(),J=f(),Y=p(async e=>{try{return e?await C(r,S):await w(r,S)}catch(e){return console.error(`点赞操作失败`,e),{success:!1,message:`点赞操作失败`}}},[r,S]),X=p(async()=>{if(!(!K()||V)){H(!0);try{let e=!i;e&&q.trigger(R);let t={isLike:e,likeCnt:Math.max(0,s+(e?1:-1))};e&&a&&(t.isDislike=!1,t.dislikeCnt=Math.max(0,x-1));let n=await Y(e);if(!n.success){_.error(n.message||`点赞失败`);return}return t}finally{H(!1)}}},[q,i,a,s,x,Y,K,V,R]),Z=p(async e=>{try{return e?await T(r,S):await E(r,S)}catch(e){return console.error(`点踩操作失败`,e),{success:!1,message:`点踩操作失败`}}},[r,S]),ee=p(async()=>{if(!(!K()||U)){W(!0);try{let e=!a;e&&J.trigger(z);let t={isDislike:e,dislikeCnt:Math.max(0,x+(e?1:-1))};e&&i&&(t.isLike=!1,t.likeCnt=Math.max(0,s-1));let n=await Z(e);if(!n.success){_.error(n.message||`操作失败`);return}return t}finally{W(!1)}}},[J,i,a,s,x,Z,K,U,z]),Q=p(async({currentId:e,isCancel:t,collectionIds:r})=>{try{if(t){let t=String(M||j?.userId||``);if(!t)return{success:!1};let n=await c({app_id:0,user_id:t,content_id:e,content_type:S});return n.code===0?{success:!0}:{success:!1,message:n.message}}if(!String(M||j?.userId||``))return{success:!1};let i=r?.[0],a=await n({...i?{collection_id:i}:{},content_id:e,source_type:S});return a.code===0?{success:!0}:{success:!1,message:a.message}}catch(e){return console.error(`取消收藏操作失败`,e),{success:!1,message:e?.message}}},[M,j?.userId,S]),$=p(({currentCollect:e,onUpdate:t})=>K()?(e?(async()=>{let e=await Q({currentId:r,isCancel:!0});if(!e?.success){_.error(e?.message||`操作失败`);return}t({isCollect:!1})})():(d.clear(),u.show({toCreateCollection:()=>{N.push(`/collection/create?information_id=${r}`)},onCollect:e=>{(async()=>{let n=await Q({currentId:r,isCancel:!1,collectionIds:[e]});if(!n?.success){_.error(n?.message||`操作失败`);return}t({isCollect:!0})})()}})),!0):!1,[r,N,K,Q]),te=p(async({currentCollect:e,onUpdate:t})=>{if(!K())return;if(e){let e=await Q({currentId:r,isCancel:!0});return e?.success?(t({isCollect:!1}),{success:!0,isCollect:!1}):{success:!1,message:e?.message}}d.clear(),u.clear();let n=await Q({currentId:r,isCancel:!1});if(!n?.success)return{success:!1,message:n?.message};let i=I===void 0?await G():I;return t({isCollect:!0}),{success:!0,isCollect:!0,collectionTitle:i||void 0}},[I,G,Q,r,K]);return{likeAnimation:q,dislikeAnimation:J,handleLikeOperate:X,handleDislikeOperate:ee,handleShareOperate:p((e,t)=>{let n=typeof t==`string`?{otherId:t}:t,i=n?.otherId||r,a=n?.shareUrl;d.show({copyUrl:O,data:{id:r,isCollect:o,parentId:i},...a?{shareUrl:a}:{},onCollect:t=>{$({currentCollect:t,onUpdate:e})}})},[r,o,$,O]),handleToCollectionOperate:$,handleDefaultCollectionOperate:te}}export{S as batchQueryContentInteractions,D as useContentOperate};
package/dist/i18n.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
- import * as next_intl_server0 from "next-intl/server";
3
2
  import * as next_intl_routing0 from "next-intl/routing";
3
+ import * as next_intl_server0 from "next-intl/server";
4
4
 
5
5
  //#region i18n/index.d.ts
6
6
  /**
package/dist/i18n.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- import e from"./i18n/locales/en.mjs";import t from"./i18n/locales/zh-CN.mjs";import{hasLocale as n}from"next-intl";import{getRequestConfig as r}from"next-intl/server";import{defineRouting as i}from"next-intl/routing";const a=`zh-CN`,o=`Asia/Shanghai`,s=`funhub-locale`,c=`NEXT_LOCALE`,l=[{code:`zh-CN`,name:`简体中文`},{code:`en`,name:`English`}];function u(e){if(!e)return null;let t=e.trim().replace(/_/g,`-`).toLowerCase();if(!t)return null;let n=l.find(e=>e.code.toLowerCase()===t);if(n)return n.code;let r=t.split(`-`)[0];return r&&l.find(e=>e.code.toLowerCase().split(`-`)[0]===r)?.code||null}function d(...e){for(let t of e){let e=u(t);if(e)return e}return a}function f(e){if(!e)return a;let t=e.split(`,`).map(e=>{let[t,...n]=e.trim().split(`;`),r=1;for(let e of n){let[t,n]=e.split(`=`).map(e=>e.trim());if(t!==`q`)continue;let i=Number.parseFloat(n||``);Number.isNaN(i)||(r=i)}return{locale:t,weight:r}}).sort((e,t)=>t.weight-e.weight);for(let e of t){let t=u(e.locale);if(t)return t}return a}function p(e,t){let n=[];return Array.isArray(e)&&n.push(...e),n.push(t),d(...n)}function m(e){let t=d(e);if(typeof document<`u`&&(document.cookie=`${c}=${t}; path=/; max-age=31536000; SameSite=Lax`),typeof window<`u`)try{window.localStorage.setItem(s,t)}catch{}return t}function h(){if(typeof window>`u`)return null;try{return u(window.localStorage.getItem(s))}catch{return null}}function g(e){return l.some(t=>t.code===e)}function _(n){let r={"zh-CN":t,en:e};return r[d(n)]||r[a]||{}}const v=i({locales:l.map(e=>e.code),defaultLocale:a,localePrefix:`never`}),y=r(async({requestLocale:e})=>{let t=await e,r=n(v.locales,t)?t:d(t,v.defaultLocale);return{locale:r,messages:_(r)}});var b={defaultLocale:a,locales:l,isValidLocale:g,getMessages:_,routing:v,nextIntlRequestConfig:y};export{b as default,a as defaultLocale,o as defaultTimeZone,h as getCachedLocalePreference,_ as getMessages,g as isValidLocale,c as localeCookieKey,s as localeStorageKey,l as locales,y as nextIntlRequestConfig,u as normalizeLocale,m as persistLocalePreference,d as resolveLocaleByPriority,f as resolveLocaleFromAcceptLanguage,p as resolveLocaleFromNavigator,v as routing};
2
+ import e from"./i18n/locales/en.mjs";import t from"./i18n/locales/zh-CN.mjs";import{hasLocale as n}from"next-intl";import{defineRouting as r}from"next-intl/routing";import{getRequestConfig as i}from"next-intl/server";const a=`zh-CN`,o=`Asia/Shanghai`,s=`funhub-locale`,c=`NEXT_LOCALE`,l=[{code:`zh-CN`,name:`简体中文`},{code:`en`,name:`English`}];function u(e){if(!e)return null;let t=e.trim().replace(/_/g,`-`).toLowerCase();if(!t)return null;let n=l.find(e=>e.code.toLowerCase()===t);if(n)return n.code;let r=t.split(`-`)[0];return r&&l.find(e=>e.code.toLowerCase().split(`-`)[0]===r)?.code||null}function d(...e){for(let t of e){let e=u(t);if(e)return e}return a}function f(e){if(!e)return a;let t=e.split(`,`).map(e=>{let[t,...n]=e.trim().split(`;`),r=1;for(let e of n){let[t,n]=e.split(`=`).map(e=>e.trim());if(t!==`q`)continue;let i=Number.parseFloat(n||``);Number.isNaN(i)||(r=i)}return{locale:t,weight:r}}).sort((e,t)=>t.weight-e.weight);for(let e of t){let t=u(e.locale);if(t)return t}return a}function p(e,t){let n=[];return Array.isArray(e)&&n.push(...e),n.push(t),d(...n)}function m(e){let t=d(e);if(typeof document<`u`&&(document.cookie=`${c}=${t}; path=/; max-age=31536000; SameSite=Lax`),typeof window<`u`)try{window.localStorage.setItem(s,t)}catch{}return t}function h(){if(typeof window>`u`)return null;try{return u(window.localStorage.getItem(s))}catch{return null}}function g(e){return l.some(t=>t.code===e)}function _(n){let r={"zh-CN":t,en:e};return r[d(n)]||r[a]||{}}const v=r({locales:l.map(e=>e.code),defaultLocale:a,localePrefix:`never`}),y=i(async({requestLocale:e})=>{let t=await e,r=n(v.locales,t)?t:d(t,v.defaultLocale);return{locale:r,messages:_(r)}});var b={defaultLocale:a,locales:l,isValidLocale:g,getMessages:_,routing:v,nextIntlRequestConfig:y};export{b as default,a as defaultLocale,o as defaultTimeZone,h as getCachedLocalePreference,_ as getMessages,g as isValidLocale,c as localeCookieKey,s as localeStorageKey,l as locales,y as nextIntlRequestConfig,u as normalizeLocale,m as persistLocalePreference,d as resolveLocaleByPriority,f as resolveLocaleFromAcceptLanguage,p as resolveLocaleFromNavigator,v as routing};
@@ -1,4 +1,7 @@
1
1
 
2
+ import { floatingBallMaterial } from "./components/biz/business/floating-ball/material.mjs";
3
+ import { homeRecommendGridMaterial } from "./components/biz/business/home-recommend/variants/home-recommend-grid/material.mjs";
4
+ import { homeRecommendWaterfallMaterial } from "./components/biz/business/home-recommend/variants/home-recommend-waterfall/material.mjs";
2
5
  import { videoDetailPlayerMaterial } from "./components/biz/business/detail/materials/video-detail-player/material.mjs";
3
6
  import "./components/biz/business/detail/materials/video-detail-player/index.mjs";
4
7
  import { videoDetailInfoMaterial } from "./components/biz/business/detail/materials/video-detail-info/material.mjs";
@@ -12,19 +15,16 @@ import "./components/biz/business/detail/materials/video-detail-actions/index.mj
12
15
  import { videoDetailRecommendMaterial } from "./components/biz/business/detail/materials/video-detail-recommend/material.mjs";
13
16
  import "./components/biz/business/detail/materials/video-detail-recommend/index.mjs";
14
17
  import { marqueeMaterial } from "./components/biz/business/marquee/material.mjs";
18
+ import { profileHeaderMaterial } from "./components/biz/business/profile/profile-header/material.mjs";
19
+ import { profileMainMaterial } from "./components/biz/business/profile/profile-main/material.mjs";
15
20
  import { searchHistoryMaterial } from "./components/biz/business/search-history/material.mjs";
16
21
  import { searchInputMaterial } from "./components/biz/business/search-input/material.mjs";
17
22
  import { tabBarMaterial } from "./components/biz/business/tab-bar/material.mjs";
18
23
  import { textRecommendMaterial } from "./components/biz/business/text-recommend/material.mjs";
19
24
  import { videoHorizontalListMaterial } from "./components/biz/business/video-horizontal-list/material.mjs";
20
- import { homeRecommendGridMaterial } from "./components/biz/business/home-recommend/variants/home-recommend-grid/material.mjs";
21
- import { homeRecommendWaterfallMaterial } from "./components/biz/business/home-recommend/variants/home-recommend-waterfall/material.mjs";
22
- import { profileHeaderMaterial } from "./components/biz/business/profile/profile-header/material.mjs";
23
- import { profileMainMaterial } from "./components/biz/business/profile/profile-main/material.mjs";
24
25
  import { exampleButtonMaterial } from "./components/biz/example/button/material.mjs";
25
26
  import { BannerCarouselMaterial } from "./components/biz/business/banner-carousel/material.mjs";
26
27
  import { channelListMaterial } from "./components/biz/business/channel-list/material.mjs";
27
- import { floatingBallMaterial } from "./components/biz/business/floating-ball/material.mjs";
28
28
  import { headerAvatarIconMaterial } from "./components/biz/business/header-search/header-avatar-icon/material.mjs";
29
29
  import { headerAvatarLogoSearchMaterial } from "./components/biz/business/header-search/header-avatar-logo-search/material.mjs";
30
30
  import { headerAvatarLogoSearchIconMaterial } from "./components/biz/business/header-search/header-avatar-logo-search-icon/material.mjs";