@funhub/platform 0.1.163 → 0.1.164
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icons/channel-list/channel-active-indicator.mjs +2 -0
- package/dist/assets/icons/common/header-menu.mjs +2 -0
- package/dist/assets/icons/common/header-search-icon.mjs +2 -0
- package/dist/assets/icons/common/right_arrow_thin.mjs +2 -0
- package/dist/assets/icons/marquee-close.mjs +2 -0
- package/dist/assets/icons/marquee-speaker.mjs +2 -0
- package/dist/assets/images/shortcut-grid/shortcut-grid-card-bg-primary.mjs +2 -0
- package/dist/biz.d.mts +34 -2
- package/dist/biz.mjs +1 -1
- package/dist/common.d.mts +5 -2
- package/dist/common.mjs +1 -1
- package/dist/components/biz/business/advertisement/ad-match.d.mts +98 -0
- package/dist/components/biz/business/advertisement/ad-match.mjs +2 -0
- package/dist/components/biz/business/advertisement/ad-provider.d.mts +39 -0
- package/dist/components/biz/business/advertisement/ad-provider.mjs +2 -0
- package/dist/components/biz/business/advertisement/ad-query.d.mts +29 -0
- package/dist/components/biz/business/advertisement/ad-query.mjs +2 -0
- package/dist/components/biz/business/advertisement/ad-runtime-provider.d.mts +29 -0
- package/dist/components/biz/business/advertisement/ad-runtime-provider.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/client.d.mts +18 -0
- package/dist/components/biz/business/advertisement/banner-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/banner-ad/material.d.mts +30 -0
- package/dist/components/biz/business/advertisement/banner-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/schema.d.mts +84 -0
- package/dist/components/biz/business/advertisement/banner-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/banner-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/banner-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/feed-ad/index.d.mts +39 -0
- package/dist/components/biz/business/advertisement/feed-ad/index.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/client.d.mts +21 -0
- package/dist/components/biz/business/advertisement/floating-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/floating-ad/material.d.mts +25 -0
- package/dist/components/biz/business/advertisement/floating-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/schema.d.mts +84 -0
- package/dist/components/biz/business/advertisement/floating-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/floating-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/floating-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/client.d.mts +16 -0
- package/dist/components/biz/business/advertisement/icon-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/icon-ad/material.d.mts +29 -0
- package/dist/components/biz/business/advertisement/icon-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/schema.d.mts +78 -0
- package/dist/components/biz/business/advertisement/icon-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/icon-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/icon-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/index.d.mts +31 -0
- package/dist/components/biz/business/advertisement/popup-ad/client.d.mts +14 -0
- package/dist/components/biz/business/advertisement/popup-ad/client.mjs +64 -0
- package/dist/components/biz/business/advertisement/popup-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/popup-ad/material.d.mts +29 -0
- package/dist/components/biz/business/advertisement/popup-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/popup-ad/schema.d.mts +54 -0
- package/dist/components/biz/business/advertisement/popup-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/popup-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/popup-ad/server.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/client.d.mts +15 -0
- package/dist/components/biz/business/advertisement/text-ad/client.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/index.d.mts +5 -0
- package/dist/components/biz/business/advertisement/text-ad/material.d.mts +27 -0
- package/dist/components/biz/business/advertisement/text-ad/material.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/schema.d.mts +62 -0
- package/dist/components/biz/business/advertisement/text-ad/schema.mjs +2 -0
- package/dist/components/biz/business/advertisement/text-ad/server.d.mts +11 -0
- package/dist/components/biz/business/advertisement/text-ad/server.mjs +2 -0
- package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
- package/dist/components/biz/business/channel-list/client.mjs +1 -1
- package/dist/components/biz/business/channel-list/default-props.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/registry.d.mts +36 -1
- package/dist/components/biz/business/detail/shared/registry.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/client.d.mts +1 -13
- package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.d.mts +8 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/client.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/index.d.mts +5 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.d.mts +45 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/material.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.d.mts +9 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/detail/video-detail-waterfall-recommend/server.mjs +2 -0
- package/dist/components/biz/business/header-search/header-avatar-icon/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.d.mts +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +4 -3
- package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/header-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/header-action.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/header-search-icon.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/header-shell.mjs +2 -0
- package/dist/components/biz/business/header-search/shared/logo.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/search.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
- package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +3 -0
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-preview.mjs +1 -1
- package/dist/components/biz/business/hot-recommend/client.d.mts +17 -0
- package/dist/components/biz/business/hot-recommend/client.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/index.d.mts +5 -0
- package/dist/components/biz/business/hot-recommend/material.d.mts +24 -0
- package/dist/components/biz/business/hot-recommend/material.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/schema.d.mts +23 -0
- package/dist/components/biz/business/hot-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/hot-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/hot-recommend/server.mjs +2 -0
- package/dist/components/biz/business/index.d.mts +36 -1
- package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
- package/dist/components/biz/business/marquee/client.mjs +1 -1
- package/dist/components/biz/business/marquee/marquee.module.mjs +2 -6
- package/dist/components/biz/business/profile/index.d.mts +1 -1
- package/dist/components/biz/business/profile/profile-header/client.d.mts +2 -1
- package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/index.d.mts +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +2 -0
- package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +5 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
- package/dist/components/biz/business/ranking-recommend/client.d.mts +15 -0
- package/dist/components/biz/business/ranking-recommend/client.mjs +70 -0
- package/dist/components/biz/business/ranking-recommend/material.d.mts +23 -0
- package/dist/components/biz/business/ranking-recommend/material.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/schema.d.mts +23 -0
- package/dist/components/biz/business/ranking-recommend/schema.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/server.d.mts +11 -0
- package/dist/components/biz/business/ranking-recommend/server.mjs +2 -0
- package/dist/components/biz/business/ranking-recommend/shared.d.mts +15 -0
- package/dist/components/biz/business/ranking-recommend/shared.mjs +2 -0
- package/dist/components/biz/business/search-history/client.mjs +1 -1
- package/dist/components/biz/business/search-history/schema.mjs +1 -1
- package/dist/components/biz/business/search-input/client.mjs +1 -1
- package/dist/components/biz/business/search-waterfall-recommend/client.d.mts +9 -0
- package/dist/components/biz/business/search-waterfall-recommend/client.mjs +2 -0
- package/dist/components/biz/business/search-waterfall-recommend/index.d.mts +4 -0
- package/dist/components/biz/business/search-waterfall-recommend/material.d.mts +40 -0
- package/dist/components/biz/business/search-waterfall-recommend/material.mjs +2 -0
- package/dist/components/biz/business/search-waterfall-recommend/server.d.mts +8 -0
- package/dist/components/biz/business/search-waterfall-recommend/server.mjs +2 -0
- package/dist/components/biz/business/shortcut-grid/client.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/common/collection-popup/create-collection-sheet.d.mts +41 -0
- package/dist/components/common/collection-popup/create-collection-sheet.mjs +2 -0
- package/dist/components/common/collection-popup/index.d.mts +1 -0
- package/dist/components/common/collection-popup/index.mjs +1 -1
- package/dist/components/common/icons/setting.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-list-item.d.mts +6 -0
- package/dist/components/common/list/collection-list/collection-list-item.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-list.d.mts +6 -0
- package/dist/components/common/list/collection-list/collection-list.mjs +1 -1
- package/dist/components/common/list/collection-list/collection-select-icon.mjs +2 -0
- package/dist/components/common/list/waterfall-recommend/index.d.mts +2 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.d.mts +99 -0
- package/dist/components/common/list/waterfall-recommend/waterfall-recommend.mjs +2 -0
- package/dist/components/common/series-episodes/index.d.mts +3 -1
- package/dist/components/common/series-episodes/index.mjs +1 -1
- package/dist/components/common/tab-bar/index.mjs +1 -1
- package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +2 -0
- package/dist/components/pages/collection-detail/detail.mjs +1 -1
- package/dist/components/pages/edit/page.mjs +1 -1
- package/dist/components/pages/home/client.mjs +1 -1
- package/dist/components/pages/search/page-client.mjs +1 -1
- package/dist/components/pages/search/search-result/index.mjs +1 -1
- package/dist/components/pages/search/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search/search-result/search-video-info.mjs +1 -1
- package/dist/components/pages/search/search-result/shared.mjs +2 -0
- package/dist/components/pages/search/top-header.mjs +1 -1
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/search-result/search-all.mjs +1 -1
- package/dist/components/pages/search-result/search-empty.mjs +2 -0
- package/dist/components/pages/search-result/search-tab.mjs +1 -1
- package/dist/components/pages/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search-result/search-video-info.mjs +2 -0
- package/dist/components/pages/search-result/shared.mjs +2 -0
- package/dist/components/pages/search-result/top-header.mjs +2 -0
- package/dist/components/pages/settings/_components/settings.mjs +1 -1
- package/dist/components/pages/video-list/video-list-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-recommend-item.mjs +2 -0
- package/dist/components/pages/video-list/video-list-skeleton.d.mts +2 -3
- package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
- package/dist/components/ui/avatar.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/box.d.mts +1 -1
- package/dist/components/ui/button.d.mts +2 -2
- package/dist/components/ui/empty.d.mts +1 -1
- package/dist/components/ui/image.d.mts +4 -4
- package/dist/components/ui/item.d.mts +1 -1
- package/dist/hooks.d.mts +1 -1
- package/dist/i18n/locales/en.mjs +2 -2
- package/dist/i18n/locales/zh-CN.mjs +2 -2
- package/dist/materials.d.mts +12 -1
- package/dist/materials.mjs +1 -1
- package/dist/service/advertisement.d.mts +176 -0
- package/dist/service/advertisement.mjs +2 -0
- package/dist/service/generated/client.d.mts +30 -2
- package/dist/service/generated/client.mjs +1 -1
- package/dist/service/generated/tanstack.d.mts +37 -2
- package/dist/service/generated/tanstack.mjs +1 -1
- package/dist/service.d.mts +4 -3
- package/dist/service.mjs +1 -1
- package/dist/types.d.mts +437 -7
- package/dist/utils/helper.d.mts +1 -1
- package/dist/utils/helper.mjs +1 -1
- package/dist/utils/schema/inspector.d.mts +2 -2
- package/dist/utils/schema/material.d.mts +1 -0
- package/package.json +1 -1
- package/theme.css +170 -59
- package/dist/assets/icons/detail/collect_nor.mjs +0 -2
- package/dist/assets/icons/detail/collect_sel.mjs +0 -2
- package/dist/assets/icons/detail/share.mjs +0 -2
- package/dist/assets/icons/marquee-enter.mjs +0 -2
- package/dist/assets/icons/right_arrow.mjs +0 -2
- package/dist/assets/icons/search/avatar.mjs +0 -2
- package/dist/assets/images/marquee.mjs +0 -2
- package/dist/components/biz/business/detail/shared/detail-introduction.mjs +0 -2
- package/dist/components/common/collection-popup/collection-create-modal.mjs +0 -2
- package/dist/components/common/skeleton/search-video-card-skeleton.mjs +0 -2
- package/dist/components/pages/search/search-utils.mjs +0 -2
- package/dist/components/pages/search-result/search-result-skeleton.mjs +0 -2
- package/dist/components/pages/search-result/search-video.mjs +0 -2
- package/dist/components/pages/video-list/video-list-item.mjs +0 -2
|
@@ -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/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};
|
|
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 _(`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:e?`15`:`9`,cy:`12`,r:`3`,fill:e?`#9756E3`:`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] 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] ${I?`text-[#D42EEA]`:`text-[#A261FF]`}`:`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-[#D42EEA]`:`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-[#D42EEA]`:`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-[16px] [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};
|
|
@@ -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{
|
|
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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";import{cn as e}from"../../../../utils/cn.mjs";import{Image as t}from"../../../ui/image.mjs";import{Text as n}from"../../../ui/text.mjs";import{CollectionSelectIcon as r,CollectionSelectedIcon as i}from"../../../common/list/collection-list/collection-select-icon.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{useTranslations as s}from"next-intl";import c from"next/link";function l(e){return a(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`18`,height:`14`,viewBox:`0 0 18 14`,fill:`none`,...e,children:a(`path`,{d:`M11.34 6.138L7.5195 4.0635C7.3395 3.9645 7.1415 3.9105 6.957 3.9105C6.4035 3.9105 6.003 4.3335 6.003 4.9185V8.991C6.003 9.576 6.4035 9.999 6.957 9.999C7.146 9.999 7.3395 9.945 7.5195 9.8505L11.358 7.776C11.7045 7.587 11.907 7.29 11.907 6.966C11.907 6.6375 11.7 6.3315 11.34 6.138ZM14.7105 0L3.1995 1.1205C1.431 1.1205 0 2.5515 0 4.32V9.7155C0 11.484 1.431 12.915 3.1995 12.915L14.715 13.914C16.4835 13.914 17.9145 12.483 17.9145 10.7145V3.1995C17.9133 2.35053 17.5752 1.53673 16.9745 0.936838C16.3737 0.336945 15.5595 -8.37344e-07 14.7105 0ZM16.3125 10.7145C16.3125 10.9243 16.2712 11.132 16.1909 11.3258C16.1106 11.5197 15.9929 11.6958 15.8446 11.8441C15.6963 11.9924 15.5202 12.1101 15.3263 12.1904C15.1325 12.2707 14.9248 12.312 14.715 12.312L3.1995 11.313C2.98971 11.313 2.78198 11.2717 2.58816 11.1914C2.39435 11.1111 2.21824 10.9934 2.0699 10.8451C1.92156 10.6968 1.80388 10.5207 1.7236 10.3268C1.64332 10.133 1.602 9.92529 1.602 9.7155V4.32C1.602 3.89632 1.77031 3.48999 2.0699 3.1904C2.36949 2.89081 2.77582 2.7225 3.1995 2.7225L14.7105 1.602C14.9203 1.602 15.128 1.64332 15.3218 1.7236C15.5157 1.80388 15.6918 1.92156 15.8401 2.0699C15.9884 2.21824 16.1061 2.39435 16.1864 2.58816C16.2667 2.78198 16.308 2.98971 16.308 3.1995V10.7145H16.3125Z`,fill:`currentColor`})})}function u(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e||0)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function d(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e||0)):0;return t>=1e8?`${(t/1e8).toFixed(1).replace(/\.0$/,``)}亿`:t>=1e4?`${(t/1e4).toFixed(1).replace(/\.0$/,``)}w`:`${t}`}function f({id:f,title:p,coverImage:m,duration:h=0,episodeCount:g=0,viewCount:_=0,is_more_link:v=!1,isEditMode:y=!1,isSelected:b=!1,onToggleSelection:x}){let S=s(`components.ui.list.videoList`),C=`/video/${f}/${p}`,w=S(v?`videoListItem.series`:`videoListItem.movie`),T=v?g>0?`${g}集全`:``:u(h),E=d(_);function D(){x?.(f)}function O(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),D())}return o(`div`,{className:`relative w-full`,children:[o(`div`,{className:`relative h-[228px] w-full overflow-hidden rounded-[8px]`,children:[a(t,{src:m||`/empty/default-cover.png`,alt:p||S(`videoListItem.coverAlt`),fill:!0,className:`object-cover`}),a(`div`,{className:`pointer-events-none absolute inset-0 rounded-[8px] bg-[linear-gradient(180deg,rgba(8,2,17,0.56)_3.289%,rgba(8,2,17,0)_27.697%,rgba(8,2,17,0.8)_74.178%)]`}),y&&a(`div`,{className:`absolute left-3 top-3 z-20`,children:a(b?i:r,{})}),!y&&o(`div`,{className:e(`absolute left-2 right-2 top-3 z-10 flex items-start justify-between gap-2`),children:[a(`div`,{className:`inline-flex h-5 items-center justify-center rounded-[4px] bg-white/20 px-1 text-center text-[12px] leading-[14px] text-white`,children:a(n,{className:`text-[12px] leading-[14px] text-white`,children:w})}),T?a(n,{className:`shrink-0 text-[14px] leading-4 text-white`,children:T}):null]}),o(`div`,{className:`absolute bottom-3 left-[10px] right-[10px] z-10 flex items-end gap-2`,children:[a(n,{className:`min-w-0 flex-1 line-clamp-2 text-[16px] font-normal leading-6 text-[var(--color-text-white80)]`,dangerouslySetInnerHTML:{__html:p}}),o(`div`,{className:`mb-1 flex shrink-0 items-center gap-1 text-[12px] leading-5 text-white`,children:[a(l,{className:`h-[14px] w-[18px] opacity-80`}),a(n,{className:`text-[12px] leading-5 text-white`,children:E})]})]})]}),y?a(`button`,{type:`button`,className:`absolute inset-0 z-30 block w-full rounded-[8px] text-left`,onClick:D,onKeyDown:O,"aria-pressed":b,children:a(`span`,{className:`sr-only`,children:p||S(`videoListItem.coverAlt`)})}):a(c,{href:C,className:`absolute inset-0 z-30 block rounded-[8px]`,"aria-label":p||S(`videoListItem.coverAlt`)})]})}export{f as CollectionDetailVideoCard};
|
|
@@ -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,
|
|
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};
|
|
@@ -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
|
|
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};
|
|
@@ -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{
|
|
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};
|
|
@@ -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{
|
|
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};
|
|
@@ -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}){return i===`user`?r(e,{inputVal:a}):i===`all`?r(n,{
|
|
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};
|
|
@@ -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{
|
|
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};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
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
|
|
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};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{gContentGetRecommendVideoList as e}from"../../../../service/generated/client.mjs";import{
|
|
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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
import{getPostDetailPagePath as e}from"../../../../utils/tools.mjs";const t=[{label:`综合`,value:1},{label:`最新`,value:2},{label:`最热`,value:3}];function n(e){return!Number.isFinite(e)||e<=0?``:e>=1e8?`${(e/1e8).toFixed(1).replace(/\.0$/,``)}亿热度`:e>=1e4?`${(e/1e4).toFixed(1).replace(/\.0$/,``)}万热度`:`${Math.floor(e)}热度`}function r(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function i(e){return String(e.img_type??``).trim().toLowerCase()===`long`?`short`:`tall`}function a(e){let t=[],n=[],r=0,i=0;return e.forEach(e=>{let a=(e.cardKind===`short`?120:218)+16;if(r<=i){t.push(e),r+=a;return}n.push(e),i+=a}),{left:t,right:n}}function o(e){return String(e.name||``).trim()}function s(e){return e.img_y||e.img_x||``}function c(e){return String(e.group_name||e.description||``).trim()}function l(t){let n=String(t.video_id||``).trim();return n?e({id:n,contentType:0}):`#`}function u(e){return a(e.filter(e=>String(e.video_id||``).trim()).map((e,t)=>({key:`${e.video_id??`video`}-${t}`,sourceIndex:t,href:l(e),cardKind:i(e),coverUrl:s(e),title:o(e),metaPrimaryText:c(e),heatText:n(Number(e.play_count||0)),score:r(e.score)})))}function d(e){for(let t of e)if(typeof t==`string`&&t.trim())return t.trim();return``}function f(e){return d([e.nick_name,e.nickname,e.display_id,e.user_id])}function p(e){return d([e.signature,e.description,e.text,e.introduce,e.bio])}function m(e){let t=Number(e||0);return!Number.isFinite(t)||t<=0?`0`:t>=1e8?`${(t/1e8).toFixed(1).replace(/\.0$/,``)}亿`:t>=1e4?`${(t/1e4).toFixed(1).replace(/\.0$/,``)}万`:`${Math.floor(t)}`}export{t as SEARCH_RESULT_SORT_OPTIONS,u as buildSearchVideoWaterfallColumns,m as formatSearchFollowerCount,p as resolveSearchUserDescription,f as resolveSearchUserName};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as a}from"../../../utils/tools.mjs";import{LeftArrowIcon as o}from"../../common/icons/left-arrow.mjs";import s from"../../../assets/icons/search.mjs";import c from"../../../assets/icons/clear.mjs";import{memo as l,useCallback as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useSearchParams as p}from"next/navigation";import{useTranslations as m}from"next-intl";function h(){}const g=l(({setSearchInputVal:l,initInputVal:g,initInputVersion:_,addSearchHistory:v,clearCallback:y=h})=>{let b=m(`components.pages.search`),x=e(),[S,C]=i(`search-input-val`,``),w=p().get(`q`),T=e=>{
|
|
2
|
+
"use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as a}from"../../../utils/tools.mjs";import{LeftArrowIcon as o}from"../../common/icons/left-arrow.mjs";import s from"../../../assets/icons/search.mjs";import c from"../../../assets/icons/clear.mjs";import{memo as l,useCallback as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useSearchParams as p}from"next/navigation";import{useTranslations as m}from"next-intl";function h(){}const g=l(({setSearchInputVal:l,initInputVal:g,initInputVersion:_,addSearchHistory:v,clearCallback:y=h})=>{let b=m(`components.pages.search`),x=e(),[S,C]=i(`search-input-val`,``),w=p().get(`q`),T=e=>{C(e.target.value)},E=u(e=>{l(e),v(e)},[v,l]);r(()=>{g&&(C(g),E(g))},[E,g,_,C],`search-init-input-effect`),r(()=>{w&&(C(w),E(w))},[E,C,w],`search-url-params-effect`);function D(){if(n.dismiss(),window.location.search.split(`from_code=`)[1]){x.push(`/`);return}x.back()}return d(`div`,{className:`app-top-nav relative h-[66px] w-full`,children:d(`header`,{className:`fixed left-0 right-0 top-0 z-50`,style:{willChange:`transform`,transform:`translateZ(0)`},children:f(`div`,{className:`mx-auto flex h-[66px] items-end gap-[8px] px-[16px] pb-[16px] pt-[16px]`,children:[d(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white`,onClick:D,children:d(o,{className:`h-[16px] w-[16px]`})}),f(`div`,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[f(`div`,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[d(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:d(s,{className:`h-[14px] w-[14px] text-white/60`})}),d(t,{placeholder:b(`topHeader.placeholder`),maxLength:20,value:S,className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white placeholder:!text-white/90`,onChange:T,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!S.trim())return;E(S.trim())}}}),S&&d(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:d(c,{className:`h-[15px] w-[15px] text-white/50`,onClick:()=>{a()||(C(``),l(``),y())}})})]}),d(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white`,onClick:()=>{S.trim()&&E(S.trim())},children:b(`topHeader.search`)})]})]})})})});g.displayName=`SearchTopHeader`;export{g as default};
|
|
@@ -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{
|
|
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{Box as r}from"../../ui/box.mjs";import{eventKey as i}from"../../../constants/event-key.mjs";import{useSearchHistory as a}from"../../../hooks/use-search-history.mjs";import{SEARCH_RESULT_SORT_OPTIONS as o}from"./shared.mjs";import s from"./search-user.mjs";import c from"./search-video-info.mjs";import l from"./search-all.mjs";import{SearchTab as u}from"./search-tab.mjs";import d from"./top-header.mjs";import{useEffect as f,useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useSearchParams as _}from"next/navigation";import{useTranslations as v}from"next-intl";const y=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.user`,value:`user`}];function b(){let b=v(`components.pages.search.pageClient`),{userInfo:x}=n(),S=x?.user_id||`guest`,C=_().get(`q`)?.toString()||``,[w,T]=m(C),[E,D]=m(0);f(()=>{T(C),D(e=>e+1)},[C]);let[O,k]=m(y[0].value),[A,j]=m(o[0].value),[M,N]=m(0),{addHistory:P}=a({storageKey:S}),F=p(()=>y.map(e=>({value:e.value,label:b(e.labelKey)})),[b]),I=p(()=>w.trim()!==``,[w]);return f(()=>(t.on(i.EXCHANGE_SEARCH_TYPE,k),()=>{t.off(i.EXCHANGE_SEARCH_TYPE,k)}),[]),g(r,{className:`flex h-dvh w-full flex-col`,children:[h(r,{className:`shrink-0`,children:h(d,{setSearchInputVal:t=>{t!==w&&(T(t),e({q:t}))},initInputVal:C,initInputVersion:E,addSearchHistory:P})}),h(r,{className:`mt-[16px] min-h-0 flex-1 overflow-hidden rounded-t-[16px]`,children:I&&g(r,{className:`flex h-full flex-col bg-[linear-gradient(180deg,rgba(6,3,21,0.9)_0%,rgba(6,3,21,0)_100%)] backdrop-blur-[2px]`,children:[h(u,{searchType:O,tabList:F,onChange:e=>{k(e)},sort:A,onSortChange:e=>{j(e),N(e=>e+1)}}),g(`div`,{className:`min-h-0 flex-1 overflow-y-auto pb-[24px]`,children:[O===`user`&&h(s,{inputVal:w,sort:A,refreshVersion:M}),O===`all`&&h(l,{searchInputVal:w,sort:A,refreshVersion:M}),O===`video`&&h(c,{inputVal:w,sort:A,refreshVersion:M})]})]})})]})}export{b as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{gContentGetRecommendVideoList as
|
|
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{Text as i}from"../../ui/text.mjs";import{Skeleton as a}from"../../ui/skeleton.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{eventKey as s}from"../../../constants/event-key.mjs";import{SearchResultEmpty as c}from"./search-empty.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{jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";function _({className:e}){return m(`svg`,{viewBox:`0 0 12.728 7.778`,fill:`currentColor`,"aria-hidden":!0,className:e,children:m(`path`,{d:`M6.36391 4.94972L11.3137 0L12.7279 1.41421L6.36391 7.77822L0 1.41421L1.41421 0L6.36391 4.94972Z`})})}function v(e,t){return JSON.stringify({type:1,keywords:e,sort:t})}function y(){return h(r,{className:`w-full`,children:[m(r,{className:`px-[16px]`,children:h(r,{className:`overflow-hidden rounded-[8px] bg-white/8`,children:[m(r,{className:`flex flex-col gap-[16px] px-[15px] pt-[16px]`,children:Array.from({length:3}).map((e,t)=>h(r,{className:`flex h-[66px] items-center gap-[8px]`,children:[m(a,{className:`size-[56px] rounded-full bg-white/10`}),h(r,{className:`min-w-0 flex-1`,children:[m(a,{className:`h-[20px] w-[96px] rounded-[4px] bg-white/10`}),m(a,{className:`mt-[2px] h-[20px] w-full rounded-[4px] bg-white/10`}),m(a,{className:`mt-[2px] h-[20px] w-[120px] rounded-[4px] bg-white/10`})]}),m(a,{className:`h-[24px] w-[64px] rounded-full bg-white/10`})]},`search-all-user-skeleton-${t}`))}),m(r,{className:`flex h-[48px] items-center justify-center`,children:m(a,{className:`h-[20px] w-[88px] rounded-[4px] bg-white/10`})})]})}),h(r,{className:`mt-[24px] flex w-full justify-between gap-[16px] px-[16px]`,children:[h(r,{className:`flex w-[171px] shrink-0 flex-col gap-[16px]`,children:[m(a,{className:`h-[218px] w-[171px] rounded-[8px] bg-white/8`}),m(a,{className:`h-[120px] w-[171px] rounded-[8px] bg-white/8`})]}),h(r,{className:`flex w-[171px] shrink-0 flex-col gap-[16px]`,children:[m(a,{className:`h-[120px] w-[171px] rounded-[8px] bg-white/8`}),m(a,{className:`h-[218px] w-[171px] rounded-[8px] bg-white/8`})]})]})]})}function b({searchInputVal:a,sort:b,refreshVersion:x}){let S=g(`components.pages.search.searchResult`),[C,w]=p(!1),[T,E]=p({});d(()=>{w(!1),E({})},[x,a,b]);let D=f(()=>v(a,b),[a,b]),{data:O,isFetching:k,isLoading:A}=o(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,3),[C,M]),F=!C&&M.length>3,I=!!((A||k)&&M.length===0&&N.length===0),L=!k&&M.length===0&&N.length===0;return I?m(y,{}):L?m(c,{text:S(`searchAll.emptyResult`)}):h(r,{className:`w-full pb-[24px]`,children:[P.length>0&&m(r,{className:`px-[16px]`,children:h(r,{className:`overflow-hidden rounded-[8px] bg-white/10`,children:[m(r,{className:`flex flex-col gap-[16px] px-[15px] pt-[16px] ${F?``:`pb-[16px]`}`.trim(),children:P.map((e,t)=>m(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&&h(`button`,{type:`button`,className:`flex h-[48px] w-full items-center justify-center gap-[4px] rounded-bl-[8px] rounded-br-[8px] text-[rgba(255,255,255,0.7)]`,onClick:()=>w(!0),children:[m(i,{className:`text-[14px] leading-[20px] font-normal`,children:`展开全部`}),m(r,{className:`flex size-[24px] items-center justify-center`,children:m(_,{className:`h-[7.778px] w-[12.728px] text-[rgba(255,255,255,0.7)]`})})]})]})}),N.length>0&&m(u,{list:N,title:`相似推荐`,onMoreClick:()=>{e.emit(s.EXCHANGE_SEARCH_TYPE,`video`)},sectionClassName:P.length>0?`mt-[24px] w-full`:`w-full`})]})}export{b as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
|
|
2
|
+
"use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i(){return r(`svg`,{width:`64`,height:`64`,viewBox:`0 0 64 64`,fill:`none`,"aria-hidden":!0,children:[n(`path`,{d:`M0 56V8C0 3.58172 3.58172 0 8 0H44.1975L63.9564 19.1496V56C63.9564 60.4183 60.3747 64 55.9564 64H8C3.58172 64 0 60.4183 0 56Z`,fill:`#1B1829`,stroke:`#322F3E`}),n(`path`,{d:`M44.198 11.2184V0L63.9996 19.2184H52.198C47.7797 19.2184 44.198 15.6367 44.198 11.2184Z`,fill:`#302D3E`}),n(`path`,{transform:`translate(20.982, 21.076)`,d:`M10.0632 0C15.621 0 20.1265 4.50548 20.1265 10.0632C20.1265 12.2975 19.3968 14.3606 18.1649 16.0304L21.5505 19.415C22.1398 20.0045 22.1399 20.961 21.5505 21.5505C20.961 22.1399 20.0045 22.1398 19.415 21.5505L16.0304 18.1649C14.3606 19.3968 12.2975 20.1265 10.0632 20.1265C4.50548 20.1265 0 15.621 0 10.0632C0 4.50548 4.50548 0 10.0632 0ZM10.0632 3.01897C6.17282 3.01897 3.01897 6.17282 3.01897 10.0632C3.01897 13.9537 6.17282 17.1075 10.0632 17.1075C13.9537 17.1075 17.1075 13.9537 17.1075 10.0632C17.1075 6.17282 13.9537 3.01897 10.0632 3.01897Z`,fill:`#54525E`})]})}function a({text:a}){return r(e,{className:`flex flex-1 flex-col items-center pt-[72px]`,children:[n(i,{}),n(t,{className:`mt-[16px] text-center text-[15px] font-normal text-[#54525E]`,children:a})]})}export{a as SearchResultEmpty};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{Box as e}from"../../ui/box.mjs";import{Popover as t,PopoverContent as n,PopoverTrigger as r}from"../../ui/popover.mjs";import{SEARCH_RESULT_SORT_OPTIONS as i}from"./shared.mjs";import{memo as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({className:e}){return c(`svg`,{viewBox:`0 0 22 15`,fill:`currentColor`,"aria-hidden":!0,className:e,children:[s(`rect`,{x:`0`,y:`0`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`6.5`,width:`13.5`,height:`2`,rx:`1`}),s(`rect`,{x:`0`,y:`13`,width:`13.5`,height:`2`,rx:`1`}),s(`path`,{d:`M15 1C15 0.447715 15.4477 0 16 0C16.5523 0 17 0.447715 17 1V11.2969L18.2412 9.84961C18.6006 9.43028 19.2311 9.38179 19.6504 9.74121C20.0697 10.1006 20.1182 10.7311 19.7588 11.1504L16.7588 14.6504C16.4865 14.9681 16.0458 15.0826 15.6533 14.9375C15.2608 14.7923 15 14.4185 15 14V1Z`})]})}const u=a(({searchType:a,onChange:u,tabList:d,sort:f,onSortChange:p})=>{let[m,h]=o(!1);return s(e,{as:`nav`,className:`sticky top-0 z-40 px-[16px] pb-[16px] pt-[12px]`,children:c(e,{className:`flex h-[24px] items-center justify-between`,children:[s(e,{className:`flex items-center gap-[10px]`,children:d.map(e=>s(`button`,{type:`button`,className:`text-[16px] leading-[24px] transition-colors ${a===e.value?`font-medium text-white`:`font-normal text-white/80`}`,onClick:()=>{a!==e.value&&u(e.value)},children:e.label},e.value))}),c(t,{open:m,onOpenChange:h,children:[s(r,{"aria-label":`排序筛选`,className:`flex size-[24px] items-center justify-center`,children:s(l,{className:`h-[15px] w-[20px] text-white/40`})}),s(n,{side:`bottom`,align:`end`,sideOffset:8,className:`w-[132px] border border-white/10 bg-[#10071E]/95 p-[8px] backdrop-blur-[18px]`,children:s(e,{className:`flex flex-col gap-[4px]`,children:i.map(e=>s(`button`,{type:`button`,className:`rounded-[8px] px-[12px] py-[8px] text-left text-[14px] leading-[20px] ${e.value===f?`bg-white/10 text-white`:`text-white/70`}`,onClick:()=>{p(e.value),h(!1)},children:e.label},e.value))})})]})]})})});u.displayName=`SearchTab`;export{u as SearchTab};
|