@funhub/platform 0.2.19 → 0.2.21

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 (52) hide show
  1. package/dist/cli/init/create-client.mjs +1 -1
  2. package/dist/cli/init/shared/constants.mjs +1 -1
  3. package/dist/cli/init/shared/create-project.mjs +1 -1
  4. package/dist/cli/init/shared/prompts.mjs +1 -1
  5. package/dist/cli/init/shared/template.mjs +1 -1
  6. package/dist/cli.mjs +2 -2
  7. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
  8. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  9. package/dist/components/biz/business/advertisement/ad-match.d.mts +7 -0
  10. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  11. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
  12. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +3 -0
  13. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +6 -0
  14. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  15. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  16. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  17. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  18. package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +1 -1
  19. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
  20. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  21. package/dist/components/biz/business/search-history/client.mjs +1 -1
  22. package/dist/components/biz/business/search-input/client.mjs +1 -1
  23. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  24. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  25. package/dist/components/common/analytics-init/page-lifecycle-tracker.mjs +1 -1
  26. package/dist/components/common/popup-video/index.mjs +1 -1
  27. package/dist/components/common/tab-bar/index.mjs +1 -1
  28. package/dist/components/common/top-nav-bar/client.mjs +1 -1
  29. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
  30. package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
  31. package/dist/components/pages/collection-add/page.mjs +1 -1
  32. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  33. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
  34. package/dist/components/pages/search/page-client.mjs +1 -1
  35. package/dist/components/pages/search/top-header.mjs +1 -1
  36. package/dist/components/pages/search-result/page-client.mjs +1 -1
  37. package/dist/components/pages/search-result/top-header.mjs +1 -1
  38. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  39. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  40. package/dist/components/ui/button.d.mts +1 -1
  41. package/dist/components/ui/empty.d.mts +1 -1
  42. package/dist/components/ui/item.d.mts +1 -1
  43. package/dist/hooks/use-content-operate.mjs +1 -1
  44. package/dist/service/advertisement.d.mts +4 -0
  45. package/dist/service/advertisement.mjs +1 -1
  46. package/dist/utils/schema/inspector.d.mts +2 -2
  47. package/dist/utils/tracking.d.mts +3 -11
  48. package/dist/utils/tracking.mjs +1 -1
  49. package/dist/utils/use-compatible-router.mjs +1 -1
  50. package/dist/utils.d.mts +2 -2
  51. package/dist/utils.mjs +1 -1
  52. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
1
 
2
- import{createProject as e}from"./shared/create-project.mjs";async function t(t){await e(`client`,t)}export{t as createClient};
2
+ import{createProject as e}from"./shared/create-project.mjs";async function t(t){await e(`app`,t)}export{t as createClient};
@@ -1,2 +1,2 @@
1
1
 
2
- const e=`funhub-app`,t=`client`,n=`public-groups/funhub-template`,r=`main`,i=`https://gitlab.quguazhan.com`;export{e as DEFAULT_PROJECT_NAME,t as DEFAULT_TEMPLATE_TYPE,r as TEMPLATE_BRANCH,i as TEMPLATE_HOST,n as TEMPLATE_REPO};
2
+ const e=`funhub-app`,t=`app`,n=`public-groups/funhub-template`,r=`main`,i=`https://gitlab.quguazhan.com`;export{e as DEFAULT_PROJECT_NAME,t as DEFAULT_TEMPLATE_TYPE,r as TEMPLATE_BRANCH,i as TEMPLATE_HOST,n as TEMPLATE_REPO};
@@ -1,3 +1,3 @@
1
1
 
2
- import{runCommand as e}from"./command.mjs";import{isEmptyDirectory as t}from"./file.mjs";import{getInstallCommand as n}from"./package-manager.mjs";import{pullTemplate as r}from"./template.mjs";import{log as i,outro as a,spinner as o}from"@clack/prompts";import{existsSync as s,rmSync as c}from"node:fs";import l from"node:path";import u from"node:process";async function d(s,d){let f=u.cwd(),p=l.resolve(f,d.projectName),m=d.projectName===`.`?l.basename(f):l.basename(p),h=o();if(!t(p)){if(!d.force)throw Error(`目标目录 ${p} 非空,请使用 --force 或选择空目录。`);h.start(`正在清理目标目录`),c(p,{recursive:!0,force:!0}),h.stop(`目标目录已清理`)}h.start(`正在拉取远程模板`);let g=await r(s,p,d.force,f);if(h.stop(`模板拉取完成`),d.git&&(h.start(`正在初始化 Git 仓库`),await e(`git`,[`init`],p),h.stop(`Git 仓库初始化完成`)),d.install){let t=n(d.packageManager);h.start(`正在安装依赖 (${d.packageManager})`),await e(t.command,t.args,p),h.stop(`依赖安装完成`)}let _=l.relative(f,p)||`.`,v=n(d.packageManager);i.success(`已创建 Funhub 项目: ${m}`),i.message(`来源: ${g.source}`),i.message(`类型: ${s}`),i.message(`目录: ${p}`),d.install||i.message(`安装依赖: ${v.command} ${v.args.join(` `)}`.trim()),a([`下一步:`,_===`.`?``:` cd ${_}`,d.install?``:` ${v.command} ${v.args.join(` `)}`.trimEnd(),s===`client`?` ${d.packageManager} dev`:``].filter(Boolean).join(`
2
+ import{runCommand as e}from"./command.mjs";import{isEmptyDirectory as t}from"./file.mjs";import{getInstallCommand as n}from"./package-manager.mjs";import{pullTemplate as r}from"./template.mjs";import{log as i,outro as a,spinner as o}from"@clack/prompts";import{existsSync as s,rmSync as c}from"node:fs";import l from"node:path";import u from"node:process";async function d(s,d){let f=u.cwd(),p=l.resolve(f,d.projectName),m=d.projectName===`.`?l.basename(f):l.basename(p),h=o();if(!t(p)){if(!d.force)throw Error(`目标目录 ${p} 非空,请使用 --force 或选择空目录。`);h.start(`正在清理目标目录`),c(p,{recursive:!0,force:!0}),h.stop(`目标目录已清理`)}h.start(`正在拉取远程模板`);let g=await r(s,p,d.force,f);if(h.stop(`模板拉取完成`),d.git&&(h.start(`正在初始化 Git 仓库`),await e(`git`,[`init`],p),h.stop(`Git 仓库初始化完成`)),d.install){let t=n(d.packageManager);h.start(`正在安装依赖 (${d.packageManager})`),await e(t.command,t.args,p),h.stop(`依赖安装完成`)}let _=l.relative(f,p)||`.`,v=n(d.packageManager);i.success(`已创建 Funhub 项目: ${m}`),i.message(`来源: ${g.source}`),i.message(`类型: ${s}`),i.message(`目录: ${p}`),d.install||i.message(`安装依赖: ${v.command} ${v.args.join(` `)}`.trim()),a([`下一步:`,_===`.`?``:` cd ${_}`,d.install?``:` ${v.command} ${v.args.join(` `)}`.trimEnd(),s===`app`?` ${d.packageManager} dev`:``].filter(Boolean).join(`
3
3
  `))}export{d as createProject};
@@ -1,2 +1,2 @@
1
1
 
2
- import{isEmptyDirectory as e,validateProjectName as t}from"./file.mjs";import{detectPackageManager as n}from"./package-manager.mjs";import{DEFAULT_PROJECT_NAME as r,DEFAULT_TEMPLATE_TYPE as i}from"./constants.mjs";import{validateTemplateType as a}from"./template.mjs";import{cancel as o,confirm as s,isCancel as c,select as l,text as u}from"@clack/prompts";import d from"node:process";function f(e){return c(e)&&(o(`已取消创建。`),d.exit(0)),e}async function p(e){return e||f(await l({message:`选择包管理器`,options:[{value:`pnpm`,label:`pnpm`},{value:`npm`,label:`npm`},{value:`yarn`,label:`yarn`},{value:`bun`,label:`bun`}],initialValue:await n()}))}async function m(e){if(e){let t=a(e);if(t)throw Error(t);return e}return f(await l({message:`选择创建类型`,options:[{value:`client`,label:`client`},{value:`sdk`,label:`sdk`}],initialValue:i}))}async function h(e){if(e){let n=e.trim(),r=t(n);if(r)throw Error(r);return n}return f(await u({message:`请输入项目目录名`,placeholder:r,defaultValue:r,validate(e){return t(e||``)}})).trim()}async function g(t,n=!1){if(t===`.`){if(e(t))return n;throw Error(`当前目录非空,暂不支持直接覆盖当前目录,请指定新的项目目录名或切换到空目录。`)}return e(t)||n?n:(f(await s({message:`目录 ${t} 已存在且非空,是否覆盖?`,initialValue:!1}))||(o(`已取消创建。`),d.exit(0)),!0)}export{g as resolveForceOverwrite,p as resolvePackageManager,h as resolveProjectName,m as resolveTemplateType};
2
+ import{isEmptyDirectory as e,validateProjectName as t}from"./file.mjs";import{detectPackageManager as n}from"./package-manager.mjs";import{DEFAULT_PROJECT_NAME as r,DEFAULT_TEMPLATE_TYPE as i}from"./constants.mjs";import{normalizeTemplateType as a,validateTemplateType as o}from"./template.mjs";import{cancel as s,confirm as c,isCancel as l,select as u,text as d}from"@clack/prompts";import f from"node:process";function p(e){return l(e)&&(s(`已取消创建。`),f.exit(0)),e}async function m(e){return e||p(await u({message:`选择包管理器`,options:[{value:`pnpm`,label:`pnpm`},{value:`npm`,label:`npm`},{value:`yarn`,label:`yarn`},{value:`bun`,label:`bun`}],initialValue:await n()}))}async function h(e){if(e){let t=o(e);if(t)throw Error(t);return a(e)}return p(await u({message:`选择创建类型`,options:[{value:`app`,label:`app`},{value:`sdk`,label:`sdk`}],initialValue:i}))}async function g(e){if(e){let n=e.trim(),r=t(n);if(r)throw Error(r);return n}return p(await d({message:`请输入项目目录名`,placeholder:r,defaultValue:r,validate(e){return t(e||``)}})).trim()}async function _(t,n=!1){if(t===`.`){if(e(t))return n;throw Error(`当前目录非空,暂不支持直接覆盖当前目录,请指定新的项目目录名或切换到空目录。`)}return e(t)||n?n:(p(await c({message:`目录 ${t} 已存在且非空,是否覆盖?`,initialValue:!1}))||(s(`已取消创建。`),f.exit(0)),!0)}export{_ as resolveForceOverwrite,m as resolvePackageManager,g as resolveProjectName,h as resolveTemplateType};
@@ -1,2 +1,2 @@
1
1
 
2
- import{TEMPLATE_BRANCH as e,TEMPLATE_HOST as t,TEMPLATE_REPO as n}from"./constants.mjs";import{downloadTemplate as r}from"giget";function i(e){if(!(e===`client`||e===`sdk`))return`创建类型仅支持 client 或 sdk。`}function a(e){return e}function o(t){return`funhub:${n}/${a(t)}#${e}`}function s(){return async n=>{let r=n.match(/^([\w.-]+\/[\w.-]+)(\/[^#]+)?(?:#([\w./@-]+))?$/),i=r?.[1]||``,a=r?.[2]||`/`,o=r?.[3]||e;if(!i)throw Error(`模板仓库配置无效。`);return{name:i.replace(`/`,`-`),version:o,subdir:a,url:`${t}/${i}/-/tree/${o}${a}`,tar:`${t}/${i}/-/archive/${o}.tar.gz`,headers:{"sec-fetch-mode":`same-origin`}}}}async function c(e,t,n,i){return r(o(e),{dir:t,force:n,forceClean:n,cwd:i,providers:{funhub:s()},registry:!1})}export{c as pullTemplate,i as validateTemplateType};
2
+ import{TEMPLATE_BRANCH as e,TEMPLATE_HOST as t,TEMPLATE_REPO as n}from"./constants.mjs";import{downloadTemplate as r}from"giget";function i(e){if(e===`app`||e===`client`)return`app`;if(e===`sdk`)return`sdk`}function a(e){if(!i(e))return`创建类型仅支持 app 或 sdk(兼容旧参数 client)。`}function o(e){return e===`app`?`client`:`sdk`}function s(t){return`funhub:${n}/${o(t)}#${e}`}function c(){return async n=>{let r=n.match(/^([\w.-]+\/[\w.-]+)(\/[^#]+)?(?:#([\w./@-]+))?$/),i=r?.[1]||``,a=r?.[2]||`/`,o=r?.[3]||e;if(!i)throw Error(`模板仓库配置无效。`);return{name:i.replace(`/`,`-`),version:o,subdir:a,url:`${t}/${i}/-/tree/${o}${a}`,tar:`${t}/${i}/-/archive/${o}.tar.gz`,headers:{"sec-fetch-mode":`same-origin`}}}}async function l(e,t,n,i){return r(s(e),{dir:t,force:n,forceClean:n,cwd:i,providers:{funhub:c()},registry:!1})}export{i as normalizeTemplateType,l as pullTemplate,a as validateTemplateType};
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import{createClient as e}from"./cli/init/create-client.mjs";import{createSdk as t}from"./cli/init/create-sdk.mjs";import{resolveForceOverwrite as n,resolvePackageManager as r,resolveProjectName as i,resolveTemplateType as a}from"./cli/init/shared/prompts.mjs";import{intro as o,log as s,outro as c}from"@clack/prompts";function l(e){let t={};for(let n=0;n<e.length;n+=1){let r=e[n];if(!r.startsWith(`-`)&&!t.projectName){t.projectName=r;continue}if(r===`--type`){t.templateType=e[n+1],n+=1;continue}if(r.startsWith(`--type=`)){t.templateType=r.split(`=`)[1];continue}if(r===`--pm`){t.packageManager=e[n+1],n+=1;continue}if(r.startsWith(`--pm=`)){t.packageManager=r.split(`=`)[1];continue}if(r===`--no-install`){t.install=!1;continue}if(r===`--install`){t.install=!0;continue}if(r===`--no-git`){t.git=!1;continue}if(r===`--git`){t.git=!0;continue}if(r===`--force`){t.force=!0;continue}(r===`-h`||r===`--help`)&&(t.help=!0)}return t}function u(){c([`用法:`,` npx @funhub/platform init [project-name] [options]`,``,`选项:`,` --type <client|sdk> 指定模板类型`,` --pm <pnpm|npm|yarn|bun> 指定包管理器`,` --install / --no-install 是否自动安装依赖`,` --git / --no-git 是否初始化 Git 仓库`,` --force 覆盖非空目录`].join(`
4
- `))}async function d(o){let s=l(o);if(s.help){u();return}let c=await i(s.projectName),d=await n(c,s.force??!1),f=await a(s.templateType),p=await r(s.packageManager),m=s.install??!0,h=s.git??!0;if(f===`client`){await e({projectName:c,packageManager:p,install:m,git:h,force:d});return}await t({projectName:c,packageManager:p,install:m,git:h,force:d})}async function f(){let[e,...t]=process.argv.slice(2);if(!e||e===`-h`||e===`--help`||e===`help`){u();return}if(e!==`init`)throw Error(`暂不支持命令 ${e},请使用 init。`);o(`@funhub/platform`),await d(t)}f().catch(e=>{let t=e instanceof Error?e.message:`创建失败`;s.error(t),process.exit(1)});
3
+ import{createClient as e}from"./cli/init/create-client.mjs";import{createSdk as t}from"./cli/init/create-sdk.mjs";import{resolveForceOverwrite as n,resolvePackageManager as r,resolveProjectName as i,resolveTemplateType as a}from"./cli/init/shared/prompts.mjs";import{intro as o,log as s,outro as c}from"@clack/prompts";function l(e){let t={};for(let n=0;n<e.length;n+=1){let r=e[n];if(!r.startsWith(`-`)&&!t.projectName){t.projectName=r;continue}if(r===`--type`){t.templateType=e[n+1],n+=1;continue}if(r.startsWith(`--type=`)){t.templateType=r.split(`=`)[1];continue}if(r===`--pm`){t.packageManager=e[n+1],n+=1;continue}if(r.startsWith(`--pm=`)){t.packageManager=r.split(`=`)[1];continue}if(r===`--no-install`){t.install=!1;continue}if(r===`--install`){t.install=!0;continue}if(r===`--no-git`){t.git=!1;continue}if(r===`--git`){t.git=!0;continue}if(r===`--force`){t.force=!0;continue}(r===`-h`||r===`--help`)&&(t.help=!0)}return t}function u(){c([`用法:`,` npx @funhub/platform init [project-name] [options]`,``,`选项:`,` --type <app|sdk> 指定模板类型(兼容旧值 client)`,` --pm <pnpm|npm|yarn|bun> 指定包管理器`,` --install / --no-install 是否自动安装依赖`,` --git / --no-git 是否初始化 Git 仓库`,` --force 覆盖非空目录`].join(`
4
+ `))}async function d(o){let s=l(o);if(s.help){u();return}let c=await i(s.projectName),d=await n(c,s.force??!1),f=await a(s.templateType),p=await r(s.packageManager),m=s.install??!0,h=s.git??!0;if(f===`app`){await e({projectName:c,packageManager:p,install:m,git:h,force:d});return}await t({projectName:c,packageManager:p,install:m,git:h,force:d})}async function f(){let[e,...t]=process.argv.slice(2);if(!e||e===`-h`||e===`--help`||e===`help`){u();return}if(e!==`init`)throw Error(`暂不支持命令 ${e},请使用 init。`);o(`@funhub/platform`),await d(t)}f().catch(e=>{let t=e instanceof Error?e.message:`创建失败`;s.error(t),process.exit(1)});
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../../utils/use-compatible-router.mjs";import{prefetchVideoPlayerSrc as t}from"../../../../common/video-player/process-m3u8-cache.mjs";import{useLoginModalStore as n}from"../../../../../store/modules/login-modal-store.mjs";import{BasicFullscreen as r}from"../basic-fullscreen.mjs";import{adaptFeedItemToSafeInformation as i,normalizeToFeedItem as a}from"./adapters.mjs";import o from"./styles.module.mjs";import{BottomInfo as s}from"./bottom-info.mjs";import{PostSlide as ee}from"./post-slide.mjs";import{UserAction as te}from"./user-action.mjs";import{VideoSlide as ne}from"./video-slide.mjs";import{useCallback as c,useEffect as l,useMemo as u,useRef as d,useState as f}from"react";import{useParams as p}from"next/navigation";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";import _ from"next/dynamic";const re=_(()=>import(`./comment-modal.mjs`),{ssr:!1,loading:()=>null});function v(_){let v=e(),y=p(),{items:b,activeIndex:x,top:S,bottom:ie,videoConfig:ae,userInteracted:C,onUserInteracted:w,onActiveIndexChange:oe,onDataUpdate:se,onOpenComment:T,getNavigationInfo:E,onControlsVisibilityChange:D,onGestureStart:O,onGestureEnd:k,onSwipeCancel:ce,onCustomActionRender:le,onVideoProgressUpdate:ue,currentUserId:de,followIds:fe,onFollowIdsChange:pe,commentContentId:me,onRequireLogin:A,style:he,activeEpisodeId:ge}=_,j=ae;function M(){C||w()}function N(e){M();let t=typeof y?.locale==`string`?`/${y.locale}`:``;v.push(`${t}/profile/${e}`)}let P=c(e=>`${typeof y?.locale==`string`?`/${y.locale}`:``}/feed-series/${e}/episode/1`,[y?.locale]);function F(e){M();let t=P(e);v.push(t)}function I(){if(A){A();return}n.getState().open()}let[L,_e]=f({});function ve(e,t){if(!t)return e;let n=t.static?{...e.static||{},...t.static}:e.static,r=t.author?{...e.author||{},...t.author}:e.author;return{...e,...t,static:n,author:r}}function R(e,t){_e(n=>{let r=n[e]||{},i=t.static?{...r.static||{},...t.static}:r.static,a=t.author?{...r.author||{},...t.author}:r.author;return{...n,[e]:{...r,...t,...i?{static:i}:{},...a?{author:a}:{}}}}),se(e,t)}let[z,ye]=f(null),[B,be]=f(``),[xe,Se]=f(1),[V,H]=f(!1);function Ce(e,t,n){if(M(),T){T(t);return}ye(t),be(e),Se(n),H(!0)}function we(e){let t=e.static?.comment_cnt;t!=null&&B&&R(B,{static:{comment_cnt:t}})}let U=u(()=>{function e(e){return!!e&&typeof e==`object`&&typeof e.kind==`string`&&!!e.originalData}function t(e){return!!e&&typeof e==`object`&&typeof e.content_id==`string`}function n(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&typeof e.name==`string`}function r(e){let t=Array.isArray(e.medias)?e.medias:[],n=t.map(e=>e?.media_url?e.is_video&&e.cover_image||e.media_url:``).filter(e=>!!e),r=e.content||``,i=r.length>18?`${r.slice(0,18)}...`:r,a={id:e.content_id,mid:e.content_id,name:i,img_y:e.cover_image||``,preview_images:t,description:r,tags:(e.tags||[]).map(e=>({id:e,name:e})),links:[],static:{like_cnt:e.like_count??0,dislike_cnt:e.dislike_count??0,comment_cnt:e.comment_count??0,share_cnt:e.share_count??0,browse_cnt:e.view_count??0,collect_cnt:0},type:e.type,is_liked:!!e.is_liked,is_dislike:!!e.is_dislike,is_collected:!!e.is_collected,is_followed:!!e.is_followed,author:e.author,up_user:e.user_id};return{kind:`post`,id:e.content_id,title:i,content:r,images:n,originalData:a}}function o(e){let t=(Array.isArray(e.preview_images)?e.preview_images:[]).map(e=>e?typeof e==`string`?e:e.is_video?e.cover_image||e.media_url||``:e.media_url||``:``).filter(e=>!!e);return{kind:`post`,id:e.id,title:e.name,content:e.description??``,images:t,originalData:e}}return(b||[]).map(s=>{if(e(s))return s;if(t(s))return r(s);if(n(s)){let e=i(s);return e.type===1&&e.links.length===0?o(e):a(e)}return null}).filter(Boolean)},[b]),W=u(()=>{if(!U.length)return[];let e=Math.max(0,x-1),t=Math.min(U.length-1,x+2),n=[];for(let r=e;r<=t;r+=1){let e=U[r];if(!e||e.kind!==`video`)continue;let t=e.videoUrl||e.hlsList?.[0]?.url||``;t&&n.push(t)}return Array.from(new Set(n))},[x,U]);l(()=>{W.forEach(e=>t(e))},[W]);let G=d(new Set);l(()=>{let e=U[x];if(!e||e.kind!==`video`||Number(e.originalData?.episode_cnt||0)<=1||E(x).onSeriesClick)return;let t=e.originalData?.id||e.id;if(!t)return;let n=P(t);G.current.has(n)||(G.current.add(n),v.prefetch(n))},[x,P,E,U,v]);let K=S??0,q=ie??0,Te={...he,top:`${K}px`,bottom:`${q}px`,height:`calc(100dvh - ${K}px - ${q}px)`},J=d(x),[Ee,Y]=f(!1),[X,Z]=f(!1),[De,Q]=f(!1),$=Ee&&X&&De;return l(()=>{J.current=x,Y(!1),Z(!1),Q(!1)},[x,D]),l(()=>{D?.($)},[$,D]),g(m,{children:[h(r,{items:U,activeIndex:x,userInteracted:C,onUserInteracted:w,onActiveIndexChange:oe,onViewportIndexChange:e=>{J.current=e,Y(!1),Z(!1),Q(!1)},onGestureStart:O,onGestureEnd:k,onSwipeCancel:ce,style:Te,className:`w-full h-full fixed top-0 left-0 overflow-hidden z-[2] touch-none ${o.fullscreenFeed}`,trackClassName:o.feedTrack,itemWrapperClassName:o.feedItem,renderItem:({item:e,index:t,activeIndex:n,isActive:r,isSettledActive:i,shouldMount:a,swipeNext:c})=>{if(!e)return h(`div`,{className:o.emptySlide});let l=Math.abs(t-n)<=1,u=ve(e.originalData,L[e.id]);return g(m,{children:[e.kind===`post`?h(ee,{item:e,isSettledActive:i,shouldMount:a}):e.kind===`video`?h(ne,{item:e,videoConfig:j,isActive:r,isSettledActive:i,shouldMount:a,shouldLoadCover:l,isPaused:V,userInteracted:C,onPlayerInteract:()=>{t===J.current&&X&&Q(!0)},onControlsVisibilityChange:e=>{t===J.current&&Y(e)},onVideoEnded:j?.autoNext?c:void 0,onProgressUpdate:(n,r)=>{t===J.current&&(!X&&n>=.05&&Z(!0),ue?.({id:e.id,currentTime:n,duration:r}))}}):h(`div`,{className:o.emptySlide}),h(te,{information:u,onUpdate:t=>R(e.id,t),onOpenComment:()=>Ce(e.id,u,e.kind===`post`?2:1),onCustomActionRender:le,onUserNavigate:N,currentUserId:de,followIds:fe,onFollowChange:e=>{pe?.(e)},onRequireLogin:I,activeEpisodeId:ge}),r&&h(s,{information:u,isPost:e.kind===`post`,navigation:(()=>{let e=E(t);return(u.episode_cnt??0)>1&&!e.onSeriesClick?{...e,onSeriesClick:()=>F(u.id)}:e})(),isControlsVisible:$,onUserNavigate:N,onNextClick:c})]})}}),!T&&V&&z&&h(re,{open:V,information:z,contentId:me||z.id,content_type:xe,onUpdate:we,onClose:()=>H(!1)})]})}export{v as default};
2
+ "use client";import{useRouter as e}from"../../../../../utils/use-compatible-router.mjs";import{prefetchVideoPlayerSrc as t}from"../../../../common/video-player/process-m3u8-cache.mjs";import{useLoginModalStore as n}from"../../../../../store/modules/login-modal-store.mjs";import{BasicFullscreen as r}from"../basic-fullscreen.mjs";import{adaptFeedItemToSafeInformation as i,normalizeToFeedItem as a}from"./adapters.mjs";import o from"./styles.module.mjs";import{BottomInfo as s}from"./bottom-info.mjs";import{PostSlide as ee}from"./post-slide.mjs";import{UserAction as c}from"./user-action.mjs";import{VideoSlide as te}from"./video-slide.mjs";import{useParams as l}from"next/navigation";import{useCallback as u,useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";import v from"next/dynamic";const ne=v(()=>import(`./comment-modal.mjs`),{ssr:!1,loading:()=>null});function y(v){let y=e(),b=l(),{items:x,activeIndex:S,top:C,bottom:re,videoConfig:ie,userInteracted:w,onUserInteracted:T,onActiveIndexChange:ae,onDataUpdate:E,onOpenComment:D,getNavigationInfo:O,onControlsVisibilityChange:k,onGestureStart:oe,onGestureEnd:se,onSwipeCancel:ce,onCustomActionRender:le,onVideoProgressUpdate:ue,currentUserId:de,followIds:fe,onFollowIdsChange:pe,commentContentId:me,onRequireLogin:A,style:he,activeEpisodeId:ge}=v,j=ie;function M(){w||T()}function N(e){M();let t=typeof b?.locale==`string`?`/${b.locale}`:``;y.push(`${t}/profile/${e}`)}let P=u(e=>`${typeof b?.locale==`string`?`/${b.locale}`:``}/feed-series/${e}/episode/1`,[b?.locale]);function F(e){M();let t=P(e);y.push(t)}function I(){if(A){A();return}n.getState().open()}let[L,_e]=m({});function ve(e,t){if(!t)return e;let n=t.static?{...e.static||{},...t.static}:e.static,r=t.author?{...e.author||{},...t.author}:e.author;return{...e,...t,static:n,author:r}}function R(e,t){_e(n=>{let r=n[e]||{},i=t.static?{...r.static||{},...t.static}:r.static,a=t.author?{...r.author||{},...t.author}:r.author;return{...n,[e]:{...r,...t,...i?{static:i}:{},...a?{author:a}:{}}}}),E(e,t)}let[z,ye]=m(null),[B,be]=m(``),[xe,Se]=m(1),[V,H]=m(!1);function Ce(e,t,n){if(M(),D){D(t);return}ye(t),be(e),Se(n),H(!0)}function we(e){let t=e.static?.comment_cnt;t!=null&&B&&R(B,{static:{comment_cnt:t}})}let U=f(()=>{function e(e){return!!e&&typeof e==`object`&&typeof e.kind==`string`&&!!e.originalData}function t(e){return!!e&&typeof e==`object`&&typeof e.content_id==`string`}function n(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&typeof e.name==`string`}function r(e){let t=Array.isArray(e.medias)?e.medias:[],n=t.map(e=>e?.media_url?e.is_video&&e.cover_image||e.media_url:``).filter(e=>!!e),r=e.content||``,i=r.length>18?`${r.slice(0,18)}...`:r,a={id:e.content_id,mid:e.content_id,name:i,img_y:e.cover_image||``,preview_images:t,description:r,tags:(e.tags||[]).map(e=>({id:e,name:e})),links:[],static:{like_cnt:e.like_count??0,dislike_cnt:e.dislike_count??0,comment_cnt:e.comment_count??0,share_cnt:e.share_count??0,browse_cnt:e.view_count??0,collect_cnt:0},type:e.type,is_liked:!!e.is_liked,is_dislike:!!e.is_dislike,is_collected:!!e.is_collected,is_followed:!!e.is_followed,author:e.author,up_user:e.user_id};return{kind:`post`,id:e.content_id,title:i,content:r,images:n,originalData:a}}function o(e){let t=(Array.isArray(e.preview_images)?e.preview_images:[]).map(e=>e?typeof e==`string`?e:e.is_video?e.cover_image||e.media_url||``:e.media_url||``:``).filter(e=>!!e);return{kind:`post`,id:e.id,title:e.name,content:e.description??``,images:t,originalData:e}}return(x||[]).map(s=>{if(e(s))return s;if(t(s))return r(s);if(n(s)){let e=i(s);return e.type===1&&e.links.length===0?o(e):a(e)}return null}).filter(Boolean)},[x]),W=f(()=>{if(!U.length)return[];let e=Math.max(0,S-1),t=Math.min(U.length-1,S+2),n=[];for(let r=e;r<=t;r+=1){let e=U[r];if(!e||e.kind!==`video`)continue;let t=e.videoUrl||e.hlsList?.[0]?.url||``;t&&n.push(t)}return Array.from(new Set(n))},[S,U]);d(()=>{W.forEach(e=>t(e))},[W]);let G=p(new Set);d(()=>{let e=U[S];if(!e||e.kind!==`video`||Number(e.originalData?.episode_cnt||0)<=1||O(S).onSeriesClick)return;let t=e.originalData?.id||e.id;if(!t)return;let n=P(t);G.current.has(n)||(G.current.add(n),y.prefetch(n))},[S,P,O,U,y]);let K=C??0,q=re??0,Te={...he,top:`${K}px`,bottom:`${q}px`,height:`calc(100dvh - ${K}px - ${q}px)`},J=p(S),[Ee,Y]=m(!1),[X,Z]=m(!1),[De,Q]=m(!1),$=Ee&&X&&De;return d(()=>{J.current=S,Y(!1),Z(!1),Q(!1)},[S,k]),d(()=>{k?.($)},[$,k]),_(h,{children:[g(r,{items:U,activeIndex:S,userInteracted:w,onUserInteracted:T,onActiveIndexChange:ae,onViewportIndexChange:e=>{J.current=e,Y(!1),Z(!1),Q(!1)},onGestureStart:oe,onGestureEnd:se,onSwipeCancel:ce,style:Te,className:`w-full h-full fixed top-0 left-0 overflow-hidden z-[2] touch-none ${o.fullscreenFeed}`,trackClassName:o.feedTrack,itemWrapperClassName:o.feedItem,renderItem:({item:e,index:t,activeIndex:n,isActive:r,isSettledActive:i,shouldMount:a,swipeNext:l})=>{if(!e)return g(`div`,{className:o.emptySlide});let u=Math.abs(t-n)<=1,d=ve(e.originalData,L[e.id]);return _(h,{children:[e.kind===`post`?g(ee,{item:e,isSettledActive:i,shouldMount:a}):e.kind===`video`?g(te,{item:e,videoConfig:j,isActive:r,isSettledActive:i,shouldMount:a,shouldLoadCover:u,isPaused:V,userInteracted:w,onPlayerInteract:()=>{t===J.current&&X&&Q(!0)},onControlsVisibilityChange:e=>{t===J.current&&Y(e)},onVideoEnded:j?.autoNext?l:void 0,onProgressUpdate:(n,r)=>{t===J.current&&(!X&&n>=.05&&Z(!0),ue?.({id:e.id,currentTime:n,duration:r}))}}):g(`div`,{className:o.emptySlide}),g(c,{information:d,onUpdate:t=>R(e.id,t),onOpenComment:()=>Ce(e.id,d,e.kind===`post`?2:1),onCustomActionRender:le,onUserNavigate:N,currentUserId:de,followIds:fe,onFollowChange:e=>{pe?.(e)},onRequireLogin:I,activeEpisodeId:ge}),r&&g(s,{information:d,isPost:e.kind===`post`,navigation:(()=>{let e=O(t);return(d.episode_cnt??0)>1&&!e.onSeriesClick?{...e,onSeriesClick:()=>F(d.id)}:e})(),isControlsVisible:$,onUserNavigate:N,onNextClick:l})]})}}),!D&&V&&z&&g(ne,{open:V,information:z,contentId:me||z.id,content_type:xe,onUpdate:we,onClose:()=>H(!1)})]})}export{y as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{disablePageScroll as t,enablePageScroll as n,pxToVw as r}from"../../../../../../../utils/helper.mjs";import{trackPageClick as i}from"../../../../../../../utils/tracking.mjs";import{Image as a}from"../../../../../../ui/image.mjs";import{Box as o}from"../../../../../../ui/box.mjs";import{Text as s}from"../../../../../../ui/text.mjs";import c from"../../../../../../ui/link.mjs";import{urlPrefix as l}from"../../../../../../../constants/url-prefix.mjs";import u from"../../../../../../ui/legacy/button.mjs";import{defaultProps as d}from"../defaults/default-props.mjs";import f from"../../../../../../../assets/images/logo.mjs";import{loadHiddenChannelIdsFromStorage as p}from"../../../../../business/nav-bar/variants/basic-nav-bar/runtime/channel-filter-dialog.mjs";import{Popover as m}from"../../../../../../ui/legacy/popover.mjs";import{Mask as h}from"../../../../../../ui/mask.mjs";import{clsx as g}from"clsx";import{useEffect as _,useMemo as v,useRef as y,useState as b}from"react";import{usePathname as x}from"next/navigation";import{useIsClient as S}from"foxact/use-is-client";import{jsx as C,jsxs as w}from"react/jsx-runtime";const T={overscrollBehavior:`contain`},E={},D=[];function O(e,t){return t===0?`/`:`${l.CHANNEL}/${encodeURIComponent(e.cn_name)}`}function k(e,t,n){return g(`w-full leading-[58px] px-[20px] text-[16px] text-text2 border-t border-solid border-line1 transition-all duration-150 block`,e===0&&`border-t-0`,t&&`!text-[20px] !text-theme5 !font-bold`,n&&`!text-(--color-theme5)`)}function A(e){let t=e;try{t=decodeURIComponent(e)}catch{t=e}return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function j(e){e.stopPropagation()}function M({props:l=E,styles:g,events:M,data:N=D}){let{logoAlt:P,logoWidth:F,logoHeight:I,popoverPlacement:L,popoverWidth:R,maxHeight:z,itemHeight:B,currentChannelId:V,pageKey:H=`home`,pageName:U=`首页`}={...d,...l},[W,G]=b(!1),K=y(null),q=x(),[J,Y]=b(V??null),X=S(),Z=(e,t)=>{Y(e.id),M?.onChannelChange?.(e,t),setTimeout(()=>{G(!1)},150)};_(()=>{if(V||!q||N.length===0)return;let e=A(q),t=N.find((t,n)=>A(O(t,n))===e);t?Y(t.id):e===`/`&&Y(N[0]?.id||null)},[q,X,N,V]);let Q=v(()=>{if(!X||!W)return N;let e=p();return N.filter(t=>!e.includes(t.id))},[N,X,W]);_(()=>{if(W)return t(),()=>{n()}},[W]);let $=g?e(g,{}):{},ee={width:r(R),maxHeight:r(z),...T};return w(o,{style:$,className:`leading-0 flex items-center`,children:[C(h,{visible:W,onMaskClick:()=>{G(!1)}}),C(m,{placement:L,visible:W,content:C(o,{as:`nav`,className:`overflow-y-auto overscroll-contain`,style:ee,onTouchMove:j,children:Q.map((e,t)=>{let n=O(e,t),i=A(q||``)===A(n);return C(c,{href:n,className:k(t,J===e.id,i),style:{height:r(B)},onClick:()=>Z(e,t),children:e.cn_name},e.id||`channel-${t}`)})}),children:C(s,{ref:K,as:`h1`,className:`flex items-center`,children:C(u,{onClick:()=>{i(H,U,null,`logo`),G(e=>!e),M?.onClick?.()},className:`!m-0 !p-0`,children:C(a,{alt:P,src:typeof f==`string`?f:f.src,width:F,height:I})})},`logo-button`)})]})}export{M as default};
2
+ "use client";import{mergeStyles as e}from"../../../../../utils/styles/helpers.mjs";import{disablePageScroll as t,enablePageScroll as n,pxToVw as r}from"../../../../../../../utils/helper.mjs";import{trackPageClick as i}from"../../../../../../../utils/tracking.mjs";import{Image as a}from"../../../../../../ui/image.mjs";import{Box as o}from"../../../../../../ui/box.mjs";import{Text as s}from"../../../../../../ui/text.mjs";import c from"../../../../../../ui/link.mjs";import{urlPrefix as l}from"../../../../../../../constants/url-prefix.mjs";import u from"../../../../../../ui/legacy/button.mjs";import{defaultProps as d}from"../defaults/default-props.mjs";import f from"../../../../../../../assets/images/logo.mjs";import{loadHiddenChannelIdsFromStorage as p}from"../../../../../business/nav-bar/variants/basic-nav-bar/runtime/channel-filter-dialog.mjs";import{Popover as m}from"../../../../../../ui/legacy/popover.mjs";import{Mask as h}from"../../../../../../ui/mask.mjs";import{clsx as g}from"clsx";import{usePathname as _}from"next/navigation";import{useEffect as v,useMemo as y,useRef as b,useState as x}from"react";import{useIsClient as S}from"foxact/use-is-client";import{jsx as C,jsxs as w}from"react/jsx-runtime";const T={overscrollBehavior:`contain`},E={},D=[];function O(e,t){return t===0?`/`:`${l.CHANNEL}/${encodeURIComponent(e.cn_name)}`}function k(e,t,n){return g(`w-full leading-[58px] px-[20px] text-[16px] text-text2 border-t border-solid border-line1 transition-all duration-150 block`,e===0&&`border-t-0`,t&&`!text-[20px] !text-theme5 !font-bold`,n&&`!text-(--color-theme5)`)}function A(e){let t=e;try{t=decodeURIComponent(e)}catch{t=e}return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function j(e){e.stopPropagation()}function M({props:l=E,styles:g,events:M,data:N=D}){let{logoAlt:P,logoWidth:F,logoHeight:I,popoverPlacement:L,popoverWidth:R,maxHeight:z,itemHeight:B,currentChannelId:V,pageKey:H=`home`,pageName:U=`首页`}={...d,...l},[W,G]=x(!1),K=b(null),q=_(),[J,Y]=x(V??null),X=S(),Z=(e,t)=>{Y(e.id),M?.onChannelChange?.(e,t),setTimeout(()=>{G(!1)},150)};v(()=>{if(V||!q||N.length===0)return;let e=A(q),t=N.find((t,n)=>A(O(t,n))===e);t?Y(t.id):e===`/`&&Y(N[0]?.id||null)},[q,X,N,V]);let Q=y(()=>{if(!X||!W)return N;let e=p();return N.filter(t=>!e.includes(t.id))},[N,X,W]);v(()=>{if(W)return t(),()=>{n()}},[W]);let $=g?e(g,{}):{},ee={width:r(R),maxHeight:r(z),...T};return w(o,{style:$,className:`leading-0 flex items-center`,children:[C(h,{visible:W,onMaskClick:()=>{G(!1)}}),C(m,{placement:L,visible:W,content:C(o,{as:`nav`,className:`overflow-y-auto overscroll-contain`,style:ee,onTouchMove:j,children:Q.map((e,t)=>{let n=O(e,t),i=A(q||``)===A(n);return C(c,{href:n,className:k(t,J===e.id,i),style:{height:r(B)},onClick:()=>Z(e,t),children:e.cn_name},e.id||`channel-${t}`)})}),children:C(s,{ref:K,as:`h1`,className:`flex items-center`,children:C(u,{onClick:()=>{i(H,U,null,`logo`),G(e=>!e),M?.onClick?.()},className:`!m-0 !p-0`,children:C(a,{alt:P,src:typeof f==`string`?f:f.src,width:F,height:I})})},`logo-button`)})]})}export{M as default};
@@ -30,6 +30,10 @@ interface AdsMatchExtData {
30
30
  * 展示数量。
31
31
  */
32
32
  displayCount?: number;
33
+ /**
34
+ * 视频分辨率。
35
+ */
36
+ resolution?: string;
33
37
  }
34
38
  /**
35
39
  * 构建广告匹配请求体。
@@ -77,6 +81,9 @@ declare function adaptPopupAdMaterials(matchData?: AdsMatchResponseData | null):
77
81
  title: string;
78
82
  jumpUrl: string;
79
83
  materialUrl: string;
84
+ advertiseType: number;
85
+ videoUrl: string;
86
+ resolution: string;
80
87
  desc: string;
81
88
  }[];
82
89
  //#endregion
@@ -1,2 +1,2 @@
1
1
 
2
- function e(e){return{...e}}function t(e){let t=e?.adExtData;if(!t)return{};try{let e=JSON.parse(t);return typeof e==`object`&&e?e:{}}catch{return{}}}function n(e){return[...e??[]].sort((e,t)=>Number(e?.sort??0)-Number(t?.sort??0))}function r(e){return!!(e?.hit&&Array.isArray(e.materials)&&e.materials.length>0)}function i(e){return n(e?.materials).filter(e=>e.advertiseIcon&&e.advertiseUrl).map(e=>({id:e.advertiseCode||``,materialUrl:e.advertiseIcon||``,jumpUrl:e.advertiseUrl||``,name:e.advertiseName||``}))}function a(e){let r=n(e?.materials).filter(e=>e.advertiseIcon&&e.advertiseUrl).map(e=>{let n=t(e);return{id:e.advertiseCode||``,title:n.title||e.advertiseName||``,icon:e.advertiseIcon||``,jumpUrl:e.advertiseUrl||``,badgeText:`广告`}}).filter(e=>e.title&&e.icon&&e.jumpUrl);return{displayCount:l(e?.config,r.length),items:r}}function o(e){let t=n(e?.materials).map(e=>({id:e.advertiseCode||``,text:e.advertiseName||e.advertiseDesc||``,jumpUrl:e.advertiseUrl||``})).filter(e=>e.text);return{displayCount:l(e?.config,t.length),items:t}}function s(e){let r=n(e?.materials).filter(e=>e.advertiseIcon&&e.advertiseUrl),i=r.map(e=>{let n=t(e);return{id:e.advertiseCode||``,coverUrl:e.advertiseIcon||``,jumpUrl:e.advertiseUrl||``,title:n.title||e.advertiseName||``}}).filter(e=>e.coverUrl&&e.jumpUrl);return{displayCount:l(e?.config,i.length),switchInterval:u(e?.config,r),styleSize:d(e?.config,r),items:i}}function c(e){return n(e?.materials).map(e=>{let n=t(e);return{id:e.advertiseCode||``,title:n.title||e.advertiseName||``,jumpUrl:e.advertiseUrl||``,materialUrl:e.advertiseIcon||``,desc:e.advertiseDesc||``}}).filter(e=>e.id&&e.materialUrl&&e.jumpUrl)}function l(e,t=0){let n=Number(e?.displayCount??t);return!Number.isFinite(n)||n<=0?t:Math.min(Math.floor(n),t)}function u(e,n){let r=t(n?.[0]),i=Number(e?.switchInterval??r.switchInterval??3e3);return!Number.isFinite(i)||i<=0?3e3:i}function d(e,n){let r=t(n?.[0]),i=String(e?.styleSize??r.styleSize??`large`);return i===`700x400`||i===`700x200`||i===`720x150`||i===`720x300`?i:i===`small`?`720x150`:i===`medium`?`700x200`:`700x400`}export{s as adaptBannerAdProps,i as adaptFloatingAdItems,a as adaptIconAdProps,c as adaptPopupAdMaterials,o as adaptTextAdProps,e as buildAdsMatchRequest,r as hasMatchedAds,t as parseAdsMatchExtData,n as sortAdsMatchMaterials};
2
+ function e(e){return{...e}}function t(e){let t=e?.adExtData;if(!t)return{};try{let e=JSON.parse(t);return typeof e==`object`&&e?e:{}}catch{return{}}}function n(e){return[...e??[]].sort((e,t)=>Number(e?.sort??0)-Number(t?.sort??0))}function r(e){return!!(e?.hit&&Array.isArray(e.materials)&&e.materials.length>0)}function i(e){return n(e?.materials).filter(e=>e.advertiseIcon&&e.advertiseUrl).map(e=>({id:e.advertiseCode||``,materialUrl:e.advertiseIcon||``,jumpUrl:e.advertiseUrl||``,name:e.advertiseName||``}))}function a(e){let r=n(e?.materials).filter(e=>e.advertiseIcon&&e.advertiseUrl).map(e=>{let n=t(e);return{id:e.advertiseCode||``,title:n.title||e.advertiseName||``,icon:e.advertiseIcon||``,jumpUrl:e.advertiseUrl||``,badgeText:`广告`}}).filter(e=>e.title&&e.icon&&e.jumpUrl);return{displayCount:l(e?.config,r.length),items:r}}function o(e){let t=n(e?.materials).map(e=>({id:e.advertiseCode||``,text:e.advertiseName||e.advertiseDesc||``,jumpUrl:e.advertiseUrl||``})).filter(e=>e.text);return{displayCount:l(e?.config,t.length),items:t}}function s(e){let r=n(e?.materials).filter(e=>e.advertiseIcon&&e.advertiseUrl),i=r.map(e=>{let n=t(e);return{id:e.advertiseCode||``,coverUrl:e.advertiseIcon||``,jumpUrl:e.advertiseUrl||``,title:n.title||e.advertiseName||``}}).filter(e=>e.coverUrl&&e.jumpUrl);return{displayCount:l(e?.config,i.length),switchInterval:u(e?.config,r),styleSize:d(e?.config,r),items:i}}function c(e){return n(e?.materials).map(e=>{let n=t(e);return{id:e.advertiseCode||``,title:n.title||e.advertiseName||``,jumpUrl:e.advertiseUrl||``,materialUrl:e.advertiseIcon||``,advertiseType:Number(e.advertiseType??1),videoUrl:e.advertiseVideo||``,resolution:n.resolution||``,desc:e.advertiseDesc||``}}).filter(e=>e.id&&(e.materialUrl||e.videoUrl)&&e.jumpUrl)}function l(e,t=0){let n=Number(e?.displayCount??t);return!Number.isFinite(n)||n<=0?t:Math.min(Math.floor(n),t)}function u(e,n){let r=t(n?.[0]),i=Number(e?.switchInterval??r.switchInterval??3e3);return!Number.isFinite(i)||i<=0?3e3:i}function d(e,n){let r=t(n?.[0]),i=String(e?.styleSize??r.styleSize??`large`);return i===`700x400`||i===`700x200`||i===`720x150`||i===`720x300`?i:i===`small`?`720x150`:i===`medium`?`700x200`:`700x400`}export{s as adaptBannerAdProps,i as adaptFloatingAdItems,a as adaptIconAdProps,c as adaptPopupAdMaterials,o as adaptTextAdProps,e as buildAdsMatchRequest,r as hasMatchedAds,t as parseAdsMatchExtData,n as sortAdsMatchMaterials};
@@ -1,5 +1,5 @@
1
1
 
2
- "use client";import{trackAdClick as e,trackAdImpression as t,trackAdvertising as n}from"../../../../../utils/tracking.mjs";import{Button as r}from"../../../../ui/button.mjs";import{Image as i}from"../../../../ui/image.mjs";import{Box as a}from"../../../../ui/box.mjs";import{Dialog as o,DialogContent as s}from"../../../../ui/dialog.mjs";import c from"../../../../ui/link.mjs";import{adaptPopupAdMaterials as l,hasMatchedAds as u}from"../ad-match.mjs";import{useAdProvider as d}from"../ad-provider.mjs";import{useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";const v=[{id:`popup-ad-1`,title:`弹窗广告标题`,jumpUrl:`/search`,materialUrl:`/static/components-resource/banner.png`,desc:`这里是弹窗广告描述`}];function y(e,t){return Array.isArray(e)&&e.length>0?e:t??[]}function b({items:b,mode:x=`renderer`,pageKey:S=`home`,pageName:C=`首页`}){let w=d(),T=p(()=>u(w?.matchData)?l(w?.matchData):x===`editor`?y(b,v):b??[],[w?.matchData,x,b]),[E,D]=h(0),[O,k]=h(!1),A=m(null),j=w?.matchData?.advertiseLocationCode||`home_popup`;f(()=>{D(0)},[T]),f(()=>{k(!1)},[E,T]),f(()=>()=>{A.current&&window.clearTimeout(A.current)},[]);let M=T[E];f(()=>{M?.id&&t({page_key:S,page_name:C,ad_slot_key:j,ad_slot_name:`弹窗广告`,ad_id:M.id,ad_type:`pop-ups-600800`})},[M?.id,j,S,C]);function N(){D(e=>e+1)}function P(){O||(k(!0),A.current&&window.clearTimeout(A.current),A.current=window.setTimeout(()=>{A.current=null,N()},260))}function F(e){e||P()}function I(){M?.id&&e({page_key:S,page_name:C,ad_slot_key:j,ad_slot_name:`弹窗广告`,ad_id:M.id,ad_type:`pop-ups-600800`})}function L(){M?.id&&(n({event_type:`close`,advertising_key:j,advertising_name:`弹窗广告`,advertising_id:M.id}),P())}return M?g(o,{open:!0,onOpenChange:F,disablePointerDismissal:!0,children:_(s,{showCloseButton:!1,className:`w-[320px] max-w-[calc(100vw-32px)] border-none bg-transparent p-0 shadow-none`,children:[_(a,{className:`flex flex-col items-center gap-[24px]`,style:{animation:O?`funhub-popup-ad-exit 260ms cubic-bezier(0.4, 0, 0.2, 1) both`:`funhub-popup-ad-enter 420ms cubic-bezier(0.2, 0.9, 0.2, 1) both, funhub-popup-ad-float 3.2s ease-in-out 420ms infinite`,transformOrigin:`center bottom`},children:[g(c,{href:M.jumpUrl,className:`block w-full overflow-hidden rounded-[20px] bg-[#434343]`,style:{boxShadow:`0 18px 48px rgba(0, 0, 0, 0.26)`},onClick:I,children:g(a,{className:`w-full overflow-hidden bg-[#434343]`,children:g(i,{src:M.materialUrl,alt:M.title||`弹窗广告`,width:1200,height:1600,className:`block w-full h-auto`,unoptimized:!0})})}),g(r,{type:`button`,"aria-label":`关闭弹窗广告`,variant:`ghost`,size:`icon-lg`,className:`relative h-[54px] w-[54px] rounded-full border-[3px] border-white bg-transparent p-0 text-white hover:bg-white/8`,onClick:L,style:{animation:O?`funhub-popup-ad-close-exit 260ms ease-out both`:`funhub-popup-ad-close-breathe 2.4s ease-in-out 480ms infinite`},children:_(a,{className:`relative h-[24px] w-[24px]`,children:[g(a,{className:`absolute left-1/2 top-1/2 h-[4px] w-full -translate-x-1/2 -translate-y-1/2 rotate-45 rounded-full bg-current`}),g(a,{className:`absolute left-1/2 top-1/2 h-[4px] w-full -translate-x-1/2 -translate-y-1/2 -rotate-45 rounded-full bg-current`})]})})]},M.id),g(`style`,{children:`
2
+ "use client";import{trackAdClick as e,trackAdImpression as t,trackAdvertising as n}from"../../../../../utils/tracking.mjs";import{Button as r}from"../../../../ui/button.mjs";import{Image as i}from"../../../../ui/image.mjs";import{Box as a}from"../../../../ui/box.mjs";import{Dialog as o,DialogContent as s}from"../../../../ui/dialog.mjs";import c from"../../../../ui/link.mjs";import l from"../../../../common/video-player/index.mjs";import{adaptPopupAdMaterials as u,hasMatchedAds as d}from"../ad-match.mjs";import{useAdProvider as f}from"../ad-provider.mjs";import{useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";const y=[{id:`popup-ad-1`,title:`弹窗广告标题`,jumpUrl:`/search`,materialUrl:`/static/components-resource/banner.png`,desc:`这里是弹窗广告描述`}];function b(e,t){return Array.isArray(e)&&e.length>0?e:t??[]}function x(e){return Number(e?.advertiseType)===2&&!!e?.videoUrl}function S(e){return e?.resolution||`1080x1920`}function C({items:C,mode:w=`renderer`,pageKey:T=`home`,pageName:E=`首页`}){let D=f(),O=m(()=>d(D?.matchData)?u(D?.matchData):w===`editor`?b(C,y):C??[],[D?.matchData,w,C]),[k,A]=g(0),[j,M]=g(!1),N=h(null),P=D?.matchData?.advertiseLocationCode||`home_popup`;p(()=>{A(0)},[O]),p(()=>{M(!1)},[k,O]),p(()=>()=>{N.current&&window.clearTimeout(N.current)},[]);let F=O[k],I=x(F);p(()=>{F?.id&&t({page_key:T,page_name:E,ad_slot_key:P,ad_slot_name:`弹窗广告`,ad_id:F.id,ad_type:`pop-ups-600800`})},[F?.id,P,T,E]);function L(){A(e=>e+1)}function R(){j||(M(!0),N.current&&window.clearTimeout(N.current),N.current=window.setTimeout(()=>{N.current=null,L()},260))}function z(e){e||R()}function B(){F?.id&&e({page_key:T,page_name:E,ad_slot_key:P,ad_slot_name:`弹窗广告`,ad_id:F.id,ad_type:`pop-ups-600800`})}function V(){F?.id&&(n({event_type:`close`,advertising_key:P,advertising_name:`弹窗广告`,advertising_id:F.id}),R())}return F?_(o,{open:!0,onOpenChange:z,disablePointerDismissal:!0,children:v(s,{showCloseButton:!1,className:`w-[320px] max-w-[calc(100vw-32px)] border-none bg-transparent p-0 shadow-none`,children:[v(a,{className:`flex flex-col items-center gap-[24px]`,style:{animation:j?`funhub-popup-ad-exit 260ms cubic-bezier(0.4, 0, 0.2, 1) both`:`funhub-popup-ad-enter 420ms cubic-bezier(0.2, 0.9, 0.2, 1) both, funhub-popup-ad-float 3.2s ease-in-out 420ms infinite`,transformOrigin:`center bottom`},children:[_(a,{className:`w-full overflow-hidden rounded-[20px] bg-[#434343]`,style:{boxShadow:`0 18px 48px rgba(0, 0, 0, 0.26)`},onClick:B,children:I?v(a,{className:`w-full bg-black`,children:[_(a,{className:`relative aspect-[9/16] w-full overflow-hidden bg-black`,children:_(l,{plyerId:`popup-ad-${F.id}`,resolution:S(F),poster:F.materialUrl||``,videoUrl:F.videoUrl||``,mergeConfig:{fitVideoSize:`fixWidth`,autoplayMuted:!0}})}),F.jumpUrl?_(a,{className:`p-4 pt-3`,children:_(c,{href:F.jumpUrl,className:`block rounded-[14px] bg-white px-4 py-3 text-center text-sm font-medium text-black`,children:F.title||`查看详情`})}):null]}):_(c,{href:F.jumpUrl,className:`block w-full overflow-hidden bg-[#434343]`,children:_(a,{className:`w-full overflow-hidden bg-[#434343]`,children:_(i,{src:F.materialUrl,alt:F.title||`弹窗广告`,width:1200,height:1600,className:`block w-full h-auto`,unoptimized:!0})})})}),_(r,{type:`button`,"aria-label":`关闭弹窗广告`,variant:`ghost`,size:`icon-lg`,className:`relative h-[54px] w-[54px] rounded-full border-[3px] border-white bg-transparent p-0 text-white hover:bg-white/8`,onClick:V,style:{animation:j?`funhub-popup-ad-close-exit 260ms ease-out both`:`funhub-popup-ad-close-breathe 2.4s ease-in-out 480ms infinite`},children:v(a,{className:`relative h-[24px] w-[24px]`,children:[_(a,{className:`absolute left-1/2 top-1/2 h-[4px] w-full -translate-x-1/2 -translate-y-1/2 rotate-45 rounded-full bg-current`}),_(a,{className:`absolute left-1/2 top-1/2 h-[4px] w-full -translate-x-1/2 -translate-y-1/2 -rotate-45 rounded-full bg-current`})]})})]},F.id),_(`style`,{children:`
3
3
  @keyframes funhub-popup-ad-enter {
4
4
  0% {
5
5
  opacity: 0;
@@ -61,4 +61,4 @@
61
61
  animation-iteration-count: 1 !important;
62
62
  }
63
63
  }
64
- `})]})}):null}export{b as PopupAd};
64
+ `})]})}):null}export{C as PopupAd};
@@ -17,6 +17,9 @@ declare const popupAdMaterial: DefineMaterialOption<typeof PopupAdServer, typeof
17
17
  title: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
18
18
  jumpUrl: zod.ZodString & SchemaHasDefaultValue;
19
19
  materialUrl: zod.ZodString & SchemaHasDefaultValue;
20
+ advertiseType: zod.ZodOptional<zod.ZodNumber> & SchemaHasDefaultValue;
21
+ videoUrl: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
22
+ resolution: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
20
23
  desc: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
21
24
  }, zod_v4_core0.$strip>>>;
22
25
  } & {
@@ -13,6 +13,9 @@ interface PopupAdItem {
13
13
  title?: string;
14
14
  jumpUrl: string;
15
15
  materialUrl: string;
16
+ advertiseType?: number;
17
+ videoUrl?: string;
18
+ resolution?: string;
16
19
  desc?: string;
17
20
  }
18
21
  /**
@@ -24,6 +27,9 @@ declare const popupAdInspectorPropsSchema: z$1.ZodObject<{
24
27
  title: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
25
28
  jumpUrl: z$1.ZodString & SchemaHasDefaultValue;
26
29
  materialUrl: z$1.ZodString & SchemaHasDefaultValue;
30
+ advertiseType: z$1.ZodOptional<z$1.ZodNumber> & SchemaHasDefaultValue;
31
+ videoUrl: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
32
+ resolution: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
27
33
  desc: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
28
34
  }, z$1.core.$strip>>>;
29
35
  } & {
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({items:e.array(n.object({id:e.string(`popup-ad-1`,{label:`广告 ID`,required:!0}),title:e.string(`弹窗广告标题`,{label:`标题`,required:!1}),jumpUrl:e.string(`/search`,{label:`跳转链接`,required:!0}),materialUrl:e.string(`/static/components-resource/banner.png`,{label:`素材地址`,required:!0}),desc:e.string(`这里是弹窗广告描述`,{label:`描述`,required:!1})}),{label:`广告列表`,required:!1})})),i=t(r);export{i as popupAdInspectorDefaultProps,r as popupAdInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({items:e.array(n.object({id:e.string(`popup-ad-1`,{label:`广告 ID`,required:!0}),title:e.string(`弹窗广告标题`,{label:`标题`,required:!1}),jumpUrl:e.string(`/search`,{label:`跳转链接`,required:!0}),materialUrl:e.string(`/static/components-resource/banner.png`,{label:`素材地址`,required:!0}),advertiseType:e.number(1,{label:`广告类型`,required:!1}),videoUrl:e.string(``,{label:`视频地址`,required:!1}),resolution:e.string(`1080x1920`,{label:`视频分辨率`,required:!1}),desc:e.string(`这里是弹窗广告描述`,{label:`描述`,required:!1})}),{label:`广告列表`,required:!1})})),i=t(r);export{i as popupAdInspectorDefaultProps,r as popupAdInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{mergeStyles as e}from"../../utils/styles/helpers.mjs";import{trackAppPageView as t,trackPageClick as n}from"../../../../utils/tracking.mjs";import{Box as r}from"../../../ui/box.mjs";import i from"../../../ui/link.mjs";import{urlPrefix as a}from"../../../../constants/url-prefix.mjs";import{useSticky as o}from"../../../../hooks/use-sticky.mjs";import s from"../../../../assets/icons/channel-list/channel-active-indicator.mjs";import c from"../../../../assets/icons/common/header-menu.mjs";import l,{loadHiddenChannelIdsFromStorage as u}from"./channel-filter-dialog.mjs";import{defaultProps as d}from"./default-props.mjs";import{clsx as f}from"clsx";import{useEffect as p,useMemo as m,useState as h}from"react";import{usePathname as g}from"next/navigation";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";const x={},S=`h-[44px]`;function C(e,t){let n=`${a.DOMAIN}/`,r=t.indexOf(n),i=r!==-1,o=i?t.slice(r+n.length).split(`/`)[0]:void 0;return e.isDefault?i&&o?`${a.DOMAIN}/${o}`:`/`:i&&o?`${a.DOMAIN}/${o}/${encodeURIComponent(e.name)}`:`${a.CHANNEL}/${encodeURIComponent(e.name)}`}function w(a){let w=b(`components.biz.business.navBar.variants.basicNavBar.runtime`),{mode:T=`renderer`,styles:E,events:D,...O}=a,k=g()??`/`,A=T===`editor`,j=O||x,M={...d,...j},[N,P]=h(!1),{isSticky:F,ref:I}=o(),[L,R]=h(!1),[z,B]=h(M.list),V=m(()=>M.list.find(e=>e.isDefault)?.name??null,[M.list]),H=m(()=>M.currentChannelId??V,[M.currentChannelId,V]);p(()=>{H&&t({page_key:`page_home_channel_${H}`,page_name:`首页频道-${H}`})},[H]),p(()=>{let e=u();B(e?.length?M.list.filter(t=>!e.includes(t.name)):M.list)},[M.list]);let U=e=>{B(e)},W=(e,t)=>{n(`home`,`首页`,null,`channel_tab`,{channel_name:e.name}),D?.onChannelChange?.(e,t)},G=E?e(E,{}):void 0,K=()=>{P(!0),D?.onFilterClick?.()};return p(()=>{let e=()=>{let e=window.scrollY??document.documentElement.scrollTop??0,t=window.innerHeight,n=document.documentElement.scrollHeight;R(e+t>=n-1)};return window.addEventListener(`scroll`,e,{passive:!0}),e(),()=>{window.removeEventListener(`scroll`,e)}},[]),y(_,{children:[F&&v(r,{className:f(`w-full`,S)}),v(r,{as:`nav`,ref:I,className:f(`w-full bg-transparent transition-all duration-200`,A&&`pointer-events-none`,F&&`fixed top-0 left-0 right-0 z-50`),style:G,children:y(r,{className:f(`relative flex w-full items-center py-2 no-vw-x-16`,S,M.modifiable&&`gap-2`),children:[v(r,{className:`[-webkit-overflow-scrolling:touch] [-ms-overflow-style:none] [scrollbar-width:none] flex h-full min-w-0 flex-1 items-center overflow-x-auto overflow-y-hidden [&::-webkit-scrollbar]:hidden`,children:v(r,{className:`inline-flex h-full min-w-full items-center gap-[23.8px]`,children:z.map((e,t)=>{let n=H===e.name||H===null&&t===0;return v(i,{href:C(e,k),webviewNavMode:`spa`,className:f(`group relative inline-flex h-full shrink-0 cursor-pointer whitespace-nowrap transition-all duration-200`,n?`text-white`:`text-white/70`),onClick:()=>W(e,t),children:n?y(r,{className:`inline-grid grid-cols-1 grid-rows-1 place-items-start h-[24px]`,children:[v(r,{as:`span`,className:`relative z-[1] block h-[24px] text-center text-[20px] font-['PingFang_SC'] font-semibold leading-[24px] text-white transition-all duration-200`,children:e.name}),v(r,{"aria-hidden":`true`,className:`col-start-1 row-start-1 ml-px mt-[15px] h-[11px] w-[39px]`,children:v(s,{className:`block h-full w-full`})})]}):v(r,{className:`inline-flex h-full items-center`,children:v(r,{as:`span`,className:`block h-[24px] text-center text-[16px] font-['PingFang_SC'] font-normal leading-[24px] transition-all duration-200`,children:e.name})})},e.name||`channel-${t}`)})})}),M.modifiable?v(`button`,{type:`button`,"aria-label":w(`moreChannelEntry`),className:`relative flex size-6 shrink-0 items-center justify-center border-0 bg-transparent p-0`,onClick:K,children:v(c,{"aria-hidden":`true`,className:`h-[24px] w-[24px] text-white`})}):null]})}),v(l,{open:N,onOpenChange:P,channels:M.list,currentChannelId:H,onChannelClick:W,onChannelsChange:U})]})}export{w as default};
2
+ "use client";import{mergeStyles as e}from"../../utils/styles/helpers.mjs";import{trackAppPageView as t,trackPageClick as n}from"../../../../utils/tracking.mjs";import{Box as r}from"../../../ui/box.mjs";import i from"../../../ui/link.mjs";import{urlPrefix as a}from"../../../../constants/url-prefix.mjs";import{useSticky as o}from"../../../../hooks/use-sticky.mjs";import s from"../../../../assets/icons/channel-list/channel-active-indicator.mjs";import c from"../../../../assets/icons/common/header-menu.mjs";import l,{loadHiddenChannelIdsFromStorage as u}from"./channel-filter-dialog.mjs";import{defaultProps as d}from"./default-props.mjs";import{clsx as f}from"clsx";import{usePathname as p}from"next/navigation";import{useEffect as m,useMemo as h,useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";const x={},S=`h-[44px]`;function C(e,t){let n=`${a.DOMAIN}/`,r=t.indexOf(n),i=r!==-1,o=i?t.slice(r+n.length).split(`/`)[0]:void 0;return e.isDefault?i&&o?`${a.DOMAIN}/${o}`:`/`:i&&o?`${a.DOMAIN}/${o}/${encodeURIComponent(e.name)}`:`${a.CHANNEL}/${encodeURIComponent(e.name)}`}function w(a){let w=b(`components.biz.business.navBar.variants.basicNavBar.runtime`),{mode:T=`renderer`,styles:E,events:D,...O}=a,k=p()??`/`,A=T===`editor`,j=O||x,M={...d,...j},[N,P]=g(!1),{isSticky:F,ref:I}=o(),[L,R]=g(!1),[z,B]=g(M.list),V=h(()=>M.list.find(e=>e.isDefault)?.name??null,[M.list]),H=h(()=>M.currentChannelId??V,[M.currentChannelId,V]);m(()=>{H&&t({page_key:`page_home_channel_${H}`,page_name:`首页频道-${H}`})},[H]),m(()=>{let e=u();B(e?.length?M.list.filter(t=>!e.includes(t.name)):M.list)},[M.list]);let U=e=>{B(e)},W=(e,t)=>{n(`home`,`首页`,null,`channel_tab`,{channel_name:e.name}),D?.onChannelChange?.(e,t)},G=E?e(E,{}):void 0,K=()=>{P(!0),D?.onFilterClick?.()};return m(()=>{let e=()=>{let e=window.scrollY??document.documentElement.scrollTop??0,t=window.innerHeight,n=document.documentElement.scrollHeight;R(e+t>=n-1)};return window.addEventListener(`scroll`,e,{passive:!0}),e(),()=>{window.removeEventListener(`scroll`,e)}},[]),y(_,{children:[F&&v(r,{className:f(`w-full`,S)}),v(r,{as:`nav`,ref:I,className:f(`w-full bg-transparent transition-all duration-200`,A&&`pointer-events-none`,F&&`fixed top-0 left-0 right-0 z-50`),style:G,children:y(r,{className:f(`relative flex w-full items-center py-2 no-vw-x-16`,S,M.modifiable&&`gap-2`),children:[v(r,{className:`[-webkit-overflow-scrolling:touch] [-ms-overflow-style:none] [scrollbar-width:none] flex h-full min-w-0 flex-1 items-center overflow-x-auto overflow-y-hidden [&::-webkit-scrollbar]:hidden`,children:v(r,{className:`inline-flex h-full min-w-full items-center gap-[23.8px]`,children:z.map((e,t)=>{let n=H===e.name||H===null&&t===0;return v(i,{href:C(e,k),webviewNavMode:`spa`,className:f(`group relative inline-flex h-full shrink-0 cursor-pointer whitespace-nowrap transition-all duration-200`,n?`text-white`:`text-white/70`),onClick:()=>W(e,t),children:n?y(r,{className:`inline-grid grid-cols-1 grid-rows-1 place-items-start h-[24px]`,children:[v(r,{as:`span`,className:`relative z-[1] block h-[24px] text-center text-[20px] font-['PingFang_SC'] font-semibold leading-[24px] text-white transition-all duration-200`,children:e.name}),v(r,{"aria-hidden":`true`,className:`col-start-1 row-start-1 ml-px mt-[15px] h-[11px] w-[39px]`,children:v(s,{className:`block h-full w-full`})})]}):v(r,{className:`inline-flex h-full items-center`,children:v(r,{as:`span`,className:`block h-[24px] text-center text-[16px] font-['PingFang_SC'] font-normal leading-[24px] transition-all duration-200`,children:e.name})})},e.name||`channel-${t}`)})})}),M.modifiable?v(`button`,{type:`button`,"aria-label":w(`moreChannelEntry`),className:`relative flex size-6 shrink-0 items-center justify-center border-0 bg-transparent p-0`,onClick:K,children:v(c,{"aria-hidden":`true`,className:`h-[24px] w-[24px] text-white`})}):null]})}),v(l,{open:N,onOpenChange:P,channels:M.list,currentChannelId:H,onChannelClick:W,onChannelsChange:U})]})}export{w as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{formatCompactCount as e}from"../../../../../utils/common.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as n}from"../../../../../service/generated/client.mjs";import{trackPageClick as r}from"../../../../../utils/tracking.mjs";import{Box as i}from"../../../../ui/box.mjs";import{Text as a}from"../../../../ui/text.mjs";import{useLoginModalStore as o}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as s}from"../../../../../hooks/query/use-query.mjs";import c from"../../../../common/interaction-animations.module.mjs";import l from"../../../../common/collection-popup/index.mjs";import u from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as ee}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as d}from"../../../../../hooks/use-content-operate.mjs";import te from"../../../../../assets/icons/detail/check-ok.mjs";import{toast as f}from"sonner";import{useCallback as p,useEffect as m,useMemo as h,useRef as g,useState as _}from"react";import{usePathname as v,useSearchParams as ne}from"next/navigation";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";function re({className:e}){return y(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:y(`path`,{d:`M21.2121 6.89394C21.2121 4.25805 19.0753 2.12121 16.4394 2.12121C14.8261 2.12121 13.3991 2.92114 12.5336 4.15024C12.3349 4.4321 12.0115 4.59976 11.6667 4.59976C11.3218 4.59976 10.9984 4.4321 10.7997 4.15024C9.93421 2.92114 8.50725 2.12121 6.89394 2.12121C4.25804 2.12121 2.12121 4.25805 2.12121 6.89394C2.12121 9.40321 3.62133 11.9321 5.72562 14.0572C7.68391 16.0348 10.0088 17.5016 11.6667 18.137C13.3246 17.5016 15.6494 16.0348 17.6077 14.0572C19.712 11.9321 21.2121 9.40321 21.2121 6.89394ZM23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function ie({className:e}){return y(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:y(`path`,{d:`M23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function ae({className:e}){return y(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:y(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06ZM9.37675 8.14386C9.22265 8.45841 8.92279 8.6767 8.57614 8.72697L3.33644 9.48615L7.1365 13.2013C7.38683 13.446 7.50059 13.799 7.43996 14.1438L6.54096 19.2509L11.1675 16.7859L11.2866 16.731C11.5714 16.6219 11.8921 16.6405 12.1649 16.7859L16.7946 19.253L15.9028 14.1427C15.8428 13.7988 15.9559 13.4467 16.2052 13.2023L20.0001 9.48511L14.7967 8.72697C14.4525 8.67672 14.155 8.46057 14.0002 8.14904L11.6719 3.45827L9.37675 8.14386Z`,fill:`currentColor`})})}function oe({className:e}){return y(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:y(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06Z`,fill:`currentColor`})})}function se({className:e}){return y(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:y(`path`,{d:`M11.7968 0.0846035C12.212 -0.0873746 12.69 0.00771373 13.0078 0.325488L23.0077 10.3254C23.22 10.5377 23.3375 10.8271 23.3332 11.1273C23.3288 11.4272 23.2029 11.7123 22.9849 11.9183L12.985 21.3627C12.6625 21.6673 12.1901 21.7509 11.7827 21.5754C11.3753 21.3998 11.1111 20.9991 11.1111 20.5554V15.6216C8.22953 15.9648 6.08879 17.6095 4.58982 19.3391C3.74967 20.3085 3.13167 21.2821 2.7246 22.0148C2.52173 22.38 2.37311 22.6823 2.27646 22.8894C2.22828 22.9927 2.19344 23.0722 2.17121 23.1238C2.16011 23.1495 2.15201 23.169 2.14734 23.1802C2.1451 23.1856 2.14372 23.1893 2.143 23.191C1.94502 23.6852 1.42342 23.9699 0.900603 23.8692C0.377728 23.7684 0 23.3102 0 22.7776C0 17.9877 0.696606 13.8374 2.60632 10.8582C4.41013 8.04448 7.21019 6.40446 11.1111 6.14686V1.11107C11.1111 0.661725 11.3817 0.256615 11.7968 0.0846035ZM13.3333 7.22216C13.3333 7.8358 12.8358 8.33326 12.2222 8.33326C8.37436 8.33326 5.97849 9.71592 4.47697 12.0583C3.44269 13.6719 2.79177 15.8074 2.46852 18.4168C2.60946 18.2401 2.75584 18.061 2.91014 17.8829C4.8356 15.6613 7.89407 13.3332 12.2222 13.3332C12.8358 13.3332 13.3333 13.8307 13.3333 14.4443V17.9773L20.6282 11.0882L13.3333 3.79335V7.22216Z`,fill:`currentColor`})})}function S({mode:S=`renderer`,information:E,onUpdate:D}){let O=S===`editor`||!E?.id||E.id.startsWith(`preview-`),k=`${v()}?${ne()?.toString()||``}`,A=g(k),j=x(`components.biz.business.detail`),M=ee(),N=h(()=>w(E),[E]),P=h(()=>T(E),[E]),[F,I]=_(!1),[L,R]=_(!1),z=g(0),B=g(0),V=t(e=>e.userId),H=t(e=>e.isLogin),U=s();m(()=>{A.current!==k&&(u.clear(),A.current=k)},[k]),m(()=>()=>{u.clear()},[]);let W=p(()=>{V&&(U([`user-profile`,`mine`,V,`user-like-video`]),U([`user-profile`,`mine`,V,`user-like-post`]),U([`user-profile`,`mine`,V,`user-collect-video`,V]),U([`user-profile`,`mine`,V,`user-collect-post`,V]))},[U,V]),{likeAnimation:G,handleLikeOperate:K,handleDefaultCollectionOperate:q,handleShareOperate:J}=d({id:E.id,isLike:E.like||!1,isDislike:E.dislike||!1,isCollect:!!E.collect||!1,likeCnt:w(E),dislikeCnt:C(E.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!O,animationClasses:{like:c.likeShakeAnimation,dislike:c.dislikeShakeAnimation}}),Y=p(e=>{D?.({...e})},[D]),X=p(async()=>{if(F)return;if(!H){o.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,r(`page_video_detail`,`详情页`,null,`detail_like`,{object_id:E.id}),I(!0);let t=E.like||!1,n=E.dislike||!1,i=w(E),a=C(E.static?.dislike_cnt),s=!t,c=Math.max(0,i+(s?1:-1)),l=s?!1:n,u=s&&n?Math.max(0,a-1):a;Y({like:s,dislike:l,like_count:c,static:{...E.static,dislike_cnt:u}});try{let e=await K();if(!e){Y({like:t,dislike:n,like_count:i,static:{...E.static,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??l,like_count:e.likeCnt,static:{...E.static,dislike_cnt:e.dislikeCnt??u}}),W(),f.success(e.isLike?j(`detailOperate.likeSuccess`):j(`detailOperate.unlikeSuccess`)),window.sensors?.track?.(`detail_like_click`,{object_id:E.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),f.error(j(`detailOperate.likeFailed`))}finally{I(!1)}},[K,E,W,F,H,j,Y]),Z=h(()=>E.id,[E.id]),ce=p(()=>{r(`page_video_detail`,`详情页`,null,`detail_share`,{object_id:E.id}),J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y,E.id]),Q=p(()=>{l.show({mode:`select`,onCollect:async e=>{try{let t=await n({new_collection_id:e,content_id:E.id});if(t.code!==0)throw Error(t.message||j(`detailOperate.collectFailed`));Y({collect:!0}),W(),f.success(j(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),f.error(j(`detailOperate.collectFailed`))}}})},[E.id,W,j,Y]),$=p(e=>{let t=e||j(`detailOperate.defaultCollection`);f.custom(e=>b(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[b(`div`,{className:`flex items-center gap-[10px]`,children:[y(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:y(te,{className:`w-[14px] h-[14px]`})}),b(`div`,{className:`flex items-center gap-[6px]`,children:[y(`span`,{className:`text-[14px] leading-[20px]`,children:j(`detailOperate.collectAdded`)}),y(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),y(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{f.dismiss(e),Q()},children:j(`detailOperate.modifyCollection`)})]}))},[Q,j]),le=p(async()=>{if(L)return;if(!H){o.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e,r(`page_video_detail`,`详情页`,null,`detail_collect`,{object_id:E.id});let t=E.collect||!1,n=!t,i=T(E),a=Math.max(0,i+(n?1:-1));R(!0),Y({collect:n,collect_count:a}),n&&M.trigger(c.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t,collect_count:i}),f.error(e?.message||j(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n,collect_count:a}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&f.success(j(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t,collect_count:i}),console.error(`收藏操作失败:`,e),f.error(e?.message||j(`detailOperate.collectFailed`))}finally{R(!1)}},[M,q,E,W,L,H,$,j,Y]);return b(i,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${O?`pointer-events-none`:``}`,children:[b(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${F?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:X,children:[E.like?y(ie,{className:`size-[28px] text-[#FF5D8F] ${G.animationClass}`}):y(re,{className:`size-[28px] text-white`}),y(a,{className:`text-center text-[14px] leading-[22px] ${E.like?`text-[#FF5D8F]`:`text-white`}`,children:N>0?e(N):j(`detailOperate.like`)})]}),b(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:le,children:[E.collect?y(oe,{className:`size-[28px] text-[#FFC039] ${M.animationClass}`}):y(ae,{className:`size-[28px] text-white`}),y(a,{className:`text-center text-[14px] leading-[22px] ${E.collect?`text-[#FFC039]`:`text-white`}`,children:P>0?e(P):j(`detailOperate.collection`)})]}),b(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:ce,children:[y(se,{className:`size-[28px] text-white`}),y(a,{className:`text-center text-[14px] leading-[22px] text-white`,children:j(`detailOperate.share`)})]})]})}function C(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}function w(e){return C(e.like_count)}function T(e){return C(e.collect_count)}export{S as DetailOperate};
2
+ "use client";import{formatCompactCount as e}from"../../../../../utils/common.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{pCommunityMoveCollectionContent as n}from"../../../../../service/generated/client.mjs";import{trackPageClick as r}from"../../../../../utils/tracking.mjs";import{Box as i}from"../../../../ui/box.mjs";import{Text as a}from"../../../../ui/text.mjs";import{useLoginModalStore as o}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as s}from"../../../../../hooks/query/use-query.mjs";import c from"../../../../common/interaction-animations.module.mjs";import l from"../../../../common/collection-popup/index.mjs";import u from"../../../../common/share-popup/share-popup.mjs";import{useInteractionAnimation as ee}from"../../../../../hooks/use-interaction-animation.mjs";import{useContentOperate as d}from"../../../../../hooks/use-content-operate.mjs";import te from"../../../../../assets/icons/detail/check-ok.mjs";import{toast as f}from"sonner";import{usePathname as ne,useSearchParams as re}from"next/navigation";import{useCallback as p,useEffect as m,useMemo as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as ie}from"next-intl";function ae({className:e}){return v(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:v(`path`,{d:`M21.2121 6.89394C21.2121 4.25805 19.0753 2.12121 16.4394 2.12121C14.8261 2.12121 13.3991 2.92114 12.5336 4.15024C12.3349 4.4321 12.0115 4.59976 11.6667 4.59976C11.3218 4.59976 10.9984 4.4321 10.7997 4.15024C9.93421 2.92114 8.50725 2.12121 6.89394 2.12121C4.25804 2.12121 2.12121 4.25805 2.12121 6.89394C2.12121 9.40321 3.62133 11.9321 5.72562 14.0572C7.68391 16.0348 10.0088 17.5016 11.6667 18.137C13.3246 17.5016 15.6494 16.0348 17.6077 14.0572C19.712 11.9321 21.2121 9.40321 21.2121 6.89394ZM23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function oe({className:e}){return v(`svg`,{viewBox:`0 0 24 21`,fill:`none`,className:e,children:v(`path`,{d:`M23.3333 6.89394C23.3333 10.2178 21.3863 13.2566 19.1158 15.5497C16.8347 17.8533 14.0447 19.5915 12.0012 20.2706C11.7841 20.3428 11.5493 20.3428 11.3321 20.2706C9.28858 19.5915 6.4986 17.8533 4.21757 15.5497C1.94701 13.2566 0 10.2178 0 6.89394C0 3.08654 3.08652 0 6.89394 0C8.74758 0 10.4287 0.733771 11.6667 1.92235C12.9047 0.733771 14.5858 0 16.4394 0C20.2468 0 23.3333 3.08654 23.3333 6.89394Z`,fill:`currentColor`})})}function se({className:e}){return v(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:v(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06ZM9.37675 8.14386C9.22265 8.45841 8.92279 8.6767 8.57614 8.72697L3.33644 9.48615L7.1365 13.2013C7.38683 13.446 7.50059 13.799 7.43996 14.1438L6.54096 19.2509L11.1675 16.7859L11.2866 16.731C11.5714 16.6219 11.8921 16.6405 12.1649 16.7859L16.7946 19.253L15.9028 14.1427C15.8428 13.7988 15.9559 13.4467 16.2052 13.2023L20.0001 9.48511L14.7967 8.72697C14.4525 8.67672 14.155 8.46057 14.0002 8.14904L11.6719 3.45827L9.37675 8.14386Z`,fill:`currentColor`})})}function b({className:e}){return v(`svg`,{viewBox:`0 0 24 23`,fill:`none`,className:e,children:v(`path`,{d:`M11.6636 2.65236e-06C12.0673 -0.000898131 12.437 0.227705 12.6165 0.589326L15.6522 6.70732L22.4258 7.69539C22.8246 7.75364 23.1564 8.03302 23.2813 8.41625C23.4062 8.79955 23.3021 9.22064 23.0141 9.50272L18.0882 14.3261L19.2585 21.0292C19.3281 21.4283 19.1639 21.8323 18.836 22.0701C18.5077 22.3079 18.072 22.3385 17.7143 22.1478L11.6657 18.9226L5.61917 22.1478C5.26131 22.3386 4.82579 22.3082 4.49748 22.0701C4.16923 21.832 4.00582 21.4276 4.07595 21.0282L5.25356 14.3271L0.319396 9.50376C0.0308898 9.2217 -0.0728394 8.79987 0.0521809 8.41625C0.177201 8.03266 0.509448 7.7533 0.90872 7.69539L7.71753 6.70732L10.7139 0.593469L10.7884 0.464005C10.9835 0.177012 11.3103 0.000910321 11.6636 2.65236e-06Z`,fill:`currentColor`})})}function x({className:e}){return v(`svg`,{viewBox:`0 0 24 24`,fill:`none`,className:e,children:v(`path`,{d:`M11.7968 0.0846035C12.212 -0.0873746 12.69 0.00771373 13.0078 0.325488L23.0077 10.3254C23.22 10.5377 23.3375 10.8271 23.3332 11.1273C23.3288 11.4272 23.2029 11.7123 22.9849 11.9183L12.985 21.3627C12.6625 21.6673 12.1901 21.7509 11.7827 21.5754C11.3753 21.3998 11.1111 20.9991 11.1111 20.5554V15.6216C8.22953 15.9648 6.08879 17.6095 4.58982 19.3391C3.74967 20.3085 3.13167 21.2821 2.7246 22.0148C2.52173 22.38 2.37311 22.6823 2.27646 22.8894C2.22828 22.9927 2.19344 23.0722 2.17121 23.1238C2.16011 23.1495 2.15201 23.169 2.14734 23.1802C2.1451 23.1856 2.14372 23.1893 2.143 23.191C1.94502 23.6852 1.42342 23.9699 0.900603 23.8692C0.377728 23.7684 0 23.3102 0 22.7776C0 17.9877 0.696606 13.8374 2.60632 10.8582C4.41013 8.04448 7.21019 6.40446 11.1111 6.14686V1.11107C11.1111 0.661725 11.3817 0.256615 11.7968 0.0846035ZM13.3333 7.22216C13.3333 7.8358 12.8358 8.33326 12.2222 8.33326C8.37436 8.33326 5.97849 9.71592 4.47697 12.0583C3.44269 13.6719 2.79177 15.8074 2.46852 18.4168C2.60946 18.2401 2.75584 18.061 2.91014 17.8829C4.8356 15.6613 7.89407 13.3332 12.2222 13.3332C12.8358 13.3332 13.3333 13.8307 13.3333 14.4443V17.9773L20.6282 11.0882L13.3333 3.79335V7.22216Z`,fill:`currentColor`})})}function S({mode:S=`renderer`,information:E,onUpdate:D}){let O=S===`editor`||!E?.id||E.id.startsWith(`preview-`),k=`${ne()}?${re()?.toString()||``}`,A=g(k),j=ie(`components.biz.business.detail`),M=ee(),N=h(()=>w(E),[E]),P=h(()=>T(E),[E]),[F,I]=_(!1),[L,R]=_(!1),z=g(0),B=g(0),V=t(e=>e.userId),H=t(e=>e.isLogin),U=s();m(()=>{A.current!==k&&(u.clear(),A.current=k)},[k]),m(()=>()=>{u.clear()},[]);let W=p(()=>{V&&(U([`user-profile`,`mine`,V,`user-like-video`]),U([`user-profile`,`mine`,V,`user-like-post`]),U([`user-profile`,`mine`,V,`user-collect-video`,V]),U([`user-profile`,`mine`,V,`user-collect-post`,V]))},[U,V]),{likeAnimation:G,handleLikeOperate:K,handleDefaultCollectionOperate:q,handleShareOperate:J}=d({id:E.id,isLike:E.like||!1,isDislike:E.dislike||!1,isCollect:!!E.collect||!1,likeCnt:w(E),dislikeCnt:C(E.static?.dislike_cnt),contentType:1,prefetchDefaultCollection:!O,animationClasses:{like:c.likeShakeAnimation,dislike:c.dislikeShakeAnimation}}),Y=p(e=>{D?.({...e})},[D]),X=p(async()=>{if(F)return;if(!H){o.getState().open();return}let e=Date.now();if(e-z.current<300)return;z.current=e,r(`page_video_detail`,`详情页`,null,`detail_like`,{object_id:E.id}),I(!0);let t=E.like||!1,n=E.dislike||!1,i=w(E),a=C(E.static?.dislike_cnt),s=!t,c=Math.max(0,i+(s?1:-1)),l=s?!1:n,u=s&&n?Math.max(0,a-1):a;Y({like:s,dislike:l,like_count:c,static:{...E.static,dislike_cnt:u}});try{let e=await K();if(!e){Y({like:t,dislike:n,like_count:i,static:{...E.static,dislike_cnt:a}});return}Y({like:e.isLike,dislike:e.isDislike??l,like_count:e.likeCnt,static:{...E.static,dislike_cnt:e.dislikeCnt??u}}),W(),f.success(e.isLike?j(`detailOperate.likeSuccess`):j(`detailOperate.unlikeSuccess`)),window.sensors?.track?.(`detail_like_click`,{object_id:E.id,action:e.isLike?`点赞`:`取消点赞`,like_count:e.likeCnt})}catch(e){console.error(`点赞操作失败:`,e),f.error(j(`detailOperate.likeFailed`))}finally{I(!1)}},[K,E,W,F,H,j,Y]),Z=h(()=>E.id,[E.id]),ce=p(()=>{r(`page_video_detail`,`详情页`,null,`detail_share`,{object_id:E.id}),J(({isCollect:e})=>{Y({collect:e})},Z)},[J,Z,Y,E.id]),Q=p(()=>{l.show({mode:`select`,onCollect:async e=>{try{let t=await n({new_collection_id:e,content_id:E.id});if(t.code!==0)throw Error(t.message||j(`detailOperate.collectFailed`));Y({collect:!0}),W(),f.success(j(`detailOperate.modifyCollectionSuccess`))}catch(e){console.error(`修改收藏夹失败:`,e),f.error(j(`detailOperate.collectFailed`))}}})},[E.id,W,j,Y]),$=p(e=>{let t=e||j(`detailOperate.defaultCollection`);f.custom(e=>y(`div`,{className:`flex items-center justify-between gap-[16px] px-[16px] py-[12px] rounded-[12px] bg-black text-white shadow-lg min-w-[280px]`,children:[y(`div`,{className:`flex items-center gap-[10px]`,children:[v(`div`,{className:`w-[24px] h-[24px] rounded-full bg-white flex items-center justify-center`,children:v(te,{className:`w-[14px] h-[14px]`})}),y(`div`,{className:`flex items-center gap-[6px]`,children:[v(`span`,{className:`text-[14px] leading-[20px]`,children:j(`detailOperate.collectAdded`)}),v(`span`,{className:`text-[14px] leading-[20px] font-semibold`,children:t})]})]}),v(`button`,{type:`button`,className:`text-[14px] text-theme5 font-semibold`,onClick:()=>{f.dismiss(e),Q()},children:j(`detailOperate.modifyCollection`)})]}))},[Q,j]),le=p(async()=>{if(L)return;if(!H){o.getState().open();return}let e=Date.now();if(e-B.current<300)return;B.current=e,r(`page_video_detail`,`详情页`,null,`detail_collect`,{object_id:E.id});let t=E.collect||!1,n=!t,i=T(E),a=Math.max(0,i+(n?1:-1));R(!0),Y({collect:n,collect_count:a}),n&&M.trigger(c.likeShakeAnimation),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:t?`取消收藏`:`收藏`});try{let e=await q({currentCollect:t,onUpdate:({isCollect:e})=>{Y({collect:e})}});if(!e?.success){Y({collect:t,collect_count:i}),f.error(e?.message||j(`detailOperate.collectFailed`));return}Y({collect:e.isCollect??n,collect_count:a}),W(),window.sensors?.track?.(`detail_fav_click`,{object_id:E.id,action:e.isCollect?`收藏`:`取消收藏`}),!t&&e.isCollect&&$(e.collectionTitle),t&&e.isCollect===!1&&f.success(j(`detailOperate.uncollectSuccess`))}catch(e){Y({collect:t,collect_count:i}),console.error(`收藏操作失败:`,e),f.error(e?.message||j(`detailOperate.collectFailed`))}finally{R(!1)}},[M,q,E,W,L,H,$,j,Y]);return y(i,{className:`mt-[16px] flex h-[52px] w-full items-center justify-between px-[48px] ${O?`pointer-events-none`:``}`,children:[y(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${F?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:X,children:[E.like?v(oe,{className:`size-[28px] text-[#FF5D8F] ${G.animationClass}`}):v(ae,{className:`size-[28px] text-white`}),v(a,{className:`text-center text-[14px] leading-[22px] ${E.like?`text-[#FF5D8F]`:`text-white`}`,children:N>0?e(N):j(`detailOperate.like`)})]}),y(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] ${L?`opacity-50 cursor-not-allowed`:`cursor-pointer`}`,onClick:le,children:[E.collect?v(b,{className:`size-[28px] text-[#FFC039] ${M.animationClass}`}):v(se,{className:`size-[28px] text-white`}),v(a,{className:`text-center text-[14px] leading-[22px] ${E.collect?`text-[#FFC039]`:`text-white`}`,children:P>0?e(P):j(`detailOperate.collection`)})]}),y(i,{className:`flex h-full w-[43px] flex-col items-center justify-center gap-[2px] cursor-pointer`,onClick:ce,children:[v(x,{className:`size-[28px] text-white`}),v(a,{className:`text-center text-[14px] leading-[22px] text-white`,children:j(`detailOperate.share`)})]})]})}function C(e){if(e==null)return 0;if(typeof e==`number`)return e;let t=Number(e);return Number.isNaN(t)?0:t}function w(e){return C(e.like_count)}function T(e){return C(e.collect_count)}export{S as DetailOperate};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetVideoDetail as e}from"../../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../../utils/use-compatible-router.mjs";import{buildVideoPlayerSrc as n}from"../../../../common/video-player/process-m3u8-cache.mjs";import{notifyBridgeEpisodeChanged as r}from"../../../../../utils/login-modal-bridge.mjs";import{useRequest as i}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as a}from"../../../../common/keep-scroll-position/index.mjs";import{createContext as o,use as s,useCallback as c,useEffect as l,useMemo as u}from"react";import{useParams as d}from"next/navigation";import{jsx as f}from"react/jsx-runtime";const p=o(void 0),m=`funhub:video-detail-episode-sync`;function h(e,t){let n=String(e||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);return r<0?!1:n[r+1]===t}function g(e){let t=Math.floor(Number(e)||1);return t>0?t:1}function _(e){typeof window>`u`||window.dispatchEvent(new CustomEvent(m,{detail:e}))}function v(e){return e.type===m&&e instanceof CustomEvent}function y(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,playerRef:e?.playerRef??t?.playerRef}}function b({value:e,children:t}){let n=s(p);return f(p,{value:u(()=>y(n,e)??e,[n,e]),children:t})}function x(){let e=s(p),t=e!==void 0&&e.onEpisodeChange===void 0,n=S({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:t||!e?.information});return u(()=>{let r=y(e,n);return r&&(e&&n&&t?{...r,information:n.information??r.information,currentSeriesNum:n.currentSeriesNum??r.currentSeriesNum,episodeIndex:n.episodeIndex??r.episodeIndex,onEpisodeChange:n.onEpisodeChange??r.onEpisodeChange,isInformationLoading:n.isInformationLoading??r.isInformationLoading,isInformationResolved:n.isInformationResolved??r.isInformationResolved}:r)},[e,n,t])}function S(o){let{enabled:s,shouldRequestInformation:f}=o,p=d(),y=t(),b=p.level,x=Array.isArray(b)?b:typeof b==`string`?[b]:[],S=x[0]||``,C=x.findIndex(e=>e===`episode`),w=C>=0?x[C+1]:x[2],T=Math.max(1,Number(w)||1),[E,D]=a(`video-detail-material-series-num-${S}`,T);l(()=>{D(T)},[T,D]),l(()=>{if(!S||typeof window>`u`)return;let e=e=>{if(!v(e))return;let t=e.detail;if(!t||t.detailId!==S)return;let n=g(t.seriesNum);D(e=>e===n?e:n)};return window.addEventListener(m,e),()=>{window.removeEventListener(m,e)}},[S,D]);let O=c(e=>{if(!S)return;let t=g(e);D(t),_({detailId:S,seriesNum:t})},[S,D]),k=Math.max(1,Number(E)||1),A=Math.max(0,k-1),j=x[1]||``,M=typeof window<`u`&&window.isWebView===!0,{data:N,isPending:P,isFetching:F,isError:I,isSuccess:L}=i([`video-detail`,S],async()=>S?await e({id:S}):null,{enabled:s&&f&&!!S}),R=u(()=>{let e=N?.data?.video;if(!(!e||typeof e!=`object`))return{...e,content_type:1,episode_cnt:e.links?.length||0}},[N?.data?.video]),z=c(e=>{let t=Math.max(1,Math.floor(Number(e)||1));if(!S||typeof window>`u`)return;let i=`/${M?`webview`:`video`}/${S}/${encodeURIComponent(j)}/episode/${t}`,{search:a,hash:o,pathname:s}=window.location,c=`${s}${a}${o}`,l=`${i}${a}${o}`,u=h(s,S);if(c!==l){if(M){let e=R?.links?.[Math.max(0,t-1)],i=n(String(e?.m3u8_url||e?.preview_m3u8_url||``).trim());r({poster:String(R?.img_y||R?.img_x||R?.preview_images?.[0]||``).trim(),src:i,title:String(R?.title||R?.name||``).trim(),contentId:S,episode:t}),k!==t&&O(t);return}u&&typeof window.history?.replaceState==`function`?(window.history.replaceState(window.history.state,``,l),O(t)):y.replace(l,{scroll:!1});return}k!==t&&O(t)},[k,S,R?.img_x,R?.img_y,R?.links,R?.name,R?.preview_images,R?.title,M,j,y,O]);if(l(()=>{let e=Array.isArray(R?.links)?R.links.length:0;e<=0||k<=e||z(1)},[k,R?.links,z]),s)return{information:R,currentSeriesNum:k,onEpisodeChange:z,detailId:S,episodeIndex:A,resumeProgressSeconds:0,isShow:!0,isWebView:M,isInformationLoading:f?!!S&&!R&&(P||F):!1,isInformationResolved:!S||!!R||!f||I||L}}export{b as VideoDetailMaterialRuntimeProvider,x as useVideoDetailMaterialRuntimeContext};
2
+ "use client";import{gContentGetVideoDetail as e}from"../../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../../utils/use-compatible-router.mjs";import{buildVideoPlayerSrc as n}from"../../../../common/video-player/process-m3u8-cache.mjs";import{notifyBridgeEpisodeChanged as r}from"../../../../../utils/login-modal-bridge.mjs";import{useRequest as i}from"../../../../../hooks/query/use-query.mjs";import{useKeepAliveState as a}from"../../../../common/keep-scroll-position/index.mjs";import{useParams as o}from"next/navigation";import{createContext as s,use as c,useCallback as l,useEffect as u,useMemo as d}from"react";import{jsx as f}from"react/jsx-runtime";const p=s(void 0),m=`funhub:video-detail-episode-sync`;function h(e,t){let n=String(e||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);return r<0?!1:n[r+1]===t}function g(e){let t=Math.floor(Number(e)||1);return t>0?t:1}function _(e){typeof window>`u`||window.dispatchEvent(new CustomEvent(m,{detail:e}))}function v(e){return e.type===m&&e instanceof CustomEvent}function y(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,playerRef:e?.playerRef??t?.playerRef}}function b({value:e,children:t}){let n=c(p);return f(p,{value:d(()=>y(n,e)??e,[n,e]),children:t})}function x(){let e=c(p),t=e!==void 0&&e.onEpisodeChange===void 0,n=S({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:t||!e?.information});return d(()=>{let r=y(e,n);return r&&(e&&n&&t?{...r,information:n.information??r.information,currentSeriesNum:n.currentSeriesNum??r.currentSeriesNum,episodeIndex:n.episodeIndex??r.episodeIndex,onEpisodeChange:n.onEpisodeChange??r.onEpisodeChange,isInformationLoading:n.isInformationLoading??r.isInformationLoading,isInformationResolved:n.isInformationResolved??r.isInformationResolved}:r)},[e,n,t])}function S(s){let{enabled:c,shouldRequestInformation:f}=s,p=o(),y=t(),b=p.level,x=Array.isArray(b)?b:typeof b==`string`?[b]:[],S=x[0]||``,C=x.findIndex(e=>e===`episode`),w=C>=0?x[C+1]:x[2],T=Math.max(1,Number(w)||1),[E,D]=a(`video-detail-material-series-num-${S}`,T);u(()=>{D(T)},[T,D]),u(()=>{if(!S||typeof window>`u`)return;let e=e=>{if(!v(e))return;let t=e.detail;if(!t||t.detailId!==S)return;let n=g(t.seriesNum);D(e=>e===n?e:n)};return window.addEventListener(m,e),()=>{window.removeEventListener(m,e)}},[S,D]);let O=l(e=>{if(!S)return;let t=g(e);D(t),_({detailId:S,seriesNum:t})},[S,D]),k=Math.max(1,Number(E)||1),A=Math.max(0,k-1),j=x[1]||``,M=typeof window<`u`&&window.isWebView===!0,{data:N,isPending:P,isFetching:F,isError:I,isSuccess:L}=i([`video-detail`,S],async()=>S?await e({id:S}):null,{enabled:c&&f&&!!S}),R=d(()=>{let e=N?.data?.video;if(!(!e||typeof e!=`object`))return{...e,content_type:1,episode_cnt:e.links?.length||0}},[N?.data?.video]),z=l(e=>{let t=Math.max(1,Math.floor(Number(e)||1));if(!S||typeof window>`u`)return;let i=`/${M?`webview`:`video`}/${S}/${encodeURIComponent(j)}/episode/${t}`,{search:a,hash:o,pathname:s}=window.location,c=`${s}${a}${o}`,l=`${i}${a}${o}`,u=h(s,S);if(c!==l){if(M){let e=R?.links?.[Math.max(0,t-1)],i=n(String(e?.m3u8_url||e?.preview_m3u8_url||``).trim());r({poster:String(R?.img_y||R?.img_x||R?.preview_images?.[0]||``).trim(),src:i,title:String(R?.title||R?.name||``).trim(),contentId:S,episode:t}),k!==t&&O(t);return}u&&typeof window.history?.replaceState==`function`?(window.history.replaceState(window.history.state,``,l),O(t)):y.replace(l,{scroll:!1});return}k!==t&&O(t)},[k,S,R?.img_x,R?.img_y,R?.links,R?.name,R?.preview_images,R?.title,M,j,y,O]);if(u(()=>{let e=Array.isArray(R?.links)?R.links.length:0;e<=0||k<=e||z(1)},[k,R?.links,z]),c)return{information:R,currentSeriesNum:k,onEpisodeChange:z,detailId:S,episodeIndex:A,resumeProgressSeconds:0,isShow:!0,isWebView:M,isInformationLoading:f?!!S&&!R&&(P||F):!1,isInformationResolved:!S||!!R||!f||I||L}}export{b as VideoDetailMaterialRuntimeProvider,x as useVideoDetailMaterialRuntimeContext};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{decryptImageToUint8Array as e}from"../../../../../utils/decrypt-image-client.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gContentGetVideoDetail as n,pInteractionBrowse as r}from"../../../../../service/generated/client.mjs";import{uint8ArrayToBase64 as i}from"../../../../../utils/uint8.mjs";import{resolveM3u8Urls as a,resolveVideoPlayerSrc as o}from"../../../../common/video-player/process-m3u8-cache.mjs";import{useLoginModalStore as s}from"../../../../../store/modules/login-modal-store.mjs";import{batchQueryContentInteractions as c}from"../../../../../hooks/use-content-operate.mjs";import{useCallback as l,useEffect as u,useRef as d}from"react";import{usePathname as f}from"next/navigation";import{useQueryClient as p}from"@tanstack/react-query";const m=new Map,h=new Map;function g(){if(typeof window>`u`)return!1;let e={open:!1};return window.dispatchEvent(new CustomEvent(`funhub:detail-series-popup-query`,{detail:e})),!!e.open}function _(){typeof window>`u`||window.dispatchEvent(new Event(`funhub:detail-series-popup-close`))}function v(e){let t=Math.floor(Number(e)||1);return t>0?t:1}function y(e){let t=typeof e==`string`?e:typeof window>`u`?``:window.location.pathname,n=String(t||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);if(r<0)return{detailId:``,currentSeriesNum:1,episodeIndex:0};let i=n[r+1]||``;try{let e=decodeURIComponent(i),t=n.slice(r+1),a=t.findIndex(e=>e===`episode`),o=v(a>=0?t[a+1]:t[2]);return{detailId:e,currentSeriesNum:o,episodeIndex:Math.max(0,o-1)}}catch{let e=n.slice(r+1),t=e.findIndex(e=>e===`episode`),a=v(t>=0?e[t+1]:e[2]);return{detailId:i,currentSeriesNum:a,episodeIndex:Math.max(0,a-1)}}}function b(e){for(;e.size>5;){let t=e.keys().next().value;if(!t)break;e.delete(t)}}function x(e){let t=e,n=t?.data?.video||t?.video||t;if(!(!n||typeof n!=`object`))return{...n,content_type:1,episode_cnt:n.links?.length||0}}function S(e){let t=String(e||``).trim();return t?[[`video-detail`,t]]:[]}function C(v){let{enabled:C=!0}=v,w=p(),T=y(f()).detailId,E=d({detailId:``}),D=d(null),O=d(new Map),k=d(new Map);u(()=>{E.current={detailId:T},D.current=null},[T]);let A=l(async e=>{let t=String(e||``).trim();if(!t)return;if(E.current.detailId===t&&E.current.information)return E.current.information;let r=m.get(t);if(r)return E.current={detailId:t,information:r},r;let i=S(t).map(e=>w.getQueryData(e)).map(x).find(Boolean);if(i)return E.current={detailId:t,information:i},m.set(t,i),i;if(D.current?.detailId===t)return await D.current.promise;if(h.has(t)){let e=await h.get(t);return e&&(E.current={detailId:t,information:e}),e}let a=n({id:t}).then(e=>{let n=x(e);if(n)return E.current={detailId:t,information:n},m.set(t,n),n});D.current={detailId:t,promise:a},h.set(t,a);try{return await a}finally{D.current?.detailId===t&&(D.current=null),h.get(t)===a&&h.delete(t)}},[w]),j=l(async t=>{let n=String(t||``).trim();if(!n)return``;let r=O.current.get(n);if(r)return r;let a=k.current.get(n);if(a)return await a;let o=(async()=>{try{let t=await e(n);if(!t)return``;let r=i(t.bytes);return O.current.delete(n),O.current.set(n,r),b(O.current),r}catch{return``}finally{k.current.delete(n)}})();return k.current.set(n,o),await o},[]),M=l(async e=>{let t=String(e||``).trim();if(!t)return``;let n=j(t),r,i=new Promise(e=>{r=setTimeout(()=>{e(``)},150)}),a=await Promise.race([n,i]);return r!==void 0&&clearTimeout(r),a},[j]),N=l(async()=>{let e;for(let t=0;t<2;t++){let t=y();if(e=await A(t.detailId),y().detailId===t.detailId)break}let t=y(),n=a(Array.isArray(e?.links)?e.links:[],t.currentSeriesNum),r=n[0]?await o(n[0]):``,i=e?.name||``,s=String(t.detailId||``).trim(),c=t.currentSeriesNum;return{poster:await M(String(e?.img_y||e?.img_x||e?.preview_images?.[0]||``).trim()),src:r,title:i,contentId:s,episode:c}},[A,M]),P=l(async()=>{if(!t.getState().isLogin)return null;let e=y();if(!e.detailId)return null;let n=await c([e.detailId],1);return n?.interaction_list?.[0]?n.interaction_list[0].browse_record:null},[]),F=l(async e=>{if(!t.getState().isLogin)return;let n=y();if(!n.detailId)return;let i=e.browse_episode||n.currentSeriesNum,a=Date.now(),o=String(e.browse_key||a);try{await r({app_id:0,content_type:1,content_id:n.detailId,browse_duration:Number(e.browse_duration||0),browse_episode:String(i),browse_key:o,browse_page_ts:a})}catch{console.error(`上报播放进度失败`)}},[]),I=l(()=>{let e=s.getState(),t=!!e.isOpen,n=g();return!t&&!n?!0:(t&&e.close(),n&&_(),!1)},[]);u(()=>{if(!C||typeof window>`u`)return;let e=window;return e.getVideoInfoAsync=N,e.getVideoBrowseRecordAsync=P,e.reportVideoProgress=F,e.guardWebViewNavigation=I,()=>{e.getVideoInfoAsync===N&&delete e.getVideoInfoAsync,e.getVideoBrowseRecordAsync===P&&delete e.getVideoBrowseRecordAsync,e.reportVideoProgress===F&&delete e.reportVideoProgress,e.guardWebViewNavigation===I&&delete e.guardWebViewNavigation}},[P,N,I,C,F])}export{C as useVideoDetailWebViewBridge};
2
+ "use client";import{decryptImageToUint8Array as e}from"../../../../../utils/decrypt-image-client.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gContentGetVideoDetail as n,pInteractionBrowse as r}from"../../../../../service/generated/client.mjs";import{uint8ArrayToBase64 as i}from"../../../../../utils/uint8.mjs";import{resolveM3u8Urls as a,resolveVideoPlayerSrc as o}from"../../../../common/video-player/process-m3u8-cache.mjs";import{useLoginModalStore as s}from"../../../../../store/modules/login-modal-store.mjs";import{batchQueryContentInteractions as c}from"../../../../../hooks/use-content-operate.mjs";import{usePathname as l}from"next/navigation";import{useCallback as u,useEffect as d,useRef as f}from"react";import{useQueryClient as p}from"@tanstack/react-query";const m=new Map,h=new Map;function g(){if(typeof window>`u`)return!1;let e={open:!1};return window.dispatchEvent(new CustomEvent(`funhub:detail-series-popup-query`,{detail:e})),!!e.open}function _(){typeof window>`u`||window.dispatchEvent(new Event(`funhub:detail-series-popup-close`))}function v(e){let t=Math.floor(Number(e)||1);return t>0?t:1}function y(e){let t=typeof e==`string`?e:typeof window>`u`?``:window.location.pathname,n=String(t||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);if(r<0)return{detailId:``,currentSeriesNum:1,episodeIndex:0};let i=n[r+1]||``;try{let e=decodeURIComponent(i),t=n.slice(r+1),a=t.findIndex(e=>e===`episode`),o=v(a>=0?t[a+1]:t[2]);return{detailId:e,currentSeriesNum:o,episodeIndex:Math.max(0,o-1)}}catch{let e=n.slice(r+1),t=e.findIndex(e=>e===`episode`),a=v(t>=0?e[t+1]:e[2]);return{detailId:i,currentSeriesNum:a,episodeIndex:Math.max(0,a-1)}}}function b(e){for(;e.size>5;){let t=e.keys().next().value;if(!t)break;e.delete(t)}}function x(e){let t=e,n=t?.data?.video||t?.video||t;if(!(!n||typeof n!=`object`))return{...n,content_type:1,episode_cnt:n.links?.length||0}}function S(e){let t=String(e||``).trim();return t?[[`video-detail`,t]]:[]}function C(v){let{enabled:C=!0}=v,w=p(),T=y(l()).detailId,E=f({detailId:``}),D=f(null),O=f(new Map),k=f(new Map);d(()=>{E.current={detailId:T},D.current=null},[T]);let A=u(async e=>{let t=String(e||``).trim();if(!t)return;if(E.current.detailId===t&&E.current.information)return E.current.information;let r=m.get(t);if(r)return E.current={detailId:t,information:r},r;let i=S(t).map(e=>w.getQueryData(e)).map(x).find(Boolean);if(i)return E.current={detailId:t,information:i},m.set(t,i),i;if(D.current?.detailId===t)return await D.current.promise;if(h.has(t)){let e=await h.get(t);return e&&(E.current={detailId:t,information:e}),e}let a=n({id:t}).then(e=>{let n=x(e);if(n)return E.current={detailId:t,information:n},m.set(t,n),n});D.current={detailId:t,promise:a},h.set(t,a);try{return await a}finally{D.current?.detailId===t&&(D.current=null),h.get(t)===a&&h.delete(t)}},[w]),j=u(async t=>{let n=String(t||``).trim();if(!n)return``;let r=O.current.get(n);if(r)return r;let a=k.current.get(n);if(a)return await a;let o=(async()=>{try{let t=await e(n);if(!t)return``;let r=i(t.bytes);return O.current.delete(n),O.current.set(n,r),b(O.current),r}catch{return``}finally{k.current.delete(n)}})();return k.current.set(n,o),await o},[]),M=u(async e=>{let t=String(e||``).trim();if(!t)return``;let n=j(t),r,i=new Promise(e=>{r=setTimeout(()=>{e(``)},150)}),a=await Promise.race([n,i]);return r!==void 0&&clearTimeout(r),a},[j]),N=u(async()=>{let e;for(let t=0;t<2;t++){let t=y();if(e=await A(t.detailId),y().detailId===t.detailId)break}let t=y(),n=a(Array.isArray(e?.links)?e.links:[],t.currentSeriesNum),r=n[0]?await o(n[0]):``,i=e?.name||``,s=String(t.detailId||``).trim(),c=t.currentSeriesNum;return{poster:await M(String(e?.img_y||e?.img_x||e?.preview_images?.[0]||``).trim()),src:r,title:i,contentId:s,episode:c}},[A,M]),P=u(async()=>{if(!t.getState().isLogin)return null;let e=y();if(!e.detailId)return null;let n=await c([e.detailId],1);return n?.interaction_list?.[0]?n.interaction_list[0].browse_record:null},[]),F=u(async e=>{if(!t.getState().isLogin)return;let n=y();if(!n.detailId)return;let i=e.browse_episode||n.currentSeriesNum,a=Date.now(),o=String(e.browse_key||a);try{await r({app_id:0,content_type:1,content_id:n.detailId,browse_duration:Number(e.browse_duration||0),browse_episode:String(i),browse_key:o,browse_page_ts:a})}catch{console.error(`上报播放进度失败`)}},[]),I=u(()=>{let e=s.getState(),t=!!e.isOpen,n=g();return!t&&!n?!0:(t&&e.close(),n&&_(),!1)},[]);d(()=>{if(!C||typeof window>`u`)return;let e=window;return e.getVideoInfoAsync=N,e.getVideoBrowseRecordAsync=P,e.reportVideoProgress=F,e.guardWebViewNavigation=I,()=>{e.getVideoInfoAsync===N&&delete e.getVideoInfoAsync,e.getVideoBrowseRecordAsync===P&&delete e.getVideoBrowseRecordAsync,e.reportVideoProgress===F&&delete e.reportVideoProgress,e.guardWebViewNavigation===I&&delete e.guardWebViewNavigation}},[P,N,I,C,F])}export{C as useVideoDetailWebViewBridge};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetVisitorPermissionConfig as n,pContentMatchAds as r}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as i}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as a}from"../../../../../utils/helper.mjs";import{trackVideoEvent as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as ee}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as te}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as ne}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as re}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as m}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as ie}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as g}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as T}from"next-intl";function E(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function ae(e){if(!e)return 0;for(let t of[`seconds`,`stay_seconds`,`play_seconds`,`watch_seconds`]){let n=E(e[t]);if(n>0)return n}for(let t of[`内容`,`content`,`video`,`视频`]){let n=e[t],r=E(n?.rule?.seconds);if(r>0)return r}for(let t of Object.values(e)){let e=E(t?.rule?.seconds);if(e>0)return e}return 0}function D(e){return C(oe,{...e})}const oe=_(({mode:n=`renderer`,information:a,isVideo:o,episodeIndex:s=0,resumeProgressSeconds:ee=0,className:ne=``})=>{let f=n===`editor`,p=t(e=>e.userId),m=b(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),h=b(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,a]),ie=d(),g=b(()=>h.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,h]),_=v(e=>{f||!g.length||ie.open(g,e)},[f,ie,g]),y=b(()=>({user_id:p,ad_type:`preroll`}),[p]),x=b(()=>{let e=Math.max(0,Number(s)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[s,a?.links]),{data:S,isLoading:T,isFetched:E}=te(b(()=>[`detail-preroll-ad`,a.id,x,...i(y)],[a.id,x,y]),()=>r(y),{enabled:!f&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),ae=b(()=>({data:S?.data??null,isLoading:T,isFetched:E}),[E,T,S?.data]);return f?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?T?C(`div`,{className:`aspect-video w-full bg-background`}):C(O,{information:a,episodeIndex:s,resumeProgressSeconds:ee,isEditor:f,prerollState:ae}):w(`div`,{className:e(`w-full`,ne),children:[w(c,{className:`mt-3 px-[12px] space-y-1`,children:[C(l,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),C(re,{medias:h,onItemClick:_})]}),C(u,{})]})});D.displayName=`DetailHero`;const O=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(k,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});O.displayName=`StableDetailPlayerBox`;function k({information:e,episodeIndex:r,resumeProgressSeconds:i,isEditor:l,prerollState:u}){let d=x(null),re=x(null),_=x(null),E=T(`components.biz.business.detail`),D=t(e=>e.isLogin),oe=t(e=>e.userId),O=ee(e=>e.open),k=ee(e=>e.isOpen),A=x(0),j=x(0),M=x(!1),N=x(!1),P=x(null),ue=x(!1),F=x(!1),de=x(!1),I=Math.max(0,Number(r)||0),fe=I+1,[pe,me]=S(!1),[L,R]=S(`main`),[he,z]=S(`auto`),[ge,B]=S(!1),[V,H]=S(!1),[_e,U]=S(!1),[ve,ye]=S(0),W=b(()=>e?.id,[e?.id]),G=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),be=b(()=>G.mid||G.id,[G.id,G.mid]),K=b(()=>{let e=G.links?.[I]?.id;return e?String(e):`ep-${I+1}`},[I,G.links]),q=b(()=>`__reportData_detail_page__${G.id}:${K}`,[K,G.id]),xe=u.data,Se=u.isLoading,Ce=u.isFetched,we=xe?.materials?.[0],Te=xe?.hit===!0,Ee=!!String(we?.advertise_video||``).trim(),J=Te&&!!we&&Ee,{data:Y}=te(b(()=>[`detail-visitor-permission-config`,oe||`guest`],[oe]),()=>n({user_id:oe||``}),{enabled:!l,staleTime:60*1e3,refetchOnWindowFocus:!1}),X=b(()=>ae(Y?.data?.permission_config),[Y?.data?.permission_config]);y(()=>{ue.current||Y&&(ue.current=!0,console.log(`[visitor-limit] permission config:`,Y?.data?.permission_config||null),console.log(`[visitor-limit] resolved limit: ${X}s`))},[X,Y]);let De=b(()=>{if(l||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(q);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[l,q]),Oe=b(()=>{let e=Number(i||0);return Number.isFinite(e)&&e>0?e:0},[i]),ke=b(()=>Oe>0?Oe:De,[Oe,De]),Z=b(()=>{let t=le(e),n=t[t.length?Math.max(0,Math.min(I,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(G.img_width||0)||1,a=Number(G.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:se(i,a),aspectRatio:(i||1)/(a||1),poster:G.img_y||G.img_x||G.preview_images?.[0]||``}},[e.id,e.links,I,G.img_width,G.img_height,G.img_y,G.img_x,G.preview_images]),Ae=v((e,t)=>{if(A.current=e,j.current=t,D||X<=0||M.current){F.current||(F.current=!0,console.log(`[visitor-limit] skip: isLogin=${D}, limit=${X}, triggered=${M.current}`));return}if(e<X){let t=Math.max(0,Math.ceil(X-e));P.current!==t&&(P.current=t,console.log(`[visitor-limit] remaining: ${t}s`));return}M.current=!0,N.current=!0;try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`暂停视频失败:`,e)}O()},[D,O,X]);y(()=>{D&&(M.current=!1,N.current=!1,P.current=null,F.current=!1)},[D]),y(()=>{let e=de.current;if(de.current=k,!(!e||k||D)&&N.current)try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`登录弹窗关闭后暂停视频失败:`,e)}},[D,k]);let je=b(()=>Z.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:ke,preload:`none`}:{startTimeSeconds:ke},[ke,Z.videoUrl]);y(()=>{A.current=0,j.current=0,M.current=!1,N.current=!1,P.current=null,F.current=!1,ue.current=!1,de.current=!1},[W,I]),y(()=>{if(me(!1),H(!1),B(!1),U(!1),z(`auto`),ye(e=>e+1),l){R(`main`);return}if(J){R(`preroll`);return}R(`main`)},[W,K,l,G.id,J]),y(()=>()=>{_.current&&=(window.clearInterval(_.current),null)},[]),y(()=>{if(L!==`preroll`)return;let e=d.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[L,K,G.id]);let Me=v(e=>{let t=d.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),Ne=v(()=>{_.current&&=(window.clearInterval(_.current),null);let e=0;_.current=window.setInterval(()=>{e+=1;let t=d.current?.getPlayer?.();if(!t){e>=8&&_.current&&(window.clearInterval(_.current),_.current=null);return}_.current&&=(window.clearInterval(_.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Me(!0);if(!e){U(!0);return}e.play?.().then(()=>{U(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),U(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Me]),Pe=!l&&Ce&&!Se&&!V&&(!J||ge);y(()=>{!Pe||!pe||(U(!1),Ne())},[Ne,pe,Pe]);let Q=ne({contentId:W,browseEpisode:fe,contentType:1,enabled:!l&&!!W,intervalMs:60*1e3,getCurrentTimeSeconds:()=>A.current,getDurationSeconds:()=>j.current}),$=v(()=>{let t=j.current,n=A.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:K,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[K,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);v(()=>{Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$]),v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Q,$]);let Fe=v(()=>{if(V){let e=d.current?.getPlayer?.();e&&(e.currentTime=0)}B(!0),U(!1),z(`manual`),H(!1),R(`main`)},[V]),Ie=v(()=>{z(`manual`)},[]),Le=v(()=>{me(!0)},[]),Re=v(()=>{H(!1),U(!1)},[]),ze=v(()=>{if(!D&&N.current){try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`未登录拦截播放时暂停视频失败:`,e)}k||O();return}Re(),Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$,Re,D,k,O]),Be=v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),Ve=v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),J&&(H(!0),U(!1),B(!1),z(`manual`),ye(e=>e+1),R(`main`))},[Q,$,J]),He=J&&L===`main`&&(V||!ge&&he===`manual`),Ue=L===`main`&&_e,We=!l&&!Ce,Ge=We,Ke=Pe,qe=!We&&(!J||ge);async function Je(){J&&(H(!1),B(!1),z(`manual`),R(`preroll`),await re.current?.play?.()||R(`main`))}async function Ye(){let e=Me(!1);if(e)try{await e.play?.(),U(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(l)return;let e=()=>{if(!(typeof window>`u`)&&!(A.current<=0||j.current<=0))try{sessionStorage.setItem(q,JSON.stringify({episodeId:K,currentTime:A.current,duration:j.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[K,l,q]),!Z.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:E(`videoHero.noVideos`)});let Xe=ce(430,Z.aspectRatio,242),Ze=Xe.height>0?a(Xe.height):`auto`,Qe=Xe.height>0?`calc(${Ze} + 0px)`:`auto`,$e=a(242);return w(m,{value:d,children:[C(c,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Qe,maxWidth:`100%`,maxHeight:`calc(${$e} + 0px)`}}),w(c,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[Z.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Ze},children:[C(s,{src:Z.poster,alt:E(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(c,{suppressHydrationWarning:!0,"data-aspect-ratio":Z.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Ze,maxWidth:`100%`,maxHeight:$e,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[qe&&C(f,{ref:d,plyerId:`detail-player-${G.id}-${I}`,parentId:be,...Ke?{autoplay:!0}:{autoplay:!1},resolution:Z.resolution||`0x0`,videoUrl:Z.videoUrl,poster:Z.poster,mergeConfig:je,onProgressUpdate:l?void 0:Ae,onPlay:l?void 0:ze,onPause:l?void 0:Be,onEnded:l?void 0:Ve,onPlayerReady:Le},`stable-player-${G.id}-${I}-${Ke?`default-autoplay`:`manual`}`),!l&&J&&C(ie,{ref:re,adData:xe,visible:L===`preroll`,autoStart:L===`preroll`&&he===`auto`,sessionKey:`${G.id}-${K}-${ve}`,onAutoplayBlocked:Ie,onFinish:Fe,onSkip:Fe}),He&&!Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Je()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ye()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ge&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:G.id}),C(g,{videoId:G.id})]})]})]})}function se(e,t){return!e||!t?``:`${e}x${t}`}function ce(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function le(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{D as DetailHero};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{gUserGetVisitorPermissionConfig as n,pContentMatchAds as r}from"../../../../../service/generated/client.mjs";import{pContentMatchAdsKey as i}from"../../../../../service/generated/tanstack.mjs";import{pxToVw as a}from"../../../../../utils/helper.mjs";import{trackVideoEvent as o}from"../../../../../utils/tracking.mjs";import{Image as s}from"../../../../ui/image.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as ee}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as te}from"../../../../../hooks/query/use-query.mjs";import{useBrowseReport as ne}from"../../../../../hooks/use-browse-report.mjs";import{MediaPreview as u,useMediaPreview as d}from"../../../../common/media-preview/index.mjs";import f from"../../../../common/video-player/index.mjs";import p from"../../../../../assets/icons/detail/video_play.mjs";import{UserActivityMediaGrid as re}from"../../../../common/list/user-activity-list/user-activity-list-item.mjs";import{VideoPlayerRefContext as m}from"../../../../common/video-player/video-player-ref-context.mjs";import{VideoBlindAdOverlay as h}from"../../../../common/video-player/video-blind-ad-overlay.mjs";import{VideoPrerollAd as ie}from"../../../../common/video-player/video-preroll-ad.mjs";import{VideoPrerollAdOverlay as g}from"../../../../common/video-player/video-preroll-ad-overlay.mjs";import{memo as _,useCallback as v,useEffect as y,useMemo as b,useRef as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as T}from"next-intl";function E(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function ae(e){if(!e)return 0;for(let t of[`seconds`,`stay_seconds`,`play_seconds`,`watch_seconds`]){let n=E(e[t]);if(n>0)return n}for(let t of[`内容`,`content`,`video`,`视频`]){let n=e[t],r=E(n?.rule?.seconds);if(r>0)return r}for(let t of Object.values(e)){let e=E(t?.rule?.seconds);if(e>0)return e}return 0}function D(e){return C(oe,{...e})}const oe=_(({mode:n=`renderer`,information:a,isVideo:o,episodeIndex:s=0,resumeProgressSeconds:ee=0,className:ne=``})=>{let f=n===`editor`,p=t(e=>e.userId),m=b(()=>({id:a.id,name:a.name,preview_images:a.preview_images,img_y:a.img_y,img_x:a.img_x}),[a.id,a.name,a.preview_images,a.img_y,a.img_x]),h=b(()=>{let e=a?.medias,t=Array.isArray(e)?e.filter(Boolean):[];return t.length>0?t:(m.preview_images?.length?m.preview_images:[m.img_y||m.img_x||``].filter(Boolean)).filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}))},[m.img_x,m.img_y,m.preview_images,a]),ie=d(),g=b(()=>h.filter(Boolean).map(e=>{let t=e?.is_video?`video`:`image`,n=String(e?.media_url||``),r=e?.cover_image||a.img_y||a.img_x;return{src:n,type:t,...r?{cover:String(r)}:{}}}).filter(e=>!!e.src),[a.img_x,a.img_y,h]),_=v(e=>{f||!g.length||ie.open(g,e)},[f,ie,g]),y=b(()=>({user_id:p,ad_type:`preroll`}),[p]),x=b(()=>{let e=Math.max(0,Number(s)||0),t=a?.links?.[e]?.id;return t?String(t):`ep-${e+1}`},[s,a?.links]),{data:S,isLoading:T,isFetched:E}=te(b(()=>[`detail-preroll-ad`,a.id,x,...i(y)],[a.id,x,y]),()=>r(y),{enabled:!f&&o,staleTime:0,refetchOnMount:`always`,refetchOnWindowFocus:!1}),ae=b(()=>({data:S?.data??null,isLoading:T,isFetched:E}),[E,T,S?.data]);return f?C(`img`,{src:`/static/components-thumb/video_player.png`,alt:`video-preview`,className:`w-full block`}):o?T?C(`div`,{className:`aspect-video w-full bg-background`}):C(O,{information:a,episodeIndex:s,resumeProgressSeconds:ee,isEditor:f,prerollState:ae}):w(`div`,{className:e(`w-full`,ne),children:[w(c,{className:`mt-3 px-[12px] space-y-1`,children:[C(l,{as:`p`,className:`break-all`,dangerouslySetInnerHTML:{__html:a.description}}),C(re,{medias:h,onItemClick:_})]}),C(u,{})]})});D.displayName=`DetailHero`;const O=_(({information:e,episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})=>{let a=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images]);return C(k,{information:{...e,...a},episodeIndex:t,resumeProgressSeconds:n,isEditor:r,prerollState:i})},(e,t)=>{let n=e.information,r=t.information;return n.id===r.id&&n.mid===r.mid&&n.img_width===r.img_width&&n.img_height===r.img_height&&n.img_y===r.img_y&&n.img_x===r.img_x&&e.resumeProgressSeconds===t.resumeProgressSeconds&&e.episodeIndex===t.episodeIndex&&e.isEditor===t.isEditor&&e.prerollState.data===t.prerollState.data&&e.prerollState.isLoading===t.prerollState.isLoading&&e.prerollState.isFetched===t.prerollState.isFetched});O.displayName=`StableDetailPlayerBox`;function k({information:e,episodeIndex:r,resumeProgressSeconds:i,isEditor:l,prerollState:u}){let d=x(null),re=x(null),_=x(null),E=T(`components.biz.business.detail`),D=t(e=>e.isLogin),oe=t(e=>e.userId),O=ee(e=>e.open),k=ee(e=>e.isOpen),A=x(0),j=x(0),M=x(!1),N=x(!1),P=x(null),ue=x(!1),F=x(!1),de=x(!1),I=Math.max(0,Number(r)||0),fe=I+1,[pe,me]=S(!1),[L,R]=S(`main`),[he,z]=S(`auto`),[ge,B]=S(!1),[V,H]=S(!1),[_e,U]=S(!1),[ve,ye]=S(0),W=b(()=>e?.id,[e?.id]),G=b(()=>({id:e.id,mid:e.mid,img_width:e.img_width,img_height:e.img_height,img_y:e.img_y,img_x:e.img_x,preview_images:e.preview_images,links:e.links}),[e.id,e.mid,e.img_width,e.img_height,e.img_y,e.img_x,e.preview_images,e.links]),be=b(()=>G.mid||G.id,[G.id,G.mid]),K=b(()=>{let e=G.links?.[I]?.id;return e?String(e):`ep-${I+1}`},[I,G.links]),q=b(()=>`__reportData_detail_page__${G.id}:${K}`,[K,G.id]),xe=u.data,Se=u.isLoading,Ce=u.isFetched,we=xe?.materials?.[0],Te=xe?.hit===!0,Ee=!!String(we?.advertise_video||``).trim(),J=Te&&!!we&&Ee,{data:Y}=te(b(()=>[`detail-visitor-permission-config`,oe||`guest`],[oe]),()=>n({user_id:oe||``}),{enabled:!l,staleTime:60*1e3,refetchOnWindowFocus:!1}),X=b(()=>ae(Y?.data?.permission_config),[Y?.data?.permission_config]);y(()=>{ue.current||Y&&(ue.current=!0,console.log(`[visitor-limit] permission config:`,Y?.data?.permission_config||null),console.log(`[visitor-limit] resolved limit: ${X}s`))},[X,Y]);let De=b(()=>{if(l||typeof window>`u`)return 0;try{let e=sessionStorage.getItem(q);if(!e)return 0;let t=JSON.parse(e),n=Number(t.currentTime||0),r=Number(t.duration||0);if(!Number.isFinite(n)||!Number.isFinite(r))return 0;if(n>0&&r>0)return n}catch(e){console.error(`读取 sessionStorage 数据失败:`,e)}return 0},[l,q]),Oe=b(()=>{let e=Number(i||0);return Number.isFinite(e)&&e>0?e:0},[i]),ke=b(()=>Oe>0?Oe:De,[Oe,De]),Z=b(()=>{let t=le(e),n=t[t.length?Math.max(0,Math.min(I,t.length-1)):0]?.url||``,r=!!t.length;if(!r)return{hasVideo:!1,hlsList:[],videoUrl:``,width:1,height:1,resolution:`0x0`,aspectRatio:1,poster:``};let i=Number(G.img_width||0)||1,a=Number(G.img_height||0)||1;return{hasVideo:r,hlsList:t,videoUrl:n,width:i,height:a,resolution:se(i,a),aspectRatio:(i||1)/(a||1),poster:G.img_y||G.img_x||G.preview_images?.[0]||``}},[e.id,e.links,I,G.img_width,G.img_height,G.img_y,G.img_x,G.preview_images]),Ae=v((e,t)=>{if(A.current=e,j.current=t,D||X<=0||M.current){F.current||(F.current=!0,console.log(`[visitor-limit] skip: isLogin=${D}, limit=${X}, triggered=${M.current}`));return}if(e<X){let t=Math.max(0,Math.ceil(X-e));P.current!==t&&(P.current=t,console.log(`[visitor-limit] remaining: ${t}s`));return}M.current=!0,N.current=!0;try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`暂停视频失败:`,e)}O()},[D,O,X]);y(()=>{D&&(M.current=!1,N.current=!1,P.current=null,F.current=!1)},[D]),y(()=>{let e=de.current;if(de.current=k,!(!e||k||D)&&N.current)try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`登录弹窗关闭后暂停视频失败:`,e)}},[D,k]);let je=b(()=>Z.videoUrl.endsWith(`m3u8`)?{startTimeSeconds:ke,preload:`none`}:{startTimeSeconds:ke},[ke,Z.videoUrl]);y(()=>{A.current=0,j.current=0,M.current=!1,N.current=!1,P.current=null,F.current=!1,ue.current=!1,de.current=!1},[W,I]),y(()=>{if(me(!1),H(!1),B(!1),U(!1),z(`auto`),ye(e=>e+1),l){R(`main`);return}if(J){R(`preroll`);return}R(`main`)},[W,K,l,G.id,J]),y(()=>()=>{_.current&&=(window.clearInterval(_.current),null)},[]),y(()=>{if(L!==`preroll`)return;let e=d.current?.getPlayer?.();if(e)try{e.paused||e.pause?.()}catch(e){console.warn(`贴片展示时暂停正片失败:`,e)}},[L,K,G.id]);let Me=v(e=>{let t=d.current?.getPlayer?.();if(!t)return null;try{`muted`in t&&(t.muted=e),`video`in t&&t.video&&(t.video.muted=e),t.volume=e?0:1}catch(e){console.warn(`同步详情页播放器静音状态失败:`,e)}return t},[]),Ne=v(()=>{_.current&&=(window.clearInterval(_.current),null);let e=0;_.current=window.setInterval(()=>{e+=1;let t=d.current?.getPlayer?.();if(!t){e>=8&&_.current&&(window.clearInterval(_.current),_.current=null);return}_.current&&=(window.clearInterval(_.current),null),t.play?.().catch(e=>{let t=typeof e==`object`&&e&&`name`in e?String(e.name||``):``,n=typeof e==`object`&&e&&`message`in e?String(e.message||``):String(e||``);if(t===`NotAllowedError`||/user didn't interact|NotAllowedError/i.test(n)){let e=Me(!0);if(!e){U(!0);return}e.play?.().then(()=>{U(!1)}).catch(e=>{console.warn(`详情页静音自动播放失败:`,e),U(!0)});return}console.warn(`详情页恢复正片播放失败:`,e)})},180)},[Me]),Pe=!l&&Ce&&!Se&&!V&&(!J||ge);y(()=>{!Pe||!pe||(U(!1),Ne())},[Ne,pe,Pe]);let Q=ne({contentId:W,browseEpisode:fe,contentType:1,enabled:!l&&!!W,intervalMs:60*1e3,getCurrentTimeSeconds:()=>A.current,getDurationSeconds:()=>j.current}),$=v(()=>{let t=j.current,n=A.current,r=t>0?Math.round(n/t*100):0;return{media_id:e.id,video_id:K,video_title:e.name,video_type_id:e.cat_id||``,video_type_name:e.cat_name||``,video_content_type:e.content_type===2?`short_video`:`video`,recommend_trace_id:``,video_tag_key:e.tags?.map(e=>e.id).join(`,`)||``,video_tag_name:e.tags?.map(e=>e.name).join(`,`)||``,video_duration:t,play_duration:n,play_progress:r}},[K,e.cat_id,e.cat_name,e.content_type,e.id,e.name,e.tags]);v(()=>{Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$]),v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`})},[Q,$]);let Fe=v(()=>{if(V){let e=d.current?.getPlayer?.();e&&(e.currentTime=0)}B(!0),U(!1),z(`manual`),H(!1),R(`main`)},[V]),Ie=v(()=>{z(`manual`)},[]),Le=v(()=>{me(!0)},[]),Re=v(()=>{H(!1),U(!1)},[]),ze=v(()=>{if(!D&&N.current){try{d.current?.getPlayer?.()?.pause?.()}catch(e){console.warn(`未登录拦截播放时暂停视频失败:`,e)}k||O();return}Re(),Q.handlePlay(),o({...$(),video_behavior_key:`video_play`,video_behavior_name:`播放`})},[Q,$,Re,D,k,O]),Be=v(()=>{Q.handlePause(),o({...$(),video_behavior_key:`video_pause`,video_behavior_name:`暂停`})},[Q,$]),Ve=v(()=>{Q.handleEnded();let e=j.current,t=A.current;(e>0?t/e:0)>=.95&&o({...$(),video_behavior_key:`video_complete`,video_behavior_name:`播放完成`}),J&&(H(!0),U(!1),B(!1),z(`manual`),ye(e=>e+1),R(`main`))},[Q,$,J]),He=J&&L===`main`&&(V||!ge&&he===`manual`),Ue=L===`main`&&_e,We=!l&&!Ce,Ge=We,Ke=Pe,qe=!We&&(!J||ge);async function Je(){J&&(H(!1),B(!1),z(`manual`),R(`preroll`),await re.current?.play?.()||R(`main`))}async function Ye(){let e=Me(!1);if(e)try{await e.play?.(),U(!1)}catch(e){console.warn(`用户点击后启动正片播放失败:`,e)}}if(y(()=>{if(l)return;let e=()=>{if(!(typeof window>`u`)&&!(A.current<=0||j.current<=0))try{sessionStorage.setItem(q,JSON.stringify({episodeId:K,currentTime:A.current,duration:j.current}))}catch(e){console.error(`写入 sessionStorage 失败:`,e)}},t=()=>{e()},n=()=>{document.visibilityState===`hidden`&&e()},r=()=>{e()};return window.addEventListener(`beforeunload`,t),document.addEventListener(`visibilitychange`,n),window.addEventListener(`popstate`,r),()=>{window.removeEventListener(`beforeunload`,t),document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`popstate`,r),e()}},[K,l,q]),!Z.hasVideo)return C(`div`,{className:`mt-3 rounded-xl bg-bg1 px-3 py-10 text-center text-text3`,children:E(`videoHero.noVideos`)});let Xe=ce(430,Z.aspectRatio,242),Ze=Xe.height>0?a(Xe.height):`auto`,Qe=Xe.height>0?`calc(${Ze} + 0px)`:`auto`,$e=a(242);return w(m,{value:d,children:[C(c,{suppressHydrationWarning:!0,className:`w-full`,style:{height:Qe,maxWidth:`100%`,maxHeight:`calc(${$e} + 0px)`}}),w(c,{className:`w-full bg-bg2 !fixed !top-[44px] !left-0 z-[10]`,children:[Z.poster&&w(`div`,{className:`w-full h-full bg-bg2 absolute top-0 left-0 z-[1] overflow-hidden`,style:{height:Ze},children:[C(s,{src:Z.poster,alt:E(`videoHero.coverAlt`),fill:!0,className:`object-cover`,priority:!0}),C(`div`,{className:`w-full h-full absolute top-0 left-0 z-[1] bg-[rgba(255,255,255,0.2)] backdrop-blur-[4px]`})]}),w(c,{suppressHydrationWarning:!0,"data-aspect-ratio":Z.resolution,className:`w-full overflow-hidden flex justify-center relative z-[2]`,style:{height:Ze,maxWidth:`100%`,maxHeight:$e,backdropFilter:`blur(0)`,WebkitBackdropFilter:`blur(0)`},children:[qe&&C(f,{ref:d,plyerId:`detail-player-${G.id}-${I}`,parentId:be,...Ke?{autoplay:!0}:{autoplay:!1},resolution:Z.resolution||`0x0`,videoUrl:Z.videoUrl,poster:Z.poster,mergeConfig:je,onProgressUpdate:l?void 0:Ae,onPlay:l?void 0:ze,onPause:l?void 0:Be,onEnded:l?void 0:Ve,onPlayerReady:Le},`stable-player-${G.id}-${I}-${Ke?`default-autoplay`:`manual`}`),!l&&J&&C(ie,{ref:re,adData:xe,visible:L===`preroll`,autoStart:L===`preroll`&&he===`auto`,sessionKey:`${G.id}-${K}-${ve}`,onAutoplayBlocked:Ie,onFinish:Fe,onSkip:Fe}),He&&!Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10000] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Je()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ue&&C(`button`,{type:`button`,className:`absolute inset-0 z-[10001] flex items-center justify-center bg-black/35 text-white`,onClick:()=>{Ye()},children:C(`span`,{className:`flex items-center justify-center w-14 h-14 rounded-full bg-[rgba(0,0,0,0.55)]`,children:C(p,{className:`w-[18px] h-[24px] text-white translate-x-[1px]`})})}),Ge&&C(`div`,{className:`absolute inset-0 z-[9998] flex items-center justify-center bg-black/20 text-white`,children:C(`span`,{className:`rounded-full bg-[rgba(0,0,0,0.45)] px-5 py-2 text-sm`,children:`加载中`})}),C(h,{videoId:G.id,episode:fe}),C(g,{videoId:G.id,episode:fe})]})]})]})}function se(e,t){return!e||!t?``:`${e}x${t}`}function ce(e,t,n){let r=e/t;return r<=n?{width:e,height:r}:{width:n*t,height:n}}function le(e){let t=e.links||[];return t.length>0?t.map((e,t)=>({text:e.name||String(t+1),url:e.m3u8_url||e.preview_m3u8_url||``,definition:``,isDefault:t===0})).filter(e=>e.url):[]}export{D as DetailHero};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../../service/generated/client.mjs";import{Button as n}from"../../../../ui/button.mjs";import{Image as r}from"../../../../ui/image.mjs";import{Avatar as i,AvatarFallback as a,AvatarImage as o}from"../../../../ui/avatar.mjs";import{Box as s}from"../../../../ui/box.mjs";import{Text as c}from"../../../../ui/text.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as u}from"../../../../../hooks/query/use-query.mjs";import d from"../../../../../assets/icons/common/header-menu.mjs";import f from"../../../../../assets/icons/common/header-search-icon.mjs";import{headerAvatarLogoSearchInspectorDefaultProps as p}from"./schema.mjs";import{useMemo as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import _ from"next/link";import{useShallow as v}from"zustand/react/shallow";function y(){let{isLogin:t,userInfo:r}=e(v(e=>({isLogin:e.isLogin,userInfo:e.userInfo}))),c=l(e=>e.open),u=h(s,{className:`relative flex h-[38px] w-[38px] items-center justify-center rounded-full bg-white/20`,children:h(s,{className:`flex h-[32px] w-[32px] items-center justify-center overflow-hidden rounded-full border-2 border-white/20 bg-[#2A1C18]`,children:g(i,{className:`h-full w-full`,children:[h(o,{src:r?.avatar_url||r?.avatar||void 0,alt:`用户头像`,className:`object-cover`}),h(a,{className:`bg-[radial-gradient(circle_at_35%_30%,#f4b1ad_0%,#915f72_42%,#3b2442_100%)]`})]})})});return t?h(_,{href:`/user/mine`,"aria-label":`打开个人主页`,className:`shrink-0`,children:u}):h(n,{onClick:c,"aria-label":`登录`,className:`m-0 inline-flex h-auto w-auto shrink-0 bg-transparent p-0 hover:bg-transparent`,children:u})}function b({isEditor:n}){let{userInfo:r}=e(v(e=>({userInfo:e.userInfo}))),i=r?.user_id||`guest`,{data:a}=u([`header-search-hot-keyword`,i],()=>t({user_id:i}),{enabled:!n}),o=m(()=>{let e=(a?.data?.recommend_list??[])[0]?.title;return typeof e==`string`&&e.trim()?e.trim():`请输入搜索关键字`},[a]);return h(_,{href:`/search`,"aria-label":`打开搜索页`,className:`flex h-[34px] flex-1 items-center justify-center overflow-hidden rounded-full bg-black/40 px-[14px] backdrop-blur-[2px]`,children:g(s,{className:`flex h-[20px] items-center gap-[4px] text-white/50`,children:[h(f,{className:`h-[20px] w-[20px] shrink-0`,"aria-hidden":!0}),h(c,{as:`span`,className:`block text-[14px] leading-none text-white/50`,children:o})]})})}function x({logoHref:e,logoSrc:t}){return h(_,{href:e,"aria-label":`打开功能菜单`,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white`,children:t?h(s,{className:`relative h-[24px] w-[24px] overflow-hidden rounded-full`,children:h(r,{src:t,alt:`menu`,fill:!0,sizes:`24px`,className:`object-cover`})}):h(d,{className:`h-[24px] w-[24px]`})})}function S(e){let{mode:t=`renderer`,...n}=e,r=t===`editor`,{logoSrc:i,logoHref:a}={...p,...n};return g(s,{as:`header`,className:r?`flex items-center justify-between gap-[12px] py-[4px] no-vw-x-16 pointer-events-none`:`flex items-center justify-between gap-[12px] py-[4px] no-vw-x-16`,children:[h(y,{}),h(b,{isEditor:r}),h(x,{logoSrc:i,logoHref:a})]})}export{S as HeaderAvatarLogoSearchClient};
2
+ "use client";import{useUserStore as e}from"../../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../../service/generated/client.mjs";import{trackPageClick as n}from"../../../../../utils/tracking.mjs";import{Button as r}from"../../../../ui/button.mjs";import{Image as i}from"../../../../ui/image.mjs";import{Avatar as a,AvatarFallback as o,AvatarImage as s}from"../../../../ui/avatar.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{useLoginModalStore as u}from"../../../../../store/modules/login-modal-store.mjs";import{useRequest as d}from"../../../../../hooks/query/use-query.mjs";import f from"../../../../../assets/icons/common/header-menu.mjs";import p from"../../../../../assets/icons/common/header-search-icon.mjs";import{headerAvatarLogoSearchInspectorDefaultProps as m}from"./schema.mjs";import{useMemo as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import v from"next/link";import{useShallow as y}from"zustand/react/shallow";function b(){let{isLogin:t,userInfo:i}=e(y(e=>({isLogin:e.isLogin,userInfo:e.userInfo}))),l=u(e=>e.open),d=i?.avatar_url||i?.avatar||void 0;function f(){n(`home`,`首页`,null,`header_avatar`)}function p(){n(`home`,`首页`,null,`header_avatar`),l()}let m=g(c,{className:`relative flex h-[38px] w-[38px] items-center justify-center rounded-full bg-white/20`,children:g(c,{className:`flex h-[32px] w-[32px] items-center justify-center overflow-hidden rounded-full border-2 border-white/20 bg-[#2A1C18]`,children:_(a,{className:`h-full w-full`,children:[g(s,{src:d,alt:`用户头像`,className:`object-cover`}),g(o,{className:`bg-[radial-gradient(circle_at_35%_30%,#f4b1ad_0%,#915f72_42%,#3b2442_100%)]`})]})})});return t?g(v,{href:`/user/mine`,"aria-label":`打开个人主页`,className:`shrink-0`,onClick:f,children:m}):g(r,{onClick:p,"aria-label":`登录`,className:`m-0 inline-flex h-auto w-auto shrink-0 bg-transparent p-0 hover:bg-transparent`,children:m})}function x({isEditor:r}){let{userInfo:i}=e(y(e=>({userInfo:e.userInfo}))),a=i?.user_id||`guest`,{data:o}=d([`header-search-hot-keyword`,a],()=>t({user_id:a}),{enabled:!r}),s=h(()=>{let e=(o?.data?.recommend_list??[])[0]?.title;return typeof e==`string`&&e.trim()?e.trim():`请输入搜索关键字`},[o]);return g(v,{href:`/search`,"aria-label":`打开搜索页`,className:`flex h-[34px] flex-1 items-center justify-center overflow-hidden rounded-full bg-black/40 px-[14px] backdrop-blur-[2px]`,onClick:()=>n(`home`,`首页`,null,`header_search`),children:_(c,{className:`flex h-[20px] items-center gap-[4px] text-white/50`,children:[g(p,{className:`h-[20px] w-[20px] shrink-0`,"aria-hidden":!0}),g(l,{as:`span`,className:`block text-[14px] leading-none text-white/50`,children:s})]})})}function S({logoHref:e,logoSrc:t}){return g(v,{href:e,"aria-label":`打开功能菜单`,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white`,onClick:()=>n(`home`,`首页`,null,`header_menu`),children:t?g(c,{className:`relative h-[24px] w-[24px] overflow-hidden rounded-full`,children:g(i,{src:t,alt:`menu`,fill:!0,sizes:`24px`,className:`object-cover`})}):g(f,{className:`h-[24px] w-[24px]`})})}function C(e){let{mode:t=`renderer`,...n}=e,r=t===`editor`,{logoSrc:i,logoHref:a}={...m,...n};return _(c,{as:`header`,className:r?`flex items-center justify-between gap-[12px] py-[4px] no-vw-x-16 pointer-events-none`:`flex items-center justify-between gap-[12px] py-[4px] no-vw-x-16`,children:[g(b,{}),g(x,{isEditor:r}),g(S,{logoSrc:i,logoHref:a})]})}export{C as HeaderAvatarLogoSearchClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{trackKeywordClick as n}from"../../../../utils/tracking.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as l}from"../../../common/icons/delete.mjs";import{useLayoutEffect as u,useMemo as d,useRef as f,useState as p}from"react";import{usePathname as m,useSearchParams as h}from"next/navigation";import{jsx as g,jsxs as _}from"react/jsx-runtime";function v(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function y(y){let{title:b,rows:x=2,clearText:S,confirmDescription:C,onHistoryClick:w,mode:T=`renderer`}=y,E=T===`editor`,D=b??`搜索历史`,O=S??`清空`,k=C??`确定要清除所有搜索历史吗?`,A=d(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=p(!1),[N,P]=p(null),F=f(null),I=f([]),L=f(null),R=r(),z=m(),B=h(),{userInfo:V}=t(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=d(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(u(()=>{if(K.length===0){P(null);return}let e=F.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];I.current.slice(0,K.length).forEach(e=>{if(!e)return;let r=e.getBoundingClientRect(),i=Math.round(r.top-t.top),a=Math.round(r.bottom-t.top),o=n.find(e=>Math.abs(e.top-i)<=1);if(o){o.bottom=Math.max(o.bottom,a);return}n.push({top:i,bottom:a})}),n.sort((e,t)=>e.top-t.top);let r=n.slice(0,x).reduce((e,t)=>Math.max(e,t.bottom),0);P(e=>e===r?e:r)},n=()=>{L.current!=null&&cancelAnimationFrame(L.current),L.current=requestAnimationFrame(()=>{L.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),I.current.slice(0,K.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)}},[K,x]),K.length===0)return null;let q=(e,t)=>{if(n({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:t,search_trace_id:``}),U(e),w){w(e);return}let r=new URLSearchParams(B.toString());r.set(`q`,e);let i=z.includes(`/search-result`)?z:`/search-result`;R.push(`${i}?${r.toString()}`)};return _(i,{className:E?`mt-[24px] px-[16px] py-[16px]`:`mt-[24px] px-[16px] py-0`,children:[_(i,{className:`mb-[15px] flex items-center justify-between`,children:[g(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),g(`button`,{type:`button`,"aria-label":O,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white/50`,onClick:()=>M(!0),children:g(l,{className:`h-[24px] w-[24px]`})})]}),g(i,{ref:F,className:`flex flex-wrap content-start items-center gap-[6px] overflow-hidden`,style:N?{maxHeight:`${N}px`}:void 0,children:K.map((e,t)=>g(i,{ref:e=>{I.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${E?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>q(e,t),children:g(a,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] text-white`,children:v(e,8)})},t))}),g(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
2
+ "use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{trackKeywordClick as n}from"../../../../utils/tracking.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as l}from"../../../common/icons/delete.mjs";import{usePathname as u,useSearchParams as d}from"next/navigation";import{useLayoutEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";function v(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function y(y){let{title:b,rows:x=2,clearText:S,confirmDescription:C,onHistoryClick:w,mode:T=`renderer`}=y,E=T===`editor`,D=b??`搜索历史`,O=S??`清空`,k=C??`确定要清除所有搜索历史吗?`,A=p(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=h(!1),[N,P]=h(null),F=m(null),I=m([]),L=m(null),R=r(),z=u(),B=d(),{userInfo:V}=t(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=p(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(f(()=>{if(K.length===0){P(null);return}let e=F.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];I.current.slice(0,K.length).forEach(e=>{if(!e)return;let r=e.getBoundingClientRect(),i=Math.round(r.top-t.top),a=Math.round(r.bottom-t.top),o=n.find(e=>Math.abs(e.top-i)<=1);if(o){o.bottom=Math.max(o.bottom,a);return}n.push({top:i,bottom:a})}),n.sort((e,t)=>e.top-t.top);let r=n.slice(0,x).reduce((e,t)=>Math.max(e,t.bottom),0);P(e=>e===r?e:r)},n=()=>{L.current!=null&&cancelAnimationFrame(L.current),L.current=requestAnimationFrame(()=>{L.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),I.current.slice(0,K.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)}},[K,x]),K.length===0)return null;let q=(e,t)=>{if(n({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:t,search_trace_id:``}),U(e),w){w(e);return}let r=new URLSearchParams(B.toString());r.set(`q`,e);let i=z.includes(`/search-result`)?z:`/search-result`;R.push(`${i}?${r.toString()}`)};return _(i,{className:E?`mt-[24px] px-[16px] py-[16px]`:`mt-[24px] px-[16px] py-0`,children:[_(i,{className:`mb-[15px] flex items-center justify-between`,children:[g(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),g(`button`,{type:`button`,"aria-label":O,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white/50`,onClick:()=>M(!0),children:g(l,{className:`h-[24px] w-[24px]`})})]}),g(i,{ref:F,className:`flex flex-wrap content-start items-center gap-[6px] overflow-hidden`,style:N?{maxHeight:`${N}px`}:void 0,children:K.map((e,t)=>g(i,{ref:e=>{I.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${E?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>q(e,t),children:g(a,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] text-white`,children:v(e,8)})},t))}),g(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{LeftArrowIcon as r}from"../../../common/icons/left-arrow.mjs";import i from"../../../../assets/icons/search.mjs";import a from"../../../../assets/icons/clear.mjs";import{useCallback as o,useState as s}from"react";import{usePathname as c,useSearchParams as l}from"next/navigation";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(e){if(!e||typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>e==null?``:String(e).trim()).filter(Boolean):[]}catch{return[]}}function p(p){let{placeholder:m,defaultPlaceholder:h,searchLabel:g,storageKey:_=`guest`,onSearch:v,mode:y=`renderer`}=p,b=m||(h??`请输入搜索内容`),x=g??`搜索`,S=y===`editor`,[C,w]=s(``),T=e(),E=c(),D=l(),O=`search_history_${_}`,k=o(e=>{if(S)return;let t=e.trim();if(t){try{let e=[t,...f(localStorage.getItem(O)).filter(e=>e!==t)].slice(0,20);localStorage.setItem(O,JSON.stringify(e))}catch(e){console.error(`Failed to save search history`,e)}if(v)v(t);else{let e=new URLSearchParams(D.toString());e.set(`q`,t);let n=E.includes(`/search-result`)?E:`/search-result`;T.push(`${n}?${e.toString()}`)}}},[O,S,v,E,T,D]),A=()=>{S||T.back()};return d(t,{className:`flex h-[66px] w-full items-center gap-[8px] px-[16px] py-[16px]${S?` pointer-events-none`:``}`,children:[u(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:u(r,{className:`h-[16px] w-[16px]`})}),d(t,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[d(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[u(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:u(i,{className:`h-[14px] w-[14px] text-white/60`})}),u(n,{className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white !caret-white placeholder:!text-white/90 focus-visible:!ring-0`,placeholder:b,value:C,maxLength:128,onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k(C))}}),C&&u(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:u(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),u(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white active:opacity-90`,onClick:()=>k(C),children:x})]})]})}export{p as SearchInputClient};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{LeftArrowIcon as r}from"../../../common/icons/left-arrow.mjs";import i from"../../../../assets/icons/search.mjs";import a from"../../../../assets/icons/clear.mjs";import{usePathname as o,useSearchParams as s}from"next/navigation";import{useCallback as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(e){if(!e||typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>e==null?``:String(e).trim()).filter(Boolean):[]}catch{return[]}}function p(p){let{placeholder:m,defaultPlaceholder:h,searchLabel:g,storageKey:_=`guest`,onSearch:v,mode:y=`renderer`}=p,b=m||(h??`请输入搜索内容`),x=g??`搜索`,S=y===`editor`,[C,w]=l(``),T=e(),E=o(),D=s(),O=`search_history_${_}`,k=c(e=>{if(S)return;let t=e.trim();if(t){try{let e=[t,...f(localStorage.getItem(O)).filter(e=>e!==t)].slice(0,20);localStorage.setItem(O,JSON.stringify(e))}catch(e){console.error(`Failed to save search history`,e)}if(v)v(t);else{let e=new URLSearchParams(D.toString());e.set(`q`,t);let n=E.includes(`/search-result`)?E:`/search-result`;T.push(`${n}?${e.toString()}`)}}},[O,S,v,E,T,D]),A=()=>{S||T.back()};return d(t,{className:`flex h-[66px] w-full items-center gap-[8px] px-[16px] py-[16px]${S?` pointer-events-none`:``}`,children:[u(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:u(r,{className:`h-[16px] w-[16px]`})}),d(t,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[d(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[u(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:u(i,{className:`h-[14px] w-[14px] text-white/60`})}),u(n,{className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white !caret-white placeholder:!text-white/90 focus-visible:!ring-0`,placeholder:b,value:C,maxLength:128,onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k(C))}}),C&&u(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:u(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),u(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white active:opacity-90`,onClick:()=>k(C),children:x})]})]})}export{p as SearchInputClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{useMemo as i}from"react";import{usePathname as a}from"next/navigation";import{jsx as o,jsxs as s}from"react/jsx-runtime";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},d={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function f(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function p(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function m(e,t){let n=f(t);if(e.configType===1){let t=f(p(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function h(e,t){return e.findIndex(e=>m(e,t))}function g(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function _(f){let{items:m=l,mode:_=`renderer`}=f,v=a(),y=i(()=>{if(_===`editor`)return 0;let e=h(m??[],v);return e>=0?e:0},[m,v,_]),b=i(()=>(m??[]).some(e=>g(e)&&e.label.trim()!==``),[m]);if(!m?.length)return null;function x(t,n){_===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let S=`size-full rounded-[6px] bg-white/20`;return o(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:o(n,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:d,children:m.map((e,i)=>{let a=y===i,l=a?e.activeIcon:e.icon,u=e.label,d=g(e)&&u.trim()!==``,f=p(e),m=b?a?`gap-[5px]`:`gap-[4px]`:``,h=a?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[--color-text-white80]`;return s(c,{href:f,className:`flex flex-col items-center justify-center ${m}`,"aria-current":a?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>x(t,e),children:[o(n,{className:`relative size-5 shrink-0`,children:l?o(t,{src:l,alt:u,fill:!0,className:`object-contain`}):o(n,{className:a?`${S} bg-[#C043E8]`:S})}),b&&d?o(r,{"data-active":a,className:h,children:u}):null]},i)})})})}export{_ as TabBarClient};
2
+ "use client";import{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{usePathname as i}from"next/navigation";import{useMemo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},d={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function f(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function p(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function m(e,t){let n=f(t);if(e.configType===1){let t=f(p(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function h(e,t){return e.findIndex(e=>m(e,t))}function g(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function _(f){let{items:m=l,mode:_=`renderer`}=f,v=i(),y=a(()=>{if(_===`editor`)return 0;let e=h(m??[],v);return e>=0?e:0},[m,v,_]),b=a(()=>(m??[]).some(e=>g(e)&&e.label.trim()!==``),[m]);if(!m?.length)return null;function x(t,n){_===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let S=`size-full rounded-[6px] bg-white/20`;return o(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:o(n,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:d,children:m.map((e,i)=>{let a=y===i,l=a?e.activeIcon:e.icon,u=e.label,d=g(e)&&u.trim()!==``,f=p(e),m=b?a?`gap-[5px]`:`gap-[4px]`:``,h=a?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[--color-text-white80]`;return s(c,{href:f,className:`flex flex-col items-center justify-center ${m}`,"aria-current":a?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>x(t,e),children:[o(n,{className:`relative size-5 shrink-0`,children:l?o(t,{src:l,alt:u,fill:!0,className:`object-contain`}):o(n,{className:a?`${S} bg-[#C043E8]`:S})}),b&&d?o(r,{"data-active":a,className:h,children:u}):null]},i)})})})}export{_ as TabBarClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../service/generated/client.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/refresh.mjs";import{useMemo as s,useState as c}from"react";import{usePathname as l,useSearchParams as u}from"next/navigation";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useShallow as p}from"zustand/react/shallow";function m(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function h(h){let{title:g,displayCount:_=6,showRefresh:v=!1,onItemClick:y,mode:b=`renderer`}=h,x=b===`editor`,S=n(),C=l(),w=u(),[T,E]=c(0),{userInfo:D}=e(p(e=>({userInfo:e.userInfo}))),O=D?.user_id||`guest`,{data:k}=a([`text-recommend-keyword-list`,O],()=>t({user_id:O}),{enabled:!x}),A=s(()=>(k?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[k]),j=_*2,M=s(()=>x?Array.from({length:j},(e,t)=>({label:`推荐搜索${t+1}`})):A,[x,A,j]),N=s(()=>m(M,j),[M,T,j]);if(!x&&A.length<2)return null;let P=e=>{e.stopPropagation(),E(e=>e+1)},F=e=>{if(y){y(e);return}let t=new URLSearchParams(w.toString());t.set(`q`,e);let n=C.includes(`/search-result`)?C:`/search-result`;S.push(`${n}?${t.toString()}`)};return f(r,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${x?` pointer-events-none`:``}`,children:[f(r,{className:`flex items-center justify-between w-full`,children:[d(i,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:g}),v&&f(r,{className:`flex items-center gap-1 cursor-pointer active:opacity-70 transition-opacity`,onClick:P,children:[d(i,{className:`text-[14px] text-text3 leading-[22px]`,children:`换一批`}),d(o,{className:`w-3 h-3 text-text3`})]})]}),d(r,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:N.map((e,t)=>d(r,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>F(e.label),children:d(i,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${T}-${t}`))})]})}export{h as TextRecommendClient};
2
+ "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../service/generated/client.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/refresh.mjs";import{usePathname as s,useSearchParams as c}from"next/navigation";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useShallow as p}from"zustand/react/shallow";function m(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function h(h){let{title:g,displayCount:_=6,showRefresh:v=!1,onItemClick:y,mode:b=`renderer`}=h,x=b===`editor`,S=n(),C=s(),w=c(),[T,E]=u(0),{userInfo:D}=e(p(e=>({userInfo:e.userInfo}))),O=D?.user_id||`guest`,{data:k}=a([`text-recommend-keyword-list`,O],()=>t({user_id:O}),{enabled:!x}),A=l(()=>(k?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[k]),j=_*2,M=l(()=>x?Array.from({length:j},(e,t)=>({label:`推荐搜索${t+1}`})):A,[x,A,j]),N=l(()=>m(M,j),[M,T,j]);if(!x&&A.length<2)return null;let P=e=>{e.stopPropagation(),E(e=>e+1)},F=e=>{if(y){y(e);return}let t=new URLSearchParams(w.toString());t.set(`q`,e);let n=C.includes(`/search-result`)?C:`/search-result`;S.push(`${n}?${t.toString()}`)};return f(r,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${x?` pointer-events-none`:``}`,children:[f(r,{className:`flex items-center justify-between w-full`,children:[d(i,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:g}),v&&f(r,{className:`flex items-center gap-1 cursor-pointer active:opacity-70 transition-opacity`,onClick:P,children:[d(i,{className:`text-[14px] text-text3 leading-[22px]`,children:`换一批`}),d(o,{className:`w-3 h-3 text-text3`})]})]}),d(r,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:N.map((e,t)=>d(r,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>F(e.label),children:d(i,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${T}-${t}`))})]})}export{h as TextRecommendClient};