@funhub/platform 0.2.30 → 0.2.32

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 (143) hide show
  1. package/dist/biz.d.mts +4 -6
  2. package/dist/biz.mjs +1 -1
  3. package/dist/cli/init/create-client.mjs +1 -1
  4. package/dist/cli/init/shared/constants.mjs +1 -1
  5. package/dist/cli/init/shared/create-project.mjs +1 -1
  6. package/dist/cli/init/shared/prompts.mjs +1 -1
  7. package/dist/cli/init/shared/template.mjs +1 -1
  8. package/dist/cli.mjs +2 -2
  9. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
  10. package/dist/components/biz/basics/fullscreen-feed/runtime/video-slide.mjs +1 -1
  11. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  12. package/dist/components/biz/business/advertisement/ad-match.d.mts +7 -0
  13. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  14. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
  15. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +3 -0
  16. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +6 -0
  17. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  18. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  19. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  20. package/dist/components/biz/business/detail/shared/registry.d.mts +7 -2
  21. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  22. package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +1 -1
  23. package/dist/components/biz/business/detail/shared/video-hero.mjs +1 -1
  24. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  25. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  26. package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +10 -2
  27. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  28. package/dist/components/biz/business/detail/video-detail-recommend/index.d.mts +1 -1
  29. package/dist/components/biz/business/detail/video-detail-recommend/material.d.mts +7 -2
  30. package/dist/components/biz/business/detail/video-detail-recommend/schema.d.mts +7 -2
  31. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
  32. package/dist/components/biz/business/detail/video-detail-recommend/server.d.mts +1 -1
  33. package/dist/components/biz/business/detail/video-detail-recommend/server.mjs +1 -1
  34. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -1
  35. package/dist/components/biz/business/detail/video-detail-recommend/utils.mjs +1 -1
  36. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  37. package/dist/components/biz/business/home-recommend/home-recommend-grid/client.d.mts +1 -1
  38. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.d.mts +3 -1
  39. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/client.mjs +1 -1
  40. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  41. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  42. package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
  43. package/dist/components/biz/business/index.d.mts +3 -5
  44. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  45. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  46. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  47. package/dist/components/biz/business/marquee/client.mjs +1 -1
  48. package/dist/components/biz/business/profile/index.d.mts +3 -5
  49. package/dist/components/biz/business/profile/profile-header/client.d.mts +2 -4
  50. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  51. package/dist/components/biz/business/profile/profile-header/index.d.mts +2 -4
  52. package/dist/components/biz/business/profile/profile-header/material.d.mts +6 -48
  53. package/dist/components/biz/business/profile/profile-header/material.mjs +1 -1
  54. package/dist/components/biz/business/profile/profile-header/schema.d.mts +5 -15
  55. package/dist/components/biz/business/profile/profile-header/schema.mjs +1 -1
  56. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  57. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  58. package/dist/components/biz/business/profile/profile-main/client.d.mts +0 -2
  59. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  60. package/dist/components/biz/business/profile/profile-main/index.d.mts +2 -2
  61. package/dist/components/biz/business/profile/profile-main/material.d.mts +0 -3
  62. package/dist/components/biz/business/profile/profile-main/schema.d.mts +3 -9
  63. package/dist/components/biz/business/profile/profile-main/schema.mjs +1 -1
  64. package/dist/components/biz/business/profile/profile-main/shell.d.mts +0 -7
  65. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  66. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.d.mts +1 -5
  67. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  68. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -1
  69. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.d.mts +1 -5
  70. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  71. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +1 -5
  72. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  73. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.d.mts +0 -3
  74. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -1
  75. package/dist/components/biz/business/profile/profile-main/variants.d.mts +3 -28
  76. package/dist/components/biz/business/profile/profile-main/variants.mjs +1 -1
  77. package/dist/components/biz/business/search-history/client.mjs +1 -1
  78. package/dist/components/biz/business/search-input/client.mjs +1 -1
  79. package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
  80. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  81. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  82. package/dist/components/common/analytics-init/page-lifecycle-tracker.mjs +1 -1
  83. package/dist/components/common/background-preview-modal/background-preview-modal.mjs +1 -1
  84. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +1 -1
  85. package/dist/components/common/popup-video/index.mjs +1 -1
  86. package/dist/components/common/series-episodes/index.mjs +1 -1
  87. package/dist/components/common/tab-bar/index.mjs +1 -1
  88. package/dist/components/common/top-nav-bar/client.mjs +1 -1
  89. package/dist/components/common/video-player/style.module.mjs +4 -0
  90. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
  91. package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
  92. package/dist/components/pages/collection-add/page.mjs +1 -1
  93. package/dist/components/pages/edit/page.mjs +1 -1
  94. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  95. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
  96. package/dist/components/pages/profile/layout.d.mts +0 -2
  97. package/dist/components/pages/profile/page.mjs +1 -1
  98. package/dist/components/pages/search/hot-recommend.mjs +1 -1
  99. package/dist/components/pages/search/hot-search.mjs +1 -1
  100. package/dist/components/pages/search/page-client.mjs +1 -1
  101. package/dist/components/pages/search/search-result/search-all.mjs +1 -1
  102. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  103. package/dist/components/pages/search/top-header.mjs +1 -1
  104. package/dist/components/pages/search-result/page-client.mjs +1 -1
  105. package/dist/components/pages/search-result/search-all.mjs +1 -1
  106. package/dist/components/pages/search-result/search-tab.mjs +1 -1
  107. package/dist/components/pages/search-result/search-user.mjs +1 -1
  108. package/dist/components/pages/search-result/top-header.mjs +1 -1
  109. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  110. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  111. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  112. package/dist/components/pages/video-list/video-list-recommend-item.mjs +1 -1
  113. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  114. package/dist/components/ui/badge.d.mts +1 -1
  115. package/dist/components/ui/button.d.mts +2 -2
  116. package/dist/components/ui/empty.d.mts +1 -1
  117. package/dist/components/ui/item.d.mts +1 -1
  118. package/dist/hooks/use-content-operate.mjs +1 -1
  119. package/dist/i18n/locales/en.mjs +1 -1
  120. package/dist/i18n/locales/zh-CN.mjs +1 -1
  121. package/dist/materials.d.mts +2 -2
  122. package/dist/materials.mjs +1 -1
  123. package/dist/service/advertisement.d.mts +4 -0
  124. package/dist/service/advertisement.mjs +1 -1
  125. package/dist/utils/common.mjs +1 -1
  126. package/dist/utils/http.mjs +1 -1
  127. package/dist/utils/tracking.d.mts +3 -11
  128. package/dist/utils/tracking.mjs +1 -1
  129. package/dist/utils/use-compatible-router.mjs +1 -1
  130. package/dist/utils.d.mts +2 -2
  131. package/dist/utils.mjs +1 -1
  132. package/package.json +1 -1
  133. package/theme.css +48 -1
  134. package/dist/components/biz/business/profile/profile-header/my-client.d.mts +0 -12
  135. package/dist/components/biz/business/profile/profile-header/my-client.mjs +0 -2
  136. package/dist/components/biz/business/profile/profile-header/my-profile-actions.mjs +0 -2
  137. package/dist/components/biz/business/profile/profile-header/my-profile-header.mjs +0 -2
  138. package/dist/components/biz/business/profile/profile-header/shared.mjs +0 -2
  139. package/dist/components/biz/business/profile/profile-header/visitor-client.d.mts +0 -12
  140. package/dist/components/biz/business/profile/profile-header/visitor-client.mjs +0 -2
  141. package/dist/components/biz/business/profile/profile-header/visitor-profile-actions.mjs +0 -2
  142. package/dist/components/biz/business/profile/profile-header/visitor-profile-header.mjs +0 -2
  143. package/dist/components/biz/business/profile/profile-main/tabs/editor-preview-waterfall.mjs +0 -2
@@ -1,24 +1,20 @@
1
1
 
2
- import { InferSchemaProps, MaterialComponentMode, SchemaHasDefaultValue } from "../../../../../utils/schema/schema.mjs";
2
+ import { InferSchemaProps, MaterialComponentMode } from "../../../../../utils/schema/schema.mjs";
3
3
  import "../../../../../utils.mjs";
4
4
  import * as zod from "zod";
5
5
  import * as zod_v4_core0 from "zod/v4/core";
6
6
 
7
7
  //#region components/biz/business/profile/profile-main/schema.d.ts
8
8
  /**
9
- * 用户资料主体物料 inspector 配置。
9
+ * 用户资料主体物料暂不对外开放 inspector 配置。
10
10
  */
11
11
  declare const profileMainInspectorPropsSchema: zod.ZodObject<{
12
- readonly contentTypes: zod.ZodOptional<zod.ZodArray<zod.ZodType<"video" | "novel" | "comic" | "post", unknown, zod_v4_core0.$ZodTypeInternals<"video" | "novel" | "comic" | "post", unknown>>>> & SchemaHasDefaultValue;
13
- } & {
14
12
  mode: zod.ZodOptional<zod.ZodEnum<{
15
13
  renderer: "renderer";
16
14
  editor: "editor";
17
15
  }>>;
18
16
  }, zod_v4_core0.$strip>;
19
- declare const profileMainInspectorDefaultProps: {
20
- readonly contentTypes: ("video" | "novel" | "comic" | "post")[];
21
- };
17
+ declare const profileMainInspectorDefaultProps: {};
22
18
  type ProfileMainInspectorProps = InferSchemaProps<typeof profileMainInspectorPropsSchema>;
23
19
  interface ProfileMainRuntimeTabProps {
24
20
  tab?: string;
@@ -32,8 +28,6 @@ interface UserProfileMainProps extends ProfileMainInspectorProps, ProfileMainRun
32
28
  mode?: MaterialComponentMode;
33
29
  /** 用户 ID。 */
34
30
  id?: string;
35
- /** 是否为本人视角,优先级高于组件内部判断。 */
36
- isMine?: boolean;
37
31
  /** 是否显示创建入口。 */
38
32
  showCreateAction?: boolean;
39
33
  /** 是否要求登录。 */
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";import{profileMainContentTypeOptions as n}from"./variants.mjs";const r=e(e=>({contentTypes:e.array(e.enum(n),{label:`内容类型配置`,description:`可多选视频、小说、漫画、帖子;仅当选择“帖子”时,内容分类标签额外展示“发布”。`,required:!1,defaultValue:[]})})),i=t(r);export{i as profileMainInspectorDefaultProps,r as profileMainInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({})),r=t(n);export{r as profileMainInspectorDefaultProps,n as profileMainInspectorPropsSchema};
@@ -1,5 +1,4 @@
1
1
 
2
- import { ProfileMainTabKey } from "./variants.mjs";
3
2
  import { PropsWithChildren } from "react";
4
3
  import * as react_jsx_runtime0 from "react/jsx-runtime";
5
4
 
@@ -12,10 +11,6 @@ interface UserProfileMainShellProps extends PropsWithChildren {
12
11
  currentUserId?: string;
13
12
  /** 是否为本人视角。 */
14
13
  isMine: boolean;
15
- /** 当前允许展示的主 Tab 列表。 */
16
- tabs: ProfileMainTabKey[];
17
- /** 外部强制指定当前激活主 Tab。 */
18
- activeTab?: ProfileMainTabKey;
19
14
  /** 当前内容区渲染模式。 */
20
15
  renderMode: UserProfileMainRenderMode;
21
16
  /** 主体容器附加类名。 */
@@ -28,8 +23,6 @@ declare function UserProfileMainShell({
28
23
  profileId,
29
24
  currentUserId,
30
25
  isMine,
31
- tabs,
32
- activeTab,
33
26
  renderMode,
34
27
  className,
35
28
  children
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{Button as n}from"../../../../ui/button.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{trackProfilePageClick as u}from"../tracking.mjs";import{useEffect as d,useId 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){let t=f();return g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`37`,height:`10`,viewBox:`0 0 37 10`,fill:`none`,...e,children:[h(`path`,{d:`M32.8921 0.212888C34.4317 -0.398985 36.1765 0.353067 36.7886 1.89258C37.4004 3.43219 36.6484 5.17704 35.1089 5.78906L29.9204 7.85058C26.0475 9.38961 21.7156 9.29046 17.9175 7.57519C15.9234 6.67463 13.6771 6.5 11.5679 7.08203L3.79833 9.22656C2.20143 9.66708 0.549808 8.72958 0.108873 7.13281C-0.331916 5.53567 0.605478 3.88317 2.20262 3.44238L9.97118 1.29785C13.431 0.342993 17.1161 0.629191 20.3872 2.10644C22.7028 3.15218 25.3434 3.21271 27.7046 2.27441L32.8921 0.212888Z`,fill:`url(#${t})`}),h(`defs`,{children:g(`linearGradient`,{id:t,x1:`3.00047`,y1:`5.00097`,x2:`34.0005`,y2:`5.00097`,gradientUnits:`userSpaceOnUse`,children:[h(`stop`,{stopColor:`var(--color-brand-tag-gradient-start)`}),h(`stop`,{offset:`1`,stopColor:`var(--color-brand-tag-gradient-end)`})]})})]})}function x(e){return g(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`68`,height:`58`,viewBox:`0 0 68 58`,fill:`none`,...e,children:[h(`rect`,{x:`0.5`,y:`0.5`,width:`67`,height:`57`,rx:`7.5`,fill:`#1B1829`,stroke:`#322F3E`}),h(`path`,{d:`M27.1175 33.8211L27.118 23.9652C27.1182 21.7159 29.502 20.2667 31.4989 21.3021L40.5835 26.0125C42.6976 27.1086 42.7531 30.1126 40.681 31.2861L31.5959 36.4317C29.596 37.5644 27.1173 36.1195 27.1175 33.8211Z`,fill:`#54525E`})]})}function S(e,t){return t.includes(e)?e:t[0]}function C(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function w(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(C(t))return t;t=t.parentElement}return null}function T(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function E(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function D({profileId:f,currentUserId:C,isMine:D,tabs:O,activeTab:k,renderMode:A,className:j,children:M}){let N=_(`components.pages.profile`),P=m(null),F=l(e=>e.open),I=t(e=>e.userId),L=m(``),[R,z]=y(`tab`,v.withDefault(`collect`)),B=p(()=>k&&O.includes(k)?k:S(R,O),[k,R,O]),V=C||I||``,H=D?V:f,U=p(()=>`profile-scroll:${H||(D?`mine`:`guest`)}:${B}`,[D,B,H]);d(()=>{k||R!==B&&z(B,{shallow:!1})},[k,B,z,R]),d(()=>{if(typeof window>`u`)return;let e=`${D?`mine`:`profile`}:${H||``}:${B}`;L.current!==e&&(L.current=e)},[D,f,V,B,H]),d(()=>{if(typeof window>`u`)return;let e=w(P.current),t=window.sessionStorage.getItem(U),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{E(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(U,String(T(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)})},[U]);let W={collect:N(`client.collect`)||`收藏`,publish:N(`client.publish`)||`发布`,like:N(`client.like`)||`点赞`,history:N(`client.history`)||`历史`},G=M;return A===`login-required`?G=g(r,{className:`flex flex-col items-center pt-[132px] text-center`,children:[h(x,{className:`h-[58px] w-[68px]`}),h(a,{className:`mt-[16px] text-[15px] leading-[normal] text-[#54525E]`,children:N(`client.loginToSeeMoreVideos`)}),h(n,{type:`button`,onClick:F,className:`mt-[16px] h-[40px] min-w-[100px] rounded-[8px] border-0 bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] px-[24px] py-0 text-[16px] font-normal leading-[24px] text-white active:opacity-90`,children:N(`client.loginNow`)})]}):A===`privacy-collect`?G=h(i,{type:`no-content`,text:N(`client.collectionNotPublic`)}):A===`privacy-like`&&(G=h(i,{type:`no-content`,text:N(`client.likeNotPublic`)})),g(r,{ref:P,className:e(`relative grow overflow-hidden rounded-t-[24px] bg-[var(--color-surface-panel-dark)]`,j),children:[h(r,{className:`sticky top-0 z-10 bg-[var(--color-surface-panel-dark)] px-4 pt-8`,children:h(o,{value:B,onValueChange:e=>{k||z(e,{shallow:!1})},className:`h-6 w-full`,children:h(s,{variant:`default`,className:`h-6 w-fit gap-8 px-0`,children:O.map(t=>g(c,{value:t,onClick:e=>{u(e,`${t}_tab`)},className:e(`group/profile-main-tab !flex-none !h-6 min-w-8 !px-0 !py-0 !pb-0 text-[16px] !font-normal leading-6 text-[var(--color-text-secondary)]`,`data-[active]:!text-text1 data-[active]:!font-semibold data-[active]:!text-[18px]`,`data-[state=active]:!text-text1 data-[state=active]:!font-semibold data-[state=active]:!text-[18px]`,`after:hidden`),children:[h(b,{"aria-hidden":`true`,className:e(`pointer-events-none absolute bottom-0 left-1/2 h-[10px] w-[37px] -translate-x-1/2 opacity-0 transition-opacity duration-200`,`group-data-[active]/profile-main-tab:opacity-100`,`group-data-[state=active]/profile-main-tab:opacity-100`)}),h(`span`,{className:e(`relative z-10 text-current`,`group-data-[active]/profile-main-tab:text-text1`,`group-data-[state=active]/profile-main-tab:text-text1`),children:W[t]})]},t))})})}),h(r,{className:`relative px-4 pb-6 pt-7`,children:G})]})}export{D as UserProfileMainShell};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../store/modules/user-store.mjs";import{Button as n}from"../../../../ui/button.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{trackProfilePageClick as u}from"../tracking.mjs";import{profileMainMineTabOptions as d,profileMainProfileTabOptions as f}from"./variants.mjs";import{useEffect as p,useId as m,useMemo as h,useRef as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{useTranslations as y}from"next-intl";import{parseAsString as b,useQueryState as x}from"nuqs";function S(e){let t=m();return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`37`,height:`10`,viewBox:`0 0 37 10`,fill:`none`,...e,children:[_(`path`,{d:`M32.8921 0.212888C34.4317 -0.398985 36.1765 0.353067 36.7886 1.89258C37.4004 3.43219 36.6484 5.17704 35.1089 5.78906L29.9204 7.85058C26.0475 9.38961 21.7156 9.29046 17.9175 7.57519C15.9234 6.67463 13.6771 6.5 11.5679 7.08203L3.79833 9.22656C2.20143 9.66708 0.549808 8.72958 0.108873 7.13281C-0.331916 5.53567 0.605478 3.88317 2.20262 3.44238L9.97118 1.29785C13.431 0.342993 17.1161 0.629191 20.3872 2.10644C22.7028 3.15218 25.3434 3.21271 27.7046 2.27441L32.8921 0.212888Z`,fill:`url(#${t})`}),_(`defs`,{children:v(`linearGradient`,{id:t,x1:`3.00047`,y1:`5.00097`,x2:`34.0005`,y2:`5.00097`,gradientUnits:`userSpaceOnUse`,children:[_(`stop`,{stopColor:`var(--color-brand-tag-gradient-start)`}),_(`stop`,{offset:`1`,stopColor:`var(--color-brand-tag-gradient-end)`})]})})]})}function C(e){return v(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`68`,height:`58`,viewBox:`0 0 68 58`,fill:`none`,...e,children:[_(`rect`,{x:`0.5`,y:`0.5`,width:`67`,height:`57`,rx:`7.5`,fill:`#1B1829`,stroke:`#322F3E`}),_(`path`,{d:`M27.1175 33.8211L27.118 23.9652C27.1182 21.7159 29.502 20.2667 31.4989 21.3021L40.5835 26.0125C42.6976 27.1086 42.7531 30.1126 40.681 31.2861L31.5959 36.4317C29.596 37.5644 27.1173 36.1195 27.1175 33.8211Z`,fill:`#54525E`})]})}function w(e){return e?[...d]:[...f]}function T(e,t){let n=w(t);return n.includes(e)?e:n[0]}function E(e){let t=window.getComputedStyle(e);return/auto|scroll|overlay/.test(t.overflowY)}function D(e){if(typeof window>`u`)return null;let t=e?.parentElement??null;for(;t;){if(E(t))return t;t=t.parentElement}return null}function O(e){return typeof window>`u`?0:e?e.scrollTop:window.scrollY||window.pageYOffset||0}function k(e,t){if(!(typeof window>`u`)){if(e){e.scrollTo({top:t});return}window.scrollTo({top:t,left:0})}}function A({profileId:d,currentUserId:f,isMine:m,renderMode:E,className:A,children:j}){let M=y(`components.pages.profile`),N=g(null),P=l(e=>e.open),F=t(e=>e.userId),I=g(``),L=w(m),[R,z]=x(`tab`,b.withDefault(`collect`)),B=h(()=>T(R,m),[m,R]),V=f||F||``,H=m?V:d,U=h(()=>`profile-scroll:${H||(m?`mine`:`guest`)}:${B}`,[m,B,H]);p(()=>{R!==B&&z(B,{shallow:!1})},[B,z,R]),p(()=>{if(typeof window>`u`)return;let e=`${m?`mine`:`profile`}:${H||``}:${B}`;I.current!==e&&(I.current=e)},[m,d,V,B,H]),p(()=>{if(typeof window>`u`)return;let e=D(N.current),t=window.sessionStorage.getItem(U),n=t?Number(t):0;Number.isFinite(n)&&n>0&&requestAnimationFrame(()=>{k(e,n)});let r=!1,i=()=>{r||(r=!0,requestAnimationFrame(()=>{window.sessionStorage.setItem(U,String(O(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)})},[U]);let W={collect:M(`client.collect`),like:M(`client.like`),history:M(`client.history`)},G=j;return E===`login-required`?G=v(r,{className:`flex flex-col items-center pt-[132px] text-center`,children:[_(C,{className:`h-[58px] w-[68px]`}),_(a,{className:`mt-[16px] text-[15px] leading-[normal] text-[#54525E]`,children:M(`client.loginToSeeMoreVideos`)}),_(n,{type:`button`,onClick:P,className:`mt-[16px] h-[40px] min-w-[100px] rounded-[8px] border-0 bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] px-[24px] py-0 text-[16px] font-normal leading-[24px] text-white active:opacity-90`,children:M(`client.loginNow`)})]}):E===`privacy-collect`?G=_(i,{type:`no-content`,text:M(`client.collectionNotPublic`)}):E===`privacy-like`&&(G=_(i,{type:`no-content`,text:M(`client.likeNotPublic`)})),v(r,{ref:N,className:e(`relative grow overflow-hidden rounded-t-[24px] bg-[var(--color-surface-panel-dark)]`,A),children:[_(r,{className:`sticky top-0 z-10 bg-[var(--color-surface-panel-dark)] no-vw-x-16 pt-8`,children:_(o,{value:B,onValueChange:e=>{z(e,{shallow:!1})},className:`h-6 w-full`,children:_(s,{variant:`default`,className:`h-6 w-fit gap-8 px-0`,children:L.map(t=>v(c,{value:t,onClick:e=>{u(e,`${t}_tab`)},className:e(`group/profile-main-tab !flex-none !h-6 min-w-8 !px-0 !py-0 !pb-0 text-[16px] !font-normal leading-6 text-[var(--color-text-secondary)]`,`data-[active]:!text-text1 data-[active]:!font-semibold data-[active]:!text-[18px]`,`data-[state=active]:!text-text1 data-[state=active]:!font-semibold data-[state=active]:!text-[18px]`,`after:hidden`),children:[_(S,{"aria-hidden":`true`,className:e(`pointer-events-none absolute bottom-0 left-1/2 h-[10px] w-[37px] -translate-x-1/2 opacity-0 transition-opacity duration-200`,`group-data-[active]/profile-main-tab:opacity-100`,`group-data-[state=active]/profile-main-tab:opacity-100`)}),_(`span`,{className:`relative z-10`,children:W[t]})]},t))})})}),_(r,{className:`relative no-vw-x-16 pb-6 pt-7`,children:G})]})}export{A as UserProfileMainShell};
@@ -1,7 +1,6 @@
1
1
 
2
2
  import { MaterialComponentMode } from "../../../../../../../utils/schema/schema.mjs";
3
3
  import "../../../../../../../utils.mjs";
4
- import { ProfileMainContentType } from "../../variants.mjs";
5
4
  import * as react_jsx_runtime0 from "react/jsx-runtime";
6
5
 
7
6
  //#region components/biz/business/profile/profile-main/tabs/collect-tab/client.d.ts
@@ -16,8 +15,6 @@ interface CollectTabProps {
16
15
  queryKeyPrefix?: Array<string | number | undefined>;
17
16
  /** 是否为本人视角。 */
18
17
  isMine?: boolean;
19
- /** 二级标签配置。 */
20
- contentTypes?: ProfileMainContentType[];
21
18
  }
22
19
  /**
23
20
  * 收藏 Tab
@@ -27,8 +24,7 @@ declare function CollectTab({
27
24
  userId,
28
25
  showCreateAction,
29
26
  queryKeyPrefix,
30
- isMine,
31
- contentTypes
27
+ isMine
32
28
  }: CollectTabProps): react_jsx_runtime0.JSX.Element;
33
29
  //#endregion
34
30
  export { CollectTab, CollectTabProps };
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{gCommunityGetSubscribedCollections as n,gCommunityGetUserCollections as r,gInteractionListCollects as i,pCommunityBatchDeleteCollection as a,pInteractionBatchDeleteCollects as ee}from"../../../../../../../service/generated/client.mjs";import{Button as te}from"../../../../../../ui/button.mjs";import{Box as o}from"../../../../../../ui/box.mjs";import{Text as ne}from"../../../../../../ui/text.mjs";import{Tabs as re,TabsList as ie,TabsTrigger as s}from"../../../../../../ui/tabs.mjs";import{useMutation as ae,usePaginated as c,useUpdateRequest as oe}from"../../../../../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as se}from"../../../../../../common/collection-popup/create-collection-sheet.mjs";import{DeleteConfirmDialog as ce}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as le}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as ue}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as de}from"../../../tracking.mjs";import{ProfileMainEmptyState as l}from"../../empty-state.mjs";import{getProfileMainSecondaryTabOptions as fe}from"../../variants.mjs";import{EditorPreviewWaterfall as pe}from"../editor-preview-waterfall.mjs";import{CollectVideoWaterfall as me}from"./video-waterfall.mjs";import{toast as u}from"sonner";import{useEffect as d,useMemo as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";import _ from"dayjs";import{parseAsString as he,useQueryState as ge}from"nuqs";const _e={video:1,post:2};function ve(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??b).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function v(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function ye(e,t){let n=t[e.content_id||``]?.create_time,r=v(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:_(n).toDate().getTime()}}function be(e){return String(e.description||e.detail?.description||``).trim()||``}function xe(e){let t=String(e.img_type||``).trim().toLowerCase();return t===`short`?e.img_y||e.img_x||``:t===`long`?e.img_x||e.img_y||``:e.img_y||e.img_x||``}function Se(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:xe(e),duration:Number(e.duration??e.detail?.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:_(n).toDate().getTime(),imgType:e.img_type||e.media?.img_type||``,score:e.score??e.detail?.score,description:be(e)}}function y(e){let t=v(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function Ce(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function we(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(y),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,isDefaultCollection:!!e.is_default,contents:r===0?Ce(e.collection_id||`collection`):n}}const b=[],Te=[`created`,`subscribed`];function Ee({className:t}){return m(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:m(`path`,{d:`M7.33398 7.3335V4.66683H8.66732V7.3335H11.334V8.66683H8.66732V11.3335H7.33398V8.66683H4.66732V7.3335H7.33398ZM8.00065 14.6668C4.31875 14.6668 1.33398 11.682 1.33398 8.00016C1.33398 4.31826 4.31875 1.3335 8.00065 1.3335C11.6825 1.3335 14.6673 4.31826 14.6673 8.00016C14.6673 11.682 11.6825 14.6668 8.00065 14.6668ZM8.00065 13.3335C10.9462 13.3335 13.334 10.9457 13.334 8.00016C13.334 5.05464 10.9462 2.66683 8.00065 2.66683C5.05513 2.66683 2.66732 5.05464 2.66732 8.00016C2.66732 10.9457 5.05513 13.3335 8.00065 13.3335Z`,fill:`currentColor`})})}function De({className:t}){return m(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:m(`g`,{children:m(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M10.7666 2.12385C10.9828 1.94731 11.3023 1.95935 11.5039 2.16096L13.8389 4.49592C13.942 4.5991 13.9999 4.73966 14 4.88557C14 5.03152 13.942 5.17199 13.8389 5.27522L11.5078 7.6053C11.5063 7.60688 11.5055 7.60959 11.5039 7.61116C11.5023 7.61279 11.4997 7.61345 11.498 7.61506L5.27539 13.8387C5.17216 13.9418 5.03168 13.9998 4.88574 13.9998H2.55078C2.24679 13.9998 2.00001 13.753 2 13.449V11.1141C2 10.9681 2.05794 10.8277 2.16113 10.7244L10.7246 2.16096L10.7666 2.12385ZM3.10059 11.3416V12.8992H4.6582L10.335 7.22151L8.77734 5.66389L3.10059 11.3416ZM9.55664 4.88459L11.1143 6.44221L12.6709 4.88557L11.1133 3.32893L9.55664 4.88459Z`,fill:`currentColor`})})})}const Oe=`shrink-0 whitespace-nowrap flex items-center gap-[2px] text-[14px] leading-6 text-[var(--color-text-secondary)]`;function x(){return e(`!flex !items-center !flex-none !h-auto !w-auto !rounded-[4px] !px-2 !py-[5px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function S({mode:e=`renderer`,userId:_,showCreateAction:v=!1,queryKeyPrefix:be,isMine:xe=!1,contentTypes:y}){let Ce=g(),S=g(`components.pages.collectionDetail`),C=g(`components.pages.profile.components.tabs`),w=e===`renderer`,T=be??[],E=f(()=>fe(y),[y]),D=f(()=>[...E,`collection`],[E]),[O,k]=ge(`collectTab`,he.withDefault(`video`)),[A,ke]=ge(`collectCollectionTab`,he.withDefault(`created`)),j=f(()=>{let e=D[0]??`video`;return D.includes(O)?O:e},[D,O]),M=f(()=>Te.includes(A)?A:`created`,[A]),[N,P]=p(!1),[F,I]=p(!1),[Ae,L]=p(!1),[je,R]=p(!1),[Me,Ne]=p(!1),[z,B]=p(()=>new Set),[V,H]=p(()=>new Set),{userId:Pe,userInfo:Fe}=t(),U=_||Pe||Fe?.userId||``,Ie=oe();async function Le(e,t){if(!U)return{data:{list:[],total:0}};let n=await i({user_id:U,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},a=n.data?.collect_items?.map(e=>t===_e.video?Se(e.video_info,r):ye(e.post_info,r))??[];return{data:{list:a,total:n.data?.total??a.length}}}let W=c({key:[...T,`user-collect-video`,U],initialPageParam:1,async queryFn(e){return Le(e,_e.video)},options:{staleTime:0,enabled:w},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),G=c({key:[...T,`user-collect-post`,U],initialPageParam:1,options:{staleTime:0,enabled:w},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function Re(e){if(!U)return{data:{list:[],total:0}};let t=await r({page:e,user_id:_,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(we),total:t.data?.data?.total??n.length}}}async function ze(e){if(!U)return{data:{list:[],total:0}};let t=(await n({page:e,user_id:_,page_size:10})).data?.data,r=t?.collections??[];return{data:{list:r.map(we),total:t?.total??r.length}}}let K=c({key:[...T,`user-collection-created`,U],initialPageParam:1,options:{staleTime:0,enabled:w},async queryFn(e){return Re(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),q=c({key:[...T,`user-collection-subscribed`,U],initialPageParam:1,options:{staleTime:0,enabled:w},async queryFn(e){return ze(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),Be=f(()=>W.data?.pages.flatMap(e=>e.data?.list??b)??b,[W.data]),Ve=f(()=>G.data?.pages.flatMap(e=>e.data?.list??b)??b,[G.data]),He=f(()=>K.data?.pages.flatMap(e=>e.data?.list??b)??b,[K.data]),Ue=f(()=>q.data?.pages.flatMap(e=>e.data?.list??b)??b,[q.data]),We=j===`video`?Be:j===`post`?Ve:b,J=new Set(We.map(e=>e.id)),Ge=J.size,Ke=Ge>0&&z.size===Ge,Y=j===`video`?W:G,X=M===`created`?K:q,Z=M===`created`?He:Ue,qe=j===`video`?Be.length===0&&!Y.isFetching:j===`post`?Ve.length===0&&!Y.isFetching:Z.length===0&&!X.isFetching,Je=f(()=>new Set(Z.filter(e=>!e.isDefaultCollection).map(e=>e.id)),[Z]),Ye=Je.size>0&&[...Je].every(e=>V.has(e)),Xe=j===`video`,Ze=v&&M===`created`,Qe=[...T,`user-collect-video`,U],$e=[...T,`user-collect-post`,U],{mutateAsync:et,isPending:Q}=ae(async e=>await ee({app_id:0,user_id:U,folder_id:``,content_type:Xe?1:2,content_ids:e})),{mutateAsync:tt,isPending:$}=ae(async e=>await a({collection_ids:e})),nt=()=>{P(!N),B(new Set)};function rt(){Ze&&(I(e=>!e),H(new Set))}d(()=>{if(B(new Set),j===`collection`){P(!1),L(!1);return}P(!1),H(new Set),I(!1),R(!1)},[j]),d(()=>{H(new Set),I(!1),R(!1)},[M]),d(()=>{O!==j&&k(j)},[j,O,k]),d(()=>{A!==M&&ke(M)},[M,A,ke]);let it=e=>{B(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},at=()=>{z.size===J.size&&J.size>0?B(new Set):B(new Set(J))};function ot(e){if(Z.find(t=>t.id===e)?.isDefaultCollection){u.error(S(`detail.defaultCollectionDeleteNotSupported`));return}H(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function st(){if(Ye){H(new Set);return}H(new Set(Je))}function ct(){z.size===0||Q||L(!0)}function lt(){Q||L(!1)}function ut(){$||R(!1)}async function dt(){if(!(z.size===0||Q)){if(!U){u.error(C(`collectTab.pleaseLogin`));return}try{let e=Array.from(z),t=await et(e);if(t.code===0){u.success(C(`collectTab.uncollectedSuccess`));let t=new Set(e);Ie(Xe?Qe:$e,e=>ve(e,t)),L(!1),B(new Set),P(!1)}else u.error(t.message||C(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),u.error(C(`collectTab.operationFailed`))}}}function ft(){V.size===0||$||R(!0)}async function pt(){if(!(V.size===0||$)){if(!U){u.error(C(`collectTab.pleaseLogin`));return}try{let e=await tt(Array.from(V));if(e.code===0){u.success(S(`detail.deleteSuccess`)),await X.refetch(),R(!1),H(new Set),I(!1);return}u.error(e.message||S(`detail.deleteFailed`))}catch(e){console.error(`删除收藏夹失败`,e),u.error(S(`detail.deleteFailed`))}}}let mt=async()=>{if(w){if(j===`collection`){await X.fetchNextPage();return}await Y.fetchNextPage()}};return h(o,{children:[h(o,{className:`flex items-start justify-between gap-3`,children:[m(o,{className:`min-w-0 flex-1 overflow-x-auto overflow-y-hidden [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:D.length>0&&m(re,{value:j,onValueChange:e=>{k(e)},children:h(ie,{variant:`tag`,className:`!h-auto !gap-4 !p-0`,children:[E.includes(`video`)&&m(s,{value:`video`,className:x(),children:C(`collectTab.video`)}),E.includes(`novel`)&&m(s,{value:`novel`,className:x(),children:C(`collectTab.novel`)}),E.includes(`comic`)&&m(s,{value:`comic`,className:x(),children:C(`collectTab.comic`)}),E.includes(`post`)&&m(s,{value:`post`,className:x(),children:C(`collectTab.posts`)}),m(s,{value:`collection`,className:x(),children:C(`collectTab.collections`)})]})})}),j===`collection`?v&&h(o,{className:`shrink-0 flex items-center gap-3 pl-2`,children:[h(`button`,{type:`button`,className:Oe,onClick:()=>Ne(!0),children:[m(Ee,{}),m(ne,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:Ce(`components.pages.collectionCreate.form.create`)})]}),Ze&&h(`button`,{type:`button`,className:Oe,onClick:rt,children:[!F&&m(De,{}),m(ne,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:C(F?`collectTab.cancel`:`collectTab.edit`)})]})]}):(j===`video`||j===`post`)&&xe&&h(te,{variant:`ghost`,size:`sm`,className:`h-6 gap-[2px] px-0 text-[14px] leading-6 text-[var(--color-text-secondary)] hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:nt,children:[N?null:m(De,{}),m(ne,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:C(N?`collectTab.cancel`:`collectTab.edit`)})]})]}),m(o,{onClick:e=>{de(e,`content_item`)},className:`pt-4`,children:!w&&(j===`video`||j===`post`||j===`novel`||j===`comic`)?m(pe,{contentType:j}):j===`video`?qe?m(l,{text:C(`collectTab.emptyContent`)}):m(me,{list:Be,loading:Y.isFetching,hasMore:Y.hasNextPage??!1,loadMore:mt,emptyText:C(`collectTab.emptyContent`),isEditMode:N,selectedIds:z,onToggleSelection:it}):j===`post`?qe?m(l,{text:C(`collectTab.emptyContent`)}):m(ue,{list:Ve,loading:Y.isFetching,hasMore:Y.hasNextPage??!1,loadMore:mt,emptyText:C(`collectTab.emptyContent`),isEditMode:N,selectedIds:z,onToggleSelection:it}):j===`novel`||j===`comic`||qe?m(l,{text:C(`collectTab.emptyContent`)}):m(le,{list:Z,loading:X.isFetching,hasMore:X.hasNextPage??!1,loadMore:mt,emptyText:C(`collectTab.emptyContent`),isEditMode:F,selectedIds:V,onToggleSelection:ot})}),N&&j!==`collection`&&h(o,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[h(o,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:at,children:C(Ke?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:z.size===0||Q,onClick:ct,children:C(Q?`collectTab.processing`:`collectTab.delete`)})]}),m(o,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),F&&h(o,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[h(o,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:st,children:C(Ye?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:V.size===0||$,onClick:ft,children:C($?`collectTab.processing`:`collectTab.delete`)})]}),m(o,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),m(ce,{open:Ae,onOpenChange:L,onCancel:lt,onConfirm:dt,title:``,description:C(`collectTab.deleteConfirmDescription`),confirmText:C(`collectTab.delete`),cancelText:C(`collectTab.cancel`),isConfirming:Q}),m(ce,{open:je,onOpenChange:R,onCancel:ut,onConfirm:pt,title:S(`detail.deleteCollection`),isConfirming:$}),m(se,{visible:Me,onClose:()=>Ne(!1),onCreated:()=>{K.refetch()}})]})}export{S as CollectTab};
2
+ "use client";import{cn as e}from"../../../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{gCommunityGetSubscribedCollections as n,gCommunityGetUserCollections as r,gInteractionListCollects as i,pCommunityBatchDeleteCollection as a,pInteractionBatchDeleteCollects as ee}from"../../../../../../../service/generated/client.mjs";import{Button as te}from"../../../../../../ui/button.mjs";import{Box as o}from"../../../../../../ui/box.mjs";import{Text as s}from"../../../../../../ui/text.mjs";import{Tabs as ne,TabsList as re,TabsTrigger as ie}from"../../../../../../ui/tabs.mjs";import{useMutation as ae,usePaginated as c,useUpdateRequest as oe}from"../../../../../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as se}from"../../../../../../common/collection-popup/create-collection-sheet.mjs";import{DeleteConfirmDialog as ce}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{CollectionList as le}from"../../../../../../common/list/collection-list/collection-list.mjs";import{PostList as ue}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as de}from"../../../tracking.mjs";import{ProfileMainEmptyState as l}from"../../empty-state.mjs";import{CollectVideoWaterfall as fe}from"./video-waterfall.mjs";import{toast as u}from"sonner";import{useEffect as d,useMemo as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";import _ from"dayjs";import{parseAsString as pe,useQueryState as me}from"nuqs";const he={video:1,post:2};function ge(e,t){if(!e)return e;let n=0,r=e.pages.map(e=>({page:e,filteredList:(e.data?.list??b).filter(e=>{let r=e?.id??``,i=t.has(r);return i&&(n+=1),!i})}));return{...e,pages:r.map(({page:e,filteredList:t})=>{if(!e.data)return e;let r=typeof e.data.total==`number`?Math.max(0,e.data.total-n):e.data.total;return{...e,data:{...e.data,list:t,total:r}}})}}function v(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function _e(e,t){let n=t[e.content_id||``]?.create_time,r=v(e);return{id:e.content_id||``,title:e.content||``,coverImage:r,publishTime:_(n).toDate().getTime()}}function ve(e){return String(e.description||e.detail?.description||``).trim()||``}function ye(e){let t=String(e.img_type||``).trim().toLowerCase();return t===`short`?e.img_y||e.img_x||``:t===`long`?e.img_x||e.img_y||``:e.img_y||e.img_x||``}function be(e,t){let n=t[e.id||``]?.create_time;return{is_more_link:e.is_more_link,id:e.id||``,title:e.name||``,coverImage:ye(e),duration:Number(e.duration??e.detail?.duration??0),authorName:e.up_user||e.source_username||``,viewCount:e.play_count??0,publishTime:_(n).toDate().getTime(),imgType:e.img_type||e.media?.img_type||``,score:e.score??e.detail?.score,description:ve(e)}}function xe(e){let t=v(e);return{contentType:e.source_type,id:e.content_id,title:e.title||e.content,coverImage:t,isVideo:!1,isMovie:!1}}function y(e){return Array.from({length:3},(t,n)=>({id:`${e}-placeholder-${n}`,isPlaceholder:!0}))}function Se(e){let t=e.contents??[],n=(Array.isArray(t)?t:[]).slice(0,3).map(xe),r=e.content_count??n.length;return{id:e.collection_id||``,title:e.title||``,contentCount:r,isDefaultCollection:!!e.is_default,contents:r===0?y(e.collection_id||`collection`):n}}const b=[],Ce=[`video`,`post`,`collection`],we=[`created`,`subscribed`];function Te({className:t}){return m(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:m(`path`,{d:`M7.33398 7.3335V4.66683H8.66732V7.3335H11.334V8.66683H8.66732V11.3335H7.33398V8.66683H4.66732V7.3335H7.33398ZM8.00065 14.6668C4.31875 14.6668 1.33398 11.682 1.33398 8.00016C1.33398 4.31826 4.31875 1.3335 8.00065 1.3335C11.6825 1.3335 14.6673 4.31826 14.6673 8.00016C14.6673 11.682 11.6825 14.6668 8.00065 14.6668ZM8.00065 13.3335C10.9462 13.3335 13.334 10.9457 13.334 8.00016C13.334 5.05464 10.9462 2.66683 8.00065 2.66683C5.05513 2.66683 2.66732 5.05464 2.66732 8.00016C2.66732 10.9457 5.05513 13.3335 8.00065 13.3335Z`,fill:`currentColor`})})}function Ee({className:t}){return m(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,className:e(`text-[var(--color-text-secondary)] opacity-60`,t),children:m(`g`,{children:m(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M10.7666 2.12385C10.9828 1.94731 11.3023 1.95935 11.5039 2.16096L13.8389 4.49592C13.942 4.5991 13.9999 4.73966 14 4.88557C14 5.03152 13.942 5.17199 13.8389 5.27522L11.5078 7.6053C11.5063 7.60688 11.5055 7.60959 11.5039 7.61116C11.5023 7.61279 11.4997 7.61345 11.498 7.61506L5.27539 13.8387C5.17216 13.9418 5.03168 13.9998 4.88574 13.9998H2.55078C2.24679 13.9998 2.00001 13.753 2 13.449V11.1141C2 10.9681 2.05794 10.8277 2.16113 10.7244L10.7246 2.16096L10.7666 2.12385ZM3.10059 11.3416V12.8992H4.6582L10.335 7.22151L8.77734 5.66389L3.10059 11.3416ZM9.55664 4.88459L11.1143 6.44221L12.6709 4.88557L11.1133 3.32893L9.55664 4.88459Z`,fill:`currentColor`})})})}const De=`flex items-center gap-[2px] text-[14px] leading-6 text-[var(--color-text-secondary)]`;function Oe(){return e(`!flex !items-center !flex-none !h-6 !w-auto !rounded-[4px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function x({mode:e=`renderer`,userId:_,showCreateAction:v=!1,queryKeyPrefix:ve,isMine:ye=!1}){let xe=g(),y=g(`components.pages.collectionDetail`),x=g(`components.pages.profile.components.tabs`),S=e===`renderer`,C=ve??[],[w,T]=me(`collectTab`,pe.withDefault(`video`)),[E,ke]=me(`collectCollectionTab`,pe.withDefault(`created`)),D=f(()=>Ce.includes(w)?w:`video`,[w]),O=f(()=>we.includes(E)?E:`created`,[E]),[k,A]=p(!1),[j,M]=p(!1),[Ae,N]=p(!1),[je,P]=p(!1),[Me,Ne]=p(!1),[F,I]=p(()=>new Set),[L,R]=p(()=>new Set),{userId:Pe,userInfo:Fe}=t(),z=_||Pe||Fe?.userId||``,Ie=oe();async function Le(e,t){if(!z)return{data:{list:[],total:0}};let n=await i({user_id:z,folder_id:``,content_type:t,page:e,page_size:10}),r=n.data.collect_infos?.reduce((e,t)=>(t.content_id&&(e[t.content_id]=t),e),{})||{},a=n.data?.collect_items?.map(e=>t===he.video?be(e.video_info,r):_e(e.post_info,r))??[];return{data:{list:a,total:n.data?.total??a.length}}}let B=c({key:[...C,`user-collect-video`,z],initialPageParam:1,async queryFn(e){return Le(e,he.video)},options:{staleTime:0,enabled:S},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),V=c({key:[...C,`user-collect-post`,z],initialPageParam:1,options:{staleTime:0,enabled:S},async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}});async function Re(e){if(!z)return{data:{list:[],total:0}};let t=await r({page:e,user_id:_,page_size:10}),n=t.data?.data?.collections??[];return{data:{list:n.map(Se),total:t.data?.data?.total??n.length}}}async function ze(e){if(!z)return{data:{list:[],total:0}};let t=(await n({page:e,user_id:_,page_size:10})).data?.data,r=t?.collections??[];return{data:{list:r.map(Se),total:t?.total??r.length}}}let H=c({key:[...C,`user-collection-created`,z],initialPageParam:1,options:{staleTime:0,enabled:S},async queryFn(e){return Re(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),U=c({key:[...C,`user-collection-subscribed`,z],initialPageParam:1,options:{staleTime:0,enabled:S},async queryFn(e){return ze(e)},getNextPageParam(e,t){if((e?.data?.list||[]).length!==0)return t.length+1}}),W=f(()=>B.data?.pages.flatMap(e=>e.data?.list??b)??b,[B.data]),G=f(()=>V.data?.pages.flatMap(e=>e.data?.list??b)??b,[V.data]),Be=f(()=>H.data?.pages.flatMap(e=>e.data?.list??b)??b,[H.data]),Ve=f(()=>U.data?.pages.flatMap(e=>e.data?.list??b)??b,[U.data]),He=D===`video`?W:D===`post`?G:b,K=new Set(He.map(e=>e.id)),Ue=K.size,We=Ue>0&&F.size===Ue,q=D===`video`?B:V,J=O===`created`?H:U,Y=O===`created`?Be:Ve,X=D===`video`?W.length===0&&!q.isFetching:D===`post`?G.length===0&&!q.isFetching:Y.length===0&&!J.isFetching,Z=f(()=>new Set(Y.filter(e=>!e.isDefaultCollection).map(e=>e.id)),[Y]),Ge=Z.size>0&&[...Z].every(e=>L.has(e)),Ke=D===`video`,qe=v&&O===`created`,Je=[...C,`user-collect-video`,z],Ye=[...C,`user-collect-post`,z],{mutateAsync:Xe,isPending:Q}=ae(async e=>await ee({app_id:0,user_id:z,folder_id:``,content_type:Ke?1:2,content_ids:e})),{mutateAsync:Ze,isPending:$}=ae(async e=>await a({collection_ids:e})),Qe=()=>{A(!k),I(new Set)};function $e(){qe&&(M(e=>!e),R(new Set))}d(()=>{if(I(new Set),D===`collection`){A(!1),N(!1);return}A(!1),R(new Set),M(!1),P(!1)},[D]),d(()=>{R(new Set),M(!1),P(!1)},[O]),d(()=>{w!==D&&T(D)},[D,w,T]),d(()=>{E!==O&&ke(O)},[O,E,ke]);let et=e=>{I(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},tt=()=>{F.size===K.size&&K.size>0?I(new Set):I(new Set(K))};function nt(e){if(Y.find(t=>t.id===e)?.isDefaultCollection){u.error(y(`detail.defaultCollectionDeleteNotSupported`));return}R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function rt(){if(Ge){R(new Set);return}R(new Set(Z))}function it(){F.size===0||Q||N(!0)}function at(){Q||N(!1)}function ot(){$||P(!1)}async function st(){if(!(F.size===0||Q)){if(!z){u.error(x(`collectTab.pleaseLogin`));return}try{let e=Array.from(F),t=await Xe(e);if(t.code===0){u.success(x(`collectTab.uncollectedSuccess`));let t=new Set(e);Ie(Ke?Je:Ye,e=>ge(e,t)),N(!1),I(new Set),A(!1)}else u.error(t.message||x(`collectTab.uncollectFailed`))}catch(e){console.error(`取消收藏失败`,e),u.error(x(`collectTab.operationFailed`))}}}function ct(){L.size===0||$||P(!0)}async function lt(){if(!(L.size===0||$)){if(!z){u.error(x(`collectTab.pleaseLogin`));return}try{let e=await Ze(Array.from(L));if(e.code===0){u.success(y(`detail.deleteSuccess`)),await J.refetch(),P(!1),R(new Set),M(!1);return}u.error(e.message||y(`detail.deleteFailed`))}catch(e){console.error(`删除收藏夹失败`,e),u.error(y(`detail.deleteFailed`))}}}let ut=async()=>{if(S){if(D===`collection`){await J.fetchNextPage();return}await q.fetchNextPage()}};return h(o,{children:[h(o,{className:`flex items-center justify-between`,children:[m(ne,{value:D,onValueChange:e=>{T(e)},children:h(re,{variant:`tag`,className:`!h-6 !gap-4 !p-0`,children:[m(ie,{value:`video`,className:Oe(),children:x(`collectTab.video`)}),m(ie,{value:`collection`,className:Oe(),children:x(`collectTab.collections`)})]})}),D===`collection`?v&&h(o,{className:`flex items-center gap-3`,children:[h(`button`,{type:`button`,className:De,onClick:()=>Ne(!0),children:[m(Te,{}),m(s,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:xe(`components.pages.collectionCreate.form.create`)})]}),qe&&h(`button`,{type:`button`,className:De,onClick:$e,children:[!j&&m(Ee,{}),m(s,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:x(j?`collectTab.cancel`:`collectTab.edit`)})]})]}):(D===`video`||D===`post`)&&ye&&h(te,{variant:`ghost`,size:`sm`,className:`h-6 gap-[2px] px-0 text-[14px] leading-6 text-[var(--color-text-secondary)] hover:bg-transparent hover:text-[var(--color-text-secondary)]`,onClick:Qe,children:[k?null:m(Ee,{}),m(s,{className:`text-[14px] leading-6 text-[var(--color-text-secondary)]`,children:x(k?`collectTab.cancel`:`collectTab.edit`)})]})]}),m(o,{onClick:e=>{de(e,`content_item`)},className:`pt-4`,children:D===`video`?X?m(l,{text:x(`collectTab.emptyContent`)}):m(fe,{list:W,loading:q.isFetching,hasMore:q.hasNextPage??!1,loadMore:ut,emptyText:x(`collectTab.emptyContent`),isEditMode:k,selectedIds:F,onToggleSelection:et}):D===`post`?X?m(l,{text:x(`collectTab.emptyContent`)}):m(ue,{list:G,loading:q.isFetching,hasMore:q.hasNextPage??!1,loadMore:ut,emptyText:x(`collectTab.emptyContent`),isEditMode:k,selectedIds:F,onToggleSelection:et}):X?m(l,{text:x(`collectTab.emptyContent`)}):m(le,{list:Y,loading:J.isFetching,hasMore:J.hasNextPage??!1,loadMore:ut,emptyText:x(`collectTab.emptyContent`),isEditMode:j,selectedIds:L,onToggleSelection:nt})}),k&&D!==`collection`&&h(o,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[h(o,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:tt,children:x(We?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:F.size===0||Q,onClick:it,children:x(Q?`collectTab.processing`:`collectTab.delete`)})]}),m(o,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),j&&h(o,{className:`fixed bottom-0 left-0 right-0 z-[60] h-[98px] bg-[var(--color-overlay-panel-fade-start90)] backdrop-blur-[50px]`,children:[h(o,{className:`flex items-center gap-[2px] px-4 pt-2`,children:[m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] text-[16px] leading-6 text-[var(--color-text-primary)]`,onClick:rt,children:x(Ge?`collectTab.cancelSelectAll`:`collectTab.selectAll`)}),m(`button`,{type:`button`,className:`flex h-12 w-[178px] items-center justify-center rounded-[100px] bg-[var(--color-surface-white10)] text-[16px] leading-6 text-[var(--color-border-required)] disabled:opacity-40`,disabled:L.size===0||$,onClick:ct,children:x($?`collectTab.processing`:`collectTab.delete`)})]}),m(o,{className:`pointer-events-none absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[100px] bg-[var(--color-neutral-black)]`})]}),m(ce,{open:Ae,onOpenChange:N,onCancel:at,onConfirm:st,title:``,description:x(`collectTab.deleteConfirmDescription`),confirmText:x(`collectTab.delete`),cancelText:x(`collectTab.cancel`),isConfirming:Q}),m(ce,{open:je,onOpenChange:P,onCancel:ot,onConfirm:lt,title:y(`detail.deleteCollection`),isConfirming:$}),m(se,{visible:Me,onClose:()=>Ne(!1),onCreated:()=>{H.refetch()}})]})}export{x as CollectTab};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{formatCompactCount as e}from"../../../../../../../utils/common.mjs";import{Image as t}from"../../../../../../ui/image.mjs";import{Box as n}from"../../../../../../ui/box.mjs";import{EmptyState as r}from"../../../../../../ui/empty.mjs";import{InfiniteScroll as i}from"../../../../../../ui/infinite-scroll.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{Skeleton as o}from"../../../../../../ui/skeleton.mjs";import s from"../../../../../../ui/link.mjs";import{CollectionSelectIcon as c,CollectionSelectedIcon as l}from"../../../../../../common/list/collection-list/collection-select-icon.mjs";import{VideoIcon as u}from"../../../../../../common/icons/video.mjs";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";import{useTranslations as m}from"next-intl";const h=`h-[128px] w-[173px]`,g={backgroundImage:`linear-gradient(179.56deg, rgba(8, 2, 17, 0.5) 1.27%, rgba(8, 2, 17, 0) 33.97%, rgba(8, 2, 17, 0) 63.33%, rgba(8, 2, 17, 0.5) 98.57%)`};function _(t){return e(Number.isFinite(t)?Math.max(0,t):0)}function v(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function y(){return f(n,{className:`flex w-full flex-col gap-4`,children:Array.from({length:4},(e,t)=>p(n,{className:`flex gap-3`,children:[f(o,{className:`shrink-0 rounded-[8px] bg-white/8 ${h}`}),p(n,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-1`,children:[f(o,{className:`h-5 w-full rounded bg-white/8`}),f(o,{className:`h-4 w-full rounded bg-white/8`})]})]},`collect-video-skeleton-${t}`))})}function b({item:e,isEditMode:r,isSelected:i,onToggleSelection:o}){let y=m(`components.ui.list.videoList`),b=e.id||``,x=_(e.viewCount),S=v(e.duration),C=e.is_more_link!==void 0&&e.is_more_link!==null,w=e.is_more_link?y(`videoListItem.series`):y(`videoListItem.movie`),T=e.description?.trim()?`简介:${e.description.trim()}`:``;function E(){!r||!b||o?.(b)}let D=p(n,{className:`flex min-w-0 gap-3`,children:[p(n,{className:`relative shrink-0 overflow-hidden rounded-[8px] bg-[#18111f] ${h}`,children:[e.coverImage&&f(t,{src:e.coverImage,alt:e.title||`cover`,fill:!0,objectFit:`cover`,className:`object-cover`}),f(n,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:g,"aria-hidden":!0}),!r&&p(d,{children:[C&&f(n,{className:`absolute left-2 top-3 z-10 flex max-h-[18px] items-center rounded bg-white/20 px-1 py-0.5`,children:f(a,{className:`text-center text-[12px] leading-[14px] text-white`,children:w})}),p(n,{className:`absolute bottom-3 left-2 right-2 z-10 flex items-center justify-between`,children:[p(n,{className:`flex min-w-0 items-center gap-1`,children:[f(u,{className:`size-4 shrink-0 text-white opacity-80`,"aria-hidden":!0}),x?f(a,{className:`truncate text-[14px] leading-5 text-white`,children:x}):null]}),S?f(a,{className:`shrink-0 text-[14px] leading-5 text-white`,children:S}):null]})]}),r&&f(n,{className:`pointer-events-none absolute left-2 top-2 z-20`,children:f(i?l:c,{})})]}),p(n,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-[20px]`,children:[f(a,{as:`h3`,className:`line-clamp-2 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)]`,children:e.title}),T?f(a,{className:`line-clamp-2 text-[12px] leading-4 text-[rgba(255,255,255,0.5)]`,children:T}):null]})]});return r?f(`button`,{type:`button`,className:`w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:E,"aria-pressed":i,disabled:!b,children:D}):f(s,{href:e.id?`/video/${e.id}/${e.title}`:`#`,className:`block w-full`,children:D})}function x({list:e,loading:t=!1,hasMore:a=!1,loadMore:o,emptyText:s=``,isEditMode:c=!1,selectedIds:l,onToggleSelection:u}){return t&&e.length===0?f(y,{}):e.length===0?f(r,{type:`no-content`,text:s,className:`!pt-[72px]`}):f(i,{loadMore:async()=>{await o?.()},hasMore:!!o&&a,noMoreText:`没有更多了`,className:`w-full`,children:f(n,{className:`flex w-full flex-col gap-4`,children:e.map((e,t)=>{let n=e.id?`collect-video-row-${e.id}-${t}`:`collect-video-row-${t}`;return f(b,{item:e,isEditMode:c,isSelected:!!(e.id&&l?.has(e.id)),onToggleSelection:u},n)})})})}export{x as CollectVideoWaterfall};
2
+ "use client";import{formatCompactCount as e}from"../../../../../../../utils/common.mjs";import{Image as t}from"../../../../../../ui/image.mjs";import{Box as n}from"../../../../../../ui/box.mjs";import{EmptyState as r}from"../../../../../../ui/empty.mjs";import{InfiniteScroll as i}from"../../../../../../ui/infinite-scroll.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{Skeleton as o}from"../../../../../../ui/skeleton.mjs";import s from"../../../../../../ui/link.mjs";import{CollectionSelectIcon as c,CollectionSelectedIcon as l}from"../../../../../../common/list/collection-list/collection-select-icon.mjs";import{VideoIcon as u}from"../../../../../../common/icons/video.mjs";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";import{useTranslations as m}from"next-intl";const h=`h-[128px] w-[173px]`,g={backgroundImage:`var(--gradient-card-mask-light)`};function _(t){return e(Number.isFinite(t)?Math.max(0,t):0)}function v(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function y(){return f(n,{className:`flex w-full flex-col gap-4`,children:Array.from({length:4},(e,t)=>p(n,{className:`flex min-w-0 gap-3`,children:[f(o,{className:`shrink-0 rounded-[8px] ${h}`}),p(n,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-[20px]`,children:[p(n,{className:`flex flex-col gap-2`,children:[f(o,{className:`h-4 w-[88%] rounded`}),f(o,{className:`h-4 w-[62%] rounded`})]}),p(n,{className:`flex flex-col gap-2`,children:[f(o,{className:`h-3 w-full rounded`}),f(o,{className:`h-3 w-[72%] rounded`})]})]})]},`collect-video-skeleton-${t}`))})}function b({item:e,isEditMode:r,isSelected:i,onToggleSelection:o}){let y=m(`components.ui.list.videoList`),b=e.id||``,x=_(e.viewCount),S=v(e.duration),C=e.is_more_link!==void 0&&e.is_more_link!==null,w=e.is_more_link?y(`videoListItem.series`):y(`videoListItem.movie`),T=e.description?.trim()?`简介:${e.description.trim()}`:``;function E(){!r||!b||o?.(b)}let D=p(n,{className:`flex min-w-0 gap-3`,children:[p(n,{className:`relative shrink-0 overflow-hidden rounded-[8px] bg-[#18111f] ${h}`,children:[e.coverImage&&f(t,{src:e.coverImage,alt:e.title||`cover`,fill:!0,objectFit:`cover`,className:`object-cover`}),f(n,{className:`pointer-events-none absolute inset-0 rounded-[8px]`,style:g,"aria-hidden":!0}),!r&&p(d,{children:[C&&f(n,{className:`absolute left-2 top-3 z-10 flex max-h-[18px] items-center rounded bg-white/20 px-1 py-0.5`,children:f(a,{className:`text-center text-[12px] leading-[14px] text-white`,children:w})}),p(n,{className:`absolute bottom-3 left-2 right-2 z-10 flex items-center justify-between`,children:[p(n,{className:`flex min-w-0 items-center gap-1`,children:[f(u,{className:`size-4 shrink-0 text-white opacity-80`,"aria-hidden":!0}),x?f(a,{className:`truncate text-[14px] leading-5 text-white`,children:x}):null]}),S?f(a,{className:`shrink-0 text-[14px] leading-5 text-white`,children:S}):null]})]}),r&&f(n,{className:`pointer-events-none absolute left-2 top-2 z-20`,children:f(i?l:c,{})})]}),p(n,{className:`flex min-w-0 flex-1 flex-col gap-4 pt-[20px]`,children:[f(a,{as:`h3`,className:`line-clamp-2 text-[14px] font-normal leading-5 text-[rgba(255,255,255,0.8)]`,children:e.title}),T?f(a,{className:`line-clamp-2 text-[12px] leading-4 text-[rgba(255,255,255,0.5)]`,children:T}):null]})]});return r?f(`button`,{type:`button`,className:`w-full cursor-pointer border-0 bg-transparent p-0 text-left`,onClick:E,"aria-pressed":i,disabled:!b,children:D}):f(s,{href:e.id?`/video/${e.id}/${e.title}`:`#`,className:`block w-full`,children:D})}function x({list:e,loading:t=!1,hasMore:a=!1,loadMore:o,emptyText:s=``,isEditMode:c=!1,selectedIds:l,onToggleSelection:u}){return t&&e.length===0?f(y,{}):e.length===0?f(r,{type:`no-content`,text:s,className:`!pt-[72px]`}):f(i,{loadMore:async()=>{await o?.()},hasMore:!!o&&a,noMoreText:`没有更多了`,className:`w-full`,children:f(n,{className:`flex w-full flex-col gap-4`,children:e.map((e,t)=>{let n=e.id?`collect-video-row-${e.id}-${t}`:`collect-video-row-${t}`;return f(b,{item:e,isEditMode:c,isSelected:!!(e.id&&l?.has(e.id)),onToggleSelection:u},n)})})})}export{x as CollectVideoWaterfall};
@@ -1,7 +1,6 @@
1
1
 
2
2
  import { MaterialComponentMode } from "../../../../../../../utils/schema/schema.mjs";
3
3
  import "../../../../../../../utils.mjs";
4
- import { ProfileMainContentType } from "../../variants.mjs";
5
4
  import * as react_jsx_runtime0 from "react/jsx-runtime";
6
5
 
7
6
  //#region components/biz/business/profile/profile-main/tabs/history-tab/client.d.ts
@@ -12,8 +11,6 @@ interface HistoryTabProps {
12
11
  targetUserId?: string;
13
12
  /** Query Key 前缀 */
14
13
  queryKeyPrefix?: Array<string | number | undefined>;
15
- /** 二级标签配置。 */
16
- contentTypes?: ProfileMainContentType[];
17
14
  }
18
15
  /**
19
16
  * 浏览历史 Tab
@@ -21,8 +18,7 @@ interface HistoryTabProps {
21
18
  declare function HistoryTab({
22
19
  mode,
23
20
  targetUserId,
24
- queryKeyPrefix,
25
- contentTypes
21
+ queryKeyPrefix
26
22
  }: HistoryTabProps): react_jsx_runtime0.JSX.Element;
27
23
  //#endregion
28
24
  export { HistoryTab, HistoryTabProps };
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionBatchClearBrowse as n}from"../../../../../../../service/generated/client.mjs";import{Button as r}from"../../../../../../ui/button.mjs";import{Box as i}from"../../../../../../ui/box.mjs";import{Checkbox as a}from"../../../../../../ui/checkbox.mjs";import{Text as o}from"../../../../../../ui/text.mjs";import{Tabs as s,TabsList as c,TabsTrigger as l}from"../../../../../../ui/tabs.mjs";import{useMutation as u,usePaginated as d,useUpdateRequest as f}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as p}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as m}from"../../../tracking.mjs";import{ProfileMainEmptyState as h}from"../../empty-state.mjs";import{getProfileMainSecondaryTabOptions as ee}from"../../variants.mjs";import{EditorPreviewWaterfall as te}from"../editor-preview-waterfall.mjs";import{CollectVideoWaterfall as ne}from"../collect-tab/video-waterfall.mjs";import{getHistoryData as re,likeContentType as ie}from"../../utils.mjs";import{toast as g}from"sonner";import{useEffect as _,useMemo as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{useTranslations as ae}from"next-intl";import{parseAsString as oe,useQueryState as S}from"nuqs";function C(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n.title||n.text||``,coverImage:n.cover_image_thumbnail||n.cover_image||n.cover_horizontal_image_thumbnail||void 0,publishTime:r}}function w(e){let{detail:t,content_play_progress:n}=e,{user_info:r,info:i,statics_cnt:a,publish_time:o,parent_content_info:s}=t,c=(Array.isArray(i?.tags)?i.tags:[]).map(e=>typeof e==`string`?e.trim():e&&typeof e==`object`&&`name`in e?String(e.name||``).trim():``).find(Boolean)||``,l=String(i?.img_type||``).trim().toLowerCase(),u=l===`long`||!l&&!!i?.cover_horizontal_image_thumbnail,d=u?i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image_thumbnail||i?.img_y||i?.cover_image||``:i?.cover_image_thumbnail||i?.img_y||i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image||``,f=String(i?.description||``).trim()||c;return{is_more_link:i.is_more_link,id:e.id,title:i.title||i.text||i.name||``,coverImage:d,duration:Number(i.video_duration??0),progress:n?.percent??0,seriesNum:n?.series_num,authorName:r.name,viewCount:i?.play_count??a?.browse_cnt??0,publishTime:o,type:s?.type,imgType:l||(u?`long`:`short`),score:i?.score,description:f}}function T(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function E(){return e(`!flex !items-center !flex-none !h-auto !w-auto !rounded-[4px] !px-2 !py-[5px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function D({mode:e=`renderer`,targetUserId:D,queryKeyPrefix:O,contentTypes:k}){let A=ae(`components.pages.profile.components.tabs`),j=e===`renderer`,M=O??[],N=v(()=>ee(k),[k]),[P,F]=S(`historyTab`,oe.withDefault(`video`)),I=v(()=>{let e=N[0]??`video`;return N.includes(P??``)?P:e},[N,P]),[L,se]=y(!1),[R,z]=y(()=>new Set),B=t(e=>e.userId),V=f(),H=[...M,`user-history-video`],U=[...M,`user-history-post`],W=d({key:H,initialPageParam:1,async queryFn(e){return re({targetUserId:D,page:e,contentType:ie.video})},options:{staleTime:0,enabled:j},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=d({key:U,initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:j},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),K=I===`video`?W:G,q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(w))??[],J=G.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],ce=I===`video`?q:J,Y=I===`video`?q.length===0&&!K.isFetching:J.length===0&&!K.isFetching,X=new Set(ce.map(e=>e.id)),Z=I===`video`,{mutateAsync:le,isPending:Q}=u(async e=>await n({app_id:0,user_id:B,content_type:e.contentType,content_ids:e.contentIds}));_(()=>{z(new Set)},[I]),_(()=>{P!==I&&F(I)},[I,P,F]);let ue=e=>{z(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},de=()=>{R.size===X.size&&X.size>0?z(new Set):z(new Set(X))},fe=async()=>{if(!(R.size===0||Q)){if(!B){g.error(A(`historyTab.pleaseLogin`));return}try{let e=Array.from(R),t=await le({contentIds:e,contentType:Z?1:2});if(t.code===0){g.success(A(`historyTab.historyDeletedSuccess`));let t=new Set(e);V(Z?H:U,e=>T(e,t,e=>e.id)),z(new Set),se(!1)}else g.error(t.message||A(`historyTab.deleteFailed`))}catch(e){console.error(`删除浏览记录失败`,e),g.error(A(`historyTab.operationFailed`))}}},$=async()=>{j&&await K.fetchNextPage()};return x(i,{children:[b(i,{className:`flex items-center justify-between`,children:N.length>0&&b(s,{value:I,onValueChange:e=>{F(e)},children:x(c,{variant:`tag`,className:`!h-auto !gap-4 !p-0`,children:[N.includes(`video`)&&b(l,{value:`video`,className:E(),children:A(`historyTab.video`)}),N.includes(`novel`)&&b(l,{value:`novel`,className:E(),children:A(`historyTab.novel`)}),N.includes(`comic`)&&b(l,{value:`comic`,className:E(),children:A(`historyTab.comic`)}),N.includes(`post`)&&b(l,{value:`post`,className:E(),children:A(`historyTab.posts`)})]})})}),b(i,{className:``,onClick:e=>{m(e,`content_item`)},children:!j&&(I===`video`||I===`post`||I===`novel`||I===`comic`)?b(te,{contentType:I}):I===`video`?Y?b(h,{text:A(`historyTab.emptyContent`)}):b(ne,{list:q,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:A(`historyTab.emptyContent`)}):I===`post`?Y?b(h,{text:A(`historyTab.emptyContent`)}):b(p,{list:J,loading:K.isFetching,hasMore:K.hasNextPage??!1,loadMore:$,emptyText:A(`historyTab.emptyContent`),isEditMode:L,selectedIds:R,onToggleSelection:ue}):b(h,{text:A(`historyTab.emptyContent`)})}),L&&x(i,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[x(i,{className:`flex items-center gap-2`,children:[b(a,{checked:R.size===X.size&&X.size>0,onCheckedChange:de}),b(o,{className:`text-sm text-text1`,children:A(`historyTab.selectAll`)})]}),b(r,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:R.size>0?`default`:`outline`,disabled:R.size===0||Q,onClick:fe,children:A(Q?`historyTab.processing`:`historyTab.delete`)})]})]})}export{D as HistoryTab};
2
+ "use client";import{useUserStore as e}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionBatchClearBrowse as t}from"../../../../../../../service/generated/client.mjs";import{Button as n}from"../../../../../../ui/button.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getHistoryData as ee,likeContentType as p}from"../../utils.mjs";import{toast as m}from"sonner";import{useEffect as h,useMemo as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";import{parseAsString as x,useQueryState as S}from"nuqs";function C(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n.title||n.text||``,coverImage:n.cover_image_thumbnail||n.cover_image||n.cover_horizontal_image_thumbnail||void 0,publishTime:r}}function te(e){let{detail:t,content_play_progress:n}=e,{user_info:r,info:i,statics_cnt:a,publish_time:o,parent_content_info:s}=t,c=String(i?.img_type||``).trim().toLowerCase(),l=c===`long`||!c&&!!i?.cover_horizontal_image_thumbnail,u=l?i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image_thumbnail||i?.img_y||i?.cover_image||``:i?.cover_image_thumbnail||i?.img_y||i?.cover_horizontal_image_thumbnail||i?.img_x||i?.cover_image||``,d=String(i?.description||``).trim();return{is_more_link:i.is_more_link,id:e.id,title:i.title||i.text||i.name||``,coverImage:u,duration:Number(i.video_duration??0),progress:n?.percent??0,seriesNum:n?.series_num,authorName:r.name,viewCount:i?.play_count??a?.browse_cnt??0,publishTime:o,type:s?.type,imgType:c||(l?`long`:`short`),score:i?.score,description:d}}function w(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}const T=[`video`,`post`];function E({mode:E=`renderer`,targetUserId:D,queryKeyPrefix:O}){let k=b(`components.pages.profile.components.tabs`),A=E===`renderer`,j=O??[],[M,N]=S(`historyTab`,x.withDefault(`video`)),P=g(()=>T.includes(M)?M:`video`,[M]),[F,I]=_(!1),[L,R]=_(()=>new Set),z=e(e=>e.userId),B=c(),V=[...j,`user-history-video`],H=[...j,`user-history-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return ee({targetUserId:D,page:e,contentType:p.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(te))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:ne,isPending:Q}=o(async e=>await t({app_id:0,user_id:z,content_type:e.contentType,content_ids:e.contentIds}));h(()=>{R(new Set)},[P]),h(()=>{M!==P&&N(P)},[P,M,N]);let re=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ie=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},ae=async()=>{if(!(L.size===0||Q)){if(!z){m.error(k(`historyTab.pleaseLogin`));return}try{let e=Array.from(L),t=await ne({contentIds:e,contentType:Z?1:2});if(t.code===0){m.success(k(`historyTab.historyDeletedSuccess`));let t=new Set(e);B(Z?V:H,e=>w(e,t,e=>e.id)),R(new Set),I(!1)}else m.error(t.message||k(`historyTab.deleteFailed`))}catch(e){console.error(`删除浏览记录失败`,e),m.error(k(`historyTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return y(r,{children:[v(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?v(d,{text:k(`historyTab.emptyContent`)}):v(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`)}):Y?v(d,{text:k(`historyTab.emptyContent`)}):v(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`historyTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:re})}),F&&y(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[y(r,{className:`flex items-center gap-2`,children:[v(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ie}),v(a,{className:`text-sm text-text1`,children:k(`historyTab.selectAll`)})]}),v(n,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:ae,children:k(Q?`historyTab.processing`:`historyTab.delete`)})]})]})}export{E as HistoryTab};
@@ -2,7 +2,6 @@
2
2
  import { CommunityContentInfo } from "../../../../../../../types/community-types.mjs";
3
3
  import { MaterialComponentMode } from "../../../../../../../utils/schema/schema.mjs";
4
4
  import "../../../../../../../utils.mjs";
5
- import { ProfileMainContentType } from "../../variants.mjs";
6
5
  import * as react_jsx_runtime0 from "react/jsx-runtime";
7
6
 
8
7
  //#region components/biz/business/profile/profile-main/tabs/like-tab/client.d.ts
@@ -77,15 +76,12 @@ interface LikeTabProps {
77
76
  queryKeyPrefix?: Array<string | number | undefined>;
78
77
  /** 是否为本人视角。 */
79
78
  isMine?: boolean;
80
- /** 二级标签配置。 */
81
- contentTypes?: ProfileMainContentType[];
82
79
  }
83
80
  declare function LikeTab({
84
81
  mode,
85
82
  targetUserId,
86
83
  queryKeyPrefix,
87
- isMine: _isMine,
88
- contentTypes
84
+ isMine: _isMine
89
85
  }: LikeTabProps): react_jsx_runtime0.JSX.Element;
90
86
  //#endregion
91
87
  export { LikeDetailItem, LikeTab, LikeTabProps };
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionUnifiedBatchLikeDislike as n}from"../../../../../../../service/generated/client.mjs";import{Button as r}from"../../../../../../ui/button.mjs";import{Box as i}from"../../../../../../ui/box.mjs";import{Checkbox as a}from"../../../../../../ui/checkbox.mjs";import{Text as o}from"../../../../../../ui/text.mjs";import{Tabs as s,TabsList as c,TabsTrigger as l}from"../../../../../../ui/tabs.mjs";import{useMutation as u,usePaginated as d,useUpdateRequest as f}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as p}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as ee}from"../../../tracking.mjs";import{ProfileMainEmptyState as m}from"../../empty-state.mjs";import{getProfileMainSecondaryTabOptions as te}from"../../variants.mjs";import{EditorPreviewWaterfall as h}from"../editor-preview-waterfall.mjs";import{CollectVideoWaterfall as g}from"../collect-tab/video-waterfall.mjs";import{getLikeData as ne,likeContentType as re}from"../../utils.mjs";import{toast as _}from"sonner";import{useEffect as v,useMemo as y,useState as b}from"react";import{jsx as x,jsxs as S}from"react/jsx-runtime";import{useTranslations as ie}from"next-intl";import{parseAsString as C,useQueryState as ae}from"nuqs";function oe(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function w(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n?.name||n?.text||n?.content||``,coverImage:n?.cover_image_thumbnail||n?.cover_image||n?.cover_horizontal_image_thumbnail||``,publishTime:r??0}}function T(e){let{detail:t}=e,{user_info:n,info:r,statics_cnt:i,publish_time:a,parent_content_info:o}=t,s=String(r?.img_type||``).trim().toLowerCase(),c=s===`long`||!s&&!!r?.cover_horizontal_image_thumbnail,l=c?r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image_thumbnail||r?.img_y||r?.cover_image||``:r?.cover_image_thumbnail||r?.img_y||r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image||``;console.log(r,222222);let u=String(r?.description||``).trim();return{id:e.id,is_more_link:r?.is_more_link||!1,title:r?.name||r?.text||r?.content||``,coverImage:l,duration:Number(r?.video_duration??0),progress:e.content_play_progress?.percent??0,seriesNum:e.content_play_progress?.series_num,authorName:n?.name||``,viewCount:r?.play_count??i?.browse_cnt??0,publishTime:a??0,type:o?.type,imgType:s||(c?`long`:`short`),score:r?.score,description:u}}function E(){return e(`!flex !items-center !flex-none !h-auto !w-auto !rounded-[4px] !px-2 !py-[5px] !bg-[var(--color-surface-chip-gray20)] !text-[12px] !font-normal !leading-[14px] !text-text1 hover:!text-text1`,`data-[active]:!text-text1 data-[state=active]:!text-text1`,`data-[active]:!bg-[image:var(--gradient-action-button)]`,`data-[state=active]:!bg-[image:var(--gradient-action-button)]`)}function D({mode:e=`renderer`,targetUserId:D,queryKeyPrefix:se,isMine:ce=!1,contentTypes:O}){let k=ie(`components.pages.profile.components.tabs`),A=e===`renderer`,j=se??[],M=y(()=>te(O),[O]),[N,P]=ae(`likeTab`,C.withDefault(`video`)),F=y(()=>{let e=M[0]??`video`;return M.includes(N??``)?N:e},[M,N]),[I,le]=b(!1),[L,R]=b(()=>new Set),z=t(e=>e.userId),B=f(),V=[...j,`user-like-video`],H=[...j,`user-like-post`],U=d({key:V,initialPageParam:1,async queryFn(e){return ne({targetUserId:D,page:e,contentType:re.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=d({key:H,options:{staleTime:0,enabled:A},initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=F===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(T))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(w))??[],ue=F===`video`?K:q,J=F===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,Y=new Set(ue.map(e=>e.id)),X=F===`video`,{mutateAsync:Z,isPending:Q}=u(async e=>await n({app_id:0,user_id:z,action:`cancel_like`,content_ids:e,content_type:X?1:2}));v(()=>{R(new Set)},[F]),v(()=>{N!==F&&P(F)},[F,N,P]);let de=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},fe=()=>{L.size===Y.size&&Y.size>0?R(new Set):R(new Set(Y))},pe=async()=>{if(!(L.size===0||Q)){if(!z){_.error(k(`likeTab.pleaseLogin`));return}try{let e=Array.from(L),t=await Z(e);if(t.code===0){_.success(k(`likeTab.unlikedSuccess`));let t=new Set(e);B(X?V:H,e=>oe(e,t,e=>e.id)),R(new Set),le(!1)}else _.error(t.message||k(`likeTab.unlikeFailed`))}catch(e){console.error(`取消点赞失败`,e),_.error(k(`likeTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return S(i,{children:[x(i,{className:`flex items-center justify-between`,children:M.length>0&&x(s,{value:F,onValueChange:e=>{P(e)},children:S(c,{variant:`tag`,className:`!h-auto !gap-4 !p-0`,children:[M.includes(`video`)&&x(l,{value:`video`,className:E(),children:k(`likeTab.video`)}),M.includes(`novel`)&&x(l,{value:`novel`,className:E(),children:k(`likeTab.novel`)}),M.includes(`comic`)&&x(l,{value:`comic`,className:E(),children:k(`likeTab.comic`)}),M.includes(`post`)&&x(l,{value:`post`,className:E(),children:k(`likeTab.posts`)})]})})}),x(i,{className:``,onClick:e=>{ee(e,`content_item`)},children:!A&&(F===`video`||F===`post`||F===`novel`||F===`comic`)?x(h,{contentType:F}):F===`video`?J?x(m,{text:k(`likeTab.emptyContent`)}):x(g,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`)}):F===`post`?J?x(m,{text:k(`likeTab.emptyContent`)}):x(p,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`),isEditMode:I,selectedIds:L,onToggleSelection:de}):x(m,{text:k(`likeTab.emptyContent`)})}),I&&S(i,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[S(i,{className:`flex items-center gap-2`,children:[x(a,{checked:L.size===Y.size&&Y.size>0,onCheckedChange:fe}),x(o,{className:`text-sm text-text1`,children:k(`likeTab.selectAll`)})]}),x(r,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:pe,children:k(Q?`likeTab.processing`:`likeTab.delete`)})]})]})}export{D as LikeTab};
2
+ "use client";import{useUserStore as e}from"../../../../../../../store/modules/user-store.mjs";import{pInteractionUnifiedBatchLikeDislike as t}from"../../../../../../../service/generated/client.mjs";import{Button as n}from"../../../../../../ui/button.mjs";import{Box as r}from"../../../../../../ui/box.mjs";import{Checkbox as i}from"../../../../../../ui/checkbox.mjs";import{Text as a}from"../../../../../../ui/text.mjs";import{useMutation as o,usePaginated as s,useUpdateRequest as c}from"../../../../../../../hooks/query/use-query.mjs";import{PostList as l}from"../../../../../../common/list/post-list/post-list.mjs";import{trackProfilePageClick as u}from"../../../tracking.mjs";import{ProfileMainEmptyState as d}from"../../empty-state.mjs";import{CollectVideoWaterfall as f}from"../collect-tab/video-waterfall.mjs";import{getLikeData as ee,likeContentType as p}from"../../utils.mjs";import{toast as m}from"sonner";import{useEffect as h,useMemo as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";import{parseAsString as x,useQueryState as te}from"nuqs";function S(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function C(e){let{detail:t}=e,{info:n,publish_time:r}=t;return{id:e.id,title:n?.name||n?.text||n?.content||``,coverImage:n?.cover_image_thumbnail||n?.cover_image||n?.cover_horizontal_image_thumbnail||``,publishTime:r??0}}function w(e){let{detail:t}=e,{user_info:n,info:r,statics_cnt:i,publish_time:a,parent_content_info:o}=t,s=String(r?.img_type||``).trim().toLowerCase(),c=s===`long`||!s&&!!r?.cover_horizontal_image_thumbnail,l=c?r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image_thumbnail||r?.img_y||r?.cover_image||``:r?.cover_image_thumbnail||r?.img_y||r?.cover_horizontal_image_thumbnail||r?.img_x||r?.cover_image||``,u=String(r?.description||``).trim();return{id:e.id,is_more_link:r?.is_more_link||!1,title:r?.name||r?.text||r?.content||``,coverImage:l,duration:Number(r?.video_duration??0),progress:e.content_play_progress?.percent??0,seriesNum:e.content_play_progress?.series_num,authorName:n?.name||``,viewCount:r?.play_count??i?.browse_cnt??0,publishTime:a??0,type:o?.type,imgType:s||(c?`long`:`short`),score:r?.score,description:u}}const T=[`video`,`post`];function E({mode:E=`renderer`,targetUserId:D,queryKeyPrefix:O,isMine:ne=!1}){let k=b(`components.pages.profile.components.tabs`),A=E===`renderer`,j=O??[],[M,N]=te(`likeTab`,x.withDefault(`video`)),P=g(()=>T.includes(M)?M:`video`,[M]),[F,I]=_(!1),[L,R]=_(()=>new Set),z=e(e=>e.userId),B=c(),V=[...j,`user-like-video`],H=[...j,`user-like-post`],U=s({key:V,initialPageParam:1,async queryFn(e){return ee({targetUserId:D,page:e,contentType:p.video})},options:{staleTime:0,enabled:A},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),W=s({key:H,options:{staleTime:0,enabled:A},initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},getNextPageParam(e,t){if(typeof e?.data?.has_more==`boolean`)return e.data.has_more?t.length+1:void 0;if(!((e?.data?.list??[]).length===0||e?.data?.total===0))return t.length+1}}),G=P===`video`?U:W,K=U.data?.pages.flatMap(e=>(e.data?.list??[]).map(w))??[],q=W.data?.pages.flatMap(e=>(e.data?.list??[]).map(C))??[],J=P===`video`?K:q,Y=P===`video`?K.length===0&&!G.isFetching:q.length===0&&!G.isFetching,X=new Set(J.map(e=>e.id)),Z=P===`video`,{mutateAsync:re,isPending:Q}=o(async e=>await t({app_id:0,user_id:z,action:`cancel_like`,content_ids:e,content_type:Z?1:2}));h(()=>{R(new Set)},[P]),h(()=>{M!==P&&N(P)},[P,M,N]);let ie=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},ae=()=>{L.size===X.size&&X.size>0?R(new Set):R(new Set(X))},oe=async()=>{if(!(L.size===0||Q)){if(!z){m.error(k(`likeTab.pleaseLogin`));return}try{let e=Array.from(L),t=await re(e);if(t.code===0){m.success(k(`likeTab.unlikedSuccess`));let t=new Set(e);B(Z?V:H,e=>S(e,t,e=>e.id)),R(new Set),I(!1)}else m.error(t.message||k(`likeTab.unlikeFailed`))}catch(e){console.error(`取消点赞失败`,e),m.error(k(`likeTab.operationFailed`))}}},$=async()=>{A&&await G.fetchNextPage()};return y(r,{children:[v(r,{className:``,onClick:e=>{u(e,`content_item`)},children:P===`video`?Y?v(d,{text:k(`likeTab.emptyContent`)}):v(f,{list:K,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`)}):Y?v(d,{text:k(`likeTab.emptyContent`)}):v(l,{list:q,loading:G.isFetching,hasMore:G.hasNextPage??!1,loadMore:$,emptyText:k(`likeTab.emptyContent`),isEditMode:F,selectedIds:L,onToggleSelection:ie})}),F&&y(r,{className:`fixed left-0 z-10 flex w-full items-center justify-between bg-bg1 px-3 py-2 bottom-[var(--tab-bar-occupied-height)]`,children:[y(r,{className:`flex items-center gap-2`,children:[v(i,{checked:L.size===X.size&&X.size>0,onCheckedChange:ae}),v(a,{className:`text-sm text-text1`,children:k(`likeTab.selectAll`)})]}),v(n,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:L.size>0?`default`:`outline`,disabled:L.size===0||Q,onClick:oe,children:k(Q?`likeTab.processing`:`likeTab.delete`)})]})]})}export{E as LikeTab};
@@ -1,7 +1,6 @@
1
1
 
2
2
  import { MaterialComponentMode } from "../../../../../../../utils/schema/schema.mjs";
3
3
  import "../../../../../../../utils.mjs";
4
- import { ProfileMainContentType } from "../../variants.mjs";
5
4
  import * as react_jsx_runtime0 from "react/jsx-runtime";
6
5
 
7
6
  //#region components/biz/business/profile/profile-main/tabs/publish-tab/client.d.ts
@@ -22,8 +21,6 @@ interface PublishTabProps {
22
21
  fallbackUserInfo?: PublishTabUserInfo;
23
22
  /** 是否为本人视角。 */
24
23
  isMine?: boolean;
25
- /** 二级标签配置。 */
26
- contentTypes?: ProfileMainContentType[];
27
24
  }
28
25
  /**
29
26
  * 发布内容 Tab 页。
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{pCommunityDeleteContent as e}from"../../../../../../../service/generated/client.mjs";import{Box as t}from"../../../../../../ui/box.mjs";import{useDeleteRequest as n,useMutation as r,usePaginated as i,useUpdateRequest as a}from"../../../../../../../hooks/query/use-query.mjs";import{DeleteConfirmDialog as o}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{UserActivityList as s}from"../../../../../../common/list/user-activity-list/user-activity-list.mjs";import{toast as c}from"sonner";import{useState as l}from"react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function h({mode:h=`renderer`,targetUserId:g,queryKeyPrefix:_,isMine:v=!1}){let y=p(`components.pages.profile.components.tabs`),b=h===`renderer`,x=_??[],S=n(),C=a(),[w,T]=l(null),{mutateAsync:E,isPending:D}=r(async t=>await e({content_id:t})),{data:O,isFetching:k,fetchNextPage:A,hasNextPage:j}=i({key:[...x,`user-publish`],initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:b},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),M=O?.pages.flatMap(e=>(e?.data||{}).list||[])??[];function N(e){T(e)}function P(){T(null)}async function F(){if(!(!w||D))try{await E(w);let e=new Set([w]);C([...x,`user-publish`],t=>m(t,e,e=>e.content_id)),c.success(y(`publishTab.deleteSuccess`)),T(null)}catch(e){console.error(`删除内容失败`,e),c.error(y(`publishTab.deleteFailed`))}}let I=M.map(e=>({...e,isDeleting:D&&w===e.content_id,onDelete:()=>N(e.content_id??``)})),L=async()=>{b&&await A()};function R(){S([...x,`user-publish`]),S(x)}function z(e){console.log(`分享到微信:`,e)}function B(e){console.log(`分享到QQ:`,e)}function V(e){console.log(`分享到朋友圈:`,e)}return f(u,{children:[d(t,{children:d(t,{className:`pt-4`,children:d(s,{list:I,loading:k,hasMore:j,loadMore:L,canEdit:v,showGroupHeaders:!1,emptyText:y(`publishTab.emptyText`),onActionSuccess:R,onShareWeChat:z,onShareQQ:B,onShareMoments:V})})}),d(o,{open:!!w,onOpenChange:e=>!e&&P(),onCancel:P,onConfirm:F,isConfirming:D})]})}export{h as PublishTab};
2
+ "use client";import{pCommunityDeleteContent as e}from"../../../../../../../service/generated/client.mjs";import{useDeleteRequest as t,useMutation as n,usePaginated as r,useUpdateRequest as i}from"../../../../../../../hooks/query/use-query.mjs";import{DeleteConfirmDialog as a}from"../../../../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{UserActivityList as o}from"../../../../../../common/list/user-activity-list/user-activity-list.mjs";import{toast as s}from"sonner";import{useState as c}from"react";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";function p(e,t,n){if(!e)return e;let r=0,i=e.pages.map(e=>({page:e,filteredList:(e.data?.list??[]).filter(e=>{let i=n(e)??``,a=t.has(i);return a&&(r+=1),!a})}));return{...e,pages:i.map(({page:e,filteredList:t})=>{if(!e.data)return e;let n=typeof e.data.total==`number`?Math.max(0,e.data.total-r):e.data.total;return{...e,data:{...e.data,list:t,total:n}}})}}function m({mode:m=`renderer`,targetUserId:h,queryKeyPrefix:g,isMine:_=!1}){let v=f(`components.pages.profile.components.tabs`),y=m===`renderer`,b=g??[],x=t(),S=i(),[C,w]=c(null),{mutateAsync:T,isPending:E}=n(async t=>await e({content_id:t})),{data:D,isFetching:O,fetchNextPage:k,hasNextPage:A}=r({key:[...b,`user-publish`],initialPageParam:1,async queryFn(e){return{data:{list:[],total:0,has_more:!1}}},options:{staleTime:0,enabled:y},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),j=D?.pages.flatMap(e=>(e?.data||{}).list||[])??[];function M(e){w(e)}function N(){w(null)}async function P(){if(!(!C||E))try{await T(C);let e=new Set([C]);S([...b,`user-publish`],t=>p(t,e,e=>e.content_id)),s.success(v(`publishTab.deleteSuccess`)),w(null)}catch(e){console.error(`删除内容失败`,e),s.error(v(`publishTab.deleteFailed`))}}let F=j.map(e=>({...e,isDeleting:E&&C===e.content_id,onDelete:()=>M(e.content_id??``)})),I=async()=>{y&&await k()};function L(){x([...b,`user-publish`]),x(b)}function R(e){console.log(`分享到微信:`,e)}function z(e){console.log(`分享到QQ:`,e)}function B(e){console.log(`分享到朋友圈:`,e)}return d(l,{children:[u(o,{list:F,loading:O,hasMore:A,loadMore:I,canEdit:_,showGroupHeaders:!1,emptyText:v(`publishTab.emptyText`),onActionSuccess:L,onShareWeChat:R,onShareQQ:z,onShareMoments:B}),u(a,{open:!!C,onOpenChange:e=>!e&&N(),onCancel:N,onConfirm:P,isConfirming:E})]})}export{m as PublishTab};
@@ -1,34 +1,9 @@
1
1
 
2
2
  //#region components/biz/business/profile/profile-main/variants.d.ts
3
- /**
4
- * 内容类型配置项。
5
- */
6
- declare const profileMainContentTypeOptions: readonly ["video", "novel", "comic", "post"];
7
- declare const profileMainSecondaryTabDisplayOrder: readonly ["video", "novel", "comic", "post"];
8
- /**
9
- * 主内容 Tab 基础项。
10
- */
11
- declare const profileMainBaseTabOptions: readonly ["collect", "like", "history"];
12
- /**
13
- * 主内容 Tab 中的帖子发布项。
14
- */
15
- declare const profileMainPublishTabOption: "publish";
16
- type ProfileMainContentType = typeof profileMainContentTypeOptions[number];
17
- type ProfileMainSecondaryTabKey = typeof profileMainSecondaryTabDisplayOrder[number];
18
- type ProfileMainBaseTabKey = typeof profileMainBaseTabOptions[number];
19
- type ProfileMainTabKey = ProfileMainBaseTabKey | typeof profileMainPublishTabOption;
20
- /**
21
- * 根据内容类型配置解析主 Tab。
22
- */
23
- declare function getProfileMainTabOptions(contentTypes?: ProfileMainContentType[]): ProfileMainTabKey[];
24
- /**
25
- * 根据内容类型配置解析二级标签。
26
- */
27
- declare function getProfileMainSecondaryTabOptions(contentTypes?: ProfileMainContentType[]): ProfileMainSecondaryTabKey[];
28
3
  /**
29
4
  * 个人主页主 Tab(本人视角)。
30
5
  */
31
- declare const profileMainMineTabOptions: ProfileMainTabKey[];
6
+ declare const profileMainMineTabOptions: readonly ["collect", "like", "history"];
32
7
  /**
33
8
  * 个人主页主 Tab(他人视角)。
34
9
  */
@@ -36,7 +11,7 @@ declare const profileMainProfileTabOptions: readonly ["collect", "like"];
36
11
  /**
37
12
  * 物料主 Tab 可选项。
38
13
  */
39
- declare const profileMainTabOptions: ProfileMainTabKey[];
14
+ declare const profileMainTabOptions: readonly ["collect", "like", "history"];
40
15
  /**
41
16
  * 点赞子 Tab 可选项。
42
17
  */
@@ -54,4 +29,4 @@ declare const profileMainCollectTabOptions: readonly ["video", "post", "collecti
54
29
  */
55
30
  declare const profileMainCollectCollectionTabOptions: readonly ["created", "subscribed"];
56
31
  //#endregion
57
- export { ProfileMainBaseTabKey, ProfileMainContentType, ProfileMainSecondaryTabKey, ProfileMainTabKey, getProfileMainSecondaryTabOptions, getProfileMainTabOptions, profileMainBaseTabOptions, profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainContentTypeOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainPublishTabOption, profileMainSecondaryTabDisplayOrder, profileMainTabOptions };
32
+ export { profileMainCollectCollectionTabOptions, profileMainCollectTabOptions, profileMainHistoryTabOptions, profileMainLikeTabOptions, profileMainMineTabOptions, profileMainProfileTabOptions, profileMainTabOptions };
@@ -1,2 +1,2 @@
1
1
 
2
- const e=[`video`,`novel`,`comic`,`post`],t=[`video`,`novel`,`comic`,`post`],n=[`collect`,`like`,`history`],r=`publish`;function i(e){return e?.includes(`post`)??!1?[`publish`,`collect`,`like`,`history`]:[...n]}function a(e){if(!e?.length)return[];let n=new Set(e);return t.filter(e=>n.has(e))}const o=i(),s=[`collect`,`like`],c=o,l=[`video`,`post`],u=[`video`,`post`],d=[`video`,`post`,`collection`],f=[`created`,`subscribed`];export{a as getProfileMainSecondaryTabOptions,i as getProfileMainTabOptions,n as profileMainBaseTabOptions,f as profileMainCollectCollectionTabOptions,d as profileMainCollectTabOptions,e as profileMainContentTypeOptions,u as profileMainHistoryTabOptions,l as profileMainLikeTabOptions,o as profileMainMineTabOptions,s as profileMainProfileTabOptions,r as profileMainPublishTabOption,t as profileMainSecondaryTabDisplayOrder,c as profileMainTabOptions};
2
+ const e=[`collect`,`like`,`history`],t=[`collect`,`like`],n=e,r=[`video`,`post`],i=[`video`,`post`],a=[`video`,`post`,`collection`],o=[`created`,`subscribed`];export{o as profileMainCollectCollectionTabOptions,a as profileMainCollectTabOptions,i as profileMainHistoryTabOptions,r as profileMainLikeTabOptions,e as profileMainMineTabOptions,t as profileMainProfileTabOptions,n as profileMainTabOptions};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{trackKeywordClick as n}from"../../../../utils/tracking.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as l}from"../../../common/icons/delete.mjs";import{useLayoutEffect as u,useMemo as d,useRef as f,useState as p}from"react";import{usePathname as m,useSearchParams as h}from"next/navigation";import{jsx as g,jsxs as _}from"react/jsx-runtime";function v(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function y(y){let{title:b,rows:x=2,clearText:S,confirmDescription:C,onHistoryClick:w,mode:T=`renderer`}=y,E=T===`editor`,D=b??`搜索历史`,O=S??`清空`,k=C??`确定要清除所有搜索历史吗?`,A=d(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=p(!1),[N,P]=p(null),F=f(null),I=f([]),L=f(null),R=r(),z=m(),B=h(),{userInfo:V}=t(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=d(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(u(()=>{if(K.length===0){P(null);return}let e=F.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];I.current.slice(0,K.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,x).reduce((e,t)=>Math.max(e,t.bottom),0);P(e=>e===r?e:r)},n=()=>{L.current!=null&&cancelAnimationFrame(L.current),L.current=requestAnimationFrame(()=>{L.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),I.current.slice(0,K.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)}},[K,x]),K.length===0)return null;let q=(e,t)=>{if(n({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:t,search_trace_id:``}),U(e),w){w(e);return}let r=new URLSearchParams(B.toString());r.set(`q`,e);let i=z.includes(`/search-result`)?z:`/search-result`;R.push(`${i}?${r.toString()}`)};return _(i,{className:E?`mt-[24px] px-[16px] py-[16px]`:`mt-[24px] px-[16px] py-0`,children:[_(i,{className:`mb-[15px] flex items-center justify-between`,children:[g(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),g(`button`,{type:`button`,"aria-label":O,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white/50`,onClick:()=>M(!0),children:g(l,{className:`h-[24px] w-[24px]`})})]}),g(i,{ref:F,className:`flex flex-wrap content-start items-center gap-[6px] overflow-hidden`,style:N?{maxHeight:`${N}px`}:void 0,children:K.map((e,t)=>g(i,{ref:e=>{I.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${E?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>q(e,t),children:g(a,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] text-white`,children:v(e,8)})},t))}),g(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
2
+ "use client";import e from"../../../../utils/event-bus.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{trackKeywordClick as n}from"../../../../utils/tracking.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{DeleteIcon as l}from"../../../common/icons/delete.mjs";import{usePathname as u,useSearchParams as d}from"next/navigation";import{useLayoutEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";function v(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function y(y){let{title:b,rows:x=2,clearText:S,confirmDescription:C,onHistoryClick:w,mode:T=`renderer`}=y,E=T===`editor`,D=b??`搜索历史`,O=S??`清空`,k=C??`确定要清除所有搜索历史吗?`,A=p(()=>[`海市蜃楼`,`迷雾追凶`,`夜行者`,`狂飙`,`三大队`,`破冰行动`],[]),[j,M]=h(!1),[N,P]=h(null),F=m(null),I=m([]),L=m(null),R=r(),z=u(),B=d(),{userInfo:V}=t(),{history:H,addHistory:U,clearHistory:W}=s({storageKey:V?.user_id||`guest`}),G=()=>{W(),M(!1),e.emit(o.SEARCH_HISTORY_UPDATE)},K=p(()=>(H.length?H:T===`editor`?A:[]).slice(0,x*10),[H,T,A,x]);if(f(()=>{if(K.length===0){P(null);return}let e=F.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect(),n=[];I.current.slice(0,K.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,x).reduce((e,t)=>Math.max(e,t.bottom),0);P(e=>e===r?e:r)},n=()=>{L.current!=null&&cancelAnimationFrame(L.current),L.current=requestAnimationFrame(()=>{L.current=null,t()})};if(n(),typeof ResizeObserver>`u`)return()=>{L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)};let r=new ResizeObserver(()=>{n()});return r.observe(e),I.current.slice(0,K.length).forEach(e=>{e&&r.observe(e)}),()=>{r.disconnect(),L.current!=null&&(cancelAnimationFrame(L.current),L.current=null)}},[K,x]),K.length===0)return null;let q=(e,t)=>{if(n({keyword:e,click_item_id:``,click_item_type_key:``,click_item_type_name:``,click_position:t,search_trace_id:``}),U(e),w){w(e);return}let r=new URLSearchParams(B.toString());r.set(`q`,e);let i=z.includes(`/search-result`)?z:`/search-result`;R.push(`${i}?${r.toString()}`)};return _(i,{className:E?`mt-[24px] no-vw-x-16 py-[16px]`:`mt-[24px] no-vw-x-16 py-0`,children:[_(i,{className:`mb-[15px] flex items-center justify-between`,children:[g(a,{className:`font-['PingFang_SC'] text-[16px] font-medium not-italic leading-normal text-white`,children:D}),g(`button`,{type:`button`,"aria-label":O,className:`flex h-[24px] w-[24px] shrink-0 items-center justify-center text-white/50`,onClick:()=>M(!0),children:g(l,{className:`h-[24px] w-[24px]`})})]}),g(i,{ref:F,className:`flex flex-wrap content-start items-center gap-[6px] overflow-hidden`,style:N?{maxHeight:`${N}px`}:void 0,children:K.map((e,t)=>g(i,{ref:e=>{I.current[t]=e},className:`flex min-w-[56px] cursor-pointer items-center justify-center rounded-full px-[8px] py-[4px] ${E?`bg-[#1F1F1F]/10`:`bg-white/20`}`,onClick:()=>q(e,t),children:g(a,{className:`max-w-full whitespace-nowrap font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px] text-white`,children:v(e,8)})},t))}),g(c,{open:j,onOpenChange:M,onConfirm:G,title:``,description:k})]})}export{y as SearchHistoryClient};
@@ -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{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{usePathname as c,useSearchParams as l}from"next/navigation";import{jsx as u,jsxs as d}from"react/jsx-runtime";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=c(),D=l(),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 d(t,{className:`flex h-[66px] w-full items-center gap-[8px] px-[16px] py-[16px]${S?` pointer-events-none`:``}`,children:[u(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:u(r,{className:`h-[16px] w-[16px]`})}),d(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:[d(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[u(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:u(i,{className:`h-[14px] w-[14px] text-white/60`})}),u(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&&u(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:u(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),u(`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};
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{usePathname as o,useSearchParams as s}from"next/navigation";import{useCallback as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";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]=l(``),T=e(),E=o(),D=s(),O=`search_history_${_}`,k=c(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 d(t,{className:`flex h-[66px] w-full items-center gap-[8px] no-vw-x-16 py-[16px]${S?` pointer-events-none`:``}`,children:[u(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white active:opacity-70`,onClick:A,children:u(r,{className:`h-[16px] w-[16px]`})}),d(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:[d(t,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[u(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:u(i,{className:`h-[14px] w-[14px] text-white/60`})}),u(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&&u(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:u(a,{className:`h-[15px] w-[15px] shrink-0 cursor-pointer text-white/50 active:opacity-70`,onClick:()=>w(``)})})]}),u(`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};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import r from"../../../ui/link.mjs";import i from"../../../../assets/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};
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:`py-3 no-vw-x-16`,"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{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{useMemo as i}from"react";import{usePathname as a}from"next/navigation";import{jsx as o,jsxs as s}from"react/jsx-runtime";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.9)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},d={background:`rgba(1, 0, 2, 0.80)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`};function f(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function p(e){if(e.configType===1)switch(e.functionPageType){case`搜索`:return`/search`;case`个人中心`:return`/user/mine`;case`内容列表`:return`/video-list?tags=${e.tags}&title=${e.title}`;default:return`/`}let t=(e.domainId??``).toString().trim();return t?`/domain/${t}`:`/`}function m(e,t){let n=f(t);if(e.configType===1){let t=f(p(e).split(`?`)[0]);return n===t||n.startsWith(`${t}/`)}let r=e.domainId.trim();if(!r)return n===`/`||n.startsWith(`/category/`);let i=`/domain/${r}`;return n===i||n.startsWith(`${i}/`)}function h(e,t){return e.findIndex(e=>m(e,t))}function g(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function _(f){let{items:m=l,mode:_=`renderer`}=f,v=a(),y=i(()=>{if(_===`editor`)return 0;let e=h(m??[],v);return e>=0?e:0},[m,v,_]),b=i(()=>(m??[]).some(e=>g(e)&&e.label.trim()!==``),[m]);if(!m?.length)return null;function x(t,n){_===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let S=`size-full rounded-[6px] bg-white/20`;return o(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:o(n,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between rounded-[100px] px-[40px]`,style:d,children:m.map((e,i)=>{let a=y===i,l=a?e.activeIcon:e.icon,u=e.label,d=g(e)&&u.trim()!==``,f=p(e),m=b?a?`gap-[5px]`:`gap-[4px]`:``,h=a?`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 s(c,{href:f,className:`flex flex-col items-center justify-center ${m}`,"aria-current":a?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>x(t,e),children:[o(n,{className:`relative size-5 shrink-0`,children:l?o(t,{src:l,alt:u,fill:!0,className:`object-contain`}):o(n,{className:a?`${S} bg-[#C043E8]`:S})}),b&&d?o(r,{"data-active":a,className:h,children:u}):null]},i)})})})}export{_ as TabBarClient};
2
+ "use client";import{trackNavigation as e}from"../../../../utils/tracking.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{usePathname as i}from"next/navigation";import{useMemo as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import c from"next/link";const l=[],u={backgroundColor:`rgba(5, 1, 15, 0.6)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`},d={background:`linear-gradient(0deg, rgba(6, 3, 21, 0.03) 0%, rgba(6, 3, 21, 0.03) 100%), rgba(255, 255, 255, 0.10)`},f={background:`linear-gradient(180deg, rgba(255, 255, 255, 0.3) 0%, transparent 100%)`,padding:`1px`,WebkitMask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,WebkitMaskComposite:`xor`,mask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,maskComposite:`exclude`};function p(e){return e.split(`?`)[0].replace(/\/+$/,``)||`/`}function m(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 h(e,t){let n=p(t);if(e.configType===1){let t=p(m(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 g(e,t){return e.findIndex(e=>h(e,t))}function _(e){return typeof e.show_nav_name==`boolean`?e.show_nav_name:typeof e.showNavName==`boolean`?e.showNavName:!0}function v(p){let{items:h=l,mode:v=`renderer`}=p,y=i(),b=a(()=>{if(v===`editor`)return 0;let e=g(h??[],y);return e>=0?e:0},[h,y,v]),x=a(()=>(h??[]).some(e=>_(e)&&e.label.trim()!==``),[h]);if(!h?.length)return null;function S(t,n){v===`editor`?t.preventDefault():e({navigation_key:`navigation_${n.label}`,navigation_name:n.label})}let C=`size-full rounded-[6px] bg-white/20`;return o(n,{as:`nav`,"aria-label":`Bottom navigation`,className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center`,style:u,children:s(n,{className:`relative my-[8px] flex h-[56px] w-[358px] items-center rounded-[100px]`,children:[o(n,{className:`pointer-events-none absolute inset-0 rounded-[100px]`,style:d,"aria-hidden":`true`}),o(n,{className:`pointer-events-none absolute inset-0 rounded-[100px]`,style:f,"aria-hidden":`true`}),h.map((e,i)=>{let a=b===i,l=a?e.activeIcon:e.icon,u=e.label,d=_(e)&&u.trim()!==``,f=m(e),p=x?a?`gap-[5px]`:`gap-[4px]`:``,h=a?`whitespace-nowrap text-center text-[12px] leading-[14px] font-normal text-[#C043E8]`:`whitespace-nowrap text-center text-[12px] leading-[14px] font-normal text-white/50`;return s(c,{href:f,className:`flex w-1/3 flex-col items-center justify-center ${p}`,"aria-current":a?`page`:void 0,"data-index":i,"data-webview-nav":`spa`,onClick:t=>S(t,e),children:[o(n,{className:`relative size-5 shrink-0`,children:l?o(t,{src:l,alt:u,fill:!0,className:`object-contain`}):o(n,{className:a?`${C} bg-[#C043E8]`:C})}),x&&d?o(r,{"data-active":a,className:h,children:u}):null]},i)})]})})}export{v as TabBarClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../service/generated/client.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/refresh.mjs";import{useMemo as s,useState as c}from"react";import{usePathname as l,useSearchParams as u}from"next/navigation";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useShallow as p}from"zustand/react/shallow";function m(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function h(h){let{title:g,displayCount:_=6,showRefresh:v=!1,onItemClick:y,mode:b=`renderer`}=h,x=b===`editor`,S=n(),C=l(),w=u(),[T,E]=c(0),{userInfo:D}=e(p(e=>({userInfo:e.userInfo}))),O=D?.user_id||`guest`,{data:k}=a([`text-recommend-keyword-list`,O],()=>t({user_id:O}),{enabled:!x}),A=s(()=>(k?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[k]),j=_*2,M=s(()=>x?Array.from({length:j},(e,t)=>({label:`推荐搜索${t+1}`})):A,[x,A,j]),N=s(()=>m(M,j),[M,T,j]);if(!x&&A.length<2)return null;let P=e=>{e.stopPropagation(),E(e=>e+1)},F=e=>{if(y){y(e);return}let t=new URLSearchParams(w.toString());t.set(`q`,e);let n=C.includes(`/search-result`)?C:`/search-result`;S.push(`${n}?${t.toString()}`)};return f(r,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${x?` pointer-events-none`:``}`,children:[f(r,{className:`flex items-center justify-between w-full`,children:[d(i,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:g}),v&&f(r,{className:`flex items-center gap-1 cursor-pointer active:opacity-70 transition-opacity`,onClick:P,children:[d(i,{className:`text-[14px] text-text3 leading-[22px]`,children:`换一批`}),d(o,{className:`w-3 h-3 text-text3`})]})]}),d(r,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:N.map((e,t)=>d(r,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>F(e.label),children:d(i,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${T}-${t}`))})]})}export{h as TextRecommendClient};
2
+ "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as t}from"../../../../service/generated/client.mjs";import{useRouter as n}from"../../../../utils/use-compatible-router.mjs";import{Box as r}from"../../../ui/box.mjs";import{Text as i}from"../../../ui/text.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/refresh.mjs";import{usePathname as s,useSearchParams as c}from"next/navigation";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useShallow as p}from"zustand/react/shallow";function m(e,t){if(e.length<=t)return[...e];let n=[...e];for(let e=0;e<t;e++){let t=e+Math.floor(Math.random()*(n.length-e));[n[e],n[t]]=[n[t],n[e]]}return n.slice(0,t)}function h(h){let{title:g,displayCount:_=6,showRefresh:v=!1,onItemClick:y,mode:b=`renderer`}=h,x=b===`editor`,S=n(),C=s(),w=c(),[T,E]=u(0),{userInfo:D}=e(p(e=>({userInfo:e.userInfo}))),O=D?.user_id||`guest`,{data:k}=a([`text-recommend-keyword-list`,O],()=>t({user_id:O}),{enabled:!x}),A=l(()=>(k?.data?.recommend_list??[]).map(e=>({label:e.title??``})).filter(e=>e.label),[k]),j=l(()=>x?Array.from({length:_},(e,t)=>({label:`推荐搜索${t+1}`})):A,[x,A,_]),M=l(()=>m(j,_),[j,T,_]);if(!x&&A.length<2)return null;let N=e=>{e.stopPropagation(),E(e=>e+1)},P=e=>{if(y){y(e);return}let t=new URLSearchParams(w.toString());t.set(`q`,e);let n=C.includes(`/search-result`)?C:`/search-result`;S.push(`${n}?${t.toString()}`)};return f(r,{className:`bg-bg1 p-3 flex flex-col gap-3 w-full${x?` pointer-events-none`:``}`,children:[f(r,{className:`flex items-center justify-between w-full`,children:[d(i,{className:`text-[18px] font-bold text-text1 leading-[26px]`,children:g}),v&&f(r,{className:`flex items-center gap-1 cursor-pointer active:opacity-70 transition-opacity`,onClick:N,children:[d(i,{className:`text-[14px] text-text3 leading-[22px]`,children:`换一批`}),d(o,{className:`w-3 h-3 text-text3`})]})]}),d(r,{className:`grid grid-cols-2 gap-x-1 gap-y-1 w-full`,children:M.map((e,t)=>d(r,{className:`flex items-center h-[32px] cursor-pointer active:opacity-70 transition-opacity overflow-hidden`,onClick:()=>P(e.label),children:d(i,{className:`text-[14px] text-text1 leading-[22px] truncate w-full`,children:e.label})},`${T}-${t}`))})]})}export{h as TextRecommendClient};