@funhub/platform 0.1.162 → 0.1.164-beta.0

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 (93) hide show
  1. package/dist/biz.d.mts +26 -1
  2. package/dist/biz.mjs +1 -1
  3. package/dist/common.d.mts +3 -1
  4. package/dist/common.mjs +1 -1
  5. package/dist/components/biz/business/advertisement/ad-match.d.mts +98 -0
  6. package/dist/components/biz/business/advertisement/ad-match.mjs +2 -0
  7. package/dist/components/biz/business/advertisement/ad-provider.d.mts +39 -0
  8. package/dist/components/biz/business/advertisement/ad-provider.mjs +2 -0
  9. package/dist/components/biz/business/advertisement/ad-query.d.mts +29 -0
  10. package/dist/components/biz/business/advertisement/ad-query.mjs +2 -0
  11. package/dist/components/biz/business/advertisement/ad-runtime-provider.d.mts +29 -0
  12. package/dist/components/biz/business/advertisement/ad-runtime-provider.mjs +2 -0
  13. package/dist/components/biz/business/advertisement/banner-ad/client.d.mts +18 -0
  14. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +2 -0
  15. package/dist/components/biz/business/advertisement/banner-ad/index.d.mts +5 -0
  16. package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +30 -0
  17. package/dist/components/biz/business/advertisement/banner-ad/material.mjs +2 -0
  18. package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +84 -0
  19. package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +2 -0
  20. package/dist/components/biz/business/advertisement/banner-ad/server.d.mts +11 -0
  21. package/dist/components/biz/business/advertisement/banner-ad/server.mjs +2 -0
  22. package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +39 -0
  23. package/dist/components/biz/business/advertisement/feed-ad/index.mjs +2 -0
  24. package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +21 -0
  25. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +2 -0
  26. package/dist/components/biz/business/advertisement/floating-ad/index.d.mts +5 -0
  27. package/dist/components/biz/business/advertisement/floating-ad/material.d.mts +25 -0
  28. package/dist/components/biz/business/advertisement/floating-ad/material.mjs +2 -0
  29. package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +84 -0
  30. package/dist/components/biz/business/advertisement/floating-ad/schema.mjs +2 -0
  31. package/dist/components/biz/business/advertisement/floating-ad/server.d.mts +11 -0
  32. package/dist/components/biz/business/advertisement/floating-ad/server.mjs +2 -0
  33. package/dist/components/biz/business/advertisement/icon-ad/client.d.mts +16 -0
  34. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +2 -0
  35. package/dist/components/biz/business/advertisement/icon-ad/index.d.mts +5 -0
  36. package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +29 -0
  37. package/dist/components/biz/business/advertisement/icon-ad/material.mjs +2 -0
  38. package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +78 -0
  39. package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +2 -0
  40. package/dist/components/biz/business/advertisement/icon-ad/server.d.mts +11 -0
  41. package/dist/components/biz/business/advertisement/icon-ad/server.mjs +2 -0
  42. package/dist/components/biz/business/advertisement/index.d.mts +31 -0
  43. package/dist/components/biz/business/advertisement/popup-ad/client.d.mts +14 -0
  44. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +64 -0
  45. package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +5 -0
  46. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +29 -0
  47. package/dist/components/biz/business/advertisement/popup-ad/material.mjs +2 -0
  48. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +54 -0
  49. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +2 -0
  50. package/dist/components/biz/business/advertisement/popup-ad/server.d.mts +11 -0
  51. package/dist/components/biz/business/advertisement/popup-ad/server.mjs +2 -0
  52. package/dist/components/biz/business/advertisement/text-ad/client.d.mts +15 -0
  53. package/dist/components/biz/business/advertisement/text-ad/client.mjs +2 -0
  54. package/dist/components/biz/business/advertisement/text-ad/index.d.mts +5 -0
  55. package/dist/components/biz/business/advertisement/text-ad/material.d.mts +27 -0
  56. package/dist/components/biz/business/advertisement/text-ad/material.mjs +2 -0
  57. package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +62 -0
  58. package/dist/components/biz/business/advertisement/text-ad/schema.mjs +2 -0
  59. package/dist/components/biz/business/advertisement/text-ad/server.d.mts +11 -0
  60. package/dist/components/biz/business/advertisement/text-ad/server.mjs +2 -0
  61. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  62. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  63. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/schema.mjs +1 -1
  64. package/dist/components/biz/business/header-search/header-logo-search/schema.mjs +1 -1
  65. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +3 -0
  66. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  67. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +3 -0
  68. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +3 -0
  69. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  70. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +3 -0
  71. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  72. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  73. package/dist/components/biz/business/index.d.mts +26 -0
  74. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  75. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  76. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  77. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  78. package/dist/components/common/analytics-init/analytics-init.d.mts +21 -0
  79. package/dist/components/common/analytics-init/analytics-init.mjs +2 -0
  80. package/dist/components/common/analytics-init/index.d.mts +2 -0
  81. package/dist/components/pages/home/client.mjs +1 -1
  82. package/dist/components/ui/avatar.mjs +1 -1
  83. package/dist/components/ui/button.d.mts +1 -1
  84. package/dist/components/ui/image.d.mts +4 -4
  85. package/dist/hooks.d.mts +1 -1
  86. package/dist/materials.d.mts +7 -1
  87. package/dist/materials.mjs +1 -1
  88. package/dist/service/advertisement.d.mts +176 -0
  89. package/dist/service/advertisement.mjs +2 -0
  90. package/dist/service.d.mts +2 -1
  91. package/dist/service.mjs +1 -1
  92. package/dist/utils/schema/material.d.mts +1 -0
  93. package/package.json +1 -1
@@ -0,0 +1,54 @@
1
+
2
+ import { InferSchemaProps, MaterialComponentMode, SchemaHasDefaultValue } from "../../../../../utils/schema/schema.mjs";
3
+ import "../../../../../utils.mjs";
4
+ import { AdsMatchSceneContext } from "../../../../../service/advertisement.mjs";
5
+ import z$1 from "zod";
6
+
7
+ //#region components/biz/business/advertisement/popup-ad/schema.d.ts
8
+ /**
9
+ * 弹窗广告单条数据。
10
+ */
11
+ interface PopupAdItem {
12
+ id: string;
13
+ title?: string;
14
+ jumpUrl: string;
15
+ materialUrl: string;
16
+ desc?: string;
17
+ }
18
+ /**
19
+ * 弹窗广告物料属性。
20
+ */
21
+ declare const popupAdInspectorPropsSchema: z$1.ZodObject<{
22
+ readonly items: z$1.ZodArray<z$1.ZodObject<{
23
+ id: z$1.ZodString & SchemaHasDefaultValue;
24
+ title: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
25
+ jumpUrl: z$1.ZodString & SchemaHasDefaultValue;
26
+ materialUrl: z$1.ZodString & SchemaHasDefaultValue;
27
+ desc: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
28
+ }, z$1.core.$strip>> & SchemaHasDefaultValue;
29
+ } & {
30
+ mode: z$1.ZodOptional<z$1.ZodEnum<{
31
+ renderer: "renderer";
32
+ editor: "editor";
33
+ }>>;
34
+ }, z$1.core.$strip>;
35
+ declare const popupAdInspectorDefaultProps: {
36
+ readonly items: {
37
+ id: string;
38
+ jumpUrl: string;
39
+ materialUrl: string;
40
+ title?: string | undefined;
41
+ desc?: string | undefined;
42
+ }[];
43
+ };
44
+ type PopupAdInspectorProps<T extends object = object> = InferSchemaProps<typeof popupAdInspectorPropsSchema> & T;
45
+ /**
46
+ * 弹窗广告组件 props。
47
+ */
48
+ type PopupAdProps = PopupAdInspectorProps<{
49
+ mode?: MaterialComponentMode;
50
+ componentId?: string;
51
+ sceneContext?: AdsMatchSceneContext;
52
+ }>;
53
+ //#endregion
54
+ export { PopupAdInspectorProps, PopupAdItem, PopupAdProps, popupAdInspectorDefaultProps, popupAdInspectorPropsSchema };
@@ -0,0 +1,2 @@
1
+
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({items:e.array(n.object({id:e.string(`popup-ad-1`,{label:`广告 ID`,required:!0}),title:e.string(`弹窗广告标题`,{label:`标题`,required:!1}),jumpUrl:e.string(`/search`,{label:`跳转链接`,required:!0}),materialUrl:e.string(`/static/components-resource/banner.png`,{label:`素材地址`,required:!0}),desc:e.string(`这里是弹窗广告描述`,{label:`描述`,required:!1})}),{label:`广告列表`,required:!0,defaultValue:[{id:`popup-ad-1`,title:`弹窗广告标题`,jumpUrl:`/search`,materialUrl:`/static/components-resource/banner.png`,desc:`这里是弹窗广告描述`}]})})),i=t(r);export{i as popupAdInspectorDefaultProps,r as popupAdInspectorPropsSchema};
@@ -0,0 +1,11 @@
1
+
2
+ import { PopupAdProps } from "./schema.mjs";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
+
5
+ //#region components/biz/business/advertisement/popup-ad/server.d.ts
6
+ /**
7
+ * 弹窗广告服务端组件。
8
+ */
9
+ declare function PopupAdServer(props: PopupAdProps): Promise<react_jsx_runtime0.JSX.Element>;
10
+ //#endregion
11
+ export { PopupAdServer };
@@ -0,0 +1,2 @@
1
+
2
+ import{resolveAdsAppCode as e}from"../ad-match.mjs";import{AdRuntimeProvider as t}from"../ad-runtime-provider.mjs";import{PopupAd as n}from"./client.mjs";import{jsx as r}from"react/jsx-runtime";async function i(i){let{mode:a=`renderer`,componentId:o,sceneContext:s,...c}=i;return r(t,{adType:`popup`,appCode:e(),componentId:o,sceneContext:s,mode:a,children:r(n,{...c,mode:a})})}export{i as PopupAdServer};
@@ -0,0 +1,15 @@
1
+
2
+ import { TextAdProps } from "./schema.mjs";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
+
5
+ //#region components/biz/business/advertisement/text-ad/client.d.ts
6
+ /**
7
+ * 文字广告组件。
8
+ */
9
+ declare function TextAd({
10
+ displayCount,
11
+ items,
12
+ mode: _mode
13
+ }: TextAdProps): react_jsx_runtime0.JSX.Element | null;
14
+ //#endregion
15
+ export { TextAd };
@@ -0,0 +1,2 @@
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{adaptTextAdProps as r,hasMatchedAds as i}from"../ad-match.mjs";import{useAdProvider as a}from"../ad-provider.mjs";import{useEffect as o,useMemo as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";const d=`text_ad_list`;let f=null;function p(e,t){if(!e)return!1;if(t===`once`)return!0;let n=new Date(e),r=new Date;return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()}function m(e,t){return p(e.closedAt,t)}function h(){if(f)return f;if(typeof window>`u`)return{};let e=window.localStorage.getItem(d);if(!e)return f={},{};try{let t=JSON.parse(e);return f=t&&typeof t==`object`?t:{},f}catch{return f={},{}}}function g(e){f=e,!(typeof window>`u`)&&window.localStorage.setItem(d,JSON.stringify(e))}function _(e){return h()[e]??{}}function v(e,t){g({...h(),[e]:t})}function y({displayCount:d,items:f,mode:p=`renderer`}){let h=a(),g=e(),y=p===`editor`,[b,x]=c(!1),[S,C]=c(y),[w,T]=c(y),E=s(()=>i(h?.matchData)?r(h?.matchData):{displayCount:d,items:f},[h?.matchData,d,f]),D=s(()=>{let e=E.items.filter(e=>e.text?.trim());return typeof E.displayCount==`number`?e.slice(0,Math.max(E.displayCount,0)):e},[E]),O=D[0],k=s(()=>D.map(e=>`${e.text}:${e.jumpUrl||``}`).join(`|`),[D]);if(o(()=>{x(!0)},[]),o(()=>{if(b){if(y){C(!0),T(!0);return}if(!k||!O){C(!1),T(!0);return}C(!m(_(k),`daily`)),T(!0)}},[O,y,b,k]),!O||!y&&(!b||!w||!S))return null;function A(){k&&v(k,{..._(k),closedAt:Date.now()})}function j(e){e.jumpUrl&&g.push(e.jumpUrl)}function M(e){e.stopPropagation(),C(!1),A()}function N(){y||(C(!1),A(),j(O))}return l(t,{className:`w-full`,style:{backgroundColor:`#131313`,padding:`8px 16px`},children:u(t,{className:`relative flex w-full items-center justify-between overflow-hidden cursor-pointer`,style:{minHeight:`40px`,backgroundColor:`#FFE7E7`,padding:`0 8px`},onClick:N,children:[u(t,{className:`flex min-w-0 items-center`,style:{gap:`8px`,width:`280px`},children:[l(t,{className:`shrink-0`,style:{padding:`4px 8px`,borderRadius:`8px`,backgroundColor:`rgba(0, 0, 0, 0.33)`},children:l(n,{className:`flex h-full items-center justify-center text-white`,style:{fontSize:`12px`,lineHeight:`normal`,fontWeight:400},children:`广告`})}),l(n,{className:`truncate`,style:{flex:`1 0 0`,color:`#FD4C5E`,fontSize:`14px`,lineHeight:`normal`,fontWeight:400},children:O.text})]}),u(t,{className:`flex shrink-0 items-center`,style:{gap:`6px`,width:`54px`},children:[l(t,{className:`flex shrink-0 items-center justify-center`,style:{width:`20px`,height:`34px`},children:l(`svg`,{width:`10`,height:`17`,viewBox:`0 0 10 17`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,children:l(`path`,{d:`M1 1L8.5 8.5L1 16`,stroke:`#FD4C5E`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`})})}),u(`button`,{type:`button`,"aria-label":`关闭文字广告`,className:`relative shrink-0 border-none p-0`,style:{width:`17px`,height:`17px`,borderRadius:`999px`,backgroundColor:`#F9A9AE`},onClick:M,children:[l(t,{className:`absolute left-1/2 top-1/2`,style:{width:`9px`,height:`2px`,borderRadius:`999px`,backgroundColor:`#FFFFFF`,transform:`translate(-50%, -50%) rotate(45deg)`}}),l(t,{className:`absolute left-1/2 top-1/2`,style:{width:`9px`,height:`2px`,borderRadius:`999px`,backgroundColor:`#FFFFFF`,transform:`translate(-50%, -50%) rotate(-45deg)`}})]})]})]})})}export{y as TextAd};
@@ -0,0 +1,5 @@
1
+
2
+ import { TextAdInspectorProps, TextAdItem, TextAdProps, textAdInspectorDefaultProps, textAdInspectorPropsSchema } from "./schema.mjs";
3
+ import { TextAd } from "./client.mjs";
4
+ import { TextAdServer } from "./server.mjs";
5
+ import { textAdMaterial } from "./material.mjs";
@@ -0,0 +1,27 @@
1
+
2
+ import { SchemaHasDefaultValue } from "../../../../../utils/schema/schema.mjs";
3
+ import { DefineMaterialOption } from "../../../../../utils/schema/material.mjs";
4
+ import "../../../../../utils.mjs";
5
+ import { TextAd } from "./client.mjs";
6
+ import { TextAdServer } from "./server.mjs";
7
+ import * as zod from "zod";
8
+ import * as zod_v4_core0 from "zod/v4/core";
9
+
10
+ //#region components/biz/business/advertisement/text-ad/material.d.ts
11
+ /**
12
+ * 文字广告物料定义。
13
+ */
14
+ declare const textAdMaterial: DefineMaterialOption<typeof TextAdServer, typeof TextAd, zod.ZodObject<{
15
+ readonly displayCount: zod.ZodNumber & SchemaHasDefaultValue;
16
+ readonly items: zod.ZodArray<zod.ZodObject<{
17
+ text: zod.ZodString & SchemaHasDefaultValue;
18
+ jumpUrl: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
19
+ }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
20
+ } & {
21
+ mode: zod.ZodOptional<zod.ZodEnum<{
22
+ renderer: "renderer";
23
+ editor: "editor";
24
+ }>>;
25
+ }, zod_v4_core0.$strip>, "text-ad", "广告组件">;
26
+ //#endregion
27
+ export { textAdMaterial };
@@ -0,0 +1,2 @@
1
+
2
+ import{defineMaterial as e}from"../../../../../utils/schema/material.mjs";import{TextAd as t}from"./client.mjs";import{textAdInspectorPropsSchema as n}from"./schema.mjs";import{TextAdServer as r}from"./server.mjs";const i=e({type:`text-ad`,name:`文字广告`,icon:`/static/components-thumb/marquee_clickable_closable.png`,category:`广告组件`,serverComponent:r,clientComponent:t,propsSchema:n});export{i as textAdMaterial};
@@ -0,0 +1,62 @@
1
+
2
+ import { InferSchemaProps, MaterialComponentMode, SchemaHasDefaultValue } from "../../../../../utils/schema/schema.mjs";
3
+ import "../../../../../utils.mjs";
4
+ import { AdsMatchSceneContext } from "../../../../../service/advertisement.mjs";
5
+ import z$1 from "zod";
6
+
7
+ //#region components/biz/business/advertisement/text-ad/schema.d.ts
8
+ /**
9
+ * 文字广告单条数据。
10
+ */
11
+ interface TextAdItem {
12
+ /**
13
+ * 广告文案。
14
+ */
15
+ text: string;
16
+ /**
17
+ * 跳转链接。
18
+ */
19
+ jumpUrl?: string;
20
+ }
21
+ /**
22
+ * 文字广告物料属性。
23
+ */
24
+ declare const textAdInspectorPropsSchema: z$1.ZodObject<{
25
+ readonly displayCount: z$1.ZodNumber & SchemaHasDefaultValue;
26
+ readonly items: z$1.ZodArray<z$1.ZodObject<{
27
+ text: z$1.ZodString & SchemaHasDefaultValue;
28
+ jumpUrl: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
29
+ }, z$1.core.$strip>> & SchemaHasDefaultValue;
30
+ } & {
31
+ mode: z$1.ZodOptional<z$1.ZodEnum<{
32
+ renderer: "renderer";
33
+ editor: "editor";
34
+ }>>;
35
+ }, z$1.core.$strip>;
36
+ declare const textAdInspectorDefaultProps: {
37
+ readonly displayCount: number;
38
+ readonly items: {
39
+ text: string;
40
+ jumpUrl?: string | undefined;
41
+ }[];
42
+ };
43
+ type TextAdInspectorProps<T extends object = object> = InferSchemaProps<typeof textAdInspectorPropsSchema> & T;
44
+ /**
45
+ * 文字广告组件 props。
46
+ */
47
+ type TextAdProps = TextAdInspectorProps<{
48
+ /**
49
+ * 渲染模式。
50
+ */
51
+ mode?: MaterialComponentMode;
52
+ /**
53
+ * 广告组件唯一标识。
54
+ */
55
+ componentId?: string;
56
+ /**
57
+ * 广告场景控制对象。
58
+ */
59
+ sceneContext?: AdsMatchSceneContext;
60
+ }>;
61
+ //#endregion
62
+ export { TextAdInspectorProps, TextAdItem, TextAdProps, textAdInspectorDefaultProps, textAdInspectorPropsSchema };
@@ -0,0 +1,2 @@
1
+
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({displayCount:e.number(1,{label:`广告展示数量选择`,required:!0}).refine(e=>e>=1&&e<=5,`广告展示数量必须为 1-5`),items:e.array(n.object({text:e.string(`请输入广告文案`,{label:`广告文案`,required:!0}),jumpUrl:e.string(``,{label:`跳转链接`,required:!1})}),{label:`广告列表`,required:!0,defaultValue:[{text:`这是第一条文字广告`,jumpUrl:`/search`},{text:`这是第二条文字广告`,jumpUrl:`/search`}]})})),i=t(r);export{i as textAdInspectorDefaultProps,r as textAdInspectorPropsSchema};
@@ -0,0 +1,11 @@
1
+
2
+ import { TextAdProps } from "./schema.mjs";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
+
5
+ //#region components/biz/business/advertisement/text-ad/server.d.ts
6
+ /**
7
+ * 文字广告服务端组件。
8
+ */
9
+ declare function TextAdServer(props: TextAdProps): Promise<react_jsx_runtime0.JSX.Element>;
10
+ //#endregion
11
+ export { TextAdServer };
@@ -0,0 +1,2 @@
1
+
2
+ import{resolveAdsAppCode as e}from"../ad-match.mjs";import{AdRuntimeProvider as t}from"../ad-runtime-provider.mjs";import{TextAd as n}from"./client.mjs";import{jsx as r}from"react/jsx-runtime";async function i(i){let{mode:a=`renderer`,componentId:o,sceneContext:s,...c}=i;return r(t,{adType:`text`,appCode:e(),componentId:o,sceneContext:s,mode:a,children:r(n,{...c,mode:a})})}export{i as TextAdServer};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{mergeStyles as e}from"../../utils/styles/helpers.mjs";import{Box as t}from"../../../ui/box.mjs";import n from"../../../ui/link.mjs";import{urlPrefix as r}from"../../../../constants/url-prefix.mjs";import{useSticky as i}from"../../../../hooks/use-sticky.mjs";import a from"../../../../assets/icons/filter_dark.mjs";import o,{loadHiddenChannelIdsFromStorage as s}from"./channel-filter-dialog.mjs";import{defaultProps as c}from"./default-props.mjs";import{clsx as l}from"clsx";import{useEffect as u,useMemo as d,useState as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";import{usePathname as g}from"next/navigation";const _={};function v(e,t){let n=`${r.DOMAIN}/`,i=t.indexOf(n),a=i!==-1,o=a?t.slice(i+n.length).split(`/`)[0]:void 0;return e.isDefault?a&&o?`${r.DOMAIN}/${o}`:`/`:a&&o?`${r.DOMAIN}/${o}/${encodeURIComponent(e.name)}`:`${r.CHANNEL}/${encodeURIComponent(e.name)}`}function y(r){let{mode:y=`renderer`,styles:b,events:x,...S}=r,C=g()??`/`,w=y===`editor`,T=S||_,E={...c,...T},[D,O]=f(!1),{isSticky:k,ref:A}=i(),[j,M]=f(!1),[N,P]=f(E.list),F=d(()=>E.list.find(e=>e.isDefault)?.name??null,[E.list]),I=d(()=>E.currentChannelId??F,[E.currentChannelId,F]);u(()=>{let e=s();P(e?.length?E.list.filter(t=>!e.includes(t.name)):E.list)},[E.list]);let L=e=>{P(e)},R=(e,t)=>{x?.onChannelChange?.(e,t)},z=b?e(b,{}):void 0;return u(()=>{let e=()=>{let e=window.scrollY??document.documentElement.scrollTop??0,t=window.innerHeight,n=document.documentElement.scrollHeight;M(e+t>=n-1)};return window.addEventListener(`scroll`,e,{passive:!0}),e(),()=>{window.removeEventListener(`scroll`,e)}},[]),h(p,{children:[k&&m(t,{className:`w-full h-11`}),m(t,{as:`nav`,ref:A,className:l(`w-full transition-all duration-200`,w&&`pointer-events-none`,!E.isFullfeed&&`bg-bg1`),style:z,children:h(t,{className:`relative flex items-center h-[44px]`,children:[m(t,{className:`flex-1 overflow-x-auto overflow-y-hidden [&::-webkit-scrollbar]:hidden`,style:{scrollbarWidth:`none`,msOverflowStyle:`none`,WebkitOverflowScrolling:`touch`},children:m(t,{className:`flex items-center h-full pl-4 pr-4 gap-4`,children:N.map((e,t)=>{let r=I===e.name||I===null&&t===0;return m(n,{href:v(e,C),webviewNavMode:`spa`,className:l(`whitespace-nowrap cursor-pointer transition-all duration-200`,`flex items-center justify-center h-11`,`${r?`text-xl`:`text-base`}`),style:{fontWeight:r?`bold`:`normal`,color:r?`var(--color-theme5)`:`var(--color-text2)`},onClick:()=>R(e,t),children:e.name},e.name||`channel-${t}`)})})}),r.modifiable?m(t,{className:`flex items-center gap-[12px] px-[8px]`,children:m(t,{className:`flex items-center justify-center cursor-pointer w-7 h-8`,onClick:()=>{O(!0),x?.onFilterClick?.()},children:m(a,{className:`w-5 h-5`,style:{color:`var(--color-text1)`}})})}):null]})}),m(o,{open:D,onOpenChange:O,channels:E.list,currentChannelId:I,onChannelClick:R,onChannelsChange:L})]})}export{y as default};
2
+ "use client";import{mergeStyles as e}from"../../utils/styles/helpers.mjs";import{Box as t}from"../../../ui/box.mjs";import n from"../../../ui/link.mjs";import{urlPrefix as r}from"../../../../constants/url-prefix.mjs";import{useSticky as i}from"../../../../hooks/use-sticky.mjs";import a from"../../../../assets/icons/filter_dark.mjs";import o,{loadHiddenChannelIdsFromStorage as s}from"./channel-filter-dialog.mjs";import{defaultProps as c}from"./default-props.mjs";import{clsx as l}from"clsx";import{useEffect as u,useMemo as d,useState as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";import{usePathname as g}from"next/navigation";const _={};function v(e,t){let n=`${r.DOMAIN}/`,i=t.indexOf(n),a=i!==-1,o=a?t.slice(i+n.length).split(`/`)[0]:void 0;return e.isDefault?a&&o?`${r.DOMAIN}/${o}`:`/`:a&&o?`${r.DOMAIN}/${o}/${encodeURIComponent(e.name)}`:`${r.CHANNEL}/${encodeURIComponent(e.name)}`}function y(r){let{mode:y=`renderer`,styles:b,events:x,...S}=r,C=g()??`/`,w=y===`editor`,T=S||_,E={...c,...T},[D,O]=f(!1),{isSticky:k,ref:A}=i(),[j,M]=f(!1),[N,P]=f(E.list),F=d(()=>E.list.find(e=>e.isDefault)?.name??null,[E.list]),I=d(()=>E.currentChannelId??F,[E.currentChannelId,F]);u(()=>{let e=s();P(e?.length?E.list.filter(t=>!e.includes(t.name)):E.list)},[E.list]);let L=e=>{P(e)},R=(e,t)=>{x?.onChannelChange?.(e,t)},z=b?e(b,{}):void 0;return u(()=>{let e=()=>{let e=window.scrollY??document.documentElement.scrollTop??0,t=window.innerHeight,n=document.documentElement.scrollHeight;M(e+t>=n-1)};return window.addEventListener(`scroll`,e,{passive:!0}),e(),()=>{window.removeEventListener(`scroll`,e)}},[]),h(p,{children:[k&&m(t,{className:`w-full h-11`}),m(t,{as:`nav`,ref:A,className:l(`w-full transition-all duration-200 bg-bg1`,w&&`pointer-events-none`,k&&`fixed top-0 left-0 right-0 z-50`),style:z,children:h(t,{className:`relative flex items-center h-[44px]`,children:[m(t,{className:`flex-1 overflow-x-auto overflow-y-hidden [&::-webkit-scrollbar]:hidden`,style:{scrollbarWidth:`none`,msOverflowStyle:`none`,WebkitOverflowScrolling:`touch`},children:m(t,{className:`flex items-center h-full pl-4 pr-4 gap-4`,children:N.map((e,t)=>{let r=I===e.name||I===null&&t===0;return m(n,{href:v(e,C),webviewNavMode:`spa`,className:l(`whitespace-nowrap cursor-pointer transition-all duration-200`,`flex items-center justify-center h-11`,`${r?`text-xl`:`text-base`}`),style:{fontWeight:r?`bold`:`normal`,color:r?`var(--color-theme5)`:`var(--color-text2)`},onClick:()=>R(e,t),children:e.name},e.name||`channel-${t}`)})})}),r.modifiable?m(t,{className:`flex items-center gap-[12px] px-[8px]`,children:m(t,{className:`flex items-center justify-center cursor-pointer w-7 h-8`,onClick:()=>{O(!0),x?.onFilterClick?.()},children:m(a,{className:`w-5 h-5`,style:{color:`var(--color-text1)`}})})}):null]})}),m(o,{open:D,onOpenChange:O,channels:E.list,currentChannelId:I,onChannelClick:R,onChannelsChange:L})]})}export{y as default};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(``,{label:`LOGO 图片地址`,required:!1}),logoHref:e.string(`/`,{label:`LOGO 跳转地址`,required:!1})})),r=t(n);export{r as headerAvatarLogoSearchInspectorDefaultProps,n as headerAvatarLogoSearchInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(`/static/icons/video.svg`,{label:`LOGO 图片地址`,required:!1}),logoHref:e.string(`/`,{label:`LOGO 跳转地址`,required:!1})})),r=t(n);export{r as headerAvatarLogoSearchInspectorDefaultProps,n as headerAvatarLogoSearchInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(``,{label:`LOGO 图片地址`,required:!1}),logoHref:e.string(`/`,{label:`LOGO 跳转地址`,required:!1})})),r=t(n);export{r as headerAvatarLogoSearchIconInspectorDefaultProps,n as headerAvatarLogoSearchIconInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(`/static/icons/video.svg`,{label:`LOGO 图片地址`,required:!1}),logoHref:e.string(`/`,{label:`LOGO 跳转地址`,required:!1})})),r=t(n);export{r as headerAvatarLogoSearchIconInspectorDefaultProps,n as headerAvatarLogoSearchIconInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(``,{label:`LOGO 图片地址`,required:!1}),logoHref:e.string(`/`,{label:`LOGO 跳转地址`,required:!1})})),r=t(n);export{r as headerLogoSearchInspectorDefaultProps,n as headerLogoSearchInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({logoSrc:e.string(`/static/icons/video.svg`,{label:`LOGO 图片地址`,required:!1}),logoHref:e.string(`/`,{label:`LOGO 跳转地址`,required:!1})})),r=t(n);export{r as headerLogoSearchInspectorDefaultProps,n as headerLogoSearchInspectorPropsSchema};
@@ -27,6 +27,9 @@ declare const homeRecommendGridInspectorPropsSchema: z$1.ZodObject<{
27
27
  upload: "upload";
28
28
  }>>;
29
29
  coverUrl: z$1.ZodOptional<z$1.ZodString>;
30
+ is_ad: z$1.ZodOptional<z$1.ZodBoolean>;
31
+ ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
32
+ ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
30
33
  badge_url: z$1.ZodOptional<z$1.ZodString>;
31
34
  titleMode: z$1.ZodOptional<z$1.ZodEnum<{
32
35
  content: "content";
@@ -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_GRID_COLUMNS as r,HOME_RECOMMEND_DEFAULT_GRID_ROWS as i,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as a,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as o,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as s,HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED as c,HOME_RECOMMEND_DEFAULT_TITLE as l}from"../shared/home-recommend-default-config.mjs";import u from"zod";const d=e(e=>({rows:e.number(i,{label:`行数`}),columns:e.number(r,{label:`列数`}),smartTagEnabled:e.boolean(c,{fieldType:`switch`,label:`智能铺设`}),title:e.string(l,{label:`推荐位名称`}),showPlayCount:e.boolean(s,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(a,{label:`播放量浮动`}),showEpisode:e.boolean(o,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`,required:!1}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),smartTagIds:u.array(u.string()).optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),items:u.array(u.object({contentId:u.string(),coverMode:u.enum([`upload`,`content`]).optional(),coverUrl:u.string().optional(),badge_url:u.string().optional(),titleMode:u.enum([`custom`,`content`]).optional(),title:u.string().optional(),description:u.string().optional(),showPlayCount:u.boolean().optional(),playCountDelta:u.number().optional(),showEpisode:u.boolean().optional()})).optional()})),f={...t(d),smartTagIds:[],items:[]},p={rows:{type:`number`,title:`行数`,default:f.rows},columns:{type:`number`,title:`列数`,default:f.columns},smartTagEnabled:{type:`boolean`,title:`智能铺设`,default:f.smartTagEnabled},title:{type:`string`,title:`推荐位名称`,default:f.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:f.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:f.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:f.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:f.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:f.moreLink},smartTagIds:{type:`array`,title:`智能铺设标签`,default:f.smartTagIds,items:{type:`string`,title:`标签 ID`}},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:f.catId},items:{type:`array`,title:`推荐项`,default:f.items,items:{type:`object`,title:`推荐项`,properties:{contentId:{type:`string`,title:`内容 ID`},coverMode:{type:`string`,title:`封面模式`},coverUrl:{type:`string`,title:`封面地址`},badge_url:{type:`string`,title:`角标地址`},titleMode:{type:`string`,title:`标题模式`},title:{type:`string`,title:`标题`},description:{type:`string`,title:`简介`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{f as homeRecommendGridInspectorDefaultProps,d as homeRecommendGridInspectorPropsSchema,p as homeRecommendGridPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{HOME_RECOMMEND_DEFAULT_ENABLE_INFINITE as n,HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as r,HOME_RECOMMEND_DEFAULT_GRID_ROWS as i,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as a,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as o,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as s,HOME_RECOMMEND_DEFAULT_SMART_TAG_ENABLED as c,HOME_RECOMMEND_DEFAULT_TITLE as l}from"../shared/home-recommend-default-config.mjs";import u from"zod";const d=e(e=>({rows:e.number(i,{label:`行数`}),columns:e.number(r,{label:`列数`}),smartTagEnabled:e.boolean(c,{fieldType:`switch`,label:`智能铺设`}),title:e.string(l,{label:`推荐位名称`}),showPlayCount:e.boolean(s,{fieldType:`switch`,label:`显示播放量`}),playCountDelta:e.number(a,{label:`播放量浮动`}),showEpisode:e.boolean(o,{fieldType:`switch`,label:`显示集数`}),enableInfinite:e.boolean(n,{fieldType:`switch`,label:`无限下拉`,required:!1}),moreLink:e.string(``,{label:`更多`,description:``,required:!1}),smartTagIds:u.array(u.string()).optional(),catId:e.string(``,{label:`分类 ID`,description:`透传热门接口 cat_id`,required:!1}),items:u.array(u.object({contentId:u.string(),coverMode:u.enum([`upload`,`content`]).optional(),coverUrl:u.string().optional(),is_ad:u.boolean().optional(),ad_advertise_url:u.string().optional(),ad_advertise_icon:u.string().optional(),badge_url:u.string().optional(),titleMode:u.enum([`custom`,`content`]).optional(),title:u.string().optional(),description:u.string().optional(),showPlayCount:u.boolean().optional(),playCountDelta:u.number().optional(),showEpisode:u.boolean().optional()})).optional()})),f={...t(d),smartTagIds:[],items:[]},p={rows:{type:`number`,title:`行数`,default:f.rows},columns:{type:`number`,title:`列数`,default:f.columns},smartTagEnabled:{type:`boolean`,title:`智能铺设`,default:f.smartTagEnabled},title:{type:`string`,title:`推荐位名称`,default:f.title},showPlayCount:{type:`boolean`,title:`显示播放量`,default:f.showPlayCount},playCountDelta:{type:`number`,title:`播放量浮动`,default:f.playCountDelta},showEpisode:{type:`boolean`,title:`显示集数`,default:f.showEpisode},enableInfinite:{type:`boolean`,title:`无限下拉`,default:f.enableInfinite},moreLink:{type:`string`,title:`更多`,description:``,default:f.moreLink},smartTagIds:{type:`array`,title:`智能铺设标签`,default:f.smartTagIds,items:{type:`string`,title:`标签 ID`}},catId:{type:`string`,title:`分类 ID`,description:`透传热门接口 cat_id`,default:f.catId},items:{type:`array`,title:`推荐项`,default:f.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:`标题`},description:{type:`string`,title:`简介`},showPlayCount:{type:`boolean`,title:`显示播放量`},playCountDelta:{type:`number`,title:`播放量浮动`},showEpisode:{type:`boolean`,title:`显示集数`}}}}};export{f as homeRecommendGridInspectorDefaultProps,d as homeRecommendGridInspectorPropsSchema,p as homeRecommendGridPropsSchema};
@@ -27,6 +27,9 @@ declare const homeRecommendGridMaterial: DefineMaterialOption<typeof HomeRecomme
27
27
  upload: "upload";
28
28
  }>>;
29
29
  coverUrl: zod.ZodOptional<zod.ZodString>;
30
+ is_ad: zod.ZodOptional<zod.ZodBoolean>;
31
+ ad_advertise_url: zod.ZodOptional<zod.ZodString>;
32
+ ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
30
33
  badge_url: zod.ZodOptional<zod.ZodString>;
31
34
  titleMode: zod.ZodOptional<zod.ZodEnum<{
32
35
  content: "content";
@@ -25,6 +25,9 @@ declare const homeRecommendWaterfallInspectorPropsSchema: z$1.ZodObject<{
25
25
  upload: "upload";
26
26
  }>>;
27
27
  coverUrl: z$1.ZodOptional<z$1.ZodString>;
28
+ is_ad: z$1.ZodOptional<z$1.ZodBoolean>;
29
+ ad_advertise_url: z$1.ZodOptional<z$1.ZodString>;
30
+ ad_advertise_icon: z$1.ZodOptional<z$1.ZodString>;
28
31
  badge_url: z$1.ZodOptional<z$1.ZodString>;
29
32
  titleMode: z$1.ZodOptional<z$1.ZodEnum<{
30
33
  content: "content";
@@ -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(),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:`封面地址`},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_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};
@@ -25,6 +25,9 @@ declare const homeRecommendWaterfallMaterial: DefineMaterialOption<typeof HomeRe
25
25
  upload: "upload";
26
26
  }>>;
27
27
  coverUrl: zod.ZodOptional<zod.ZodString>;
28
+ is_ad: zod.ZodOptional<zod.ZodBoolean>;
29
+ ad_advertise_url: zod.ZodOptional<zod.ZodString>;
30
+ ad_advertise_icon: zod.ZodOptional<zod.ZodString>;
28
31
  badge_url: zod.ZodOptional<zod.ZodString>;
29
32
  titleMode: zod.ZodOptional<zod.ZodEnum<{
30
33
  content: "content";
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../../utils/use-compatible-router.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{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/detail/video_flag.mjs";import{MiniThreeCard as u}from"../../../../common/cards/mini-three-card.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as ee,HOME_RECOMMEND_DEFAULT_GRID_ROWS as te,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as d,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as ne,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as f,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{enrichHomeRecommendItemsWithVideoDetails as oe}from"./home-recommend-video-detail.mjs";import{useCallback as p,useEffect as m,useLayoutEffect as se,useMemo as h,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";const ce={},le={list:[]},ue=new Map;function b({variant:n,props:l=ce,data:u=le,mode:ae=`renderer`}){let b=ae===`editor`,S=t(),{list:C,title:me,cursor:w}=u,T=h(()=>Array.isArray(C)?C:[],[C]),E=h(()=>Array.isArray(u.icons)?u.icons:[],[u.icons]),{rows:he,columns:ge,moreLink:_e,title:D,smartTagEnabled:ve,smartTagIds:O,catId:be,showPlayCount:xe,playCountDelta:Se,showEpisode:Ce,enableInfinite:we,items:A}=l,j=ve===!0,M=we===!0&&j,N=!b&&M&&T.length>=16,P=h(()=>Array.isArray(O)?O.map(e=>String(e||``).trim()).filter(Boolean):[],[O]),F=typeof be==`string`?be.trim():``,I=h(()=>j||!Array.isArray(A)?``:A.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[j,A]),[Te,Ee]=_(0),[L,R]=_(T),[z,De]=_(E),[B,V]=_(()=>typeof w==`string`?w:void 0),[H,Oe]=_(!1),ke=g(null),Ae=g(null),U=g(null),je=g([]),W=g({left:null,right:null}),Me=g(!1),G=g(``),{isLoading:Ne,show:Pe,hide:Fe}=c(600),Ie=fe(he,te,ie),K=fe(ge,ee,re),q=M?16:n===`grid`?Ie*K:16,J=h(()=>[n,j?`smart`:`manual:${I}`,P.join(`,`),F,String(q)].join(`|`),[j,I,F,q,P,n]);m(()=>{let e=ue.get(J);if(e){R(e.items),De(e.icons),V(e.cursor),G.current=J;return}G.current!==J&&(R(T),De(E),V(typeof w==`string`?w:void 0))},[w,E,T,J]),m(()=>{b||ue.set(J,{items:L,icons:z,cursor:B})},[b,B,J,z,L]);let Le=Ie*K,Re=b&&n===`grid`,Y=Re?L.slice(0,Le):L,ze=Re?z.slice(0,Le):z,Be=n===`waterfall`?6:4,X=Y.length>0?Math.max(0,Y.length-Be):-1,Ve=!!B,He=D&&D.trim()||me||``,Ue=xe??f,We=Number(Se??d),Ge=Ce??ne,Ke=!M,Z=Ke?de(_e):``,qe=Ke&&!!Z,Je=o({enabled:!b&&n===`grid`,containerRef:Ae,firstRowItemRef:je,columns:K,itemsCount:Y.length,deps:[n]}),Ye=s({enabled:!b&&n===`waterfall`,containerRef:ke,firstRowRef:W,deps:[n,Y.length]}),Xe=n===`grid`?Je:Ye,Ze=p(async()=>{if(b)return;if(G.current===J){G.current=J;return}let t=j||!!I;if(G.current=J,t)try{if(Pe(),!j){if(!I)return;R(await oe(L));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),V(r)}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{Fe()}},[Fe,b,j,I,J,F,q,P,L,Pe]);m(()=>{Ze()},[Ze]);let Qe=p(async()=>{let t=B;if(!(!N||!t||Me.current)){Me.current=!0,Oe(!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)),V(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),V(void 0)}finally{Me.current=!1,Oe(!1)}}},[B,F,q,P,N]),$e=p(()=>{if(Z){if(Z.startsWith(`http`)){window.location.href=Z;return}S.push(Z)}},[Z,S]);m(()=>{let e=U.current;if(!e||!N||!Ve)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||H||Qe()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[Qe,Ve,H,Y.length,q,N,X]),se(()=>{let e=ke.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Ee(t>0?(t-12)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let Q=h(()=>n===`waterfall`?ye(Y,ze,Te):{left:[],right:[]},[Te,ze,Y,n]);if(m(()=>{n===`waterfall`&&(Q.left.length||(W.current.left=null),Q.right.length||(W.current.right=null))},[n,Q.left.length,Q.right.length]),!Y.length)return null;let $=!b&&Ne,et=!b&&H,tt=Xe>0?Xe/2:160;return y(r,{className:`w-full mt-[16px]`,children:[y(r,{className:`flex items-center justify-between px-[12px] mb-[8px]`,children:[v(i,{className:`flex-1 min-w-0 text-text1 text-[18px] leading-[26px] font-bold line-clamp-1`,children:He}),qe&&v(i,{className:`text-text3 text-[12px] leading-[18px] cursor-pointer`,onClick:$e,children:`更多`})]}),n===`grid`&&y(r,{ref:Ae,className:`w-full flex flex-wrap px-[12px] relative`,children:[Y.map((e,t)=>{let r=ze[t],i=pe(e),a=Ue&&(i?.showPlayCount??!0),o=i?.playCountDelta??We,s=i?.showEpisode??Ge,c=t%K,l=K>1?{paddingLeft:12*c/K,paddingRight:12*(K-c-1)/K}:void 0;return v(`div`,{ref:e=>{t===X&&(U.current=e),t<K&&(je.current[t]=e)},className:`min-w-0`,style:{width:`${100/K}%`,...l||{}},children:v(x,{variant:n,item:e,icon:r,index:t,showPlayCount:a,playCountDelta:o,showEpisode:s,widthStyle:{width:`100%`}})},k(e,t))}),$&&v(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&v(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:tt},"aria-hidden":!0,children:v(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&y(r,{ref:ke,className:`w-full px-[12px] flex gap-[12px] relative`,children:[v(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.left.map((e,t)=>{let r=pe(e.item),i=Ue&&(r?.showPlayCount??!0),a=r?.playCountDelta??We,o=r?.showEpisode??Ge;return v(`div`,{ref:n=>{e.index===X&&(U.current=n),t===0&&(W.current.left=n)},children:v(x,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},k(e.item,e.index))})}),v(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.right.map((e,t)=>{let r=pe(e.item),i=Ue&&(r?.showPlayCount??!0),a=r?.playCountDelta??We,o=r?.showEpisode??Ge;return v(`div`,{ref:n=>{e.index===X&&(U.current=n),t===0&&(W.current.right=n)},children:v(x,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},k(e.item,e.index))})}),$&&v(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&v(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:tt},"aria-hidden":!0,children:v(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),et&&v(r,{className:`w-full flex justify-center py-[12px]`,children:v(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function x({variant:e,item:t,icon:n,index:a,showPlayCount:o,playCountDelta:s,showEpisode:c,widthStyle:ee}){let te=me(t),d=t.name||t?.title||``,ne=he(ge(t.static?.browse_cnt??0,s)),f=T(t,c),re=ve(t,n,a);return v(u,{url:te,text:d,className:`w-full`,style:ee,topRightChild:re?v(S,{url:re}):void 0,bottomLeftChild:o?y(r,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] py-0 rounded-[4px] bg-[rgba(255,255,255,0.1)] ml-[4px] flex items-center gap-[4px]`,children:[v(l,{className:`w-[12px] h-[12px] text-[#fff] shrink-0`}),ne]}):null,bottomRightChild:c?f&&v(i,{className:`text-[#fff] text-[12px] leading-[18px] pr-2`,children:f}):null,textChild:v(r,{className:`py-[4px]`,children:v(i,{as:`h3`,className:`text-text1 text-[16px] leading-[24px] ${e===`waterfall`?`break-words line-clamp-3`:`line-clamp-1`}`,children:d})}),linkPath:C(t)})}function S({url:e}){return v(r,{className:`relative w-[40px] h-[20px]`,children:v(n,{src:e,alt:`corner`,width:40,height:20,className:`w-full h-auto`})})}function C(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function de(e){return e?e.trim():``}function fe(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function pe(e){return e[ae]}function me(e){return e.img_y||e.img_x||e?.coverUrl}function w(e){return typeof e==`string`?e:``}function T(e,t){if(!t)return``;if(E(e)){let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}return D(Number(e.duration||0))}function E(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 he(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e6?`${_e(e/1e6)}M`:e>=1e3?`${_e(e/1e3)}k`:Math.floor(e).toString()}function ge(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 _e(e){let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function D(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 ve(e,t,n){return w(e.badge_url)||w(t?.material_url)||``}function ye(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=O(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 O(e,t){if(!e)return 0;let n=e*1.3461538461538463,r=T(t,!0)?18:0;return n+20+r+6+16}function k(e,t){return e.id?`home-recommend-${e.id}`:`home-recommend-${t}`}export{b as default};
2
+ "use client";import{pContentGetPopularVideoList as e}from"../../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../../utils/use-compatible-router.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/detail/video_flag.mjs";import{getFeedAdIcon as ee,getFeedAdJumpUrl as d,isFeedAdItem as f}from"../../advertisement/feed-ad/index.mjs";import{MiniThreeCard as p}from"../../../../common/cards/mini-three-card.mjs";import{HOME_RECOMMEND_DEFAULT_GRID_COLUMNS as m,HOME_RECOMMEND_DEFAULT_GRID_ROWS as te,HOME_RECOMMEND_DEFAULT_PLAY_COUNT_DELTA as h,HOME_RECOMMEND_DEFAULT_SHOW_EPISODE as ne,HOME_RECOMMEND_DEFAULT_SHOW_PLAY_COUNT as g,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 _}from"./home-recommend-preview.mjs";import{enrichHomeRecommendItemsWithVideoDetails as v}from"./home-recommend-video-detail.mjs";import{useCallback as y,useEffect as b,useLayoutEffect as ae,useMemo as x,useRef as S,useState as C}from"react";import{jsx as w,jsxs as T}from"react/jsx-runtime";const oe={},se={list:[]},ce=new Map;function E({variant:n,props:o=oe,data:u=se,mode:ee=`renderer`}){let d=ee===`editor`,f=t(),{list:p,title:_,cursor:E}=u,D=x(()=>Array.isArray(p)?p:[],[p]),O=x(()=>Array.isArray(u.icons)?u.icons:[],[u.icons]),{rows:pe,columns:me,moreLink:he,title:ge,smartTagEnabled:_e,smartTagIds:k,catId:A,showPlayCount:ve,playCountDelta:ye,showEpisode:xe,enableInfinite:Se,items:M}=o,N=_e===!0,Ce=Se===!0&&N,P=!d&&Ce&&D.length>=16,F=x(()=>Array.isArray(k)?k.map(e=>String(e||``).trim()).filter(Boolean):[],[k]),I=typeof A==`string`?A.trim():``,L=x(()=>N||!Array.isArray(M)?``:M.map(e=>String(e?.contentId||``).trim()).filter(Boolean).join(`,`),[N,M]),[we,Te]=C(0),[R,z]=C(D),[B,Ee]=C(O),[V,H]=C(()=>typeof E==`string`?E:void 0),[De,Oe]=C(!1),ke=S(null),Ae=S(null),U=S(null),je=S([]),W=S({left:null,right:null}),Me=S(!1),G=S(``),{isLoading:Ne,show:Pe,hide:Fe}=l(600),Ie=de(pe,te,ie),K=de(me,m,re),q=Ce?16:n===`grid`?Ie*K:16,J=x(()=>[n,N?`smart`:`manual:${L}`,F.join(`,`),I,String(q)].join(`|`),[N,L,I,q,F,n]);b(()=>{let e=ce.get(J);if(e){z(e.items),Ee(e.icons),H(e.cursor),G.current=J;return}G.current!==J&&(z(D),Ee(O),H(typeof E==`string`?E:void 0))},[E,O,D,J]),b(()=>{d||ce.set(J,{items:R,icons:B,cursor:V})},[d,V,J,B,R]);let Le=Ie*K,Re=d&&n===`grid`,Y=Re?R.slice(0,Le):R,ze=Re?B.slice(0,Le):B,Be=n===`waterfall`?6:4,X=Y.length>0?Math.max(0,Y.length-Be):-1,Ve=!!V,He=ge&&ge.trim()||_||``,Ue=ve??g,We=Number(ye??h),Ge=xe??ne,Ke=!Ce,Z=Ke?ue(he):``,qe=Ke&&!!Z,Je=s({enabled:!d&&n===`grid`,containerRef:Ae,firstRowItemRef:je,columns:K,itemsCount:Y.length,deps:[n]}),Ye=c({enabled:!d&&n===`waterfall`,containerRef:ke,firstRowRef:W,deps:[n,Y.length]}),Xe=n===`grid`?Je:Ye,Ze=y(async()=>{if(d)return;if(G.current===J){G.current=J;return}let t=N||!!L;if(G.current=J,t)try{if(Pe(),!N){if(!L)return;z(await v(R));return}let t=await e({page_size:q,tags:F.length>0?F:void 0,cat_id:I||void 0},{cache:`no-store`}),n=Array.isArray(t.data?.videos)?t.data.videos:[],r=t.data?.cursor;z(n),H(r)}catch(e){console.error(`推荐位刷新首屏失败(client)`,e)}finally{Fe()}},[Fe,d,N,L,J,I,q,F,R,Pe]);b(()=>{Ze()},[Ze]);let Qe=y(async()=>{let t=V;if(!(!P||!t||Me.current)){Me.current=!0,Oe(!0);try{let n=await e({cursor:t,page_size:q,tags:F.length>0?F:void 0,cat_id:I||void 0}),r=Array.isArray(n.data?.videos)?n.data.videos:[],i=n.data?.cursor;r.length>0&&z(e=>e.concat(r)),H(e=>{if(!(!r.length||!i))return i===e?void 0:i})}catch(e){console.error(`推荐位加载下一页失败(client)`,e),H(void 0)}finally{Me.current=!1,Oe(!1)}}},[V,I,q,F,P]),$e=y(()=>{if(Z){if(Z.startsWith(`http`)){window.location.href=Z;return}f.push(Z)}},[Z,f]);b(()=>{let e=U.current;if(!e||!P||!Ve)return;let t=new IntersectionObserver(e=>{!e[0]?.isIntersecting||De||Qe()},{root:null,threshold:0});return t.observe(e),()=>{t.disconnect()}},[Qe,Ve,De,Y.length,q,P,X]),ae(()=>{let e=ke.current;if(!e||n!==`waterfall`)return;let t=()=>{let t=e.clientWidth||0;Te(t>0?(t-12)/2:0)};t();let r=new ResizeObserver(t);return r.observe(e),()=>{r.disconnect()}},[n]);let Q=x(()=>n===`waterfall`?be(Y,ze,we):{left:[],right:[]},[we,ze,Y,n]);if(b(()=>{n===`waterfall`&&(Q.left.length||(W.current.left=null),Q.right.length||(W.current.right=null))},[n,Q.left.length,Q.right.length]),!Y.length)return null;let $=!d&&Ne,et=!d&&De,tt=Xe>0?Xe/2:160;return T(r,{className:`w-full mt-[16px]`,children:[T(r,{className:`flex items-center justify-between px-[12px] mb-[8px]`,children:[w(i,{className:`flex-1 min-w-0 text-text1 text-[18px] leading-[26px] font-bold line-clamp-1`,children:He}),qe&&w(i,{className:`text-text3 text-[12px] leading-[18px] cursor-pointer`,onClick:$e,children:`更多`})]}),n===`grid`&&T(r,{ref:Ae,className:`w-full flex flex-wrap px-[12px] relative`,children:[Y.map((e,t)=>{let r=ze[t],i=fe(e),a=Ue&&(i?.showPlayCount??!0),o=i?.playCountDelta??We,s=i?.showEpisode??Ge,c=t%K,l=K>1?{paddingLeft:12*c/K,paddingRight:12*(K-c-1)/K}:void 0;return w(`div`,{ref:e=>{t===X&&(U.current=e),t<K&&(je.current[t]=e)},className:`min-w-0`,style:{width:`${100/K}%`,...l||{}},children:w(le,{variant:n,item:e,icon:r,index:t,showPlayCount:a,playCountDelta:o,showEpisode:s,widthStyle:{width:`100%`}})},j(e,t))}),$&&w(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&w(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:tt},"aria-hidden":!0,children:w(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),n===`waterfall`&&T(r,{ref:ke,className:`w-full px-[12px] flex gap-[12px] relative`,children:[w(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.left.map((e,t)=>{let r=fe(e.item),i=Ue&&(r?.showPlayCount??!0),a=r?.playCountDelta??We,o=r?.showEpisode??Ge;return w(`div`,{ref:n=>{e.index===X&&(U.current=n),t===0&&(W.current.left=n)},children:w(le,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},j(e.item,e.index))})}),w(r,{className:`flex-1 min-w-0 flex flex-col`,children:Q.right.map((e,t)=>{let r=fe(e.item),i=Ue&&(r?.showPlayCount??!0),a=r?.playCountDelta??We,o=r?.showEpisode??Ge;return w(`div`,{ref:n=>{e.index===X&&(U.current=n),t===0&&(W.current.right=n)},children:w(le,{variant:n,item:e.item,icon:e.icon,index:e.index,showPlayCount:i,playCountDelta:a,showEpisode:o,widthStyle:{width:`100%`}})},j(e.item,e.index))})}),$&&w(r,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),$&&w(r,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:tt},"aria-hidden":!0,children:w(a,{size:`large`,showLabel:!1,className:`text-theme5`})})]}),et&&w(r,{className:`w-full flex justify-center py-[12px]`,children:w(a,{size:`medium`,showLabel:!1,className:`text-theme5`})})]})}function le({variant:e,item:t,icon:a,index:s,showPlayCount:c,playCountDelta:l,showEpisode:m,widthStyle:te}){let h=f(t),ne=pe(t),g=t.name||t?.title||``,re=_e(k(t.static?.browse_cnt??0,l)),ie=he(t,m),_=ye(t,a,s),v=h?d(t):O(t),y=c&&!h,b=m&&!h;if(h){let e=ee(t)||ne;return w(r,{className:`w-full`,style:te,children:T(o,{href:v,className:`block w-full`,children:[T(r,{className:`relative w-full overflow-hidden rounded-[8px] bg-white`,style:{aspectRatio:`175 / 280`},children:[e&&w(r,{className:`absolute top-0`,style:{left:`-44.57%`,width:`321.14%`,height:`100%`},children:w(n,{src:e,alt:g||`广告封面`,fill:!0,objectFit:`cover`})}),w(r,{className:`absolute right-0 top-0 flex items-center justify-center`,style:{width:`32%`,height:`8.93%`,minWidth:`56px`,minHeight:`25px`,borderBottomLeftRadius:`8px`,backgroundColor:`rgba(0, 0, 0, 0.33)`},children:w(i,{className:`text-white`,style:{fontSize:`12px`,lineHeight:`normal`},children:`广告`})})]}),w(r,{className:`pt-[8px]`,children:w(i,{as:`h3`,className:`line-clamp-1 text-[14px] leading-[20px] text-white`,children:g})})]})})}return w(p,{url:ne,text:g,className:`w-full`,style:te,topRightChild:_?w(D,{url:_}):void 0,bottomLeftChild:y?T(r,{className:`h-[20px] leading-[20px] text-[#fff] text-[12px] px-[4px] py-0 rounded-[4px] bg-[rgba(255,255,255,0.1)] ml-[4px] flex items-center gap-[4px]`,children:[w(u,{className:`w-[12px] h-[12px] text-[#fff] shrink-0`}),re]}):null,bottomRightChild:b?ie&&w(i,{className:`text-[#fff] text-[12px] leading-[18px] pr-2`,children:ie}):null,textChild:w(r,{className:`py-[4px]`,children:w(i,{as:`h3`,className:`text-text1 text-[16px] leading-[24px] ${e===`waterfall`?`break-words line-clamp-3`:`line-clamp-1`}`,children:g})}),linkPath:v})}function D({url:e}){return w(r,{className:`relative w-[40px] h-[20px]`,children:w(n,{src:e,alt:`corner`,width:40,height:20,className:`w-full h-auto`})})}function O(e){let t=encodeURIComponent(e.name||``);return`/video/${e.id||``}/${t}/episode/1`}function ue(e){return e?e.trim():``}function de(e,t,n){let r=Number(e);return!Number.isFinite(r)||r<=0?t:Math.min(n,Math.floor(r))}function fe(e){return e[_]}function pe(e){return e.img_y||e.img_x||e?.coverUrl}function me(e){return typeof e==`string`?e:``}function he(e,t){if(!t)return``;if(ge(e)){let t=e.update_status===`0`,n=Number(e.episode_cnt||e.links?.length||0);return n>0?`${t?`更新至`:`全`}${n}集`:``}return ve(Number(e.duration||0))}function ge(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 _e(e){return!Number.isFinite(e)||e<=0?`0`:e>=1e6?`${A(e/1e6)}M`:e>=1e3?`${A(e/1e3)}k`:Math.floor(e).toString()}function k(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 A(e){let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t}function ve(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 ye(e,t,n){return me(e.badge_url)||me(t?.material_url)||``}function be(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=xe(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 xe(e,t){if(!e)return 0;let n=e*1.3461538461538463,r=he(t,!0)?18:0;return n+20+r+6+16}function j(e,t){return e.id?`home-recommend-${e.id}`:`home-recommend-${t}`}export{E as default};
@@ -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/video_player.png`,o=`__homeRecommendCardConfig`,s=Array.from({length:60},(e,t)=>{let n=t%2==1,r={browse_cnt:12345+t*731};return{id:`preview-recommend-${t+1}`,name:`${`媒资标题`.repeat((t+1)*2)}`,img_y:a,img_x:a,type:n?2:1,duration:n?0:60*(18+t),episode_cnt:n?12+t%3*6:0,static:r}});function c({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(f(n,r),2,a):t?Math.max(8,a):e===`waterfall`?Math.max(4,a):Math.max(2,a)}function l(e){let t=Math.max(1,Math.floor(e));return Array.from({length:t},(e,t)=>{let n=s[t%s.length];return{...n,id:`preview-recommend-${t+1}`,name:n.name}})}function u(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||``,f=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||``,p=a.badge_url||e.badge_url||``,m=i.badge_url??p,h=d(i,a);return{...e,...a,id:a.id||e.id||`preview-recommend-${r+1}`,name:s,img_y:u,img_x:f,badge_url:m||void 0,[o]:h}}):e}function d(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 f(n,a){return p(n,t,1,i)*p(a,e,1,r)}function p(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(r,Math.max(n,Math.floor(i))):t}function m({variant:e,schemaTitle:t,enableInfinite:r,smartTagEnabled:i,rows:a,columns:o,items:s}){let d=new Map,f=i?[]:Array.isArray(s)?s.filter(Boolean):[],p=u(l(c({variant:e,enableInfinite:r,rows:a,columns:o,items:f})),f,d);return{title:t&&t.trim()||n,list:p,icons:[],cursor:``,show_style:void 0}}export{o as HOME_RECOMMEND_CARD_CONFIG_FIELD,m 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/video_player.png`,o=`__homeRecommendCardConfig`,s=Array.from({length:60},(e,t)=>{let n=t%2==1,r={browse_cnt:12345+t*731};return{id:`preview-recommend-${t+1}`,name:`${`媒资标题`.repeat((t+1)*2)}`,img_y:a,img_x:a,type:n?2:1,duration:n?0:60*(18+t),episode_cnt:n?12+t%3*6:0,static:r}});function c({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(f(n,r),2,a):t?Math.max(8,a):e===`waterfall`?Math.max(4,a):Math.max(2,a)}function l(e){let t=Math.max(1,Math.floor(e));return Array.from({length:t},(e,t)=>{let n=s[t%s.length];return{...n,id:`preview-recommend-${t+1}`,name:n.name}})}function u(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||``,f=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||``,p=a.badge_url||e.badge_url||``,m=i.badge_url??p,h=d(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:f,is_ad:g,ad_advertise_url:g?i.ad_advertise_url?.trim()||``:void 0,ad_advertise_icon:g?i.ad_advertise_icon?.trim()||u||f||``:void 0,badge_url:m||void 0,[o]:h}}):e}function d(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 f(n,a){return p(n,t,1,i)*p(a,e,1,r)}function p(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(r,Math.max(n,Math.floor(i))):t}function m({variant:e,schemaTitle:t,enableInfinite:r,smartTagEnabled:i,rows:a,columns:o,items:s}){let d=new Map,f=i?[]:Array.isArray(s)?s.filter(Boolean):[],p=u(l(c({variant:e,enableInfinite:r,rows:a,columns:o,items:f})),f,d);return{title:t&&t.trim()||n,list:p,icons:[],cursor:``,show_style:void 0}}export{o as HOME_RECOMMEND_CARD_CONFIG_FIELD,m as buildHomeRecommendEditorPreviewData};
@@ -2,6 +2,32 @@
2
2
  import { defaultProps } from "../basics/fullscreen-feed/defaults/default-props.mjs";
3
3
  import { FullscreenFeedClient } from "../basics/fullscreen-feed/runtime/client.mjs";
4
4
  import { schema } from "../basics/fullscreen-feed/schema/index.mjs";
5
+ import { BannerAdInspectorProps, BannerAdItem, BannerAdProps, BannerAdStyleSize, bannerAdInspectorDefaultProps, bannerAdInspectorPropsSchema, bannerAdStyleSizeOptions } from "./advertisement/banner-ad/schema.mjs";
6
+ import { FloatingAdEditableProps, FloatingAdInspectorProps, FloatingAdItem, FloatingAdProps, floatingAdInspectorDefaultProps, floatingAdInspectorPropsSchema } from "./advertisement/floating-ad/schema.mjs";
7
+ import { IconAdInspectorProps, IconAdItem, IconAdProps, iconAdInspectorDefaultProps, iconAdInspectorPropsSchema } from "./advertisement/icon-ad/schema.mjs";
8
+ import { TextAdInspectorProps, TextAdItem, TextAdProps, textAdInspectorDefaultProps, textAdInspectorPropsSchema } from "./advertisement/text-ad/schema.mjs";
9
+ import { AdsMatchExtData, adaptBannerAdProps, adaptFloatingAdItem, adaptIconAdProps, adaptPopupAdMaterials, adaptTextAdProps, buildAdsMatchRequest, getFirstMatchedMaterial, hasMatchedAds, parseAdsMatchExtData, resolveAdsAppCode, sortAdsMatchMaterials } from "./advertisement/ad-match.mjs";
10
+ import { AdProvider, AdProviderProps, AdProviderValue, useAdProvider } from "./advertisement/ad-provider.mjs";
11
+ import { AdsMatchQueryOptions, createAdsMatchPrefetchItem, createAdsMatchQueryFn, getAdsMatchQueryKey } from "./advertisement/ad-query.mjs";
12
+ import { AdRuntimeProvider, AdRuntimeProviderProps } from "./advertisement/ad-runtime-provider.mjs";
13
+ import { BannerAd } from "./advertisement/banner-ad/client.mjs";
14
+ import { BannerAdServer } from "./advertisement/banner-ad/server.mjs";
15
+ import { bannerAdMaterial } from "./advertisement/banner-ad/material.mjs";
16
+ import { FeedAdBadge, FeedAdItemLike, getFeedAdIcon, getFeedAdJumpUrl, isFeedAdItem } from "./advertisement/feed-ad/index.mjs";
17
+ import { FloatingAd } from "./advertisement/floating-ad/client.mjs";
18
+ import { FloatingAdServer } from "./advertisement/floating-ad/server.mjs";
19
+ import { floatingAdMaterial } from "./advertisement/floating-ad/material.mjs";
20
+ import { IconAd } from "./advertisement/icon-ad/client.mjs";
21
+ import { IconAdServer } from "./advertisement/icon-ad/server.mjs";
22
+ import { iconAdMaterial } from "./advertisement/icon-ad/material.mjs";
23
+ import { PopupAdInspectorProps, PopupAdItem, PopupAdProps, popupAdInspectorDefaultProps, popupAdInspectorPropsSchema } from "./advertisement/popup-ad/schema.mjs";
24
+ import { PopupAd } from "./advertisement/popup-ad/client.mjs";
25
+ import { PopupAdServer } from "./advertisement/popup-ad/server.mjs";
26
+ import { popupAdMaterial } from "./advertisement/popup-ad/material.mjs";
27
+ import { TextAd } from "./advertisement/text-ad/client.mjs";
28
+ import { TextAdServer } from "./advertisement/text-ad/server.mjs";
29
+ import { textAdMaterial } from "./advertisement/text-ad/material.mjs";
30
+ import "./advertisement/index.mjs";
5
31
  import { defaultProps as defaultProps$1 } from "./banner/variants/basic-banner/defaults/default-props.mjs";
6
32
  import { BasicBannerClient } from "./banner/variants/basic-banner/runtime/client.mjs";
7
33
  import { schema as schema$1 } from "./banner/variants/basic-banner/schema/index.mjs";
@@ -1,2 +1,2 @@
1
1
 
2
- import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import i from"../../../../assets/icons/view.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";function s(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function c({data:c}){return c?a(t,{children:(Array.isArray(c)?c:[c]).map((c,l)=>{if(!c||typeof c!=`object`)return null;let{id:u,title:d,desc:f,cover:p,tagImageUrl:m,showEpisode:h,episodeText:g,showPlayCount:_,play_count:v}=c,y=d||``,b=u?`/video/${u}/${y?encodeURIComponent(y):``}`:`#`,x=m?String(m):null,S=g==null?``:String(g).trim(),C=(h??!0)&&S!==``,w=_??!0,T=s(v);return a(t,{children:o(r,{href:b,children:[o(t,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[p&&a(e,{src:p,alt:y||`封面`,fill:!0,objectFit:`cover`}),x&&a(t,{className:`absolute top-0 right-0 z-10 w-[37px] h-[20px]`,children:a(e,{src:x,alt:y||`角标`,fill:!0,sizes:`37px`,className:`object-contain`})}),a(t,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),w&&o(t,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[a(i,{className:`h-[14px] w-[14px] text-white`}),a(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:T})]}),C&&a(t,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:a(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:S})})]}),o(t,{className:`flex items-center justify-between gap-[12px] pt-[10px] px-2`,children:[o(t,{className:`flex-1 min-w-0`,children:[a(n,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:y}),f&&a(n,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:f})]}),a(n,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})},u||y||`large-grid-item-${l}`)})}):null}export{c as LargeGridItemClient};
2
+ import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import{getFeedAdIcon as i,getFeedAdJumpUrl as a,isFeedAdItem as o}from"../advertisement/feed-ad/index.mjs";import s from"../../../../assets/icons/view.mjs";import{jsx as c,jsxs as l}from"react/jsx-runtime";function u(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function d({data:d}){return d?c(t,{children:(Array.isArray(d)?d:[d]).map((d,f)=>{if(!d||typeof d!=`object`)return null;let{id:p,title:m,desc:h,cover:g,tagImageUrl:_,showEpisode:v,episodeText:y,showPlayCount:b,play_count:x}=d,S=o(d),C=m||``,w=(S?i(d):``)||g,T=S?a(d):p?`/video/${p}/${C?encodeURIComponent(C):``}`:`#`,E=_?String(_):null,D=y==null?``:String(y).trim(),O=!S&&(v??!0)&&D!==``,k=!S&&(b??!0),A=u(x);return S?c(t,{children:c(r,{href:T,children:l(t,{className:`relative w-full overflow-hidden rounded-[8px] bg-[rgba(90,90,90,0.48)]`,style:{aspectRatio:`358 / 263`},children:[l(t,{className:`absolute inset-x-0 top-0 overflow-hidden`,style:{height:`83.65%`},children:[w&&c(t,{className:`absolute top-0`,style:{left:`-6.42%`,width:`202.24%`,height:`163.64%`},children:c(e,{src:w,alt:C||`广告封面`,fill:!0,objectFit:`cover`})}),c(t,{className:`absolute right-0 top-0 flex items-center justify-center`,style:{width:`15.64%`,height:`9.51%`,minWidth:`56px`,minHeight:`25px`,borderBottomLeftRadius:`16px`,backgroundColor:`rgba(0, 0, 0, 0.33)`},children:c(n,{className:`text-white`,style:{fontSize:`clamp(12px, 3.35vw, 16px)`,lineHeight:`normal`},children:`广告`})})]}),l(t,{className:`absolute inset-x-0 bottom-0 flex items-center justify-between bg-white`,style:{height:`16.35%`,minHeight:`43px`,padding:`0 3.35%`},children:[c(t,{className:`min-w-0 flex-1`,style:{paddingRight:`3.35%`},children:c(n,{as:`h3`,className:`line-clamp-1 text-[#161616]`,style:{fontSize:`clamp(14px, 3.9vw, 18px)`,lineHeight:`normal`},children:C})}),c(t,{className:`flex shrink-0 items-center justify-center rounded-[16px] border border-[#FD4C5E]`,style:{width:`14.53%`,height:`10.27%`,minWidth:`52px`,minHeight:`27px`},children:c(n,{className:`text-[#FD4C5E]`,style:{fontSize:`clamp(14px, 3.9vw, 18px)`,lineHeight:`normal`},children:`前往`})})]})]})})},p||C||`large-grid-item-${f}`):c(t,{children:l(r,{href:T,children:[l(t,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[w&&c(e,{src:w,alt:C||`封面`,fill:!0,objectFit:`cover`}),E&&c(t,{className:`absolute top-0 right-0 z-10 w-[37px] h-[20px]`,children:c(e,{src:E,alt:C||`角标`,fill:!0,sizes:`37px`,className:`object-contain`})}),c(t,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),k&&l(t,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[c(s,{className:`h-[14px] w-[14px] text-white`}),c(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:A})]}),O&&c(t,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:c(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:D})})]}),l(t,{className:`flex items-center justify-between gap-[12px] pt-[10px] px-2`,children:[l(t,{className:`flex-1 min-w-0`,children:[c(n,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:C}),h&&c(n,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:h})]}),c(n,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})},p||C||`large-grid-item-${f}`)})}):null}export{d as LargeGridItemClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/loading.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{LargeGridItemClient as l}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as u}from"./schema.mjs";import{useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";const _=[],v=u.data??[];function y(e){return e==null}function b(e,t){return y(e)?t:e}function x(e){return typeof e==`string`?e.trim():``}function S(e){return x(e)}function C(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function w(e){let t=e,n=x(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(C(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function T(e,t){return t?{...e,...t,id:b(t.id,e.id),cover:b(t.cover,e.cover),title:b(t.title,e.title),desc:b(t.desc,e.desc),play_count:b(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:b(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:b(t.tagImageUrl,e.tagImageUrl)}:e}function E(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:b(t.title,e.title),moreUrl:b(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?T(n,t.items):t.items}}function D({mode:u=`renderer`,data:y=_}){let b=u===`editor`,x=y??_,T=Array.isArray(x)&&x.length>0,D=f(()=>T?[E(v[0],x[0])]:v,[T,x]),[O,k]=m(D),A=p(``),j=p(null),{isLoading:M,show:N,hide:P,cancel:F}=s(500);d(()=>{k(D)},[D]);let I=o({enabled:!b,containerRef:j,itemRef:j,deps:[O.length]}),L=f(()=>{if(b||!T)return``;let e=D.map(e=>S(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[T,b,D]);if(d(()=>{if(b||!e()||!L||A.current===L)return;A.current=L;let n=!1;async function r(){try{N();let e=await t({ids:L.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=S(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;k(e=>e.map(e=>{let t=e.items;if(!t)return e;let n=S(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=C(r.play_count)??C(r.browse_count),o=w(r);return{...e,items:{...t,play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||P()}}return r(),()=>{n=!0,F()}},[F,L,P,b,N]),!O||O.length===0)return null;let R=O[0],z=R?.title,B=R?.moreUrl,V=I>0?I/2:160,H=!b&&M;return g(n,{className:b?`p-3 pointer-events-none`:`p-3`,children:[g(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[z&&h(r,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:z}),B&&g(a,{href:B,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,h(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),g(n,{className:`relative`,children:[O.map((e,t)=>{let{items:r}=e;return r?h(n,{ref:t===0?j:void 0,className:t>0?`mt-3`:``,children:h(l,{data:r})},`large-feature-grid-items-${t}`):null}),H&&h(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),H&&h(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:V},"aria-hidden":!0,children:h(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{D as LargeFeatureGridClient};
2
+ "use client";import{isClient as e}from"../../../../utils/common.mjs";import{pContentBatchGetVideoDetail as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/loading.mjs";import a from"../../../ui/link.mjs";import{useSingleFirstRowHeight as o}from"../../../../hooks/use-first-row-height.mjs";import{useMinDurationLoading as s}from"../../../../hooks/use-min-duration-loading.mjs";import c from"../../../../assets/icons/common/right_arrow.mjs";import{isFeedAdItem as l}from"../advertisement/feed-ad/index.mjs";import{LargeGridItemClient as u}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as d}from"./schema.mjs";import{useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";const v=[],y=d.data??[];function b(e){return e==null}function x(e,t){return b(e)?t:e}function S(e){return typeof e==`string`?e.trim():``}function C(e){return S(e)}function w(e){let t=Number(e);if(!(!Number.isFinite(t)||t<0))return t}function T(e){let t=e,n=S(e.update_status)===`0`,r=(Array.isArray(t.episodes)?t.episodes.length:0)||(Array.isArray(e.video_episodes)?e.video_episodes.length:0)||(Array.isArray(e.links)?e.links.length:0)||(w(e.episode_cnt)??0);return!Number.isFinite(r)||r<=0?``:`${n?`更新至`:`全`}${Math.floor(r)}集`}function E(e,t){return t?{...e,...t,id:x(t.id,e.id),cover:x(t.cover,e.cover),title:x(t.title,e.title),desc:x(t.desc,e.desc),play_count:x(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:x(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:x(t.tagImageUrl,e.tagImageUrl)}:e}function D(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:x(t.title,e.title),moreUrl:x(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?E(n,t.items):t.items}}function O({mode:d=`renderer`,data:b=v}){let x=d===`editor`,S=b??v,E=Array.isArray(S)&&S.length>0,O=p(()=>E?[D(y[0],S[0])]:y,[E,S]),[k,A]=h(O),j=m(``),M=m(null),{isLoading:N,show:P,hide:F,cancel:I}=s(500);f(()=>{A(O)},[O]);let L=o({enabled:!x,containerRef:M,itemRef:M,deps:[k.length]}),R=p(()=>{if(x||!E)return``;let e=O.map(e=>C(e?.items?.id)).filter(Boolean);return Array.from(new Set(e)).join(`,`)},[E,x,O]);if(f(()=>{if(x||!e()||!R||j.current===R)return;j.current=R;let n=!1;async function r(){try{P();let e=await t({ids:R.split(`,`).filter(Boolean)},{cache:`no-store`}),r=Array.isArray(e.data?.videos)?e.data.videos:[],i=new Map;if(r.forEach(e=>{let t=C(e.video_id||e.id||e.mid);t&&i.set(t,e)}),n)return;A(e=>e.map(e=>{let t=e.items;if(!t||l(t))return e;let n=C(t.id),r=n?i.get(n):void 0;if(!r)return e;let a=w(r.play_count)??w(r.browse_count),o=T(r);return{...e,items:{...t,play_count:a??t.play_count,episodeText:o||t.episodeText}}}))}catch(e){console.error(`大图推荐刷新首屏失败(client)`,e)}finally{n||F()}}return r(),()=>{n=!0,I()}},[I,R,F,x,P]),!k||k.length===0)return null;let z=k[0],B=z?.title,V=z?.moreUrl,H=L>0?L/2:160,U=!x&&N;return _(n,{className:x?`p-3 pointer-events-none`:`p-3`,children:[_(n,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[B&&g(r,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:B}),V&&_(a,{href:V,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,g(c,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),_(n,{className:`relative`,children:[k.map((e,t)=>{let{items:r}=e;return r?g(n,{ref:t===0?M:void 0,className:t>0?`mt-3`:``,children:g(u,{data:r})},`large-feature-grid-items-${t}`):null}),U&&g(n,{className:`absolute inset-0 z-10 bg-black/15 backdrop-blur-[1px] dark:bg-white/10`,"aria-hidden":!0}),U&&g(n,{className:`absolute left-1/2 -translate-x-1/2 -translate-y-1/2 z-20 pointer-events-none`,style:{top:H},"aria-hidden":!0,children:g(i,{size:`large`,showLabel:!1,className:`text-theme5`})})]})]})}export{O as LargeFeatureGridClient};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),useContentCover:e.boolean(!0,{fieldType:`switch`,label:`沿用内容海报`,required:!1}),title:e.string(void 0,{label:`内容标题`}),desc:e.string(void 0,{label:`内容简介`,required:!1}),tagImageUrl:e.string(void 0,{label:`角标图`,required:!1})})}),{label:`大图推荐数据`,required:!1,defaultValue:[{title:`推荐位名称`,moreUrl:`/channel`,moreLinkType:`content-list`,items:{id:`22edc8693ebbdaf1`,cover:`https://base-resources.guadd.fun/md-204/dcc-file/f7/f70a9f9f0c17aa9aff6c3a3e03a822db-small.jpg`,play_count:`11111`,showPlayCount:!0,episodeText:`连载中`,showEpisode:!0,useContentCover:!0,title:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`,desc:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`}}]})})),i=t(r);export{i as largeFeatureGridInspectorDefaultProps,r as largeFeatureGridInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({data:e.array(n.object({title:e.string(void 0,{label:`推荐位名称`,required:!1}),moreUrl:e.string(void 0,{label:`更多链接`,required:!1}),moreLinkType:e.string(`content-list`,{label:`更多链接类型`,required:!1}),items:e.object({id:e.string(void 0,{label:`内容ID`}),is_ad:e.boolean(!1,{fieldType:`switch`,label:`是否广告`,required:!1}),ad_advertise_url:e.string(void 0,{label:`广告跳转链接`,required:!1}),ad_advertise_icon:e.string(void 0,{label:`广告素材地址`,required:!1}),cover:e.string(void 0,{label:`封面`}),play_count:e.string(void 0,{label:`播放量`,required:!1}),showPlayCount:e.boolean(!0,{fieldType:`switch`,label:`展示播放量`,required:!1}),episodeText:e.string(void 0,{label:`集数文案`,required:!1}),showEpisode:e.boolean(!0,{fieldType:`switch`,label:`展示集数`,required:!1}),useContentCover:e.boolean(!0,{fieldType:`switch`,label:`沿用内容海报`,required:!1}),title:e.string(void 0,{label:`内容标题`}),desc:e.string(void 0,{label:`内容简介`,required:!1}),tagImageUrl:e.string(void 0,{label:`角标图`,required:!1})})}),{label:`大图推荐数据`,required:!1,defaultValue:[{title:`推荐位名称`,moreUrl:`/channel`,moreLinkType:`content-list`,items:{id:`22edc8693ebbdaf1`,cover:`https://base-resources.guadd.fun/md-204/dcc-file/f7/f70a9f9f0c17aa9aff6c3a3e03a822db-small.jpg`,play_count:`11111`,showPlayCount:!0,episodeText:`连载中`,showEpisode:!0,useContentCover:!0,title:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`,desc:`穷小伙一睁眼穿越古代,娶个老婆就能得到奖励,后宫3000宠都宠不过来!谁料女帝主动送上门来,征服女帝可以直接开终极宝箱,不用选择全都可以!`}}]})})),i=t(r);export{i as largeFeatureGridInspectorDefaultProps,r as largeFeatureGridInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Text as a}from"../../../../ui/text.mjs";import{Tabs as o,TabsList as s,TabsTrigger as c}from"../../../../ui/tabs.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{profileMainMineTabOptions as u,profileMainProfileTabOptions as d}from"./variants.mjs";import{useEffect as f,useMemo as p,useRef as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";import{parseAsString as v,useQueryState as y}from"nuqs";function b(e){return e?[...u]:[...d]}function x(e,t){let n=b(t);return n.includes(e)?e:n[0]}function S(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function C(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(S(t))return t;t=t.parentElement}return null}function w(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function T(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function E({profileId:u,currentUserId:d,isMine:S,renderMode:E,className:D,children:O}){let k=_(`components.pages.profile`),A=m(null),j=l(e=>e.open),M=n(e=>e.userId),N=b(S),[P,F]=y(`tab`,v.withDefault(`collect`)),I=p(()=>x(P,S),[S,P]),L=S?d||M||``:u,R=p(()=>`profile-scroll:${L||(S?`mine`:`guest`)}:${I}`,[S,I,L]);f(()=>{P!==I&&F(I,{shallow:!1})},[I,F,P]),f(()=>{if(typeof window>`u`)return;let e=C(A.current),t=window.sessionStorage.getItem(R),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{T(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(R,String(w(e))),r=!1}))};return e?(e.addEventListener(`scroll`,i,{passive:!0}),()=>{e.removeEventListener(`scroll`,i)}):(window.addEventListener(`scroll`,i,{passive:!0}),()=>{window.removeEventListener(`scroll`,i)})},[R]);let z={collect:k(`client.collect`),like:k(`client.like`),history:k(`client.history`)},B=O;return E===`login-required`?B=g(r,{className:`flex gap-4 flex-col items-center justify-center py-10 text-center`,children:[h(a,{className:`text-base text-text1`,children:k(`client.loginToView`)}),h(t,{size:`lg`,variant:`secondary`,onClick:j,children:k(`client.loginNow`)})]}):E===`privacy-collect`?B=h(i,{type:`no-content`,text:k(`client.collectionNotPublic`)}):E===`privacy-like`&&(B=h(i,{type:`no-content`,text:k(`client.likeNotPublic`)})),g(r,{ref:A,className:e(D),children:[h(r,{className:`border-b bg-bg1 sticky z-10 top-0 border-text1/5 h-10`,children:h(o,{value:I,onValueChange:e=>{F(e,{shallow:!1})},className:`w-fit`,children:h(s,{variant:`default`,className:`inline-flex h-9`,children:N.map(e=>h(c,{value:e,className:`p-2.5 !text-base !w-fit data-active:!text-lg data-active:font-bold`,children:z[e]},e))})})}),h(r,{className:`p-2`,children:B})]})}export{E as UserProfileMainShell};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{Box as r}from"../../../../ui/box.mjs";import{EmptyState as i}from"../../../../ui/empty.mjs";import{Text as a}from"../../../../ui/text.mjs";import{Tabs as o,TabsList as s,TabsTrigger as c}from"../../../../ui/tabs.mjs";import{useLoginModalStore as l}from"../../../../../store/modules/login-modal-store.mjs";import{profileMainMineTabOptions as u,profileMainProfileTabOptions as d}from"./variants.mjs";import{useEffect as f,useMemo as p,useRef as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";import{parseAsString as v,useQueryState as y}from"nuqs";function b(e){return e?[...u]:[...d]}function x(e,t){let n=b(t);return n.includes(e)?e:n[0]}function S(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function C(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(S(t))return t;t=t.parentElement}return null}function w(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function T(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function E({profileId:u,currentUserId:d,isMine:S,renderMode:E,className:D,children:O}){let k=_(`components.pages.profile`),A=m(null),j=l(e=>e.open),M=n(e=>e.userId),N=m(``),P=b(S),[F,I]=y(`tab`,v.withDefault(`collect`)),L=p(()=>x(F,S),[S,F]),R=d||M||``,z=S?R:u,B=p(()=>`profile-scroll:${z||(S?`mine`:`guest`)}:${L}`,[S,L,z]);f(()=>{F!==L&&I(L,{shallow:!1})},[L,I,F]),f(()=>{if(typeof window>`u`)return;let e=`${S?`mine`:`profile`}:${z||``}:${L}`;N.current!==e&&(N.current=e,window.WebSDK?.track?.({event:`recommend_list_click`,payload:{page_type:S?`mine`:`profile`,profile_id:u||z||``,current_user_id:R,tab:L,page_source:window.location?.pathname||``}}))},[S,u,R,L,z]),f(()=>{if(typeof window>`u`)return;let e=C(A.current),t=window.sessionStorage.getItem(B),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{T(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(B,String(w(e))),r=!1}))};return e?(e.addEventListener(`scroll`,i,{passive:!0}),()=>{e.removeEventListener(`scroll`,i)}):(window.addEventListener(`scroll`,i,{passive:!0}),()=>{window.removeEventListener(`scroll`,i)})},[B]);let V={collect:k(`client.collect`),like:k(`client.like`),history:k(`client.history`)},H=O;return E===`login-required`?H=g(r,{className:`flex gap-4 flex-col items-center justify-center py-10 text-center`,children:[h(a,{className:`text-base text-text1`,children:k(`client.loginToView`)}),h(t,{size:`lg`,variant:`secondary`,onClick:j,children:k(`client.loginNow`)})]}):E===`privacy-collect`?H=h(i,{type:`no-content`,text:k(`client.collectionNotPublic`)}):E===`privacy-like`&&(H=h(i,{type:`no-content`,text:k(`client.likeNotPublic`)})),g(r,{ref:A,className:e(D),children:[h(r,{className:`border-b bg-bg1 sticky z-10 top-0 border-text1/5 h-10`,children:h(o,{value:L,onValueChange:e=>{I(e,{shallow:!1})},className:`w-fit`,children:h(s,{variant:`default`,className:`inline-flex h-9`,children:P.map(e=>h(c,{value:e,className:`p-2.5 !text-base !w-fit data-active:!text-lg data-active:font-bold`,children:V[e]},e))})})}),h(r,{className:`p-2`,children:H})]})}export{E as UserProfileMainShell};
@@ -0,0 +1,21 @@
1
+
2
+ //#region components/common/analytics-init/analytics-init.d.ts
3
+ declare global {
4
+ interface Window {
5
+ WebSDK?: {
6
+ init: (options?: Record<string, unknown>) => unknown;
7
+ track: (event: {
8
+ event: string;
9
+ payload?: Record<string, unknown>;
10
+ }) => Promise<unknown>;
11
+ flush: () => Promise<unknown>;
12
+ };
13
+ __funhubWebSdkLoader?: Promise<void>;
14
+ }
15
+ }
16
+ /**
17
+ * 在应用根部初始化埋点 SDK。
18
+ */
19
+ declare function AnalyticsInit(): null;
20
+ //#endregion
21
+ export { AnalyticsInit };
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{useEffect as t,useRef as n}from"react";const r=`funhub-web-sdk-script`;function i(e){return{appId:process.env.NEXT_PUBLIC_TRACK_APP_ID||`1`,uid:e||``,channel:process.env.NEXT_PUBLIC_TRACK_CHANNEL||`test`,domain:process.env.NEXT_PUBLIC_TRACK_DOMAIN||`https://api.shuifeng.cc`,prod:process.env.NODE_ENV===`production`}}function a(){return typeof window>`u`||window.WebSDK?Promise.resolve():(window.__funhubWebSdkLoader||(window.__funhubWebSdkLoader=new Promise((e,t)=>{let n=document.getElementById(r);if(n){n.addEventListener(`load`,()=>e(),{once:!0}),n.addEventListener(`error`,()=>t(Error(`load web sdk failed`)),{once:!0});return}let i=document.createElement(`script`);i.id=r,i.async=!0,i.src=`/web-sdk-v1.js`,i.onload=()=>e(),i.onerror=()=>t(Error(`load web sdk failed`)),document.head.appendChild(i)})),window.__funhubWebSdkLoader)}function o(){let r=e(e=>e.userId),o=n(``);return t(()=>{let e=!1;async function t(){if(await a(),e||!window.WebSDK?.init)return;let t=i(r),n=JSON.stringify(t);n!==o.current&&(window.WebSDK.init(t),o.current=n)}return t(),()=>{e=!0}},[r]),null}export{o as AnalyticsInit};
@@ -0,0 +1,2 @@
1
+
2
+ import { AnalyticsInit } from "./analytics-init.mjs";