@funhub/platform 0.1.93 → 0.1.95

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 (28) hide show
  1. package/config/tailwind/index.cjs +16 -6
  2. package/config/tailwind/index.mjs +16 -6
  3. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  4. package/dist/components/biz/business/detail/shared/video-detail-route-context-server.mjs +2 -0
  5. package/dist/components/biz/business/detail/shared/video-detail-server-data.mjs +2 -0
  6. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  7. package/dist/components/biz/business/detail/video-detail-info/server.d.mts +1 -1
  8. package/dist/components/biz/business/detail/video-detail-info/server.mjs +1 -1
  9. package/dist/components/biz/business/detail/video-detail-info-title/server.d.mts +1 -1
  10. package/dist/components/biz/business/detail/video-detail-info-title/server.mjs +1 -1
  11. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/client.mjs +1 -1
  12. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/server.d.mts +1 -1
  13. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/server.mjs +1 -1
  14. package/dist/components/biz/business/detail/video-detail-player/client.mjs +1 -1
  15. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  16. package/dist/components/biz/business/detail/video-detail-recommend/utils.mjs +1 -1
  17. package/dist/components/biz/business/home-recommend/shared/home-recommend-runtime-props.mjs +1 -1
  18. package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +1 -1
  19. package/dist/components/biz/business/search-history/client.mjs +1 -1
  20. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  21. package/dist/components/common/series-episodes/index.mjs +1 -1
  22. package/dist/components/common/video-player/index.mjs +4 -4
  23. package/dist/components/pages/search-result/search-video.mjs +1 -1
  24. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  25. package/dist/components/ui/button.d.mts +1 -1
  26. package/dist/i18n/locales/en.mjs +1 -1
  27. package/dist/i18n/locales/zh-CN.mjs +1 -1
  28. package/package.json +1 -1
@@ -230,14 +230,24 @@ function normalizeGlobPath(targetPath) {
230
230
  * @returns {string[]}
231
231
  */
232
232
  function resolvePlatformContentGlobs(packageRoot) {
233
- const sourceComponentsDir = path.resolve(packageRoot, 'components');
234
- if (fs.existsSync(sourceComponentsDir)) {
235
- return [`${normalizeGlobPath(sourceComponentsDir)}/**/*.{js,ts,jsx,tsx}`];
233
+ const sourceTargets = ['components', 'utils'];
234
+ const sourceGlobs = sourceTargets
235
+ .map((relativeDir) => path.resolve(packageRoot, relativeDir))
236
+ .filter((absoluteDir) => fs.existsSync(absoluteDir))
237
+ .map((absoluteDir) => `${normalizeGlobPath(absoluteDir)}/**/*.{js,ts,jsx,tsx}`);
238
+
239
+ if (sourceGlobs.length > 0) {
240
+ return sourceGlobs;
236
241
  }
237
242
 
238
- const distComponentsDir = path.resolve(packageRoot, 'dist/components');
239
- if (fs.existsSync(distComponentsDir)) {
240
- return [`${normalizeGlobPath(distComponentsDir)}/**/*.{js,mjs,cjs}`];
243
+ const distTargets = ['dist/components', 'dist/utils'];
244
+ const distGlobs = distTargets
245
+ .map((relativeDir) => path.resolve(packageRoot, relativeDir))
246
+ .filter((absoluteDir) => fs.existsSync(absoluteDir))
247
+ .map((absoluteDir) => `${normalizeGlobPath(absoluteDir)}/**/*.{js,mjs,cjs}`);
248
+
249
+ if (distGlobs.length > 0) {
250
+ return distGlobs;
241
251
  }
242
252
 
243
253
  return [];
@@ -234,14 +234,24 @@ function normalizeGlobPath(targetPath) {
234
234
  * @returns {string[]}
235
235
  */
236
236
  function resolvePlatformContentGlobs(packageRoot) {
237
- const sourceComponentsDir = path.resolve(packageRoot, 'components');
238
- if (fs.existsSync(sourceComponentsDir)) {
239
- return [`${normalizeGlobPath(sourceComponentsDir)}/**/*.{js,ts,jsx,tsx}`];
237
+ const sourceTargets = ['components', 'utils'];
238
+ const sourceGlobs = sourceTargets
239
+ .map((relativeDir) => path.resolve(packageRoot, relativeDir))
240
+ .filter((absoluteDir) => fs.existsSync(absoluteDir))
241
+ .map((absoluteDir) => `${normalizeGlobPath(absoluteDir)}/**/*.{js,ts,jsx,tsx}`);
242
+
243
+ if (sourceGlobs.length > 0) {
244
+ return sourceGlobs;
240
245
  }
241
246
 
242
- const distComponentsDir = path.resolve(packageRoot, 'dist/components');
243
- if (fs.existsSync(distComponentsDir)) {
244
- return [`${normalizeGlobPath(distComponentsDir)}/**/*.{js,mjs,cjs}`];
247
+ const distTargets = ['dist/components', 'dist/utils'];
248
+ const distGlobs = distTargets
249
+ .map((relativeDir) => path.resolve(packageRoot, relativeDir))
250
+ .filter((absoluteDir) => fs.existsSync(absoluteDir))
251
+ .map((absoluteDir) => `${normalizeGlobPath(absoluteDir)}/**/*.{js,mjs,cjs}`);
252
+
253
+ if (distGlobs.length > 0) {
254
+ return distGlobs;
245
255
  }
246
256
 
247
257
  return [];
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetVideoDetail as e}from"../../../../../service/generated/client.mjs";import{useRequest as t}from"../../../../../hooks/query/use-query.mjs";import{createContext as n,use as r,useCallback as i,useMemo as a}from"react";import{jsx as o}from"react/jsx-runtime";import{useParams as s}from"next/navigation";const c=n(void 0);function l({value:e,children:t}){return o(c,{value:e,children:t})}function u(){let e=r(c),t=d(e===void 0);return e??t}function d(n){let r=s().level,o=Array.isArray(r)?r:typeof r==`string`?[r]:[],c=o[0]||``,l=o.findIndex(e=>e===`episode`),u=l>=0?o[l+1]:o[2],d=Math.max(1,Number(u)||1),f=Math.max(0,d-1),p=o[1]||``,m=typeof window<`u`&&(window.isWebView===!0||window.isWebview===!0),{data:h,isPending:g,isFetching:_,isError:v,isSuccess:y}=t([`video-detail-material-fallback`,c],async()=>c?await e({id:c}):null,{enabled:n&&!!c}),b=a(()=>{let e=h?.data?.video;if(!(!e||typeof e!=`object`))return{...e,content_type:0,episode_cnt:e.links?.length||0}},[h?.data?.video]),x=i(e=>{if(!c||typeof window>`u`)return;let t=encodeURIComponent(p);window.location.href=m?`/webview/${c}/${t}/episode/${e}`:`/video/${c}/${t}/episode/${e}`},[c,m,p]);if(n)return{information:b,currentSeriesNum:d,onEpisodeChange:x,detailId:c,episodeIndex:f,resumeProgressSeconds:0,isShow:!0,isWebView:m,isInformationLoading:!!c&&!b&&(g||_),isInformationResolved:!c||!!b||v||y}}export{l as VideoDetailMaterialRuntimeProvider,u as useVideoDetailMaterialRuntimeContext};
2
+ "use client";import{gContentGetVideoDetail as e}from"../../../../../service/generated/client.mjs";import{useRequest as t}from"../../../../../hooks/query/use-query.mjs";import{createContext as n,use as r,useCallback as i,useMemo as a}from"react";import{jsx as o}from"react/jsx-runtime";import{useParams as s,useRouter as c}from"next/navigation";const l=n(void 0);function u(e,t){if(!(!e&&!t))return{information:e?.information??t?.information,currentSeriesNum:e?.currentSeriesNum??t?.currentSeriesNum,onEpisodeChange:e?.onEpisodeChange??t?.onEpisodeChange,onUpdateInformation:e?.onUpdateInformation??t?.onUpdateInformation,detailId:e?.detailId??t?.detailId,episodeIndex:e?.episodeIndex??t?.episodeIndex,resumeProgressSeconds:e?.resumeProgressSeconds??t?.resumeProgressSeconds,isShow:e?.isShow??t?.isShow,isWebView:e?.isWebView??t?.isWebView,isInformationLoading:e?.isInformationLoading??t?.isInformationLoading,isInformationResolved:e?.isInformationResolved??t?.isInformationResolved}}function d({value:e,children:t}){let n=r(l);return o(l,{value:a(()=>u(n,e)??e,[n,e]),children:t})}function f(){let e=r(l),t=p({enabled:e===void 0||e.onEpisodeChange===void 0||e.detailId===void 0||e.currentSeriesNum===void 0||e.episodeIndex===void 0||e.isInformationLoading===void 0||e.isInformationResolved===void 0,shouldRequestInformation:!e?.information});return a(()=>{let n=u(e,t);return n&&(e&&t&&e.onEpisodeChange===void 0?{...n,currentSeriesNum:t.currentSeriesNum??n.currentSeriesNum,episodeIndex:t.episodeIndex??n.episodeIndex,onEpisodeChange:t.onEpisodeChange??n.onEpisodeChange}:n)},[e,t])}function p(n){let{enabled:r,shouldRequestInformation:o}=n,l=s(),u=c(),d=l.level,f=Array.isArray(d)?d:typeof d==`string`?[d]:[],p=f[0]||``,m=f.findIndex(e=>e===`episode`),h=m>=0?f[m+1]:f[2],g=Math.max(1,Number(h)||1),_=Math.max(0,g-1),v=f[1]||``,y=typeof window<`u`&&(window.isWebView===!0||window.isWebview===!0),{data:b,isPending:x,isFetching:S,isError:C,isSuccess:w}=t([`video-detail-material-fallback`,p],async()=>p?await e({id:p}):null,{enabled:r&&o&&!!p}),T=a(()=>{let e=b?.data?.video;if(!(!e||typeof e!=`object`))return{...e,content_type:0,episode_cnt:e.links?.length||0}},[b?.data?.video]),E=i(e=>{let t=Math.max(1,Math.floor(Number(e)||1));if(!p||typeof window>`u`)return;let n=`${y?`/webview`:`/video`}/${p}/${encodeURIComponent(v)}/episode/${t}`,{search:r,hash:i,pathname:a}=window.location,o=`${a}${r}${i}`,s=`${n}${r}${i}`;o!==s&&u.replace(s,{scroll:!1})},[p,y,v,u]);if(r)return{information:T,currentSeriesNum:g,onEpisodeChange:E,detailId:p,episodeIndex:_,resumeProgressSeconds:0,isShow:!0,isWebView:y,isInformationLoading:o?!!p&&!T&&(x||S):!1,isInformationResolved:!p||!!T||!o||C||w}}export{d as VideoDetailMaterialRuntimeProvider,f as useVideoDetailMaterialRuntimeContext};
@@ -0,0 +1,2 @@
1
+
2
+ import{headers as e}from"next/headers";const t={detailId:``,currentSeriesNum:1};async function n(){let n=await e(),a=[n.get(`x-invoke-path`),n.get(`x-matched-path`),n.get(`next-url`),n.get(`x-next-url`),n.get(`x-original-uri`),n.get(`x-rewrite-url`),n.get(`referer`)].map(e=>r(e)).filter(Boolean);for(let e of a){let t=i(e);if(t.detailId)return t}return t}function r(e){if(!e)return``;let t=e.trim();if(!t)return``;if(t.startsWith(`/`))return t.split(`?`)[0]||``;try{return new URL(t).pathname||``}catch{return``}}function i(e){let n=e.split(`/`).filter(Boolean);if(!n.length)return t;let r=n.findIndex(e=>e===`video`||e===`webview`);if(r<0||n.length<=r+1)return t;let i=String(n[r+1]||``).trim();if(!i)return t;let a=n.findIndex((e,t)=>t>r&&e===`episode`),o=a>=0?Number(n[a+1]):1;return{detailId:i,currentSeriesNum:Number.isFinite(o)&&o>0?Math.floor(o):1}}export{n as resolveVideoDetailRouteContext};
@@ -0,0 +1,2 @@
1
+
2
+ import{gContentGetVideoDetail as e}from"../../../../../service/generated/client.mjs";import{cache as t}from"react";function n(e){if(!e||typeof e!=`object`)return null;let t=e,n=Array.isArray(t.links)?t.links:[];return{...t,mid:String(t.mid||t.id||``),content_type:0,episode_cnt:n.length}}const r=t(async t=>{let r=String(t||``).trim();if(!r)return null;try{return n((await e({id:r},{revalidate:86400,tags:[`video-detail:ssr:${r}`]})).data?.video)}catch(e){return console.error(`详情物料服务端获取视频详情失败`,e),null}});async function i(e){let t=String(e||``).trim();return t?await r(t):null}export{i as getVideoDetailServerInformation};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{SeriesEpisodes as e}from"../../../../common/series-episodes/index.mjs";import{DetailIntroduction as t}from"../shared/detail-introduction.mjs";import{editorPreviewInformation as n}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as r}from"../shared/runtime-context-provider.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o({showTags:o=!1,showEpisodes:s=!1,mode:c=`renderer`}){let l=r(),u=l?.information,d=l?.currentSeriesNum??1,f=l?.onEpisodeChange,p=l?.isShow??!0,m=c===`editor`,h=m?n:u;if(!h)return null;let g=Math.max(1,Number(d||1)),_=m?e=>{}:f??(()=>{}),v=h?.is_more_link===`y`&&(h?.links?.length??0)>0;return a(`div`,{className:m?`pointer-events-none`:void 0,children:[i(t,{information:h,isShow:p,showTags:o}),s&&v&&i(e,{mode:`detail`,series_num:g,information:h,onEpisodeChange:_})]})}export{o as VideoDetailInfoClient};
2
+ "use client";import{SeriesEpisodes as e}from"../../../../common/series-episodes/index.mjs";import{DetailIntroduction as t}from"../shared/detail-introduction.mjs";import{editorPreviewInformation as n}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as r}from"../shared/runtime-context-provider.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o({showTags:o=!1,showEpisodes:s=!1,mode:c=`renderer`}){let l=r(),u=l?.information,d=l?.currentSeriesNum??1,f=l?.onEpisodeChange,p=l?.isShow??!0,m=c===`editor`,h=m?n:u;if(!h)return null;let g=Math.max(1,Number(d||1)),_=m?e=>{}:f??(()=>{}),v=h?.is_more_link===`y`&&(h?.links?.length??0)>1;return a(`div`,{className:m?`pointer-events-none`:void 0,children:[i(t,{information:h,isShow:p,showTags:o}),s&&v&&i(e,{mode:`detail`,series_num:g,information:h,onEpisodeChange:_})]})}export{o as VideoDetailInfoClient};
@@ -6,6 +6,6 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
  /**
7
7
  * 媒体信息-简介&选集物料服务端组件。
8
8
  */
9
- declare function VideoDetailInfo(props: VideoDetailInfoProps): react_jsx_runtime0.JSX.Element;
9
+ declare function VideoDetailInfo(props: VideoDetailInfoProps): Promise<react_jsx_runtime0.JSX.Element>;
10
10
  //#endregion
11
11
  export { VideoDetailInfo };
@@ -1,2 +1,2 @@
1
1
 
2
- import{VideoDetailInfoClient as e}from"./client.mjs";import{jsx as t}from"react/jsx-runtime";function n(n){let{mode:r=`renderer`,...i}=n;return t(e,{...i,mode:r})}export{n as VideoDetailInfo};
2
+ import{VideoDetailMaterialRuntimeProvider as e}from"../shared/runtime-context-provider.mjs";import{VideoDetailInfoClient as t}from"./client.mjs";import{resolveVideoDetailRouteContext as n}from"../shared/video-detail-route-context-server.mjs";import{getVideoDetailServerInformation as r}from"../shared/video-detail-server-data.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";import o from"next/link";async function s(s){let{mode:l=`renderer`,showEpisodes:d=!1,...f}=s;if(l!==`renderer`)return i(t,{...f,showEpisodes:d,mode:l});let p=await n(),m=p.detailId;if(!m)return i(t,{...f,showEpisodes:d,mode:l});let h=await r(m);if(!h)return i(t,{...f,showEpisodes:d,mode:l});let g=Math.max(1,Number(p.currentSeriesNum||1)),_=c(h),v=d&&h.is_more_link===`y`&&_.length>1;return a(e,{value:{information:h,detailId:m,currentSeriesNum:g,episodeIndex:Math.max(0,g-1),isShow:!0,isInformationLoading:!1,isInformationResolved:!0},children:[i(t,{...f,showEpisodes:!1,mode:l}),v&&i(`div`,{className:`w-full px-[12px] mt-[12px]`,children:i(`div`,{className:`flex flex-wrap gap-[8px]`,children:_.map(e=>{let t=e.seriesNum===g;return i(o,{href:u(m,h.name||``,e.seriesNum),className:`h-[28px] min-w-[40px] rounded-[6px] border px-[8px] text-[12px] leading-[26px] text-center ${t?`border-theme5 text-theme5 bg-theme5/10`:`border-line1 text-text2 bg-bg1`}`,children:e.label},e.key)})})})]})}function c(e){return(Array.isArray(e.links)?e.links:[]).map((e,t)=>{let n=e||{},r=typeof n.id==`string`?n.id:``,i=l(n.id,n.name,t+1);return{key:r||`episode-${i}-${t+1}`,seriesNum:i,label:`第${i}集`}})}function l(e,t,n){let r=Number(e);if(Number.isFinite(r)&&r>0)return Math.floor(r);let i=Number(t);return Number.isFinite(i)&&i>0?Math.floor(i):n}function u(e,t,n){return`/video/${e}/${encodeURIComponent(t||``)}/episode/${n}`}export{s as VideoDetailInfo};
@@ -6,6 +6,6 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
  /**
7
7
  * 媒体信息物料服务端组件。
8
8
  */
9
- declare function VideoDetailInfoTitle(props: VideoDetailInfoTitleProps): react_jsx_runtime0.JSX.Element;
9
+ declare function VideoDetailInfoTitle(props: VideoDetailInfoTitleProps): Promise<react_jsx_runtime0.JSX.Element>;
10
10
  //#endregion
11
11
  export { VideoDetailInfoTitle };
@@ -1,2 +1,2 @@
1
1
 
2
- import{VideoDetailInfoTitleClient as e}from"./client.mjs";import{jsx as t}from"react/jsx-runtime";function n(n){let{mode:r=`renderer`,...i}=n;return t(e,{...i,mode:r})}export{n as VideoDetailInfoTitle};
2
+ import{VideoDetailMaterialRuntimeProvider as e}from"../shared/runtime-context-provider.mjs";import{resolveVideoDetailRouteContext as t}from"../shared/video-detail-route-context-server.mjs";import{getVideoDetailServerInformation as n}from"../shared/video-detail-server-data.mjs";import{VideoDetailInfoTitleClient as r}from"./client.mjs";import{jsx as i}from"react/jsx-runtime";async function a(a){let{mode:o=`renderer`,...s}=a;if(o!==`renderer`)return i(r,{...s,mode:o});let c=(await t()).detailId;if(!c)return i(r,{...s,mode:o});let l=await n(c);return l?i(e,{value:{information:l,detailId:c,isShow:!0,isInformationLoading:!1,isInformationResolved:!0},children:i(r,{...s,mode:o})}):i(r,{...s,mode:o})}export{a as VideoDetailInfoTitle};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../../ui/box.mjs";import{useCardDecoration as t}from"../../../../../hooks/use-card-decoration.mjs";import{SeriesEpisodes as n}from"../../../../common/series-episodes/index.mjs";import{DetailInfoTags as r}from"../shared/detail-info-tags.mjs";import{DetailInfoTitle as i}from"../shared/detail-info-title.mjs";import{editorPreviewInformation as a}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as o}from"../shared/runtime-context-provider.mjs";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({showTags:l=!0,showEpisodes:u=!0,mode:d=`renderer`}){let f=o(),p=f?.information,m=f?.currentSeriesNum??1,h=f?.onEpisodeChange,g=d===`editor`,{getTitleText:_}=t(),v=g,y=v?a:p;if(!y)return null;let b=Math.max(1,Number(m||1)),x=v?e=>{}:h??(()=>{}),S=_(y),C=y?.is_more_link===`y`&&(y?.links?.length??0)>0,w=l&&(y.tags?.length??0)>0,T=u&&C;return!S&&!w&&!T?null:c(e,{className:`w-full mt-[16px] ${v?`pointer-events-none`:``}`,children:[c(e,{className:`px-[12px]`,children:[S&&s(i,{title:S}),w&&s(r,{tags:y.tags||[],className:`mt-[12px]`})]}),T&&s(n,{mode:`detail`,series_num:b,information:y,onEpisodeChange:x})]})}export{l as VideoDetailInfoTitleTagsEpisodesClient};
2
+ "use client";import{Box as e}from"../../../../ui/box.mjs";import{SeriesEpisodes as t}from"../../../../common/series-episodes/index.mjs";import{useCardDecoration as n}from"../../../../../hooks/use-card-decoration.mjs";import{DetailInfoTags as r}from"../shared/detail-info-tags.mjs";import{DetailInfoTitle as i}from"../shared/detail-info-title.mjs";import{editorPreviewInformation as a}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as o}from"../shared/runtime-context-provider.mjs";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({showTags:l=!0,showEpisodes:u=!0,mode:d=`renderer`}){let f=o(),p=f?.information,m=f?.currentSeriesNum??1,h=f?.onEpisodeChange,g=d===`editor`,{getTitleText:_}=n(),v=g,y=v?a:p;if(!y)return null;let b=Math.max(1,Number(m||1)),x=v?e=>{}:h??(()=>{}),S=_(y),C=y?.is_more_link===`y`&&(y?.links?.length??0)>1,w=l&&(y.tags?.length??0)>0,T=u&&C;return!S&&!w&&!T?null:c(e,{className:`w-full mt-[16px] ${v?`pointer-events-none`:``}`,children:[c(e,{className:`px-[12px]`,children:[S&&s(i,{title:S}),w&&s(r,{tags:y.tags||[],className:`mt-[12px]`})]}),T&&s(t,{mode:`detail`,series_num:b,information:y,onEpisodeChange:x})]})}export{l as VideoDetailInfoTitleTagsEpisodesClient};
@@ -6,6 +6,6 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
  /**
7
7
  * 媒体信息-选集物料服务端组件。
8
8
  */
9
- declare function VideoDetailInfoTitleTagsEpisodes(props: VideoDetailInfoTitleTagsEpisodesProps): react_jsx_runtime0.JSX.Element;
9
+ declare function VideoDetailInfoTitleTagsEpisodes(props: VideoDetailInfoTitleTagsEpisodesProps): Promise<react_jsx_runtime0.JSX.Element>;
10
10
  //#endregion
11
11
  export { VideoDetailInfoTitleTagsEpisodes };
@@ -1,2 +1,2 @@
1
1
 
2
- import{VideoDetailInfoTitleTagsEpisodesClient as e}from"./client.mjs";import{jsx as t}from"react/jsx-runtime";function n(n){let{mode:r=`renderer`,...i}=n;return t(e,{...i,mode:r})}export{n as VideoDetailInfoTitleTagsEpisodes};
2
+ import{VideoDetailMaterialRuntimeProvider as e}from"../shared/runtime-context-provider.mjs";import{resolveVideoDetailRouteContext as t}from"../shared/video-detail-route-context-server.mjs";import{getVideoDetailServerInformation as n}from"../shared/video-detail-server-data.mjs";import{VideoDetailInfoTitleTagsEpisodesClient as r}from"./client.mjs";import{jsx as i}from"react/jsx-runtime";async function a(a){let{mode:o=`renderer`,...s}=a;if(o!==`renderer`)return i(r,{...s,mode:o});let c=await t(),l=c.detailId;if(!l)return i(r,{...s,mode:o});let u=await n(l);return u?i(e,{value:{information:u,detailId:l,currentSeriesNum:Math.max(1,Number(c.currentSeriesNum||1)),isShow:!0,isInformationLoading:!1,isInformationResolved:!0},children:i(r,{...s,mode:o})}):i(r,{...s,mode:o})}export{a as VideoDetailInfoTitleTagsEpisodes};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{EmptyState as e}from"../../../../ui/empty.mjs";import{Skeleton as t}from"../../../../ui/skeleton.mjs";import n from"../../search-bar/variants/detail-search-bar/index.mjs";import{editorPreviewInformation as r}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as i}from"../shared/runtime-context-provider.mjs";import{DetailHero as a}from"../shared/video-hero.mjs";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";import{useTranslations as l}from"next-intl";function u({mode:u=`renderer`,children:d}){let f=l(`components.pages.videoDetail`),p=i(),m=p?.information,h=p?.episodeIndex??0,g=p?.resumeProgressSeconds??0,_=p?.isWebView??!1,v=p?.isInformationLoading??!1,y=p?.isInformationResolved??!!m,b=u===`editor`,x=b?{...r,id:``,mid:``}:m,S=b?0:h,C=b?0:g,w=x?.status===`1`;return b&&x?s(`div`,{className:`pointer-events-none`,children:s(a,{mode:u,isVideo:!0,information:x,episodeIndex:S,resumeProgressSeconds:C})}):c(`div`,{className:`w-full bg-bg2 text-text1 ${_?``:`pt-11`}`,children:[!_&&s(`div`,{className:`fixed h-[44px] bg-black top-0 left-0 right-0 z-[1000]`,children:s(n,{})}),c(`div`,{className:`mx-auto w-full max-w-[840px]`,children:[x&&!w&&s(e,{type:`no-content`,text:f(`videoDetailClient.videoUnavailable`)}),x&&w&&c(o,{children:[!_&&s(a,{mode:u,isVideo:!0,information:x,episodeIndex:S,resumeProgressSeconds:C}),d]}),!x&&v&&c(`div`,{className:`px-[12px] pt-[16px]`,children:[s(t,{className:`w-full aspect-[16/9] rounded-[12px]`}),s(t,{className:`w-[70%] h-[24px] mt-[16px]`}),s(t,{className:`w-full h-[16px] mt-[12px]`}),s(t,{className:`w-[85%] h-[16px] mt-[8px]`})]}),!x&&!v&&y&&s(e,{type:`no-content`,text:f(`videoDetailClient.videoDeleted`)})]})]})}export{u as VideoDetailPlayerClient};
2
+ "use client";import{pxToVw as e}from"../../../../../utils/helper.mjs";import{EmptyState as t}from"../../../../ui/empty.mjs";import{Skeleton as n}from"../../../../ui/skeleton.mjs";import{useRequest as r}from"../../../../../hooks/query/use-query.mjs";import{batchQueryContentInteractions as i}from"../../../../../hooks/use-content-operate.mjs";import a from"../../../../../assets/icons/detail/video_play.mjs";import o from"../../search-bar/variants/detail-search-bar/index.mjs";import{editorPreviewInformation as s}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as c}from"../shared/runtime-context-provider.mjs";import{DetailHero as l}from"../shared/video-hero.mjs";import{useMemo as u}from"react";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";import{useTranslations as m}from"next-intl";function h({mode:h=`renderer`,children:g}){let _=m(`components.pages.videoDetail`),v=c(),y=v?.information,b=v?.episodeIndex??0,x=v?.currentSeriesNum??1,S=v?.resumeProgressSeconds??0,C=v?.isWebView??!1,w=v?.isInformationLoading??!1,T=v?.isInformationResolved??!!y,E=h===`editor`,D=E?{...s,id:``,mid:``}:y,O=E?0:b,k=D?.links?.[O]?.id||``,A=h===`renderer`&&!C&&!!D?.id,{data:j,isFetching:M,isFetchedAfterMount:N,isSuccess:P}=r(u(()=>[`video-detail-player-interaction`,D?.id,k,x],[k,x,D?.id]),async()=>D?.id?await i([D.id],1):null,{enabled:A,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),F=u(()=>{if(!N||M||!P)return 0;let e=j?.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===x?t:0},[x,j,N,M,P]),I=E?0:F>0?F:S,L=D?.status===`1`;return E&&D?f(`div`,{className:`pointer-events-none`,children:f(l,{mode:h,isVideo:!0,information:D,episodeIndex:O,resumeProgressSeconds:I})}):p(`div`,{className:`w-full bg-bg2 text-text1 ${C?``:`pt-11`}`,children:[!C&&f(`div`,{className:`fixed h-[44px] bg-black top-0 left-0 right-0 z-[1000]`,children:f(o,{})}),p(`div`,{className:`mx-auto w-full max-w-[840px]`,children:[D&&!L&&f(t,{type:`no-content`,text:_(`videoDetailClient.videoUnavailable`)}),D&&L&&p(d,{children:[!C&&f(l,{mode:h,isVideo:!0,information:D,episodeIndex:O,resumeProgressSeconds:I}),g]}),!D&&w&&p(`div`,{className:`relative w-full overflow-hidden`,style:{height:e(241.875),maxHeight:e(242)},children:[f(n,{className:`h-full w-full rounded-none`}),f(`div`,{className:`absolute inset-0 z-[1] flex items-center justify-center pointer-events-none`,children:f(`div`,{className:`flex items-center justify-center w-10 h-10 rounded-full bg-[rgba(0,0,0,0.45)]`,children:f(a,{className:`w-[14px] h-[20px] text-white`})})})]}),!D&&!w&&T&&f(t,{type:`no-content`,text:_(`videoDetailClient.videoDeleted`)})]})]})}export{h as VideoDetailPlayerClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useRequest as i}from"../../../../../hooks/query/use-query.mjs";import a from"../../../../../assets/icons/detail/video_flag.mjs";import{MiniThreeCard as o}from"../../../../common/cards/mini-three-card.mjs";import{useCardDecoration as s}from"../../../../../hooks/use-card-decoration.mjs";import{buildEditorPreviewRecommendList as c}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as l}from"../shared/runtime-context-provider.mjs";import{clampColumns as u,mergeManualAndPool as d,normalizeRecommendRuntimeProps as f,resolveRows as p}from"./utils.mjs";import{useCallback as ee,useEffect as m,useMemo as h,useRef as te,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";function y({rows:y,columns:ne,smartTagEnabled:x,smartTagIds:S,title:ce,showPlayCount:le,playCountDelta:ue,showEpisode:de,enableInfinite:fe,items:w,mode:pe=`renderer`}){let me=l()?.detailId||``,T=pe===`editor`,E=T,{getVerticalHoCoverImageUrl:D,getTitleText:O}=s(),k=te(null),A=h(()=>f({smartTagEnabled:x,smartTagIds:S,enableInfinite:fe,items:w}),[fe,w,x,S]),j=A.smartTagEnabled,M=A.smartTagIds,N=h(()=>A.items??[],[A.items]),P=A.enableInfinite&&!T,F=!j,I=P&&j&&!E,he=p(y,P),L=u(ne),R=he*L,z=Math.max(1,R),[ge,B]=g([]),[V,H]=g(!1),[U,W]=g(!1),G=h(()=>c(R),[R]),{data:K}=i([`video-detail-recommend`,me,I?`paged`:`all`,z,M.join(`,`)],async()=>E?null:I?await e({page_size:z,tags:M}):await e({tags:M}),{enabled:!E}),q=h(()=>E?G:re(K?.data?.videos),[K?.data?.videos,G,E]);m(()=>{if(!I){B([]),H(!1),W(!1);return}B(q),H(b(K?.data?.videos,z)),W(!1)},[K?.data?.videos,q,z,I]);let J=I?ge:q,Y=h(()=>F?Array.from(new Set(N.map(e=>C(e.contentId)).filter(Boolean))):[],[N,F]),{data:_e}=i([`video-detail-recommend-manual-details`,Y.join(`,`)],async()=>{if(!Y.length)return[];let e=await t({ids:Y});return(Array.isArray(e.data?.videos)?e.data.videos:[]).map(e=>ie(e))},{enabled:Y.length>0}),ve=h(()=>F?new Set(N.map(e=>C(e.contentId)).filter(Boolean)):new Set,[N,F]),ye=h(()=>E?J:J.filter(e=>!ve.has(e.id)),[J,E,ve]),X=h(()=>{if(!F||!N.length)return[];let e=new Map;return J.forEach(t=>{let n=C(t.id);n&&e.set(n,t)}),(_e||[]).forEach(t=>{let n=C(t.id);n&&e.set(n,t)}),N.map((t,n)=>{let r=G[n%Math.max(1,G.length)],i=C(t.contentId),a=e.get(i)??(E?{...r,id:i||r.id||`preview-manual-${n+1}`,name:r.name||`猜你喜欢 ${n+1}`}:null);if(!a)return null;let o=t.titleMode===`custom`?t.title:O(a),s=t.coverMode===`upload`?t.coverUrl:D(a);return{info:{...a,name:o||a.name,img_y:s||a.img_y,img_x:s||a.img_x},config:{showPlayCount:t.showPlayCount,playCountDelta:t.playCountDelta,showEpisode:t.showEpisode}}}).filter(Boolean)},[G,J,O,D,E,_e,N,F]),Z=h(()=>ye.map(e=>({info:e})),[ye]),be=F&&N.length>0,xe=h(()=>be?X:d(X,Z,R),[be,X,R,Z]),Q=h(()=>{if(I){if(!X.length)return Z;let e=new Set(X.map(e=>e.info.id).filter(Boolean));return X.concat(Z.filter(t=>!e.has(t.info.id)))}if(P){if(!X.length)return Z;let e=new Set(X.map(e=>e.info.id).filter(Boolean));return X.concat(Z.filter(t=>!e.has(t.info.id)))}return xe},[xe,X,Z,P,I]),Se=V&&Q.length>0?Math.max(0,Q.length-4):-1,Ce=String(ce||``).trim(),$=ee(async()=>{if(!(!I||!V||U)){W(!0);try{let t=await e({page_size:z,tags:M}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=re(n),i=0;B(e=>{let t=new Set(e.map(e=>e.id).filter(Boolean)),n=[...e];return r.forEach(e=>{(!e.id||!t.has(e.id))&&(n.push(e),e.id&&t.add(e.id))}),i=n.length-e.length,n}),H(b(n,z)&&i>0)}catch(e){console.error(`猜你喜欢分页加载失败`,e),H(!1)}finally{W(!1)}}},[V,U,z,M,I]);return m(()=>{if(!I)return;let e=k.current;if(!e||!V)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!U&&$()});return t.observe(e),()=>{t.disconnect()}},[$,V,U,I,Se]),Q.length?v(n,{className:`w-full mt-[16px] ${E?`pointer-events-none`:``}`,children:[Ce?_(r,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:Ce}):null,_(n,{className:`w-full flex flex-wrap px-[12px]`,children:Q.map((e,t)=>{let n=O(e.info),i=le!==!1&&(e.config?.showPlayCount??!0),s=e.config?.showEpisode??de,c=oe(e.info.play_count||0),l=ae(e.info),u=Number.isFinite(L)&&L>0?L:3,d=`${100/u}%`,f=t%u,p=u>1?{paddingLeft:8*f/u,paddingRight:8*(u-f-1)/u}:null;return _(`div`,{ref:t===Se?k:void 0,style:{width:d,...p||{}},children:_(o,{url:D(e.info),text:n,textChild:_(r,{as:`h3`,className:`text-text1 text-[16px] h-[24px] leading-[24px] mt-[4px] line-clamp-1`,children:n}),style:{width:`100%`},bottomLeftChild:i?v(`div`,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] rounded-[4px] bg-[#333] ml-[4px] flex items-center`,children:[_(a,{className:`w-[16px] h-[auto] text-[#fff] mr-[4px]`}),c]}):null,bottomRightChild:s&&l?_(`div`,{className:`text-[#fff] text-[12px] leading-[20px] pr-2`,children:l}):null,linkPath:E?``:se(e.info)})},`guess-like-${t}`)})})]}):null}function ne(e){return{id:e.video_id||``,mid:``,name:e.name||``,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:0,episode_cnt:e.episode_count||0,show_at:e.show_at??``,position:``,img_type:e.img_type??``,img_x:e.img_x??``,img_y:e.img_y??``,img_width:``,img_height:``,play_count:e.play_count,preview_images:[],duration:String(e.duration??``),score:String(e.score??``),is_more_link:e.is_more_link?`y`:`n`,update_status:String(e.update_status??``),description:e.description??``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:e.source_tags??``,source_actor:[],links:Array.isArray(e.episodes)?e.episodes.map(e=>({id:e.id??``,name:e.name??``,preview_m3u8_url:e.preview_m3u8_url??``,m3u8_url:e.m3u8_url??``})):[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}function re(e){return Array.isArray(e)?e.map(e=>ne(e)):[]}function ie(e){let t=String(e?.id||e?.mid||e?.video_id||``),n=Number(e?.content_type||0)===2||e?.is_more_link===`y`||e?.is_more_link===`1`||e?.is_more_link===!0,r=Array.isArray(e?.links)?e.links.map(e=>({id:String(e?.id||``),name:String(e?.name||``),preview_m3u8_url:String(e?.preview_m3u8_url||``),m3u8_url:String(e?.m3u8_url||``)})):[],i=Array.isArray(e?.video_episodes)?e.video_episodes.length:0,a=Number(e?.episode_cnt||i||r.length||0);return{id:t,mid:String(e?.mid||t),name:String(e?.name||``),cat_id:String(e?.cat_id||``),cat_name:String(e?.cat_name||``),status:String(e?.status||`1`),status_text:String(e?.status_text||``),create_time:String(e?.create_time||``),content_type:0,type:n?2:1,episode_cnt:Number.isFinite(a)?a:0,show_at:String(e?.show_at||``),position:String(e?.position||``),img_type:String(e?.img_type||``),img_x:String(e?.img_x||``),img_y:String(e?.img_y||``),img_width:String(e?.img_width||``),img_height:String(e?.img_height||``),play_count:Number(e?.play_count??e?.browse_count??0),preview_images:Array.isArray(e?.preview_images)?e.preview_images:[],duration:String(e?.duration||``),score:String(e?.score||``),is_more_link:n?`y`:`n`,update_status:String(e?.update_status||``),description:String(e?.description||``),language:String(e?.language||``),director:String(e?.director||``),actor:String(e?.actor||``),area:String(e?.area||``),issue_date:String(e?.issue_date||``),publisher:String(e?.publisher||``),series:String(e?.series||``),number:String(e?.number||``),tags:Array.isArray(e?.tags)?e.tags:[],source_tags:String(e?.source_tags||``),source_actor:Array.isArray(e?.source_actor)?e.source_actor:[],links:r,money:String(e?.money||``),up_user:String(e?.up_user||``),source_username:String(e?.source_username||``),task_id:String(e?.task_id||``),file_status:String(e?.file_status||``)}}function b(e,t){if(!Array.isArray(e)||e.length===0)return!1;let n=e[0];if(typeof n?.has_more==`boolean`)return n.has_more;let r=Number(n?.total??0);return Number.isFinite(r)&&r>0?r>t:e.length>=t}function ae(e){if(x(e)){let t=Number(e.episode_cnt||e.links?.length||0);return t>0?`全${t}集`:``}return S(Number(e.duration||0))}function x(e){if(Number(e.type??e.content_type??0)===2)return!0;let t=e.is_more_link;if(t===!0||t===`y`||t===`1`)return!0;let n=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(n)&&n>1}function S(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function oe(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function se(e){if(e.content_type===0){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}return`/post/${e.id}`}function C(e){return typeof e==`string`?e.trim():``}export{y as VideoDetailRecommendClient};
2
+ "use client";import{gContentGetGuessYouLikeVideos as e,pContentBatchGetVideoDetail as t}from"../../../../../service/generated/client.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import{useRequest as i}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as a}from"../../../../common/keep-scroll-position/index.mjs";import o from"../../../../../assets/icons/detail/video_flag.mjs";import{MiniThreeCard as s}from"../../../../common/cards/mini-three-card.mjs";import{useCardDecoration as c}from"../../../../../hooks/use-card-decoration.mjs";import{buildEditorPreviewRecommendList as l}from"../shared/editor-preview.mjs";import{useVideoDetailMaterialRuntimeContext as u}from"../shared/runtime-context-provider.mjs";import{clampColumns as d,mergeManualAndPool as f,normalizeRecommendRuntimeProps as p,resolveRows as ee}from"./utils.mjs";import{useCallback as te,useEffect as m,useMemo as h,useRef as ne,useState as re}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";function ie({rows:ie,columns:ae,smartTagEnabled:v,smartTagIds:y,title:fe,showPlayCount:pe,playCountDelta:me,showEpisode:he,enableInfinite:x,items:S,mode:ge=`renderer`}){let C=u()?.detailId||``,w=ge===`editor`,T=w,{getVerticalHoCoverImageUrl:E,getTitleText:D}=c(),O=ne(null),k=h(()=>p({smartTagEnabled:v,smartTagIds:y,enableInfinite:x,items:S}),[x,S,v,y]),A=k.smartTagEnabled,j=k.smartTagIds,M=h(()=>k.items??[],[k.items]),N=k.enableInfinite&&!w,P=!A,F=N&&A&&!T,_e=ee(ie,N),I=d(ae),L=_e*I,R=Math.max(1,L),z=h(()=>[`video-detail-recommend`,C||`unknown`,R,j.join(`,`)].join(`:`),[C,R,j]),[ve,B]=a(`${z}:pool`,[]),[V,H]=a(`${z}:has-more`,!1),[U,W]=re(!1),G=h(()=>l(L),[L]),{data:K}=i([`video-detail-recommend`,C,F?`paged`:`all`,R,j.join(`,`)],async()=>T?null:await e({page_size:R,tags:j}),{enabled:!T}),q=h(()=>T?G:oe(K?.data?.videos),[K?.data?.videos,G,T]);m(()=>{if(!F){W(!1);return}B(e=>{if(!q.length)return e;if(!e.length)return q;let t=[...q],n=new Set(q.map(e=>e.id).filter(Boolean));return e.forEach(e=>{(!e.id||!n.has(e.id))&&(t.push(e),e.id&&n.add(e.id))}),t});let e=ce(K?.data?.videos,R);H(t=>t||e),W(!1)},[K?.data?.videos,q,R,H,B,F]);let J=F?ve:q,Y=h(()=>P?Array.from(new Set(M.map(e=>b(e.contentId)).filter(Boolean))):[],[M,P]),{data:ye}=i([`video-detail-recommend-manual-details`,Y.join(`,`)],async()=>{if(!Y.length)return[];let e=await t({ids:Y});return(Array.isArray(e.data?.videos)?e.data.videos:[]).map(e=>se(e))},{enabled:Y.length>0}),be=h(()=>P?new Set(M.map(e=>b(e.contentId)).filter(Boolean)):new Set,[M,P]),xe=h(()=>T?J:J.filter(e=>!be.has(e.id)),[J,T,be]),X=h(()=>{if(!P||!M.length)return[];let e=new Map;return J.forEach(t=>{let n=b(t.id);n&&e.set(n,t)}),(ye||[]).forEach(t=>{let n=b(t.id);n&&e.set(n,t)}),M.map((t,n)=>{let r=G[n%Math.max(1,G.length)],i=b(t.contentId),a=e.get(i)??(T?{...r,id:i||r.id||`preview-manual-${n+1}`,name:r.name||`猜你喜欢 ${n+1}`}:null);if(!a)return null;let o=t.titleMode===`custom`?t.title:D(a),s=t.coverMode===`upload`?t.coverUrl:E(a);return{info:{...a,name:o||a.name,img_y:s||a.img_y,img_x:s||a.img_x},config:{showPlayCount:t.showPlayCount,playCountDelta:t.playCountDelta,showEpisode:t.showEpisode}}}).filter(Boolean)},[G,J,D,E,T,ye,M,P]),Z=h(()=>xe.map(e=>({info:e})),[xe]),Se=P&&M.length>0,Ce=h(()=>Se?X:f(X,Z,L),[Se,X,L,Z]),Q=h(()=>{if(F){if(!X.length)return Z;let e=new Set(X.map(e=>e.info.id).filter(Boolean));return X.concat(Z.filter(t=>!e.has(t.info.id)))}if(N){if(!X.length)return Z;let e=new Set(X.map(e=>e.info.id).filter(Boolean));return X.concat(Z.filter(t=>!e.has(t.info.id)))}return Ce},[Ce,X,Z,N,F]),we=V&&Q.length>0?Math.max(0,Q.length-4):-1,Te=String(fe||``).trim(),$=te(async()=>{if(!(!F||!V||U)){W(!0);try{let t=await e({page_size:R,tags:j}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=oe(n),i=0;B(e=>{let t=new Set(e.map(e=>e.id).filter(Boolean)),n=[...e];return r.forEach(e=>{(!e.id||!t.has(e.id))&&(n.push(e),e.id&&t.add(e.id))}),i=n.length-e.length,n}),H(ce(n,R)&&i>0)}catch(e){console.error(`猜你喜欢分页加载失败`,e),H(!1)}finally{W(!1)}}},[V,U,R,j,H,B,F]);return m(()=>{if(!F)return;let e=O.current;if(!e||!V)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&!U&&$()});return t.observe(e),()=>{t.disconnect()}},[$,V,U,F,we]),Q.length?_(n,{className:`w-full mt-[16px] ${T?`pointer-events-none`:``}`,children:[Te?g(r,{className:`block pl-[12px] mb-[8px] text-text1 text-[18px] leading-[26px] font-bold`,children:Te}):null,g(n,{className:`w-full flex flex-wrap px-[12px]`,children:Q.map((e,t)=>{let n=D(e.info),i=pe!==!1&&(e.config?.showPlayCount??!0),a=e.config?.showEpisode??he,c=ue(e.info.play_count||0),l=le(e.info),u=Number.isFinite(I)&&I>0?I:3,d=`${100/u}%`,f=t%u,p=u>1?{paddingLeft:8*f/u,paddingRight:8*(u-f-1)/u}:null;return g(`div`,{ref:t===we?O:void 0,style:{width:d,...p||{}},children:g(s,{url:E(e.info),text:n,textChild:g(r,{as:`h3`,className:`text-text1 text-[16px] h-[24px] leading-[24px] mt-[4px] line-clamp-1`,children:n}),style:{width:`100%`},bottomLeftChild:i?_(`div`,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] rounded-[4px] bg-[#333] ml-[4px] flex items-center`,children:[g(o,{className:`w-[16px] h-[auto] text-[#fff] mr-[4px]`}),c]}):null,bottomRightChild:a&&l?g(`div`,{className:`text-[#fff] text-[12px] leading-[20px] pr-2`,children:l}):null,linkPath:T?``:de(e.info)})},`guess-like-${t}`)})})]}):null}function ae(e){return{id:e.video_id||``,mid:``,name:e.name||``,cat_id:``,cat_name:``,status:`1`,status_text:``,create_time:``,content_type:0,episode_cnt:e.episode_count||0,show_at:e.show_at??``,position:``,img_type:e.img_type??``,img_x:e.img_x??``,img_y:e.img_y??``,img_width:``,img_height:``,play_count:e.play_count,preview_images:[],duration:String(e.duration??``),score:String(e.score??``),is_more_link:e.is_more_link?`y`:`n`,update_status:String(e.update_status??``),description:e.description??``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:[],source_tags:e.source_tags??``,source_actor:[],links:Array.isArray(e.episodes)?e.episodes.map(e=>({id:e.id??``,name:e.name??``,preview_m3u8_url:e.preview_m3u8_url??``,m3u8_url:e.m3u8_url??``})):[],money:``,up_user:``,source_username:``,task_id:``,file_status:``}}function oe(e){return Array.isArray(e)?e.map(e=>ae(e)):[]}function se(e){let t=String(e?.id||e?.mid||e?.video_id||``),n=Number(e?.content_type||0)===2||e?.is_more_link===`y`||e?.is_more_link===`1`||e?.is_more_link===!0,r=Array.isArray(e?.links)?e.links.map(e=>({id:String(e?.id||``),name:String(e?.name||``),preview_m3u8_url:String(e?.preview_m3u8_url||``),m3u8_url:String(e?.m3u8_url||``)})):[],i=Array.isArray(e?.video_episodes)?e.video_episodes.length:0,a=Number(e?.episode_cnt||i||r.length||0);return{id:t,mid:String(e?.mid||t),name:String(e?.name||``),cat_id:String(e?.cat_id||``),cat_name:String(e?.cat_name||``),status:String(e?.status||`1`),status_text:String(e?.status_text||``),create_time:String(e?.create_time||``),content_type:0,type:n?2:1,episode_cnt:Number.isFinite(a)?a:0,show_at:String(e?.show_at||``),position:String(e?.position||``),img_type:String(e?.img_type||``),img_x:String(e?.img_x||``),img_y:String(e?.img_y||``),img_width:String(e?.img_width||``),img_height:String(e?.img_height||``),play_count:Number(e?.play_count??e?.browse_count??0),preview_images:Array.isArray(e?.preview_images)?e.preview_images:[],duration:String(e?.duration||``),score:String(e?.score||``),is_more_link:n?`y`:`n`,update_status:String(e?.update_status||``),description:String(e?.description||``),language:String(e?.language||``),director:String(e?.director||``),actor:String(e?.actor||``),area:String(e?.area||``),issue_date:String(e?.issue_date||``),publisher:String(e?.publisher||``),series:String(e?.series||``),number:String(e?.number||``),tags:Array.isArray(e?.tags)?e.tags:[],source_tags:String(e?.source_tags||``),source_actor:Array.isArray(e?.source_actor)?e.source_actor:[],links:r,money:String(e?.money||``),up_user:String(e?.up_user||``),source_username:String(e?.source_username||``),task_id:String(e?.task_id||``),file_status:String(e?.file_status||``)}}function ce(e,t){if(!Array.isArray(e)||e.length===0)return!1;let n=e[0];if(typeof n?.has_more==`boolean`)return n.has_more;let r=Number(n?.total??0);return Number.isFinite(r)&&r>0?r>t:e.length>=t}function le(e){if(v(e)){let t=Number(e.episode_cnt||e.links?.length||0);return t>0?`全${t}集`:``}return y(Number(e.duration||0))}function v(e){if(Number(e.type??e.content_type??0)===2)return!0;let t=e.is_more_link;if(t===!0||t===`y`||t===`1`)return!0;let n=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(n)&&n>1}function y(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function ue(e){let t=Number(e||`0`);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function de(e){if(e.content_type===0){let t=encodeURIComponent(e.name||``);return`/video/${e.id}/${t}/episode/1`}return`/post/${e.id}`}function b(e){return typeof e==`string`?e.trim():``}export{ie as VideoDetailRecommendClient};
@@ -1,2 +1,2 @@
1
1
 
2
- function e(e){let t=e.smartTagEnabled===!0,n=Array.isArray(e.smartTagIds)?e.smartTagIds.map(e=>String(e||``).trim()).filter(Boolean):[],r=t?e.enableInfinite===!0:!1,i=Array.isArray(e.items)?e.items.filter(Boolean):e.items;return{...e,smartTagEnabled:t,smartTagIds:n,enableInfinite:r,items:i}}function t(e,t){let n=Number(e||1);if(!Number.isFinite(n))return 1;let r=Math.max(1,Math.floor(n));return t?r:Math.min(10,r)}function n(e){let t=Number(e??3);return Number.isFinite(t)?Math.min(6,Math.max(1,Math.floor(t))):3}function r(e,t,n){let r=Math.max(0,n),i=e.slice(0,r);return i.length>=r?i:i.concat(t.slice(0,r-i.length))}export{n as clampColumns,r as mergeManualAndPool,e as normalizeRecommendRuntimeProps,t as resolveRows};
2
+ function e(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===1;if(typeof e==`string`){let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`y`||t===`yes`||t===`on`}return!1}function t(t){let n=e(t.smartTagEnabled),r=Array.isArray(t.smartTagIds)?t.smartTagIds.map(e=>String(e||``).trim()).filter(Boolean):[],i=n?e(t.enableInfinite):!1,a=Array.isArray(t.items)?t.items.filter(Boolean):t.items;return{...t,smartTagEnabled:n,smartTagIds:r,enableInfinite:i,items:a}}function n(e,t){let n=Number(e||1);if(!Number.isFinite(n))return 1;let r=Math.max(1,Math.floor(n));return t?r:Math.min(10,r)}function r(e){let t=Number(e??3);return Number.isFinite(t)?Math.min(6,Math.max(1,Math.floor(t))):3}function i(e,t,n){let r=Math.max(0,n),i=e.slice(0,r);return i.length>=r?i:i.concat(t.slice(0,r-i.length))}export{r as clampColumns,i as mergeManualAndPool,t as normalizeRecommendRuntimeProps,n as resolveRows};
@@ -1,2 +1,2 @@
1
1
 
2
- function e(e){let t=e.smartTagEnabled===!0,n=Array.isArray(e.smartTagIds)?e.smartTagIds.map(e=>String(e||``).trim()).filter(Boolean):[],r=typeof e.catId==`string`?e.catId.trim():``,i=t?e.enableInfinite===!0:!1,a=Array.isArray(e.items)?e.items.filter(Boolean):e.items;return{...e,smartTagEnabled:t,smartTagIds:n,catId:r,enableInfinite:i,items:a}}export{e as normalizeHomeRecommendRuntimeProps};
2
+ function e(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===1;if(typeof e==`string`){let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`y`||t===`yes`||t===`on`}return!1}function t(t){let n=e(t.smartTagEnabled),r=Array.isArray(t.smartTagIds)?t.smartTagIds.map(e=>String(e||``).trim()).filter(Boolean):[],i=typeof t.catId==`string`?t.catId.trim():``,a=n?e(t.enableInfinite):!1,o=Array.isArray(t.items)?t.items.filter(Boolean):t.items;return{...t,smartTagEnabled:n,smartTagIds:r,catId:i,enableInfinite:a,items:o}}export{t as normalizeHomeRecommendRuntimeProps};
@@ -1,2 +1,2 @@
1
1
 
2
- import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{resolveHomeRecommendFeedMode as t}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as n}from"./home-recommend-preview.mjs";import{batchGetHomeRecommendVideoDetailMap as r}from"./home-recommend-video-detail.mjs";function i(e){return typeof e==`string`?e.trim():``}function a(e){return typeof e==`string`?e.trim():``}function o(e){return a(e)}function s(e){return Array.isArray(e)?e.map(e=>a(e)).filter(Boolean):[]}function c(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function l(e,t){let n=e,r=i(n.video_id||e.id||e.mid)||t,a=c(n.play_count),o=c(n.like_count),s=c(n.collect_count),l=Array.isArray(n.episodes)?n.episodes.length:0,u=a!==void 0||o!==void 0||s!==void 0?{browse_cnt:a,like_cnt:o,collect_cnt:s}:void 0;return{id:r,mid:i(e.mid),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,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,time:e.time,money:e.money,source_username:e.source_username,task_id:e.task_id,error_msg:e.error_msg,file_status:e.file_status,score:c(e.score)??void 0,duration:c(e.duration)??void 0,episode_cnt:l>0?l:void 0,type:e.is_more_link?2:1,static:u}}function u(e){let t={showPlayCount:e.showPlayCount,playCountDelta:e.playCountDelta,showEpisode:e.showEpisode};if(!(t.showPlayCount===void 0&&t.playCountDelta===void 0&&t.showEpisode===void 0))return t}function d(e,t){let r=a(t.coverUrl),i=t.coverMode===`upload`||r&&t.coverMode!==`content`?r:e.img_y||e.img_x||``,o=a(t.title),s=t.titleMode===`custom`||o&&t.titleMode!==`content`?o:e.name||``,c=a(t.description),l=a(t.badge_url),d=u(t);return{...e,name:s||e.name,img_y:i||e.img_y||e.img_x,img_x:i||e.img_x||e.img_y,description:c||e.description,badge_url:l||e.badge_url,[n]:d}}function f(e){let t=i(e.contentId),n=a(e.coverUrl),r=a(e.title),o=a(e.description);return{id:t,mid:t,name:r||``,img_x:n,img_y:n,description:o,type:1}}function p(e,t){if(!Array.isArray(e)||e.length===0||!Array.isArray(t)||t.length===0)return e;let n=t.map(e=>({...e,contentId:i(e.contentId)})),r=new Map;return n.forEach(e=>{e.contentId&&r.set(e.contentId,e)}),e.map((e,t)=>{let a=i(e.id||e.mid),o=a?r.get(a):void 0,s=n[t],c=o||(s?.contentId?void 0:s);return c?d(e,c):e})}async function m(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:i(e.contentId)})).filter(e=>!!e.contentId);if(!t.length)return[];let n=await r(t.map(e=>({id:e.contentId})));return t.map(e=>{let t=n.get(e.contentId||``);return d(t?l(t,e.contentId||``):f(e),e)})}async function h(t,n,r){let a=Math.max(1,Math.floor(Number(t)||16)),c=s(n),l=o(r);try{let t=[],n=new Set,r=new Set,o=``;for(;t.length<a;){let s=o||`__first__`;if(r.has(s))break;r.add(s);let u=await e({cursor:o||void 0,page_size:a-t.length,tags:c.length>0?c:void 0,cat_id:l||void 0}),d=Array.isArray(u.data?.videos)?u.data.videos:[];d.forEach(e=>{let r=i(e?.id||e?.mid);r&&n.has(r)||(r&&n.add(r),t.push(e))});let f=u.data?.cursor||``;if(!f||!d.length){o=``;break}o=f}return{videos:t.slice(0,a),nextCursor:o,loaded:!0}}catch(e){return console.error(`推荐位获取热门视频失败(server)`,e),{videos:[],nextCursor:``,loaded:!1}}}async function g({smartTagEnabled:e,smartTagIds:n,catId:r,enableInfinite:i,pageSize:a=16,items:c=[]}){let l=t(e),u=e===!0?s(n):[],d=o(r),f={list:[],icons:[],title:``,cursor:``,show_style:void 0};if(l===`manual-with-video-detail`){let e=await h(a,u,d);if(e.loaded)return{feedMode:l,data:{...f,list:e.videos,cursor:e.nextCursor}};try{let e=await m(c);return{feedMode:l,data:{...f,list:e,cursor:``}}}catch(e){return console.error(`推荐位智能铺设补齐视频详情失败(server)`,e),{feedMode:l,data:{...f,list:[],cursor:``}}}}if(i===!0)try{let e=await m(c);return{feedMode:l,data:{...f,list:e,cursor:``}}}catch(e){return console.error(`推荐位配置数据补齐视频详情失败(server)`,e),{feedMode:l,data:{...f,list:[],cursor:``}}}let g=await h(a,void 0,d),_=g.loaded?p(g.videos,c):f.list,v=g.loaded?g.nextCursor:f.cursor||``;return{feedMode:l,data:{...f,list:_,icons:[],cursor:v}}}export{g as resolveHomeRecommendServerData};
2
+ import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{resolveHomeRecommendFeedMode as t}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as n}from"./home-recommend-preview.mjs";import{batchGetHomeRecommendVideoDetailMap as r}from"./home-recommend-video-detail.mjs";function i(e){return typeof e==`string`?e.trim():``}function a(e){return typeof e==`string`?e.trim():``}function o(e){return a(e)}function s(e){return Array.isArray(e)?e.map(e=>a(e)).filter(Boolean):[]}function c(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function l(e,t){let n=e,r=i(n.video_id||e.id||e.mid)||t,a=c(n.play_count),o=c(n.like_count),s=c(n.collect_count),l=Array.isArray(n.episodes)?n.episodes.length:0,u=a!==void 0||o!==void 0||s!==void 0?{browse_cnt:a,like_cnt:o,collect_cnt:s}:void 0;return{id:r,mid:i(e.mid),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,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,time:e.time,money:e.money,source_username:e.source_username,task_id:e.task_id,error_msg:e.error_msg,file_status:e.file_status,score:c(e.score)??void 0,duration:c(e.duration)??void 0,episode_cnt:l>0?l:void 0,type:e.is_more_link?2:1,static:u}}function u(e){let t={showPlayCount:e.showPlayCount,playCountDelta:e.playCountDelta,showEpisode:e.showEpisode};if(!(t.showPlayCount===void 0&&t.playCountDelta===void 0&&t.showEpisode===void 0))return t}function d(e,t){let r=a(t.coverUrl),i=t.coverMode===`upload`||r&&t.coverMode!==`content`?r:e.img_y||e.img_x||``,o=a(t.title),s=t.titleMode===`custom`||o&&t.titleMode!==`content`?o:e.name||``,c=a(t.description),l=a(t.badge_url),d=u(t);return{...e,name:s||e.name,img_y:i||e.img_y||e.img_x,img_x:i||e.img_x||e.img_y,description:c||e.description,badge_url:l||e.badge_url,[n]:d}}function f(e){let t=i(e.contentId),n=a(e.coverUrl),r=a(e.title),o=a(e.description);return{id:t,mid:t,name:r||``,img_x:n,img_y:n,description:o,type:1}}function p(e){return(Array.isArray(e)?e:[]).map(e=>({...e,contentId:i(e.contentId)})).map(e=>d(f(e),e))}async function m(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:i(e.contentId)})).filter(e=>!!e.contentId);if(!t.length)return[];let n=await r(t.map(e=>({id:e.contentId})));return t.map(e=>{let t=n.get(e.contentId||``);return d(t?l(t,e.contentId||``):f(e),e)})}async function h(t,n,r){let a=Math.max(1,Math.floor(Number(t)||16)),c=s(n),l=o(r);try{let t=[],n=new Set,r=new Set,o=``;for(;t.length<a;){let s=o||`__first__`;if(r.has(s))break;r.add(s);let u=await e({cursor:o||void 0,page_size:a-t.length,tags:c.length>0?c:void 0,cat_id:l||void 0}),d=Array.isArray(u.data?.videos)?u.data.videos:[];d.forEach(e=>{let r=i(e?.id||e?.mid);r&&n.has(r)||(r&&n.add(r),t.push(e))});let f=u.data?.cursor||``;if(!f||!d.length){o=``;break}o=f}return{videos:t.slice(0,a),nextCursor:o,loaded:!0}}catch(e){return console.error(`推荐位获取热门视频失败(server)`,e),{videos:[],nextCursor:``,loaded:!1}}}async function g({smartTagEnabled:e,smartTagIds:n,catId:r,pageSize:i=16,items:a=[]}){let c=t(e),l=e===!0?s(n):[],u=o(r),d={list:[],icons:[],title:``,cursor:``,show_style:void 0};if(e!==!0)return{feedMode:c,data:{...d,list:p(a),cursor:``}};if(c===`manual-with-video-detail`){let e=await h(i,l,u);if(e.loaded)return{feedMode:c,data:{...d,list:e.videos,cursor:e.nextCursor}};try{let e=await m(a);return{feedMode:c,data:{...d,list:e,cursor:``}}}catch(e){return console.error(`推荐位智能铺设补齐视频详情失败(server)`,e),{feedMode:c,data:{...d,list:[],cursor:``}}}}return{feedMode:c,data:d}}export{g as resolveHomeRecommendServerData};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../ui/button.mjs";import t from"../../../../utils/event-bus.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{eventKey as i}from"../../../../constants/event-key.mjs";import{DeleteConfirmDialog as a}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{useCallback as o,useEffect as s,useMemo as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{usePathname as f,useRouter as p,useSearchParams as m}from"next/navigation";function h(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function g(g){let{title:_,rows:v=1,clearText:y,confirmDescription:b,storageKey:x=`guest`,onHistoryClick:S,mode:C=`renderer`}=g,w=_??`搜索历史`,T=y??`清空`,E=b??`确定要清除所有搜索历史吗?`,D=c(()=>[`搜索历史1`,`搜索历史2`,`搜索历史3`],[]),[O,k]=l([]),[A,j]=l(!1),M=p(),N=f(),P=m(),F=`search_history_${x}`,I=o(()=>{let e=[];try{let t=localStorage.getItem(F);if(t)try{let n=JSON.parse(t);e=Array.isArray(n)?n:[]}catch{e=[]}k(e)}catch(e){console.error(`Failed to parse search history`,e),k([])}},[F]);s(()=>(I(),t.on(i.SEARCH_HISTORY_UPDATE,I),()=>t.off(i.SEARCH_HISTORY_UPDATE,I)),[I]);let L=()=>{k([]),localStorage.removeItem(F),j(!1),t.emit(i.SEARCH_HISTORY_UPDATE)},R=c(()=>(O.length?O:C===`editor`?D:[]).slice(0,v*10),[O,C,D,v]);if(R.length===0)return null;let z=e=>{if(S){S(e);return}let t=new URLSearchParams(P.toString());t.set(`q`,e);let n=N.includes(`/search-result`)?N:`/search-result`;M.push(`${n}?${t.toString()}`)};return d(n,{className:`px-4 py-2`,children:[d(n,{className:`flex justify-between items-center mb-2`,children:[u(r,{className:`text-[16px] font-bold text-text1`,children:w}),u(e,{variant:`ghost`,size:`sm`,className:`text-text3 text-[12px] p-0 h-auto`,onClick:()=>j(!0),children:T})]}),u(n,{className:`flex flex-wrap gap-2 overflow-hidden`,style:{maxHeight:`${v*30}px`},children:R.map((e,t)=>u(n,{className:`px-3 py-1 bg-bg2 rounded-full cursor-pointer`,onClick:()=>z(e),children:u(r,{className:`text-[14px] text-text2`,children:h(e,8)})},t))}),u(a,{open:A,onOpenChange:j,onConfirm:L,title:``,description:E})]})}export{g as SearchHistoryClient};
2
+ "use client";import{Button as e}from"../../../ui/button.mjs";import t from"../../../../utils/event-bus.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{eventKey as i}from"../../../../constants/event-key.mjs";import{DeleteConfirmDialog as a}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{useCallback as o,useEffect as s,useMemo as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{usePathname as f,useRouter as p,useSearchParams as m}from"next/navigation";function h(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function g(g){let{title:_,rows:v=1,clearText:y,confirmDescription:b,storageKey:x=`guest`,onHistoryClick:S,mode:C=`renderer`}=g,w=_??`搜索历史`,T=y??`清空`,E=b??`确定要清除所有搜索历史吗?`,D=c(()=>[`搜索历史1`,`搜索历史2`,`搜索历史3`],[]),[O,k]=l([]),[A,j]=l(!1),M=p(),N=f(),P=m(),F=`search_history_${x}`,I=o(()=>{let e=[];try{let t=localStorage.getItem(F);if(t)try{let n=JSON.parse(t);e=Array.isArray(n)?n:[]}catch{e=[]}k(e)}catch(e){console.error(`Failed to parse search history`,e),k([])}},[F]);s(()=>(I(),t.on(i.SEARCH_HISTORY_UPDATE,I),()=>t.off(i.SEARCH_HISTORY_UPDATE,I)),[I]);let L=()=>{k([]),localStorage.removeItem(F),j(!1),t.emit(i.SEARCH_HISTORY_UPDATE)},R=c(()=>(O.length?O:C===`editor`?D:[]).slice(0,v*10),[O,C,D,v]);if(R.length===0)return null;let z=e=>{if(S){S(e);return}let t=new URLSearchParams(P.toString());t.set(`q`,e);let n=N.includes(`/search-result`)?N:`/search-result`;M.push(`${n}?${t.toString()}`)};return d(n,{className:`px-4 py-2`,children:[d(n,{className:`flex justify-between items-center mb-2`,children:[u(r,{className:`text-[16px] font-bold text-text1`,children:w}),u(e,{variant:`ghost`,size:`sm`,className:`text-text3 text-[12px] p-0 h-auto`,onClick:()=>j(!0),children:T})]}),u(n,{className:`flex flex-wrap gap-2 overflow-hidden`,style:{maxHeight:`30px`},children:R.map((e,t)=>u(n,{className:`px-3 py-1 bg-bg2 rounded-full cursor-pointer`,onClick:()=>z(e),children:u(r,{className:`text-[14px] text-text2`,children:h(e,8)})},t))}),u(a,{open:A,onOpenChange:j,onConfirm:L,title:``,description:E})]})}export{g as SearchHistoryClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import o from"next/link";import{usePathname as s}from"next/navigation";const c=[];function l(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function u(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function d(e,t){let n=l(t);if(e.configType===1){let t=l(u(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function f(e,t){return e.findIndex(e=>d(e,t))}function p(l){let{items:d=c,mode:p=`renderer`}=l,m=s(),h=r(()=>{if(p===`editor`)return 0;let e=f(d??[],m);return e>=0?e:0},[d,m,p]),g=r(()=>(d??[]).some(e=>e.label.trim()!==``),[d]);if(!d?.length)return null;function _(e){p===`editor`&&e.preventDefault()}let v=`flex min-w-0 flex-1 cursor-pointer flex-col items-center justify-center ${g?`gap-1`:``}`;return i(t,{className:`fixed bottom-0 left-0 right-0 z-50 safe-area-bottom bg-bg1 border-t border-line1 backdrop-blur-[2px] py-3 shadow-[0px_-4px_10px_0px_rgba(0,0,0,0.02)]`,children:i(t,{className:`flex w-full items-center`,children:d.map((r,s)=>{let c=h===s,l=c?r.activeIcon:r.icon,d=r.label;return a(o,{href:u(r),className:v,"data-index":s,onClick:_,children:[i(t,{className:`relative size-[22px] shrink-0`,children:l?i(e,{src:l,alt:d,fill:!0,className:`object-contain`}):i(t,{"data-active":c,className:`size-full rounded-sm bg-text3 data-[active=true]:bg-theme5`})}),g&&i(n,{"data-active":c,className:`truncate text-center text-[10px] leading-[10px] font-medium min-w-0 max-w-full px-0.5 text-text2 data-[active=true]:text-theme5`,children:d})]},s)})})})}export{p as TabBarClient};
2
+ "use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import o from"next/link";import{usePathname as s}from"next/navigation";const c=[];function l(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function u(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function d(e,t){let n=l(t);if(e.configType===1){let t=l(u(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function f(e,t){return e.findIndex(e=>d(e,t))}function p(l){let{items:d=c,mode:p=`renderer`}=l,m=s(),h=r(()=>{if(p===`editor`)return 0;let e=f(d??[],m);return e>=0?e:0},[d,m,p]),g=r(()=>(d??[]).some(e=>e.label.trim()!==``),[d]);if(!d?.length)return null;function _(e){p===`editor`&&e.preventDefault()}let v=`flex min-w-0 flex-1 cursor-pointer flex-col items-center justify-center ${g?`gap-1`:``}`;return i(t,{className:`fixed bottom-0 left-0 right-0 z-50 safe-area-bottom bg-bg1 border-t h-[calc(56px+env(safe-area-inset-bottom,0px))] border-line1 backdrop-blur-[2px] py-3 shadow-[0px_-4px_10px_0px_rgba(0,0,0,0.02)]`,children:i(t,{className:`flex w-full items-center`,children:d.map((r,s)=>{let c=h===s,l=c?r.activeIcon:r.icon,d=r.label;return a(o,{href:u(r),className:v,"data-index":s,onClick:_,children:[i(t,{className:`relative size-[22px] shrink-0`,children:l?i(e,{src:l,alt:d,fill:!0,className:`object-contain`}):i(t,{"data-active":c,className:`size-full rounded-sm bg-text3 data-[active=true]:bg-theme5`})}),g&&i(n,{"data-active":c,className:`truncate text-center text-[10px] leading-[10px] font-medium min-w-0 max-w-full px-0.5 text-text2 data-[active=true]:text-theme5`,children:d})]},s)})})})}export{p as TabBarClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Sheet as t,SheetContent as n,SheetHeader as r,SheetTitle as i}from"../../ui/sheet.mjs";import{Switch as a}from"../../ui/switch.mjs";import{Text as o}from"../../ui/text.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/close.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCardDecoration as d}from"../../../hooks/use-card-decoration.mjs";import{useCallback as f,useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";function S(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.id||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function C(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function w(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function T(e){return e.mode===`detail`?v(D,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):v(E,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle})}function E({open:s,variant:l,title:d,updateStatus:f,summaryText:_,seriesList:b,activeEpisodeId:C,showEpisodeTitle:T=!1,onToggleTitle:E,onClose:D,onSelectEpisode:O,popupBodyStyle:k}){let A=x(`components.common.seriesEpisodes`),j=!!E,M=j&&T,N=h(null),P=h(null),F=m(()=>S(b,`episode`,e=>A(`episodeLabel`,{episode:e})),[b,A]),I=m(()=>{if(F.length===0)return[];let e=[];return F.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[F]),L=m(()=>{if(!C)return 0;let e=F.findIndex(e=>e.id===C);return e<0?0:Math.floor(e/50)},[C,F]),[R,z]=g(L);p(()=>{z(L)},[L]);let B=m(()=>typeof _==`string`&&_.trim()?_:w(F.length,f,A),[F.length,_,A,f]),V=d||A(`selectorTitle`);function H(){let e=N.current;if(e){P.current&&=(window.cancelAnimationFrame(P.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}P.current=window.requestAnimationFrame(()=>{P.current=null;let e=N.current;e&&(e.scrollTop=0)})}}p(()=>{s&&H()},[s,T,R]);function U(e){E&&(E(e),H())}function W(e){O?.(e.id,e.series_num),D()}let G=M?2:5,K=I.length>1?v(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:I.map((e,t)=>{if(e.length===0)return null;let n=t===R,r=t*50+1,i=Math.min((t+1)*50,F.length);return y(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{z(t),H()},children:[r,`-`,i,n&&v(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,q=y(`div`,{className:`pb-[8px] flex justify-between`,children:[v(`span`,{className:`text-[16px] text-text1`,children:B}),j&&y(`div`,{className:`flex items-center gap-[4px]`,children:[v(a,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:T,onCheckedChange:e=>{U(!!e)}}),v(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{U(!T)},children:A(`episodeTitle`)})]})]}),J=v(`div`,{className:`grid w-full gap-2 ${G===2?`grid-cols-2`:`grid-cols-5`}`,children:(I[R]||[]).map((e,t)=>{let n=!!(C&&e.id===C);return v(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{W(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${M?`h-[72px] px-[10px] text-[14px]`:``} ${t%G===0?``:`border-l-0`}`,children:M?v(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})});return l===`sheet`?v(t,{open:s,onOpenChange:e=>!e&&D(),children:y(n,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] max-h-[70vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[v(r,{className:`pt-3 pb-0`,children:v(i,{className:`flex items-center justify-between text-lg text-text1`,children:V})}),y(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[K,q]}),v(`div`,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:J})]})}):v(u,{open:s,onOpenChange:e=>{e||D()},showCloseButton:!1,className:`border-0 bg-transparent p-0`,children:y(e,{className:`w-full flex flex-col bg-bg1 px-[12px] text-text1`,style:{height:`70vh`,...k,maxHeight:`70vh`},children:[y(e,{className:`shrink-0 flex justify-between items-center h-[48px]`,children:[v(o,{className:`text-[16px] font-bold text-text1`,children:V}),v(e,{className:`pl-[12px] h-full flex items-center`,onClick:D,children:v(c,{className:`w-[14px] h-[14px] text-text1 cursor-pointer`})})]}),y(e,{className:`flex-1 h-0 w-full pb-[12px] flex flex-col gap-3`,children:[K,q,v(e,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto`,children:J})]})]})})}function D({information:t,series_num:n,onEpisodeChange:r}){let i=x(`components.common`),{getTitleText:a}=d(),[c,u]=s(`detail-series-popup-${t.id}`,!1),[S,w]=s(`detail-series-title-toggle-${t.id}`,!1),T=m(()=>C((t.links||[]).map(e=>({id:e.id,name:e.name})),t.id||`episode`,e=>i(`seriesEpisodes.episodeLabel`,{episode:e})),[t.id,t.links,i]),D=t.update_status===`1`?i(`seriesEpisodes.completedSeriesTotal`,{total:t.links.length}):i(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:t.links.length}),O=m(()=>t.links[n-1]?.id||t.links[0]?.id||``,[t.links,n]);function k(e){if(typeof window>`u`)return;let{search:t,hash:n}=window.location;window.history.replaceState(window.history.state,``,`${e}${t}${n}`)}let A=h(null),j=f(e=>{let t=A.current?.querySelector(`[data-content-id="${e}"]`);t&&A.current&&A.current.scrollTo({left:t.offsetLeft-10,behavior:`smooth`})},[]);p(()=>{j(O)},[O,j]);let M=f(e=>{if(e!==n){if(!t.links[e-1]){b.error(i(`seriesEpisodes.episodeNotFound`));return}try{r(e);let n=a(t)||t.name||``,i=encodeURIComponent(n);k(`/video/${t.id}/${i}/episode/${e}`)}catch(e){console.error(`切换剧集失败`,e),b.error(i(`seriesEpisodes.episodeSwitchFailed`))}}},[a,t,r,n,i]),N=f(e=>{setTimeout(()=>{j(e)},200)},[j]),[P,F]=g(`70vh`),I=f(()=>{if(typeof window>`u`)return;let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){F(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){F(`70vh`);return}F(`${n}px`)},[]);return p(()=>{if(!c)return;I();let e=()=>{I()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[I,c]),T.length===0?null:y(_,{children:[y(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[y(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>u(!0),children:[v(o,{className:`text-[14px] text-text2 leading-[20px]`,children:D}),v(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),v(`div`,{ref:A,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${S?`h-[76px]`:`h-[60px]`}`,children:T.map((e,t)=>v(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${S?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===O?`!border-theme5 bg-line1`:``}`,onClick:()=>M(t+1),children:v(o,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===O?`font-bold !text-theme5`:``}`,children:S?e.title:e.series_num})},e.id))})]}),v(E,{title:i(`seriesEpisodes.selectorTitle`),variant:`popup`,open:c,updateStatus:t.update_status,summaryText:D,seriesList:(t.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:O,showEpisodeTitle:S,onToggleTitle:e=>{w(e),N(O)},onClose:()=>u(!1),onSelectEpisode:(e,t)=>{u(!1),M(t),j(e)},popupBodyStyle:{height:P}})]})}export{T as SeriesEpisodes};
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{Sheet as t,SheetContent as n,SheetHeader as r,SheetTitle as i}from"../../ui/sheet.mjs";import{Switch as a}from"../../ui/switch.mjs";import{Text as o}from"../../ui/text.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/close.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCallback as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";function x(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.id||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function S(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function C(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function w(e){return e.mode===`detail`?_(E,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):_(T,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle})}function T({open:s,variant:l,title:d,updateStatus:g,summaryText:y,seriesList:S,activeEpisodeId:w,showEpisodeTitle:T=!1,onToggleTitle:E,onClose:D,onSelectEpisode:O,popupBodyStyle:k}){let A=b(`components.common.seriesEpisodes`),j=!!E,M=j&&T,N=m(null),P=m(null),F=p(()=>x(S,`episode`,e=>A(`episodeLabel`,{episode:e})),[S,A]),I=p(()=>{if(F.length===0)return[];let e=[];return F.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[F]),L=p(()=>{if(!w)return 0;let e=F.findIndex(e=>e.id===w);return e<0?0:Math.floor(e/50)},[w,F]),[R,z]=h(L);f(()=>{z(L)},[L]);let B=p(()=>typeof y==`string`&&y.trim()?y:C(F.length,g,A),[F.length,y,A,g]),V=d||A(`selectorTitle`);function H(){let e=N.current;if(e){P.current&&=(window.cancelAnimationFrame(P.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}P.current=window.requestAnimationFrame(()=>{P.current=null;let e=N.current;e&&(e.scrollTop=0)})}}f(()=>{s&&H()},[s,T,R]);function U(e){E&&(E(e),H())}function W(e){O?.(e.id,e.series_num),D()}let G=M?2:5,K=I.length>1?_(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:I.map((e,t)=>{if(e.length===0)return null;let n=t===R,r=t*50+1,i=Math.min((t+1)*50,F.length);return v(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{z(t),H()},children:[r,`-`,i,n&&_(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,q=v(`div`,{className:`pb-[8px] flex justify-between`,children:[_(`span`,{className:`text-[16px] text-text1`,children:B}),j&&v(`div`,{className:`flex items-center gap-[4px]`,children:[_(a,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:T,onCheckedChange:e=>{U(!!e)}}),_(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{U(!T)},children:A(`episodeTitle`)})]})]}),J=_(`div`,{className:`grid w-full gap-2 ${G===2?`grid-cols-2`:`grid-cols-5`}`,children:(I[R]||[]).map((e,t)=>{let n=!!(w&&e.id===w);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{W(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${M?`h-[72px] px-[10px] text-[14px]`:``} ${t%G===0?``:`border-l-0`}`,children:M?_(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})});return l===`sheet`?_(t,{open:s,onOpenChange:e=>!e&&D(),children:v(n,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] max-h-[70vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[_(r,{className:`pt-3 pb-0`,children:_(i,{className:`flex items-center justify-between text-lg text-text1`,children:V})}),v(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[K,q]}),_(`div`,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:J})]})}):_(u,{open:s,onOpenChange:e=>{e||D()},showCloseButton:!1,className:`border-0 bg-transparent p-0`,children:v(e,{className:`w-full flex flex-col bg-bg1 px-[12px] text-text1`,style:{height:`70vh`,...k,maxHeight:`70vh`},children:[v(e,{className:`shrink-0 flex justify-between items-center h-[48px]`,children:[_(o,{className:`text-[16px] font-bold text-text1`,children:V}),_(e,{className:`pl-[12px] h-full flex items-center`,onClick:D,children:_(c,{className:`w-[14px] h-[14px] text-text1 cursor-pointer`})})]}),v(e,{className:`flex-1 h-0 w-full pb-[12px] flex flex-col gap-3`,children:[K,q,_(e,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto`,children:J})]})]})})}function E({information:t,series_num:n,onEpisodeChange:r}){let i=b(`components.common`),[a,c]=s(`detail-series-popup-${t.id}`,!1),[u,x]=s(`detail-series-title-toggle-${t.id}`,!1),[C,w]=h(n);f(()=>{w(n)},[t.id,n]);let E=p(()=>S((t.links||[]).map(e=>({id:e.id,name:e.name})),t.id||`episode`,e=>i(`seriesEpisodes.episodeLabel`,{episode:e})),[t.id,t.links,i]),D=t.update_status===`1`?i(`seriesEpisodes.completedSeriesTotal`,{total:t.links.length}):i(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:t.links.length}),O=p(()=>t.links[C-1]?.id||t.links[0]?.id||``,[t.links,C]),k=m(null),[A,j]=s(`detail-series-scroll-left-${t.id}`,0),[M,N]=s(`detail-series-align-after-switch-${t.id}`,!0),P=m(null),F=m(null),I=m(null),L=m(null),R=d((e,t=`smooth`)=>{let n=k.current?.querySelector(`[data-content-id="${e}"]`);if(n&&k.current){let e=k.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t}),j(r)}},[j]),z=d(()=>{L.current!==null&&(window.clearTimeout(L.current),L.current=null)},[]),B=d(()=>{I.current!==null&&(y.dismiss(I.current),I.current=null),z()},[z]),V=d(()=>{P.current=null,F.current=null,B()},[B]);f(()=>{let e=k.current;if(!e)return;let t=window.requestAnimationFrame(()=>{if(M&&n===C){R(O,`auto`),N(!1);return}e.scrollTo({left:Math.max(0,A),behavior:`auto`})});return()=>{window.cancelAnimationFrame(t)}},[O,C,M,A,R,n,N]),f(()=>{let e=P.current;!e||e!==n||V()},[V,n]),f(()=>()=>{V()},[V]);let H=d((e,a=`inline`)=>{if(e!==C){if(!t.links[e-1]){y.error(i(`seriesEpisodes.episodeNotFound`));return}try{j(k.current?.scrollLeft||0),N(a===`popup`),w(e),B(),I.current=y.loading(i(`seriesEpisodes.episodeSwitching`)),P.current=e,F.current=a,L.current=window.setTimeout(()=>{P.current===e&&(w(n),V(),y.error(i(`seriesEpisodes.episodeSwitchFailed`)))},8e3),r(e)}catch(e){w(n),N(!1),V(),console.error(`切换剧集失败`,e),y.error(i(`seriesEpisodes.episodeSwitchFailed`))}}},[V,B,t.links,r,C,n,N,j,i]),U=d(()=>{j(k.current?.scrollLeft||0)},[j]),W=d(e=>{setTimeout(()=>{R(e)},200)},[R]),[G,K]=h(`70vh`),q=d(()=>{if(typeof window>`u`)return;let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){K(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){K(`70vh`);return}K(`${n}px`)},[]);return f(()=>{if(!a)return;q();let e=()=>{q()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[q,a]),E.length<=1?null:v(g,{children:[v(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[v(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>c(!0),children:[_(o,{className:`text-[14px] text-text2 leading-[20px]`,children:D}),_(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),_(`div`,{ref:k,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${u?`h-[76px]`:`h-[60px]`}`,onScroll:U,children:E.map((e,t)=>_(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${u?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===O?`!border-theme5 bg-line1`:``}`,onClick:()=>H(t+1,`inline`),children:_(o,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===O?`font-bold !text-theme5`:``}`,children:u?e.title:e.series_num})},e.id))})]}),_(T,{title:i(`seriesEpisodes.selectorTitle`),variant:`popup`,open:a,updateStatus:t.update_status,summaryText:D,seriesList:(t.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:O,showEpisodeTitle:u,onToggleTitle:e=>{x(e),W(O)},onClose:()=>c(!1),onSelectEpisode:(e,t)=>{c(!1),H(t,`popup`)},popupBodyStyle:{height:G}})]})}export{w as SeriesEpisodes};
@@ -1,8 +1,8 @@
1
1
 
2
- "use client";import{generateUUID as e,parseResolution as t}from"../../../utils/common.mjs";import{decryptImageUrl as n}from"../../../utils/decrypt-image-client.mjs";import{RETRY_RECOVERED_MIN_PLAY_SECONDS as r,buildVideoPlayerSrc as i,isM3u8VideoUrl as a,resolveVideoPlayerSrc as o}from"./process-m3u8-cache.mjs";import{apiCollectCustom as s}from"../../../utils/api-collect.mjs";import{videoConfig as c}from"./create-video.mjs";import{RETRY_RESUME_END_GAP_SECONDS as l,pauseOtherVideos as u,prepareRetryResumeState as d,registerVideo as ee,shouldTriggerFpsStuckRecovery as te,unregisterVideo as f}from"./playing-videos.mjs";import p from"./style.module.mjs";import{useCallback as m,useEffect as h,useImperativeHandle as ne,useRef as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import y from"next/image";import{useLocale as re}from"next-intl";async function ie(){await import(`xgplayer/dist/index.min.css`)}const ae=[],oe={},b=10*1e3;function x({className:s=``,parentId:x=``,plyerId:S=``,videoUrl:C=``,poster:se=``,resolution:w,hlsList:ce=ae,mergeConfig:T=oe,onProgressUpdate:le,onVideoEnded:ue,onPlay:de,onPause:fe,onEnded:pe,onPlayerReady:me,onControlsVisibilityChange:he,ref:ge}){let _e=re()===`en`?`en`:`zh-cn`,E=g(e()).current,D=g(1),O=g(1),k=g(0),ve=g(0),A=g(null),ye=g(null),j=g(!1),M=g(!1),be=g(1),N=g(null),P=g(null),xe=g(!1),F=g(0),I=g(null),L=g(null),R=g(!1),z=g(null),B=g(null),V=g(null),H=g(!1),Se=g(!1),U=g(!1),W=g(!1),Ce=g(T),G=m(()=>{P.current&&=(window.clearTimeout(P.current),null),N.current&&=(N.current.disconnect(),null)},[]),K=m(()=>{I.current&&=(window.clearTimeout(I.current),null)},[]),q=m(()=>{L.current&&=(window.clearTimeout(L.current),null)},[]),J=m(e=>{let t=R.current||L.current!==null;if(R.current=!1,q(),!(!t||!e))try{e.removeClass?.(`xgplayer-isloading`),e.getPlugin?.(`loading`)?.hide?.()}catch{}},[q]),Y=m(e=>{if(J(e),e)try{e.addClass?.(`xgplayer-is-error`),e.getPlugin?.(`error`)?.show?.()}catch{}},[J]),we=m(e=>{if(e){R.current=!0,q();try{e.removeClass?.(`xgplayer-is-error`),e.addClass?.(`xgplayer-isloading`),e.getPlugin?.(`error`)?.hide?.(),e.getPlugin?.(`loading`)?.show?.()}catch{}L.current=window.setTimeout(()=>{L.current=null,!(H.current||!R.current)&&(K(),z.current=null,F.current=3,Y(A.current||e),console.warn(`~ 播放器加载超过 ${b}ms,已回退失败态,请手动刷新 ~`))},b)}},[q,K,Y]),Te=m(()=>{G(),q(),R.current=!1,f(E),U.current=!1,z.current=null,A.current&&=(A.current.offAll(),A.current.destroy(),null)},[G,q,E]);ne(ge,()=>({enterFullscreen:()=>{A.current.getPlugin(`fullscreen`).handleFullscreen()},isFullscreen:()=>j.current,isPlayerReady:()=>U.current&&!!A.current,getPlayer:()=>A.current}),[]);let X=g(null),Z=g(null),Ee=g(null),Q=g(null),De=g(null),Oe=.3,ke=.7,$=.045,Ae=()=>i(C);function je(e){return Math.min(4e3,500*2**(e-1))+Math.floor(Math.random()*200)}let Me=async(e,s,f)=>{let p=Ae();if(!p)return;let m=o(C),h=a(C)||(ce?.length??0)>0;try{await ie();let[a,o]=await Promise.all([import(`xgplayer`),h?import(`xgplayer-hls`):Promise.resolve(null),(async()=>{try{se=await n(se)}catch{console.warn(`解码post失败`)}})()]);if(e())return;let ne=await m;if(e())return;let g=ne||p,_=ye.current;if(!_||!_.isConnected)for(let t=0;t<10;t+=1){if(e())return;if(await new Promise(e=>{window.setTimeout(()=>e(),16)}),_=ye.current,_&&_.isConnected)break}if(!_||!_.isConnected||e())return;let v=a.default??a,y=a.Events,re=o?o.default??o:null,ae=h&&re?[...c.plugins,re]:c.plugins,oe=h?{preloadTime:15,bufferBehind:5,keepStatusAfterSwitch:!0}:void 0;A.current=new v({...c,lang:_e,el:_,videoFillMode:`contain`,url:g,poster:se,playbackRate:{list:[.75,1,1.25,1.5,1.75,2]},plugins:ae,...oe?{hls:oe}:{},miniprogress:!0,definition:{list:ce?.map(e=>({text:`${e.text}`,url:i(e.url),definition:`${e.definition}`}))},fullscreen:{useScreenOrientation:!0},...T}),A.current.on(y.REPLAY,()=>{Se.current=!1}),A.current.on(y.WAITING,()=>{console.log(`~视频缓冲中,可能出现卡顿~`)}),A.current.on(y.STALLED,()=>{console.log(`~播放停滞,网络连接问题~`)}),A.current.on(y.LOADING,()=>{console.log(`~正在加载数据~`)}),A.current.on(y.LOADED_DATA,()=>{J(A.current)}),A.current.on(y.CANPLAY,()=>{J(A.current)}),A.current.on(y.PLAYING,()=>{J(A.current)});let b=t=>{let n=A.current;if(e()||!n||F.current>=3)return!1;if(I.current)return we(n),!0;let r=d({failureType:t,player:n,renderedMediaTime:0});B.current=r.time,V.current=r.shouldPlay,z.current=null,F.current+=1;let i=F.current,a=je(i);we(n);let o=t===`fps_stuck`?`画面卡顿`:`失败`;return console.warn(`~ 播放${o},${a}ms 后进行第 ${i} 次重试加载 ~`),I.current=window.setTimeout(()=>{I.current=null,!e()&&(Te(),Me(()=>H.current,()=>Pe.current?.(),e=>Fe.current?.(e)))},a),!0};A.current.on(y.FPS_STUCK,e=>{console.log(`~检测到帧率卡顿~`,e),te(e)&&(b(`fps_stuck`)||Y(A.current))}),A.current.on(y.BUFFER_CHANGE,e=>{console.log(`~缓冲区状态变化:~`,e)}),A.current.on(y.ERROR,t=>{let n=String(t&&(t.message||t.msg||t.error?.message)||t||``),r=A.current;if(r){if(h&&/SourceBuffer is full|QuotaExceeded/i.test(n)){if(e()||xe.current)return;xe.current=!0,window.setTimeout(()=>{xe.current=!1},2e3);try{let e=Number(r?.currentTime||0);(r?.getPlugin?.(`hls`)?.core)?._bufferService?.removeBuffer?.(0,Math.max(0,e-5)).catch?.(()=>{});let t=r?.config?.url;if(typeof r?.switchURL==`function`&&typeof t==`string`&&t){we(r),r.switchURL(t,{currentTime:e,seamless:!1}).catch(()=>{b(`error`)||Y(r)});return}}catch{}}b(`error`)||Y(r)}}),A.current.on(y.PLAY,()=>{F.current>0&&(z.current=Number(A.current?.currentTime||0)),K(),J(A.current),window.sensors?.track(`player_start`,{object_id:x||S||``,play_session_id:x||S,start_type:`播放`,start_position:0,duration:A.current.duration,definition:w,playback_rate:A.current.playbackRate}),u(E,A.current),Se.current||=(Ne(),!0),de?.()}),A.current.on(y.FULLSCREEN_CHANGE,e=>{window.sensors?.track(`player_fullscreen_toggle`,{object_id:x||S||``,play_session_id:x||S||``,action:e?`全屏`:`退出全屏`}),j.current=e}),A.current.on(y.SEEKING,()=>{M.current=!0}),A.current.on(y.SEEKED,()=>{M.current=!1}),A.current.on(y.PAUSE,()=>{window.sensors?.track(`player_pause`,{object_id:x||S||``,play_session_id:x||S||``,pause_position:A.current.currentTime,cumulative_time:A.current.duration}),fe?.()}),A.current.on(y.ENDED,()=>{window.sensors?.track(`player_end`,{object_id:x||S||``,play_session_id:x||S||``,end_position:A.current.currentTime,cumulative_time:A.current.duration,end_type:`播放结束`,is_finish:A.current.currentTime===A.current.duration}),pe?.(),ue&&ue()}),A.current.on(y.RATE_CHANGE,()=>{window.sensors?.track(`player_rate_change`,{object_id:x||S||``,play_session_id:x||S||``,old_rate:be.current,new_rate:A.current.playbackRate}),be.current=A.current.playbackRate}),A.current.on(y.DEFINITION_CHANGE,()=>{window.sensors?.track(`player_definition_change`,{object_id:x||S||``,play_session_id:x||S||``,old_def:w,new_def:A.current.definition})}),A.current.on(y.TIME_UPDATE,()=>{if(A.current&&(F.current>0&&z.current!==null&&Number(A.current.currentTime||0)-z.current>=r&&(F.current=0,z.current=null),le)){let e=A.current.currentTime||0,t=A.current.duration||0;e>0&&t>0&&le(e,t)}});let C=()=>{if(!A.current)return;let e=Ce.current||{},t=Number(A.current.duration||0);if(t<=0)return;let n=B.current;if(n!==null&&n>0){let e=Math.max(0,t-l),r=Math.min(e>0?e:t,n);A.current.currentTime=r,B.current=null;return}let r=Number(e.startTimeSeconds||0);if(r>0){let e=Math.min(t,r);A.current.currentTime=e;return}if(e.startPercent!==void 0&&e.startPercent>0){let n=e.startPercent/100*t;A.current.currentTime=Math.min(t,n)}};A.current.once(`loadedmetadata`,()=>{C()}),A.current.once(`ready`,()=>{U.current=!0,A.current&&A.current.duration>0&&C();let n=V.current;V.current=null,n===!0?A.current?.play?.().catch(()=>{}):n===!1&&A.current?.pause?.(),ee(E,A.current),s&&s(),f&&(G(),P.current=window.setTimeout(()=>{if(e())return;let t=A.current?.root;if(!t)return;let n=new MutationObserver(e=>{e.forEach(e=>{e.type===`attributes`&&e.attributeName===`class`&&f(!e.target.classList.contains(`xgplayer-inactive`))})});N.current=n,n.observe(t,{attributes:!0,attributeFilter:[`class`]}),f(!t.classList.contains(`xgplayer-inactive`))},33));let r=A.current.root,i=0,a=A.current.root.querySelector(`.xgmask`),{width:o,height:c}=t(w),l=o<c?document.documentElement.clientWidth:document.documentElement.clientHeight,u=De.current;u&&A.current?.root&&!A.current.root.contains(u)&&A.current.root.appendChild(u),r.addEventListener(`touchstart`,e=>{if(!j.current)return;let t=e.touches[0];i=t.clientX,k.current=t.clientY,W.current=!1,O.current=A.current.volume;let n=window.getComputedStyle(a).backgroundColor;D.current=1-(Number.parseFloat(n.split(`,`)[3])||0)},{passive:!1}),r.addEventListener(`touchmove`,e=>{if(!j.current)return;e.preventDefault();let t=e.touches[0],n=t.clientX-i,r=t.clientY;if(Math.abs(n)>50||M.current){W.current=!0,d();return}if(W.current){d();return}if(Math.abs(r-k.current)>6){let e=Date.now();if(e-ve.current<16)return;ve.current=e;let n=r<k.current;k.current=r;let a=t.clientX,o=i<l*Oe,s=i>l*ke;if(!o&&!s){d();return}let c=a<l*Oe,u=a>l*ke;if(o&&!c){W.current=!0,d();return}if(s&&!u){W.current=!0,d();return}o&&c?te(n):s&&u?p(n):d()}},{passive:!1});function d(){X.current&&(X.current.style.visibility=`hidden`),Z.current&&(Z.current.style.visibility=`hidden`)}function te(e){let t=e?$:-$;D.current=Math.max(0,Math.min(1,D.current+t)),X.current&&(X.current.style.visibility=`visible`),Z.current&&(Z.current.style.visibility=`hidden`),Ee.current&&(Ee.current.style.transform=`scaleY(${D.current})`);let n=1-D.current;a.style.cssText=`
2
+ "use client";import{generateUUID as e,parseResolution as t}from"../../../utils/common.mjs";import{decryptImageUrl as n}from"../../../utils/decrypt-image-client.mjs";import{RETRY_RECOVERED_MIN_PLAY_SECONDS as r,buildVideoPlayerSrc as i,isM3u8VideoUrl as a,resolveVideoPlayerSrc as o}from"./process-m3u8-cache.mjs";import{apiCollectCustom as s}from"../../../utils/api-collect.mjs";import{videoConfig as c}from"./create-video.mjs";import{RETRY_RESUME_END_GAP_SECONDS as l,pauseOtherVideos as u,prepareRetryResumeState as d,registerVideo as ee,shouldTriggerFpsStuckRecovery as te,unregisterVideo as f}from"./playing-videos.mjs";import p from"./style.module.mjs";import{useCallback as m,useEffect as h,useImperativeHandle as ne,useRef as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import y from"next/image";import{useLocale as re}from"next-intl";async function ie(){await import(`xgplayer/dist/index.min.css`)}const ae=[],oe={},b=10*1e3;function x({className:s=``,parentId:x=``,plyerId:S=``,videoUrl:C=``,poster:se=``,resolution:w,hlsList:ce=ae,mergeConfig:T=oe,onProgressUpdate:le,onVideoEnded:ue,onPlay:de,onPause:fe,onEnded:pe,onPlayerReady:E,onControlsVisibilityChange:me,ref:he}){let ge=re()===`en`?`en`:`zh-cn`,D=g(e()).current,O=g(1),k=g(1),A=g(0),_e=g(0),j=g(null),ve=g(null),M=g(!1),ye=g(!1),be=g(1),N=g(null),xe=g(null),Se=g(!1),P=g(0),F=g(null),I=g(null),L=g(!1),R=g(null),z=g(null),B=g(null),V=g(!1),Ce=g(!1),H=g(!1),U=g(!1),we=g(T),W=m(()=>{xe.current&&=(window.clearTimeout(xe.current),null),N.current&&=(N.current.disconnect(),null)},[]),G=m(()=>{F.current&&=(window.clearTimeout(F.current),null)},[]),K=m(()=>{I.current&&=(window.clearTimeout(I.current),null)},[]),q=m(e=>{let t=L.current||I.current!==null;if(L.current=!1,K(),!(!t||!e))try{e.removeClass?.(`xgplayer-isloading`),e.getPlugin?.(`loading`)?.hide?.()}catch{}},[K]),J=m(e=>{if(q(e),e)try{e.addClass?.(`xgplayer-is-error`),e.getPlugin?.(`error`)?.show?.()}catch{}},[q]),Te=m(e=>{if(e){L.current=!0,K();try{e.removeClass?.(`xgplayer-is-error`),e.addClass?.(`xgplayer-isloading`),e.getPlugin?.(`error`)?.hide?.(),e.getPlugin?.(`loading`)?.show?.()}catch{}I.current=window.setTimeout(()=>{I.current=null,!(V.current||!L.current)&&(G(),R.current=null,P.current=3,J(j.current||e),console.warn(`~ 播放器加载超过 ${b}ms,已回退失败态,请手动刷新 ~`))},b)}},[K,G,J]),Ee=m(()=>{W(),K(),L.current=!1,f(D),H.current=!1,R.current=null,j.current&&=(j.current.offAll(),j.current.destroy(),null)},[W,K,D]);ne(he,()=>({enterFullscreen:()=>{j.current.getPlugin(`fullscreen`).handleFullscreen()},isFullscreen:()=>M.current,isPlayerReady:()=>H.current&&!!j.current,getPlayer:()=>j.current}),[]);let Y=g(null),X=g(null),De=g(null),Z=g(null),Oe=g(null),ke=.3,Ae=.7,Q=.045,je=()=>i(C);function Me(e){return Math.min(4e3,500*2**(e-1))+Math.floor(Math.random()*200)}let Ne=async(e,s,f)=>{let p=je();if(!p)return;let m=o(C),h=a(C)||(ce?.length??0)>0;try{await ie();let[a,o]=await Promise.all([import(`xgplayer`),h?import(`xgplayer-hls`):Promise.resolve(null),(async()=>{try{se=await n(se)}catch{console.warn(`解码post失败`)}})()]);if(e())return;let ne=await m;if(e())return;let g=ne||p,_=ve.current;if(!_||!_.isConnected)for(let t=0;t<10;t+=1){if(e())return;if(await new Promise(e=>{window.setTimeout(()=>e(),16)}),_=ve.current,_&&_.isConnected)break}if(!_||!_.isConnected||e())return;let v=a.default??a,y=a.Events,re=o?o.default??o:null,ae=h&&re?[...c.plugins,re]:c.plugins,oe=h?{preloadTime:15,bufferBehind:5,keepStatusAfterSwitch:!0}:void 0;j.current=new v({...c,lang:ge,el:_,videoFillMode:`contain`,url:g,poster:se,playbackRate:{list:[.75,1,1.25,1.5,1.75,2]},plugins:ae,...oe?{hls:oe}:{},miniprogress:!0,definition:{list:ce?.map(e=>({text:`${e.text}`,url:i(e.url),definition:`${e.definition}`}))},fullscreen:{useScreenOrientation:!0},...T}),j.current.on(y.REPLAY,()=>{Ce.current=!1}),j.current.on(y.WAITING,()=>{console.log(`~视频缓冲中,可能出现卡顿~`)}),j.current.on(y.STALLED,()=>{console.log(`~播放停滞,网络连接问题~`)}),j.current.on(y.LOADING,()=>{console.log(`~正在加载数据~`)}),j.current.on(y.LOADED_DATA,()=>{q(j.current)}),j.current.on(y.CANPLAY,()=>{q(j.current)}),j.current.on(y.PLAYING,()=>{q(j.current)});let b=t=>{let n=j.current;if(e()||!n||P.current>=3)return!1;if(F.current)return Te(n),!0;let r=d({failureType:t,player:n,renderedMediaTime:0});z.current=r.time,B.current=r.shouldPlay,R.current=null,P.current+=1;let i=P.current,a=Me(i);Te(n);let o=t===`fps_stuck`?`画面卡顿`:`失败`;return console.warn(`~ 播放${o},${a}ms 后进行第 ${i} 次重试加载 ~`),F.current=window.setTimeout(()=>{F.current=null,!e()&&(Ee(),Ne(()=>V.current,()=>Fe.current?.(),e=>$.current?.(e)))},a),!0};j.current.on(y.FPS_STUCK,e=>{console.log(`~检测到帧率卡顿~`,e),te(e)&&(b(`fps_stuck`)||J(j.current))}),j.current.on(y.BUFFER_CHANGE,e=>{console.log(`~缓冲区状态变化:~`,e)}),j.current.on(y.ERROR,t=>{let n=String(t&&(t.message||t.msg||t.error?.message)||t||``),r=j.current;if(r){if(h&&/SourceBuffer is full|QuotaExceeded/i.test(n)){if(e()||Se.current)return;Se.current=!0,window.setTimeout(()=>{Se.current=!1},2e3);try{let e=Number(r?.currentTime||0);(r?.getPlugin?.(`hls`)?.core)?._bufferService?.removeBuffer?.(0,Math.max(0,e-5)).catch?.(()=>{});let t=r?.config?.url;if(typeof r?.switchURL==`function`&&typeof t==`string`&&t){Te(r),r.switchURL(t,{currentTime:e,seamless:!1}).catch(()=>{b(`error`)||J(r)});return}}catch{}}b(`error`)||J(r)}}),j.current.on(y.PLAY,()=>{P.current>0&&(R.current=Number(j.current?.currentTime||0)),G(),q(j.current),window.sensors?.track(`player_start`,{object_id:x||S||``,play_session_id:x||S,start_type:`播放`,start_position:0,duration:j.current.duration,definition:w,playback_rate:j.current.playbackRate}),u(D,j.current),Ce.current||=(Pe(),!0),de?.()}),j.current.on(y.FULLSCREEN_CHANGE,e=>{window.sensors?.track(`player_fullscreen_toggle`,{object_id:x||S||``,play_session_id:x||S||``,action:e?`全屏`:`退出全屏`}),M.current=e}),j.current.on(y.SEEKING,()=>{ye.current=!0}),j.current.on(y.SEEKED,()=>{ye.current=!1});let C=()=>{if(!le||!j.current)return;let e=Number(j.current.currentTime||0);if(e<=0)return;let t=Number(j.current.duration||0);le(e,t>0?t:0)};j.current.on(y.PAUSE,()=>{window.sensors?.track(`player_pause`,{object_id:x||S||``,play_session_id:x||S||``,pause_position:j.current.currentTime,cumulative_time:j.current.duration}),C(),fe?.()}),j.current.on(y.ENDED,()=>{window.sensors?.track(`player_end`,{object_id:x||S||``,play_session_id:x||S||``,end_position:j.current.currentTime,cumulative_time:j.current.duration,end_type:`播放结束`,is_finish:j.current.currentTime===j.current.duration}),C(),pe?.(),ue&&ue()}),j.current.on(y.RATE_CHANGE,()=>{window.sensors?.track(`player_rate_change`,{object_id:x||S||``,play_session_id:x||S||``,old_rate:be.current,new_rate:j.current.playbackRate}),be.current=j.current.playbackRate}),j.current.on(y.DEFINITION_CHANGE,()=>{window.sensors?.track(`player_definition_change`,{object_id:x||S||``,play_session_id:x||S||``,old_def:w,new_def:j.current.definition})}),j.current.on(y.TIME_UPDATE,()=>{j.current&&(P.current>0&&R.current!==null&&Number(j.current.currentTime||0)-R.current>=r&&(P.current=0,R.current=null),C())});let E=()=>{if(!j.current)return;let e=we.current||{},t=Number(j.current.duration||0);if(t<=0)return;let n=z.current;if(n!==null&&n>0){let e=Math.max(0,t-l),r=Math.min(e>0?e:t,n);j.current.currentTime=r,z.current=null;return}let r=Number(e.startTimeSeconds||0);if(r>0){let e=Math.min(t,r);j.current.currentTime=e;return}if(e.startPercent!==void 0&&e.startPercent>0){let n=e.startPercent/100*t;j.current.currentTime=Math.min(t,n)}};j.current.once(`loadedmetadata`,()=>{E()}),j.current.once(`ready`,()=>{H.current=!0,j.current&&j.current.duration>0&&E();let n=B.current;B.current=null,n===!0?j.current?.play?.().catch(()=>{}):n===!1&&j.current?.pause?.(),ee(D,j.current),s&&s(),f&&(W(),xe.current=window.setTimeout(()=>{if(e())return;let t=j.current?.root;if(!t)return;let n=new MutationObserver(e=>{e.forEach(e=>{e.type===`attributes`&&e.attributeName===`class`&&f(!e.target.classList.contains(`xgplayer-inactive`))})});N.current=n,n.observe(t,{attributes:!0,attributeFilter:[`class`]}),f(!t.classList.contains(`xgplayer-inactive`))},33));let r=j.current.root,i=0,a=j.current.root.querySelector(`.xgmask`),{width:o,height:c}=t(w),l=o<c?document.documentElement.clientWidth:document.documentElement.clientHeight,u=Oe.current;u&&j.current?.root&&!j.current.root.contains(u)&&j.current.root.appendChild(u),r.addEventListener(`touchstart`,e=>{if(!M.current)return;let t=e.touches[0];i=t.clientX,A.current=t.clientY,U.current=!1,k.current=j.current.volume;let n=window.getComputedStyle(a).backgroundColor;O.current=1-(Number.parseFloat(n.split(`,`)[3])||0)},{passive:!1}),r.addEventListener(`touchmove`,e=>{if(!M.current)return;e.preventDefault();let t=e.touches[0],n=t.clientX-i,r=t.clientY;if(Math.abs(n)>50||ye.current){U.current=!0,d();return}if(U.current){d();return}if(Math.abs(r-A.current)>6){let e=Date.now();if(e-_e.current<16)return;_e.current=e;let n=r<A.current;A.current=r;let a=t.clientX,o=i<l*ke,s=i>l*Ae;if(!o&&!s){d();return}let c=a<l*ke,u=a>l*Ae;if(o&&!c){U.current=!0,d();return}if(s&&!u){U.current=!0,d();return}o&&c?te(n):s&&u?p(n):d()}},{passive:!1});function d(){Y.current&&(Y.current.style.visibility=`hidden`),X.current&&(X.current.style.visibility=`hidden`)}function te(e){let t=e?Q:-Q;O.current=Math.max(0,Math.min(1,O.current+t)),Y.current&&(Y.current.style.visibility=`visible`),X.current&&(X.current.style.visibility=`hidden`),De.current&&(De.current.style.transform=`scaleY(${O.current})`);let n=1-O.current;a.style.cssText=`
3
3
  background-color: rgba(0,0,0,${n.toFixed(3)});
4
4
  will-change: background-color;
5
5
  transform: translateZ(0);
6
- `}function p(e){let t=e?$:-$;O.current=Math.max(0,Math.min(1,O.current+t)),A.current.volume=O.current,Z.current&&(Z.current.style.visibility=`visible`),X.current&&(X.current.style.visibility=`hidden`),Q.current&&(Q.current.style.transform=`scaleY(${O.current})`)}r.addEventListener(`touchend`,()=>{j.current&&setTimeout(()=>{d()},800)})})}catch(t){e()||console.error(`初始化播放器失败`,t)}},Ne=m(()=>{},[x,S]),Pe=g(me),Fe=g(he);return Pe.current=me,Fe.current=he,Ce.current=T,h(()=>(H.current=!1,F.current=0,z.current=null,B.current=null,V.current=null,R.current=!1,K(),q(),Me(()=>H.current,()=>Pe.current?.(),e=>Fe.current?.(e)),window.webViewVideoData={resolution:w},()=>{H.current=!0,B.current=null,V.current=null,K(),q(),G(),Te()}),[_e,S,E,C]),h(()=>{let e=Number(T?.startTimeSeconds||0),t=T?.startPercent;if(!U.current||!A.current)return;let n=Number(A.current.duration||0);if(n<=0)return;let r=0;if(e>0)r=Math.min(n,e);else if(t!==void 0&&t>0)r=Math.min(n,t/100*n);else return;let i=A.current.currentTime;Math.abs(i-r)>1&&(A.current.currentTime=r)},[T?.startPercent,T?.startTimeSeconds]),Ae()?v(`div`,{className:`w-full h-full relative ${p.videoBox} ${s}`,children:[_(`div`,{ref:ye,className:`w-full h-full`}),v(`div`,{ref:De,children:[v(`div`,{ref:X,className:`w-[36px] h-[148px] bg-[rgba(51,51,51,0.5)] rounded-[50px] border border-[rgba(0,0,0,0.05)]
7
- absolute left-[18px] top-[50%] translate-y-[-50%] flex flex-col items-center justify-center gap-[12px] z-50`,style:{visibility:`hidden`},children:[_(y,{src:`/svg/icon_jiazai_zhong.svg`,alt:`Icon`,width:20,height:20}),v(`div`,{className:`relative`,children:[_(`div`,{className:`h-[92px] w-[4px] bg-[#000000] rounded-[8px]`}),_(`div`,{ref:Ee,className:`h-[92px] w-[4px] bg-[#fff] rounded-[8px] absolute bottom-0`,style:{transformOrigin:`bottom`,transform:`scaleY(1)`,willChange:`transform`,backfaceVisibility:`hidden`,transition:`none`}})]})]}),v(`div`,{ref:Z,className:`w-[36px] h-[148px] bg-[rgba(51,51,51,0.5)] rounded-[50px] border border-[rgba(0,0,0,0.05)]
8
- absolute right-[18px] top-[50%] translate-y-[-50%] flex flex-col items-center justify-center gap-[12px] z-50`,style:{visibility:`hidden`},children:[_(y,{src:`/svg/icon_shengyin_di.svg`,alt:`Icon`,width:20,height:20}),v(`div`,{className:`relative`,children:[_(`div`,{className:`h-[92px] w-[4px] bg-[#000000] rounded-[8px]`}),_(`div`,{ref:Q,className:`h-[92px] w-[4px] bg-[#fff] rounded-[8px] absolute bottom-0`,style:{transformOrigin:`bottom`,transform:`scaleY(1)`,willChange:`transform`,backfaceVisibility:`hidden`,transition:`none`}})]})]})]})]}):null}export{x as default};
6
+ `}function p(e){let t=e?Q:-Q;k.current=Math.max(0,Math.min(1,k.current+t)),j.current.volume=k.current,X.current&&(X.current.style.visibility=`visible`),Y.current&&(Y.current.style.visibility=`hidden`),Z.current&&(Z.current.style.transform=`scaleY(${k.current})`)}r.addEventListener(`touchend`,()=>{M.current&&setTimeout(()=>{d()},800)})})}catch(t){e()||console.error(`初始化播放器失败`,t)}},Pe=m(()=>{},[x,S]),Fe=g(E),$=g(me);return Fe.current=E,$.current=me,we.current=T,h(()=>(V.current=!1,P.current=0,R.current=null,z.current=null,B.current=null,L.current=!1,G(),K(),Ne(()=>V.current,()=>Fe.current?.(),e=>$.current?.(e)),window.webViewVideoData={resolution:w},()=>{V.current=!0,z.current=null,B.current=null,G(),K(),W(),Ee()}),[ge,S,D,C]),h(()=>{let e=Number(T?.startTimeSeconds||0),t=T?.startPercent;if(!H.current||!j.current)return;let n=Number(j.current.duration||0);if(n<=0)return;let r=0;if(e>0)r=Math.min(n,e);else if(t!==void 0&&t>0)r=Math.min(n,t/100*n);else return;let i=j.current.currentTime;Math.abs(i-r)>1&&(j.current.currentTime=r)},[T?.startPercent,T?.startTimeSeconds]),je()?v(`div`,{className:`w-full h-full relative ${p.videoBox} ${s}`,children:[_(`div`,{ref:ve,className:`w-full h-full`}),v(`div`,{ref:Oe,children:[v(`div`,{ref:Y,className:`w-[36px] h-[148px] bg-[rgba(51,51,51,0.5)] rounded-[50px] border border-[rgba(0,0,0,0.05)]
7
+ absolute left-[18px] top-[50%] translate-y-[-50%] flex flex-col items-center justify-center gap-[12px] z-50`,style:{visibility:`hidden`},children:[_(y,{src:`/svg/icon_jiazai_zhong.svg`,alt:`Icon`,width:20,height:20}),v(`div`,{className:`relative`,children:[_(`div`,{className:`h-[92px] w-[4px] bg-[#000000] rounded-[8px]`}),_(`div`,{ref:De,className:`h-[92px] w-[4px] bg-[#fff] rounded-[8px] absolute bottom-0`,style:{transformOrigin:`bottom`,transform:`scaleY(1)`,willChange:`transform`,backfaceVisibility:`hidden`,transition:`none`}})]})]}),v(`div`,{ref:X,className:`w-[36px] h-[148px] bg-[rgba(51,51,51,0.5)] rounded-[50px] border border-[rgba(0,0,0,0.05)]
8
+ absolute right-[18px] top-[50%] translate-y-[-50%] flex flex-col items-center justify-center gap-[12px] z-50`,style:{visibility:`hidden`},children:[_(y,{src:`/svg/icon_shengyin_di.svg`,alt:`Icon`,width:20,height:20}),v(`div`,{className:`relative`,children:[_(`div`,{className:`h-[92px] w-[4px] bg-[#000000] rounded-[8px]`}),_(`div`,{ref:Z,className:`h-[92px] w-[4px] bg-[#fff] rounded-[8px] absolute bottom-0`,style:{transformOrigin:`bottom`,transform:`scaleY(1)`,willChange:`transform`,backfaceVisibility:`hidden`,transition:`none`}})]})]})]})]}):null}export{x as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{Item as a}from"../../ui/item.mjs";import{List as o}from"../../ui/list.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import{eventKey as l}from"../../../constants/event-key.mjs";import{getPostDetailPagePath as u}from"../../../utils/tools.mjs";import{apiCollectCustom as d}from"../../../utils/api-collect.mjs";import{VideoListItemSkeleton as f}from"../../common/skeleton/video-list-item-skeleton.mjs";import{useCardDecoration as p}from"../../../hooks/use-card-decoration.mjs";import m from"../../../assets/icons/right_arrow.mjs";import h from"../../ui/rate.mjs";import{memo as g,useCallback as _,useMemo as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";import S from"next/link";const C=g(()=>y(i,{className:`w-full px-[12px] pt-[12px]`,children:Array.from({length:3}).map((e,t)=>y(f,{},`search-video-skeleton-${t}`))}));C.displayName=`SearchVideoListSkeleton`;const w=g(({item:e})=>{let{getCalculationScore:t}=p();return b(S,{className:`w-full flex items-center justify-between mb-[12px] pb-[12px] border-b border-line1 cursor-pointer px-[12px]`,href:u({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[y(i,{className:`w-[76px] h-[102px] shrink-0 rounded-[8px] overflow-hidden relative bg-bg2`,children:y(r,{src:e.img_y||e.img_x||``,fill:!0,objectFit:`cover`,alt:e.name||``})}),b(i,{className:`flex-1 min-w-0 flex flex-col ml-[12px]`,children:[y(s,{as:`span`,className:`leading-[26px] text-text1 text-[18px] font-bold max-w-[200px] line-clamp-1 mb-[4px]`,children:e.name||``}),b(i,{className:`flex items-center`,style:{transform:`scale(0.6)`,transformOrigin:`left center`},children:[y(h,{allowHalf:!0,value:t({score:String(e.score??0)})}),y(s,{as:`span`,className:`ml-[8px] text-[24px] text-[#F59E0B] font-bold leading-[24px]`,children:e.score?(Number(e.score)/10).toFixed(1):0})]}),b(i,{className:`w-full mt-[4px] flex items-center shrink-0 pr-[12px]`,children:[y(i,{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}),y(s,{as:`span`,className:`text-text2 text-[14px] leading-[22px] flex-1 min-w-0 line-clamp-1`,children:e.description})]})]})]})});w.displayName=`VideoItem`;const T=g(({list:e})=>y(i,{className:`w-full px-[12px] pt-[12px]`,children:e.map((e,t)=>y(w,{item:e},String(e.video_id??t)))}));T.displayName=`VideoListContent`;const E=g(({list:n,hasMore:r})=>{let a=_(()=>{t.emit(l.EXCHANGE_SEARCH_TYPE,`video`)},[]);return b(i,{className:`w-full`,children:[y(T,{list:n}),r&&y(i,{className:`w-full flex items-center justify-center`,children:b(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:a,children:[y(s,{as:`span`,children:`查看更多`}),y(m,{className:`w-[12px] h-[12px]`})]})})]})});E.displayName=`SearchVideoWithAll`;const D=g(({inputVal:e,sort:t,refreshVersion:r})=>{let s=x(`components.pages.search.searchResult`),l=_(async r=>await n({data_type:2,extra_params:JSON.stringify({type:3,keywords:e,sort:t}),page:r||1,page_size:20}),[e,t]),u=c({key:v(()=>[`searchByKeyForVideoInfo`,e,3,t,r],[e,t,r]),initialPageParam:1,async queryFn(e){return(await l(e))?.data?.videos??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),d=v(()=>{let e=u.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[u.data?.pages]),f=u.isPending||u.isFetching;return f&&d.length===0?y(C,{}):y(i,{className:`w-full`,children:y(o,{loading:f,hasMore:u.hasNextPage??!1,loadMore:async e=>{try{await u.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},empty:`nodata`,emptyText:s(`searchVideoInfo.noRelevantContent`),children:d.map((e,t)=>y(a,{className:`p-0`,children:y(w,{item:e})},String(e.video_id??t)))})})});D.displayName=`SearchVideoWithPagination`;const O=g(e=>e.mode===`all`?y(E,{list:e.list,hasMore:e.hasMore}):y(D,{inputVal:e.inputVal,sort:e.sort,refreshVersion:e.refreshVersion}));O.displayName=`SearchVideo`;export{O as default};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import t from"../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{Box as i}from"../../ui/box.mjs";import{Item as a}from"../../ui/item.mjs";import{List as o}from"../../ui/list.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import{eventKey as l}from"../../../constants/event-key.mjs";import{getPostDetailPagePath as u}from"../../../utils/tools.mjs";import{apiCollectCustom as d}from"../../../utils/api-collect.mjs";import{VideoListItemSkeleton as f}from"../../common/skeleton/video-list-item-skeleton.mjs";import p from"../../../assets/icons/right_arrow.mjs";import{useCardDecoration as m}from"../../../hooks/use-card-decoration.mjs";import h from"../../ui/rate.mjs";import{memo as g,useCallback as _,useMemo as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";import S from"next/link";const C=g(()=>y(i,{className:`w-full px-[12px] pt-[12px]`,children:Array.from({length:3}).map((e,t)=>y(f,{},`search-video-skeleton-${t}`))}));C.displayName=`SearchVideoListSkeleton`;const w=g(({item:e})=>{let{getCalculationScore:t}=m();return b(S,{className:`w-full flex items-center justify-between mb-[12px] pb-[12px] border-b border-line1 cursor-pointer px-[12px]`,href:u({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[y(i,{className:`w-[76px] h-[102px] shrink-0 rounded-[8px] overflow-hidden relative bg-bg2`,children:y(r,{src:e.img_y||e.img_x||``,fill:!0,objectFit:`cover`,alt:e.name||``})}),b(i,{className:`flex-1 min-w-0 flex flex-col ml-[12px]`,children:[y(s,{as:`span`,className:`leading-[26px] text-text1 text-[18px] font-bold max-w-[200px] line-clamp-1 mb-[4px]`,children:e.name||``}),b(i,{className:`flex items-center`,style:{transform:`scale(0.6)`,transformOrigin:`left center`},children:[y(h,{allowHalf:!0,value:t({score:String(e.score??0)})}),y(s,{as:`span`,className:`ml-[8px] text-[24px] text-[#F59E0B] font-bold leading-[24px]`,children:e.score?(Number(e.score)/10).toFixed(1):0})]}),b(i,{className:`w-full mt-[4px] flex items-center shrink-0 pr-[12px]`,children:[y(i,{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}),y(s,{as:`span`,className:`text-text2 text-[14px] leading-[22px] flex-1 min-w-0 line-clamp-1`,children:e.description})]})]})]})});w.displayName=`VideoItem`;const T=g(({list:e})=>y(i,{className:`w-full px-[12px] pt-[12px]`,children:e.map((e,t)=>y(w,{item:e},String(e.video_id??t)))}));T.displayName=`VideoListContent`;const E=g(({list:n,hasMore:r})=>{let a=_(()=>{t.emit(l.EXCHANGE_SEARCH_TYPE,`video`)},[]);return b(i,{className:`w-full`,children:[y(T,{list:n}),r&&y(i,{className:`w-full flex items-center justify-center`,children:b(e,{variant:`ghost`,className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:a,children:[y(s,{as:`span`,children:`查看更多`}),y(p,{className:`w-[12px] h-[12px]`})]})})]})});E.displayName=`SearchVideoWithAll`;const D=g(({inputVal:e,sort:t,refreshVersion:r})=>{let s=x(`components.pages.search.searchResult`),l=_(async r=>await n({data_type:2,extra_params:JSON.stringify({type:3,keywords:e,sort:t}),page:r||1,page_size:20}),[e,t]),u=c({key:v(()=>[`searchByKeyForVideoInfo`,e,3,t,r],[e,t,r]),initialPageParam:1,async queryFn(e){return(await l(e))?.data?.videos??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),d=v(()=>{let e=u.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[u.data?.pages]),f=u.isPending||u.isFetching;return f&&d.length===0?y(C,{}):y(i,{className:`w-full`,children:y(o,{loading:f,hasMore:u.hasNextPage??!1,loadMore:async e=>{try{await u.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},empty:`nodata`,emptyText:s(`searchVideoInfo.noRelevantContent`),children:d.map((e,t)=>y(a,{className:`p-0`,children:y(w,{item:e})},String(e.video_id??t)))})})});D.displayName=`SearchVideoWithPagination`;const O=g(e=>e.mode===`all`?y(E,{list:e.list,hasMore:e.hasMore}):y(D,{inputVal:e.inputVal,sort:e.sort,refreshVersion:e.refreshVersion}));O.displayName=`SearchVideo`;export{O 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{queryKey as u}from"../../../constants/query-key.mjs";import{useKeepAliveEffect as d,useKeepAliveState as f}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as p}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as m}from"../../../hooks/use-content-operate.mjs";import ee from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{VideoDetailMaterialRuntimeProvider as te}from"../../biz/business/detail/shared/runtime-context-provider.mjs";import{resolveMaterialProps as ne,videoDetailMaterials as re}from"../../biz/business/detail/shared/registry.mjs";import{DetailHero as ie}from"../../biz/business/detail/shared/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 ae}from"next-intl";import{useParams as oe,useSearchParams as se}from"next/navigation";const S=[{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 C({detailId:p,initialInformation:C,isWebView:w=!1,materialConfig:T}){let E=ae(`components.pages.videoDetail`),D=oe(),O=se(),k=D.level,A=Array.isArray(k)?k:typeof k==`string`?[k]:[],j=A.findIndex(e=>e===`episode`),ce=j>=0?A[j+1]:A[2],M=Math.max(1,Number(ce)||1),[N,P]=f(`detail-current-series-num-${p}`,M);_(()=>{P(M)},[p,M,P]);let F=Math.max(0,N-1),{data:I}=l(v(()=>[`video-detail`,p],[p]),async()=>p?await a({id:p}):null,{enabled:!!p}),L=v(()=>{let e=I?.data?.video;return!e||typeof e!=`object`?null:{...e,content_type:1,episode_cnt:e.links?.length||0}},[I?.data?.video]),le=C??L??null,[R,z]=f(`detail-information-${p}`,le),B=R?.links?.[F]?.id||``,{data:V,isFetching:H,isFetchedAfterMount:U,isSuccess:W}=l(v(()=>[`detail-interaction`,R?.id,R?.content_type,B,N],[B,N,R?.content_type,R?.id]),async()=>!R?.id||typeof R.content_type!=`number`?null:await m([R.id],1),{enabled:w?!1:!!R?.id,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),G=v(()=>{if(!U||H||!W)return 0;let e=V?.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===N?t:0},[N,V,U,H,W]),[ue,de]=f(`info-detail-active-tab-${p}`,`video`),[K,q]=f(`info-detail-comment-add-count-${p}`,0),[J,fe]=f(`info-detail-comment-total-${p}`,void 0),Y=g(async e=>{let t=String(p||``).trim();if(!t)return;let n=e.browse_episode||N,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)}},[N,p]);_(()=>{!R&&L&&z(L),window.video={[p]:R},window.getVideoInfoAsync=async()=>{let e=R?.links?.[F]?.m3u8_url||``,t=e?`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${n()}/m3f/${e}`)}`:``,i=R?.img_y||R?.img_x||R?.preview_images?.[0]||``,a=``,o=await r(i);return o&&(a=s(o.bytes)),{poster:a,src:t,title:R?.name||``}},window.getVideoBrowseRecordAsync=async()=>{let e=await m([p],1);return e?.interaction_list?.[0]?e.interaction_list[0].browse_record:null},window.reportVideoBrowse=Y},[p,F,R,L,z,Y]),_(()=>{if(!V?.interaction_list?.[0])return;let e=V.interaction_list[0];z(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}})},[V,z]);let X=g(e=>{z(t=>t&&{...t,...e})},[z]);d(()=>{R?.id&&R.id},[R?.id],`detail-page-report-${p}`),_(()=>{!R||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:R.id||p,author_id:R.up_user,object_type:R.content_type,object_category:R.content_type,object_tags:R.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[p,R]),_(()=>{q(0)},[B,q]),v(()=>(typeof J==`number`?J:0)+K,[K,J]);let pe=g(()=>{},[!1,de]);g(()=>{q(e=>e+1)},[q]),_(()=>{},[!1,pe,R?.id,O]);let Z=g(e=>{if(w){let t=encodeURIComponent(R?.name||``),n=`/webview/${R?.id}/${t}/episode/${e}`;window.location.href=n}else P(e)},[R?.id,R?.name,w,P]),Q=R?.status===`1`,{data:me}=l([u.CHANNEL],()=>i()),he=e(me?.data),ge=v(()=>{if(T!==void 0){let e=new Map(S.map(e=>[e.componentName,e]));return T.map(t=>{let n=e.get(t.componentName);return{...n,...t,props:{...n?.props??{},...t.props??{}}}})}return S},[T]),$=v(()=>({information:R??void 0,currentSeriesNum:N,onEpisodeChange:Z,onUpdateInformation:X,detailId:p,episodeIndex:F,resumeProgressSeconds:G,isShow:!0,isWebView:w}),[N,p,F,Z,X,R,w,G,!0]),_e=g(e=>{if(!R)return null;let t=re[e.componentName];if(!t)return null;let n=t.clientComponent,r=ne(t,e.props);return r.isValid?b(n,{...r.props}):b(`div`,{children:`组件配置错误`})},[R]);return x(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 ${w?``:`pt-11`}`,children:[!w&&b(`div`,{className:`fixed bg-black top-0 left-0 right-0 z-[1000]`,children:b(ee,{data:{list:he}})}),b(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:x(y,{children:[R&&!Q&&b(c,{type:`no-content`,text:E(`videoDetailClient.videoUnavailable`)}),R&&Q&&x(y,{children:[!w&&b(ie,{isVideo:!0,information:R,episodeIndex:F,resumeProgressSeconds:G}),b(`div`,{id:`selectPopupPosition`,className:`w-full`}),!1,x(`div`,{className:t(`w-full`,!1),children:[b(te,{value:$,children:ge.map(e=>b(h,{children:_e(e)},e.id))}),!1]}),!1]}),!R&&b(c,{type:`no-content`,text:E(`videoDetailClient.videoDeleted`)})]})})]})}export{C 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{queryKey as u}from"../../../constants/query-key.mjs";import{useKeepAliveEffect as d,useKeepAliveState as f}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as p}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as m}from"../../../hooks/use-content-operate.mjs";import ee from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{VideoDetailMaterialRuntimeProvider as te}from"../../biz/business/detail/shared/runtime-context-provider.mjs";import{resolveMaterialProps as ne,videoDetailMaterials as re}from"../../biz/business/detail/shared/registry.mjs";import{DetailHero as h}from"../../biz/business/detail/shared/video-hero.mjs";import{Fragment as g,useCallback as _,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 ie}from"next-intl";import{useParams as C,useRouter as w,useSearchParams as ae}from"next/navigation";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:p,initialInformation:E,isWebView:D=!1,materialConfig:O}){let k=ie(`components.pages.videoDetail`),A=w(),oe=C(),se=ae(),j=oe.level,M=Array.isArray(j)?j:typeof j==`string`?[j]:[],N=M.findIndex(e=>e===`episode`),ce=N>=0?M[N+1]:M[2],P=Math.max(1,Number(ce)||1),F=Math.max(0,P-1),{data:I,isPending:L,isFetching:R,isError:z,isSuccess:B}=l(y(()=>[`video-detail`,p],[p]),async()=>p?await a({id:p}):null,{enabled:!!p}),V=y(()=>{let e=I?.data?.video;return!e||typeof e!=`object`?null:{...e,content_type:1,episode_cnt:e.links?.length||0}},[I?.data?.video]),H=E??V??null,[U,W]=f(`detail-information-${p}`,H),le=U?.links?.[F]?.id||``,G=!!p&&!U&&(L||R),K=!p||!!U||z||B,[ue,de]=f(`info-detail-active-tab-${p}`,`video`),[q,J]=f(`info-detail-comment-add-count-${p}`,0),[Y,fe]=f(`info-detail-comment-total-${p}`,void 0),X=_(async e=>{let t=String(p||``).trim();if(!t)return;let n=e.browse_episode||P,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)}},[P,p]);v(()=>{!U&&V&&W(V),window.video={[p]:U},window.getVideoInfoAsync=async()=>{let e=U?.links?.[F]?.m3u8_url||``,t=e?`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${n()}/m3f/${e}`)}`:``,i=U?.img_y||U?.img_x||U?.preview_images?.[0]||``,a=``,o=await r(i);return o&&(a=s(o.bytes)),{poster:a,src:t,title:U?.name||``}},window.getVideoBrowseRecordAsync=async()=>{let e=await m([p],1);return e?.interaction_list?.[0]?e.interaction_list[0].browse_record:null},window.reportVideoBrowse=X},[p,F,U,V,W,X]);let Z=_(e=>{W(t=>t&&{...t,...e})},[W]);d(()=>{U?.id&&U.id},[U?.id],`detail-page-report-${p}`),v(()=>{!U||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:U.id||p,author_id:U.up_user,object_type:U.content_type,object_category:U.content_type,object_tags:U.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[p,U]),v(()=>{J(0)},[le,J]),y(()=>(typeof Y==`number`?Y:0)+q,[q,Y]);let pe=_(()=>{},[!1,de]);_(()=>{J(e=>e+1)},[J]),v(()=>{},[!1,pe,U?.id,se]);let Q=_(e=>{let t=Math.max(1,Math.floor(Number(e)||1));if(typeof window>`u`)return;let n=String(U?.id||p||``).trim();if(!n)return;let r=encodeURIComponent(U?.name||``),i=`${D?`/webview`:`/video`}/${n}/${r}/episode/${t}`,{search:a,hash:o,pathname:s}=window.location,c=`${i}${a}${o}`;`${s}${a}${o}`!==c&&A.replace(c,{scroll:!1})},[p,U?.id,U?.name,D,A]),$=U?.status===`1`,{data:me}=l([u.CHANNEL],()=>i()),he=e(me?.data),ge=y(()=>{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]),_e=y(()=>({information:U??void 0,currentSeriesNum:P,onEpisodeChange:Q,onUpdateInformation:Z,detailId:p,episodeIndex:F,isShow:!0,isWebView:D,isInformationLoading:G,isInformationResolved:K}),[P,p,F,Q,Z,U,G,K,D,!0]),ve=_(e=>{if(!U)return null;let t=re[e.componentName];if(!t)return null;let n=t.clientComponent,r=ne(t,e.props);return r.isValid?x(n,{...r.props}):x(`div`,{children:`组件配置错误`})},[U]);return S(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 ${D?``:`pt-11`}`,children:[!D&&x(`div`,{className:`fixed bg-black top-0 left-0 right-0 z-[1000]`,children:x(ee,{data:{list:he}})}),x(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:S(b,{children:[U&&!$&&x(c,{type:`no-content`,text:k(`videoDetailClient.videoUnavailable`)}),U&&$&&S(b,{children:[!D&&x(h,{isVideo:!0,information:U,episodeIndex:F}),x(`div`,{id:`selectPopupPosition`,className:`w-full`}),!1,S(`div`,{className:t(`w-full`,!1),children:[x(te,{value:_e,children:ge.map(e=>x(g,{children:ve(e)},e.id))}),!1]}),!1]}),!U&&x(c,{type:`no-content`,text:k(`videoDetailClient.videoDeleted`)})]})})]})}export{E as default};
@@ -8,7 +8,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
8
8
  /** buttonVariants 工具定义。 */
9
9
  declare const buttonVariants: (props?: ({
10
10
  variant?: "default" | "link" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
11
- size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | 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> & {
@@ -1,4 +1,4 @@
1
1
 
2
2
  var e={components:{biz:{basics:{fullscreenFeed:{runtime:{bottomInfo:{collapse:`Collapse`,expand:`Expand`,nextItem:`Next`,seriesAction:`Episodes · {title}`,seriesActionWithEpisode:`Episodes · {title} {episodeName}`},commentModal:{comment:`Comments`},userAction:{collectAction:`Collect`,commentAction:`Comment`,followFailed:`Follow failed`,like:`Like`,likeAction:`Like`,loginRequired:`Please log in first`,shareAction:`Share`},videoSlide:{watchFullscreen:`Watch full screen`}}}},business:{comment:{commentInput:{cannotSelectVideoWhenImageSelected:`Cannot select a video after choosing images`,dragFileNotSupported:`Drag-and-drop images/files is not supported. Please use the upload button below`,image:`Pictures`,imageUploadFailed:`Image upload failed`,partialImageUploadFailed:`Some images failed to upload`,pasteFileNotSupported:`Pasting images/files is not supported. Please use the upload button below`,placeholder:`Say something...`,publishCommentFailed:`Failed to publish comment`,publishDefault:`Publish`,publishSuccess:`Published successfully`,publishing:`Publishing...`,video:`Video`,videoUploadFailed:`Video upload failed`},commentItem:{contentInReview:`Content in review`,dislike:`Dislike`,like:`Like`,reply:`Reply`,replyCount:`{count} replies`},commentList:{dislikeHint:`Already disliked`,emptyPrompt:`No comments yet. Be the first one!`,fetchCommentsFailed:`Failed to fetch comments`,invalidReplyTarget:`Invalid reply target`,loading:`Loading...`,loginRequired:`Please log in first`,noMore:`No more`,publishCommentFailed:`Failed to publish comment`,publishReplyFailed:`Failed to publish reply`,viewMore:`View more`},replyDetail:{commentDetail:`Comment details`,dislike:`Dislike`,dislikeHint:`Already disliked`,fetchRepliesFailed:`Failed to fetch replies`,follow:`Follow`,followFailed:`Failed to follow`,followed:`Following`,invalidReplyTarget:`Invalid reply target`,like:`Like`,loginRequired:`Please log in first`,publishReplyFailed:`Failed to publish reply`,reply:`Reply`,underReview:`Content in review`,unfollowFailed:`Failed to unfollow`}},contact:{contactList:{myFollowing:`Following`,noFollowingUsers:`You are not following any users yet`,noMore:`No more`,noSearchResult:`No results found`},contactSearch:{cancel:`Cancel`,close:`Close`,placeholder:`Search users you want to @`}},detail:{detailFollowAction:{follow:`Follow`,following:`Following`},detailGuessLike:{title:`Guess you like it`},detailIntroduction:{collapse:`Collapse`,expand:`Expand`,score:`Score`},detailOperate:{collectAdded:`Added`,collectFailed:`Failed to collect`,collection:`Collection`,defaultCollection:`Default Collection`,like:`Like`,modifyCollection:`Change`,modifyCollectionSuccess:`Collection updated`,operateFailed:`Operation failed, please try again`,share:`Bagikan`,uncollectSuccess:`Removed from collection`},detailPopularComments:{emptyPrompt:`Looking forward to your first comment`,like:`Like`,mediaPlaceholder:`[Image/Video]`,popularComments:`Pop comments`},detailTabs:{discussion:`DISCUSSION`,video:`Video`},postRecommendList:{title:`Related Posts`},videoHero:{coverAlt:`Video player cover`,noVideos:`No videos available`}},fullscreenFeed:{variants:{fullscreenVideoFeed:{runtime:{client:{contentLoading:`Loading content...`}}}}},imageTextRecommend:{allEpisodes:`All {count} episodes`,defaultTitle:`Recommended Videos`,noCover:`No cover`,updatedTo:`Updated to {count} episodes`},marquee:{noticeAlt:`Notice`},navBar:{variants:{basicNavBar:{runtime:{channelFilterDialog:{add:`Add`,allAddedTo:`All have been added to`,allChannels:`All channels`,delete:`Delete`,moreChannels:`More channels`,myChannels:`My channels`,resetDefault:`Reset to default`}}}}},searchHistory:{clear:`Clear`,clearAllHistory:`Delete all history`,confirmClearDescription:`Are you sure you want to delete all search history?`,defaultTitle:`Search History`,mockHistory1:`Sample history 1`,mockHistory2:`Sample history 2`,mockHistory3:`Sample history 3`},textRecommend:{defaultTitle:`Recommended search`,refreshBatch:`Refresh`}}},common:{blockedDialog:{contactSupport:`Contact Support`,description:`Due to: {remark}, your account has been restricted from logging in.
3
3
  Unblock time: {unblockTime}
4
- If this was not you, please contact support or file an appeal.`,gotIt:`Got it`,remarkDefault:`Abnormal behavior detected`,title:`Account Restricted`,unblockTimePermanent:`Permanent`},collectionPopup:{collectSuccess:`Added to collection`,coverAlt:`Cover image`,createCollection:`Create Collection`,createCollectionHint:`to create your collection.`,createModalAction:`Done`,createModalTitle:`New Collection`,favoriteToCollectionTitle:`Favorite to Collection`,newCollection:`New`,noCollections:`No collections yet`,postsCountSuffix:`Posts`,selectTitle:`Select Collection`,updateSuccess:`Collection updated`},debugLocaleSwitcher:{current:`Current`,languageDebugging:`Language Debugging`},deleteConfirmDialog:{cancel:`Cancel`,confirm:`Delete`,description:`This action cannot be undone.`},followButton:{follow:`Follow`,followFailed:`Failed to follow`,following:`Following`,loginFailed:`Login failed`,loginRequired:`Please log in first`,unfollowConfirmDialog:{cancel:`cancel`,confirm:`OK`,confirmUnfollow:`Are you sure you want to unfollow`},unfollowFailed:`Failed to unfollow`},imageCropModal:{cancel:`Cancel`,confirm:`Confirm`,processing:`Processing...`},infoCard:{cardBottom:{comment:`Comment`,dislike:`Dislike`,like:`Like`,share:`Share`}},list:{collectionList:{collectionListItem:{contentCountSuffix:`content`,movieLabel:`Movie`}}},photoGrid:{episodeLoading:`Episode Loading`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},picker:{genderPicker:{cancel:`Cancel`,confirm:`Confirm`,options:{female:`Female`,male:`Male`,secret:`Secret`},title:`Select Gender`},pickerDrawer:{cancel:`Cancel`,confirm:`Confirm`,title:`Please Select`}},seriesEpisodes:{completedSeriesTotal:`Completed series: {total} episodes`,episodeLabel:`Episode {episode}`,episodeNotFound:`Episode not found`,episodeSwitchFailed:`Failed to switch episode`,episodeTitle:`Episode title`,ongoingSeriesTotal:`Ongoing series: {total} episodes`,ongoingSeriesUpdatedTo:`Ongoing series: updated to {total} episodes`,selectorTitle:`Episodes`,singleContent:`Single episode`},sharePopup:{shareContent:{copyFailed:`Copy failed`,copyShareLink:`Copy link`,copySuccess:`Copied`,shareHint:`Can paste a link to share with friends`,shareLinksTitle:`Share Links`},shareDrawer:{cancel:`Cancel`,collectionLabel:`Collection`,label:`Uncollect`,moments:`Moments`,wechat:`WeChat`,wechatFriend:`WeChat Friend`}},skeleton:{loading:`Loading`},title:`Are you sure you want to delete this content?`},pages:{collectionAdd:{page:{collectionNotFound:`Collection not found`,done:`Done`,emptyPublish:`No posts available to add`,selectPostFirst:`Please select posts first`,submitFailed:`Add failed, please try again later`,submitSuccess:`Added successfully`,submitting:`Adding...`,title:`Add posts to collection`,userNotFound:`User not found`}},collectionCreate:{form:{addCover:`Add cover`,collectionNotFound:`Collection not found`,coverAlt:`Collection cover`,coverLabel:`Cover`,coverUploadFailed:`Failed to upload cover`,create:`Create`,createFailed:`Create failed`,createSuccess:`Created successfully`,createTitle:`Create Collection`,creating:`Creating...`,descriptionLabel:`Description`,descriptionPlaceholder:`Add a description for this collection`,editTitle:`Edit Collection`,label:`Title`,save:`Save`,saveFailed:`Save failed`,saveSuccess:`Saved successfully`,saving:`Saving...`,signatureLabel:`Description`,titlePlaceholder:`Please enter collection title`,titleRequired:`Please enter collection title`,uploading:`Uploading...`}},collectionDetail:{components:{collectionDetailCard:{collectedInLabel:`Collected in:`}},detail:{add:`Add Content`,cancel:`Cancel`,collectionManageTitle:`Collection Management`,contentCountSuffix:`Section Contents`,coverAlt:`Collection cover`,defaultCollectionDeleteNotSupported:`Default collection cannot be deleted`,defaultTitle:`Collection`,delete:`Delete`,deleteCollection:`Delete collection`,deleteFailed:`Delete failed`,deleteSuccess:`Collection deleted`,deleting:`Deleting...`,done:`Done`,editCollection:`Edit Collection`,emptyContent:`No content yet`,manageCollection:`Manage Collection`,operationFailed:`Operation failed, please try again later`,ownerAvatarAlt:`Collection owner`,pleaseLogin:`Please log in first`,selectAll:`Select all`,subscribe:`Subscribe`,subscribeOperateFailed:`Subscription action failed`,subscribeProcessing:`Processing...`,subscribeSuccess:`Subscribed successfully`,subscribed:`Subscribed`,uncollectFailed:`Failed to remove from collection`,uncollectSuccess:`Removed from collection`,unsubscribeSuccess:`Unsubscribed`,updatedSuffix:`Update`}},edit:{page:{avatarUpdateSuccess:`Updated successfully`,avatarUploadFailed:`Failed to upload avatar. Please try again later.`,avatarUploading:`Uploading...`,clickToChangeAvatar:`Tap to change avatar`,displayIdLabel:`Display ID`,genderFemale:`Female`,genderLabel:`Gender`,genderMale:`Male`,genderSecret:`Private`,genderSelect:`Please select`,genderUpdateSuccess:`Gender updated successfully`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Nickname`,loading:`Loading`,nicknameInvalidChars:`Nickname only supports _, - and .`,nicknamePlaceholder:`Enter your nickname`,nicknameRequired:`Please enter a nickname`,nicknameTooShort:`Nickname must be at least 2 characters`,nicknameUpdateSuccess:`Nickname updated successfully`,save:`Save`,saveFailed:`Save failed. Please try again later.`,saveSuccess:`Saved successfully`,signatureLabel:`Signature`,signaturePlaceholder:`Enter your bio`,signatureTooShort:`Bio must be at least 2 characters`,signatureUpdateSuccess:`Bio updated successfully`,submit:`Submit`,title:`Edit profile`,updateFailed:`Update failed. Please try again later.`,userNotFound:`User info not found`}},feedSeries:{feedSeriesClient:{episodeLoading:`Episode Loading`,episodeSelectorTitle:`Episodes`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},page:{videoLoading:`Loading video...`}},feedback:{components:{feedbackForm:{addScreenshot:`Add screenshot`,alt:`Screenshot of feedback`,contactLabel:`Contact`,contentMinLength:`Problem description must be at least 4 characters.`,delete:`Delete`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Feedback content`,loading:`Submitting...`,message:`Update failed, please try again later.`,missingContact:`Enter your contact information.`,missingFeedback:`Please enter your feedback`,missingScreenshot:`Please upload a screenshot`,placeholder:`obtain SMS verification code`,placeholder1_6d0242:`Please enter your email or phone number so we can resolve your issue.`,screenshotLabel:`Upload Screenshot`,screenshotUploadFailed:`Screenshot upload failed, please try again later`,submit:`SUBMIT`,submitsuccess:`Feedback submitted successfully. We will resolve it as soon as possible.`,title:`Feedback`,uploading:`UPLOADING...`}}},follow:{components:{followButton:{follow:`Follow`,following:`Following`},interactionTabs:{fans:`Fans`,follow:`Follow`},userList:{follow:`Follow`,followBack:`Follow back`,followNow:`Follow now`,noFans:`No fans yet`,noFollowedUsers:`Not following any users`}},pages:{fans:{privateListUnavailable:`This fan list is not publicly available`},followed:{privateListUnavailable:`This following list is not publicly available`}}},fullscreenFeed:{page:{episodeSelectorTitle:`Episodes`,missingParams:`Missing testimonial bit or episode parameter`}},login:{forgot:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Get verification code`,loginLink:`Remembered your password? Log in`,or:`or`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,title:`Forgot your password?`},index:{loginFailed:`Login failed. Please try again later.`,loginSuccess:`Logged in successfully`},loginClient:{agreeToTerms:`I have read and agree to the Terms of Service and Privacy Policy`,agreeToTermsPrefix:`I have read and agree to the `,and:` and `,close:`Close`,emailPlaceholder:`Enter your email`,forgotPassword:`Forgot Password`,hidePassword:`Hide password`,loggingIn:`Logging in...`,login:`Log in`,noAccount:`Don't have an account?`,passwordPlaceholder:`Enter your password`,privacyPolicy:`Privacy Policy`,registerLink:`Create a new account`,showPassword:`Show password`,title:`Log in to your account`,userAgreement:`Terms of Service`},password:{back:`Back`,confirmModify:`Confirm changes`,confirmPasswordPlaceholder:`Re-enter your password`,confirmReset:`Confirm reset`,passwordInvalidCharacters:`Use only letters, numbers, and supported special characters`,passwordNeedTwoTypes:`Include at least 2 character types (upper/lower/number/special)`,passwordPlaceholder:`Enter a password (8-32 characters)`,passwordSetSuccess:`Password updated`,passwordTooLong:`Password must be no more than 32 characters`,passwordTooShort:`Password must be at least 8 characters`,passwordsNotMatch:`Passwords do not match`,register:`Register`,setLoginPassword:`Set a login password`,setNewPassword:`Set a new password`,submitFailed:`Failed to submit. Please try again later.`,submitting:`Submitting...`},register:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Get verification code`,hasAccount:`Already have an account?`,invalidEmail:`Please enter a valid email`,loginLink:`Log in`,sendFailed:`Failed to send`,sending:`Sending...`,title:`Create your account`},resetPassword:{back:`Back`,codePlaceholder:`Enter the verification code`,passwordRuleHint:`Use 8-32 characters and include at least 2 types (upper/lower/number/special)`,resend:`Resend`,sendCode:`Send code`,sendFailed:`Failed to send`,title:`Reset password`,verifyEmail:`Verify email`,verifyFailed:`Verification failed. Please try again later.`,verifyHint:`Verify your identity`,verifyViaEmail:`Verify via email`,verifying:`Verifying...`},verify:{back:`Back`,invalidCode:`Invalid verification code`,nextStep:`Next`,resend:`Resend`,sentTo:`Sent to`,title:`Enter the verification code`,verifying:`Verifying...`}},postDetail:{postDetailClient:{comment:`Comments`,postDeleted:`This post has been deleted`,postOffline:`This post is no longer available`,reactions:`Reactions`}},profile:{client:{collect:`Collect`,collectionNotPublic:`This collection is private`,editProfile:`Edit profile`,exploreAdventures:`Explore amazing adventures.`,follow:`Follow`,followFailed:`Follow failed`,followSuccess:`Followed successfully`,followed:`Following`,history:`History`,imageTooLarge:`The image is too large. Please choose one smaller than 5MB.`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,like:`Like`,likeNotPublic:`Likes are private`,loginNow:`Log in`,loginRequiredForUpload:`Please log in and try again.`,loginToView:`Please log in to view`,mediaUpdateSuccess:`Updated successfully`,operationFailed:`Operation failed. Please try again later.`,processing:`Processing...`,publish:`Publish`,unfollowFailed:`Unfollow failed`,unfollowSuccess:`Unfollowed`,uploadFailed:`Upload failed. Please try again later.`,welcomeToPlanet:`Welcome`},components:{tabs:{collectTab:{cancel:`Cancel`,collections:`Collections`,created:`Created`,delete:`Delete`,edit:`Edit`,emptyContent:`You haven't collected any content yet`,noCreatedCollections:`No created collections yet`,noSubscribedCollections:`No subscribed collections yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,subscribed:`Subscribed`,uncollectFailed:`Failed to uncollect`,uncollectedSuccess:`Uncollected successfully`,video:`Video`},historyTab:{cancel:`Cancel`,delete:`Delete`,deleteFailed:`Deletion failed.`,edit:`Edit`,emptyContent:`You have no watch history yet`,historyDeletedSuccess:`Browsing history deleted`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,video:`Video`},likeTab:{cancel:`Cancel`,delete:`Delete`,edit:`Edit`,emptyContent:`You haven't liked any content yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,unlikeFailed:`Failed to unlike`,unlikedSuccess:`Unliked successfully`,video:`Video`},publishTab:{deleteFailed:`Delete failed`,deleteSuccess:`Deleted`,emptyText:`No published content yet`}},userProfileHeader:{fans:`Fans`,follow:`Follow`,likesReceived:`Likes Received`}}},publish:{components:{collection:{createCollection:`Create Collection`,moreCollections:`More collections`,syncToCollection:`Sync to collection`},collectionCard:{contentCountSuffix:`Bar Contents`},collectionPopup:{noCollections:`No collections yet`,syncToCollection:`Sync to collection`},coverItem:{coverAlt:`Cover`,editCover:`Edit cover`,uploadImage:`Upload Image`},editor:{headlineHint:`With Headline`},header:{publish:`Publish`},materialItem:{deleteMaterial:`Delete media`,uploadImage:`Uploaded image`,videoCover:`Video cover`},mediaPreview:{previewAlt:`Preview`},uploadProgress:{uploading:`Uploading`}},pageClient:{cancel:`cancel`,editContentFirst:`Please edit the content first`,maxMaterialCount:`You can upload up to 9 materials`,publishFailed:`Publish failed, please try again later`,publishSuccess:`Published successfully`,resume:`Continued`,switchToPostConfirm:`Switching to post will clear the main video. Continue?`,switchToVideoConfirm:`Switching to video will clear existing materials. Continue?`,title:`Confirm toggle`,uploadFailedCount:`{count} files failed to upload`}},search:{hotRecommend:{hotPostsTitle:`Popular Posts`,hotVideosTitle:`Popular Videos`},hotSearch:{recommendedSearches:`Recommended searches`},pageClient:{searchHistory:`Search History`,tabs:{all:`All`,post:`Posts`,user:`Users`,video:`Videos`}},searchResult:{searchAll:{emptyResult:`No related content found`,more:`MORE`,relatedSuffix:`Related`},searchUser:{emptyResult:`No related content found`,followersSuffix:`Followers`},searchVideoInfo:{noRelevantContent:`No relevant content found`}},topHeader:{placeholder:`Please enter keywords`,search:`Cari`}},settings:{components:{resetPasswordDrawer:{boundEmailNotice:`The email address is currently bound`,codeSentSuccess:`Verification code sent`,confirmPasswordPlaceholder:`Please enter the login password again`,passwordPlaceholder:`Enter password (6-18 characters)`,passwordResetSuccess:`Password changed successfully`,resendAfter:`resend after`,resetFailed:`Modification failed, please try again later`,resetPassword:`Change Password`,sendCode:`Send verification code`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,setNewPasswordHint:`Set a new login password`,submitting:`Submitting...`,title:`Reset Password`,verifyEmailButton:`Validate Email`,verifyFailed:`Verification failed, please check the code`,verifyHint:`Perform verification`,verifySuccess:`Verification successful`,verifying:`Verifying...`},settings:{button:`Log Out`,cancel:`Cancel`,collectionsTitle:`Collections`,confirm:`Confirm`,feedbackTitle:`Feedback`,follow:`Following`,followersTitle:`Followers`,languageTitle:`Language`,like:`Likes`,listPrivateHint:`This list will be private`,logoutConfirmMessage:`Are you sure you want to log out?`,privacySettingsTitle:`Privacy Settings`,resetPasswordTitle:`Reset Password`,switchTo:`Switch to`,title:`Settings`,whenOff:`When turned off`}}},userFollow:{components:{comprehensiveTab:{empty:`No content yet, try somewhere else.`,postsFeed:`Posts Feed`},contentItem:{filmAndTv:`Film and television related`},followNoLogin:{login:`Log in`,notLoggedIn:`You are not logged in`},followNoUser:{empty:`You haven't followed anyone yet`},followedList:{newUpdate:`New update`,seeAll:`See All`},postTab:{empty:`Not following any posts`}},page:{tabs:{posts:`Posts`}}},videoDetail:{videoDetailClient:{videoDeleted:`This video has been deleted`,videoUnavailable:`This video is unavailable`}}},ui:{infiniteScroll:{failed:`Load failed, click to retry`,loading:`Loading`,noMore:`No more`},list:{empty:`No content yet`,loading:`Loading...`,postList:{earlier:`Earlier`,empty:`No browsing history`,postListItem:{coverAlt:`Post cover`},today:`Today`,yesterday:`Yesterday`},userActivityList:{earlier:`Earlier`,empty:`No browsing history`,today:`Today`,userActivityListActions:{comment:`Comment`,dislike:`Dislike`,like:`Like`,likeFailed:`Like failed`,share:`Share`},userActivityListItem:{collapse:`Collapse`,collectFailed:`Collection failed`,expand:`Expand`,mediaAlt:`Feed image`},yesterday:`Yesterday`},videoList:{earlier:`Earlier`,empty:`No viewing history`,today:`Today`,videoListItem:{coverAlt:`Video cover`,movie:`Movie`,series:`Series`,watchUntil:`Watched `},yesterday:`Yesterday`}},loading:{label:`Loading...`}}},tabBar:{follow:`Follow`,home:`Home`,message:`Message`,mine:`Mine`}};export{e as default};
4
+ If this was not you, please contact support or file an appeal.`,gotIt:`Got it`,remarkDefault:`Abnormal behavior detected`,title:`Account Restricted`,unblockTimePermanent:`Permanent`},collectionPopup:{collectSuccess:`Added to collection`,coverAlt:`Cover image`,createCollection:`Create Collection`,createCollectionHint:`to create your collection.`,createModalAction:`Done`,createModalTitle:`New Collection`,favoriteToCollectionTitle:`Favorite to Collection`,newCollection:`New`,noCollections:`No collections yet`,postsCountSuffix:`Posts`,selectTitle:`Select Collection`,updateSuccess:`Collection updated`},debugLocaleSwitcher:{current:`Current`,languageDebugging:`Language Debugging`},deleteConfirmDialog:{cancel:`Cancel`,confirm:`Delete`,description:`This action cannot be undone.`},followButton:{follow:`Follow`,followFailed:`Failed to follow`,following:`Following`,loginFailed:`Login failed`,loginRequired:`Please log in first`,unfollowConfirmDialog:{cancel:`cancel`,confirm:`OK`,confirmUnfollow:`Are you sure you want to unfollow`},unfollowFailed:`Failed to unfollow`},imageCropModal:{cancel:`Cancel`,confirm:`Confirm`,processing:`Processing...`},infoCard:{cardBottom:{comment:`Comment`,dislike:`Dislike`,like:`Like`,share:`Share`}},list:{collectionList:{collectionListItem:{contentCountSuffix:`content`,movieLabel:`Movie`}}},photoGrid:{episodeLoading:`Episode Loading`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},picker:{genderPicker:{cancel:`Cancel`,confirm:`Confirm`,options:{female:`Female`,male:`Male`,secret:`Secret`},title:`Select Gender`},pickerDrawer:{cancel:`Cancel`,confirm:`Confirm`,title:`Please Select`}},seriesEpisodes:{completedSeriesTotal:`Completed series: {total} episodes`,episodeLabel:`Episode {episode}`,episodeNotFound:`Episode not found`,episodeSwitchFailed:`Failed to switch episode`,episodeSwitching:`Switching...`,episodeTitle:`Episode title`,ongoingSeriesTotal:`Ongoing series: {total} episodes`,ongoingSeriesUpdatedTo:`Ongoing series: updated to {total} episodes`,selectorTitle:`Episodes`,singleContent:`Single episode`},sharePopup:{shareContent:{copyFailed:`Copy failed`,copyShareLink:`Copy link`,copySuccess:`Copied`,shareHint:`Can paste a link to share with friends`,shareLinksTitle:`Share Links`},shareDrawer:{cancel:`Cancel`,collectionLabel:`Collection`,label:`Uncollect`,moments:`Moments`,wechat:`WeChat`,wechatFriend:`WeChat Friend`}},skeleton:{loading:`Loading`},title:`Are you sure you want to delete this content?`},pages:{collectionAdd:{page:{collectionNotFound:`Collection not found`,done:`Done`,emptyPublish:`No posts available to add`,selectPostFirst:`Please select posts first`,submitFailed:`Add failed, please try again later`,submitSuccess:`Added successfully`,submitting:`Adding...`,title:`Add posts to collection`,userNotFound:`User not found`}},collectionCreate:{form:{addCover:`Add cover`,collectionNotFound:`Collection not found`,coverAlt:`Collection cover`,coverLabel:`Cover`,coverUploadFailed:`Failed to upload cover`,create:`Create`,createFailed:`Create failed`,createSuccess:`Created successfully`,createTitle:`Create Collection`,creating:`Creating...`,descriptionLabel:`Description`,descriptionPlaceholder:`Add a description for this collection`,editTitle:`Edit Collection`,label:`Title`,save:`Save`,saveFailed:`Save failed`,saveSuccess:`Saved successfully`,saving:`Saving...`,signatureLabel:`Description`,titlePlaceholder:`Please enter collection title`,titleRequired:`Please enter collection title`,uploading:`Uploading...`}},collectionDetail:{components:{collectionDetailCard:{collectedInLabel:`Collected in:`}},detail:{add:`Add Content`,cancel:`Cancel`,collectionManageTitle:`Collection Management`,contentCountSuffix:`Section Contents`,coverAlt:`Collection cover`,defaultCollectionDeleteNotSupported:`Default collection cannot be deleted`,defaultTitle:`Collection`,delete:`Delete`,deleteCollection:`Delete collection`,deleteFailed:`Delete failed`,deleteSuccess:`Collection deleted`,deleting:`Deleting...`,done:`Done`,editCollection:`Edit Collection`,emptyContent:`No content yet`,manageCollection:`Manage Collection`,operationFailed:`Operation failed, please try again later`,ownerAvatarAlt:`Collection owner`,pleaseLogin:`Please log in first`,selectAll:`Select all`,subscribe:`Subscribe`,subscribeOperateFailed:`Subscription action failed`,subscribeProcessing:`Processing...`,subscribeSuccess:`Subscribed successfully`,subscribed:`Subscribed`,uncollectFailed:`Failed to remove from collection`,uncollectSuccess:`Removed from collection`,unsubscribeSuccess:`Unsubscribed`,updatedSuffix:`Update`}},edit:{page:{avatarUpdateSuccess:`Updated successfully`,avatarUploadFailed:`Failed to upload avatar. Please try again later.`,avatarUploading:`Uploading...`,clickToChangeAvatar:`Tap to change avatar`,displayIdLabel:`Display ID`,genderFemale:`Female`,genderLabel:`Gender`,genderMale:`Male`,genderSecret:`Private`,genderSelect:`Please select`,genderUpdateSuccess:`Gender updated successfully`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Nickname`,loading:`Loading`,nicknameInvalidChars:`Nickname only supports _, - and .`,nicknamePlaceholder:`Enter your nickname`,nicknameRequired:`Please enter a nickname`,nicknameTooShort:`Nickname must be at least 2 characters`,nicknameUpdateSuccess:`Nickname updated successfully`,save:`Save`,saveFailed:`Save failed. Please try again later.`,saveSuccess:`Saved successfully`,signatureLabel:`Signature`,signaturePlaceholder:`Enter your bio`,signatureTooShort:`Bio must be at least 2 characters`,signatureUpdateSuccess:`Bio updated successfully`,submit:`Submit`,title:`Edit profile`,updateFailed:`Update failed. Please try again later.`,userNotFound:`User info not found`}},feedSeries:{feedSeriesClient:{episodeLoading:`Episode Loading`,episodeSelectorTitle:`Episodes`,missingEpisode:`Missing valid episode`,noEpisodes:`No episodes available`},page:{videoLoading:`Loading video...`}},feedback:{components:{feedbackForm:{addScreenshot:`Add screenshot`,alt:`Screenshot of feedback`,contactLabel:`Contact`,contentMinLength:`Problem description must be at least 4 characters.`,delete:`Delete`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,label:`Feedback content`,loading:`Submitting...`,message:`Update failed, please try again later.`,missingContact:`Enter your contact information.`,missingFeedback:`Please enter your feedback`,missingScreenshot:`Please upload a screenshot`,placeholder:`obtain SMS verification code`,placeholder1_6d0242:`Please enter your email or phone number so we can resolve your issue.`,screenshotLabel:`Upload Screenshot`,screenshotUploadFailed:`Screenshot upload failed, please try again later`,submit:`SUBMIT`,submitsuccess:`Feedback submitted successfully. We will resolve it as soon as possible.`,title:`Feedback`,uploading:`UPLOADING...`}}},follow:{components:{followButton:{follow:`Follow`,following:`Following`},interactionTabs:{fans:`Fans`,follow:`Follow`},userList:{follow:`Follow`,followBack:`Follow back`,followNow:`Follow now`,noFans:`No fans yet`,noFollowedUsers:`Not following any users`}},pages:{fans:{privateListUnavailable:`This fan list is not publicly available`},followed:{privateListUnavailable:`This following list is not publicly available`}}},fullscreenFeed:{page:{episodeSelectorTitle:`Episodes`,missingParams:`Missing testimonial bit or episode parameter`}},login:{forgot:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Get verification code`,loginLink:`Remembered your password? Log in`,or:`or`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,title:`Forgot your password?`},index:{loginFailed:`Login failed. Please try again later.`,loginSuccess:`Logged in successfully`},loginClient:{agreeToTerms:`I have read and agree to the Terms of Service and Privacy Policy`,agreeToTermsPrefix:`I have read and agree to the `,and:` and `,close:`Close`,emailPlaceholder:`Enter your email`,forgotPassword:`Forgot Password`,hidePassword:`Hide password`,loggingIn:`Logging in...`,login:`Log in`,noAccount:`Don't have an account?`,passwordPlaceholder:`Enter your password`,privacyPolicy:`Privacy Policy`,registerLink:`Create a new account`,showPassword:`Show password`,title:`Log in to your account`,userAgreement:`Terms of Service`},password:{back:`Back`,confirmModify:`Confirm changes`,confirmPasswordPlaceholder:`Re-enter your password`,confirmReset:`Confirm reset`,passwordInvalidCharacters:`Use only letters, numbers, and supported special characters`,passwordNeedTwoTypes:`Include at least 2 character types (upper/lower/number/special)`,passwordPlaceholder:`Enter a password (8-32 characters)`,passwordSetSuccess:`Password updated`,passwordTooLong:`Password must be no more than 32 characters`,passwordTooShort:`Password must be at least 8 characters`,passwordsNotMatch:`Passwords do not match`,register:`Register`,setLoginPassword:`Set a login password`,setNewPassword:`Set a new password`,submitFailed:`Failed to submit. Please try again later.`,submitting:`Submitting...`},register:{back:`Back`,emailPlaceholder:`Enter your email`,getCode:`Get verification code`,hasAccount:`Already have an account?`,invalidEmail:`Please enter a valid email`,loginLink:`Log in`,sendFailed:`Failed to send`,sending:`Sending...`,title:`Create your account`},resetPassword:{back:`Back`,codePlaceholder:`Enter the verification code`,passwordRuleHint:`Use 8-32 characters and include at least 2 types (upper/lower/number/special)`,resend:`Resend`,sendCode:`Send code`,sendFailed:`Failed to send`,title:`Reset password`,verifyEmail:`Verify email`,verifyFailed:`Verification failed. Please try again later.`,verifyHint:`Verify your identity`,verifyViaEmail:`Verify via email`,verifying:`Verifying...`},verify:{back:`Back`,invalidCode:`Invalid verification code`,nextStep:`Next`,resend:`Resend`,sentTo:`Sent to`,title:`Enter the verification code`,verifying:`Verifying...`}},postDetail:{postDetailClient:{comment:`Comments`,postDeleted:`This post has been deleted`,postOffline:`This post is no longer available`,reactions:`Reactions`}},profile:{client:{collect:`Collect`,collectionNotPublic:`This collection is private`,editProfile:`Edit profile`,exploreAdventures:`Explore amazing adventures.`,follow:`Follow`,followFailed:`Follow failed`,followSuccess:`Followed successfully`,followed:`Following`,history:`History`,imageTooLarge:`The image is too large. Please choose one smaller than 5MB.`,imageTypeInvalid:`Only JPG/JPEG/PNG formats are supported`,like:`Like`,likeNotPublic:`Likes are private`,loginNow:`Log in`,loginRequiredForUpload:`Please log in and try again.`,loginToView:`Please log in to view`,mediaUpdateSuccess:`Updated successfully`,operationFailed:`Operation failed. Please try again later.`,processing:`Processing...`,publish:`Publish`,unfollowFailed:`Unfollow failed`,unfollowSuccess:`Unfollowed`,uploadFailed:`Upload failed. Please try again later.`,welcomeToPlanet:`Welcome`},components:{tabs:{collectTab:{cancel:`Cancel`,collections:`Collections`,created:`Created`,delete:`Delete`,edit:`Edit`,emptyContent:`You haven't collected any content yet`,noCreatedCollections:`No created collections yet`,noSubscribedCollections:`No subscribed collections yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,subscribed:`Subscribed`,uncollectFailed:`Failed to uncollect`,uncollectedSuccess:`Uncollected successfully`,video:`Video`},historyTab:{cancel:`Cancel`,delete:`Delete`,deleteFailed:`Deletion failed.`,edit:`Edit`,emptyContent:`You have no watch history yet`,historyDeletedSuccess:`Browsing history deleted`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,video:`Video`},likeTab:{cancel:`Cancel`,delete:`Delete`,edit:`Edit`,emptyContent:`You haven't liked any content yet`,operationFailed:`Operation failed, please try again later`,pleaseLogin:`Please log in first`,posts:`Posts`,processing:`Processing...`,selectAll:`Select All`,unlikeFailed:`Failed to unlike`,unlikedSuccess:`Unliked successfully`,video:`Video`},publishTab:{deleteFailed:`Delete failed`,deleteSuccess:`Deleted`,emptyText:`No published content yet`}},userProfileHeader:{fans:`Fans`,follow:`Follow`,likesReceived:`Likes Received`}}},publish:{components:{collection:{createCollection:`Create Collection`,moreCollections:`More collections`,syncToCollection:`Sync to collection`},collectionCard:{contentCountSuffix:`Bar Contents`},collectionPopup:{noCollections:`No collections yet`,syncToCollection:`Sync to collection`},coverItem:{coverAlt:`Cover`,editCover:`Edit cover`,uploadImage:`Upload Image`},editor:{headlineHint:`With Headline`},header:{publish:`Publish`},materialItem:{deleteMaterial:`Delete media`,uploadImage:`Uploaded image`,videoCover:`Video cover`},mediaPreview:{previewAlt:`Preview`},uploadProgress:{uploading:`Uploading`}},pageClient:{cancel:`cancel`,editContentFirst:`Please edit the content first`,maxMaterialCount:`You can upload up to 9 materials`,publishFailed:`Publish failed, please try again later`,publishSuccess:`Published successfully`,resume:`Continued`,switchToPostConfirm:`Switching to post will clear the main video. Continue?`,switchToVideoConfirm:`Switching to video will clear existing materials. Continue?`,title:`Confirm toggle`,uploadFailedCount:`{count} files failed to upload`}},search:{hotRecommend:{hotPostsTitle:`Popular Posts`,hotVideosTitle:`Popular Videos`},hotSearch:{recommendedSearches:`Recommended searches`},pageClient:{searchHistory:`Search History`,tabs:{all:`All`,post:`Posts`,user:`Users`,video:`Videos`}},searchResult:{searchAll:{emptyResult:`No related content found`,more:`MORE`,relatedSuffix:`Related`},searchUser:{emptyResult:`No related content found`,followersSuffix:`Followers`},searchVideoInfo:{noRelevantContent:`No relevant content found`}},topHeader:{placeholder:`Please enter keywords`,search:`Cari`}},settings:{components:{resetPasswordDrawer:{boundEmailNotice:`The email address is currently bound`,codeSentSuccess:`Verification code sent`,confirmPasswordPlaceholder:`Please enter the login password again`,passwordPlaceholder:`Enter password (6-18 characters)`,passwordResetSuccess:`Password changed successfully`,resendAfter:`resend after`,resetFailed:`Modification failed, please try again later`,resetPassword:`Change Password`,sendCode:`Send verification code`,sendFailed:`Failed to send, please try again later`,sending:`Sending...`,setNewPasswordHint:`Set a new login password`,submitting:`Submitting...`,title:`Reset Password`,verifyEmailButton:`Validate Email`,verifyFailed:`Verification failed, please check the code`,verifyHint:`Perform verification`,verifySuccess:`Verification successful`,verifying:`Verifying...`},settings:{button:`Log Out`,cancel:`Cancel`,collectionsTitle:`Collections`,confirm:`Confirm`,feedbackTitle:`Feedback`,follow:`Following`,followersTitle:`Followers`,languageTitle:`Language`,like:`Likes`,listPrivateHint:`This list will be private`,logoutConfirmMessage:`Are you sure you want to log out?`,privacySettingsTitle:`Privacy Settings`,resetPasswordTitle:`Reset Password`,switchTo:`Switch to`,title:`Settings`,whenOff:`When turned off`}}},userFollow:{components:{comprehensiveTab:{empty:`No content yet, try somewhere else.`,postsFeed:`Posts Feed`},contentItem:{filmAndTv:`Film and television related`},followNoLogin:{login:`Log in`,notLoggedIn:`You are not logged in`},followNoUser:{empty:`You haven't followed anyone yet`},followedList:{newUpdate:`New update`,seeAll:`See All`},postTab:{empty:`Not following any posts`}},page:{tabs:{posts:`Posts`}}},videoDetail:{videoDetailClient:{videoDeleted:`This video has been deleted`,videoUnavailable:`This video is unavailable`}}},ui:{infiniteScroll:{failed:`Load failed, click to retry`,loading:`Loading`,noMore:`No more`},list:{empty:`No content yet`,loading:`Loading...`,postList:{earlier:`Earlier`,empty:`No browsing history`,postListItem:{coverAlt:`Post cover`},today:`Today`,yesterday:`Yesterday`},userActivityList:{earlier:`Earlier`,empty:`No browsing history`,today:`Today`,userActivityListActions:{comment:`Comment`,dislike:`Dislike`,like:`Like`,likeFailed:`Like failed`,share:`Share`},userActivityListItem:{collapse:`Collapse`,collectFailed:`Collection failed`,expand:`Expand`,mediaAlt:`Feed image`},yesterday:`Yesterday`},videoList:{earlier:`Earlier`,empty:`No viewing history`,today:`Today`,videoListItem:{coverAlt:`Video cover`,movie:`Movie`,series:`Series`,watchUntil:`Watched `},yesterday:`Yesterday`}},loading:{label:`Loading...`}}},tabBar:{follow:`Follow`,home:`Home`,message:`Message`,mine:`Mine`}};export{e as default};
@@ -1,4 +1,4 @@
1
1
 
2
2
  var e={components:{biz:{basics:{fullscreenFeed:{runtime:{bottomInfo:{collapse:`收起`,expand:`展开`,nextItem:`下一条`,seriesAction:`选集·{title}`,seriesActionWithEpisode:`选集·{title} {episodeName}`},commentModal:{comment:`评论`},userAction:{collectAction:`收藏`,commentAction:`评论`,followFailed:`关注失败`,like:`赞`,likeAction:`喜欢`,loginRequired:`请先登录`,shareAction:`分享`},videoSlide:{watchFullscreen:`全屏观看`}}}},business:{comment:{commentInput:{cannotSelectVideoWhenImageSelected:`已选择图片时不能再选择视频`,dragFileNotSupported:`不支持拖拽图片/文件,请使用下方按钮上传`,image:`图片`,imageUploadFailed:`上传图片失败`,partialImageUploadFailed:`部分图片上传失败`,pasteFileNotSupported:`不支持粘贴图片/文件,请使用下方按钮上传`,placeholder:`说点什么...`,publishCommentFailed:`发布评论失败`,publishDefault:`发布`,publishSuccess:`发布成功`,publishing:`发布中...`,video:`视频`,videoUploadFailed:`视频上传失败`},commentItem:{contentInReview:`内容审核中`,dislike:`踩`,like:`赞`,reply:`回复`,replyCount:`{count}条回复`},commentList:{dislikeHint:`你已经点踩过了`,emptyPrompt:`还没人评论,快来成为第一人吧`,fetchCommentsFailed:`获取评论失败`,invalidReplyTarget:`回复目标无效`,loading:`加载中...`,loginRequired:`请先登录`,noMore:`没有更多了`,publishCommentFailed:`发布评论失败`,publishReplyFailed:`发布回复失败`,viewMore:`查看更多`},replyDetail:{commentDetail:`评论详情`,dislike:`踩`,dislikeHint:`你已经点踩过了`,fetchRepliesFailed:`获取回复列表失败`,follow:`关注`,followFailed:`关注失败`,followed:`已关注`,invalidReplyTarget:`无效回复对象`,like:`赞`,loginRequired:`请先登录`,publishReplyFailed:`发布回复失败`,reply:`回复`,underReview:`内容审核中`,unfollowFailed:`取消关注失败`}},contact:{contactList:{myFollowing:`我的关注`,noFollowingUsers:`你还没有关注任何用户`,noMore:`没有更多了`,noSearchResult:`没有搜索到结果`},contactSearch:{cancel:`取消`,close:`关闭`,placeholder:`请搜索你想@的人`}},detail:{detailFollowAction:{follow:`关注`,following:`已关注`},detailGuessLike:{title:`猜你喜欢`},detailIntroduction:{collapse:`收起`,expand:`展开`,score:`评分`},detailOperate:{collectAdded:`已加入`,collectFailed:`收藏失败`,collection:`收藏`,defaultCollection:`默认收藏夹`,like:`赞`,modifyCollection:`修改收藏夹`,modifyCollectionSuccess:`修改收藏夹成功`,operateFailed:`操作失败,请重试`,share:`分享`,uncollectSuccess:`已取消收藏`},detailPopularComments:{emptyPrompt:`期待你发布第一条评论`,like:`赞`,mediaPlaceholder:`[图片/视频]`,popularComments:`热门评论`},detailTabs:{discussion:`讨论`,video:`视频`},postRecommendList:{title:`相关推荐`},videoHero:{coverAlt:`视频播放器封面`,noVideos:`暂无可播放的视频`}},fullscreenFeed:{variants:{fullscreenVideoFeed:{runtime:{client:{contentLoading:`内容加载中...`}}}}},imageTextRecommend:{allEpisodes:`全{count}集`,defaultTitle:`推荐视频`,noCover:`无封面`,updatedTo:`更至{count}集`},marquee:{noticeAlt:`公告`},navBar:{variants:{basicNavBar:{runtime:{channelFilterDialog:{add:`添加`,allAddedTo:`已经全部添加到`,allChannels:`全部频道`,delete:`删除`,moreChannels:`更多频道`,myChannels:`我的频道`,resetDefault:`恢复默认`}}}}},searchHistory:{clear:`清理`,clearAllHistory:`删除全部历史`,confirmClearDescription:`确认删除全部搜索历史吗?`,defaultTitle:`搜索历史`,mockHistory1:`示例历史1`,mockHistory2:`示例历史2`,mockHistory3:`示例历史3`},textRecommend:{defaultTitle:`推荐搜索`,refreshBatch:`换一批`}}},common:{blockedDialog:{contactSupport:`联系客服`,description:`由于:{remark},您的账号被限制登录
3
3
  解封时间:{unblockTime}
4
- 如非本人操作,可联系客服或提出申诉`,gotIt:`我知道了`,remarkDefault:`检测到异常行为`,title:`账号已被限制`,unblockTimePermanent:`永久封禁`},collectionPopup:{collectSuccess:`收藏成功`,coverAlt:`封面图`,createCollection:`创建合集`,createCollectionHint:`可以去创建你的合集`,createModalAction:`完成`,createModalTitle:`新建收藏夹`,favoriteToCollectionTitle:`收藏到合集`,newCollection:`新建`,noCollections:`暂无合集`,postsCountSuffix:`篇贴子`,selectTitle:`选择收藏夹`,updateSuccess:`修改收藏夹成功`},debugLocaleSwitcher:{current:`当前`,languageDebugging:`语言调试`},deleteConfirmDialog:{cancel:`取消`,confirm:`确认删除`,description:`删除后无法恢复`},followButton:{follow:`关注`,followFailed:`关注失败`,following:`已关注`,loginFailed:`登录失败`,loginRequired:`请先登录`,unfollowConfirmDialog:{cancel:`取消`,confirm:`确定`,confirmUnfollow:`确认要取消关注吗`},unfollowFailed:`取消关注失败`},imageCropModal:{cancel:`取消`,confirm:`确认`,processing:`处理中...`},infoCard:{cardBottom:{comment:`评论`,dislike:`踩`,like:`赞`,share:`分享`}},list:{collectionList:{collectionListItem:{contentCountSuffix:`个内容`,movieLabel:`电影`}}},photoGrid:{episodeLoading:`剧集加载中`,missingEpisode:`缺少有效的剧集`,noEpisodes:`暂无可播放的剧集`},picker:{genderPicker:{cancel:`取消`,confirm:`确认`,options:{female:`女`,male:`男`,secret:`保密`},title:`选择性别`},pickerDrawer:{cancel:`取消`,confirm:`确认`,title:`请选择`}},seriesEpisodes:{completedSeriesTotal:`完结剧集:共{total}集`,episodeLabel:`第{episode}集`,episodeNotFound:`剧集不存在`,episodeSwitchFailed:`剧集切换失败`,episodeTitle:`分集标题`,ongoingSeriesTotal:`连载剧集:共{total}集`,ongoingSeriesUpdatedTo:`连载剧集:更新至{total}集`,selectorTitle:`选集`,singleContent:`单集内容`},sharePopup:{shareContent:{copyFailed:`复制失败`,copyShareLink:`复制链接`,copySuccess:`复制成功`,shareHint:`可以粘贴链接分享给好友`,shareLinksTitle:`分享链接`},shareDrawer:{cancel:`取消`,collectionLabel:`收藏`,label:`取消收藏`,moments:`朋友圈`,wechat:`微信`,wechatFriend:`微信好友`}},skeleton:{loading:`加载中`},title:`确认删除该内容吗?`},pages:{collectionAdd:{page:{collectionNotFound:`未找到合集信息`,done:`完成`,emptyPublish:`暂无可添加的帖子`,selectPostFirst:`请先选择帖子`,submitFailed:`添加失败,请稍后再试`,submitSuccess:`添加成功`,submitting:`添加中...`,title:`添加帖子到合集`,userNotFound:`未找到用户信息`}},collectionCreate:{form:{addCover:`添加封面`,collectionNotFound:`未找到收藏夹信息`,coverAlt:`收藏夹封面`,coverLabel:`封面`,coverUploadFailed:`上传封面失败`,create:`创建`,createFailed:`创建失败`,createSuccess:`创建成功`,createTitle:`创建收藏夹`,creating:`创建中...`,descriptionLabel:`说明`,descriptionPlaceholder:`请输入说明`,editTitle:`编辑收藏夹`,label:`标题`,save:`保存`,saveFailed:`保存失败`,saveSuccess:`保存成功`,saving:`保存中...`,signatureLabel:`个人签名`,titlePlaceholder:`请输入收藏夹名称`,titleRequired:`请输入收藏夹名称`,uploading:`上传中...`}},collectionDetail:{components:{collectionDetailCard:{collectedInLabel:`收藏于`}},detail:{add:`添加内容`,cancel:`取消`,collectionManageTitle:`收藏夹管理`,contentCountSuffix:`款内容`,coverAlt:`收藏夹封面`,defaultCollectionDeleteNotSupported:`默认收藏夹不支持删除`,defaultTitle:`收藏夹`,delete:`删除`,deleteCollection:`删除收藏夹`,deleteFailed:`删除失败`,deleteSuccess:`收藏夹已删除`,deleting:`删除中...`,done:`完成`,editCollection:`编辑收藏夹`,emptyContent:`暂无内容`,manageCollection:`管理收藏夹`,operationFailed:`操作失败,请稍后再试`,ownerAvatarAlt:`收藏夹拥有者`,pleaseLogin:`请先登录`,selectAll:`全选`,subscribe:`订阅`,subscribeOperateFailed:`订阅操作失败`,subscribeProcessing:`处理中...`,subscribeSuccess:`订阅成功`,subscribed:`已订阅`,uncollectFailed:`取消收藏失败`,uncollectSuccess:`已取消收藏`,unsubscribeSuccess:`已取消订阅`,updatedSuffix:`更新`}},edit:{page:{avatarUpdateSuccess:`更换完成`,avatarUploadFailed:`头像上传失败,请稍后再试`,avatarUploading:`上传中...`,clickToChangeAvatar:`点击更换头像`,displayIdLabel:`展示ID`,genderFemale:`女`,genderLabel:`性别`,genderMale:`男`,genderSecret:`保密`,genderSelect:`请选择`,genderUpdateSuccess:`性别修改成功`,imageTypeInvalid:`仅支持 JPG/JPEG/PNG 格式`,label:`昵称`,loading:`加载中`,nicknameInvalidChars:`昵称只支持特殊符号”_ 下划线“、- 连字符和. 点`,nicknamePlaceholder:`请输入昵称`,nicknameRequired:`请输入昵称`,nicknameTooShort:`昵称至少 2 个字符`,nicknameUpdateSuccess:`昵称修改成功`,save:`保存`,saveFailed:`保存失败,请稍后再试`,saveSuccess:`保存成功`,signatureLabel:`个人签名`,signaturePlaceholder:`请输入个人签名`,signatureTooShort:`个人签名至少 2 个字符`,signatureUpdateSuccess:`个人签名修改成功`,submit:`提交`,title:`编辑资料`,updateFailed:`修改失败,请稍后重试`,userNotFound:`未找到用户信息`}},feedSeries:{feedSeriesClient:{episodeLoading:`剧集加载中`,episodeSelectorTitle:`选集`,missingEpisode:`缺少有效的剧集`,noEpisodes:`暂无可播放的剧集`},page:{videoLoading:`视频加载中...`}},feedback:{components:{feedbackForm:{addScreenshot:`添加截图`,alt:`反馈截图`,contactLabel:`联系方式`,contentMinLength:`问题描述至少 4 个字符`,delete:`删除`,imageTypeInvalid:`仅支持 JPG/JPEG/PNG 格式`,label:`反馈内容`,loading:`提交中...`,message:`修改失败,请稍后重试`,missingContact:`请输入联系方式`,missingFeedback:`请输入反馈内容`,missingScreenshot:`请上传截图`,placeholder:`请输入内容`,placeholder1_6d0242:`请输入您的邮箱或手机号,以方便解决您的问题`,screenshotLabel:`上传截图`,screenshotUploadFailed:`截图上传失败,请稍后再试`,submit:`提交`,submitsuccess:`反馈成功,我们将尽快为您解决`,title:`意见反馈`,uploading:`上传中...`}}},follow:{components:{followButton:{follow:`关注`,following:`已关注`},interactionTabs:{fans:`粉丝`,follow:`关注`},userList:{follow:`关注`,followBack:`回关`,followNow:`去关注`,noFans:`没有任何粉丝`,noFollowedUsers:`没有关注任何用户`}},pages:{fans:{privateListUnavailable:`该粉丝列表暂未对外开放`},followed:{privateListUnavailable:`该关注列表暂未对外开放`}}},fullscreenFeed:{page:{episodeSelectorTitle:`选集`,missingParams:`缺少推荐位或剧集参数`}},login:{forgot:{back:`返回`,emailPlaceholder:`请输入邮箱号`,getCode:`获取验证码`,loginLink:`登录已有账号`,or:`或`,sendFailed:`发送失败,请稍后重试`,sending:`发送中…`,title:`忘记密码`},index:{loginFailed:`登录失败,请稍后重试`,loginSuccess:`登录成功`},loginClient:{agreeToTerms:`我已阅读并同意用户协议与隐私政策`,agreeToTermsPrefix:`我已经阅读并同意`,and:`和`,close:`关闭`,emailPlaceholder:`请输入邮箱`,forgotPassword:`忘记密码`,hidePassword:`隐藏密码`,loggingIn:`登录中…`,login:`登录`,noAccount:`还没有账号?`,passwordPlaceholder:`请输入密码`,privacyPolicy:`隐私政策`,registerLink:`注册新账号`,showPassword:`显示密码`,title:`登录你的账号`,userAgreement:`用户协议`},password:{back:`返回`,confirmModify:`确认修改`,confirmPasswordPlaceholder:`请再次输入登录密码`,confirmReset:`确认重置`,passwordInvalidCharacters:`仅支持字母、数字和指定特殊字符`,passwordNeedTwoTypes:`至少包含2种字符类型(大写/小写/数字/特殊字符)`,passwordPlaceholder:`请输入8-32位密码`,passwordSetSuccess:`密码设置成功`,passwordTooLong:`密码长度不能超过32位`,passwordTooShort:`密码长度不能少于8位`,passwordsNotMatch:`两次密码输入不一致`,register:`注册`,setLoginPassword:`设置登录密码`,setNewPassword:`设置新密码`,submitFailed:`提交失败,请稍后重试`,submitting:`提交中…`},register:{back:`返回`,emailPlaceholder:`请输入邮箱`,getCode:`获取验证码`,hasAccount:`已有账号?`,invalidEmail:`请输入正确的邮箱地址`,loginLink:`去登录`,sendFailed:`发送失败,请稍后重试`,sending:`发送中…`,title:`免费注册`},resetPassword:{back:`返回`,codePlaceholder:`请输入验证码`,passwordRuleHint:`新密码需8-32位,且至少包含2种字符类型(大写/小写/数字/特殊字符)`,resend:`重新发送`,sendCode:`发送验证码`,sendFailed:`发送失败,请稍后重试`,title:`修改密码`,verifyEmail:`验证邮箱`,verifyFailed:`验证失败,请稍后重试`,verifyHint:`进行验证`,verifyViaEmail:`通过已绑定邮箱`,verifying:`验证中…`},verify:{back:`返回`,invalidCode:`验证码无效`,nextStep:`下一步`,resend:`重新发送`,sentTo:`已经发送至`,title:`请输入验证码`,verifying:`验证中…`}},postDetail:{postDetailClient:{comment:`评论`,postDeleted:`该帖子已被删除`,postOffline:`该帖子已下架`,reactions:`人表态`}},profile:{client:{collect:`收藏`,collectionNotPublic:`该收藏暂未公开`,editProfile:`编辑资料`,exploreAdventures:`探索奇幻的冒险吧。`,follow:`关注`,followFailed:`关注失败`,followSuccess:`关注成功`,followed:`已关注`,history:`历史`,imageTooLarge:`图片过大,请选择小于5MB的图片`,imageTypeInvalid:`仅支持 JPG/JPEG/PNG 格式`,like:`点赞`,likeNotPublic:`点赞列表暂未公开`,loginNow:`立即登录`,loginRequiredForUpload:`请先登录后再试`,loginToView:`登录后可查看`,mediaUpdateSuccess:`更换完成`,operationFailed:`操作失败,请稍后再试`,processing:`处理中...`,publish:`发布`,unfollowFailed:`取消关注失败`,unfollowSuccess:`已取消关注`,uploadFailed:`上传失败,请稍后重试`,welcomeToPlanet:`欢迎来到星球`},components:{tabs:{collectTab:{cancel:`取消`,collections:`收藏夹`,created:`创建的`,delete:`删除`,edit:`编辑`,emptyContent:`您还没有收藏任何内容`,noCreatedCollections:`暂无创建的合集`,noSubscribedCollections:`暂无订阅的合集`,operationFailed:`操作失败,请稍后再试`,pleaseLogin:`请先登录`,posts:`帖子`,processing:`处理中...`,selectAll:`全选`,subscribed:`订阅的`,uncollectFailed:`取消收藏失败`,uncollectedSuccess:`已取消收藏`,video:`视频`},historyTab:{cancel:`取消`,delete:`删除`,deleteFailed:`删除失败`,edit:`编辑`,emptyContent:`您还没有观看记录`,historyDeletedSuccess:`已删除浏览记录`,operationFailed:`操作失败,请稍后再试`,pleaseLogin:`请先登录`,posts:`帖子`,processing:`处理中...`,selectAll:`全选`,video:`视频`},likeTab:{cancel:`取消`,delete:`删除`,edit:`编辑`,emptyContent:`您还没有点赞任何内容`,operationFailed:`操作失败,请稍后再试`,pleaseLogin:`请先登录`,posts:`帖子`,processing:`处理中...`,selectAll:`全选`,unlikeFailed:`取消点赞失败`,unlikedSuccess:`已取消点赞`,video:`视频`},publishTab:{deleteFailed:`删除失败`,deleteSuccess:`删除成功`,emptyText:`暂无发布内容`}},userProfileHeader:{fans:`粉丝`,follow:`关注`,likesReceived:`获赞`}}},publish:{components:{collection:{createCollection:`创建合集`,moreCollections:`更多合集`,syncToCollection:`同步到合集`},collectionCard:{contentCountSuffix:`条内容`},collectionPopup:{noCollections:`暂无合集`,syncToCollection:`同步到合集`},coverItem:{coverAlt:`封面`,editCover:`编辑封面`,uploadImage:`上传封面`},editor:{headlineHint:`有标题、画面清晰无水印的作品曝光会更多哦`},header:{publish:`发布`},materialItem:{deleteMaterial:`删除素材`,uploadImage:`上传图片`,videoCover:`视频封面`},mediaPreview:{previewAlt:`预览`},uploadProgress:{uploading:`上传中`}},pageClient:{cancel:`取消`,editContentFirst:`请先编辑内容`,maxMaterialCount:`最多上传 9 个素材`,publishFailed:`发布失败,请稍后再试`,publishSuccess:`发布成功`,resume:`继续`,switchToPostConfirm:`切换到帖子会清空主视频,是否继续?`,switchToVideoConfirm:`切换到视频会清空已有素材,是否继续?`,title:`确认切换`,uploadFailedCount:`{count} 个文件上传失败`}},search:{hotRecommend:{hotPostsTitle:`热门帖子`,hotVideosTitle:`热门视频`},hotSearch:{recommendedSearches:`推荐搜索`},pageClient:{searchHistory:`搜索历史`,tabs:{all:`全部`,post:`帖子`,user:`用户`,video:`视频`}},searchResult:{searchAll:{emptyResult:`没有找到相关内容`,more:`更多`,relatedSuffix:`相关`},searchUser:{emptyResult:`没有找到相关内容`,followersSuffix:`人关注`},searchVideoInfo:{noRelevantContent:`没有找到相关内容`}},topHeader:{placeholder:`请输入搜索关键词`,search:`搜索`}},settings:{components:{resetPasswordDrawer:{boundEmailNotice:`目前已绑定邮箱号`,codeSentSuccess:`验证码已发送`,confirmPasswordPlaceholder:`请再次输入登录密码`,passwordPlaceholder:`请输入8-32位密码`,passwordResetSuccess:`密码修改成功`,resendAfter:`后可重发`,resetFailed:`修改失败,请稍后重试`,resetPassword:`修改密码`,sendCode:`发送验证码`,sendFailed:`发送失败,请稍后重试`,sending:`发送中...`,setNewPasswordHint:`设置新的登录密码`,submitting:`提交中...`,title:`重置密码`,verifyEmailButton:`验证邮箱`,verifyFailed:`验证失败,请检查验证码`,verifyHint:`进行验证`,verifySuccess:`验证成功`,verifying:`验证中...`},settings:{button:`退出登录`,cancel:`取消`,collectionsTitle:`合集`,confirm:`确认`,feedbackTitle:`意见反馈`,follow:`关注`,followersTitle:`粉丝`,languageTitle:`语言`,like:`点赞`,listPrivateHint:`该列表会设为私密`,logoutConfirmMessage:`确定要退出登录吗?`,privacySettingsTitle:`隐私设置`,resetPasswordTitle:`重置密码`,switchTo:`切换为`,title:`设置`,whenOff:`关闭后`}}},userFollow:{components:{comprehensiveTab:{empty:`暂无内容,去别处看看吧。`,postsFeed:`帖子`},contentItem:{filmAndTv:`影视相关`},followNoLogin:{login:`登录`,notLoggedIn:`您还未登录`},followNoUser:{empty:`你还没有关注任何人哦`},followedList:{newUpdate:`有更新`,seeAll:`查看全部`},postTab:{empty:`暂未关注任何帖子`}},page:{tabs:{posts:`帖子`}}},videoDetail:{videoDetailClient:{videoDeleted:`该视频已被删除`,videoUnavailable:`该视频已下架`}}},ui:{infiniteScroll:{failed:`加载失败,点击重试`,loading:`加载中`,noMore:`没有更多了`},list:{empty:`暂无内容`,loading:`加载中`,postList:{earlier:`更早`,empty:`暂无浏览记录`,postListItem:{coverAlt:`帖子封面`},today:`今天`,yesterday:`昨天`},userActivityList:{earlier:`更早`,empty:`暂无浏览记录`,today:`今天`,userActivityListActions:{comment:`评论`,dislike:`踩`,like:`赞`,likeFailed:`点赞失败`,share:`分享`},userActivityListItem:{collapse:`收起`,collectFailed:`收藏失败`,expand:`展开`,mediaAlt:`动态图片`},yesterday:`昨天`},videoList:{earlier:`更早`,empty:`暂无观看记录`,today:`今天`,videoListItem:{coverAlt:`视频封面`,movie:`电影`,series:`剧集`,watchUntil:`已观看 `},yesterday:`昨天`}},loading:{label:`加载中...`}}},tabBar:{follow:`关注`,home:`首页`,message:`消息`,mine:`我的`}};export{e as default};
4
+ 如非本人操作,可联系客服或提出申诉`,gotIt:`我知道了`,remarkDefault:`检测到异常行为`,title:`账号已被限制`,unblockTimePermanent:`永久封禁`},collectionPopup:{collectSuccess:`收藏成功`,coverAlt:`封面图`,createCollection:`创建合集`,createCollectionHint:`可以去创建你的合集`,createModalAction:`完成`,createModalTitle:`新建收藏夹`,favoriteToCollectionTitle:`收藏到合集`,newCollection:`新建`,noCollections:`暂无合集`,postsCountSuffix:`篇贴子`,selectTitle:`选择收藏夹`,updateSuccess:`修改收藏夹成功`},debugLocaleSwitcher:{current:`当前`,languageDebugging:`语言调试`},deleteConfirmDialog:{cancel:`取消`,confirm:`确认删除`,description:`删除后无法恢复`},followButton:{follow:`关注`,followFailed:`关注失败`,following:`已关注`,loginFailed:`登录失败`,loginRequired:`请先登录`,unfollowConfirmDialog:{cancel:`取消`,confirm:`确定`,confirmUnfollow:`确认要取消关注吗`},unfollowFailed:`取消关注失败`},imageCropModal:{cancel:`取消`,confirm:`确认`,processing:`处理中...`},infoCard:{cardBottom:{comment:`评论`,dislike:`踩`,like:`赞`,share:`分享`}},list:{collectionList:{collectionListItem:{contentCountSuffix:`个内容`,movieLabel:`电影`}}},photoGrid:{episodeLoading:`剧集加载中`,missingEpisode:`缺少有效的剧集`,noEpisodes:`暂无可播放的剧集`},picker:{genderPicker:{cancel:`取消`,confirm:`确认`,options:{female:`女`,male:`男`,secret:`保密`},title:`选择性别`},pickerDrawer:{cancel:`取消`,confirm:`确认`,title:`请选择`}},seriesEpisodes:{completedSeriesTotal:`完结剧集:共{total}集`,episodeLabel:`第{episode}集`,episodeNotFound:`剧集不存在`,episodeSwitchFailed:`剧集切换失败`,episodeSwitching:`切换中...`,episodeTitle:`分集标题`,ongoingSeriesTotal:`连载剧集:共{total}集`,ongoingSeriesUpdatedTo:`连载剧集:更新至{total}集`,selectorTitle:`选集`,singleContent:`单集内容`},sharePopup:{shareContent:{copyFailed:`复制失败`,copyShareLink:`复制链接`,copySuccess:`复制成功`,shareHint:`可以粘贴链接分享给好友`,shareLinksTitle:`分享链接`},shareDrawer:{cancel:`取消`,collectionLabel:`收藏`,label:`取消收藏`,moments:`朋友圈`,wechat:`微信`,wechatFriend:`微信好友`}},skeleton:{loading:`加载中`},title:`确认删除该内容吗?`},pages:{collectionAdd:{page:{collectionNotFound:`未找到合集信息`,done:`完成`,emptyPublish:`暂无可添加的帖子`,selectPostFirst:`请先选择帖子`,submitFailed:`添加失败,请稍后再试`,submitSuccess:`添加成功`,submitting:`添加中...`,title:`添加帖子到合集`,userNotFound:`未找到用户信息`}},collectionCreate:{form:{addCover:`添加封面`,collectionNotFound:`未找到收藏夹信息`,coverAlt:`收藏夹封面`,coverLabel:`封面`,coverUploadFailed:`上传封面失败`,create:`创建`,createFailed:`创建失败`,createSuccess:`创建成功`,createTitle:`创建收藏夹`,creating:`创建中...`,descriptionLabel:`说明`,descriptionPlaceholder:`请输入说明`,editTitle:`编辑收藏夹`,label:`标题`,save:`保存`,saveFailed:`保存失败`,saveSuccess:`保存成功`,saving:`保存中...`,signatureLabel:`个人签名`,titlePlaceholder:`请输入收藏夹名称`,titleRequired:`请输入收藏夹名称`,uploading:`上传中...`}},collectionDetail:{components:{collectionDetailCard:{collectedInLabel:`收藏于`}},detail:{add:`添加内容`,cancel:`取消`,collectionManageTitle:`收藏夹管理`,contentCountSuffix:`款内容`,coverAlt:`收藏夹封面`,defaultCollectionDeleteNotSupported:`默认收藏夹不支持删除`,defaultTitle:`收藏夹`,delete:`删除`,deleteCollection:`删除收藏夹`,deleteFailed:`删除失败`,deleteSuccess:`收藏夹已删除`,deleting:`删除中...`,done:`完成`,editCollection:`编辑收藏夹`,emptyContent:`暂无内容`,manageCollection:`管理收藏夹`,operationFailed:`操作失败,请稍后再试`,ownerAvatarAlt:`收藏夹拥有者`,pleaseLogin:`请先登录`,selectAll:`全选`,subscribe:`订阅`,subscribeOperateFailed:`订阅操作失败`,subscribeProcessing:`处理中...`,subscribeSuccess:`订阅成功`,subscribed:`已订阅`,uncollectFailed:`取消收藏失败`,uncollectSuccess:`已取消收藏`,unsubscribeSuccess:`已取消订阅`,updatedSuffix:`更新`}},edit:{page:{avatarUpdateSuccess:`更换完成`,avatarUploadFailed:`头像上传失败,请稍后再试`,avatarUploading:`上传中...`,clickToChangeAvatar:`点击更换头像`,displayIdLabel:`展示ID`,genderFemale:`女`,genderLabel:`性别`,genderMale:`男`,genderSecret:`保密`,genderSelect:`请选择`,genderUpdateSuccess:`性别修改成功`,imageTypeInvalid:`仅支持 JPG/JPEG/PNG 格式`,label:`昵称`,loading:`加载中`,nicknameInvalidChars:`昵称只支持特殊符号”_ 下划线“、- 连字符和. 点`,nicknamePlaceholder:`请输入昵称`,nicknameRequired:`请输入昵称`,nicknameTooShort:`昵称至少 2 个字符`,nicknameUpdateSuccess:`昵称修改成功`,save:`保存`,saveFailed:`保存失败,请稍后再试`,saveSuccess:`保存成功`,signatureLabel:`个人签名`,signaturePlaceholder:`请输入个人签名`,signatureTooShort:`个人签名至少 2 个字符`,signatureUpdateSuccess:`个人签名修改成功`,submit:`提交`,title:`编辑资料`,updateFailed:`修改失败,请稍后重试`,userNotFound:`未找到用户信息`}},feedSeries:{feedSeriesClient:{episodeLoading:`剧集加载中`,episodeSelectorTitle:`选集`,missingEpisode:`缺少有效的剧集`,noEpisodes:`暂无可播放的剧集`},page:{videoLoading:`视频加载中...`}},feedback:{components:{feedbackForm:{addScreenshot:`添加截图`,alt:`反馈截图`,contactLabel:`联系方式`,contentMinLength:`问题描述至少 4 个字符`,delete:`删除`,imageTypeInvalid:`仅支持 JPG/JPEG/PNG 格式`,label:`反馈内容`,loading:`提交中...`,message:`修改失败,请稍后重试`,missingContact:`请输入联系方式`,missingFeedback:`请输入反馈内容`,missingScreenshot:`请上传截图`,placeholder:`请输入内容`,placeholder1_6d0242:`请输入您的邮箱或手机号,以方便解决您的问题`,screenshotLabel:`上传截图`,screenshotUploadFailed:`截图上传失败,请稍后再试`,submit:`提交`,submitsuccess:`反馈成功,我们将尽快为您解决`,title:`意见反馈`,uploading:`上传中...`}}},follow:{components:{followButton:{follow:`关注`,following:`已关注`},interactionTabs:{fans:`粉丝`,follow:`关注`},userList:{follow:`关注`,followBack:`回关`,followNow:`去关注`,noFans:`没有任何粉丝`,noFollowedUsers:`没有关注任何用户`}},pages:{fans:{privateListUnavailable:`该粉丝列表暂未对外开放`},followed:{privateListUnavailable:`该关注列表暂未对外开放`}}},fullscreenFeed:{page:{episodeSelectorTitle:`选集`,missingParams:`缺少推荐位或剧集参数`}},login:{forgot:{back:`返回`,emailPlaceholder:`请输入邮箱号`,getCode:`获取验证码`,loginLink:`登录已有账号`,or:`或`,sendFailed:`发送失败,请稍后重试`,sending:`发送中…`,title:`忘记密码`},index:{loginFailed:`登录失败,请稍后重试`,loginSuccess:`登录成功`},loginClient:{agreeToTerms:`我已阅读并同意用户协议与隐私政策`,agreeToTermsPrefix:`我已经阅读并同意`,and:`和`,close:`关闭`,emailPlaceholder:`请输入邮箱`,forgotPassword:`忘记密码`,hidePassword:`隐藏密码`,loggingIn:`登录中…`,login:`登录`,noAccount:`还没有账号?`,passwordPlaceholder:`请输入密码`,privacyPolicy:`隐私政策`,registerLink:`注册新账号`,showPassword:`显示密码`,title:`登录你的账号`,userAgreement:`用户协议`},password:{back:`返回`,confirmModify:`确认修改`,confirmPasswordPlaceholder:`请再次输入登录密码`,confirmReset:`确认重置`,passwordInvalidCharacters:`仅支持字母、数字和指定特殊字符`,passwordNeedTwoTypes:`至少包含2种字符类型(大写/小写/数字/特殊字符)`,passwordPlaceholder:`请输入8-32位密码`,passwordSetSuccess:`密码设置成功`,passwordTooLong:`密码长度不能超过32位`,passwordTooShort:`密码长度不能少于8位`,passwordsNotMatch:`两次密码输入不一致`,register:`注册`,setLoginPassword:`设置登录密码`,setNewPassword:`设置新密码`,submitFailed:`提交失败,请稍后重试`,submitting:`提交中…`},register:{back:`返回`,emailPlaceholder:`请输入邮箱`,getCode:`获取验证码`,hasAccount:`已有账号?`,invalidEmail:`请输入正确的邮箱地址`,loginLink:`去登录`,sendFailed:`发送失败,请稍后重试`,sending:`发送中…`,title:`免费注册`},resetPassword:{back:`返回`,codePlaceholder:`请输入验证码`,passwordRuleHint:`新密码需8-32位,且至少包含2种字符类型(大写/小写/数字/特殊字符)`,resend:`重新发送`,sendCode:`发送验证码`,sendFailed:`发送失败,请稍后重试`,title:`修改密码`,verifyEmail:`验证邮箱`,verifyFailed:`验证失败,请稍后重试`,verifyHint:`进行验证`,verifyViaEmail:`通过已绑定邮箱`,verifying:`验证中…`},verify:{back:`返回`,invalidCode:`验证码无效`,nextStep:`下一步`,resend:`重新发送`,sentTo:`已经发送至`,title:`请输入验证码`,verifying:`验证中…`}},postDetail:{postDetailClient:{comment:`评论`,postDeleted:`该帖子已被删除`,postOffline:`该帖子已下架`,reactions:`人表态`}},profile:{client:{collect:`收藏`,collectionNotPublic:`该收藏暂未公开`,editProfile:`编辑资料`,exploreAdventures:`探索奇幻的冒险吧。`,follow:`关注`,followFailed:`关注失败`,followSuccess:`关注成功`,followed:`已关注`,history:`历史`,imageTooLarge:`图片过大,请选择小于5MB的图片`,imageTypeInvalid:`仅支持 JPG/JPEG/PNG 格式`,like:`点赞`,likeNotPublic:`点赞列表暂未公开`,loginNow:`立即登录`,loginRequiredForUpload:`请先登录后再试`,loginToView:`登录后可查看`,mediaUpdateSuccess:`更换完成`,operationFailed:`操作失败,请稍后再试`,processing:`处理中...`,publish:`发布`,unfollowFailed:`取消关注失败`,unfollowSuccess:`已取消关注`,uploadFailed:`上传失败,请稍后重试`,welcomeToPlanet:`欢迎来到星球`},components:{tabs:{collectTab:{cancel:`取消`,collections:`收藏夹`,created:`创建的`,delete:`删除`,edit:`编辑`,emptyContent:`您还没有收藏任何内容`,noCreatedCollections:`暂无创建的合集`,noSubscribedCollections:`暂无订阅的合集`,operationFailed:`操作失败,请稍后再试`,pleaseLogin:`请先登录`,posts:`帖子`,processing:`处理中...`,selectAll:`全选`,subscribed:`订阅的`,uncollectFailed:`取消收藏失败`,uncollectedSuccess:`已取消收藏`,video:`视频`},historyTab:{cancel:`取消`,delete:`删除`,deleteFailed:`删除失败`,edit:`编辑`,emptyContent:`您还没有观看记录`,historyDeletedSuccess:`已删除浏览记录`,operationFailed:`操作失败,请稍后再试`,pleaseLogin:`请先登录`,posts:`帖子`,processing:`处理中...`,selectAll:`全选`,video:`视频`},likeTab:{cancel:`取消`,delete:`删除`,edit:`编辑`,emptyContent:`您还没有点赞任何内容`,operationFailed:`操作失败,请稍后再试`,pleaseLogin:`请先登录`,posts:`帖子`,processing:`处理中...`,selectAll:`全选`,unlikeFailed:`取消点赞失败`,unlikedSuccess:`已取消点赞`,video:`视频`},publishTab:{deleteFailed:`删除失败`,deleteSuccess:`删除成功`,emptyText:`暂无发布内容`}},userProfileHeader:{fans:`粉丝`,follow:`关注`,likesReceived:`获赞`}}},publish:{components:{collection:{createCollection:`创建合集`,moreCollections:`更多合集`,syncToCollection:`同步到合集`},collectionCard:{contentCountSuffix:`条内容`},collectionPopup:{noCollections:`暂无合集`,syncToCollection:`同步到合集`},coverItem:{coverAlt:`封面`,editCover:`编辑封面`,uploadImage:`上传封面`},editor:{headlineHint:`有标题、画面清晰无水印的作品曝光会更多哦`},header:{publish:`发布`},materialItem:{deleteMaterial:`删除素材`,uploadImage:`上传图片`,videoCover:`视频封面`},mediaPreview:{previewAlt:`预览`},uploadProgress:{uploading:`上传中`}},pageClient:{cancel:`取消`,editContentFirst:`请先编辑内容`,maxMaterialCount:`最多上传 9 个素材`,publishFailed:`发布失败,请稍后再试`,publishSuccess:`发布成功`,resume:`继续`,switchToPostConfirm:`切换到帖子会清空主视频,是否继续?`,switchToVideoConfirm:`切换到视频会清空已有素材,是否继续?`,title:`确认切换`,uploadFailedCount:`{count} 个文件上传失败`}},search:{hotRecommend:{hotPostsTitle:`热门帖子`,hotVideosTitle:`热门视频`},hotSearch:{recommendedSearches:`推荐搜索`},pageClient:{searchHistory:`搜索历史`,tabs:{all:`全部`,post:`帖子`,user:`用户`,video:`视频`}},searchResult:{searchAll:{emptyResult:`没有找到相关内容`,more:`更多`,relatedSuffix:`相关`},searchUser:{emptyResult:`没有找到相关内容`,followersSuffix:`人关注`},searchVideoInfo:{noRelevantContent:`没有找到相关内容`}},topHeader:{placeholder:`请输入搜索关键词`,search:`搜索`}},settings:{components:{resetPasswordDrawer:{boundEmailNotice:`目前已绑定邮箱号`,codeSentSuccess:`验证码已发送`,confirmPasswordPlaceholder:`请再次输入登录密码`,passwordPlaceholder:`请输入8-32位密码`,passwordResetSuccess:`密码修改成功`,resendAfter:`后可重发`,resetFailed:`修改失败,请稍后重试`,resetPassword:`修改密码`,sendCode:`发送验证码`,sendFailed:`发送失败,请稍后重试`,sending:`发送中...`,setNewPasswordHint:`设置新的登录密码`,submitting:`提交中...`,title:`重置密码`,verifyEmailButton:`验证邮箱`,verifyFailed:`验证失败,请检查验证码`,verifyHint:`进行验证`,verifySuccess:`验证成功`,verifying:`验证中...`},settings:{button:`退出登录`,cancel:`取消`,collectionsTitle:`合集`,confirm:`确认`,feedbackTitle:`意见反馈`,follow:`关注`,followersTitle:`粉丝`,languageTitle:`语言`,like:`点赞`,listPrivateHint:`该列表会设为私密`,logoutConfirmMessage:`确定要退出登录吗?`,privacySettingsTitle:`隐私设置`,resetPasswordTitle:`重置密码`,switchTo:`切换为`,title:`设置`,whenOff:`关闭后`}}},userFollow:{components:{comprehensiveTab:{empty:`暂无内容,去别处看看吧。`,postsFeed:`帖子`},contentItem:{filmAndTv:`影视相关`},followNoLogin:{login:`登录`,notLoggedIn:`您还未登录`},followNoUser:{empty:`你还没有关注任何人哦`},followedList:{newUpdate:`有更新`,seeAll:`查看全部`},postTab:{empty:`暂未关注任何帖子`}},page:{tabs:{posts:`帖子`}}},videoDetail:{videoDetailClient:{videoDeleted:`该视频已被删除`,videoUnavailable:`该视频已下架`}}},ui:{infiniteScroll:{failed:`加载失败,点击重试`,loading:`加载中`,noMore:`没有更多了`},list:{empty:`暂无内容`,loading:`加载中`,postList:{earlier:`更早`,empty:`暂无浏览记录`,postListItem:{coverAlt:`帖子封面`},today:`今天`,yesterday:`昨天`},userActivityList:{earlier:`更早`,empty:`暂无浏览记录`,today:`今天`,userActivityListActions:{comment:`评论`,dislike:`踩`,like:`赞`,likeFailed:`点赞失败`,share:`分享`},userActivityListItem:{collapse:`收起`,collectFailed:`收藏失败`,expand:`展开`,mediaAlt:`动态图片`},yesterday:`昨天`},videoList:{earlier:`更早`,empty:`暂无观看记录`,today:`今天`,videoListItem:{coverAlt:`视频封面`,movie:`电影`,series:`剧集`,watchUntil:`已观看 `},yesterday:`昨天`}},loading:{label:`加载中...`}}},tabBar:{follow:`关注`,home:`首页`,message:`消息`,mine:`我的`}};export{e as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@funhub/platform",
3
3
  "type": "module",
4
- "version": "0.1.93",
4
+ "version": "0.1.95",
5
5
  "private": false,
6
6
  "sideEffects": [
7
7
  "**/*.css"