@funhub/platform 0.2.13 → 0.2.15

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 (91) hide show
  1. package/dist/biz.mjs +1 -1
  2. package/dist/common.d.mts +2 -1
  3. package/dist/common.mjs +1 -1
  4. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  5. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  6. package/dist/components/biz/business/advertisement/banner-ad/client.d.mts +3 -1
  7. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
  8. package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +12 -0
  9. package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +2 -0
  10. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
  11. package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +12 -0
  12. package/dist/components/biz/business/advertisement/icon-ad/client.d.mts +3 -1
  13. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
  14. package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +12 -0
  15. package/dist/components/biz/business/advertisement/popup-ad/client.d.mts +3 -1
  16. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
  17. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +3 -1
  18. package/dist/components/biz/business/advertisement/text-ad/client.d.mts +3 -1
  19. package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
  20. package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +12 -0
  21. package/dist/components/biz/business/detail/shared/detail-info-tags.mjs +1 -1
  22. package/dist/components/biz/business/detail/shared/detail-info-title.mjs +1 -1
  23. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  24. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
  25. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  26. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
  27. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  28. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  29. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  30. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  31. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  32. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  33. package/dist/components/biz/business/profile/tracking.mjs +2 -0
  34. package/dist/components/biz/business/search-bar/variants/basic-search-bar/runtime/client.mjs +1 -1
  35. package/dist/components/biz/business/search-history/client.mjs +1 -1
  36. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  37. package/dist/components/common/analytics-init/analytics-init.mjs +1 -1
  38. package/dist/components/common/analytics-init/index.d.mts +2 -1
  39. package/dist/components/common/analytics-init/sensor-init.d.mts +20 -0
  40. package/dist/components/common/analytics-init/sensor-init.mjs +2 -0
  41. package/dist/components/common/list/user-activity-list/user-activity-list-item.d.mts +2 -0
  42. package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -1
  43. package/dist/components/common/list/user-activity-list/user-activity-list.d.mts +2 -0
  44. package/dist/components/common/list/user-activity-list/user-activity-list.mjs +1 -1
  45. package/dist/components/common/list/waterfall-recommend/recommend-badge-style.mjs +1 -1
  46. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +4 -1
  47. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -1
  48. package/dist/components/common/login-dialog/login-dialog.mjs +1 -1
  49. package/dist/components/common/series-episodes/index.mjs +1 -1
  50. package/dist/components/common/top-nav-bar/client.mjs +1 -1
  51. package/dist/components/common/video-player/preroll-skip-button-content.mjs +2 -0
  52. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
  53. package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +2 -0
  54. package/dist/components/common/video-player/video-preroll-ad.mjs +1 -1
  55. package/dist/components/pages/(follow)/_components/header-nav/index.mjs +1 -1
  56. package/dist/components/pages/collection-add/page.mjs +1 -1
  57. package/dist/components/pages/collection-create/form.mjs +1 -1
  58. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  59. package/dist/components/pages/edit/page.mjs +1 -1
  60. package/dist/components/pages/feed-series/feed-series-client.mjs +1 -1
  61. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
  62. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  63. package/dist/components/pages/home/client.mjs +1 -1
  64. package/dist/components/pages/home/index.mjs +1 -1
  65. package/dist/components/pages/login/index.mjs +1 -1
  66. package/dist/components/pages/login/login-client.mjs +1 -1
  67. package/dist/components/pages/login/register.mjs +1 -1
  68. package/dist/components/pages/login/tracking.mjs +2 -0
  69. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
  70. package/dist/components/pages/publish/page-client.mjs +1 -1
  71. package/dist/components/pages/search/hot-recommend.mjs +1 -1
  72. package/dist/components/pages/search/page-client.mjs +1 -1
  73. package/dist/components/pages/search/search-result/search-user.mjs +1 -1
  74. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  75. package/dist/components/pages/search/search-result/shared.mjs +1 -1
  76. package/dist/components/pages/search/tracking.mjs +2 -0
  77. package/dist/components/pages/search-result/page-client.mjs +1 -1
  78. package/dist/components/pages/search-result/tracking.mjs +2 -0
  79. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  80. package/dist/components/pages/user-follow/_components/post-tab.mjs +1 -1
  81. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  82. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  83. package/dist/components/ui/badge.d.mts +1 -1
  84. package/dist/components/ui/button.d.mts +1 -1
  85. package/dist/components/ui/image.d.mts +4 -4
  86. package/dist/components/ui/link.mjs +1 -1
  87. package/dist/utils/tracking.d.mts +231 -0
  88. package/dist/utils/tracking.mjs +2 -0
  89. package/dist/utils.d.mts +2 -1
  90. package/dist/utils.mjs +1 -1
  91. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{usePathname as o}from"next/navigation";import s from"next/link";const c=[],l={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},u={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function d(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function f(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 p(e,t){let n=d(t);if(e.configType===1){let t=d(f(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 m(e,t){return e.findIndex(e=>p(e,t))}function h(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function g(d){let{items:p=c,mode:g=`renderer`}=d,_=o(),v=r(()=>{if(g===`editor`)return 0;let e=m(p??[],_);return e>=0?e:0},[p,_,g]),y=r(()=>(p??[]).some(e=>h(e)&&e.label.trim()!==``),[p]);if(!p?.length)return null;function b(e){g===`editor`&&e.preventDefault()}let x=`size-full rounded-[6px] bg-white/20`;return i(t,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:l,children:i(t,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:u,children:p.map((r,o)=>{let c=v===o,l=c?r.activeIcon:r.icon,u=r.label,d=h(r)&&u.trim()!==``,p=f(r),m=y?c?`gap-[5px]`:`gap-[4px]`:``,g=c?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#BFBFBF]`;return a(s,{href:p,className:`flex flex-col items-center justify-center ${m}`,"aria-current":c?`page`:void 0,"data-index":o,"data-webview-nav":`spa`,onClick:b,children:[i(t,{className:`relative size-5 shrink-0`,children:l?i(e,{src:l,alt:u,fill:!0,className:`object-contain`}):i(t,{className:c?`${x} bg-[#C043E8]`:x})}),y&&d?i(n,{"data-active":c,className:g,children:u}):null]},o)})})})}export{g as TabBarClient};
2
+ "use client";import{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{useMemo as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{usePathname as s}from"next/navigation";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},d={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function f(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function p(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function m(e,t){let n=f(t);if(e.configType===1){let t=f(p(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function h(e,t){return e.findIndex(e=>m(e,t))}function g(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function _(f){let{items:m=l,mode:_=`renderer`}=f,v=s(),y=i(()=>{if(_===`editor`)return 0;let e=h(m??[],v);return e>=0?e:0},[m,v,_]),b=i(()=>(m??[]).some(e=>g(e)&&e.label.trim()!==``),[m]);if(!m?.length)return null;function x(t,n){_===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let S=`size-full rounded-[6px] bg-white/20`;return a(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:a(n,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:d,children:m.map((e,i)=>{let s=y===i,l=s?e.activeIcon:e.icon,u=e.label,d=g(e)&&u.trim()!==``,f=p(e),m=b?s?`gap-[5px]`:`gap-[4px]`:``,h=s?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#BFBFBF]`;return o(c,{href:f,className:`flex flex-col items-center justify-center ${m}`,"aria-current":s?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>x(t,e),children:[a(n,{className:`relative size-5 shrink-0`,children:l?a(t,{src:l,alt:u,fill:!0,className:`object-contain`}):a(n,{className:s?`${S} bg-[#C043E8]`:S})}),b&&d?a(r,{"data-active":s,className:h,children:u}):null]},i)})})})}export{_ as TabBarClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{useEffect as t,useRef as n}from"react";const r=`funhub-web-sdk-script`;function i(e){return{appId:process.env.NEXT_PUBLIC_TRACK_APP_ID||`1`,uid:e||``,channel:process.env.NEXT_PUBLIC_TRACK_CHANNEL||`test`,domain:process.env.NEXT_PUBLIC_TRACK_DOMAIN||`https://api.shuifeng.cc`,prod:process.env.NODE_ENV===`production`}}function a(){return typeof window>`u`||window.WebSDK?Promise.resolve():(window.__funhubWebSdkLoader||(window.__funhubWebSdkLoader=new Promise((e,t)=>{let n=document.getElementById(r);if(n){n.addEventListener(`load`,()=>e(),{once:!0}),n.addEventListener(`error`,()=>t(Error(`load web sdk failed`)),{once:!0});return}let i=document.createElement(`script`);i.id=r,i.async=!0,i.src=`/web-sdk-v1.js`,i.onload=()=>e(),i.onerror=()=>t(Error(`load web sdk failed`)),document.head.appendChild(i)})),window.__funhubWebSdkLoader)}function o(){let r=e(e=>e.userId),o=n(``);return t(()=>{let e=!1;async function t(){if(await a(),e||!window.WebSDK?.init)return;let t=i(r),n=JSON.stringify(t);n!==o.current&&(window.WebSDK.init(t),o.current=n)}return t(),()=>{e=!0}},[r]),null}export{o as AnalyticsInit};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{useEffect as t,useRef as n}from"react";const r=`funhub-web-sdk-script`;function i(e){return{appId:process.env.NEXT_PUBLIC_TRACK_APP_ID,uid:e||``,channel:process.env.NEXT_PUBLIC_TRACK_CHANNEL,domain:process.env.NEXT_PUBLIC_TRACK_DOMAIN,prod:process.env.NODE_ENV===`production`}}function a(){return typeof window>`u`||window.WebSDK?Promise.resolve():(window.__funhubWebSdkLoader||(window.__funhubWebSdkLoader=new Promise((e,t)=>{let n=document.getElementById(r);if(n){n.addEventListener(`load`,()=>e(),{once:!0}),n.addEventListener(`error`,()=>t(Error(`load web sdk failed`)),{once:!0});return}let i=document.createElement(`script`);i.id=r,i.async=!0,i.src=`/web-sdk-v1.js`,i.onload=()=>e(),i.onerror=()=>t(Error(`load web sdk failed`)),document.head.appendChild(i)})),window.__funhubWebSdkLoader)}function o(){let r=e(e=>e.userId),o=n(``);return t(()=>{let e=!1;async function t(){if(await a(),e||!window.WebSDK?.init)return;let t=i(r),n=JSON.stringify(t);if(n===o.current)return;window.WebSDK.init(t);let s=window.WebSDK.track.bind(window.WebSDK);window.WebSDK.track=e=>s(e),o.current=n}return t(),()=>{e=!0}},[r]),null}export{o as AnalyticsInit};
@@ -1,2 +1,3 @@
1
1
 
2
- import { AnalyticsInit } from "./analytics-init.mjs";
2
+ import { AnalyticsInit } from "./analytics-init.mjs";
3
+ import { SensorInit } from "./sensor-init.mjs";
@@ -0,0 +1,20 @@
1
+
2
+ //#region components/common/analytics-init/sensor-init.d.ts
3
+ declare global {
4
+ interface Window {
5
+ sensorsDataAnalytic201505?: {
6
+ init: (options: Record<string, unknown>) => void;
7
+ quick: (method: string) => void;
8
+ track: (event: string, properties?: Record<string, unknown>) => void;
9
+ };
10
+ sensors?: Window['sensorsDataAnalytic201505'];
11
+ __funhubSensorSdkLoader?: Promise<void>;
12
+ }
13
+ }
14
+ /**
15
+ * 在应用根部初始化神策埋点 SDK,初始化后挂载到 window.sensors 供全局使用。
16
+ * 使用模块级 sensorInitialized 标志确保跨组件重挂载只初始化一次。
17
+ */
18
+ declare function SensorInit(): null;
19
+ //#endregion
20
+ export { SensorInit };
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{userSelectors as e}from"../../../store/modules/user-store.mjs";import{useEffect as t}from"react";const n=`funhub-sensor-sdk-script`;let r=!1;function i(){let e=`__funhub_device_id`,t=localStorage.getItem(e);return t||(t=crypto.randomUUID().replace(/-/g,``),localStorage.setItem(e,t)),t}function a(){let e=`__funhub_session_id`,t=sessionStorage.getItem(e);return t||(t=crypto.randomUUID().replace(/-/g,``),sessionStorage.setItem(e,t)),t}function o(){let e=navigator.userAgent;return/android/i.test(e)?`Android`:/iPad|iPhone|iPod/.test(e)?`iOS`:`PC`}function s(){return{channel:process.env.NEXT_PUBLIC_TRACK_CHANNEL||``,event_id:crypto.randomUUID().replace(/-/g,``),app_id:process.env.NEXT_PUBLIC_TRACK_APP_ID||``,uid:e.getUserId()||``,sid:a(),client_ts:Math.floor(Date.now()/1e3),device:o(),device_id:i(),user_agent:navigator.userAgent,device_brand:``,device_model:``}}function c(){return{server_url:process.env.NEXT_PUBLIC_SENSOR_SERVER_URL,is_track_single_page:!1,use_client_time:!0,send_type:`beacon`,heatmap:{clickmap:`not_collect`,scroll_notice_map:`not_collect`}}}function l(){return typeof window>`u`||window.sensorsDataAnalytic201505?Promise.resolve():(window.__funhubSensorSdkLoader||(window.__funhubSensorSdkLoader=new Promise((e,t)=>{let r=document.getElementById(n);if(r){r.addEventListener(`load`,()=>e(),{once:!0}),r.addEventListener(`error`,()=>t(Error(`load sensor sdk failed`)),{once:!0});return}let i=document.createElement(`script`);i.id=n,i.async=!0,i.src=`/sensorsdata.js`,i.onload=()=>e(),i.onerror=()=>t(Error(`load sensor sdk failed`)),document.head.appendChild(i)})),window.__funhubSensorSdkLoader)}function u(){return t(()=>{let e=!1;async function t(){if(r||(await l(),e))return;let t=window.sensorsDataAnalytic201505;if(!t)return;let n=c();if(!n||r)return;r=!0,t.init(n),t.quick(`autoTrack`);let i=t.track.bind(t);t.track=(e,t)=>{let n={...s()};return n.payload={...t},i(e,n)},window.sensors=t}return t(),()=>{e=!0}},[]),null}export{u as SensorInit};
@@ -94,6 +94,8 @@ interface UserActivityListItemProps {
94
94
  onActionSuccess?: () => void;
95
95
  /** 收藏状态变化回调 */
96
96
  onCollectChange?: (contentId: string, isCollected: boolean) => void;
97
+ /** 点击内容主体并跳转时的额外回调,用于外部埋点等场景。 */
98
+ onItemClick?: (contentId: string) => void;
97
99
  }
98
100
  /**
99
101
  * 用户动态列表项
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Image as t}from"../../../ui/image.mjs";import{Avatar as n,AvatarFallback as r,AvatarImage as i}from"../../../ui/avatar.mjs";import{Box as a}from"../../../ui/box.mjs";import{Checkbox as o}from"../../../ui/checkbox.mjs";import{Text as s}from"../../../ui/text.mjs";import{Time as c}from"../../../ui/time.mjs";import{useMediaPreview as l}from"../../media-preview/index.mjs";import{useContentOperate as u}from"../../../../hooks/use-content-operate.mjs";import d from"../../../../assets/icons/detail/video_play.mjs";import{ActivityCommentButton as f,ActivityDeleteButton as p,ActivityDislikeButton as ee,ActivityLikeButton as te,ActivityShareButton as m}from"./user-activity-list-actions.mjs";import{useEffect as h,useRef as ne,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";const x=[],S={post:2};function C({medias:e=x,className:n=``,onItemClick:r}){let i=b(`components.ui.list.userActivityList`),o=(e||[]).filter(Boolean).slice(0,9);if(!o.length)return null;function s(e){r?.(e)}function c(e,n,o){let{is_video:c,media_url:l,cover_image:u}=e||{},f=!!c,p=f?u||l||``:l||``;return p?v(a,{className:o||`relative w-full h-full`,onClick:e=>{r&&(e.stopPropagation(),e.preventDefault(),s(n))},children:[_(t,{src:p,alt:i(`userActivityListItem.mediaAlt`),fill:!0,className:`object-cover`}),f&&_(a,{className:`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-[rgba(0,0,0,0.5)] rounded-full`,children:_(d,{width:36,height:36})})]},n):null}if(o.length===1){let{is_video:e,media_url:t,cover_image:r}=o[0]||{};return _(a,{className:n,children:_(a,{className:`w-full rounded-xl overflow-hidden`,children:c({is_video:e,media_url:t,cover_image:r,__src:e?r||t||``:t||``},0,`relative w-full aspect-square`)})})}return o.length===2?_(a,{className:n,children:_(a,{className:`w-full flex gap-0.5 rounded-xl overflow-hidden`,children:o.map((e,t)=>_(a,{className:`flex-1 aspect-square relative`,children:c(e,t)},t))})}):o.length===3?_(a,{className:n,children:v(a,{className:`w-full h-89.25 flex gap-0.5 rounded-xl overflow-hidden`,children:[_(a,{className:`w-[56.65%] h-full relative`,children:c(o[0],0)}),_(a,{className:`flex-1 flex flex-col gap-0.5`,children:o.slice(1).map((e,t)=>_(a,{className:`w-full flex-1 relative`,children:c(e,t+1)},t))})]})}):o.length===4?_(a,{className:n,children:_(a,{className:`w-full h-89.25 rounded-xl overflow-hidden grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))})}):o.length===5?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[_(a,{className:`w-full h-49.5 flex gap-0.5`,children:o.slice(0,2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),_(a,{className:`w-full h-33.5 flex gap-0.5`,children:o.slice(2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t+2)},t))})]})}):o.length===6?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[v(a,{className:`w-full h-67.5 flex gap-0.5`,children:[_(a,{className:`w-67.5 h-full relative`,children:c(o[0],0)}),_(a,{className:`flex-1 grid grid-cols-1 grid-rows-2 gap-0.5`,children:o.slice(1,3).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+1)},t))})]}),_(a,{className:`w-full h-33.5 grid grid-cols-3 grid-rows-1 gap-0.5`,children:o.slice(3).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+3)},t))})]})}):o.length===7?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex gap-0.5`,children:[_(a,{className:`w-76 h-67.5 grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.slice(0,4).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))}),_(a,{className:`flex-1 grid grid-cols-1 grid-rows-3 gap-0.5`,children:o.slice(4).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+4)},t))})]})}):o.length===8?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[_(a,{className:`w-full h-33.5 flex gap-0.5 items-center`,children:o.slice(0,2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),_(a,{className:`w-full h-67.5 grid grid-cols-3 grid-rows-2 gap-0.5`,children:o.slice(2).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+2)},t))})]})}):_(a,{className:n,children:_(a,{className:`w-full h-101.5 rounded-xl overflow-hidden grid grid-cols-3 grid-rows-3 gap-0.5`,children:o.slice(0,9).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))})})}function w(t){let d=b(`components.ui.list.userActivityList`),{content_id:x,author:w,rightSlot:T,create_time:re,content:E,medias:ie,canEdit:D=!1,isDeleting:ae=!1,isEditMode:O=!1,isSelected:oe=!1,onToggle:k,interaction:A,like_count:j=0,is_liked:M=!1,onLikeSuccess:se,dislike_count:N=0,is_dislike:P=!1,is_collected:ce,onDislikeSuccess:F,comment_count:I=0,onDelete:L,onShare:R,onShareSuccess:z,onActionSuccess:B,onCollectChange:V}=t,H=A?.is_collected??ce??!1,[U,W]=g({isLiked:M,likeCount:j,isDisliked:P,dislikeCount:N,isCollected:H}),[G,K]=g(!1),[le,q]=g(!1),J=ne(null),Y=ie?.filter(Boolean)??[],X=w?.nickname||w?.nick_name||``,ue=w?.avatar||w?.avatar_url||``;h(()=>{W({isLiked:M,likeCount:j,isDisliked:P,dislikeCount:N,isCollected:H})},[N,P,M,j,H]),h(()=>{K(!1)},[E]),h(()=>()=>{J.current&&=(clearTimeout(J.current),null)},[]);function de(e){W(t=>({...t,isLiked:e.isLiked,likeCount:e.count,isDisliked:e.isDisliked??t.isDisliked,dislikeCount:e.dislikeCount??t.dislikeCount})),se?.(e)}function fe(e){W(t=>({...t,isDisliked:e.isDisliked,dislikeCount:e.count,isLiked:e.isLiked??t.isLiked,likeCount:e.likeCount??t.likeCount})),F?.(e)}let{handleToCollectionOperate:pe}=u({id:x||``,isLike:U.isLiked,isDislike:U.isDisliked,isCollect:U.isCollected,likeCnt:U.likeCount,dislikeCnt:U.dislikeCount,contentType:S.post});function Z(){J.current&&=(clearTimeout(J.current),null)}function me(e){W(t=>({...t,isCollected:e})),B?.(),x&&V?.(x,e)}function Q(e){if(!x){y.error(d(`userActivityListItem.collectFailed`));return}if(!le){if(q(!0),Z(),!pe({currentCollect:e,onUpdate:({isCollect:e})=>{Z(),me(e),q(!1)}})){y.error(d(`userActivityListItem.collectFailed`)),q(!1);return}J.current=setTimeout(()=>{q(!1),J.current=null},300)}}function he(e){return!!(e&&e.length>180)}function ge(){K(e=>!e)}let $=e(),_e=()=>{$.push(`/post/${x}`)},ve=e=>{e.stopPropagation(),e.preventDefault(),$.push(`/profile/${w?.user_id}`)},ye=()=>{$.push(`/post/${x}?tab=comment`)},be=l();function xe(e){let t=Y.map(e=>({src:e.media_url,type:e.is_video?`video`:`image`,cover:e.cover_image}));t.length&&be.open(t,e)}return _(a,{className:`flex items-start gap-2 p-3`,children:v(a,{className:`flex-1 min-w-0`,children:[v(a,{className:`flex items-center gap-2 mb-3`,children:[v(a,{className:`flex items-center gap-2 shrink-0`,children:[O&&_(o,{checked:oe,onCheckedChange:k}),v(n,{className:`w-10 h-10`,onClick:ve,children:[_(i,{src:ue,alt:X}),_(r,{})]})]}),v(a,{className:`flex-1 min-w-0`,children:[_(s,{as:`p`,className:`text-sm text-text1 line-clamp-1 font-medium`,children:X}),_(a,{className:`h-[1em]`,children:_(c,{value:re,className:`text-xs text-text3`,format:`YYYY-MM-DD HH:mm`})})]}),T&&_(a,{className:`shrink-0`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:T}),D&&_(p,{onClick:L,disabled:ae})]}),v(a,{onClick:_e,children:[v(a,{className:`mb-3`,children:[E&&v(a,{children:[_(s,{className:`text-sm text-text1 leading-5 whitespace-pre-wrap text-ellipsis ${G?`break-all`:`line-clamp-3`}`,dangerouslySetInnerHTML:{__html:E}}),he(E)&&_(a,{className:`mt-1 text-xs text-text3`,onClick:e=>{e.stopPropagation(),e.preventDefault(),ge()},children:d(G?`userActivityListItem.collapse`:`userActivityListItem.expand`)})]}),Y.length>0&&_(C,{className:`mt-2`,medias:Y,onItemClick:xe})]}),v(a,{className:`flex items-center justify-around text-text3 *:min-w-20`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:[_(te,{contentId:x||``,count:U.likeCount,isLiked:U.isLiked,isDisliked:U.isDisliked,dislikeCount:U.dislikeCount,onLikeSuccess:de,onSuccess:B}),_(ee,{contentId:x||``,count:U.dislikeCount,isDisliked:U.isDisliked,isLiked:U.isLiked,likeCount:U.likeCount,onDislikeSuccess:fe,onSuccess:B}),_(f,{count:I,onClick:ye}),_(m,{isCollected:U.isCollected,contentId:x||``,userId:w?.user_id??``,onShareSuccess:z,onClick:R,onCollect:()=>Q(!1),onUncollect:()=>Q(!0)})]})]})]})})}export{w as UserActivityListItem,C as UserActivityMediaGrid};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Image as t}from"../../../ui/image.mjs";import{Avatar as n,AvatarFallback as r,AvatarImage as i}from"../../../ui/avatar.mjs";import{Box as a}from"../../../ui/box.mjs";import{Checkbox as o}from"../../../ui/checkbox.mjs";import{Text as s}from"../../../ui/text.mjs";import{Time as c}from"../../../ui/time.mjs";import{useMediaPreview as l}from"../../media-preview/index.mjs";import{useContentOperate as u}from"../../../../hooks/use-content-operate.mjs";import d from"../../../../assets/icons/detail/video_play.mjs";import{ActivityCommentButton as f,ActivityDeleteButton as p,ActivityDislikeButton as ee,ActivityLikeButton as te,ActivityShareButton as m}from"./user-activity-list-actions.mjs";import{useEffect as h,useRef as ne,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";const x=[],re={post:2};function S({medias:e=x,className:n=``,onItemClick:r}){let i=b(`components.ui.list.userActivityList`),o=(e||[]).filter(Boolean).slice(0,9);if(!o.length)return null;function s(e){r?.(e)}function c(e,n,o){let{is_video:c,media_url:l,cover_image:u}=e||{},f=!!c,p=f?u||l||``:l||``;return p?v(a,{className:o||`relative w-full h-full`,onClick:e=>{r&&(e.stopPropagation(),e.preventDefault(),s(n))},children:[_(t,{src:p,alt:i(`userActivityListItem.mediaAlt`),fill:!0,className:`object-cover`}),f&&_(a,{className:`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-[rgba(0,0,0,0.5)] rounded-full`,children:_(d,{width:36,height:36})})]},n):null}if(o.length===1){let{is_video:e,media_url:t,cover_image:r}=o[0]||{};return _(a,{className:n,children:_(a,{className:`w-full rounded-xl overflow-hidden`,children:c({is_video:e,media_url:t,cover_image:r,__src:e?r||t||``:t||``},0,`relative w-full aspect-square`)})})}return o.length===2?_(a,{className:n,children:_(a,{className:`w-full flex gap-0.5 rounded-xl overflow-hidden`,children:o.map((e,t)=>_(a,{className:`flex-1 aspect-square relative`,children:c(e,t)},t))})}):o.length===3?_(a,{className:n,children:v(a,{className:`w-full h-89.25 flex gap-0.5 rounded-xl overflow-hidden`,children:[_(a,{className:`w-[56.65%] h-full relative`,children:c(o[0],0)}),_(a,{className:`flex-1 flex flex-col gap-0.5`,children:o.slice(1).map((e,t)=>_(a,{className:`w-full flex-1 relative`,children:c(e,t+1)},t))})]})}):o.length===4?_(a,{className:n,children:_(a,{className:`w-full h-89.25 rounded-xl overflow-hidden grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))})}):o.length===5?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[_(a,{className:`w-full h-49.5 flex gap-0.5`,children:o.slice(0,2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),_(a,{className:`w-full h-33.5 flex gap-0.5`,children:o.slice(2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t+2)},t))})]})}):o.length===6?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[v(a,{className:`w-full h-67.5 flex gap-0.5`,children:[_(a,{className:`w-67.5 h-full relative`,children:c(o[0],0)}),_(a,{className:`flex-1 grid grid-cols-1 grid-rows-2 gap-0.5`,children:o.slice(1,3).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+1)},t))})]}),_(a,{className:`w-full h-33.5 grid grid-cols-3 grid-rows-1 gap-0.5`,children:o.slice(3).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+3)},t))})]})}):o.length===7?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex gap-0.5`,children:[_(a,{className:`w-76 h-67.5 grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.slice(0,4).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))}),_(a,{className:`flex-1 grid grid-cols-1 grid-rows-3 gap-0.5`,children:o.slice(4).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+4)},t))})]})}):o.length===8?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[_(a,{className:`w-full h-33.5 flex gap-0.5 items-center`,children:o.slice(0,2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),_(a,{className:`w-full h-67.5 grid grid-cols-3 grid-rows-2 gap-0.5`,children:o.slice(2).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+2)},t))})]})}):_(a,{className:n,children:_(a,{className:`w-full h-101.5 rounded-xl overflow-hidden grid grid-cols-3 grid-rows-3 gap-0.5`,children:o.slice(0,9).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))})})}function C(t){let d=b(`components.ui.list.userActivityList`),{content_id:x,author:C,rightSlot:w,create_time:T,content:E,medias:D,canEdit:O=!1,isDeleting:ie=!1,isEditMode:ae=!1,isSelected:oe=!1,onToggle:se,interaction:ce,like_count:k=0,is_liked:A=!1,onLikeSuccess:le,dislike_count:j=0,is_dislike:M=!1,is_collected:ue,onDislikeSuccess:N,comment_count:P=0,onDelete:F,onShare:I,onShareSuccess:L,onActionSuccess:R,onCollectChange:z,onItemClick:B}=t,V=ce?.is_collected??ue??!1,[H,U]=g({isLiked:A,likeCount:k,isDisliked:M,dislikeCount:j,isCollected:V}),[W,G]=g(!1),[de,K]=g(!1),q=ne(null),J=D?.filter(Boolean)??[],Y=C?.nickname||C?.nick_name||``,fe=C?.avatar||C?.avatar_url||``;h(()=>{U({isLiked:A,likeCount:k,isDisliked:M,dislikeCount:j,isCollected:V})},[j,M,A,k,V]),h(()=>{G(!1)},[E]),h(()=>()=>{q.current&&=(clearTimeout(q.current),null)},[]);function pe(e){U(t=>({...t,isLiked:e.isLiked,likeCount:e.count,isDisliked:e.isDisliked??t.isDisliked,dislikeCount:e.dislikeCount??t.dislikeCount})),le?.(e)}function me(e){U(t=>({...t,isDisliked:e.isDisliked,dislikeCount:e.count,isLiked:e.isLiked??t.isLiked,likeCount:e.likeCount??t.likeCount})),N?.(e)}let{handleToCollectionOperate:he}=u({id:x||``,isLike:H.isLiked,isDislike:H.isDisliked,isCollect:H.isCollected,likeCnt:H.likeCount,dislikeCnt:H.dislikeCount,contentType:re.post});function X(){q.current&&=(clearTimeout(q.current),null)}function Z(e){U(t=>({...t,isCollected:e})),R?.(),x&&z?.(x,e)}function Q(e){if(!x){y.error(d(`userActivityListItem.collectFailed`));return}if(!de){if(K(!0),X(),!he({currentCollect:e,onUpdate:({isCollect:e})=>{X(),Z(e),K(!1)}})){y.error(d(`userActivityListItem.collectFailed`)),K(!1);return}q.current=setTimeout(()=>{K(!1),q.current=null},300)}}function ge(e){return!!(e&&e.length>180)}function _e(){G(e=>!e)}let $=e(),ve=()=>{B?.(x??``),$.push(`/post/${x}`)},ye=e=>{e.stopPropagation(),e.preventDefault(),$.push(`/profile/${C?.user_id}`)},be=()=>{$.push(`/post/${x}?tab=comment`)},xe=l();function Se(e){let t=J.map(e=>({src:e.media_url,type:e.is_video?`video`:`image`,cover:e.cover_image}));t.length&&xe.open(t,e)}return _(a,{className:`flex items-start gap-2 p-3`,children:v(a,{className:`flex-1 min-w-0`,children:[v(a,{className:`flex items-center gap-2 mb-3`,children:[v(a,{className:`flex items-center gap-2 shrink-0`,children:[ae&&_(o,{checked:oe,onCheckedChange:se}),v(n,{className:`w-10 h-10`,onClick:ye,children:[_(i,{src:fe,alt:Y}),_(r,{})]})]}),v(a,{className:`flex-1 min-w-0`,children:[_(s,{as:`p`,className:`text-sm text-text1 line-clamp-1 font-medium`,children:Y}),_(a,{className:`h-[1em]`,children:_(c,{value:T,className:`text-xs text-text3`,format:`YYYY-MM-DD HH:mm`})})]}),w&&_(a,{className:`shrink-0`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:w}),O&&_(p,{onClick:F,disabled:ie})]}),v(a,{onClick:ve,children:[v(a,{className:`mb-3`,children:[E&&v(a,{children:[_(s,{className:`text-sm text-text1 leading-5 whitespace-pre-wrap text-ellipsis ${W?`break-all`:`line-clamp-3`}`,dangerouslySetInnerHTML:{__html:E}}),ge(E)&&_(a,{className:`mt-1 text-xs text-text3`,onClick:e=>{e.stopPropagation(),e.preventDefault(),_e()},children:d(W?`userActivityListItem.collapse`:`userActivityListItem.expand`)})]}),J.length>0&&_(S,{className:`mt-2`,medias:J,onItemClick:Se})]}),v(a,{className:`flex items-center justify-around text-text3 *:min-w-20`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:[_(te,{contentId:x||``,count:H.likeCount,isLiked:H.isLiked,isDisliked:H.isDisliked,dislikeCount:H.dislikeCount,onLikeSuccess:pe,onSuccess:R}),_(ee,{contentId:x||``,count:H.dislikeCount,isDisliked:H.isDisliked,isLiked:H.isLiked,likeCount:H.likeCount,onDislikeSuccess:me,onSuccess:R}),_(f,{count:P,onClick:be}),_(m,{isCollected:H.isCollected,contentId:x||``,userId:C?.user_id??``,onShareSuccess:L,onClick:I,onCollect:()=>Q(!1),onUncollect:()=>Q(!0)})]})]})]})})}export{C as UserActivityListItem,S as UserActivityMediaGrid};
@@ -32,6 +32,8 @@ interface UserActivityListProps {
32
32
  onShareQQ?: (contentId: string) => void;
33
33
  /** 分享到朋友圈回调。 */
34
34
  onShareMoments?: (contentId: string) => void;
35
+ /** 点击帖子项并跳转时的额外回调,用于外部埋点等场景。 */
36
+ onItemClick?: (contentId: string) => void;
35
37
  }
36
38
  /**
37
39
  * 用户动态列表组件。
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../ui/box.mjs";import{List as t}from"../../../ui/list.mjs";import{Text as n}from"../../../ui/text.mjs";import{normalizeTimeToMilliseconds as r}from"../../../ui/time.mjs";import{UserActivityListItemSkeleton as i}from"../../skeleton/user-activity-list-item-skeleton.mjs";import{UserActivityListItem as a}from"./user-activity-list-item.mjs";import{useEffect as o,useMemo as s,useState as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";function p(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function m(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return i.setDate(i.getDate()-1),n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function h(r){let h=f(`components.ui.list`),[g,_]=c(!1),{list:v,loading:y,hasMore:b=!1,loadMore:x,showGroupHeaders:S=!0,emptyText:C,canEdit:w=!1,isEditMode:T,selectedIds:E,onToggleSelection:D,onActionSuccess:O}=r,k=C??h(`userActivityList.empty`);o(()=>{_(!0)},[]);let A=S&&g,{todayList:j,yesterdayList:M,earlierList:N}=s(()=>{if(!A)return{todayList:[],yesterdayList:[],earlierList:v};let e=[],t=[],n=[];for(let r of v)p(r.create_time)?e.push(r):m(r.create_time)?t.push(r):n.push(r);return{todayList:e,yesterdayList:t,earlierList:n}},[v,A]);return y&&v.length===0?u(e,{className:`bg-bg1`,children:Array.from({length:3}).map((e,t)=>u(i,{isEditMode:T},`user-activity-list-item-skeleton-${t}`))}):u(l,{children:u(t,{loading:y,loadMore:x,hasMore:b,empty:`no-content`,emptyText:k,children:A?d(l,{children:[j.length>0&&d(l,{children:[u(e,{className:` `,children:u(n,{className:`text-lg text-text1`,children:h(`userActivityList.today`)})}),j.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected},e.content_id))]}),M.length>0&&d(l,{children:[u(e,{className:` `,children:u(n,{className:`text-lg text-text1`,children:h(`userActivityList.yesterday`)})}),M.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected},e.content_id))]}),N.length>0&&d(l,{children:[u(e,{className:` `,children:u(n,{className:`text-lg text-text1`,children:h(`userActivityList.earlier`)})}),N.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected},e.content_id))]})]}):v.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected},e.content_id??``))})})}export{h as UserActivityList};
2
+ "use client";import{Box as e}from"../../../ui/box.mjs";import{List as t}from"../../../ui/list.mjs";import{Text as n}from"../../../ui/text.mjs";import{normalizeTimeToMilliseconds as r}from"../../../ui/time.mjs";import{UserActivityListItemSkeleton as i}from"../../skeleton/user-activity-list-item-skeleton.mjs";import{UserActivityListItem as a}from"./user-activity-list-item.mjs";import{useEffect as o,useMemo as s,useState as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";function p(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function m(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return i.setDate(i.getDate()-1),n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function h(r){let h=f(`components.ui.list`),[g,_]=c(!1),{list:v,loading:y,hasMore:b=!1,loadMore:x,showGroupHeaders:S=!0,emptyText:C,canEdit:w=!1,isEditMode:T,selectedIds:E,onToggleSelection:D,onActionSuccess:O,onItemClick:k}=r,A=C??h(`userActivityList.empty`);o(()=>{_(!0)},[]);let j=S&&g,{todayList:M,yesterdayList:N,earlierList:P}=s(()=>{if(!j)return{todayList:[],yesterdayList:[],earlierList:v};let e=[],t=[],n=[];for(let r of v)p(r.create_time)?e.push(r):m(r.create_time)?t.push(r):n.push(r);return{todayList:e,yesterdayList:t,earlierList:n}},[v,j]);return y&&v.length===0?u(e,{className:`bg-bg1`,children:Array.from({length:3}).map((e,t)=>u(i,{isEditMode:T},`user-activity-list-item-skeleton-${t}`))}):u(l,{children:u(t,{loading:y,loadMore:x,hasMore:b,empty:`no-content`,emptyText:A,children:j?d(l,{children:[M.length>0&&d(l,{children:[u(e,{className:` `,children:u(n,{className:`text-lg text-text1`,children:h(`userActivityList.today`)})}),M.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected,onItemClick:k},e.content_id))]}),N.length>0&&d(l,{children:[u(e,{className:` `,children:u(n,{className:`text-lg text-text1`,children:h(`userActivityList.yesterday`)})}),N.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected,onItemClick:k},e.content_id))]}),P.length>0&&d(l,{children:[u(e,{className:` `,children:u(n,{className:`text-lg text-text1`,children:h(`userActivityList.earlier`)})}),P.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected,onItemClick:k},e.content_id))]})]}):v.map(e=>u(a,{...e,canEdit:w,isEditMode:T,isSelected:E?.has(e.content_id??``),onToggle:()=>D?.(e.content_id??``),onActionSuccess:O,is_dislike:e.interaction?.is_dislike||e.is_dislike,is_liked:e.interaction?.is_liked||e.is_liked,is_collected:e.is_collected||e.interaction?.is_collected,onItemClick:k},e.content_id??``))})})}export{h as UserActivityList};
@@ -1,2 +1,2 @@
1
1
 
2
- const e=`absolute left-[8px] top-[12px] z-10 flex min-w-0 items-center`,t=`h-[18px] w-auto max-w-[96px] rounded-[4px] object-contain`;function n(e){return typeof e==`string`?e.trim():``}export{t as RECOMMEND_BADGE_IMAGE_CLASS_NAME,e as RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME,n as normalizeRecommendBadgeUrl};
2
+ const e=`absolute left-[8px] top-[12px] z-[1] flex min-w-0 items-center`,t=`h-[18px] w-auto max-w-[96px] rounded-[4px] object-contain`;function n(e){return typeof e==`string`?e.trim():``}export{t as RECOMMEND_BADGE_IMAGE_CLASS_NAME,e as RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME,n as normalizeRecommendBadgeUrl};
@@ -88,6 +88,8 @@ interface WaterfallRecommendProps {
88
88
  selectedIds?: Set<string>;
89
89
  /** 切换某项选中状态。 */
90
90
  onToggleSelection?: (id: string) => void;
91
+ /** 点击某卡片时回调(非选择模式)。 */
92
+ onItemClick?: (item: WaterfallRecommendItem) => void;
91
93
  }
92
94
  /**
93
95
  * 纯 UI 瀑布流组件。
@@ -108,7 +110,8 @@ declare function WaterfallRecommend({
108
110
  getItemRef,
109
111
  selectionMode,
110
112
  selectedIds,
111
- onToggleSelection
113
+ onToggleSelection,
114
+ onItemClick
112
115
  }: WaterfallRecommendProps): react_jsx_runtime0.JSX.Element;
113
116
  //#endregion
114
117
  export { WaterfallRecommend, WaterfallRecommendCardKind, WaterfallRecommendColumnName, WaterfallRecommendColumns, WaterfallRecommendItem, WaterfallRecommendProps };
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import i from"../../../../assets/icons/detail/video_flag.mjs";import{CollectionSelectIcon as a,CollectionSelectedIcon as o}from"../collection-list/collection-select-icon.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as s,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as c,normalizeRecommendBadgeUrl as l}from"./recommend-badge-style.mjs";import{WATERFALL_SHORT_CARD_ASPECT_RATIO as u,WATERFALL_TALL_CARD_ASPECT_RATIO as d,buildWaterfallRecommendLegacyDisplay as f}from"./waterfall-recommend-display.mjs";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";const g={backgroundImage:`var(--gradient-card-mask-strong)`};function _({title:e,moreHref:i,onMoreClick:a,moreIcon:o,columns:s,sectionClassName:c=`w-full`,headerClassName:l=`mb-[16px] flex items-center justify-between px-[16px]`,titleClassName:u=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,moreLinkClassName:d=`ml-[8px] flex size-[24px] shrink-0 items-center justify-center opacity-50`,containerClassName:f=`relative flex w-full gap-[15px] px-[16px]`,overlay:p,footer:g,getItemRef:_,selectionMode:y=!1,selectedIds:b,onToggleSelection:x}){return h(t,{className:c,children:[h(t,{className:l,children:[m(n,{className:u,children:e}),o&&i&&m(r,{href:i,"aria-label":`更多`,className:d,children:o}),o&&!i&&a&&m(`button`,{type:`button`,"aria-label":`更多`,className:d,onClick:a,children:o})]}),h(t,{className:f,children:[m(t,{className:`flex-1 min-w-0 flex flex-col`,children:s.left.map((e,t)=>m(`div`,{ref:_?.({item:e,column:`left`,columnIndex:t}),children:m(v,{item:e,selectionMode:y,selectedIds:b,onToggleSelection:x})},e.key))}),m(t,{className:`flex-1 min-w-0 flex flex-col`,children:s.right.map((e,t)=>m(`div`,{ref:_?.({item:e,column:`right`,columnIndex:t}),children:m(v,{item:e,selectionMode:y,selectedIds:b,onToggleSelection:x})},e.key))}),p]}),g]})}function v({item:_,selectionMode:v=!1,selectedIds:y,onToggleSelection:b}){let x=_.cardKind===`short`?u:d,S=_.selectionId??``,C=!!(S&&y?.has(S)),w=f(_),T=l(w.topLeftBadgeImageUrl);function E(){!v||!S||b?.(S)}let D=h(p,{children:[h(t,{className:`relative w-full overflow-hidden rounded-[8px] bg-[#18111f]`,style:{aspectRatio:x},children:[_.coverUrl&&m(e,{src:_.coverUrl,alt:_.title||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover`}),m(t,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:g,"aria-hidden":!0}),v&&m(t,{className:`pointer-events-none absolute left-[8px] top-[8px] z-20`,children:m(C?o:a,{})}),!v&&h(p,{children:[T&&m(t,{className:c,children:m(e,{src:T,alt:`角标`,width:96,height:18,className:s})}),w.topRightScoreText&&m(n,{as:`span`,className:`absolute right-[8px] top-[8px] z-10 shrink-0 text-[14px] leading-[22px] font-semibold text-[#FFC24B]`,children:w.topRightScoreText}),h(t,{className:`absolute left-[8px] right-[8px] bottom-[10px] z-10 flex items-end justify-between gap-[8px]`,children:[m(t,{className:`flex min-w-0 items-center gap-[4px]`,children:w.bottomLeftHeatText&&h(p,{children:[m(i,{className:`h-[16px] w-[16px] shrink-0 text-white`}),m(n,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:w.bottomLeftHeatText})]})}),w.bottomRightEpisodeText&&m(n,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:w.bottomRightEpisodeText})]})]})]}),!v&&m(t,{className:`mt-[8px] overflow-hidden`,children:m(n,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:w.title})})]});return v?m(`button`,{type:`button`,className:`mb-[16px] block w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:E,"aria-pressed":C,disabled:!S,children:D}):m(r,{href:_.href,className:`mb-[16px] block w-full`,children:D})}export{_ as WaterfallRecommend};
2
+ "use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import i from"../../../../assets/icons/detail/video_flag.mjs";import{CollectionSelectIcon as a,CollectionSelectedIcon as o}from"../collection-list/collection-select-icon.mjs";import{RECOMMEND_BADGE_IMAGE_CLASS_NAME as s,RECOMMEND_TOP_LEFT_BADGE_WRAPPER_CLASS_NAME as c,normalizeRecommendBadgeUrl as l}from"./recommend-badge-style.mjs";import{WATERFALL_SHORT_CARD_ASPECT_RATIO as u,WATERFALL_TALL_CARD_ASPECT_RATIO as d,buildWaterfallRecommendLegacyDisplay as f}from"./waterfall-recommend-display.mjs";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";const g={backgroundImage:`var(--gradient-card-mask-strong)`};function _({title:e,moreHref:i,onMoreClick:a,moreIcon:o,columns:s,sectionClassName:c=`w-full`,headerClassName:l=`mb-[16px] flex items-center justify-between px-[16px]`,titleClassName:u=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,moreLinkClassName:d=`ml-[8px] flex size-[24px] shrink-0 items-center justify-center opacity-50`,containerClassName:f=`relative flex w-full gap-[15px] px-[16px]`,overlay:p,footer:g,getItemRef:_,selectionMode:y=!1,selectedIds:b,onToggleSelection:x,onItemClick:S}){return h(t,{className:c,children:[h(t,{className:l,children:[m(n,{className:u,children:e}),o&&i&&m(r,{href:i,"aria-label":`更多`,className:d,onClick:a,children:o}),o&&!i&&a&&m(`button`,{type:`button`,"aria-label":`更多`,className:d,onClick:a,children:o})]}),h(t,{className:f,children:[m(t,{className:`flex-1 min-w-0 flex flex-col`,children:s.left.map((e,t)=>m(`div`,{ref:_?.({item:e,column:`left`,columnIndex:t}),children:m(v,{item:e,selectionMode:y,selectedIds:b,onToggleSelection:x,onItemClick:S})},e.key))}),m(t,{className:`flex-1 min-w-0 flex flex-col`,children:s.right.map((e,t)=>m(`div`,{ref:_?.({item:e,column:`right`,columnIndex:t}),children:m(v,{item:e,selectionMode:y,selectedIds:b,onToggleSelection:x,onItemClick:S})},e.key))}),p]}),g]})}function v({item:_,selectionMode:v=!1,selectedIds:y,onToggleSelection:b,onItemClick:x}){let S=_.cardKind===`short`?u:d,C=_.selectionId??``,w=!!(C&&y?.has(C)),T=f(_),E=l(T.topLeftBadgeImageUrl);function D(){!v||!C||b?.(C)}let O=h(p,{children:[h(t,{className:`relative w-full overflow-hidden rounded-[8px] bg-[#18111f]`,style:{aspectRatio:S},children:[_.coverUrl&&m(e,{src:_.coverUrl,alt:_.title||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover`}),m(t,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:g,"aria-hidden":!0}),v&&m(t,{className:`pointer-events-none absolute left-[8px] top-[8px] z-[2]`,children:m(w?o:a,{})}),!v&&h(p,{children:[E&&m(t,{className:c,children:m(e,{src:E,alt:`角标`,width:96,height:18,className:s})}),T.topRightScoreText&&m(n,{as:`span`,className:`absolute right-[8px] top-[8px] z-[1] shrink-0 text-[14px] leading-[22px] font-semibold text-[#FFC24B]`,children:T.topRightScoreText}),h(t,{className:`absolute left-[8px] right-[8px] bottom-[10px] z-[1] flex items-end justify-between gap-[8px]`,children:[m(t,{className:`flex min-w-0 items-center gap-[4px]`,children:T.bottomLeftHeatText&&h(p,{children:[m(i,{className:`h-[16px] w-[16px] shrink-0 text-white`}),m(n,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] text-white`,children:T.bottomLeftHeatText})]})}),T.bottomRightEpisodeText&&m(n,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] text-white`,children:T.bottomRightEpisodeText})]})]})]}),!v&&m(t,{className:`mt-[8px] overflow-hidden`,children:m(n,{as:`h3`,className:`line-clamp-2 text-[16px] leading-[22px] text-[--color-text-white80]`,children:T.title})})]});return v?m(`button`,{type:`button`,className:`mb-[16px] block w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:D,"aria-pressed":w,disabled:!C,children:O}):m(r,{href:_.href,className:`mb-[16px] block w-full`,onClick:()=>x?.(_),children:O})}export{_ as WaterfallRecommend};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{ensureGuestIdentity as e}from"../../../store/modules/user-store.mjs";import{Dialog as t,DialogContent as n}from"../../ui/dialog.mjs";import{useLoginModalStore as r}from"../../../store/modules/login-modal-store.mjs";import{Login as i}from"../../pages/login/index.mjs";import{useEffect as a}from"react";import{jsx as o}from"react/jsx-runtime";function s(s){let{contentClassName:c}=s,{isOpen:l,setOpen:u,entryStep:d}=r();return a(()=>{e()},[]),o(t,{open:l,onOpenChange:u,children:o(n,{showCloseButton:!1,className:`bg-transparent !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto ${c||``}`,children:o(i,{initialStep:d??`login`},`${l?`open`:`closed`}-${d??`login`}`)})})}export{s as LoginDialog};
2
+ "use client";import{ensureGuestIdentity as e}from"../../../store/modules/user-store.mjs";import{Dialog as t,DialogContent as n}from"../../ui/dialog.mjs";import{useLoginModalStore as r}from"../../../store/modules/login-modal-store.mjs";import{trackLoginPageClick as i,trackLoginPageView as a}from"../../pages/login/tracking.mjs";import{Login as o}from"../../pages/login/index.mjs";import{useEffect as s,useRef as c}from"react";import{jsx as l}from"react/jsx-runtime";function u(u){let{contentClassName:d}=u,{isOpen:f,setOpen:p,entryStep:m}=r(),h=c(0);return s(()=>{e()},[]),s(()=>{f&&(h.current=Date.now(),a(0))},[f]),l(t,{open:f,onOpenChange:p,children:l(n,{showCloseButton:!1,className:`bg-transparent !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto ${d||``}`,onClickCapture:e=>{e.target.closest(`[data-slot="checkbox"]`)&&i(e,`dialog_button`)},onClick:e=>{let t=e.target.closest(`button`);t&&t.dataset.skipDialogTrack!==`true`&&i(e,`dialog_button`)},children:l(o,{initialStep:m??`login`},`${f?`open`:`closed`}-${m??`login`}`)})})}export{u as LoginDialog};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import{Sheet as n,SheetContent as r,SheetHeader as i,SheetTitle as a}from"../../ui/sheet.mjs";import{Switch as o}from"../../ui/switch.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/common/right_arrow.mjs";import l from"../../ui/popup.mjs";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{toast as v}from"sonner";import{useTranslations as ee}from"next-intl";const y=`funhub:detail-series-popup-query`,b=`funhub:detail-series-popup-close`;function x(e){return e.type===y&&e instanceof CustomEvent}function S({active:e}){return e?_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`circle`,{cx:`16`,cy:`12`,r:`3`,fill:`white`}),g(`path`,{d:`M8 5H16C19.866 5 23 8.13401 23 12C23 15.866 19.866 19 16 19H8C4.13401 19 1 15.866 1 12C1 8.13401 4.13401 5 8 5ZM16 15C17.6569 15 19 13.6569 19 12C19 10.3431 17.6569 9 16 9C14.3431 9 13 10.3431 13 12C13 13.6569 14.3431 15 16 15Z`,fill:`#9054E5`})]}):_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`path`,{d:`M1.5 12C1.5 8.68629 4.18629 6 7.5 6H16.5C19.8137 6 22.5 8.68629 22.5 12C22.5 15.3137 19.8137 18 16.5 18H7.5C4.18629 18 1.5 15.3137 1.5 12Z`,stroke:`currentColor`,strokeWidth:`1.5`,strokeOpacity:`0.6`}),g(`circle`,{cx:`9`,cy:`12`,r:`3`,fill:`rgba(255,255,255,0.6)`})]})}function C(){return g(`svg`,{width:`20`,height:`20`,viewBox:`0 0 20 20`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`block h-[20px] w-[20px]`,"aria-hidden":!0,children:g(`path`,{d:`M10 8.61116L14.8611 3.75L16.25 5.13889L11.3889 10L16.25 14.8611L14.8611 16.25L10 11.3889L5.13889 16.25L3.75 14.8611L8.61111 10L3.75 5.13889L5.13889 3.75L10 8.61116Z`,fill:`currentColor`})})}function w(e,t){let n=String(t||``).trim();if(!n)return e;let r=e.replace(/\s+/g,``);return n.replace(/\s+/g,``)===r?e:`${e} ${n}`}function T(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.name||``,s=w(n(a),o);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function E(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function D(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function O(){return g(`span`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 overflow-hidden rounded-[8px] p-[0.5px]`,style:{backgroundImage:`linear-gradient(90deg, rgba(255,30,172,0.7) 0%, rgba(108,67,238,0) 100%), linear-gradient(180deg, #9756E3 0%, #6C43EE 100%)`},children:g(`span`,{className:`block h-full w-full`,style:{borderRadius:`7.5px`,backgroundColor:`#000000`,backgroundImage:`linear-gradient(90deg, rgba(246,206,255,0.1) 0%, rgba(246,206,255,0.1) 100%), linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.1) 100%)`}})})}function k(e){return e.mode===`detail`?g(j,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):g(A,{open:e.open,variant:e.variant,title:e.title,videoTitle:e.videoTitle,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle,popupStylePreset:e.popupStylePreset})}function A({open:s,variant:c,title:h,videoTitle:v,updateStatus:y,summaryText:b,seriesList:x,activeEpisodeId:E,showEpisodeTitle:k=!1,onToggleTitle:A,onClose:j,onSelectEpisode:M,popupBodyStyle:N,popupStylePreset:P=`default`}){let F=ee(`components.common.seriesEpisodes`),I=!!A,L=I&&k,R=c===`popup`&&P===`detail-style-one`,z=p(null),B=p(null),V=f(()=>T(x,`episode`,e=>F(`episodeLabel`,{episode:e})),[x,F]),H=f(()=>{if(V.length===0)return[];let e=[];return V.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[V,50]),U=f(()=>{if(!E)return 0;let e=V.findIndex(e=>e.id===E);return e<0?0:Math.floor(e/50)},[E,V,50]),[W,G]=m(U);d(()=>{G(U)},[U]);let K=f(()=>typeof b==`string`&&b.trim()?b:D(V.length,y,F),[V.length,b,F,y]),q=h||F(`selectorTitle`),J=String(v||``).trim(),Y=u(e=>w(F(`episodeLabel`,{episode:e.series_num}),J),[J,F]);function X(){let e=z.current;if(e){B.current&&=(window.cancelAnimationFrame(B.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}B.current=window.requestAnimationFrame(()=>{B.current=null;let e=z.current;e&&(e.scrollTop=0)})}}d(()=>{s&&X()},[s,k,W]);function Z(e){A&&(A(e),X())}function Q(e){M?.(e.id,e.series_num),j()}let $=L?2:5,te=H.length>1?g(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:H.map((e,t)=>{if(e.length===0)return null;let n=t===W,r=t*50+1,i=Math.min((t+1)*50,V.length);return _(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{G(t),X()},children:[r,`-`,i,n&&g(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,ne=_(`div`,{className:`pb-[8px] flex justify-between`,children:[g(`span`,{className:`text-[16px] text-text1`,children:K}),I&&_(`div`,{className:`flex items-center gap-[4px]`,children:[g(o,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:k,onCheckedChange:e=>{Z(!!e)}}),g(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{Z(!k)},children:F(`episodeTitle`)})]})]}),re=g(`div`,{className:`grid w-full gap-2 ${$===2?`grid-cols-2`:`grid-cols-5`}`,children:(H[W]||[]).map((e,t)=>{let n=!!(E&&e.id===E);return g(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Q(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${L?`h-[72px] px-[10px] text-[14px]`:``} ${t%$===0?``:`border-l-0`}`,children:L?g(`span`,{className:`block w-full truncate leading-[22px]`,children:Y(e)}):e.series_num},e.id)})}),ie=H.length>1?g(`div`,{className:`flex gap-[8px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:H.map((e,t)=>{if(e.length===0)return null;let n=t===W,r=t*50+1,i=Math.min((t+1)*50,V.length);return g(`button`,{type:`button`,className:`flex h-[28px] w-[72px] shrink-0 items-center justify-center rounded-[100px] px-[4px] transition-colors ${n?`bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-white`:`bg-white/20 text-white`}`,onClick:()=>{G(t),X()},children:_(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px]`,children:[r,`-`,i]})},`series-popup-group-${t}`)})}):null,ae=_(`div`,{className:`flex items-center justify-between`,children:[g(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:K}),I&&_(`button`,{type:`button`,className:`flex items-center gap-[3px] text-white/60`,onClick:()=>{Z(!k)},children:[g(S,{active:k}),g(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:F(`episodeTitle`)})]})]}),oe=L?g(`div`,{className:`flex w-full flex-col gap-[12px]`,children:(H[W]||[]).map(e=>{let t=!!(E&&e.id===E);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Q(e)},className:`relative flex w-full items-start overflow-hidden rounded-[8px] px-[16px] py-[18px] text-left transition-colors ${t?R?``:`border border-[#FF1EFF] bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)]`:`bg-white/10`}`,children:[t&&R&&g(O,{}),g(`span`,{className:`relative z-[1] block w-full truncate font-['PingFang_SC'] text-[14px] ${t?`font-medium leading-[16px] text-[#CA3FE9]`:`font-normal leading-[16px] text-white/80`}`,children:Y(e)})]},`popup-${e.id}`)})}):g(`div`,{className:`grid w-full grid-cols-[repeat(6,52px)] justify-between gap-y-[8px]`,children:(H[W]||[]).map(e=>{let t=!!(E&&e.id===E);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Q(e)},className:`relative flex h-[52px] w-[52px] items-center justify-center overflow-hidden rounded-[8px] transition-colors ${t?R?`text-[#9756E3]`:`border border-[#E62AFF]/90 bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)] text-[#9756E3]`:`bg-white/10 text-white/80`}`,children:[t&&R&&g(O,{}),g(`span`,{className:`relative z-[1] font-['PingFang_SC'] text-[16px] font-medium not-italic leading-[16px]`,children:e.series_num})]},`popup-${e.id}`)})});return c===`sheet`?g(n,{open:s,onOpenChange:e=>!e&&j(),children:_(r,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[g(i,{className:`pt-3 pb-0`,children:g(a,{className:`flex items-center justify-between text-lg text-text1`,children:q})}),_(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[te,ne]}),g(`div`,{ref:z,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:re})]})}):g(l,{open:s,onOpenChange:e=>{e||j()},showCloseButton:!1,className:`!gap-0 !border-0 !bg-transparent !p-0 !shadow-none`,overlayClassName:`bg-black/50 backdrop-blur-0`,children:_(e,{className:`flex h-full w-full flex-col overflow-hidden rounded-t-[16px] bg-black text-text1`,style:{height:`70vh`,...N},children:[_(e,{className:`shrink-0 flex items-center justify-between px-[16px] pt-[32px]`,children:[g(t,{className:`font-['PingFang_SC'] text-[18px] font-medium not-italic leading-[24px] text-white`,children:q}),g(`button`,{type:`button`,"aria-label":`关闭`,className:`flex h-[24px] w-[24px] items-center justify-center text-white opacity-60`,onClick:j,children:g(`span`,{className:`flex h-[24px] w-[24px] items-center overflow-hidden p-[2px]`,children:g(C,{})})})]}),g(e,{className:`flex-1 h-0 w-full px-[16px] pb-[24px]`,children:_(e,{className:`flex h-full flex-col`,children:[ie&&g(e,{className:`mt-[16px] shrink-0`,children:ie}),g(e,{className:`mt-[16px] shrink-0`,children:ae}),g(e,{ref:z,className:`flex-1 overflow-y-auto pb-[17px] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden ${L?`mt-[12px]`:`mt-[8px]`}`,children:oe})]})})]})})}function j({information:n,series_num:r,onEpisodeChange:i}){let a=ee(`components.common`),[o,l]=s(`detail-series-popup-${n.id}`,!1),[S,C]=s(`detail-series-title-toggle-${n.id}`,!1),[w,T]=s(`detail-series-scroll-left-${n.id}`,null),[D,k]=m(r);d(()=>{k(r)},[n.id,r]),d(()=>{if(typeof window>`u`)return;let e=()=>{l(!1)};return window.addEventListener(b,e),()=>{window.removeEventListener(b,e)}},[l]),d(()=>{if(typeof window>`u`)return;let e=e=>{if(!x(e))return;let t=e.detail||{};t.open=!!t.open||!!o};return window.addEventListener(y,e),()=>{window.removeEventListener(y,e)}},[o]);let j=f(()=>E((n.links||[]).map(e=>({id:e.id,name:e.name})),n.id||`episode`,e=>a(`seriesEpisodes.episodeLabel`,{episode:e})),[n.id,n.links,a]),M=n.update_status===`1`?a(`seriesEpisodes.completedSeriesTotal`,{total:n.links.length}):a(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:n.links.length}),N=f(()=>n.links[D-1]?.id||n.links[0]?.id||``,[n.links,D]),P=p(null),F=p(null),I=p(null),L=p(!1),R=p(null),z=p(null),B=p(null),[V,H]=m(!1),U=u((e,t=`smooth`)=>{let n=P.current?.querySelector(`[data-content-id="${e}"]`);if(n&&P.current){let e=P.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),W=u(()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)},[]),G=u(()=>{B.current!==null&&(window.clearTimeout(B.current),B.current=null)},[]),K=u(()=>{R.current!==null&&(v.dismiss(R.current),R.current=null),W(),G()},[G,W]),q=u(()=>{F.current=null,I.current=null,K(),H(!1)},[K]),J=u((e,t)=>{G(),B.current=window.setTimeout(()=>{B.current=null,F.current===e&&q()},Math.max(0,t))},[G,q]);d(()=>{L.current=!1},[n.id]),d(()=>{if(L.current||!N)return;let e=window.requestAnimationFrame(()=>{let e=P.current;e&&(typeof w==`number`?e.scrollTo({left:Math.max(0,w),behavior:`auto`}):(U(N,`auto`),T(Math.max(0,Math.round(e.scrollLeft)))),L.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[N,w,U,T]),d(()=>{let e=F.current;!e||e!==r||J(e,1e3)},[J,r]),d(()=>()=>{q()},[q]);let Y=u((e,t,n)=>{let r=P.current;if(!r||!e)return t;let i=r.querySelector(`[data-content-id="${e}"]`);if(!i)return t;let a=r.getBoundingClientRect();if(a.width<=0||typeof n!=`number`||(n-a.left)/a.width<.5)return t;let o=i.offsetLeft+i.offsetWidth/2,s=r.clientWidth/2,c=Math.max(0,r.scrollWidth-r.clientWidth),l=Math.min(c,Math.max(0,o-s));return r.scrollTo({left:l,behavior:`smooth`}),Math.round(l)},[]),X=u((e,t=`inline`,o,s)=>{if(e!==D){if(!n.links[e-1]){v.error(a(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){try{k(e);let c=o||n.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=v.loading(a(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(r),q(),v.error(a(`seriesEpisodes.episodeSwitchFailed`)))},3e3),i(e)}catch(e){k(r),q(),console.error(`切换剧集失败`,e),v.error(a(`seriesEpisodes.episodeSwitchFailed`))}return}try{k(e);let c=o||n.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=v.loading(a(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(r),q(),v.error(a(`seriesEpisodes.episodeSwitchFailed`)))},8e3),i(e)}catch(e){k(r),q(),console.error(`切换剧集失败`,e),v.error(a(`seriesEpisodes.episodeSwitchFailed`))}}},[q,K,n.links,i,D,r,Y,U,T,a]),[Z,Q]=m(`70vh`),$=u(()=>{if(typeof window>`u`)return;if(window.isWebView===!0){Q(`100vh`);return}let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Q(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Q(`70vh`);return}Q(`${n}px`)},[]);return d(()=>{if(!o)return;$();let e=()=>{$()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[$,o]),j.length<=1?null:_(h,{children:[_(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[_(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>l(!0),children:[g(t,{className:`text-[14px] text-text2 leading-[20px]`,children:M}),g(c,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),g(`div`,{ref:P,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${S?`h-[76px]`:`h-[60px]`} ${V?`touch-none`:``}`,children:j.map((e,n)=>_(`div`,{"data-content-id":e.id,className:`relative shrink-0 h-[full] overflow-hidden px-[18px] rounded-[8px] border border-line1 flex items-center ${S?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===N?`border-transparent bg-transparent`:``}`,onClick:t=>{X(n+1,`inline`,e.id,t.clientX)},children:[e.id===N&&g(O,{}),g(t,{className:`relative z-[1] text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===N?`font-bold !text-[#CA3FE9]`:``}`,children:S?e.title:e.series_num})]},e.id))})]}),g(A,{title:a(`seriesEpisodes.selectorTitle`),videoTitle:n.name,variant:`popup`,open:o,updateStatus:n.update_status,summaryText:M,seriesList:(n.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:N,showEpisodeTitle:S,onToggleTitle:e=>{C(e)},onClose:()=>l(!1),onSelectEpisode:(e,t)=>{l(!1),X(t,`popup`,e)},popupBodyStyle:{height:Z},popupStylePreset:`default`})]})}export{O as DetailStyleOneActiveBorderLayer,k as SeriesEpisodes};
2
+ "use client";import{trackPageClick as e}from"../../../utils/tracking.mjs";import{Box as t}from"../../ui/box.mjs";import{Text as n}from"../../ui/text.mjs";import{Sheet as r,SheetContent as i,SheetHeader as a,SheetTitle as o}from"../../ui/sheet.mjs";import{Switch as s}from"../../ui/switch.mjs";import{useKeepAliveState as c}from"../keep-scroll-position/index.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCallback as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as ee,jsx as g,jsxs as _}from"react/jsx-runtime";import{toast as v}from"sonner";import{useTranslations as te}from"next-intl";const y=`funhub:detail-series-popup-query`,b=`funhub:detail-series-popup-close`;function x(e){return e.type===y&&e instanceof CustomEvent}function S({active:e}){return e?_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`circle`,{cx:`16`,cy:`12`,r:`3`,fill:`white`}),g(`path`,{d:`M8 5H16C19.866 5 23 8.13401 23 12C23 15.866 19.866 19 16 19H8C4.13401 19 1 15.866 1 12C1 8.13401 4.13401 5 8 5ZM16 15C17.6569 15 19 13.6569 19 12C19 10.3431 17.6569 9 16 9C14.3431 9 13 10.3431 13 12C13 13.6569 14.3431 15 16 15Z`,fill:`#9054E5`})]}):_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`path`,{d:`M1.5 12C1.5 8.68629 4.18629 6 7.5 6H16.5C19.8137 6 22.5 8.68629 22.5 12C22.5 15.3137 19.8137 18 16.5 18H7.5C4.18629 18 1.5 15.3137 1.5 12Z`,stroke:`currentColor`,strokeWidth:`1.5`,strokeOpacity:`0.6`}),g(`circle`,{cx:`9`,cy:`12`,r:`3`,fill:`rgba(255,255,255,0.6)`})]})}function C(){return g(`svg`,{width:`20`,height:`20`,viewBox:`0 0 20 20`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`block h-[20px] w-[20px]`,"aria-hidden":!0,children:g(`path`,{d:`M10 8.61116L14.8611 3.75L16.25 5.13889L11.3889 10L16.25 14.8611L14.8611 16.25L10 11.3889L5.13889 16.25L3.75 14.8611L8.61111 10L3.75 5.13889L5.13889 3.75L10 8.61116Z`,fill:`currentColor`})})}function w(e,t){let n=String(t||``).trim();if(!n)return e;let r=e.replace(/\s+/g,``);return n.replace(/\s+/g,``)===r?e:`${e} ${n}`}function T(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.name||``,s=w(n(a),o);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function E(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function D(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function O(){return g(`span`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 overflow-hidden rounded-[8px] p-[0.5px]`,style:{backgroundImage:`linear-gradient(90deg, rgba(255,30,172,0.7) 0%, rgba(108,67,238,0) 100%), linear-gradient(180deg, #9756E3 0%, #6C43EE 100%)`},children:g(`span`,{className:`block h-full w-full`,style:{borderRadius:`7.5px`,backgroundColor:`#000000`,backgroundImage:`linear-gradient(90deg, rgba(246,206,255,0.1) 0%, rgba(246,206,255,0.1) 100%), linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.1) 100%)`}})})}function k(e){return e.mode===`detail`?g(j,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):g(A,{open:e.open,variant:e.variant,title:e.title,videoTitle:e.videoTitle,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle,popupStylePreset:e.popupStylePreset})}function A({open:e,variant:c,title:l,videoTitle:ee,updateStatus:v,summaryText:y,seriesList:b,activeEpisodeId:x,showEpisodeTitle:E=!1,onToggleTitle:k,onClose:A,onSelectEpisode:j,popupBodyStyle:M,popupStylePreset:N=`default`}){let P=te(`components.common.seriesEpisodes`),F=!!k,I=F&&E,L=c===`popup`&&N===`detail-style-one`,R=m(null),z=m(null),B=p(()=>T(b,`episode`,e=>P(`episodeLabel`,{episode:e})),[b,P]),V=p(()=>{if(B.length===0)return[];let e=[];return B.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[B,50]),H=p(()=>{if(!x)return 0;let e=B.findIndex(e=>e.id===x);return e<0?0:Math.floor(e/50)},[x,B,50]),[U,W]=h(H);f(()=>{W(H)},[H]);let G=p(()=>typeof y==`string`&&y.trim()?y:D(B.length,v,P),[B.length,y,P,v]),K=l||P(`selectorTitle`),q=String(ee||``).trim(),J=d(e=>w(P(`episodeLabel`,{episode:e.series_num}),q),[q,P]);function Y(){let e=R.current;if(e){z.current&&=(window.cancelAnimationFrame(z.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}z.current=window.requestAnimationFrame(()=>{z.current=null;let e=R.current;e&&(e.scrollTop=0)})}}f(()=>{e&&Y()},[e,E,U]);function X(e){k&&(k(e),Y())}function Z(e){j?.(e.id,e.series_num),A()}let Q=I?2:5,$=V.length>1?g(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:V.map((e,t)=>{if(e.length===0)return null;let n=t===U,r=t*50+1,i=Math.min((t+1)*50,B.length);return _(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{W(t),Y()},children:[r,`-`,i,n&&g(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,ne=_(`div`,{className:`pb-[8px] flex justify-between`,children:[g(`span`,{className:`text-[16px] text-text1`,children:G}),F&&_(`div`,{className:`flex items-center gap-[4px]`,children:[g(s,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:E,onCheckedChange:e=>{X(!!e)}}),g(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{X(!E)},children:P(`episodeTitle`)})]})]}),re=g(`div`,{className:`grid w-full gap-2 ${Q===2?`grid-cols-2`:`grid-cols-5`}`,children:(V[U]||[]).map((e,t)=>{let n=!!(x&&e.id===x);return g(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Z(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${I?`h-[72px] px-[10px] text-[14px]`:``} ${t%Q===0?``:`border-l-0`}`,children:I?g(`span`,{className:`block w-full truncate leading-[22px]`,children:J(e)}):e.series_num},e.id)})}),ie=V.length>1?g(`div`,{className:`flex gap-[8px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:V.map((e,t)=>{if(e.length===0)return null;let n=t===U,r=t*50+1,i=Math.min((t+1)*50,B.length);return g(`button`,{type:`button`,className:`flex h-[28px] w-[72px] shrink-0 items-center justify-center rounded-[100px] px-[4px] transition-colors ${n?`bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-white`:`bg-white/20 text-white`}`,onClick:()=>{W(t),Y()},children:_(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px]`,children:[r,`-`,i]})},`series-popup-group-${t}`)})}):null,ae=_(`div`,{className:`flex items-center justify-between`,children:[g(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:G}),F&&_(`button`,{type:`button`,className:`flex items-center gap-[3px] text-white/60`,onClick:()=>{X(!E)},children:[g(S,{active:E}),g(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:P(`episodeTitle`)})]})]}),oe=I?g(`div`,{className:`flex w-full flex-col gap-[12px]`,children:(V[U]||[]).map(e=>{let t=!!(x&&e.id===x);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Z(e)},className:`relative flex w-full items-start overflow-hidden rounded-[8px] px-[16px] py-[18px] text-left transition-colors ${t?L?``:`border border-[#FF1EFF] bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)]`:`bg-white/10`}`,children:[t&&L&&g(O,{}),g(`span`,{className:`relative z-[1] block w-full truncate font-['PingFang_SC'] text-[14px] ${t?`font-medium leading-[16px] text-[#CA3FE9]`:`font-normal leading-[16px] text-white/80`}`,children:J(e)})]},`popup-${e.id}`)})}):g(`div`,{className:`grid w-full grid-cols-[repeat(6,52px)] justify-between gap-y-[8px]`,children:(V[U]||[]).map(e=>{let t=!!(x&&e.id===x);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Z(e)},className:`relative flex h-[52px] w-[52px] items-center justify-center overflow-hidden rounded-[8px] transition-colors ${t?L?`text-[#9756E3]`:`border border-[#E62AFF]/90 bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)] text-[#9756E3]`:`bg-white/10 text-white/80`}`,children:[t&&L&&g(O,{}),g(`span`,{className:`relative z-[1] font-['PingFang_SC'] text-[16px] font-medium not-italic leading-[16px]`,children:e.series_num})]},`popup-${e.id}`)})});return c===`sheet`?g(r,{open:e,onOpenChange:e=>!e&&A(),children:_(i,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[g(a,{className:`pt-3 pb-0`,children:g(o,{className:`flex items-center justify-between text-lg text-text1`,children:K})}),_(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[$,ne]}),g(`div`,{ref:R,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:re})]})}):g(u,{open:e,onOpenChange:e=>{e||A()},showCloseButton:!1,className:`!gap-0 !border-0 !bg-transparent !p-0 !shadow-none`,overlayClassName:`bg-black/50 backdrop-blur-0`,children:_(t,{className:`flex h-full w-full flex-col overflow-hidden rounded-t-[16px] bg-black text-text1`,style:{height:`70vh`,...M},children:[_(t,{className:`shrink-0 flex items-center justify-between px-[16px] pt-[32px]`,children:[g(n,{className:`font-['PingFang_SC'] text-[18px] font-medium not-italic leading-[24px] text-white`,children:K}),g(`button`,{type:`button`,"aria-label":`关闭`,className:`flex h-[24px] w-[24px] items-center justify-center text-white opacity-60`,onClick:A,children:g(`span`,{className:`flex h-[24px] w-[24px] items-center overflow-hidden p-[2px]`,children:g(C,{})})})]}),g(t,{className:`flex-1 h-0 w-full px-[16px] pb-[24px]`,children:_(t,{className:`flex h-full flex-col`,children:[ie&&g(t,{className:`mt-[16px] shrink-0`,children:ie}),g(t,{className:`mt-[16px] shrink-0`,children:ae}),g(t,{ref:R,className:`flex-1 overflow-y-auto pb-[17px] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden ${I?`mt-[12px]`:`mt-[8px]`}`,children:oe})]})})]})})}function j({information:r,series_num:i,onEpisodeChange:a}){let o=te(`components.common`),[s,u]=c(`detail-series-popup-${r.id}`,!1),[S,C]=c(`detail-series-title-toggle-${r.id}`,!1),[w,T]=c(`detail-series-scroll-left-${r.id}`,null),[D,k]=h(i);f(()=>{k(i)},[r.id,i]),f(()=>{if(typeof window>`u`)return;let e=()=>{u(!1)};return window.addEventListener(b,e),()=>{window.removeEventListener(b,e)}},[u]),f(()=>{if(typeof window>`u`)return;let e=e=>{if(!x(e))return;let t=e.detail||{};t.open=!!t.open||!!s};return window.addEventListener(y,e),()=>{window.removeEventListener(y,e)}},[s]),f(()=>{s&&e(`page_video_detail`,`详情页`,null,`detail_select_episode_popup`)},[s]);let j=p(()=>E((r.links||[]).map(e=>({id:e.id,name:e.name})),r.id||`episode`,e=>o(`seriesEpisodes.episodeLabel`,{episode:e})),[r.id,r.links,o]),M=r.update_status===`1`?o(`seriesEpisodes.completedSeriesTotal`,{total:r.links.length}):o(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:r.links.length}),N=p(()=>r.links[D-1]?.id||r.links[0]?.id||``,[r.links,D]),P=m(null),F=m(null),I=m(null),L=m(!1),R=m(null),z=m(null),B=m(null),[V,H]=h(!1),U=d((e,t=`smooth`)=>{let n=P.current?.querySelector(`[data-content-id="${e}"]`);if(n&&P.current){let e=P.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),W=d(()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)},[]),G=d(()=>{B.current!==null&&(window.clearTimeout(B.current),B.current=null)},[]),K=d(()=>{R.current!==null&&(v.dismiss(R.current),R.current=null),W(),G()},[G,W]),q=d(()=>{F.current=null,I.current=null,K(),H(!1)},[K]),J=d((e,t)=>{G(),B.current=window.setTimeout(()=>{B.current=null,F.current===e&&q()},Math.max(0,t))},[G,q]);f(()=>{L.current=!1},[r.id]),f(()=>{if(L.current||!N)return;let e=window.requestAnimationFrame(()=>{let e=P.current;e&&(typeof w==`number`?e.scrollTo({left:Math.max(0,w),behavior:`auto`}):(U(N,`auto`),T(Math.max(0,Math.round(e.scrollLeft)))),L.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[N,w,U,T]),f(()=>{let e=F.current;!e||e!==i||J(e,1e3)},[J,i]),f(()=>()=>{q()},[q]);let Y=d((e,t,n)=>{let r=P.current;if(!r||!e)return t;let i=r.querySelector(`[data-content-id="${e}"]`);if(!i)return t;let a=r.getBoundingClientRect();if(a.width<=0||typeof n!=`number`||(n-a.left)/a.width<.5)return t;let o=i.offsetLeft+i.offsetWidth/2,s=r.clientWidth/2,c=Math.max(0,r.scrollWidth-r.clientWidth),l=Math.min(c,Math.max(0,o-s));return r.scrollTo({left:l,behavior:`smooth`}),Math.round(l)},[]),X=d((e,t=`inline`,n,s)=>{if(e!==D){if(!r.links[e-1]){v.error(o(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){try{k(e);let c=n||r.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=v.loading(o(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(i),q(),v.error(o(`seriesEpisodes.episodeSwitchFailed`)))},3e3),a(e)}catch(e){k(i),q(),console.error(`切换剧集失败`,e),v.error(o(`seriesEpisodes.episodeSwitchFailed`))}return}try{k(e);let c=n||r.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=v.loading(o(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(i),q(),v.error(o(`seriesEpisodes.episodeSwitchFailed`)))},8e3),a(e)}catch(e){k(i),q(),console.error(`切换剧集失败`,e),v.error(o(`seriesEpisodes.episodeSwitchFailed`))}}},[q,K,r.links,a,D,i,Y,U,T,o]),[Z,Q]=h(`70vh`),$=d(()=>{if(typeof window>`u`)return;if(window.isWebView===!0){Q(`100vh`);return}let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Q(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Q(`70vh`);return}Q(`${n}px`)},[]);return f(()=>{if(!s)return;$();let e=()=>{$()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[$,s]),j.length<=1?null:_(ee,{children:[_(t,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[_(t,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>{e(`page_video_detail`,`详情页`,null,`detail_select_episode_btn`),u(!0)},children:[g(n,{className:`text-[14px] text-text2 leading-[20px]`,children:M}),g(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),g(`div`,{ref:P,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${S?`h-[76px]`:`h-[60px]`} ${V?`touch-none`:``}`,children:j.map((t,r)=>_(`div`,{"data-content-id":t.id,className:`relative shrink-0 h-[full] overflow-hidden px-[18px] rounded-[8px] border border-line1 flex items-center ${S?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${t.id===N?`border-transparent bg-transparent`:``}`,onClick:n=>{e(`page_video_detail`,`详情页`,n,`detail_episode_click`,{episode_num:r+1,episode_id:t.id}),X(r+1,`inline`,t.id,n.clientX)},children:[t.id===N&&g(O,{}),g(n,{className:`relative z-[1] text-[16px] text-text1 leading-[22px] line-clamp-2 ${t.id===N?`font-bold !text-[#CA3FE9]`:``}`,children:S?t.title:t.series_num})]},t.id))})]}),g(A,{title:o(`seriesEpisodes.selectorTitle`),videoTitle:r.name,variant:`popup`,open:s,updateStatus:r.update_status,summaryText:M,seriesList:(r.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:N,showEpisodeTitle:S,onToggleTitle:e=>{C(e)},onClose:()=>u(!1),onSelectEpisode:(e,t)=>{u(!1),X(t,`popup`,e)},popupBodyStyle:{height:Z},popupStylePreset:`default`})]})}export{O as DetailStyleOneActiveBorderLayer,k as SeriesEpisodes};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{gContentGetAppChannelBlock as t,gContentGetAppChannels as n}from"../../../service/generated/client.mjs";import{Box as r}from"../../ui/box.mjs";import{useRequest as i}from"../../../hooks/query/use-query.mjs";import{queryKey as a}from"../../../constants/query-key.mjs";import{matchChannelByPath as o}from"../../pages/home/channel-matcher.mjs";import{TopNavBarFullscreen as s}from"./fullscreen.mjs";import{TopNavBarNormal as c}from"./normal.mjs";import{useMemo as l}from"react";import{jsx as u}from"react/jsx-runtime";import{usePathname as d}from"next/navigation";function f(e){return e===`/`?[]:e.startsWith(`/category/`)?e.replace(`/category/`,``).split(`/`).map(e=>decodeURIComponent(e)):[]}function p({categoryPath:p,currentChannelId:m}){let h=d()||`/`,{data:g}=i([a.CHANNEL],()=>n()),_=l(()=>e(g?.data),[g?.data]),v=l(()=>typeof window>`u`?p||[]:f(h),[p,h]),y=l(()=>_.length===0?null:o(v,_),[v,_])?.id??m??``,{data:b}=i(a.GET_CONTENT_LIST(y),()=>t({channel_id:y}),{enabled:!!y}),x=l(()=>b?.data?.blocks||[],[b?.data?.blocks]),S=l(()=>x.length>0&&x[0].show_style===6,[x]);return u(r,{className:`w-full`,"data-top-nav-root":`true`,children:u(S?s:c,{channelDataList:_,currentChannelId:y})})}export{p as TopNavBar};
2
+ "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{gContentGetAppChannelBlock as t,gContentGetAppChannels as n}from"../../../service/generated/client.mjs";import{trackAppPageView as r}from"../../../utils/tracking.mjs";import{Box as i}from"../../ui/box.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{queryKey as o}from"../../../constants/query-key.mjs";import{matchChannelByPath as s}from"../../pages/home/channel-matcher.mjs";import{TopNavBarFullscreen as c}from"./fullscreen.mjs";import{TopNavBarNormal as l}from"./normal.mjs";import{useEffect as u,useMemo as d}from"react";import{jsx as f}from"react/jsx-runtime";import{usePathname as p}from"next/navigation";function m(e){return e===`/`?[]:e.startsWith(`/category/`)?e.replace(`/category/`,``).split(`/`).map(e=>decodeURIComponent(e)):[]}function h({categoryPath:h,currentChannelId:g}){let _=p()||`/`,{data:v}=a([o.CHANNEL],()=>n()),y=d(()=>e(v?.data),[v?.data]),b=d(()=>typeof window>`u`?h||[]:m(_),[h,_]),x=d(()=>y.length===0?null:s(b,y),[b,y])?.id??g??``;u(()=>{r({page_key:`page_home_top_nav`,page_name:`首页顶部导航栏`})},[]);let{data:S}=a(o.GET_CONTENT_LIST(x),()=>t({channel_id:x}),{enabled:!!x}),C=d(()=>S?.data?.blocks||[],[S?.data?.blocks]),w=d(()=>C.length>0&&C[0].show_style===6,[C]);return f(i,{className:`w-full`,"data-top-nav-root":`true`,children:f(w?c:l,{channelDataList:y,currentChannelId:x})})}export{h as TopNavBar};
@@ -0,0 +1,2 @@
1
+
2
+ import e from"../../../assets/icons/common/right_arrow.mjs";import{jsx as t,jsxs as n}from"react/jsx-runtime";function r({label:r}){return n(`span`,{className:`inline-flex items-center gap-[6px]`,children:[t(`span`,{children:r}),t(e,{"aria-hidden":`true`,focusable:`false`,className:`h-[10px] w-[10px] shrink-0 text-[#FD4C5E]`})]})}export{r as PrerollSkipButtonContent};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as t}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as n}from"../../../service/generated/tanstack.mjs";import{useRequest as r}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as i}from"./video-player-ref-context.mjs";import{useIsClient as a}from"foxact/use-is-client";import{useEffect as o,useRef as s,useState as c}from"react";import{jsx as l}from"react/jsx-runtime";import{create as u}from"zustand";import{createJSONStorage as d,persist as f}from"zustand/middleware";import{createPortal as p}from"react-dom";const m=u()(f((e,t)=>({shownVideoIds:new Set,hasShown:e=>t().shownVideoIds.has(e),markAsShown:n=>{let r=t().shownVideoIds;if(!r.has(n)){let t=new Set(r);t.add(n),e({shownVideoIds:t})}}}),{name:`video-blind-ad-storage`,storage:typeof window<`u`?d(()=>sessionStorage):void 0,partialize:e=>({shownVideoIds:Array.from(e.shownVideoIds)}),merge:(e,t)=>({...t,shownVideoIds:new Set(e.shownVideoIds||[])})}));function h({videoId:u}){let d=i(),f=a(),h=e(e=>e.userId),{hasShown:g,markAsShown:_}=m(),v=s(0),y=s(null),[b,x]=c(!1),S=s(!1),C={user_id:h,ad_type:`blind`},{data:w,isLoading:T}=r(n(C),()=>t(C)),E=g(u);o(()=>{let e=d?.current?.getPlayer();if(!e||!w||E)return;let t=w.data?.settings?.trigger_video_progress_min??0;function n(r){if(S.current){e?.off(`timeupdate`,n);return}let i=r?.currentTime;if(y.current!==null){let e=i-y.current;e>0&&e<2&&(v.current+=e,!S.current&&v.current/60>=t&&(S.current=!0,x(!0)))}y.current=i}return e.on(`timeupdate`,n),()=>{e.off(`timeupdate`,n)}},[d,w,E]);let D=!E&&b;o(()=>{if(D)return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}},[D]);function O(){E||(_(u),window.open(w?.data.materials?.[0].advertise_url))}return!f||typeof document>`u`||T||w?.data?.hit===!1||E||!b?null:p(l(`div`,{className:`blind-ad-overlay fixed inset-0 h-screen w-screen z-[99999]`,onClick:O}),document.body)}export{h as VideoBlindAdOverlay};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as t}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as n}from"../../../service/generated/tanstack.mjs";import{trackAdClick as r,trackAdImpression as i}from"../../../utils/tracking.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as o}from"./video-player-ref-context.mjs";import{useIsClient as s}from"foxact/use-is-client";import{useEffect as c,useRef as l,useState as u}from"react";import{jsx as d}from"react/jsx-runtime";import{create as f}from"zustand";import{createJSONStorage as p,persist as m}from"zustand/middleware";import{createPortal as h}from"react-dom";const g=f()(m((e,t)=>({shownVideoIds:new Set,hasShown:e=>t().shownVideoIds.has(e),markAsShown:n=>{let r=t().shownVideoIds;if(!r.has(n)){let t=new Set(r);t.add(n),e({shownVideoIds:t})}}}),{name:`video-blind-ad-storage`,storage:typeof window<`u`?p(()=>sessionStorage):void 0,partialize:e=>({shownVideoIds:Array.from(e.shownVideoIds)}),merge:(e,t)=>({...t,shownVideoIds:new Set(e.shownVideoIds||[])})})),_=`video_blind`;function v({videoId:f}){let p=o(),m=s(),v=e(e=>e.userId),{hasShown:y,markAsShown:b}=g(),x=l(0),S=l(null),[C,w]=u(!1),T=l(!1),E={user_id:v,ad_type:`blind`},{data:D,isLoading:O}=a(n(E),()=>t(E)),k=y(f),A=D?.data?.materials?.[0]?.advertise_code||``,j=!k&&C;c(()=>{!j||!A||i({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:A,ad_type:`blind`})},[j,A]),c(()=>{let e=p?.current?.getPlayer();if(!e||!D||k)return;let t=D.data?.settings?.trigger_video_progress_min??0;function n(r){if(T.current){e?.off(`timeupdate`,n);return}let i=r?.currentTime;if(S.current!==null){let e=i-S.current;e>0&&e<2&&(x.current+=e,!T.current&&x.current/60>=t&&(T.current=!0,w(!0)))}S.current=i}return e.on(`timeupdate`,n),()=>{e.off(`timeupdate`,n)}},[p,D,k]),c(()=>{if(j)return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}},[j]);function M(){k||(A&&r({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:A,ad_type:`blind`}),b(f),window.open(D?.data.materials?.[0].advertise_url))}return!m||typeof document>`u`||O||D?.data?.hit===!1||k||!C?null:h(d(`div`,{className:`blind-ad-overlay fixed inset-0 h-screen w-screen z-[99999]`,onClick:M}),document.body)}export{v as VideoBlindAdOverlay};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as t}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as n}from"../../../service/generated/tanstack.mjs";import{trackAdClick as r,trackAdImpression as i,trackAdvertising as a}from"../../../utils/tracking.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as s}from"./video-player-ref-context.mjs";import{PrerollSkipButtonContent as c}from"./preroll-skip-button-content.mjs";import{useIsClient as l}from"foxact/use-is-client";import{useCallback as u,useEffect as d,useRef as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{createPortal as g}from"react-dom";const _=`video_preroll`,v=new Set;function y({videoId:y}){let b=s(),x=l(),S=e(e=>e.userId),[C,w]=p(!1),[T,E]=p(0),D=f(null),O=f(!1),k={user_id:S,ad_type:`preroll`},{data:A,isLoading:j}=o(n(k),()=>t(k)),M=A?.data?.materials?.[0],N=A?.data?.settings?.skip_seconds??5,P=M?.advertise_code||``,F=v.has(y);d(()=>{if(A?.data?.hit!==!0||!M||O.current||F)return;function e(){if(!O.current){O.current=!0,w(!0),E(N);try{b?.current?.getPlayer()?.pause?.()}catch{}}}let t=b?.current?.getPlayer();if(t)if(b?.current?.isPlayerReady())e();else return t.once?.(`ready`,e),()=>{t.off?.(`ready`,e)}},[A,F,M,b,N]),d(()=>{if(!(!C||N<=0))return D.current=setInterval(()=>{E(e=>e<=1?(D.current&&=(clearInterval(D.current),null),0):e-1)},1e3),()=>{D.current&&=(clearInterval(D.current),null)}},[C,N]),d(()=>{!C||!P||i({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:P,ad_type:`preroll`})},[C,P]);let I=u(()=>{D.current&&=(clearInterval(D.current),null),w(!1),v.add(y);try{b?.current?.getPlayer()?.play?.().catch?.(()=>{})}catch{}P&&a({event_type:`close`,advertising_key:_,advertising_name:`视频贴片广告`,advertising_id:P})},[P,b,y]);function L(){P&&r({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:P,ad_type:`preroll`}),M?.advertise_url&&window.open(M.advertise_url)}return!x||typeof document>`u`||j||!C?null:g(h(`div`,{className:`fixed inset-0 z-[99998] bg-black`,children:[M?.advertise_icon&&m(`img`,{src:M.advertise_icon,alt:M.advertise_name||`视频贴片广告`,className:`h-full w-full cursor-pointer object-cover`,onClick:L}),m(`div`,{className:`absolute right-4 top-4 z-10`,children:T<=0?m(`button`,{type:`button`,className:`cursor-pointer rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,onClick:I,children:m(c,{label:`跳过广告`})}):h(`div`,{className:`rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,children:[T,`秒后可跳过`]})})]}),document.body)}export{y as VideoPrerollAdOverlay};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../utils/get-res-url.mjs";import{useIsClient as t}from"../../../hooks/use-is-client.mjs";import n from"../../../assets/icons/detail/video_play.mjs";import{useEffect as r,useImperativeHandle as i,useMemo as a,useRef as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";function u({ref:u,adData:d=null,visible:f=!1,autoStart:p=!1,sessionKey:m=`default`,onAutoplayBlocked:h,onFinish:g,onSkip:_,onOpenLink:v}){let y=o(null),[b,x]=s(0),[S,C]=s(!1),w=t(),T=o(!1),E=Number(d?.settings?.skip_seconds||0),D=a(()=>d?.materials?.[0],[d?.materials]),O=String(D?.advertise_video||``).trim(),k=a(()=>O?O.startsWith(`/m3f`)?`${e()}/${O}`:`${e()}/m3f${O}`:``,[O]),A=!!O,j=A?S:f,M=b<=0;r(()=>{C(!1),x(E),T.current=!1;let e=y.current;if(e)try{e.pause(),e.currentTime=0,e.load()}catch(e){console.warn(`重置前贴片播放状态失败:`,e)}},[k,m,E]),r(()=>{if(!f||!D)return;if(E<=0){x(0);return}if(!j)return;let e=window.setInterval(()=>{x(t=>t<=1?(window.clearInterval(e),0):t-1)},1e3);return()=>{window.clearInterval(e)}},[D,j,m,E,f]),r(()=>{!f||!p||!A||!y.current||T.current||(T.current=!0,y.current.play().catch(e=>{console.warn(`自动启动前贴片播放失败:`,e),h?.()}))},[p,A,h,m,f]),i(u,()=>({async play(){if(!y.current)return!1;try{return await y.current.play(),!0}catch(e){return console.warn(`手动启动前贴片播放失败:`,e),!1}}}),[]);function N(){M&&_?.()}function P(){if(A&&!S){let e=y.current;if(!e)return;e.play().catch(e=>{console.warn(`手动启动前贴片播放失败:`,e)});return}let e=D?.advertise_url;e&&(v?.(e),window.open(e,`_blank`,`noopener,noreferrer`))}if(!w||typeof window>`u`||!d?.hit||!D||!A)return null;let F=c(`video`,{ref:y,src:k,poster:D?.advertise_icon||``,className:`pointer-events-none w-full h-full object-cover bg-black`,autoPlay:p,muted:!0,playsInline:!0,preload:`none`,onEnded:()=>{g?.()},onPlaying:()=>{C(!0)},onError:e=>{console.warn(`[video-preroll-ad][error]`,{sessionKey:m,error:e.currentTarget?.error})}});return l(`div`,{className:`video-preroll-ad absolute top-0 left-0 w-full h-full z-[9999] ${f?``:`pointer-events-none opacity-0`}`,"aria-hidden":!f,children:[c(`button`,{type:`button`,disabled:!M,onClick:N,className:`absolute z-[10] text-sm top-6 right-6 bg-black/30 text-white rounded-full px-6 py-1.5 flex items-center justify-center disabled:opacity-60 disabled:cursor-not-allowed`,children:M?`跳过`:`跳过 ${b}s`}),l(`div`,{role:`button`,tabIndex:0,onClick:P,className:`relative block w-full h-full`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),P())},children:[F,A&&!S&&c(`div`,{className:`absolute inset-0 z-[2] flex items-center justify-center bg-black/20 pointer-events-none`,children:c(`div`,{className:`flex items-center justify-center w-12 h-12 rounded-full bg-[rgba(0,0,0,0.45)]`,children:c(n,{className:`w-[16px] h-[22px] text-white`})})})]})]})}export{u as VideoPrerollAd};
2
+ "use client";import e from"../../../utils/get-res-url.mjs";import{useIsClient as t}from"../../../hooks/use-is-client.mjs";import n from"../../../assets/icons/detail/video_play.mjs";import{PrerollSkipButtonContent as r}from"./preroll-skip-button-content.mjs";import{useEffect as i,useImperativeHandle as a,useMemo as o,useRef as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";function d({ref:d,adData:f=null,visible:p=!1,autoStart:m=!1,sessionKey:h=`default`,onAutoplayBlocked:g,onFinish:_,onSkip:v,onOpenLink:y}){let b=s(null),[x,S]=c(0),[C,w]=c(!1),T=t(),E=s(!1),D=Number(f?.settings?.skip_seconds||0),O=o(()=>f?.materials?.[0],[f?.materials]),k=String(O?.advertise_video||``).trim(),A=o(()=>k?k.startsWith(`/m3f`)?`${e()}/${k}`:`${e()}/m3f${k}`:``,[k]),j=!!k,M=j?C:p,N=x<=0;i(()=>{w(!1),S(D),E.current=!1;let e=b.current;if(e)try{e.pause(),e.currentTime=0,e.load()}catch(e){console.warn(`重置前贴片播放状态失败:`,e)}},[A,h,D]),i(()=>{if(!p||!O)return;if(D<=0){S(0);return}if(!M)return;let e=window.setInterval(()=>{S(t=>t<=1?(window.clearInterval(e),0):t-1)},1e3);return()=>{window.clearInterval(e)}},[O,M,h,D,p]),i(()=>{!p||!m||!j||!b.current||E.current||(E.current=!0,b.current.play().catch(e=>{console.warn(`自动启动前贴片播放失败:`,e),g?.()}))},[m,j,g,h,p]),a(d,()=>({async play(){if(!b.current)return!1;try{return await b.current.play(),!0}catch(e){return console.warn(`手动启动前贴片播放失败:`,e),!1}}}),[]);function P(){N&&v?.()}function F(){if(j&&!C){let e=b.current;if(!e)return;e.play().catch(e=>{console.warn(`手动启动前贴片播放失败:`,e)});return}let e=O?.advertise_url;e&&(y?.(e),window.open(e,`_blank`,`noopener,noreferrer`))}if(!T||typeof window>`u`||!f?.hit||!O||!j)return null;let I=l(`video`,{ref:b,src:A,poster:O?.advertise_icon||``,className:`pointer-events-none w-full h-full object-cover bg-black`,autoPlay:m,muted:!0,playsInline:!0,preload:`none`,onEnded:()=>{_?.()},onPlaying:()=>{w(!0)},onError:e=>{console.warn(`[video-preroll-ad][error]`,{sessionKey:h,error:e.currentTarget?.error})}});return u(`div`,{className:`video-preroll-ad absolute top-0 left-0 w-full h-full z-[9999] ${p?``:`pointer-events-none opacity-0`}`,"aria-hidden":!p,children:[l(`button`,{type:`button`,disabled:!N,onClick:P,className:`absolute z-[10] text-sm top-6 right-6 bg-black/30 text-white rounded-full px-6 py-1.5 flex items-center justify-center disabled:opacity-60 disabled:cursor-not-allowed`,children:N?l(r,{label:`跳过`}):`跳过 ${x}s`}),u(`div`,{role:`button`,tabIndex:0,onClick:F,className:`relative block w-full h-full`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),F())},children:[I,j&&!C&&l(`div`,{className:`absolute inset-0 z-[2] flex items-center justify-center bg-black/20 pointer-events-none`,children:l(`div`,{className:`flex items-center justify-center w-12 h-12 rounded-full bg-[rgba(0,0,0,0.45)]`,children:l(n,{className:`w-[16px] h-[22px] text-white`})})})]})]})}export{d as VideoPrerollAd};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{HeaderNav as e}from"../../../../common/header-nav/client.mjs";import{InteractionTabs as t}from"../interaction-tabs/index.mjs";import{jsx as n}from"react/jsx-runtime";function r({defaultTab:r=`followed`}){return n(e,{centerChild:n(t,{type:r})})}export{r as FollowHeaderNav};
2
+ "use client";import{usePageLifecycle as e}from"../../../../../utils/tracking.mjs";import{HeaderNav as t}from"../../../../common/header-nav/client.mjs";import{InteractionTabs as n}from"../interaction-tabs/index.mjs";import{jsx as r}from"react/jsx-runtime";function i({defaultTab:i=`followed`}){return e(i===`fans`?`page_fans`:`page_followed`,i===`fans`?`粉丝`:`关注`),r(t,{centerChild:r(n,{type:i})})}export{i as FollowHeaderNav};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetContentList as n,pCommunityAddContentToCollection as r}from"../../../service/generated/client.mjs";import{Box as i}from"../../ui/box.mjs";import{useDeleteRequest as a,useMutation as o,usePaginated as s}from"../../../hooks/query/use-query.mjs";import{HeaderNav as c}from"../../common/header-nav/client.mjs";import{UserActivityList as l}from"../../common/list/user-activity-list/user-activity-list.mjs";import{useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useRouter as h}from"next/navigation";import{useTranslations as g}from"next-intl";function _(e){return{type:e.type,content_id:e.content_id||``,author:{nick_name:e.author?.nickname||``,nickname:e.author?.nickname||``,avatar:e.author?.avatar_url||``},content:e.content||``,medias:e.medias||[],like_count:e.like_count||0,is_liked:e.interaction?.is_liked||!1,dislike_count:e.dislike_count||0,is_dislike:e.interaction?.is_dislike||!1,comment_count:e.comment_count||0}}function v({id:v}){let{userId:y}=t(),b=v,[x,S]=d(()=>new Set),C=a(),{mutateAsync:w,isPending:T}=o(async e=>await r({collection_id:b,content_id:e})),{data:E,isFetching:D,fetchNextPage:O,hasNextPage:k}=s({key:[`collection-add`,b,y],initialPageParam:1,async queryFn(e){if(!y)return{data:{list:[],total:0}};let t=await n({user_id:y,page:e,collection_id:b,page_size:10}),r=t.data?.data?.contents??[];return{data:{list:r,total:t.data?.data?.total??r.length,has_more:t.data?.data?.has_more?!0:void 0}}},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),A=g(`components.pages.collectionAdd`),j=u(()=>E?.pages.flatMap(e=>((e?.data).list||[]).map(e=>_(e)))??[],[E]);function M(e){T||S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function N(){if(T)return;if(!b){m.error(A(`page.collectionNotFound`));return}if(!y){m.error(A(`page.userNotFound`));return}let e=Array.from(x);if(e.length===0){m.error(A(`page.selectPostFirst`));return}let t=m.loading(A(`page.submitting`));try{await Promise.all(e.map(e=>w(e))),m.success(A(`page.submitSuccess`),{id:t}),S(new Set),C([`collection-add`,b,y]),C([`collection-detail`,b])}catch(e){console.error(`添加合集失败`,e),m.error(A(`page.submitFailed`),{id:t})}}let P=h(),F=x.size;return p(i,{className:`bg-bg2 !min-h-screen`,children:[f(c,{onBack:()=>P.back(),className:`!bg-bg2`,title:A(`page.title`),rightChild:p(e,{onClick:N,disabled:T||F===0,children:[A(`page.done`),`(`,F,`)`]})}),f(l,{list:j,loading:D,hasMore:k,loadMore:async()=>{O()},emptyText:A(`page.emptyPublish`),showGroupHeaders:!1,isEditMode:!0,selectedIds:x,onToggleSelection:M})]})}export{v as CollectionAddPage};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetContentList as n,pCommunityAddContentToCollection as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{Box as a}from"../../ui/box.mjs";import{useDeleteRequest as o,useMutation as s,usePaginated as c}from"../../../hooks/query/use-query.mjs";import{HeaderNav as l}from"../../common/header-nav/client.mjs";import{UserActivityList as u}from"../../common/list/user-activity-list/user-activity-list.mjs";import{useMemo as d,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{toast as h}from"sonner";import{useRouter as g}from"next/navigation";import{useTranslations as _}from"next-intl";function v(e){return{type:e.type,content_id:e.content_id||``,author:{nick_name:e.author?.nickname||``,nickname:e.author?.nickname||``,avatar:e.author?.avatar_url||``},content:e.content||``,medias:e.medias||[],like_count:e.like_count||0,is_liked:e.interaction?.is_liked||!1,dislike_count:e.dislike_count||0,is_dislike:e.interaction?.is_dislike||!1,comment_count:e.comment_count||0}}function y({id:y}){let{userId:b}=t();i(`page_collection_add`,`添加到合集`);let x=y,[S,C]=f(()=>new Set),w=o(),{mutateAsync:T,isPending:E}=s(async e=>await r({collection_id:x,content_id:e})),{data:D,isFetching:O,fetchNextPage:k,hasNextPage:A}=c({key:[`collection-add`,x,b],initialPageParam:1,async queryFn(e){if(!b)return{data:{list:[],total:0}};let t=await n({user_id:b,page:e,collection_id:x,page_size:10}),r=t.data?.data?.contents??[];return{data:{list:r,total:t.data?.data?.total??r.length,has_more:t.data?.data?.has_more?!0:void 0}}},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),j=_(`components.pages.collectionAdd`),M=d(()=>D?.pages.flatMap(e=>((e?.data).list||[]).map(e=>v(e)))??[],[D]);function N(e){E||C(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function P(){if(E)return;if(!x){h.error(j(`page.collectionNotFound`));return}if(!b){h.error(j(`page.userNotFound`));return}let e=Array.from(S);if(e.length===0){h.error(j(`page.selectPostFirst`));return}let t=h.loading(j(`page.submitting`));try{await Promise.all(e.map(e=>T(e))),h.success(j(`page.submitSuccess`),{id:t}),C(new Set),w([`collection-add`,x,b]),w([`collection-detail`,x])}catch(e){console.error(`添加合集失败`,e),h.error(j(`page.submitFailed`),{id:t})}}let F=g(),I=S.size;return m(a,{className:`bg-bg2 !min-h-screen`,children:[p(l,{onBack:()=>F.back(),className:`!bg-bg2`,title:j(`page.title`),rightChild:m(e,{onClick:P,disabled:E||I===0,children:[j(`page.done`),`(`,I,`)`]})}),p(u,{list:M,loading:O,hasMore:A,loadMore:async()=>{k()},emptyText:j(`page.emptyPublish`),showGroupHeaders:!1,isEditMode:!0,selectedIds:S,onToggleSelection:N})]})}export{y as CollectionAddPage};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{InputGroup as s,InputGroupAddon as c,InputGroupTextarea as l}from"../../ui/input-group.mjs";import{Field as u,FieldLabel as d}from"../../ui/field.mjs";import{useDeleteRequest as f,useRequest as p}from"../../../hooks/query/use-query.mjs";import{HeaderNav as m}from"../../common/header-nav/client.mjs";import{useEffect as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";function S({mode:S=`create`,collectionId:C}){let w=x(`components.pages.collectionCreate`),T=a(),{userId:E}=t(),D=f();g(null);let O=S===`edit`&&!!C,k=g(!1),[A,j]=_(!1),[M,N]=_(!1),[P,F]=_(``),[I,L]=_({title:``,description:``}),R=p([`collection-detail`,C],()=>n({collection_id:C}),{enabled:!!(O&&C)}).data?.data?.data?.collection;h(()=>{!O||k.current||!R||(L({title:R.title??``,description:R.description??``}),F(R.cover_image??``),k.current=!0)},[R,O]);function z(e,t){L(n=>({...n,[e]:t}))}async function B(){if(A)return;let e=I.title.trim(),t=I.description.trim();if(!e){b.error(w(`form.titleRequired`));return}if(O&&!C){b.error(w(`form.collectionNotFound`));return}try{j(!0);let n=b.loading(w(O?`form.saving`:`form.creating`)),a=O?await i({collection_id:C,title:e,description:t,cover_image:P}):await r({title:e,description:t,cover_image:P});if(a.code===0){b.success(w(O?`form.saveSuccess`:`form.createSuccess`),{id:n}),E&&D([`user-profile`,`mine`,E,`user-collection-created`,E]),O&&C&&D([`collection-detail`,C]),T.back();return}b.error(a.message||w(O?`form.saveFailed`:`form.createFailed`),{id:n})}catch(e){console.error(O?`编辑合集失败`:`创建合集失败`,e),b.error(w(O?`form.saveFailed`:`form.createFailed`))}finally{j(!1)}}return y(o,{className:`min-h-screen !bg-bg2`,children:[v(m,{title:w(O?`form.editTitle`:`form.createTitle`),onBack:()=>T.back(),className:`!bg-bg2`,rightChild:v(e,{onClick:B,disabled:A||M,children:w(A?O?`form.saving`:`form.creating`:O?`form.save`:`form.create`)})}),y(o,{className:`pb-3`,children:[y(u,{className:`!bg-bg2 px-3 border-none`,children:[v(d,{required:!0,children:w(`form.label`)}),y(s,{children:[v(l,{className:`!bg-bg1 p-2.5`,maxLength:50,placeholder:w(`form.titlePlaceholder`),value:I.title,onChange:e=>z(`title`,e.target.value)}),v(c,{className:`!bg-bg1`,align:`block-end`,children:v(`div`,{className:`text-right w-full`,children:y(`span`,{className:`text-xs`,children:[I.title.length,`/50`]})})})]})]}),y(u,{className:`border-none px-3 bg-bg2! `,children:[v(d,{children:w(`form.descriptionLabel`)}),y(s,{children:[v(l,{className:`!bg-bg1 p-2.5`,maxLength:100,placeholder:w(`form.descriptionPlaceholder`),value:I.description,onChange:e=>z(`description`,e.target.value)}),v(c,{className:`!bg-bg1`,align:`block-end`,children:v(`div`,{className:`text-right w-full`,children:y(`span`,{className:`text-xs`,children:[I.description.length,`/100`]})})})]})]})]})]})}export{S as CollectionCreateForm};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{usePageLifecycle as a}from"../../../utils/tracking.mjs";import{useRouter as o}from"../../../utils/use-compatible-router.mjs";import{Box as s}from"../../ui/box.mjs";import{InputGroup as c,InputGroupAddon as l,InputGroupTextarea as u}from"../../ui/input-group.mjs";import{Field as d,FieldLabel as f}from"../../ui/field.mjs";import{useDeleteRequest as p,useRequest as m}from"../../../hooks/query/use-query.mjs";import{HeaderNav as h}from"../../common/header-nav/client.mjs";import{useEffect as g,useRef as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";function C({mode:C=`create`,collectionId:w}){let T=S(`components.pages.collectionCreate`);a(`page_collection_create`,`创建合集`);let E=o(),{userId:D}=t(),O=p();_(null);let k=C===`edit`&&!!w,A=_(!1),[j,M]=v(!1),[N,P]=v(!1),[F,I]=v(``),[L,R]=v({title:``,description:``}),z=m([`collection-detail`,w],()=>n({collection_id:w}),{enabled:!!(k&&w)}).data?.data?.data?.collection;g(()=>{!k||A.current||!z||(R({title:z.title??``,description:z.description??``}),I(z.cover_image??``),A.current=!0)},[z,k]);function B(e,t){R(n=>({...n,[e]:t}))}async function V(){if(j)return;let e=L.title.trim(),t=L.description.trim();if(!e){x.error(T(`form.titleRequired`));return}if(k&&!w){x.error(T(`form.collectionNotFound`));return}try{M(!0);let n=x.loading(T(k?`form.saving`:`form.creating`)),a=k?await i({collection_id:w,title:e,description:t,cover_image:F}):await r({title:e,description:t,cover_image:F});if(a.code===0){x.success(T(k?`form.saveSuccess`:`form.createSuccess`),{id:n}),D&&O([`user-profile`,`mine`,D,`user-collection-created`,D]),k&&w&&O([`collection-detail`,w]),E.back();return}x.error(a.message||T(k?`form.saveFailed`:`form.createFailed`),{id:n})}catch(e){console.error(k?`编辑合集失败`:`创建合集失败`,e),x.error(T(k?`form.saveFailed`:`form.createFailed`))}finally{M(!1)}}return b(s,{className:`min-h-screen !bg-bg2`,children:[y(h,{title:T(k?`form.editTitle`:`form.createTitle`),onBack:()=>E.back(),className:`!bg-bg2`,rightChild:y(e,{onClick:V,disabled:j||N,children:T(j?k?`form.saving`:`form.creating`:k?`form.save`:`form.create`)})}),b(s,{className:`pb-3`,children:[b(d,{className:`!bg-bg2 px-3 border-none`,children:[y(f,{required:!0,children:T(`form.label`)}),b(c,{children:[y(u,{className:`!bg-bg1 p-2.5`,maxLength:50,placeholder:T(`form.titlePlaceholder`),value:L.title,onChange:e=>B(`title`,e.target.value)}),y(l,{className:`!bg-bg1`,align:`block-end`,children:y(`div`,{className:`text-right w-full`,children:b(`span`,{className:`text-xs`,children:[L.title.length,`/50`]})})})]})]}),b(d,{className:`border-none px-3 bg-bg2! `,children:[y(f,{children:T(`form.descriptionLabel`)}),b(c,{children:[y(u,{className:`!bg-bg1 p-2.5`,maxLength:100,placeholder:T(`form.descriptionPlaceholder`),value:L.description,onChange:e=>B(`description`,e.target.value)}),y(l,{className:`!bg-bg1`,align:`block-end`,children:y(`div`,{className:`text-right w-full`,children:b(`span`,{className:`text-xs`,children:[L.description.length,`/100`]})})})]})]})]})]})}export{C as CollectionCreateForm};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityDeleteCollection as r,pCommunityRemoveContentFromCollection as i,pInteractionBatchDeleteCollects as a}from"../../../service/generated/client.mjs";import{useRouter as o}from"../../../utils/use-compatible-router.mjs";import{Box as s}from"../../ui/box.mjs";import{Checkbox as ee}from"../../ui/checkbox.mjs";import{DropdownMenu as te,DropdownMenuContent as c,DropdownMenuItem as l,DropdownMenuSeparator as u,DropdownMenuTrigger as ne}from"../../ui/dropdown-menu.mjs";import{List as d}from"../../ui/list.mjs";import{Text as re}from"../../ui/text.mjs";import{useLoginModalStore as f}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as ie}from"../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as ae}from"../../common/collection-popup/create-collection-sheet.mjs";import{ShareDrawer as oe}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as h}from"../../../types/share.mjs";import se from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as ce}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{CollectionDetailCard as g}from"./_components/collection-detail-card.mjs";import{CollectionDetailVideoCard as ue}from"./_components/collection-detail-video-card.mjs";import{useMemo as _,useState as v}from"react";import{MoreVertical as y}from"lucide-react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as de}from"next-intl";function C(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function w(e){let t=e.detail.info?.video_duration;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return Math.floor(t);let n=e.detail.duration;if(typeof n==`number`&&Number.isFinite(n)&&n>0)return Math.floor(n);let r=e.medias?.find(e=>{let t=e?.video_duration;return typeof t==`number`&&Number.isFinite(t)&&t>0})?.video_duration;return typeof r==`number`&&Number.isFinite(r)&&r>0?Math.floor(r):0}function T(e){let t=[e.detail.episode_cnt,e.detail.series_num_total,Array.isArray(e.detail.links)?e.detail.links.length:void 0].find(e=>typeof e==`number`&&Number.isFinite(e)&&e>0);return typeof t==`number`?Math.floor(t):0}function E(e){let t=e.detail.info?.play_count;if(typeof t==`number`&&Number.isFinite(t))return Math.max(0,Math.floor(t));let n=e.detail.view_count||e.viewCount;return typeof n==`number`&&Number.isFinite(n)?Math.max(0,Math.floor(n)):0}function D(e){return e.detail.type===2||e.is_more_link||e.detail.info?.is_more_link||e.detail.is_more_link?!0:T(e)>1}function fe(e){let t=e.detail,n=t.info,r=String(n?.cover_image||t.cover_image||C(e)||``),i=String(n?.text||n?.title||t.title||t.content||``),a=T(e),o=t.author_score??0,s=Array.isArray(t.tags)?t.tags:[];return{id:e.content_id?String(e.content_id):String(e.id),title:i,type:typeof e.type==`number`?e.type:0,coverImage:r,score:o,collectedAt:t.create_time==null?void 0:String(t.create_time),tags:s,duration:w(e),viewCount:E(e),episodeCount:a,publishTime:String(t.create_time??t.update_time??``),is_more_link:D(e),authorName:``}}function O({id:C}){let w=de(`components.pages.collectionDetail`),T=o(),{userId:E,isLogin:D}=t(),{open:O}=f(),k=p(),A=ie([`collection-detail`,C],()=>n({collection_id:C})),j=A.data?.data?.data?.collection?.user_id,M=!!(j&&E&&String(j)===String(E)),[pe,N]=v(!1),[P,F]=v(!1),[I,L]=v(!1),[R,z]=v(!1),[B,V]=v(()=>new Set),[H,U]=v(null),W=A.data?.data?.data?.collection,G=W?.contents,K=_(()=>G?G.map(e=>({content_id:e.content_id,is_more_link:e.is_more_link,id:Number(e.content_id),detail:e,type:Number(e.source_type??0),medias:e.medias,cover_image:e.cover_image,viewCount:e.view_count})):[],[G]).map(fe),me=K.length>0&&K.every(e=>e.type===1),q=_(()=>new Set(K.map(e=>e.id)),[K]),J=q.size>0&&B.size===q.size,{mutateAsync:he,isPending:ge}=m(async e=>await i({collection_id:C,content_id:e})),{mutateAsync:_e,isPending:Y}=m(async e=>await r({collection_id:e})),{mutateAsync:ve,isPending:X}=m(async e=>await a({app_id:0,user_id:E,folder_id:C,content_type:1,content_ids:e})),ye=M&&W?.is_default===!1;function be(e){U({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),N(!0)}function Z(){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}if(!M){S.error(w(`detail.operationFailed`));return}V(new Set),z(!0)}function xe(){V(new Set),z(!1)}function Q(e){V(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function Se(){if(J){V(new Set);return}V(new Set(q))}async function Ce(){if(!(B.size===0||X)){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}try{let e=await ve(Array.from(B));if(e.code===0){S.success(w(`detail.uncollectSuccess`)),k([`collection-detail`,C]),k([`user-profile`,`mine`]),k([`user-profile`,`profile`,j]),V(new Set),z(!1);return}S.error(e.message||w(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),S.error(w(`detail.operationFailed`))}}}function we(e){if(typeof window>`u`)return``;if(e.kind===`collection`)return`${window.location.origin}/collection/${e.id}`;let t=e.title?encodeURIComponent(e.title):`detail`,n=e.type===1?`/video/${e.id}/${t}`:`/post/${e.id}`;return`${window.location.origin}${n}`}function $(e){if(!H)return;let t=we(H);t&&se.showSharePopup({type:e,data:{id:H.id},copyUrl:t})}function Te(){$(h.WECHAT)}function Ee(){$(h.QQ)}function De(){$(h.WECHAT_MOMENTS)}function Oe(){if(!ge){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}!H||H.kind!==`content`||he(H.id).then(e=>{if(e.code===0){S.success(w(`detail.uncollectSuccess`)),k([`collection-detail`,C]),U(e=>e&&{...e,isCollected:!1});return}S.error(e.message||w(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),S.error(w(`detail.operationFailed`))})}}function ke(){L(!0),N(!1)}function Ae(){if(!Y){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}if(!ye){S.error(w(`detail.defaultCollectionDeleteNotSupported`));return}F(!0)}}async function je(){if(!Y)try{let e=await _e(C);if(e.code===0){S.success(w(`detail.deleteSuccess`)),k([`collection-detail`,C]),k([`user-profile`,`mine`]),k([`user-profile`,`profile`,j]),F(!1),N(!1),T.back();return}S.error(e.message||w(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),S.error(w(`detail.operationFailed`))}}return x(s,{className:`relative flex min-h-screen flex-col overflow-hidden bg-[var(--color-surface-panel-dark)] ${R?`pb-28`:`pb-6`}`,children:[b(le,{className:`!border-none !bg-[var(--color-surface-panel-dark)] !border-transparent`,title:W?.title??``,centerChild:b(`div`,{className:`flex min-w-0 flex-1 items-center justify-center px-12`,children:b(`p`,{className:`min-w-0 max-w-full truncate text-center text-[18px] leading-[22px] font-medium text-text1`,children:W?.title??``})}),onBack:()=>T.back(),rightChild:M?R?b(`button`,{type:`button`,onClick:xe,className:`px-2 py-1 text-sm text-text1`,children:w(`detail.done`)}):x(te,{children:[b(ne,{className:`flex h-10 w-10 items-center justify-center text-text1 outline-none`,children:b(y,{className:`h-5 w-5`,strokeWidth:2})}),x(c,{align:`end`,sideOffset:6,className:`!w-[180px] rounded-[8px] border-none !border-none !ring-0 shadow-none !shadow-none bg-[#252327] px-0 pb-1 pt-[3px]`,children:[b(l,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:ke,children:w(`detail.editCollection`)}),b(u,{className:`mx-0 my-1 bg-[#343237]`}),b(l,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:Z,children:w(`detail.manageCollection`)}),b(u,{className:`mx-0 my-1 bg-[#343237]`}),b(l,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:Ae,disabled:Y,children:w(Y?`detail.deleting`:`detail.deleteCollection`)})]})]}):void 0}),b(s,{className:`relative z-[1] px-4 pb-4`,children:b(s,{className:`text-text2 text-sm leading-[22px] break-all text-ellipsis line-clamp-1`,children:W?.description})}),b(s,{className:`relative z-[1] px-4 ${R?`pb-20`:``}`,children:me?b(d,{loading:A.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),columns:2,gridGap:16,className:`!bg-transparent`,children:K.map(e=>b(ue,{id:e.id,title:e.title,coverImage:e.coverImage,duration:e.duration,episodeCount:e.episodeCount,viewCount:e.viewCount,is_more_link:e.is_more_link,isEditMode:R,isSelected:B.has(e.id),onToggleSelection:Q},e.id))}):b(d,{loading:A.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),className:`!bg-transparent divide-y divide-text1/5`,children:K.map(e=>b(g,{...e,onOpenShare:be,isEditMode:R,isSelected:B.has(e.id),onToggleSelection:Q},e.id))})}),R&&x(s,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[x(s,{className:`flex items-center gap-2`,children:[b(ee,{checked:J,onCheckedChange:Se}),b(re,{className:`text-sm text-text1`,children:w(`detail.selectAll`)})]}),b(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:B.size>0?`default`:`outline`,disabled:B.size===0||X,onClick:Ce,children:w(X?`detail.deleting`:`detail.delete`)})]}),b(oe,{isShowCollect:H?.kind===`content`&&M&&D,isCollected:H?.isCollected,open:pe,onOpenChange:N,onShareWeChat:Te,onShareQQ:Ee,onShareMoments:De,onUncollect:Oe}),b(ae,{visible:I,mode:`edit`,collectionId:C,initialValues:W?{title:W.title??``,description:W.description??``}:void 0,onClose:()=>L(!1)}),b(ce,{open:P,onOpenChange:F,onConfirm:je,title:w(`detail.deleteCollection`),isConfirming:Y})]})}export{O as CollectionDetail};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityDeleteCollection as r,pCommunityRemoveContentFromCollection as i,pInteractionBatchDeleteCollects as a}from"../../../service/generated/client.mjs";import{usePageLifecycle as o}from"../../../utils/tracking.mjs";import{useRouter as s}from"../../../utils/use-compatible-router.mjs";import{Box as c}from"../../ui/box.mjs";import{Checkbox as ee}from"../../ui/checkbox.mjs";import{DropdownMenu as l,DropdownMenuContent as te,DropdownMenuItem as u,DropdownMenuSeparator as d,DropdownMenuTrigger as ne}from"../../ui/dropdown-menu.mjs";import{List as f}from"../../ui/list.mjs";import{Text as re}from"../../ui/text.mjs";import{useLoginModalStore as ie}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as ae,useMutation as p,useRequest as oe}from"../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as se}from"../../common/collection-popup/create-collection-sheet.mjs";import{ShareDrawer as ce}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as m}from"../../../types/share.mjs";import h from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as g}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as _}from"../../common/header-nav/client.mjs";import{CollectionDetailCard as le}from"./_components/collection-detail-card.mjs";import{CollectionDetailVideoCard as ue}from"./_components/collection-detail-video-card.mjs";import{useMemo as v,useState as y}from"react";import{MoreVertical as de}from"lucide-react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as fe}from"next-intl";function C(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function w(e){let t=e.detail.info?.video_duration;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return Math.floor(t);let n=e.detail.duration;if(typeof n==`number`&&Number.isFinite(n)&&n>0)return Math.floor(n);let r=e.medias?.find(e=>{let t=e?.video_duration;return typeof t==`number`&&Number.isFinite(t)&&t>0})?.video_duration;return typeof r==`number`&&Number.isFinite(r)&&r>0?Math.floor(r):0}function T(e){let t=[e.detail.episode_cnt,e.detail.series_num_total,Array.isArray(e.detail.links)?e.detail.links.length:void 0].find(e=>typeof e==`number`&&Number.isFinite(e)&&e>0);return typeof t==`number`?Math.floor(t):0}function E(e){let t=e.detail.info?.play_count;if(typeof t==`number`&&Number.isFinite(t))return Math.max(0,Math.floor(t));let n=e.detail.view_count||e.viewCount;return typeof n==`number`&&Number.isFinite(n)?Math.max(0,Math.floor(n)):0}function D(e){return e.detail.type===2||e.is_more_link||e.detail.info?.is_more_link||e.detail.is_more_link?!0:T(e)>1}function O(e){let t=e.detail,n=t.info,r=String(n?.cover_image||t.cover_image||C(e)||``),i=String(n?.text||n?.title||t.title||t.content||``),a=T(e),o=t.author_score??0,s=Array.isArray(t.tags)?t.tags:[];return{id:e.content_id?String(e.content_id):String(e.id),title:i,type:typeof e.type==`number`?e.type:0,coverImage:r,score:o,collectedAt:t.create_time==null?void 0:String(t.create_time),tags:s,duration:w(e),viewCount:E(e),episodeCount:a,publishTime:String(t.create_time??t.update_time??``),is_more_link:D(e),authorName:``}}function k({id:C}){let w=fe(`components.pages.collectionDetail`);o(`page_collection_detail`,`合集详情`);let T=s(),{userId:E,isLogin:D}=t(),{open:k}=ie(),A=ae(),j=oe([`collection-detail`,C],()=>n({collection_id:C})),M=j.data?.data?.data?.collection?.user_id,N=!!(M&&E&&String(M)===String(E)),[pe,P]=y(!1),[F,I]=y(!1),[L,R]=y(!1),[z,B]=y(!1),[V,H]=y(()=>new Set),[U,W]=y(null),G=j.data?.data?.data?.collection,K=G?.contents,q=v(()=>K?K.map(e=>({content_id:e.content_id,is_more_link:e.is_more_link,id:Number(e.content_id),detail:e,type:Number(e.source_type??0),medias:e.medias,cover_image:e.cover_image,viewCount:e.view_count})):[],[K]).map(O),me=q.length>0&&q.every(e=>e.type===1),J=v(()=>new Set(q.map(e=>e.id)),[q]),Y=J.size>0&&V.size===J.size,{mutateAsync:he,isPending:ge}=p(async e=>await i({collection_id:C,content_id:e})),{mutateAsync:_e,isPending:X}=p(async e=>await r({collection_id:e})),{mutateAsync:ve,isPending:Z}=p(async e=>await a({app_id:0,user_id:E,folder_id:C,content_type:1,content_ids:e})),ye=N&&G?.is_default===!1;function be(e){W({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),P(!0)}function xe(){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}if(!N){S.error(w(`detail.operationFailed`));return}H(new Set),B(!0)}function Se(){H(new Set),B(!1)}function Q(e){H(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function Ce(){if(Y){H(new Set);return}H(new Set(J))}async function we(){if(!(V.size===0||Z)){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}try{let e=await ve(Array.from(V));if(e.code===0){S.success(w(`detail.uncollectSuccess`)),A([`collection-detail`,C]),A([`user-profile`,`mine`]),A([`user-profile`,`profile`,M]),H(new Set),B(!1);return}S.error(e.message||w(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),S.error(w(`detail.operationFailed`))}}}function Te(e){if(typeof window>`u`)return``;if(e.kind===`collection`)return`${window.location.origin}/collection/${e.id}`;let t=e.title?encodeURIComponent(e.title):`detail`,n=e.type===1?`/video/${e.id}/${t}`:`/post/${e.id}`;return`${window.location.origin}${n}`}function $(e){if(!U)return;let t=Te(U);t&&h.showSharePopup({type:e,data:{id:U.id},copyUrl:t})}function Ee(){$(m.WECHAT)}function De(){$(m.QQ)}function Oe(){$(m.WECHAT_MOMENTS)}function ke(){if(!ge){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}!U||U.kind!==`content`||he(U.id).then(e=>{if(e.code===0){S.success(w(`detail.uncollectSuccess`)),A([`collection-detail`,C]),W(e=>e&&{...e,isCollected:!1});return}S.error(e.message||w(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),S.error(w(`detail.operationFailed`))})}}function Ae(){R(!0),P(!1)}function je(){if(!X){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}if(!ye){S.error(w(`detail.defaultCollectionDeleteNotSupported`));return}I(!0)}}async function Me(){if(!X)try{let e=await _e(C);if(e.code===0){S.success(w(`detail.deleteSuccess`)),A([`collection-detail`,C]),A([`user-profile`,`mine`]),A([`user-profile`,`profile`,M]),I(!1),P(!1),T.back();return}S.error(e.message||w(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),S.error(w(`detail.operationFailed`))}}return x(c,{className:`relative flex min-h-screen flex-col overflow-hidden bg-[var(--color-surface-panel-dark)] ${z?`pb-28`:`pb-6`}`,children:[b(_,{className:`!border-none !bg-[var(--color-surface-panel-dark)] !border-transparent`,title:G?.title??``,centerChild:b(`div`,{className:`flex min-w-0 flex-1 items-center justify-center px-12`,children:b(`p`,{className:`min-w-0 max-w-full truncate text-center text-[18px] leading-[22px] font-medium text-text1`,children:G?.title??``})}),onBack:()=>T.back(),rightChild:N?z?b(`button`,{type:`button`,onClick:Se,className:`px-2 py-1 text-sm text-text1`,children:w(`detail.done`)}):x(l,{children:[b(ne,{className:`flex h-10 w-10 items-center justify-center text-text1 outline-none`,children:b(de,{className:`h-5 w-5`,strokeWidth:2})}),x(te,{align:`end`,sideOffset:6,className:`!w-[180px] rounded-[8px] border-none !border-none !ring-0 shadow-none !shadow-none bg-[#252327] px-0 pb-1 pt-[3px]`,children:[b(u,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:Ae,children:w(`detail.editCollection`)}),b(d,{className:`mx-0 my-1 bg-[#343237]`}),b(u,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:xe,children:w(`detail.manageCollection`)}),b(d,{className:`mx-0 my-1 bg-[#343237]`}),b(u,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:je,disabled:X,children:w(X?`detail.deleting`:`detail.deleteCollection`)})]})]}):void 0}),b(c,{className:`relative z-[1] px-4 pb-4`,children:b(c,{className:`text-text2 text-sm leading-[22px] break-all text-ellipsis line-clamp-1`,children:G?.description})}),b(c,{className:`relative z-[1] px-4 ${z?`pb-20`:``}`,children:me?b(f,{loading:j.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),columns:2,gridGap:16,className:`!bg-transparent`,children:q.map(e=>b(ue,{id:e.id,title:e.title,coverImage:e.coverImage,duration:e.duration,episodeCount:e.episodeCount,viewCount:e.viewCount,is_more_link:e.is_more_link,isEditMode:z,isSelected:V.has(e.id),onToggleSelection:Q},e.id))}):b(f,{loading:j.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),className:`!bg-transparent divide-y divide-text1/5`,children:q.map(e=>b(le,{...e,onOpenShare:be,isEditMode:z,isSelected:V.has(e.id),onToggleSelection:Q},e.id))})}),z&&x(c,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[x(c,{className:`flex items-center gap-2`,children:[b(ee,{checked:Y,onCheckedChange:Ce}),b(re,{className:`text-sm text-text1`,children:w(`detail.selectAll`)})]}),b(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:V.size>0?`default`:`outline`,disabled:V.size===0||Z,onClick:we,children:w(Z?`detail.deleting`:`detail.delete`)})]}),b(ce,{isShowCollect:U?.kind===`content`&&N&&D,isCollected:U?.isCollected,open:pe,onOpenChange:P,onShareWeChat:Ee,onShareQQ:De,onShareMoments:Oe,onUncollect:ke}),b(se,{visible:L,mode:`edit`,collectionId:C,initialValues:G?{title:G.title??``,description:G.description??``}:void 0,onClose:()=>R(!1)}),b(g,{open:F,onOpenChange:I,onConfirm:Me,title:w(`detail.deleteCollection`),isConfirming:X})]})}export{k as CollectionDetail};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as r}from"../../../service/generated/client.mjs";import{uploadFile as i}from"../../../utils/upload-file.mjs";import{Avatar as ee,AvatarFallback as te,AvatarImage as ne}from"../../ui/avatar.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as re,InputGroupAddon as ie,InputGroupTextarea as ae}from"../../ui/input-group.mjs";import{Text as o}from"../../ui/text.mjs";import{useDeleteRequest as oe,useMutation as se,useRequest as ce}from"../../../hooks/query/use-query.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{PickerDrawer as s}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ue}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as de}from"../../common/image-crop-modal/image-crop-modal.mjs";import{useEffect as c,useRef as l,useState as u}from"react";import{ChevronDown as fe}from"lucide-react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{toast as p}from"sonner";import{useTranslations as pe}from"next-intl";import{produce as me}from"immer";const m={0:`secret`,1:`male`,2:`female`},h={male:1,female:2,secret:0},g=[`image/jpeg`,`image/png`],he=/^[\u4E00-\u9FFF\w.-]+$/;function ge(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return g.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function _(e){return e?h[e]===void 0?m[e]??`secret`:e:`secret`}function v(e){if(!e)return;if(h[e]!==void 0)return h[e];let t=Number(e);return Number.isNaN(t)?void 0:t}function _e(e){return{nickname:e?.nick_name??``,gender:_(e?.gender?.toString()),signature:e?.signature??``,avatar:e?.avatar??``}}function ve(e){if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}function ye({id:m}){let h=pe(`components.pages.edit`),{userId:g,userInfo:_,setUserInfo:ye}=e(),y=m??g,b=oe(),be={male:h(`page.genderMale`),female:h(`page.genderFemale`),secret:h(`page.genderSecret`)},xe=l(null),x=l(null),S=l(null),C=l(null),[w,T]=u(()=>_e()),[E,D]=u(!1),[Se,O]=u(null),[Ce,k]=u(!1),[A,j]=u(``),[M,N]=u(!1),[P,F]=u(``),[we,I]=u(!1),[L,R]=u(`secret`),[z,Te]=u(!1),[B,V]=u(``),Ee={code:0,message:``,data:{}},De={code:0,message:``,data:{}},{data:Oe,isLoading:H}=ce([`user-edit-info`,y],()=>y?t({user_id:y}):Promise.resolve(Ee)),{data:ke}=ce([`user-info-basic`,y],()=>y?n({user_id:y}):Promise.resolve(De)),{mutateAsync:Ae,isPending:je}=se(async e=>r(e)),Me=E||je||Se!==null,U=H||Me,W=U?`cursor-not-allowed opacity-60`:`cursor-pointer`,Ne=ke?.data?.display_id||_?.display_id||`--`,G=w.gender||`secret`,Pe=U||P.trim()===w.nickname,Fe=U||L===G,Ie=U||B===w.signature,K=`flex h-12 w-full items-center rounded-md bg-[var(--color-surface-field-bg)] px-4`,q=`text-sm leading-6 text-text3`,J=`block min-w-0 flex-1 truncate text-sm leading-5 text-text3`;c(()=>{let e=Oe?.data;e&&T(_e(e))},[Oe]),c(()=>{if(!M)return;let e=window.setTimeout(()=>{ve(x.current)},250);return()=>{window.clearTimeout(e)}},[M]),c(()=>{if(!z)return;let e=window.setTimeout(()=>{ve(S.current)},250);return()=>{window.clearTimeout(e)}},[z]),c(()=>()=>{A&&URL.revokeObjectURL(A)},[A]);function Y(e,t){T(me(n=>{n[e]=t}))}function Le(){A&&(URL.revokeObjectURL(A),j(``))}function Re(){y&&(b([`user-edit-info`,y]),b([`user-info-basic`,y]),b([`user-profile`,`mine`]),b([`user-profile`,`mine`,y]),b([`user-profile`,`profile`,y]))}function X(e){!y||y!==g||ye({..._,user_id:y,...e})}function ze(){p.info(h(`page.editBlockedWhileSaving`))}function Z(){return H?!0:Me?(ze(),!0):!1}function Be(e){return C.current?(ze(),!1):(C.current=e,O(e),!0)}function Ve(e){C.current===e&&(C.current=null,O(null))}async function Q(e,t){if(!Be(e))return!1;let n=p.loading(h(`page.savingInProgress`));try{return await t()}finally{p.dismiss(n),Ve(e)}}function He(e,t){let n={...w,...t},r={nickname:[`nick_name`,n.nickname||void 0],avatar:[`avatar`,n.avatar||void 0],signature:[`signature`,n.signature||void 0],gender:[`gender`,v(n.gender)]},i=Object.keys(r).filter(t=>t!==e).map(e=>r[e]);return i.push(r[e]),Object.fromEntries(i)}async function $(e,t){if(!y)return p.error(h(`page.userNotFound`)),!1;let n=He(e,t);try{return await Ae({user_id:y,...n}),Re(),!0}catch(e){return console.error(`更新用户信息失败`,e),p.error(h(`page.updateFailed`)),!1}}function Ue(){Z()||E||xe.current?.click()}function We(e){if(Z()){e.target&&(e.target.value=``);return}let t=e.target.files?.[0];if(t){if(!ge(t)){p.error(h(`page.imageTypeInvalid`)),e.target&&(e.target.value=``);return}j(URL.createObjectURL(t)),k(!0),e.target&&(e.target.value=``)}}async function Ge(e){await Q(`avatar`,async()=>{try{D(!0);let t=await i(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);return await $(`avatar`,{avatar:t.objectKey})?(Y(`avatar`,t.objectKey),X({avatar:t.objectKey}),Ke(),p.success(h(`page.avatarUpdateSuccess`)),!0):!1}catch(e){return console.error(`上传头像失败`,e),p.error(h(`page.avatarUploadFailed`)),!1}finally{D(!1)}})}function Ke(){k(!1),Le()}function qe(){Z()||(F(w.nickname),N(!0))}function Je(e){let t=e.target.value;t.length>24||F(t)}function Ye(e){return e?e.length<2?h(`page.nicknameTooShort`):he.test(e)?``:h(`page.nicknameInvalidChars`):h(`page.nicknameRequired`)}async function Xe(e){if(Pe)return!1;let t=e.trim(),n=Ye(t);return n?(p.error(n),!1):await Q(`nickname`,async()=>$(`nickname`,{nickname:t}))?(Y(`nickname`,t),X({nick_name:t}),F(t),p.success(h(`page.nicknameUpdateSuccess`)),!0):!1}function Ze(){Z()||(R(G),I(!0))}function Qe(){I(!1)}function $e(e){R(e)}async function et(e){let t=e||L||`secret`;if(t===G)return!1;let n=v(t);return await Q(`gender`,async()=>$(`gender`,{gender:t}))?(Y(`gender`,t),X({gender:n}),R(t),p.success(h(`page.genderUpdateSuccess`)),!0):!1}function tt(){Z()||(V(w.signature),Te(!0))}function nt(e){let t=e.target.value;t.length>100||V(t)}function rt(e){let t=e.trim();return t.length>0&&t.length<2?h(`page.signatureTooShort`):``}async function it(e){if(Ie)return!1;let t=rt(e);return t?(p.error(t),!1):await Q(`signature`,async()=>$(`signature`,{signature:e}))?(Y(`signature`,e),X({signature:e}),V(e),p.success(h(`page.signatureUpdateSuccess`)),!0):!1}return f(a,{className:`min-h-screen bg-[var(--color-surface-panel-dark)]`,children:[d(le,{className:`h-11 !border-none !bg-[var(--color-surface-panel-dark)]`,title:h(`page.title`)}),f(a,{className:`mx-auto flex w-full max-w-[390px] flex-col px-8 pb-10 pt-17`,children:[f(`button`,{type:`button`,onClick:Ue,className:`flex flex-col items-center gap-4 pb-10 ${W}`,children:[d(`input`,{ref:xe,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:We}),d(a,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:f(ee,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[d(ne,{src:w.avatar}),d(te,{})]})}),f(o,{className:`text-base leading-5 text-text3`,children:[`ID:`,` `,H?h(`page.loading`):E?h(`page.avatarUploading`):`${Ne}`]})]}),f(a,{className:`flex flex-col gap-6`,children:[f(a,{className:`flex flex-col gap-2`,children:[d(o,{as:`p`,className:q,children:h(`page.label`)}),d(`button`,{type:`button`,onClick:qe,className:`${K} ${W}`,children:d(o,{className:J,children:w.nickname||h(`page.nicknamePlaceholder`)})})]}),f(a,{className:`flex flex-col gap-2`,children:[d(o,{as:`p`,className:q,children:h(`page.genderLabel`)}),f(`button`,{type:`button`,onClick:Ze,className:`${K} justify-between gap-3 ${W}`,children:[d(o,{className:J,children:be[G]||h(`page.genderSecret`)}),d(fe,{className:`h-5 w-5 shrink-0 text-text3`,strokeWidth:1.75})]})]}),f(a,{className:`flex flex-col gap-2`,children:[d(o,{as:`p`,className:q,children:h(`page.signatureLabel`)}),d(`button`,{type:`button`,onClick:tt,className:`${K} ${W}`,children:d(o,{className:J,children:w.signature||h(`page.signaturePlaceholder`)})})]})]})]}),d(s,{open:M,onClose:()=>N(!1),title:h(`page.label`),confirmText:h(`page.submit`),onConfirm:e=>Xe(String(e)),confirmDisabled:Pe,children:({onValueChange:e})=>d(a,{className:`px-4 py-4 min-h-[230px]`,children:f(re,{children:[d(ae,{ref:x,className:`!bg-bg1 p-2.5`,rows:4,maxLength:24,placeholder:h(`page.nicknamePlaceholder`),value:P,onChange:t=>{Je(t),e(t.target.value)},disabled:U}),d(ie,{className:`!bg-bg1`,align:`block-end`,children:d(`div`,{className:`text-right w-full`,children:f(`span`,{className:`text-xs`,children:[P.length,`/`,24]})})})]})})}),d(ue,{open:we,onClose:Qe,value:L,onValueChange:$e,onConfirm:et,confirmDisabled:Fe}),d(s,{open:z,onClose:()=>Te(!1),title:h(`page.signatureLabel`),confirmText:h(`page.submit`),onConfirm:e=>it(String(e)),confirmDisabled:Ie,children:({onValueChange:e})=>d(a,{className:`px-4 py-4 min-h-[230px]`,children:f(re,{children:[d(ae,{ref:S,className:`!bg-bg1 p-2.5`,rows:4,maxLength:100,placeholder:h(`page.signaturePlaceholder`),value:B,onChange:t=>{nt(t),e(t.target.value)},disabled:U}),d(ie,{className:`!bg-bg1`,align:`block-end`,children:d(`div`,{className:`text-right w-full`,children:f(`span`,{className:`text-xs`,children:[B.length,`/`,100]})})})]})})}),d(de,{open:Ce,onClose:Ke,imageSrc:A,onConfirm:Ge,cropShape:`round`})]})}export{ye as EditClient};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{uploadFile as ee}from"../../../utils/upload-file.mjs";import{Avatar as te,AvatarFallback as ne,AvatarImage as re}from"../../ui/avatar.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as ie,InputGroupAddon as ae,InputGroupTextarea as oe}from"../../ui/input-group.mjs";import{Text as o}from"../../ui/text.mjs";import{useDeleteRequest as se,useMutation as ce,useRequest as s}from"../../../hooks/query/use-query.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{PickerDrawer as c}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ue}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as de}from"../../common/image-crop-modal/image-crop-modal.mjs";import{useEffect as l,useRef as u,useState as d}from"react";import{ChevronDown as fe}from"lucide-react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useTranslations as pe}from"next-intl";import{produce as me}from"immer";const he={0:`secret`,1:`male`,2:`female`},h={male:1,female:2,secret:0},g=[`image/jpeg`,`image/png`],ge=/^[\u4E00-\u9FFF\w.-]+$/;function _e(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return g.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function _(e){return e?h[e]===void 0?he[e]??`secret`:e:`secret`}function ve(e){if(!e)return;if(h[e]!==void 0)return h[e];let t=Number(e);return Number.isNaN(t)?void 0:t}function ye(e){return{nickname:e?.nick_name??``,gender:_(e?.gender?.toString()),signature:e?.signature??``,avatar:e?.avatar??``}}function be(e){if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}function xe({id:he}){let h=pe(`components.pages.edit`);i(`page_edit_profile`,`编辑资料`);let{userId:g,userInfo:_,setUserInfo:xe}=e(),v=he??g,y=se(),Se={male:h(`page.genderMale`),female:h(`page.genderFemale`),secret:h(`page.genderSecret`)},Ce=u(null),b=u(null),x=u(null),S=u(null),[C,w]=d(()=>ye()),[T,E]=d(!1),[we,D]=d(null),[Te,O]=d(!1),[k,A]=d(``),[j,M]=d(!1),[N,P]=d(``),[Ee,F]=d(!1),[I,L]=d(`secret`),[R,De]=d(!1),[z,B]=d(``),Oe={code:0,message:``,data:{}},ke={code:0,message:``,data:{}},{data:V,isLoading:H}=s([`user-edit-info`,v],()=>v?t({user_id:v}):Promise.resolve(Oe)),{data:Ae}=s([`user-info-basic`,v],()=>v?n({user_id:v}):Promise.resolve(ke)),{mutateAsync:je,isPending:Me}=ce(async e=>r(e)),Ne=T||Me||we!==null,U=H||Ne,W=U?`cursor-not-allowed opacity-60`:`cursor-pointer`,Pe=Ae?.data?.display_id||_?.display_id||`--`,G=C.gender||`secret`,Fe=U||N.trim()===C.nickname,Ie=U||I===G,Le=U||z===C.signature,K=`flex h-12 w-full items-center rounded-md bg-[var(--color-surface-field-bg)] px-4`,q=`text-sm leading-6 text-text3`,J=`block min-w-0 flex-1 truncate text-sm leading-5 text-text3`;l(()=>{let e=V?.data;e&&w(ye(e))},[V]),l(()=>{if(!j)return;let e=window.setTimeout(()=>{be(b.current)},250);return()=>{window.clearTimeout(e)}},[j]),l(()=>{if(!R)return;let e=window.setTimeout(()=>{be(x.current)},250);return()=>{window.clearTimeout(e)}},[R]),l(()=>()=>{k&&URL.revokeObjectURL(k)},[k]);function Y(e,t){w(me(n=>{n[e]=t}))}function Re(){k&&(URL.revokeObjectURL(k),A(``))}function ze(){v&&(y([`user-edit-info`,v]),y([`user-info-basic`,v]),y([`user-profile`,`mine`]),y([`user-profile`,`mine`,v]),y([`user-profile`,`profile`,v]))}function X(e){!v||v!==g||xe({..._,user_id:v,...e})}function Be(){m.info(h(`page.editBlockedWhileSaving`))}function Z(){return H?!0:Ne?(Be(),!0):!1}function Ve(e){return S.current?(Be(),!1):(S.current=e,D(e),!0)}function He(e){S.current===e&&(S.current=null,D(null))}async function Q(e,t){if(!Ve(e))return!1;let n=m.loading(h(`page.savingInProgress`));try{return await t()}finally{m.dismiss(n),He(e)}}function Ue(e,t){let n={...C,...t},r={nickname:[`nick_name`,n.nickname||void 0],avatar:[`avatar`,n.avatar||void 0],signature:[`signature`,n.signature||void 0],gender:[`gender`,ve(n.gender)]},i=Object.keys(r).filter(t=>t!==e).map(e=>r[e]);return i.push(r[e]),Object.fromEntries(i)}async function $(e,t){if(!v)return m.error(h(`page.userNotFound`)),!1;let n=Ue(e,t);try{return await je({user_id:v,...n}),ze(),!0}catch(e){return console.error(`更新用户信息失败`,e),m.error(h(`page.updateFailed`)),!1}}function We(){Z()||T||Ce.current?.click()}function Ge(e){if(Z()){e.target&&(e.target.value=``);return}let t=e.target.files?.[0];if(t){if(!_e(t)){m.error(h(`page.imageTypeInvalid`)),e.target&&(e.target.value=``);return}A(URL.createObjectURL(t)),O(!0),e.target&&(e.target.value=``)}}async function Ke(e){await Q(`avatar`,async()=>{try{E(!0);let t=await ee(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);return await $(`avatar`,{avatar:t.objectKey})?(Y(`avatar`,t.objectKey),X({avatar:t.objectKey}),qe(),m.success(h(`page.avatarUpdateSuccess`)),!0):!1}catch(e){return console.error(`上传头像失败`,e),m.error(h(`page.avatarUploadFailed`)),!1}finally{E(!1)}})}function qe(){O(!1),Re()}function Je(){Z()||(P(C.nickname),M(!0))}function Ye(e){let t=e.target.value;t.length>24||P(t)}function Xe(e){return e?e.length<2?h(`page.nicknameTooShort`):ge.test(e)?``:h(`page.nicknameInvalidChars`):h(`page.nicknameRequired`)}async function Ze(e){if(Fe)return!1;let t=e.trim(),n=Xe(t);return n?(m.error(n),!1):await Q(`nickname`,async()=>$(`nickname`,{nickname:t}))?(Y(`nickname`,t),X({nick_name:t}),P(t),m.success(h(`page.nicknameUpdateSuccess`)),!0):!1}function Qe(){Z()||(L(G),F(!0))}function $e(){F(!1)}function et(e){L(e)}async function tt(e){let t=e||I||`secret`;if(t===G)return!1;let n=ve(t);return await Q(`gender`,async()=>$(`gender`,{gender:t}))?(Y(`gender`,t),X({gender:n}),L(t),m.success(h(`page.genderUpdateSuccess`)),!0):!1}function nt(){Z()||(B(C.signature),De(!0))}function rt(e){let t=e.target.value;t.length>100||B(t)}function it(e){let t=e.trim();return t.length>0&&t.length<2?h(`page.signatureTooShort`):``}async function at(e){if(Le)return!1;let t=it(e);return t?(m.error(t),!1):await Q(`signature`,async()=>$(`signature`,{signature:e}))?(Y(`signature`,e),X({signature:e}),B(e),m.success(h(`page.signatureUpdateSuccess`)),!0):!1}return p(a,{className:`min-h-screen bg-[var(--color-surface-panel-dark)]`,children:[f(le,{className:`h-11 !border-none !bg-[var(--color-surface-panel-dark)]`,title:h(`page.title`)}),p(a,{className:`mx-auto flex w-full max-w-[390px] flex-col px-8 pb-10 pt-17`,children:[p(`button`,{type:`button`,onClick:We,className:`flex flex-col items-center gap-4 pb-10 ${W}`,children:[f(`input`,{ref:Ce,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:Ge}),f(a,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:p(te,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[f(re,{src:C.avatar}),f(ne,{})]})}),p(o,{className:`text-base leading-5 text-text3`,children:[`ID:`,` `,H?h(`page.loading`):T?h(`page.avatarUploading`):`${Pe}`]})]}),p(a,{className:`flex flex-col gap-6`,children:[p(a,{className:`flex flex-col gap-2`,children:[f(o,{as:`p`,className:q,children:h(`page.label`)}),f(`button`,{type:`button`,onClick:Je,className:`${K} ${W}`,children:f(o,{className:J,children:C.nickname||h(`page.nicknamePlaceholder`)})})]}),p(a,{className:`flex flex-col gap-2`,children:[f(o,{as:`p`,className:q,children:h(`page.genderLabel`)}),p(`button`,{type:`button`,onClick:Qe,className:`${K} justify-between gap-3 ${W}`,children:[f(o,{className:J,children:Se[G]||h(`page.genderSecret`)}),f(fe,{className:`h-5 w-5 shrink-0 text-text3`,strokeWidth:1.75})]})]}),p(a,{className:`flex flex-col gap-2`,children:[f(o,{as:`p`,className:q,children:h(`page.signatureLabel`)}),f(`button`,{type:`button`,onClick:nt,className:`${K} ${W}`,children:f(o,{className:J,children:C.signature||h(`page.signaturePlaceholder`)})})]})]})]}),f(c,{open:j,onClose:()=>M(!1),title:h(`page.label`),confirmText:h(`page.submit`),onConfirm:e=>Ze(String(e)),confirmDisabled:Fe,children:({onValueChange:e})=>f(a,{className:`px-4 py-4 min-h-[230px]`,children:p(ie,{children:[f(oe,{ref:b,className:`!bg-bg1 p-2.5`,rows:4,maxLength:24,placeholder:h(`page.nicknamePlaceholder`),value:N,onChange:t=>{Ye(t),e(t.target.value)},disabled:U}),f(ae,{className:`!bg-bg1`,align:`block-end`,children:f(`div`,{className:`text-right w-full`,children:p(`span`,{className:`text-xs`,children:[N.length,`/`,24]})})})]})})}),f(ue,{open:Ee,onClose:$e,value:I,onValueChange:et,onConfirm:tt,confirmDisabled:Ie}),f(c,{open:R,onClose:()=>De(!1),title:h(`page.signatureLabel`),confirmText:h(`page.submit`),onConfirm:e=>at(String(e)),confirmDisabled:Le,children:({onValueChange:e})=>f(a,{className:`px-4 py-4 min-h-[230px]`,children:p(ie,{children:[f(oe,{ref:x,className:`!bg-bg1 p-2.5`,rows:4,maxLength:100,placeholder:h(`page.signaturePlaceholder`),value:z,onChange:t=>{rt(t),e(t.target.value)},disabled:U}),f(ae,{className:`!bg-bg1`,align:`block-end`,children:f(`div`,{className:`text-right w-full`,children:p(`span`,{className:`text-xs`,children:[z.length,`/`,100]})})})]})})}),f(de,{open:Te,onClose:qe,imageSrc:k,onConfirm:Ke,cropShape:`round`})]})}export{xe as EditClient};