@funhub/platform 0.2.15 → 0.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/assets/icons/marquee-enter.mjs +2 -0
  2. package/dist/biz.d.mts +1 -5
  3. package/dist/biz.mjs +1 -1
  4. package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
  5. package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
  6. package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
  7. package/dist/components/biz/business/advertisement/popup-ad/client.mjs +1 -1
  8. package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
  9. package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
  10. package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/runtime/client.mjs +1 -1
  11. package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/runtime/client.mjs +1 -1
  12. package/dist/components/biz/business/channel-list/client.mjs +1 -1
  13. package/dist/components/biz/business/comment/comment-input.mjs +3 -3
  14. package/dist/components/biz/business/comment/comment-item.mjs +1 -1
  15. package/dist/components/biz/business/comment/comment-list.mjs +1 -1
  16. package/dist/components/biz/business/comment/reply-detail.mjs +1 -1
  17. package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
  18. package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
  19. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  20. package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
  21. package/dist/components/biz/business/detail/video-detail-player/schema.d.mts +1 -1
  22. package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -1
  23. package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
  24. package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
  25. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  26. package/dist/components/biz/business/home-recommend/shared/home-recommend-play-count.mjs +1 -1
  27. package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
  28. package/dist/components/biz/business/index.d.mts +0 -5
  29. package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
  30. package/dist/components/biz/business/large-feature-grid/material.d.mts +1 -1
  31. package/dist/components/biz/business/marquee/client.mjs +1 -1
  32. package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
  33. package/dist/components/biz/business/profile/profile-header/material.d.mts +1 -1
  34. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  35. package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
  36. package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
  37. package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
  38. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
  39. package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -1
  40. package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
  41. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +2 -0
  42. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
  43. package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -1
  44. package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
  45. package/dist/components/biz/business/search-history/client.mjs +1 -1
  46. package/dist/components/biz/business/search-input/client.mjs +1 -1
  47. package/dist/components/biz/business/tab-bar/client.mjs +1 -1
  48. package/dist/components/biz/business/text-recommend/client.mjs +1 -1
  49. package/dist/components/biz/renderer/renderer.d.mts +1 -1
  50. package/dist/components/biz/utils/transformers/card-grid.mjs +1 -1
  51. package/dist/components/common/blocked-dialog/blocked-dialog.mjs +1 -1
  52. package/dist/components/common/collection-popup/create-collection-sheet.mjs +1 -1
  53. package/dist/components/common/collection-popup/index.mjs +1 -1
  54. package/dist/components/common/follow-button/index.mjs +1 -1
  55. package/dist/components/common/info-card/card-header.mjs +1 -1
  56. package/dist/components/common/list/post-list/post-list.mjs +1 -1
  57. package/dist/components/common/list/user-activity-list/user-activity-list-actions.mjs +1 -1
  58. package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -1
  59. package/dist/components/common/list/video-list/video-list-item.mjs +1 -1
  60. package/dist/components/common/list/video-list/video-list.mjs +1 -1
  61. package/dist/components/common/popup-video/index.mjs +1 -1
  62. package/dist/components/common/series-episodes/index.mjs +1 -1
  63. package/dist/components/common/share-popup/share-content.mjs +1 -1
  64. package/dist/components/common/tab-bar/index.mjs +1 -1
  65. package/dist/components/common/top-nav-bar/client.mjs +1 -1
  66. package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
  67. package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
  68. package/dist/components/pages/(follow)/_components/interaction-tabs/index.mjs +1 -1
  69. package/dist/components/pages/collection-add/page.mjs +1 -1
  70. package/dist/components/pages/collection-create/form.mjs +1 -1
  71. package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +1 -1
  72. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  73. package/dist/components/pages/edit/page.mjs +1 -1
  74. package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
  75. package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
  76. package/dist/components/pages/login/forgot.mjs +1 -1
  77. package/dist/components/pages/login/index.mjs +1 -1
  78. package/dist/components/pages/login/login-client.mjs +1 -1
  79. package/dist/components/pages/login/password.mjs +1 -1
  80. package/dist/components/pages/login/register.mjs +1 -1
  81. package/dist/components/pages/login/reset-password.mjs +1 -1
  82. package/dist/components/pages/login/verify.mjs +1 -1
  83. package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
  84. package/dist/components/pages/publish/components/header.mjs +1 -1
  85. package/dist/components/pages/publish/hooks/use-file-upload.mjs +1 -1
  86. package/dist/components/pages/publish/page-client.mjs +1 -1
  87. package/dist/components/pages/search/page-client.mjs +1 -1
  88. package/dist/components/pages/search/search-result/search-user.mjs +1 -1
  89. package/dist/components/pages/search/search-result/shared.mjs +1 -1
  90. package/dist/components/pages/search/top-header.mjs +1 -1
  91. package/dist/components/pages/search-result/page-client.mjs +1 -1
  92. package/dist/components/pages/search-result/search-user.mjs +1 -1
  93. package/dist/components/pages/search-result/search-video-info.mjs +1 -1
  94. package/dist/components/pages/search-result/shared.mjs +1 -1
  95. package/dist/components/pages/search-result/top-header.mjs +1 -1
  96. package/dist/components/pages/settings/_components/reset-password-drawer.mjs +1 -1
  97. package/dist/components/pages/settings/_components/settings.mjs +1 -1
  98. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  99. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  100. package/dist/components/pages/video-list/video-list-recommend-item.mjs +1 -1
  101. package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
  102. package/dist/components/ui/badge.d.mts +1 -1
  103. package/dist/components/ui/button.d.mts +1 -1
  104. package/dist/components/ui/image.d.mts +4 -4
  105. package/dist/components/ui/sonner.d.mts +1 -1
  106. package/dist/components/ui/sonner.mjs +1 -1
  107. package/dist/hooks/use-browse-report.d.mts +13 -0
  108. package/dist/hooks/use-browse-report.mjs +1 -1
  109. package/dist/hooks/use-content-operate.mjs +1 -1
  110. package/dist/i18n/locales/en.mjs +1 -1
  111. package/dist/i18n/locales/zh-CN.mjs +1 -1
  112. package/dist/materials.d.mts +1 -2
  113. package/dist/materials.mjs +1 -1
  114. package/dist/types/safe-information.d.mts +2 -0
  115. package/dist/utils/common.d.mts +9 -1
  116. package/dist/utils/common.mjs +1 -1
  117. package/dist/utils/schema/material.d.mts +1 -1
  118. package/dist/utils.d.mts +2 -2
  119. package/dist/utils.mjs +1 -1
  120. package/package.json +1 -1
  121. package/dist/components/biz/business/hot-recommend/client.d.mts +0 -17
  122. package/dist/components/biz/business/hot-recommend/client.mjs +0 -2
  123. package/dist/components/biz/business/hot-recommend/index.d.mts +0 -5
  124. package/dist/components/biz/business/hot-recommend/material.d.mts +0 -25
  125. package/dist/components/biz/business/hot-recommend/material.mjs +0 -2
  126. package/dist/components/biz/business/hot-recommend/schema.d.mts +0 -24
  127. package/dist/components/biz/business/hot-recommend/schema.mjs +0 -2
  128. package/dist/components/biz/business/hot-recommend/server.d.mts +0 -11
  129. package/dist/components/biz/business/hot-recommend/server.mjs +0 -2
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../utils/cn.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as o,InputGroupAddon as s,InputGroupTextarea as c}from"../../ui/input-group.mjs";import{useDeleteRequest as l,useRequest as u}from"../../../hooks/query/use-query.mjs";import d from"../../ui/popup.mjs";import{useCallback as f,useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{XIcon as _}from"lucide-react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";function S(e){return{title:(e?.title??``).slice(0,50),description:(e?.description??``).slice(0,100)}}function C({visible:C,mode:w=`create`,showDescription:T=!0,collectionId:E,initialValues:D,onClose:O,onCreated:k,onUpdated:A,onSuccess:j}){let M=x(`components.pages.collectionCreate`),N=x(`components.common.collectionPopup`),{userId:P}=t(),F=l(),I=w===`edit`,L=D?.title!==void 0||D?.description!==void 0,R=C&&I&&!!E&&!L,z=typeof document>`u`?void 0:document.body,B=h(!1),[V,H]=g(!1),[U,W]=g(()=>S()),G=u([`collection-detail`,E,`sheet`],()=>n({collection_id:E}),{enabled:R}),K=G.data?.data?.data?.collection;p(()=>{C||(B.current=!1,H(!1))},[C]),p(()=>{if(!(!C||B.current)){if(!I){W(S()),B.current=!0;return}if(L){W(S(D)),B.current=!0;return}K&&(W(S({title:K.title,description:K.description})),B.current=!0)}},[K,L,D,I,C]);let q=f((e,t)=>{W(n=>({...n,[e]:t}))},[]),J=m(()=>R&&!B.current&&G.isLoading,[G.isLoading,R]),Y=M(I?`form.editTitle`:`form.createTitle`),X=I?M(`form.save`):N(`createModalAction`),Z=M(I?`form.saving`:`form.creating`);function Q(e){e||O?.()}function $(e){P&&(F([`user-profile`,`mine`]),F([`user-profile`,`mine`,P]),F([`user-profile`,`mine`,P,`user-collection-created`,P])),e&&F([`collection-detail`,e])}async function ee(){if(V)return;let e=U.title.trim(),t=U.description.trim();if(!e){b.error(M(`form.titleRequired`));return}if(I&&!E){b.error(M(`form.collectionNotFound`));return}let n=b.loading(Z);try{H(!0);let a=I?await i({collection_id:E,title:e,description:t,cover_image:``}):await r({title:e,description:t,cover_image:``});if(a.code!==0){b.error(a.message||M(I?`form.saveFailed`:`form.createFailed`),{id:n});return}$(E),b.success(I?N(`updateSuccess`):M(`form.createSuccess`),{id:n}),j?.(),I?A?.():k?.(),O?.()}catch(e){console.error(I?`编辑收藏夹失败`:`创建收藏夹失败`,e),b.error(M(I?`form.saveFailed`:`form.createFailed`),{id:n})}finally{H(!1)}}return v(d,{open:C,onOpenChange:Q,showCloseButton:!1,className:`!z-[1210] max-h-[85vh] rounded-t-[24px] bg-[var(--color-surface-panel-dark)] p-0 text-[var(--color-text-primary)] backdrop-blur-[50px]`,overlayClassName:`!z-[1200] overlay-create-collection`,overlayForceRender:!0,portalContainer:z,children:y(`div`,{className:`flex flex-col pb-[34px]`,children:[y(`div`,{className:`flex h-14 items-center justify-between px-4`,children:[v(`span`,{className:`text-lg font-medium text-[var(--color-text-primary)]`,children:Y}),v(`button`,{type:`button`,className:`flex h-6 w-6 items-center justify-center rounded text-[var(--color-text-primary)] opacity-60 hover:opacity-100`,onClick:()=>O?.(),"aria-label":`关闭`,children:v(_,{size:24})})]}),y(`div`,{className:`flex flex-col gap-4 px-4`,children:[y(a,{className:`flex flex-col gap-2`,children:[y(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:[v(`span`,{className:`text-[var(--color-border-required)]`,children:`* `}),M(`form.label`)]}),y(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3`,`focus-within:!border-[var(--color-border-danger)] focus-within:!ring-0`,J?`opacity-60`:``),children:[v(c,{maxLength:50,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.titlePlaceholder`),value:U.title,onChange:e=>q(`title`,e.target.value),disabled:V||J}),y(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[y(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.title.length,`/`,50]}),v(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`title`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),T&&y(a,{className:`flex flex-col gap-2`,children:[v(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:M(`form.descriptionLabel`)}),y(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3 focus-within:ring-0`,`focus-within:!border-[var(--color-border-danger)]`,J?`opacity-60`:``),children:[v(c,{maxLength:100,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.descriptionPlaceholder`),value:U.description,onChange:e=>q(`description`,e.target.value),disabled:V||J}),y(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[y(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.description.length,`/`,100]}),v(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`description`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),v(`button`,{type:`button`,className:`h-12 w-full max-w-[358px] self-center rounded-[var(--radius-pill)] text-base font-medium text-[var(--color-text-primary)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-50`,style:{background:`var(--gradient-action-button)`},onClick:ee,disabled:V||J,children:V?Z:X})]})]})})}export{C as CreateCollectionSheet};
2
+ "use client";import{cn as e}from"../../../utils/cn.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as o,InputGroupAddon as s,InputGroupTextarea as c}from"../../ui/input-group.mjs";import{useDeleteRequest as l,useRequest as u}from"../../../hooks/query/use-query.mjs";import d from"../../ui/popup.mjs";import{toast as f}from"sonner";import{useCallback as p,useEffect as m,useMemo as h,useRef as g,useState as _}from"react";import{XIcon as v}from"lucide-react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";function S(e){return{title:(e?.title??``).slice(0,50),description:(e?.description??``).slice(0,100)}}function C({visible:C,mode:w=`create`,showDescription:T=!0,collectionId:E,initialValues:D,onClose:O,onCreated:k,onUpdated:A,onSuccess:j}){let M=x(`components.pages.collectionCreate`),N=x(`components.common.collectionPopup`),{userId:P}=t(),F=l(),I=w===`edit`,L=D?.title!==void 0||D?.description!==void 0,R=C&&I&&!!E&&!L,z=typeof document>`u`?void 0:document.body,B=g(!1),[V,H]=_(!1),[U,W]=_(()=>S()),G=u([`collection-detail`,E,`sheet`],()=>n({collection_id:E}),{enabled:R}),K=G.data?.data?.data?.collection;m(()=>{C||(B.current=!1,H(!1))},[C]),m(()=>{if(!(!C||B.current)){if(!I){W(S()),B.current=!0;return}if(L){W(S(D)),B.current=!0;return}K&&(W(S({title:K.title,description:K.description})),B.current=!0)}},[K,L,D,I,C]);let q=p((e,t)=>{W(n=>({...n,[e]:t}))},[]),J=h(()=>R&&!B.current&&G.isLoading,[G.isLoading,R]),Y=M(I?`form.editTitle`:`form.createTitle`),X=I?M(`form.save`):N(`createModalAction`),Z=M(I?`form.saving`:`form.creating`);function Q(e){e||O?.()}function $(e){P&&(F([`user-profile`,`mine`]),F([`user-profile`,`mine`,P]),F([`user-profile`,`mine`,P,`user-collection-created`,P])),e&&F([`collection-detail`,e])}async function ee(){if(V)return;let e=U.title.trim(),t=U.description.trim();if(!e){f.error(M(`form.titleRequired`));return}if(I&&!E){f.error(M(`form.collectionNotFound`));return}let n=f.loading(Z);try{H(!0);let a=I?await i({collection_id:E,title:e,description:t,cover_image:``}):await r({title:e,description:t,cover_image:``});if(a.code!==0){f.error(a.message||M(I?`form.saveFailed`:`form.createFailed`),{id:n});return}$(E),f.success(I?N(`updateSuccess`):M(`form.createSuccess`),{id:n}),j?.(),I?A?.():k?.(),O?.()}catch(e){console.error(I?`编辑收藏夹失败`:`创建收藏夹失败`,e),f.error(M(I?`form.saveFailed`:`form.createFailed`),{id:n})}finally{H(!1)}}return y(d,{open:C,onOpenChange:Q,showCloseButton:!1,className:`!z-[1210] max-h-[85vh] rounded-t-[24px] bg-[var(--color-surface-panel-dark)] p-0 text-[var(--color-text-primary)] backdrop-blur-[50px]`,overlayClassName:`!z-[1200] overlay-create-collection`,overlayForceRender:!0,portalContainer:z,children:b(`div`,{className:`flex flex-col pb-[34px]`,children:[b(`div`,{className:`flex h-14 items-center justify-between px-4`,children:[y(`span`,{className:`text-lg font-medium text-[var(--color-text-primary)]`,children:Y}),y(`button`,{type:`button`,className:`flex h-6 w-6 items-center justify-center rounded text-[var(--color-text-primary)] opacity-60 hover:opacity-100`,onClick:()=>O?.(),"aria-label":`关闭`,children:y(v,{size:24})})]}),b(`div`,{className:`flex flex-col gap-4 px-4`,children:[b(a,{className:`flex flex-col gap-2`,children:[b(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:[y(`span`,{className:`text-[var(--color-border-required)]`,children:`* `}),M(`form.label`)]}),b(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3`,`focus-within:!border-[var(--color-border-danger)] focus-within:!ring-0`,J?`opacity-60`:``),children:[y(c,{maxLength:50,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.titlePlaceholder`),value:U.title,onChange:e=>q(`title`,e.target.value),disabled:V||J}),b(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[b(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.title.length,`/`,50]}),y(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`title`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),T&&b(a,{className:`flex flex-col gap-2`,children:[y(`label`,{className:`text-sm text-[var(--color-text-dimmed)]`,children:M(`form.descriptionLabel`)}),b(o,{className:e(`min-h-[160px] rounded-2xl border border-transparent bg-[var(--color-surface-field-bg)] px-4 py-3 focus-within:ring-0`,`focus-within:!border-[var(--color-border-danger)]`,J?`opacity-60`:``),children:[y(c,{maxLength:100,className:`min-h-[120px] resize-none bg-transparent text-sm text-[var(--color-text-primary)] placeholder:text-[var(--color-text-quaternary)] focus-visible:ring-0 focus-visible:ring-offset-0`,placeholder:M(`form.descriptionPlaceholder`),value:U.description,onChange:e=>q(`description`,e.target.value),disabled:V||J}),b(s,{align:`block-end`,className:`flex items-center justify-end gap-2 bg-transparent px-0`,children:[b(`span`,{className:`text-sm text-[var(--color-text-disabled)]`,children:[U.description.length,`/`,100]}),y(`button`,{type:`button`,className:`text-sm text-[var(--color-text-disabled)] hover:text-[var(--color-text-primary)] disabled:opacity-50`,onClick:()=>q(`description`,``),disabled:V||J,children:M(`form.clear`)})]})]})]}),y(`button`,{type:`button`,className:`h-12 w-full max-w-[358px] self-center rounded-[var(--radius-pill)] text-base font-medium text-[var(--color-text-primary)] transition-opacity hover:opacity-90 disabled:pointer-events-none disabled:opacity-50`,style:{background:`var(--gradient-action-button)`},onClick:ee,disabled:V||J,children:V?Z:X})]})]})})}export{C as CreateCollectionSheet};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{createStore as e}from"../../../store/create-store.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetUserCollections as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{InfiniteScroll as i}from"../../ui/infinite-scroll.mjs";import a from"../../../assets/icons/close.mjs";import o from"../../../assets/icons/common/right_arrow.mjs";import s from"../../../assets/icons/detail/min-collection.mjs";import c from"../../../assets/icons/empty/img-empty-nodata.mjs";import l from"../../ui/popup.mjs";import{CreateCollectionSheet as u}from"./create-collection-sheet.mjs";import d from"../page-loading/index.mjs";import{useCallback as f,useEffect as p,useMemo as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";const x=e(e=>({isOpen:!1,options:null,open:t=>e(e=>({...e,isOpen:!0,options:t})),close:()=>e(e=>({...e,isOpen:!1,options:null}))}),{name:`collection-popup-store`,persist:!1});function S(e){return{id:String(e?.collection_id||``),cover:e?.cover_image||``,title:e?.title||``,contentCount:Number(e?.content_count||0)}}function C(e){let x=b(`components.common.collectionPopup`),{visible:C,mode:w=`favorite`,onClose:T,toCreateCollection:E,onCollect:D}=e,{userInfo:O,userId:k}=t(),[A,j]=h(!0),[M,N]=h([]),[P,F]=h(!0),[I,L]=h(1),[R,z]=h(!1),B=m(()=>String(k||O?.userId||`0`),[k,O?.userId]),V=f(async e=>{if(!B||!e?.reset&&(!P||A&&M.length>0))return;let t=e?.nextPage??I;j(!0);try{let e=await n({page:t,page_size:10});if(e.code!==0){F(!1);return}let r=(e.data?.data?.collections??[]).map(S);N(e=>t===1?r:[...e,...r]),e.data?.data?.has_more===!1||r.length<10?F(!1):(F(!0),L(t+1))}catch(e){console.error(`获取合集列表失败:`,e),F(!1)}finally{j(!1)}},[M.length,P,A,I,10,B]);p(()=>{C&&V()},[V,C]);let[H,U]=h(!0);p(()=>{U(!A&&M.length===0)},[M.length,A]);function W(e){e||T?.()}function G(){if(w===`select`){z(!0);return}E?.()}function K(e){D?.(e),w===`favorite`&&y.message(x(`collectSuccess`))}function q(e){return function(){K(e)}}function J(){return V()}let Y=f(()=>{F(!0),L(1),N([]),V({nextPage:1,reset:!0})},[V]);return v(l,{open:C,onOpenChange:W,showCloseButton:!1,className:`z-[1000] h-[450px] rounded-t-[16px] bg-bg1 p-0 text-text1`,children:[v(`div`,{className:`bg-bg1 h-[450px] pb-[24px] flex flex-col`,children:[v(`div`,{className:`w-full px-[16px] relative`,children:[v(`div`,{className:`w-full h-[60px] flex items-center justify-center`,children:[_(`button`,{type:`button`,className:`cursor-pointer absolute w-[48px] h-[60px] left-0 top-0 flex items-center justify-center focus:outline-none`,onClick:T,children:_(a,{className:`w-[16px] h-[16px] text-text1`})}),_(`div`,{className:`text-[18px] text-text1 font-semibold`,children:x(w===`select`?`selectTitle`:`favoriteToCollectionTitle`)}),w===`select`&&_(`button`,{type:`button`,className:`absolute right-0 top-0 h-[60px] px-[16px] text-[14px] text-theme5 font-semibold`,onClick:G,children:x(`newCollection`)})]}),w===`favorite`&&v(`button`,{type:`button`,className:`cursor-pointer w-full h-[48px] rounded-[16px] px-[12px] border border-solid border-line1 flex items-center justify-between`,onClick:G,children:[v(`div`,{className:`flex items-center`,children:[_(s,{className:`w-[24px] h-[24px]`}),_(`span`,{className:`ml-[8px] text-text1 text-[14px] font-semibold leading-[18px]`,children:x(`createCollection`)})]}),_(o,{className:`text-text2 w-[12px] h-[12px]`})]})]}),_(`div`,{className:`w-full px-[16px] flex-1 h-[0] overflow-y-auto`,children:A?_(d,{}):H?v(`div`,{className:`flex flex-col items-center justify-center py-[48px] text-text2`,children:[_(c,{className:`w-[120px] h-[120px]`}),v(`span`,{className:`mt-[16px] text-[14px]`,children:[x(`noCollections`),`,`,x(`createCollectionHint`)]})]}):v(g,{children:[M.map((e,t)=>v(`button`,{type:`button`,className:`cursor-pointer w-full h-[92px] flex items-center text-left`,onClick:q(e.id),children:[_(`div`,{className:`w-[60px] h-[60px] bg-bg2 rounded-[8px] overflow-hidden relative`,children:e.cover&&_(r,{src:e.cover,fill:!0,objectFit:`cover`,alt:x(`coverAlt`)})}),v(`div`,{className:`ml-[12px] flex flex-col justify-center`,children:[_(`span`,{className:`max-w-[200px] text-text1 text-[18px] leading-[24px] font-semibold line-clamp-1`,children:e.title||``}),v(`span`,{className:`mt-[3px] text-text2 text-[14px]`,children:[e.contentCount||0,x(`postsCountSuffix`)]})]})]},e.id||`collection-${t}`)),M.length>0&&_(i,{loadMore:J,hasMore:P})]})})]}),_(u,{visible:R,showDescription:!1,onClose:()=>z(!1),onCreated:()=>{z(!1),Y()}})]})}function w(){let{isOpen:e,options:t,close:n}=x();return e?_(C,{visible:e,mode:t?.mode,onClose:()=>{n(),t?.onClose?.()},toCreateCollection:()=>{n(),t?.toCreateCollection?.()},onCollect:e=>{n(),t?.onCollect?.(e)}}):null}var T=class{static show(e){x.getState().open(e)}static clear(){x.getState().close()}};export{C as CollectionPopupComponent,w as CollectionPopupHost,T as default};
2
+ "use client";import{createStore as e}from"../../../store/create-store.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetUserCollections as n}from"../../../service/generated/client.mjs";import{Image as r}from"../../ui/image.mjs";import{InfiniteScroll as i}from"../../ui/infinite-scroll.mjs";import a from"../../../assets/icons/close.mjs";import o from"../../../assets/icons/common/right_arrow.mjs";import s from"../../../assets/icons/detail/min-collection.mjs";import c from"../../../assets/icons/empty/img-empty-nodata.mjs";import l from"../../ui/popup.mjs";import{CreateCollectionSheet as u}from"./create-collection-sheet.mjs";import d from"../page-loading/index.mjs";import{toast as f}from"sonner";import{useCallback as p,useEffect as m,useMemo as h,useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";const x=e(e=>({isOpen:!1,options:null,open:t=>e(e=>({...e,isOpen:!0,options:t})),close:()=>e(e=>({...e,isOpen:!1,options:null}))}),{name:`collection-popup-store`,persist:!1});function S(e){return{id:String(e?.collection_id||``),cover:e?.cover_image||``,title:e?.title||``,contentCount:Number(e?.content_count||0)}}function C(e){let x=b(`components.common.collectionPopup`),{visible:C,mode:w=`favorite`,onClose:T,toCreateCollection:E,onCollect:D}=e,{userInfo:O,userId:k}=t(),[A,j]=g(!0),[M,N]=g([]),[P,F]=g(!0),[I,L]=g(1),[R,z]=g(!1),B=h(()=>String(k||O?.userId||`0`),[k,O?.userId]),V=p(async e=>{if(!B||!e?.reset&&(!P||A&&M.length>0))return;let t=e?.nextPage??I;j(!0);try{let e=await n({page:t,page_size:10});if(e.code!==0){F(!1);return}let r=(e.data?.data?.collections??[]).map(S);N(e=>t===1?r:[...e,...r]),e.data?.data?.has_more===!1||r.length<10?F(!1):(F(!0),L(t+1))}catch(e){console.error(`获取合集列表失败:`,e),F(!1)}finally{j(!1)}},[M.length,P,A,I,10,B]);m(()=>{C&&V()},[V,C]);let[H,U]=g(!0);m(()=>{U(!A&&M.length===0)},[M.length,A]);function W(e){e||T?.()}function G(){if(w===`select`){z(!0);return}E?.()}function K(e){D?.(e),w===`favorite`&&f.message(x(`collectSuccess`))}function q(e){return function(){K(e)}}function J(){return V()}let Y=p(()=>{F(!0),L(1),N([]),V({nextPage:1,reset:!0})},[V]);return y(l,{open:C,onOpenChange:W,showCloseButton:!1,className:`z-[1000] h-[450px] rounded-t-[16px] bg-bg1 p-0 text-text1`,children:[y(`div`,{className:`bg-bg1 h-[450px] pb-[24px] flex flex-col`,children:[y(`div`,{className:`w-full px-[16px] relative`,children:[y(`div`,{className:`w-full h-[60px] flex items-center justify-center`,children:[v(`button`,{type:`button`,className:`cursor-pointer absolute w-[48px] h-[60px] left-0 top-0 flex items-center justify-center focus:outline-none`,onClick:T,children:v(a,{className:`w-[16px] h-[16px] text-text1`})}),v(`div`,{className:`text-[18px] text-text1 font-semibold`,children:x(w===`select`?`selectTitle`:`favoriteToCollectionTitle`)}),w===`select`&&v(`button`,{type:`button`,className:`absolute right-0 top-0 h-[60px] px-[16px] text-[14px] text-theme5 font-semibold`,onClick:G,children:x(`newCollection`)})]}),w===`favorite`&&y(`button`,{type:`button`,className:`cursor-pointer w-full h-[48px] rounded-[16px] px-[12px] border border-solid border-line1 flex items-center justify-between`,onClick:G,children:[y(`div`,{className:`flex items-center`,children:[v(s,{className:`w-[24px] h-[24px]`}),v(`span`,{className:`ml-[8px] text-text1 text-[14px] font-semibold leading-[18px]`,children:x(`createCollection`)})]}),v(o,{className:`text-text2 w-[12px] h-[12px]`})]})]}),v(`div`,{className:`w-full px-[16px] flex-1 h-[0] overflow-y-auto`,children:A?v(d,{}):H?y(`div`,{className:`flex flex-col items-center justify-center py-[48px] text-text2`,children:[v(c,{className:`w-[120px] h-[120px]`}),y(`span`,{className:`mt-[16px] text-[14px]`,children:[x(`noCollections`),`,`,x(`createCollectionHint`)]})]}):y(_,{children:[M.map((e,t)=>y(`button`,{type:`button`,className:`cursor-pointer w-full h-[92px] flex items-center text-left`,onClick:q(e.id),children:[v(`div`,{className:`w-[60px] h-[60px] bg-bg2 rounded-[8px] overflow-hidden relative`,children:e.cover&&v(r,{src:e.cover,fill:!0,objectFit:`cover`,alt:x(`coverAlt`)})}),y(`div`,{className:`ml-[12px] flex flex-col justify-center`,children:[v(`span`,{className:`max-w-[200px] text-text1 text-[18px] leading-[24px] font-semibold line-clamp-1`,children:e.title||``}),y(`span`,{className:`mt-[3px] text-text2 text-[14px]`,children:[e.contentCount||0,x(`postsCountSuffix`)]})]})]},e.id||`collection-${t}`)),M.length>0&&v(i,{loadMore:J,hasMore:P})]})})]}),v(u,{visible:R,showDescription:!1,onClose:()=>z(!1),onCreated:()=>{z(!1),Y()}})]})}function w(){let{isOpen:e,options:t,close:n}=x();return e?v(C,{visible:e,mode:t?.mode,onClose:()=>{n(),t?.onClose?.()},toCreateCollection:()=>{n(),t?.toCreateCollection?.()},onCollect:e=>{n(),t?.onCollect?.(e)}}):null}var T=class{static show(e){x.getState().open(e)}static clear(){x.getState().close()}};export{C as CollectionPopupComponent,w as CollectionPopupHost,T as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useFollowIdsState as e}from"../../../store/modules/follow-ids-store.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{pInteractionFollow as n,pInteractionUnfollow as r}from"../../../service/generated/client.mjs";import{useOpenLoginAsync as i}from"../../../hooks/use-auth.mjs";import a from"../../../assets/icons/common/follow_sel.mjs";import o from"../../../assets/icons/common/follow_user.mjs";import{UnfollowConfirmDialog as s}from"./unfollow-confirm-dialog.mjs";import{useCallback as c,useEffect as l,useMemo as u,useState as d}from"react";import{Fragment as f,jsx as p,jsxs as m}from"react/jsx-runtime";import{toast as h}from"sonner";import{useTranslations as g}from"next-intl";function _({userId:_,hasFollow:v=!1,onChange:y}){let b=g(`components.common.followButton`),[x,S]=d(v),[C,w]=d(!1),{isLogin:T,userInfo:E,userId:D}=t(),{followIds:O}=e(),k=D||E?.userId||``,A=i(),j=u(()=>E?.userId===_,[E,_]),M=u(()=>v||O.includes(_),[_,O,v]);l(()=>{S(M)},[M]);let N=c(async()=>{if(!_)return;if(!k){h.error(b(`loginRequired`));return}try{if(x){let e=await r({follower_id:k,followee_id:_});if(e.code!==0){h.error(e.message||b(`unfollowFailed`));return}}else{let e=await n({follower_id:k,followee_id:_});if(e.code!==0){h.error(e.message||b(`followFailed`));return}}window.sensors?.track(`detail_follow_click`,{object_id:``,action:x?`取消关注`:`关注`,author_id:_})}catch(e){console.error(`关注或取消关注失败:`,e),h.error(b(x?`unfollowFailed`:`followFailed`));return}let{followIds:t,setFollowIds:i}=e.getState(),a=new Set(t);x?a.delete(_):a.add(_),i(Array.from(a)),S(!x),y?.(!x)},[k,x,y,b,_]);function P(){w(!1),N()}function F(){w(!1)}let I=c(()=>{if(!T){A().then(e=>{e||h.error(b(`loginFailed`))});return}if(x){w(!0);return}N()},[N,x,T,A,b]);return j?null:m(f,{children:[p(`div`,{className:` h-[28px] rounded-[14px] px-[8px] border-[1px] border-solid cursor-pointer flex items-center justify-center ${x?`border-text3`:`border-theme5`}`,onClick:I,children:x?m(f,{children:[p(a,{className:`w-[12px] h-[12px] text-text3 shrink-0`}),p(`span`,{className:`text-text3 text-[12px] leading-[18px] ml-[4px] shrink-0`,children:b(`following`)})]}):m(f,{children:[p(o,{className:`block w-[12px] h-[12px] text-theme5 shrink-0`}),p(`span`,{className:`block text-theme5 text-[12px] leading-[18px] ml-[4px] shrink-0`,children:b(`follow`)})]})}),p(s,{open:C,onOpenChange:w,onCancel:F,onConfirm:P})]})}export{_ as default};
2
+ "use client";import{useFollowIdsState as e}from"../../../store/modules/follow-ids-store.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{pInteractionFollow as n,pInteractionUnfollow as r}from"../../../service/generated/client.mjs";import{useOpenLoginAsync as i}from"../../../hooks/use-auth.mjs";import a from"../../../assets/icons/common/follow_sel.mjs";import o from"../../../assets/icons/common/follow_user.mjs";import{UnfollowConfirmDialog as s}from"./unfollow-confirm-dialog.mjs";import{toast as c}from"sonner";import{useCallback as l,useEffect as u,useMemo as d,useState as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";import{useTranslations as g}from"next-intl";function _({userId:_,hasFollow:v=!1,onChange:y}){let b=g(`components.common.followButton`),[x,S]=f(v),[C,w]=f(!1),{isLogin:T,userInfo:E,userId:D}=t(),{followIds:O}=e(),k=D||E?.userId||``,A=i(),j=d(()=>E?.userId===_,[E,_]),M=d(()=>v||O.includes(_),[_,O,v]);u(()=>{S(M)},[M]);let N=l(async()=>{if(!_)return;if(!k){c.error(b(`loginRequired`));return}try{if(x){let e=await r({follower_id:k,followee_id:_});if(e.code!==0){c.error(e.message||b(`unfollowFailed`));return}}else{let e=await n({follower_id:k,followee_id:_});if(e.code!==0){c.error(e.message||b(`followFailed`));return}}window.sensors?.track(`detail_follow_click`,{object_id:``,action:x?`取消关注`:`关注`,author_id:_})}catch(e){console.error(`关注或取消关注失败:`,e),c.error(b(x?`unfollowFailed`:`followFailed`));return}let{followIds:t,setFollowIds:i}=e.getState(),a=new Set(t);x?a.delete(_):a.add(_),i(Array.from(a)),S(!x),y?.(!x)},[k,x,y,b,_]);function P(){w(!1),N()}function F(){w(!1)}let I=l(()=>{if(!T){A().then(e=>{e||c.error(b(`loginFailed`))});return}if(x){w(!0);return}N()},[N,x,T,A,b]);return j?null:h(p,{children:[m(`div`,{className:` h-[28px] rounded-[14px] px-[8px] border-[1px] border-solid cursor-pointer flex items-center justify-center ${x?`border-text3`:`border-theme5`}`,onClick:I,children:x?h(p,{children:[m(a,{className:`w-[12px] h-[12px] text-text3 shrink-0`}),m(`span`,{className:`text-text3 text-[12px] leading-[18px] ml-[4px] shrink-0`,children:b(`following`)})]}):h(p,{children:[m(o,{className:`block w-[12px] h-[12px] text-theme5 shrink-0`}),m(`span`,{className:`block text-theme5 text-[12px] leading-[18px] ml-[4px] shrink-0`,children:b(`follow`)})]})}),m(s,{open:C,onOpenChange:w,onCancel:F,onConfirm:P})]})}export{_ as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Image as t}from"../../ui/image.mjs";import{Box as n}from"../../ui/box.mjs";import{Text as r}from"../../ui/text.mjs";import{Time as i}from"../../ui/time.mjs";import{FollowButton as a}from"../../pages/(follow)/_components/follow-button/index.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{usePathname as c}from"next/navigation";function l({className:l,infoData:u,onChangeFollow:d,rightChild:f}){let p=c(),m=e(),h=u?.author?.user_id||``,g=u?.author?.nickname||``,_=u?.show_at||u?.create_time;return o(n,{className:`w-full mb-[8px] pt-[16px] px-[12px] ${l}`,children:s(n,{className:`w-full flex items-center justify-between`,children:[s(n,{className:`flex items-center cursor-pointer`,onClick:e=>{e.stopPropagation(),e.preventDefault();let t=`/profile/${h}`;p!==t&&m.push(t)},children:[o(n,{className:`w-[36px] h-[36px] mr-[8px] rounded-full bg-bg2 overflow-hidden`,children:u?.author?.avatar&&o(t,{width:36,height:36,src:u?.author?.avatar,className:`w-full h-full object-cover`,alt:`avatar`})}),s(n,{className:`flex flex-col`,children:[o(r,{className:`block text-text1 text-[14px] leading-[18px] max-w-[220px] overflow-hidden whitespace-nowrap text-ellipsis`,children:g}),o(n,{className:`mt-[4px] h-[14px] leading-[14px]`,children:o(i,{mode:`relative`,value:_,className:`text-text3 text-[12px]`})})]})]}),o(n,{onClick:e=>{e.stopPropagation(),e.preventDefault()},children:f||(h?o(a,{userId:h,hasFollow:!1,onChange:d}):null)})]})})}export{l as default};
2
+ "use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Image as t}from"../../ui/image.mjs";import{Box as n}from"../../ui/box.mjs";import{Text as r}from"../../ui/text.mjs";import{Time as i}from"../../ui/time.mjs";import{FollowButton as a}from"../../pages/(follow)/_components/follow-button/index.mjs";import{usePathname as o}from"next/navigation";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({className:l,infoData:u,onChangeFollow:d,rightChild:f}){let p=o(),m=e(),h=u?.author?.user_id||``,g=u?.author?.nickname||``,_=u?.show_at||u?.create_time;return s(n,{className:`w-full mb-[8px] pt-[16px] px-[12px] ${l}`,children:c(n,{className:`w-full flex items-center justify-between`,children:[c(n,{className:`flex items-center cursor-pointer`,onClick:e=>{e.stopPropagation(),e.preventDefault();let t=`/profile/${h}`;p!==t&&m.push(t)},children:[s(n,{className:`w-[36px] h-[36px] mr-[8px] rounded-full bg-bg2 overflow-hidden`,children:u?.author?.avatar&&s(t,{width:36,height:36,src:u?.author?.avatar,className:`w-full h-full object-cover`,alt:`avatar`})}),c(n,{className:`flex flex-col`,children:[s(r,{className:`block text-text1 text-[14px] leading-[18px] max-w-[220px] overflow-hidden whitespace-nowrap text-ellipsis`,children:g}),s(n,{className:`mt-[4px] h-[14px] leading-[14px]`,children:s(i,{mode:`relative`,value:_,className:`text-text3 text-[12px]`})})]})]}),s(n,{onClick:e=>{e.stopPropagation(),e.preventDefault()},children:f||(h?s(a,{userId:h,hasFollow:!1,onChange:d}):null)})]})})}export{l as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../ui/box.mjs";import{List as t}from"../../../ui/list.mjs";import{Text as n}from"../../../ui/text.mjs";import{normalizeTimeToMilliseconds as r}from"../../../ui/time.mjs";import{PostListItemSkeleton as i}from"../../skeleton/post-list-item-skeleton.mjs";import{PostListItem as a}from"./post-list-item.mjs";import{useIsClient as o}from"foxact/use-is-client";import{useMemo as s}from"react";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";import f from"next/link";import{orderBy as p}from"lodash-es";function m(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function h(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return i.setDate(i.getDate()-1),n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function g(r){let g=d(`components.ui.list`),_=o(),{list:v,loading:y,hasMore:b=!1,loadMore:x,isEditMode:S,selectedIds:C,onToggleSelection:w,emptyText:T}=r,E=s(()=>p(v,[`publishTime`],[`desc`]),[v]),{todayList:D,yesterdayList:O,earlierList:k}=s(()=>{if(!_)return{todayList:[],yesterdayList:[],earlierList:E};let e=[],t=[],n=[];for(let r of v)m(r.publishTime)?e.push(r):h(r.publishTime)?t.push(r):n.push(r);return{todayList:p(e,[`publishTime`],[`desc`]),yesterdayList:p(t,[`publishTime`],[`desc`]),earlierList:p(n,[`publishTime`],[`desc`])}},[_,v,E]),A=!!y&&v.length===0,j=_;return A?l(e,{className:`bg-bg1`,children:Array.from({length:6}).map((e,t)=>l(i,{isEditMode:S},`post-list-item-skeleton-${t}`))}):u(t,{loading:y,loadMore:x,hasMore:b,empty:`no-content`,emptyText:T||g(`postList.empty`),children:[j&&D.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`postList.today`)})}),D.map(e=>S?l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)},e.id):l(f,{href:`/post/${e.id}`,children:l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)})},e.id))]}),j&&O.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`postList.yesterday`)})}),O.map(e=>S?l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)},e.id):l(f,{href:`/post/${e.id}`,children:l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)})},e.id))]}),k.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`postList.earlier`)})}),k.map(e=>S?l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)},e.id):l(f,{href:`/post/${e.id}`,children:l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)})},e.id))]})]})}export{g as PostList};
2
+ "use client";import{Box as e}from"../../../ui/box.mjs";import{List as t}from"../../../ui/list.mjs";import{Text as n}from"../../../ui/text.mjs";import{normalizeTimeToMilliseconds as r}from"../../../ui/time.mjs";import{PostListItemSkeleton as i}from"../../skeleton/post-list-item-skeleton.mjs";import{PostListItem as a}from"./post-list-item.mjs";import{useMemo as o}from"react";import{useIsClient as s}from"foxact/use-is-client";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";import f from"next/link";import{orderBy as p}from"lodash-es";function m(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function h(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return i.setDate(i.getDate()-1),n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function g(r){let g=d(`components.ui.list`),_=s(),{list:v,loading:y,hasMore:b=!1,loadMore:x,isEditMode:S,selectedIds:C,onToggleSelection:w,emptyText:T}=r,E=o(()=>p(v,[`publishTime`],[`desc`]),[v]),{todayList:D,yesterdayList:O,earlierList:k}=o(()=>{if(!_)return{todayList:[],yesterdayList:[],earlierList:E};let e=[],t=[],n=[];for(let r of v)m(r.publishTime)?e.push(r):h(r.publishTime)?t.push(r):n.push(r);return{todayList:p(e,[`publishTime`],[`desc`]),yesterdayList:p(t,[`publishTime`],[`desc`]),earlierList:p(n,[`publishTime`],[`desc`])}},[_,v,E]),A=!!y&&v.length===0,j=_;return A?l(e,{className:`bg-bg1`,children:Array.from({length:6}).map((e,t)=>l(i,{isEditMode:S},`post-list-item-skeleton-${t}`))}):u(t,{loading:y,loadMore:x,hasMore:b,empty:`no-content`,emptyText:T||g(`postList.empty`),children:[j&&D.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`postList.today`)})}),D.map(e=>S?l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)},e.id):l(f,{href:`/post/${e.id}`,children:l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)})},e.id))]}),j&&O.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`postList.yesterday`)})}),O.map(e=>S?l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)},e.id):l(f,{href:`/post/${e.id}`,children:l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)})},e.id))]}),k.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`postList.earlier`)})}),k.map(e=>S?l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)},e.id):l(f,{href:`/post/${e.id}`,children:l(a,{...e,isEditMode:S,isSelected:C?.has(e.id),onToggle:()=>w?.(e.id)})},e.id))]})]})}export{g as PostList};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{pInteractionCancelDislike as t,pInteractionCancelLike as n,pInteractionDislike as r,pInteractionLike as i}from"../../../../service/generated/client.mjs";import{useRequireLogin as a}from"../../../../hooks/use-auth.mjs";import{ShareDrawer as o}from"../../share-popup/share-drawer.mjs";import{SharePlatformEnum as s}from"../../../../types/share.mjs";import c from"../../../../utils/share-manager.mjs";import{CommentIcon as l}from"../../icons/comment.mjs";import{DeleteIcon as u}from"../../icons/delete.mjs";import{ShareIcon as d}from"../../icons/share.mjs";import f from"../../../../assets/icons/dislike.mjs";import p from"../../../../assets/icons/dislike_sel.mjs";import m from"../../../../assets/icons/like.mjs";import h from"../../../../assets/icons/like_sel.mjs";import{useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";import{toast as b}from"sonner";import{useTranslations as x}from"next-intl";function S(t){let r=x(`components.ui.list.userActivityList`),{contentId:o,count:s=0,isLiked:c=!1,isDisliked:l=!1,dislikeCount:u=0,onLikeSuccess:d,onSuccess:f,className:p=``}=t,[_,S]=g(!1),C=e(e=>e.userId),w=a(),T=c?Math.max(1,s):s>0?s:r(`userActivityListActions.like`);return y(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer ${_?`opacity-50 cursor-not-allowed`:``} ${c?`text-red-500`:`text-text3`} ${p}`,onClick:async()=>{w(async()=>{if(_)return;S(!0);let e={isLiked:c,count:s,isDisliked:l,dislikeCount:u},t=!c,a=Math.max(0,t?s+1:s-1),p=t&&l?!1:l,m=t&&l?Math.max(0,u-1):u;d?.({isLiked:t,count:a,isDisliked:p,dislikeCount:m});try{let t=c?await n({id:o,user_id:C,content_type:2}):await i({id:o,user_id:C,content_type:2});t?.code===0||t?.data?f?.():(d?.({isLiked:e.isLiked,count:e.count,isDisliked:e.isDisliked,dislikeCount:e.dislikeCount}),b.error(t?.message||r(`userActivityListActions.likeFailed`)))}catch(t){console.error(`点赞操作失败:`,t),d?.({isLiked:e.isLiked,count:e.count,isDisliked:e.isDisliked,dislikeCount:e.dislikeCount}),b.error(r(`userActivityListActions.likeFailed`))}finally{S(!1)}})},disabled:_,children:[v(c?h:m,{}),v(`span`,{className:`text-sm`,children:T})]})}function C(n){let i=x(`components.ui.list.userActivityList`),{contentId:o,count:s=0,isDisliked:c=!1,isLiked:l=!1,likeCount:u=0,onDislikeSuccess:d,onSuccess:m,className:h=``}=n,[_,b]=g(!1),S=e(e=>e.userId),C=a();return y(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer ${_?`opacity-50 cursor-not-allowed`:``} ${c?`text-primary`:`text-text3`} ${h}`,onClick:async()=>{C(async()=>{if(_)return;b(!0);let e={isDisliked:c,count:s,isLiked:l,likeCount:u},n=!c,i=Math.max(0,n?s+1:s-1),a=n&&l?!1:l,f=n&&l?Math.max(0,u-1):u;d?.({isDisliked:n,count:i,isLiked:a,likeCount:f});try{(c?await t({id:o,user_id:S,content_type:2}):await r({id:o,user_id:S,content_type:2})).data?m?.():d?.({isDisliked:e.isDisliked,count:e.count,isLiked:e.isLiked,likeCount:e.likeCount})}catch(t){console.error(`点踩操作失败:`,t),d?.({isDisliked:e.isDisliked,count:e.count,isLiked:e.isLiked,likeCount:e.likeCount})}finally{b(!1)}})},disabled:_,children:[v(c?p:f,{}),v(`span`,{className:`text-sm`,children:s||i(`userActivityListActions.dislike`)})]})}function w(e){let t=x(`components.ui.list.userActivityList`),{count:n=0,onClick:r,className:i=``}=e,a=n>0?n:t(`userActivityListActions.comment`);return y(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer text-text3 ${i}`,onClick:r,children:[v(l,{}),v(`span`,{className:`text-sm`,children:a})]})}function T(e){let t=x(`components.ui.list.userActivityList`),{contentId:n,userId:r,isCollected:i,onShareSuccess:a,onClick:l,className:u=``,onCollect:f,onUncollect:p}=e,[m,h]=g(!1);function b(){l?.(),h(!0)}function S(){h(!1),a?.()}function C(){c.showSharePopup({type:s.WECHAT,data:{id:n},copyUrl:`${window.location.origin}/post/${n}`}),S()}function w(){c.showSharePopup({type:s.QQ,data:{id:n},copyUrl:`${window.location.origin}/post/${n}`}),S()}function T(){c.showSharePopup({type:s.WECHAT_MOMENTS,data:{id:n},copyUrl:`${window.location.origin}/post/${n}`}),S()}return y(_,{children:[y(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer text-text3 ${u}`,onClick:b,children:[v(d,{}),v(`span`,{className:`text-sm`,children:t(`userActivityListActions.share`)})]}),v(o,{isCollected:i,open:m,onOpenChange:h,onShareWeChat:C,onShareQQ:w,onShareMoments:T,onCollect:f,onUncollect:p})]})}function E(e){let{onClick:t,disabled:n=!1,className:r=``}=e;return v(`button`,{className:`p-1 ${n?`cursor-not-allowed text-text3 opacity-60`:`cursor-pointer text-text3`} ${r}`,onClick:n?void 0:t,disabled:n,children:v(u,{})})}export{w as ActivityCommentButton,E as ActivityDeleteButton,C as ActivityDislikeButton,S as ActivityLikeButton,T as ActivityShareButton};
2
+ "use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{pInteractionCancelDislike as t,pInteractionCancelLike as n,pInteractionDislike as r,pInteractionLike as i}from"../../../../service/generated/client.mjs";import{useRequireLogin as a}from"../../../../hooks/use-auth.mjs";import{ShareDrawer as o}from"../../share-popup/share-drawer.mjs";import{SharePlatformEnum as s}from"../../../../types/share.mjs";import c from"../../../../utils/share-manager.mjs";import{CommentIcon as l}from"../../icons/comment.mjs";import{DeleteIcon as u}from"../../icons/delete.mjs";import{ShareIcon as d}from"../../icons/share.mjs";import f from"../../../../assets/icons/dislike.mjs";import p from"../../../../assets/icons/dislike_sel.mjs";import m from"../../../../assets/icons/like.mjs";import h from"../../../../assets/icons/like_sel.mjs";import{toast as g}from"sonner";import{useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";function S(t){let r=x(`components.ui.list.userActivityList`),{contentId:o,count:s=0,isLiked:c=!1,isDisliked:l=!1,dislikeCount:u=0,onLikeSuccess:d,onSuccess:f,className:p=``}=t,[v,S]=_(!1),C=e(e=>e.userId),w=a(),T=c?Math.max(1,s):s>0?s:r(`userActivityListActions.like`);return b(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer ${v?`opacity-50 cursor-not-allowed`:``} ${c?`text-red-500`:`text-text3`} ${p}`,onClick:async()=>{w(async()=>{if(v)return;S(!0);let e={isLiked:c,count:s,isDisliked:l,dislikeCount:u},t=!c,a=Math.max(0,t?s+1:s-1),p=t&&l?!1:l,m=t&&l?Math.max(0,u-1):u;d?.({isLiked:t,count:a,isDisliked:p,dislikeCount:m});try{let t=c?await n({id:o,user_id:C,content_type:2}):await i({id:o,user_id:C,content_type:2});t?.code===0||t?.data?f?.():(d?.({isLiked:e.isLiked,count:e.count,isDisliked:e.isDisliked,dislikeCount:e.dislikeCount}),g.error(t?.message||r(`userActivityListActions.likeFailed`)))}catch(t){console.error(`点赞操作失败:`,t),d?.({isLiked:e.isLiked,count:e.count,isDisliked:e.isDisliked,dislikeCount:e.dislikeCount}),g.error(r(`userActivityListActions.likeFailed`))}finally{S(!1)}})},disabled:v,children:[y(c?h:m,{}),y(`span`,{className:`text-sm`,children:T})]})}function C(n){let i=x(`components.ui.list.userActivityList`),{contentId:o,count:s=0,isDisliked:c=!1,isLiked:l=!1,likeCount:u=0,onDislikeSuccess:d,onSuccess:m,className:h=``}=n,[g,v]=_(!1),S=e(e=>e.userId),C=a();return b(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer ${g?`opacity-50 cursor-not-allowed`:``} ${c?`text-primary`:`text-text3`} ${h}`,onClick:async()=>{C(async()=>{if(g)return;v(!0);let e={isDisliked:c,count:s,isLiked:l,likeCount:u},n=!c,i=Math.max(0,n?s+1:s-1),a=n&&l?!1:l,f=n&&l?Math.max(0,u-1):u;d?.({isDisliked:n,count:i,isLiked:a,likeCount:f});try{(c?await t({id:o,user_id:S,content_type:2}):await r({id:o,user_id:S,content_type:2})).data?m?.():d?.({isDisliked:e.isDisliked,count:e.count,isLiked:e.isLiked,likeCount:e.likeCount})}catch(t){console.error(`点踩操作失败:`,t),d?.({isDisliked:e.isDisliked,count:e.count,isLiked:e.isLiked,likeCount:e.likeCount})}finally{v(!1)}})},disabled:g,children:[y(c?p:f,{}),y(`span`,{className:`text-sm`,children:s||i(`userActivityListActions.dislike`)})]})}function w(e){let t=x(`components.ui.list.userActivityList`),{count:n=0,onClick:r,className:i=``}=e,a=n>0?n:t(`userActivityListActions.comment`);return b(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer text-text3 ${i}`,onClick:r,children:[y(l,{}),y(`span`,{className:`text-sm`,children:a})]})}function T(e){let t=x(`components.ui.list.userActivityList`),{contentId:n,userId:r,isCollected:i,onShareSuccess:a,onClick:l,className:u=``,onCollect:f,onUncollect:p}=e,[m,h]=_(!1);function g(){l?.(),h(!0)}function S(){h(!1),a?.()}function C(){c.showSharePopup({type:s.WECHAT,data:{id:n},copyUrl:`${window.location.origin}/post/${n}`}),S()}function w(){c.showSharePopup({type:s.QQ,data:{id:n},copyUrl:`${window.location.origin}/post/${n}`}),S()}function T(){c.showSharePopup({type:s.WECHAT_MOMENTS,data:{id:n},copyUrl:`${window.location.origin}/post/${n}`}),S()}return b(v,{children:[b(`button`,{className:`flex justify-center items-center gap-1.5 p-2 cursor-pointer text-text3 ${u}`,onClick:g,children:[y(d,{}),y(`span`,{className:`text-sm`,children:t(`userActivityListActions.share`)})]}),y(o,{isCollected:i,open:m,onOpenChange:h,onShareWeChat:C,onShareQQ:w,onShareMoments:T,onCollect:f,onUncollect:p})]})}function E(e){let{onClick:t,disabled:n=!1,className:r=``}=e;return y(`button`,{className:`p-1 ${n?`cursor-not-allowed text-text3 opacity-60`:`cursor-pointer text-text3`} ${r}`,onClick:n?void 0:t,disabled:n,children:y(u,{})})}export{w as ActivityCommentButton,E as ActivityDeleteButton,C as ActivityDislikeButton,S as ActivityLikeButton,T as ActivityShareButton};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Image as t}from"../../../ui/image.mjs";import{Avatar as n,AvatarFallback as r,AvatarImage as i}from"../../../ui/avatar.mjs";import{Box as a}from"../../../ui/box.mjs";import{Checkbox as o}from"../../../ui/checkbox.mjs";import{Text as s}from"../../../ui/text.mjs";import{Time as c}from"../../../ui/time.mjs";import{useMediaPreview as l}from"../../media-preview/index.mjs";import{useContentOperate as u}from"../../../../hooks/use-content-operate.mjs";import d from"../../../../assets/icons/detail/video_play.mjs";import{ActivityCommentButton as f,ActivityDeleteButton as p,ActivityDislikeButton as ee,ActivityLikeButton as te,ActivityShareButton as m}from"./user-activity-list-actions.mjs";import{useEffect as h,useRef as ne,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";const x=[],re={post:2};function S({medias:e=x,className:n=``,onItemClick:r}){let i=b(`components.ui.list.userActivityList`),o=(e||[]).filter(Boolean).slice(0,9);if(!o.length)return null;function s(e){r?.(e)}function c(e,n,o){let{is_video:c,media_url:l,cover_image:u}=e||{},f=!!c,p=f?u||l||``:l||``;return p?v(a,{className:o||`relative w-full h-full`,onClick:e=>{r&&(e.stopPropagation(),e.preventDefault(),s(n))},children:[_(t,{src:p,alt:i(`userActivityListItem.mediaAlt`),fill:!0,className:`object-cover`}),f&&_(a,{className:`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-[rgba(0,0,0,0.5)] rounded-full`,children:_(d,{width:36,height:36})})]},n):null}if(o.length===1){let{is_video:e,media_url:t,cover_image:r}=o[0]||{};return _(a,{className:n,children:_(a,{className:`w-full rounded-xl overflow-hidden`,children:c({is_video:e,media_url:t,cover_image:r,__src:e?r||t||``:t||``},0,`relative w-full aspect-square`)})})}return o.length===2?_(a,{className:n,children:_(a,{className:`w-full flex gap-0.5 rounded-xl overflow-hidden`,children:o.map((e,t)=>_(a,{className:`flex-1 aspect-square relative`,children:c(e,t)},t))})}):o.length===3?_(a,{className:n,children:v(a,{className:`w-full h-89.25 flex gap-0.5 rounded-xl overflow-hidden`,children:[_(a,{className:`w-[56.65%] h-full relative`,children:c(o[0],0)}),_(a,{className:`flex-1 flex flex-col gap-0.5`,children:o.slice(1).map((e,t)=>_(a,{className:`w-full flex-1 relative`,children:c(e,t+1)},t))})]})}):o.length===4?_(a,{className:n,children:_(a,{className:`w-full h-89.25 rounded-xl overflow-hidden grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))})}):o.length===5?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[_(a,{className:`w-full h-49.5 flex gap-0.5`,children:o.slice(0,2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),_(a,{className:`w-full h-33.5 flex gap-0.5`,children:o.slice(2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t+2)},t))})]})}):o.length===6?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[v(a,{className:`w-full h-67.5 flex gap-0.5`,children:[_(a,{className:`w-67.5 h-full relative`,children:c(o[0],0)}),_(a,{className:`flex-1 grid grid-cols-1 grid-rows-2 gap-0.5`,children:o.slice(1,3).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+1)},t))})]}),_(a,{className:`w-full h-33.5 grid grid-cols-3 grid-rows-1 gap-0.5`,children:o.slice(3).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+3)},t))})]})}):o.length===7?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex gap-0.5`,children:[_(a,{className:`w-76 h-67.5 grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.slice(0,4).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))}),_(a,{className:`flex-1 grid grid-cols-1 grid-rows-3 gap-0.5`,children:o.slice(4).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+4)},t))})]})}):o.length===8?_(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[_(a,{className:`w-full h-33.5 flex gap-0.5 items-center`,children:o.slice(0,2).map((e,t)=>_(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),_(a,{className:`w-full h-67.5 grid grid-cols-3 grid-rows-2 gap-0.5`,children:o.slice(2).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t+2)},t))})]})}):_(a,{className:n,children:_(a,{className:`w-full h-101.5 rounded-xl overflow-hidden grid grid-cols-3 grid-rows-3 gap-0.5`,children:o.slice(0,9).map((e,t)=>_(a,{className:`w-full h-full relative`,children:c(e,t)},t))})})}function C(t){let d=b(`components.ui.list.userActivityList`),{content_id:x,author:C,rightSlot:w,create_time:T,content:E,medias:D,canEdit:O=!1,isDeleting:ie=!1,isEditMode:ae=!1,isSelected:oe=!1,onToggle:se,interaction:ce,like_count:k=0,is_liked:A=!1,onLikeSuccess:le,dislike_count:j=0,is_dislike:M=!1,is_collected:ue,onDislikeSuccess:N,comment_count:P=0,onDelete:F,onShare:I,onShareSuccess:L,onActionSuccess:R,onCollectChange:z,onItemClick:B}=t,V=ce?.is_collected??ue??!1,[H,U]=g({isLiked:A,likeCount:k,isDisliked:M,dislikeCount:j,isCollected:V}),[W,G]=g(!1),[de,K]=g(!1),q=ne(null),J=D?.filter(Boolean)??[],Y=C?.nickname||C?.nick_name||``,fe=C?.avatar||C?.avatar_url||``;h(()=>{U({isLiked:A,likeCount:k,isDisliked:M,dislikeCount:j,isCollected:V})},[j,M,A,k,V]),h(()=>{G(!1)},[E]),h(()=>()=>{q.current&&=(clearTimeout(q.current),null)},[]);function pe(e){U(t=>({...t,isLiked:e.isLiked,likeCount:e.count,isDisliked:e.isDisliked??t.isDisliked,dislikeCount:e.dislikeCount??t.dislikeCount})),le?.(e)}function me(e){U(t=>({...t,isDisliked:e.isDisliked,dislikeCount:e.count,isLiked:e.isLiked??t.isLiked,likeCount:e.likeCount??t.likeCount})),N?.(e)}let{handleToCollectionOperate:he}=u({id:x||``,isLike:H.isLiked,isDislike:H.isDisliked,isCollect:H.isCollected,likeCnt:H.likeCount,dislikeCnt:H.dislikeCount,contentType:re.post});function X(){q.current&&=(clearTimeout(q.current),null)}function Z(e){U(t=>({...t,isCollected:e})),R?.(),x&&z?.(x,e)}function Q(e){if(!x){y.error(d(`userActivityListItem.collectFailed`));return}if(!de){if(K(!0),X(),!he({currentCollect:e,onUpdate:({isCollect:e})=>{X(),Z(e),K(!1)}})){y.error(d(`userActivityListItem.collectFailed`)),K(!1);return}q.current=setTimeout(()=>{K(!1),q.current=null},300)}}function ge(e){return!!(e&&e.length>180)}function _e(){G(e=>!e)}let $=e(),ve=()=>{B?.(x??``),$.push(`/post/${x}`)},ye=e=>{e.stopPropagation(),e.preventDefault(),$.push(`/profile/${C?.user_id}`)},be=()=>{$.push(`/post/${x}?tab=comment`)},xe=l();function Se(e){let t=J.map(e=>({src:e.media_url,type:e.is_video?`video`:`image`,cover:e.cover_image}));t.length&&xe.open(t,e)}return _(a,{className:`flex items-start gap-2 p-3`,children:v(a,{className:`flex-1 min-w-0`,children:[v(a,{className:`flex items-center gap-2 mb-3`,children:[v(a,{className:`flex items-center gap-2 shrink-0`,children:[ae&&_(o,{checked:oe,onCheckedChange:se}),v(n,{className:`w-10 h-10`,onClick:ye,children:[_(i,{src:fe,alt:Y}),_(r,{})]})]}),v(a,{className:`flex-1 min-w-0`,children:[_(s,{as:`p`,className:`text-sm text-text1 line-clamp-1 font-medium`,children:Y}),_(a,{className:`h-[1em]`,children:_(c,{value:T,className:`text-xs text-text3`,format:`YYYY-MM-DD HH:mm`})})]}),w&&_(a,{className:`shrink-0`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:w}),O&&_(p,{onClick:F,disabled:ie})]}),v(a,{onClick:ve,children:[v(a,{className:`mb-3`,children:[E&&v(a,{children:[_(s,{className:`text-sm text-text1 leading-5 whitespace-pre-wrap text-ellipsis ${W?`break-all`:`line-clamp-3`}`,dangerouslySetInnerHTML:{__html:E}}),ge(E)&&_(a,{className:`mt-1 text-xs text-text3`,onClick:e=>{e.stopPropagation(),e.preventDefault(),_e()},children:d(W?`userActivityListItem.collapse`:`userActivityListItem.expand`)})]}),J.length>0&&_(S,{className:`mt-2`,medias:J,onItemClick:Se})]}),v(a,{className:`flex items-center justify-around text-text3 *:min-w-20`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:[_(te,{contentId:x||``,count:H.likeCount,isLiked:H.isLiked,isDisliked:H.isDisliked,dislikeCount:H.dislikeCount,onLikeSuccess:pe,onSuccess:R}),_(ee,{contentId:x||``,count:H.dislikeCount,isDisliked:H.isDisliked,isLiked:H.isLiked,likeCount:H.likeCount,onDislikeSuccess:me,onSuccess:R}),_(f,{count:P,onClick:be}),_(m,{isCollected:H.isCollected,contentId:x||``,userId:C?.user_id??``,onShareSuccess:L,onClick:I,onCollect:()=>Q(!1),onUncollect:()=>Q(!0)})]})]})]})})}export{C as UserActivityListItem,S as UserActivityMediaGrid};
2
+ "use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Image as t}from"../../../ui/image.mjs";import{Avatar as n,AvatarFallback as r,AvatarImage as i}from"../../../ui/avatar.mjs";import{Box as a}from"../../../ui/box.mjs";import{Checkbox as o}from"../../../ui/checkbox.mjs";import{Text as s}from"../../../ui/text.mjs";import{Time as c}from"../../../ui/time.mjs";import{useMediaPreview as l}from"../../media-preview/index.mjs";import{useContentOperate as u}from"../../../../hooks/use-content-operate.mjs";import d from"../../../../assets/icons/detail/video_play.mjs";import{ActivityCommentButton as f,ActivityDeleteButton as p,ActivityDislikeButton as ee,ActivityLikeButton as te,ActivityShareButton as m}from"./user-activity-list-actions.mjs";import{toast as h}from"sonner";import{useEffect as g,useRef as ne,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as b}from"next-intl";const x=[],re={post:2};function S({medias:e=x,className:n=``,onItemClick:r}){let i=b(`components.ui.list.userActivityList`),o=(e||[]).filter(Boolean).slice(0,9);if(!o.length)return null;function s(e){r?.(e)}function c(e,n,o){let{is_video:c,media_url:l,cover_image:u}=e||{},f=!!c,p=f?u||l||``:l||``;return p?y(a,{className:o||`relative w-full h-full`,onClick:e=>{r&&(e.stopPropagation(),e.preventDefault(),s(n))},children:[v(t,{src:p,alt:i(`userActivityListItem.mediaAlt`),fill:!0,className:`object-cover`}),f&&v(a,{className:`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-[rgba(0,0,0,0.5)] rounded-full`,children:v(d,{width:36,height:36})})]},n):null}if(o.length===1){let{is_video:e,media_url:t,cover_image:r}=o[0]||{};return v(a,{className:n,children:v(a,{className:`w-full rounded-xl overflow-hidden`,children:c({is_video:e,media_url:t,cover_image:r,__src:e?r||t||``:t||``},0,`relative w-full aspect-square`)})})}return o.length===2?v(a,{className:n,children:v(a,{className:`w-full flex gap-0.5 rounded-xl overflow-hidden`,children:o.map((e,t)=>v(a,{className:`flex-1 aspect-square relative`,children:c(e,t)},t))})}):o.length===3?v(a,{className:n,children:y(a,{className:`w-full h-89.25 flex gap-0.5 rounded-xl overflow-hidden`,children:[v(a,{className:`w-[56.65%] h-full relative`,children:c(o[0],0)}),v(a,{className:`flex-1 flex flex-col gap-0.5`,children:o.slice(1).map((e,t)=>v(a,{className:`w-full flex-1 relative`,children:c(e,t+1)},t))})]})}):o.length===4?v(a,{className:n,children:v(a,{className:`w-full h-89.25 rounded-xl overflow-hidden grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.map((e,t)=>v(a,{className:`w-full h-full relative`,children:c(e,t)},t))})}):o.length===5?v(a,{className:n,children:y(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[v(a,{className:`w-full h-49.5 flex gap-0.5`,children:o.slice(0,2).map((e,t)=>v(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),v(a,{className:`w-full h-33.5 flex gap-0.5`,children:o.slice(2).map((e,t)=>v(a,{className:`flex-1 h-full relative`,children:c(e,t+2)},t))})]})}):o.length===6?v(a,{className:n,children:y(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[y(a,{className:`w-full h-67.5 flex gap-0.5`,children:[v(a,{className:`w-67.5 h-full relative`,children:c(o[0],0)}),v(a,{className:`flex-1 grid grid-cols-1 grid-rows-2 gap-0.5`,children:o.slice(1,3).map((e,t)=>v(a,{className:`w-full h-full relative`,children:c(e,t+1)},t))})]}),v(a,{className:`w-full h-33.5 grid grid-cols-3 grid-rows-1 gap-0.5`,children:o.slice(3).map((e,t)=>v(a,{className:`w-full h-full relative`,children:c(e,t+3)},t))})]})}):o.length===7?v(a,{className:n,children:y(a,{className:`w-full rounded-xl overflow-hidden flex gap-0.5`,children:[v(a,{className:`w-76 h-67.5 grid grid-cols-2 grid-rows-2 gap-0.5`,children:o.slice(0,4).map((e,t)=>v(a,{className:`w-full h-full relative`,children:c(e,t)},t))}),v(a,{className:`flex-1 grid grid-cols-1 grid-rows-3 gap-0.5`,children:o.slice(4).map((e,t)=>v(a,{className:`w-full h-full relative`,children:c(e,t+4)},t))})]})}):o.length===8?v(a,{className:n,children:y(a,{className:`w-full rounded-xl overflow-hidden flex flex-col gap-0.5`,children:[v(a,{className:`w-full h-33.5 flex gap-0.5 items-center`,children:o.slice(0,2).map((e,t)=>v(a,{className:`flex-1 h-full relative`,children:c(e,t)},t))}),v(a,{className:`w-full h-67.5 grid grid-cols-3 grid-rows-2 gap-0.5`,children:o.slice(2).map((e,t)=>v(a,{className:`w-full h-full relative`,children:c(e,t+2)},t))})]})}):v(a,{className:n,children:v(a,{className:`w-full h-101.5 rounded-xl overflow-hidden grid grid-cols-3 grid-rows-3 gap-0.5`,children:o.slice(0,9).map((e,t)=>v(a,{className:`w-full h-full relative`,children:c(e,t)},t))})})}function C(t){let d=b(`components.ui.list.userActivityList`),{content_id:x,author:C,rightSlot:w,create_time:T,content:E,medias:D,canEdit:O=!1,isDeleting:ie=!1,isEditMode:ae=!1,isSelected:oe=!1,onToggle:se,interaction:ce,like_count:k=0,is_liked:A=!1,onLikeSuccess:le,dislike_count:j=0,is_dislike:M=!1,is_collected:ue,onDislikeSuccess:N,comment_count:P=0,onDelete:F,onShare:I,onShareSuccess:L,onActionSuccess:R,onCollectChange:z,onItemClick:B}=t,V=ce?.is_collected??ue??!1,[H,U]=_({isLiked:A,likeCount:k,isDisliked:M,dislikeCount:j,isCollected:V}),[W,G]=_(!1),[de,K]=_(!1),q=ne(null),J=D?.filter(Boolean)??[],Y=C?.nickname||C?.nick_name||``,fe=C?.avatar||C?.avatar_url||``;g(()=>{U({isLiked:A,likeCount:k,isDisliked:M,dislikeCount:j,isCollected:V})},[j,M,A,k,V]),g(()=>{G(!1)},[E]),g(()=>()=>{q.current&&=(clearTimeout(q.current),null)},[]);function pe(e){U(t=>({...t,isLiked:e.isLiked,likeCount:e.count,isDisliked:e.isDisliked??t.isDisliked,dislikeCount:e.dislikeCount??t.dislikeCount})),le?.(e)}function me(e){U(t=>({...t,isDisliked:e.isDisliked,dislikeCount:e.count,isLiked:e.isLiked??t.isLiked,likeCount:e.likeCount??t.likeCount})),N?.(e)}let{handleToCollectionOperate:he}=u({id:x||``,isLike:H.isLiked,isDislike:H.isDisliked,isCollect:H.isCollected,likeCnt:H.likeCount,dislikeCnt:H.dislikeCount,contentType:re.post});function X(){q.current&&=(clearTimeout(q.current),null)}function Z(e){U(t=>({...t,isCollected:e})),R?.(),x&&z?.(x,e)}function Q(e){if(!x){h.error(d(`userActivityListItem.collectFailed`));return}if(!de){if(K(!0),X(),!he({currentCollect:e,onUpdate:({isCollect:e})=>{X(),Z(e),K(!1)}})){h.error(d(`userActivityListItem.collectFailed`)),K(!1);return}q.current=setTimeout(()=>{K(!1),q.current=null},300)}}function ge(e){return!!(e&&e.length>180)}function _e(){G(e=>!e)}let $=e(),ve=()=>{B?.(x??``),$.push(`/post/${x}`)},ye=e=>{e.stopPropagation(),e.preventDefault(),$.push(`/profile/${C?.user_id}`)},be=()=>{$.push(`/post/${x}?tab=comment`)},xe=l();function Se(e){let t=J.map(e=>({src:e.media_url,type:e.is_video?`video`:`image`,cover:e.cover_image}));t.length&&xe.open(t,e)}return v(a,{className:`flex items-start gap-2 p-3`,children:y(a,{className:`flex-1 min-w-0`,children:[y(a,{className:`flex items-center gap-2 mb-3`,children:[y(a,{className:`flex items-center gap-2 shrink-0`,children:[ae&&v(o,{checked:oe,onCheckedChange:se}),y(n,{className:`w-10 h-10`,onClick:ye,children:[v(i,{src:fe,alt:Y}),v(r,{})]})]}),y(a,{className:`flex-1 min-w-0`,children:[v(s,{as:`p`,className:`text-sm text-text1 line-clamp-1 font-medium`,children:Y}),v(a,{className:`h-[1em]`,children:v(c,{value:T,className:`text-xs text-text3`,format:`YYYY-MM-DD HH:mm`})})]}),w&&v(a,{className:`shrink-0`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:w}),O&&v(p,{onClick:F,disabled:ie})]}),y(a,{onClick:ve,children:[y(a,{className:`mb-3`,children:[E&&y(a,{children:[v(s,{className:`text-sm text-text1 leading-5 whitespace-pre-wrap text-ellipsis ${W?`break-all`:`line-clamp-3`}`,dangerouslySetInnerHTML:{__html:E}}),ge(E)&&v(a,{className:`mt-1 text-xs text-text3`,onClick:e=>{e.stopPropagation(),e.preventDefault(),_e()},children:d(W?`userActivityListItem.collapse`:`userActivityListItem.expand`)})]}),J.length>0&&v(S,{className:`mt-2`,medias:J,onItemClick:Se})]}),y(a,{className:`flex items-center justify-around text-text3 *:min-w-20`,onClick:e=>{e.stopPropagation(),e.preventDefault()},children:[v(te,{contentId:x||``,count:H.likeCount,isLiked:H.isLiked,isDisliked:H.isDisliked,dislikeCount:H.dislikeCount,onLikeSuccess:pe,onSuccess:R}),v(ee,{contentId:x||``,count:H.dislikeCount,isDisliked:H.isDisliked,isLiked:H.isLiked,likeCount:H.likeCount,onDislikeSuccess:me,onSuccess:R}),v(f,{count:P,onClick:be}),v(m,{isCollected:H.isCollected,contentId:x||``,userId:C?.user_id??``,onShareSuccess:L,onClick:I,onCollect:()=>Q(!1),onUncollect:()=>Q(!0)})]})]})]})})}export{C as UserActivityListItem,S as UserActivityMediaGrid};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../utils/cn.mjs";import{Image as t}from"../../../ui/image.mjs";import{Box as n}from"../../../ui/box.mjs";import{Checkbox as r}from"../../../ui/checkbox.mjs";import{Text as i}from"../../../ui/text.mjs";import{VideoIcon as a}from"../../icons/video.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";import{isNil as l}from"lodash-es";function u(e){let t=Number.isFinite(e)?Math.max(0,e):0;return t<1e3?String(Math.floor(t)):t<1e6?`${(Math.floor(t/100)/10).toFixed(1)}K`:`${(Math.floor(t/1e5)/10).toFixed(1)}M`}function d(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function f(f){let p=c(`components.ui.list.videoList`),{title:m,coverImage:h,duration:g,progress:_=0,seriesNum:v=1,authorName:y,viewCount:b,is_more_link:x,showVideoProgress:S,isEditMode:C=!1,isSelected:w=!1,onToggle:T}=f,E=p(x?`videoListItem.series`:`videoListItem.movie`),D=d(g);return s(n,{className:`flex items-start gap-2 py-1.5`,children:[C&&o(n,{className:`shrink-0 self-center `,children:o(r,{checked:w,onCheckedChange:T})}),s(n,{className:`flex-1 h-22 min-w-0 flex items-center gap-[9px]`,children:[s(n,{className:`relative w-35.5 h-20 shrink-0 rounded-lg overflow-hidden `,children:[l(x)?null:o(n,{className:`absolute z-[2] bottom-1 left-1 rounded-xs bg-black/60 px-1 text-[10px] text-white`,children:o(i,{children:E})}),D?o(n,{className:`absolute z-[2] bottom-1 right-1 rounded-xs bg-black/60 px-1 text-[10px] text-white`,children:o(i,{children:D})}):null,o(t,{src:h||`/empty/default-cover.png`,alt:m||p(`videoListItem.coverAlt`),fill:!0,className:`object-cover`})]}),s(n,{className:`flex-1 min-w-0 flex flex-col justify-between py-1.5`,children:[o(i,{className:`text-base text-text1 line-clamp-2 leading-5`,children:m}),s(n,{className:e(`flex-1`,{invisible:!S}),children:[x&&v>=1?`第${v}集 · `:``,p(`videoListItem.watchUntil`),_,`%`]}),o(n,{className:`flex text-text1/33 h-[1em] items-center justify-between text-sm `,children:s(n,{className:`flex items-center gap-1`,children:[o(a,{className:`size-3.5`,"aria-hidden":`true`}),o(i,{children:u(b)})]})})]})]})]})}export{f as VideoListItem};
2
+ "use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import{cn as t}from"../../../../utils/cn.mjs";import{Image as n}from"../../../ui/image.mjs";import{Box as r}from"../../../ui/box.mjs";import{Checkbox as i}from"../../../ui/checkbox.mjs";import{Text as a}from"../../../ui/text.mjs";import{VideoIcon as o}from"../../icons/video.mjs";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{useTranslations as l}from"next-intl";import{isNil as u}from"lodash-es";function d(t){return e(Number.isFinite(t)?Math.max(0,t):0)}function f(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;if(t<=0)return``;let n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=e=>String(e).padStart(2,`0`);return n>0?`${a(n)}:${a(r)}:${a(i)}`:`${a(r)}:${a(i)}`}function p(e){let p=l(`components.ui.list.videoList`),{title:m,coverImage:h,duration:g,progress:_=0,seriesNum:v=1,authorName:y,viewCount:b,is_more_link:x,showVideoProgress:S,isEditMode:C=!1,isSelected:w=!1,onToggle:T}=e,E=p(x?`videoListItem.series`:`videoListItem.movie`),D=f(g);return c(r,{className:`flex items-start gap-2 py-1.5`,children:[C&&s(r,{className:`shrink-0 self-center `,children:s(i,{checked:w,onCheckedChange:T})}),c(r,{className:`flex-1 h-22 min-w-0 flex items-center gap-[9px]`,children:[c(r,{className:`relative w-35.5 h-20 shrink-0 rounded-lg overflow-hidden `,children:[u(x)?null:s(r,{className:`absolute z-[2] bottom-1 left-1 rounded-xs bg-black/60 px-1 text-[10px] text-white`,children:s(a,{children:E})}),D?s(r,{className:`absolute z-[2] bottom-1 right-1 rounded-xs bg-black/60 px-1 text-[10px] text-white`,children:s(a,{children:D})}):null,s(n,{src:h||`/empty/default-cover.png`,alt:m||p(`videoListItem.coverAlt`),fill:!0,className:`object-cover`})]}),c(r,{className:`flex-1 min-w-0 flex flex-col justify-between py-1.5`,children:[s(a,{className:`text-base text-text1 line-clamp-2 leading-5`,children:m}),c(r,{className:t(`flex-1`,{invisible:!S}),children:[x&&v>=1?`第${v}集 · `:``,p(`videoListItem.watchUntil`),_,`%`]}),s(r,{className:`flex text-text1/33 h-[1em] items-center justify-between text-sm `,children:c(r,{className:`flex items-center gap-1`,children:[s(o,{className:`size-3.5`,"aria-hidden":`true`}),s(a,{children:d(b)})]})})]})]})]})}export{p as VideoListItem};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../../ui/box.mjs";import{List as t}from"../../../ui/list.mjs";import{Text as n}from"../../../ui/text.mjs";import{normalizeTimeToMilliseconds as r}from"../../../ui/time.mjs";import{VideoListItemSkeleton as i}from"../../skeleton/video-list-item-skeleton.mjs";import{VideoListItem as a}from"./video-list-item.mjs";import{useIsClient as o}from"foxact/use-is-client";import{useMemo as s}from"react";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";import f from"next/link";import{orderBy as p}from"lodash-es";function m(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function h(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return i.setDate(i.getDate()-1),n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function g(r){let g=d(`components.ui.list`),_=o(),{list:v,showVideoProgress:y,loading:b,hasMore:x=!1,loadMore:S,isEditMode:C,selectedIds:w,onToggleSelection:T,emptyText:E}=r,D=s(()=>p(v,[`publishTime`],[`desc`]),[v]),{todayList:O,yesterdayList:k,earlierList:A}=s(()=>{if(!_)return{todayList:[],yesterdayList:[],earlierList:D};let e=[],t=[],n=[];for(let r of v)m(r.publishTime)?e.push(r):h(r.publishTime)?t.push(r):n.push(r);return{todayList:p(e,[`publishTime`],[`desc`]),yesterdayList:p(t,[`publishTime`],[`desc`]),earlierList:p(n,[`publishTime`],[`desc`])}},[_,v,D]),j=!!b&&v.length===0,M=_;return j?l(e,{className:`bg-bg1`,children:Array.from({length:6}).map((e,t)=>l(i,{isEditMode:C,showVideoProgress:y},`video-list-item-skeleton-${t}`))}):u(t,{loading:b,loadMore:S,hasMore:x,empty:`no-content`,emptyText:E||g(`videoList.empty`),children:[M&&O.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`videoList.today`)})}),O.map(e=>C?l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id):l(f,{href:`/video/${e.id}/${e.title}`,children:l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id)},e.id))]}),M&&k.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`videoList.yesterday`)})}),k.map(e=>C?l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id):l(f,{href:`/video/${e.id}/${e.title}`,children:l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id)},e.id))]}),A.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`videoList.earlier`)})}),A.map(e=>C?l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id):l(f,{href:`/video/${e.id}/${e.title}`,children:l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id)},e.id))]})]})}export{g as VideoList};
2
+ "use client";import{Box as e}from"../../../ui/box.mjs";import{List as t}from"../../../ui/list.mjs";import{Text as n}from"../../../ui/text.mjs";import{normalizeTimeToMilliseconds as r}from"../../../ui/time.mjs";import{VideoListItemSkeleton as i}from"../../skeleton/video-list-item-skeleton.mjs";import{VideoListItem as a}from"./video-list-item.mjs";import{useMemo as o}from"react";import{useIsClient as s}from"foxact/use-is-client";import{Fragment as c,jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";import f from"next/link";import{orderBy as p}from"lodash-es";function m(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function h(e){let t=r(e);if(!t)return!1;let n=new Date(t),i=new Date;return i.setDate(i.getDate()-1),n.getFullYear()===i.getFullYear()&&n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()}function g(r){let g=d(`components.ui.list`),_=s(),{list:v,showVideoProgress:y,loading:b,hasMore:x=!1,loadMore:S,isEditMode:C,selectedIds:w,onToggleSelection:T,emptyText:E}=r,D=o(()=>p(v,[`publishTime`],[`desc`]),[v]),{todayList:O,yesterdayList:k,earlierList:A}=o(()=>{if(!_)return{todayList:[],yesterdayList:[],earlierList:D};let e=[],t=[],n=[];for(let r of v)m(r.publishTime)?e.push(r):h(r.publishTime)?t.push(r):n.push(r);return{todayList:p(e,[`publishTime`],[`desc`]),yesterdayList:p(t,[`publishTime`],[`desc`]),earlierList:p(n,[`publishTime`],[`desc`])}},[_,v,D]),j=!!b&&v.length===0,M=_;return j?l(e,{className:`bg-bg1`,children:Array.from({length:6}).map((e,t)=>l(i,{isEditMode:C,showVideoProgress:y},`video-list-item-skeleton-${t}`))}):u(t,{loading:b,loadMore:S,hasMore:x,empty:`no-content`,emptyText:E||g(`videoList.empty`),children:[M&&O.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`videoList.today`)})}),O.map(e=>C?l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id):l(f,{href:`/video/${e.id}/${e.title}`,children:l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id)},e.id))]}),M&&k.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`videoList.yesterday`)})}),k.map(e=>C?l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id):l(f,{href:`/video/${e.id}/${e.title}`,children:l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id)},e.id))]}),A.length>0&&u(c,{children:[l(e,{className:` `,children:l(n,{className:`text-lg text-text1`,children:g(`videoList.earlier`)})}),A.map(e=>C?l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id):l(f,{href:`/video/${e.id}/${e.title}`,children:l(a,{showVideoProgress:y,isEditMode:C,isSelected:w?.has(e.id),...e,onToggle:()=>T?.(e.id)},e.id)},e.id))]})]})}export{g as VideoList};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{parseResolution as t}from"../../../utils/common.mjs";import n from"../../../utils/event-bus.mjs";import{eventKey as r}from"../../../constants/event-key.mjs";import i from"../video-player/index.mjs";import a from"./popup-video.module.mjs";import{useCallback as o,useEffect as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{usePathname as d}from"next/navigation";function f(){let f=d(),[p,m]=c(!1),[h,g]=c(null),[_,v]=c(0),y=o(e=>{if(typeof window>`u`)return 0;let{width:n,height:r}=t(e.resolution);return n<=0?0:Math.max(0,r*(window.innerWidth/n))},[]),b=o(({info:e,show:t})=>{if(!e||!t){m(!1),g(null);return}g(e),v(y(e)),m(!0)},[y]);return s(()=>(n.on(r.SHOW_POPUP_VIDEO,b),()=>{n.off(r.SHOW_POPUP_VIDEO,b)}),[b]),s(()=>{m(!1),g(null)},[f]),!p||!h?null:u(`div`,{className:`fixed inset-0 z-[9999] flex items-center justify-center bg-black/95`,children:[l(e,{variant:`ghost`,className:`absolute left-4 top-4 h-10 w-10 rounded-full border border-white/20 text-white`,onClick:()=>{m(!1),g(null)},children:`←`}),l(`div`,{className:a.popupVideo,style:{width:`100%`,maxHeight:`100%`,height:_>0?`${_}px`:`auto`},children:l(i,{plyerId:h.plyerId,resolution:h.resolution,poster:h.poster||``,videoUrl:h.videoUrl||``,hlsList:h.hlsList,mergeConfig:_>0?{}:{fitVideoSize:`fixWidth`}})})]})}export{f as default};
2
+ "use client";import{parseResolution as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{Button as n}from"../../ui/button.mjs";import{eventKey as r}from"../../../constants/event-key.mjs";import i from"../video-player/index.mjs";import a from"./popup-video.module.mjs";import{useCallback as o,useEffect as s,useState as c}from"react";import{usePathname as l}from"next/navigation";import{jsx as u,jsxs as d}from"react/jsx-runtime";function f(){let f=l(),[p,m]=c(!1),[h,g]=c(null),[_,v]=c(0),y=o(t=>{if(typeof window>`u`)return 0;let{width:n,height:r}=e(t.resolution);return n<=0?0:Math.max(0,r*(window.innerWidth/n))},[]),b=o(({info:e,show:t})=>{if(!e||!t){m(!1),g(null);return}g(e),v(y(e)),m(!0)},[y]);return s(()=>(t.on(r.SHOW_POPUP_VIDEO,b),()=>{t.off(r.SHOW_POPUP_VIDEO,b)}),[b]),s(()=>{m(!1),g(null)},[f]),!p||!h?null:d(`div`,{className:`fixed inset-0 z-[9999] flex items-center justify-center bg-black/95`,children:[u(n,{variant:`ghost`,className:`absolute left-4 top-4 h-10 w-10 rounded-full border border-white/20 text-white`,onClick:()=>{m(!1),g(null)},children:`←`}),u(`div`,{className:a.popupVideo,style:{width:`100%`,maxHeight:`100%`,height:_>0?`${_}px`:`auto`},children:u(i,{plyerId:h.plyerId,resolution:h.resolution,poster:h.poster||``,videoUrl:h.videoUrl||``,hlsList:h.hlsList,mergeConfig:_>0?{}:{fitVideoSize:`fixWidth`}})})]})}export{f as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{trackPageClick as e}from"../../../utils/tracking.mjs";import{Box as t}from"../../ui/box.mjs";import{Text as n}from"../../ui/text.mjs";import{Sheet as r,SheetContent as i,SheetHeader as a,SheetTitle as o}from"../../ui/sheet.mjs";import{Switch as s}from"../../ui/switch.mjs";import{useKeepAliveState as c}from"../keep-scroll-position/index.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 ee,jsx as g,jsxs as _}from"react/jsx-runtime";import{toast as v}from"sonner";import{useTranslations as te}from"next-intl";const y=`funhub:detail-series-popup-query`,b=`funhub:detail-series-popup-close`;function x(e){return e.type===y&&e instanceof CustomEvent}function S({active:e}){return e?_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`circle`,{cx:`16`,cy:`12`,r:`3`,fill:`white`}),g(`path`,{d:`M8 5H16C19.866 5 23 8.13401 23 12C23 15.866 19.866 19 16 19H8C4.13401 19 1 15.866 1 12C1 8.13401 4.13401 5 8 5ZM16 15C17.6569 15 19 13.6569 19 12C19 10.3431 17.6569 9 16 9C14.3431 9 13 10.3431 13 12C13 13.6569 14.3431 15 16 15Z`,fill:`#9054E5`})]}):_(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`shrink-0`,"aria-hidden":!0,children:[g(`path`,{d:`M1.5 12C1.5 8.68629 4.18629 6 7.5 6H16.5C19.8137 6 22.5 8.68629 22.5 12C22.5 15.3137 19.8137 18 16.5 18H7.5C4.18629 18 1.5 15.3137 1.5 12Z`,stroke:`currentColor`,strokeWidth:`1.5`,strokeOpacity:`0.6`}),g(`circle`,{cx:`9`,cy:`12`,r:`3`,fill:`rgba(255,255,255,0.6)`})]})}function C(){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 w(e,t){let n=String(t||``).trim();if(!n)return e;let r=e.replace(/\s+/g,``);return n.replace(/\s+/g,``)===r?e:`${e} ${n}`}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=w(n(a),o);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(90deg, rgba(255,30,172,0.7) 0%, rgba(108,67,238,0) 100%), linear-gradient(180deg, #9756E3 0%, #6C43EE 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,videoTitle:e.videoTitle,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:e,variant:c,title:l,videoTitle:ee,updateStatus:v,summaryText:y,seriesList:b,activeEpisodeId:x,showEpisodeTitle:E=!1,onToggleTitle:k,onClose:A,onSelectEpisode:j,popupBodyStyle:M,popupStylePreset:N=`default`}){let P=te(`components.common.seriesEpisodes`),F=!!k,I=F&&E,L=c===`popup`&&N===`detail-style-one`,R=m(null),z=m(null),B=p(()=>T(b,`episode`,e=>P(`episodeLabel`,{episode:e})),[b,P]),V=p(()=>{if(B.length===0)return[];let e=[];return B.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[B,50]),H=p(()=>{if(!x)return 0;let e=B.findIndex(e=>e.id===x);return e<0?0:Math.floor(e/50)},[x,B,50]),[U,W]=h(H);f(()=>{W(H)},[H]);let G=p(()=>typeof y==`string`&&y.trim()?y:D(B.length,v,P),[B.length,y,P,v]),K=l||P(`selectorTitle`),q=String(ee||``).trim(),J=d(e=>w(P(`episodeLabel`,{episode:e.series_num}),q),[q,P]);function Y(){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)})}}f(()=>{e&&Y()},[e,E,U]);function X(e){k&&(k(e),Y())}function Z(e){j?.(e.id,e.series_num),A()}let Q=I?2:5,$=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*50+1,i=Math.min((t+1)*50,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),Y()},children:[r,`-`,i,n&&g(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,ne=_(`div`,{className:`pb-[8px] flex justify-between`,children:[g(`span`,{className:`text-[16px] text-text1`,children:G}),F&&_(`div`,{className:`flex items-center gap-[4px]`,children:[g(s,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:E,onCheckedChange:e=>{X(!!e)}}),g(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{X(!E)},children:P(`episodeTitle`)})]})]}),re=g(`div`,{className:`grid w-full gap-2 ${Q===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:()=>{Z(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`} ${I?`h-[72px] px-[10px] text-[14px]`:``} ${t%Q===0?``:`border-l-0`}`,children:I?g(`span`,{className:`block w-full truncate leading-[22px]`,children:J(e)}):e.series_num},e.id)})}),ie=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*50+1,i=Math.min((t+1)*50,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),Y()},children:_(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px]`,children:[r,`-`,i]})},`series-popup-group-${t}`)})}):null,ae=_(`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}),F&&_(`button`,{type:`button`,className:`flex items-center gap-[3px] text-white/60`,onClick:()=>{X(!E)},children:[g(S,{active:E}),g(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:P(`episodeTitle`)})]})]}),oe=I?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:()=>{Z(e)},className:`relative flex w-full items-start overflow-hidden rounded-[8px] px-[16px] py-[18px] text-left transition-colors ${t?L?``:`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&&L&&g(O,{}),g(`span`,{className:`relative z-[1] block w-full truncate font-['PingFang_SC'] text-[14px] ${t?`font-medium leading-[16px] text-[#CA3FE9]`:`font-normal leading-[16px] text-white/80`}`,children:J(e)})]},`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:()=>{Z(e)},className:`relative flex h-[52px] w-[52px] items-center justify-center overflow-hidden rounded-[8px] transition-colors ${t?L?`text-[#9756E3]`:`border border-[#E62AFF]/90 bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)] text-[#9756E3]`:`bg-white/10 text-white/80`}`,children:[t&&L&&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(r,{open:e,onOpenChange:e=>!e&&A(),children:_(i,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[g(a,{className:`pt-3 pb-0`,children:g(o,{className:`flex items-center justify-between text-lg text-text1`,children:K})}),_(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[$,ne]}),g(`div`,{ref:R,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:re})]})}):g(u,{open:e,onOpenChange:e=>{e||A()},showCloseButton:!1,className:`!gap-0 !border-0 !bg-transparent !p-0 !shadow-none`,overlayClassName:`bg-black/50 backdrop-blur-0`,children:_(t,{className:`flex h-full w-full flex-col overflow-hidden rounded-t-[16px] bg-black text-text1`,style:{height:`70vh`,...M},children:[_(t,{className:`shrink-0 flex items-center justify-between px-[16px] pt-[32px]`,children:[g(n,{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:A,children:g(`span`,{className:`flex h-[24px] w-[24px] items-center overflow-hidden p-[2px]`,children:g(C,{})})})]}),g(t,{className:`flex-1 h-0 w-full px-[16px] pb-[24px]`,children:_(t,{className:`flex h-full flex-col`,children:[ie&&g(t,{className:`mt-[16px] shrink-0`,children:ie}),g(t,{className:`mt-[16px] shrink-0`,children:ae}),g(t,{ref:R,className:`flex-1 overflow-y-auto pb-[17px] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden ${I?`mt-[12px]`:`mt-[8px]`}`,children:oe})]})})]})})}function j({information:r,series_num:i,onEpisodeChange:a}){let o=te(`components.common`),[s,u]=c(`detail-series-popup-${r.id}`,!1),[S,C]=c(`detail-series-title-toggle-${r.id}`,!1),[w,T]=c(`detail-series-scroll-left-${r.id}`,null),[D,k]=h(i);f(()=>{k(i)},[r.id,i]),f(()=>{if(typeof window>`u`)return;let e=()=>{u(!1)};return window.addEventListener(b,e),()=>{window.removeEventListener(b,e)}},[u]),f(()=>{if(typeof window>`u`)return;let e=e=>{if(!x(e))return;let t=e.detail||{};t.open=!!t.open||!!s};return window.addEventListener(y,e),()=>{window.removeEventListener(y,e)}},[s]),f(()=>{s&&e(`page_video_detail`,`详情页`,null,`detail_select_episode_popup`)},[s]);let j=p(()=>E((r.links||[]).map(e=>({id:e.id,name:e.name})),r.id||`episode`,e=>o(`seriesEpisodes.episodeLabel`,{episode:e})),[r.id,r.links,o]),M=r.update_status===`1`?o(`seriesEpisodes.completedSeriesTotal`,{total:r.links.length}):o(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:r.links.length}),N=p(()=>r.links[D-1]?.id||r.links[0]?.id||``,[r.links,D]),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&&(v.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},[r.id]),f(()=>{if(L.current||!N)return;let e=window.requestAnimationFrame(()=>{let e=P.current;e&&(typeof w==`number`?e.scrollTo({left:Math.max(0,w),behavior:`auto`}):(U(N,`auto`),T(Math.max(0,Math.round(e.scrollLeft)))),L.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[N,w,U,T]),f(()=>{let e=F.current;!e||e!==i||J(e,1e3)},[J,i]),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`,n,s)=>{if(e!==D){if(!r.links[e-1]){v.error(o(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){try{k(e);let c=n||r.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=v.loading(o(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(i),q(),v.error(o(`seriesEpisodes.episodeSwitchFailed`)))},3e3),a(e)}catch(e){k(i),q(),console.error(`切换剧集失败`,e),v.error(o(`seriesEpisodes.episodeSwitchFailed`))}return}try{k(e);let c=n||r.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=v.loading(o(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(i),q(),v.error(o(`seriesEpisodes.episodeSwitchFailed`)))},8e3),a(e)}catch(e){k(i),q(),console.error(`切换剧集失败`,e),v.error(o(`seriesEpisodes.episodeSwitchFailed`))}}},[q,K,r.links,a,D,i,Y,U,T,o]),[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(!s)return;$();let e=()=>{$()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[$,s]),j.length<=1?null:_(ee,{children:[_(t,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[_(t,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>{e(`page_video_detail`,`详情页`,null,`detail_select_episode_btn`),u(!0)},children:[g(n,{className:`text-[14px] text-text2 leading-[20px]`,children:M}),g(l,{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] ${S?`h-[76px]`:`h-[60px]`} ${V?`touch-none`:``}`,children:j.map((t,r)=>_(`div`,{"data-content-id":t.id,className:`relative shrink-0 h-[full] overflow-hidden px-[18px] rounded-[8px] border border-line1 flex items-center ${S?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${t.id===N?`border-transparent bg-transparent`:``}`,onClick:n=>{e(`page_video_detail`,`详情页`,n,`detail_episode_click`,{episode_num:r+1,episode_id:t.id}),X(r+1,`inline`,t.id,n.clientX)},children:[t.id===N&&g(O,{}),g(n,{className:`relative z-[1] text-[16px] text-text1 leading-[22px] line-clamp-2 ${t.id===N?`font-bold !text-[#CA3FE9]`:``}`,children:S?t.title:t.series_num})]},t.id))})]}),g(A,{title:o(`seriesEpisodes.selectorTitle`),videoTitle:r.name,variant:`popup`,open:s,updateStatus:r.update_status,summaryText:M,seriesList:(r.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:N,showEpisodeTitle:S,onToggleTitle:e=>{C(e)},onClose:()=>u(!1),onSelectEpisode:(e,t)=>{u(!1),X(t,`popup`,e)},popupBodyStyle:{height:Z},popupStylePreset:`default`})]})}export{O as DetailStyleOneActiveBorderLayer,k as SeriesEpisodes};
2
+ "use client";import{trackPageClick as e}from"../../../utils/tracking.mjs";import{Box as t}from"../../ui/box.mjs";import{Text as n}from"../../ui/text.mjs";import{Sheet as r,SheetContent as i,SheetHeader as a,SheetTitle as o}from"../../ui/sheet.mjs";import{Switch as s}from"../../ui/switch.mjs";import{useKeepAliveState as c}from"../keep-scroll-position/index.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{toast as d}from"sonner";import{useCallback as f,useEffect as p,useMemo as m,useRef as h,useState as g}from"react";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as ee}from"next-intl";const b=`funhub:detail-series-popup-query`,x=`funhub:detail-series-popup-close`;function S(e){return e.type===b&&e instanceof CustomEvent}function C({active:e}){return e?y(`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:[v(`circle`,{cx:`16`,cy:`12`,r:`3`,fill:`white`}),v(`path`,{d:`M8 5H16C19.866 5 23 8.13401 23 12C23 15.866 19.866 19 16 19H8C4.13401 19 1 15.866 1 12C1 8.13401 4.13401 5 8 5ZM16 15C17.6569 15 19 13.6569 19 12C19 10.3431 17.6569 9 16 9C14.3431 9 13 10.3431 13 12C13 13.6569 14.3431 15 16 15Z`,fill:`#9054E5`})]}):y(`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:[v(`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`}),v(`circle`,{cx:`9`,cy:`12`,r:`3`,fill:`rgba(255,255,255,0.6)`})]})}function te(){return v(`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:v(`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 w(e,t){let n=String(t||``).trim();if(!n)return e;let r=e.replace(/\s+/g,``);return n.replace(/\s+/g,``)===r?e:`${e} ${n}`}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=w(n(a),o);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 v(`span`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 overflow-hidden rounded-[8px] p-[0.5px]`,style:{backgroundImage:`linear-gradient(90deg, rgba(255,30,172,0.7) 0%, rgba(108,67,238,0) 100%), linear-gradient(180deg, #9756E3 0%, #6C43EE 100%)`},children:v(`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`?v(j,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):v(A,{open:e.open,variant:e.variant,title:e.title,videoTitle:e.videoTitle,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:e,variant:c,title:l,videoTitle:d,updateStatus:_,summaryText:b,seriesList:x,activeEpisodeId:S,showEpisodeTitle:E=!1,onToggleTitle:k,onClose:A,onSelectEpisode:j,popupBodyStyle:M,popupStylePreset:N=`default`}){let P=ee(`components.common.seriesEpisodes`),F=!!k,I=F&&E,L=c===`popup`&&N===`detail-style-one`,R=h(null),z=h(null),B=m(()=>T(x,`episode`,e=>P(`episodeLabel`,{episode:e})),[x,P]),V=m(()=>{if(B.length===0)return[];let e=[];return B.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[B,50]),H=m(()=>{if(!S)return 0;let e=B.findIndex(e=>e.id===S);return e<0?0:Math.floor(e/50)},[S,B,50]),[U,W]=g(H);p(()=>{W(H)},[H]);let G=m(()=>typeof b==`string`&&b.trim()?b:D(B.length,_,P),[B.length,b,P,_]),K=l||P(`selectorTitle`),q=String(d||``).trim(),J=f(e=>w(P(`episodeLabel`,{episode:e.series_num}),q),[q,P]);function Y(){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)})}}p(()=>{e&&Y()},[e,E,U]);function X(e){k&&(k(e),Y())}function Z(e){j?.(e.id,e.series_num),A()}let Q=I?2:5,$=V.length>1?v(`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*50+1,i=Math.min((t+1)*50,B.length);return y(`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),Y()},children:[r,`-`,i,n&&v(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,ne=y(`div`,{className:`pb-[8px] flex justify-between`,children:[v(`span`,{className:`text-[16px] text-text1`,children:G}),F&&y(`div`,{className:`flex items-center gap-[4px]`,children:[v(s,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:E,onCheckedChange:e=>{X(!!e)}}),v(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{X(!E)},children:P(`episodeTitle`)})]})]}),re=v(`div`,{className:`grid w-full gap-2 ${Q===2?`grid-cols-2`:`grid-cols-5`}`,children:(V[U]||[]).map((e,t)=>{let n=!!(S&&e.id===S);return v(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Z(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`} ${I?`h-[72px] px-[10px] text-[14px]`:``} ${t%Q===0?``:`border-l-0`}`,children:I?v(`span`,{className:`block w-full truncate leading-[22px]`,children:J(e)}):e.series_num},e.id)})}),ie=V.length>1?v(`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*50+1,i=Math.min((t+1)*50,B.length);return v(`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),Y()},children:y(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[20px]`,children:[r,`-`,i]})},`series-popup-group-${t}`)})}):null,ae=y(`div`,{className:`flex items-center justify-between`,children:[v(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:G}),F&&y(`button`,{type:`button`,className:`flex items-center gap-[3px] text-white/60`,onClick:()=>{X(!E)},children:[v(C,{active:E}),v(`span`,{className:`font-['PingFang_SC'] text-[14px] font-normal not-italic leading-[24px] text-white/60`,children:P(`episodeTitle`)})]})]}),oe=I?v(`div`,{className:`flex w-full flex-col gap-[12px]`,children:(V[U]||[]).map(e=>{let t=!!(S&&e.id===S);return y(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Z(e)},className:`relative flex w-full items-start overflow-hidden rounded-[8px] px-[16px] py-[18px] text-left transition-colors ${t?L?``:`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&&L&&v(O,{}),v(`span`,{className:`relative z-[1] block w-full truncate font-['PingFang_SC'] text-[14px] ${t?`font-medium leading-[16px] text-[#CA3FE9]`:`font-normal leading-[16px] text-white/80`}`,children:J(e)})]},`popup-${e.id}`)})}):v(`div`,{className:`grid w-full grid-cols-[repeat(6,52px)] justify-between gap-y-[8px]`,children:(V[U]||[]).map(e=>{let t=!!(S&&e.id===S);return y(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{Z(e)},className:`relative flex h-[52px] w-[52px] items-center justify-center overflow-hidden rounded-[8px] transition-colors ${t?L?`text-[#9756E3]`:`border border-[#E62AFF]/90 bg-[linear-gradient(90deg,rgba(246,206,255,0.1)_0%,rgba(246,206,255,0.1)_100%),linear-gradient(90deg,rgba(255,255,255,0.1)_0%,rgba(255,255,255,0.1)_100%)] text-[#9756E3]`:`bg-white/10 text-white/80`}`,children:[t&&L&&v(O,{}),v(`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`?v(r,{open:e,onOpenChange:e=>!e&&A(),children:y(i,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[v(a,{className:`pt-3 pb-0`,children:v(o,{className:`flex items-center justify-between text-lg text-text1`,children:K})}),y(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[$,ne]}),v(`div`,{ref:R,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:re})]})}):v(u,{open:e,onOpenChange:e=>{e||A()},showCloseButton:!1,className:`!gap-0 !border-0 !bg-transparent !p-0 !shadow-none`,overlayClassName:`bg-black/50 backdrop-blur-0`,children:y(t,{className:`flex h-full w-full flex-col overflow-hidden rounded-t-[16px] bg-black text-text1`,style:{height:`70vh`,...M},children:[y(t,{className:`shrink-0 flex items-center justify-between px-[16px] pt-[32px]`,children:[v(n,{className:`font-['PingFang_SC'] text-[18px] font-medium not-italic leading-[24px] text-white`,children:K}),v(`button`,{type:`button`,"aria-label":`关闭`,className:`flex h-[24px] w-[24px] items-center justify-center text-white opacity-60`,onClick:A,children:v(`span`,{className:`flex h-[24px] w-[24px] items-center overflow-hidden p-[2px]`,children:v(te,{})})})]}),v(t,{className:`flex-1 h-0 w-full px-[16px] pb-[24px]`,children:y(t,{className:`flex h-full flex-col`,children:[ie&&v(t,{className:`mt-[16px] shrink-0`,children:ie}),v(t,{className:`mt-[16px] shrink-0`,children:ae}),v(t,{ref:R,className:`flex-1 overflow-y-auto pb-[17px] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden ${I?`mt-[12px]`:`mt-[8px]`}`,children:oe})]})})]})})}function j({information:r,series_num:i,onEpisodeChange:a}){let o=ee(`components.common`),[s,u]=c(`detail-series-popup-${r.id}`,!1),[C,te]=c(`detail-series-title-toggle-${r.id}`,!1),[w,T]=c(`detail-series-scroll-left-${r.id}`,null),[D,k]=g(i);p(()=>{k(i)},[r.id,i]),p(()=>{if(typeof window>`u`)return;let e=()=>{u(!1)};return window.addEventListener(x,e),()=>{window.removeEventListener(x,e)}},[u]),p(()=>{if(typeof window>`u`)return;let e=e=>{if(!S(e))return;let t=e.detail||{};t.open=!!t.open||!!s};return window.addEventListener(b,e),()=>{window.removeEventListener(b,e)}},[s]),p(()=>{s&&e(`page_video_detail`,`详情页`,null,`detail_select_episode_popup`)},[s]);let j=m(()=>E((r.links||[]).map(e=>({id:e.id,name:e.name})),r.id||`episode`,e=>o(`seriesEpisodes.episodeLabel`,{episode:e})),[r.id,r.links,o]),M=r.update_status===`1`?o(`seriesEpisodes.completedSeriesTotal`,{total:r.links.length}):o(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:r.links.length}),N=m(()=>r.links[D-1]?.id||r.links[0]?.id||``,[r.links,D]),P=h(null),F=h(null),I=h(null),L=h(!1),R=h(null),z=h(null),B=h(null),[V,H]=g(!1),U=f((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=f(()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)},[]),G=f(()=>{B.current!==null&&(window.clearTimeout(B.current),B.current=null)},[]),K=f(()=>{R.current!==null&&(d.dismiss(R.current),R.current=null),W(),G()},[G,W]),q=f(()=>{F.current=null,I.current=null,K(),H(!1)},[K]),J=f((e,t)=>{G(),B.current=window.setTimeout(()=>{B.current=null,F.current===e&&q()},Math.max(0,t))},[G,q]);p(()=>{L.current=!1},[r.id]),p(()=>{if(L.current||!N)return;let e=window.requestAnimationFrame(()=>{let e=P.current;e&&(typeof w==`number`?e.scrollTo({left:Math.max(0,w),behavior:`auto`}):(U(N,`auto`),T(Math.max(0,Math.round(e.scrollLeft)))),L.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[N,w,U,T]),p(()=>{let e=F.current;!e||e!==i||J(e,1e3)},[J,i]),p(()=>()=>{q()},[q]);let Y=f((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=f((e,t=`inline`,n,s)=>{if(e!==D){if(!r.links[e-1]){d.error(o(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){try{k(e);let c=n||r.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=d.loading(o(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(i),q(),d.error(o(`seriesEpisodes.episodeSwitchFailed`)))},3e3),a(e)}catch(e){k(i),q(),console.error(`切换剧集失败`,e),d.error(o(`seriesEpisodes.episodeSwitchFailed`))}return}try{k(e);let c=n||r.links[e-1]?.id||``,l=Math.max(0,Math.round(P.current?.scrollLeft||0));t===`popup`?(c&&U(c,`auto`),T(Math.max(0,Math.round(P.current?.scrollLeft||0)))):T(Y(c,l,s)),H(!0),K(),R.current=d.loading(o(`seriesEpisodes.episodeSwitching`)),F.current=e,I.current=t,z.current=window.setTimeout(()=>{F.current===e&&(k(i),q(),d.error(o(`seriesEpisodes.episodeSwitchFailed`)))},8e3),a(e)}catch(e){k(i),q(),console.error(`切换剧集失败`,e),d.error(o(`seriesEpisodes.episodeSwitchFailed`))}}},[q,K,r.links,a,D,i,Y,U,T,o]),[Z,Q]=g(`70vh`),$=f(()=>{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 p(()=>{if(!s)return;$();let e=()=>{$()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[$,s]),j.length<=1?null:y(_,{children:[y(t,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[y(t,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>{e(`page_video_detail`,`详情页`,null,`detail_select_episode_btn`),u(!0)},children:[v(n,{className:`text-[14px] text-text2 leading-[20px]`,children:M}),v(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),v(`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((t,r)=>y(`div`,{"data-content-id":t.id,className:`relative shrink-0 h-[full] overflow-hidden px-[18px] rounded-[8px] border border-line1 flex items-center ${C?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${t.id===N?`border-transparent bg-transparent`:``}`,onClick:n=>{e(`page_video_detail`,`详情页`,n,`detail_episode_click`,{episode_num:r+1,episode_id:t.id}),X(r+1,`inline`,t.id,n.clientX)},children:[t.id===N&&v(O,{}),v(n,{className:`relative z-[1] text-[16px] text-text1 leading-[22px] line-clamp-2 ${t.id===N?`font-bold !text-[#CA3FE9]`:``}`,children:C?t.title:t.series_num})]},t.id))})]}),v(A,{title:o(`seriesEpisodes.selectorTitle`),videoTitle:r.name,variant:`popup`,open:s,updateStatus:r.update_status,summaryText:M,seriesList:(r.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:N,showEpisodeTitle:C,onToggleTitle:e=>{te(e)},onClose:()=>u(!1),onSelectEpisode:(e,t)=>{u(!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{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pCommunityShareContent as t}from"../../../service/generated/client.mjs";import{apiCollectCustom as n}from"../../../utils/api-collect.mjs";import{useCallback as r,useEffect as i,useMemo as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{toast as l}from"sonner";import{useTranslations as u}from"next-intl";function d(e){return String(e?.user_code||e?.userCode||``)}function f(e,t){return t?`${e}${e.includes(`?`)?`&`:`?`}from_code=${t}`:e}async function p(e){if(!e)return!1;if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch(e){console.error(`复制失败:`,e)}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch(e){return console.error(`复制失败:`,e),!1}}function m(n){let m=u(`components.common.sharePopup`),{type:h,data:g,copyUrl:_,visible:v=!0,onClose:y}=n,{userInfo:b}=e(),[x,S]=o(_||``),C=a(()=>d(b),[b]),w=r(async()=>{if(!_){try{let e=(await t({content_id:g.id},{revalidate:!1})).data?.share_url||``;if(e){S(f(e,C));return}}catch(e){console.error(`获取分享链接失败:`,e)}typeof window<`u`&&S(f(window.location.href,C))}},[_,g.id,C]);i(()=>{_&&S(_)},[_]),i(()=>{v&&g.id&&(w(),g.parentId||g.id)},[g.id,g.parentId,w,v]);async function T(){let e=await p(x);l.message(m(e?`shareContent.copySuccess`:`shareContent.copyFailed`)),y?.()}return c(`div`,{className:`w-full bg-bg1`,"data-type":h,children:[c(`div`,{className:`w-full p-[16px] flex-col items-center`,children:[s(`span`,{className:`text-text1 text-[20px] font-bold leading-[20px] block h-[20px] text-center`,children:m(`shareContent.shareLinksTitle`)}),s(`span`,{className:`mt-[16px] text-text2 text-[14px] leading-[14px] block h-[14px] text-center`,children:m(`shareContent.shareHint`)}),s(`div`,{className:`w-full bg-bg2 rounded-[8px] mt-[16px]`,children:s(`textarea`,{id:`share-url`,readOnly:!0,value:x,className:`w-full h-[80px] p-[10px] bg-transparent focus:outline-none text-text2 text-[14px] leading-[20px] break-all`})})]}),s(`button`,{type:`button`,className:`copy-btn w-full h-[48px] text-center text-white text-[18px] leading-[48px]`,style:{background:`var(--color-theme5)`},onClick:T,children:m(`shareContent.copyShareLink`)})]})}export{m as default};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pCommunityShareContent as t}from"../../../service/generated/client.mjs";import{apiCollectCustom as n}from"../../../utils/api-collect.mjs";import{toast as r}from"sonner";import{useCallback as i,useEffect as a,useMemo as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{useTranslations as u}from"next-intl";function d(e){return String(e?.user_code||e?.userCode||``)}function f(e,t){return t?`${e}${e.includes(`?`)?`&`:`?`}from_code=${t}`:e}async function p(e){if(!e)return!1;if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch(e){console.error(`复制失败:`,e)}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch(e){return console.error(`复制失败:`,e),!1}}function m(n){let m=u(`components.common.sharePopup`),{type:h,data:g,copyUrl:_,visible:v=!0,onClose:y}=n,{userInfo:b}=e(),[x,S]=s(_||``),C=o(()=>d(b),[b]),w=i(async()=>{if(!_){try{let e=(await t({content_id:g.id},{revalidate:!1})).data?.share_url||``;if(e){S(f(e,C));return}}catch(e){console.error(`获取分享链接失败:`,e)}typeof window<`u`&&S(f(window.location.href,C))}},[_,g.id,C]);a(()=>{_&&S(_)},[_]),a(()=>{v&&g.id&&(w(),g.parentId||g.id)},[g.id,g.parentId,w,v]);async function T(){let e=await p(x);r.message(m(e?`shareContent.copySuccess`:`shareContent.copyFailed`)),y?.()}return l(`div`,{className:`w-full bg-bg1`,"data-type":h,children:[l(`div`,{className:`w-full p-[16px] flex-col items-center`,children:[c(`span`,{className:`text-text1 text-[20px] font-bold leading-[20px] block h-[20px] text-center`,children:m(`shareContent.shareLinksTitle`)}),c(`span`,{className:`mt-[16px] text-text2 text-[14px] leading-[14px] block h-[14px] text-center`,children:m(`shareContent.shareHint`)}),c(`div`,{className:`w-full bg-bg2 rounded-[8px] mt-[16px]`,children:c(`textarea`,{id:`share-url`,readOnly:!0,value:x,className:`w-full h-[80px] p-[10px] bg-transparent focus:outline-none text-text2 text-[14px] leading-[20px] break-all`})})]}),c(`button`,{type:`button`,className:`copy-btn w-full h-[48px] text-center text-white text-[18px] leading-[48px]`,style:{background:`var(--color-theme5)`},onClick:T,children:m(`shareContent.copyShareLink`)})]})}export{m as default};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import n from"../../ui/link.mjs";import r from"../../../assets/icons/tabs/follow.mjs";import i from"../../../assets/icons/tabs/follow_active.mjs";import a from"../../../assets/icons/tabs/home.mjs";import o from"../../../assets/icons/tabs/home_active.mjs";import s from"../../../assets/icons/tabs/mine.mjs";import c from"../../../assets/icons/tabs/mine_active.mjs";import l from"../../ui/legacy/badge.mjs";import{useEffect as u,useState as d,useTransition as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{usePathname as h}from"next/navigation";import{useTranslations as g}from"next-intl";function _(e,t){if(t!==`/`)return e.startsWith(t);let n=[`/user`].some(t=>e.startsWith(t)),r=e.startsWith(`/category/`);return!n&&(e===`/`||r)}const v=[`/nav-page`];function y(y){let{className:b}=y,x=h(),S=g(`tabBar`),[C,w]=d(null),[,T]=f(),[E]=d(0),[D,O]=d(!1),k=[{badge:!1,id:1,labelKey:`home`,path:`/`,icon:a,activeIcon:o,width:20,height:20},{badge:!1,id:2,labelKey:`follow`,path:`/user/follow`,icon:r,activeIcon:i,width:20,height:20},{badge:!1,id:5,labelKey:`mine`,path:`/user/mine`,icon:s,activeIcon:c,width:20,height:20}],A=(e,t,n)=>{t!==x&&w(t)};return u(()=>{C&&_(x,C)&&T(()=>{w(null)})},[x,C]),u(()=>{let e=setTimeout(()=>{O(!0)},0);return()=>clearTimeout(e)},[]),x&&v.some(e=>x.includes(e))?null:p(e,{className:`fixed bottom-0 left-0 right-0 z-50 flex flex-col items-center ${b||``}`,style:{background:`rgba(5, 1, 15, 0.90)`,backdropFilter:`blur(4px)`,WebkitBackdropFilter:`blur(4px)`,paddingBottom:`env(safe-area-inset-bottom, 0px)`},children:p(e,{className:`my-[4px] flex h-[56px] w-[358px] items-center justify-between px-[40px]`,style:{background:`rgba(1, 0, 2, 0.80)`,borderRadius:`100px`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,boxShadow:`0 12px 100px rgba(255, 255, 255, 0.20)`},children:k.map(r=>{let i=D&&x?_(C||x||``,r.path):!1,a=i?r.activeIcon:r.icon,o=m(e,{className:`flex flex-col items-center ${i?`gap-[5px]`:`gap-[4px]`}`,children:[r.badge&&E>0?p(l,{dot:!0,children:p(a,{width:20,height:20})}):p(a,{width:20,height:20}),p(t,{className:`whitespace-nowrap text-center text-[12px] leading-[16px] ${i?`text-[#C043E8]`:`text-[#BFBFBF]`}`,children:S(r.labelKey)})]});return i?p(e,{className:`flex items-center justify-center`,children:o},r.id):p(n,{href:r.path,prefetch:!0,className:`flex items-center justify-center`,onClick:e=>{A(e,r.path,r.labelKey)},children:o},r.id)})})})}export{y as TabBar};
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{Text as t}from"../../ui/text.mjs";import n from"../../ui/link.mjs";import r from"../../../assets/icons/tabs/follow.mjs";import i from"../../../assets/icons/tabs/follow_active.mjs";import a from"../../../assets/icons/tabs/home.mjs";import o from"../../../assets/icons/tabs/home_active.mjs";import s from"../../../assets/icons/tabs/mine.mjs";import c from"../../../assets/icons/tabs/mine_active.mjs";import l from"../../ui/legacy/badge.mjs";import{useEffect as u,useState as d,useTransition as f}from"react";import{usePathname as p}from"next/navigation";import{jsx as m,jsxs as h}from"react/jsx-runtime";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=p(),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:m(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:m(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=h(e,{className:`flex flex-col items-center ${i?`gap-[5px]`:`gap-[4px]`}`,children:[r.badge&&E>0?m(l,{dot:!0,children:m(a,{width:20,height:20})}):m(a,{width:20,height:20}),m(t,{className:`whitespace-nowrap text-center text-[12px] leading-[16px] ${i?`text-[#C043E8]`:`text-[#BFBFBF]`}`,children:S(r.labelKey)})]});return i?m(e,{className:`flex items-center justify-center`,children:o},r.id):m(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};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{gContentGetAppChannelBlock as t,gContentGetAppChannels as n}from"../../../service/generated/client.mjs";import{trackAppPageView as r}from"../../../utils/tracking.mjs";import{Box as i}from"../../ui/box.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{queryKey as o}from"../../../constants/query-key.mjs";import{matchChannelByPath as s}from"../../pages/home/channel-matcher.mjs";import{TopNavBarFullscreen as c}from"./fullscreen.mjs";import{TopNavBarNormal as l}from"./normal.mjs";import{useEffect as u,useMemo as d}from"react";import{jsx as f}from"react/jsx-runtime";import{usePathname as p}from"next/navigation";function m(e){return e===`/`?[]:e.startsWith(`/category/`)?e.replace(`/category/`,``).split(`/`).map(e=>decodeURIComponent(e)):[]}function h({categoryPath:h,currentChannelId:g}){let _=p()||`/`,{data:v}=a([o.CHANNEL],()=>n()),y=d(()=>e(v?.data),[v?.data]),b=d(()=>typeof window>`u`?h||[]:m(_),[h,_]),x=d(()=>y.length===0?null:s(b,y),[b,y])?.id??g??``;u(()=>{r({page_key:`page_home_top_nav`,page_name:`首页顶部导航栏`})},[]);let{data:S}=a(o.GET_CONTENT_LIST(x),()=>t({channel_id:x}),{enabled:!!x}),C=d(()=>S?.data?.blocks||[],[S?.data?.blocks]),w=d(()=>C.length>0&&C[0].show_style===6,[C]);return f(i,{className:`w-full`,"data-top-nav-root":`true`,children:f(w?c:l,{channelDataList:y,currentChannelId:x})})}export{h as TopNavBar};
2
+ "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{gContentGetAppChannelBlock as t,gContentGetAppChannels as n}from"../../../service/generated/client.mjs";import{trackAppPageView as r}from"../../../utils/tracking.mjs";import{Box as i}from"../../ui/box.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{queryKey as o}from"../../../constants/query-key.mjs";import{matchChannelByPath as s}from"../../pages/home/channel-matcher.mjs";import{TopNavBarFullscreen as c}from"./fullscreen.mjs";import{TopNavBarNormal as l}from"./normal.mjs";import{useEffect as u,useMemo as d}from"react";import{usePathname as f}from"next/navigation";import{jsx as p}from"react/jsx-runtime";function m(e){return e===`/`?[]:e.startsWith(`/category/`)?e.replace(`/category/`,``).split(`/`).map(e=>decodeURIComponent(e)):[]}function h({categoryPath:h,currentChannelId:g}){let _=f()||`/`,{data:v}=a([o.CHANNEL],()=>n()),y=d(()=>e(v?.data),[v?.data]),b=d(()=>typeof window>`u`?h||[]:m(_),[h,_]),x=d(()=>y.length===0?null:s(b,y),[b,y])?.id??g??``;u(()=>{r({page_key:`page_home_top_nav`,page_name:`首页顶部导航栏`})},[]);let{data:S}=a(o.GET_CONTENT_LIST(x),()=>t({channel_id:x}),{enabled:!!x}),C=d(()=>S?.data?.blocks||[],[S?.data?.blocks]),w=d(()=>C.length>0&&C[0].show_style===6,[C]);return p(i,{className:`w-full`,"data-top-nav-root":`true`,children:p(w?c:l,{channelDataList:y,currentChannelId:x})})}export{h as TopNavBar};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as t}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as n}from"../../../service/generated/tanstack.mjs";import{trackAdClick as r,trackAdImpression as i}from"../../../utils/tracking.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as o}from"./video-player-ref-context.mjs";import{useIsClient as s}from"foxact/use-is-client";import{useEffect as c,useRef as l,useState as u}from"react";import{jsx as d}from"react/jsx-runtime";import{create as f}from"zustand";import{createJSONStorage as p,persist as m}from"zustand/middleware";import{createPortal as h}from"react-dom";const g=f()(m((e,t)=>({shownVideoIds:new Set,hasShown:e=>t().shownVideoIds.has(e),markAsShown:n=>{let r=t().shownVideoIds;if(!r.has(n)){let t=new Set(r);t.add(n),e({shownVideoIds:t})}}}),{name:`video-blind-ad-storage`,storage:typeof window<`u`?p(()=>sessionStorage):void 0,partialize:e=>({shownVideoIds:Array.from(e.shownVideoIds)}),merge:(e,t)=>({...t,shownVideoIds:new Set(e.shownVideoIds||[])})})),_=`video_blind`;function v({videoId:f}){let p=o(),m=s(),v=e(e=>e.userId),{hasShown:y,markAsShown:b}=g(),x=l(0),S=l(null),[C,w]=u(!1),T=l(!1),E={user_id:v,ad_type:`blind`},{data:D,isLoading:O}=a(n(E),()=>t(E)),k=y(f),A=D?.data?.materials?.[0]?.advertise_code||``,j=!k&&C;c(()=>{!j||!A||i({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:A,ad_type:`blind`})},[j,A]),c(()=>{let e=p?.current?.getPlayer();if(!e||!D||k)return;let t=D.data?.settings?.trigger_video_progress_min??0;function n(r){if(T.current){e?.off(`timeupdate`,n);return}let i=r?.currentTime;if(S.current!==null){let e=i-S.current;e>0&&e<2&&(x.current+=e,!T.current&&x.current/60>=t&&(T.current=!0,w(!0)))}S.current=i}return e.on(`timeupdate`,n),()=>{e.off(`timeupdate`,n)}},[p,D,k]),c(()=>{if(j)return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}},[j]);function M(){k||(A&&r({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:A,ad_type:`blind`}),b(f),window.open(D?.data.materials?.[0].advertise_url))}return!m||typeof document>`u`||O||D?.data?.hit===!1||k||!C?null:h(d(`div`,{className:`blind-ad-overlay fixed inset-0 h-screen w-screen z-[99999]`,onClick:M}),document.body)}export{v as VideoBlindAdOverlay};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as t}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as n}from"../../../service/generated/tanstack.mjs";import{trackAdClick as r,trackAdImpression as i}from"../../../utils/tracking.mjs";import{useRequest as a}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as o}from"./video-player-ref-context.mjs";import{create as s}from"zustand";import{createJSONStorage as c,persist as l}from"zustand/middleware";import{useEffect as u,useRef as d,useState as f}from"react";import{useIsClient as p}from"foxact/use-is-client";import{jsx as m}from"react/jsx-runtime";import{createPortal as h}from"react-dom";const g=s()(l((e,t)=>({shownVideoIds:new Set,hasShown:e=>t().shownVideoIds.has(e),markAsShown:n=>{let r=t().shownVideoIds;if(!r.has(n)){let t=new Set(r);t.add(n),e({shownVideoIds:t})}}}),{name:`video-blind-ad-storage`,storage:typeof window<`u`?c(()=>sessionStorage):void 0,partialize:e=>({shownVideoIds:Array.from(e.shownVideoIds)}),merge:(e,t)=>({...t,shownVideoIds:new Set(e.shownVideoIds||[])})})),_=`video_blind`;function v({videoId:s}){let c=o(),l=p(),v=e(e=>e.userId),{hasShown:y,markAsShown:b}=g(),x=d(0),S=d(null),[C,w]=f(!1),T=d(!1),E={user_id:v,ad_type:`blind`},{data:D,isLoading:O}=a(n(E),()=>t(E)),k=y(s),A=D?.data?.materials?.[0]?.advertise_code||``,j=!k&&C;u(()=>{!j||!A||i({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:A,ad_type:`blind`})},[j,A]),u(()=>{let e=c?.current?.getPlayer();if(!e||!D||k)return;let t=D.data?.settings?.trigger_video_progress_min??0;function n(r){if(T.current){e?.off(`timeupdate`,n);return}let i=r?.currentTime;if(S.current!==null){let e=i-S.current;e>0&&e<2&&(x.current+=e,!T.current&&x.current/60>=t&&(T.current=!0,w(!0)))}S.current=i}return e.on(`timeupdate`,n),()=>{e.off(`timeupdate`,n)}},[c,D,k]),u(()=>{if(j)return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=``}},[j]);function M(){k||(A&&r({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`盲点广告`,ad_id:A,ad_type:`blind`}),b(s),window.open(D?.data.materials?.[0].advertise_url))}return!l||typeof document>`u`||O||D?.data?.hit===!1||k||!C?null:h(m(`div`,{className:`blind-ad-overlay fixed inset-0 h-screen w-screen z-[99999]`,onClick:M}),document.body)}export{v as VideoBlindAdOverlay};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as t}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as n}from"../../../service/generated/tanstack.mjs";import{trackAdClick as r,trackAdImpression as i,trackAdvertising as a}from"../../../utils/tracking.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as s}from"./video-player-ref-context.mjs";import{PrerollSkipButtonContent as c}from"./preroll-skip-button-content.mjs";import{useIsClient as l}from"foxact/use-is-client";import{useCallback as u,useEffect as d,useRef as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{createPortal as g}from"react-dom";const _=`video_preroll`,v=new Set;function y({videoId:y}){let b=s(),x=l(),S=e(e=>e.userId),[C,w]=p(!1),[T,E]=p(0),D=f(null),O=f(!1),k={user_id:S,ad_type:`preroll`},{data:A,isLoading:j}=o(n(k),()=>t(k)),M=A?.data?.materials?.[0],N=A?.data?.settings?.skip_seconds??5,P=M?.advertise_code||``,F=v.has(y);d(()=>{if(A?.data?.hit!==!0||!M||O.current||F)return;function e(){if(!O.current){O.current=!0,w(!0),E(N);try{b?.current?.getPlayer()?.pause?.()}catch{}}}let t=b?.current?.getPlayer();if(t)if(b?.current?.isPlayerReady())e();else return t.once?.(`ready`,e),()=>{t.off?.(`ready`,e)}},[A,F,M,b,N]),d(()=>{if(!(!C||N<=0))return D.current=setInterval(()=>{E(e=>e<=1?(D.current&&=(clearInterval(D.current),null),0):e-1)},1e3),()=>{D.current&&=(clearInterval(D.current),null)}},[C,N]),d(()=>{!C||!P||i({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:P,ad_type:`preroll`})},[C,P]);let I=u(()=>{D.current&&=(clearInterval(D.current),null),w(!1),v.add(y);try{b?.current?.getPlayer()?.play?.().catch?.(()=>{})}catch{}P&&a({event_type:`close`,advertising_key:_,advertising_name:`视频贴片广告`,advertising_id:P})},[P,b,y]);function L(){P&&r({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:P,ad_type:`preroll`}),M?.advertise_url&&window.open(M.advertise_url)}return!x||typeof document>`u`||j||!C?null:g(h(`div`,{className:`fixed inset-0 z-[99998] bg-black`,children:[M?.advertise_icon&&m(`img`,{src:M.advertise_icon,alt:M.advertise_name||`视频贴片广告`,className:`h-full w-full cursor-pointer object-cover`,onClick:L}),m(`div`,{className:`absolute right-4 top-4 z-10`,children:T<=0?m(`button`,{type:`button`,className:`cursor-pointer rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,onClick:I,children:m(c,{label:`跳过广告`})}):h(`div`,{className:`rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,children:[T,`秒后可跳过`]})})]}),document.body)}export{y as VideoPrerollAdOverlay};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{pContentMatchAds as t}from"../../../service/generated/client.mjs";import{pContentMatchAdsKey as n}from"../../../service/generated/tanstack.mjs";import{trackAdClick as r,trackAdImpression as i,trackAdvertising as a}from"../../../utils/tracking.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{useVideoPlayerRef as s}from"./video-player-ref-context.mjs";import{PrerollSkipButtonContent as c}from"./preroll-skip-button-content.mjs";import{useCallback as l,useEffect as u,useRef as d,useState as f}from"react";import{useIsClient as p}from"foxact/use-is-client";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{createPortal as g}from"react-dom";const _=`video_preroll`,v=new Set;function y({videoId:y}){let b=s(),x=p(),S=e(e=>e.userId),[C,w]=f(!1),[T,E]=f(0),D=d(null),O=d(!1),k={user_id:S,ad_type:`preroll`},{data:A,isLoading:j}=o(n(k),()=>t(k)),M=A?.data?.materials?.[0],N=A?.data?.settings?.skip_seconds??5,P=M?.advertise_code||``,F=v.has(y);u(()=>{if(A?.data?.hit!==!0||!M||O.current||F)return;function e(){if(!O.current){O.current=!0,w(!0),E(N);try{b?.current?.getPlayer()?.pause?.()}catch{}}}let t=b?.current?.getPlayer();if(t)if(b?.current?.isPlayerReady())e();else return t.once?.(`ready`,e),()=>{t.off?.(`ready`,e)}},[A,F,M,b,N]),u(()=>{if(!(!C||N<=0))return D.current=setInterval(()=>{E(e=>e<=1?(D.current&&=(clearInterval(D.current),null),0):e-1)},1e3),()=>{D.current&&=(clearInterval(D.current),null)}},[C,N]),u(()=>{!C||!P||i({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:P,ad_type:`preroll`})},[C,P]);let I=l(()=>{D.current&&=(clearInterval(D.current),null),w(!1),v.add(y);try{b?.current?.getPlayer()?.play?.().catch?.(()=>{})}catch{}P&&a({event_type:`close`,advertising_key:_,advertising_name:`视频贴片广告`,advertising_id:P})},[P,b,y]);function L(){P&&r({page_key:`detail`,page_name:`详情页`,ad_slot_key:_,ad_slot_name:`视频贴片广告`,ad_id:P,ad_type:`preroll`}),M?.advertise_url&&window.open(M.advertise_url)}return!x||typeof document>`u`||j||!C?null:g(h(`div`,{className:`fixed inset-0 z-[99998] bg-black`,children:[M?.advertise_icon&&m(`img`,{src:M.advertise_icon,alt:M.advertise_name||`视频贴片广告`,className:`h-full w-full cursor-pointer object-cover`,onClick:L}),m(`div`,{className:`absolute right-4 top-4 z-10`,children:T<=0?m(`button`,{type:`button`,className:`cursor-pointer rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,onClick:I,children:m(c,{label:`跳过广告`})}):h(`div`,{className:`rounded-lg bg-black/60 px-3 py-1 text-sm text-white`,children:[T,`秒后可跳过`]})})]}),document.body)}export{y as VideoPrerollAdOverlay};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{useRouter as e}from"../../../../../utils/use-compatible-router.mjs";import{Tabs as t,TabsList as n,TabsTrigger as r}from"../../../../ui/tabs.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{usePathname as o,useSearchParams as s}from"next/navigation";import{useTranslations as c}from"next-intl";function l({type:l}){let u=c(`components.pages.follow.components.interactionTabs`),d=e(),f=s(),p=o();return i(t,{value:l,onValueChange:e=>{let t=e===`fans`?`fans`:`followed`,n=p;n=p.replace(/\/(fans|followed)/,`/${t}`);let r=f.get(`user_id`),i=r?`?user_id=${r}`:``;d.replace(`${n}${i}`)},className:`h-full`,children:a(n,{variant:`default`,className:`h-full`,children:[i(r,{value:`followed`,className:`h-full px-3`,children:u(`follow`)}),i(r,{value:`fans`,className:`h-full px-3`,children:u(`fans`)})]})})}export{l as InteractionTabs};
2
+ "use client";import{useRouter as e}from"../../../../../utils/use-compatible-router.mjs";import{Tabs as t,TabsList as n,TabsTrigger as r}from"../../../../ui/tabs.mjs";import{usePathname as i,useSearchParams as a}from"next/navigation";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";function l({type:l}){let u=c(`components.pages.follow.components.interactionTabs`),d=e(),f=a(),p=i();return o(t,{value:l,onValueChange:e=>{let t=e===`fans`?`fans`:`followed`,n=p;n=p.replace(/\/(fans|followed)/,`/${t}`);let r=f.get(`user_id`),i=r?`?user_id=${r}`:``;d.replace(`${n}${i}`)},className:`h-full`,children:s(n,{variant:`default`,className:`h-full`,children:[o(r,{value:`followed`,className:`h-full px-3`,children:u(`follow`)}),o(r,{value:`fans`,className:`h-full px-3`,children:u(`fans`)})]})})}export{l as InteractionTabs};
@@ -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{gCommunityGetContentList as n,pCommunityAddContentToCollection as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{Box as a}from"../../ui/box.mjs";import{useDeleteRequest as o,useMutation as s,usePaginated as c}from"../../../hooks/query/use-query.mjs";import{HeaderNav as l}from"../../common/header-nav/client.mjs";import{UserActivityList as u}from"../../common/list/user-activity-list/user-activity-list.mjs";import{useMemo as d,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{toast as h}from"sonner";import{useRouter as g}from"next/navigation";import{useTranslations as _}from"next-intl";function v(e){return{type:e.type,content_id:e.content_id||``,author:{nick_name:e.author?.nickname||``,nickname:e.author?.nickname||``,avatar:e.author?.avatar_url||``},content:e.content||``,medias:e.medias||[],like_count:e.like_count||0,is_liked:e.interaction?.is_liked||!1,dislike_count:e.dislike_count||0,is_dislike:e.interaction?.is_dislike||!1,comment_count:e.comment_count||0}}function y({id:y}){let{userId:b}=t();i(`page_collection_add`,`添加到合集`);let x=y,[S,C]=f(()=>new Set),w=o(),{mutateAsync:T,isPending:E}=s(async e=>await r({collection_id:x,content_id:e})),{data:D,isFetching:O,fetchNextPage:k,hasNextPage:A}=c({key:[`collection-add`,x,b],initialPageParam:1,async queryFn(e){if(!b)return{data:{list:[],total:0}};let t=await n({user_id:b,page:e,collection_id:x,page_size:10}),r=t.data?.data?.contents??[];return{data:{list:r,total:t.data?.data?.total??r.length,has_more:t.data?.data?.has_more?!0:void 0}}},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),j=_(`components.pages.collectionAdd`),M=d(()=>D?.pages.flatMap(e=>((e?.data).list||[]).map(e=>v(e)))??[],[D]);function N(e){E||C(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function P(){if(E)return;if(!x){h.error(j(`page.collectionNotFound`));return}if(!b){h.error(j(`page.userNotFound`));return}let e=Array.from(S);if(e.length===0){h.error(j(`page.selectPostFirst`));return}let t=h.loading(j(`page.submitting`));try{await Promise.all(e.map(e=>T(e))),h.success(j(`page.submitSuccess`),{id:t}),C(new Set),w([`collection-add`,x,b]),w([`collection-detail`,x])}catch(e){console.error(`添加合集失败`,e),h.error(j(`page.submitFailed`),{id:t})}}let F=g(),I=S.size;return m(a,{className:`bg-bg2 !min-h-screen`,children:[p(l,{onBack:()=>F.back(),className:`!bg-bg2`,title:j(`page.title`),rightChild:m(e,{onClick:P,disabled:E||I===0,children:[j(`page.done`),`(`,I,`)`]})}),p(u,{list:M,loading:O,hasMore:A,loadMore:async()=>{k()},emptyText:j(`page.emptyPublish`),showGroupHeaders:!1,isEditMode:!0,selectedIds:S,onToggleSelection:N})]})}export{y as CollectionAddPage};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gCommunityGetContentList as t,pCommunityAddContentToCollection as n}from"../../../service/generated/client.mjs";import{usePageLifecycle as r}from"../../../utils/tracking.mjs";import{Button as i}from"../../ui/button.mjs";import{Box as a}from"../../ui/box.mjs";import{useDeleteRequest as o,useMutation as s,usePaginated as c}from"../../../hooks/query/use-query.mjs";import{HeaderNav as l}from"../../common/header-nav/client.mjs";import{UserActivityList as u}from"../../common/list/user-activity-list/user-activity-list.mjs";import{toast as d}from"sonner";import{useMemo as f,useState as p}from"react";import{useRouter as m}from"next/navigation";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";function v(e){return{type:e.type,content_id:e.content_id||``,author:{nick_name:e.author?.nickname||``,nickname:e.author?.nickname||``,avatar:e.author?.avatar_url||``},content:e.content||``,medias:e.medias||[],like_count:e.like_count||0,is_liked:e.interaction?.is_liked||!1,dislike_count:e.dislike_count||0,is_dislike:e.interaction?.is_dislike||!1,comment_count:e.comment_count||0}}function y({id:y}){let{userId:b}=e();r(`page_collection_add`,`添加到合集`);let x=y,[S,C]=p(()=>new Set),w=o(),{mutateAsync:T,isPending:E}=s(async e=>await n({collection_id:x,content_id:e})),{data:D,isFetching:O,fetchNextPage:k,hasNextPage:A}=c({key:[`collection-add`,x,b],initialPageParam:1,async queryFn(e){if(!b)return{data:{list:[],total:0}};let n=await t({user_id:b,page:e,collection_id:x,page_size:10}),r=n.data?.data?.contents??[];return{data:{list:r,total:n.data?.data?.total??r.length,has_more:n.data?.data?.has_more?!0:void 0}}},getNextPageParam(e,t){let n=e?.data||{},r=n.list||[];if(typeof n.has_more==`boolean`)return n.has_more?t.length+1:void 0;if(!(r.length===0||n.total===0))return t.length+1}}),j=_(`components.pages.collectionAdd`),M=f(()=>D?.pages.flatMap(e=>((e?.data).list||[]).map(e=>v(e)))??[],[D]);function N(e){E||C(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function P(){if(E)return;if(!x){d.error(j(`page.collectionNotFound`));return}if(!b){d.error(j(`page.userNotFound`));return}let e=Array.from(S);if(e.length===0){d.error(j(`page.selectPostFirst`));return}let t=d.loading(j(`page.submitting`));try{await Promise.all(e.map(e=>T(e))),d.success(j(`page.submitSuccess`),{id:t}),C(new Set),w([`collection-add`,x,b]),w([`collection-detail`,x])}catch(e){console.error(`添加合集失败`,e),d.error(j(`page.submitFailed`),{id:t})}}let F=m(),I=S.size;return g(a,{className:`bg-bg2 !min-h-screen`,children:[h(l,{onBack:()=>F.back(),className:`!bg-bg2`,title:j(`page.title`),rightChild:g(i,{onClick:P,disabled:E||I===0,children:[j(`page.done`),`(`,I,`)`]})}),h(u,{list:M,loading:O,hasMore:A,loadMore:async()=>{k()},emptyText:j(`page.emptyPublish`),showGroupHeaders:!1,isEditMode:!0,selectedIds:S,onToggleSelection:N})]})}export{y as CollectionAddPage};
@@ -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,pCommunityCreateCollection as r,pCommunityUpdateCollection as i}from"../../../service/generated/client.mjs";import{usePageLifecycle as a}from"../../../utils/tracking.mjs";import{useRouter as o}from"../../../utils/use-compatible-router.mjs";import{Box as s}from"../../ui/box.mjs";import{InputGroup as c,InputGroupAddon as l,InputGroupTextarea as u}from"../../ui/input-group.mjs";import{Field as d,FieldLabel as f}from"../../ui/field.mjs";import{useDeleteRequest as p,useRequest as m}from"../../../hooks/query/use-query.mjs";import{HeaderNav as h}from"../../common/header-nav/client.mjs";import{useEffect as g,useRef as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";function C({mode:C=`create`,collectionId:w}){let T=S(`components.pages.collectionCreate`);a(`page_collection_create`,`创建合集`);let E=o(),{userId:D}=t(),O=p();_(null);let k=C===`edit`&&!!w,A=_(!1),[j,M]=v(!1),[N,P]=v(!1),[F,I]=v(``),[L,R]=v({title:``,description:``}),z=m([`collection-detail`,w],()=>n({collection_id:w}),{enabled:!!(k&&w)}).data?.data?.data?.collection;g(()=>{!k||A.current||!z||(R({title:z.title??``,description:z.description??``}),I(z.cover_image??``),A.current=!0)},[z,k]);function B(e,t){R(n=>({...n,[e]:t}))}async function V(){if(j)return;let e=L.title.trim(),t=L.description.trim();if(!e){x.error(T(`form.titleRequired`));return}if(k&&!w){x.error(T(`form.collectionNotFound`));return}try{M(!0);let n=x.loading(T(k?`form.saving`:`form.creating`)),a=k?await i({collection_id:w,title:e,description:t,cover_image:F}):await r({title:e,description:t,cover_image:F});if(a.code===0){x.success(T(k?`form.saveSuccess`:`form.createSuccess`),{id:n}),D&&O([`user-profile`,`mine`,D,`user-collection-created`,D]),k&&w&&O([`collection-detail`,w]),E.back();return}x.error(a.message||T(k?`form.saveFailed`:`form.createFailed`),{id:n})}catch(e){console.error(k?`编辑合集失败`:`创建合集失败`,e),x.error(T(k?`form.saveFailed`:`form.createFailed`))}finally{M(!1)}}return b(s,{className:`min-h-screen !bg-bg2`,children:[y(h,{title:T(k?`form.editTitle`:`form.createTitle`),onBack:()=>E.back(),className:`!bg-bg2`,rightChild:y(e,{onClick:V,disabled:j||N,children:T(j?k?`form.saving`:`form.creating`:k?`form.save`:`form.create`)})}),b(s,{className:`pb-3`,children:[b(d,{className:`!bg-bg2 px-3 border-none`,children:[y(f,{required:!0,children:T(`form.label`)}),b(c,{children:[y(u,{className:`!bg-bg1 p-2.5`,maxLength:50,placeholder:T(`form.titlePlaceholder`),value:L.title,onChange:e=>B(`title`,e.target.value)}),y(l,{className:`!bg-bg1`,align:`block-end`,children:y(`div`,{className:`text-right w-full`,children:b(`span`,{className:`text-xs`,children:[L.title.length,`/50`]})})})]})]}),b(d,{className:`border-none px-3 bg-bg2! `,children:[y(f,{children:T(`form.descriptionLabel`)}),b(c,{children:[y(u,{className:`!bg-bg1 p-2.5`,maxLength:100,placeholder:T(`form.descriptionPlaceholder`),value:L.description,onChange:e=>B(`description`,e.target.value)}),y(l,{className:`!bg-bg1`,align:`block-end`,children:y(`div`,{className:`text-right w-full`,children:b(`span`,{className:`text-xs`,children:[L.description.length,`/100`]})})})]})]})]})]})}export{C as CollectionCreateForm};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as t,pCommunityCreateCollection as n,pCommunityUpdateCollection as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Button as o}from"../../ui/button.mjs";import{Box as s}from"../../ui/box.mjs";import{InputGroup as c,InputGroupAddon as l,InputGroupTextarea as u}from"../../ui/input-group.mjs";import{Field as d,FieldLabel as f}from"../../ui/field.mjs";import{useDeleteRequest as p,useRequest as m}from"../../../hooks/query/use-query.mjs";import{HeaderNav as h}from"../../common/header-nav/client.mjs";import{toast as g}from"sonner";import{useEffect as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{useTranslations as S}from"next-intl";function C({mode:C=`create`,collectionId:w}){let T=S(`components.pages.collectionCreate`);i(`page_collection_create`,`创建合集`);let E=a(),{userId:D}=e(),O=p();v(null);let k=C===`edit`&&!!w,A=v(!1),[j,M]=y(!1),[N,P]=y(!1),[F,I]=y(``),[L,R]=y({title:``,description:``}),z=m([`collection-detail`,w],()=>t({collection_id:w}),{enabled:!!(k&&w)}).data?.data?.data?.collection;_(()=>{!k||A.current||!z||(R({title:z.title??``,description:z.description??``}),I(z.cover_image??``),A.current=!0)},[z,k]);function B(e,t){R(n=>({...n,[e]:t}))}async function V(){if(j)return;let e=L.title.trim(),t=L.description.trim();if(!e){g.error(T(`form.titleRequired`));return}if(k&&!w){g.error(T(`form.collectionNotFound`));return}try{M(!0);let i=g.loading(T(k?`form.saving`:`form.creating`)),a=k?await r({collection_id:w,title:e,description:t,cover_image:F}):await n({title:e,description:t,cover_image:F});if(a.code===0){g.success(T(k?`form.saveSuccess`:`form.createSuccess`),{id:i}),D&&O([`user-profile`,`mine`,D,`user-collection-created`,D]),k&&w&&O([`collection-detail`,w]),E.back();return}g.error(a.message||T(k?`form.saveFailed`:`form.createFailed`),{id:i})}catch(e){console.error(k?`编辑合集失败`:`创建合集失败`,e),g.error(T(k?`form.saveFailed`:`form.createFailed`))}finally{M(!1)}}return x(s,{className:`min-h-screen !bg-bg2`,children:[b(h,{title:T(k?`form.editTitle`:`form.createTitle`),onBack:()=>E.back(),className:`!bg-bg2`,rightChild:b(o,{onClick:V,disabled:j||N,children:T(j?k?`form.saving`:`form.creating`:k?`form.save`:`form.create`)})}),x(s,{className:`pb-3`,children:[x(d,{className:`!bg-bg2 px-3 border-none`,children:[b(f,{required:!0,children:T(`form.label`)}),x(c,{children:[b(u,{className:`!bg-bg1 p-2.5`,maxLength:50,placeholder:T(`form.titlePlaceholder`),value:L.title,onChange:e=>B(`title`,e.target.value)}),b(l,{className:`!bg-bg1`,align:`block-end`,children:b(`div`,{className:`text-right w-full`,children:x(`span`,{className:`text-xs`,children:[L.title.length,`/50`]})})})]})]}),x(d,{className:`border-none px-3 bg-bg2! `,children:[b(f,{children:T(`form.descriptionLabel`)}),x(c,{children:[b(u,{className:`!bg-bg1 p-2.5`,maxLength:100,placeholder:T(`form.descriptionPlaceholder`),value:L.description,onChange:e=>B(`description`,e.target.value)}),b(l,{className:`!bg-bg1`,align:`block-end`,children:b(`div`,{className:`text-right w-full`,children:x(`span`,{className:`text-xs`,children:[L.description.length,`/100`]})})})]})]})]})]})}export{C as CollectionCreateForm};
@@ -1,2 +1,2 @@
1
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};
2
+ "use client";import{formatCompactCount as e}from"../../../../utils/common.mjs";import{cn as t}from"../../../../utils/cn.mjs";import{Image as n}from"../../../ui/image.mjs";import{Text as r}from"../../../ui/text.mjs";import{CollectionSelectIcon as i,CollectionSelectedIcon as a}from"../../../common/list/collection-list/collection-select-icon.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useTranslations as c}from"next-intl";import l from"next/link";function u(e){return o(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`18`,height:`14`,viewBox:`0 0 18 14`,fill:`none`,...e,children:o(`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 d(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 f(t){return e(Number.isFinite(t)?Math.max(0,Math.floor(t||0)):0)}function p({id:e,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=c(`components.ui.list.videoList`),C=`/video/${e}/${p}`,w=S(v?`videoListItem.series`:`videoListItem.movie`),T=v?g>0?`${g}集全`:``:d(h),E=f(_);function D(){x?.(e)}function O(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),D())}return s(`div`,{className:`relative w-full`,children:[s(`div`,{className:`relative h-[228px] w-full overflow-hidden rounded-[8px]`,children:[o(n,{src:m||`/empty/default-cover.png`,alt:p||S(`videoListItem.coverAlt`),fill:!0,className:`object-cover`}),o(`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&&o(`div`,{className:`absolute left-3 top-3 z-20`,children:o(b?a:i,{})}),!y&&s(`div`,{className:t(`absolute left-2 right-2 top-3 z-10 flex items-start justify-between gap-2`),children:[o(`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:o(r,{className:`text-[12px] leading-[14px] text-white`,children:w})}),T?o(r,{className:`shrink-0 text-[14px] leading-4 text-white`,children:T}):null]}),s(`div`,{className:`absolute bottom-3 left-[10px] right-[10px] z-10 flex items-end gap-2`,children:[o(r,{className:`min-w-0 flex-1 line-clamp-2 text-[16px] font-normal leading-6 text-[var(--color-text-white80)]`,dangerouslySetInnerHTML:{__html:p}}),s(`div`,{className:`mb-1 flex shrink-0 items-center gap-1 text-[12px] leading-5 text-white`,children:[o(u,{className:`h-[14px] w-[18px] opacity-80`}),o(r,{className:`text-[12px] leading-5 text-white`,children:E})]})]})]}),y?o(`button`,{type:`button`,className:`absolute inset-0 z-30 block w-full rounded-[8px] text-left`,onClick:D,onKeyDown:O,"aria-pressed":b,children:o(`span`,{className:`sr-only`,children:p||S(`videoListItem.coverAlt`)})}):o(l,{href:C,className:`absolute inset-0 z-30 block rounded-[8px]`,"aria-label":p||S(`videoListItem.coverAlt`)})]})}export{p 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,pCommunityDeleteCollection as r,pCommunityRemoveContentFromCollection as i,pInteractionBatchDeleteCollects as a}from"../../../service/generated/client.mjs";import{usePageLifecycle as o}from"../../../utils/tracking.mjs";import{useRouter as s}from"../../../utils/use-compatible-router.mjs";import{Box as c}from"../../ui/box.mjs";import{Checkbox as ee}from"../../ui/checkbox.mjs";import{DropdownMenu as l,DropdownMenuContent as te,DropdownMenuItem as u,DropdownMenuSeparator as d,DropdownMenuTrigger as ne}from"../../ui/dropdown-menu.mjs";import{List as f}from"../../ui/list.mjs";import{Text as re}from"../../ui/text.mjs";import{useLoginModalStore as ie}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as ae,useMutation as p,useRequest as oe}from"../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as se}from"../../common/collection-popup/create-collection-sheet.mjs";import{ShareDrawer as ce}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as m}from"../../../types/share.mjs";import h from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as g}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as _}from"../../common/header-nav/client.mjs";import{CollectionDetailCard as le}from"./_components/collection-detail-card.mjs";import{CollectionDetailVideoCard as ue}from"./_components/collection-detail-video-card.mjs";import{useMemo as v,useState as y}from"react";import{MoreVertical as de}from"lucide-react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{toast as S}from"sonner";import{useTranslations as fe}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 O(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 k({id:C}){let w=fe(`components.pages.collectionDetail`);o(`page_collection_detail`,`合集详情`);let T=s(),{userId:E,isLogin:D}=t(),{open:k}=ie(),A=ae(),j=oe([`collection-detail`,C],()=>n({collection_id:C})),M=j.data?.data?.data?.collection?.user_id,N=!!(M&&E&&String(M)===String(E)),[pe,P]=y(!1),[F,I]=y(!1),[L,R]=y(!1),[z,B]=y(!1),[V,H]=y(()=>new Set),[U,W]=y(null),G=j.data?.data?.data?.collection,K=G?.contents,q=v(()=>K?K.map(e=>({content_id:e.content_id,is_more_link:e.is_more_link,id:Number(e.content_id),detail:e,type:Number(e.source_type??0),medias:e.medias,cover_image:e.cover_image,viewCount:e.view_count})):[],[K]).map(O),me=q.length>0&&q.every(e=>e.type===1),J=v(()=>new Set(q.map(e=>e.id)),[q]),Y=J.size>0&&V.size===J.size,{mutateAsync:he,isPending:ge}=p(async e=>await i({collection_id:C,content_id:e})),{mutateAsync:_e,isPending:X}=p(async e=>await r({collection_id:e})),{mutateAsync:ve,isPending:Z}=p(async e=>await a({app_id:0,user_id:E,folder_id:C,content_type:1,content_ids:e})),ye=N&&G?.is_default===!1;function be(e){W({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),P(!0)}function xe(){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}if(!N){S.error(w(`detail.operationFailed`));return}H(new Set),B(!0)}function Se(){H(new Set),B(!1)}function Q(e){H(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function Ce(){if(Y){H(new Set);return}H(new Set(J))}async function we(){if(!(V.size===0||Z)){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}try{let e=await ve(Array.from(V));if(e.code===0){S.success(w(`detail.uncollectSuccess`)),A([`collection-detail`,C]),A([`user-profile`,`mine`]),A([`user-profile`,`profile`,M]),H(new Set),B(!1);return}S.error(e.message||w(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),S.error(w(`detail.operationFailed`))}}}function Te(e){if(typeof window>`u`)return``;if(e.kind===`collection`)return`${window.location.origin}/collection/${e.id}`;let t=e.title?encodeURIComponent(e.title):`detail`,n=e.type===1?`/video/${e.id}/${t}`:`/post/${e.id}`;return`${window.location.origin}${n}`}function $(e){if(!U)return;let t=Te(U);t&&h.showSharePopup({type:e,data:{id:U.id},copyUrl:t})}function Ee(){$(m.WECHAT)}function De(){$(m.QQ)}function Oe(){$(m.WECHAT_MOMENTS)}function ke(){if(!ge){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}!U||U.kind!==`content`||he(U.id).then(e=>{if(e.code===0){S.success(w(`detail.uncollectSuccess`)),A([`collection-detail`,C]),W(e=>e&&{...e,isCollected:!1});return}S.error(e.message||w(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),S.error(w(`detail.operationFailed`))})}}function Ae(){R(!0),P(!1)}function je(){if(!X){if(!D||!E){S.error(w(`detail.pleaseLogin`)),k();return}if(!ye){S.error(w(`detail.defaultCollectionDeleteNotSupported`));return}I(!0)}}async function Me(){if(!X)try{let e=await _e(C);if(e.code===0){S.success(w(`detail.deleteSuccess`)),A([`collection-detail`,C]),A([`user-profile`,`mine`]),A([`user-profile`,`profile`,M]),I(!1),P(!1),T.back();return}S.error(e.message||w(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),S.error(w(`detail.operationFailed`))}}return x(c,{className:`relative flex min-h-screen flex-col overflow-hidden bg-[var(--color-surface-panel-dark)] ${z?`pb-28`:`pb-6`}`,children:[b(_,{className:`!border-none !bg-[var(--color-surface-panel-dark)] !border-transparent`,title:G?.title??``,centerChild:b(`div`,{className:`flex min-w-0 flex-1 items-center justify-center px-12`,children:b(`p`,{className:`min-w-0 max-w-full truncate text-center text-[18px] leading-[22px] font-medium text-text1`,children:G?.title??``})}),onBack:()=>T.back(),rightChild:N?z?b(`button`,{type:`button`,onClick:Se,className:`px-2 py-1 text-sm text-text1`,children:w(`detail.done`)}):x(l,{children:[b(ne,{className:`flex h-10 w-10 items-center justify-center text-text1 outline-none`,children:b(de,{className:`h-5 w-5`,strokeWidth:2})}),x(te,{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(u,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:Ae,children:w(`detail.editCollection`)}),b(d,{className:`mx-0 my-1 bg-[#343237]`}),b(u,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:xe,children:w(`detail.manageCollection`)}),b(d,{className:`mx-0 my-1 bg-[#343237]`}),b(u,{className:`mx-1 h-8 rounded-[4px] px-[10px] text-[13px] leading-4 text-[#fafafa]`,onClick:je,disabled:X,children:w(X?`detail.deleting`:`detail.deleteCollection`)})]})]}):void 0}),b(c,{className:`relative z-[1] px-4 pb-4`,children:b(c,{className:`text-text2 text-sm leading-[22px] break-all text-ellipsis line-clamp-1`,children:G?.description})}),b(c,{className:`relative z-[1] px-4 ${z?`pb-20`:``}`,children:me?b(f,{loading:j.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),columns:2,gridGap:16,className:`!bg-transparent`,children:q.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:z,isSelected:V.has(e.id),onToggleSelection:Q},e.id))}):b(f,{loading:j.isLoading,hasMore:!1,emptyText:w(`detail.emptyContent`),className:`!bg-transparent divide-y divide-text1/5`,children:q.map(e=>b(le,{...e,onOpenShare:be,isEditMode:z,isSelected:V.has(e.id),onToggleSelection:Q},e.id))})}),z&&x(c,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[x(c,{className:`flex items-center gap-2`,children:[b(ee,{checked:Y,onCheckedChange:Ce}),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:V.size>0?`default`:`outline`,disabled:V.size===0||Z,onClick:we,children:w(Z?`detail.deleting`:`detail.delete`)})]}),b(ce,{isShowCollect:U?.kind===`content`&&N&&D,isCollected:U?.isCollected,open:pe,onOpenChange:P,onShareWeChat:Ee,onShareQQ:De,onShareMoments:Oe,onUncollect:ke}),b(se,{visible:L,mode:`edit`,collectionId:C,initialValues:G?{title:G.title??``,description:G.description??``}:void 0,onClose:()=>R(!1)}),b(g,{open:F,onOpenChange:I,onConfirm:Me,title:w(`detail.deleteCollection`),isConfirming:X})]})}export{k as CollectionDetail};
2
+ "use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as t,pCommunityDeleteCollection as n,pCommunityRemoveContentFromCollection as r,pInteractionBatchDeleteCollects as i}from"../../../service/generated/client.mjs";import{usePageLifecycle as a}from"../../../utils/tracking.mjs";import{useRouter as o}from"../../../utils/use-compatible-router.mjs";import{Button as s}from"../../ui/button.mjs";import{Box as c}from"../../ui/box.mjs";import{Checkbox as ee}from"../../ui/checkbox.mjs";import{DropdownMenu as te,DropdownMenuContent as ne,DropdownMenuItem as l,DropdownMenuSeparator as u,DropdownMenuTrigger as re}from"../../ui/dropdown-menu.mjs";import{List as d}from"../../ui/list.mjs";import{Text as ie}from"../../ui/text.mjs";import{useLoginModalStore as f}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as p,useMutation as m,useRequest as ae}from"../../../hooks/query/use-query.mjs";import{CreateCollectionSheet as oe}from"../../common/collection-popup/create-collection-sheet.mjs";import{ShareDrawer as se}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as h}from"../../../types/share.mjs";import ce from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as g}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{CollectionDetailCard as ue}from"./_components/collection-detail-card.mjs";import{CollectionDetailVideoCard as de}from"./_components/collection-detail-video-card.mjs";import{toast as _}from"sonner";import{useMemo as v,useState as y}from"react";import{MoreVertical as fe}from"lucide-react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import{useTranslations as pe}from"next-intl";function S(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 C(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 w(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 T(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 E(e){return e.detail.type===2||e.is_more_link||e.detail.info?.is_more_link||e.detail.is_more_link?!0:w(e)>1}function me(e){let t=e.detail,n=t.info,r=String(n?.cover_image||t.cover_image||S(e)||``),i=String(n?.text||n?.title||t.title||t.content||``),a=w(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:C(e),viewCount:T(e),episodeCount:a,publishTime:String(t.create_time??t.update_time??``),is_more_link:E(e),authorName:``}}function D({id:S}){let C=pe(`components.pages.collectionDetail`);a(`page_collection_detail`,`合集详情`);let w=o(),{userId:T,isLogin:E}=e(),{open:D}=f(),O=p(),k=ae([`collection-detail`,S],()=>t({collection_id:S})),A=k.data?.data?.data?.collection?.user_id,j=!!(A&&T&&String(A)===String(T)),[he,M]=y(!1),[ge,N]=y(!1),[P,F]=y(!1),[I,L]=y(!1),[R,z]=y(!1),[B,V]=y(()=>new Set),[H,U]=y(null),W=k.data?.data?.data?.collection,G=W?.contents,K=v(()=>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(me),_e=K.length>0&&K.every(e=>e.type===1),q=v(()=>new Set(K.map(e=>e.id)),[K]),J=q.size>0&&B.size===q.size,{mutateAsync:ve,isPending:ye}=m(async e=>await r({collection_id:S,content_id:e})),{mutateAsync:be,isPending:Y}=m(async e=>await n({collection_id:e})),{mutateAsync:xe,isPending:X}=m(async e=>await i({app_id:0,user_id:T,folder_id:S,content_type:1,content_ids:e})),Se=j&&W?.is_default===!1;function Ce(e){U({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),M(!0)}function we(){if(!E||!T){_.error(C(`detail.pleaseLogin`)),D();return}if(!j){_.error(C(`detail.operationFailed`));return}V(new Set),z(!0)}function Te(){V(new Set),z(!1)}function Z(e){V(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function Ee(){if(J){V(new Set);return}V(new Set(q))}function De(){if(!(B.size===0||X)){if(!E||!T){_.error(C(`detail.pleaseLogin`)),D();return}F(!0)}}async function Q(){if(!(B.size===0||X)){if(!E||!T){_.error(C(`detail.pleaseLogin`)),D(),F(!1);return}try{let e=await xe(Array.from(B));if(e.code===0){_.success(C(`detail.uncollectSuccess`)),O([`collection-detail`,S]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),V(new Set),z(!1),F(!1);return}_.error(e.message||C(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),_.error(C(`detail.operationFailed`))}}}function Oe(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=Oe(H);t&&ce.showSharePopup({type:e,data:{id:H.id},copyUrl:t})}function ke(){$(h.WECHAT)}function Ae(){$(h.QQ)}function je(){$(h.WECHAT_MOMENTS)}function Me(){if(!ye){if(!E||!T){_.error(C(`detail.pleaseLogin`)),D();return}!H||H.kind!==`content`||ve(H.id).then(e=>{if(e.code===0){_.success(C(`detail.uncollectSuccess`)),O([`collection-detail`,S]),U(e=>e&&{...e,isCollected:!1});return}_.error(e.message||C(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),_.error(C(`detail.operationFailed`))})}}function Ne(){L(!0),M(!1)}function Pe(){if(!Y){if(!E||!T){_.error(C(`detail.pleaseLogin`)),D();return}if(!Se){_.error(C(`detail.defaultCollectionDeleteNotSupported`));return}N(!0)}}async function Fe(){if(!Y)try{let e=await be(S);if(e.code===0){_.success(C(`detail.deleteSuccess`)),O([`collection-detail`,S]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),N(!1),M(!1),w.back();return}_.error(e.message||C(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),_.error(C(`detail.operationFailed`))}}return x(c,{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(`div`,{className:`flex min-w-0 flex-1 items-center justify-center px-12`,children:b(`p`,{className:`min-w-0 max-w-full truncate text-center text-[18px] leading-[22px] font-medium text-text1`,children:W?.title??``})}),onBack:()=>w.back(),rightChild:j?R?b(`button`,{type:`button`,onClick:Te,className:`px-2 py-1 text-sm text-text1`,children:C(`detail.done`)}):x(te,{children:[b(re,{className:`flex h-10 w-10 items-center justify-center text-text1 outline-none`,children:b(fe,{className:`h-5 w-5`,strokeWidth:2})}),x(ne,{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:Ne,children:C(`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:we,children:C(`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:Pe,disabled:Y,children:C(Y?`detail.deleting`:`detail.deleteCollection`)})]})]}):void 0}),b(c,{className:`relative z-[1] px-4 pb-4`,children:b(c,{className:`text-text2 text-sm leading-[22px] break-all text-ellipsis line-clamp-1`,children:W?.description})}),b(c,{className:`relative z-[1] px-4 ${R?`pb-20`:``}`,children:_e?b(d,{loading:k.isLoading,hasMore:!1,emptyText:C(`detail.emptyContent`),columns:2,gridGap:16,className:`!bg-transparent`,children:K.map(e=>b(de,{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:Z},e.id))}):b(d,{loading:k.isLoading,hasMore:!1,emptyText:C(`detail.emptyContent`),className:`!bg-transparent divide-y divide-text1/5`,children:K.map(e=>b(ue,{...e,onOpenShare:Ce,isEditMode:R,isSelected:B.has(e.id),onToggleSelection:Z},e.id))})}),R&&x(c,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[x(c,{className:`flex items-center gap-2`,children:[b(ee,{checked:J,onCheckedChange:Ee}),b(ie,{className:`text-sm text-text1`,children:C(`detail.selectAll`)})]}),b(s,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:B.size>0?`default`:`outline`,disabled:B.size===0||X,onClick:De,children:C(X?`detail.deleting`:`detail.delete`)})]}),b(se,{isShowCollect:H?.kind===`content`&&j&&E,isCollected:H?.isCollected,open:he,onOpenChange:M,onShareWeChat:ke,onShareQQ:Ae,onShareMoments:je,onUncollect:Me}),b(oe,{visible:I,mode:`edit`,collectionId:S,initialValues:W?{title:W.title??``,description:W.description??``}:void 0,onClose:()=>L(!1)}),b(g,{open:ge,onOpenChange:N,onConfirm:Fe,title:C(`detail.deleteCollection`),isConfirming:Y}),b(g,{open:P,onOpenChange:F,onConfirm:()=>void Q(),title:C(`detail.batchRemoveVideosConfirmTitle`),description:``,isConfirming:X})]})}export{D as CollectionDetail};