@funhub/platform 0.1.163 → 0.2.0-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.
- package/dist/assets/icons/channel-list/channel-active-indicator.mjs +2 -0
- package/dist/assets/icons/common/header-menu.mjs +2 -0
- package/dist/assets/icons/common/header-search-icon.mjs +2 -0
- package/dist/assets/icons/common/right_arrow_thin.mjs +2 -0
- package/dist/assets/icons/marquee-close.mjs +2 -0
- package/dist/assets/icons/marquee-speaker.mjs +2 -0
- package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +2 -0
- package/dist/biz.d.mts +34 -2
- package/dist/biz.mjs +1 -1
- package/dist/common.d.mts +5 -2
- package/dist/common.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-match.d.mts +98 -0
- package/dist/components/biz/business/advertisement/ad-match.mjs +2 -0
- package/dist/components/biz/business/advertisement/ad-provider.d.mts +39 -0
- package/dist/components/biz/business/advertisement/ad-provider.mjs +2 -0
- package/dist/components/biz/business/advertisement/ad-query.d.mts +29 -0
- package/dist/components/biz/business/advertisement/ad-query.mjs +2 -0
- package/dist/components/biz/business/advertisement/ad-runtime-provider.d.mts +29 -0
- package/dist/components/biz/business/advertisement/ad-runtime-provider.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/client.d.mts +18 -0
- package/dist/components/biz/business/advertisement/banner-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +30 -0
- package/dist/components/biz/business/advertisement/banner-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +84 -0
- package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/banner-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +39 -0
- package/dist/components/biz/business/advertisement/feed-ad/index.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +21 -0
- package/dist/components/biz/business/advertisement/floating-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/floating-ad/material.d.mts +25 -0
- package/dist/components/biz/business/advertisement/floating-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +84 -0
- package/dist/components/biz/business/advertisement/floating-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/floating-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/client.d.mts +16 -0
- package/dist/components/biz/business/advertisement/icon-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +29 -0
- package/dist/components/biz/business/advertisement/icon-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +78 -0
- package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/icon-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/index.d.mts +31 -0
- package/dist/components/biz/business/advertisement/popup-ad/client.d.mts +14 -0
- package/dist/components/biz/business/advertisement/popup-ad/client.mjs +64 -0
- package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +29 -0
- package/dist/components/biz/business/advertisement/popup-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +54 -0
- package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/popup-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/popup-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/client.d.mts +15 -0
- package/dist/components/biz/business/advertisement/text-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/text-ad/material.d.mts +27 -0
- package/dist/components/biz/business/advertisement/text-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +62 -0
- package/dist/components/biz/business/advertisement/text-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/text-ad/server.mjs +2 -0
- package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
- package/dist/components/biz/business/channel-list/client.mjs +1 -1
- package/dist/components/biz/business/channel-list/default-props.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/registry.d.mts +36 -1
- package/dist/components/biz/business/detail/shared/registry.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +1 -13
- package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.d.mts +8 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/index.d.mts +5 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.d.mts +45 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.d.mts +9 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.mjs +2 -0
- package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.d.mts +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +4 -3
- package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/header-action.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/header-shell.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/search.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
- package/dist/components/biz/business/hot-recommend/client.d.mts +17 -0
- package/dist/components/biz/business/hot-recommend/client.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/index.d.mts +5 -0
- package/dist/components/biz/business/hot-recommend/material.d.mts +24 -0
- package/dist/components/biz/business/hot-recommend/material.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/schema.d.mts +23 -0
- package/dist/components/biz/business/hot-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/hot-recommend/server.mjs +2 -0
- package/dist/components/biz/business/index.d.mts +36 -1
- package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
- package/dist/components/biz/business/marquee/client.mjs +1 -1
- package/dist/components/biz/business/marquee/marquee.module.mjs +2 -6
- package/dist/components/biz/business/profile/index.d.mts +1 -1
- package/dist/components/biz/business/profile/profile-header/client.d.mts +2 -1
- package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/index.d.mts +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +2 -0
- package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +5 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
- package/dist/components/biz/business/ranking-recommend/client.d.mts +15 -0
- package/dist/components/biz/business/ranking-recommend/client.mjs +70 -0
- package/dist/components/biz/business/ranking-recommend/material.d.mts +23 -0
- package/dist/components/biz/business/ranking-recommend/material.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/schema.d.mts +23 -0
- package/dist/components/biz/business/ranking-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/ranking-recommend/server.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/shared.d.mts +15 -0
- package/dist/components/biz/business/ranking-recommend/shared.mjs +2 -0
- package/dist/components/biz/business/search-history/client.mjs +1 -1
- package/dist/components/biz/business/search-history/schema.mjs +1 -1
- package/dist/components/biz/business/search-input/client.mjs +1 -1
- package/dist/components/biz/business/search-waterfall-recommend/client.d.mts +9 -0
- package/dist/components/biz/business/search-waterfall-recommend/client.mjs +2 -0
- package/dist/components/biz/business/search-waterfall-recommend/index.d.mts +4 -0
- package/dist/components/biz/business/search-waterfall-recommend/material.d.mts +40 -0
- package/dist/components/biz/business/search-waterfall-recommend/material.mjs +2 -0
- package/dist/components/biz/business/search-waterfall-recommend/server.d.mts +8 -0
- package/dist/components/biz/business/search-waterfall-recommend/server.mjs +2 -0
- package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/common/collection-popup/create-collection-sheet.d.mts +41 -0
- package/dist/components/common/collection-popup/create-collection-sheet.mjs +2 -0
- package/dist/components/common/collection-popup/index.d.mts +1 -0
- package/dist/components/common/collection-popup/index.mjs +1 -1
- package/dist/components/common/icons/setting.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-list-item.d.mts +6 -0
- package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-list.d.mts +6 -0
- package/dist/components/common/list/collection-list/collection-list.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-select-icon.mjs +2 -0
- package/dist/components/common/list/waterfall-recommend/index.d.mts +2 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +99 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +2 -0
- package/dist/components/common/series-episodes/index.d.mts +3 -1
- package/dist/components/common/series-episodes/index.mjs +1 -1
- package/dist/components/common/tab-bar/index.mjs +1 -1
- package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +2 -0
- package/dist/components/pages/collection-detail/detail.mjs +1 -1
- package/dist/components/pages/edit/page.mjs +1 -1
- package/dist/components/pages/home/client.mjs +1 -1
- package/dist/components/pages/search/page-client.mjs +1 -1
- package/dist/components/pages/search/search-result/index.mjs +1 -1
- package/dist/components/pages/search/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
- package/dist/components/pages/search/search-result/shared.mjs +2 -0
- package/dist/components/pages/search/top-header.mjs +1 -1
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search-result/search-empty.mjs +2 -0
- package/dist/components/pages/search-result/search-tab.mjs +1 -1
- package/dist/components/pages/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search-result/search-video-info.mjs +2 -0
- package/dist/components/pages/search-result/shared.mjs +2 -0
- package/dist/components/pages/search-result/top-header.mjs +2 -0
- package/dist/components/pages/settings/_components/settings.mjs +1 -1
- package/dist/components/pages/video-list/video-list-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-recommend-item.mjs +2 -0
- package/dist/components/pages/video-list/video-list-skeleton.d.mts +2 -3
- package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
- package/dist/components/ui/avatar.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/box.d.mts +1 -1
- package/dist/components/ui/button.d.mts +1 -1
- package/dist/components/ui/image.d.mts +4 -4
- package/dist/hooks.d.mts +1 -1
- package/dist/i18n/locales/en.mjs +2 -2
- package/dist/i18n/locales/zh-CN.mjs +2 -2
- package/dist/materials.d.mts +12 -1
- package/dist/materials.mjs +1 -1
- package/dist/service/advertisement.d.mts +176 -0
- package/dist/service/advertisement.mjs +2 -0
- package/dist/service/generated/client.d.mts +30 -2
- package/dist/service/generated/client.mjs +1 -1
- package/dist/service/generated/tanstack.d.mts +37 -2
- package/dist/service/generated/tanstack.mjs +1 -1
- package/dist/service.d.mts +4 -3
- package/dist/service.mjs +1 -1
- package/dist/types.d.mts +437 -7
- package/dist/utils/helper.d.mts +1 -1
- package/dist/utils/helper.mjs +1 -1
- package/dist/utils/schema/material.d.mts +1 -0
- package/package.json +1 -1
- package/theme.css +170 -59
- package/dist/assets/icons/detail/collect_nor.mjs +0 -2
- package/dist/assets/icons/detail/collect_sel.mjs +0 -2
- package/dist/assets/icons/detail/share.mjs +0 -2
- package/dist/assets/icons/marquee-enter.mjs +0 -2
- package/dist/assets/icons/right_arrow.mjs +0 -2
- package/dist/assets/icons/search/avatar.mjs +0 -2
- package/dist/assets/images/marquee.mjs +0 -2
- package/dist/components/biz/business/detail/shared/detail-introduction.mjs +0 -2
- package/dist/components/common/collection-popup/collection-create-modal.mjs +0 -2
- package/dist/components/common/skeleton/search-video-card-skeleton.mjs +0 -2
- package/dist/components/pages/search/search-utils.mjs +0 -2
- package/dist/components/pages/search-result/search-result-skeleton.mjs +0 -2
- package/dist/components/pages/search-result/search-video.mjs +0 -2
- package/dist/components/pages/video-list/video-list-item.mjs +0 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
import { InferSchemaProps, SchemaHasDefaultValue } from "../../../../utils/schema/schema.mjs";
|
|
3
|
+
import "../../../../utils.mjs";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
|
|
6
|
+
//#region components/biz/business/ranking-recommend/schema.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* 推荐榜物料属性定义
|
|
9
|
+
*/
|
|
10
|
+
declare const rankingRecommendInspectorPropsSchema: z.ZodObject<{
|
|
11
|
+
readonly title: z.ZodString & SchemaHasDefaultValue;
|
|
12
|
+
readonly items: z.ZodArray<z.ZodObject<{
|
|
13
|
+
id: z.ZodString & SchemaHasDefaultValue;
|
|
14
|
+
}, z.core.$strip>> & SchemaHasDefaultValue;
|
|
15
|
+
} & {
|
|
16
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
17
|
+
renderer: "renderer";
|
|
18
|
+
editor: "editor";
|
|
19
|
+
}>>;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
type RankingRecommendInspectorProps = InferSchemaProps<typeof rankingRecommendInspectorPropsSchema>;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { RankingRecommendInspectorProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import{z as n}from"zod";const r=e(e=>({title:e.string(`推荐榜`,{label:`标题名称`,description:`支持输入,中/英/数/符,6个字符`}),items:e.array(n.object({id:e.string(``,{label:`内容ID`})}),{label:`推荐榜内容`,defaultValue:[{id:`22edc8693ebbdaf1`},{id:`22edc8693ebbdaf1`}]})}));t(r);export{r as rankingRecommendInspectorPropsSchema};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
import { RankingRecommendProps } from "./client.mjs";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region components/biz/business/ranking-recommend/server.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* 推荐榜物料组件 - 服务端部分
|
|
8
|
+
*/
|
|
9
|
+
declare function RankingRecommendServer(props: RankingRecommendProps): Promise<react_jsx_runtime0.JSX.Element>;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { RankingRecommendServer };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
import{pContentBatchGetVideoDetail as e}from"../../../../service/generated/client.mjs";import{buildRankingCardList as t,resolveOrderedContentIds as n}from"./shared.mjs";import{RankingRecommendClient as r}from"./client.mjs";import{jsx as i}from"react/jsx-runtime";const a=[];async function o(o){let{mode:s=`renderer`,items:c=a,...l}=o,u=o.prefetchItems;if(s===`renderer`){let r=n(c),i=Array.from(new Set(r));if(i.length>0)try{let n=await e({ids:i},{cache:`no-store`});u=t(Array.isArray(n.data?.videos)?n.data.videos:[],r)}catch(e){console.warn(`[ranking-recommend] server prefetch failed:`,e)}}return i(r,{...l,items:c,mode:s,prefetchItems:u})}export{o as RankingRecommendServer};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
//#region components/biz/business/ranking-recommend/shared.d.ts
|
|
3
|
+
/** 推荐榜卡片渲染数据。 */
|
|
4
|
+
interface RankingCardItem {
|
|
5
|
+
contentId: string;
|
|
6
|
+
title: string;
|
|
7
|
+
cover: string;
|
|
8
|
+
category: string;
|
|
9
|
+
heatText: string;
|
|
10
|
+
score: number;
|
|
11
|
+
statusText: string;
|
|
12
|
+
href: string;
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { RankingCardItem };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
import e from"../../../../utils/get-res-url.mjs";import{getPostDetailPagePath as t}from"../../../../utils/tools.mjs";function n(e){return typeof e==`string`?e.trim():String(e??``).trim()}function r(e){return Array.isArray(e)?e.map(e=>n(e?.id)).filter(Boolean):[]}function i(t,n=``){let r=typeof t==`string`?t.trim():``;if(!r)return n;if(r.startsWith(`http`)||r.startsWith(`//`)||r.startsWith(`data:`))return r;let i=e();return i?`${i}${r.startsWith(`/`)?r:`/${r}`}`:r}function a(e){return!e||!Number.isFinite(e)||e<=0?``:e>=1e4?`${(e/1e4).toFixed(e>=1e5?0:1).replace(/\.0$/,``)}万热度`:e>=1e3?`${(e/1e3).toFixed(1).replace(/\.0$/,``)}K热度`:`${Math.floor(e)}热度`}function o(e){let t=n(e.update_status);return t===`1`?`完结`:t===`0`?`连载中`:``}function s(e){let r=n(e.id||e.mid||e.video_id),i=Number(e.play_count??e.browse_count??0),s=Number(e.score??0);return{contentId:r,title:n(e.name),cover:n(e.img_y||e.img_x),category:n(e.cat_name),heatText:a(i),score:Number.isFinite(s)?s:0,statusText:o(e),href:r?t({id:r,contentType:0}):`#`}}function c(e,t){let r=new Map;return e.forEach(e=>{let t=n(e.id||e.mid||e.video_id);t&&r.set(t,e)}),t.map(e=>r.get(e)).filter(e=>!!e).map(s)}export{c as buildRankingCardList,n as normalizeContentId,i as resolveCoverDisplaySrc,r as resolveOrderedContentIds};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import
|
|
2
|
+
"use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{eventKey as a}from"../../../../constants/event-key.mjs";import{useSearchHistory as o}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as s}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as c}from"../../../common/icons/delete.mjs";import{useLayoutEffect as l,useMemo as u,useRef as d,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{usePathname as h,useSearchParams as g}from"next/navigation";function _(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function v(v){let{title:y,rows:b=2,clearText:x,confirmDescription:S,onHistoryClick:C,mode:w=`renderer`}=v,T=w===`editor`,E=y??`搜索历史`,D=x??`清空`,O=S??`确定要清除所有搜索历史吗?`,k=u(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[A,j]=f(!1),[M,N]=f(null),P=d(null),F=d([]),I=d(null),L=n(),R=h(),z=g(),{userInfo:B}=t(),{history:V,addHistory:H,clearHistory:U}=o({storageKey:B?.user_id||`guest`}),W=()=>{U(),j(!1),e.emit(a.SEARCH_HISTORY_UPDATE)},G=u(()=>(V.length?V:w===`editor`?k:[]).slice(0,b*10),[V,w,k,b]);if(l(()=>{if(G.length===0){N(null);return}let e=P.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];F.current.slice(0,G.length).forEach(e=>{if(!e)return;let r=e.getBoundingClientRect(),i=Math.round(r.top-t.top),a=Math.round(r.bottom-t.top),o=n.find(e=>Math.abs(e.top-i)<=1);if(o){o.bottom=Math.max(o.bottom,a);return}n.push({top:i,bottom:a})}),n.sort((e,t)=>e.top-t.top);let r=n.slice(0,b).reduce((e,t)=>Math.max(e,t.bottom),0);N(e=>e===r?e:r)},n=()=>{I.current!=null&&cancelAnimationFrame(I.current),I.current=requestAnimationFrame(()=>{I.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{I.current!=null&&(cancelAnimationFrame(I.current),I.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),F.current.slice(0,G.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),I.current!=null&&(cancelAnimationFrame(I.current),I.current=null)}},[G,b]),G.length===0)return null;let K=e=>{if(H(e),C){C(e);return}let t=new URLSearchParams(z.toString());t.set(`q`,e);let n=R.includes(`/search-result`)?R:`/search-result`;L.push(`${n}?${t.toString()}`)};return m(r,{className:T?`mt-[24px] px-[16px] py-[16px]`:`mt-[24px] px-[16px] py-0`,children:[m(r,{className:`mb-[15px] flex items-center justify-between`,children:[p(i,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal ${T?`text-[#1F1F1F]`:`text-white`}`,children:E}),p(`button`,{type:`button`,"aria-label":D,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center ${T?`text-[#1F1F1F]/50`:`text-white/50`}`,onClick:()=>j(!0),children:p(c,{className:`h-[24px] w-[24px]`})})]}),p(r,{ref:P,className:`flex flex-wrap content-center items-center gap-[6px] overflow-hidden`,style:M?{maxHeight:`${M}px`}:void 0,children:G.map((e,t)=>p(r,{ref:e=>{F.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${T?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>K(e),children:p(i,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] ${T?`text-[#1F1F1F]`:`text-white`}`,children:_(e,8)})},t))}),p(s,{open:A,onOpenChange:j,onConfirm:W,title:``,description:O})]})}export{v as SearchHistoryClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";const t=e(e=>({title:e.string(`搜索历史`,{label:`标题名称`,description:`支持输入,中/英/数/符,6个字符`}),rows:e.number(
|
|
2
|
+
import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";const t=e(e=>({title:e.string(`搜索历史`,{label:`标题名称`,description:`支持输入,中/英/数/符,6个字符`}),rows:e.number(2,{label:`展示行数`})}));export{t as searchHistoryInspectorPropsSchema};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{
|
|
2
|
+
"use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Box as t}from"../../../ui/box.mjs";import{Input as n}from"../../../ui/input.mjs";import{LeftArrowIcon as r}from"../../../common/icons/left-arrow.mjs";import i from"../../../../assets/icons/search.mjs";import a from"../../../../assets/icons/clear.mjs";import{useCallback as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{usePathname as u,useSearchParams as d}from"next/navigation";function f(e){if(!e||typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>e==null?``:String(e).trim()).filter(Boolean):[]}catch{return[]}}function p(p){let{placeholder:m,defaultPlaceholder:h,searchLabel:g,storageKey:_=`guest`,onSearch:v,mode:y=`renderer`}=p,b=m||(h??`请输入搜索内容`),x=g??`搜索`,S=y===`editor`,[C,w]=s(``),T=e(),E=u(),D=d(),O=`search_history_${_}`,k=o(e=>{if(S)return;let t=e.trim();if(t){try{let e=[t,...f(localStorage.getItem(O)).filter(e=>e!==t)].slice(0,20);localStorage.setItem(O,JSON.stringify(e))}catch(e){console.error(`Failed to save search history`,e)}if(v)v(t);else{let e=new URLSearchParams(D.toString());e.set(`q`,t);let n=E.includes(`/search-result`)?E:`/search-result`;T.push(`${n}?${e.toString()}`)}}},[O,S,v,E,T,D]),A=()=>{S||T.back()};return l(t,{className:`flex h-[66px] w-full items-center gap-[8px] px-[16px] py-[16px]${S?` pointer-events-none`:``}`,children:[c(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:c(r,{className:`h-[16px] w-[16px]`})}),l(t,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[l(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[c(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:c(i,{className:`h-[14px] w-[14px] text-white/60`})}),c(n,{className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white !caret-white placeholder:!text-white/90 focus-visible:!ring-0`,placeholder:b,value:C,maxLength:128,onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k(C))}}),C&&c(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:c(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),c(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white active:opacity-90`,onClick:()=>k(C),children:x})]})]})}export{p as SearchInputClient};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
import { ImageTextRecommendProps } from "../image-text-recommend/client.mjs";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region components/biz/business/search-waterfall-recommend/client.d.ts
|
|
6
|
+
type SearchWaterfallRecommendProps = ImageTextRecommendProps;
|
|
7
|
+
declare function SearchWaterfallRecommendClient(props: SearchWaterfallRecommendProps): react_jsx_runtime0.JSX.Element | null;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { SearchWaterfallRecommendClient, SearchWaterfallRecommendProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";import e from"../../../../utils/get-res-url.mjs";import{pContentBatchGetVideoDetail as t,pContentGetPopularVideoList as n}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as r,pContentGetPopularVideoListKey as i}from"../../../../service/generated/tanstack.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as a,buildImageTextRecommendChosenTags as o,buildImageTextRecommendRemoteMap as s,buildImageTextRecommendSmartPicked as c,getImageTextRecommendFixedIds as l,getImageTextRecommendLayoutTags as u,resolveImageTextRecommendVideoId as ee}from"../../../../hooks/image-text-recommend.mjs";import{useRequest as d}from"../../../../hooks/query/use-query.mjs";import{WaterfallRecommend as f}from"../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import te from"../../../../assets/images/frame.mjs";import{buildSmartPopularQuery as ne,buildStableChosenTags as re}from"../image-text-recommend/shared/query.mjs";import{useCallback as p,useEffect as m,useMemo as h,useRef as ie,useState as g}from"react";import{jsx as ae}from"react/jsx-runtime";import{useTranslations as oe}from"next-intl";const _=[],se=[{contentId:`mock-1`,title:`热门视频标题 1`,cover:``,badge:``,episodeOrDurationText:`更新至12集`,playCountText:`12.5k`,showPlayCount:!0,showEpisodes:!0,detailPath:``,score:8.5,cardKind:`tall`},{contentId:`mock-2`,title:`热门视频标题 2`,cover:``,badge:``,episodeOrDurationText:`02:35`,playCountText:`3.2k`,showPlayCount:!0,showEpisodes:!0,detailPath:``,score:7.2,cardKind:`short`},{contentId:`mock-3`,title:`热门视频标题 3`,cover:``,badge:``,episodeOrDurationText:`全24集`,playCountText:`45.8k`,showPlayCount:!0,showEpisodes:!0,detailPath:``,score:9.1,cardKind:`short`},{contentId:`mock-4`,title:`热门视频标题 4`,cover:``,badge:``,episodeOrDurationText:`01:20:00`,playCountText:`8.7k`,showPlayCount:!0,showEpisodes:!0,detailPath:``,score:6.8,cardKind:`tall`},{contentId:`mock-5`,title:`热门视频标题 5`,cover:``,badge:``,episodeOrDurationText:`更新至6集`,playCountText:`1.1k`,showPlayCount:!0,showEpisodes:!0,detailPath:``,cardKind:`tall`},{contentId:`mock-6`,title:`热门视频标题 6`,cover:``,badge:``,episodeOrDurationText:`05:42`,playCountText:`520`,showPlayCount:!0,showEpisodes:!0,detailPath:``,score:7.9,cardKind:`short`}];function ce(e){return typeof e==`string`?e:e.src}function v(t,n){let r=typeof t==`string`?t.trim():``;if(!r)return n||``;if(r.startsWith(`http`)||r.startsWith(`//`)||r.startsWith(`data:`)||r.startsWith(`/`))return r;let i=e();return i?`${i}/${r.replace(/^\/+/,``)}`:r}function y(e){if(e==null)return``;let t=e;return t.img_y||t.media?.img_y||t.img_x||t.media?.img_x||``}function b(e){if(e==null)return``;let t=e;return String(t.name||``).trim()}function x(e,t=!1){let n=e,r=t?n.type:n.content_type;return typeof r==`number`?r:n.is_more_link===!0||Number(n.episode_cnt||n.episode_count||n.episodes?.length||n.links?.length||0)>1?2:1}function S(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 C(e,t){let n=e,r=n?.links?.length??0;if(!Number.isFinite(r)||r<=0)return``;let i=n.update_status;return t(r,i===0||i===`0`)}function le(e,t,n){return e?x(e,n)===2&&t?C(e,t):S(Number(e.duration??e.detail?.duration??0)):``}function ue(e,t){if(!(e??``).trim())return``;let n=encodeURIComponent((t??``).trim()||``);return`/video/${e.trim()}/${n}/episode/1`}function de(e,t){if(!e)return``;let n=e,r=t?Number(n.static?.browse_count??0):Number(n.browse_count??0);if(!Number.isFinite(r)||r<=0)return``;if(r>=1e6){let e=(r/1e6).toFixed(1);return e.endsWith(`.0`)?`${e.slice(0,-2)}M`:`${e}M`}if(r>=1e3){let e=(r/1e3).toFixed(1);return e.endsWith(`.0`)?`${e.slice(0,-2)}k`:`${e}k`}return Math.floor(r).toString()}function fe(){let e=new Date,t=new Date(e);return t.setHours(24,0,0,0),t.getTime()-e.getTime()}function pe(e){return String(e?.img_type??``).trim().toLowerCase()===`long`?`short`:`tall`}function me(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function he(e){let t=[],n=[],r=0,i=0;return e.forEach(e=>{let a=(e.cardKind===`short`?120:218)+16;r<=i?(t.push(e),r+=a):(n.push(e),i+=a)}),{left:t,right:n}}function w(e){let{title:x,items:S=_,commonPlayCount:C,commonEpisodes:w,layout:T,mode:E=`renderer`}=e,D=oe(`components.biz.business.imageTextRecommend`),O=E===`renderer`,k=E===`editor`,[A,j]=g({}),[M,N]=g([]),[P,F]=g(0),[I,L]=g(void 0),R=ie(null),z=!!T?.enabled,B=h(()=>u(T),[T]),V=S?.length??0,H=h(()=>l(S,z),[z,S]),U=h(()=>H.slice(0,a),[H]),W=h(()=>re(B,V),[B,V]),G=h(()=>ne(W,V),[W,V]),{data:K}=d(i(G),()=>n(G),{enabled:O&&!k&&z&&S.length>0,staleTime:1/0}),{data:q}=d(r({ids:U}),()=>t({ids:U}),{enabled:O&&!k&&!z&&U.length>0,staleTime:1/0}),J=h(()=>z&&V>a?Math.ceil(V/a):H.length>0?Math.ceil(H.length/a):0,[z,V,H.length]),Y=p((e,t)=>D(t?`updatedTo`:`allEpisodes`,{count:e}),[D]),ge=p(async(e,n)=>{if(e.length===0)return;let r=s((await t({ids:e})).data?.videos??[]);j(e=>n?{...e,...r}:r)},[]);m(()=>{if(k)return;if(z){let e=K?.data?.videos??[];V>a?(N(e.slice(0,a)),L(K?.data?.cursor),F(e.length>0?1:0)):(N(c(e,W,V)),F(0)),j({});return}if(U.length===0){j({}),N([]),F(0),L(void 0);return}let e=q?.data?.videos??[];j(s(e)),N([]),L(void 0),F(e.length>0?1:0)},[k,z,K,q,W,U,V]),m(()=>{if(k||J<1||P<1||P>=J)return;let e=R.current;if(!e)return;let t=new IntersectionObserver(e=>{let[t]=e;if(!t?.isIntersecting)return;let r=P;if(z){let e=o(B,V);n({page_size:a,cursor:I,tags:e.length?Array.from(new Set(e)):void 0}).then(e=>{let t=e.data?.videos??[];N(e=>[...e,...t.slice(0,a)]),L(e.data?.cursor),F(r+1)}).catch(()=>{})}else{let e=r*a,t=H.slice(e,e+a);t.length>0&&(ge(t,!0),F(r+1))}},{root:null,rootMargin:`0px`,threshold:0});return t.observe(e),()=>t.disconnect()},[k,z,H,P,J,B,V,I,ge]),m(()=>{if(k||!z||V<=0)return;let e,t=!1;function r(){e=window.setTimeout(()=>{let e=o(B,V);n({page_size:Math.max(20,V*10),tags:e.length?Array.from(new Set(e)):void 0}).then(n=>{t||N(c(n.data?.videos??[],e,V))}).catch(()=>{t||N([])}).finally(()=>{t||r()})},fe())}return r(),()=>{t=!0,e!==void 0&&window.clearTimeout(e)}},[k,z,B,V]);let X=h(()=>!S||S.length===0?_:k?S:z&&V>a?S.slice(0,M.length):S,[S,k,z,V,M.length]),Z=h(()=>X.length?k?se.slice(0,X.length):X.map((e,t)=>{let n=String(e?.contentId??``).trim(),r=z?M[t]:n?A[n]:void 0,i=n||(r?ee(r):``),a=z?r?b(r):String(e?.title??``).trim():String(e?.title??``).trim()||(r?b(r):``),o=String(e?.cover??``).trim(),s=z?y(r)||o:o||(e?.useVideoPoster?y(r):``),c=le(r,Y,z),l=de(r,z),u=E===`renderer`?ue(i,a):``,d=z?!!C:!!e.showPlayCount,f=z?!!w:!!e.showEpisodes;return{contentId:i,title:a,cover:s,badge:z?``:String(e?.badge??``).trim(),episodeOrDurationText:c,playCountText:l,showPlayCount:d,showEpisodes:f,detailPath:u,score:me(r?.score),cardKind:pe(r)}}):[],[w,C,Y,k,z,X,E,A,M]),Q=P>=1&&P<J?z?M.length-2:P*a-2:-1;m(()=>{Q<0&&(R.current=null)},[Q]);let $=h(()=>{let e=ce(te);return Z.map((t,n)=>{let r=t.showEpisodes?t.episodeOrDurationText.trim():``,i=t.showPlayCount?t.playCountText.trim():``;return{key:t.contentId?`search-waterfall-${t.contentId}-${n}`:`search-waterfall-${n}`,sourceIndex:n,href:t.detailPath||`#`,cardKind:t.cardKind,coverUrl:v(t.cover,e),title:t.title,badgeImageUrl:v(t.badge),metaPrimaryText:r,heatText:i,score:t.score}})},[Z]),_e=h(()=>he($),[$]),ve=(x??``).trim(),ye=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 ${k?`text-[#1F1F1F]`:`text-text2`}`,be=p(({item:e})=>{if(e.sourceIndex===Q)return e=>{R.current=e}},[Q]);return!S||S.length===0?null:ae(f,{title:ve,columns:_e,sectionClassName:k?`mt-[24px] w-full pointer-events-none`:`mt-[24px] w-full`,titleClassName:ye,containerClassName:`relative flex w-full gap-[15px] px-[16px]`,getItemRef:be})}export{w as default};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
import { SchemaHasDefaultValue } from "../../../../utils/schema/schema.mjs";
|
|
3
|
+
import { DefineMaterialOption } from "../../../../utils/schema/material.mjs";
|
|
4
|
+
import "../../../../utils.mjs";
|
|
5
|
+
import { SearchWaterfallRecommendClient } from "./client.mjs";
|
|
6
|
+
import { SearchWaterfallRecommendServer } 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/search-waterfall-recommend/material.d.ts
|
|
11
|
+
declare const searchWaterfallRecommendMaterial: DefineMaterialOption<typeof SearchWaterfallRecommendServer, typeof SearchWaterfallRecommendClient, zod.ZodObject<{
|
|
12
|
+
readonly title: zod.ZodString & SchemaHasDefaultValue;
|
|
13
|
+
readonly moduleCount: zod.ZodNumber & SchemaHasDefaultValue;
|
|
14
|
+
readonly layout: zod.ZodObject<{
|
|
15
|
+
readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
|
|
16
|
+
readonly tags: zod.ZodArray<zod.ZodString> & SchemaHasDefaultValue;
|
|
17
|
+
}, zod_v4_core0.$strip> | zod.ZodOptional<zod.ZodObject<{
|
|
18
|
+
readonly enabled: zod.ZodBoolean & SchemaHasDefaultValue;
|
|
19
|
+
readonly tags: zod.ZodArray<zod.ZodString> & SchemaHasDefaultValue;
|
|
20
|
+
}, zod_v4_core0.$strip>>;
|
|
21
|
+
readonly commonPlayCount: zod.ZodBoolean & SchemaHasDefaultValue;
|
|
22
|
+
readonly commonEpisodes: zod.ZodBoolean & SchemaHasDefaultValue;
|
|
23
|
+
readonly items: zod.ZodArray<zod.ZodObject<{
|
|
24
|
+
readonly contentId: zod.ZodString & SchemaHasDefaultValue;
|
|
25
|
+
readonly title: zod.ZodString & SchemaHasDefaultValue;
|
|
26
|
+
readonly contentDescription: zod.ZodString & SchemaHasDefaultValue;
|
|
27
|
+
readonly cover: zod.ZodString & SchemaHasDefaultValue;
|
|
28
|
+
readonly useVideoPoster: zod.ZodBoolean & SchemaHasDefaultValue;
|
|
29
|
+
readonly showPlayCount: zod.ZodBoolean & SchemaHasDefaultValue;
|
|
30
|
+
readonly showEpisodes: zod.ZodBoolean & SchemaHasDefaultValue;
|
|
31
|
+
readonly badge: zod.ZodString & SchemaHasDefaultValue;
|
|
32
|
+
}, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
|
|
33
|
+
} & {
|
|
34
|
+
mode: zod.ZodOptional<zod.ZodEnum<{
|
|
35
|
+
renderer: "renderer";
|
|
36
|
+
editor: "editor";
|
|
37
|
+
}>>;
|
|
38
|
+
}, zod_v4_core0.$strip>, "search-waterfall-recommend", "内容组件">;
|
|
39
|
+
//#endregion
|
|
40
|
+
export { searchWaterfallRecommendMaterial };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
import{defineMaterial as e}from"../../../../utils/schema/material.mjs";import{imageTextRecommendInspectorPropsSchema as t}from"../image-text-recommend/schema.mjs";import n from"./client.mjs";import{SearchWaterfallRecommendServer as r}from"./server.mjs";const i=e({type:`search-waterfall-recommend`,name:`瀑布流`,icon:`/static/components-thumb/grid_waterfall_two_column.png`,category:`内容组件`,serverComponent:r,clientComponent:n,propsSchema:t});export{i as searchWaterfallRecommendMaterial};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
import { SearchWaterfallRecommendProps } from "./client.mjs";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region components/biz/business/search-waterfall-recommend/server.d.ts
|
|
6
|
+
declare function SearchWaterfallRecommendServer(props: SearchWaterfallRecommendProps): Promise<react_jsx_runtime0.JSX.Element>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { SearchWaterfallRecommendServer };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
import{pContentBatchGetVideoDetail as e,pContentGetPopularVideoList as t}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as n,pContentGetPopularVideoListKey as r}from"../../../../service/generated/tanstack.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as i,getImageTextRecommendFixedIds as a,getImageTextRecommendLayoutTags as o}from"../../../../hooks/image-text-recommend.mjs";import{HydrationBoundary as s}from"../../../../hooks/query/hydration-boundary.mjs";import{buildSmartPopularQuery as c,buildStableChosenTags as l}from"../image-text-recommend/shared/query.mjs";import u from"./client.mjs";import{jsx as d}from"react/jsx-runtime";const f=[];async function p(p){let{mode:m=`renderer`,...h}=p,g=h.items??f,_=h.layout,v=[],y=!!_?.enabled,b=a(g,y),x=o(_),S=g?.length??0;if(m===`renderer`&&g?.length)try{if(y){let e=c(l(x,S),S),n=await t(e);v.push({queryKey:r(e),queryFn:()=>Promise.resolve(n)})}else if(b.length>0){let t={ids:b.length<=i?b:b.slice(0,i)},r=await e(t);v.push({queryKey:n(t),queryFn:()=>Promise.resolve(r)})}}catch(e){console.warn(`[search-waterfall-recommend] server prefetch failed:`,e)}return d(s,{prefetch:v,children:d(u,{...h,mode:m})})}export{p as SearchWaterfallRecommendServer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import{shortcutGridInspectorDefaultProps as
|
|
2
|
+
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import i from"../../../../assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs";import{shortcutGridInspectorDefaultProps as a}from"./schema.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(c){let{mode:l=`renderer`,title:u,shortcutCount:d,isShortcutTitle:f,shortcuts:p}={...a,...c},m=l===`editor`,h=(()=>{let e=d??p.length??0;return Math.min(Math.max(e,3),5)})(),g=(p??[]).slice(0,h);return o(t,{as:`section`,className:m?`pointer-events-none px-4 py-3`:`px-4 py-3`,"aria-label":`金刚区`,children:s(t,{className:`w-full`,children:[m&&u?.trim()?o(n,{as:`h2`,className:`mb-3 text-[12px] leading-[16px] text-white/45`,children:u}):null,o(t,{className:`grid w-full items-start gap-4`,style:{gridTemplateColumns:`repeat(${h}, minmax(0, 1fr))`},children:g.map((a,c)=>{let l=o(t,{className:`relative h-[79px] w-full min-w-0 overflow-visible`,children:s(t,{className:`absolute inset-x-0 bottom-0 h-[63px] w-full overflow-visible`,children:[o(i,{"aria-hidden":!0,className:`absolute inset-0 h-full w-full`}),o(t,{className:`pointer-events-none absolute left-1/2 top-[32px] z-20 -translate-x-1/2`,children:f?o(n,{className:`whitespace-nowrap text-center text-[12px] leading-[16px] text-white/80`,title:a.label||void 0,children:a.label}):null}),o(t,{className:`pointer-events-none absolute right-0 top-[-14px] z-30`,children:o(t,{className:`relative h-[43px] w-[42px] overflow-visible`,"aria-hidden":!a.label,children:a.icon?o(e,{src:a.icon,alt:a.label||`入口图标`,fill:!0,className:`object-contain drop-shadow-[0_10px_18px_rgba(0,0,0,0.3)]`}):o(t,{className:`h-full w-full rounded-full bg-white/12`})})})]})});return o(r,{href:a.href,className:`block w-full min-w-0 transition-transform duration-200 active:scale-[0.98]`,children:l},a.href||a.label||c)})})]})})}export{c as ShortcutGridClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{usePathname as o}from"next/navigation";import s from"next/link";const c=[];function
|
|
2
|
+
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{usePathname as o}from"next/navigation";import s from"next/link";const c=[],l={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},u={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function d(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function f(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function p(e,t){let n=d(t);if(e.configType===1){let t=d(f(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function m(e,t){return e.findIndex(e=>p(e,t))}function h(d){let{items:p=c,mode:h=`renderer`}=d,g=o(),_=r(()=>{if(h===`editor`)return 0;let e=m(p??[],g);return e>=0?e:0},[p,g,h]),v=r(()=>(p??[]).some(e=>e.label.trim()!==``),[p]);if(!p?.length)return null;function y(e){h===`editor`&&e.preventDefault()}let b=`size-full rounded-[6px] bg-white/20`;return i(t,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:l,children:i(t,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:u,children:p.map((r,o)=>{let c=_===o,l=c?r.activeIcon:r.icon,u=r.label,d=f(r),p=v?c?`gap-[5px]`:`gap-[4px]`:``,m=c?`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[16px] font-normal text-[#BFBFBF]`;return a(s,{href:d,className:`flex flex-col items-center justify-center ${p}`,"aria-current":c?`page`:void 0,"data-index":o,"data-webview-nav":`spa`,onClick:y,children:[i(t,{className:`relative size-5 shrink-0`,children:l?i(e,{src:l,alt:u,fill:!0,className:`object-contain`}):i(t,{className:c?`${b} bg-[#C043E8]`:b})}),v&&i(n,{className:m,children:u})]},o)})})})}export{h as TabBarClient};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region components/common/collection-popup/create-collection-sheet.d.ts
|
|
5
|
+
interface CollectionSheetFormState {
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
interface CreateCollectionSheetProps {
|
|
10
|
+
/** 是否显示弹窗。 */
|
|
11
|
+
visible: boolean;
|
|
12
|
+
/** 弹窗模式。 */
|
|
13
|
+
mode?: 'create' | 'edit';
|
|
14
|
+
/** 编辑模式下的收藏夹 ID。 */
|
|
15
|
+
collectionId?: string;
|
|
16
|
+
/** 编辑模式的初始值。 */
|
|
17
|
+
initialValues?: Partial<CollectionSheetFormState>;
|
|
18
|
+
/** 弹窗关闭回调。 */
|
|
19
|
+
onClose?: () => void;
|
|
20
|
+
/** 创建成功回调。 */
|
|
21
|
+
onCreated?: () => void;
|
|
22
|
+
/** 编辑成功回调。 */
|
|
23
|
+
onUpdated?: () => void;
|
|
24
|
+
/** 通用成功回调。 */
|
|
25
|
+
onSuccess?: () => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 创建/编辑收藏夹底部抽屉弹窗。
|
|
29
|
+
*/
|
|
30
|
+
declare function CreateCollectionSheet({
|
|
31
|
+
visible,
|
|
32
|
+
mode,
|
|
33
|
+
collectionId,
|
|
34
|
+
initialValues,
|
|
35
|
+
onClose,
|
|
36
|
+
onCreated,
|
|
37
|
+
onUpdated,
|
|
38
|
+
onSuccess
|
|
39
|
+
}: CreateCollectionSheetProps): react_jsx_runtime0.JSX.Element;
|
|
40
|
+
//#endregion
|
|
41
|
+
export { CreateCollectionSheet };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";import{cn as e}from"../../../utils/cn.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as o,InputGroupAddon as s,InputGroupTextarea as c}from"../../ui/input-group.mjs";import{useDeleteRequest as l,useRequest as u}from"../../../hooks/query/use-query.mjs";import d from"../../ui/popup.mjs";import{useCallback as f,useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{XIcon as _}from"lucide-react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";const S=2e3;function C(e){return{title:e?.title??``,description:e?.description??``}}function w({visible:w,mode:T=`create`,collectionId:E,initialValues:D,onClose:O,onCreated:k,onUpdated:A,onSuccess:j}){let M=x(`components.pages.collectionCreate`),N=x(`components.common.collectionPopup`),{userId:P}=t(),F=l(),I=T===`edit`,L=D?.title!==void 0||D?.description!==void 0,R=w&&I&&!!E&&!L,z=typeof document>`u`?void 0:document.body,B=h(!1),[V,H]=g(!1),[U,W]=g(()=>C()),G=u([`collection-detail`,E,`sheet`],()=>n({collection_id:E}),{enabled:R}),K=G.data?.data?.data?.collection;p(()=>{w||(B.current=!1,H(!1))},[w]),p(()=>{if(!(!w||B.current)){if(!I){W(C()),B.current=!0;return}if(L){W(C(D)),B.current=!0;return}K&&(W(C({title:K.title,description:K.description})),B.current=!0)}},[K,L,D,I,w]);let q=f((e,t)=>{W(n=>({...n,[e]:t}))},[]),J=m(()=>R&&!B.current&&G.isLoading,[G.isLoading,R]),Y=M(I?`form.editTitle`:`form.createTitle`),X=I?M(`form.save`):N(`createModalAction`),Z=M(I?`form.saving`:`form.creating`);function Q(e){e||O?.()}function $(e){P&&(F([`user-profile`,`mine`]),F([`user-profile`,`mine`,P]),F([`user-profile`,`mine`,P,`user-collection-created`,P])),e&&F([`collection-detail`,e])}async function ee(){if(V)return;let e=U.title.trim(),t=U.description.trim();if(!e){b.error(M(`form.titleRequired`));return}if(!t){b.error(M(`form.descriptionRequired`));return}if(I&&!E){b.error(M(`form.collectionNotFound`));return}let n=b.loading(Z);try{H(!0);let a=I?await i({collection_id:E,title:e,description:t,cover_image:``}):await r({title:e,description:t,cover_image:``});if(a.code!==0){b.error(a.message||M(I?`form.saveFailed`:`form.createFailed`),{id:n});return}$(E),b.success(I?N(`updateSuccess`):M(`form.createSuccess`),{id:n}),j?.(),I?A?.():k?.(),O?.()}catch(e){console.error(I?`编辑收藏夹失败`:`创建收藏夹失败`,e),b.error(M(I?`form.saveFailed`:`form.createFailed`),{id:n})}finally{H(!1)}}return v(d,{open:w,onOpenChange:Q,showCloseButton:!1,className:`!z-[1210] max-h-[85vh] rounded-t-[24px] bg-[var(--color-surface-panel-dark)] p-0 text-[var(--color-text-primary)] backdrop-blur-[50px]`,overlayClassName:`!z-[1200] overlay-create-collection`,overlayForceRender:!0,portalContainer:z,children:y(`div`,{className:`flex flex-col pb-[34px]`,children:[y(`div`,{className:`flex h-14 items-center justify-between px-4`,children:[v(`span`,{className:`text-lg font-medium text-[var(--color-text-primary)]`,children:Y}),v(`button`,{type:`button`,className:`flex h-6 w-6 items-center justify-center rounded text-[var(--color-text-primary)] opacity-60 hover:opacity-100`,onClick:()=>O?.(),"aria-label":`关闭`,children:v(_,{size:24})})]}),y(`div`,{className:`flex flex-col gap-4 px-4`,children:[y(a,{className:`flex flex-col gap-2`,children:[y(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:[v(`span`,{className:`text-[var(--color-border-required)]`,children:`* `}),M(`form.label`)]}),y(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3`,`focus-within:!border-[var(--color-border-danger)] focus-within:!ring-0`,J?`opacity-60`:``),children:[v(c,{maxLength:S,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.titlePlaceholder`),value:U.title,onChange:e=>q(`title`,e.target.value),disabled:V||J}),y(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[y(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.title.length,`/`,S]}),v(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`title`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),y(a,{className:`flex flex-col gap-2`,children:[y(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:[v(`span`,{className:`text-[var(--color-border-required)]`,children:`* `}),M(`form.descriptionLabel`)]}),y(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3 focus-within:ring-0`,`focus-within:!border-[var(--color-border-danger)]`,J?`opacity-60`:``),children:[v(c,{maxLength:S,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.descriptionPlaceholder`),value:U.description,onChange:e=>q(`description`,e.target.value),disabled:V||J}),y(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[y(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.description.length,`/`,S]}),v(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`description`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),v(`button`,{type:`button`,className:`h-12 w-full max-w-[358px] self-center rounded-[var(--radius-pill)] text-base font-medium text-[var(--color-text-primary)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-50`,style:{background:`var(--gradient-action-button)`},onClick:ee,disabled:V||J,children:V?Z:X})]})]})})}export{w as CreateCollectionSheet};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{createStore as e}from"../../../store/create-store.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetUserCollections as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{InfiniteScroll as i}from"../../ui/infinite-scroll.mjs";import a from"../../../assets/icons/close.mjs";import o from"../../../assets/icons/common/right_arrow.mjs";import s from"../../../assets/icons/detail/min-collection.mjs";import c from"../../../assets/icons/empty/img-empty-nodata.mjs";import l from"../../ui/popup.mjs";import{
|
|
2
|
+
"use client";import{createStore as e}from"../../../store/create-store.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetUserCollections as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{InfiniteScroll as i}from"../../ui/infinite-scroll.mjs";import a from"../../../assets/icons/close.mjs";import o from"../../../assets/icons/common/right_arrow.mjs";import s from"../../../assets/icons/detail/min-collection.mjs";import c from"../../../assets/icons/empty/img-empty-nodata.mjs";import l from"../../ui/popup.mjs";import{CreateCollectionSheet as u}from"./create-collection-sheet.mjs";import d from"../page-loading/index.mjs";import{useCallback as f,useEffect as p,useMemo as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";const x=e(e=>({isOpen:!1,options:null,open:t=>e(e=>({...e,isOpen:!0,options:t})),close:()=>e(e=>({...e,isOpen:!1,options:null}))}),{name:`collection-popup-store`,persist:!1});function S(e){return{id:String(e?.collection_id||``),cover:e?.cover_image||``,title:e?.title||``,contentCount:Number(e?.content_count||0)}}function C(e){let x=b(`components.common.collectionPopup`),{visible:C,mode:w=`favorite`,onClose:T,toCreateCollection:E,onCollect:D}=e,{userInfo:O,userId:k}=t(),[A,j]=h(!0),[M,N]=h([]),[P,F]=h(!0),[I,L]=h(1),[R,z]=h(!1),B=m(()=>String(k||O?.userId||`0`),[k,O?.userId]),V=f(async e=>{if(!B||!e?.reset&&(!P||A&&M.length>0))return;let t=e?.nextPage??I;j(!0);try{let e=await n({page:t,page_size:10});if(e.code!==0){F(!1);return}let r=(e.data?.data?.collections??[]).map(S);N(e=>t===1?r:[...e,...r]),e.data?.data?.has_more===!1||r.length<10?F(!1):(F(!0),L(t+1))}catch(e){console.error(`获取合集列表失败:`,e),F(!1)}finally{j(!1)}},[M.length,P,A,I,10,B]);p(()=>{C&&V()},[V,C]);let[H,U]=h(!0);p(()=>{U(!A&&M.length===0)},[M.length,A]);function W(e){e||T?.()}function G(){if(w===`select`){z(!0);return}E?.()}function K(e){D?.(e),w===`favorite`&&y.message(x(`collectSuccess`))}function q(e){return function(){K(e)}}function J(){return V()}let Y=f(()=>{F(!0),L(1),N([]),V({nextPage:1,reset:!0})},[V]);return v(l,{open:C,onOpenChange:W,showCloseButton:!1,className:`z-[1000] h-[450px] rounded-t-[16px] bg-bg1 p-0 text-text1`,children:[v(`div`,{className:`bg-bg1 h-[450px] pb-[24px] flex flex-col`,children:[v(`div`,{className:`w-full px-[16px] relative`,children:[v(`div`,{className:`w-full h-[60px] flex items-center justify-center`,children:[_(`button`,{type:`button`,className:`cursor-pointer absolute w-[48px] h-[60px] left-0 top-0 flex items-center justify-center focus:outline-none`,onClick:T,children:_(a,{className:`w-[16px] h-[16px] text-text1`})}),_(`div`,{className:`text-[18px] text-text1 font-semibold`,children:x(w===`select`?`selectTitle`:`favoriteToCollectionTitle`)}),w===`select`&&_(`button`,{type:`button`,className:`absolute right-0 top-0 h-[60px] px-[16px] text-[14px] text-theme5 font-semibold`,onClick:G,children:x(`newCollection`)})]}),w===`favorite`&&v(`button`,{type:`button`,className:`cursor-pointer w-full h-[48px] rounded-[16px] px-[12px] border border-solid border-line1 flex items-center justify-between`,onClick:G,children:[v(`div`,{className:`flex items-center`,children:[_(s,{className:`w-[24px] h-[24px]`}),_(`span`,{className:`ml-[8px] text-text1 text-[14px] font-semibold leading-[18px]`,children:x(`createCollection`)})]}),_(o,{className:`text-text2 w-[12px] h-[12px]`})]})]}),_(`div`,{className:`w-full px-[16px] flex-1 h-[0] overflow-y-auto`,children:A?_(d,{}):H?v(`div`,{className:`flex flex-col items-center justify-center py-[48px] text-text2`,children:[_(c,{className:`w-[120px] h-[120px]`}),v(`span`,{className:`mt-[16px] text-[14px]`,children:[x(`noCollections`),`,`,x(`createCollectionHint`)]})]}):v(g,{children:[M.map((e,t)=>v(`button`,{type:`button`,className:`cursor-pointer w-full h-[92px] flex items-center text-left`,onClick:q(e.id),children:[_(`div`,{className:`w-[60px] h-[60px] bg-bg2 rounded-[8px] overflow-hidden relative`,children:e.cover&&_(r,{src:e.cover,fill:!0,objectFit:`cover`,alt:x(`coverAlt`)})}),v(`div`,{className:`ml-[12px] flex flex-col justify-center`,children:[_(`span`,{className:`max-w-[200px] text-text1 text-[18px] leading-[24px] font-semibold line-clamp-1`,children:e.title||``}),v(`span`,{className:`mt-[3px] text-text2 text-[14px]`,children:[e.contentCount||0,x(`postsCountSuffix`)]})]})]},e.id||`collection-${t}`)),M.length>0&&_(i,{loadMore:J,hasMore:P})]})})]}),_(u,{visible:R,onClose:()=>z(!1),onCreated:()=>{z(!1),Y()}})]})}function w(){let{isOpen:e,options:t,close:n}=x();return e?_(C,{visible:e,mode:t?.mode,onClose:()=>{n(),t?.onClose?.()},toCreateCollection:()=>{n(),t?.toCreateCollection?.()},onCollect:e=>{n(),t?.onCollect?.(e)}}):null}var T=class{static show(e){x.getState().open(e)}static clear(){x.getState().close()}};export{C as CollectionPopupComponent,w as CollectionPopupHost,T as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";function n(n){let{className:r,...i}=n;return
|
|
2
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";function n(n){let{className:r,...i}=n;return t(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,fontSize:`20`,className:`antd-mobile-icon ${r||``}`,style:{verticalAlign:`-0.125em`},...i,children:[e(`path`,{d:`M16.5454 3.5C16.8675 3.5 17.1659 3.67065 17.3293 3.94832L21.8746 11.6755C22.0418 11.9598 22.0418 12.3126 21.8746 12.597L17.3293 20.3241C17.1659 20.6018 16.8675 20.7724 16.5454 20.7724H7.45463C7.13252 20.7724 6.83404 20.6017 6.67073 20.3241L2.12535 12.597C1.95822 12.3126 1.95822 11.9598 2.12535 11.6755L6.67073 3.94832C6.83404 3.67069 7.13252 3.50003 7.45463 3.5H16.5454ZM3.96392 12.1362L7.97486 18.9543H16.026L20.0352 12.1362L16.026 5.31815H7.97486L3.96392 12.1362Z`,fill:`currentColor`}),e(`path`,{d:`M13.3637 12.1364C13.3637 11.3833 12.7532 10.7727 12.0001 10.7727C11.247 10.7727 10.6365 11.3833 10.6365 12.1364C10.6365 12.8894 11.247 13.5 12.0001 13.5C12.7532 13.5 13.3637 12.8894 13.3637 12.1364ZM15.1819 12.1364C15.1819 13.8936 13.7573 15.3181 12.0001 15.3181C10.2429 15.3181 8.81836 13.8936 8.81836 12.1364C8.81836 10.3791 10.2429 8.95459 12.0001 8.95459C13.7573 8.95459 15.1819 10.3791 15.1819 12.1364Z`,fill:`currentColor`})]})}export{n as SettingIcon};
|
|
@@ -21,6 +21,12 @@ interface CollectionListItemProps {
|
|
|
21
21
|
contentCount: number;
|
|
22
22
|
/** 合集预览内容列表。 */
|
|
23
23
|
contents?: CollectionListMediaItem[];
|
|
24
|
+
/** 是否处于编辑态。 */
|
|
25
|
+
isEditMode?: boolean;
|
|
26
|
+
/** 当前是否选中。 */
|
|
27
|
+
isSelected?: boolean;
|
|
28
|
+
/** 切换选中态回调。 */
|
|
29
|
+
onToggleSelection?: (id: string) => void;
|
|
24
30
|
}
|
|
25
31
|
declare function CollectionListItem(props: CollectionListItemProps): react_jsx_runtime0.JSX.Element;
|
|
26
32
|
//#endregion
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{RightArrowIcon as r}from"../../icons/right-arrow.mjs";import{
|
|
2
|
+
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{RightArrowIcon as r}from"../../icons/right-arrow.mjs";import{CollectionSelectIcon as i,CollectionSelectedIcon as a}from"./collection-select-icon.mjs";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";import{useTranslations as l}from"next-intl";import u from"next/link";const d=[];function f({size:e=12}){return s(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`currentColor`,children:s(`path`,{d:`M8 5v14l11-7z`})})}function p(e){if(!e)return``;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`}function m(m){let h=l(`components.common.list.collectionList`),{id:g,title:_,contentCount:v,contents:y=d,isEditMode:b=!1,isSelected:x=!1,onToggleSelection:S}=m,C=y.slice(0,3),w=b&&typeof S==`function`;function T(){S?.(g)}function E(r,i){if(r.isPlaceholder)return s(t,{className:`h-[130px] w-full rounded-[8px] bg-[var(--color-surface-white10)]`},r.id??`${_}-${i}`);let a=c(t,{className:`relative h-full w-full overflow-hidden rounded-[8px] bg-gray-100`,children:[s(e,{src:r.coverImage||`/empty/default-cover.png`,alt:r.title||_,fill:!0,className:`object-cover`}),r.isVideo&&c(o,{children:[s(t,{className:`absolute inset-0 flex items-center justify-center bg-black/20`,children:s(t,{className:`flex h-6 w-6 items-center justify-center rounded-full bg-[var(--color-text-white80)]`,children:s(f,{size:12})})}),r.isMovie&&s(t,{className:`absolute bottom-1 left-1 rounded-xs bg-[var(--color-surface-mask-black60)] px-1 text-[10px] text-text1`,children:h(`collectionListItem.movieLabel`)}),r.videoDuration&&s(t,{className:`absolute bottom-1 right-1 rounded-xs bg-[var(--color-surface-mask-black60)] px-1 text-[10px] text-text1`,children:p(r.videoDuration)})]}),s(t,{className:`pointer-events-none absolute inset-x-0 bottom-0 h-[58px] rounded-b-[8px] bg-[image:var(--gradient-card-mask-strong)]`}),s(n,{className:`absolute bottom-3 left-2 right-2 line-clamp-2 text-[12px] leading-[16px] text-[var(--color-text-white80)]`,dangerouslySetInnerHTML:{__html:r.title||``}})]});return w?s(`button`,{type:`button`,className:`block h-[130px] w-[103px] shrink-0 overflow-hidden rounded-[8px] bg-[rgba(255,255,255,0.05)]`,onClick:T,"aria-pressed":x,children:a},r.id??`${_}-${i}`):s(u,{href:`/${r.contentType===1?`video`:`post`}/${r.id}`,className:`block h-[130px] w-full shrink-0 overflow-hidden rounded-[8px] bg-[rgba(255,255,255,0.05)]`,children:a},r.id??`${_}-${i}`)}return c(t,{className:`h-[200px] rounded-[8px] bg-[rgba(255,255,255,0.05)] p-4`,children:[c(t,{className:`mb-4 flex items-center justify-between gap-2`,children:[w?c(`button`,{type:`button`,className:`flex min-w-0 items-center gap-1`,onClick:T,"aria-pressed":x,children:[s(x?a:i,{}),s(n,{className:`line-clamp-1 text-[16px] font-normal leading-[22px] text-[var(--color-text-primary)]`,children:_})]}):s(n,{className:`line-clamp-1 text-[16px] font-normal leading-[22px] text-[var(--color-text-primary)]`,children:_}),w?c(t,{className:`flex shrink-0 items-center text-[var(--color-text-tertiary)]`,children:[c(n,{className:`text-[14px] leading-[20px] text-[var(--color-text-tertiary)]`,children:[v,h(`collectionListItem.contentCountSuffix`)]}),s(t,{className:`flex size-6 items-center justify-center`,children:s(r,{className:`h-4 w-4 text-[var(--color-text-tertiary)]`})})]}):c(u,{href:`/collection/${g}`,className:`flex shrink-0 items-center text-[var(--color-text-tertiary)]`,children:[c(n,{className:`text-[14px] leading-[20px] text-[var(--color-text-tertiary)]`,children:[v,h(`collectionListItem.contentCountSuffix`)]}),s(t,{className:`flex size-6 items-center justify-center`,children:s(r,{className:`h-4 w-4 text-[var(--color-text-tertiary)]`})})]})]}),s(t,{className:`grid h-[130px] w-full grid-cols-3 gap-2`,children:C.map(E)})]})}export{m as CollectionListItem};
|
|
@@ -14,6 +14,12 @@ interface CollectionListProps {
|
|
|
14
14
|
loadMore?: () => Promise<void>;
|
|
15
15
|
/** 空状态文案。 */
|
|
16
16
|
emptyText?: string;
|
|
17
|
+
/** 是否处于编辑态。 */
|
|
18
|
+
isEditMode?: boolean;
|
|
19
|
+
/** 当前已选中的合集 ID 集合。 */
|
|
20
|
+
selectedIds?: Set<string>;
|
|
21
|
+
/** 切换合集选中态。 */
|
|
22
|
+
onToggleSelection?: (id: string) => void;
|
|
17
23
|
}
|
|
18
24
|
declare function CollectionList(props: CollectionListProps): react_jsx_runtime0.JSX.Element;
|
|
19
25
|
//#endregion
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{List as e}from"../../../ui/list.mjs";import{CollectionListItem as t}from"./collection-list-item.mjs";import{jsx as n}from"react/jsx-runtime";function r(r){let{list:i,loading:a,hasMore:o=!1,loadMore:s,emptyText:c
|
|
2
|
+
"use client";import{List as e}from"../../../ui/list.mjs";import{CollectionListItem as t}from"./collection-list-item.mjs";import{jsx as n}from"react/jsx-runtime";function r(r){let{list:i,loading:a,hasMore:o=!1,loadMore:s,emptyText:c=`暂无合集`,isEditMode:l=!1,selectedIds:u,onToggleSelection:d}=r;return n(e,{loading:a,loadMore:s,hasMore:o,empty:`no-content`,emptyText:c,className:`!bg-transparent flex flex-col gap-4`,children:i.map(e=>n(t,{...e,isEditMode:l,isSelected:u?.has(e.id)??!1,onToggleSelection:d},e.id))})}export{r as CollectionList};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";function n(){return e(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,children:e(`circle`,{cx:`12`,cy:`12`,r:`10`,fill:`var(--color-neutral-white)`,fillOpacity:`0.3`,stroke:`var(--color-neutral-white)`,strokeOpacity:`0.7`,strokeWidth:`2`})})}function r(){return t(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,children:[e(`circle`,{cx:`12`,cy:`12`,r:`10`,fill:`var(--color-brand-tag-gradient-start)`,stroke:`var(--color-brand-tag-gradient-start)`,strokeWidth:`2`}),e(`path`,{d:`M16.2929 8.29289C16.6834 7.90237 17.3164 7.90237 17.707 8.29289C18.0975 8.68342 18.0975 9.31643 17.707 9.70696L11.707 15.707C11.3164 16.0975 10.6834 16.0975 10.2929 15.707L7.29289 12.707C6.90237 12.3164 6.90237 11.6834 7.29289 11.2929C7.68342 10.9024 8.31643 10.9024 8.70696 11.2929L10.9999 13.5859L16.2929 8.29289Z`,fill:`var(--color-neutral-white)`})]})}export{n as CollectionSelectIcon,r as CollectionSelectedIcon};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region components/common/list/waterfall-recommend/waterfall-recommend.d.ts
|
|
6
|
+
type WaterfallRecommendCardKind = 'tall' | 'short';
|
|
7
|
+
type WaterfallRecommendColumnName = 'left' | 'right';
|
|
8
|
+
/**
|
|
9
|
+
* 瀑布流卡片纯 UI 数据。
|
|
10
|
+
* 外部负责把业务数据组织成这个结构后传入。
|
|
11
|
+
*/
|
|
12
|
+
interface WaterfallRecommendItem {
|
|
13
|
+
/** 唯一 key。 */
|
|
14
|
+
key: string;
|
|
15
|
+
/** 原始序号,便于外部做曝光/分页触发。 */
|
|
16
|
+
sourceIndex: number;
|
|
17
|
+
/** 卡片跳转链接。 */
|
|
18
|
+
href: string;
|
|
19
|
+
/** 卡片高度类型。 */
|
|
20
|
+
cardKind: WaterfallRecommendCardKind;
|
|
21
|
+
/** 封面地址。 */
|
|
22
|
+
coverUrl?: string;
|
|
23
|
+
/** 标题。 */
|
|
24
|
+
title: string;
|
|
25
|
+
/** 左上角角标。 */
|
|
26
|
+
badgeImageUrl?: string;
|
|
27
|
+
/** 左上角文字标签(如"独播")。 */
|
|
28
|
+
badgeText?: string;
|
|
29
|
+
/** 右上角集数文字(如"24集全")。 */
|
|
30
|
+
episodeText?: string;
|
|
31
|
+
/** 标题下第一行辅助文案。 */
|
|
32
|
+
metaPrimaryText?: string;
|
|
33
|
+
/** 热度文案。 */
|
|
34
|
+
heatText?: string;
|
|
35
|
+
/** 评分,0-10。 */
|
|
36
|
+
score?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 瀑布流左右列数据。
|
|
40
|
+
* 外部负责完成分列后传入。
|
|
41
|
+
*/
|
|
42
|
+
interface WaterfallRecommendColumns {
|
|
43
|
+
left: WaterfallRecommendItem[];
|
|
44
|
+
right: WaterfallRecommendItem[];
|
|
45
|
+
}
|
|
46
|
+
interface WaterfallRecommendProps {
|
|
47
|
+
/** 区块标题。 */
|
|
48
|
+
title: string;
|
|
49
|
+
/** 右上角“更多”链接。 */
|
|
50
|
+
moreHref?: string;
|
|
51
|
+
/** 右上角“更多”点击事件。 */
|
|
52
|
+
onMoreClick?: () => void;
|
|
53
|
+
/** 右上角“更多”图标。 */
|
|
54
|
+
moreIcon?: ReactNode;
|
|
55
|
+
/** 区块数据。 */
|
|
56
|
+
columns: WaterfallRecommendColumns;
|
|
57
|
+
/** 外层区块样式类。 */
|
|
58
|
+
sectionClassName?: string;
|
|
59
|
+
/** 标题行样式类。 */
|
|
60
|
+
headerClassName?: string;
|
|
61
|
+
/** 标题样式类。 */
|
|
62
|
+
titleClassName?: string;
|
|
63
|
+
/** 更多入口样式类。 */
|
|
64
|
+
moreLinkClassName?: string;
|
|
65
|
+
/** 内容区样式类。 */
|
|
66
|
+
containerClassName?: string;
|
|
67
|
+
/** 容器内覆盖层。 */
|
|
68
|
+
overlay?: ReactNode;
|
|
69
|
+
/** 底部附加内容。 */
|
|
70
|
+
footer?: ReactNode;
|
|
71
|
+
/**
|
|
72
|
+
* 外部注入 item ref,用于分页触发、首行测量等逻辑。
|
|
73
|
+
*/
|
|
74
|
+
getItemRef?: (params: {
|
|
75
|
+
item: WaterfallRecommendItem;
|
|
76
|
+
column: WaterfallRecommendColumnName;
|
|
77
|
+
columnIndex: number;
|
|
78
|
+
}) => ((node: HTMLDivElement | null) => void) | undefined;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 纯 UI 瀑布流组件。
|
|
82
|
+
*/
|
|
83
|
+
declare function WaterfallRecommend({
|
|
84
|
+
title,
|
|
85
|
+
moreHref,
|
|
86
|
+
onMoreClick,
|
|
87
|
+
moreIcon,
|
|
88
|
+
columns,
|
|
89
|
+
sectionClassName,
|
|
90
|
+
headerClassName,
|
|
91
|
+
titleClassName,
|
|
92
|
+
moreLinkClassName,
|
|
93
|
+
containerClassName,
|
|
94
|
+
overlay,
|
|
95
|
+
footer,
|
|
96
|
+
getItemRef
|
|
97
|
+
}: WaterfallRecommendProps): react_jsx_runtime0.JSX.Element;
|
|
98
|
+
//#endregion
|
|
99
|
+
export { WaterfallRecommend, WaterfallRecommendCardKind, WaterfallRecommendColumnName, WaterfallRecommendColumns, WaterfallRecommendItem, WaterfallRecommendProps };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";const o={backgroundImage:`var(--gradient-card-mask-strong)`},s={color:`var(--color-brand-rating)`};function c({title:e,moreHref:o,onMoreClick:s,moreIcon:c,columns:u,sectionClassName:d=`w-full`,headerClassName:f=`mb-[16px] flex items-center justify-between px-[16px]`,titleClassName:p=`flex-1 min-w-0 text-[18px] leading-[24px] font-medium line-clamp-1 text-text2`,moreLinkClassName:m=`ml-[8px] flex size-[24px] shrink-0 items-center justify-center opacity-50`,containerClassName:h=`relative flex w-full gap-[15px] px-[16px]`,overlay:g,footer:_,getItemRef:v}){return a(t,{className:d,children:[a(t,{className:f,children:[i(n,{className:p,children:e}),c&&o&&i(r,{href:o,"aria-label":`更多`,className:m,children:c}),c&&!o&&s&&i(`button`,{type:`button`,"aria-label":`更多`,className:m,onClick:s,children:c})]}),a(t,{className:h,children:[i(t,{className:`flex-1 min-w-0 flex flex-col`,children:u.left.map((e,t)=>i(`div`,{ref:v?.({item:e,column:`left`,columnIndex:t}),children:i(l,{item:e})},e.key))}),i(t,{className:`flex-1 min-w-0 flex flex-col`,children:u.right.map((e,t)=>i(`div`,{ref:v?.({item:e,column:`right`,columnIndex:t}),children:i(l,{item:e})},e.key))}),g]}),_]})}function l({item:s}){let c=s.cardKind===`short`?120:218,l=!!s.metaPrimaryText||!!s.heatText,f=s.cardKind===`short`?`absolute inset-x-0 bottom-0 z-10 flex flex-col justify-end px-[10px] pb-[14px]`:`absolute inset-x-0 bottom-0 z-10 flex flex-col justify-end px-[9px] pb-[14px]`;return i(r,{href:s.href,className:`mb-[16px] block w-full`,children:a(t,{className:`relative w-full overflow-hidden rounded-[8px] bg-[#18111f]`,style:{height:`${c}px`},children:[s.coverUrl&&i(e,{src:s.coverUrl,alt:s.title||`推荐封面`,fill:!0,objectFit:`cover`,className:`object-cover`}),i(t,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:o,"aria-hidden":!0}),(s.badgeImageUrl||s.badgeText||s.episodeText)&&a(t,{className:`absolute left-[8px] right-[8px] top-[8px] z-10 flex items-center justify-between`,children:[a(t,{className:`flex items-center`,children:[s.badgeImageUrl&&i(u,{url:s.badgeImageUrl}),!s.badgeImageUrl&&s.badgeText&&i(t,{className:`flex items-center justify-center rounded-[4px] px-[4px] py-[2px]`,style:{backgroundImage:`linear-gradient(90deg, #CA3FE9 0%, #9756E3 100%)`},children:i(n,{className:`text-[10px] font-semibold leading-[14px] text-white`,children:s.badgeText})})]}),s.episodeText&&i(n,{className:`text-[14px] leading-[18px] text-white`,children:s.episodeText})]}),i(t,{className:f,children:a(t,{className:`flex flex-col gap-[4px]`,children:[a(t,{className:`flex min-w-0 flex-col gap-[2px]`,children:[i(n,{as:`h3`,className:`line-clamp-1 text-[14px] leading-[20px] font-medium text-text1`,children:s.title}),l&&a(t,{className:`flex min-w-0 items-center gap-[10px] text-[14px] leading-[20px] font-normal text-text3`,children:[s.metaPrimaryText&&i(n,{as:`span`,className:`min-w-0 truncate text-[14px] leading-[20px] font-normal text-text3`,children:s.metaPrimaryText}),s.heatText&&i(n,{as:`span`,className:`shrink-0 text-[14px] leading-[20px] font-normal text-text3`,children:s.heatText})]})]}),s.score!==void 0&&i(d,{score:s.score})]})})]})})}function u({url:t}){return i(e,{src:t,alt:`角标`,width:96,height:18,className:`h-[18px] w-auto max-w-[96px] object-contain`})}function d({score:e}){let r=Math.max(0,Math.min(e,10)),o=Math.ceil(r/2);return a(t,{className:`flex items-center gap-[8px]`,children:[i(t,{className:`flex h-[14px] w-[86px] items-center gap-[4px]`,children:Array.from({length:5},(e,t)=>i(f,{active:t<o},`waterfall-star-${t}`))}),i(n,{as:`span`,className:`font-mono font-bold text-[12px] leading-[15px]`,style:s,children:e.toFixed(1)})]})}function f({active:e}){return i(t,{className:`size-[14px] shrink-0`,children:i(p,{className:e?``:`opacity-25`,style:s})})}function p({className:e,style:t}){return i(`svg`,{viewBox:`0 0 14 14`,fill:`currentColor`,"aria-hidden":!0,className:`size-full ${e||``}`.trim(),style:t,children:i(`path`,{d:`M7 0.75L8.775 4.348L12.75 4.926L9.875 7.728L10.554 11.686L7 9.818L3.446 11.686L4.125 7.728L1.25 4.926L5.225 4.348L7 0.75Z`})})}export{c as WaterfallRecommend};
|
|
@@ -4,6 +4,7 @@ import { CSSProperties } from "react";
|
|
|
4
4
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
5
|
|
|
6
6
|
//#region components/common/series-episodes/index.d.ts
|
|
7
|
+
declare function DetailStyleOneActiveBorderLayer(): react_jsx_runtime0.JSX.Element;
|
|
7
8
|
/**
|
|
8
9
|
* SeriesEpisodes
|
|
9
10
|
*
|
|
@@ -28,6 +29,7 @@ type SeriesEpisodesProps = {
|
|
|
28
29
|
onClose: () => void;
|
|
29
30
|
onSelectEpisode?: (episodeId: string, episodeNum: number) => void;
|
|
30
31
|
popupBodyStyle?: CSSProperties;
|
|
32
|
+
popupStylePreset?: 'default' | 'detail-style-one';
|
|
31
33
|
} | {
|
|
32
34
|
/** 详情页模式:渲染入口、横向集数条与弹层。 */mode: 'detail';
|
|
33
35
|
information: SafeInformationType;
|
|
@@ -36,4 +38,4 @@ type SeriesEpisodesProps = {
|
|
|
36
38
|
};
|
|
37
39
|
declare function SeriesEpisodes(props: SeriesEpisodesProps): react_jsx_runtime0.JSX.Element;
|
|
38
40
|
//#endregion
|
|
39
|
-
export { SeriesEpisodes, SeriesEpisodesProps };
|
|
41
|
+
export { DetailStyleOneActiveBorderLayer, SeriesEpisodes, SeriesEpisodesProps };
|