@funhub/platform 0.2.9 → 0.2.11

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 (169) hide show
  1. package/dist/assets/icons/search/video.mjs +2 -0
  2. package/dist/biz.d.mts +5 -5
  3. package/dist/biz.mjs +1 -1
  4. package/dist/components/biz/business/advertisement/ad-match.d.mts +8 -4
  5. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  6. package/dist/components/biz/business/advertisement/ad-provider.mjs +1 -1
  7. package/dist/components/biz/business/advertisement/ad-query.d.mts +1 -2
  8. package/dist/components/biz/business/advertisement/ad-query.mjs +1 -1
  9. package/dist/components/biz/business/advertisement/ad-runtime-provider.d.mts +2 -2
  10. package/dist/components/biz/business/advertisement/ad-runtime-provider.mjs +1 -1
  11. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
  12. package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +2 -3
  13. package/dist/components/biz/business/advertisement/banner-ad/material.mjs +1 -1
  14. package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +9 -6
  15. package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +1 -1
  16. package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +1 -31
  17. package/dist/components/biz/business/advertisement/feed-ad/index.mjs +1 -1
  18. package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +4 -4
  19. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
  20. package/dist/components/biz/business/advertisement/floating-ad/index.d.mts +1 -1
  21. package/dist/components/biz/business/advertisement/floating-ad/material.d.mts +5 -0
  22. package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +21 -10
  23. package/dist/components/biz/business/advertisement/floating-ad/schema.mjs +1 -1
  24. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
  25. package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +1 -2
  26. package/dist/components/biz/business/advertisement/icon-ad/material.mjs +1 -1
  27. package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +7 -2
  28. package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +1 -1
  29. package/dist/components/biz/business/advertisement/index.d.mts +4 -4
  30. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +3 -3
  31. package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +1 -1
  32. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +2 -2
  33. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +14 -15
  34. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  35. package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
  36. package/dist/components/biz/business/advertisement/text-ad/material.d.mts +1 -2
  37. package/dist/components/biz/business/advertisement/text-ad/material.mjs +1 -1
  38. package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +5 -3
  39. package/dist/components/biz/business/advertisement/text-ad/schema.mjs +1 -1
  40. package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
  41. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  42. package/dist/components/biz/business/detail/shared/registry.d.mts +1 -0
  43. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  44. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
  45. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  46. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  47. package/dist/components/biz/business/detail/video-detail-recommend/material.d.mts +1 -0
  48. package/dist/components/biz/business/detail/video-detail-recommend/schema.d.mts +1 -0
  49. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
  50. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -1
  51. package/dist/components/biz/business/detail/video-detail-recommend/utils.mjs +1 -1
  52. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  53. package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
  54. package/dist/components/biz/business/home-recommend/home-recommend-grid/client.mjs +1 -1
  55. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +4 -24
  56. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  57. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +2 -22
  58. package/dist/components/biz/business/home-recommend/home-recommend-grid/server.mjs +1 -1
  59. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.mjs +1 -1
  60. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +4 -24
  61. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  62. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +2 -22
  63. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/server.mjs +1 -1
  64. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  65. package/dist/components/biz/business/home-recommend/shared/home-recommend-default-config.mjs +1 -1
  66. package/dist/components/biz/business/home-recommend/shared/home-recommend-play-count.mjs +2 -0
  67. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  68. package/dist/components/biz/business/home-recommend/shared/home-recommend-runtime-props.mjs +1 -1
  69. package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +1 -1
  70. package/dist/components/biz/business/home-recommend/shared/home-recommend-smart-tag.mjs +2 -0
  71. package/dist/components/biz/business/hot-recommend/client.mjs +1 -1
  72. package/dist/components/biz/business/hot-recommend/material.d.mts +0 -1
  73. package/dist/components/biz/business/hot-recommend/schema.d.mts +0 -1
  74. package/dist/components/biz/business/hot-recommend/schema.mjs +1 -1
  75. package/dist/components/biz/business/image-text-recommend/client.d.mts +1 -1
  76. package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
  77. package/dist/components/biz/business/image-text-recommend/material.d.mts +7 -7
  78. package/dist/components/biz/business/image-text-recommend/schema.d.mts +25 -30
  79. package/dist/components/biz/business/image-text-recommend/schema.mjs +1 -1
  80. package/dist/components/biz/business/image-text-recommend/server.mjs +1 -1
  81. package/dist/components/biz/business/image-text-recommend/shared/query.mjs +1 -1
  82. package/dist/components/biz/business/index.d.mts +4 -4
  83. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  84. package/dist/components/biz/business/marquee/client.mjs +1 -1
  85. package/dist/components/biz/business/marquee/marquee.module.mjs +24 -0
  86. package/dist/components/biz/business/marquee/material.d.mts +6 -5
  87. package/dist/components/biz/business/marquee/schema.d.mts +6 -5
  88. package/dist/components/biz/business/marquee/schema.mjs +1 -1
  89. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  90. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  91. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -1
  92. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
  93. package/dist/components/biz/business/tab-bar/client.d.mts +0 -2
  94. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  95. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  96. package/dist/components/biz/business/text-recommend/material.d.mts +0 -1
  97. package/dist/components/biz/business/text-recommend/schema.d.mts +0 -1
  98. package/dist/components/biz/business/text-recommend/schema.mjs +1 -1
  99. package/dist/components/common/collection-popup/create-collection-sheet.d.mts +3 -0
  100. package/dist/components/common/collection-popup/create-collection-sheet.mjs +1 -1
  101. package/dist/components/common/collection-popup/index.mjs +1 -1
  102. package/dist/components/common/list/waterfall-recommend/recommend-badge-style.mjs +2 -0
  103. package/dist/components/common/list/waterfall-recommend/waterfall-recommend-display.mjs +2 -0
  104. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +5 -7
  105. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -1
  106. package/dist/components/common/series-episodes/index.d.mts +1 -0
  107. package/dist/components/common/series-episodes/index.mjs +1 -1
  108. package/dist/components/common/video-player/index.d.mts +1 -2
  109. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  110. package/dist/components/pages/feed-series/feed-series-client.mjs +1 -1
  111. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  112. package/dist/components/pages/search/search-result/shared.mjs +1 -1
  113. package/dist/components/pages/search-result/search-video-info.mjs +1 -1
  114. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +1 -1
  115. package/dist/components/ui/badge.d.mts +1 -1
  116. package/dist/components/ui/button.d.mts +2 -2
  117. package/dist/components/ui/empty.d.mts +1 -1
  118. package/dist/components/ui/item.d.mts +1 -1
  119. package/dist/hooks.d.mts +1 -2
  120. package/dist/hooks.mjs +1 -1
  121. package/dist/i18n/locales/en.mjs +1 -1
  122. package/dist/i18n/locales/zh-CN.mjs +1 -1
  123. package/dist/materials.d.mts +1 -2
  124. package/dist/materials.mjs +1 -1
  125. package/dist/service/advertisement.d.mts +1 -1
  126. package/dist/service/advertisement.mjs +1 -1
  127. package/dist/service/generated/client.d.mts +2 -10
  128. package/dist/service/generated/client.mjs +1 -1
  129. package/dist/service/generated/tanstack.d.mts +2 -12
  130. package/dist/service/generated/tanstack.mjs +1 -1
  131. package/dist/service.d.mts +3 -3
  132. package/dist/service.mjs +1 -1
  133. package/dist/store/modules/user-store.d.mts +1 -1
  134. package/dist/store/modules/user-store.mjs +1 -1
  135. package/dist/store.d.mts +1 -3
  136. package/dist/store.mjs +1 -1
  137. package/dist/types.d.mts +1 -171
  138. package/dist/utils/device-id.d.mts +2 -2
  139. package/dist/utils/device-id.mjs +1 -1
  140. package/dist/utils/http.mjs +1 -1
  141. package/dist/utils/password-validator.mjs +1 -1
  142. package/dist/utils/schema/inspector.d.mts +2 -2
  143. package/dist/utils.d.mts +1 -3
  144. package/dist/utils.mjs +1 -1
  145. package/package.json +1 -2
  146. package/dist/components/biz/business/home-recommend/shared/home-recommend-smart-layout.mjs +0 -2
  147. package/dist/components/biz/business/ranking-recommend/client.d.mts +0 -17
  148. package/dist/components/biz/business/ranking-recommend/client.mjs +0 -70
  149. package/dist/components/biz/business/ranking-recommend/material.d.mts +0 -35
  150. package/dist/components/biz/business/ranking-recommend/material.mjs +0 -2
  151. package/dist/components/biz/business/ranking-recommend/schema.d.mts +0 -35
  152. package/dist/components/biz/business/ranking-recommend/schema.mjs +0 -2
  153. package/dist/components/biz/business/ranking-recommend/server.d.mts +0 -11
  154. package/dist/components/biz/business/ranking-recommend/server.mjs +0 -2
  155. package/dist/components/biz/business/ranking-recommend/shared/query.mjs +0 -2
  156. package/dist/components/biz/business/ranking-recommend/shared.d.mts +0 -15
  157. package/dist/components/biz/business/ranking-recommend/shared.mjs +0 -2
  158. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +0 -2
  159. package/dist/components/common/video-player/video-player-ref-context.mjs +0 -2
  160. package/dist/hooks/use-is-client.d.mts +0 -10
  161. package/dist/hooks/use-is-client.mjs +0 -2
  162. package/dist/store/modules/blind-spot-ad-store.d.mts +0 -116
  163. package/dist/store/modules/blind-spot-ad-store.mjs +0 -2
  164. package/dist/store/modules/video-player-ref-store.d.mts +0 -21
  165. package/dist/store/modules/video-player-ref-store.mjs +0 -2
  166. package/dist/utils/browser-fingerprint.d.mts +0 -13
  167. package/dist/utils/browser-fingerprint.mjs +0 -2
  168. package/dist/utils/request-user-id.d.mts +0 -12
  169. package/dist/utils/request-user-id.mjs +0 -2
@@ -11,7 +11,6 @@ import * as zod_v4_core0 from "zod/v4/core";
11
11
  declare const hotRecommendMaterial: DefineMaterialOption<typeof HotRecommendServer, typeof HotRecommendClient, zod.ZodObject<{
12
12
  readonly title: zod.ZodString & SchemaHasDefaultValue;
13
13
  readonly displayCount: zod.ZodNumber & SchemaHasDefaultValue;
14
- readonly showRefresh: zod.ZodBoolean & SchemaHasDefaultValue;
15
14
  readonly items: zod.ZodArray<zod.ZodObject<{
16
15
  label: zod.ZodString & SchemaHasDefaultValue;
17
16
  }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
@@ -10,7 +10,6 @@ import { z } from "zod";
10
10
  declare const hotRecommendInspectorPropsSchema: z.ZodObject<{
11
11
  readonly title: z.ZodString & SchemaHasDefaultValue;
12
12
  readonly displayCount: z.ZodNumber & SchemaHasDefaultValue;
13
- readonly showRefresh: z.ZodBoolean & SchemaHasDefaultValue;
14
13
  readonly items: z.ZodArray<z.ZodObject<{
15
14
  label: z.ZodString & SchemaHasDefaultValue;
16
15
  }, z.core.$strip>> & SchemaHasDefaultValue;
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import{z as t}from"zod";const n=e(e=>({title:e.string(`热门推荐`,{label:`标题名称`,description:`支持输入,中/英/数/符,6个字符`}),displayCount:e.number(4,{label:`展示数`}),showRefresh:e.boolean(!1,{label:`是否展示换一批`,fieldType:`switch`}),items:e.array(t.object({label:e.string(``,{label:`热词`})}),{label:`关键词列表`,defaultValue:[]})}));export{n as hotRecommendInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import{z as t}from"zod";const n=e(e=>({title:e.string(`热门推荐`,{label:`标题名称`,description:`支持输入,中/英/数/符,6个字符`}),displayCount:e.number(4,{label:`展示数`}),items:e.array(t.object({label:e.string(`东野圭吾作品:11字迷案`,{label:`热词`})}),{label:`推荐位模块`,defaultValue:[{label:`东野圭吾作品:11字迷案`},{label:`嫌疑人X的献身:高智商博弈`},{label:`白夜行:原著同名悬疑改编`},{label:`神探伽利略:校园连环谜案`},{label:`假面饭店:密室追凶夜`},{label:`恶意:东野圭吾高分作品`}]})}));export{n as hotRecommendInspectorPropsSchema};
@@ -9,7 +9,7 @@ type ImageTextRecommendProps = InferSchemaProps<typeof imageTextRecommendInspect
9
9
  interface ClientProps extends ImageTextRecommendProps {}
10
10
  /**
11
11
  * 图文推荐物料组件 - 客户端部分
12
- * - 智能推荐开启:按 layout(与首页宫格智能筛选形态一致)调用热门或最新列表,T+1 自动更新
12
+ * - 智能铺设开启:按标签调用热门列表接口,随机铺设推荐位,T+1 自动更新
13
13
  * - 智能铺设关闭:按配置的内容 ID 取数;超过 8 个时分批拉取(每批 8 个),滚动到倒数第二个时触发下一批
14
14
  */
15
15
  declare function ImageTextRecommendClient(props: ClientProps): react_jsx_runtime0.JSX.Element | null;
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as t,pContentGetNewstVideoList as n,pContentGetPopularVideoList as r}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as i,pContentGetNewstVideoListKey as a,pContentGetPopularVideoListKey as o}from"../../../../service/generated/tanstack.mjs";import{Image as s}from"../../../ui/image.mjs";import{Box as c}from"../../../ui/box.mjs";import{Text as l}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as u,buildImageTextRecommendRemoteMap as d,getImageTextRecommendFixedIds as f,resolveImageTextRecommendVideoId as ee}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import{normalizeHomeRecommendSmartLayout as te}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import ne from"../../../../assets/images/frame.mjs";import re from"../../../../assets/images/subscript.mjs";import{buildImageTextSmartListBody as m,resolveImageTextSmartListKind as ie}from"./shared/query.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as ae,useState as v}from"react";import{Fragment as oe,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as se}from"next-intl";import ce from"next/link";const x=[];function S(e){return typeof e==`string`?e:e.src}function le(t,n){if(!t||!t.trim())return S(n);if(t.startsWith(`http`)||t.startsWith(`//`)||t.startsWith(`data:`))return t;let r=e();return r?`${r}${t.startsWith(`/`)?t:`/${t}`}`:t}function C(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function w(e){return e==null?``:e.name||``}function T(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function E(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function D(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function ue(e,t,n){return e?T(e,n)===2&&t?D(e,t):E(Number(e.duration??e.detail?.duration??0)):``}function de(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function fe(e,t){if(!e)return``;let n=e,r=t?Number(n.static?.browse_count??0):Number(n.browse_count??0);if(!Number.isFinite(r)||r<=0)return``;if(r>=1e6){let e=(r/1e6).toFixed(1);return e.endsWith(`.0`)?`${e.slice(0,-2)}M`:`${e}M`}if(r>=1e3){let e=(r/1e3).toFixed(1);return e.endsWith(`.0`)?`${e.slice(0,-2)}k`:`${e}k`}return Math.floor(r).toString()}function pe(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function O(e){let{title:T,items:E=x,commonPlayCount:D,commonEpisodes:O,layout:k,mode:A=`renderer`}=e,j=se(`components.biz.business.imageTextRecommend`),M=A===`renderer`,N=A===`editor`,[P,F]=v({}),[I,L]=v([]),[R,z]=v(0),[B,V]=v(void 0),H=ae(null),U=_(()=>te(k),[k]),W=U?.enabled===!0,G=_(()=>ie(U?.sortRule),[U?.sortRule]),K=E?.length??0,q=_(()=>f(E,W),[W,E]),J=_(()=>q.slice(0,u),[q]),Y=_(()=>{if(U?.enabled)return m(U,{targetCount:K})},[U,K]),{data:X}=p(_(()=>!Y||!W?[`image-text-recommend`,`smart-idle`]:G===`newest`?a(Y):o(Y),[Y,W,G]),async()=>!Y||!W?{data:{videos:[],cursor:``}}:G===`newest`?n(Y):r(Y),{enabled:M&&!N&&W&&E.length>0&&!!Y,staleTime:1/0}),{data:me}=p(i({ids:J}),()=>t({ids:J}),{enabled:M&&!N&&!W&&J.length>0,staleTime:1/0}),Z=_(()=>W&&K>u?Math.ceil(K/u):q.length>0?Math.ceil(q.length/u):0,[W,K,q.length]),Q=h((e,t)=>j(t?`updatedTo`:`allEpisodes`,{count:e}),[j]),he=h(async(e,n)=>{if(e.length===0)return;let r=d((await t({ids:e})).data?.videos??[]);F(e=>n?{...e,...r}:r)},[]);g(()=>{if(N)return;if(W){let e=X?.data?.videos??[];K>u?(L(e.slice(0,u)),V(X?.data?.cursor),z(e.length>0?1:0)):(L(e.slice(0,K)),z(0)),F({});return}if(J.length===0){F({}),L([]),z(0),V(void 0);return}let e=me?.data?.videos??[];F(d(e)),L([]),V(void 0),z(e.length>0?1:0)},[N,W,X,me,J,K]),g(()=>{if(N||Z<1||R<1||R>=Z)return;let e=H.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let i=R;if(W&&U){let e=m(U,{targetCount:K,cursor:B,pageSize:u});(G===`newest`?n:r)(e).then(e=>{let t=e.data?.videos??[];L(e=>[...e,...t.slice(0,u)]),V(e.data?.cursor),z(i+1)}).catch(()=>{})}else{let e=i*u,t=q.slice(e,e+u);t.length>0&&(he(t,!0),z(i+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[N,W,U,G,q,R,Z,K,B,he]),g(()=>{if(N||!W||!U||K<=0)return;let e=U,t,i=!1;function a(){t=window.setTimeout(()=>{let t=m(e,{targetCount:K,pageSize:Math.max(20,K*10)});(G===`newest`?n:r)(t).then(e=>{i||L((e.data?.videos??[]).slice(0,K))}).catch(()=>{i||L([])}).finally(()=>{i||a()})},pe())}return a(),()=>{i=!0,t!==void 0&&window.clearTimeout(t)}},[N,W,U,G,K]);let $=_(()=>!E||E.length===0?x:N?E:W&&K>u?E.slice(0,I.length):E,[E,N,W,K,I.length]),ge=_(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=W?I[t]:n?P[n]:void 0,i=W?r?w(r):(e?.title??``).trim():(e?.title??``).trim()||(r?w(r):``),a=(e?.cover??``).trim(),o=W?C(r)||a:a||(e?.useVideoPoster?C(r):``),s=W&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=ue(r,Q,W),l=fe(r,W);return{...e,contentId:n||(r?ee(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):x,[Q,W,$,P,I]);if(!E||E.length===0)return null;let _e=R>=1&&R<Z?W?I.length-2:R*u-2:-1;return b(c,{className:N?`bg-bg1 px-3 py-3 pointer-events-none`:`bg-bg1 px-3 py-3`,children:[T&&y(c,{className:`mb-3 flex items-center justify-between`,children:y(l,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:T})}),y(c,{className:`flex overflow-x-auto pb-2 scrollbar-hide space-x-2`,children:ge.map((e,t)=>{let n=W?D:e.showPlayCount??!1,r=(e.playCountText??``).trim(),i=r!==``,a=W?O:e.showEpisodes??!1,o=(e.episodeOrDurationText??``).trim(),u=a&&o!==``,d=A===`renderer`?de(e.contentId??``,e.title??``):``,f=b(oe,{children:[b(c,{className:`relative rounded-lg overflow-hidden bg-bg2 w-[116px] h-[134px]`,children:[N||e.cover?y(s,{src:le(e.cover,ne),alt:e.title??``,fill:!0,className:`object-cover`}):y(c,{className:`w-full h-full flex items-center justify-center`,children:y(l,{className:`text-text3 text-xs`,children:j(`noCover`)})}),!W&&(e.badge??``).trim()?y(c,{className:`absolute top-0 right-0 w-8 h-8`,children:y(s,{src:(e.badge??``).trim()||S(re),alt:``,fill:!0,sizes:`32px`,className:`object-contain object-right-top`,unoptimized:!0})}):null,b(c,{className:`absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent pb-1 pt-3 px-1 flex justify-between items-center gap-1`,children:[y(c,{className:`flex items-center min-w-0 shrink`,children:n&&i?b(c,{className:`flex items-center gap-1 rounded bg-overlay px-1 py-0`,children:[y(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`10`,viewBox:`0 0 12 10`,fill:`none`,className:`shrink-0`,"aria-hidden":!0,children:y(`path`,{d:`M7.56 5.18437L5.013 6.56737C4.893 6.63337 4.761 6.66937 4.638 6.66937C4.269 6.66937 4.002 6.38737 4.002 5.99737V3.28237C4.002 2.89237 4.269 2.61037 4.638 2.61037C4.764 2.61037 4.893 2.64637 5.013 2.70937L7.572 4.09237C7.803 4.21837 7.938 4.41637 7.938 4.63237C7.938 4.85137 7.8 5.05537 7.56 5.18437ZM9.807 9.27637L2.133 8.52937C0.954 8.52937 0 7.57537 0 6.39637V2.79937C0 1.62037 0.954 0.666368 2.133 0.666368L9.81 0.000367165C10.989 0.000367165 11.943 0.954367 11.943 2.13337V7.14337C11.9422 7.70935 11.7168 8.25188 11.3163 8.65181C10.9158 9.05174 10.373 9.27637 9.807 9.27637ZM10.875 2.13337C10.875 1.99351 10.8475 1.85502 10.7939 1.72581C10.7404 1.5966 10.662 1.47919 10.5631 1.3803C10.4642 1.2814 10.3468 1.20296 10.2176 1.14944C10.0883 1.09591 9.94986 1.06837 9.81 1.06837L2.133 1.73437C1.99314 1.73437 1.85465 1.76191 1.72544 1.81544C1.59623 1.86896 1.47883 1.9474 1.37993 2.0463C1.28104 2.14519 1.20259 2.2626 1.14907 2.39181C1.09555 2.52102 1.068 2.65951 1.068 2.79937V6.39637C1.068 6.67882 1.1802 6.94971 1.37993 7.14944C1.57966 7.34916 1.85054 7.46137 2.133 7.46137L9.807 8.20837C9.94686 8.20837 10.0853 8.18082 10.2146 8.1273C10.3438 8.07378 10.4612 7.99533 10.5601 7.89644C10.659 7.79754 10.7374 7.68014 10.7909 7.55093C10.8445 7.42171 10.872 7.28323 10.872 7.14337V2.13337H10.875Z`,fill:`white`})}),y(l,{className:`text-white text-[12px] leading-[20px]`,children:r})]}):null}),y(c,{className:`flex items-center shrink-0`,children:u?y(l,{className:`text-white text-[12px] leading-[20px]`,children:o}):null})]})]}),y(c,{className:`mt-2 py-2`,children:y(l,{className:`text-[16px] text-text1 font-bold leading-[24px] line-clamp-1`,children:e.title})})]});return y(c,{ref:t===_e?H:void 0,className:`flex-shrink-0 w-[116px]`,children:d?y(ce,{href:d,className:`block`,children:f}):f},t)})})]})}export{O as ImageTextRecommendClient};
2
+ "use client";import e from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as t,pContentGetPopularVideoList as n}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as r,pContentGetPopularVideoListKey as i}from"../../../../service/generated/tanstack.mjs";import{Image as a}from"../../../ui/image.mjs";import{Box as o}from"../../../ui/box.mjs";import{Text as s}from"../../../ui/text.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as c,buildImageTextRecommendChosenTags as l,buildImageTextRecommendRemoteMap as u,buildImageTextRecommendSmartPicked as d,getImageTextRecommendFixedIds as f,getImageTextRecommendLayoutTags as ee,resolveImageTextRecommendVideoId as te}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as p}from"../../../../hooks/query/use-query.mjs";import ne from"../../../../assets/images/frame.mjs";import re from"../../../../assets/images/subscript.mjs";import{buildSmartPopularQuery as ie,buildStableChosenTags as ae}from"./shared/query.mjs";import{useCallback as m,useEffect as h,useMemo as g,useRef as oe,useState as _}from"react";import{Fragment as se,jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as ce}from"next-intl";import le from"next/link";const b=[];function x(e){return typeof e==`string`?e:e.src}function ue(t,n){if(!t||!t.trim())return x(n);if(t.startsWith(`http`)||t.startsWith(`//`)||t.startsWith(`data:`))return t;let r=e();return r?`${r}${t.startsWith(`/`)?t:`/${t}`}`:t}function S(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||``}function C(e){return e==null?``:e.name||``}function w(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function T(e){if(!Number.isFinite(e)||e<=0)return``;let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function E(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function de(e,t,n){return e?w(e,n)===2&&t?E(e,t):T(Number(e.duration??e.detail?.duration??0)):``}function fe(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function pe(e,t){if(!e)return``;let n=e,r=t?Number(n.static?.browse_count??0):Number(n.browse_count??0);if(!Number.isFinite(r)||r<=0)return``;if(r>=1e6){let e=(r/1e6).toFixed(1);return e.endsWith(`.0`)?`${e.slice(0,-2)}M`:`${e}M`}if(r>=1e3){let e=(r/1e3).toFixed(1);return e.endsWith(`.0`)?`${e.slice(0,-2)}k`:`${e}k`}return Math.floor(r).toString()}function me(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function D(e){let{title:w,items:T=b,commonPlayCount:E,commonEpisodes:D,layout:O,mode:k=`renderer`}=e,A=ce(`components.biz.business.imageTextRecommend`),j=k===`renderer`,M=k===`editor`,[N,P]=_({}),[F,I]=_([]),[L,R]=_(0),[z,B]=_(void 0),V=oe(null),H=!!O?.enabled,U=g(()=>ee(O),[O]),W=T?.length??0,G=g(()=>f(T,H),[H,T]),K=g(()=>G.slice(0,c),[G]),q=g(()=>ae(U,W),[U,W]),J=g(()=>ie(q,W),[q,W]),{data:Y}=p(i(J),()=>n(J),{enabled:j&&!M&&H&&T.length>0,staleTime:1/0}),{data:X}=p(r({ids:K}),()=>t({ids:K}),{enabled:j&&!M&&!H&&K.length>0,staleTime:1/0}),Z=g(()=>H&&W>c?Math.ceil(W/c):G.length>0?Math.ceil(G.length/c):0,[H,W,G.length]),Q=m((e,t)=>A(t?`updatedTo`:`allEpisodes`,{count:e}),[A]),he=m(async(e,n)=>{if(e.length===0)return;let r=u((await t({ids:e})).data?.videos??[]);P(e=>n?{...e,...r}:r)},[]);h(()=>{if(M)return;if(H){let e=Y?.data?.videos??[];W>c?(I(e.slice(0,c)),B(Y?.data?.cursor),R(e.length>0?1:0)):(I(d(e,q,W)),R(0)),P({});return}if(K.length===0){P({}),I([]),R(0),B(void 0);return}let e=X?.data?.videos??[];P(u(e)),I([]),B(void 0),R(e.length>0?1:0)},[M,H,Y,X,q,K,W]),h(()=>{if(M||Z<1||L<1||L>=Z)return;let e=V.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let r=L;if(H){let e=l(U,W);n({page_size:c,cursor:z,tags:e.length?Array.from(new Set(e)):void 0}).then(e=>{let t=e.data?.videos??[];I(e=>[...e,...t.slice(0,c)]),B(e.data?.cursor),R(r+1)}).catch(()=>{})}else{let e=r*c,t=G.slice(e,e+c);t.length>0&&(he(t,!0),R(r+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[M,H,G,L,Z,U,W,z,he]),h(()=>{if(M||!H||W<=0)return;let e,t=!1;function r(){e=window.setTimeout(()=>{let e=l(U,W);n({page_size:Math.max(20,W*10),tags:e.length?Array.from(new Set(e)):void 0}).then(n=>{t||I(d(n.data?.videos??[],e,W))}).catch(()=>{t||I([])}).finally(()=>{t||r()})},me())}return r(),()=>{t=!0,e!==void 0&&window.clearTimeout(e)}},[M,H,U,W]);let $=g(()=>!T||T.length===0?b:M?T:H&&W>c?T.slice(0,F.length):T,[T,M,H,W,F.length]),ge=g(()=>$.length?$.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=H?F[t]:n?N[n]:void 0,i=H?r?C(r):(e?.title??``).trim():(e?.title??``).trim()||(r?C(r):``),a=(e?.cover??``).trim(),o=H?S(r)||a:a||(e?.useVideoPoster?S(r):``),s=H&&String(r?.description??r?.content_description??``).trim()||(e?.contentDescription??``).trim(),c=de(r,Q,H),l=pe(r,H);return{...e,contentId:n||(r?te(r):``),title:i,cover:o,contentDescription:s,episodeOrDurationText:c,playCountText:l}}):b,[Q,H,$,N,F]);if(!T||T.length===0)return null;let _e=L>=1&&L<Z?H?F.length-2:L*c-2:-1;return y(o,{className:M?`bg-bg1 px-3 py-3 pointer-events-none`:`bg-bg1 px-3 py-3`,children:[w&&v(o,{className:`mb-3 flex items-center justify-between`,children:v(s,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:w})}),v(o,{className:`flex overflow-x-auto pb-2 scrollbar-hide space-x-2`,children:ge.map((e,t)=>{let n=H?E:e.showPlayCount??!1,r=(e.playCountText??``).trim(),i=r!==``,c=H?D:e.showEpisodes??!1,l=(e.episodeOrDurationText??``).trim(),u=c&&l!==``,d=k===`renderer`?fe(e.contentId??``,e.title??``):``,f=y(se,{children:[y(o,{className:`relative rounded-lg overflow-hidden bg-bg2 w-[116px] h-[134px]`,children:[M||e.cover?v(a,{src:ue(e.cover,ne),alt:e.title??``,fill:!0,className:`object-cover`}):v(o,{className:`w-full h-full flex items-center justify-center`,children:v(s,{className:`text-text3 text-xs`,children:A(`noCover`)})}),!H&&(e.badge??``).trim()?v(o,{className:`absolute top-0 right-0 w-8 h-8`,children:v(a,{src:(e.badge??``).trim()||x(re),alt:``,fill:!0,sizes:`32px`,className:`object-contain object-right-top`,unoptimized:!0})}):null,y(o,{className:`absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent pb-1 pt-3 px-1 flex justify-between items-center gap-1`,children:[v(o,{className:`flex items-center min-w-0 shrink`,children:n&&i?y(o,{className:`flex items-center gap-1 rounded bg-overlay px-1 py-0`,children:[v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`10`,viewBox:`0 0 12 10`,fill:`none`,className:`shrink-0`,"aria-hidden":!0,children:v(`path`,{d:`M7.56 5.18437L5.013 6.56737C4.893 6.63337 4.761 6.66937 4.638 6.66937C4.269 6.66937 4.002 6.38737 4.002 5.99737V3.28237C4.002 2.89237 4.269 2.61037 4.638 2.61037C4.764 2.61037 4.893 2.64637 5.013 2.70937L7.572 4.09237C7.803 4.21837 7.938 4.41637 7.938 4.63237C7.938 4.85137 7.8 5.05537 7.56 5.18437ZM9.807 9.27637L2.133 8.52937C0.954 8.52937 0 7.57537 0 6.39637V2.79937C0 1.62037 0.954 0.666368 2.133 0.666368L9.81 0.000367165C10.989 0.000367165 11.943 0.954367 11.943 2.13337V7.14337C11.9422 7.70935 11.7168 8.25188 11.3163 8.65181C10.9158 9.05174 10.373 9.27637 9.807 9.27637ZM10.875 2.13337C10.875 1.99351 10.8475 1.85502 10.7939 1.72581C10.7404 1.5966 10.662 1.47919 10.5631 1.3803C10.4642 1.2814 10.3468 1.20296 10.2176 1.14944C10.0883 1.09591 9.94986 1.06837 9.81 1.06837L2.133 1.73437C1.99314 1.73437 1.85465 1.76191 1.72544 1.81544C1.59623 1.86896 1.47883 1.9474 1.37993 2.0463C1.28104 2.14519 1.20259 2.2626 1.14907 2.39181C1.09555 2.52102 1.068 2.65951 1.068 2.79937V6.39637C1.068 6.67882 1.1802 6.94971 1.37993 7.14944C1.57966 7.34916 1.85054 7.46137 2.133 7.46137L9.807 8.20837C9.94686 8.20837 10.0853 8.18082 10.2146 8.1273C10.3438 8.07378 10.4612 7.99533 10.5601 7.89644C10.659 7.79754 10.7374 7.68014 10.7909 7.55093C10.8445 7.42171 10.872 7.28323 10.872 7.14337V2.13337H10.875Z`,fill:`white`})}),v(s,{className:`text-white text-[12px] leading-[20px]`,children:r})]}):null}),v(o,{className:`flex items-center shrink-0`,children:u?v(s,{className:`text-white text-[12px] leading-[20px]`,children:l}):null})]})]}),v(o,{className:`mt-2 py-2`,children:v(s,{className:`text-[16px] text-text1 font-bold leading-[24px] line-clamp-1`,children:e.title})})]});return v(o,{ref:t===_e?V:void 0,className:`flex-shrink-0 w-[116px]`,children:d?v(le,{href:d,className:`block`,children:f}):f},t)})})]})}export{D as ImageTextRecommendClient};
@@ -14,13 +14,13 @@ import * as zod_v4_core0 from "zod/v4/core";
14
14
  declare const imageTextRecommendMaterial: DefineMaterialOption<typeof ImageTextRecommendServer, typeof ImageTextRecommendClient, zod.ZodObject<{
15
15
  readonly title: zod.ZodString & SchemaHasDefaultValue;
16
16
  readonly moduleCount: zod.ZodNumber & SchemaHasDefaultValue;
17
- readonly layout: zod.ZodOptional<zod.ZodObject<{
18
- enabled: zod.ZodOptional<zod.ZodBoolean>;
19
- categories: zod.ZodOptional<zod.ZodArray<zod.ZodAny>>;
20
- tags: zod.ZodOptional<zod.ZodArray<zod.ZodAny>>;
21
- sortRule: zod.ZodOptional<zod.ZodString>;
22
- contentForms: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
23
- }, zod_v4_core0.$loose>>;
17
+ readonly layout: zod.ZodObject<{
18
+ readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
19
+ readonly tags: zod.ZodArray<zod.ZodString> & SchemaHasDefaultValue;
20
+ }, zod_v4_core0.$strip> | zod.ZodOptional<zod.ZodObject<{
21
+ readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
22
+ readonly tags: zod.ZodArray<zod.ZodString> & SchemaHasDefaultValue;
23
+ }, zod_v4_core0.$strip>>;
24
24
  readonly commonPlayCount: zod.ZodBoolean & SchemaHasDefaultValue;
25
25
  readonly commonEpisodes: zod.ZodBoolean & SchemaHasDefaultValue;
26
26
  readonly items: zod.ZodArray<zod.ZodObject<{
@@ -1,44 +1,39 @@
1
1
 
2
2
  import { SchemaHasDefaultValue } from "../../../../utils/schema/schema.mjs";
3
3
  import "../../../../utils.mjs";
4
- import * as zod from "zod";
5
- import * as zod_v4_core0 from "zod/v4/core";
4
+ import { z } from "zod";
6
5
 
7
6
  //#region components/biz/business/image-text-recommend/schema.d.ts
8
7
  /**
9
8
  * 图文推荐物料属性定义
10
9
  */
11
- declare const imageTextRecommendInspectorPropsSchema: zod.ZodObject<{
12
- readonly title: zod.ZodString & SchemaHasDefaultValue;
13
- readonly moduleCount: zod.ZodNumber & SchemaHasDefaultValue;
14
- /**
15
- * 智能推荐配置(与首页宫格 smartLayout / recommendContentConfig 字段形态一致)。
16
- * enabled 为 true 时走热门或最新列表;categories → cat_ids,tags 取项的 name 透传 tags。
17
- */
18
- readonly layout: zod.ZodOptional<zod.ZodObject<{
19
- enabled: zod.ZodOptional<zod.ZodBoolean>;
20
- categories: zod.ZodOptional<zod.ZodArray<zod.ZodAny>>;
21
- tags: zod.ZodOptional<zod.ZodArray<zod.ZodAny>>;
22
- sortRule: zod.ZodOptional<zod.ZodString>;
23
- contentForms: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
24
- }, zod_v4_core0.$loose>>;
25
- readonly commonPlayCount: zod.ZodBoolean & SchemaHasDefaultValue;
26
- readonly commonEpisodes: zod.ZodBoolean & SchemaHasDefaultValue;
27
- readonly items: zod.ZodArray<zod.ZodObject<{
28
- readonly contentId: zod.ZodString & SchemaHasDefaultValue;
29
- readonly title: zod.ZodString & SchemaHasDefaultValue;
30
- readonly contentDescription: zod.ZodString & SchemaHasDefaultValue;
31
- readonly cover: zod.ZodString & SchemaHasDefaultValue;
32
- readonly useVideoPoster: zod.ZodBoolean & SchemaHasDefaultValue;
33
- readonly showPlayCount: zod.ZodBoolean & SchemaHasDefaultValue;
34
- readonly showEpisodes: zod.ZodBoolean & SchemaHasDefaultValue;
35
- readonly badge: zod.ZodString & SchemaHasDefaultValue;
36
- }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
10
+ declare const imageTextRecommendInspectorPropsSchema: z.ZodObject<{
11
+ readonly title: z.ZodString & SchemaHasDefaultValue;
12
+ readonly moduleCount: z.ZodNumber & SchemaHasDefaultValue;
13
+ readonly layout: z.ZodObject<{
14
+ readonly enabled: z.ZodBoolean & SchemaHasDefaultValue;
15
+ readonly tags: z.ZodArray<z.ZodString> & SchemaHasDefaultValue;
16
+ }, z.core.$strip> | z.ZodOptional<z.ZodObject<{
17
+ readonly enabled: z.ZodBoolean & SchemaHasDefaultValue;
18
+ readonly tags: z.ZodArray<z.ZodString> & SchemaHasDefaultValue;
19
+ }, z.core.$strip>>;
20
+ readonly commonPlayCount: z.ZodBoolean & SchemaHasDefaultValue;
21
+ readonly commonEpisodes: z.ZodBoolean & SchemaHasDefaultValue;
22
+ readonly items: z.ZodArray<z.ZodObject<{
23
+ readonly contentId: z.ZodString & SchemaHasDefaultValue;
24
+ readonly title: z.ZodString & SchemaHasDefaultValue;
25
+ readonly contentDescription: z.ZodString & SchemaHasDefaultValue;
26
+ readonly cover: z.ZodString & SchemaHasDefaultValue;
27
+ readonly useVideoPoster: z.ZodBoolean & SchemaHasDefaultValue;
28
+ readonly showPlayCount: z.ZodBoolean & SchemaHasDefaultValue;
29
+ readonly showEpisodes: z.ZodBoolean & SchemaHasDefaultValue;
30
+ readonly badge: z.ZodString & SchemaHasDefaultValue;
31
+ }, z.core.$strip>> & SchemaHasDefaultValue;
37
32
  } & {
38
- mode: zod.ZodOptional<zod.ZodEnum<{
33
+ mode: z.ZodOptional<z.ZodEnum<{
39
34
  renderer: "renderer";
40
35
  editor: "editor";
41
36
  }>>;
42
- }, zod_v4_core0.$strip>;
37
+ }, z.core.$strip>;
43
38
  //#endregion
44
39
  export { imageTextRecommendInspectorPropsSchema };
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import{homeRecommendSmartLayoutSchema as t}from"../home-recommend/shared/home-recommend-smart-layout.mjs";const n=e(e=>({title:e.string(`推荐视频`,{label:`推荐位名称`}),moduleCount:e.number(1,{label:`推荐模块数`}),layout:t.optional(),commonPlayCount:e.boolean(!0,{fieldType:`switch`,label:`通用播放量`}),commonEpisodes:e.boolean(!0,{fieldType:`switch`,label:`通用集数`}),items:e.array(e.object({contentId:e.string(``,{label:`推荐位内容`}),title:e.string(`视频标题`,{label:`推荐位内容名称`}),contentDescription:e.string(``,{label:`内容说明简介`}),cover:e.string(``,{label:`推荐位封面`}),useVideoPoster:e.boolean(!0,{fieldType:`switch`,label:`沿用视频海报`}),showPlayCount:e.boolean(!1,{fieldType:`switch`,label:`播放量显示`}),showEpisodes:e.boolean(!0,{fieldType:`switch`,label:`集数展示`}),badge:e.string(``,{label:`推荐位角标`,description:`角标图片地址,可通过低代码平台配置上传;留空则使用默认角标图`})}),{label:`推荐位模块`,defaultValue:[{contentId:`d6a35ba3279e6f0d`,title:`视频标题 1`,contentDescription:``,cover:``,useVideoPoster:!0,showPlayCount:!0,showEpisodes:!0,badge:``},{contentId:`eaf60eab4938489d`,title:`视频标题 2`,contentDescription:``,cover:``,useVideoPoster:!0,showPlayCount:!0,showEpisodes:!0,badge:``},{contentId:`c45fe58f91d1c986`,title:`视频标题 3`,contentDescription:``,cover:``,useVideoPoster:!0,showPlayCount:!0,showEpisodes:!0,badge:``}]})}));export{n as imageTextRecommendInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import{z as t}from"zod";const n=e(e=>({title:e.string(`推荐视频`,{label:`推荐位名称`}),moduleCount:e.number(1,{label:`推荐模块数`}),layout:e.object({enabled:e.boolean(!1,{fieldType:`switch`,label:`智能铺设`}),tags:e.array(t.string(),{label:`取数范围标签`,defaultValue:[`电影`]})},{label:`智能铺设`,defaultValue:{enabled:!1,tags:[`电影`]}}),commonPlayCount:e.boolean(!0,{fieldType:`switch`,label:`通用播放量`}),commonEpisodes:e.boolean(!0,{fieldType:`switch`,label:`通用集数`}),items:e.array(e.object({contentId:e.string(``,{label:`推荐位内容`}),title:e.string(`视频标题`,{label:`推荐位内容名称`}),contentDescription:e.string(``,{label:`内容说明简介`}),cover:e.string(``,{label:`推荐位封面`}),useVideoPoster:e.boolean(!0,{fieldType:`switch`,label:`沿用视频海报`}),showPlayCount:e.boolean(!1,{fieldType:`switch`,label:`播放量显示`}),showEpisodes:e.boolean(!0,{fieldType:`switch`,label:`集数展示`}),badge:e.string(``,{label:`推荐位角标`,description:`角标图片地址,可通过低代码平台配置上传;留空则使用默认角标图`})}),{label:`推荐位模块`,defaultValue:[{contentId:`d6a35ba3279e6f0d`,title:`视频标题 1`,contentDescription:``,cover:``,useVideoPoster:!0,showPlayCount:!0,showEpisodes:!0,badge:``},{contentId:`eaf60eab4938489d`,title:`视频标题 2`,contentDescription:``,cover:``,useVideoPoster:!0,showPlayCount:!0,showEpisodes:!0,badge:``},{contentId:`c45fe58f91d1c986`,title:`视频标题 3`,contentDescription:``,cover:``,useVideoPoster:!0,showPlayCount:!0,showEpisodes:!0,badge:``}]})}));export{n as imageTextRecommendInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- import{pContentBatchGetVideoDetail as e,pContentGetNewstVideoList as t,pContentGetPopularVideoList as n}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as r,pContentGetNewstVideoListKey as i,pContentGetPopularVideoListKey as a}from"../../../../service/generated/tanstack.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as o,getImageTextRecommendFixedIds as s}from"../../../../hooks/image-text-recommend.mjs";import{HydrationBoundary as c}from"../../../../hooks/query/hydration-boundary.mjs";import{normalizeHomeRecommendSmartLayout as l}from"../home-recommend/shared/home-recommend-smart-layout.mjs";import{buildImageTextSmartListBody as u,resolveImageTextSmartListKind as d}from"./shared/query.mjs";import{ImageTextRecommendClient as f}from"./client.mjs";import{jsx as p}from"react/jsx-runtime";const m=[];async function h(h){let{mode:g=`renderer`,..._}=h,v=_.items??m,y=[],b=l(_.layout),x=b?.enabled===!0,S=s(v,x),C=v?.length??0;if(g===`renderer`&&v?.length)try{if(x&&b){let e=d(b.sortRule),r=u(b,{targetCount:C}),o=e===`newest`?await t(r):await n(r);y.push({queryKey:e===`newest`?i(r):a(r),queryFn:()=>Promise.resolve(o)})}else if(S.length>0){let t={ids:S.length<=o?S:S.slice(0,o)},n=await e(t);y.push({queryKey:r(t),queryFn:()=>Promise.resolve(n)})}}catch(e){console.warn(`[image-text-recommend] server prefetch failed:`,e)}return p(c,{prefetch:y,children:p(f,{..._,mode:g})})}export{h as ImageTextRecommendServer};
2
+ import{pContentBatchGetVideoDetail as e,pContentGetPopularVideoList as t}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as n,pContentGetPopularVideoListKey as r}from"../../../../service/generated/tanstack.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as i,getImageTextRecommendFixedIds as a,getImageTextRecommendLayoutTags as o}from"../../../../hooks/image-text-recommend.mjs";import{HydrationBoundary as s}from"../../../../hooks/query/hydration-boundary.mjs";import{buildSmartPopularQuery as c,buildStableChosenTags as l}from"./shared/query.mjs";import{ImageTextRecommendClient as u}from"./client.mjs";import{jsx as d}from"react/jsx-runtime";const f=[];async function p(p){let{mode:m=`renderer`,...h}=p,g=h.items??f,_=h.layout,v=[],y=!!_?.enabled,b=a(g,y),x=o(_),S=g?.length??0;if(m===`renderer`&&g?.length)try{if(y){let e=c(l(x,S),S),n=await t(e);v.push({queryKey:r(e),queryFn:()=>Promise.resolve(n)})}else if(b.length>0){let t={ids:b.length<=i?b:b.slice(0,i)},r=await e(t);console.log(`res`,r),v.push({queryKey:n(t),queryFn:()=>Promise.resolve(r)})}}catch(e){console.warn(`[image-text-recommend] server prefetch failed:`,e)}return d(s,{prefetch:v,children:d(u,{...h,mode:m})})}export{p as ImageTextRecommendServer};
@@ -1,2 +1,2 @@
1
1
 
2
- import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as e}from"../../../../../hooks/image-text-recommend.mjs";import{isHomeRecommendLatestSortRule as t}from"../../home-recommend/shared/home-recommend-smart-layout.mjs";function n(e){return t(e)?`newest`:`popular`}function r(t,n){let{targetCount:r,cursor:i,pageSize:a}=n,o=t.tagIds.length>0?t.tagIds:void 0,s=t.catIds.length>0?t.catIds:void 0,c;return c=a===void 0?r>e?e:Math.max(20,r*10):a,{cursor:i||void 0,page_size:c,tags:o,cat_ids:s}}export{r as buildImageTextSmartListBody,n as resolveImageTextSmartListKind};
2
+ import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as e}from"../../../../../hooks/image-text-recommend.mjs";function t(e,t){let n=e.map(e=>String(e).trim()).filter(Boolean);if(!n.length||t<=0)return[];if(n.length>=t)return n.slice(0,t);let r=[...n];for(;r.length<t;)r.push(n[r.length%n.length]);return r}function n(t,n){return n>e?{page_size:e,tags:t.length?Array.from(new Set(t)):void 0}:{page_size:Math.max(20,n*10),tags:t.length?Array.from(new Set(t)):void 0}}export{n as buildSmartPopularQuery,t as buildStableChosenTags};
@@ -3,24 +3,24 @@ import { defaultProps } from "../basics/fullscreen-feed/defaults/default-props.m
3
3
  import { FullscreenFeedClient } from "../basics/fullscreen-feed/runtime/client.mjs";
4
4
  import { schema } from "../basics/fullscreen-feed/schema/index.mjs";
5
5
  import { BannerAdInspectorProps, BannerAdItem, BannerAdProps, BannerAdStyleSize, bannerAdInspectorDefaultProps, bannerAdInspectorPropsSchema, bannerAdStyleSizeOptions } from "./advertisement/banner-ad/schema.mjs";
6
- import { FloatingAdItem, FloatingAdProps, floatingAdInspectorDefaultProps, floatingAdInspectorPropsSchema } from "./advertisement/floating-ad/schema.mjs";
6
+ import { FloatingAdEditableProps, FloatingAdInspectorProps, FloatingAdItem, FloatingAdProps, floatingAdInspectorDefaultProps, floatingAdInspectorPropsSchema } from "./advertisement/floating-ad/schema.mjs";
7
7
  import { IconAdInspectorProps, IconAdItem, IconAdProps, iconAdInspectorDefaultProps, iconAdInspectorPropsSchema } from "./advertisement/icon-ad/schema.mjs";
8
8
  import { TextAdInspectorProps, TextAdItem, TextAdProps, textAdInspectorDefaultProps, textAdInspectorPropsSchema } from "./advertisement/text-ad/schema.mjs";
9
- import { AdsMatchExtData, adaptBannerAdProps, adaptFloatingAdItems, adaptIconAdProps, adaptPopupAdMaterials, adaptTextAdProps, buildAdsMatchRequest, hasMatchedAds, parseAdsMatchExtData, resolveAdsAppCode, sortAdsMatchMaterials } from "./advertisement/ad-match.mjs";
9
+ import { AdsMatchExtData, adaptBannerAdProps, adaptFloatingAdItem, adaptIconAdProps, adaptPopupAdMaterials, adaptTextAdProps, buildAdsMatchRequest, getFirstMatchedMaterial, hasMatchedAds, parseAdsMatchExtData, resolveAdsAppCode, sortAdsMatchMaterials } from "./advertisement/ad-match.mjs";
10
10
  import { AdProvider, AdProviderProps, AdProviderValue, useAdProvider } from "./advertisement/ad-provider.mjs";
11
11
  import { AdsMatchQueryOptions, createAdsMatchPrefetchItem, createAdsMatchQueryFn, getAdsMatchQueryKey } from "./advertisement/ad-query.mjs";
12
12
  import { AdRuntimeProvider, AdRuntimeProviderProps } from "./advertisement/ad-runtime-provider.mjs";
13
13
  import { BannerAd } from "./advertisement/banner-ad/client.mjs";
14
14
  import { BannerAdServer } from "./advertisement/banner-ad/server.mjs";
15
15
  import { bannerAdMaterial } from "./advertisement/banner-ad/material.mjs";
16
- import { FeedAdBadge, FeedAdItemLike, FeedAdPayloadLike, getFeedAdIcon, getFeedAdJumpUrl, isFeedAdItem } from "./advertisement/feed-ad/index.mjs";
16
+ import { FeedAdBadge, FeedAdItemLike, getFeedAdIcon, getFeedAdJumpUrl, isFeedAdItem } from "./advertisement/feed-ad/index.mjs";
17
17
  import { FloatingAd } from "./advertisement/floating-ad/client.mjs";
18
18
  import { FloatingAdServer } from "./advertisement/floating-ad/server.mjs";
19
19
  import { floatingAdMaterial } from "./advertisement/floating-ad/material.mjs";
20
20
  import { IconAd } from "./advertisement/icon-ad/client.mjs";
21
21
  import { IconAdServer } from "./advertisement/icon-ad/server.mjs";
22
22
  import { iconAdMaterial } from "./advertisement/icon-ad/material.mjs";
23
- import { PopupAdBaseProps, PopupAdInspectorProps, PopupAdItem, PopupAdProps, popupAdInspectorDefaultProps, popupAdInspectorPropsSchema } from "./advertisement/popup-ad/schema.mjs";
23
+ import { PopupAdInspectorProps, PopupAdItem, PopupAdProps, popupAdInspectorDefaultProps, popupAdInspectorPropsSchema } from "./advertisement/popup-ad/schema.mjs";
24
24
  import { PopupAd } from "./advertisement/popup-ad/client.mjs";
25
25
  import { PopupAdServer } from "./advertisement/popup-ad/server.mjs";
26
26
  import { popupAdMaterial } from "./advertisement/popup-ad/material.mjs";
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),is_ad:e.boolean(!1,{fieldType:`switch`,label:`是否广告`,required:!1}),ad:e.object({ad_code:e.string(void 0,{label:`广告业务编码`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),ad_advertise_type:e.number(void 0,{label:`广告类型`,required:!1}),ad_advertise_desc:e.string(void 0,{label:`广告文案描述`,required:!1}),ad_ext_data:e.string(void 0,{label:`广告扩展信息`,required:!1})},{label:`广告对象`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),useContentCover:e.boolean(!0,{fieldType:`switch`,label:`沿用内容海报`,required:!1}),title:e.string(void 0,{label:`内容标题`}),desc:e.string(void 0,{label:`内容简介`,required:!1}),tagImageUrl:e.string(void 0,{label:`角标图`,required:!1})})}),{label:`大图推荐数据`,required:!1,defaultValue:[{title:`推荐位名称`,moreUrl:`/channel`,moreLinkType:`content-list`,items:{id:`22edc8693ebbdaf1`,cover:`https://base-resources.guadd.fun/md-204/dcc-file/f7/f70a9f9f0c17aa9aff6c3a3e03a822db-small.jpg`,play_count:`11111`,showPlayCount:!0,episodeText:`连载中`,showEpisode:!0,useContentCover:!0,title:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`,desc:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`}}]})})),i=t(r);export{i as largeFeatureGridInspectorDefaultProps,r as largeFeatureGridInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),is_ad:e.boolean(!1,{fieldType:`switch`,label:`是否广告`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),useContentCover:e.boolean(!0,{fieldType:`switch`,label:`沿用内容海报`,required:!1}),title:e.string(void 0,{label:`内容标题`}),desc:e.string(void 0,{label:`内容简介`,required:!1}),tagImageUrl:e.string(void 0,{label:`角标图`,required:!1})})}),{label:`大图推荐数据`,required:!1,defaultValue:[{title:`推荐位名称`,moreUrl:`/channel`,moreLinkType:`content-list`,items:{id:`22edc8693ebbdaf1`,cover:`https://base-resources.guadd.fun/md-204/dcc-file/f7/f70a9f9f0c17aa9aff6c3a3e03a822db-small.jpg`,play_count:`11111`,showPlayCount:!0,episodeText:`连载中`,showEpisode:!0,useContentCover:!0,title:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`,desc:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`}}]})})),i=t(r);export{i as largeFeatureGridInspectorDefaultProps,r as largeFeatureGridInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../../assets/icons/marquee-close.mjs";import i from"../../../../assets/icons/marquee-speaker.mjs";import{defaultMarqueePeriod as a}from"./schema.mjs";import{useEffect as o,useLayoutEffect as s,useMemo as c,useRef as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";const p=[],m=`marquee_list`;let h=null;function g(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function _(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function v(){if(h)return h;let e=localStorage.getItem(m);if(!e)return h={},{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};return Object.entries(t).forEach(([e,t])=>{if(!t||typeof t!=`object`)return;let r=t.closedAt;typeof r!=`number`||Number.isNaN(r)||(n[e]={closedAt:r})}),h=n,n}catch{return h={},{}}}function y(e){h=e,localStorage.setItem(m,JSON.stringify(e))}function b(e){return v()[e]??{}}function x(e,t){y({...v(),[e]:t})}function S(e,t){return _(e.closedAt,t)}function C(m){let{marqueeKey:h,contents:_=p,close:v,displayStrategy:y,mode:C=`renderer`}=m,w=C===`editor`,T=e(),E=l(!1),D=l(null),O=l(null),[k,A]=u(w),[j,M]=u(w),[N,P]=u(!1),[F,I]=u(0);o(()=>{P(!0)},[]);let L=c(()=>{let e=y?.period??a,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,o=n?new Date(n).getTime():2**53-1;return r>=i&&r<=o},[y?.period]),R=c(()=>(_??[]).map(e=>({...e,text:g(String(e?.text??``))})).filter(e=>!!e.text),[_]),z=h?.trim()??``,B=c(()=>R.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[R]);if(o(()=>{I(0)},[B,z]),o(()=>{w||z||E.current||process.env.NODE_ENV===`production`||(E.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[w,z]),o(()=>{if(N){if(w){A(!0),M(!0);return}if(!y?.rule||!L||R.length===0){A(!1),M(!0);return}if(!z){A(!0),M(!0);return}A(!S(b(z),y.rule)),M(!0)}},[y?.rule,w,N,L,R.length,z]),s(()=>{if(w)return;let e=D.current,t=O.current;if(!e||!t)return;let n=e.offsetWidth,r=t.scrollWidth,i=n+r,a=Math.max(i/80,3)*1e3,o=t.animate([{transform:`translateX(${n}px)`},{transform:`translateX(-${r}px)`}],{duration:a,iterations:R.length<=1?1/0:1,easing:`linear`,fill:`forwards`});return o.onfinish=()=>{R.length>1&&I(e=>(e+1)%R.length)},()=>o.cancel()},[F,B,w,k,R.length]),!w&&(!N||!j||!k||!L)||R.length===0)return null;let V=R[F%R.length],H=V?.click,U=H?.enabled===!0,W=H?.link,G=U&&!!W,K=v?.enabled===!0;function q(){!z||!y?.rule||R.length===0||x(z,{...b(z),closedAt:Date.now()})}let J=e=>{e.stopPropagation(),A(!1),q()};function Y(e){if(typeof window>`u`){T.push(e);return}if(window.isWebView===!0)try{let t=new URL(e,window.location.href);if(t.origin===window.location.origin){let e=t.pathname.split(`/`).filter(Boolean),n=e.findIndex(e=>e===`video`);n>=0&&(e[n]=`webview`,t.pathname=`/${e.join(`/`)}`)}window.location.href=t.toString();return}catch{window.location.href=e;return}T.push(e)}function X(){w||G&&W&&(A(!1),q(),Y(W))}let Z=K?d(`button`,{type:`button`,"aria-label":`关闭`,className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,onClick:J,children:d(r,{className:`h-5 w-5`,"aria-hidden":!0})}):d(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0});return f(t,{className:`grid h-8 w-full grid-cols-[20px_1fr_24px] items-center gap-2 bg-white/10 px-4 py-1 backdrop-blur-[2px] ${G?`cursor-pointer`:``} ${w?`pointer-events-none`:``}`,onClick:X,children:[d(i,{className:`h-5 w-5 shrink-0`,"aria-hidden":!0}),d(t,{ref:D,className:`relative h-5 min-w-0 w-full overflow-hidden`,children:d(t,{ref:O,className:`absolute inset-y-0 left-0 flex items-center whitespace-nowrap`,children:d(n,{className:`inline-block font-sans text-[14px] font-normal leading-[20px] not-italic text-white/90`,children:V.text})},`marquee-item-${F}`)}),Z]})}export{C as MarqueeClient};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../../assets/icons/marquee-close.mjs";import i from"../../../../assets/icons/marquee-speaker.mjs";import a from"./marquee.module.mjs";import{defaultMarqueePeriod as o}from"./schema.mjs";import{useEffect as s,useMemo as c,useRef as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";const p=[],m=`marquee_list`;let h=null;function g(e,t=20){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function _(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function v(){if(h)return h;let e=localStorage.getItem(m);if(!e)return h={},{};try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return{};let n={};return Object.entries(t).forEach(([e,t])=>{if(!t||typeof t!=`object`)return;let r=t.closedAt;typeof r!=`number`||Number.isNaN(r)||(n[e]={closedAt:r})}),h=n,n}catch{return h={},{}}}function y(e){h=e,localStorage.setItem(m,JSON.stringify(e))}function b(e){return v()[e]??{}}function x(e,t){y({...v(),[e]:t})}function S(e,t){return _(e.closedAt,t)}function C(m){let{marqueeKey:h,contents:_=p,click:v,close:y,displayStrategy:C,mode:w=`renderer`}=m,T=w===`editor`,E=e(),D=l(!1),[O,k]=u(T),[A,j]=u(T),[M,N]=u(!1),[P,F]=u(0);s(()=>{N(!0)},[]);let I=c(()=>{let e=C?.period??o,t=e.start,n=e.end;if(!t&&!n)return!0;let r=Date.now(),i=t?new Date(t).getTime():0,a=n?new Date(n).getTime():2**53-1;return r>=i&&r<=a},[C?.period]),L=c(()=>(_??[]).map(e=>({...e,text:g(String(e?.text??``))})).filter(e=>!!e.text),[_]),R=h?.trim()??``;if(s(()=>{F(0)},[c(()=>L.map(e=>`${e.text??``}::${e.link??``}`).join(`|`),[L]),R]),s(()=>{T||R||D.current||process.env.NODE_ENV===`production`||(D.current=!0,console.warn(`[MarqueeClient] marqueeKey is required in renderer mode.`))},[T,R]),s(()=>{if(M){if(T){k(!0),j(!0);return}if(!C?.rule||!I||L.length===0){k(!1),j(!0);return}if(!R){k(!1),j(!0);return}k(!S(b(R),C.rule)),j(!0)}},[C?.rule,T,M,I,L.length,R]),!T&&(!M||!A||!O||!I)||L.length===0)return null;let z=L[P%L.length],B=v?.enabled===!0,V=v?.link||z.link,H=B&&!!V,U=y?.enabled===!0;function W(){!R||!C?.rule||L.length===0||x(R,{...b(R),closedAt:Date.now()})}let G=e=>{e.stopPropagation(),k(!1),W()};function K(e){if(typeof window>`u`){E.push(e);return}if(window.isWebView===!0)try{let t=new URL(e,window.location.href);if(t.origin===window.location.origin){let e=t.pathname.split(`/`).filter(Boolean),n=e.findIndex(e=>e===`video`);n>=0&&(e[n]=`webview`,t.pathname=`/${e.join(`/`)}`)}window.location.href=t.toString();return}catch{window.location.href=e;return}E.push(e)}function q(){T||H&&V&&(k(!1),W(),K(V))}let J=()=>{T||!O||L.length<=1||F(e=>(e+1)%L.length)},Y=T?a[`marquee-item-paused`]:L.length>1?a[`marquee-item-once`]:a[`marquee-item-loop`],X=U?d(`button`,{type:`button`,"aria-label":`关闭`,className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,onClick:G,children:d(r,{className:`h-5 w-5`,"aria-hidden":!0})}):d(t,{className:`flex size-6 shrink-0 items-center justify-center overflow-hidden p-0.5`,"aria-hidden":!0});return f(t,{className:`grid h-8 w-full grid-cols-[20px_1fr_24px] items-center gap-2 bg-white/10 px-4 py-1 backdrop-blur-[2px] ${H?`cursor-pointer`:``} ${T?`pointer-events-none`:``}`,onClick:q,children:[d(i,{className:`h-5 w-5 shrink-0`,"aria-hidden":!0}),d(t,{className:`relative h-5 min-w-0 w-full overflow-hidden`,children:d(t,{className:`absolute inset-y-0 left-0 flex items-center whitespace-nowrap ${Y}`,onAnimationEnd:J,children:d(n,{className:`inline-block font-sans text-[14px] font-normal leading-[20px] not-italic text-white/90`,children:z.text})},`marquee-item-${P}`)}),X]})}export{C as MarqueeClient};
@@ -0,0 +1,24 @@
1
+
2
+ import e from"../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs";var t=`.marquee-module_marquee-item-loop__xI-aW {
3
+ animation: marquee-module_funhub-marquee-run__evIQh 12s linear infinite;
4
+ }
5
+
6
+ .marquee-module_marquee-item-once__KFzcv {
7
+ animation: marquee-module_funhub-marquee-run__evIQh 12s linear forwards;
8
+ }
9
+
10
+ .marquee-module_marquee-item-paused__edGch {
11
+ animation: none;
12
+ transform: translateX(0);
13
+ }
14
+
15
+ @keyframes marquee-module_funhub-marquee-run__evIQh {
16
+ 0% {
17
+ transform: translateX(100%);
18
+ }
19
+
20
+ 100% {
21
+ transform: translateX(-100%);
22
+ }
23
+ }
24
+ `,n={"marquee-item-loop":`marquee-module_marquee-item-loop__xI-aW`,"funhub-marquee-run":`marquee-module_funhub-marquee-run__evIQh`,"marquee-item-once":`marquee-module_marquee-item-once__KFzcv`,"marquee-item-paused":`marquee-module_marquee-item-paused__edGch`};e(t);export{n as default};
@@ -15,12 +15,13 @@ declare const marqueeMaterial: DefineMaterialOption<typeof MarqueeServer, typeof
15
15
  readonly marqueeKey: zod.ZodString & SchemaHasDefaultValue;
16
16
  readonly contents: zod.ZodArray<zod.ZodObject<{
17
17
  readonly text: zod.ZodString & SchemaHasDefaultValue;
18
- readonly click: zod.ZodObject<{
19
- readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
20
- readonly redirectType: zod.ZodOptional<zod.ZodType<"content" | "link" | "content_list", unknown, zod_v4_core0.$ZodTypeInternals<"content" | "link" | "content_list", unknown>>> & SchemaHasDefaultValue;
21
- readonly link: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
22
- }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
18
+ readonly link: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
23
19
  }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
20
+ readonly click: zod.ZodObject<{
21
+ readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
22
+ readonly redirectType: zod.ZodOptional<zod.ZodType<"content" | "link" | "content_list", unknown, zod_v4_core0.$ZodTypeInternals<"content" | "link" | "content_list", unknown>>> & SchemaHasDefaultValue;
23
+ readonly link: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
24
+ }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
24
25
  readonly close: zod.ZodObject<{
25
26
  readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
26
27
  }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
@@ -20,12 +20,13 @@ declare const marqueeInspectorPropsSchema: zod.ZodObject<{
20
20
  readonly marqueeKey: zod.ZodString & SchemaHasDefaultValue;
21
21
  readonly contents: zod.ZodArray<zod.ZodObject<{
22
22
  readonly text: zod.ZodString & SchemaHasDefaultValue;
23
- readonly click: zod.ZodObject<{
24
- readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
25
- readonly redirectType: zod.ZodOptional<zod.ZodType<"content" | "link" | "content_list", unknown, zod_v4_core0.$ZodTypeInternals<"content" | "link" | "content_list", unknown>>> & SchemaHasDefaultValue;
26
- readonly link: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
27
- }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
23
+ readonly link: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
28
24
  }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
25
+ readonly click: zod.ZodObject<{
26
+ readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
27
+ readonly redirectType: zod.ZodOptional<zod.ZodType<"content" | "link" | "content_list", unknown, zod_v4_core0.$ZodTypeInternals<"content" | "link" | "content_list", unknown>>> & SchemaHasDefaultValue;
28
+ readonly link: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
29
+ }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
29
30
  readonly close: zod.ZodObject<{
30
31
  readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
31
32
  }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import t from"dayjs";function n(){return{start:t().startOf(`day`).format(`YYYY-MM-DD HH:mm:ss`),end:t().endOf(`day`).format(`YYYY-MM-DD HH:mm:ss`)}}const r=n(),i=e(e=>({marqueeKey:e.string(``,{label:`状态唯一标识`,required:!0,description:`外部传入唯一 marqueeKey,用于本地展示状态持久化`}),contents:e.array(e.object({text:e.string(``,{label:`文本内容`}),click:e.object({enabled:e.boolean(!0,{fieldType:`switch`,label:`支持点击`}),redirectType:e.enum([`content_list`,`content`,`link`],`link`,{label:`跳转指向`,required:!1}),link:e.string(``,{label:`跳转链接`,required:!1})},{label:`点击配置`,defaultValue:{enabled:!0,redirectType:`link`,link:``}})}),{label:`消息内容`,defaultValue:[{text:`请输入跑马灯内容`,click:{enabled:!0,redirectType:`link`,link:``}}],description:`支持多条消息循环播放(1~5条),展示顺序与配置顺序一致`}),close:e.object({enabled:e.boolean(!0,{fieldType:`switch`,label:`支持关闭`})},{label:`关闭配置`,defaultValue:{enabled:!0}}),displayStrategy:e.object({rule:e.enum([`once`,`daily`],`once`,{label:`展示规则`,description:`「只展示1次」即当前消息只展示1次;「每天展示1次」即当前消息每天展示1次,0点刷新`}),period:e.timeRange(r,{label:`展示周期`,required:!1})},{label:`展示策略`,defaultValue:{rule:`once`,period:r}})}));export{r as defaultMarqueePeriod,n as getDefaultMarqueePeriod,i as marqueeInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import t from"dayjs";function n(){return{start:t().startOf(`day`).format(`YYYY-MM-DD HH:mm:ss`),end:t().endOf(`day`).format(`YYYY-MM-DD HH:mm:ss`)}}const r=n(),i=e(e=>({marqueeKey:e.string(``,{label:`状态唯一标识`,required:!0,description:`外部传入唯一 marqueeKey,用于本地展示状态持久化`}),contents:e.array(e.object({text:e.string(``,{label:`文本内容`}),link:e.string(``,{label:`跳转链接`,required:!1})}),{label:`消息内容`,defaultValue:[{text:`请输入跑马灯内容`}],description:`支持多条消息循环播放`}),click:e.object({enabled:e.boolean(!0,{fieldType:`switch`,label:`支持点击`}),redirectType:e.enum([`content_list`,`content`,`link`],`link`,{label:`跳转指向`,required:!1}),link:e.string(``,{label:`跳转链接`,required:!1})},{label:`点击配置`,defaultValue:{enabled:!0,redirectType:`link`,link:``}}),close:e.object({enabled:e.boolean(!0,{fieldType:`switch`,label:`支持关闭`})},{label:`关闭配置`,defaultValue:{enabled:!0}}),displayStrategy:e.object({rule:e.enum([`once`,`daily`],`once`,{label:`展示规则`,description:`「只展示1次」即当前消息只展示1次;「每天展示1次」即当前消息每天展示1次,0点刷新`}),period:e.timeRange(r,{label:`展示周期`,required:!1})},{label:`展示策略`,defaultValue:{rule:`once`,period:r}})}));export{r as defaultMarqueePeriod,n as getDefaultMarqueePeriod,i as marqueeInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as r,gUserViewUserInfo as i,pInteractionFollow as a,pInteractionUnfollow as o}from"../../../../../service/generated/client.mjs";import{useRouter as s}from"../../../../../utils/use-compatible-router.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{Skeleton as u}from"../../../../ui/skeleton.mjs";import{toast as d}from"../../../../../ui.mjs";import{useLoginModalStore as f}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as h,useUpdateRequest as g}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as _}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as v}from"../../../../common/icons/setting.mjs";import{UserProfileAvatar as y}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as b}from"./user-profile-cover-background.mjs";import{useEffect as x,useMemo as S,useState as ee}from"react";import{Check as C,Plus as w}from"lucide-react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";import O from"next/link";const k=n.persist,A=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,j=`/images/mine/img_mine_head_bg.png`;function te({showBackButton:n,isMine:r,enableCustomBackground:i,className:a}){return E(c,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,a),children:[T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,i?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!n}),disabled:!0,children:T(_,{className:`w-4 h-4`})}),T(c,{className:e({invisible:!r}),children:T(v,{className:`text-text1`})})]}),E(c,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[T(u,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),E(c,{className:`min-w-0 flex-1`,children:[T(u,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),E(c,{className:`mt-1 flex flex-col gap-1`,children:[T(u,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),T(u,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function ne({userId:n,currentUserId:r,isFollowing:i}){let s=D(`components.pages.profile`),{open:c}=f(),l=p(),u=g(),{mutateAsync:h,isPending:_}=m(async e=>a(e)),{mutateAsync:v,isPending:y}=m(async e=>o(e)),b=_||y;async function x(){if(!b){if(!r){c();return}try{if(i){let e=await v({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.unfollowSuccess`)),S(!1),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.unfollowFailed`))}else{let e=await h({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.followSuccess`)),S(!0),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.followFailed`))}}catch(e){console.error(`关注操作失败`,e),d.error(s(`client.operationFailed`))}}}function S(e){u([`user-profile`,`profile`,n],t=>!t||!t.data?t:{...t,data:{...t.data,is_following:e}})}return E(t,{type:`button`,variant:`ghost`,size:`xs`,className:e(`h-6 min-w-0 gap-1 rounded-full border px-2 py-0 text-[14px] font-normal leading-5 shadow-none`,`disabled:pointer-events-none disabled:opacity-100`,i?`border-[var(--color-text-tertiary)] bg-transparent text-[var(--color-text-tertiary)] hover:!bg-[var(--color-surface-white10)] hover:!text-[var(--color-text-tertiary)]`:`border-[var(--color-text-secondary)] bg-[var(--color-overlay-create-top-black50)] text-[var(--color-text-secondary)] backdrop-blur-[2px] hover:!bg-[var(--color-overlay-create-top-black50)] hover:!text-[var(--color-text-secondary)]`),onClick:x,disabled:b,children:[T(i?C:w,{className:`size-[14px]`}),s(b?`client.processing`:i?`client.followed`:`client.follow`)]})}function M({id:a,enableCustomBackground:o=!0,showBackButton:u=!0,requireLogin:d=!1,isEditorPreview:p=!1,className:m,mode:g=`renderer`}){let C=D(`components.pages.profile`),w=p||g===`editor`,M=!w,N=s(),{open:P}=f(),{isLogin:F,userId:I,token:L}=n(),[re,R]=ee(!1);x(()=>{if(!k){R(!0);return}R(k.hasHydrated());let e=k.onHydrate(()=>{R(!1)}),t=k.onFinishHydration(()=>{R(!0)});return()=>{e(),t()}},[]);let z=w?!1:F&&!!I&&!!L,B=w?``:I,V=B,H=a==null||!!a&&!!V&&a===V,U=H?[`user-profile`,`mine`]:[`user-profile`,`profile`,a],{data:W,isLoading:ie}=h(w?[`editor-preview`,...U]:U,()=>a?i({target_user_id:a,user_id:B||a}):r({user_id:a||B||``}),{staleTime:0,enabled:M&&(!!a||!!B)}),G=S(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${a??``}`,avatar:e.avatar||A,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||j}:{}},[a,W]),K=w||d&&H&&!z,q=H&&z&&!K,J=!z,ae=o&&q,oe=o&&J,se={name:C(`client.welcomeToPlanet`),description:C(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j};function Y(){P()}function ce(){N.back()}let X=K?null:H?z?T(O,{href:`/edit`,children:T(t,{variant:`ghost`,className:`h-auto min-h-0 rounded-full border border-[rgba(255,255,255,0.8)] bg-[rgba(11,3,23,0.5)] px-2 py-1 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)] backdrop-blur-[2px] hover:bg-[rgba(11,3,23,0.65)] hover:text-[rgba(255,255,255,0.9)]`,children:C(`client.editProfile`)})}):null:T(ne,{userId:a||``,currentUserId:B,isFollowing:G?.isFollowing}),Z=K?se:G,Q=Z.name||``,$=Z.description||Z.signature||``,le=Z.avatar||``;return M&&ie&&!W?T(te,{showBackButton:u,isMine:H,enableCustomBackground:o,className:m}):E(c,{className:e(`relative px-4 pb-8 pt-[16px]`,m),children:[T(c,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:T(b,{isMine:ae,enableCustomBackground:o,src:Z.background,onUnauthorizedClick:oe?Y:void 0})}),T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,o?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,onClick:ce,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!u}),children:T(_,{className:`h-4 w-4`})}),T(O,{href:`/settings`,className:e(`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,{invisible:!H}),children:T(v,{})})]}),E(c,{className:e(`relative z-10 mt-[56px] flex justify-between gap-3 items-center`),children:[T(y,{isMine:q,src:le,alt:Q||`avatar`,onUnauthorizedClick:J?Y:void 0}),E(c,{className:`min-w-0 flex-1`,children:[E(c,{className:e(`flex justify-between gap-3 items-center`),children:[F&&H?T(O,{href:`/edit`,className:`min-w-0`,children:T(l,{as:`p`,className:`max-w-[195px] text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,children:Q})}):T(l,{as:`p`,className:`max-w-[195px] text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,onClick:()=>{!F&&H&&Y()},children:Q}),X?T(c,{className:`shrink-0 pt-0.5`,children:X}):null]}),$&&T(c,{className:`pt-1`,children:T(l,{as:`p`,className:`line-clamp-2 max-w-[195px] break-words text-[14px] leading-[20px] text-[var(--color-text-white80)]`,children:$})})]})]})]})}export{M as UserProfileHeaderClient,j as defaultBackground};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserInfo as r,gUserViewUserInfo as i,pInteractionFollow as a,pInteractionUnfollow as o}from"../../../../../service/generated/client.mjs";import{useRouter as s}from"../../../../../utils/use-compatible-router.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Text as l}from"../../../../ui/text.mjs";import{Skeleton as u}from"../../../../ui/skeleton.mjs";import{toast as d}from"../../../../../ui.mjs";import{useLoginModalStore as f}from"../../../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as h,useUpdateRequest as g}from"../../../../../hooks/query/use-query.mjs";import{LeftArrowIcon as _}from"../../../../common/icons/left-arrow.mjs";import{SettingIcon as v}from"../../../../common/icons/setting.mjs";import{UserProfileAvatar as y}from"./user-profile-avatar.mjs";import{UserProfileCoverBackground as b}from"./user-profile-cover-background.mjs";import{useEffect as x,useMemo as S,useState as ee}from"react";import{Check as C,Plus as w}from"lucide-react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";import O from"next/link";const k=n.persist,A=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,j=`/images/mine/img_mine_head_bg.png`;function te({showBackButton:n,isMine:r,enableCustomBackground:i,className:a}){return E(c,{className:e(`relative overflow-hidden px-4 pb-8 pt-[16px]`,a),children:[T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,i?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,className:e(`h-4 w-4 p-0 hover:bg-transparent`,{invisible:!n}),disabled:!0,children:T(_,{className:`w-4 h-4`})}),T(c,{className:e({invisible:!r}),children:T(v,{className:`text-text1`})})]}),E(c,{className:`relative z-10 mt-[56px] flex items-start gap-4`,children:[T(u,{className:`h-[72px] w-[72px] shrink-0 rounded-full bg-[var(--color-surface-white10)]`}),E(c,{className:`min-w-0 flex-1`,children:[T(u,{className:`h-[26px] w-[132px] rounded-md bg-[var(--color-surface-white10)]`}),E(c,{className:`mt-1 flex flex-col gap-1`,children:[T(u,{className:`h-[20px] w-[76%] rounded-md bg-[var(--color-surface-white10)]`}),T(u,{className:`h-[20px] w-[58%] rounded-md bg-[var(--color-surface-white10)]`})]})]})]})]})}function ne({userId:n,currentUserId:r,isFollowing:i}){let s=D(`components.pages.profile`),{open:c}=f(),l=p(),u=g(),{mutateAsync:h,isPending:_}=m(async e=>a(e)),{mutateAsync:v,isPending:y}=m(async e=>o(e)),b=_||y;async function x(){if(!b){if(!r){c();return}try{if(i){let e=await v({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.unfollowSuccess`)),S(!1),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.unfollowFailed`))}else{let e=await h({app_id:0,follower_id:r,followee_id:n});e.code===0?(d.success(s(`client.followSuccess`)),S(!0),l([`check-follow`,n]),l([`user-profile`,`profile`,n])):d.error(e.message||s(`client.followFailed`))}}catch(e){console.error(`关注操作失败`,e),d.error(s(`client.operationFailed`))}}}function S(e){u([`user-profile`,`profile`,n],t=>!t||!t.data?t:{...t,data:{...t.data,is_following:e}})}return E(t,{type:`button`,variant:`ghost`,size:`xs`,className:e(`h-6 min-w-0 gap-1 rounded-full border px-2 py-0 text-[14px] font-normal leading-5 shadow-none`,`disabled:pointer-events-none disabled:opacity-100`,i?`border-[var(--color-text-tertiary)] bg-transparent text-[var(--color-text-tertiary)] hover:!bg-[var(--color-surface-white10)] hover:!text-[var(--color-text-tertiary)]`:`border-[var(--color-text-secondary)] bg-[var(--color-overlay-create-top-black50)] text-[var(--color-text-secondary)] backdrop-blur-[2px] hover:!bg-[var(--color-overlay-create-top-black50)] hover:!text-[var(--color-text-secondary)]`),onClick:x,disabled:b,children:[T(i?C:w,{className:`size-[14px]`}),s(b?`client.processing`:i?`client.followed`:`client.follow`)]})}function M({id:a,enableCustomBackground:o=!0,showBackButton:u=!0,requireLogin:d=!1,isEditorPreview:p=!1,className:m,mode:g=`renderer`}){let C=D(`components.pages.profile`),w=p||g===`editor`,M=!w,N=s(),{open:P}=f(),{isLogin:F,userId:I,token:L}=n(),[re,R]=ee(!1);x(()=>{if(!k){R(!0);return}R(k.hasHydrated());let e=k.onHydrate(()=>{R(!1)}),t=k.onFinishHydration(()=>{R(!0)});return()=>{e(),t()}},[]);let z=w?!1:F&&!!I&&!!L,B=w?``:I,V=B,H=a==null||!!a&&!!V&&a===V,U=H?[`user-profile`,`mine`]:[`user-profile`,`profile`,a],{data:W,isLoading:ie}=h(w?[`editor-preview`,...U]:U,()=>a?i({target_user_id:a,user_id:B||a}):r({user_id:a||B||``}),{staleTime:0,enabled:M&&(!!a||!!B)}),G=S(()=>{let e=W?W.data:void 0;return e?{userId:e.user_id,isFollowing:e.is_following||!1,name:e.nick_name||`User${a??``}`,avatar:e.avatar||A,followingCnt:e.following_count??0,followersCnt:e.follower_count??0,likeCnt:e.like_count??0,signature:e.signature||``,background:e.bg_image||j}:{}},[a,W]),K=w||d&&H&&!z,q=H&&z&&!K,J=!z,ae=o&&q,oe=o&&J,se={name:C(`client.welcomeToPlanet`),description:C(`client.exploreAdventures`),avatar:A,followingCnt:0,followersCnt:0,likeCnt:0,background:j};function Y(){P()}function ce(){N.back()}let X=K?null:H?z?T(O,{href:`/edit`,children:T(t,{variant:`ghost`,className:`h-auto min-h-0 rounded-full border border-[rgba(255,255,255,0.8)] bg-[rgba(11,3,23,0.5)] px-2 py-1 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)] backdrop-blur-[2px] hover:bg-[rgba(11,3,23,0.65)] hover:text-[rgba(255,255,255,0.9)]`,children:C(`client.editProfile`)})}):null:T(ne,{userId:a||``,currentUserId:B,isFollowing:G?.isFollowing}),Z=K?se:G,Q=Z.name||``,$=Z.description||Z.signature||``,le=Z.avatar||``;return M&&ie&&!W?T(te,{showBackButton:u,isMine:H,enableCustomBackground:o,className:m}):E(c,{className:e(`relative px-4 pb-8 pt-[16px]`,m),children:[T(c,{className:`absolute inset-x-0 top-0 overflow-hidden`,children:T(b,{isMine:ae,enableCustomBackground:o,src:Z.background,onUnauthorizedClick:oe?Y:void 0})}),T(c,{className:e(`pointer-events-none absolute inset-x-0 top-0 h-[220px]`,o?`bg-[image:var(--gradient-card-mask-strong)]`:`bg-[linear-gradient(180deg,var(--color-overlay-mask-start)_0%,var(--color-overlay-mask-end80)_100%)]`)}),E(c,{className:`absolute left-4 right-4 top-[16px] z-10 flex items-center justify-between`,children:[T(t,{variant:`ghost`,size:`icon-xs`,onClick:ce,className:e(`h-6 w-6 p-0 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,{invisible:!u}),children:T(_,{className:`h-4 w-4`})}),T(O,{href:`/settings`,className:e(`text-[var(--color-text-secondary)] opacity-80 transition-opacity hover:opacity-100`,{invisible:!H}),children:T(v,{})})]}),E(c,{className:e(`relative z-10 mt-[56px] flex justify-between gap-3 items-center`),children:[T(y,{isMine:q,src:le,alt:Q||`avatar`,onUnauthorizedClick:J?Y:void 0}),E(c,{className:`min-w-0 flex-1`,children:[E(c,{className:e(`flex justify-between gap-3 items-center`),children:[F&&H?T(O,{href:`/edit`,className:`block min-w-0 max-w-[195px]`,children:T(l,{as:`p`,className:`truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,children:Q})}):T(l,{as:`p`,className:`min-w-0 max-w-[195px] truncate text-[18px] font-semibold leading-[26px] text-[var(--color-text-primary)]`,onClick:()=>{!F&&H&&Y()},children:Q}),X?T(c,{className:`shrink-0 pt-0.5`,children:X}):null]}),$&&T(c,{className:`pt-1`,children:T(l,{as:`p`,className:`line-clamp-2 max-w-[195px] break-words text-[14px] leading-[20px] text-[var(--color-text-white80)]`,children:$})})]})]})]})}export{M as UserProfileHeaderClient,j as defaultBackground};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as r,pUserEditUserInfo as i}from"../../../../../service/generated/client.mjs";import{uploadFile as a}from"../../../../../utils/upload-file.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"../../../../ui/avatar.mjs";import{Box as l}from"../../../../ui/box.mjs";import{Input as u}from"../../../../ui/input.mjs";import{Dialog as d,DialogContent as f}from"../../../../ui/dialog.mjs";import{Text as p}from"../../../../ui/text.mjs";import{useDeleteRequest as m}from"../../../../../hooks/query/use-query.mjs";import{ImageCropModal as h}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";const C=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,w=[`image/jpeg`,`image/png`];function T(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return w.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function E({isMine:w,src:E,alt:D,onUnauthorizedClick:O}){let k=S(`components.pages.profile`),A=g(null),{userId:j,setUserInfo:M,userInfo:N}=n(),P=m(),[F,I]=_(!1),[L,R]=_(!1),[z,B]=_(``),[V,H]=_(!1);function U(){if(!V){if(w){I(!0);return}O?.()}}function W(){z&&(URL.revokeObjectURL(z),B(``))}function G(){I(!1)}function K(){V||A.current?.click()}async function q(e){let t=(await r({user_id:String(j)})).data;return{user_id:String(j),nick_name:t?.nick_name??N?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??N?.signature??void 0,gender:t?.gender??N?.gender??void 0}}function J(e){let t=e.target.files?.[0];if(t){if(!T(t)){x.error(k(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){x.error(k(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}B(URL.createObjectURL(t)),R(!0),e.target&&(e.target.value=``)}}async function Y(e){if(!j){x.error(k(`client.loginRequiredForUpload`));return}try{H(!0);let t=await a(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await q(t.objectKey);await i(n),M({...N,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),P([`user-profile`,`mine`]),P([`user-profile`,`profile`,String(j)]),P([`user-edit-info`,String(j)]),I(!1),R(!1),x.success(k(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),x.error(k(`client.uploadFailed`))}finally{W(),H(!1)}}function X(){R(!1),W()}return b(v,{children:[w||O?y(t,{variant:`ghost`,size:`icon`,className:`h-[72px] w-[72px] rounded-full p-0 hover:bg-transparent`,onClick:U,"aria-label":`打开头像预览`,children:y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})})}):y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})}),y(d,{open:F,onOpenChange:G,children:y(f,{showCloseButton:!1,className:`bg-black !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto`,children:b(l,{className:`relative flex h-full w-full flex-col items-center justify-center`,children:[y(t,{variant:`ghost`,size:`icon`,className:`absolute left-0 top-0 h-14 w-14 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:G,"aria-label":`关闭头像预览`,children:y(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:y(`path`,{d:`M14.55.2a.889.889 0 0 1 1.25 1.25l-.06.067L9.255 8l6.483 6.482.06.069a.888.888 0 0 1-1.25 1.25l-.067-.062L8 9.256l-6.482 6.483A.888.888 0 1 1 .26 14.482L6.742 8 .26 1.517.2 1.45A.888.888 0 0 1 1.45.2l.067.062 6.482 6.482L14.482.261l.068-.062Z`})})}),b(o,{className:`w-50 h-50`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]}),b(t,{variant:`ghost`,className:e(`absolute bottom-8 left-0 right-0 mx-auto flex w-[366px] max-w-[90%] items-center justify-between rounded-3xl bg-[var(--color-surface-white10)] px-3 py-3 transition-colors hover:bg-[var(--color-surface-white20)]`,`active:scale-95 h-auto`),onClick:K,disabled:V,children:[y(p,{as:`span`,className:`text-base font-medium text-text1`,children:V?`上传中...`:`更换头像`}),b(`svg`,{className:`w-6 h-6 text-text1`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:[y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z`}),y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),y(u,{ref:A,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:J}),y(h,{open:L,onClose:X,imageSrc:z,onConfirm:Y})]})}export{E as UserProfileAvatar};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as r,pUserEditUserInfo as i}from"../../../../../service/generated/client.mjs";import{uploadFile as a}from"../../../../../utils/upload-file.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"../../../../ui/avatar.mjs";import{Box as l}from"../../../../ui/box.mjs";import{Input as u}from"../../../../ui/input.mjs";import{Dialog as d,DialogContent as f}from"../../../../ui/dialog.mjs";import{Text as p}from"../../../../ui/text.mjs";import{useDeleteRequest as m}from"../../../../../hooks/query/use-query.mjs";import{ImageCropModal as h}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";const C=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,w=[`image/jpeg`,`image/png`];function T(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return w.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function E({isMine:w,src:E,alt:D,onUnauthorizedClick:O}){let k=S(`components.pages.profile`),A=g(null),{userId:j,setUserInfo:M,userInfo:N}=n(),P=m(),[F,I]=_(!1),[L,R]=_(!1),[z,B]=_(``),[V,H]=_(!1);function U(){if(!V){if(w){I(!0);return}O?.()}}function W(){z&&(URL.revokeObjectURL(z),B(``))}function G(){I(!1)}function K(){V||A.current?.click()}async function q(e){let t=(await r({user_id:String(j)})).data;return{user_id:String(j),nick_name:t?.nick_name??N?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??N?.signature??void 0,gender:t?.gender??N?.gender??void 0}}function J(e){let t=e.target.files?.[0];if(t){if(!T(t)){x.error(k(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){x.error(k(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}B(URL.createObjectURL(t)),R(!0),e.target&&(e.target.value=``)}}async function Y(e){if(!j){x.error(k(`client.loginRequiredForUpload`));return}try{H(!0);let t=await a(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await q(t.objectKey);await i(n),M({...N,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),P([`user-profile`,`mine`]),P([`user-profile`,`profile`,String(j)]),P([`user-edit-info`,String(j)]),I(!1),R(!1),x.success(k(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),x.error(k(`client.uploadFailed`))}finally{W(),H(!1)}}function X(){R(!1),W()}return b(v,{children:[w||O?y(t,{variant:`ghost`,size:`icon`,className:`h-[72px] w-[72px] rounded-full p-0 hover:bg-transparent`,onClick:U,"aria-label":`打开头像预览`,children:y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})})}):y(l,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:b(o,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})}),y(d,{open:F,onOpenChange:G,children:y(f,{showCloseButton:!1,className:`bg-transparent !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto `,children:b(l,{className:`fixed top-0 left-0 right-0 bottom-0 z-50 bg-black flex h-full w-full flex-col items-center justify-center`,children:[y(t,{variant:`ghost`,size:`icon`,className:`absolute left-0 top-0 h-14 w-14 text-text1 hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:G,"aria-label":`关闭头像预览`,children:y(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:y(`path`,{d:`M14.55.2a.889.889 0 0 1 1.25 1.25l-.06.067L9.255 8l6.483 6.482.06.069a.888.888 0 0 1-1.25 1.25l-.067-.062L8 9.256l-6.482 6.483A.888.888 0 1 1 .26 14.482L6.742 8 .26 1.517.2 1.45A.888.888 0 0 1 1.45.2l.067.062 6.482 6.482L14.482.261l.068-.062Z`})})}),b(o,{className:`w-50 h-50`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]}),b(t,{variant:`ghost`,className:e(`absolute bottom-8 left-0 right-0 mx-auto flex w-[366px] max-w-[90%] items-center justify-between rounded-3xl bg-[var(--color-surface-white10)] px-3 py-3 transition-colors hover:bg-[var(--color-surface-white20)]`,`active:scale-95 h-auto`),onClick:K,disabled:V,children:[y(p,{as:`span`,className:`text-base font-medium text-text1`,children:V?`上传中...`:`更换头像`}),b(`svg`,{className:`w-6 h-6 text-text1`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:[y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z`}),y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),y(u,{ref:A,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:J}),y(h,{open:L,onClose:X,imageSrc:z,onConfirm:Y})]})}export{E as UserProfileAvatar};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../../../../ui/box.mjs";import{EmptyState as t}from"../../../../../../ui/empty.mjs";import{InfiniteScroll as n}from"../../../../../../ui/infinite-scroll.mjs";import{Skeleton as r}from"../../../../../../ui/skeleton.mjs";import{WaterfallRecommend as i}from"../../../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{useMemo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(e){let t=Number.isFinite(e)?Math.max(0,e):0;return t<=0?``:t>=1e8?`${(t/1e8).toFixed(1).replace(/\.0$/,``)}亿`:t>=1e4?`${(t/1e4).toFixed(1).replace(/\.0$/,``)}W`:`${Math.floor(t)}`}function l(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function u(e,t){let n=String(e.imgType||``).trim().toLowerCase();return n===`long`?`short`:n===`short`?`tall`:t%3==1?`short`:`tall`}function d(e){return e.map((e,t)=>({key:e.id?`collect-video-waterfall-${e.id}-${t}`:`collect-video-waterfall-${t}`,sourceIndex:t,selectionId:e.id||``,href:`/video/${e.id}/${e.title}`,cardKind:u(e,t),coverUrl:e.coverImage,title:e.title,metaPrimaryText:e.metaPrimaryText||``,heatText:c(e.viewCount),score:l(e.score)}))}function f(e){let t=[],n=[],r=0,i=0;return e.forEach(e=>{let a=(e.cardKind===`short`?120:218)+16;if(r<=i){t.push(e),r+=a;return}n.push(e),i+=a}),{left:t,right:n}}function p(){return s(e,{className:`flex w-full gap-[15px]`,children:[s(e,{className:`flex min-w-0 flex-1 flex-col gap-[16px]`,children:[o(r,{className:`h-[218px] w-full rounded-[8px] bg-white/8`}),o(r,{className:`h-[120px] w-full rounded-[8px] bg-white/8`}),o(r,{className:`h-[218px] w-full rounded-[8px] bg-white/8`})]}),s(e,{className:`flex min-w-0 flex-1 flex-col gap-[16px]`,children:[o(r,{className:`h-[120px] w-full rounded-[8px] bg-white/8`}),o(r,{className:`h-[218px] w-full rounded-[8px] bg-white/8`}),o(r,{className:`h-[120px] w-full rounded-[8px] bg-white/8`})]})]})}function m({list:e,loading:r=!1,hasMore:s=!1,loadMore:c,emptyText:l=``,isEditMode:u=!1,selectedIds:m,onToggleSelection:h}){let g=a(()=>d(e),[e]),_=a(()=>f(g),[g]);return r&&e.length===0?o(p,{}):g.length===0?o(t,{type:`no-content`,text:l,className:`!pt-[72px]`}):o(n,{loadMore:async()=>{await c?.()},hasMore:!!c&&s,noMoreText:`没有更多了`,className:`w-full`,children:o(i,{title:``,columns:_,sectionClassName:`w-full`,headerClassName:`hidden`,containerClassName:`relative flex w-full gap-[15px]`,selectionMode:u,selectedIds:m,onToggleSelection:h})})}export{m as CollectVideoWaterfall};
2
+ "use client";import{Image as e}from"../../../../../../ui/image.mjs";import{Box as t}from"../../../../../../ui/box.mjs";import{EmptyState as n}from"../../../../../../ui/empty.mjs";import{InfiniteScroll as r}from"../../../../../../ui/infinite-scroll.mjs";import{Text as i}from"../../../../../../ui/text.mjs";import{Skeleton as a}from"../../../../../../ui/skeleton.mjs";import o from"../../../../../../ui/link.mjs";import{CollectionSelectIcon as s,CollectionSelectedIcon as c}from"../../../../../../common/list/collection-list/collection-select-icon.mjs";import{VideoIcon as l}from"../../../../../../common/icons/video.mjs";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";const m=`h-[128px] w-[173px]`,h={backgroundImage:`linear-gradient(179.56deg, rgba(8, 2, 17, 0.5) 1.27%, rgba(8, 2, 17, 0) 33.97%, rgba(8, 2, 17, 0) 63.33%, rgba(8, 2, 17, 0.5) 98.57%)`};function g(e){let t=Number.isFinite(e)?Math.max(0,e):0;return t<1e3?String(Math.floor(t)):t<1e6?`${(Math.floor(t/100)/10).toFixed(1)}K`:`${(Math.floor(t/1e5)/10).toFixed(1)}M`}function _(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function v(){return d(t,{className:`flex w-full flex-col gap-4`,children:Array.from({length:4},(e,n)=>f(t,{className:`flex gap-3`,children:[d(a,{className:`shrink-0 rounded-[8px] bg-white/8 ${m}`}),f(t,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-1`,children:[d(a,{className:`h-5 w-full rounded bg-white/8`}),d(a,{className:`h-4 w-full rounded bg-white/8`})]})]},`collect-video-skeleton-${n}`))})}function y({item:n,isEditMode:r,isSelected:a,onToggleSelection:v}){let y=p(`components.ui.list.videoList`),b=n.id||``,x=g(n.viewCount),S=_(n.duration),C=n.is_more_link!==void 0&&n.is_more_link!==null,w=n.is_more_link?y(`videoListItem.series`):y(`videoListItem.movie`),T=n.metaPrimaryText?.trim()?`简介:${n.metaPrimaryText.trim()}`:``;function E(){!r||!b||v?.(b)}let D=f(t,{className:`flex min-w-0 gap-3`,children:[f(t,{className:`relative shrink-0 overflow-hidden rounded-[8px] bg-[#18111f] ${m}`,children:[n.coverImage&&d(e,{src:n.coverImage,alt:n.title||`cover`,fill:!0,objectFit:`cover`,className:`object-cover`}),d(t,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:h,"aria-hidden":!0}),!r&&f(u,{children:[C&&d(t,{className:`absolute left-2 top-3 z-10 flex max-h-[18px] items-center rounded bg-white/20 px-1 py-0.5`,children:d(i,{className:`text-center text-[12px] leading-[14px] text-white`,children:w})}),f(t,{className:`absolute bottom-3 left-2 right-2 z-10 flex items-center justify-between`,children:[f(t,{className:`flex min-w-0 items-center gap-1`,children:[d(l,{className:`size-4 shrink-0 text-white opacity-80`,"aria-hidden":!0}),x?d(i,{className:`truncate text-[14px] leading-5 text-white`,children:x}):null]}),S?d(i,{className:`shrink-0 text-[14px] leading-5 text-white`,children:S}):null]})]}),r&&d(t,{className:`pointer-events-none absolute left-2 top-2 z-20`,children:d(a?c:s,{})})]}),f(t,{className:`flex min-w-0 flex-1 flex-col gap-4`,children:[d(i,{as:`h3`,className:`line-clamp-2 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)]`,children:n.title}),T?d(i,{className:`line-clamp-2 text-[12px] leading-4 text-[rgba(255,255,255,0.5)]`,children:T}):null]})]});return r?d(`button`,{type:`button`,className:`w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:E,"aria-pressed":a,disabled:!b,children:D}):d(o,{href:n.id?`/video/${n.id}/${n.title}`:`#`,className:`block w-full`,children:D})}function b({list:e,loading:i=!1,hasMore:a=!1,loadMore:o,emptyText:s=``,isEditMode:c=!1,selectedIds:l,onToggleSelection:u}){return i&&e.length===0?d(v,{}):e.length===0?d(n,{type:`no-content`,text:s,className:`!pt-[72px]`}):d(r,{loadMore:async()=>{await o?.()},hasMore:!!o&&a,noMoreText:`没有更多了`,className:`w-full`,children:d(t,{className:`flex w-full flex-col gap-4`,children:e.map((e,t)=>{let n=e.id?`collect-video-row-${e.id}-${t}`:`collect-video-row-${t}`;return d(y,{item:e,isEditMode:c,isSelected:!!(e.id&&l?.has(e.id)),onToggleSelection:u},n)})})})}export{b as CollectVideoWaterfall};
@@ -1,2 +1,2 @@
1
1
 
2
- import{gInteractionGetBrowseList as e,gInteractionGetLikeList as t}from"../../../../../service/generated/client.mjs";import n from"dayjs";const r={video:1,post:2};function i(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 a(e,t){let r=e.name,a=n(t?t?.[e.content_id||``]?.create_time:e.create_time).toDate().getTime(),o=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{name:r,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:o,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:a,parent_content_info:{type:0}}}}function o(e,t){let r=e.is_more_link,i=n(t?t?.[e.id||``]?.create_time:e.show_at).toDate().getTime(),a=Number(e.duration??0),o=Number.isFinite(a)?Math.max(0,Math.floor(a)):0,s=e.img_y||e.img_x||``,c=e.img_x||e.img_y||``;return{id:e.id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:s||c,cover_image_thumbnail:s,cover_horizontal_image_thumbnail:c,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:o},statics_cnt:{browse_cnt:e.play_count||0},publish_time:i,parent_content_info:{type:0}}}}function s(e,t){let r=e.name,a=e.is_more_link,o=t[e.content_id||``].browse_time,s=n(o).toDate().getTime(),c=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{is_more_link:a,name:r||e.content,title:r||e.content,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:c,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:s,parent_content_info:{type:0}}}}function c(e,t){let r=e.is_more_link,i=t[e.id||``].browse_time,a=n(i).toDate().getTime(),o=Number(e.duration??0),s=Number.isFinite(o)?Math.max(0,Math.floor(o)):0,c=e.img_y||e.img_x||``,l=e.img_x||e.img_y||``,u=t[e.id||``]?.browse_duration||0,d=Number(t[e.id||``]?.browse_episode),f=0,p=0;return Number.isNaN(d)||(f=d),s&&u&&(p=Math.min(100,Math.floor(u/s*100))),{id:e.id||``,content_play_progress:{percent:p,series_num:f},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:c||l,cover_image_thumbnail:c,cover_horizontal_image_thumbnail:l,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:s},statics_cnt:{browse_cnt:e.play_count||0},publish_time:a,parent_content_info:{type:0}}}}async function l({targetUserId:e,page:n,contentType:i,pageSize:s=10}){if(!e)return{data:{list:[],total:0}};let c=await t({user_id:e,page:n,content_type:i,page_size:s}),l=c.data.like_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},u=i===r.post?(c.data?.post_infos??[]).map(e=>a(e,l)):(c.data?.video_infos??[]).map(e=>o(e,l)),d=c.data?.has_more,f=typeof d==`boolean`?d:void 0;return{data:{list:u,total:c.data?.total??u.length,has_more:f}}}async function u({targetUserId:t,page:n,contentType:i,pageSize:a=10,authConfig:o}){if(!t)return{data:{list:[],total:0}};let l=await e({user_id:t,page:n,page_size:a,content_type:i},o),u=l.data.records?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},d=i===r.post?(l.data?.post_infos??[]).map(e=>s(e,u)):(l.data?.video_infos??[]).map(e=>c(e,u)),f=l.data?.has_more?!0:void 0;return{data:{list:d,total:l.data?.total??d.length,has_more:f}}}export{u as getHistoryData,l as getLikeData,r as likeContentType};
2
+ import{gInteractionGetBrowseList as e,gInteractionGetLikeList as t}from"../../../../../service/generated/client.mjs";import n from"dayjs";const r={video:1,post:2};function i(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 a(e,t){let r=e.name,a=n(t?t?.[e.content_id||``]?.create_time:e.create_time).toDate().getTime(),o=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{name:r,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:o,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:a,parent_content_info:{type:0}}}}function o(e,t){let r=e.is_more_link,i=n(t?t?.[e.id||``]?.create_time:e.show_at).toDate().getTime(),a=Number(e.duration??0),o=Number.isFinite(a)?Math.max(0,Math.floor(a)):0,s=e.img_y||e.img_x||``,c=e.img_x||e.img_y||``;return{id:e.id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:s||c,cover_image_thumbnail:s,cover_horizontal_image_thumbnail:c,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:o},statics_cnt:{browse_cnt:e.play_count||0},publish_time:i,parent_content_info:{type:0}}}}function s(e,t){let r=e.name,a=e.is_more_link,o=t[e.content_id||``].browse_time,s=n(o).toDate().getTime(),c=i(e);return{id:e.content_id||``,content_play_progress:{percent:0,series_num:0},detail:{user_info:{name:e.author?.nickname,avatar:e.author?.avatar},info:{is_more_link:a,name:r||e.content,title:r||e.content,content_id:e.content_id,user_id:e.user_id,content:e.content,tags:e.tags,cover_image:c,like_count:e.like_count,dislike_count:e.dislike_count,comment_count:e.comment_count,share_count:e.share_count,view_count:e.view_count,create_time:e.create_time,update_time:e.update_time,author:e.author?{user_id:e.author.user_id,username:e.author.username,nickname:e.author.nickname,avatar_url:e.author.avatar}:void 0},statics_cnt:{browse_cnt:e.view_count||0},publish_time:s,parent_content_info:{type:0}}}}function c(e,t){let r=e.is_more_link,i=t[e.id||``].browse_time,a=n(i).toDate().getTime(),o=Number(e.duration??0),s=Number.isFinite(o)?Math.max(0,Math.floor(o)):0,c=e.img_y||e.img_x||``,l=e.img_x||e.img_y||``,u=t[e.id||``]?.browse_duration||0,d=Number(t[e.id||``]?.browse_episode),f=0,p=0;return Number.isNaN(d)||(f=d),s&&u&&(p=Math.min(100,Math.floor(u/s*100))),{id:e.id||``,content_play_progress:{percent:p,series_num:f},detail:{user_info:{name:e.source_username||e.up_user||e.director||e.actor,avatar:void 0},info:{is_more_link:r,name:e.name,content_id:e.id,content:e.description,tags:e.tags?.map(e=>e.name).filter(e=>!!e),cover_image:c||l,cover_image_thumbnail:c,cover_horizontal_image_thumbnail:l,img_type:e.img_type,img_x:e.img_x,img_y:e.img_y,create_time:e.show_at,score:e.score,video_duration:s},statics_cnt:{browse_cnt:e.play_count||0},publish_time:a,parent_content_info:{type:0}}}}async function l({targetUserId:e,page:n,contentType:i,pageSize:s=10}){if(!e)return{data:{list:[],total:0}};let c=await t({user_id:e,page:n,content_type:i,page_size:s}),l=c.data.like_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},u=c.data?.like_items?.map(e=>i===r.post?a(e.post_info,l):o(e?.video_info,l))||[],d=c.data?.has_more,f=typeof d==`boolean`?d:void 0;return{data:{list:u,total:c.data?.total??u.length,has_more:f}}}async function u({targetUserId:t,page:n,contentType:i,pageSize:a=10,authConfig:o}){if(!t)return{data:{list:[],total:0}};let l=await e({user_id:t,page:n,page_size:a,content_type:i},o),u=l.data.records?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},d=(l.data?.browse_items??[]).map(e=>i===r.post?s(e.post_info,u):c(e?.video_info,u)),f=l.data?.has_more?!0:void 0;return{data:{list:d,total:l.data?.total??d.length,has_more:f}}}export{u as getHistoryData,l as getLikeData,r as likeContentType};
@@ -8,8 +8,6 @@ interface TabBarItem {
8
8
  domainId: string;
9
9
  icon: string;
10
10
  activeIcon: string;
11
- showNavName?: boolean;
12
- show_nav_name?: boolean;
13
11
  configType: TabBarItemConfigType;
14
12
  functionPageType: string;
15
13
  selectData: unknown;
@@ -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{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(d){let{items:p=c,mode:h=`renderer`}=d,g=o(),_=r(()=>{if(h===`editor`)return 0;let e=m(p??[],g);return e>=0?e:0},[p,g,h]),v=r(()=>(p??[]).some(e=>e.label.trim()!==``),[p]);if(!p?.length)return null;function y(e){h===`editor`&&e.preventDefault()}let b=`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=_===o,l=c?r.activeIcon:r.icon,u=r.label,d=f(r),p=v?c?`gap-[5px]`:`gap-[4px]`:``,m=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:d,className:`flex flex-col items-center justify-center ${p}`,"aria-current":c?`page`:void 0,"data-index":o,"data-webview-nav":`spa`,onClick:y,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?`${b} bg-[#C043E8]`:b})}),v&&i(n,{className:m,children:u})]},o)})})})}export{h as TabBarClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../service/generated/client.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/refresh.mjs";import{useMemo as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{usePathname as d,useSearchParams as f}from"next/navigation";import{useShallow as p}from"zustand/react/shallow";function m(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function h(h){let{title:g,displayCount:_=6,showRefresh:v=!1,onItemClick:y,mode:b=`renderer`}=h,x=b===`editor`,S=n(),C=d(),w=f(),[T,E]=c(0),{userInfo:D}=e(p(e=>({userInfo:e.userInfo}))),O=D?.user_id||`guest`,{data:k}=a([`text-recommend-keyword-list`,O],()=>t({user_id:O}),{enabled:!x}),A=s(()=>(k?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[k]),j=_*2,M=s(()=>x?Array.from({length:j},(e,t)=>({label:`推荐搜索${t+1}`})):A,[x,A,j]),N=s(()=>m(M,j),[M,T,j]);if(!x&&A.length<2)return null;let P=e=>{e.stopPropagation(),E(e=>e+1)},F=e=>{if(y){y(e);return}let t=new URLSearchParams(w.toString());t.set(`q`,e);let n=C.includes(`/search-result`)?C:`/search-result`;S.push(`${n}?${t.toString()}`)};return u(r,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${x?` pointer-events-none`:``}`,children:[u(r,{className:`flex items-center justify-between w-full`,children:[l(i,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:g}),v&&u(r,{className:`flex items-center gap-1 cursor-pointer active:opacity-70 transition-opacity`,onClick:P,children:[l(i,{className:`text-[14px] text-text3 leading-[22px]`,children:`换一批`}),l(o,{className:`w-3 h-3 text-text3`})]})]}),l(r,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:N.map((e,t)=>l(r,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>F(e.label),children:l(i,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${T}-${t}`))})]})}export{h as TextRecommendClient};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r,useState as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{usePathname as s,useSearchParams as c}from"next/navigation";const l=[];function u(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function d(d){let{title:f,items:p=l,onItemClick:m,mode:h=`renderer`}=d,g=h===`editor`,_=e(),v=s(),y=c(),[b,x]=i(0),S=r(()=>u(p,6),[p,b]);if(p.length===0)return null;let C=e=>{if(m){m(e);return}let t=new URLSearchParams(y.toString());t.set(`q`,e);let n=v.includes(`/search-result`)?v:`/search-result`;_.push(`${n}?${t.toString()}`)};return o(t,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${g?` pointer-events-none`:``}`,children:[a(t,{className:`flex items-center justify-between w-full`,children:a(n,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:f})}),a(t,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:S.map((e,r)=>a(t,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>C(e.label),children:a(n,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${b}-${r}`))})]})}export{d as TextRecommendClient};
@@ -11,7 +11,6 @@ import * as zod_v4_core0 from "zod/v4/core";
11
11
  declare const textRecommendMaterial: DefineMaterialOption<typeof TextRecommendServer, typeof TextRecommendClient, zod.ZodObject<{
12
12
  readonly title: zod.ZodString & SchemaHasDefaultValue;
13
13
  readonly displayCount: zod.ZodNumber & SchemaHasDefaultValue;
14
- readonly showRefresh: zod.ZodBoolean & SchemaHasDefaultValue;
15
14
  readonly items: zod.ZodArray<zod.ZodObject<{
16
15
  label: zod.ZodString & SchemaHasDefaultValue;
17
16
  }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
@@ -10,7 +10,6 @@ import { z } from "zod";
10
10
  declare const textRecommendInspectorPropsSchema: z.ZodObject<{
11
11
  readonly title: z.ZodString & SchemaHasDefaultValue;
12
12
  readonly displayCount: z.ZodNumber & SchemaHasDefaultValue;
13
- readonly showRefresh: z.ZodBoolean & SchemaHasDefaultValue;
14
13
  readonly items: z.ZodArray<z.ZodObject<{
15
14
  label: z.ZodString & SchemaHasDefaultValue;
16
15
  }, z.core.$strip>> & SchemaHasDefaultValue;