@funhub/platform 0.2.7 → 0.2.8

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 (119) hide show
  1. package/dist/biz.d.mts +5 -5
  2. package/dist/biz.mjs +1 -1
  3. package/dist/components/biz/business/advertisement/ad-match.d.mts +4 -8
  4. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  5. package/dist/components/biz/business/advertisement/ad-provider.mjs +1 -1
  6. package/dist/components/biz/business/advertisement/ad-query.d.mts +2 -1
  7. package/dist/components/biz/business/advertisement/ad-query.mjs +1 -1
  8. package/dist/components/biz/business/advertisement/ad-runtime-provider.d.mts +2 -2
  9. package/dist/components/biz/business/advertisement/ad-runtime-provider.mjs +1 -1
  10. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
  11. package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +3 -2
  12. package/dist/components/biz/business/advertisement/banner-ad/material.mjs +1 -1
  13. package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +6 -9
  14. package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +1 -1
  15. package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +31 -1
  16. package/dist/components/biz/business/advertisement/feed-ad/index.mjs +1 -1
  17. package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +4 -4
  18. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
  19. package/dist/components/biz/business/advertisement/floating-ad/index.d.mts +1 -1
  20. package/dist/components/biz/business/advertisement/floating-ad/material.d.mts +0 -5
  21. package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +10 -21
  22. package/dist/components/biz/business/advertisement/floating-ad/schema.mjs +1 -1
  23. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
  24. package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +2 -1
  25. package/dist/components/biz/business/advertisement/icon-ad/material.mjs +1 -1
  26. package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +2 -7
  27. package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +1 -1
  28. package/dist/components/biz/business/advertisement/index.d.mts +4 -4
  29. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +3 -3
  30. package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +1 -1
  31. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +2 -2
  32. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +15 -14
  33. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  34. package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
  35. package/dist/components/biz/business/advertisement/text-ad/material.d.mts +2 -1
  36. package/dist/components/biz/business/advertisement/text-ad/material.mjs +1 -1
  37. package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +3 -5
  38. package/dist/components/biz/business/advertisement/text-ad/schema.mjs +1 -1
  39. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  40. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
  41. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  42. package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
  43. package/dist/components/biz/business/home-recommend/home-recommend-grid/client.mjs +1 -1
  44. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +24 -4
  45. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  46. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +22 -2
  47. package/dist/components/biz/business/home-recommend/home-recommend-grid/server.mjs +1 -1
  48. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.mjs +1 -1
  49. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +24 -4
  50. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  51. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +22 -2
  52. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/server.mjs +1 -1
  53. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  54. package/dist/components/biz/business/home-recommend/shared/home-recommend-default-config.mjs +1 -1
  55. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  56. package/dist/components/biz/business/home-recommend/shared/home-recommend-runtime-props.mjs +1 -1
  57. package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +1 -1
  58. package/dist/components/biz/business/home-recommend/shared/home-recommend-smart-layout.mjs +2 -0
  59. package/dist/components/biz/business/hot-recommend/client.mjs +1 -1
  60. package/dist/components/biz/business/hot-recommend/material.d.mts +1 -0
  61. package/dist/components/biz/business/hot-recommend/schema.d.mts +1 -0
  62. package/dist/components/biz/business/hot-recommend/schema.mjs +1 -1
  63. package/dist/components/biz/business/image-text-recommend/client.d.mts +1 -1
  64. package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
  65. package/dist/components/biz/business/image-text-recommend/material.d.mts +7 -7
  66. package/dist/components/biz/business/image-text-recommend/schema.d.mts +30 -25
  67. package/dist/components/biz/business/image-text-recommend/schema.mjs +1 -1
  68. package/dist/components/biz/business/image-text-recommend/server.mjs +1 -1
  69. package/dist/components/biz/business/image-text-recommend/shared/query.mjs +1 -1
  70. package/dist/components/biz/business/index.d.mts +4 -4
  71. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  72. package/dist/components/biz/business/marquee/client.mjs +1 -1
  73. package/dist/components/biz/business/marquee/material.d.mts +5 -6
  74. package/dist/components/biz/business/marquee/schema.d.mts +5 -6
  75. package/dist/components/biz/business/marquee/schema.mjs +1 -1
  76. package/dist/components/biz/business/tab-bar/client.d.mts +2 -0
  77. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  78. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  79. package/dist/components/biz/business/text-recommend/material.d.mts +1 -0
  80. package/dist/components/biz/business/text-recommend/schema.d.mts +1 -0
  81. package/dist/components/biz/business/text-recommend/schema.mjs +1 -1
  82. package/dist/components/common/video-player/index.d.mts +2 -1
  83. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +2 -0
  84. package/dist/components/common/video-player/video-player-ref-context.mjs +2 -0
  85. package/dist/components/ui/badge.d.mts +1 -1
  86. package/dist/components/ui/button.d.mts +1 -1
  87. package/dist/components/ui/image.d.mts +4 -4
  88. package/dist/hooks/use-is-client.d.mts +10 -0
  89. package/dist/hooks/use-is-client.mjs +2 -0
  90. package/dist/hooks.d.mts +2 -1
  91. package/dist/hooks.mjs +1 -1
  92. package/dist/service/generated/client.d.mts +10 -2
  93. package/dist/service/generated/client.mjs +1 -1
  94. package/dist/service/generated/tanstack.d.mts +12 -2
  95. package/dist/service/generated/tanstack.mjs +1 -1
  96. package/dist/service.d.mts +3 -3
  97. package/dist/service.mjs +1 -1
  98. package/dist/store/modules/blind-spot-ad-store.d.mts +116 -0
  99. package/dist/store/modules/blind-spot-ad-store.mjs +2 -0
  100. package/dist/store/modules/user-store.d.mts +1 -1
  101. package/dist/store/modules/user-store.mjs +1 -1
  102. package/dist/store/modules/video-player-ref-store.d.mts +21 -0
  103. package/dist/store/modules/video-player-ref-store.mjs +2 -0
  104. package/dist/store.d.mts +3 -1
  105. package/dist/store.mjs +1 -1
  106. package/dist/types.d.mts +171 -1
  107. package/dist/utils/browser-fingerprint.d.mts +13 -0
  108. package/dist/utils/browser-fingerprint.mjs +2 -0
  109. package/dist/utils/device-id.d.mts +2 -2
  110. package/dist/utils/device-id.mjs +1 -1
  111. package/dist/utils/http.mjs +1 -1
  112. package/dist/utils/request-user-id.d.mts +12 -0
  113. package/dist/utils/request-user-id.mjs +2 -0
  114. package/dist/utils/schema/inspector.d.mts +2 -2
  115. package/dist/utils.d.mts +3 -1
  116. package/dist/utils.mjs +1 -1
  117. package/package.json +2 -1
  118. package/dist/assets/icons/search/video.mjs +0 -2
  119. package/dist/components/biz/business/marquee/marquee.module.mjs +0 -24
@@ -1,2 +1,2 @@
1
1
 
2
- import e from"./client.mjs";import{normalizeHomeRecommendRuntimeProps as t}from"../shared/home-recommend-runtime-props.mjs";import{resolveHomeRecommendServerData as n}from"../shared/home-recommend-server-data.mjs";import{jsx as r}from"react/jsx-runtime";function i({rows:e,columns:t,smartTagEnabled:n,enableInfinite:r,items:i}){if(r===!0)return 16;let a=Array.isArray(i)?i.length:0;if(n!==!0&&a>0)return a;let o=Number(e),s=Number(t);if(!Number.isFinite(o)||!Number.isFinite(s))return 16;let c=Math.floor(o)*Math.floor(s);return!Number.isFinite(c)||c<=0?16:c}async function a(a){let{mode:o=`renderer`,...s}=a,c=t(s);if(o!==`renderer`)return r(e,{...c,mode:o});let l=await n({smartTagEnabled:c.smartTagEnabled,smartTagIds:c.smartTagIds,catId:c.catId,enableInfinite:c.enableInfinite,pageSize:i(c),items:c.items});return r(e,{...c,prefetchData:l.data,mode:o})}export{a as HomeRecommendGrid};
2
+ import e from"./client.mjs";import{normalizeHomeRecommendRuntimeProps as t}from"../shared/home-recommend-runtime-props.mjs";import{resolveHomeRecommendServerData as n}from"../shared/home-recommend-server-data.mjs";import{jsx as r}from"react/jsx-runtime";function i({rows:e,columns:t,smartLayout:n,enableInfinite:r,items:i}){if(r===!0)return 16;let a=Array.isArray(i)?i.length:0;if(n?.enabled!==!0&&a>0)return a;let o=Number(e),s=Number(t);if(!Number.isFinite(o)||!Number.isFinite(s))return 16;let c=Math.floor(o)*Math.floor(s);return!Number.isFinite(c)||c<=0?16:c}async function a(a){let{mode:o=`renderer`,...s}=a,c=t(s);if(o!==`renderer`)return r(e,{...c,mode:o});console.log(`HomeRecommendGrid`,c);let l=await n({enableInfinite:c.enableInfinite,pageSize:i(c),items:c.items,smartLayout:c.smartLayout});return r(e,{...c,prefetchData:l.data,mode:o})}export{a as HomeRecommendGrid};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{buildHomeRecommendEditorPreviewData as e}from"../shared/home-recommend-preview.mjs";import t from"../shared/home-recommend-base.mjs";import{useMemo as n}from"react";import{jsx as r}from"react/jsx-runtime";function i({prefetchData:i,mode:a=`renderer`,...o}){let s=a===`editor`,c=o,l=n(()=>s?e({variant:`waterfall`,schemaTitle:c.title,enableInfinite:c.enableInfinite,smartTagEnabled:c.smartTagEnabled,items:c.items}):i,[s,i,c.enableInfinite,c.items,c.smartTagEnabled,c.title]);return r(`div`,{className:s?`pointer-events-none`:void 0,children:r(t,{variant:`waterfall`,props:c,data:l,mode:a})})}export{i as default};
2
+ "use client";import{buildHomeRecommendEditorPreviewData as e}from"../shared/home-recommend-preview.mjs";import t from"../shared/home-recommend-base.mjs";import{useMemo as n}from"react";import{jsx as r}from"react/jsx-runtime";function i({prefetchData:i,mode:a=`renderer`,...o}){let s=a===`editor`,c=o,l=n(()=>s?e({variant:`waterfall`,schemaTitle:c.title,enableInfinite:c.enableInfinite,dynamicRecommendEnabled:c.smartLayout?.enabled===!0,items:c.items}):i,[s,i,c.enableInfinite,c.items,c.smartLayout?.enabled,c.title]);return r(`div`,{className:s?`pointer-events-none`:void 0,children:r(t,{variant:`waterfall`,props:c,data:l,mode:a})})}export{i as default};
@@ -9,15 +9,27 @@ import z$1 from "zod";
9
9
  * HomeRecommendWaterfall 物料属性 schema 定义。
10
10
  */
11
11
  declare const homeRecommendWaterfallInspectorPropsSchema: z$1.ZodObject<{
12
- readonly smartTagEnabled: z$1.ZodBoolean & SchemaHasDefaultValue;
13
12
  readonly title: z$1.ZodString & SchemaHasDefaultValue;
14
13
  readonly showPlayCount: z$1.ZodBoolean & SchemaHasDefaultValue;
15
14
  readonly playCountDelta: z$1.ZodNumber & SchemaHasDefaultValue;
16
15
  readonly showEpisode: z$1.ZodBoolean & SchemaHasDefaultValue;
17
16
  readonly enableInfinite: z$1.ZodBoolean & SchemaHasDefaultValue;
18
17
  readonly moreLink: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
19
- readonly smartTagIds: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
18
+ readonly recommendContentConfig: z$1.ZodOptional<z$1.ZodObject<{
19
+ enabled: z$1.ZodOptional<z$1.ZodBoolean>;
20
+ categories: z$1.ZodOptional<z$1.ZodArray<z$1.ZodAny>>;
21
+ tags: z$1.ZodOptional<z$1.ZodArray<z$1.ZodAny>>;
22
+ sortRule: z$1.ZodOptional<z$1.ZodString>;
23
+ contentForms: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
24
+ }, z$1.core.$loose>>;
20
25
  readonly catId: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
26
+ readonly smartLayout: z$1.ZodOptional<z$1.ZodObject<{
27
+ enabled: z$1.ZodOptional<z$1.ZodBoolean>;
28
+ categories: z$1.ZodOptional<z$1.ZodArray<z$1.ZodAny>>;
29
+ tags: z$1.ZodOptional<z$1.ZodArray<z$1.ZodAny>>;
30
+ sortRule: z$1.ZodOptional<z$1.ZodString>;
31
+ contentForms: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
32
+ }, z$1.core.$loose>>;
21
33
  readonly items: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
22
34
  contentId: z$1.ZodString;
23
35
  coverMode: z$1.ZodOptional<z$1.ZodEnum<{
@@ -26,6 +38,14 @@ declare const homeRecommendWaterfallInspectorPropsSchema: z$1.ZodObject<{
26
38
  }>>;
27
39
  coverUrl: z$1.ZodOptional<z$1.ZodString>;
28
40
  is_ad: z$1.ZodOptional<z$1.ZodBoolean>;
41
+ ad: z$1.ZodOptional<z$1.ZodObject<{
42
+ ad_code: z$1.ZodOptional<z$1.ZodString>;
43
+ ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
44
+ ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
45
+ ad_advertise_type: z$1.ZodOptional<z$1.ZodNumber>;
46
+ ad_advertise_desc: z$1.ZodOptional<z$1.ZodString>;
47
+ ad_ext_data: z$1.ZodOptional<z$1.ZodString>;
48
+ }, z$1.core.$strip>>;
29
49
  ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
30
50
  ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
31
51
  badge_url: z$1.ZodOptional<z$1.ZodString>;
@@ -45,9 +65,9 @@ declare const homeRecommendWaterfallInspectorPropsSchema: z$1.ZodObject<{
45
65
  }>>;
46
66
  }, z$1.core.$strip>;
47
67
  declare const homeRecommendWaterfallInspectorDefaultProps: {
48
- smartTagIds: never[];
49
68
  items: never[];
50
- smartTagEnabled: boolean;
69
+ recommendContentConfig: undefined;
70
+ smartLayout: undefined;
51
71
  title: string;
52
72
  showPlayCount: boolean;
53
73
  playCountDelta: number;
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE as n,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as r,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as i,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as a,HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED as o,HOME_RECOMMEND_DEFAULT_TITLE as s}from"../shared/home-recommend-default-config.mjs";import c from"zod";const l=e(e=>({smartTagEnabled:e.boolean(o,{fieldType:`switch`,label:`智能铺设`}),title:e.string(s,{label:`推荐位名称`}),showPlayCount:e.boolean(a,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(r,{label:`播放量浮动`}),showEpisode:e.boolean(i,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),smartTagIds:c.array(c.string()).optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),items:c.array(c.object({contentId:c.string(),coverMode:c.enum([`upload`,`content`]).optional(),coverUrl:c.string().optional(),is_ad:c.boolean().optional(),ad_advertise_url:c.string().optional(),ad_advertise_icon:c.string().optional(),badge_url:c.string().optional(),titleMode:c.enum([`custom`,`content`]).optional(),title:c.string().optional(),showPlayCount:c.boolean().optional(),playCountDelta:c.number().optional(),showEpisode:c.boolean().optional()})).optional()})),u={...t(l),smartTagIds:[],items:[]},d={smartTagEnabled:{type:`boolean`,title:`智能铺设`,default:u.smartTagEnabled},title:{type:`string`,title:`推荐位名称`,default:u.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:u.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:u.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:u.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:u.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:u.moreLink},smartTagIds:{type:`array`,title:`智能铺设标签`,default:u.smartTagIds,items:{type:`string`,title:`标签 ID`}},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:u.catId},items:{type:`array`,title:`推荐项`,default:u.items,items:{type:`object`,title:`推荐项`,properties:{contentId:{type:`string`,title:`内容 ID`},coverMode:{type:`string`,title:`封面模式`},coverUrl:{type:`string`,title:`封面地址`},is_ad:{type:`boolean`,title:`是否广告`},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},badge_url:{type:`string`,title:`角标地址`},titleMode:{type:`string`,title:`标题模式`},title:{type:`string`,title:`标题`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{u as homeRecommendWaterfallInspectorDefaultProps,l as homeRecommendWaterfallInspectorPropsSchema,d as homeRecommendWaterfallPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE as n,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as r,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as i,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as a,HOME_RECOMMEND_DEFAULT_TITLE as o}from"../shared/home-recommend-default-config.mjs";import{homeRecommendSmartLayoutSchema as s}from"../shared/home-recommend-smart-layout.mjs";import c from"zod";const l=e(e=>({title:e.string(o,{label:`推荐位名称`}),showPlayCount:e.boolean(a,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(r,{label:`播放量浮动`}),showEpisode:e.boolean(i,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),recommendContentConfig:s.optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),smartLayout:s.optional(),items:c.array(c.object({contentId:c.string(),coverMode:c.enum([`upload`,`content`]).optional(),coverUrl:c.string().optional(),is_ad:c.boolean().optional(),ad:c.object({ad_code:c.string().optional(),ad_advertise_url:c.string().optional(),ad_advertise_icon:c.string().optional(),ad_advertise_type:c.number().optional(),ad_advertise_desc:c.string().optional(),ad_ext_data:c.string().optional()}).optional(),ad_advertise_url:c.string().optional(),ad_advertise_icon:c.string().optional(),badge_url:c.string().optional(),titleMode:c.enum([`custom`,`content`]).optional(),title:c.string().optional(),showPlayCount:c.boolean().optional(),playCountDelta:c.number().optional(),showEpisode:c.boolean().optional()})).optional()})),u={...t(l),items:[],recommendContentConfig:void 0,smartLayout:void 0},d={title:{type:`string`,title:`推荐位名称`,default:u.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:u.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:u.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:u.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:u.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:u.moreLink},recommendContentConfig:{type:`object`,title:`推荐内容配置`,description:`频道下发的筛选与排序;enabled 为 true 时走动态列表`,default:u.recommendContentConfig},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:u.catId},smartLayout:{type:`object`,title:`智能筛选配置`,description:`enabled 为 true 时使用最新视频列表接口;categories/tags 取 id 透传 cat_ids、tags`,default:u.smartLayout},items:{type:`array`,title:`推荐项`,default:u.items,items:{type:`object`,title:`推荐项`,properties:{contentId:{type:`string`,title:`内容 ID`},coverMode:{type:`string`,title:`封面模式`},coverUrl:{type:`string`,title:`封面地址`},is_ad:{type:`boolean`,title:`是否广告`},ad:{type:`object`,title:`广告对象`,properties:{ad_code:{type:`string`,title:`广告业务编码`},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},ad_advertise_type:{type:`number`,title:`广告类型`},ad_advertise_desc:{type:`string`,title:`广告文案描述`},ad_ext_data:{type:`string`,title:`广告扩展信息`}}},ad_advertise_url:{type:`string`,title:`广告跳转地址`},ad_advertise_icon:{type:`string`,title:`广告素材地址`},badge_url:{type:`string`,title:`角标地址`},titleMode:{type:`string`,title:`标题模式`},title:{type:`string`,title:`标题`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{u as homeRecommendWaterfallInspectorDefaultProps,l as homeRecommendWaterfallInspectorPropsSchema,d as homeRecommendWaterfallPropsSchema};
@@ -9,15 +9,27 @@ import * as zod_v4_core0 from "zod/v4/core";
9
9
 
10
10
  //#region components/biz/business/home-recommend/home-recommend-waterfall/material.d.ts
11
11
  declare const homeRecommendWaterfallMaterial: DefineMaterialOption<typeof HomeRecommendWaterfall, typeof HomeRecommendWaterfallClient, zod.ZodObject<{
12
- readonly smartTagEnabled: zod.ZodBoolean & SchemaHasDefaultValue;
13
12
  readonly title: zod.ZodString & SchemaHasDefaultValue;
14
13
  readonly showPlayCount: zod.ZodBoolean & SchemaHasDefaultValue;
15
14
  readonly playCountDelta: zod.ZodNumber & SchemaHasDefaultValue;
16
15
  readonly showEpisode: zod.ZodBoolean & SchemaHasDefaultValue;
17
16
  readonly enableInfinite: zod.ZodBoolean & SchemaHasDefaultValue;
18
17
  readonly moreLink: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
19
- readonly smartTagIds: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
18
+ readonly recommendContentConfig: 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>>;
20
25
  readonly catId: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
26
+ readonly smartLayout: zod.ZodOptional<zod.ZodObject<{
27
+ enabled: zod.ZodOptional<zod.ZodBoolean>;
28
+ categories: zod.ZodOptional<zod.ZodArray<zod.ZodAny>>;
29
+ tags: zod.ZodOptional<zod.ZodArray<zod.ZodAny>>;
30
+ sortRule: zod.ZodOptional<zod.ZodString>;
31
+ contentForms: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
32
+ }, zod_v4_core0.$loose>>;
21
33
  readonly items: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
22
34
  contentId: zod.ZodString;
23
35
  coverMode: zod.ZodOptional<zod.ZodEnum<{
@@ -26,6 +38,14 @@ declare const homeRecommendWaterfallMaterial: DefineMaterialOption<typeof HomeRe
26
38
  }>>;
27
39
  coverUrl: zod.ZodOptional<zod.ZodString>;
28
40
  is_ad: zod.ZodOptional<zod.ZodBoolean>;
41
+ ad: zod.ZodOptional<zod.ZodObject<{
42
+ ad_code: zod.ZodOptional<zod.ZodString>;
43
+ ad_advertise_url: zod.ZodOptional<zod.ZodString>;
44
+ ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
45
+ ad_advertise_type: zod.ZodOptional<zod.ZodNumber>;
46
+ ad_advertise_desc: zod.ZodOptional<zod.ZodString>;
47
+ ad_ext_data: zod.ZodOptional<zod.ZodString>;
48
+ }, zod_v4_core0.$strip>>;
29
49
  ad_advertise_url: zod.ZodOptional<zod.ZodString>;
30
50
  ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
31
51
  badge_url: zod.ZodOptional<zod.ZodString>;
@@ -1,2 +1,2 @@
1
1
 
2
- import e from"./client.mjs";import{normalizeHomeRecommendRuntimeProps as t}from"../shared/home-recommend-runtime-props.mjs";import{resolveHomeRecommendServerData as n}from"../shared/home-recommend-server-data.mjs";import{jsx as r}from"react/jsx-runtime";function i(e,t){if(e===!0)return 16;let n=Array.isArray(t)?t.length:0;return n<=0?16:n}async function a(a){let{mode:o=`renderer`,...s}=a,c=t(s);if(o!==`renderer`)return r(e,{...c,mode:o});let l=await n({smartTagEnabled:c.smartTagEnabled,smartTagIds:c.smartTagIds,catId:c.catId,enableInfinite:c.enableInfinite,pageSize:i(c.enableInfinite,c.items),items:c.items});return r(e,{...c,prefetchData:l.data,mode:o})}export{a as HomeRecommendWaterfall};
2
+ import e from"./client.mjs";import{normalizeHomeRecommendRuntimeProps as t}from"../shared/home-recommend-runtime-props.mjs";import{resolveHomeRecommendServerData as n}from"../shared/home-recommend-server-data.mjs";import{jsx as r}from"react/jsx-runtime";function i(e,t){if(e===!0)return 16;let n=Array.isArray(t)?t.length:0;return n<=0?16:n}async function a(a){let{mode:o=`renderer`,...s}=a,c=t(s);if(o!==`renderer`)return r(e,{...c,mode:o});let l=await n({enableInfinite:c.enableInfinite,pageSize:i(c.enableInfinite,c.items),items:c.items,smartLayout:c.smartLayout});return r(e,{...c,prefetchData:l.data,mode:o})}export{a as HomeRecommendWaterfall};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{Image as t}from"../../../../ui/image.mjs";import{Box as n}from"../../../../ui/box.mjs";import{Text as r}from"../../../../ui/text.mjs";import i from"../../../../ui/loading.mjs";import a from"../../../../ui/link.mjs";import{useGridFirstRowHeight as o,useWaterfallFirstRowHeight as s}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as c}from"../../../../../hooks/use-min-duration-loading.mjs";import l from"../../../../../assets/icons/common/right_arrow.mjs";import u from"../../../../../assets/icons/common/right_arrow_thin.mjs";import{WaterfallRecommend as d}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as f,HOME_RECOMMEND_DEFAULT_GRID_ROWS as ee,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as p,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as m,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as h,HOME_RECOMMEND_DEFAULT_TITLE as te,HOME_RECOMMEND_MAX_GRID_COLUMNS as ne,HOME_RECOMMEND_MAX_GRID_ROWS as re}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as ie}from"./home-recommend-preview.mjs";import{enrichHomeRecommendItemsWithVideoDetails as ae}from"./home-recommend-video-detail.mjs";import{useCallback as oe,useEffect as g,useId as _,useLayoutEffect as se,useMemo as v,useRef as y,useState as b}from"react";import{Fragment as ce,jsx as x,jsxs as S}from"react/jsx-runtime";const le={backgroundImage:`var(--gradient-card-mask-medium)`},ue={},de={list:[]},C=new Map,w=[];function fe(e){if(e)return C.get(e)}function pe(e,t){if(!e||(C.has(e)||w.push(e),C.set(e,{items:[...t.items],cursor:t.cursor}),w.length<=120))return;let n=w.shift();n&&C.delete(n)}function me({variant:t,props:ie=ue,data:_=de,mode:le=`renderer`}){let C=le===`editor`,{list:w,title:me,cursor:T}=_,E=v(()=>Array.isArray(w)?w:[],[w]),D=v(()=>Array.isArray(_.icons)?_.icons:[],[_.icons]),{rows:ge,columns:be,moreLink:xe,title:Se,smartTagEnabled:Ce,smartTagIds:O,catId:we,showPlayCount:k,playCountDelta:Te,showEpisode:Ee,enableInfinite:De,items:A}=ie,j=Ce===!0,M=De===!0&&j,N=!C&&M&&E.length>=16,P=v(()=>Array.isArray(O)?O.map(e=>String(e||``).trim()).filter(Boolean):[],[O]),F=typeof we==`string`?we.trim():``,I=v(()=>j||!Array.isArray(A)?``:A.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[j,A]),[je,Me]=b(0),[L,R]=b(E),[Ne,Pe]=b(D),[z,B]=b(()=>typeof T==`string`?T:void 0),[V,Fe]=b(!1),Ie=y(null),Le=y(null),H=y(null),Re=y([]),U=y({left:null,right:null}),W=y(!1),G=y(``),{isLoading:ze,show:Be,hide:Ve}=c(600),He=ve(ge,ee,re),K=ve(be,f,ne),q=M?16:t===`grid`?He*K:16,J=v(()=>[t,j?`smart`:`manual:${I}`,P.join(`,`),F,String(q)].join(`|`),[j,I,F,q,P,t]);g(()=>{R(E),Pe(D),B(typeof T==`string`?T:void 0)},[T,D,E]);let Ue=He*K,We=C&&t===`grid`,Y=We?L.slice(0,Ue):L,Ge=We?Ne.slice(0,Ue):Ne,Ke=t===`waterfall`?6:4,qe=Y.length>0?Math.max(0,Y.length-Ke):-1,Je=!!z,Ye=Se&&Se.trim()||me||te,X=k??h,Z=Number(Te??p),Q=Ee??m,Xe=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,Ze=t===`grid`?u:C?l:u,Qe=_e(xe),$e=(t===`waterfall`||!M)&&!!Qe,et=$e?Qe:``,tt=t===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`,nt=`size-[16px] text-text1`,rt=o({enabled:!C&&t===`grid`,containerRef:Le,firstRowItemRef:Re,columns:K,itemsCount:Y.length,deps:[t]}),it=s({enabled:!C&&t===`waterfall`,containerRef:Ie,firstRowRef:U,deps:[t,Y.length]}),at=t===`grid`?rt:it,ot=oe(async()=>{if(C||G.current===J)return;let t=fe(J);if(t){R(t.items),j&&B(t.cursor);return}if(j||I){G.current=J;try{if(Be(),!j){if(!I)return;let e=await ae(L);R(e),pe(J,{items:e});return}let t=await e({page_size:q,tags:P.length>0?P:void 0,cat_id:F||void 0},{cache:`no-store`}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=t.data?.cursor;R(n),B(r),pe(J,{items:n,cursor:r})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{G.current===J&&(G.current=``),Ve()}}},[Ve,C,j,I,J,F,q,P,L,Be]);g(()=>{ot()},[ot]);let st=oe(async()=>{let t=z;if(!(!N||!t||W.current)){W.current=!0,Fe(!0);try{let n=await e({cursor:t,page_size:q,tags:P.length>0?P:void 0,cat_id:F||void 0}),r=Array.isArray(n.data?.videos)?n.data.videos:[],i=n.data?.cursor;r.length>0&&R(e=>e.concat(r)),B(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),B(void 0)}finally{W.current=!1,Fe(!1)}}},[z,F,q,P,N]);g(()=>{let e=H.current;if(!e||!N||!Je)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||V||st()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[st,Je,V,Y.length,q,N,qe]),se(()=>{let e=Ie.current;if(!e||t!==`waterfall`)return;let n=()=>{let t=e.clientWidth||0;Me(t>0?(t-15)/2:0)};n();let r=new ResizeObserver(n);return r.observe(e),()=>{r.disconnect()}},[t]);let $=v(()=>t===`waterfall`?ke(Y,Ge,je):{left:[],right:[]},[je,Ge,Y,t]),ct=v(()=>t===`waterfall`?{left:$.left.map(e=>Oe(e,X,Z,Q)),right:$.right.map(e=>Oe(e,X,Z,Q))}:{left:[],right:[]},[Z,Q,X,t,$.left,$.right]);if(g(()=>{t===`waterfall`&&($.left.length||(U.current.left=null),$.right.length||(U.current.right=null))},[t,$.left.length,$.right.length]),!Y.length)return null;let lt=!C&&ze,ut=!C&&V,dt=at>0?at/2:160;return S(n,{className:`w-full mt-[16px]`,children:[t===`grid`&&S(n,{className:`flex items-center justify-between pl-[16px] pr-0 mb-[16px]`,children:[x(r,{className:Xe,children:Ye}),$e&&x(a,{href:et,"aria-label":`更多`,className:tt,children:x(Ze,{className:nt})})]}),t===`grid`&&S(n,{ref:Le,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[Y.map((e,t)=>{let n=Ge[t],r=ye(e);return x(`div`,{ref:e=>{t===qe&&(H.current=e),t<K&&(Re.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:x(he,{item:e,icon:n,index:t,showPlayCount:X&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??Z,showEpisode:r?.showEpisode??Q,widthStyle:{width:`100%`}})},Ae(e,t))}),lt&&x(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),lt&&x(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:dt},"aria-hidden":!0,children:x(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),t===`waterfall`&&x(d,{title:Ye,moreHref:et||void 0,moreIcon:$e?x(Ze,{className:nt}):void 0,titleClassName:Xe,moreLinkClassName:tt,columns:ct,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{e.sourceIndex===qe&&(H.current=r),n===0&&(U.current[t]=r)},overlay:lt?S(ce,{children:[x(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),x(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:dt},"aria-hidden":!0,children:x(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0}),ut&&x(n,{className:`w-full flex justify-center py-[12px]`,children:x(i,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function he({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o}){return x(T,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o})}function T({item:e,icon:i,index:o,showPlayCount:s,playCountDelta:c,showEpisode:l,widthStyle:u}){let d=be(e),f=e.name||e?.title||``,ee=e.id?ge(e):`#`,p=F(e,i,o),m=A(e,l),h=s?k(e.static?.browse_cnt??0,c):``;return x(a,{href:ee,className:`block w-full`,style:u,children:S(n,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:`109 / 150`},children:[d&&x(t,{src:d,alt:f||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),x(n,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:le,"aria-hidden":!0}),p&&x(n,{className:`absolute left-[8px] top-[8px] z-10`,children:x(E,{url:p})}),m&&x(n,{className:`absolute right-[8px] top-[10px] z-10 max-w-[56px]`,children:x(r,{as:`span`,className:`block text-right text-[10px] leading-[14px] font-medium not-italic text-text1 line-clamp-1 font-['PingFang_SC']`,children:m})}),S(n,{className:`absolute left-[8px] right-[8px] bottom-[8px] top-[78px] z-10 flex flex-col justify-end`,children:[x(n,{className:`flex min-h-[40px] w-full items-end`,children:x(r,{as:`h3`,className:`w-full line-clamp-2 text-[14px] font-medium not-italic leading-normal text-white font-['PingFang_SC']`,children:f})}),h&&S(n,{className:`flex h-[20px] items-center gap-[6px]`,children:[x(D,{className:`h-[15px] w-[12px] shrink-0`}),x(r,{as:`span`,className:`shrink-0 whitespace-nowrap text-[14px] font-normal not-italic leading-normal text-text3 font-['PingFang_SC']`,children:h})]})]})]})})}function E({url:e}){return x(t,{src:e,alt:`角标`,width:96,height:18,className:`h-[18px] w-auto max-w-[96px] object-contain`})}function D({className:e}){let t=_().replace(/:/g,``),n=`grid-heat-outer-${t}`,r=`grid-heat-highlight-left-${t}`,i=`grid-heat-highlight-right-${t}`;return S(`svg`,{viewBox:`0 0 11.9811 15`,fill:`none`,"aria-hidden":!0,className:e,children:[x(`path`,{d:`M2.94686 4.47572C4.52521 4.03871 4.39118 0.994604 4.39118 0C7.76131 0.497302 8.72372 3.31535 9.20563 4.97302C14.02 7.45953 12.568 15.9138 4.87263 14.9191C-2.42073 13.9763 -0.183446 5.34241 2.94686 4.47572Z`,fill:`url(#${n})`}),x(`path`,{d:`M5.66995 6.45327C6.82541 4.06622 5.16406 1.16037 4.20118 0C4.13684 1.21533 4.37554 3.91735 2.75432 4.45159C1.0513 5.01279 0.16048 7.16814 0 8.16274L3.26275 9.93438C3.58371 9.76861 4.51449 8.84032 5.66995 6.45327Z`,fill:`url(#${r})`,transform:`translate(0.19 0.01)`}),x(`path`,{d:`M3.55359 3.57102C2.65587 2.53581 3.298 0.846416 3.48828 0C0.514078 0.39887 -0.0720454 5.22416 0.0066677 7.58695L4.28508 8.57876C4.99512 7.12607 4.45131 4.60622 3.55359 3.57102Z`,fill:`url(#${i})`,transform:`translate(7.39 2.85)`}),S(`defs`,{children:[S(`linearGradient`,{id:n,x1:`7.35676`,y1:`1.93157`,x2:`3.49864`,y2:`15.4663`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{offset:`0.0817308`,stopColor:`#FF3F49`}),x(`stop`,{offset:`0.6`,stopColor:`#FF4D56`}),x(`stop`,{offset:`1`,stopColor:`#FFA060`})]}),S(`linearGradient`,{id:r,x1:`4.39349`,y1:`0`,x2:`0.834125`,y2:`10.4383`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFBCB5`}),x(`stop`,{offset:`0.834055`,stopColor:`#FE676F`,stopOpacity:`0`})]}),S(`linearGradient`,{id:i,x1:`2.30551`,y1:`2.82163`,x2:`0.860506`,y2:`6.96924`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFA49B`}),x(`stop`,{offset:`1`,stopColor:`#FE676F`,stopOpacity:`0`})]})]})]})}function ge(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function _e(e){return e?e.trim():``}function ve(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function ye(e){return e[ie]}function be(e){return e.img_y||e.img_x||e?.coverUrl}function xe(e){return typeof e==`string`?e:``}function Se(e){return typeof e==`string`?e.trim():``}function Ce(e){return Se(e.img_type).toLowerCase()===`long`?`short`:`tall`}function O(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function we(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?De(e,!0):``)}function k(e,t){let n=N(e,t);return n<=0?``:`${Te(n)}热度`}function Te(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e4?`${Math.floor(e/1e4)}万`:Math.floor(e).toString()}function Ee(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function De(e,t){return t?j(e)||P(Number(e.duration||0)):``}function A(e,t){return t?j(e):``}function j(e){if(!M(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function M(e){if(Number(e.type??0)===2)return!0;let t=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(t)&&t>1}function N(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function P(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 F(e,t,n){return xe(e.badge_url)||xe(t?.material_url)||``}function Oe(e,t,n,r){let i=Ce(e.item),a=O(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?ge(e.item):`#`,c=F(e.item,e.icon,e.index),l=we(e.item,r),u=t?k(e.item.static?.browse_cnt??0,n):``,d=Ee(e.item.score);return{key:Ae(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,metaPrimaryText:l,heatText:u,score:d}}function ke(e,t,n){let r=[],i=[],a=n<=0,o=0,s=0;return e.forEach((e,c)=>{let l=t[c];if(a){c%2==0?r.push({item:e,icon:l,index:c}):i.push({item:e,icon:l,index:c});return}let u=I(n,e);o<=s?(r.push({item:e,icon:l,index:c}),o+=u):(i.push({item:e,icon:l,index:c}),s+=u)}),{left:r,right:i}}function I(e,t){return e?(Ce(t)===`tall`?218:120)+16:0}function Ae(e,t){return e.id?`home-recommend-${e.id}`:`home-recommend-${t}`}export{me as default};
2
+ "use client";import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{Image as n}from"../../../../ui/image.mjs";import{Box as r}from"../../../../ui/box.mjs";import{Text as i}from"../../../../ui/text.mjs";import a from"../../../../ui/loading.mjs";import o from"../../../../ui/link.mjs";import{useGridFirstRowHeight as s,useWaterfallFirstRowHeight as c}from"../../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as l}from"../../../../../hooks/use-min-duration-loading.mjs";import u from"../../../../../assets/icons/common/right_arrow.mjs";import d from"../../../../../assets/icons/common/right_arrow_thin.mjs";import{WaterfallRecommend as f}from"../../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ee,HOME_RECOMMEND_DEFAULT_GRID_ROWS as p,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as m,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as h,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as te,HOME_RECOMMEND_DEFAULT_TITLE as ne,HOME_RECOMMEND_MAX_GRID_COLUMNS as re,HOME_RECOMMEND_MAX_GRID_ROWS as ie}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as ae}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as oe}from"./home-recommend-smart-layout.mjs";import{enrichHomeRecommendItemsWithVideoDetails as se}from"./home-recommend-video-detail.mjs";import{useCallback as ce,useEffect as g,useId as _,useLayoutEffect as le,useMemo as v,useRef as y,useState as b}from"react";import{Fragment as ue,jsx as x,jsxs as S}from"react/jsx-runtime";const de={backgroundImage:`var(--gradient-card-mask-medium)`},fe={},pe={list:[]},C=new Map,w=[];function me(e){if(e)return C.get(e)}function he(e,t){if(!e||(C.has(e)||w.push(e),C.set(e,{items:[...t.items],cursor:t.cursor}),w.length<=120))return;let n=w.shift();n&&C.delete(n)}function ge({variant:n,props:ae=fe,data:_=pe,mode:de=`renderer`}){let C=de===`editor`,{list:w,title:ge,cursor:T}=_,E=v(()=>Array.isArray(w)?w:[],[w]),D=v(()=>Array.isArray(_.icons)?_.icons:[],[_.icons]),{rows:O,columns:xe,moreLink:k,title:A,showPlayCount:j,playCountDelta:Se,showEpisode:Ce,enableInfinite:M,items:N,smartLayout:P}=ae,F=P?.enabled===!0,I=F&&oe(P?.sortRule),L=M===!0&&F,R=!C&&L&&E.length>=16,z=v(()=>F||!Array.isArray(N)?``:N.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[F,N]),[B,we]=b(0),[De,V]=b(E),[ke,Ae]=b(D),[je,H]=b(()=>typeof T==`string`?T:void 0),[Me,Ne]=b(!1),Pe=y(null),Fe=y(null),Ie=y(null),Le=y([]),U=y({left:null,right:null}),Re=y(!1),W=y(``),{isLoading:ze,show:Be,hide:Ve}=l(600),He=ye(O,p,ie),G=ye(xe,ee,re),K=L?16:n===`grid`?He*G:16,q=v(()=>[n,(()=>{if(!F||!P)return`manual:${z}`;if(I)return`smart:newest:${P.tagIds.join(`,`)}:${P.catIds.join(`,`)}`;let e=String(P.sortRule??``);return`smart:popular:${P.tagIds.join(`,`)}:${P.catIds.join(`,`)}:sr:${e}`})(),String(K)].join(`|`),[F,z,K,P,I,n]);g(()=>{V(E),Ae(D),H(typeof T==`string`?T:void 0)},[T,D,E]);let Ue=He*G,We=C&&n===`grid`,J=We?De.slice(0,Ue):De,Ge=We?ke.slice(0,Ue):ke,Ke=n===`waterfall`?6:4,qe=J.length>0?Math.max(0,J.length-Ke):-1,Je=!!je,Ye=A&&A.trim()||ge||ne,Y=j??te,X=Number(Se??m),Z=Ce??h,Xe=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,Ze=n===`grid`?d:C?u:d,Qe=ve(k),$e=(n===`waterfall`||!L)&&!!Qe,et=$e?Qe:``,tt=n===`grid`?`flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center ${C?`opacity-100`:`opacity-50`}`,nt=`size-[16px] text-text1`,rt=s({enabled:!C&&n===`grid`,containerRef:Fe,firstRowItemRef:Le,columns:G,itemsCount:J.length,deps:[n]}),it=c({enabled:!C&&n===`waterfall`,containerRef:Pe,firstRowRef:U,deps:[n,J.length]}),at=n===`grid`?rt:it,ot=ce(async()=>{if(C||W.current===q)return;let n=me(q);if(n){V(n.items),F&&H(n.cursor);return}if(F||z){W.current=q;try{if(Be(),!F){if(!z)return;let e=await se(E);V(e),he(q,{items:e});return}if(!P)return;let n={page_size:K,tags:P.tagIds.length>0?P.tagIds:void 0,cat_ids:P.catIds.length>0?P.catIds:void 0},r=I?await e(n,{cache:`no-store`}):await t(n,{cache:`no-store`}),i=Array.isArray(r.data?.videos)?r.data.videos:[],a=r.data?.cursor;V(i),H(a),he(q,{items:i,cursor:a})}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{W.current===q&&(W.current=``),Ve()}}},[Ve,E,C,F,z,q,K,Be,P,I]);g(()=>{ot()},[ot]);let st=ce(async()=>{let n=je;if(!(!R||!n||Re.current)){Re.current=!0,Ne(!0);try{if(!P)return;let r={cursor:n,page_size:K,tags:P.tagIds.length>0?P.tagIds:void 0,cat_ids:P.catIds.length>0?P.catIds:void 0},i=I?await e(r):await t(r),a=Array.isArray(i.data?.videos)?i.data.videos:[],o=i.data?.cursor;a.length>0&&V(e=>e.concat(a)),H(e=>{if(!(!a.length||!o))return o===e?void 0:o})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),H(void 0)}finally{Re.current=!1,Ne(!1)}}},[je,K,R,P,I]);g(()=>{let e=Ie.current;if(!e||!R||!Je)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||Me||st()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[st,Je,Me,J.length,K,R,qe]),le(()=>{let e=Pe.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;we(t>0?(t-15)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let Q=v(()=>n===`waterfall`?Ee(J,Ge,B):{left:[],right:[]},[B,Ge,J,n]),ct=v(()=>n===`waterfall`?{left:Q.left.map(e=>Te(e,Y,X,Z)),right:Q.right.map(e=>Te(e,Y,X,Z))}:{left:[],right:[]},[X,Z,Y,n,Q.left,Q.right]);if(g(()=>{n===`waterfall`&&(Q.left.length||(U.current.left=null),Q.right.length||(U.current.right=null))},[n,Q.left.length,Q.right.length]),!J.length)return null;let $=!C&&ze,lt=!C&&Me,ut=at>0?at/2:160;return S(r,{className:`w-full mt-[16px]`,children:[n===`grid`&&S(r,{className:`flex items-center justify-between pl-[16px] pr-0 mb-[16px]`,children:[x(i,{className:Xe,children:Ye}),$e&&x(o,{href:et,"aria-label":`更多`,className:tt,children:x(Ze,{className:nt})})]}),n===`grid`&&S(r,{ref:Fe,className:`relative flex w-full flex-wrap items-start gap-[16px] px-[16px]`,children:[J.map((e,t)=>{let n=Ge[t],r=be(e);return x(`div`,{ref:e=>{t===qe&&(Ie.current=e),t<G&&(Le.current[t]=e)},className:`w-[calc((100%-16px)/2)]`,children:x(_e,{item:e,icon:n,index:t,showPlayCount:Y&&(r?.showPlayCount??!0),playCountDelta:r?.playCountDelta??X,showEpisode:r?.showEpisode??Z,widthStyle:{width:`100%`}})},Oe(e,t))}),$&&x(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&x(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:ut},"aria-hidden":!0,children:x(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&x(f,{title:Ye,moreHref:et||void 0,moreIcon:$e?x(Ze,{className:nt}):void 0,titleClassName:Xe,moreLinkClassName:tt,columns:ct,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:({item:e,column:t,columnIndex:n})=>r=>{e.sourceIndex===qe&&(Ie.current=r),n===0&&(U.current[t]=r)},overlay:$?S(ue,{children:[x(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),x(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:ut},"aria-hidden":!0,children:x(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}):void 0}),lt&&x(r,{className:`w-full flex justify-center py-[12px]`,children:x(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function _e({item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o}){return x(T,{item:e,icon:t,index:n,showPlayCount:r,playCountDelta:i,showEpisode:a,widthStyle:o})}function T({item:e,icon:t,index:a,showPlayCount:s,playCountDelta:c,showEpisode:l,widthStyle:u}){let d=xe(e),f=e.name||e?.title||``,ee=e.id?O(e):`#`,p=we(e,t,a),m=I(e,l),h=s?M(e.static?.browse_cnt??0,c):``;return x(o,{href:ee,className:`block w-full`,style:u,children:S(r,{className:`relative w-full overflow-hidden rounded-[8px] bg-bg3`,style:{aspectRatio:`109 / 150`},children:[d&&x(n,{src:d,alt:f||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover object-top`}),x(r,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:de,"aria-hidden":!0}),p&&x(r,{className:`absolute left-[8px] top-[8px] z-10`,children:x(E,{url:p})}),m&&x(r,{className:`absolute right-[8px] top-[10px] z-10 max-w-[56px]`,children:x(i,{as:`span`,className:`block text-right text-[10px] leading-[14px] font-medium not-italic text-text1 line-clamp-1 font-['PingFang_SC']`,children:m})}),S(r,{className:`absolute left-[8px] right-[8px] bottom-[8px] top-[78px] z-10 flex flex-col justify-end`,children:[x(r,{className:`flex min-h-[40px] w-full items-end`,children:x(i,{as:`h3`,className:`w-full line-clamp-2 text-[14px] font-medium not-italic leading-normal text-white font-['PingFang_SC']`,children:f})}),h&&S(r,{className:`flex h-[20px] items-center gap-[6px]`,children:[x(D,{className:`h-[15px] w-[12px] shrink-0`}),x(i,{as:`span`,className:`shrink-0 whitespace-nowrap text-[14px] font-normal not-italic leading-normal text-text3 font-['PingFang_SC']`,children:h})]})]})]})})}function E({url:e}){return x(n,{src:e,alt:`角标`,width:96,height:18,className:`h-[18px] w-auto max-w-[96px] object-contain`})}function D({className:e}){let t=_().replace(/:/g,``),n=`grid-heat-outer-${t}`,r=`grid-heat-highlight-left-${t}`,i=`grid-heat-highlight-right-${t}`;return S(`svg`,{viewBox:`0 0 11.9811 15`,fill:`none`,"aria-hidden":!0,className:e,children:[x(`path`,{d:`M2.94686 4.47572C4.52521 4.03871 4.39118 0.994604 4.39118 0C7.76131 0.497302 8.72372 3.31535 9.20563 4.97302C14.02 7.45953 12.568 15.9138 4.87263 14.9191C-2.42073 13.9763 -0.183446 5.34241 2.94686 4.47572Z`,fill:`url(#${n})`}),x(`path`,{d:`M5.66995 6.45327C6.82541 4.06622 5.16406 1.16037 4.20118 0C4.13684 1.21533 4.37554 3.91735 2.75432 4.45159C1.0513 5.01279 0.16048 7.16814 0 8.16274L3.26275 9.93438C3.58371 9.76861 4.51449 8.84032 5.66995 6.45327Z`,fill:`url(#${r})`,transform:`translate(0.19 0.01)`}),x(`path`,{d:`M3.55359 3.57102C2.65587 2.53581 3.298 0.846416 3.48828 0C0.514078 0.39887 -0.0720454 5.22416 0.0066677 7.58695L4.28508 8.57876C4.99512 7.12607 4.45131 4.60622 3.55359 3.57102Z`,fill:`url(#${i})`,transform:`translate(7.39 2.85)`}),S(`defs`,{children:[S(`linearGradient`,{id:n,x1:`7.35676`,y1:`1.93157`,x2:`3.49864`,y2:`15.4663`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{offset:`0.0817308`,stopColor:`#FF3F49`}),x(`stop`,{offset:`0.6`,stopColor:`#FF4D56`}),x(`stop`,{offset:`1`,stopColor:`#FFA060`})]}),S(`linearGradient`,{id:r,x1:`4.39349`,y1:`0`,x2:`0.834125`,y2:`10.4383`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFBCB5`}),x(`stop`,{offset:`0.834055`,stopColor:`#FE676F`,stopOpacity:`0`})]}),S(`linearGradient`,{id:i,x1:`2.30551`,y1:`2.82163`,x2:`0.860506`,y2:`6.96924`,gradientUnits:`userSpaceOnUse`,children:[x(`stop`,{stopColor:`#FFA49B`}),x(`stop`,{offset:`1`,stopColor:`#FE676F`,stopOpacity:`0`})]})]})]})}function O(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ve(e){return e?e.trim():``}function ye(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function be(e){return e[ae]}function xe(e){return e.img_y||e.img_x||e?.coverUrl}function k(e){return typeof e==`string`?e:``}function A(e){return typeof e==`string`?e.trim():``}function j(e){return A(e.img_type).toLowerCase()===`long`?`short`:`tall`}function Se(e,t){return t===`short`?e.img_x||e.img_y||e?.coverUrl:e.img_y||e.img_x||e?.coverUrl}function Ce(e,t){return(e.tags?.map(e=>e.name).filter(Boolean).join(` · `)??``)||(t?F(e,!0):``)}function M(e,t){let n=z(e,t);return n<=0?``:`${N(n)}热度`}function N(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e4?`${Math.floor(e/1e4)}万`:Math.floor(e).toString()}function P(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function F(e,t){return t?L(e)||B(Number(e.duration||0)):``}function I(e,t){return t?L(e):``}function L(e){if(!R(e))return``;let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}function R(e){if(Number(e.type??0)===2)return!0;let t=Number(e.episode_cnt||e.links?.length||0);return Number.isFinite(t)&&t>1}function z(e,t){let n=Number(e||0),r=Number(t||0);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,n+r)}function B(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 we(e,t,n){return k(e.badge_url)||k(t?.material_url)||``}function Te(e,t,n,r){let i=j(e.item),a=Se(e.item,i),o=e.item.name||e.item?.title||``,s=e.item.id?O(e.item):`#`,c=we(e.item,e.icon,e.index),l=Ce(e.item,r),u=t?M(e.item.static?.browse_cnt??0,n):``,d=P(e.item.score);return{key:Oe(e.item,e.index),sourceIndex:e.index,href:s,cardKind:i,coverUrl:a,title:o,badgeImageUrl:c,metaPrimaryText:l,heatText:u,score:d}}function Ee(e,t,n){let r=[],i=[],a=n<=0,o=0,s=0;return e.forEach((e,c)=>{let l=t[c];if(a){c%2==0?r.push({item:e,icon:l,index:c}):i.push({item:e,icon:l,index:c});return}let u=De(n,e);o<=s?(r.push({item:e,icon:l,index:c}),o+=u):(i.push({item:e,icon:l,index:c}),s+=u)}),{left:r,right:i}}function De(e,t){return e?(j(t)===`tall`?218:120)+16:0}function Oe(e,t){return e.id?`home-recommend-${e.id}-${t}`:`home-recommend-${t}`}export{ge as default};
@@ -1,2 +1,2 @@
1
1
 
2
- const e=`推荐`,t=1,n=2,r=10,i=6,a=!1,o=!0,s=0,c=!0,l=!1;function u(e){return e===!0?`manual-with-video-detail`:`popular`}export{l as HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE,n as HOME_RECOMMEND_DEFAULT_GRID_COLUMNS,t as HOME_RECOMMEND_DEFAULT_GRID_ROWS,s as HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA,c as HOME_RECOMMEND_DEFAULT_SHOW_EPISODE,o as HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT,a as HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED,e as HOME_RECOMMEND_DEFAULT_TITLE,i as HOME_RECOMMEND_MAX_GRID_COLUMNS,r as HOME_RECOMMEND_MAX_GRID_ROWS,u as resolveHomeRecommendFeedMode};
2
+ const e=`推荐`,t=1,n=2,r=10,i=6,a=!0,o=0,s=!0,c=!1;function l(e){return e===!0?`manual-with-video-detail`:`popular`}export{c as HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE,n as HOME_RECOMMEND_DEFAULT_GRID_COLUMNS,t as HOME_RECOMMEND_DEFAULT_GRID_ROWS,o as HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA,s as HOME_RECOMMEND_DEFAULT_SHOW_EPISODE,a as HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT,e as HOME_RECOMMEND_DEFAULT_TITLE,i as HOME_RECOMMEND_MAX_GRID_COLUMNS,r as HOME_RECOMMEND_MAX_GRID_ROWS,l as resolveHomeRecommendFeedMode};
@@ -1,2 +1,2 @@
1
1
 
2
- import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as e,HOME_RECOMMEND_DEFAULT_GRID_ROWS as t,HOME_RECOMMEND_DEFAULT_TITLE as n,HOME_RECOMMEND_MAX_GRID_COLUMNS as r,HOME_RECOMMEND_MAX_GRID_ROWS as i}from"./home-recommend-default-config.mjs";const a=`/static/components-thumb/items_cover.png`,o=`__homeRecommendCardConfig`,s=[`东野圭吾作品:11字谜案`,`诡异纸嫁衣:深夜回魂`,`夜行者档案:无声证词`,`狐面新娘:冥婚谜局`,`赤焰长歌:风雪诛心`,`山海禁术:九尾秘闻`],c=[`烧脑悬疑`,`民俗怪谈`,`悬疑推理`,`东方奇幻`,`古风权谋`,`奇诡冒险`],l=[8.9,9.1,8.7,9.3,8.8,9],u=[``,`独播`,``,`巅峰榜·历史上榜`,``,`独播`],d=Array.from({length:60},(e,t)=>{let n=t%2==0,r=s[t%s.length],i=c[t%c.length],o=l[t%l.length],d=u[t%u.length],f=d?[{id:`preview-tag-${t+1}`,name:d}]:void 0,p={browse_cnt:2242e4+t*186e3};return{id:`preview-recommend-${t+1}`,name:r,img_y:a,img_x:a,img_type:t%3==1?`long`:`short`,cat_name:i,score:o,tags:f,type:n?2:1,duration:n?0:60*(18+t),episode_cnt:n?24+t%3*6:0,static:p}});function f({variant:e,enableInfinite:t,rows:n,columns:r,items:i}){let a=Array.isArray(i)?i.length:0;return e===`grid`?a>0?a:Math.max(g(n,r),2,a):t?Math.max(8,a):e===`waterfall`?Math.max(4,a):Math.max(2,a)}function p(e){let t=Math.max(1,Math.floor(e));return Array.from({length:t},(e,t)=>{let n=d[t%d.length];return{...n,id:`preview-recommend-${t+1}`,name:n.name}})}function m(e,t,n){return t.length?e.map((e,r)=>{let i=t[r];if(!i)return e;let a=(i.contentId?n.get(i.contentId):void 0)||e,s=i.titleMode===`custom`?i.title?.trim()||a.name||e.name||``:a.name||e.name||``,c=i.coverUrl?.trim()||``,l=i.coverMode===`content`,u=l?a.img_y||a.img_x||e.img_y||e.img_x||c||``:c||a.img_y||a.img_x||e.img_y||e.img_x||``,d=l?a.img_x||a.img_y||e.img_x||e.img_y||c||``:c||a.img_x||a.img_y||e.img_x||e.img_y||``,f=a.badge_url||e.badge_url||``,p=i.badge_url??f,m=h(i,a),g=i.is_ad===!0;return{...e,...a,id:a.id||e.id||`preview-recommend-${r+1}`,name:s,img_y:u,img_x:d,is_ad:g,ad_advertise_url:g?i.ad_advertise_url?.trim()||``:void 0,ad_advertise_icon:g?i.ad_advertise_icon?.trim()||u||d||``:void 0,badge_url:p||void 0,[o]:m}}):e}function h(e,t){let n=t[o],r={showPlayCount:e.showPlayCount??n?.showPlayCount,playCountDelta:e.playCountDelta??n?.playCountDelta,showEpisode:e.showEpisode??n?.showEpisode};if(!(r.showPlayCount===void 0&&r.playCountDelta===void 0&&r.showEpisode===void 0))return r}function g(n,a){return _(n,t,1,i)*_(a,e,1,r)}function _(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(r,Math.max(n,Math.floor(i))):t}function v({variant:e,schemaTitle:t,enableInfinite:r,smartTagEnabled:i,rows:a,columns:o,items:s}){let c=new Map,l=i?[]:Array.isArray(s)?s.filter(Boolean):[],u=m(p(f({variant:e,enableInfinite:r,rows:a,columns:o,items:l})),l,c);return{title:t&&t.trim()||n,list:u,icons:[],cursor:``,show_style:void 0}}export{o as HOME_RECOMMEND_CARD_CONFIG_FIELD,v as buildHomeRecommendEditorPreviewData};
2
+ import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as e,HOME_RECOMMEND_DEFAULT_GRID_ROWS as t,HOME_RECOMMEND_DEFAULT_TITLE as n,HOME_RECOMMEND_MAX_GRID_COLUMNS as r,HOME_RECOMMEND_MAX_GRID_ROWS as i}from"./home-recommend-default-config.mjs";const a=`/static/components-thumb/items_cover.png`,o=`__homeRecommendCardConfig`,s=[`东野圭吾作品:11字谜案`,`诡异纸嫁衣:深夜回魂`,`夜行者档案:无声证词`,`狐面新娘:冥婚谜局`,`赤焰长歌:风雪诛心`,`山海禁术:九尾秘闻`],c=[`烧脑悬疑`,`民俗怪谈`,`悬疑推理`,`东方奇幻`,`古风权谋`,`奇诡冒险`],l=[8.9,9.1,8.7,9.3,8.8,9],u=[``,`独播`,``,`巅峰榜·历史上榜`,``,`独播`],d=Array.from({length:60},(e,t)=>{let n=t%2==0,r=s[t%s.length],i=c[t%c.length],o=l[t%l.length],d=u[t%u.length],f=d?[{id:`preview-tag-${t+1}`,name:d}]:void 0,p={browse_cnt:2242e4+t*186e3};return{id:`preview-recommend-${t+1}`,name:r,img_y:a,img_x:a,img_type:t%3==1?`long`:`short`,cat_name:i,score:o,tags:f,type:n?2:1,duration:n?0:60*(18+t),episode_cnt:n?24+t%3*6:0,static:p}});function f({variant:e,enableInfinite:t,rows:n,columns:r,items:i}){let a=Array.isArray(i)?i.length:0;return e===`grid`?a>0?a:Math.max(g(n,r),2,a):t?Math.max(8,a):e===`waterfall`?Math.max(4,a):Math.max(2,a)}function p(e){let t=Math.max(1,Math.floor(e));return Array.from({length:t},(e,t)=>{let n=d[t%d.length];return{...n,id:`preview-recommend-${t+1}`,name:n.name}})}function m(e,t,n){return t.length?e.map((e,r)=>{let i=t[r];if(!i)return e;let a=(i.contentId?n.get(i.contentId):void 0)||e,s=i.titleMode===`custom`?i.title?.trim()||a.name||e.name||``:a.name||e.name||``,c=i.coverUrl?.trim()||``,l=i.coverMode===`content`,u=l?a.img_y||a.img_x||e.img_y||e.img_x||c||``:c||a.img_y||a.img_x||e.img_y||e.img_x||``,d=l?a.img_x||a.img_y||e.img_x||e.img_y||c||``:c||a.img_x||a.img_y||e.img_x||e.img_y||``,f=a.badge_url||e.badge_url||``,p=i.badge_url??f,m=h(i,a),g=i.is_ad===!0;return{...e,...a,id:a.id||e.id||`preview-recommend-${r+1}`,name:s,img_y:u,img_x:d,is_ad:g,ad_advertise_url:g?i.ad_advertise_url?.trim()||``:void 0,ad_advertise_icon:g?i.ad_advertise_icon?.trim()||u||d||``:void 0,badge_url:p||void 0,[o]:m}}):e}function h(e,t){let n=t[o],r={showPlayCount:e.showPlayCount??n?.showPlayCount,playCountDelta:e.playCountDelta??n?.playCountDelta,showEpisode:e.showEpisode??n?.showEpisode};if(!(r.showPlayCount===void 0&&r.playCountDelta===void 0&&r.showEpisode===void 0))return r}function g(n,a){return _(n,t,1,i)*_(a,e,1,r)}function _(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(r,Math.max(n,Math.floor(i))):t}function v({variant:e,schemaTitle:t,enableInfinite:r,dynamicRecommendEnabled:i,rows:a,columns:o,items:s}){let c=new Map,l=i?[]:Array.isArray(s)?s.filter(Boolean):[],u=m(p(f({variant:e,enableInfinite:r,rows:a,columns:o,items:l})),l,c);return{title:t&&t.trim()||n,list:u,icons:[],cursor:``,show_style:void 0}}export{o as HOME_RECOMMEND_CARD_CONFIG_FIELD,v as buildHomeRecommendEditorPreviewData};
@@ -1,2 +1,2 @@
1
1
 
2
- function e(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===1;if(typeof e==`string`){let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`y`||t===`yes`||t===`on`}return!1}function t(t){let n=e(t.smartTagEnabled),r=Array.isArray(t.smartTagIds)?t.smartTagIds.map(e=>String(e||``).trim()).filter(Boolean):[],i=typeof t.catId==`string`?t.catId.trim():``,a=n?e(t.enableInfinite):!1,o=Array.isArray(t.items)?t.items.filter(Boolean):t.items;return{...t,smartTagEnabled:n,smartTagIds:r,catId:i,enableInfinite:a,items:o}}export{t as normalizeHomeRecommendRuntimeProps};
2
+ import{normalizeHomeRecommendSmartLayout as e}from"./home-recommend-smart-layout.mjs";function t(e){let t=e;if(t.smartLayout!==void 0&&t.smartLayout!==null)return t.smartLayout;let n=t.recommendContentConfig;if(typeof n==`object`&&n)return n;let r=t.enabled,i=t.categories,a=t.tags;if(typeof r==`boolean`&&Array.isArray(i)&&Array.isArray(a))return t}function n(e){if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===1;if(typeof e==`string`){let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`y`||t===`yes`||t===`on`}return!1}function r(r){let i=typeof r.catId==`string`?r.catId.trim():``,a=Array.isArray(r.items)?r.items.filter(Boolean):r.items,o=e(t(r)),s=o?.enabled===!0?n(r.enableInfinite):!1;return{...r,catId:i,enableInfinite:s,items:a,smartLayout:o}}export{r as normalizeHomeRecommendRuntimeProps};
@@ -1,2 +1,2 @@
1
1
 
2
- import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{resolveHomeRecommendFeedMode as t}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as n}from"./home-recommend-preview.mjs";import{batchGetHomeRecommendVideoDetailMap as r}from"./home-recommend-video-detail.mjs";function i(e){return typeof e==`string`?e.trim():``}function a(e){return typeof e==`string`?e.trim():``}function o(e){return a(e)}function s(e){return Array.isArray(e)?e.map(e=>a(e)).filter(Boolean):[]}function c(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function l(e,t){let n=e,r=i(n.video_id||e.id||e.mid)||t,a=c(n.play_count)??c(e.browse_count),o=c(n.like_count),s=c(n.collect_count),l=(Array.isArray(n.episodes)?n.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0),u=a!==void 0||o!==void 0||s!==void 0?{browse_cnt:a,like_cnt:o,collect_cnt:s}:void 0;return{id:r,mid:i(e.mid),name:e.name||``,img_x:e.img_x||``,img_y:e.img_y||``,img_type:e.img_type,cat_id:e.cat_id,cat_name:e.cat_name,status:e.status,status_text:e.status_text,show_at:e.show_at,update_status:e.update_status,description:e.description,language:e.language,director:e.director,issue_date:e.issue_date,actor:e.actor,up_user:e.up_user,time:e.time,money:e.money,source_username:e.source_username,task_id:e.task_id,error_msg:e.error_msg,file_status:e.file_status,score:c(e.score)??void 0,duration:c(e.duration)??void 0,episode_cnt:l>0?l:void 0,type:e.is_more_link?2:1,static:u}}function u(e){let t={showPlayCount:e.showPlayCount,playCountDelta:e.playCountDelta,showEpisode:e.showEpisode};if(!(t.showPlayCount===void 0&&t.playCountDelta===void 0&&t.showEpisode===void 0))return t}function d(e,t){let r=a(t.coverUrl),i=t.coverMode===`content`?e.img_y||e.img_x||r||``:r||e.img_y||e.img_x||``,o=a(t.title),s=t.titleMode===`custom`||o&&t.titleMode!==`content`?o:e.name||``,c=a(t.description),l=a(t.badge_url),d=u(t);return{...e,name:s||e.name,img_y:i||e.img_y||e.img_x,img_x:i||e.img_x||e.img_y,description:c||e.description,badge_url:l||e.badge_url,[n]:d}}function f(e){let t=i(e.contentId),n=a(e.coverUrl),r=a(e.title),o=a(e.description);return{id:t,mid:t,name:r||``,img_x:n,img_y:n,description:o,type:1}}async function p(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:i(e.contentId)})),n=t.filter(e=>!!e.contentId).map(e=>({id:e.contentId})),a=n.length?await r(n):new Map;return t.map(e=>{let t=e.contentId?a.get(e.contentId):void 0;return d(t?l(t,e.contentId||``):f(e),e)})}async function m(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:i(e.contentId)})).filter(e=>!!e.contentId);if(!t.length)return[];let n=await r(t.map(e=>({id:e.contentId})));return t.map(e=>{let t=n.get(e.contentId||``);return d(t?l(t,e.contentId||``):f(e),e)})}async function h(t,n,r){let a=Math.max(1,Math.floor(Number(t)||16)),c=s(n),l=o(r);try{let t=[],n=new Set,r=new Set,o=``;for(;t.length<a;){let s=o||`__first__`;if(r.has(s))break;r.add(s);let u=await e({cursor:o||void 0,page_size:a-t.length,tags:c.length>0?c:void 0,cat_id:l||void 0}),d=Array.isArray(u.data?.videos)?u.data.videos:[];d.forEach(e=>{let r=i(e?.id||e?.mid);r&&n.has(r)||(r&&n.add(r),t.push(e))});let f=u.data?.cursor??``;if(!f||!d.length){o=``;break}o=f}return{videos:t.slice(0,a),nextCursor:o,loaded:!0}}catch(e){return console.error(`推荐位获取热门视频失败(server)`,e),{videos:[],nextCursor:``,loaded:!1}}}async function g({smartTagEnabled:e,smartTagIds:n,catId:r,pageSize:i=16,items:a=[]}){let c=t(e),l=e===!0?s(n):[],u=o(r),d=Array.isArray(a)&&a.length>0,f={list:[],icons:[],title:``,cursor:``,show_style:void 0};if(e!==!0)return d?{feedMode:c,data:{...f,list:await p(a),cursor:``}}:{feedMode:c,data:{...f,list:[],cursor:``}};if(c===`manual-with-video-detail`){let e=await h(i,l,u);if(e.loaded)return{feedMode:c,data:{...f,list:e.videos,cursor:e.nextCursor}};try{let e=await m(a);return{feedMode:c,data:{...f,list:e,cursor:``}}}catch(e){return console.error(`推荐位智能铺设补齐视频详情失败(server)`,e),{feedMode:c,data:{...f,list:[],cursor:``}}}}return{feedMode:c,data:f}}export{g as resolveHomeRecommendServerData};
2
+ import{pContentGetNewstVideoList as e,pContentGetPopularVideoList as t}from"../../../../../service/generated/client.mjs";import{resolveHomeRecommendFeedMode as n}from"./home-recommend-default-config.mjs";import{HOME_RECOMMEND_CARD_CONFIG_FIELD as r}from"./home-recommend-preview.mjs";import{isHomeRecommendLatestSortRule as i}from"./home-recommend-smart-layout.mjs";import{batchGetHomeRecommendVideoDetailMap as a}from"./home-recommend-video-detail.mjs";function o(e){return typeof e==`string`?e.trim():``}function s(e){return typeof e==`string`?e.trim():``}function c(e){return Array.isArray(e)?e.map(e=>s(e)).filter(Boolean):[]}function l(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function u(e,t){let n=e,r=o(n.video_id||e.id||e.mid)||t,i=l(n.play_count)??l(e.browse_count),a=l(n.like_count),s=l(n.collect_count),c=(Array.isArray(n.episodes)?n.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0),u=i!==void 0||a!==void 0||s!==void 0?{browse_cnt:i,like_cnt:a,collect_cnt:s}:void 0;return{id:r,mid:o(e.mid),name:e.name||``,img_x:e.img_x||``,img_y:e.img_y||``,img_type:e.img_type,cat_id:e.cat_id,cat_name:e.cat_name,status:e.status,status_text:e.status_text,show_at:e.show_at,update_status:e.update_status,description:e.description,language:e.language,director:e.director,issue_date:e.issue_date,actor:e.actor,up_user:e.up_user,time:e.time,money:e.money,source_username:e.source_username,task_id:e.task_id,error_msg:e.error_msg,file_status:e.file_status,score:l(e.score)??void 0,duration:l(e.duration)??void 0,episode_cnt:c>0?c:void 0,type:e.is_more_link?2:1,static:u}}function d(e){let t={showPlayCount:e.showPlayCount,playCountDelta:e.playCountDelta,showEpisode:e.showEpisode};if(!(t.showPlayCount===void 0&&t.playCountDelta===void 0&&t.showEpisode===void 0))return t}function f(e,t){let n=s(t.coverUrl),i=t.coverMode===`content`?e.img_y||e.img_x||n||``:n||e.img_y||e.img_x||``,a=s(t.title),o=t.titleMode===`custom`||a&&t.titleMode!==`content`?a:e.name||``,c=s(t.description),l=s(t.badge_url),u=d(t);return{...e,name:o||e.name,img_y:i||e.img_y||e.img_x,img_x:i||e.img_x||e.img_y,description:c||e.description,badge_url:l||e.badge_url,[r]:u}}function p(e){let t=o(e.contentId),n=s(e.coverUrl),r=s(e.title),i=s(e.description);return{id:t,mid:t,name:r||``,img_x:n,img_y:n,description:i,type:1}}async function m(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:o(e.contentId)})),n=t.filter(e=>!!e.contentId).map(e=>({id:e.contentId})),r=n.length?await a(n):new Map;return t.map(e=>{let t=e.contentId?r.get(e.contentId):void 0;return f(t?u(t,e.contentId||``):p(e),e)})}async function h(e){let t=(Array.isArray(e)?e:[]).map(e=>({...e,contentId:o(e.contentId)})).filter(e=>!!e.contentId);if(!t.length)return[];let n=await a(t.map(e=>({id:e.contentId})));return t.map(e=>{let t=n.get(e.contentId||``);return f(t?u(t,e.contentId||``):p(e),e)})}async function g(t,n,r){let i=Math.max(1,Math.floor(Number(t)||16)),a=c(n),l=(Array.isArray(r)?r:[]).map(e=>s(e)).filter(Boolean);try{let t=[],n=new Set,r=new Set,s=``;for(;t.length<i;){let c=s||`__first__`;if(r.has(c))break;r.add(c);let u=await e({cursor:s||void 0,page_size:i-t.length,tags:a.length>0?a:void 0,cat_ids:l.length>0?l:void 0}),d=Array.isArray(u.data?.videos)?u.data.videos:[];d.forEach(e=>{let r=o(e?.id||e?.mid);r&&n.has(r)||(r&&n.add(r),t.push(e))});let f=u.data?.cursor??``;if(!f||!d.length){s=``;break}s=f}return{videos:t.slice(0,i),nextCursor:s,loaded:!0}}catch(e){return console.error(`推荐位获取最新视频失败(server)`,e),{videos:[],nextCursor:``,loaded:!1}}}async function _(e,n,r){let i=Math.max(1,Math.floor(Number(e)||16)),a=c(n),l=(Array.isArray(r)?r:[]).map(e=>s(e)).filter(Boolean);try{let e=[],n=new Set,r=new Set,s=``;for(;e.length<i;){let c=s||`__first__`;if(r.has(c))break;r.add(c);let u=await t({cursor:s||void 0,page_size:i-e.length,tags:a.length>0?a:void 0,cat_ids:l.length>0?l:void 0}),d=Array.isArray(u.data?.videos)?u.data.videos:[];d.forEach(t=>{let r=o(t?.id||t?.mid);r&&n.has(r)||(r&&n.add(r),e.push(t))});let f=u.data?.cursor??``;if(!f||!d.length){s=``;break}s=f}return{videos:e.slice(0,i),nextCursor:s,loaded:!0}}catch(e){return console.error(`推荐位获取热门视频失败(server)`,e),{videos:[],nextCursor:``,loaded:!1}}}async function v({enableInfinite:e,pageSize:t=16,items:r=[],smartLayout:a}){let o=a?.enabled===!0,s=n(o),c=Array.isArray(r)&&r.length>0,l={list:[],icons:[],title:``,cursor:``,show_style:void 0};if(!o)return c?{feedMode:s,data:{...l,list:await m(r),cursor:``}}:{feedMode:s,data:{...l,list:[],cursor:``}};if(s===`manual-with-video-detail`&&a){let n=i(a.sortRule)?await g(t,a.tagIds,a.catIds):await _(t,a.tagIds,a.catIds);if(n.loaded){let t=e===!0;return{feedMode:s,data:{...l,list:n.videos,cursor:t?n.nextCursor:``}}}try{let e=await h(r);return{feedMode:s,data:{...l,list:e,cursor:``}}}catch(e){return console.error(`推荐位智能铺设补齐视频详情失败(server)`,e),{feedMode:s,data:{...l,list:[],cursor:``}}}}return{feedMode:s,data:l}}export{v as resolveHomeRecommendServerData};
@@ -0,0 +1,2 @@
1
+
2
+ import e from"zod";const t=e.object({enabled:e.boolean().optional(),categories:e.array(e.any()).optional(),tags:e.array(e.any()).optional(),sortRule:e.string().optional(),contentForms:e.array(e.string()).optional()}).passthrough();function n(e){return String(e??``).trim().toLowerCase()===`latest`}function r(e){if(!e||typeof e!=`object`)return``;let t=e,n=t.ID!==void 0&&t.ID!==null?t.ID:t.id;return n==null?``:String(n).trim()}function i(e){if(!e||typeof e!=`object`)return``;let t=e.name;return t==null?``:String(t).trim()}function a(e){if(e==null)return;let n=e;if(typeof e==`string`){let t=e.trim();if(!t)return;try{n=JSON.parse(t)}catch{return}}if(typeof n!=`object`||!n||Array.isArray(n))return;let a=t.safeParse(n);if(!a.success)return;let o=a.data,s=Array.isArray(o.categories)?o.categories.map(r).filter(Boolean):[],c=Array.isArray(o.tags)?o.tags.map(i).filter(Boolean):[];return{enabled:o.enabled===!0,tagIds:c,catIds:s,sortRule:typeof o.sortRule==`string`?o.sortRule:void 0,contentForms:Array.isArray(o.contentForms)?o.contentForms.map(e=>String(e||``).trim()).filter(Boolean):void 0}}export{t as homeRecommendSmartLayoutSchema,n as isHomeRecommendLatestSortRule,a as normalizeHomeRecommendSmartLayout};
@@ -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{useCallback as r,useId as i,useMemo as a,useRef as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{usePathname as u,useSearchParams as d}from"next/navigation";const f=[];function p(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 m({className:e=``}){let t=i().replace(/:/g,``);return l(`svg`,{viewBox:`0 0 62.4481 14.192`,fill:`none`,"aria-hidden":!0,className:e,children:[l(`g`,{children:[c(`path`,{d:`M50.7201 4V3.04H47.9841V0.768H50.7201V0H53.3281V0.768H57.1201V0H59.7441V0.768H62.4481V3.04H59.7441V4H57.1201V3.04H53.3281V4H50.7201ZM48.1281 8.32C48.4587 8.32 48.8054 8.27733 49.1681 8.192C49.5307 8.096 49.8934 7.968 50.2561 7.808C50.6294 7.63733 50.9867 7.43467 51.3281 7.2C51.6801 6.95467 52.0054 6.688 52.3041 6.4H48.3041V4.464H53.5681C53.7067 4.112 53.7761 3.72267 53.7761 3.296H56.4641C56.4641 3.68 56.4107 4.06933 56.3041 4.464H62.1121V6.4H55.5041C55.4401 6.51733 55.3707 6.62933 55.2961 6.736C55.2321 6.832 55.1574 6.93867 55.0721 7.056H61.1841V7.536C61.1841 7.94133 61.1147 8.33067 60.9761 8.704C60.8481 9.07733 60.5921 9.39733 60.2081 9.664H62.3041V11.488H59.2801V11.696C59.2801 12.1653 59.2267 12.5547 59.1201 12.864C59.0134 13.1733 58.8534 13.4187 58.6401 13.6C58.4267 13.792 58.1601 13.9253 57.8401 14C57.5201 14.0747 57.1521 14.112 56.7361 14.112H54.7361V12.432H55.2481C55.5894 12.4213 55.8561 12.4 56.0481 12.368C56.2507 12.336 56.4001 12.288 56.4961 12.224C56.6027 12.16 56.6721 12.0853 56.7041 12C56.7361 11.9147 56.7521 11.8133 56.7521 11.696V11.488H53.2161V9.664H56.7521V9.44C57.2321 9.44 57.6267 9.39733 57.9361 9.312C58.2454 9.216 58.4747 9.04 58.6241 8.784H54.4641V7.856C54.1547 8.208 53.8187 8.544 53.4561 8.864C53.1041 9.17333 52.7254 9.456 52.3201 9.712V14.176H49.7761V10.784C49.2534 10.912 48.7041 10.976 48.1281 10.976V8.32Z`,fill:`url(#${t})`}),c(`path`,{d:`M40.3361 0.0159912C40.3361 0.805325 40.2614 1.53066 40.1121 2.19199H46.3841V4.28799H44.3361V5.45599H46.1601V7.31199H44.3361V8.47999H46.1601V10.352H44.3361V11.648H46.4961V13.968H40.1121V14.192H37.5681V5.63199C37.3441 5.69599 37.1201 5.72799 36.8961 5.72799V2.92799C37.2694 2.92799 37.5361 2.68799 37.6961 2.20799C37.8561 1.72799 37.9361 0.997325 37.9361 0.0159912H40.3361ZM33.2641 0.0159912H35.6641V2.20799H36.6721V4.57599H35.6641V6.20799L36.6881 6.09599V8.47999L35.6641 8.62399V10.992C35.6641 11.408 35.6427 11.8027 35.6001 12.176C35.5574 12.56 35.4507 12.8907 35.2801 13.168C35.1201 13.456 34.8801 13.68 34.5601 13.84C34.2401 14.0107 33.8081 14.096 33.2641 14.096H32.1921V11.872H32.6241C32.9014 11.872 33.0774 11.7973 33.1521 11.648C33.2267 11.488 33.2641 11.184 33.2641 10.736V8.97599L31.9841 9.15199V6.63999L33.2641 6.49599V4.57599H32.0641V2.20799H33.2641V0.0159912ZM41.6001 0.0159912H44.4161L44.4641 1.90399H41.6481L41.6001 0.0159912ZM40.1121 5.45599H41.8881V4.28799H40.1121V5.45599ZM40.1121 8.47999H41.8881V7.31199H40.1121V8.47999ZM40.1121 11.648H41.8881V10.352H40.1121V11.648Z`,fill:`url(#${t})`}),c(`path`,{d:`M16.6721 2.49599L16.6081 0.0159912H19.8401L19.9041 2.49599H16.6721ZM24.9601 14.192V11.68H25.7121C26.0427 11.68 26.2987 11.6587 26.4801 11.616C26.6721 11.5733 26.8161 11.4987 26.9121 11.392C27.0081 11.2747 27.0667 11.12 27.0881 10.928C27.1094 10.736 27.1201 10.4907 27.1201 10.192V2.68799H20.8001V0.175991H29.9521V10.448C29.9521 11.2267 29.8827 11.8613 29.7441 12.352C29.6161 12.8427 29.3921 13.2213 29.0721 13.488C28.7521 13.7653 28.3201 13.952 27.7761 14.048C27.2321 14.144 26.5494 14.192 25.7281 14.192H24.9601ZM16.5441 14.192V3.23199H19.3761V14.192H16.5441Z`,fill:`url(#${t})`}),c(`path`,{d:`M6.48499e-05 7.18399V5.10399L1.87206 5.02399V3.82399H0.176065V1.45599H1.87206V0.0159912H4.25607V1.45599H6.00007V3.82399H4.25607V4.91199L5.84007 4.84799V6.92799L4.25607 6.99199V8.36799C4.25607 8.73066 4.22407 9.06132 4.16007 9.35999C4.09607 9.65866 3.97873 9.91466 3.80806 10.128C3.64807 10.3413 3.41873 10.5067 3.12007 10.624C2.83207 10.7413 2.45873 10.8 2.00006 10.8H0.592065V8.68799H1.05606C1.24806 8.68799 1.3974 8.66666 1.50406 8.62399C1.6214 8.58132 1.70673 8.52266 1.76006 8.44799C1.8134 8.36266 1.8454 8.26666 1.85606 8.15999C1.86673 8.04266 1.87206 7.91999 1.87206 7.79199V7.10399L6.48499e-05 7.18399ZM13.8081 10.864C12.7627 10.864 12.0054 10.624 11.5361 10.144C11.0774 9.66399 10.8481 8.86933 10.8481 7.75999V3.82399H9.84007V4.87999V5.02399H10.5121V6.68799H9.76007C9.6854 7.46666 9.55206 8.12266 9.36006 8.65599C9.17873 9.18932 8.9174 9.62133 8.57607 9.95199C8.2454 10.2827 7.8294 10.5227 7.32807 10.672C6.82673 10.8213 6.2294 10.896 5.53607 10.896V8.79999C5.8774 8.79999 6.1654 8.76799 6.40007 8.70399C6.6454 8.63999 6.84273 8.52799 6.99207 8.36799C7.1414 8.20799 7.25873 7.99466 7.34407 7.72799C7.4294 7.45066 7.48807 7.10399 7.52007 6.68799H6.35207V5.02399H7.58406V4.84799V3.82399H6.44807V1.45599H7.60007V0.0159912H9.85606V1.45599H13.2321V7.24799C13.2321 7.66399 13.2747 7.92533 13.3601 8.03199C13.4561 8.13866 13.6321 8.19199 13.8881 8.19199H14.3521V10.864H13.8081ZM0.144065 14.192L0.256065 11.232H3.21606L3.10406 14.192H0.144065ZM11.3921 14.192L11.2481 11.232H14.2241L14.3681 14.192H11.3921ZM4.17606 14.192L4.03207 11.296H6.73607L6.86407 14.192H4.17606ZM7.77607 14.192L7.63207 11.296H10.3841L10.5121 14.192H7.77607Z`,fill:`url(#${t})`})]}),c(`defs`,{children:l(`linearGradient`,{id:t,x1:`33.7161`,y1:`-4.59601`,x2:`60.7161`,y2:`18.404`,gradientUnits:`userSpaceOnUse`,children:[c(`stop`,{stopColor:`#E914E9`}),c(`stop`,{offset:`1`,stopColor:`#6C43EE`})]})})]})}function h({className:e=``}){return c(`svg`,{viewBox:`0 0 16.6667 16.6667`,fill:`none`,"aria-hidden":!0,className:e,children:c(`path`,{d:`M8.33333 1.66667C6.04287 1.66667 4.0209 2.82188 2.82036 4.58333H5V6.25H0V1.25H1.66667V3.3328C3.18651 1.30972 5.60637 0 8.33333 0C12.9357 0 16.6667 3.73096 16.6667 8.33333H15C15 4.65143 12.0152 1.66667 8.33333 1.66667ZM1.66667 8.33333C1.66667 12.0152 4.65143 15 8.33333 15C10.6238 15 12.6458 13.8447 13.8463 12.0833H11.6667V10.4167H16.6667V15.4167H15V13.3338C13.4802 15.3569 11.0603 16.6667 8.33333 16.6667C3.73096 16.6667 0 12.9357 0 8.33333H1.66667Z`,fill:`currentColor`})})}function g({variant:e,className:t=``}){let n=i().replace(/:/g,``),r=e===`gold`?`#FFF047`:`#D7D7D7`;return l(`svg`,{viewBox:`0 0 10 8`,fill:`none`,"aria-hidden":!0,className:t,children:[c(`path`,{d:`M0.72289 1.44405L2.67531 2.6057L4.62168 0.173795C4.77092 -0.0126857 5.06132 -0.0558774 5.27027 0.0773202C5.31202 0.103935 5.34852 0.136533 5.37837 0.173795L7.32476 2.6057L9.27714 1.44405C9.49083 1.31693 9.77946 1.36845 9.92192 1.55913C9.98315 1.64113 10.0097 1.73991 9.99682 1.83779L9.23283 7.63352C9.20526 7.84249 9.00682 8 8.77105 8H1.22899C0.99323 8 0.794784 7.84249 0.767236 7.63352L0.00322932 1.83779C-0.0267734 1.61019 0.155642 1.40398 0.410663 1.3772C0.520333 1.36569 0.631013 1.38938 0.72289 1.44405ZM5.00005 5.51033C5.51357 5.51033 5.92993 5.13878 5.92993 4.68043C5.92993 4.22209 5.51357 3.85054 5.00005 3.85054C4.48647 3.85054 4.07016 4.22209 4.07016 4.68043C4.07016 5.13878 4.48647 5.51033 5.00005 5.51033Z`,fill:`url(#${n})`}),c(`defs`,{children:l(`linearGradient`,{id:n,x1:`5`,y1:`0`,x2:`5`,y2:`8`,gradientUnits:`userSpaceOnUse`,children:[c(`stop`,{stopColor:r}),c(`stop`,{offset:`1`,stopColor:r,stopOpacity:`0`})]})})]})}function _(i){let{title:_,displayCount:v=4,items:y=f,onItemClick:b,mode:x=`renderer`}=i,S=x===`editor`,C=e(),w=u(),T=d(),E=_.trim()||`热门推荐`,D=Math.max(1,v||0),[O,k]=s(0),[A,j]=s(!1),M=o(null),N=r(()=>{A||(j(!0),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{k(e=>e+1),j(!1),M.current=null},500))},[A]),P=a(()=>p(y,D),[D,y,O]);if(y.length===0)return null;let F=e=>{if(b){b(e);return}let t=new URLSearchParams(T.toString());t.set(`q`,e);let n=w.includes(`/search-result`)?w:`/search-result`;C.push(`${n}?${t.toString()}`)};return l(t,{className:`relative mx-[16px] mt-[24px] overflow-hidden rounded-[12px] bg-black${S?` pointer-events-none`:``}`,children:[c(t,{className:`pointer-events-none absolute inset-0 rounded-[12px]`,style:{background:`linear-gradient(180deg, #9756E3 0%, #6C43EE 100%), linear-gradient(180deg, rgba(255,30,255,0.7) 0%, rgba(108,67,238,0) 100%)`,padding:`0.5px`,WebkitMask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,WebkitMaskComposite:`xor`,mask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,maskComposite:`exclude`}}),c(t,{className:`pointer-events-none absolute inset-x-0 top-0 rounded-t-[12px] mix-blend-plus-lighter`,style:{height:`259px`,background:`linear-gradient(180deg, rgba(151,86,227,0.4) 0%, rgba(151,86,227,0) 85%)`}}),l(t,{className:`relative px-[24px] pb-[18px] pt-[22px]`,children:[l(t,{className:`flex items-center justify-between`,children:[E===`热门推荐`?c(m,{className:`h-[14.192px] w-[62.448px] shrink-0`}):c(n,{className:`shrink-0 bg-[linear-gradient(90deg,#E914E9_0%,#6C43EE_100%)] bg-clip-text font-["PingFang_SC"] text-[16px] font-semibold leading-none text-transparent`,children:E}),c(`button`,{type:`button`,"aria-label":`刷新`,className:`flex h-[20px] w-[20px] shrink-0 items-center justify-center text-white/40 transition-opacity active:opacity-70`,onClick:N,children:c(h,{className:`h-[16.6667px] w-[16.6667px] ${A?`animate-spin`:``}`})})]}),c(t,{className:`mt-[7px]`,children:P.map((e,r)=>{let i=r<3,a=r<2,o=i?`text-[#C922EF]`:`text-white/70`,s=i?`text-white/90`:`text-white/70`;return l(t,{children:[l(`button`,{type:`button`,className:`flex h-[48px] w-full items-center gap-[4px] text-left transition-opacity active:opacity-70`,onClick:()=>F(e.label),children:[l(t,{className:`relative flex h-[24px] w-[20px] shrink-0 items-end justify-center`,children:[a?c(g,{variant:r===0?`gold`:`silver`,className:`absolute left-1/2 top-0 h-[8px] w-[10px] -translate-x-1/2`}):null,c(n,{className:`font-['DIN_Black'] text-[14px] font-normal not-italic leading-[24px] ${o}`,children:r+1})]}),c(n,{className:`min-w-0 flex-1 truncate font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] ${s}`,children:e.label})]}),r<P.length-1?c(t,{className:`h-px w-full bg-white/[0.08]`}):null]},`${e.label}-${r}`)})})]})]})}export{_ as HotRecommendClient};
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{useCallback as o,useId as s,useMemo as c,useRef as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{usePathname as p,useSearchParams as m}from"next/navigation";import{useShallow as h}from"zustand/react/shallow";function g(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 _({className:e=``}){let t=s().replace(/:/g,``);return f(`svg`,{viewBox:`0 0 62.4481 14.192`,fill:`none`,"aria-hidden":!0,className:e,children:[f(`g`,{children:[d(`path`,{d:`M50.7201 4V3.04H47.9841V0.768H50.7201V0H53.3281V0.768H57.1201V0H59.7441V0.768H62.4481V3.04H59.7441V4H57.1201V3.04H53.3281V4H50.7201ZM48.1281 8.32C48.4587 8.32 48.8054 8.27733 49.1681 8.192C49.5307 8.096 49.8934 7.968 50.2561 7.808C50.6294 7.63733 50.9867 7.43467 51.3281 7.2C51.6801 6.95467 52.0054 6.688 52.3041 6.4H48.3041V4.464H53.5681C53.7067 4.112 53.7761 3.72267 53.7761 3.296H56.4641C56.4641 3.68 56.4107 4.06933 56.3041 4.464H62.1121V6.4H55.5041C55.4401 6.51733 55.3707 6.62933 55.2961 6.736C55.2321 6.832 55.1574 6.93867 55.0721 7.056H61.1841V7.536C61.1841 7.94133 61.1147 8.33067 60.9761 8.704C60.8481 9.07733 60.5921 9.39733 60.2081 9.664H62.3041V11.488H59.2801V11.696C59.2801 12.1653 59.2267 12.5547 59.1201 12.864C59.0134 13.1733 58.8534 13.4187 58.6401 13.6C58.4267 13.792 58.1601 13.9253 57.8401 14C57.5201 14.0747 57.1521 14.112 56.7361 14.112H54.7361V12.432H55.2481C55.5894 12.4213 55.8561 12.4 56.0481 12.368C56.2507 12.336 56.4001 12.288 56.4961 12.224C56.6027 12.16 56.6721 12.0853 56.7041 12C56.7361 11.9147 56.7521 11.8133 56.7521 11.696V11.488H53.2161V9.664H56.7521V9.44C57.2321 9.44 57.6267 9.39733 57.9361 9.312C58.2454 9.216 58.4747 9.04 58.6241 8.784H54.4641V7.856C54.1547 8.208 53.8187 8.544 53.4561 8.864C53.1041 9.17333 52.7254 9.456 52.3201 9.712V14.176H49.7761V10.784C49.2534 10.912 48.7041 10.976 48.1281 10.976V8.32Z`,fill:`url(#${t})`}),d(`path`,{d:`M40.3361 0.0159912C40.3361 0.805325 40.2614 1.53066 40.1121 2.19199H46.3841V4.28799H44.3361V5.45599H46.1601V7.31199H44.3361V8.47999H46.1601V10.352H44.3361V11.648H46.4961V13.968H40.1121V14.192H37.5681V5.63199C37.3441 5.69599 37.1201 5.72799 36.8961 5.72799V2.92799C37.2694 2.92799 37.5361 2.68799 37.6961 2.20799C37.8561 1.72799 37.9361 0.997325 37.9361 0.0159912H40.3361ZM33.2641 0.0159912H35.6641V2.20799H36.6721V4.57599H35.6641V6.20799L36.6881 6.09599V8.47999L35.6641 8.62399V10.992C35.6641 11.408 35.6427 11.8027 35.6001 12.176C35.5574 12.56 35.4507 12.8907 35.2801 13.168C35.1201 13.456 34.8801 13.68 34.5601 13.84C34.2401 14.0107 33.8081 14.096 33.2641 14.096H32.1921V11.872H32.6241C32.9014 11.872 33.0774 11.7973 33.1521 11.648C33.2267 11.488 33.2641 11.184 33.2641 10.736V8.97599L31.9841 9.15199V6.63999L33.2641 6.49599V4.57599H32.0641V2.20799H33.2641V0.0159912ZM41.6001 0.0159912H44.4161L44.4641 1.90399H41.6481L41.6001 0.0159912ZM40.1121 5.45599H41.8881V4.28799H40.1121V5.45599ZM40.1121 8.47999H41.8881V7.31199H40.1121V8.47999ZM40.1121 11.648H41.8881V10.352H40.1121V11.648Z`,fill:`url(#${t})`}),d(`path`,{d:`M16.6721 2.49599L16.6081 0.0159912H19.8401L19.9041 2.49599H16.6721ZM24.9601 14.192V11.68H25.7121C26.0427 11.68 26.2987 11.6587 26.4801 11.616C26.6721 11.5733 26.8161 11.4987 26.9121 11.392C27.0081 11.2747 27.0667 11.12 27.0881 10.928C27.1094 10.736 27.1201 10.4907 27.1201 10.192V2.68799H20.8001V0.175991H29.9521V10.448C29.9521 11.2267 29.8827 11.8613 29.7441 12.352C29.6161 12.8427 29.3921 13.2213 29.0721 13.488C28.7521 13.7653 28.3201 13.952 27.7761 14.048C27.2321 14.144 26.5494 14.192 25.7281 14.192H24.9601ZM16.5441 14.192V3.23199H19.3761V14.192H16.5441Z`,fill:`url(#${t})`}),d(`path`,{d:`M6.48499e-05 7.18399V5.10399L1.87206 5.02399V3.82399H0.176065V1.45599H1.87206V0.0159912H4.25607V1.45599H6.00007V3.82399H4.25607V4.91199L5.84007 4.84799V6.92799L4.25607 6.99199V8.36799C4.25607 8.73066 4.22407 9.06132 4.16007 9.35999C4.09607 9.65866 3.97873 9.91466 3.80806 10.128C3.64807 10.3413 3.41873 10.5067 3.12007 10.624C2.83207 10.7413 2.45873 10.8 2.00006 10.8H0.592065V8.68799H1.05606C1.24806 8.68799 1.3974 8.66666 1.50406 8.62399C1.6214 8.58132 1.70673 8.52266 1.76006 8.44799C1.8134 8.36266 1.8454 8.26666 1.85606 8.15999C1.86673 8.04266 1.87206 7.91999 1.87206 7.79199V7.10399L6.48499e-05 7.18399ZM13.8081 10.864C12.7627 10.864 12.0054 10.624 11.5361 10.144C11.0774 9.66399 10.8481 8.86933 10.8481 7.75999V3.82399H9.84007V4.87999V5.02399H10.5121V6.68799H9.76007C9.6854 7.46666 9.55206 8.12266 9.36006 8.65599C9.17873 9.18932 8.9174 9.62133 8.57607 9.95199C8.2454 10.2827 7.8294 10.5227 7.32807 10.672C6.82673 10.8213 6.2294 10.896 5.53607 10.896V8.79999C5.8774 8.79999 6.1654 8.76799 6.40007 8.70399C6.6454 8.63999 6.84273 8.52799 6.99207 8.36799C7.1414 8.20799 7.25873 7.99466 7.34407 7.72799C7.4294 7.45066 7.48807 7.10399 7.52007 6.68799H6.35207V5.02399H7.58406V4.84799V3.82399H6.44807V1.45599H7.60007V0.0159912H9.85606V1.45599H13.2321V7.24799C13.2321 7.66399 13.2747 7.92533 13.3601 8.03199C13.4561 8.13866 13.6321 8.19199 13.8881 8.19199H14.3521V10.864H13.8081ZM0.144065 14.192L0.256065 11.232H3.21606L3.10406 14.192H0.144065ZM11.3921 14.192L11.2481 11.232H14.2241L14.3681 14.192H11.3921ZM4.17606 14.192L4.03207 11.296H6.73607L6.86407 14.192H4.17606ZM7.77607 14.192L7.63207 11.296H10.3841L10.5121 14.192H7.77607Z`,fill:`url(#${t})`})]}),d(`defs`,{children:f(`linearGradient`,{id:t,x1:`33.7161`,y1:`-4.59601`,x2:`60.7161`,y2:`18.404`,gradientUnits:`userSpaceOnUse`,children:[d(`stop`,{stopColor:`#E914E9`}),d(`stop`,{offset:`1`,stopColor:`#6C43EE`})]})})]})}function v({className:e=``}){return d(`svg`,{viewBox:`0 0 16.6667 16.6667`,fill:`none`,"aria-hidden":!0,className:e,children:d(`path`,{d:`M8.33333 1.66667C6.04287 1.66667 4.0209 2.82188 2.82036 4.58333H5V6.25H0V1.25H1.66667V3.3328C3.18651 1.30972 5.60637 0 8.33333 0C12.9357 0 16.6667 3.73096 16.6667 8.33333H15C15 4.65143 12.0152 1.66667 8.33333 1.66667ZM1.66667 8.33333C1.66667 12.0152 4.65143 15 8.33333 15C10.6238 15 12.6458 13.8447 13.8463 12.0833H11.6667V10.4167H16.6667V15.4167H15V13.3338C13.4802 15.3569 11.0603 16.6667 8.33333 16.6667C3.73096 16.6667 0 12.9357 0 8.33333H1.66667Z`,fill:`currentColor`})})}function y({variant:e,className:t=``}){let n=s().replace(/:/g,``),r=e===`gold`?`#FFF047`:`#D7D7D7`;return f(`svg`,{viewBox:`0 0 10 8`,fill:`none`,"aria-hidden":!0,className:t,children:[d(`path`,{d:`M0.72289 1.44405L2.67531 2.6057L4.62168 0.173795C4.77092 -0.0126857 5.06132 -0.0558774 5.27027 0.0773202C5.31202 0.103935 5.34852 0.136533 5.37837 0.173795L7.32476 2.6057L9.27714 1.44405C9.49083 1.31693 9.77946 1.36845 9.92192 1.55913C9.98315 1.64113 10.0097 1.73991 9.99682 1.83779L9.23283 7.63352C9.20526 7.84249 9.00682 8 8.77105 8H1.22899C0.99323 8 0.794784 7.84249 0.767236 7.63352L0.00322932 1.83779C-0.0267734 1.61019 0.155642 1.40398 0.410663 1.3772C0.520333 1.36569 0.631013 1.38938 0.72289 1.44405ZM5.00005 5.51033C5.51357 5.51033 5.92993 5.13878 5.92993 4.68043C5.92993 4.22209 5.51357 3.85054 5.00005 3.85054C4.48647 3.85054 4.07016 4.22209 4.07016 4.68043C4.07016 5.13878 4.48647 5.51033 5.00005 5.51033Z`,fill:`url(#${n})`}),d(`defs`,{children:f(`linearGradient`,{id:n,x1:`5`,y1:`0`,x2:`5`,y2:`8`,gradientUnits:`userSpaceOnUse`,children:[d(`stop`,{stopColor:r}),d(`stop`,{offset:`1`,stopColor:r,stopOpacity:`0`})]})})]})}function b(s){let{title:b,displayCount:x=4,showRefresh:S=!1,onItemClick:C,mode:w=`renderer`}=s,T=w===`editor`,E=n(),D=p(),O=m(),k=b.trim()||`热门推荐`,A=Math.max(1,x||0),[j,M]=u(0),[N,P]=u(!1),F=l(null),{userInfo:I}=e(h(e=>({userInfo:e.userInfo}))),L=I?.user_id||`guest`,{data:R}=a([`hot-recommend-keyword-list`,L],()=>t({user_id:L}),{enabled:!T}),z=c(()=>(R?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[R]),B=o(()=>{N||(P(!0),F.current&&clearTimeout(F.current),F.current=setTimeout(()=>{M(e=>e+1),P(!1),F.current=null},500))},[N]),V=c(()=>T?Array.from({length:A},(e,t)=>({label:`推荐搜索${t+1}`})):z,[T,z,A]),H=c(()=>g(V,A),[A,V,j]);if(!T&&z.length<2)return null;let U=e=>{if(C){C(e);return}let t=new URLSearchParams(O.toString());t.set(`q`,e);let n=D.includes(`/search-result`)?D:`/search-result`;E.push(`${n}?${t.toString()}`)};return f(r,{className:`relative mx-[16px] mt-[24px] overflow-hidden rounded-[12px] bg-black${T?` pointer-events-none`:``}`,children:[d(r,{className:`pointer-events-none absolute inset-0 rounded-[12px]`,style:{background:`linear-gradient(180deg, #9756E3 0%, #6C43EE 100%), linear-gradient(180deg, rgba(255,30,255,0.7) 0%, rgba(108,67,238,0) 100%)`,padding:`0.5px`,WebkitMask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,WebkitMaskComposite:`xor`,mask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,maskComposite:`exclude`}}),d(r,{className:`pointer-events-none absolute inset-x-0 top-0 rounded-t-[12px] mix-blend-plus-lighter`,style:{height:`259px`,background:`linear-gradient(180deg, rgba(151,86,227,0.4) 0%, rgba(151,86,227,0) 85%)`}}),f(r,{className:`relative px-[24px] pb-[18px] pt-[22px]`,children:[f(r,{className:`flex items-center justify-between`,children:[k===`热门推荐`?d(_,{className:`h-[14.192px] w-[62.448px] shrink-0`}):d(i,{className:`shrink-0 bg-[linear-gradient(90deg,#E914E9_0%,#6C43EE_100%)] bg-clip-text font-["PingFang_SC"] text-[16px] font-semibold leading-none text-transparent`,children:k}),S&&d(`button`,{type:`button`,"aria-label":`刷新`,className:`flex h-[20px] w-[20px] shrink-0 items-center justify-center text-white/40 transition-opacity active:opacity-70`,onClick:B,children:d(v,{className:`h-[16.6667px] w-[16.6667px] ${N?`animate-spin`:``}`})})]}),d(r,{className:`mt-[7px]`,children:H.map((e,t)=>{let n=t<3,a=t<2,o=n?`text-[#C922EF]`:`text-white/70`,s=n?`text-white/90`:`text-white/70`;return f(r,{children:[f(`button`,{type:`button`,className:`flex h-[48px] w-full items-center gap-[4px] text-left transition-opacity active:opacity-70`,onClick:()=>U(e.label),children:[f(r,{className:`relative flex h-[24px] w-[20px] shrink-0 items-end justify-center`,children:[a?d(y,{variant:t===0?`gold`:`silver`,className:`absolute left-1/2 top-0 h-[8px] w-[10px] -translate-x-1/2`}):null,d(i,{className:`font-['DIN_Black'] text-[14px] font-normal not-italic leading-[24px] ${o}`,children:t+1})]}),d(i,{className:`min-w-0 flex-1 truncate font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] ${s}`,children:e.label})]}),t<H.length-1?d(r,{className:`h-px w-full bg-white/[0.08]`}):null]},`${e.label}-${t}`)})})]})]})}export{b as HotRecommendClient};
@@ -11,6 +11,7 @@ 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;
14
15
  readonly items: zod.ZodArray<zod.ZodObject<{
15
16
  label: zod.ZodString & SchemaHasDefaultValue;
16
17
  }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
@@ -10,6 +10,7 @@ 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;
13
14
  readonly items: z.ZodArray<z.ZodObject<{
14
15
  label: z.ZodString & SchemaHasDefaultValue;
15
16
  }, 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:`展示数`}),items:e.array(t.object({label:e.string(`东野圭吾作品:11字迷案`,{label:`热词`})}),{label:`推荐位模块`,defaultValue:[{label:`东野圭吾作品:11字迷案`},{label:`嫌疑人X的献身:高智商博弈`},{label:`白夜行:原著同名悬疑改编`},{label:`神探伽利略:校园连环谜案`},{label:`假面饭店:密室追凶夜`},{label:`恶意:东野圭吾高分作品`}]})}));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:`展示数`}),showRefresh:e.boolean(!1,{label:`是否展示换一批`,fieldType:`switch`}),items:e.array(t.object({label:e.string(``,{label:`热词`})}),{label:`关键词列表`,defaultValue:[]})}));export{n as hotRecommendInspectorPropsSchema};
@@ -9,7 +9,7 @@ type ImageTextRecommendProps = InferSchemaProps<typeof imageTextRecommendInspect
9
9
  interface ClientProps extends ImageTextRecommendProps {}
10
10
  /**
11
11
  * 图文推荐物料组件 - 客户端部分
12
- * - 智能铺设开启:按标签调用热门列表接口,随机铺设推荐位,T+1 自动更新
12
+ * - 智能推荐开启:按 layout(与首页宫格智能筛选形态一致)调用热门或最新列表,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,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};
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};
@@ -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.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>>;
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>>;
24
24
  readonly commonPlayCount: zod.ZodBoolean & SchemaHasDefaultValue;
25
25
  readonly commonEpisodes: zod.ZodBoolean & SchemaHasDefaultValue;
26
26
  readonly items: zod.ZodArray<zod.ZodObject<{
@@ -1,39 +1,44 @@
1
1
 
2
2
  import { SchemaHasDefaultValue } from "../../../../utils/schema/schema.mjs";
3
3
  import "../../../../utils.mjs";
4
- import { z } from "zod";
4
+ import * as zod from "zod";
5
+ import * as zod_v4_core0 from "zod/v4/core";
5
6
 
6
7
  //#region components/biz/business/image-text-recommend/schema.d.ts
7
8
  /**
8
9
  * 图文推荐物料属性定义
9
10
  */
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;
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;
32
37
  } & {
33
- mode: z.ZodOptional<z.ZodEnum<{
38
+ mode: zod.ZodOptional<zod.ZodEnum<{
34
39
  renderer: "renderer";
35
40
  editor: "editor";
36
41
  }>>;
37
- }, z.core.$strip>;
42
+ }, zod_v4_core0.$strip>;
38
43
  //#endregion
39
44
  export { imageTextRecommendInspectorPropsSchema };
@@ -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:`推荐位名称`}),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};
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};
@@ -1,2 +1,2 @@
1
1
 
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};
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};
@@ -1,2 +1,2 @@
1
1
 
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};
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};