@funhub/platform 0.2.3 → 0.2.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/assets/icons/detail/collect_nor.mjs +2 -0
  2. package/dist/assets/icons/detail/collect_sel.mjs +2 -0
  3. package/dist/assets/icons/detail/share.mjs +2 -0
  4. package/dist/assets/icons/eye-off-icon.mjs +1 -1
  5. package/dist/assets/icons/marquee-enter.mjs +2 -0
  6. package/dist/assets/icons/right_arrow.mjs +2 -0
  7. package/dist/assets/icons/search/avatar.mjs +2 -0
  8. package/dist/assets/images/marquee.mjs +2 -0
  9. package/dist/biz.d.mts +4 -11
  10. package/dist/biz.mjs +1 -1
  11. package/dist/common.d.mts +2 -5
  12. package/dist/common.mjs +1 -1
  13. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
  14. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  15. package/dist/components/biz/business/advertisement/ad-match.mjs +1 -1
  16. package/dist/components/biz/business/advertisement/banner-ad/client.mjs +1 -1
  17. package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +2 -2
  18. package/dist/components/biz/business/advertisement/banner-ad/material.mjs +1 -1
  19. package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +4 -9
  20. package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +1 -1
  21. package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +31 -1
  22. package/dist/components/biz/business/advertisement/feed-ad/index.mjs +1 -1
  23. package/dist/components/biz/business/advertisement/floating-ad/client.mjs +1 -1
  24. package/dist/components/biz/business/advertisement/floating-ad/material.mjs +1 -1
  25. package/dist/components/biz/business/advertisement/icon-ad/client.mjs +1 -1
  26. package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +1 -1
  27. package/dist/components/biz/business/advertisement/icon-ad/material.mjs +1 -1
  28. package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +1 -7
  29. package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +1 -1
  30. package/dist/components/biz/business/advertisement/index.d.mts +2 -2
  31. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +2 -2
  32. package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +1 -1
  33. package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +2 -2
  34. package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +15 -14
  35. package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +1 -1
  36. package/dist/components/biz/business/advertisement/text-ad/client.mjs +1 -1
  37. package/dist/components/biz/business/advertisement/text-ad/material.d.mts +1 -1
  38. package/dist/components/biz/business/advertisement/text-ad/material.mjs +1 -1
  39. package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +1 -5
  40. package/dist/components/biz/business/advertisement/text-ad/schema.mjs +1 -1
  41. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
  42. package/dist/components/biz/business/banner-carousel/client.d.mts +1 -2
  43. package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
  44. package/dist/components/biz/business/banner-carousel/default-props.mjs +1 -1
  45. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  46. package/dist/components/biz/business/channel-list/default-props.mjs +1 -1
  47. package/dist/components/biz/business/detail/shared/detail-introduction.mjs +2 -0
  48. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  49. package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
  50. package/dist/components/biz/business/detail/shared/registry.d.mts +1 -36
  51. package/dist/components/biz/business/detail/shared/registry.mjs +1 -1
  52. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  53. package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
  54. package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +13 -1
  55. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  56. package/dist/components/biz/business/detail/video-detail-recommend/material.mjs +1 -1
  57. package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -1
  58. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.d.mts +1 -1
  59. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  60. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +3 -4
  61. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  62. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -1
  63. package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -1
  64. package/dist/components/biz/business/header-search/header-search/client.mjs +1 -1
  65. package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
  66. package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
  67. package/dist/components/biz/business/header-search/shared/search.mjs +1 -1
  68. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +8 -0
  69. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  70. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +8 -0
  71. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +8 -0
  72. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  73. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +8 -0
  74. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  75. package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
  76. package/dist/components/biz/business/index.d.mts +3 -12
  77. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  78. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  79. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  80. package/dist/components/biz/business/marquee/client.mjs +1 -1
  81. package/dist/components/biz/business/marquee/marquee.module.mjs +6 -2
  82. package/dist/components/biz/business/nav-bar/variants/basic-nav-bar/runtime/client.mjs +1 -1
  83. package/dist/components/biz/business/profile/index.d.mts +1 -1
  84. package/dist/components/biz/business/profile/profile-header/client.d.mts +1 -2
  85. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  86. package/dist/components/biz/business/profile/profile-header/index.d.mts +1 -1
  87. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  88. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  89. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  90. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  91. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  92. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  93. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +1 -5
  94. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  95. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
  96. package/dist/components/biz/business/search-history/client.mjs +1 -1
  97. package/dist/components/biz/business/search-history/schema.mjs +1 -1
  98. package/dist/components/biz/business/search-input/client.mjs +1 -1
  99. package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
  100. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  101. package/dist/components/common/collection-popup/collection-create-modal.mjs +2 -0
  102. package/dist/components/common/collection-popup/index.d.mts +0 -1
  103. package/dist/components/common/collection-popup/index.mjs +1 -1
  104. package/dist/components/common/icons/setting.mjs +1 -1
  105. package/dist/components/common/list/collection-list/collection-list-item.d.mts +0 -8
  106. package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -1
  107. package/dist/components/common/list/collection-list/collection-list.d.mts +0 -6
  108. package/dist/components/common/list/collection-list/collection-list.mjs +1 -1
  109. package/dist/components/common/series-episodes/index.d.mts +1 -3
  110. package/dist/components/common/series-episodes/index.mjs +1 -1
  111. package/dist/components/common/skeleton/search-video-card-skeleton.mjs +2 -0
  112. package/dist/components/common/tab-bar/index.mjs +1 -1
  113. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  114. package/dist/components/pages/edit/page.mjs +1 -1
  115. package/dist/components/pages/home/client.mjs +1 -1
  116. package/dist/components/pages/login/login-client.mjs +1 -1
  117. package/dist/components/pages/login/register.mjs +1 -1
  118. package/dist/components/pages/login/verify.mjs +4 -1
  119. package/dist/components/pages/publish/components/collection.mjs +1 -1
  120. package/dist/components/pages/search/page-client.mjs +1 -1
  121. package/dist/components/pages/search/search-result/index.mjs +1 -1
  122. package/dist/components/pages/search/search-result/search-all.mjs +1 -1
  123. package/dist/components/pages/search/search-result/search-user.mjs +1 -1
  124. package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
  125. package/dist/components/pages/search/search-utils.mjs +2 -0
  126. package/dist/components/pages/search/top-header.mjs +1 -1
  127. package/dist/components/pages/search-result/page-client.mjs +1 -1
  128. package/dist/components/pages/search-result/search-all.mjs +1 -1
  129. package/dist/components/pages/search-result/search-result-skeleton.mjs +2 -0
  130. package/dist/components/pages/search-result/search-tab.mjs +1 -1
  131. package/dist/components/pages/search-result/search-user.mjs +1 -1
  132. package/dist/components/pages/search-result/search-video.mjs +2 -0
  133. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +2 -2
  134. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  135. package/dist/components/pages/user-follow/_components/follow-no-login.mjs +1 -1
  136. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  137. package/dist/components/pages/video-list/video-list-item.mjs +2 -0
  138. package/dist/components/pages/video-list/video-list-skeleton.d.mts +3 -2
  139. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  140. package/dist/components/ui/badge.d.mts +1 -1
  141. package/dist/components/ui/box.d.mts +1 -1
  142. package/dist/components/ui/button.d.mts +1 -1
  143. package/dist/i18n/locales/en.mjs +2 -2
  144. package/dist/i18n/locales/zh-CN.mjs +2 -2
  145. package/dist/materials.d.mts +1 -6
  146. package/dist/materials.mjs +1 -1
  147. package/dist/service/generated/client.d.mts +2 -38
  148. package/dist/service/generated/client.mjs +1 -1
  149. package/dist/service/generated/tanstack.d.mts +2 -47
  150. package/dist/service/generated/tanstack.mjs +1 -1
  151. package/dist/service.d.mts +3 -3
  152. package/dist/service.mjs +1 -1
  153. package/dist/types.d.mts +9 -662
  154. package/dist/utils/helper.d.mts +1 -1
  155. package/dist/utils/helper.mjs +1 -1
  156. package/package.json +2 -7
  157. package/theme.css +59 -170
  158. package/dist/assets/icons/channel-list/channel-active-indicator.mjs +0 -2
  159. package/dist/assets/icons/common/header-menu.mjs +0 -2
  160. package/dist/assets/icons/common/header-search-icon.mjs +0 -2
  161. package/dist/assets/icons/common/right_arrow_thin.mjs +0 -2
  162. package/dist/assets/icons/marquee-close.mjs +0 -2
  163. package/dist/assets/icons/marquee-speaker.mjs +0 -2
  164. package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +0 -2
  165. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +0 -2
  166. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.d.mts +0 -8
  167. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.mjs +0 -2
  168. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/index.d.mts +0 -5
  169. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.d.mts +0 -45
  170. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.mjs +0 -2
  171. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.d.mts +0 -9
  172. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.mjs +0 -2
  173. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.d.mts +0 -11
  174. package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.mjs +0 -2
  175. package/dist/components/biz/business/header-search/shared/header-action.mjs +0 -2
  176. package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +0 -2
  177. package/dist/components/biz/business/header-search/shared/header-shell.mjs +0 -2
  178. package/dist/components/biz/business/hot-recommend/client.d.mts +0 -17
  179. package/dist/components/biz/business/hot-recommend/client.mjs +0 -2
  180. package/dist/components/biz/business/hot-recommend/index.d.mts +0 -5
  181. package/dist/components/biz/business/hot-recommend/material.d.mts +0 -24
  182. package/dist/components/biz/business/hot-recommend/material.mjs +0 -2
  183. package/dist/components/biz/business/hot-recommend/schema.d.mts +0 -23
  184. package/dist/components/biz/business/hot-recommend/schema.mjs +0 -2
  185. package/dist/components/biz/business/hot-recommend/server.d.mts +0 -11
  186. package/dist/components/biz/business/hot-recommend/server.mjs +0 -2
  187. package/dist/components/biz/business/profile/profile-main/empty-state.mjs +0 -2
  188. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +0 -2
  189. package/dist/components/biz/business/ranking-recommend/client.d.mts +0 -17
  190. package/dist/components/biz/business/ranking-recommend/client.mjs +0 -70
  191. package/dist/components/biz/business/ranking-recommend/material.d.mts +0 -35
  192. package/dist/components/biz/business/ranking-recommend/material.mjs +0 -2
  193. package/dist/components/biz/business/ranking-recommend/schema.d.mts +0 -35
  194. package/dist/components/biz/business/ranking-recommend/schema.mjs +0 -2
  195. package/dist/components/biz/business/ranking-recommend/server.d.mts +0 -11
  196. package/dist/components/biz/business/ranking-recommend/server.mjs +0 -2
  197. package/dist/components/biz/business/ranking-recommend/shared/query.mjs +0 -2
  198. package/dist/components/biz/business/ranking-recommend/shared.d.mts +0 -15
  199. package/dist/components/biz/business/ranking-recommend/shared.mjs +0 -2
  200. package/dist/components/biz/business/search-waterfall-recommend/client.d.mts +0 -9
  201. package/dist/components/biz/business/search-waterfall-recommend/client.mjs +0 -2
  202. package/dist/components/biz/business/search-waterfall-recommend/index.d.mts +0 -4
  203. package/dist/components/biz/business/search-waterfall-recommend/material.d.mts +0 -40
  204. package/dist/components/biz/business/search-waterfall-recommend/material.mjs +0 -2
  205. package/dist/components/biz/business/search-waterfall-recommend/server.d.mts +0 -8
  206. package/dist/components/biz/business/search-waterfall-recommend/server.mjs +0 -2
  207. package/dist/components/common/collection-popup/create-collection-sheet.d.mts +0 -41
  208. package/dist/components/common/collection-popup/create-collection-sheet.mjs +0 -2
  209. package/dist/components/common/list/collection-list/collection-select-icon.mjs +0 -2
  210. package/dist/components/common/list/waterfall-recommend/index.d.mts +0 -2
  211. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +0 -99
  212. package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +0 -2
  213. package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +0 -2
  214. package/dist/components/pages/login/auth-page-styles.mjs +0 -6
  215. package/dist/components/pages/search/search-result/shared.mjs +0 -2
  216. package/dist/components/pages/search-result/search-empty.mjs +0 -2
  217. package/dist/components/pages/search-result/search-video-info.mjs +0 -2
  218. package/dist/components/pages/search-result/shared.mjs +0 -2
  219. package/dist/components/pages/search-result/top-header.mjs +0 -2
  220. package/dist/components/pages/video-list/video-list-recommend-item.mjs +0 -2
  221. package/dist/theme-tokens.d.mts +0 -9
  222. package/dist/theme-tokens.mjs +0 -2
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import{Sheet as n,SheetContent as r,SheetHeader as i,SheetTitle as a}from"../../ui/sheet.mjs";import{Switch as o}from"../../ui/switch.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/common/right_arrow.mjs";import l from"../../ui/popup.mjs";import{useCallback as u,useEffect as d,useMemo as f,useRef as p,useState as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";import{toast as v}from"sonner";import{useTranslations as y}from"next-intl";const b=`funhub:detail-series-popup-query`,x=`funhub:detail-series-popup-close`;function S(e){return e.type===b&&e instanceof CustomEvent}function C({active:e}){return e?_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`circle`,{cx:`16`,cy:`12`,r:`3`,fill:`white`}),g(`path`,{d:`M8 5H16C19.866 5 23 8.13401 23 12C23 15.866 19.866 19 16 19H8C4.13401 19 1 15.866 1 12C1 8.13401 4.13401 5 8 5ZM16 15C17.6569 15 19 13.6569 19 12C19 10.3431 17.6569 9 16 9C14.3431 9 13 10.3431 13 12C13 13.6569 14.3431 15 16 15Z`,fill:`#9054E5`})]}):_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`path`,{d:`M1.5 12C1.5 8.68629 4.18629 6 7.5 6H16.5C19.8137 6 22.5 8.68629 22.5 12C22.5 15.3137 19.8137 18 16.5 18H7.5C4.18629 18 1.5 15.3137 1.5 12Z`,stroke:`currentColor`,strokeWidth:`1.5`,strokeOpacity:`0.6`}),g(`circle`,{cx:`9`,cy:`12`,r:`3`,fill:`rgba(255,255,255,0.6)`})]})}function w(){return g(`svg`,{width:`20`,height:`20`,viewBox:`0 0 20 20`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`block h-[20px] w-[20px]`,"aria-hidden":!0,children:g(`path`,{d:`M10 8.61116L14.8611 3.75L16.25 5.13889L11.3889 10L16.25 14.8611L14.8611 16.25L10 11.3889L5.13889 16.25L3.75 14.8611L8.61111 10L3.75 5.13889L5.13889 3.75L10 8.61116Z`,fill:`currentColor`})})}function T(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.name||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function E(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function D(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function O(){return g(`span`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 overflow-hidden rounded-[8px] p-[0.5px]`,style:{backgroundImage:`linear-gradient(180deg, #9756E3 0%, #6C43EE 100%), linear-gradient(135deg, rgba(255,30,172,0.7) 0%, rgba(108,67,238,0) 100%)`},children:g(`span`,{className:`block h-full w-full`,style:{borderRadius:`7.5px`,backgroundColor:`#000000`,backgroundImage:`linear-gradient(90deg, rgba(246,206,255,0.1) 0%, rgba(246,206,255,0.1) 100%), linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.1) 100%)`}})})}function k(e){return e.mode===`detail`?g(j,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):g(A,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle,popupStylePreset:e.popupStylePreset})}function A({open:s,variant:c,title:u,updateStatus:h,summaryText:v,seriesList:b,activeEpisodeId:x,showEpisodeTitle:S=!1,onToggleTitle:E,onClose:k,onSelectEpisode:A,popupBodyStyle:j,popupStylePreset:M=`default`}){let N=y(`components.common.seriesEpisodes`),P=!!E,F=P&&S,I=c===`popup`&&M===`detail-style-one`,L=c===`popup`?20:50,R=p(null),z=p(null),B=f(()=>T(b,`episode`,e=>N(`episodeLabel`,{episode:e})),[b,N]),V=f(()=>{if(B.length===0)return[];let e=[];return B.forEach((t,n)=>{let r=Math.floor(n/L);e[r]||(e[r]=[]),e[r].push(t)}),e},[B,L]),H=f(()=>{if(!x)return 0;let e=B.findIndex(e=>e.id===x);return e<0?0:Math.floor(e/L)},[x,B,L]),[U,W]=m(H);d(()=>{W(H)},[H]);let G=f(()=>typeof v==`string`&&v.trim()?v:D(B.length,h,N),[B.length,v,N,h]),K=u||N(`selectorTitle`);function q(){let e=R.current;if(e){z.current&&=(window.cancelAnimationFrame(z.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}z.current=window.requestAnimationFrame(()=>{z.current=null;let e=R.current;e&&(e.scrollTop=0)})}}d(()=>{s&&q()},[s,S,U]);function J(e){E&&(E(e),q())}function Y(e){A?.(e.id,e.series_num),k()}let X=F?2:5,Z=V.length>1?g(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:V.map((e,t)=>{if(e.length===0)return null;let n=t===U,r=t*L+1,i=Math.min((t+1)*L,B.length);return _(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{W(t),q()},children:[r,`-`,i,n&&g(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,Q=_(`div`,{className:`pb-[8px] flex justify-between`,children:[g(`span`,{className:`text-[16px] text-text1`,children:G}),P&&_(`div`,{className:`flex items-center gap-[4px]`,children:[g(o,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:S,onCheckedChange:e=>{J(!!e)}}),g(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{J(!S)},children:N(`episodeTitle`)})]})]}),$=g(`div`,{className:`grid w-full gap-2 ${X===2?`grid-cols-2`:`grid-cols-5`}`,children:(V[U]||[]).map((e,t)=>{let n=!!(x&&e.id===x);return g(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Y(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${F?`h-[72px] px-[10px] text-[14px]`:``} ${t%X===0?``:`border-l-0`}`,children:F?g(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})}),ee=V.length>1?g(`div`,{className:`flex gap-[8px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:V.map((e,t)=>{if(e.length===0)return null;let n=t===U,r=t*L+1,i=Math.min((t+1)*L,B.length);return g(`button`,{type:`button`,className:`flex h-[28px] w-[72px] shrink-0 items-center justify-center rounded-[100px] px-[4px] transition-colors ${n?`bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-white`:`bg-white/20 text-white`}`,onClick:()=>{W(t),q()},children:_(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px]`,children:[r,`-`,i]})},`series-popup-group-${t}`)})}):null,te=_(`div`,{className:`flex items-center justify-between`,children:[g(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:G}),P&&_(`button`,{type:`button`,className:`flex items-center gap-[3px] text-white/60`,onClick:()=>{J(!S)},children:[g(C,{active:S}),g(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] ${S?`text-[#9756E3]`:`text-white/60`}`,children:N(`episodeTitle`)})]})]}),ne=F?g(`div`,{className:`flex w-full flex-col gap-[12px]`,children:(V[U]||[]).map(e=>{let t=!!(x&&e.id===x);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Y(e)},className:`relative flex w-full items-start overflow-hidden rounded-[8px] px-[16px] py-[18px] text-left transition-colors ${t?I?``:`border border-[#FF1EFF] bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)]`:`bg-white/10`}`,children:[t&&I&&g(O,{}),g(`span`,{className:`relative z-[1] line-clamp-1 font-['PingFang_SC'] text-[14px] ${t?`font-medium leading-[16px] text-[#9756E3]`:`font-normal leading-[16px] text-white/80`}`,children:e.title})]},`popup-${e.id}`)})}):g(`div`,{className:`grid w-full grid-cols-[repeat(6,52px)] justify-between gap-y-[8px]`,children:(V[U]||[]).map(e=>{let t=!!(x&&e.id===x);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Y(e)},className:`relative flex h-[52px] w-[52px] items-center justify-center overflow-hidden rounded-[8px] transition-colors ${t?I?`text-[#9756E3]`:`border border-[#E62AFF]/90 bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)] text-[#9756E3]`:`bg-white/10 text-white/80`}`,children:[t&&I&&g(O,{}),g(`span`,{className:`relative z-[1] font-['PingFang_SC'] text-[16px] font-medium not-italic leading-[16px]`,children:e.series_num})]},`popup-${e.id}`)})});return c===`sheet`?g(n,{open:s,onOpenChange:e=>!e&&k(),children:_(r,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[g(i,{className:`pt-3 pb-0`,children:g(a,{className:`flex items-center justify-between text-lg text-text1`,children:K})}),_(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[Z,Q]}),g(`div`,{ref:R,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:$})]})}):g(l,{open:s,onOpenChange:e=>{e||k()},showCloseButton:!1,className:`!gap-0 !border-0 !bg-transparent !p-0 !shadow-none`,overlayClassName:`bg-black/50 backdrop-blur-0`,children:_(e,{className:`flex h-full w-full flex-col overflow-hidden rounded-t-[16px] bg-black text-text1`,style:{height:`70vh`,...j},children:[_(e,{className:`shrink-0 flex items-center justify-between px-[16px] pt-[32px]`,children:[g(t,{className:`font-['PingFang_SC'] text-[18px] font-medium not-italic leading-[24px] text-white`,children:K}),g(`button`,{type:`button`,"aria-label":`关闭`,className:`flex h-[24px] w-[24px] items-center justify-center text-white opacity-60`,onClick:k,children:g(`span`,{className:`flex h-[24px] w-[24px] items-center overflow-hidden p-[2px]`,children:g(w,{})})})]}),g(e,{className:`flex-1 h-0 w-full px-[16px] pb-[24px]`,children:_(e,{className:`flex h-full flex-col`,children:[ee&&g(e,{className:`mt-[16px] shrink-0`,children:ee}),g(e,{className:`mt-[16px] shrink-0`,children:te}),g(e,{ref:R,className:`flex-1 overflow-y-auto pb-[17px] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden ${F?`mt-[12px]`:`mt-[8px]`}`,children:ne})]})})]})})}function j({information:n,series_num:r,onEpisodeChange:i}){let a=y(`components.common`),[o,l]=s(`detail-series-popup-${n.id}`,!1),[C,w]=s(`detail-series-title-toggle-${n.id}`,!1),[T,D]=s(`detail-series-scroll-left-${n.id}`,null),[O,k]=m(r);d(()=>{k(r)},[n.id,r]),d(()=>{if(typeof window>`u`)return;let e=()=>{l(!1)};return window.addEventListener(x,e),()=>{window.removeEventListener(x,e)}},[l]),d(()=>{if(typeof window>`u`)return;let e=e=>{if(!S(e))return;let t=e.detail||{};t.open=!!t.open||!!o};return window.addEventListener(b,e),()=>{window.removeEventListener(b,e)}},[o]);let j=f(()=>E((n.links||[]).map(e=>({id:e.id,name:e.name})),n.id||`episode`,e=>a(`seriesEpisodes.episodeLabel`,{episode:e})),[n.id,n.links,a]),M=n.update_status===`1`?a(`seriesEpisodes.completedSeriesTotal`,{total:n.links.length}):a(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:n.links.length}),N=f(()=>n.links[O-1]?.id||n.links[0]?.id||``,[n.links,O]),P=p(null),F=p(null),I=p(null),L=p(!1),R=p(null),z=p(null),B=p(null),[V,H]=m(!1),U=u((e,t=`smooth`)=>{let n=P.current?.querySelector(`[data-content-id="${e}"]`);if(n&&P.current){let e=P.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),W=u(()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)},[]),G=u(()=>{B.current!==null&&(window.clearTimeout(B.current),B.current=null)},[]),K=u(()=>{R.current!==null&&(v.dismiss(R.current),R.current=null),W(),G()},[G,W]),q=u(()=>{F.current=null,I.current=null,K(),H(!1)},[K]),J=u((e,t)=>{G(),B.current=window.setTimeout(()=>{B.current=null,F.current===e&&q()},Math.max(0,t))},[G,q]);d(()=>{L.current=!1},[n.id]),d(()=>{if(L.current||!N)return;let e=window.requestAnimationFrame(()=>{let e=P.current;e&&(typeof T==`number`?e.scrollTo({left:Math.max(0,T),behavior:`auto`}):(U(N,`auto`),D(Math.max(0,Math.round(e.scrollLeft)))),L.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[N,T,U,D]),d(()=>{let e=F.current;!e||e!==r||J(e,1e3)},[J,r]),d(()=>()=>{q()},[q]);let Y=u((e,t,n)=>{let r=P.current;if(!r||!e)return t;let i=r.querySelector(`[data-content-id="${e}"]`);if(!i)return t;let a=r.getBoundingClientRect();if(a.width<=0||typeof n!=`number`||(n-a.left)/a.width<.5)return t;let o=i.offsetLeft+i.offsetWidth/2,s=r.clientWidth/2,c=Math.max(0,r.scrollWidth-r.clientWidth),l=Math.min(c,Math.max(0,o-s));return r.scrollTo({left:l,behavior:`smooth`}),Math.round(l)},[]),X=u((e,t=`inline`,o,s)=>{if(e!==O){if(!n.links[e-1]){v.error(a(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){try{k(e);let c=o||n.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),D(Math.max(0,Math.round(P.current?.scrollLeft||0)))):D(Y(c,l,s)),H(!0),K(),R.current=v.loading(a(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(r),q(),v.error(a(`seriesEpisodes.episodeSwitchFailed`)))},3e3),i(e)}catch(e){k(r),q(),console.error(`切换剧集失败`,e),v.error(a(`seriesEpisodes.episodeSwitchFailed`))}return}try{k(e);let c=o||n.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),D(Math.max(0,Math.round(P.current?.scrollLeft||0)))):D(Y(c,l,s)),H(!0),K(),R.current=v.loading(a(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(r),q(),v.error(a(`seriesEpisodes.episodeSwitchFailed`)))},8e3),i(e)}catch(e){k(r),q(),console.error(`切换剧集失败`,e),v.error(a(`seriesEpisodes.episodeSwitchFailed`))}}},[q,K,n.links,i,O,r,Y,U,D,a]),[Z,Q]=m(`70vh`),$=u(()=>{if(typeof window>`u`)return;if(window.isWebView===!0){Q(`100vh`);return}let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Q(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Q(`70vh`);return}Q(`${n}px`)},[]);return d(()=>{if(!o)return;$();let e=()=>{$()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[$,o]),j.length<=1?null:_(h,{children:[_(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[_(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>l(!0),children:[g(t,{className:`text-[14px] text-text2 leading-[20px]`,children:M}),g(c,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),g(`div`,{ref:P,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${C?`h-[76px]`:`h-[60px]`} ${V?`touch-none`:``}`,children:j.map((e,n)=>g(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${C?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===N?`!border-theme5 bg-line1`:``}`,onClick:t=>{X(n+1,`inline`,e.id,t.clientX)},children:g(t,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===N?`font-bold !text-theme5`:``}`,children:C?e.title:e.series_num})},e.id))})]}),g(A,{title:a(`seriesEpisodes.selectorTitle`),variant:`popup`,open:o,updateStatus:n.update_status,summaryText:M,seriesList:(n.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:N,showEpisodeTitle:C,onToggleTitle:e=>{w(e)},onClose:()=>l(!1),onSelectEpisode:(e,t)=>{l(!1),X(t,`popup`,e)},popupBodyStyle:{height:Z},popupStylePreset:`default`})]})}export{O as DetailStyleOneActiveBorderLayer,k as SeriesEpisodes};
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import{Sheet as n,SheetContent as r,SheetHeader as i,SheetTitle as a}from"../../ui/sheet.mjs";import{Switch as o}from"../../ui/switch.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/close.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCallback as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";const x=`funhub:detail-series-popup-query`,S=`funhub:detail-series-popup-close`;function C(e){return e.type===x&&e instanceof CustomEvent}function w(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.id||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function T(e,t,n){return(e||[]).map((e,r)=>{let i=Number(e?.id),a=Number.isNaN(i)?r+1:i,o=n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:o}})}function E(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function D(e){return e.mode===`detail`?_(k,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):_(O,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle})}function O({open:s,variant:l,title:d,updateStatus:g,summaryText:y,seriesList:x,activeEpisodeId:S,showEpisodeTitle:C=!1,onToggleTitle:T,onClose:D,onSelectEpisode:O,popupBodyStyle:k}){let A=b(`components.common.seriesEpisodes`),j=!!T,M=j&&C,N=m(null),P=m(null),F=p(()=>w(x,`episode`,e=>A(`episodeLabel`,{episode:e})),[x,A]),I=p(()=>{if(F.length===0)return[];let e=[];return F.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[F]),L=p(()=>{if(!S)return 0;let e=F.findIndex(e=>e.id===S);return e<0?0:Math.floor(e/50)},[S,F]),[R,z]=h(L);f(()=>{z(L)},[L]);let B=p(()=>typeof y==`string`&&y.trim()?y:E(F.length,g,A),[F.length,y,A,g]),V=d||A(`selectorTitle`);function H(){let e=N.current;if(e){P.current&&=(window.cancelAnimationFrame(P.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}P.current=window.requestAnimationFrame(()=>{P.current=null;let e=N.current;e&&(e.scrollTop=0)})}}f(()=>{s&&H()},[s,C,R]);function U(e){T&&(T(e),H())}function W(e){O?.(e.id,e.series_num),D()}let G=M?2:5,K=I.length>1?_(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:I.map((e,t)=>{if(e.length===0)return null;let n=t===R,r=t*50+1,i=Math.min((t+1)*50,F.length);return v(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{z(t),H()},children:[r,`-`,i,n&&_(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,q=v(`div`,{className:`pb-[8px] flex justify-between`,children:[_(`span`,{className:`text-[16px] text-text1`,children:B}),j&&v(`div`,{className:`flex items-center gap-[4px]`,children:[_(o,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:C,onCheckedChange:e=>{U(!!e)}}),_(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{U(!C)},children:A(`episodeTitle`)})]})]}),J=_(`div`,{className:`grid w-full gap-2 ${G===2?`grid-cols-2`:`grid-cols-5`}`,children:(I[R]||[]).map((e,t)=>{let n=!!(S&&e.id===S);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{W(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${M?`h-[72px] px-[10px] text-[14px]`:``} ${t%G===0?``:`border-l-0`}`,children:M?_(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})});return l===`sheet`?_(n,{open:s,onOpenChange:e=>!e&&D(),children:v(r,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[_(i,{className:`pt-3 pb-0`,children:_(a,{className:`flex items-center justify-between text-lg text-text1`,children:V})}),v(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[K,q]}),_(`div`,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:J})]})}):_(u,{open:s,onOpenChange:e=>{e||D()},showCloseButton:!1,className:`border-0 bg-transparent p-0`,children:v(e,{className:`w-full flex flex-col bg-bg1 px-[12px] text-text1`,style:{height:`70vh`,...k},children:[v(e,{className:`shrink-0 flex justify-between items-center h-[48px]`,children:[_(t,{className:`text-[16px] font-bold text-text1`,children:V}),_(e,{className:`pl-[12px] h-full flex items-center`,onClick:D,children:_(c,{className:`w-[14px] h-[14px] text-text1 cursor-pointer`})})]}),v(e,{className:`flex-1 h-0 w-full pb-[12px] flex flex-col gap-3`,children:[K,q,_(e,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto`,children:J})]})]})})}function k({information:n,series_num:r,onEpisodeChange:i}){let a=b(`components.common`),[o,c]=s(`detail-series-popup-${n.id}`,!1),[u,w]=s(`detail-series-title-toggle-${n.id}`,!1),[E,D]=s(`detail-series-scroll-left-${n.id}`,null),[k,A]=h(r);f(()=>{A(r)},[n.id,r]),f(()=>{if(typeof window>`u`)return;let e=()=>{c(!1)};return window.addEventListener(S,e),()=>{window.removeEventListener(S,e)}},[c]),f(()=>{if(typeof window>`u`)return;let e=e=>{if(!C(e))return;let t=e.detail||{};t.open=!!t.open||!!o};return window.addEventListener(x,e),()=>{window.removeEventListener(x,e)}},[o]);let j=p(()=>T((n.links||[]).map(e=>({id:e.id,name:e.name})),n.id||`episode`,e=>a(`seriesEpisodes.episodeLabel`,{episode:e})),[n.id,n.links,a]),M=n.update_status===`1`?a(`seriesEpisodes.completedSeriesTotal`,{total:n.links.length}):a(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:n.links.length}),N=p(()=>n.links[k-1]?.id||n.links[0]?.id||``,[n.links,k]),P=m(null),F=m(null),I=m(null),L=m(!1),R=m(null),z=m(null),B=m(null),[V,H]=h(!1),U=d((e,t=`smooth`)=>{let n=P.current?.querySelector(`[data-content-id="${e}"]`);if(n&&P.current){let e=P.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),W=d(()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)},[]),G=d(()=>{B.current!==null&&(window.clearTimeout(B.current),B.current=null)},[]),K=d(()=>{R.current!==null&&(y.dismiss(R.current),R.current=null),W(),G()},[G,W]),q=d(()=>{F.current=null,I.current=null,K(),H(!1)},[K]),J=d((e,t)=>{G(),B.current=window.setTimeout(()=>{B.current=null,F.current===e&&q()},Math.max(0,t))},[G,q]);f(()=>{L.current=!1},[n.id]),f(()=>{if(L.current||!N)return;let e=window.requestAnimationFrame(()=>{let e=P.current;e&&(typeof E==`number`?e.scrollTo({left:Math.max(0,E),behavior:`auto`}):(U(N,`auto`),D(Math.max(0,Math.round(e.scrollLeft)))),L.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[N,E,U,D]),f(()=>{let e=F.current;!e||e!==r||J(e,1e3)},[J,r]),f(()=>()=>{q()},[q]);let Y=d((e,t,n)=>{let r=P.current;if(!r||!e)return t;let i=r.querySelector(`[data-content-id="${e}"]`);if(!i)return t;let a=r.getBoundingClientRect();if(a.width<=0||typeof n!=`number`||(n-a.left)/a.width<.5)return t;let o=i.offsetLeft+i.offsetWidth/2,s=r.clientWidth/2,c=Math.max(0,r.scrollWidth-r.clientWidth),l=Math.min(c,Math.max(0,o-s));return r.scrollTo({left:l,behavior:`smooth`}),Math.round(l)},[]),X=d((e,t=`inline`,o,s)=>{if(e!==k){if(!n.links[e-1]){y.error(a(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){try{A(e);let c=o||n.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),D(Math.max(0,Math.round(P.current?.scrollLeft||0)))):D(Y(c,l,s)),H(!0),K(),R.current=y.loading(a(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(A(r),q(),y.error(a(`seriesEpisodes.episodeSwitchFailed`)))},3e3),i(e)}catch(e){A(r),q(),console.error(`切换剧集失败`,e),y.error(a(`seriesEpisodes.episodeSwitchFailed`))}return}try{A(e);let c=o||n.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),D(Math.max(0,Math.round(P.current?.scrollLeft||0)))):D(Y(c,l,s)),H(!0),K(),R.current=y.loading(a(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(A(r),q(),y.error(a(`seriesEpisodes.episodeSwitchFailed`)))},8e3),i(e)}catch(e){A(r),q(),console.error(`切换剧集失败`,e),y.error(a(`seriesEpisodes.episodeSwitchFailed`))}}},[q,K,n.links,i,k,r,Y,U,D,a]),[Z,Q]=h(`70vh`),$=d(()=>{if(typeof window>`u`)return;if(window.isWebView===!0){Q(`100vh`);return}let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Q(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Q(`70vh`);return}Q(`${n}px`)},[]);return f(()=>{if(!o)return;$();let e=()=>{$()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[$,o]),j.length<=1?null:v(g,{children:[v(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[v(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>c(!0),children:[_(t,{className:`text-[14px] text-text2 leading-[20px]`,children:M}),_(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),_(`div`,{ref:P,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${u?`h-[76px]`:`h-[60px]`} ${V?`touch-none`:``}`,children:j.map((e,n)=>_(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${u?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===N?`!border-theme5 bg-line1`:``}`,onClick:t=>{X(n+1,`inline`,e.id,t.clientX)},children:_(t,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===N?`font-bold !text-theme5`:``}`,children:u?e.title:e.series_num})},e.id))})]}),_(O,{title:a(`seriesEpisodes.selectorTitle`),variant:`popup`,open:o,updateStatus:n.update_status,summaryText:M,seriesList:(n.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:N,showEpisodeTitle:u,onToggleTitle:e=>{w(e)},onClose:()=>c(!1),onSelectEpisode:(e,t)=>{c(!1),X(t,`popup`,e)},popupBodyStyle:{height:Z}})]})}export{D as SeriesEpisodes};
@@ -0,0 +1,2 @@
1
+
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{useId as t}from"react";import{jsx as n,jsxs as r}from"react/jsx-runtime";import{useTranslations as i}from"next-intl";import a from"react-content-loader";function o({uniqueKey:o}){let s=i(`components.common`),c=t();return n(e,{className:`mb-[12px] w-full border-b border-line1 px-[12px] pb-[12px]`,children:r(a,{uniqueKey:o||c,viewBox:`0 0 375 312`,className:`h-auto w-full text-text1`,backgroundColor:`currentColor`,foregroundColor:`currentColor`,backgroundOpacity:.08,foregroundOpacity:.18,preserveAspectRatio:`none`,title:s(`skeleton.loading`),children:[n(`rect`,{x:0,y:0,rx:12,ry:12,width:375,height:211}),n(`rect`,{x:8,y:187,rx:4,ry:4,width:34,height:14}),n(`rect`,{x:325,y:187,rx:4,ry:4,width:42,height:14}),n(`rect`,{x:8,y:221,rx:4,ry:4,width:176,height:24}),n(`rect`,{x:8,y:257,rx:4,ry:4,width:205,height:20}),n(`rect`,{x:255,y:225,rx:21,ry:21,width:112,height:42})]})})}function s({count:t=3,uniqueKeyPrefix:r=`search-video-card-skeleton`,className:i=``}){return n(e,{className:`w-full px-[12px] pt-[12px] bg-bg1 ${i}`.trim(),children:Array.from({length:t}).map((e,t)=>n(o,{uniqueKey:`${r}-${t}`},`${r}-${t}`))})}export{s as SearchVideoCardSkeleton};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import n from"../../ui/link.mjs";import r from"../../../assets/icons/tabs/follow.mjs";import i from"../../../assets/icons/tabs/follow_active.mjs";import a from"../../../assets/icons/tabs/home.mjs";import o from"../../../assets/icons/tabs/home_active.mjs";import s from"../../../assets/icons/tabs/mine.mjs";import c from"../../../assets/icons/tabs/mine_active.mjs";import l from"../../ui/legacy/badge.mjs";import{useEffect as u,useState as d,useTransition as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{usePathname as h}from"next/navigation";import{useTranslations as g}from"next-intl";function _(e,t){if(t!==`/`)return e.startsWith(t);let n=[`/user`].some(t=>e.startsWith(t)),r=e.startsWith(`/category/`);return!n&&(e===`/`||r)}const v=[`/nav-page`];function y(y){let{className:b}=y,x=h(),S=g(`tabBar`),[C,w]=d(null),[,T]=f(),[E]=d(0),[D,O]=d(!1),k=[{badge:!1,id:1,labelKey:`home`,path:`/`,icon:a,activeIcon:o,width:20,height:20},{badge:!1,id:2,labelKey:`follow`,path:`/user/follow`,icon:r,activeIcon:i,width:20,height:20},{badge:!1,id:5,labelKey:`mine`,path:`/user/mine`,icon:s,activeIcon:c,width:20,height:20}],A=(e,t,n)=>{t!==x&&w(t)};return u(()=>{C&&_(x,C)&&T(()=>{w(null)})},[x,C]),u(()=>{let e=setTimeout(()=>{O(!0)},0);return()=>clearTimeout(e)},[]),x&&v.some(e=>x.includes(e))?null:p(e,{className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center ${b||``}`,style:{background:`rgba(5, 1, 15, 0.90)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},children:p(e,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between px-[40px]`,style:{background:`rgba(1, 0, 2, 0.80)`,borderRadius:`100px`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`},children:k.map(r=>{let i=D&&x?_(C||x||``,r.path):!1,a=i?r.activeIcon:r.icon,o=m(e,{className:`flex flex-col items-center ${i?`gap-[5px]`:`gap-[4px]`}`,children:[r.badge&&E>0?p(l,{dot:!0,children:p(a,{width:20,height:20})}):p(a,{width:20,height:20}),p(t,{className:`whitespace-nowrap text-center text-[12px] leading-[16px] ${i?`text-[#C043E8]`:`text-[#BFBFBF]`}`,children:S(r.labelKey)})]});return i?p(e,{className:`flex items-center justify-center`,children:o},r.id):p(n,{href:r.path,prefetch:!0,className:`flex items-center justify-center`,onClick:e=>{A(e,r.path,r.labelKey)},children:o},r.id)})})})}export{y as TabBar};
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import n from"../../ui/link.mjs";import r from"../../../assets/icons/tabs/follow.mjs";import i from"../../../assets/icons/tabs/follow_active.mjs";import a from"../../../assets/icons/tabs/home.mjs";import o from"../../../assets/icons/tabs/home_active.mjs";import s from"../../../assets/icons/tabs/mine.mjs";import c from"../../../assets/icons/tabs/mine_active.mjs";import l from"../../ui/legacy/badge.mjs";import{useEffect as u,useState as d,useTransition as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";import{usePathname as g}from"next/navigation";import{useTranslations as _}from"next-intl";function v(e,t){if(t!==`/`)return e.startsWith(t);let n=[`/user`].some(t=>e.startsWith(t)),r=e.startsWith(`/category/`);return!n&&(e===`/`||r)}const y=[`/nav-page`];function b(b){let{className:x}=b,S=g(),C=_(`tabBar`),[w,T]=d(null),[,E]=f(),[D]=d(0),[O,k]=d(!1),A=[{badge:!1,id:1,labelKey:`home`,path:`/`,icon:a,activeIcon:o,width:22,height:22},{badge:!1,id:2,labelKey:`follow`,path:`/user/follow`,icon:r,activeIcon:i,width:22,height:22},{badge:!1,id:5,labelKey:`mine`,path:`/user/mine`,icon:s,activeIcon:c,width:22,height:22}],j=(e,t,n)=>{t!==S&&T(t)};return u(()=>{w&&v(S,w)&&E(()=>{T(null)})},[S,w]),u(()=>{let e=setTimeout(()=>{k(!0)},0);return()=>clearTimeout(e)},[]),S&&y.some(e=>S.includes(e))?null:m(e,{className:`fixed bottom-0 left-0 right-0 z-50 flex h-[var(--tab-bar-height)] items-center justify-around border-t border-line1 bg-bg1 ${x||``}`,children:A.map(r=>{let i=O&&S?v(w||S||``,r.path):!1,a=i?r.activeIcon:r.icon,o=h(p,{children:[r.badge&&D>0?m(l,{dot:!0,children:m(a,{width:r.width,height:r.height})}):m(a,{width:r.width,height:r.height}),m(t,{className:`text-[10px] mt-[4px] ${i?`text-theme5`:`text-text2`}`,children:C(r.labelKey)})]});return i?m(e,{className:`flex flex-col items-center justify-center flex-1 h-full`,children:o},r.id):m(n,{href:r.path,prefetch:!0,className:`flex flex-col items-center justify-center flex-1 h-full`,onClick:e=>{j(e,r.path,r.labelKey)},children:o},r.id)})})}export{b as TabBar};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityDeleteCollection as r,pCommunityRemoveContentFromCollection as i,pInteractionBatchDeleteCollects as a}from"../../../service/generated/client.mjs";import{useRouter as o}from"../../../utils/use-compatible-router.mjs";import{Box as s}from"../../ui/box.mjs";import{Checkbox as ee}from"../../ui/checkbox.mjs";import{DropdownMenu as te,DropdownMenuContent as c,DropdownMenuItem as l,DropdownMenuSeparator as u,DropdownMenuTrigger as ne}from"../../ui/dropdown-menu.mjs";import{List as d}from"../../ui/list.mjs";import{Text as re}from"../../ui/text.mjs";import{useLoginModalStore as f}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as ie}from"../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as ae}from"../../common/collection-popup/create-collection-sheet.mjs";import{ShareDrawer as oe}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as h}from"../../../types/share.mjs";import se from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as ce}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{CollectionDetailCard as g}from"./_components/collection-detail-card.mjs";import{CollectionDetailVideoCard as ue}from"./_components/collection-detail-video-card.mjs";import{useMemo as _,useState as v}from"react";import{MoreVertical as y}from"lucide-react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as de}from"next-intl";function C(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 w(e){let t=e.detail.info?.video_duration;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return Math.floor(t);let n=e.detail.duration;if(typeof n==`number`&&Number.isFinite(n)&&n>0)return Math.floor(n);let r=e.medias?.find(e=>{let t=e?.video_duration;return typeof t==`number`&&Number.isFinite(t)&&t>0})?.video_duration;return typeof r==`number`&&Number.isFinite(r)&&r>0?Math.floor(r):0}function T(e){let t=[e.detail.episode_cnt,e.detail.series_num_total,Array.isArray(e.detail.links)?e.detail.links.length:void 0].find(e=>typeof e==`number`&&Number.isFinite(e)&&e>0);return typeof t==`number`?Math.floor(t):0}function E(e){let t=e.detail.info?.play_count;if(typeof t==`number`&&Number.isFinite(t))return Math.max(0,Math.floor(t));let n=e.detail.view_count||e.viewCount;return typeof n==`number`&&Number.isFinite(n)?Math.max(0,Math.floor(n)):0}function D(e){return e.detail.type===2||e.is_more_link||e.detail.info?.is_more_link||e.detail.is_more_link?!0:T(e)>1}function fe(e){let t=e.detail,n=t.info,r=String(n?.cover_image||t.cover_image||C(e)||``),i=String(n?.text||n?.title||t.title||t.content||``),a=T(e),o=t.author_score??0,s=Array.isArray(t.tags)?t.tags:[];return{id:e.content_id?String(e.content_id):String(e.id),title:i,type:typeof e.type==`number`?e.type:0,coverImage:r,score:o,collectedAt:t.create_time==null?void 0:String(t.create_time),tags:s,duration:w(e),viewCount:E(e),episodeCount:a,publishTime:String(t.create_time??t.update_time??``),is_more_link:D(e),authorName:``}}function O({id:C}){let w=de(`components.pages.collectionDetail`),T=o(),{userId:E,isLogin:D}=t(),{open:O}=f(),k=p(),A=ie([`collection-detail`,C],()=>n({collection_id:C})),j=A.data?.data?.data?.collection?.user_id,M=!!(j&&E&&String(j)===String(E)),[pe,N]=v(!1),[P,F]=v(!1),[I,L]=v(!1),[R,z]=v(!1),[B,V]=v(()=>new Set),[H,U]=v(null),W=A.data?.data?.data?.collection,G=W?.contents,K=_(()=>G?G.map(e=>({content_id:e.content_id,is_more_link:e.is_more_link,id:Number(e.content_id),detail:e,type:Number(e.source_type??0),medias:e.medias,cover_image:e.cover_image,viewCount:e.view_count})):[],[G]).map(fe),me=K.length>0&&K.every(e=>e.type===1),q=_(()=>new Set(K.map(e=>e.id)),[K]),J=q.size>0&&B.size===q.size,{mutateAsync:he,isPending:ge}=m(async e=>await i({collection_id:C,content_id:e})),{mutateAsync:_e,isPending:Y}=m(async e=>await r({collection_id:e})),{mutateAsync:ve,isPending:X}=m(async e=>await a({app_id:0,user_id:E,folder_id:C,content_type:1,content_ids:e})),ye=M&&W?.is_default===!1;function be(e){U({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),N(!0)}function Z(){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}if(!M){S.error(w(`detail.operationFailed`));return}V(new Set),z(!0)}function xe(){V(new Set),z(!1)}function Q(e){V(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function Se(){if(J){V(new Set);return}V(new Set(q))}async function Ce(){if(!(B.size===0||X)){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}try{let e=await ve(Array.from(B));if(e.code===0){S.success(w(`detail.uncollectSuccess`)),k([`collection-detail`,C]),k([`user-profile`,`mine`]),k([`user-profile`,`profile`,j]),V(new Set),z(!1);return}S.error(e.message||w(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),S.error(w(`detail.operationFailed`))}}}function we(e){if(typeof window>`u`)return``;if(e.kind===`collection`)return`${window.location.origin}/collection/${e.id}`;let t=e.title?encodeURIComponent(e.title):`detail`,n=e.type===1?`/video/${e.id}/${t}`:`/post/${e.id}`;return`${window.location.origin}${n}`}function $(e){if(!H)return;let t=we(H);t&&se.showSharePopup({type:e,data:{id:H.id},copyUrl:t})}function Te(){$(h.WECHAT)}function Ee(){$(h.QQ)}function De(){$(h.WECHAT_MOMENTS)}function Oe(){if(!ge){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}!H||H.kind!==`content`||he(H.id).then(e=>{if(e.code===0){S.success(w(`detail.uncollectSuccess`)),k([`collection-detail`,C]),U(e=>e&&{...e,isCollected:!1});return}S.error(e.message||w(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),S.error(w(`detail.operationFailed`))})}}function ke(){L(!0),N(!1)}function Ae(){if(!Y){if(!D||!E){S.error(w(`detail.pleaseLogin`)),O();return}if(!ye){S.error(w(`detail.defaultCollectionDeleteNotSupported`));return}F(!0)}}async function je(){if(!Y)try{let e=await _e(C);if(e.code===0){S.success(w(`detail.deleteSuccess`)),k([`collection-detail`,C]),k([`user-profile`,`mine`]),k([`user-profile`,`profile`,j]),F(!1),N(!1),T.back();return}S.error(e.message||w(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),S.error(w(`detail.operationFailed`))}}return x(s,{className:`relative flex min-h-screen flex-col overflow-hidden bg-[var(--color-surface-panel-dark)] ${R?`pb-28`:`pb-6`}`,children:[b(le,{className:`!border-none !bg-[var(--color-surface-panel-dark)] !border-transparent`,title:W?.title??``,centerChild:b(`p`,{className:`line-clamp-1 px-12 text-center text-[18px] leading-[22px] font-medium text-text1`,children:W?.title??``}),onBack:()=>T.back(),rightChild:M?R?b(`button`,{type:`button`,onClick:xe,className:`px-2 py-1 text-sm text-text1`,children:w(`detail.done`)}):x(te,{children:[b(ne,{className:`flex h-10 w-10 items-center justify-center text-text1 outline-none`,children:b(y,{className:`h-5 w-5`,strokeWidth:2})}),x(c,{align:`end`,sideOffset:6,className:`!w-[180px] rounded-[8px] border-none !border-none !ring-0 shadow-none !shadow-none bg-[#252327] px-0 pb-1 pt-[3px]`,children:[b(l,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:ke,children:w(`detail.editCollection`)}),b(u,{className:`mx-0 my-1 bg-[#343237]`}),b(l,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:Z,children:w(`detail.manageCollection`)}),b(u,{className:`mx-0 my-1 bg-[#343237]`}),b(l,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:Ae,disabled:Y,children:w(Y?`detail.deleting`:`detail.deleteCollection`)})]})]}):void 0}),b(s,{className:`relative z-[1] px-4 pb-4`,children:b(s,{className:`text-text2 text-sm leading-[22px] break-all text-ellipsis line-clamp-1`,children:W?.description})}),b(s,{className:`relative z-[1] px-4 ${R?`pb-20`:``}`,children:me?b(d,{loading:A.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),columns:2,gridGap:16,className:`!bg-transparent`,children:K.map(e=>b(ue,{id:e.id,title:e.title,coverImage:e.coverImage,duration:e.duration,episodeCount:e.episodeCount,viewCount:e.viewCount,is_more_link:e.is_more_link,isEditMode:R,isSelected:B.has(e.id),onToggleSelection:Q},e.id))}):b(d,{loading:A.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),className:`!bg-transparent divide-y divide-text1/5`,children:K.map(e=>b(g,{...e,onOpenShare:be,isEditMode:R,isSelected:B.has(e.id),onToggleSelection:Q},e.id))})}),R&&x(s,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[x(s,{className:`flex items-center gap-2`,children:[b(ee,{checked:J,onCheckedChange:Se}),b(re,{className:`text-sm text-text1`,children:w(`detail.selectAll`)})]}),b(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:B.size>0?`default`:`outline`,disabled:B.size===0||X,onClick:Ce,children:w(X?`detail.deleting`:`detail.delete`)})]}),b(oe,{isShowCollect:H?.kind===`content`&&M&&D,isCollected:H?.isCollected,open:pe,onOpenChange:N,onShareWeChat:Te,onShareQQ:Ee,onShareMoments:De,onUncollect:Oe}),b(ae,{visible:I,mode:`edit`,collectionId:C,initialValues:W?{title:W.title??``,description:W.description??``}:void 0,onClose:()=>L(!1)}),b(ce,{open:P,onOpenChange:F,onConfirm:je,title:w(`detail.deleteCollection`),isConfirming:Y})]})}export{O as CollectionDetail};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,gUserViewUserInfo as r,pCommunityDeleteCollection as i,pCommunityRemoveContentFromCollection as a,pCommunitySubscribeCollection as o,pInteractionBatchDeleteCollects as s}from"../../../service/generated/client.mjs";import{useRouter as ee}from"../../../utils/use-compatible-router.mjs";import{Box as c}from"../../ui/box.mjs";import{Checkbox as te}from"../../ui/checkbox.mjs";import{Drawer as ne,DrawerContent as re,DrawerDescription as ie,DrawerTitle as ae}from"../../ui/drawer.mjs";import{List as oe}from"../../ui/list.mjs";import{Text as l}from"../../ui/text.mjs";import{useLoginModalStore as se}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as ce,useMutation as u,useRequest as d,useUpdateRequest as le}from"../../../hooks/query/use-query.mjs";import{ShareDrawer as f}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as p}from"../../../types/share.mjs";import m from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as ue}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as de}from"../../common/header-nav/client.mjs";import{MoreIcon as fe}from"../../common/icons/more.mjs";import{CollectionDetailCard as pe}from"./_components/collection-detail-card.mjs";import{useEffect as me,useMemo as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useSearchParams as b}from"next/navigation";import{useTranslations as he}from"next-intl";function x(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 S(e){let t=e.detail.info?.video_duration;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return Math.floor(t);let n=e.medias?.find(e=>{let t=e?.video_duration;return typeof t==`number`&&Number.isFinite(t)&&t>0})?.video_duration;return typeof n==`number`&&Number.isFinite(n)&&n>0?Math.floor(n):0}function C(e){let t=e.detail.info?.play_count;if(typeof t==`number`&&Number.isFinite(t))return Math.max(0,Math.floor(t));let n=e.detail.view_count||e.viewCount;return typeof n==`number`&&Number.isFinite(n)?Math.max(0,Math.floor(n)):0}function ge(e){let t=e.detail,n=t.info,r=String(n?.cover_image||t.cover_image||x(e)||``),i=String(n?.text||n?.title||t.title||t.content||``),a=t.author_score??0,o=Array.isArray(t.tags)?t.tags:[];return{id:e.content_id?String(e.content_id):String(e.id),title:i,type:typeof e.type==`number`?e.type:0,coverImage:r,score:a,collectedAt:t.create_time==null?void 0:String(t.create_time),tags:o,duration:S(e),viewCount:C(e),publishTime:String(t.create_time??t.update_time??``),is_more_link:e.is_more_link??n?.is_more_link??!1,authorName:``}}function w({id:x}){let S=he(`components.pages.collectionDetail`),C=ee(),w=b(),{userId:T,isLogin:E}=t(),{open:D}=se(),O=ce();le();let k=d([`collection-detail`,x],()=>n({collection_id:x})),A=k.data?.data?.data?.collection?.user_id,j=!!(A&&T&&String(A)===String(T)),_e=d([`user-info`,A],()=>r({target_user_id:A,user_id:A})),[ve,M]=g(!1),[N,P]=g(!1),[F,I]=g(!1),[L,R]=g(!1),[z,B]=g(!1),[V,H]=g(()=>new Set),[U,W]=g(null);me(()=>{!N&&L&&(I(!0),R(!1))},[N,L]);let G=k.data?.data?.data?.collection,K=G?.contents,q=h(()=>K?K.map(e=>({content_id:e.content_id,is_more_link:e.is_more_link,id:Number(e.content_id),detail:e,type:Number(e.source_type??0),medias:e.medias,cover_image:e.cover_image,viewCount:e.view_count})):[],[K]).map(ge),J=h(()=>new Set(q.map(e=>e.id)),[q]),Y=J.size>0&&V.size===J.size;G?.cover_image,G?.content_count,G?.is_subscribe;let{mutateAsync:ye,isPending:be}=u(async e=>await o({collection_id:x,subscribe:e})),{mutateAsync:xe,isPending:Se}=u(async e=>await a({collection_id:x,content_id:e})),{mutateAsync:Ce,isPending:X}=u(async e=>await i({collection_id:e})),{mutateAsync:we,isPending:Z}=u(async e=>await s({app_id:0,user_id:T,folder_id:x,content_type:1,content_ids:e})),Q=_e.data?.data;Q?.avatar,Q?.nick_name;let Te=j&&G?.is_default===!1;function Ee(e){W({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),M(!0)}function De(){if(j){P(!0);return}W({kind:`collection`,id:x}),M(!0)}function Oe(){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}if(!j){y.error(S(`detail.operationFailed`));return}P(!1),H(new Set),B(!0)}function ke(){H(new Set),B(!1)}function Ae(e){H(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function je(){if(Y){H(new Set);return}H(new Set(J))}async function Me(){if(!(V.size===0||Z)){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}try{let e=await we(Array.from(V));if(e.code===0){y.success(S(`detail.uncollectSuccess`)),O([`collection-detail`,x]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),H(new Set),B(!1);return}y.error(e.message||S(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),y.error(S(`detail.operationFailed`))}}}function Ne(e){if(typeof window>`u`)return``;if(e.kind===`collection`)return`${window.location.origin}/collection/${e.id}`;let t=e.title?encodeURIComponent(e.title):`detail`,n=e.type===1?`/video/${e.id}/${t}`:`/post/${e.id}`;return`${window.location.origin}${n}`}function $(e){if(!U)return;let t=Ne(U);t&&m.showSharePopup({type:e,data:{id:U.id},copyUrl:t})}function Pe(){$(p.WECHAT)}function Fe(){$(p.QQ)}function Ie(){$(p.WECHAT_MOMENTS)}function Le(){if(!Se){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}!U||U.kind!==`content`||xe(U.id).then(e=>{if(e.code===0){y.success(S(`detail.uncollectSuccess`)),O([`collection-detail`,x]),W(e=>e&&{...e,isCollected:!1});return}y.error(e.message||S(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),y.error(S(`detail.operationFailed`))})}}function Re(){let e=new URLSearchParams(w.toString());e.set(`id`,x),e.set(`type`,`edit`),C.push(`/collection/create?${e.toString()}`),P(!1),M(!1)}function ze(){if(!X){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}if(!Te){y.error(S(`detail.defaultCollectionDeleteNotSupported`));return}R(!0),P(!1)}}async function Be(){if(!X)try{let e=await Ce(x);if(e.code===0){y.success(S(`detail.deleteSuccess`)),O([`collection-detail`,x]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),I(!1),P(!1),M(!1),C.back();return}y.error(e.message||S(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),y.error(S(`detail.operationFailed`))}}return v(c,{className:`flex flex-col bg-bg1 min-h-screen ${z?`pb-28`:`pb-6`}`,children:[_(de,{title:G?.title??``,onBack:()=>C.back(),rightChild:j?z?_(`button`,{type:`button`,onClick:ke,className:`px-2 py-1 text-sm text-text1`,children:S(`detail.done`)}):_(`button`,{type:`button`,onClick:De,className:`p-2`,children:_(fe,{})}):void 0}),_(c,{className:`px-4 flex items-start gap-4`,children:v(c,{className:`flex-1 flex flex-col gap-2`,children:[_(c,{className:`flex items-center justify-between`}),_(c,{className:`text-text2 text-sm break-all text-ellipsis line-clamp-1`,children:G?.description})]})}),_(c,{className:`px-4 ${z?`pb-20`:``}`,children:_(oe,{loading:k.isLoading,hasMore:!1,emptyText:S(`detail.emptyContent`),className:`divide-y divide-text1/5`,children:q.map(e=>_(pe,{...e,onOpenShare:Ee,isEditMode:z,isSelected:V.has(e.id),onToggleSelection:Ae},e.id))})}),z&&v(c,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[v(c,{className:`flex items-center gap-2`,children:[_(te,{checked:Y,onCheckedChange:je}),_(l,{className:`text-sm text-text1`,children:S(`detail.selectAll`)})]}),_(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:V.size>0?`default`:`outline`,disabled:V.size===0||Z,onClick:Me,children:S(Z?`detail.deleting`:`detail.delete`)})]}),v(ne,{open:N,onOpenChange:P,children:[_(ae,{className:`hidden`,children:S(`detail.collectionManageTitle`)}),_(ie,{className:`hidden`,children:S(`detail.collectionManageTitle`)}),v(re,{className:`z-[2000]`,children:[v(c,{className:`px-4 py-5`,children:[_(l,{className:`text-base font-bold text-text1 text-center `,children:S(`detail.collectionManageTitle`)}),v(c,{className:`mt-4 border-t border-text1/10`,children:[_(`button`,{className:`w-full text-left py-4 border-b border-text1/10`,onClick:Re,children:_(l,{className:`text-text1`,children:S(`detail.editCollection`)})}),_(`button`,{className:`w-full text-left py-4 border-b border-text1/10`,onClick:Oe,children:_(l,{className:`text-text1`,children:S(`detail.manageCollection`)})}),_(`button`,{className:`w-full text-left py-4 ${X?`opacity-60 cursor-not-allowed`:``}`,onClick:ze,disabled:X,children:_(l,{className:`text-destructive`,children:S(X?`detail.deleting`:`detail.deleteCollection`)})})]})]}),_(e,{className:`w-full h-auto py-4 text-lg text-text1`,size:`lg`,onClick:()=>P(!1),variant:`secondary`,children:S(`detail.cancel`)})]})]}),_(f,{isShowCollect:U?.kind===`content`&&j&&E,isCollected:U?.isCollected,open:ve,onOpenChange:M,onShareWeChat:Pe,onShareQQ:Fe,onShareMoments:Ie,onUncollect:Le}),_(ue,{open:F,onOpenChange:I,onConfirm:Be,title:S(`detail.deleteCollection`),isConfirming:X})]})}export{w as CollectionDetail};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as r}from"../../../service/generated/client.mjs";import{uploadFile as i}from"../../../utils/upload-file.mjs";import{Avatar as ee,AvatarFallback as te,AvatarImage as ne}from"../../ui/avatar.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as re,InputGroupAddon as ie,InputGroupTextarea as ae}from"../../ui/input-group.mjs";import{Text as o}from"../../ui/text.mjs";import{useDeleteRequest as oe,useMutation as se,useRequest as ce}from"../../../hooks/query/use-query.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{PickerDrawer as s}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ue}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as de}from"../../common/image-crop-modal/image-crop-modal.mjs";import{useEffect as c,useRef as l,useState as u}from"react";import{ChevronDown as fe}from"lucide-react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{toast as p}from"sonner";import{useTranslations as pe}from"next-intl";import{produce as me}from"immer";const m={0:`secret`,1:`male`,2:`female`},h={male:1,female:2,secret:0},g=[`image/jpeg`,`image/png`],he=/^[\u4E00-\u9FFF\w.-]+$/;function ge(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return g.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function _(e){return e?h[e]===void 0?m[e]??`secret`:e:`secret`}function v(e){if(!e)return;if(h[e]!==void 0)return h[e];let t=Number(e);return Number.isNaN(t)?void 0:t}function _e(e){return{nickname:e?.nick_name??``,gender:_(e?.gender?.toString()),signature:e?.signature??``,avatar:e?.avatar??``}}function ve(e){if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}function ye({id:m}){let h=pe(`components.pages.edit`),{userId:g,userInfo:_,setUserInfo:ye}=e(),y=m??g,b=oe(),be={male:h(`page.genderMale`),female:h(`page.genderFemale`),secret:h(`page.genderSecret`)},xe=l(null),x=l(null),S=l(null),C=l(null),[w,T]=u(()=>_e()),[E,D]=u(!1),[Se,O]=u(null),[Ce,k]=u(!1),[A,j]=u(``),[M,N]=u(!1),[P,F]=u(``),[we,I]=u(!1),[L,R]=u(`secret`),[z,Te]=u(!1),[B,V]=u(``),Ee={code:0,message:``,data:{}},De={code:0,message:``,data:{}},{data:Oe,isLoading:H}=ce([`user-edit-info`,y],()=>y?t({user_id:y}):Promise.resolve(Ee)),{data:ke}=ce([`user-info-basic`,y],()=>y?n({user_id:y}):Promise.resolve(De)),{mutateAsync:Ae,isPending:je}=se(async e=>r(e)),Me=E||je||Se!==null,U=H||Me,W=U?`cursor-not-allowed opacity-60`:`cursor-pointer`,Ne=ke?.data?.display_id||_?.display_id||`--`,G=w.gender||`secret`,Pe=U||P.trim()===w.nickname,Fe=U||L===G,Ie=U||B===w.signature,K=`flex h-12 w-full items-center rounded-md bg-[var(--color-surface-field-bg)] px-4`,q=`text-sm leading-6 text-text3`,J=`block min-w-0 flex-1 truncate text-sm leading-5 text-text3`;c(()=>{let e=Oe?.data;e&&T(_e(e))},[Oe]),c(()=>{if(!M)return;let e=window.setTimeout(()=>{ve(x.current)},250);return()=>{window.clearTimeout(e)}},[M]),c(()=>{if(!z)return;let e=window.setTimeout(()=>{ve(S.current)},250);return()=>{window.clearTimeout(e)}},[z]),c(()=>()=>{A&&URL.revokeObjectURL(A)},[A]);function Y(e,t){T(me(n=>{n[e]=t}))}function Le(){A&&(URL.revokeObjectURL(A),j(``))}function Re(){y&&(b([`user-edit-info`,y]),b([`user-info-basic`,y]),b([`user-profile`,`mine`]),b([`user-profile`,`mine`,y]),b([`user-profile`,`profile`,y]))}function X(e){!y||y!==g||ye({..._,user_id:y,...e})}function ze(){p.info(h(`page.editBlockedWhileSaving`))}function Z(){return H?!0:Me?(ze(),!0):!1}function Be(e){return C.current?(ze(),!1):(C.current=e,O(e),!0)}function Ve(e){C.current===e&&(C.current=null,O(null))}async function Q(e,t){if(!Be(e))return!1;let n=p.loading(h(`page.savingInProgress`));try{return await t()}finally{p.dismiss(n),Ve(e)}}function He(e,t){let n={...w,...t},r={nickname:[`nick_name`,n.nickname||void 0],avatar:[`avatar`,n.avatar||void 0],signature:[`signature`,n.signature||void 0],gender:[`gender`,v(n.gender)]},i=Object.keys(r).filter(t=>t!==e).map(e=>r[e]);return i.push(r[e]),Object.fromEntries(i)}async function $(e,t){if(!y)return p.error(h(`page.userNotFound`)),!1;let n=He(e,t);try{return await Ae({user_id:y,...n}),Re(),!0}catch(e){return console.error(`更新用户信息失败`,e),p.error(h(`page.updateFailed`)),!1}}function Ue(){Z()||E||xe.current?.click()}function We(e){if(Z()){e.target&&(e.target.value=``);return}let t=e.target.files?.[0];if(t){if(!ge(t)){p.error(h(`page.imageTypeInvalid`)),e.target&&(e.target.value=``);return}j(URL.createObjectURL(t)),k(!0),e.target&&(e.target.value=``)}}async function Ge(e){await Q(`avatar`,async()=>{try{D(!0);let t=await i(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);return await $(`avatar`,{avatar:t.objectKey})?(Y(`avatar`,t.objectKey),X({avatar:t.objectKey}),Ke(),p.success(h(`page.avatarUpdateSuccess`)),!0):!1}catch(e){return console.error(`上传头像失败`,e),p.error(h(`page.avatarUploadFailed`)),!1}finally{D(!1)}})}function Ke(){k(!1),Le()}function qe(){Z()||(F(w.nickname),N(!0))}function Je(e){let t=e.target.value;t.length>24||F(t)}function Ye(e){return e?e.length<2?h(`page.nicknameTooShort`):he.test(e)?``:h(`page.nicknameInvalidChars`):h(`page.nicknameRequired`)}async function Xe(e){if(Pe)return!1;let t=e.trim(),n=Ye(t);return n?(p.error(n),!1):await Q(`nickname`,async()=>$(`nickname`,{nickname:t}))?(Y(`nickname`,t),X({nick_name:t}),F(t),p.success(h(`page.nicknameUpdateSuccess`)),!0):!1}function Ze(){Z()||(R(G),I(!0))}function Qe(){I(!1)}function $e(e){R(e)}async function et(e){let t=e||L||`secret`;if(t===G)return!1;let n=v(t);return await Q(`gender`,async()=>$(`gender`,{gender:t}))?(Y(`gender`,t),X({gender:n}),R(t),p.success(h(`page.genderUpdateSuccess`)),!0):!1}function tt(){Z()||(V(w.signature),Te(!0))}function nt(e){let t=e.target.value;t.length>100||V(t)}function rt(e){let t=e.trim();return t.length>0&&t.length<2?h(`page.signatureTooShort`):``}async function it(e){if(Ie)return!1;let t=rt(e);return t?(p.error(t),!1):await Q(`signature`,async()=>$(`signature`,{signature:e}))?(Y(`signature`,e),X({signature:e}),V(e),p.success(h(`page.signatureUpdateSuccess`)),!0):!1}return f(a,{className:`min-h-screen bg-[var(--color-surface-panel-dark)]`,children:[d(le,{className:`h-11 !border-none !bg-[var(--color-surface-panel-dark)]`,title:h(`page.title`)}),f(a,{className:`mx-auto flex w-full max-w-[390px] flex-col px-8 pb-10 pt-17`,children:[f(`button`,{type:`button`,onClick:Ue,className:`flex flex-col items-center gap-4 pb-10 ${W}`,children:[d(`input`,{ref:xe,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:We}),d(a,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:f(ee,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[d(ne,{src:w.avatar}),d(te,{})]})}),f(o,{className:`text-base leading-5 text-text3`,children:[`ID:`,` `,H?h(`page.loading`):E?h(`page.avatarUploading`):`${Ne}`]})]}),f(a,{className:`flex flex-col gap-6`,children:[f(a,{className:`flex flex-col gap-2`,children:[d(o,{as:`p`,className:q,children:h(`page.label`)}),d(`button`,{type:`button`,onClick:qe,className:`${K} ${W}`,children:d(o,{className:J,children:w.nickname||h(`page.nicknamePlaceholder`)})})]}),f(a,{className:`flex flex-col gap-2`,children:[d(o,{as:`p`,className:q,children:h(`page.genderLabel`)}),f(`button`,{type:`button`,onClick:Ze,className:`${K} justify-between gap-3 ${W}`,children:[d(o,{className:J,children:be[G]||h(`page.genderSecret`)}),d(fe,{className:`h-5 w-5 shrink-0 text-text3`,strokeWidth:1.75})]})]}),f(a,{className:`flex flex-col gap-2`,children:[d(o,{as:`p`,className:q,children:h(`page.signatureLabel`)}),d(`button`,{type:`button`,onClick:tt,className:`${K} ${W}`,children:d(o,{className:J,children:w.signature||h(`page.signaturePlaceholder`)})})]})]})]}),d(s,{open:M,onClose:()=>N(!1),title:h(`page.label`),confirmText:h(`page.submit`),onConfirm:e=>Xe(String(e)),confirmDisabled:Pe,children:({onValueChange:e})=>d(a,{className:`px-4 py-4 min-h-[230px]`,children:f(re,{children:[d(ae,{ref:x,className:`!bg-bg1 p-2.5`,rows:4,maxLength:24,placeholder:h(`page.nicknamePlaceholder`),value:P,onChange:t=>{Je(t),e(t.target.value)},disabled:U}),d(ie,{className:`!bg-bg1`,align:`block-end`,children:d(`div`,{className:`text-right w-full`,children:f(`span`,{className:`text-xs`,children:[P.length,`/`,24]})})})]})})}),d(ue,{open:we,onClose:Qe,value:L,onValueChange:$e,onConfirm:et,confirmDisabled:Fe}),d(s,{open:z,onClose:()=>Te(!1),title:h(`page.signatureLabel`),confirmText:h(`page.submit`),onConfirm:e=>it(String(e)),confirmDisabled:Ie,children:({onValueChange:e})=>d(a,{className:`px-4 py-4 min-h-[230px]`,children:f(re,{children:[d(ae,{ref:S,className:`!bg-bg1 p-2.5`,rows:4,maxLength:100,placeholder:h(`page.signaturePlaceholder`),value:B,onChange:t=>{nt(t),e(t.target.value)},disabled:U}),d(ie,{className:`!bg-bg1`,align:`block-end`,children:d(`div`,{className:`text-right w-full`,children:f(`span`,{className:`text-xs`,children:[B.length,`/`,100]})})})]})})}),d(de,{open:Ce,onClose:Ke,imageSrc:A,onConfirm:Ge,cropShape:`round`})]})}export{ye as EditClient};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as r}from"../../../service/generated/client.mjs";import{uploadFile as i}from"../../../utils/upload-file.mjs";import{Avatar as ee,AvatarFallback as te,AvatarImage as ne}from"../../ui/avatar.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as o,InputGroupAddon as s,InputGroupTextarea as c}from"../../ui/input-group.mjs";import{Field as l,FieldLabel as u}from"../../ui/field.mjs";import{Text as d}from"../../ui/text.mjs";import{useDeleteRequest as re,useMutation as ie,useRequest as ae}from"../../../hooks/query/use-query.mjs";import{HeaderNav as oe}from"../../common/header-nav/client.mjs";import{PickerDrawer as se}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ce}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as le}from"../../common/image-crop-modal/image-crop-modal.mjs";import{useEffect as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{useTranslations as ue}from"next-intl";import{produce as de}from"immer";const fe={0:`secret`,1:`male`,2:`female`},v={male:1,female:2,secret:0},y=[`image/jpeg`,`image/png`],pe=/^[\u4E00-\u9FFF\w.-]+$/;function me(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return y.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function b(e){return e?v[e]===void 0?fe[e]??`secret`:e:`secret`}function he(e){if(!e)return;if(v[e]!==void 0)return v[e];let t=Number(e);return Number.isNaN(t)?void 0:t}function ge(e){return{nickname:e?.nick_name??``,gender:b(e?.gender?.toString()),signature:e?.signature??``,avatar:e?.avatar??``}}function _e(e){if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}function ve({id:fe}){let v=ue(`components.pages.edit`),{userId:y,userInfo:b,setUserInfo:ve}=e(),x=fe??y,S=re(),ye={male:v(`page.genderMale`),female:v(`page.genderFemale`),secret:v(`page.genderSecret`)},C=p(null),w=p(null),T=p(null),E=p(null),[D,O]=m(()=>ge()),[k,A]=m(!1),[be,j]=m(null),[xe,M]=m(!1),[N,P]=m(``),[F,I]=m(!1),[L,R]=m(``),[Se,z]=m(!1),[B,V]=m(`secret`),[H,Ce]=m(!1),[U,W]=m(``),we={code:0,message:``,data:{}},Te={code:0,message:``,data:{}},{data:Ee,isLoading:G}=ae([`user-edit-info`,x],()=>x?t({user_id:x}):Promise.resolve(we)),{data:De}=ae([`user-info-basic`,x],()=>x?n({user_id:x}):Promise.resolve(Te)),{mutateAsync:Oe,isPending:ke}=ie(async e=>r(e)),Ae=k||ke||be!==null,K=G||Ae,q=K?`cursor-not-allowed opacity-60`:`cursor-pointer`,je=De?.data?.display_id||b?.display_id||`--`,J=D.gender||`secret`,Me=K||L.trim()===D.nickname,Ne=K||B===J,Pe=K||U===D.signature;f(()=>{let e=Ee?.data;e&&O(ge(e))},[Ee]),f(()=>{if(!F)return;let e=window.setTimeout(()=>{_e(w.current)},250);return()=>{window.clearTimeout(e)}},[F]),f(()=>{if(!H)return;let e=window.setTimeout(()=>{_e(T.current)},250);return()=>{window.clearTimeout(e)}},[H]),f(()=>()=>{N&&URL.revokeObjectURL(N)},[N]);function Y(e,t){O(de(n=>{n[e]=t}))}function Fe(){N&&(URL.revokeObjectURL(N),P(``))}function Ie(){x&&(S([`user-edit-info`,x]),S([`user-info-basic`,x]),S([`user-profile`,`mine`]),S([`user-profile`,`mine`,x]),S([`user-profile`,`profile`,x]))}function X(e){!x||x!==y||ve({...b,user_id:x,...e})}function Le(){_.info(v(`page.editBlockedWhileSaving`))}function Z(){return G?!0:Ae?(Le(),!0):!1}function Re(e){return E.current?(Le(),!1):(E.current=e,j(e),!0)}function ze(e){E.current===e&&(E.current=null,j(null))}async function Q(e,t){if(!Re(e))return!1;let n=_.loading(v(`page.savingInProgress`));try{return await t()}finally{_.dismiss(n),ze(e)}}function Be(e,t){let n={...D,...t},r={nickname:[`nick_name`,n.nickname||void 0],avatar:[`avatar`,n.avatar||void 0],signature:[`signature`,n.signature||void 0],gender:[`gender`,he(n.gender)]},i=Object.keys(r).filter(t=>t!==e).map(e=>r[e]);return i.push(r[e]),Object.fromEntries(i)}async function $(e,t){if(!x)return _.error(v(`page.userNotFound`)),!1;let n=Be(e,t);try{return await Oe({user_id:x,...n}),Ie(),!0}catch(e){return console.error(`更新用户信息失败`,e),_.error(v(`page.updateFailed`)),!1}}function Ve(){Z()||k||C.current?.click()}function He(e){if(Z()){e.target&&(e.target.value=``);return}let t=e.target.files?.[0];if(t){if(!me(t)){_.error(v(`page.imageTypeInvalid`)),e.target&&(e.target.value=``);return}P(URL.createObjectURL(t)),M(!0),e.target&&(e.target.value=``)}}async function Ue(e){await Q(`avatar`,async()=>{try{A(!0);let t=await i(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);return await $(`avatar`,{avatar:t.objectKey})?(Y(`avatar`,t.objectKey),X({avatar:t.objectKey}),We(),_.success(v(`page.avatarUpdateSuccess`)),!0):!1}catch(e){return console.error(`上传头像失败`,e),_.error(v(`page.avatarUploadFailed`)),!1}finally{A(!1)}})}function We(){M(!1),Fe()}function Ge(){Z()||(R(D.nickname),I(!0))}function Ke(e){let t=e.target.value;t.length>24||R(t)}function qe(e){return e?e.length<2?v(`page.nicknameTooShort`):pe.test(e)?``:v(`page.nicknameInvalidChars`):v(`page.nicknameRequired`)}async function Je(e){if(Me)return!1;let t=e.trim(),n=qe(t);return n?(_.error(n),!1):await Q(`nickname`,async()=>$(`nickname`,{nickname:t}))?(Y(`nickname`,t),X({nick_name:t}),R(t),_.success(v(`page.nicknameUpdateSuccess`)),!0):!1}function Ye(){Z()||(V(J),z(!0))}function Xe(){z(!1)}function Ze(e){V(e)}async function Qe(e){let t=e||B||`secret`;if(t===J)return!1;let n=he(t);return await Q(`gender`,async()=>$(`gender`,{gender:t}))?(Y(`gender`,t),X({gender:n}),V(t),_.success(v(`page.genderUpdateSuccess`)),!0):!1}function $e(){Z()||(W(D.signature),Ce(!0))}function et(e){let t=e.target.value;t.length>100||W(t)}function tt(e){let t=e.trim();return t.length>0&&t.length<2?v(`page.signatureTooShort`):``}async function nt(e){if(Pe)return!1;let t=tt(e);return t?(_.error(t),!1):await Q(`signature`,async()=>$(`signature`,{signature:e}))?(Y(`signature`,e),X({signature:e}),W(e),_.success(v(`page.signatureUpdateSuccess`)),!0):!1}return g(a,{className:`bg-bg2 !min-h-screen`,children:[h(oe,{className:`!bg-bg2`,title:v(`page.title`)}),g(a,{onClick:Ve,className:`flex bg-bg2 flex-col py-3 items-center justify-center gap-3 ${q}`,children:[h(`input`,{ref:C,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:He}),g(ee,{className:`w-21 h-21`,children:[h(ne,{src:D.avatar}),h(te,{})]}),g(d,{className:`text-sm text-text2`,children:[`ID:`,` `,G?v(`page.loading`):k?v(`page.avatarUploading`):`${je}`]})]}),g(a,{className:`pb-3`,children:[h(l,{className:`bg-bg2 px-3 ${q}`,onClick:Ge,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(u,{children:v(`page.label`)}),h(d,{className:`text-text2 text-sm text-right max-w-[65%] line-clamp-1 text-ellipsis`,children:D.nickname||v(`page.nicknamePlaceholder`)})]})}),h(l,{className:`!bg-bg2 px-3 border-none ${q}`,onClick:Ye,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(u,{children:v(`page.genderLabel`)}),h(d,{className:`text-text2 text-sm`,children:ye[J]||v(`page.genderSecret`)})]})}),h(`div`,{className:`h-2 bg-bg1`}),h(l,{className:`border-none px-3 bg-bg2! mt-2 ${q}`,onClick:$e,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(u,{children:v(`page.signatureLabel`)}),h(d,{className:`text-text2 text-sm text-right max-w-[65%] line-clamp-1 text-ellipsis`,children:D.signature||v(`page.signaturePlaceholder`)})]})})]}),h(se,{open:F,onClose:()=>I(!1),title:v(`page.label`),confirmText:v(`page.submit`),onConfirm:e=>Je(String(e)),confirmDisabled:Me,children:({onValueChange:e})=>h(a,{className:`px-4 py-4 min-h-[230px]`,children:g(o,{children:[h(c,{ref:w,className:`!bg-bg1 p-2.5`,rows:4,maxLength:24,placeholder:v(`page.nicknamePlaceholder`),value:L,onChange:t=>{Ke(t),e(t.target.value)},disabled:K}),h(s,{className:`!bg-bg1`,align:`block-end`,children:h(`div`,{className:`text-right w-full`,children:g(`span`,{className:`text-xs`,children:[L.length,`/`,24]})})})]})})}),h(ce,{open:Se,onClose:Xe,value:B,onValueChange:Ze,onConfirm:Qe,confirmDisabled:Ne}),h(se,{open:H,onClose:()=>Ce(!1),title:v(`page.signatureLabel`),confirmText:v(`page.submit`),onConfirm:e=>nt(String(e)),confirmDisabled:Pe,children:({onValueChange:e})=>h(a,{className:`px-4 py-4 min-h-[230px]`,children:g(o,{children:[h(c,{ref:T,className:`!bg-bg1 p-2.5`,rows:4,maxLength:100,placeholder:v(`page.signaturePlaceholder`),value:U,onChange:t=>{et(t),e(t.target.value)},disabled:K}),h(s,{className:`!bg-bg1`,align:`block-end`,children:h(`div`,{className:`text-right w-full`,children:g(`span`,{className:`text-xs`,children:[U.length,`/`,100]})})})]})})}),h(le,{open:xe,onClose:We,imageSrc:N,onConfirm:Ue,cropShape:`round`})]})}export{ve as EditClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetAppChannelBlock as e,gContentGetAppChannelBlockData as t,gContentListVisibleFloatingBall as n}from"../../../service/generated/client.mjs";import{useRouter as r}from"../../../utils/use-compatible-router.mjs";import{useRequest as i}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as a}from"../../../hooks/use-auth.mjs";import{queryKey as o}from"../../../constants/query-key.mjs";import{useKeepAliveState as s}from"../../common/keep-scroll-position/index.mjs";import{extractDataByComponentType as c}from"../../biz/utils/transformers/data.mjs";import{FloatingAd as l}from"../../biz/business/advertisement/floating-ad/client.mjs";import{useEffect as u,useLayoutEffect as d,useMemo as f,useRef as p}from"react";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";function _(){if(typeof document>`u`)return 0;let e=document.querySelector(`[data-top-nav-root="true"]`);return e&&e.getBoundingClientRect().height||0}function v({currentChannelId:v,isPGC:y}){let b=r(),x=a(),{data:S}=i(o.GET_CONTENT_LIST(v),()=>e({channel_id:v})),{data:C}=i([o.FLOATING_BALL],()=>n()),w=f(()=>S?.data?.blocks||[],[S?.data?.blocks]),T=f(()=>{let e=w.findIndex(e=>e.type===4),t=e>=0?w[e]:null;return{index:e,block:t,blockId:t?.id||``}},[w]),{data:E}=i([o.GUESS_YOU_LIKE_USER_DATA,T.blockId],()=>t({block_id:T.blockId}),{enabled:!!T.blockId}),D=f(()=>{if(T.index<0)return w;let e=E?.data.block?.data?.users||[];return w.map((t,n)=>n===T.index?{...t,data:{...t.data||{},users:e}}:t)},[w,E,T.index]),[O,k]=s(`home-scroll-top-${v}`,0),A=p({restored:!1,lastScrollTop:O,key:v,rafId:null}),j=p(k),M=p(O);u(()=>{j.current=k},[k]),u(()=>{M.current=O},[O]),u(()=>{A.current.key!==v&&(A.current.restored=!1,A.current.lastScrollTop=O,M.current=O,A.current.key=v)},[v,O]);let N=D.length>0;d(()=>{if(!N||A.current.restored||O<=0)return;let e=_(),t=Math.max(0,O+e);window.requestAnimationFrame(()=>{window.scrollTo({top:t}),A.current.restored=!0,A.current.lastScrollTop=t})},[N,v,O]),u(()=>{let e=A.current;function t(){e.restored=!0,e.rafId!==null&&window.cancelAnimationFrame(e.rafId),e.rafId=window.requestAnimationFrame(()=>{e.rafId=null;let t=window.scrollY??document.documentElement.scrollTop??0,n=_(),r=Math.max(0,t-n);Math.abs(t-e.lastScrollTop)>1&&(e.lastScrollTop=t,j.current(r))})}return window.addEventListener(`scroll`,t,{passive:!0}),()=>{e.rafId!==null&&(window.cancelAnimationFrame(e.rafId),e.rafId=null),window.removeEventListener(`scroll`,t)}},[v]);let P=f(()=>c(D,y),[D,y]),F=f(()=>C?.data?.ball_infos?.find(e=>e.channel_id===v),[C?.data?.ball_infos,v]);return g(m,{children:[F&&h(l,{ad:{materialUrl:F.material_url||``,jumpUrl:F.jump_url||``,name:F.name||``},onClick:()=>{x(()=>{F?.jump_url&&b.push(F.jump_url)})}}),P.map(e=>{let t=e.component,n=e.data.block_id||`block-${e.data.title||``}`;return h(t,{data:e.data},n)})]})}export{v as default};
2
+ "use client";import{gContentGetAppChannelBlock as e,gContentGetAppChannelBlockData as t,gContentListVisibleFloatingBall as n}from"../../../service/generated/client.mjs";import{useRouter as r}from"../../../utils/use-compatible-router.mjs";import{useRequest as i}from"../../../hooks/query/use-query.mjs";import{useRequireLogin as a}from"../../../hooks/use-auth.mjs";import{queryKey as o}from"../../../constants/query-key.mjs";import{useKeepAliveState as s}from"../../common/keep-scroll-position/index.mjs";import{FloatingAd as c}from"../../biz/business/advertisement/floating-ad/client.mjs";import{extractDataByComponentType as l}from"../../biz/utils/transformers/data.mjs";import{useEffect as u,useLayoutEffect as d,useMemo as f,useRef as p}from"react";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";function _(){if(typeof document>`u`)return 0;let e=document.querySelector(`[data-top-nav-root="true"]`);return e&&e.getBoundingClientRect().height||0}function v({currentChannelId:v,isPGC:y}){let b=r(),x=a(),{data:S}=i(o.GET_CONTENT_LIST(v),()=>e({channel_id:v})),{data:C}=i([o.FLOATING_BALL],()=>n()),w=f(()=>S?.data?.blocks||[],[S?.data?.blocks]),T=f(()=>{let e=w.findIndex(e=>e.type===4),t=e>=0?w[e]:null;return{index:e,block:t,blockId:t?.id||``}},[w]),{data:E}=i([o.GUESS_YOU_LIKE_USER_DATA,T.blockId],()=>t({block_id:T.blockId}),{enabled:!!T.blockId}),D=f(()=>{if(T.index<0)return w;let e=E?.data.block?.data?.users||[];return w.map((t,n)=>n===T.index?{...t,data:{...t.data||{},users:e}}:t)},[w,E,T.index]),[O,k]=s(`home-scroll-top-${v}`,0),A=p({restored:!1,lastScrollTop:O,key:v,rafId:null}),j=p(k),M=p(O);u(()=>{j.current=k},[k]),u(()=>{M.current=O},[O]),u(()=>{A.current.key!==v&&(A.current.restored=!1,A.current.lastScrollTop=O,M.current=O,A.current.key=v)},[v,O]);let N=D.length>0;d(()=>{if(!N||A.current.restored||O<=0)return;let e=_(),t=Math.max(0,O+e);window.requestAnimationFrame(()=>{window.scrollTo({top:t}),A.current.restored=!0,A.current.lastScrollTop=t})},[N,v,O]),u(()=>{let e=A.current;function t(){e.restored=!0,e.rafId!==null&&window.cancelAnimationFrame(e.rafId),e.rafId=window.requestAnimationFrame(()=>{e.rafId=null;let t=window.scrollY??document.documentElement.scrollTop??0,n=_(),r=Math.max(0,t-n);Math.abs(t-e.lastScrollTop)>1&&(e.lastScrollTop=t,j.current(r))})}return window.addEventListener(`scroll`,t,{passive:!0}),()=>{e.rafId!==null&&(window.cancelAnimationFrame(e.rafId),e.rafId=null),window.removeEventListener(`scroll`,t)}},[v]);let P=f(()=>l(D,y),[D,y]),F=f(()=>C?.data?.ball_infos?.find(e=>e.channel_id===v),[C?.data?.ball_infos,v]);return g(m,{children:[F&&h(c,{ad:{materialUrl:F.material_url||``,jumpUrl:F.jump_url||``,name:F.name||``},onClick:()=>{x(()=>{F?.jump_url&&b.push(F.jump_url)})}}),P.map(e=>{let t=e.component,n=e.data.block_id||`block-${e.data.title||``}`;return h(t,{data:e.data},n)})]})}export{v as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{ensureGuestIdentity as t}from"../../../store/modules/user-store.mjs";import{Box as n}from"../../ui/box.mjs";import{Checkbox as r}from"../../ui/checkbox.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{CloseIcon as o}from"../../../assets/icons/close-icon.mjs";import{EyeIcon as s}from"../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as c}from"../../../assets/icons/eye-off-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{authGradientTextStyle as u,authPanelBackgroundStyle as d}from"./auth-page-styles.mjs";import{useCallback as f,useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";function v(v){let y=_(`components.pages.login`),{onClose:b,onForgotPassword:x,onRegister:S,onSubmit:C,errorText:w}=v,[T,E]=m(``),[D,O]=m(``),[k,A]=m(!1),[j,M]=m(!1),[N,P]=m(!1),[F,I]=m(null),L=p(()=>T.trim().length>0&&D.length>0&&N&&!j,[T,D,N,j]),R=f(()=>{t(!0),S?.()},[S]);async function z(){if(L)try{M(!0),await C?.({email:T.trim(),password:D})}finally{M(!1)}}return g(n,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:d,children:[g(n,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(safe-area-inset-top)+152px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[h(e,{type:`button`,variant:`ghost`,onClick:b,"aria-label":y(`loginClient.close`),className:`absolute top-[calc(env(safe-area-inset-top)+12px)] right-[24px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:h(o,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),g(n,{className:`flex w-full flex-col`,children:[h(a,{className:`text-[28px] leading-[32px] font-medium text-[#E6E6E6]`,children:y(`loginClient.title`)}),h(a,{className:`mt-[16px] text-[14px] leading-[24px] text-[#E6E6E6]`,children:y(`loginClient.subtitle`)}),g(`form`,{className:`mt-[48px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),z()},children:[h(n,{className:`flex h-[48px] items-center rounded-[8px] bg-white/10 px-[22px]`,children:h(i,{placeholder:y(`loginClient.emailPlaceholder`),type:`email`,name:`funhub-login-email`,value:T,onChange:e=>E(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`})}),g(n,{className:`mt-[24px] flex h-[48px] items-center justify-between rounded-[8px] bg-white/10 px-[16px]`,children:[h(i,{placeholder:y(`loginClient.passwordPlaceholder`),type:k?`text`:`password`,name:`funhub-login-password`,value:D,onChange:e=>O(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`}),h(e,{type:`button`,variant:`ghost`,className:`ml-[12px] h-[24px] w-[24px] cursor-pointer select-none !p-0 text-white/50 hover:text-white/80`,"aria-label":y(k?`loginClient.hidePassword`:`loginClient.showPassword`),onClick:()=>A(e=>!e),children:h(k?s:c,{className:`h-[20px] w-[20px]`,"aria-hidden":`true`,focusable:`false`})})]}),!!w&&h(n,{className:`mt-[8px] text-[12px] leading-[16px] text-theme5`,children:w})]}),g(n,{className:`mt-[16px] flex items-center justify-between text-[14px] leading-[24px] text-[#9DA3AC]`,children:[g(a,{as:`span`,className:`whitespace-nowrap`,children:[y(`loginClient.noAccount`),h(e,{type:`button`,variant:`link`,onClick:R,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,children:y(`loginClient.registerLink`)})]}),h(e,{type:`button`,variant:`link`,onClick:x,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] text-[#9DA3AC] !no-underline hover:text-text1 hover:!no-underline`,children:y(`loginClient.forgotPassword`)})]})]}),g(n,{className:`flex w-full flex-col`,children:[g(n,{className:`flex items-center`,children:[h(r,{checked:N,onCheckedChange:e=>P(e===!0),"aria-label":y(`loginClient.agreeToTerms`),className:`mt-px size-[16px] border-white/60 bg-transparent data-[checked]:border-theme5 data-[checked]:bg-theme5 data-[checked]:text-white`}),g(a,{as:`span`,className:`ml-[8px] text-[12px] leading-[16px] text-[#9DA3AC]`,children:[y(`loginClient.agreeToTermsPrefix`),g(e,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>I(`terms`),children:[`《`,y(`loginClient.userAgreement`),`》`]}),y(`loginClient.and`),g(e,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>I(`privacy`),children:[`《`,y(`loginClient.privacyPolicy`),`》`]})]})]}),h(e,{type:`button`,onClick:z,disabled:!L,className:`mt-[16px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${L?``:`!text-white/60`}`,style:{background:L?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:y(j?`loginClient.loggingIn`:`loginClient.login`)})]})]}),h(l,{type:F,onClose:()=>I(null)})]})}export{v as LoginClient};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{ensureGuestIdentity as t}from"../../../store/modules/user-store.mjs";import{Box as n}from"../../ui/box.mjs";import{Checkbox as r}from"../../ui/checkbox.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{CloseIcon as o}from"../../../assets/icons/close-icon.mjs";import{EyeIcon as s}from"../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as c}from"../../../assets/icons/eye-off-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{useCallback as u,useMemo as d,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{useTranslations as h}from"next-intl";function g(g){let _=h(`components.pages.login`),{onClose:v,onForgotPassword:y,onRegister:b,onSubmit:x,errorText:S}=g,[C,w]=f(``),[T,E]=f(``),[D,O]=f(!1),[k,A]=f(!1),[j,M]=f(!1),[N,P]=f(null),F=d(()=>C.trim().length>0&&T.length>0&&j&&!k,[C,T,j,k]),I=u(()=>{t(!0),b?.()},[b]);async function L(){if(F)try{A(!0),await x?.({email:C.trim(),password:T})}finally{A(!1)}}return m(n,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[m(n,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[p(e,{type:`button`,onClick:v,"aria-label":_(`loginClient.close`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:p(o,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),p(e,{type:`button`,onClick:y,className:`text-[14px] text-text2 hover:text-text1 bg-transparent !p-0 !px-0 !py-0`,children:_(`loginClient.forgotPassword`)})]}),m(n,{className:`px-[24px] flex flex-1 flex-col mt-[15px]`,children:[m(n,{className:`flex flex-col`,children:[p(a,{className:`text-[24px] leading-[32px] font-bold`,children:_(`loginClient.title`)}),m(a,{className:`text-[14px] leading-[22px] mt-[12px] text-text1/80`,children:[_(`loginClient.noAccount`),`?`,p(e,{type:`button`,onClick:I,className:`cursor-pointer text-theme5 hover:opacity-90 bg-transparent !p-0 !px-0 !py-0`,children:_(`loginClient.registerLink`)})]})]}),m(`form`,{className:`mt-[38px] space-y-[16px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),L()},children:[p(n,{className:`flex items-center px-[28px] rounded-[50px] h-[66px] bg-line1 border border-line1`,children:p(i,{placeholder:_(`loginClient.emailPlaceholder`),type:`email`,name:`funhub-login-email`,value:C,onChange:e=>w(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`})}),m(n,{className:`flex items-center justify-between px-[28px] rounded-[50px] h-[66px] bg-line1 border border-line1`,children:[p(i,{placeholder:_(`loginClient.passwordPlaceholder`),type:D?`text`:`password`,name:`funhub-login-password`,value:T,onChange:e=>E(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`}),p(e,{type:`button`,className:`ml-[10px] cursor-pointer select-none bg-transparent !p-0 !px-0 !py-0`,"aria-label":_(D?`loginClient.hidePassword`:`loginClient.showPassword`),onClick:()=>O(e=>!e),children:p(D?s:c,{className:`w-[20px] h-[20px] text-text3`,"aria-hidden":`true`,focusable:`false`})})]})]}),p(n,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:S}),m(n,{className:`mt-auto flex flex-col items-center w-full pb-[55px]`,children:[m(n,{className:`flex items-center justify-center gap-2 flex-wrap mb-[16px] w-full`,children:[p(r,{checked:j,onCheckedChange:e=>M(e===!0),"aria-label":_(`loginClient.agreeToTerms`),className:`shrink-0`}),m(a,{as:`span`,className:`text-[14px] text-text2`,children:[_(`loginClient.agreeToTermsPrefix`),m(e,{type:`button`,variant:`link`,className:`inline text-theme6 !p-0 !h-auto font-normal underline-offset-2 hover:underline bg-transparent`,onClick:()=>P(`terms`),children:[`《`,_(`loginClient.userAgreement`),`》`]}),_(`loginClient.and`),m(e,{type:`button`,variant:`link`,className:`inline text-theme6 !p-0 !h-auto font-normal underline-offset-2 hover:underline bg-transparent`,onClick:()=>P(`privacy`),children:[`《`,_(`loginClient.privacyPolicy`),`》`]})]})]}),p(e,{type:`button`,onClick:L,disabled:!F,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:_(k?`loginClient.loggingIn`:`loginClient.login`)})]})]}),p(l,{type:N,onClose:()=>P(null)})]})}export{g as LoginClient};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{pUserSendEmailCode as t}from"../../../service/generated/client.mjs";import{Box as n}from"../../ui/box.mjs";import{Checkbox as r}from"../../ui/checkbox.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{useLoginModalStore as o}from"../../../store/modules/login-modal-store.mjs";import{LeftArrowIcon as s}from"../../../assets/icons/left-arrow-icon.mjs";import{AgreementDialog as c}from"./agreement-dialog.mjs";import{authGradientTextStyle as l,authPanelBackgroundStyle as u}from"./auth-page-styles.mjs";import{useMemo as d,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{useTranslations as h}from"next-intl";function g(g){let _=h(`components.pages.login`),{onClose:v,onLogin:y,onVerify:b}=g,{setVerifyStep:x}=o(),[S,C]=f(``),[w,T]=f(!1),[E,D]=f(``),[O,k]=f(!1),[A,j]=f(null),M=d(()=>S.trim().length>0&&O&&!w,[S,O,w]);function N(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function P(e){C(e),E&&D(``)}async function F(){if(M)try{T(!0),D(``);let e=S.trim();if(!N(e)){D(_(`register.invalidEmail`));return}await t({email:e}),x(`register-verify`),b?.(e)}catch(e){D(e.message??_(`register.sendFailed`))}finally{T(!1)}}return m(n,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:u,children:[m(n,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(safe-area-inset-top)+152px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[p(e,{type:`button`,variant:`ghost`,onClick:v,"aria-label":_(`register.back`),className:`absolute top-[calc(env(safe-area-inset-top)+12px)] left-[24px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:p(s,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),m(n,{className:`flex w-full flex-col`,children:[p(a,{className:`text-[28px] leading-[32px] font-medium text-[#E6E6E6]`,children:_(`loginClient.title`)}),p(a,{className:`mt-[16px] text-[14px] leading-[24px] text-[#E6E6E6]`,children:_(`loginClient.subtitle`)}),p(`form`,{className:`mt-[48px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),F()},children:p(n,{className:`flex h-[48px] items-center rounded-[8px] bg-white/10 px-[22px]`,children:p(i,{placeholder:_(`register.emailPlaceholder`),type:`email`,name:`funhub-register-email`,value:S,onChange:e=>P(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`})})}),!!E&&p(n,{className:`mt-[8px] min-h-[16px] text-[12px] leading-[16px] text-theme5`,children:E}),p(n,{className:`mt-[16px] flex items-center justify-between text-[14px] leading-[24px] text-[#9DA3AC]`,children:m(a,{as:`span`,className:`whitespace-nowrap`,children:[_(`register.hasAccount`),p(e,{type:`button`,variant:`link`,onClick:y,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] !no-underline hover:opacity-80 hover:!no-underline`,style:l,children:_(`register.loginLink`)})]})})]}),m(n,{className:`flex w-full flex-col`,children:[m(n,{className:`flex items-center`,children:[p(r,{checked:O,onCheckedChange:e=>k(e===!0),"aria-label":_(`loginClient.agreeToTerms`),className:`mt-px size-[16px] border-white/60 bg-transparent data-[checked]:border-theme5 data-[checked]:bg-theme5 data-[checked]:text-white`}),m(a,{as:`span`,className:`ml-[8px] text-[12px] leading-[16px] text-[#9DA3AC]`,children:[_(`loginClient.agreeToTermsPrefix`),m(e,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:l,onClick:()=>j(`terms`),children:[`《`,_(`loginClient.userAgreement`),`》`]}),_(`loginClient.and`),m(e,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:l,onClick:()=>j(`privacy`),children:[`《`,_(`loginClient.privacyPolicy`),`》`]})]})]}),p(e,{type:`button`,onClick:F,disabled:!M,className:`mt-[16px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${M?``:`!text-white/60`}`,style:{background:M?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:_(w?`register.sending`:`register.getCode`)})]})]}),p(c,{type:A,onClose:()=>j(null)})]})}export{g as Register};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{pUserSendEmailCode as t}from"../../../service/generated/client.mjs";import{Box as n}from"../../ui/box.mjs";import{Checkbox as r}from"../../ui/checkbox.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{useLoginModalStore as o}from"../../../store/modules/login-modal-store.mjs";import{LeftArrowIcon as s}from"../../../assets/icons/left-arrow-icon.mjs";import{AgreementDialog as c}from"./agreement-dialog.mjs";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m(m){let h=p(`components.pages.login`),{onClose:g,onLogin:_,onVerify:v}=m,{setVerifyStep:y}=o(),[b,x]=u(``),[S,C]=u(!1),[w,T]=u(``),[E,D]=u(!1),[O,k]=u(null),A=l(()=>b.trim().length>0&&E&&!S,[b,E,S]);function j(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function M(e){x(e),w&&T(``)}async function N(){if(A)try{C(!0),T(``);let e=b.trim();if(!j(e)){T(h(`register.invalidEmail`));return}await t({email:e}),y(`register-verify`),v?.(e)}catch(e){T(e.message??h(`register.sendFailed`))}finally{C(!1)}}return f(n,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[f(n,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[d(e,{type:`button`,onClick:g,"aria-label":h(`register.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:d(s,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),d(a,{className:`text-[14px] text-text2`})]}),f(n,{className:`px-[24px] flex flex-1 flex-col mt-[15px]`,children:[f(n,{className:`flex flex-col`,children:[d(a,{className:`text-[24px] leading-[32px] font-bold`,children:h(`register.title`)}),f(a,{className:`text-[14px] leading-[22px] mt-[12px] text-text1/80`,children:[h(`register.hasAccount`),`?`,d(e,{type:`button`,onClick:_,className:`cursor-pointer text-theme5 hover:opacity-90 bg-transparent !p-0 !px-0 !py-0`,children:h(`register.loginLink`)})]})]}),f(n,{className:`mt-[38px]`,children:[d(n,{className:`flex items-center px-[28px] rounded-[50px] h-[66px] bg-line1 border border-line1`,children:d(i,{placeholder:h(`register.emailPlaceholder`),type:`email`,name:`funhub-register-email`,value:b,onChange:e=>M(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`})}),d(n,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:w})]}),f(n,{className:`mt-auto flex flex-col items-center w-full pb-[55px]`,children:[f(n,{className:`flex items-center justify-center gap-2 flex-wrap mb-[16px] w-full`,children:[d(r,{checked:E,onCheckedChange:e=>D(e===!0),"aria-label":h(`loginClient.agreeToTerms`),className:`shrink-0`}),f(a,{as:`span`,className:`text-[14px] text-text2`,children:[h(`loginClient.agreeToTermsPrefix`),f(e,{type:`button`,variant:`link`,className:`inline text-theme6 !p-0 !h-auto font-normal underline-offset-2 hover:underline bg-transparent`,onClick:()=>k(`terms`),children:[`《`,h(`loginClient.userAgreement`),`》`]}),h(`loginClient.and`),f(e,{type:`button`,variant:`link`,className:`inline text-theme6 !p-0 !h-auto font-normal underline-offset-2 hover:underline bg-transparent`,onClick:()=>k(`privacy`),children:[`《`,h(`loginClient.privacyPolicy`),`》`]})]})]}),d(e,{type:`button`,onClick:N,disabled:!A,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:h(S?`register.sending`:`register.getCode`)})]})]}),d(c,{type:O,onClose:()=>k(null)})]})}export{m as Register};
@@ -1,2 +1,5 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{getCookie as t}from"../../../utils/common.mjs";import{pUserSendEmailCode as n,pUserSendResetPasswordEmailCode as r,pUserVerifyForgetEmailCode as i,pUserVerifyResetPasswordEmailCode as a}from"../../../service/generated/client.mjs";import{pUserRegisterByVerifyEmailCodeCompat as o}from"../../../service/register-by-verify-email-code.mjs";import{Box as s}from"../../ui/box.mjs";import{Text as c}from"../../ui/text.mjs";import{useLoginModalStore as l}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as u}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as d,useUserId as f}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as p}from"../../../assets/icons/left-arrow-icon.mjs";import{authPanelBackgroundStyle as m}from"./auth-page-styles.mjs";import{useCallback as h,useEffect as g,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as C}from"next-intl";function w(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function T(T){let E=C(`components.pages.login`),{email:D,onClose:O,onPassword:k}=T,{verifyStep:A,resolveLogin:j}=l(),[M,N]=y([,,,,,,].fill(``)),[P,F]=y(0),[I,L]=y(!1),[R,z]=y(60),[B,V]=y(!1),[H,U]=y(``),W=v(null),G=f(),K=d(),q=u(),J=_(()=>w(D),[D]),Y=h(async()=>{if(A===`reset-password`)return await a({user_id:G,email_code:M.join(``)});if(A===`forgot-password`)return await i({email:D,email_code:M.join(``)});if(A===`register-verify`){let e=await t(`guestUserId`);return await o({email:D,email_code:M.join(``),user_id:e})}throw Error(E(`verify.invalidCode`))},[A,M,G,D,E]),X=_(()=>M.every(e=>e!==``)&&!I,[M,I]);g(()=>{if(R<=0)return;let e=setInterval(()=>{z(e=>e-1)},1e3);return()=>clearInterval(e)},[R]),g(()=>{W.current?.focus()},[]);let Z=h(e=>{let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...M],r=t.split(``),i=P;for(let e of r)i<6&&(n[i]=e,i++);N(n),F(Math.min(i,5)),U(``)},[M,P]),Q=h(e=>{if(e.key===`Backspace`){e.preventDefault();let t=[...M];M[P]?t[P]=``:P>0&&(t[P-1]=``,F(P-1)),N(t),U(``)}else e.key===`ArrowLeft`&&P>0?F(P-1):e.key===`ArrowRight`&&P<5&&F(P+1)},[M,P]),$=h(e=>{F(e),W.current?.focus()},[]);async function ee(){if(!(R>0||B))try{V(!0),A===`reset-password`?await r({user_id:G}):await n({email:D}),z(60),U(``)}finally{V(!1)}}async function te(){if(X)try{L(!0);let e=await Y();if(A===`register-verify`){let t=e?.data;if(t?.user_id){K({token:t.token??``,expireTime:t.expire_time??0,userId:t.user_id}),S.success(E(`index.loginSuccess`)),q([`user-profile`,`mine`]),j(!0);return}}k?.(D)}catch(e){U(e.message??E(`verify.invalidCode`))}finally{L(!1)}}return b(s,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:m,children:x(s,{className:`relative z-[1] mx-auto min-h-screen w-full max-w-[390px] px-[32px] pt-[calc(env(safe-area-inset-top)+136px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[b(e,{type:`button`,variant:`ghost`,onClick:O,"aria-label":E(`verify.back`),className:`absolute top-[calc(env(safe-area-inset-top)+12px)] left-[16px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:b(p,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),x(s,{className:`w-full`,children:[b(s,{children:b(c,{className:`text-[28px] leading-[32px] font-medium text-text1`,children:E(`verify.title`)})}),x(s,{className:`mt-[6px]`,children:[b(c,{className:`ml-[4px] text-[14px] leading-[28px] text-white/60`,children:E(`verify.sentTo`)}),b(c,{className:`mt-[6px] text-[14px] leading-[28px] text-white/60`,children:J})]}),x(`form`,{className:`mt-[44px]`,onSubmit:e=>{e.preventDefault(),te()},children:[x(s,{className:`relative h-[50px]`,children:[b(`input`,{ref:W,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:Z,onKeyDown:Q,className:`absolute inset-0 opacity-0 pointer-events-none h-full w-full border-none bg-transparent text-base outline-none`,autoComplete:`one-time-code`}),b(s,{className:`flex w-full items-center justify-between`,children:M.map((e,t)=>b(s,{onClick:()=>$(t),className:`flex h-[50px] w-[50px] cursor-pointer items-center justify-center rounded-[8px] bg-white/10 transition-all duration-200 ${t===P?`ring-1 ring-white/25 bg-white/[0.14]`:``}`,children:b(c,{className:`select-none text-[28px] leading-none font-medium text-text1`,children:e})},t))})]}),!!H&&b(s,{className:`mt-[12px] text-[12px] leading-[16px] text-theme5`,children:H}),b(e,{type:`submit`,disabled:!X,className:`mt-[44px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${X?``:`!text-white/60`}`,style:{background:X?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:E(I?`verify.verifying`:`verify.nextStep`)}),b(e,{type:`button`,variant:`ghost`,onClick:ee,disabled:R>0||B,className:`mt-[16px] flex w-full items-center justify-center bg-transparent !p-0 text-[15px] leading-[24px] text-[#9DA3AC] hover:bg-transparent hover:text-text1 disabled:cursor-not-allowed disabled:opacity-100`,children:R>0?E(`verify.resendCountdown`,{seconds:R}):E(`verify.resend`)})]})]})]})})}export{T as Verify};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{getCookie as t}from"../../../utils/common.mjs";import{pUserSendEmailCode as n,pUserSendResetPasswordEmailCode as r,pUserVerifyForgetEmailCode as i,pUserVerifyResetPasswordEmailCode as a}from"../../../service/generated/client.mjs";import{pUserRegisterByVerifyEmailCodeCompat as o}from"../../../service/register-by-verify-email-code.mjs";import{Box as s}from"../../ui/box.mjs";import{Text as c}from"../../ui/text.mjs";import{useLoginModalStore as l}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as u}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as d,useUserId as f}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as p}from"../../../assets/icons/left-arrow-icon.mjs";import{useCallback as m,useEffect as h,useMemo as g,useRef as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";function C(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function w(w){let T=S(`components.pages.login`),{email:E,onClose:D,onPassword:O}=w,{verifyStep:k,resolveLogin:A}=l(),[j,M]=v([,,,,,,].fill(``)),[N,P]=v(0),[F,I]=v(!1),[L,R]=v(60),[z,B]=v(!1),[V,H]=v(``),U=_(null),W=f(),G=d(),K=u(),q=g(()=>C(E),[E]),J=m(async()=>{if(k===`reset-password`)return await a({user_id:W,email_code:j.join(``)});if(k===`forgot-password`)return await i({email:E,email_code:j.join(``)});if(k===`register-verify`){let e=await t(`guestUserId`);return await o({email:E,email_code:j.join(``),user_id:e})}throw Error(T(`verify.invalidCode`))},[k,j,W,E,T]),Y=g(()=>j.every(e=>e!==``)&&!F,[j,F]);h(()=>{if(L<=0)return;let e=setInterval(()=>{R(e=>e-1)},1e3);return()=>clearInterval(e)},[L]),h(()=>{U.current?.focus()},[]);let X=m(e=>{let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...j],r=t.split(``),i=N;for(let e of r)i<6&&(n[i]=e,i++);M(n),P(Math.min(i,5)),H(``)},[j,N]),Z=m(e=>{if(e.key===`Backspace`){e.preventDefault();let t=[...j];j[N]?t[N]=``:N>0&&(t[N-1]=``,P(N-1)),M(t),H(``)}else e.key===`ArrowLeft`&&N>0?P(N-1):e.key===`ArrowRight`&&N<5&&P(N+1)},[j,N]),Q=m(e=>{P(e),U.current?.focus()},[]);async function $(){if(!(L>0||z))try{B(!0),k===`reset-password`?await r({user_id:W}):await n({email:E}),R(60),H(``)}finally{B(!1)}}async function ee(){if(Y)try{I(!0);let e=await J();if(k===`register-verify`){let t=e?.data;if(t?.user_id){G({token:t.token??``,expireTime:t.expire_time??0,userId:t.user_id}),x.success(T(`index.loginSuccess`)),K([`user-profile`,`mine`]),A(!0);return}}O?.(E)}catch(e){H(e.message??T(`verify.invalidCode`))}finally{I(!1)}}return b(s,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[b(s,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[y(e,{type:`button`,onClick:D,"aria-label":T(`verify.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:y(p,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),y(c,{className:`text-[14px] text-text2`})]}),b(s,{className:`px-[24px] flex flex-col mt-[15px]`,children:[b(s,{className:`flex flex-col`,children:[y(c,{className:`text-[24px] leading-[32px] font-bold`,children:T(`verify.title`)}),b(s,{className:`mt-[12px] flex items-center`,children:[b(c,{className:`text-[14px] leading-[14px] text-text1/80`,children:[T(`verify.sentTo`),` `,q]}),y(e,{type:`button`,onClick:$,disabled:L>0||z,className:`ml-[8px] rounded-[19px] !px-[8px] !py-[8px] text-[12px] leading-[12px] cursor-pointer bg-line1 text-text1/80 disabled:cursor-not-allowed`,children:L>0?`${T(`verify.resend`)} (${L}s)`:T(`verify.resend`)})]})]}),b(`form`,{className:`mt-[38px]`,onSubmit:e=>{e.preventDefault(),ee()},children:[b(s,{className:`h-14 sm:h-16 md:h-20 relative`,children:[y(`input`,{ref:U,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:X,onKeyDown:Z,className:`absolute opacity-0 pointer-events-none w-full h-full border-none outline-none bg-transparent text-base caret-transparent`,autoComplete:`one-time-code`}),y(s,{className:`w-full flex justify-between items-center`,children:j.map((e,t)=>y(s,{onClick:()=>Q(t),className:`
3
+ w-14 h-14 sm:w-16 sm:h-16 md:w-20 md:h-20 rounded-xl border-2 flex items-center justify-center cursor-pointer transition-all duration-200
4
+ ${t===N?`border-theme3 bg-theme3`:`border-transparent bg-bg2`}
5
+ `,children:y(c,{className:`select-none font-semibold text-2xl sm:text-3xl leading-none text-text1`,children:e})},t))})]}),y(s,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:V}),y(e,{type:`submit`,disabled:!Y,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:T(F?`verify.verifying`:`verify.nextStep`)})]})]})]})}export{w as Verify};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gCommunityGetUserCollections as e}from"../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../utils/use-compatible-router.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import{useRequest as i}from"../../../../hooks/query/use-query.mjs";import a from"../../../ui/legacy/button.mjs";import o from"../../../../assets/icons/publish/publish_collection.mjs";import{CollectionCard as s}from"./collection-card.mjs";import{CollectionPopup as c}from"./collection-popup.mjs";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m({active:m,setActive:h}){let g=p(`components.pages.publish.components`),[_,v]=u([]),[y,b]=u(!1),x=t(),{data:S=[]}=i([`publish`,`collection-list`,`preview`,3],async()=>(await e({page:1,page_size:3})).data?.data?.collections??[]);function C(e){v(t=>t.some(t=>t.collection_id===e.collection_id)?t:[e,...t]),h(e.collection_id??``)}let w=l(()=>{let e=new Set,t=[];for(let n of[..._,...S]){let r=n.collection_id??``;if(!(!r||e.has(r))&&(e.add(r),t.push(n),t.length>=3))break}return t},[_,S]);return f(n,{children:[f(n,{className:`flex justify-between items-center px-[16px] py-[12px]`,children:[d(r,{className:`text-[14px] text-text1`,children:g(`collection.syncToCollection`)}),d(a,{type:`button`,className:`!text-[12px] text-theme5 bg-[rgba(253,76,94,.1)] rounded-[20px] w-[64px] h-[24px] px-[8px] py-[4px]`,onClick:()=>b(!0),children:g(`collection.moreCollections`)})]}),f(n,{className:`flex gap-[8px] px-[16px] pb-[12px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:[w.map(e=>d(s,{item:e,active:e.collection_id===m,onClick:()=>h(e.collection_id===m?``:e.collection_id??``)},e.collection_id)),f(a,{className:`flex w-[226px] h-[70px] shrink-0 items-center gap-[12px] rounded-[8px] px-[12px] py-[10px] bg-bg1`,onClick:()=>x.push(`/collection/create?type=publish`),children:[d(o,{width:52,height:52}),d(n,{className:`flex flex-1 flex-col overflow-hidden gap-[4px]`,children:d(r,{className:`text-[14px] text-text2 text-left`,children:g(`collection.createCollection`)})})]})]}),d(c,{open:y,onOpenChange:b,onSelect:C})]})}export{m as Collection};
2
+ "use client";import{gCommunityGetUserCollections as e}from"../../../../service/generated/client.mjs";import{useRouter as t}from"../../../../utils/use-compatible-router.mjs";import{Box as n}from"../../../ui/box.mjs";import{Text as r}from"../../../ui/text.mjs";import i from"../../../ui/legacy/button.mjs";import{useRequest as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/publish/publish_collection.mjs";import{CollectionCard as s}from"./collection-card.mjs";import{CollectionPopup as c}from"./collection-popup.mjs";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useTranslations as p}from"next-intl";function m({active:m,setActive:h}){let g=p(`components.pages.publish.components`),[_,v]=u([]),[y,b]=u(!1),x=t(),{data:S=[]}=a([`publish`,`collection-list`,`preview`,3],async()=>(await e({page:1,page_size:3})).data?.data?.collections??[]);function C(e){v(t=>t.some(t=>t.collection_id===e.collection_id)?t:[e,...t]),h(e.collection_id??``)}let w=l(()=>{let e=new Set,t=[];for(let n of[..._,...S]){let r=n.collection_id??``;if(!(!r||e.has(r))&&(e.add(r),t.push(n),t.length>=3))break}return t},[_,S]);return f(n,{children:[f(n,{className:`flex justify-between items-center px-[16px] py-[12px]`,children:[d(r,{className:`text-[14px] text-text1`,children:g(`collection.syncToCollection`)}),d(i,{type:`button`,className:`!text-[12px] text-theme5 bg-[rgba(253,76,94,.1)] rounded-[20px] w-[64px] h-[24px] px-[8px] py-[4px]`,onClick:()=>b(!0),children:g(`collection.moreCollections`)})]}),f(n,{className:`flex gap-[8px] px-[16px] pb-[12px] overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden`,children:[w.map(e=>d(s,{item:e,active:e.collection_id===m,onClick:()=>h(e.collection_id===m?``:e.collection_id??``)},e.collection_id)),f(i,{className:`flex w-[226px] h-[70px] shrink-0 items-center gap-[12px] rounded-[8px] px-[12px] py-[10px] bg-bg1`,onClick:()=>x.push(`/collection/create?type=publish`),children:[d(o,{width:52,height:52}),d(n,{className:`flex flex-1 flex-col overflow-hidden gap-[4px]`,children:d(r,{className:`text-[14px] text-text2 text-left`,children:g(`collection.createCollection`)})})]})]}),d(c,{open:y,onOpenChange:b,onSelect:C})]})}export{m as Collection};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as r}from"../../../service/generated/client.mjs";import{useRouter as i}from"../../../utils/use-compatible-router.mjs";import{Box as a}from"../../ui/box.mjs";import{Popover as o,PopoverContent as s,PopoverTrigger as c}from"../../ui/popover.mjs";import{useRequest as l}from"../../../hooks/query/use-query.mjs";import{eventKey as u}from"../../../constants/event-key.mjs";import{useSearchHistory as d}from"../../../hooks/use-search-history.mjs";import{SearchHistoryClient as f}from"../../biz/business/search-history/client.mjs";import p from"../../../assets/icons/search/filter.mjs";import m from"./hot-recommend.mjs";import h from"./hot-search.mjs";import{SEARCH_RESULT_SORT_OPTIONS as g}from"./search-result/shared.mjs";import _ from"./search-result/index.mjs";import v from"./top-header.mjs";import{memo as y,useEffect as b,useMemo as x,useState as S}from"react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{usePathname as T,useSearchParams as E}from"next/navigation";import{useTranslations as D}from"next-intl";const O=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.user`,value:`user`}],k=y(({searchType:e,sort:t,tabList:n,onChange:r,onSortChange:i})=>{let[l,u]=S(!1);return w(a,{as:`nav`,className:`sticky top-[66px] z-40 flex items-center justify-between bg-[linear-gradient(180deg,rgba(6,3,21,0.98)_0%,rgba(6,3,21,0.88)_100%)] px-[16px] pb-[24px] pt-[23px] backdrop-blur-[16px]`,children:[C(a,{className:`flex items-center gap-[10px]`,children:n.map(t=>C(`button`,{type:`button`,className:`text-[16px] leading-[22px] transition-colors ${e===t.value?`font-medium text-white`:`font-normal text-white/80`}`,onClick:()=>{e!==t.value&&r(t.value)},children:t.label},t.value))}),w(o,{open:l,onOpenChange:u,children:[C(c,{"aria-label":`排序筛选`,className:`flex size-[24px] items-center justify-center text-white/70`,children:C(p,{className:`size-[20px]`})}),C(s,{side:`bottom`,align:`end`,sideOffset:8,className:`w-[132px] border border-white/10 bg-[#10071E]/95 p-[8px] backdrop-blur-[18px]`,children:C(a,{className:`flex flex-col gap-[4px]`,children:g.map(e=>C(`button`,{type:`button`,className:`rounded-[8px] px-[12px] py-[8px] text-left text-[14px] leading-[20px] ${e.value===t?`bg-white/10 text-white`:`text-white/70`}`,onClick:()=>{i(e.value),u(!1)},children:e.label},e.value))})})]})]})});k.displayName=`SearchResultTabs`;function A(){let o=D(`components.pages.search.pageClient`),{userInfo:s}=n(),c=s?.user_id||`guest`,p=E(),y=T(),A=i(),j=p.get(`q`)?.toString()||``,{data:M,refetch:N}=l([`hotSearchKey`],()=>r({user_id:c})),P=x(()=>M?.data?.recommend_list??[],[M]),[F,I]=S(j),[L,R]=S(j),[z,B]=S(0),[V,H]=S(O[0].value),[U,W]=S(g[0].value),[G,K]=S(0),{history:q,addHistory:J}=d({storageKey:c}),Y=x(()=>O.map(e=>({value:e.value,label:o(e.labelKey)})),[o]),X=x(()=>F.trim()===``?P.length>0||q.length>0||F.trim()===``:!1,[q.length,P.length,F]),Z=x(()=>F.trim()!==``&&!X,[F,X]);return b(()=>(t.on(u.EXCHANGE_SEARCH_TYPE,H),()=>{t.off(u.EXCHANGE_SEARCH_TYPE,H)}),[]),w(a,{className:`min-h-screen w-full bg-[radial-gradient(79.9%_42.18%_at_50%_0%,rgba(71,20,126,0.95)_0%,rgba(14,6,32,0.98)_42%,#05010F_100%)] pb-[24px]`,children:[C(v,{setSearchInputVal:t=>{t!==F&&(I(t),e({q:t}))},initInputVal:L,initInputVersion:z,addSearchHistory:J}),X&&w(a,{className:`w-full pt-[8px]`,children:[q.length>0&&C(f,{title:o(`searchHistory`),rows:2,storageKey:c,onHistoryClick:e=>{R(e),B(e=>e+1);let t=new URLSearchParams(p.toString());t.set(`q`,e),A.push(`${y}?${t.toString()}`)}}),C(h,{initHotSearchKeywordList:P,onRefreshHotKey:async()=>(await N()).data??{code:0,message:``,data:{recommend_list:[]}},onClick:e=>{R(e.title||``),B(e=>e+1),J(e.title)}})]}),C(m,{isShow:F.trim()===``}),Z&&w(a,{className:`relative mt-[8px] min-h-[calc(100vh-74px)] overflow-hidden rounded-t-[16px] bg-[linear-gradient(180deg,rgba(6,3,21,0.9)_19.905%,rgba(6,3,21,0)_100%)] backdrop-blur-[2px]`,children:[C(k,{searchType:V,sort:U,tabList:Y,onChange:e=>{H(e)},onSortChange:e=>{W(e),K(e=>e+1)}}),C(_,{inputVal:F,searchType:V,sort:U,refreshVersion:G},`${V}-${F}-${U}-${G}`)]})]})}export{A as default};
2
+ "use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as r}from"../../../service/generated/client.mjs";import{useRouter as i}from"../../../utils/use-compatible-router.mjs";import{Text as a}from"../../ui/text.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{eventKey as s}from"../../../constants/event-key.mjs";import{useSearchHistory as c}from"../../../hooks/use-search-history.mjs";import{SearchHistoryClient as l}from"../../biz/business/search-history/client.mjs";import u from"./hot-recommend.mjs";import d from"./hot-search.mjs";import f from"./search-result/index.mjs";import p from"./top-header.mjs";import{memo as m,useEffect as h,useMemo as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{usePathname as x,useSearchParams as S}from"next/navigation";import{useTranslations as C}from"next-intl";const w=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.post`,value:`info`},{labelKey:`tabs.user`,value:`user`}],T=m(({searchType:e,onChange:t,tabList:n})=>y(`nav`,{className:`w-full h-[42px] bg-bg1 flex items-center px-[3px] sticky top-[53px] left-0 z-50`,children:n.map(n=>y(a,{className:`h-[30px] rounded-[15px] leading-[30px] px-[9px] text-[16px] bg-transparent transition-all duration-150 ${e===n.value?`text-theme5 !text-[20px] font-bold`:`text-text2`}`,onClick:()=>{e!==n.value&&t(n.value)},children:n.label},n.value))}));function E(){let a=C(`components.pages.search.pageClient`),{userInfo:m}=n(),E=m?.user_id||`guest`,D=S(),O=x(),k=i(),A=D.get(`q`)?.toString()||``,{data:j,refetch:M}=o([`hotSearchKey`],()=>r({user_id:E})),N=g(()=>j?.data?.recommend_list??[],[j]),[P,F]=_(A),I=g(()=>w.map(e=>({value:e.value,label:a(e.labelKey)})),[a]),[L,R]=_(A),[z,B]=_(0),[V,H]=_(w[0].value),[,U]=_([]),{history:W,addHistory:G}=c({storageKey:E}),K=g(()=>P.trim()===``?N.length>0||W.length>0||P.trim()===``:!1,[N,P,W]),q=g(()=>P.trim()!==``&&!K,[P,K]);return h(()=>(t.on(s.EXCHANGE_SEARCH_TYPE,H),()=>{t.off(s.EXCHANGE_SEARCH_TYPE,H)}),[H]),b(`div`,{className:`w-full min-h-screen bg-bg1 pb-[12px]`,children:[y(p,{setSearchInputVal:t=>{t!==P&&(U([]),F(t),e({q:t}))},initInputVal:L,initInputVersion:z,addSearchHistory:G}),K&&b(`div`,{className:`w-full pt-[8px]`,children:[W.length>0&&y(l,{title:a(`searchHistory`),rows:2,storageKey:E,onHistoryClick:e=>{R(e),B(e=>e+1);let t=new URLSearchParams(D.toString());t.set(`q`,e),k.push(`${O}?${t.toString()}`)}}),y(d,{initHotSearchKeywordList:N,onRefreshHotKey:async()=>(await M()).data??{code:0,message:``,data:{recommend_list:[]}},onClick:e=>{R(e.title||``),B(e=>e+1),G(e.title)}})]}),y(u,{isShow:P.trim()===``}),q&&b(v,{children:[y(T,{searchType:V,tabList:I,onChange:e=>{H(e),U([])}}),y(f,{inputVal:P,searchType:V},`${V}-${P}`)]})]})}export{E as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"./search-user.mjs";import t from"./search-video-info.mjs";import n from"./search-all.mjs";import{jsx as r}from"react/jsx-runtime";function i({searchType:i,inputVal:a,sort:o,refreshVersion:s}){return i===`user`?r(e,{inputVal:a,sort:o,refreshVersion:s}):i===`all`?r(n,{searchInputVal:a,sort:o,refreshVersion:s}):r(t,{inputVal:a,sort:o,refreshVersion:s})}export{i as default};
2
+ "use client";import e from"./search-user.mjs";import t from"./search-video-info.mjs";import n from"./search-all.mjs";import{jsx as r}from"react/jsx-runtime";function i({searchType:i,inputVal:a}){return i===`user`?r(e,{inputVal:a}):i===`all`?r(n,{inputVal:a}):r(t,{searchType:i,inputVal:a})}export{i as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import e from"../../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as t}from"../../../../service/generated/client.mjs";import{gContentGetRecommendVideoListKey as n}from"../../../../service/generated/tanstack.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{Skeleton as o}from"../../../ui/skeleton.mjs";import{useRequest as s}from"../../../../hooks/query/use-query.mjs";import{eventKey as c}from"../../../../constants/event-key.mjs";import{SearchUserRowCard as l}from"./search-user.mjs";import{SearchVideoWaterfall as u}from"./search-video-info.mjs";import{useEffect as d,useMemo as f,useState as p}from"react";import{ChevronDown as m}from"lucide-react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";function v(e,t){return JSON.stringify({type:1,keywords:e,sort:t})}function y(){return g(r,{className:`w-full`,children:[h(r,{className:`px-[16px]`,children:h(r,{className:`flex flex-col gap-[12px]`,children:Array.from({length:2}).map((e,t)=>g(r,{className:`flex h-[88px] items-center gap-[8px] rounded-[8px] bg-white/8 px-[12px] py-[8px]`,children:[h(o,{className:`size-[56px] rounded-full bg-white/10`}),g(r,{className:`min-w-0 flex-1`,children:[h(o,{className:`h-[20px] w-[96px] rounded-[4px] bg-white/10`}),h(o,{className:`mt-[6px] h-[20px] w-full rounded-[4px] bg-white/10`}),h(o,{className:`mt-[6px] h-[20px] w-[120px] rounded-[4px] bg-white/10`})]}),h(o,{className:`h-[24px] w-[64px] rounded-full bg-white/10`})]},`search-all-user-skeleton-${t}`))})}),g(r,{className:`mt-[32px] flex w-full gap-[15px] px-[16px]`,children:[g(r,{className:`flex min-w-0 flex-1 flex-col gap-[16px]`,children:[h(o,{className:`h-[218px] w-full rounded-[8px] bg-white/8`}),h(o,{className:`h-[120px] w-full rounded-[8px] bg-white/8`})]}),g(r,{className:`flex min-w-0 flex-1 flex-col gap-[16px]`,children:[h(o,{className:`h-[120px] w-full rounded-[8px] bg-white/8`}),h(o,{className:`h-[218px] w-full rounded-[8px] bg-white/8`})]})]})]})}function b({searchInputVal:o,sort:b,refreshVersion:x}){let S=_(`components.pages.search.searchResult`),[C,w]=p(!1),[T,E]=p({});d(()=>{w(!1),E({})},[x,o,b]);let D=f(()=>v(o,b),[o,b]),{data:O,isFetching:k,isLoading:A}=s(f(()=>[...n({data_type:2,extra_params:D,page:1,page_size:10}),x],[x,D]),async()=>(await t({data_type:2,extra_params:D,page:1,page_size:10})).data??{}),j=f(()=>O?.users?.list??[],[O]),M=f(()=>j.map(e=>{let t=String(e.user_id||``).trim();return!t||T[t]===void 0?e:{...e,is_following:T[t]}}),[T,j]),N=f(()=>O?.videos?.list??[],[O]),P=f(()=>C?M:M.slice(0,2),[C,M]),F=!C&&M.length>2,I=!!((A||k)&&M.length===0&&N.length===0),L=!k&&M.length===0&&N.length===0;return I?h(y,{}):L?h(i,{type:`nodata`,text:S(`searchAll.emptyResult`),className:`!pt-[72px]`}):g(r,{className:`w-full pb-[24px]`,children:[P.length>0&&g(r,{className:`px-[16px]`,children:[h(r,{className:`flex flex-col gap-[12px]`,children:P.map((e,t)=>h(l,{item:e,onFollowChange:t=>{let n=String(e.user_id||``).trim();n&&E(e=>({...e,[n]:t?1:0}))}},String(e.user_id??t)))}),F&&g(`button`,{type:`button`,className:`mt-[12px] flex h-[48px] w-full items-center justify-center gap-[4px] rounded-[8px] bg-[linear-gradient(180deg,#15041B_8.824%,#250561_113.72%)] text-white/70 backdrop-blur-[4px]`,onClick:()=>w(!0),children:[h(a,{className:`text-[14px] leading-[20px]`,children:`展开全部`}),h(m,{className:`size-[16px]`,strokeWidth:1.5})]})]}),N.length>0&&h(u,{list:N,title:`相似推荐`,onMoreClick:()=>{e.emit(c.EXCHANGE_SEARCH_TYPE,`video`)},sectionClassName:P.length>0?`mt-[32px] w-full`:`w-full`})]})}export{b as default};
2
+ "use client";import e from"../../../../utils/event-bus.mjs";import{gContentGetRecommendVideoList as t}from"../../../../service/generated/client.mjs";import{Box as n}from"../../../ui/box.mjs";import{List as r}from"../../../ui/list.mjs";import{usePaginated as i,useRefetchQuery as a,useRequest as o,useUpdateRequest as s}from"../../../../hooks/query/use-query.mjs";import{eventKey as c}from"../../../../constants/event-key.mjs";import{UserActivityList as l}from"../../../common/list/user-activity-list/user-activity-list.mjs";import{UserList as u}from"./search-user.mjs";import{mapRecommendContentToUserActivityItem as d}from"../search-utils.mjs";import{VideoList as f}from"./search-video-info.mjs";import{useCallback as p,useMemo as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";function y({inputVal:y}){let b=v(`components.pages.search.searchResult`),{data:x=[]}=o([`searchByKeyForAll`,y,3],async()=>(await t({data_type:2,extra_params:JSON.stringify({type:3,keywords:y}),page:1,page_size:5})).data.videos?.list),S=[`searchByKeyForAll`,y,4],{data:C=[]}=o(S,async()=>(await t({data_type:2,extra_params:JSON.stringify({type:4,keywords:y}),page:1,page_size:5})).data.users?.list),w=m(()=>[`searchByKeyForAll`,y,2],[y]),T=p(async e=>await t({data_type:2,extra_params:JSON.stringify({type:2,keywords:y}),page:e||1,page_size:10}),[y,10]),E=i({key:w,initialPageParam:1,async queryFn(e){return(await T(e))?.data?.contents??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),D=m(()=>E.data?.pages.flatMap(e=>e.list??[])??[],[E.data?.pages]),O=async e=>{if(e!==!1)try{E&&await E.fetchNextPage()}catch(e){console.error(`获取信息列表失败`,e)}},k=s(),A=s(),j=a(),M=e=>{k(S,t=>e)},N=p(e=>{A(w,t=>{if(!t)return t;let n=t.pages.map(t=>({...t,list:(t.list??[]).map(t=>t.content_id===e.content_id?e:t)}));return{...t,pages:n}})},[w,A]),P=p(()=>{j(w)},[w,j]),F=p(e=>({...d(e),onLikeSuccess(t){N({...e,like_count:String(t.count),dislike_count:t.dislikeCount===void 0?e.dislike_count:String(t.dislikeCount),interaction:{...e.interaction,is_liked:t.isLiked,is_dislike:t.isDisliked??e.interaction?.is_dislike}})},onDislikeSuccess(t){N({...e,like_count:t.likeCount===void 0?e.like_count:String(t.likeCount),dislike_count:String(t.count),interaction:{...e.interaction,is_dislike:t.isDisliked,is_liked:t.isLiked??e.interaction?.is_liked}})}}),[N]),I=m(()=>D.map(F),[F,D]),L=m(()=>D.length===0&&!E.hasNextPage&&x.length===0&&C.length===0,[D.length,E.hasNextPage,C.length,x.length]),R=m(()=>x.length===0&&C.length===0,[C.length,x.length]);return L?g(n,{className:`w-full pt-[12px]`,children:g(r,{loading:E.isFetching,loadMore:O,hasMore:E.hasNextPage,empty:`nodata`,emptyText:b(`searchAll.emptyResult`),children:[]})}):_(n,{className:`w-full pt-[12px] ${R?`!pt-0`:``}`,children:[C.length>0&&g(u,{list:C,onUpdate:M}),x.length>0&&_(h,{children:[g(f,{list:x}),_(n,{className:`w-fit h-[46px] leading-[46px] mx-auto mt-[-12px] text-[14px] text-text2`,onClick:()=>{e.emit(c.EXCHANGE_SEARCH_TYPE,`video`)},children:[b(`searchAll.more`),` `,y,` `,b(`searchAll.relatedSuffix`)]})]}),I.length>0&&g(n,{className:`w-full`,children:g(l,{list:I,loading:E.isFetching,loadMore:O,hasMore:E.hasNextPage,emptyText:b(`searchAll.emptyResult`),showGroupHeaders:!1,onActionSuccess:P})})]})}export{y as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as t,pInteractionFollow as n,pInteractionUnfollow as r}from"../../../../service/generated/client.mjs";import{Image as i}from"../../../ui/image.mjs";import{Box as a}from"../../../ui/box.mjs";import{EmptyState as o}from"../../../ui/empty.mjs";import{InfiniteScroll as s}from"../../../ui/infinite-scroll.mjs";import{Text as c}from"../../../ui/text.mjs";import{Skeleton as l}from"../../../ui/skeleton.mjs";import{usePaginated as u}from"../../../../hooks/query/use-query.mjs";import{useRequireLogin as d}from"../../../../hooks/use-auth.mjs";import f from"../../../../assets/images/user/default_avatar.mjs";import{formatSearchFollowerCount as p,resolveSearchUserDescription as m,resolveSearchUserName as h}from"./shared.mjs";import{memo as g,useCallback as _,useEffect as v,useMemo as y,useState as b}from"react";import{Check as x,Plus as S}from"lucide-react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{toast as T}from"sonner";import{useTranslations as E}from"next-intl";import D from"next/link";const O=typeof f==`string`?f:f.src;function k(e,t){return String(t||e?.user_id||e?.userId||``).trim()}function A({src:e,alt:t,variant:n}){let r=n===`row`?`size-[56px] p-[4px]`:`size-[40px] p-[3px]`,o=n===`row`?`border-[3px]`:`border-[2px]`;return C(a,{className:`rounded-full bg-white/20 ${r}`,children:C(a,{className:`relative size-full overflow-hidden rounded-full border-solid border-white/40 ${o}`,children:C(i,{src:e||O,fill:!0,objectFit:`cover`,alt:t})})})}function j({item:t,variant:i,onFollowChange:a}){let o=d(),{userInfo:s,userId:l}=e(),[u,f]=b(!1),p=k(s,l),m=p!==``&&p===String(t.user_id||``).trim(),h=!!t.is_following,g=_(()=>{!t.user_id||u||o(()=>{let i=k(e.getState().userInfo,e.getState().userId);if(!i){T.error(`请先登录`);return}(async()=>{f(!0);try{let e=h?await r({follower_id:i,followee_id:t.user_id}):await n({follower_id:i,followee_id:t.user_id});if(e.code!==0){T.error(e.message||(h?`取消关注失败`:`关注失败`));return}a?.(!h)}catch(e){console.error(`切换关注状态失败`,e),T.error(h?`取消关注失败`:`关注失败`)}finally{f(!1)}})()})},[h,t.user_id,a,u,o]);return m?null:i===`grid`?C(`button`,{type:`button`,"aria-label":h?`取消关注`:`关注`,className:`flex size-[24px] shrink-0 items-center justify-center rounded-full transition-opacity ${h?`bg-white/15 text-white`:`bg-black/30 text-white/75`} ${u?`opacity-50`:``}`,onClick:g,children:C(h?x:S,{className:`size-[14px]`})}):w(`button`,{type:`button`,className:`flex h-[24px] shrink-0 items-center justify-center rounded-full transition-opacity ${h?`border border-white/25 bg-white/10 px-[8px] text-white/85`:`border border-white/60 bg-black/20 pl-[4px] pr-[8px] text-white/70`} ${u?`opacity-50`:``}`,onClick:g,children:[!h&&C(S,{className:`mr-[2px] size-[16px]`}),C(c,{className:h?`text-[12px] leading-[18px]`:`text-[14px] leading-[20px]`,children:h?`已关注`:`关注`})]})}const M=g(({item:e,onFollowChange:t})=>{let n=h(e),r=m(e),i=p(e.follower_count);return w(a,{className:`flex h-[88px] w-full items-center gap-[8px] rounded-[8px] bg-white/10 px-[12px] py-[8px]`,children:[w(D,{href:`/profile/${e.user_id||``}`,className:`flex min-w-0 flex-1 items-center gap-[8px]`,children:[C(A,{src:e.avatar,alt:n||`用户头像`,variant:`row`}),w(a,{className:`min-w-0 flex-1`,children:[C(c,{className:`block truncate text-[14px] leading-[20px] font-medium text-white`,children:n}),C(c,{className:`mt-[2px] block truncate text-[14px] leading-[20px] text-white/60`,children:r}),w(c,{className:`mt-[2px] block truncate text-[14px] leading-[20px] text-white/60`,children:[`粉丝:`,i]})]})]}),C(j,{item:e,variant:`row`,onFollowChange:t})]})});M.displayName=`SearchUserRowCard`;const N=g(({item:e,onFollowChange:t})=>{let n=h(e),r=m(e);return w(a,{className:`h-[170px] rounded-[8px] bg-white/10 px-[16px] py-[16px]`,children:[w(a,{className:`flex items-start justify-between`,children:[C(D,{href:`/profile/${e.user_id||``}`,className:`flex items-center`,children:C(A,{src:e.avatar,alt:n||`用户头像`,variant:`grid`})}),C(j,{item:e,variant:`grid`,onFollowChange:t})]}),w(D,{href:`/profile/${e.user_id||``}`,className:`mt-[16px] block`,children:[C(c,{className:`block truncate text-[14px] leading-[20px] font-medium text-white`,children:n}),C(c,{className:`mt-[8px] block text-[14px] leading-[20px] text-white/60 line-clamp-4`,children:r})]})]})});N.displayName=`SearchUserGridCard`;function P(){return C(a,{className:`grid grid-cols-2 gap-[16px] px-[16px]`,children:Array.from({length:6}).map((e,t)=>w(a,{className:`h-[170px] rounded-[8px] bg-white/8 px-[16px] py-[16px]`,children:[w(a,{className:`flex items-start justify-between`,children:[C(l,{className:`size-[40px] rounded-full bg-white/10`}),C(l,{className:`size-[24px] rounded-full bg-white/10`})]}),C(l,{className:`mt-[16px] h-[20px] w-[86px] rounded-[4px] bg-white/10`}),C(l,{className:`mt-[8px] h-[20px] w-full rounded-[4px] bg-white/10`}),C(l,{className:`mt-[6px] h-[20px] w-[90%] rounded-[4px] bg-white/10`}),C(l,{className:`mt-[6px] h-[20px] w-[72%] rounded-[4px] bg-white/10`})]},`search-user-grid-skeleton-${t}`))})}const F=g(({inputVal:e,sort:n,refreshVersion:r})=>{let i=E(`components.pages.search.searchResult`),[c,l]=b({});v(()=>{l({})},[e,r,n]);let d=_(async r=>await t({data_type:2,extra_params:JSON.stringify({type:4,keywords:e,sort:n}),page:r||1,page_size:20}),[e,n]),f=u({key:y(()=>[`search-result`,`user`,e,n,r],[e,r,n]),initialPageParam:1,async queryFn(e){return(await d(e))?.data?.users??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),p=y(()=>(f.data?.pages??[]).flatMap(e=>e.list??[]).map(e=>{let t=String(e.user_id||``).trim();return!t||c[t]===void 0?e:{...e,is_following:c[t]}}),[c,f.data?.pages]),m=!!((f.isPending||f.isFetching)&&p.length===0),h=_((e,t)=>{e&&l(n=>({...n,[e]:t?1:0}))},[]),g=_(async()=>{try{await f.fetchNextPage()}catch(e){console.error(`获取用户搜索结果失败`,e)}},[f]);return m?C(P,{}):p.length===0?C(o,{type:`nodata`,text:i(`searchUser.emptyResult`),className:`!pt-[72px]`}):w(a,{className:`w-full pb-[24px]`,children:[C(a,{className:`grid grid-cols-2 gap-[16px] px-[16px]`,children:p.map((e,t)=>C(N,{item:e,onFollowChange:t=>{h(String(e.user_id||``),t)}},String(e.user_id??t)))}),f.hasNextPage&&C(s,{loadMore:async e=>g(),hasMore:f.hasNextPage,className:`w-full`})]})});F.displayName=`SearchUser`;export{M as SearchUserRowCard,F as default};
2
+ "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as t}from"../../../../service/generated/client.mjs";import{Image as n}from"../../../ui/image.mjs";import{Box as r}from"../../../ui/box.mjs";import{Item as i}from"../../../ui/item.mjs";import{List as a}from"../../../ui/list.mjs";import{Skeleton as o}from"../../../ui/skeleton.mjs";import{usePaginated as s,useUpdateRequest as c}from"../../../../hooks/query/use-query.mjs";import{useRequireLogin as l}from"../../../../hooks/use-auth.mjs";import{FollowButton as u}from"../../(follow)/_components/follow-button/index.mjs";import{memo as d,useCallback as f,useMemo as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";import _ from"next/link";function v(){return m(r,{className:`w-full px-[12px] pt-[12px]`,children:Array.from({length:6}).map((e,t)=>h(r,{className:`w-full h-[56px] flex items-center justify-between mb-[12px]`,children:[h(r,{className:`flex items-center`,children:[m(o,{className:`w-[56px] h-[56px] rounded-[28px]`}),h(r,{className:`ml-[8px]`,children:[m(o,{className:`w-[120px] h-[18px] mb-[8px]`}),m(o,{className:`w-[72px] h-[14px]`})]})]}),m(o,{className:`w-[76px] h-[34px] rounded-[18px]`})]},`search-user-skeleton-${t}`))})}const y=d(({item:t,onUpdate:i})=>{let a=g(`components.pages.search.searchResult`),{userInfo:o}=e(),s=f(e=>{i({...t,is_following:e?1:0})},[t,i]);return h(r,{className:`w-full h-[56px] bg-bg1 flex flex-row items-center justify-between mb-[12px]`,children:[h(_,{className:`cursor-pointer flex flex-row items-center justify-center`,href:`/profile/${t.user_id}`,children:[m(r,{className:`w-[56px] h-[56px] rounded-[28px] overflow-hidden bg-bg2 relative`,children:m(n,{src:t.avatar||``,fill:!0,objectFit:`cover`,alt:t.nick_name})}),h(r,{className:`flex flex-col ml-[8px]`,children:[m(`span`,{className:`text-text1 text-[16px] leading-[24px] h-[24px] font-bold overflow-hidden max-w-[200px] line-clamp-1`,children:t.nick_name}),h(`span`,{className:`text-text2 leading-[22px] text-[14px]`,children:[t.follower_count??0,a(`searchUser.followersSuffix`)]})]})]}),o.user_id!==t.user_id&&m(u,{userId:t.user_id,hasFollow:!!t.is_following,onChange:s})]})});y.displayName=`UserItem`;const b=d(({list:e,onUpdate:t})=>{let n=l(),i=f(n=>{let r=e.findIndex(e=>e.user_id===n.user_id);if(r!==-1){let i=[...e];i[r]=n,t(i)}},[e,t]);return m(r,{className:`px-[12px]`,children:e.map((e,t)=>m(y,{item:e,onUpdate:e=>{n(()=>{i(e)})}},String(e.user_id??t)))})});b.displayName=`UserList`;const x=d(({inputVal:e})=>{let n=g(`components.pages.search.searchResult`),o=l(),u=f(async n=>await t({data_type:2,extra_params:JSON.stringify({type:4,keywords:e}),page:n||1,page_size:20}),[e,20]),d=p(()=>[`searchByKeyForUser`,e,4],[e]),h=s({key:d,initialPageParam:1,async queryFn(e){return(await u(e))?.data?.users??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),_=c(),b=f((e,t)=>{e&&_(d,n=>{if(n){let r=n.pages.map(n=>({...n,list:(n.list??[]).map(n=>n.user_id===e?{...n,is_following:t?1:0}:n)}));return{...n,pages:r}}return n})},[_,d]),x=h.data?.pages.flatMap(e=>e.list??[])??[],S=h.isPending||h.isFetching;return S&&x.length===0?m(v,{}):m(r,{className:`w-full px-[12px] pt-[12px]`,children:m(a,{loading:S,hasMore:h.hasNextPage??!1,loadMore:async e=>{if(e!==!1)try{h&&await h.fetchNextPage()}catch(e){console.error(`获取用户列表失败`,e)}},empty:`nodata`,emptyText:n(`searchUser.emptyResult`),children:x.map((e,t)=>m(i,{children:m(y,{item:e,onUpdate:e=>{o(()=>{b(e.user_id||``,!!e.is_following)})}})},String(e.user_id??t)))})})});export{b as UserList,x as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{gContentGetRecommendVideoList as e}from"../../../../service/generated/client.mjs";import{Box as t}from"../../../ui/box.mjs";import{EmptyState as n}from"../../../ui/empty.mjs";import{InfiniteScroll as r}from"../../../ui/infinite-scroll.mjs";import{Skeleton as i}from"../../../ui/skeleton.mjs";import{usePaginated as a}from"../../../../hooks/query/use-query.mjs";import o from"../../../../assets/icons/common/right_arrow_thin.mjs";import{WaterfallRecommend as s}from"../../../common/list/waterfall-recommend/waterfall-recommend.mjs";import{buildSearchVideoWaterfallColumns as c}from"./shared.mjs";import{memo as l,useCallback as u,useMemo as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{useTranslations as m}from"next-intl";function h(){return p(t,{className:`flex w-full gap-[15px] px-[16px]`,children:[p(t,{className:`flex min-w-0 flex-1 flex-col gap-[16px]`,children:[f(i,{className:`h-[218px] w-full rounded-[8px] bg-white/8`}),f(i,{className:`h-[120px] w-full rounded-[8px] bg-white/8`}),f(i,{className:`h-[218px] w-full rounded-[8px] bg-white/8`})]}),p(t,{className:`flex min-w-0 flex-1 flex-col gap-[16px]`,children:[f(i,{className:`h-[120px] w-full rounded-[8px] bg-white/8`}),f(i,{className:`h-[218px] w-full rounded-[8px] bg-white/8`}),f(i,{className:`h-[120px] w-full rounded-[8px] bg-white/8`})]})]})}const g=l(({list:e,title:t,onMoreClick:n,sectionClassName:r=`w-full`})=>{let i=d(()=>c(e),[e]),a=!!t;return e.length===0?null:f(s,{title:t||``,columns:i,sectionClassName:r,headerClassName:a?`mb-[16px] flex items-center justify-between px-[16px]`:`hidden`,titleClassName:`min-w-0 flex-1 text-[18px] leading-[24px] font-medium text-white`,moreLinkClassName:`ml-[8px] flex size-[24px] shrink-0 items-center justify-center text-white/50`,moreIcon:a&&n?f(o,{className:`size-[16px]`}):void 0,onMoreClick:n,containerClassName:`relative flex w-full gap-[15px] px-[16px]`})});g.displayName=`SearchVideoWaterfall`;const _=l(({inputVal:i,sort:o,refreshVersion:s})=>{let c=m(`components.pages.search.searchResult`),l=u(async t=>await e({data_type:2,extra_params:JSON.stringify({type:3,keywords:i,sort:o}),page:t||1,page_size:20}),[i,o]),_=a({key:d(()=>[`search-result`,`video`,i,o,s],[i,s,o]),initialPageParam:1,async queryFn(e){return(await l(e))?.data?.videos??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),v=d(()=>(_.data?.pages??[]).flatMap(e=>e.list??[]),[_.data?.pages]),y=!!((_.isPending||_.isFetching)&&v.length===0),b=u(async()=>{try{await _.fetchNextPage()}catch(e){console.error(`获取视频搜索结果失败`,e)}},[_]);return y?f(h,{}):v.length===0?f(n,{type:`nodata`,text:c(`searchVideoInfo.noRelevantContent`),className:`!pt-[72px]`}):p(t,{className:`w-full pb-[24px]`,children:[f(g,{list:v}),_.hasNextPage&&f(r,{loadMore:async e=>b(),hasMore:_.hasNextPage,className:`w-full`})]})});_.displayName=`SearchVideoInfo`;export{g as SearchVideoWaterfall,_ as default};
2
+ "use client";import{gContentGetRecommendVideoList as e}from"../../../../service/generated/client.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{Text as i}from"../../../ui/text.mjs";import{usePaginated as a,useRefetchQuery as o,useUpdateRequest as s}from"../../../../hooks/query/use-query.mjs";import{formatVideoDuration as c,getPostDetailPagePath as l}from"../../../../utils/tools.mjs";import{apiCollectCustom as u}from"../../../../utils/api-collect.mjs";import{UserActivityList as d}from"../../../common/list/user-activity-list/user-activity-list.mjs";import f from"../../../../assets/icons/view.mjs";import{SearchVideoCardSkeleton as p}from"../../../common/skeleton/search-video-card-skeleton.mjs";import{mapRecommendContentToUserActivityItem as m}from"../search-utils.mjs";import{memo as h,useCallback as g,useMemo as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";import x from"next/link";const S=h(()=>v(p,{count:3,uniqueKeyPrefix:`search-video-info-skeleton`}));S.displayName=`SearchVideoListSkeleton`;function C(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function w(e){let t=Number(e.episode_count||0),n=Number.isFinite(t)&&t>0,r=String(e.update_status??``).trim();return!n||t<=1?c(Number(e.duration||0)):r===`1`?`全${t}集`:`更新至${t}集`}const T=h(({item:e})=>{let r=e.name||``,a=e.img_x||e.img_y||``,o=w(e);return y(x,{className:`mb-[12px] block border-b border-line1 px-[12px] pb-[12px]`,href:l({id:e.video_id,contentType:0}),onClick:()=>{e.video_id},children:[y(n,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[a&&v(t,{src:a,alt:r||`封面`,fill:!0,objectFit:`cover`}),v(n,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),y(n,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[v(f,{className:`h-[14px] w-[14px] text-white`}),v(i,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:C(e.play_count)})]}),o&&v(n,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:v(i,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:o})})]}),y(n,{className:`flex items-center justify-between gap-[12px] pt-[10px] px-2`,children:[y(n,{className:`flex-1 min-w-0`,children:[v(i,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:r}),e.description&&v(i,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:e.description})]}),v(i,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})});T.displayName=`VideoItem`;const E=h(({list:e})=>v(n,{className:`w-full px-[12px] pt-[12px]`,children:e.map((e,t)=>v(T,{item:e},String(e.video_id??t)))}));E.displayName=`VideoList`;const D=h(({list:e,onUpdate:t,onActionSuccess:n})=>{let r=g(n=>{let r=e.findIndex(e=>e.content_id===n.content_id);if(r!==-1){let i=[...e];i[r]=n,t(i)}},[e,t]);return v(d,{list:_(()=>e.map(e=>({...m(e),onLikeSuccess(t){r({...e,like_count:String(t.count),dislike_count:t.dislikeCount===void 0?e.dislike_count:String(t.dislikeCount),interaction:{...e.interaction,is_liked:t.isLiked,is_dislike:t.isDisliked??e.interaction?.is_dislike}})},onDislikeSuccess(t){r({...e,like_count:t.likeCount===void 0?e.like_count:String(t.likeCount),dislike_count:String(t.count),interaction:{...e.interaction,is_dislike:t.isDisliked,is_liked:t.isLiked??e.interaction?.is_liked}})}})),[r,e]),showGroupHeaders:!1,onActionSuccess:n})});D.displayName=`InfoList`;const O=h(({searchType:t,inputVal:i})=>{let c=b(`components.pages.search.searchResult`),l=g(async n=>await e({data_type:2,extra_params:JSON.stringify({type:t===`video`?3:2,keywords:i}),page:n||1,page_size:20}),[i,20,t]),u=_(()=>[`searchByKeyForVideoInfo`,i,t===`video`?3:2],[i,t]),f=a({key:u,initialPageParam:1,async queryFn(e){let n=await l(e);return(t===`video`?n?.data?.videos:n?.data?.contents)??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),p=_(()=>{let e=f.data?.pages??[],t=[];for(let n of e){let e=n.list??[];t.push(...e)}return t},[f.data?.pages]),h=_(()=>p,[p,t]),y=s(),x=o(),C=g(e=>{y(u,t=>{if(!t)return t;let n=t.pages.map(t=>({...t,list:(t.list??[]).map(t=>t.content_id===e.content_id?e:t)}));return{...t,pages:n}})},[u,y]),w=g(()=>{x(u)},[u,x]),T=g(e=>({...m(e),onLikeSuccess(t){C({...e,like_count:String(t.count),dislike_count:t.dislikeCount===void 0?e.dislike_count:String(t.dislikeCount),interaction:{...e.interaction,is_liked:t.isLiked,is_dislike:t.isDisliked??e.interaction?.is_dislike}})},onDislikeSuccess(t){C({...e,like_count:t.likeCount===void 0?e.like_count:String(t.likeCount),dislike_count:String(t.count),interaction:{...e.interaction,is_dislike:t.isDisliked,is_liked:t.isLiked??e.interaction?.is_liked}})}}),[C]),D=_(()=>h.map(T),[T,h]),O=f.isPending||f.isFetching,k=t===`video`&&O&&h.length===0;return v(n,{className:`w-full`,children:t===`video`?k?v(S,{}):h.length>0?v(E,{list:h}):v(r,{type:`no-content`,text:c(`searchVideoInfo.noRelevantContent`),className:`mt-[12px]`}):v(d,{list:D,loading:O,hasMore:f.hasNextPage??!1,loadMore:async e=>{if(e!==!1)try{f&&await f.fetchNextPage()}catch(e){console.error(`获取内容列表失败`,e)}},showGroupHeaders:!1,emptyText:c(`searchVideoInfo.noRelevantContent`),onActionSuccess:w})})});O.displayName=`SearchInfoOrVideoList`;export{E as VideoList,O as default};
@@ -0,0 +1,2 @@
1
+
2
+ function e(e){let t=e.author,n=(Array.isArray(e.medias)?e.medias:[]).map(t=>{let n=t?.media_url??``,r=!!t?.is_video,i=t?.cover_image||e.cover_image||(r?``:n);return{...t,media_url:n,is_video:r,cover_image:i}}).filter(e=>!!(e?.media_url||e?.cover_image)),r=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>!!e).map(e=>({media_url:e,is_video:!1,cover_image:``})),i=n.length?n:r;return{type:Number(e.type??1),content_id:e.content_id??``,author:{avatar:t?.avatar_url??t?.avatar??``,nick_name:t?.nickname??t?.username??``,user_id:t?.user_id??e.user_id??``},create_time:Number(e.create_time??0),content:e.content??``,medias:i,like_count:Number(e.like_count??0),dislike_count:Number(e.dislike_count??0),comment_count:Number(e.comment_count??0),is_liked:e.interaction?.is_liked??!1,is_dislike:e.interaction?.is_dislike??!1}}export{e as mapRecommendContentToUserActivityItem};