@funhub/platform 0.1.153 → 0.1.154

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 (118) hide show
  1. package/dist/components/biz/business/banner/variants/basic-banner/inspector-schema.d.mts +5 -4
  2. package/dist/components/biz/business/banner/variants/basic-banner/inspector-schema.mjs +1 -1
  3. package/dist/components/biz/business/banner/variants/basic-banner/material.d.mts +3 -2
  4. package/dist/components/biz/business/banner-carousel/material.d.mts +3 -2
  5. package/dist/components/biz/business/banner-carousel/schema.d.mts +3 -2
  6. package/dist/components/biz/business/banner-carousel/schema.mjs +1 -1
  7. package/dist/components/biz/business/channel-list/material.d.mts +3 -2
  8. package/dist/components/biz/business/channel-list/schema.d.mts +3 -2
  9. package/dist/components/biz/business/channel-list/schema.mjs +1 -1
  10. package/dist/components/biz/business/detail/shared/registry.d.mts +17 -14
  11. package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
  12. package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +1 -1
  13. package/dist/components/biz/business/detail/video-detail-actions/schema.mjs +1 -1
  14. package/dist/components/biz/business/detail/video-detail-info/material.d.mts +3 -2
  15. package/dist/components/biz/business/detail/video-detail-info/schema.d.mts +3 -2
  16. package/dist/components/biz/business/detail/video-detail-info/schema.mjs +1 -1
  17. package/dist/components/biz/business/detail/video-detail-info/server.mjs +1 -1
  18. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/material.d.mts +3 -2
  19. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/schema.d.mts +3 -2
  20. package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/schema.mjs +1 -1
  21. package/dist/components/biz/business/detail/video-detail-player/schema.mjs +1 -1
  22. package/dist/components/biz/business/detail/video-detail-player-bridge-only/client.d.mts +1 -1
  23. package/dist/components/biz/business/detail/video-detail-player-bridge-only/client.mjs +1 -1
  24. package/dist/components/biz/business/detail/video-detail-player-bridge-only/schema.mjs +1 -1
  25. package/dist/components/biz/business/detail/video-detail-recommend/client.mjs +1 -1
  26. package/dist/components/biz/business/detail/video-detail-recommend/material.d.mts +11 -10
  27. package/dist/components/biz/business/detail/video-detail-recommend/schema.d.mts +11 -10
  28. package/dist/components/biz/business/detail/video-detail-recommend/schema.mjs +1 -1
  29. package/dist/components/biz/business/floating-ball/material.d.mts +3 -2
  30. package/dist/components/biz/business/floating-ball/schema.d.mts +5 -4
  31. package/dist/components/biz/business/floating-ball/schema.mjs +1 -1
  32. package/dist/components/biz/business/header-search/header-avatar-icon/schema.mjs +1 -1
  33. package/dist/components/biz/business/header-search/header-avatar-logo-search/material.d.mts +3 -2
  34. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.d.mts +3 -2
  35. package/dist/components/biz/business/header-search/header-avatar-logo-search/schema.mjs +1 -1
  36. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/material.d.mts +3 -2
  37. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/schema.d.mts +3 -2
  38. package/dist/components/biz/business/header-search/header-avatar-logo-search-icon/schema.mjs +1 -1
  39. package/dist/components/biz/business/header-search/header-logo-search/material.d.mts +3 -2
  40. package/dist/components/biz/business/header-search/header-logo-search/schema.d.mts +3 -2
  41. package/dist/components/biz/business/header-search/header-logo-search/schema.mjs +1 -1
  42. package/dist/components/biz/business/header-search/header-search/schema.mjs +1 -1
  43. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.d.mts +13 -12
  44. package/dist/components/biz/business/home-recommend/home-recommend-grid/inspector-schema.mjs +1 -1
  45. package/dist/components/biz/business/home-recommend/home-recommend-grid/material.d.mts +13 -12
  46. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.d.mts +11 -10
  47. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/inspector-schema.mjs +1 -1
  48. package/dist/components/biz/business/home-recommend/home-recommend-waterfall/material.d.mts +11 -10
  49. package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
  50. package/dist/components/biz/business/home-recommend/shared/home-recommend-server-data.mjs +1 -1
  51. package/dist/components/biz/business/home-recommend/shared/home-recommend-video-detail.mjs +1 -1
  52. package/dist/components/biz/business/image-text-recommend/material.d.mts +15 -14
  53. package/dist/components/biz/business/image-text-recommend/schema.d.mts +15 -14
  54. package/dist/components/biz/business/image-text-recommend/schema.mjs +1 -1
  55. package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
  56. package/dist/components/biz/business/large-feature-grid/schema.mjs +1 -1
  57. package/dist/components/biz/business/marquee/material.d.mts +8 -7
  58. package/dist/components/biz/business/marquee/schema.d.mts +26 -24
  59. package/dist/components/biz/business/marquee/schema.mjs +1 -1
  60. package/dist/components/biz/business/profile/profile-header/schema.mjs +1 -1
  61. package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
  62. package/dist/components/biz/business/profile/profile-main/schema.mjs +1 -1
  63. package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +1 -1
  64. package/dist/components/biz/business/search-history/client.mjs +1 -1
  65. package/dist/components/biz/business/search-history/material.d.mts +3 -2
  66. package/dist/components/biz/business/search-history/schema.d.mts +3 -2
  67. package/dist/components/biz/business/search-history/schema.mjs +1 -1
  68. package/dist/components/biz/business/search-input/schema.mjs +1 -1
  69. package/dist/components/biz/business/shortcut-grid/material.d.mts +5 -4
  70. package/dist/components/biz/business/shortcut-grid/schema.d.mts +5 -4
  71. package/dist/components/biz/business/shortcut-grid/schema.mjs +1 -1
  72. package/dist/components/biz/business/tab-bar/schema.mjs +1 -1
  73. package/dist/components/biz/business/text-recommend/material.d.mts +4 -3
  74. package/dist/components/biz/business/text-recommend/schema.d.mts +4 -3
  75. package/dist/components/biz/business/text-recommend/schema.mjs +1 -1
  76. package/dist/components/biz/example/button/material.d.mts +9 -8
  77. package/dist/components/biz/example/button/schema.d.mts +21 -19
  78. package/dist/components/biz/example/button/schema.mjs +1 -1
  79. package/dist/components/common/series-episodes/index.mjs +1 -1
  80. package/dist/components/common/video-player/process-m3u8-cache.mjs +1 -1
  81. package/dist/components/pages/collection-add/page.mjs +1 -1
  82. package/dist/components/pages/collection-create/form.mjs +1 -1
  83. package/dist/components/pages/collection-detail/detail.mjs +1 -1
  84. package/dist/components/pages/login/verify.mjs +1 -1
  85. package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
  86. package/dist/components/pages/video-list/video-list-client.mjs +1 -1
  87. package/dist/components/ui/badge.d.mts +1 -1
  88. package/dist/components/ui/button.d.mts +1 -1
  89. package/dist/components/ui/dots-loading.d.mts +25 -0
  90. package/dist/components/ui/dots-loading.mjs +2 -0
  91. package/dist/components/ui/image.d.mts +4 -4
  92. package/dist/hooks/use-first-row-height.d.mts +69 -0
  93. package/dist/hooks/use-first-row-height.mjs +2 -0
  94. package/dist/hooks/use-min-duration-loading.d.mts +18 -0
  95. package/dist/hooks/use-min-duration-loading.mjs +2 -0
  96. package/dist/hooks.d.mts +3 -1
  97. package/dist/hooks.mjs +1 -1
  98. package/dist/service/generated/client.d.mts +12 -4
  99. package/dist/service/generated/client.mjs +1 -1
  100. package/dist/service/generated/tanstack.d.mts +14 -4
  101. package/dist/service/generated/tanstack.mjs +1 -1
  102. package/dist/service/register-by-verify-email-code.d.mts +2 -2
  103. package/dist/service/register-by-verify-email-code.mjs +1 -1
  104. package/dist/service.d.mts +4 -4
  105. package/dist/service.mjs +1 -1
  106. package/dist/types.d.mts +548 -57
  107. package/dist/ui.d.mts +2 -1
  108. package/dist/ui.mjs +1 -1
  109. package/dist/utils/device-id.d.mts +14 -0
  110. package/dist/utils/device-id.mjs +2 -0
  111. package/dist/utils/http.mjs +1 -1
  112. package/dist/utils/schema/index.d.mts +1 -1
  113. package/dist/utils/schema/inspector.d.mts +43 -71
  114. package/dist/utils/schema/schema.d.mts +59 -53
  115. package/dist/utils/schema/schema.mjs +1 -1
  116. package/dist/utils.d.mts +3 -2
  117. package/dist/utils.mjs +1 -1
  118. package/package.json +28 -28
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineArrayItemPropSchema as e,defineComponentPropsSchema as t,defineObjectPropSchema as n,defineSelectEnumPropSchema as r,defineSwitchPropSchema as i,defineTextPropSchema as a,defineTimeRangePropSchema as o}from"../../../../utils/schema/schema.mjs";import{z as s}from"zod";import c from"dayjs";function l(){return{start:c().startOf(`day`).format(`YYYY-MM-DD HH:mm:ss`),end:c().endOf(`day`).format(`YYYY-MM-DD HH:mm:ss`)}}const u=l(),d=s.object({text:a({label:`文本内容`,defaultValue:``}),link:a({label:`跳转链接`,defaultValue:``,required:!1})}),f=t({marqueeKey:a({label:`状态唯一标识`,defaultValue:``,required:!0,description:`外部传入唯一 marqueeKey,用于本地展示状态持久化`}),contents:e(d,{label:`消息内容`,defaultValue:[{text:`请输入跑马灯内容`}],description:`支持多条消息循环播放`}),click:n({enabled:i({label:`支持点击`,defaultValue:!0}),redirectType:r([`content_list`,`content`,`link`],{label:`跳转指向`,defaultValue:`link`,required:!1}),link:a({label:`跳转链接`,defaultValue:``,required:!1})},{label:`点击配置`,defaultValue:{enabled:!0,redirectType:`link`,link:``}}),close:n({enabled:i({label:`支持关闭`,defaultValue:!0})},{label:`关闭配置`,defaultValue:{enabled:!0}}),displayStrategy:n({rule:r([`once`,`daily`],{label:`展示规则`,defaultValue:`once`,description:`「只展示1次」即当前消息只展示1次;「每天展示1次」即当前消息每天展示1次,0点刷新`}),period:o({label:`展示周期`,defaultValue:u,required:!1})},{label:`展示策略`,defaultValue:{rule:`once`,period:u}})});export{u as defaultMarqueePeriod,l as getDefaultMarqueePeriod,f as marqueeInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import t from"dayjs";function n(){return{start:t().startOf(`day`).format(`YYYY-MM-DD HH:mm:ss`),end:t().endOf(`day`).format(`YYYY-MM-DD HH:mm:ss`)}}const r=n(),i=e(e=>({marqueeKey:e.string(``,{label:`状态唯一标识`,required:!0,description:`外部传入唯一 marqueeKey,用于本地展示状态持久化`}),contents:e.array(e.object({text:e.string(``,{label:`文本内容`}),link:e.string(``,{label:`跳转链接`,required:!1})}),{label:`消息内容`,defaultValue:[{text:`请输入跑马灯内容`}],description:`支持多条消息循环播放`}),click:e.object({enabled:e.boolean(!0,{fieldType:`switch`,label:`支持点击`}),redirectType:e.enum([`content_list`,`content`,`link`],`link`,{label:`跳转指向`,required:!1}),link:e.string(``,{label:`跳转链接`,required:!1})},{label:`点击配置`,defaultValue:{enabled:!0,redirectType:`link`,link:``}}),close:e.object({enabled:e.boolean(!0,{fieldType:`switch`,label:`支持关闭`})},{label:`关闭配置`,defaultValue:{enabled:!0}}),displayStrategy:e.object({rule:e.enum([`once`,`daily`],`once`,{label:`展示规则`,description:`「只展示1次」即当前消息只展示1次;「每天展示1次」即当前消息每天展示1次,0点刷新`}),period:e.timeRange(r,{label:`展示周期`,required:!1})},{label:`展示策略`,defaultValue:{rule:`once`,period:r}})}));export{r as defaultMarqueePeriod,n as getDefaultMarqueePeriod,i as marqueeInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e({}),r=t(n);export{r as profileHeaderInspectorDefaultProps,n as profileHeaderInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({})),r=t(n);export{r as profileHeaderInspectorDefaultProps,n as profileHeaderInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{pUserEditUserInfo as r}from"../../../../../service/generated/client.mjs";import{uploadFile as i}from"../../../../../utils/upload-file.mjs";import{Avatar as a,AvatarFallback as o,AvatarImage as s}from"../../../../ui/avatar.mjs";import{Box as c}from"../../../../ui/box.mjs";import{Input as l}from"../../../../ui/input.mjs";import{Dialog as u,DialogContent as d}from"../../../../ui/dialog.mjs";import{Text as f}from"../../../../ui/text.mjs";import{useDeleteRequest as p}from"../../../../../hooks/query/use-query.mjs";import{ImageCropModal as m}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as h,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";const S=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,C=[`image/jpeg`,`image/png`];function w(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return C.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function T({isMine:C,src:T,alt:E,onUnauthorizedClick:D}){let O=x(`components.pages.profile`),k=h(null),{userId:A,setUserInfo:j,userInfo:M}=n(),N=p(),[P,F]=g(!1),[I,L]=g(!1),[R,z]=g(``),[B,V]=g(!1);function H(){if(!B){if(C){F(!0);return}D?.()}}function U(){R&&(URL.revokeObjectURL(R),z(``))}function W(){F(!1)}function G(){B||k.current?.click()}function K(e){let t=e.target.files?.[0];if(t){if(!w(t)){b.error(O(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){b.error(O(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}z(URL.createObjectURL(t)),L(!0),e.target&&(e.target.value=``)}}async function q(e){if(!A){b.error(O(`client.loginRequiredForUpload`));return}try{V(!0);let t=await i(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);await r({user_id:String(A),avatar:t.objectKey}),j({...M,avatar:t.objectKey}),N([`user-profile`,`mine`]),N([`user-edit-info`,String(A)]),F(!1),L(!1),b.success(O(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),b.error(O(`client.uploadFailed`))}finally{U(),V(!1)}}function J(){L(!1),U()}return y(_,{children:[C||D?v(t,{variant:`ghost`,size:`icon`,className:`!absolute bottom-3 left-0 h-22 w-22 rounded-full p-0 hover:bg-transparent`,onClick:H,"aria-label":`打开头像预览`,children:y(a,{className:`w-22 h-22`,children:[v(s,{src:T||S,alt:E||`avatar`}),v(o,{})]})}):y(a,{className:`!absolute bottom-3 left-0 w-22 h-22`,children:[v(s,{src:T||S,alt:E||`avatar`}),v(o,{})]}),v(u,{open:P,onOpenChange:W,children:v(d,{showCloseButton:!1,className:`bg-black !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto`,children:y(c,{className:`relative flex h-full w-full flex-col items-center justify-center`,children:[v(t,{variant:`ghost`,size:`icon`,className:`absolute left-0 top-0 h-14 w-14 text-white hover:bg-transparent hover:text-white/80`,onClick:W,"aria-label":`关闭头像预览`,children:v(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:v(`path`,{d:`M14.55.2a.889.889 0 0 1 1.25 1.25l-.06.067L9.255 8l6.483 6.482.06.069a.888.888 0 0 1-1.25 1.25l-.067-.062L8 9.256l-6.482 6.483A.888.888 0 1 1 .26 14.482L6.742 8 .26 1.517.2 1.45A.888.888 0 0 1 1.45.2l.067.062 6.482 6.482L14.482.261l.068-.062Z`})})}),y(a,{className:`w-50 h-50`,children:[v(s,{src:T||S,alt:E||`avatar`}),v(o,{})]}),y(t,{variant:`ghost`,className:e(`absolute bottom-8 left-0 right-0 mx-auto flex w-[366px] max-w-[90%] items-center justify-between rounded-3xl bg-white/10 px-3 py-3 transition-colors hover:bg-white/20`,`active:scale-95`),onClick:G,disabled:B,children:[v(f,{as:`span`,className:`text-base font-medium text-white`,children:B?`上传中...`:`更换头像`}),y(`svg`,{className:`w-6 h-6 text-white`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:[v(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z`}),v(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),v(l,{ref:k,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:K}),v(m,{open:I,onClose:J,imageSrc:R,onConfirm:q})]})}export{T as UserProfileAvatar};
2
+ "use client";import{cn as e}from"../../../../../utils/cn.mjs";import{Button as t}from"../../../../ui/button.mjs";import{useUserStore as n}from"../../../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as r,pUserEditUserInfo as i}from"../../../../../service/generated/client.mjs";import{uploadFile as a}from"../../../../../utils/upload-file.mjs";import{Avatar as o,AvatarFallback as s,AvatarImage as c}from"../../../../ui/avatar.mjs";import{Box as l}from"../../../../ui/box.mjs";import{Input as u}from"../../../../ui/input.mjs";import{Dialog as d,DialogContent as f}from"../../../../ui/dialog.mjs";import{Text as p}from"../../../../ui/text.mjs";import{useDeleteRequest as m}from"../../../../../hooks/query/use-query.mjs";import{ImageCropModal as h}from"../../../../common/image-crop-modal/image-crop-modal.mjs";import{useRef as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";const C=`https://guadd-sg-ccs-sing-dev.s3.ap-southeast-1.amazonaws.com/default/default_avatar.png`,w=[`image/jpeg`,`image/png`];function T(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return w.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function E({isMine:w,src:E,alt:D,onUnauthorizedClick:O}){let k=S(`components.pages.profile`),A=g(null),{userId:j,setUserInfo:M,userInfo:N}=n(),P=m(),[F,I]=_(!1),[L,R]=_(!1),[z,B]=_(``),[V,H]=_(!1);function U(){if(!V){if(w){I(!0);return}O?.()}}function W(){z&&(URL.revokeObjectURL(z),B(``))}function G(){I(!1)}function K(){V||A.current?.click()}async function q(e){let t=(await r({user_id:String(j)})).data;return{user_id:String(j),nick_name:t?.nick_name??N?.nick_name??void 0,avatar:e||void 0,signature:t?.signature??N?.signature??void 0,gender:t?.gender??N?.gender??void 0}}function J(e){let t=e.target.files?.[0];if(t){if(!T(t)){x.error(k(`client.imageTypeInvalid`)),e.target&&(e.target.value=``);return}if(t.size>5242880){x.error(k(`client.imageTooLarge`)),e.target&&(e.target.value=``);return}B(URL.createObjectURL(t)),R(!0),e.target&&(e.target.value=``)}}async function Y(e){if(!j){x.error(k(`client.loginRequiredForUpload`));return}try{H(!0);let t=await a(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1),n=await q(t.objectKey);await i(n),M({...N,nick_name:n.nick_name,avatar:t.objectKey,signature:n.signature,gender:n.gender}),P([`user-profile`,`mine`]),P([`user-profile`,`profile`,String(j)]),P([`user-edit-info`,String(j)]),I(!1),R(!1),x.success(k(`client.mediaUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),x.error(k(`client.uploadFailed`))}finally{W(),H(!1)}}function X(){R(!1),W()}return b(v,{children:[w||O?y(t,{variant:`ghost`,size:`icon`,className:`!absolute bottom-3 left-0 h-22 w-22 rounded-full p-0 hover:bg-transparent`,onClick:U,"aria-label":`打开头像预览`,children:b(o,{className:`w-22 h-22`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]})}):b(o,{className:`!absolute bottom-3 left-0 w-22 h-22`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]}),y(d,{open:F,onOpenChange:G,children:y(f,{showCloseButton:!1,className:`bg-black !m-0 !p-0 !fixed !inset-0 !w-screen !h-screen !max-w-none !rounded-none !top-0 !left-0 !translate-x-0 !translate-y-0 !transform-none z-[9999] !pointer-events-auto`,children:b(l,{className:`relative flex h-full w-full flex-col items-center justify-center`,children:[y(t,{variant:`ghost`,size:`icon`,className:`absolute left-0 top-0 h-14 w-14 text-white hover:bg-transparent hover:text-white/80`,onClick:G,"aria-label":`关闭头像预览`,children:y(`svg`,{className:`w-4 h-4`,xmlns:`http://www.w3.org/2000/svg`,fill:`currentColor`,viewBox:`0 0 16 16`,children:y(`path`,{d:`M14.55.2a.889.889 0 0 1 1.25 1.25l-.06.067L9.255 8l6.483 6.482.06.069a.888.888 0 0 1-1.25 1.25l-.067-.062L8 9.256l-6.482 6.483A.888.888 0 1 1 .26 14.482L6.742 8 .26 1.517.2 1.45A.888.888 0 0 1 1.45.2l.067.062 6.482 6.482L14.482.261l.068-.062Z`})})}),b(o,{className:`w-50 h-50`,children:[y(c,{src:E||C,alt:D||`avatar`}),y(s,{})]}),b(t,{variant:`ghost`,className:e(`absolute bottom-8 left-0 right-0 mx-auto flex w-[366px] max-w-[90%] items-center justify-between rounded-3xl bg-white/10 px-3 py-3 transition-colors hover:bg-white/20`,`active:scale-95`),onClick:K,disabled:V,children:[y(p,{as:`span`,className:`text-base font-medium text-white`,children:V?`上传中...`:`更换头像`}),b(`svg`,{className:`w-6 h-6 text-white`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:[y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z`}),y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15 13a3 3 0 11-6 0 3 3 0 016 0z`})]})]})]})})}),y(u,{ref:A,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:J}),y(h,{open:L,onClose:X,imageSrc:z,onConfirm:Y})]})}export{E as UserProfileAvatar};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e({}),r=t(n);export{r as profileMainInspectorDefaultProps,n as profileMainInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../../utils/schema/schema.mjs";const n=e(e=>({})),r=t(n);export{r as profileMainInspectorDefaultProps,n as profileMainInspectorPropsSchema};
@@ -1,7 +1,7 @@
1
1
 
2
+ import { CommunityContentInfo } from "../../../../../../../types/community-types.mjs";
2
3
  import { MaterialComponentMode } from "../../../../../../../utils/schema/schema.mjs";
3
4
  import "../../../../../../../utils.mjs";
4
- import { CommunityContentInfo } from "../../../../../../../types/community-types.mjs";
5
5
  import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
 
7
7
  //#region components/biz/business/profile/profile-main/tabs/like-tab/client.d.ts
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Button as e}from"../../../ui/button.mjs";import t from"../../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{usePathname as p,useSearchParams as m}from"next/navigation";function h(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function g(g){let{title:_,rows:v=1,clearText:y,confirmDescription:b,onHistoryClick:x,mode:S=`renderer`}=g,C=_??`搜索历史`,w=y??`清空`,T=b??`确定要清除所有搜索历史吗?`,E=l(()=>[`搜索历史1`,`搜索历史2`,`搜索历史3`],[]),[D,O]=u(!1),k=r(),A=p(),j=m(),{userInfo:M}=n(),N=M?.user_id||`guest`,P=`search_history_${N}`,{history:F,addHistory:I,clearHistory:L}=s({storageKey:N}),R=()=>{L(),localStorage.removeItem(P),O(!1),t.emit(o.SEARCH_HISTORY_UPDATE)},z=l(()=>(F.length?F:S===`editor`?E:[]).slice(0,v*10),[F,S,E,v]);if(z.length===0)return null;let B=e=>{if(I(e),x){x(e);return}let t=new URLSearchParams(j.toString());t.set(`q`,e);let n=A.includes(`/search-result`)?A:`/search-result`;k.push(`${n}?${t.toString()}`)};return f(i,{className:`px-4 py-2`,children:[f(i,{className:`flex justify-between items-center mb-2`,children:[d(a,{className:`text-[16px] font-bold text-text1`,children:C}),d(e,{variant:`ghost`,size:`sm`,className:`text-text3 text-[12px] p-0 h-auto`,onClick:()=>O(!0),children:w})]}),d(i,{className:`flex flex-wrap gap-2 overflow-hidden`,style:{maxHeight:`${v*30}px`},children:z.map((e,t)=>d(i,{className:`px-3 py-1 bg-bg2 rounded-full cursor-pointer`,onClick:()=>B(e),children:d(a,{className:`text-[14px] text-text2`,children:h(e,8)})},t))}),d(c,{open:D,onOpenChange:O,onConfirm:R,title:``,description:T})]})}export{g as SearchHistoryClient};
2
+ "use client";import{Button as e}from"../../../ui/button.mjs";import t from"../../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../../store/modules/user-store.mjs";import{useRouter as r}from"../../../../utils/use-compatible-router.mjs";import{Box as i}from"../../../ui/box.mjs";import{Text as a}from"../../../ui/text.mjs";import{eventKey as o}from"../../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../../hooks/use-search-history.mjs";import{DeleteConfirmDialog as c}from"../../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{useMemo as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{usePathname as p,useSearchParams as m}from"next/navigation";function h(e,t){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t).join(``)}...`}function g(g){let{title:_,rows:v=1,clearText:y,confirmDescription:b,onHistoryClick:x,mode:S=`renderer`}=g,C=_??`搜索历史`,w=y??`清空`,T=b??`确定要清除所有搜索历史吗?`,E=l(()=>[`搜索历史1`,`搜索历史2`,`搜索历史3`],[]),[D,O]=u(!1),k=r(),A=p(),j=m(),{userInfo:M}=n(),{history:N,addHistory:P,clearHistory:F}=s({storageKey:M?.user_id||`guest`}),I=()=>{F(),O(!1),t.emit(o.SEARCH_HISTORY_UPDATE)},L=l(()=>(N.length?N:S===`editor`?E:[]).slice(0,v*10),[N,S,E,v]);if(L.length===0)return null;let R=e=>{if(P(e),x){x(e);return}let t=new URLSearchParams(j.toString());t.set(`q`,e);let n=A.includes(`/search-result`)?A:`/search-result`;k.push(`${n}?${t.toString()}`)};return f(i,{className:`px-4 py-2`,children:[f(i,{className:`flex justify-between items-center mb-2`,children:[d(a,{className:`text-[16px] font-bold text-text1`,children:C}),d(e,{variant:`ghost`,size:`sm`,className:`text-text3 text-[12px] p-0 h-auto`,onClick:()=>O(!0),children:w})]}),d(i,{className:`flex flex-wrap gap-2 overflow-hidden`,style:{maxHeight:`${v*30}px`},children:L.map((e,t)=>d(i,{className:`px-3 py-1 bg-bg2 rounded-full cursor-pointer`,onClick:()=>R(e),children:d(a,{className:`text-[14px] text-text2`,children:h(e,8)})},t))}),d(c,{open:D,onOpenChange:O,onConfirm:I,title:``,description:T})]})}export{g as SearchHistoryClient};
@@ -9,8 +9,9 @@ import * as zod_v4_core0 from "zod/v4/core";
9
9
 
10
10
  //#region components/biz/business/search-history/material.d.ts
11
11
  declare const searchHistoryMaterial: DefineMaterialOption<typeof SearchHistoryServer, typeof SearchHistoryClient, zod.ZodObject<{
12
- title: zod.ZodString & SchemaHasDefaultValue;
13
- rows: zod.ZodNumber & SchemaHasDefaultValue;
12
+ readonly title: zod.ZodString & SchemaHasDefaultValue;
13
+ readonly rows: zod.ZodNumber & SchemaHasDefaultValue;
14
+ } & {
14
15
  mode: zod.ZodOptional<zod.ZodEnum<{
15
16
  renderer: "renderer";
16
17
  editor: "editor";
@@ -9,8 +9,9 @@ import * as zod_v4_core0 from "zod/v4/core";
9
9
  * 搜索历史物料属性定义
10
10
  */
11
11
  declare const searchHistoryInspectorPropsSchema: zod.ZodObject<{
12
- title: zod.ZodString & SchemaHasDefaultValue;
13
- rows: zod.ZodNumber & SchemaHasDefaultValue;
12
+ readonly title: zod.ZodString & SchemaHasDefaultValue;
13
+ readonly rows: zod.ZodNumber & SchemaHasDefaultValue;
14
+ } & {
14
15
  mode: zod.ZodOptional<zod.ZodEnum<{
15
16
  renderer: "renderer";
16
17
  editor: "editor";
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,defineNumberPropSchema as t,defineTextPropSchema as n}from"../../../../utils/schema/schema.mjs";const r=e({title:n({label:`标题名称`,defaultValue:`搜索历史`,description:`支持输入,中/英/数/符,6个字符`}),rows:t({label:`展示行数`,defaultValue:1})});export{r as searchHistoryInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";const t=e(e=>({title:e.string(`搜索历史`,{label:`标题名称`,description:`支持输入,中/英/数/符,6个字符`}),rows:e.number(1,{label:`展示行数`})}));export{t as searchHistoryInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";const n=e({}),r=t(n);export{r as searchInputInspectorDefaultProps,n as searchInputInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";const n=e(e=>({})),r=t(n);export{r as searchInputInspectorDefaultProps,n as searchInputInspectorPropsSchema};
@@ -9,14 +9,15 @@ import * as zod_v4_core0 from "zod/v4/core";
9
9
 
10
10
  //#region components/biz/business/shortcut-grid/material.d.ts
11
11
  declare const shortcutGridMaterial: DefineMaterialOption<typeof ShortcutGrid, typeof ShortcutGridClient, zod.ZodObject<{
12
- title: zod.ZodString & SchemaHasDefaultValue;
13
- shortcutCount: zod.ZodNumber & SchemaHasDefaultValue;
14
- isShortcutTitle: zod.ZodBoolean & SchemaHasDefaultValue;
15
- shortcuts: zod.ZodArray<zod.ZodObject<{
12
+ readonly title: zod.ZodString & SchemaHasDefaultValue;
13
+ readonly shortcutCount: zod.ZodNumber & SchemaHasDefaultValue;
14
+ readonly isShortcutTitle: zod.ZodBoolean & SchemaHasDefaultValue;
15
+ readonly shortcuts: zod.ZodArray<zod.ZodObject<{
16
16
  label: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
17
17
  icon: zod.ZodString & SchemaHasDefaultValue;
18
18
  href: zod.ZodString & SchemaHasDefaultValue;
19
19
  }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
20
+ } & {
20
21
  mode: zod.ZodOptional<zod.ZodEnum<{
21
22
  renderer: "renderer";
22
23
  editor: "editor";
@@ -8,14 +8,15 @@ import z$1 from "zod";
8
8
  * 金刚区物料可配置字段:
9
9
  */
10
10
  declare const shortcutGridInspectorPropsSchema: z$1.ZodObject<{
11
- title: z$1.ZodString & SchemaHasDefaultValue;
12
- shortcutCount: z$1.ZodNumber & SchemaHasDefaultValue;
13
- isShortcutTitle: z$1.ZodBoolean & SchemaHasDefaultValue;
14
- shortcuts: z$1.ZodArray<z$1.ZodObject<{
11
+ readonly title: z$1.ZodString & SchemaHasDefaultValue;
12
+ readonly shortcutCount: z$1.ZodNumber & SchemaHasDefaultValue;
13
+ readonly isShortcutTitle: z$1.ZodBoolean & SchemaHasDefaultValue;
14
+ readonly shortcuts: z$1.ZodArray<z$1.ZodObject<{
15
15
  label: z$1.ZodOptional<z$1.ZodString> & SchemaHasDefaultValue;
16
16
  icon: z$1.ZodString & SchemaHasDefaultValue;
17
17
  href: z$1.ZodString & SchemaHasDefaultValue;
18
18
  }, z$1.core.$strip>> & SchemaHasDefaultValue;
19
+ } & {
19
20
  mode: z$1.ZodOptional<z$1.ZodEnum<{
20
21
  renderer: "renderer";
21
22
  editor: "editor";
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineArrayItemPropSchema as e,defineComponentPropsSchema as t,defineNumberPropSchema as n,defineSwitchPropSchema as r,defineTextPropSchema as i,getSchemaDefaultProps as a}from"../../../../utils/schema/schema.mjs";import o from"zod";const s=t({title:i({label:`推荐位名称`,required:!0,defaultValue:`推荐列表`}),shortcutCount:n({label:`入口数量`,required:!0,defaultValue:4}).refine(e=>e>=3&&e<=5,`入口数量必须为 3-5`),isShortcutTitle:r({label:`是否显示入口标题`,required:!0,defaultValue:!0}),shortcuts:e(o.object({label:i({label:`入口标题`,required:!1,defaultValue:`最新`}),icon:i({label:`图标`,required:!0,defaultValue:``}),href:i({label:`跳转指向`,required:!0,defaultValue:``})}),{label:`推荐列表`,required:!0,defaultValue:[{label:`热门`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`},{label:`新上架`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`},{label:`排行榜`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`},{label:`筛选`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`}]})}),c=a(s);export{c as shortcutGridInspectorDefaultProps,s as shortcutGridInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import n from"zod";const r=e(e=>({title:e.string(`推荐列表`,{label:`推荐位名称`,required:!0}),shortcutCount:e.number(4,{label:`入口数量`,required:!0}).refine(e=>e>=3&&e<=5,`入口数量必须为 3-5`),isShortcutTitle:e.boolean(!0,{fieldType:`switch`,label:`是否显示入口标题`,required:!0}),shortcuts:e.array(n.object({label:e.string(`最新`,{label:`入口标题`,required:!1}),icon:e.string(``,{label:`图标`,required:!0}),href:e.string(``,{label:`跳转指向`,required:!0})}),{label:`推荐列表`,required:!0,defaultValue:[{label:`热门`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`},{label:`新上架`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`},{label:`排行榜`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`},{label:`筛选`,icon:`/images/2026/01/21/6967aec2d806ed47d5238861/fce0a95c-1e8f-4872-ab69-86212435e1bc.jpegxxx`,href:`/video-list?title=穷小伙刚离婚,找了他3年的女总裁蒙着面纱出现了,一身红嫁衣当众求嫁,前妻嘲笑她是丑八怪,下秒揭开面纱后全场沉默了&tags=动作`}]})})),i=t(r);export{i as shortcutGridInspectorDefaultProps,r as shortcutGridInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";const n=e({}),r=t(n);export{r as tabBarInspectorDefaultProps,n as tabBarInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";const n=e(e=>({})),r=t(n);export{r as tabBarInspectorDefaultProps,n as tabBarInspectorPropsSchema};
@@ -9,11 +9,12 @@ import * as zod_v4_core0 from "zod/v4/core";
9
9
 
10
10
  //#region components/biz/business/text-recommend/material.d.ts
11
11
  declare const textRecommendMaterial: DefineMaterialOption<typeof TextRecommendServer, typeof TextRecommendClient, zod.ZodObject<{
12
- title: zod.ZodString & SchemaHasDefaultValue;
13
- displayCount: zod.ZodNumber & SchemaHasDefaultValue;
14
- items: zod.ZodArray<zod.ZodObject<{
12
+ readonly title: zod.ZodString & SchemaHasDefaultValue;
13
+ readonly displayCount: zod.ZodNumber & SchemaHasDefaultValue;
14
+ readonly items: zod.ZodArray<zod.ZodObject<{
15
15
  label: zod.ZodString & SchemaHasDefaultValue;
16
16
  }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
17
+ } & {
17
18
  mode: zod.ZodOptional<zod.ZodEnum<{
18
19
  renderer: "renderer";
19
20
  editor: "editor";
@@ -8,11 +8,12 @@ import { z } from "zod";
8
8
  * 文字推荐物料属性定义
9
9
  */
10
10
  declare const textRecommendInspectorPropsSchema: z.ZodObject<{
11
- title: z.ZodString & SchemaHasDefaultValue;
12
- displayCount: z.ZodNumber & SchemaHasDefaultValue;
13
- items: z.ZodArray<z.ZodObject<{
11
+ readonly title: z.ZodString & SchemaHasDefaultValue;
12
+ readonly displayCount: z.ZodNumber & SchemaHasDefaultValue;
13
+ readonly items: z.ZodArray<z.ZodObject<{
14
14
  label: z.ZodString & SchemaHasDefaultValue;
15
15
  }, z.core.$strip>> & SchemaHasDefaultValue;
16
+ } & {
16
17
  mode: z.ZodOptional<z.ZodEnum<{
17
18
  renderer: "renderer";
18
19
  editor: "editor";
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineArrayItemPropSchema as e,defineComponentPropsSchema as t,defineNumberPropSchema as n,defineTextPropSchema as r}from"../../../../utils/schema/schema.mjs";import{z as i}from"zod";const a=t({title:r({label:`标题名称`,defaultValue:`文字推荐标题`,description:`支持输入,中/英/数/符,6个字符`}),displayCount:n({label:`展示数`,defaultValue:2}),items:e(i.object({label:r({label:`热词`,defaultValue:`推荐搜索1`})}),{label:`推荐位模块`,defaultValue:[{label:`推荐搜索2`},{label:`推荐搜索3`}]})});export{a as textRecommendInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e}from"../../../../utils/schema/schema.mjs";import{z as t}from"zod";const n=e(e=>({title:e.string(`文字推荐标题`,{label:`标题名称`,description:`支持输入,中/英/数/符,6个字符`}),displayCount:e.number(2,{label:`展示数`}),items:e.array(t.object({label:e.string(`推荐搜索1`,{label:`热词`})}),{label:`推荐位模块`,defaultValue:[{label:`推荐搜索2`},{label:`推荐搜索3`}]})}));export{n as textRecommendInspectorPropsSchema};
@@ -9,16 +9,17 @@ import * as zod_v4_core0 from "zod/v4/core";
9
9
 
10
10
  //#region components/biz/example/button/material.d.ts
11
11
  declare const exampleButtonMaterial: DefineMaterialOption<typeof Button, typeof ButtonClient, zod.ZodObject<{
12
- text: zod.ZodString & SchemaHasDefaultValue;
13
- variant: zod.ZodType<"default" | "blue" | "red", unknown, zod_v4_core0.$ZodTypeInternals<"default" | "blue" | "red", unknown>> & SchemaHasDefaultValue;
14
- disabled: zod.ZodOptional<zod.ZodBoolean> & SchemaHasDefaultValue;
15
- loading: zod.ZodOptional<zod.ZodBoolean>;
16
- items: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
17
- name: zod.ZodOptional<zod.ZodString>;
12
+ readonly text: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
13
+ readonly variant: zod.ZodType<"default" | "blue" | "red", unknown, zod_v4_core0.$ZodTypeInternals<"default" | "blue" | "red", unknown>> & SchemaHasDefaultValue;
14
+ readonly disabled: zod.ZodOptional<zod.ZodBoolean> & SchemaHasDefaultValue;
15
+ readonly loading: zod.ZodOptional<zod.ZodBoolean>;
16
+ readonly items: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
17
+ readonly name: zod.ZodOptional<zod.ZodString>;
18
18
  }, zod_v4_core0.$strip>>> & SchemaHasDefaultValue;
19
- info: zod.ZodOptional<zod.ZodObject<{
19
+ readonly info: zod.ZodObject<{
20
20
  readonly address: zod.ZodOptional<zod.ZodString>;
21
- }, zod_v4_core0.$strip>> & SchemaHasDefaultValue;
21
+ }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
22
+ } & {
22
23
  mode: zod.ZodOptional<zod.ZodEnum<{
23
24
  renderer: "renderer";
24
25
  editor: "editor";
@@ -1,36 +1,38 @@
1
1
 
2
2
  import { InferSchemaProps, SchemaHasDefaultValue } from "../../../../utils/schema/schema.mjs";
3
3
  import "../../../../utils.mjs";
4
- import z$1 from "zod";
4
+ import * as zod from "zod";
5
+ import * as zod_v4_core0 from "zod/v4/core";
5
6
 
6
7
  //#region components/biz/example/button/schema.d.ts
7
8
  /**
8
9
  * 定义可以被低代码右侧inspector编辑的props
9
10
  */
10
- declare const buttonInspectorPropsSchema: z$1.ZodObject<{
11
- text: z$1.ZodString & SchemaHasDefaultValue;
12
- variant: z$1.ZodType<"default" | "blue" | "red", unknown, z$1.core.$ZodTypeInternals<"default" | "blue" | "red", unknown>> & SchemaHasDefaultValue;
13
- disabled: z$1.ZodOptional<z$1.ZodBoolean> & SchemaHasDefaultValue;
14
- loading: z$1.ZodOptional<z$1.ZodBoolean>;
15
- items: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
16
- name: z$1.ZodOptional<z$1.ZodString>;
17
- }, z$1.core.$strip>>> & SchemaHasDefaultValue;
18
- info: z$1.ZodOptional<z$1.ZodObject<{
19
- readonly address: z$1.ZodOptional<z$1.ZodString>;
20
- }, z$1.core.$strip>> & SchemaHasDefaultValue;
21
- mode: z$1.ZodOptional<z$1.ZodEnum<{
11
+ declare const buttonInspectorPropsSchema: zod.ZodObject<{
12
+ readonly text: zod.ZodOptional<zod.ZodString> & SchemaHasDefaultValue;
13
+ readonly variant: zod.ZodType<"default" | "blue" | "red", unknown, zod_v4_core0.$ZodTypeInternals<"default" | "blue" | "red", unknown>> & SchemaHasDefaultValue;
14
+ readonly disabled: zod.ZodOptional<zod.ZodBoolean> & SchemaHasDefaultValue;
15
+ readonly loading: zod.ZodOptional<zod.ZodBoolean>;
16
+ readonly items: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
17
+ readonly name: zod.ZodOptional<zod.ZodString>;
18
+ }, zod_v4_core0.$strip>>> & SchemaHasDefaultValue;
19
+ readonly info: zod.ZodObject<{
20
+ readonly address: zod.ZodOptional<zod.ZodString>;
21
+ }, zod_v4_core0.$strip> & SchemaHasDefaultValue;
22
+ } & {
23
+ mode: zod.ZodOptional<zod.ZodEnum<{
22
24
  renderer: "renderer";
23
25
  editor: "editor";
24
26
  }>>;
25
- }, z$1.core.$strip>;
27
+ }, zod_v4_core0.$strip>;
26
28
  declare const buttonInspectorDefaultProps: {
27
- text: string;
28
- variant: "default" | "blue" | "red";
29
- disabled: boolean;
30
- items: {
29
+ readonly text: string;
30
+ readonly variant: "default" | "blue" | "red";
31
+ readonly disabled: boolean;
32
+ readonly items: {
31
33
  name?: string | undefined;
32
34
  }[];
33
- info: {
35
+ readonly info: {
34
36
  address?: string | undefined;
35
37
  };
36
38
  };
@@ -1,2 +1,2 @@
1
1
 
2
- import{defineArrayItemPropSchema as e,defineCheckboxPropSchema as t,defineComponentPropsSchema as n,defineObjectPropSchema as r,defineSelectEnumPropSchema as i,defineSwitchPropSchema as a,defineTextPropSchema as o,getSchemaDefaultProps as s}from"../../../../utils/schema/schema.mjs";import{buttonVariantOptions as c}from"./variants.mjs";import l from"zod";const u=n({text:o({label:`文本`,defaultValue:`example button`}),variant:i(c,{label:`变体`,defaultValue:`red`}),disabled:t({label:`禁用`,defaultValue:!1,required:!1}),loading:a({label:`加载`,required:!1}),items:e(l.object({name:o({label:`名称`,required:!1})}),{required:!1,label:`items`,defaultValue:[{name:`string`}]}),info:r({address:o({label:`地址`,required:!1})},{label:`info`,required:!1,defaultValue:{address:`SHENZHEN`}})}),d=s(u);export{d as buttonInspectorDefaultProps,u as buttonInspectorPropsSchema};
2
+ import{defineComponentPropsSchema as e,getSchemaDefaultProps as t}from"../../../../utils/schema/schema.mjs";import{buttonVariantOptions as n}from"./variants.mjs";const r=e(e=>({text:e.string(`example button`,{label:`文本`,required:!1}),variant:e.enum(n,`red`,{label:`变体`}),disabled:e.boolean(!1,{fieldType:`checkbox`,label:`禁用`,required:!1}),loading:e.boolean({fieldType:`switch`,label:`加载`,required:!1}),items:e.array(e.object({name:e.string({label:`名称`,required:!1})}),{required:!1,label:`items`,defaultValue:[{name:`string`}]}),info:e.object({address:e.string({label:`地址`,required:!1})},{label:`info`,required:!0,defaultValue:{address:`SHENZHEN`}})})),i=t(r);export{i as buttonInspectorDefaultProps,r as buttonInspectorPropsSchema};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{Box as e}from"../../ui/box.mjs";import{Sheet as t,SheetContent as n,SheetHeader as r,SheetTitle as i}from"../../ui/sheet.mjs";import{Switch as a}from"../../ui/switch.mjs";import{Text as o}from"../../ui/text.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/close.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCallback as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";function x(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.id||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function S(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 C(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function w(e){return e.mode===`detail`?_(E,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):_(T,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle})}function T({open:s,variant:l,title:d,updateStatus:g,summaryText:y,seriesList:S,activeEpisodeId:w,showEpisodeTitle:T=!1,onToggleTitle:E,onClose:D,onSelectEpisode:O,popupBodyStyle:k}){let A=b(`components.common.seriesEpisodes`),j=!!E,M=j&&T,N=m(null),P=m(null),F=p(()=>x(S,`episode`,e=>A(`episodeLabel`,{episode:e})),[S,A]),I=p(()=>{if(F.length===0)return[];let e=[];return F.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[F]),L=p(()=>{if(!w)return 0;let e=F.findIndex(e=>e.id===w);return e<0?0:Math.floor(e/50)},[w,F]),[R,z]=h(L);f(()=>{z(L)},[L]);let B=p(()=>typeof y==`string`&&y.trim()?y:C(F.length,g,A),[F.length,y,A,g]),V=d||A(`selectorTitle`);function H(){let e=N.current;if(e){P.current&&=(window.cancelAnimationFrame(P.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}P.current=window.requestAnimationFrame(()=>{P.current=null;let e=N.current;e&&(e.scrollTop=0)})}}f(()=>{s&&H()},[s,T,R]);function U(e){E&&(E(e),H())}function W(e){O?.(e.id,e.series_num),D()}let G=M?2:5,K=I.length>1?_(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:I.map((e,t)=>{if(e.length===0)return null;let n=t===R,r=t*50+1,i=Math.min((t+1)*50,F.length);return v(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{z(t),H()},children:[r,`-`,i,n&&_(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,q=v(`div`,{className:`pb-[8px] flex justify-between`,children:[_(`span`,{className:`text-[16px] text-text1`,children:B}),j&&v(`div`,{className:`flex items-center gap-[4px]`,children:[_(a,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:T,onCheckedChange:e=>{U(!!e)}}),_(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{U(!T)},children:A(`episodeTitle`)})]})]}),J=_(`div`,{className:`grid w-full gap-2 ${G===2?`grid-cols-2`:`grid-cols-5`}`,children:(I[R]||[]).map((e,t)=>{let n=!!(w&&e.id===w);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{W(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${M?`h-[72px] px-[10px] text-[14px]`:``} ${t%G===0?``:`border-l-0`}`,children:M?_(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})});return l===`sheet`?_(t,{open:s,onOpenChange:e=>!e&&D(),children:v(n,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] max-h-[70vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[_(r,{className:`pt-3 pb-0`,children:_(i,{className:`flex items-center justify-between text-lg text-text1`,children:V})}),v(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[K,q]}),_(`div`,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:J})]})}):_(u,{open:s,onOpenChange:e=>{e||D()},showCloseButton:!1,className:`border-0 bg-transparent p-0`,children:v(e,{className:`w-full flex flex-col bg-bg1 px-[12px] text-text1`,style:{height:`70vh`,...k,maxHeight:`70vh`},children:[v(e,{className:`shrink-0 flex justify-between items-center h-[48px]`,children:[_(o,{className:`text-[16px] font-bold text-text1`,children:V}),_(e,{className:`pl-[12px] h-full flex items-center`,onClick:D,children:_(c,{className:`w-[14px] h-[14px] text-text1 cursor-pointer`})})]}),v(e,{className:`flex-1 h-0 w-full pb-[12px] flex flex-col gap-3`,children:[K,q,_(e,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto`,children:J})]})]})})}function E({information:t,series_num:n,onEpisodeChange:r}){let i=b(`components.common`),[a,c]=s(`detail-series-popup-${t.id}`,!1),[u,x]=s(`detail-series-title-toggle-${t.id}`,!1),[C,w]=s(`detail-series-scroll-left-${t.id}`,null),[E,D]=h(n);f(()=>{D(n)},[t.id,n]);let O=p(()=>S((t.links||[]).map(e=>({id:e.id,name:e.name})),t.id||`episode`,e=>i(`seriesEpisodes.episodeLabel`,{episode:e})),[t.id,t.links,i]),k=t.update_status===`1`?i(`seriesEpisodes.completedSeriesTotal`,{total:t.links.length}):i(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:t.links.length}),A=p(()=>t.links[E-1]?.id||t.links[0]?.id||``,[t.links,E]),j=m(null),M=m(null),N=m(null),P=m(!1),F=m(null),I=m(null),L=m(null),[R,z]=h(!1),B=d((e,t=`smooth`)=>{let n=j.current?.querySelector(`[data-content-id="${e}"]`);if(n&&j.current){let e=j.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),V=d(()=>{I.current!==null&&(window.clearTimeout(I.current),I.current=null)},[]),H=d(()=>{L.current!==null&&(window.clearTimeout(L.current),L.current=null)},[]),U=d(()=>{F.current!==null&&(y.dismiss(F.current),F.current=null),V(),H()},[H,V]),W=d(()=>{M.current=null,N.current=null,U(),z(!1)},[U]),G=d((e,t)=>{H(),L.current=window.setTimeout(()=>{L.current=null,M.current===e&&W()},Math.max(0,t))},[H,W]);f(()=>{P.current=!1},[t.id]),f(()=>{if(P.current||!A)return;let e=window.requestAnimationFrame(()=>{let e=j.current;e&&(typeof C==`number`?e.scrollTo({left:Math.max(0,C),behavior:`auto`}):(B(A,`auto`),w(Math.max(0,Math.round(e.scrollLeft)))),P.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[A,C,B,w]),f(()=>{let e=M.current;!e||e!==n||G(e,1e3)},[G,n]),f(()=>()=>{W()},[W]);let K=d((e,t,n)=>{let r=j.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)},[]),q=d((e,a=`inline`,o,s)=>{if(e!==E){if(!t.links[e-1]){y.error(i(`seriesEpisodes.episodeNotFound`));return}try{D(e);let c=o||t.links[e-1]?.id||``,l=Math.max(0,Math.round(j.current?.scrollLeft||0));a===`popup`?(c&&B(c,`auto`),w(Math.max(0,Math.round(j.current?.scrollLeft||0)))):w(K(c,l,s)),z(!0),U(),F.current=y.loading(i(`seriesEpisodes.episodeSwitching`)),M.current=e,N.current=a,I.current=window.setTimeout(()=>{M.current===e&&(D(n),W(),y.error(i(`seriesEpisodes.episodeSwitchFailed`)))},8e3),r(e)}catch(e){D(n),W(),console.error(`切换剧集失败`,e),y.error(i(`seriesEpisodes.episodeSwitchFailed`))}}},[W,U,t.links,r,E,n,K,B,w,i]),[J,Y]=h(`70vh`),X=d(()=>{if(typeof window>`u`)return;let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Y(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Y(`70vh`);return}Y(`${n}px`)},[]);return f(()=>{if(!a)return;X();let e=()=>{X()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[X,a]),O.length<=1?null:v(g,{children:[v(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[v(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>c(!0),children:[_(o,{className:`text-[14px] text-text2 leading-[20px]`,children:k}),_(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),_(`div`,{ref:j,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${u?`h-[76px]`:`h-[60px]`} ${R?`touch-none`:``}`,children:O.map((e,t)=>_(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${u?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===A?`!border-theme5 bg-line1`:``}`,onClick:n=>{q(t+1,`inline`,e.id,n.clientX)},children:_(o,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===A?`font-bold !text-theme5`:``}`,children:u?e.title:e.series_num})},e.id))})]}),_(T,{title:i(`seriesEpisodes.selectorTitle`),variant:`popup`,open:a,updateStatus:t.update_status,summaryText:k,seriesList:(t.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:A,showEpisodeTitle:u,onToggleTitle:e=>{x(e)},onClose:()=>c(!1),onSelectEpisode:(e,t)=>{c(!1),q(t,`popup`,e)},popupBodyStyle:{height:J}})]})}export{w as SeriesEpisodes};
2
+ "use client";import{Box as e}from"../../ui/box.mjs";import{Sheet as t,SheetContent as n,SheetHeader as r,SheetTitle as i}from"../../ui/sheet.mjs";import{Switch as a}from"../../ui/switch.mjs";import{Text as o}from"../../ui/text.mjs";import{useKeepAliveState as s}from"../keep-scroll-position/index.mjs";import c from"../../../assets/icons/close.mjs";import l from"../../../assets/icons/common/right_arrow.mjs";import u from"../../ui/popup.mjs";import{useCallback as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useTranslations as b}from"next-intl";function x(e,t,n){return(e||[]).map((e,r)=>{let i=Number.parseInt(e?.id||``,10),a=Number.isNaN(i)?r+1:i,o=e?.id||``,s=Number.isNaN(i)&&o||n(a);return{id:e?.id||`${t}-${a}`,series_num:a,title:s}})}function S(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 C(e,t,n){return e<=0?n(`singleContent`):n(t===`1`?`completedSeriesTotal`:`ongoingSeriesTotal`,{total:e})}function w(e){return e.mode===`detail`?_(E,{information:e.information,series_num:e.series_num,onEpisodeChange:e.onEpisodeChange}):_(T,{open:e.open,variant:e.variant,title:e.title,updateStatus:e.updateStatus,summaryText:e.summaryText,seriesList:e.seriesList,activeEpisodeId:e.activeEpisodeId,showEpisodeTitle:e.showEpisodeTitle,onToggleTitle:e.onToggleTitle,onClose:e.onClose,onSelectEpisode:e.onSelectEpisode,popupBodyStyle:e.popupBodyStyle})}function T({open:s,variant:l,title:d,updateStatus:g,summaryText:y,seriesList:S,activeEpisodeId:w,showEpisodeTitle:T=!1,onToggleTitle:E,onClose:D,onSelectEpisode:O,popupBodyStyle:k}){let A=b(`components.common.seriesEpisodes`),j=!!E,M=j&&T,N=m(null),P=m(null),F=p(()=>x(S,`episode`,e=>A(`episodeLabel`,{episode:e})),[S,A]),I=p(()=>{if(F.length===0)return[];let e=[];return F.forEach((t,n)=>{let r=Math.floor(n/50);e[r]||(e[r]=[]),e[r].push(t)}),e},[F]),L=p(()=>{if(!w)return 0;let e=F.findIndex(e=>e.id===w);return e<0?0:Math.floor(e/50)},[w,F]),[R,z]=h(L);f(()=>{z(L)},[L]);let B=p(()=>typeof y==`string`&&y.trim()?y:C(F.length,g,A),[F.length,y,A,g]),V=d||A(`selectorTitle`);function H(){let e=N.current;if(e){P.current&&=(window.cancelAnimationFrame(P.current),null),e.scrollTop=0;try{e.scrollTo({top:0,left:0,behavior:`auto`})}catch{}P.current=window.requestAnimationFrame(()=>{P.current=null;let e=N.current;e&&(e.scrollTop=0)})}}f(()=>{s&&H()},[s,T,R]);function U(e){E&&(E(e),H())}function W(e){O?.(e.id,e.series_num),D()}let G=M?2:5,K=I.length>1?_(`div`,{className:`shrink-0 w-full flex gap-[8px] overflow-x-auto`,children:I.map((e,t)=>{if(e.length===0)return null;let n=t===R,r=t*50+1,i=Math.min((t+1)*50,F.length);return v(`div`,{className:`shrink-0 px-[16px] py-[6px] rounded-[16px] text-[14px] transition-colors cursor-pointer relative overflow-hidden ${n?`text-theme5 bg-bg2`:`text-text2 bg-bg2`}`,onClick:()=>{z(t),H()},children:[r,`-`,i,n&&_(`div`,{className:`absolute w-full h-full top-0 left-0 opacity-20 bg-theme5`})]},`series-group-${t}`)})}):null,q=v(`div`,{className:`pb-[8px] flex justify-between`,children:[_(`span`,{className:`text-[16px] text-text1`,children:B}),j&&v(`div`,{className:`flex items-center gap-[4px]`,children:[_(a,{size:`sm`,className:`data-checked:bg-theme5 h-[20px] w-[33px]`,checked:T,onCheckedChange:e=>{U(!!e)}}),_(`button`,{type:`button`,className:`text-[16px] text-text1`,onClick:()=>{U(!T)},children:A(`episodeTitle`)})]})]}),J=_(`div`,{className:`grid w-full gap-2 ${G===2?`grid-cols-2`:`grid-cols-5`}`,children:(I[R]||[]).map((e,t)=>{let n=!!(w&&e.id===w);return _(`button`,{type:`button`,"data-episode-id":e.id,onClick:()=>{W(e)},className:`flex items-center justify-center w-full h-[60px] rounded-[8px] border border-line1 border-solid text-[16px] cursor-pointer select-none transition-colors relative overflow-hidden ${n?`font-bold text-theme5 bg-line1`:`text-text1`} ${M?`h-[72px] px-[10px] text-[14px]`:``} ${t%G===0?``:`border-l-0`}`,children:M?_(`span`,{className:`leading-[22px] line-clamp-2`,children:e.title}):e.series_num},e.id)})});return l===`sheet`?_(t,{open:s,onOpenChange:e=>!e&&D(),children:v(n,{side:`bottom`,showCloseButton:!0,className:`min-h-[50vh] max-h-[70vh] bg-bg1 text-text1 rounded-t-2xl border-t border-white/10`,children:[_(r,{className:`pt-3 pb-0`,children:_(i,{className:`flex items-center justify-between text-lg text-text1`,children:V})}),v(`div`,{className:`px-4 pb-2 flex flex-col gap-3`,children:[K,q]}),_(`div`,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto px-4`,children:J})]})}):_(u,{open:s,onOpenChange:e=>{e||D()},showCloseButton:!1,className:`border-0 bg-transparent p-0`,children:v(e,{className:`w-full flex flex-col bg-bg1 px-[12px] text-text1`,style:{height:`70vh`,...k,maxHeight:`70vh`},children:[v(e,{className:`shrink-0 flex justify-between items-center h-[48px]`,children:[_(o,{className:`text-[16px] font-bold text-text1`,children:V}),_(e,{className:`pl-[12px] h-full flex items-center`,onClick:D,children:_(c,{className:`w-[14px] h-[14px] text-text1 cursor-pointer`})})]}),v(e,{className:`flex-1 h-0 w-full pb-[12px] flex flex-col gap-3`,children:[K,q,_(e,{ref:N,className:`flex-1 h-0 pt-[4px] pb-[12px] overflow-y-auto`,children:J})]})]})})}function E({information:t,series_num:n,onEpisodeChange:r}){let i=b(`components.common`),[a,c]=s(`detail-series-popup-${t.id}`,!1),[u,x]=s(`detail-series-title-toggle-${t.id}`,!1),[C,w]=s(`detail-series-scroll-left-${t.id}`,null),[E,D]=h(n);f(()=>{D(n)},[t.id,n]);let O=p(()=>S((t.links||[]).map(e=>({id:e.id,name:e.name})),t.id||`episode`,e=>i(`seriesEpisodes.episodeLabel`,{episode:e})),[t.id,t.links,i]),k=t.update_status===`1`?i(`seriesEpisodes.completedSeriesTotal`,{total:t.links.length}):i(`seriesEpisodes.ongoingSeriesUpdatedTo`,{total:t.links.length}),A=p(()=>t.links[E-1]?.id||t.links[0]?.id||``,[t.links,E]),j=m(null),M=m(null),N=m(null),P=m(!1),F=m(null),I=m(null),L=m(null),[R,z]=h(!1),B=d((e,t=`smooth`)=>{let n=j.current?.querySelector(`[data-content-id="${e}"]`);if(n&&j.current){let e=j.current,r=Math.max(0,n.offsetLeft-10);e.scrollTo({left:r,behavior:t})}},[]),V=d(()=>{I.current!==null&&(window.clearTimeout(I.current),I.current=null)},[]),H=d(()=>{L.current!==null&&(window.clearTimeout(L.current),L.current=null)},[]),U=d(()=>{F.current!==null&&(y.dismiss(F.current),F.current=null),V(),H()},[H,V]),W=d(()=>{M.current=null,N.current=null,U(),z(!1)},[U]),G=d((e,t)=>{H(),L.current=window.setTimeout(()=>{L.current=null,M.current===e&&W()},Math.max(0,t))},[H,W]);f(()=>{P.current=!1},[t.id]),f(()=>{if(P.current||!A)return;let e=window.requestAnimationFrame(()=>{let e=j.current;e&&(typeof C==`number`?e.scrollTo({left:Math.max(0,C),behavior:`auto`}):(B(A,`auto`),w(Math.max(0,Math.round(e.scrollLeft)))),P.current=!0)});return()=>{window.cancelAnimationFrame(e)}},[A,C,B,w]),f(()=>{let e=M.current;!e||e!==n||G(e,1e3)},[G,n]),f(()=>()=>{W()},[W]);let K=d((e,t,n)=>{let r=j.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)},[]),q=d((e,a=`inline`,o,s)=>{if(e!==E){if(!t.links[e-1]){y.error(i(`seriesEpisodes.episodeNotFound`));return}if(typeof window<`u`&&window.isWebView===!0){let n=String(t.id||``).trim(),r=`/webview/${encodeURIComponent(n)}/${encodeURIComponent(String(t.name||``))}/episode/${e}`,{search:i,hash:a}=window.location;window.location.href=`${r}${i}${a}`;return}try{D(e);let c=o||t.links[e-1]?.id||``,l=Math.max(0,Math.round(j.current?.scrollLeft||0));a===`popup`?(c&&B(c,`auto`),w(Math.max(0,Math.round(j.current?.scrollLeft||0)))):w(K(c,l,s)),z(!0),U(),F.current=y.loading(i(`seriesEpisodes.episodeSwitching`)),M.current=e,N.current=a,I.current=window.setTimeout(()=>{M.current===e&&(D(n),W(),y.error(i(`seriesEpisodes.episodeSwitchFailed`)))},8e3),r(e)}catch(e){D(n),W(),console.error(`切换剧集失败`,e),y.error(i(`seriesEpisodes.episodeSwitchFailed`))}}},[W,U,t.id,t.links,t.name,r,E,n,K,B,w,i]),[J,Y]=h(`70vh`),X=d(()=>{if(typeof window>`u`)return;let e=document.getElementById(`selectPopupPosition`),t=window.visualViewport?.height||window.innerHeight;if(!e){Y(`70vh`);return}let n=Math.max(0,t-e.offsetTop);if(n<=0){Y(`70vh`);return}Y(`${n}px`)},[]);return f(()=>{if(!a)return;X();let e=()=>{X()};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[X,a]),O.length<=1?null:v(g,{children:[v(e,{className:`w-full mt-[16px] flex flex-col items-end mb-[4px]`,children:[v(e,{className:`w-fit flex items-center px-[12px] h-[28px]`,onClick:()=>c(!0),children:[_(o,{className:`text-[14px] text-text2 leading-[20px]`,children:k}),_(l,{className:`w-[11px] h-[18px] ml-[4px] text-text2`})]}),_(`div`,{ref:j,className:`w-full mt-[12px] overflow-x-auto px-[12px] flex gap-x-[8px] ${u?`h-[76px]`:`h-[60px]`} ${R?`touch-none`:``}`,children:O.map((e,t)=>_(`div`,{"data-content-id":e.id,className:`shrink-0 h-[full] px-[18px] rounded-[6px] border border-line1 flex items-center ${u?`w-[162px]`:`w-[60px] !px-[0] justify-center`} ${e.id===A?`!border-theme5 bg-line1`:``}`,onClick:n=>{q(t+1,`inline`,e.id,n.clientX)},children:_(o,{className:`text-[16px] text-text1 leading-[22px] line-clamp-2 ${e.id===A?`font-bold !text-theme5`:``}`,children:u?e.title:e.series_num})},e.id))})]}),_(T,{title:i(`seriesEpisodes.selectorTitle`),variant:`popup`,open:a,updateStatus:t.update_status,summaryText:k,seriesList:(t.links||[]).map(e=>({id:e.id,name:e.name})),activeEpisodeId:A,showEpisodeTitle:u,onToggleTitle:e=>{x(e)},onClose:()=>c(!1),onSelectEpisode:(e,t)=>{c(!1),q(t,`popup`,e)},popupBodyStyle:{height:J}})]})}export{w as SeriesEpisodes};
@@ -1,2 +1,2 @@
1
1
 
2
- import e from"../../../utils/get-res-url.mjs";const t=10*1e3,n=process.env.NODE_ENV!==`production`,r=1,i=new Map;function a(e){return/\.m3u8(?:$|[?#])/i.test(e)}function o(e){return/^(?:https?:)?\/\//i.test(e)||/^(?:blob:|data:)/i.test(e)}function s(t){return`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${e()}/m3f/${t}`)}`}function c(e){if(!(!e||!e.startsWith(`blob:`)))try{URL.revokeObjectURL(e)}catch{}}function l(e){let t=i.get(e);t&&(c(t.objectUrl),i.delete(e))}function u(){for(;i.size>80;){let e=i.keys().next().value;if(!e)break;l(e)}}function d(e,t){i.delete(e),i.set(e,t)}function f(e){let t=i.get(e);return t?t.expiresAt<=Date.now()?(l(e),null):(d(e,t),t):null}async function p(e){let n=s(e);try{let t=await fetch(n,{method:`GET`,credentials:`omit`,cache:`no-store`});if(!t.ok)throw Error(`processM3u8 status ${t.status}`);let r=await t.text();if(!r.includes(`#EXTM3U`))throw Error(`processM3u8 invalid playlist`);let a=URL.createObjectURL(new Blob([r],{type:`application/vnd.apple.mpegurl`})),o=i.get(e);return o?(c(o.objectUrl),o.objectUrl=a,o.expiresAt=Date.now()+3e4,d(e,o),u(),a):(c(a),n)}catch{let r=i.get(e);return r&&(r.expiresAt=Date.now()+t,d(e,r)),n}}function m(e){let n=f(e);if(n)return n;let r={expiresAt:Date.now()+t,objectUrl:``,promise:Promise.resolve(``)};return r.promise=p(e),i.set(e,r),u(),r}function h(e){if(!e)return!1;let t=e.toLowerCase();return/(android|iphone|ipad|ipod|mobile|harmonyos|windows phone)/.test(t)?!0:/; wv\)|webview|micromessenger|qq\//.test(t)}function g(t){return t?o(t)?t:a(t)?s(t):`${e()}/${t}`:``}async function _(e){return e?!a(e)||typeof window>`u`||h(window.navigator?.userAgent||``)?g(e):await m(e).promise:``}function v(e){!e||!a(e)||typeof window>`u`||h(window.navigator?.userAgent||``)||m(e).promise}function y(){let e=(process.env.NEXT_PUBLIC_CDN||``).split(`,`).map(e=>e.trim()).find(Boolean);return e?e.replace(/\/+$/,``):``}function b(e){if(!e)return``;if(/^https?:\/\//i.test(e))return e;let t=y();if(!t)return``;let n=e.replace(/^\/+/,``);return n?n.startsWith(`m3f/`)?`${t}/${n}`:`${t}/m3f/${n}`:``}function x(e,t=1){let n=Number.isFinite(t)?Math.max(1,Math.floor(t)):1;if(typeof e==`number`)return Number.isFinite(e)?Math.max(1,Math.floor(e)):n;if(typeof e==`string`){let t=e.trim();if(!t)return n;let r=Number.parseInt(t,10);return Number.isNaN(r)?n:Math.max(1,r)}return n}function S(e,t){if(!Array.isArray(e)||e.length===0)return``;let n=x(t,1),r=e[Math.max(0,n-1)]||e[0];if(!r||typeof r!=`object`)return``;let i=r;return i.m3u8_url||i.m3u8url||``}function C(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return``;let t=e;return t.m3u8_url||t.m3u8url||``}function w(e,t){if(typeof e==`string`)return e?[e]:[];if(!Array.isArray(e)||e.length===0)return[];if(e.every(e=>typeof e==`string`))return Array.from(new Set(e.filter(Boolean)));let n=S(e,t);return n?[n]:Array.from(new Set(e.map(e=>C(e)).filter(Boolean)))}function T(e){return new Promise(t=>{setTimeout(()=>t(),e)})}function E(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch{return e}}function D(e,t){n&&console.warn(`[processM3u8-warmup] ${e}`,t)}async function O(e){let t=b(e);if(!t||typeof window<`u`)return;let n=E(t),r=Date.now();D(`start`,{url:n});let i=`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(t)}`,a=new AbortController,o=setTimeout(()=>a.abort(),3e3),s=fetch(i,{method:`GET`,credentials:`omit`,cache:`no-store`,signal:a.signal}).then(async e=>{if(!e.ok)throw Error(`processM3u8 status ${e.status}`);if(!(await e.text()).includes(`#EXTM3U`))throw Error(`processM3u8 invalid playlist`);return D(`done`,{url:n,costMs:Date.now()-r}),`done`}).catch(e=>(D(`fail`,{url:n,costMs:Date.now()-r,error:e instanceof Error?e.message:String(e||``)}),`fail`)).finally(()=>{clearTimeout(o)});await Promise.race([s,T(160).then(()=>`timeout`)])===`timeout`&&D(`detach`,{url:n,awaitMs:160})}async function k(e,t){let n=w(e,t);await Promise.all(n.map(e=>O(e)))}export{r as RETRY_RECOVERED_MIN_PLAY_SECONDS,g as buildVideoPlayerSrc,a as isM3u8VideoUrl,x as normalizeEpisodeNumber,v as prefetchVideoPlayerSrc,_ as resolveVideoPlayerSrc,k as warmupProcessM3u8Auto};
2
+ import e from"../../../utils/get-res-url.mjs";const t=10*1e3,n=process.env.NODE_ENV!==`production`,r=1,i=new Map;function a(e){return/\.m3u8(?:$|[?#])/i.test(e)}function o(e){return/^(?:https?:)?\/\//i.test(e)||/^(?:blob:|data:)/i.test(e)}function s(t){return`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(`${e()}/m3f/${t}`)}`}function c(e){if(!(!e||!e.startsWith(`blob:`)))try{URL.revokeObjectURL(e)}catch{}}function l(e){let t=i.get(e);t&&(c(t.objectUrl),i.delete(e))}function u(){for(;i.size>80;){let e=i.keys().next().value;if(!e)break;l(e)}}function d(e,t){i.delete(e),i.set(e,t)}function f(e){let t=i.get(e);return t?t.expiresAt<=Date.now()?(l(e),null):(d(e,t),t):null}async function p(e){let n=s(e);try{let t=await fetch(n,{method:`GET`,credentials:`omit`,cache:`no-store`});if(!t.ok)throw Error(`processM3u8 status ${t.status}`);let r=await t.text();if(!r.includes(`#EXTM3U`))throw Error(`processM3u8 invalid playlist`);let a=URL.createObjectURL(new Blob([r],{type:`application/vnd.apple.mpegurl`})),o=i.get(e);return o?(c(o.objectUrl),o.objectUrl=a,o.expiresAt=Date.now()+3e4,d(e,o),u(),a):(c(a),n)}catch{let r=i.get(e);return r&&(r.expiresAt=Date.now()+t,d(e,r)),n}}function m(e){let n=f(e);if(n)return n;let r={expiresAt:Date.now()+t,objectUrl:``,promise:Promise.resolve(``)};return r.promise=p(e),i.set(e,r),u(),r}function h(e){if(!e)return!1;let t=e.toLowerCase();return/(android|iphone|ipad|ipod|mobile|harmonyos|windows phone)/.test(t)?!0:/; wv\)|webview|micromessenger|qq\//.test(t)}function g(t){return t?o(t)?t:a(t)?s(t):`${e()}/${t}`:``}async function _(e){return e?!a(e)||typeof window>`u`||h(window.navigator?.userAgent||``)?g(e):await m(e).promise:``}function v(e){!e||!a(e)||typeof window>`u`||h(window.navigator?.userAgent||``)||m(e).promise}function y(){let e=(process.env.NEXT_PUBLIC_CDN||``).split(`,`).map(e=>e.trim()).find(Boolean);return e?e.replace(/\/+$/,``):``}function b(e){if(!e)return``;if(/^https?:\/\//i.test(e))return e;let t=y();if(!t)return``;let n=e.replace(/^\/+/,``);return n?n.startsWith(`m3f/`)?`${t}/${n}`:`${t}/m3f/${n}`:``}function x(e,t=1){let n=Number.isFinite(t)?Math.max(1,Math.floor(t)):1;if(typeof e==`number`)return Number.isFinite(e)?Math.max(1,Math.floor(e)):n;if(typeof e==`string`){let t=e.trim();if(!t)return n;let r=Number.parseInt(t,10);return Number.isNaN(r)?n:Math.max(1,r)}return n}function S(e,t){if(!Array.isArray(e)||e.length===0)return``;let n=x(t,1),r=e[Math.max(0,n-1)]||e[0];if(!r||typeof r!=`object`)return``;let i=r;return i.m3u8_url||i.m3u8url||``}function C(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return``;let t=e;return t.m3u8_url||t.m3u8url||``}function w(e,t){if(typeof e==`string`)return e?[e]:[];if(!Array.isArray(e)||e.length===0)return[];if(e.every(e=>typeof e==`string`))return Array.from(new Set(e.filter(Boolean)));let n=S(e,t);return n?[n]:Array.from(new Set(e.map(e=>C(e)).filter(Boolean)))}function T(e){return new Promise(t=>{setTimeout(()=>t(),e)})}function E(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch{return e}}function D(e,t){n&&console.warn(`[processM3u8-warmup] ${e}`,t)}async function O(e){let t=b(e);if(!t||typeof window<`u`)return;let n=E(t),r=Date.now();D(`start`,{url:n});let i=`${process.env.NEXT_PUBLIC_API_BASE}/api/content/processM3u8?url=${encodeURIComponent(t)}`,a=new AbortController,o=setTimeout(()=>a.abort(),3e3),s=fetch(i,{method:`GET`,credentials:`omit`,cache:`no-store`,signal:a.signal}).then(async e=>{if(!e.ok)throw Error(`processM3u8 status ${e.status}`);if(!(await e.text()).includes(`#EXTM3U`))throw Error(`processM3u8 invalid playlist`);return D(`done`,{url:n,costMs:Date.now()-r}),`done`}).catch(e=>(D(`fail`,{url:n,costMs:Date.now()-r,error:e instanceof Error?e.message:String(e||``)}),`fail`)).finally(()=>{clearTimeout(o)});await Promise.race([s,T(160).then(()=>`timeout`)])===`timeout`&&D(`detach`,{url:n,awaitMs:160})}async function k(e,t){let n=w(e,t);await Promise.all(n.map(e=>O(e)))}export{r as RETRY_RECOVERED_MIN_PLAY_SECONDS,g as buildVideoPlayerSrc,a as isM3u8VideoUrl,x as normalizeEpisodeNumber,v as prefetchVideoPlayerSrc,w as resolveM3u8Urls,_ as resolveVideoPlayerSrc,k as warmupProcessM3u8Auto};
@@ -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{Box as i}from"../../ui/box.mjs";import{useDeleteRequest as a,useMutation as o,usePaginated as s}from"../../../hooks/query/use-query.mjs";import{HeaderNav as c}from"../../common/header-nav/client.mjs";import{UserActivityList as l}from"../../common/list/user-activity-list/user-activity-list.mjs";import{useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useTranslations as h}from"next-intl";function g(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 _({id:_}){let{userId:v}=t(),y=_,[b,x]=d(()=>new Set),S=a(),{mutateAsync:C,isPending:w}=o(async e=>await r({collection_id:y,content_id:e})),{data:T,isFetching:E,fetchNextPage:D,hasNextPage:O}=s({key:[`collection-add`,y,v],initialPageParam:1,async queryFn(e){if(!v)return{data:{list:[],total:0}};let t=await n({user_id:v,page:e,collection_id:y,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}}),k=h(`components.pages.collectionAdd`),A=u(()=>T?.pages.flatMap(e=>((e?.data).list||[]).map(e=>g(e)))??[],[T]);function j(e){w||x(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function M(){if(w)return;if(!y){m.error(k(`page.collectionNotFound`));return}if(!v){m.error(k(`page.userNotFound`));return}let e=Array.from(b);if(e.length===0){m.error(k(`page.selectPostFirst`));return}let t=m.loading(k(`page.submitting`));try{await Promise.all(e.map(e=>C(e))),m.success(k(`page.submitSuccess`),{id:t}),x(new Set),S([`collection-add`,y,v]),S([`collection-detail`,y])}catch(e){console.error(`添加合集失败`,e),m.error(k(`page.submitFailed`),{id:t})}}let N=b.size;return p(i,{className:`bg-bg2 !min-h-screen`,children:[f(c,{className:`!bg-bg2`,title:k(`page.title`),rightChild:p(e,{onClick:M,disabled:w||N===0,children:[k(`page.done`),`(`,N,`)`]})}),f(l,{list:A,loading:E,hasMore:O,loadMore:async()=>{D()},emptyText:k(`page.emptyPublish`),showGroupHeaders:!1,isEditMode:!0,selectedIds:b,onToggleSelection:j})]})}export{_ as CollectionAddPage};
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{Box as i}from"../../ui/box.mjs";import{useDeleteRequest as a,useMutation as o,usePaginated as s}from"../../../hooks/query/use-query.mjs";import{HeaderNav as c}from"../../common/header-nav/client.mjs";import{UserActivityList as l}from"../../common/list/user-activity-list/user-activity-list.mjs";import{useMemo as u,useState as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{toast as m}from"sonner";import{useRouter as h}from"next/navigation";import{useTranslations as g}from"next-intl";function _(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 v({id:v}){let{userId:y}=t(),b=v,[x,S]=d(()=>new Set),C=a(),{mutateAsync:w,isPending:T}=o(async e=>await r({collection_id:b,content_id:e})),{data:E,isFetching:D,fetchNextPage:O,hasNextPage:k}=s({key:[`collection-add`,b,y],initialPageParam:1,async queryFn(e){if(!y)return{data:{list:[],total:0}};let t=await n({user_id:y,page:e,collection_id:b,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}}),A=g(`components.pages.collectionAdd`),j=u(()=>E?.pages.flatMap(e=>((e?.data).list||[]).map(e=>_(e)))??[],[E]);function M(e){T||S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function N(){if(T)return;if(!b){m.error(A(`page.collectionNotFound`));return}if(!y){m.error(A(`page.userNotFound`));return}let e=Array.from(x);if(e.length===0){m.error(A(`page.selectPostFirst`));return}let t=m.loading(A(`page.submitting`));try{await Promise.all(e.map(e=>w(e))),m.success(A(`page.submitSuccess`),{id:t}),S(new Set),C([`collection-add`,b,y]),C([`collection-detail`,b])}catch(e){console.error(`添加合集失败`,e),m.error(A(`page.submitFailed`),{id:t})}}let P=h(),F=x.size;return p(i,{className:`bg-bg2 !min-h-screen`,children:[f(c,{onBack:()=>P.back(),className:`!bg-bg2`,title:A(`page.title`),rightChild:p(e,{onClick:N,disabled:T||F===0,children:[A(`page.done`),`(`,F,`)`]})}),f(l,{list:j,loading:D,hasMore:k,loadMore:async()=>{O()},emptyText:A(`page.emptyPublish`),showGroupHeaders:!1,isEditMode:!0,selectedIds:x,onToggleSelection:M})]})}export{v 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{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{InputGroup as s,InputGroupAddon as c,InputGroupTextarea as l}from"../../ui/input-group.mjs";import{Field as u,FieldLabel as d}from"../../ui/field.mjs";import{useDeleteRequest as f,useRequest as p}from"../../../hooks/query/use-query.mjs";import{HeaderNav as m}from"../../common/header-nav/client.mjs";import{useEffect as h,useRef as g,useState as _}from"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({mode:S=`create`,collectionId:C}){let w=x(`components.pages.collectionCreate`),T=a(),{userId:E}=t(),D=f();g(null);let O=S===`edit`&&!!C,k=g(!1),[A,j]=_(!1),[M,N]=_(!1),[P,F]=_(``),[I,L]=_({title:``,description:``}),R=p([`collection-detail`,C],()=>n({collection_id:C}),{enabled:!!(O&&C)}).data?.data?.data?.collection;h(()=>{!O||k.current||!R||(L({title:R.title??``,description:R.description??``}),F(R.cover_image??``),k.current=!0)},[R,O]);function z(e,t){L(n=>({...n,[e]:t}))}async function B(){if(A)return;let e=I.title.trim(),t=I.description.trim();if(!e){b.error(w(`form.titleRequired`));return}if(O&&!C){b.error(w(`form.collectionNotFound`));return}try{j(!0);let n=b.loading(w(O?`form.saving`:`form.creating`)),a=O?await i({collection_id:C,title:e,description:t,cover_image:P}):await r({title:e,description:t,cover_image:P});if(a.code===0){b.success(w(O?`form.saveSuccess`:`form.createSuccess`),{id:n}),E&&D([`user-profile`,`mine`,E,`user-collection-created`,E]),O&&C&&D([`collection-detail`,C]),T.back();return}b.error(a.message||w(O?`form.saveFailed`:`form.createFailed`),{id:n})}catch(e){console.error(O?`编辑合集失败`:`创建合集失败`,e),b.error(w(O?`form.saveFailed`:`form.createFailed`))}finally{j(!1)}}return y(o,{className:`min-h-screen !bg-bg2`,children:[v(m,{title:w(O?`form.editTitle`:`form.createTitle`),className:`!bg-bg2`,rightChild:v(e,{onClick:B,disabled:A||M,children:w(A?O?`form.saving`:`form.creating`:O?`form.save`:`form.create`)})}),y(o,{className:`pb-3`,children:[y(u,{className:`!bg-bg2 px-3 border-none`,children:[v(d,{required:!0,children:w(`form.label`)}),y(s,{children:[v(l,{className:`!bg-bg1 p-2.5`,maxLength:50,placeholder:w(`form.titlePlaceholder`),value:I.title,onChange:e=>z(`title`,e.target.value)}),v(c,{className:`!bg-bg1`,align:`block-end`,children:v(`div`,{className:`text-right w-full`,children:y(`span`,{className:`text-xs`,children:[I.title.length,`/50`]})})})]})]}),y(u,{className:`border-none px-3 bg-bg2! `,children:[v(d,{children:w(`form.descriptionLabel`)}),y(s,{children:[v(l,{className:`!bg-bg1 p-2.5`,maxLength:100,placeholder:w(`form.descriptionPlaceholder`),value:I.description,onChange:e=>z(`description`,e.target.value)}),v(c,{className:`!bg-bg1`,align:`block-end`,children:v(`div`,{className:`text-right w-full`,children:y(`span`,{className:`text-xs`,children:[I.description.length,`/100`]})})})]})]})]})]})}export{S as CollectionCreateForm};
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{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{InputGroup as s,InputGroupAddon as c,InputGroupTextarea as l}from"../../ui/input-group.mjs";import{Field as u,FieldLabel as d}from"../../ui/field.mjs";import{useDeleteRequest as f,useRequest as p}from"../../../hooks/query/use-query.mjs";import{HeaderNav as m}from"../../common/header-nav/client.mjs";import{useEffect as h,useRef as g,useState as _}from"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({mode:S=`create`,collectionId:C}){let w=x(`components.pages.collectionCreate`),T=a(),{userId:E}=t(),D=f();g(null);let O=S===`edit`&&!!C,k=g(!1),[A,j]=_(!1),[M,N]=_(!1),[P,F]=_(``),[I,L]=_({title:``,description:``}),R=p([`collection-detail`,C],()=>n({collection_id:C}),{enabled:!!(O&&C)}).data?.data?.data?.collection;h(()=>{!O||k.current||!R||(L({title:R.title??``,description:R.description??``}),F(R.cover_image??``),k.current=!0)},[R,O]);function z(e,t){L(n=>({...n,[e]:t}))}async function B(){if(A)return;let e=I.title.trim(),t=I.description.trim();if(!e){b.error(w(`form.titleRequired`));return}if(O&&!C){b.error(w(`form.collectionNotFound`));return}try{j(!0);let n=b.loading(w(O?`form.saving`:`form.creating`)),a=O?await i({collection_id:C,title:e,description:t,cover_image:P}):await r({title:e,description:t,cover_image:P});if(a.code===0){b.success(w(O?`form.saveSuccess`:`form.createSuccess`),{id:n}),E&&D([`user-profile`,`mine`,E,`user-collection-created`,E]),O&&C&&D([`collection-detail`,C]),T.back();return}b.error(a.message||w(O?`form.saveFailed`:`form.createFailed`),{id:n})}catch(e){console.error(O?`编辑合集失败`:`创建合集失败`,e),b.error(w(O?`form.saveFailed`:`form.createFailed`))}finally{j(!1)}}return y(o,{className:`min-h-screen !bg-bg2`,children:[v(m,{title:w(O?`form.editTitle`:`form.createTitle`),onBack:()=>T.back(),className:`!bg-bg2`,rightChild:v(e,{onClick:B,disabled:A||M,children:w(A?O?`form.saving`:`form.creating`:O?`form.save`:`form.create`)})}),y(o,{className:`pb-3`,children:[y(u,{className:`!bg-bg2 px-3 border-none`,children:[v(d,{required:!0,children:w(`form.label`)}),y(s,{children:[v(l,{className:`!bg-bg1 p-2.5`,maxLength:50,placeholder:w(`form.titlePlaceholder`),value:I.title,onChange:e=>z(`title`,e.target.value)}),v(c,{className:`!bg-bg1`,align:`block-end`,children:v(`div`,{className:`text-right w-full`,children:y(`span`,{className:`text-xs`,children:[I.title.length,`/50`]})})})]})]}),y(u,{className:`border-none px-3 bg-bg2! `,children:[v(d,{children:w(`form.descriptionLabel`)}),y(s,{children:[v(l,{className:`!bg-bg1 p-2.5`,maxLength:100,placeholder:w(`form.descriptionPlaceholder`),value:I.description,onChange:e=>z(`description`,e.target.value)}),v(c,{className:`!bg-bg1`,align:`block-end`,children:v(`div`,{className:`text-right w-full`,children:y(`span`,{className:`text-xs`,children:[I.description.length,`/100`]})})})]})]})]})]})}export{S as CollectionCreateForm};
@@ -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,gUserViewUserInfo as r,pCommunityDeleteCollection as i,pCommunityRemoveContentFromCollection as a,pCommunitySubscribeCollection as o,pInteractionBatchDeleteCollects as s}from"../../../service/generated/client.mjs";import{useRouter as ee}from"../../../utils/use-compatible-router.mjs";import{Box as c}from"../../ui/box.mjs";import{Checkbox as te}from"../../ui/checkbox.mjs";import{Drawer as ne,DrawerContent as re,DrawerDescription as ie,DrawerTitle as ae}from"../../ui/drawer.mjs";import{List as oe}from"../../ui/list.mjs";import{Text as l}from"../../ui/text.mjs";import{useLoginModalStore as se}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as ce,useMutation as u,useRequest as d,useUpdateRequest as le}from"../../../hooks/query/use-query.mjs";import{ShareDrawer as f}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as p}from"../../../types/share.mjs";import m from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as ue}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as de}from"../../common/header-nav/client.mjs";import{MoreIcon as fe}from"../../common/icons/more.mjs";import{CollectionDetailCard as pe}from"./_components/collection-detail-card.mjs";import{useEffect as me,useMemo as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useSearchParams as b}from"next/navigation";import{useTranslations as he}from"next-intl";function x(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function S(e){let t=e.detail.info?.video_duration;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return Math.floor(t);let n=e.medias?.find(e=>{let t=e?.video_duration;return typeof t==`number`&&Number.isFinite(t)&&t>0})?.video_duration;return typeof n==`number`&&Number.isFinite(n)&&n>0?Math.floor(n):0}function C(e){let t=e.detail.info?.play_count;if(typeof t==`number`&&Number.isFinite(t))return Math.max(0,Math.floor(t));let n=e.detail.view_count||e.viewCount;return typeof n==`number`&&Number.isFinite(n)?Math.max(0,Math.floor(n)):0}function ge(e){let t=e.detail,n=t.info,r=String(n?.cover_image||t.cover_image||x(e)||``),i=String(n?.text||n?.title||t.title||t.content||``),a=t.author_score??0,o=Array.isArray(t.tags)?t.tags:[];return{id:e.content_id?String(e.content_id):String(e.id),title:i,type:typeof e.type==`number`?e.type:0,coverImage:r,score:a,collectedAt:t.create_time==null?void 0:String(t.create_time),tags:o,duration:S(e),viewCount:C(e),publishTime:String(t.create_time??t.update_time??``),is_more_link:e.is_more_link??n?.is_more_link??!1,authorName:``}}function w({id:x}){let S=he(`components.pages.collectionDetail`),C=ee(),w=b(),{userId:T,isLogin:E}=t(),{open:D}=se(),O=ce();le();let k=d([`collection-detail`,x],()=>n({collection_id:x})),A=k.data?.data?.data?.collection?.user_id,j=!!(A&&T&&String(A)===String(T)),_e=d([`user-info`,A],()=>r({target_user_id:A,user_id:A})),[ve,M]=g(!1),[N,P]=g(!1),[F,I]=g(!1),[L,R]=g(!1),[z,B]=g(!1),[V,H]=g(()=>new Set),[U,W]=g(null);me(()=>{!N&&L&&(I(!0),R(!1))},[N,L]);let G=k.data?.data?.data?.collection,K=G?.contents,q=h(()=>K?K.map(e=>({content_id:e.content_id,is_more_link:e.is_more_link,id:Number(e.content_id),detail:e,type:Number(e.source_type??0),medias:e.medias,cover_image:e.cover_image,viewCount:e.view_count})):[],[K]).map(ge),J=h(()=>new Set(q.map(e=>e.id)),[q]),Y=J.size>0&&V.size===J.size;G?.cover_image,G?.content_count,G?.is_subscribe;let{mutateAsync:ye,isPending:be}=u(async e=>await o({collection_id:x,subscribe:e})),{mutateAsync:xe,isPending:Se}=u(async e=>await a({collection_id:x,content_id:e})),{mutateAsync:Ce,isPending:X}=u(async e=>await i({collection_id:e})),{mutateAsync:we,isPending:Z}=u(async e=>await s({app_id:0,user_id:T,folder_id:x,content_type:1,content_ids:e})),Q=_e.data?.data;Q?.avatar,Q?.nick_name;let Te=j&&G?.is_default===!1;function Ee(e){W({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),M(!0)}function De(){if(j){P(!0);return}W({kind:`collection`,id:x}),M(!0)}function Oe(){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}if(!j){y.error(S(`detail.operationFailed`));return}P(!1),H(new Set),B(!0)}function ke(){H(new Set),B(!1)}function Ae(e){H(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function je(){if(Y){H(new Set);return}H(new Set(J))}async function Me(){if(!(V.size===0||Z)){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}try{let e=await we(Array.from(V));if(e.code===0){y.success(S(`detail.uncollectSuccess`)),O([`collection-detail`,x]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),H(new Set),B(!1);return}y.error(e.message||S(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),y.error(S(`detail.operationFailed`))}}}function Ne(e){if(typeof window>`u`)return``;if(e.kind===`collection`)return`${window.location.origin}/collection/${e.id}`;let t=e.title?encodeURIComponent(e.title):`detail`,n=e.type===1?`/video/${e.id}/${t}`:`/post/${e.id}`;return`${window.location.origin}${n}`}function $(e){if(!U)return;let t=Ne(U);t&&m.showSharePopup({type:e,data:{id:U.id},copyUrl:t})}function Pe(){$(p.WECHAT)}function Fe(){$(p.QQ)}function Ie(){$(p.WECHAT_MOMENTS)}function Le(){if(!Se){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}!U||U.kind!==`content`||xe(U.id).then(e=>{if(e.code===0){y.success(S(`detail.uncollectSuccess`)),O([`collection-detail`,x]),W(e=>e&&{...e,isCollected:!1});return}y.error(e.message||S(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),y.error(S(`detail.operationFailed`))})}}function Re(){let e=new URLSearchParams(w.toString());e.set(`id`,x),e.set(`type`,`edit`),C.push(`/collection/create?${e.toString()}`),P(!1),M(!1)}function ze(){if(!X){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}if(!Te){y.error(S(`detail.defaultCollectionDeleteNotSupported`));return}R(!0),P(!1)}}async function Be(){if(!X)try{let e=await Ce(x);if(e.code===0){y.success(S(`detail.deleteSuccess`)),O([`collection-detail`,x]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),I(!1),P(!1),M(!1),C.back();return}y.error(e.message||S(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),y.error(S(`detail.operationFailed`))}}return v(c,{className:`flex flex-col bg-bg1 min-h-screen ${z?`pb-28`:`pb-6`}`,children:[_(de,{title:G?.title??``,rightChild:j?z?_(`button`,{type:`button`,onClick:ke,className:`px-2 py-1 text-sm text-text1`,children:S(`detail.done`)}):_(`button`,{type:`button`,onClick:De,className:`p-2`,children:_(fe,{})}):void 0}),_(c,{className:`px-4 flex items-start gap-4`,children:v(c,{className:`flex-1 flex flex-col gap-2`,children:[_(c,{className:`flex items-center justify-between`}),_(c,{className:`text-text2 text-sm break-all text-ellipsis line-clamp-1`,children:G?.description})]})}),_(c,{className:`px-4 ${z?`pb-20`:``}`,children:_(oe,{loading:k.isLoading,hasMore:!1,emptyText:S(`detail.emptyContent`),className:`divide-y divide-text1/5`,children:q.map(e=>_(pe,{...e,onOpenShare:Ee,isEditMode:z,isSelected:V.has(e.id),onToggleSelection:Ae},e.id))})}),z&&v(c,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[v(c,{className:`flex items-center gap-2`,children:[_(te,{checked:Y,onCheckedChange:je}),_(l,{className:`text-sm text-text1`,children:S(`detail.selectAll`)})]}),_(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:V.size>0?`default`:`outline`,disabled:V.size===0||Z,onClick:Me,children:S(Z?`detail.deleting`:`detail.delete`)})]}),v(ne,{open:N,onOpenChange:P,children:[_(ae,{className:`hidden`,children:S(`detail.collectionManageTitle`)}),_(ie,{className:`hidden`,children:S(`detail.collectionManageTitle`)}),v(re,{className:`z-[2000]`,children:[v(c,{className:`px-4 py-5`,children:[_(l,{className:`text-base font-bold text-text1 text-center `,children:S(`detail.collectionManageTitle`)}),v(c,{className:`mt-4 border-t border-text1/10`,children:[_(`button`,{className:`w-full text-left py-4 border-b border-text1/10`,onClick:Re,children:_(l,{className:`text-text1`,children:S(`detail.editCollection`)})}),_(`button`,{className:`w-full text-left py-4 border-b border-text1/10`,onClick:Oe,children:_(l,{className:`text-text1`,children:S(`detail.manageCollection`)})}),_(`button`,{className:`w-full text-left py-4 ${X?`opacity-60 cursor-not-allowed`:``}`,onClick:ze,disabled:X,children:_(l,{className:`text-destructive`,children:S(X?`detail.deleting`:`detail.deleteCollection`)})})]})]}),_(e,{className:`w-full h-auto py-4 text-lg text-text1`,size:`lg`,onClick:()=>P(!1),variant:`secondary`,children:S(`detail.cancel`)})]})]}),_(f,{isShowCollect:U?.kind===`content`&&j&&E,isCollected:U?.isCollected,open:ve,onOpenChange:M,onShareWeChat:Pe,onShareQQ:Fe,onShareMoments:Ie,onUncollect:Le}),_(ue,{open:F,onOpenChange:I,onConfirm:Be,title:S(`detail.deleteCollection`),isConfirming:X})]})}export{w as CollectionDetail};
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetCollectionInfo as n,gUserViewUserInfo as r,pCommunityDeleteCollection as i,pCommunityRemoveContentFromCollection as a,pCommunitySubscribeCollection as o,pInteractionBatchDeleteCollects as s}from"../../../service/generated/client.mjs";import{useRouter as ee}from"../../../utils/use-compatible-router.mjs";import{Box as c}from"../../ui/box.mjs";import{Checkbox as te}from"../../ui/checkbox.mjs";import{Drawer as ne,DrawerContent as re,DrawerDescription as ie,DrawerTitle as ae}from"../../ui/drawer.mjs";import{List as oe}from"../../ui/list.mjs";import{Text as l}from"../../ui/text.mjs";import{useLoginModalStore as se}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as ce,useMutation as u,useRequest as d,useUpdateRequest as le}from"../../../hooks/query/use-query.mjs";import{ShareDrawer as f}from"../../common/share-popup/share-drawer.mjs";import{SharePlatformEnum as p}from"../../../types/share.mjs";import m from"../../../utils/share-manager.mjs";import{DeleteConfirmDialog as ue}from"../../common/delete-confirm-dialog/delete-confirm-dialog.mjs";import{HeaderNav as de}from"../../common/header-nav/client.mjs";import{MoreIcon as fe}from"../../common/icons/more.mjs";import{CollectionDetailCard as pe}from"./_components/collection-detail-card.mjs";import{useEffect as me,useMemo as h,useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import{toast as y}from"sonner";import{useSearchParams as b}from"next/navigation";import{useTranslations as he}from"next-intl";function x(e){if(e.cover_image)return e.cover_image;let t=``;return e.medias?.find(e=>e?(!e.is_video&&!t&&e.media_url&&(t=e.media_url),!!e.cover_image):!1)?.cover_image||t}function S(e){let t=e.detail.info?.video_duration;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return Math.floor(t);let n=e.medias?.find(e=>{let t=e?.video_duration;return typeof t==`number`&&Number.isFinite(t)&&t>0})?.video_duration;return typeof n==`number`&&Number.isFinite(n)&&n>0?Math.floor(n):0}function C(e){let t=e.detail.info?.play_count;if(typeof t==`number`&&Number.isFinite(t))return Math.max(0,Math.floor(t));let n=e.detail.view_count||e.viewCount;return typeof n==`number`&&Number.isFinite(n)?Math.max(0,Math.floor(n)):0}function ge(e){let t=e.detail,n=t.info,r=String(n?.cover_image||t.cover_image||x(e)||``),i=String(n?.text||n?.title||t.title||t.content||``),a=t.author_score??0,o=Array.isArray(t.tags)?t.tags:[];return{id:e.content_id?String(e.content_id):String(e.id),title:i,type:typeof e.type==`number`?e.type:0,coverImage:r,score:a,collectedAt:t.create_time==null?void 0:String(t.create_time),tags:o,duration:S(e),viewCount:C(e),publishTime:String(t.create_time??t.update_time??``),is_more_link:e.is_more_link??n?.is_more_link??!1,authorName:``}}function w({id:x}){let S=he(`components.pages.collectionDetail`),C=ee(),w=b(),{userId:T,isLogin:E}=t(),{open:D}=se(),O=ce();le();let k=d([`collection-detail`,x],()=>n({collection_id:x})),A=k.data?.data?.data?.collection?.user_id,j=!!(A&&T&&String(A)===String(T)),_e=d([`user-info`,A],()=>r({target_user_id:A,user_id:A})),[ve,M]=g(!1),[N,P]=g(!1),[F,I]=g(!1),[L,R]=g(!1),[z,B]=g(!1),[V,H]=g(()=>new Set),[U,W]=g(null);me(()=>{!N&&L&&(I(!0),R(!1))},[N,L]);let G=k.data?.data?.data?.collection,K=G?.contents,q=h(()=>K?K.map(e=>({content_id:e.content_id,is_more_link:e.is_more_link,id:Number(e.content_id),detail:e,type:Number(e.source_type??0),medias:e.medias,cover_image:e.cover_image,viewCount:e.view_count})):[],[K]).map(ge),J=h(()=>new Set(q.map(e=>e.id)),[q]),Y=J.size>0&&V.size===J.size;G?.cover_image,G?.content_count,G?.is_subscribe;let{mutateAsync:ye,isPending:be}=u(async e=>await o({collection_id:x,subscribe:e})),{mutateAsync:xe,isPending:Se}=u(async e=>await a({collection_id:x,content_id:e})),{mutateAsync:Ce,isPending:X}=u(async e=>await i({collection_id:e})),{mutateAsync:we,isPending:Z}=u(async e=>await s({app_id:0,user_id:T,folder_id:x,content_type:1,content_ids:e})),Q=_e.data?.data;Q?.avatar,Q?.nick_name;let Te=j&&G?.is_default===!1;function Ee(e){W({kind:`content`,id:e.id,type:e.type,title:e.title,isCollected:!0}),M(!0)}function De(){if(j){P(!0);return}W({kind:`collection`,id:x}),M(!0)}function Oe(){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}if(!j){y.error(S(`detail.operationFailed`));return}P(!1),H(new Set),B(!0)}function ke(){H(new Set),B(!1)}function Ae(e){H(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function je(){if(Y){H(new Set);return}H(new Set(J))}async function Me(){if(!(V.size===0||Z)){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}try{let e=await we(Array.from(V));if(e.code===0){y.success(S(`detail.uncollectSuccess`)),O([`collection-detail`,x]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),H(new Set),B(!1);return}y.error(e.message||S(`detail.uncollectFailed`))}catch(e){console.error(`批量取消收藏失败`,e),y.error(S(`detail.operationFailed`))}}}function Ne(e){if(typeof window>`u`)return``;if(e.kind===`collection`)return`${window.location.origin}/collection/${e.id}`;let t=e.title?encodeURIComponent(e.title):`detail`,n=e.type===1?`/video/${e.id}/${t}`:`/post/${e.id}`;return`${window.location.origin}${n}`}function $(e){if(!U)return;let t=Ne(U);t&&m.showSharePopup({type:e,data:{id:U.id},copyUrl:t})}function Pe(){$(p.WECHAT)}function Fe(){$(p.QQ)}function Ie(){$(p.WECHAT_MOMENTS)}function Le(){if(!Se){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}!U||U.kind!==`content`||xe(U.id).then(e=>{if(e.code===0){y.success(S(`detail.uncollectSuccess`)),O([`collection-detail`,x]),W(e=>e&&{...e,isCollected:!1});return}y.error(e.message||S(`detail.uncollectFailed`))}).catch(e=>{console.error(`取消收藏失败`,e),y.error(S(`detail.operationFailed`))})}}function Re(){let e=new URLSearchParams(w.toString());e.set(`id`,x),e.set(`type`,`edit`),C.push(`/collection/create?${e.toString()}`),P(!1),M(!1)}function ze(){if(!X){if(!E||!T){y.error(S(`detail.pleaseLogin`)),D();return}if(!Te){y.error(S(`detail.defaultCollectionDeleteNotSupported`));return}R(!0),P(!1)}}async function Be(){if(!X)try{let e=await Ce(x);if(e.code===0){y.success(S(`detail.deleteSuccess`)),O([`collection-detail`,x]),O([`user-profile`,`mine`]),O([`user-profile`,`profile`,A]),I(!1),P(!1),M(!1),C.back();return}y.error(e.message||S(`detail.deleteFailed`))}catch(e){console.error(`删除合集失败`,e),y.error(S(`detail.operationFailed`))}}return v(c,{className:`flex flex-col bg-bg1 min-h-screen ${z?`pb-28`:`pb-6`}`,children:[_(de,{title:G?.title??``,onBack:()=>C.back(),rightChild:j?z?_(`button`,{type:`button`,onClick:ke,className:`px-2 py-1 text-sm text-text1`,children:S(`detail.done`)}):_(`button`,{type:`button`,onClick:De,className:`p-2`,children:_(fe,{})}):void 0}),_(c,{className:`px-4 flex items-start gap-4`,children:v(c,{className:`flex-1 flex flex-col gap-2`,children:[_(c,{className:`flex items-center justify-between`}),_(c,{className:`text-text2 text-sm break-all text-ellipsis line-clamp-1`,children:G?.description})]})}),_(c,{className:`px-4 ${z?`pb-20`:``}`,children:_(oe,{loading:k.isLoading,hasMore:!1,emptyText:S(`detail.emptyContent`),className:`divide-y divide-text1/5`,children:q.map(e=>_(pe,{...e,onOpenShare:Ee,isEditMode:z,isSelected:V.has(e.id),onToggleSelection:Ae},e.id))})}),z&&v(c,{className:`fixed bottom-0 left-0 right-0 z-10 flex items-center justify-between border-t border-text1/10 bg-bg1 px-4 py-3`,children:[v(c,{className:`flex items-center gap-2`,children:[_(te,{checked:Y,onCheckedChange:je}),_(l,{className:`text-sm text-text1`,children:S(`detail.selectAll`)})]}),_(e,{className:`rounded-full py-2.5 h-auto px-6.5`,variant:V.size>0?`default`:`outline`,disabled:V.size===0||Z,onClick:Me,children:S(Z?`detail.deleting`:`detail.delete`)})]}),v(ne,{open:N,onOpenChange:P,children:[_(ae,{className:`hidden`,children:S(`detail.collectionManageTitle`)}),_(ie,{className:`hidden`,children:S(`detail.collectionManageTitle`)}),v(re,{className:`z-[2000]`,children:[v(c,{className:`px-4 py-5`,children:[_(l,{className:`text-base font-bold text-text1 text-center `,children:S(`detail.collectionManageTitle`)}),v(c,{className:`mt-4 border-t border-text1/10`,children:[_(`button`,{className:`w-full text-left py-4 border-b border-text1/10`,onClick:Re,children:_(l,{className:`text-text1`,children:S(`detail.editCollection`)})}),_(`button`,{className:`w-full text-left py-4 border-b border-text1/10`,onClick:Oe,children:_(l,{className:`text-text1`,children:S(`detail.manageCollection`)})}),_(`button`,{className:`w-full text-left py-4 ${X?`opacity-60 cursor-not-allowed`:``}`,onClick:ze,disabled:X,children:_(l,{className:`text-destructive`,children:S(X?`detail.deleting`:`detail.deleteCollection`)})})]})]}),_(e,{className:`w-full h-auto py-4 text-lg text-text1`,size:`lg`,onClick:()=>P(!1),variant:`secondary`,children:S(`detail.cancel`)})]})]}),_(f,{isShowCollect:U?.kind===`content`&&j&&E,isCollected:U?.isCollected,open:ve,onOpenChange:M,onShareWeChat:Pe,onShareQQ:Fe,onShareMoments:Ie,onUncollect:Le}),_(ue,{open:F,onOpenChange:I,onConfirm:Be,title:S(`detail.deleteCollection`),isConfirming:X})]})}export{w as CollectionDetail};
@@ -1,5 +1,5 @@
1
1
 
2
- "use client";import{Button as e}from"../../ui/button.mjs";import{getCookie as t}from"../../../utils/common.mjs";import{pUserSendEmailCode as n,pUserSendResetPasswordEmailCode as r,pUserVerifyForgetEmailCode as i,pUserVerifyResetPasswordEmailCode as a}from"../../../service/generated/client.mjs";import{pUserRegisterByVerifyEmailCode as o}from"../../../service/register-by-verify-email-code.mjs";import{Box as s}from"../../ui/box.mjs";import{Text as c}from"../../ui/text.mjs";import{useLoginModalStore as l}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as u}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as d,useUserId as f}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as p}from"../../../assets/icons/left-arrow-icon.mjs";import{useCallback as m,useEffect as h,useMemo as g,useRef as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";function C(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function w(w){let T=S(`components.pages.login`),{email:E,onClose:D,onPassword:O}=w,{verifyStep:k,resolveLogin:A}=l(),[j,M]=v([,,,,,,].fill(``)),[N,P]=v(0),[F,I]=v(!1),[L,R]=v(60),[z,B]=v(!1),[V,H]=v(``),U=_(null),W=f(),G=d(),K=u(),q=g(()=>C(E),[E]),J=m(async()=>{if(k===`reset-password`)return await a({user_id:W,email_code:j.join(``)});if(k===`forgot-password`)return await i({email:E,email_code:j.join(``)});if(k===`register-verify`){let e=await t(`guestUserId`);return await o({email:E,email_code:j.join(``),user_id:e})}throw Error(T(`verify.invalidCode`))},[k,j,W,E,T]),Y=g(()=>j.every(e=>e!==``)&&!F,[j,F]);h(()=>{if(L<=0)return;let e=setInterval(()=>{R(e=>e-1)},1e3);return()=>clearInterval(e)},[L]),h(()=>{U.current?.focus()},[]);let X=m(e=>{let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...j],r=t.split(``),i=N;for(let e of r)i<6&&(n[i]=e,i++);M(n),P(Math.min(i,5)),H(``)},[j,N]),Z=m(e=>{if(e.key===`Backspace`){e.preventDefault();let t=[...j];j[N]?t[N]=``:N>0&&(t[N-1]=``,P(N-1)),M(t),H(``)}else e.key===`ArrowLeft`&&N>0?P(N-1):e.key===`ArrowRight`&&N<5&&P(N+1)},[j,N]),Q=m(e=>{P(e),U.current?.focus()},[]);async function $(){if(!(L>0||z))try{B(!0),k===`reset-password`?await r({user_id:W}):await n({email:E}),R(60),H(``)}finally{B(!1)}}async function ee(){if(Y)try{I(!0);let e=await J();if(k===`register-verify`){let t=e?.data;if(t?.user_id){G({token:t.token??``,expireTime:t.expire_time??0,userId:t.user_id}),x.success(T(`index.loginSuccess`)),K([`user-profile`,`mine`]),A(!0);return}}O?.(E)}catch(e){H(e.message??T(`verify.invalidCode`))}finally{I(!1)}}return b(s,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[b(s,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[y(e,{type:`button`,onClick:D,"aria-label":T(`verify.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:y(p,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),y(c,{className:`text-[14px] text-text2`})]}),b(s,{className:`px-[24px] flex flex-col mt-[15px]`,children:[b(s,{className:`flex flex-col`,children:[y(c,{className:`text-[24px] leading-[32px] font-bold`,children:T(`verify.title`)}),b(s,{className:`mt-[12px] flex items-center`,children:[b(c,{className:`text-[14px] leading-[14px] text-text1/80`,children:[T(`verify.sentTo`),` `,q]}),y(e,{type:`button`,onClick:$,disabled:L>0||z,className:`ml-[8px] rounded-[19px] !px-[8px] !py-[8px] text-[12px] leading-[12px] cursor-pointer bg-line1 text-text1/80 disabled:cursor-not-allowed`,children:L>0?`${T(`verify.resend`)} (${L}s)`:T(`verify.resend`)})]})]}),b(`form`,{className:`mt-[38px]`,onSubmit:e=>{e.preventDefault(),ee()},children:[b(s,{className:`h-14 sm:h-16 md:h-20 relative`,children:[y(`input`,{ref:U,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:X,onKeyDown:Z,className:`absolute opacity-0 pointer-events-none w-full h-full border-none outline-none bg-transparent text-base`,autoComplete:`one-time-code`}),y(s,{className:`w-full flex justify-between items-center`,children:j.map((e,t)=>y(s,{onClick:()=>Q(t),className:`
2
+ "use client";import{Button as e}from"../../ui/button.mjs";import{getCookie as t}from"../../../utils/common.mjs";import{pUserSendEmailCode as n,pUserSendResetPasswordEmailCode as r,pUserVerifyForgetEmailCode as i,pUserVerifyResetPasswordEmailCode as a}from"../../../service/generated/client.mjs";import{pUserRegisterByVerifyEmailCodeCompat as o}from"../../../service/register-by-verify-email-code.mjs";import{Box as s}from"../../ui/box.mjs";import{Text as c}from"../../ui/text.mjs";import{useLoginModalStore as l}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as u}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as d,useUserId as f}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as p}from"../../../assets/icons/left-arrow-icon.mjs";import{useCallback as m,useEffect as h,useMemo as g,useRef as _,useState as v}from"react";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{toast as x}from"sonner";import{useTranslations as S}from"next-intl";function C(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function w(w){let T=S(`components.pages.login`),{email:E,onClose:D,onPassword:O}=w,{verifyStep:k,resolveLogin:A}=l(),[j,M]=v([,,,,,,].fill(``)),[N,P]=v(0),[F,I]=v(!1),[L,R]=v(60),[z,B]=v(!1),[V,H]=v(``),U=_(null),W=f(),G=d(),K=u(),q=g(()=>C(E),[E]),J=m(async()=>{if(k===`reset-password`)return await a({user_id:W,email_code:j.join(``)});if(k===`forgot-password`)return await i({email:E,email_code:j.join(``)});if(k===`register-verify`){let e=await t(`guestUserId`);return await o({email:E,email_code:j.join(``),user_id:e})}throw Error(T(`verify.invalidCode`))},[k,j,W,E,T]),Y=g(()=>j.every(e=>e!==``)&&!F,[j,F]);h(()=>{if(L<=0)return;let e=setInterval(()=>{R(e=>e-1)},1e3);return()=>clearInterval(e)},[L]),h(()=>{U.current?.focus()},[]);let X=m(e=>{let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...j],r=t.split(``),i=N;for(let e of r)i<6&&(n[i]=e,i++);M(n),P(Math.min(i,5)),H(``)},[j,N]),Z=m(e=>{if(e.key===`Backspace`){e.preventDefault();let t=[...j];j[N]?t[N]=``:N>0&&(t[N-1]=``,P(N-1)),M(t),H(``)}else e.key===`ArrowLeft`&&N>0?P(N-1):e.key===`ArrowRight`&&N<5&&P(N+1)},[j,N]),Q=m(e=>{P(e),U.current?.focus()},[]);async function $(){if(!(L>0||z))try{B(!0),k===`reset-password`?await r({user_id:W}):await n({email:E}),R(60),H(``)}finally{B(!1)}}async function ee(){if(Y)try{I(!0);let e=await J();if(k===`register-verify`){let t=e?.data;if(t?.user_id){G({token:t.token??``,expireTime:t.expire_time??0,userId:t.user_id}),x.success(T(`index.loginSuccess`)),K([`user-profile`,`mine`]),A(!0);return}}O?.(E)}catch(e){H(e.message??T(`verify.invalidCode`))}finally{I(!1)}}return b(s,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[b(s,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[y(e,{type:`button`,onClick:D,"aria-label":T(`verify.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:y(p,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),y(c,{className:`text-[14px] text-text2`})]}),b(s,{className:`px-[24px] flex flex-col mt-[15px]`,children:[b(s,{className:`flex flex-col`,children:[y(c,{className:`text-[24px] leading-[32px] font-bold`,children:T(`verify.title`)}),b(s,{className:`mt-[12px] flex items-center`,children:[b(c,{className:`text-[14px] leading-[14px] text-text1/80`,children:[T(`verify.sentTo`),` `,q]}),y(e,{type:`button`,onClick:$,disabled:L>0||z,className:`ml-[8px] rounded-[19px] !px-[8px] !py-[8px] text-[12px] leading-[12px] cursor-pointer bg-line1 text-text1/80 disabled:cursor-not-allowed`,children:L>0?`${T(`verify.resend`)} (${L}s)`:T(`verify.resend`)})]})]}),b(`form`,{className:`mt-[38px]`,onSubmit:e=>{e.preventDefault(),ee()},children:[b(s,{className:`h-14 sm:h-16 md:h-20 relative`,children:[y(`input`,{ref:U,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:X,onKeyDown:Z,className:`absolute opacity-0 pointer-events-none w-full h-full border-none outline-none bg-transparent text-base`,autoComplete:`one-time-code`}),y(s,{className:`w-full flex justify-between items-center`,children:j.map((e,t)=>y(s,{onClick:()=>Q(t),className:`
3
3
  w-14 h-14 sm:w-16 sm:h-16 md:w-20 md:h-20 rounded-xl border-2 flex items-center justify-center cursor-pointer transition-all duration-200
4
4
  ${t===N?`border-theme3 bg-theme3`:`border-transparent bg-bg2`}
5
5
  `,children:y(c,{className:`select-none font-semibold text-2xl sm:text-3xl leading-none text-text1`,children:e})},t))})]}),y(s,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:V}),y(e,{type:`submit`,disabled:!Y,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:T(F?`verify.verifying`:`verify.nextStep`)})]})]})]})}export{w as Verify};
@@ -1,2 +1,2 @@
1
1
 
2
- "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{cn as t}from"../../../utils/cn.mjs";import{gContentGetAppChannels as n,gContentGetVideoDetail as r}from"../../../service/generated/client.mjs";import{useRouter as i}from"../../../utils/use-compatible-router.mjs";import{EmptyState as a}from"../../ui/empty.mjs";import{notifyBridgeEpisodeChanged as ee}from"../../../utils/login-modal-bridge.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{queryKey as s}from"../../../constants/query-key.mjs";import{useKeepAliveEffect as c,useKeepAliveState as l}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as u}from"../../../utils/api-collect.mjs";import te from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{VideoDetailMaterialRuntimeProvider as d}from"../../biz/business/detail/shared/runtime-context-provider.mjs";import{resolveMaterialProps as f,videoDetailMaterials as ne}from"../../biz/business/detail/shared/registry.mjs";import{DetailHero as p}from"../../biz/business/detail/shared/video-hero.mjs";import{Fragment as m,useCallback as h,useEffect as g,useMemo as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{useParams as re,useSearchParams as ie}from"next/navigation";import{useTranslations as x}from"next-intl";const S=[{id:`detail-info`,componentName:`video-detail-info`,props:{}},{id:`detail-actions`,componentName:`video-detail-actions`,props:{}},{id:`detail-recommend`,componentName:`video-detail-recommend`,props:{title:`猜你喜欢`,rows:2,columns:3,smartTagEnabled:!1,smartTagIds:[`腐剧`],showPlayCount:!0,playCountDelta:0,showEpisode:!0,enableInfinite:!1,items:[{contentId:`d6a35ba3279e6f0d`,contentName:`贺总的私宠罪妻`,titleMode:`custom`,title:`贺总的私宠罪妻`,description:`简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百`,coverMode:`upload`,coverUrl:`/truss/20260227/69a136457d10f.jpgxxx`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`b0f42fed731239a7`,contentName:`少年江湖物语`,titleMode:`custom`,title:`少年江湖物语`,description:`网剧《少年江湖物语》讲述了一个江湖中邪不压正,青春正好,有情有爱的温暖故事。剧中有魔教教主,有天下第一剑客,有身世成谜的江湖大夫,有忠心耿耿的小丫鬟,更有艳压秦淮的当红花魁,众多看似完全没有交集的人物纷纷亮相登场,搅乱江湖一池春水。`,coverMode:`content`,coverUrl:`/md-204/uploads/default/other/2024-08-26/14664d2c31e61c201a29cd4abba267c5.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`c2304e94ec0ba208`,contentName:`王的男人`,titleMode:`custom`,title:`王的男人`,description:`朝鲜第十代王燕山王君时期,艺人长生(甘宇成饰)和孔吉(李俊基饰)因为不肯加入当地的艺人团,来到京城汉阳谋生。此时暴君燕山君(郑镇荣饰)沉迷于宠妾张绿水(姜成妍饰),朝纲混乱,民不聊生。长生与孔吉二人在街头开始表演讽刺君主的喜剧,大受欢迎,却遭逮捕。后要求到王面前表演,求得一笑。结果,多亏孔吉的急中生智,燕山君才笑了出来。两人随即被留在宫中取乐,孔吉更是因为美色令王倍加宠爱。他们不停表演,大臣们却各自心怀鬼胎,导致了杀戮局面。最终,君王和艺人的命运又将如何呢?`,coverMode:`content`,coverUrl:`/md-204/resource/8c/8cb28f46831558fbeb2f34b2076c3b4e.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`c7ffc6a558ae8683`,contentName:`怒`,titleMode:`custom`,title:`怒`,description:`炎炎夏日,东京八王子郊外社区,一对夫妇惨遭杀害。事后凶手用血在墙上写下大大的“怒”字,随后逃亡,销声匿迹长达一年之久。而在此期间,三个身份不明的男子和身边的人相遇了。曾自甘堕落的爱子(宫崎葵饰)被父亲(渡边谦饰)领回海滨小镇,邂逅了不善言辞的哲也(松山研一饰)。在东京工作的同性恋优马(妻夫木聪饰)将柔情似水的直人(绫野刚饰)带回了家,他不相信对方,却又尝试去相信。随母亲搬到冲绳的小泉(广濑铃饰)跟着同学辰哉(佐久本宝饰)登上一座荒岛,在废墟中遇到了背包客田中(森山未来饰),他们短暂成为朋友,而可怕的命运突然降临泉的头上。不久之后,通缉令遍布全国,三个男子的真实身份引人生疑……本片根据吉田修一的同名原作改编。`,coverMode:`content`,coverUrl:`/md-204/resource/24/24ef267eef2c35b5e4cf12dac8b55c14.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`98217427ed96ec51`,contentName:`熔炉`,titleMode:`custom`,title:`熔炉`,description:`来自首尔的哑语美术老师仁浩(孔宥饰)来到雾津,应聘慈爱聋哑人学校。天降大雾,他意外撞车,维修时邂逅了人权组织成员柔珍(郑有美饰)。仁浩妻子早亡,8岁女儿天生哮喘由祖母照看,所以他不辞辛苦谋职养家。然而,双胞胎的校长与教导主任竟逼仁浩索贿5千万韩元。同时,仁浩逐渐发现学校笼罩着一种紧张压抑的气氛,令人窒息。有三个孩子引人关注:聪颖的金妍斗(金贤秀饰)、贪吃的陈宥利(郑仁絮饰)和弟弟自杀身亡的全民秀(白承焕饰),民秀总是满脸淤青。下课后,仁浩还听到女厕所中有呼喊与哭泣,在门卫的阻拦下他未深究。之后。他意外目睹了校长行贿警察,教导员毒打民秀,宿导溺罚妍斗的行径。一个惊天的隐秘被慢慢揭开,真相令韩国震惊……本片取材于2005年光州一所聋哑障碍人学校的真实事件,改编自韩国作家孔枝泳的同名小说。`,coverMode:`content`,coverUrl:`/md-204/resource/b4/b410ccdcd86936455b9460a9152aaa47.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`caa2b4eb4eb40de0`,contentName:`再次来寻我`,titleMode:`custom`,title:`再次来寻我`,description:`在宇回到曾经与初恋志勋相遇的303号房,这里即将被拆迁,他在房间里回忆和志勋的点点滴滴,突然被书桌上的电话所吸引,一拿起话筒听到的竟是志勋的声音!在房子主人的同意下,在宇带着电话离开了303室,在回家的途中他发现自己像走在一个陌生的地方,而对面走来的竟是已消失已久的志勋…`,coverMode:`content`,coverUrl:`/md-204/resource/2b/2b43375f2248c1a012847d4507fd21a3.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0}]}}];function ae(e,t){let n=String(e||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);return r<0?!1:n[r+1]===t}function C({detailId:u,initialInformation:C,isWebView:w=!1,materialConfig:T}){let E=x(`components.pages.videoDetail`),D=i(),O=re(),k=ie(),A=O.level,j=Array.isArray(A)?A:typeof A==`string`?[A]:[],M=j.findIndex(e=>e===`episode`),oe=M>=0?j[M+1]:j[2],N=Math.max(1,Number(oe)||1),[se,P]=l(`detail-current-series-num-${u}`,N);g(()=>{P(N)},[N,P]);let F=Math.max(1,Number(se)||1),I=Math.max(0,F-1),{data:L,isPending:R,isFetching:z,isError:B,isSuccess:V}=o(_(()=>[`video-detail`,u],[u]),async()=>u?await r({id:u}):null,{enabled:!!u}),H=_(()=>{let e=L?.data?.video;return!e||typeof e!=`object`?null:{...e,content_type:1,episode_cnt:e.links?.length||0}},[L?.data?.video]),U=C??H??null,[W,G]=l(`detail-information-${u}`,U),ce=W?.links?.[I]?.id||``,K=!!u&&!W&&(R||z),q=!u||!!W||B||V,[le,ue]=l(`info-detail-active-tab-${u}`,`video`),[J,Y]=l(`info-detail-comment-add-count-${u}`,0),[X,de]=l(`info-detail-comment-total-${u}`,void 0);g(()=>{!W&&H&&G(H)},[W,H,G]);let Z=h(e=>{G(t=>t&&{...t,...e})},[G]);c(()=>{W?.id&&W.id},[W?.id],`detail-page-report-${u}`),g(()=>{!W||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:W.id||u,author_id:W.up_user,object_type:W.content_type,object_category:W.content_type,object_tags:W.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[u,W]),g(()=>{Y(0)},[ce,Y]),_(()=>(typeof X==`number`?X:0)+J,[J,X]);let fe=h(()=>{},[!1,ue]);h(()=>{Y(e=>e+1)},[Y]),g(()=>{},[!1,fe,W?.id,k]);let Q=h(e=>{let t=Math.max(1,Math.floor(Number(e)||1));if(typeof window>`u`)return;let n=String(W?.id||u||``).trim();if(!n)return;let r=`/video/${n}/${encodeURIComponent(W?.name||``)}/episode/${t}`,{search:i,hash:a,pathname:o}=window.location,s=`${r}${i}${a}`,c=`${o}${i}${a}`,l=ae(o,n);if(c!==s){w&&ee({detailId:n,seriesNum:t,nextPath:r}),l&&typeof window.history?.replaceState==`function`?(window.history.replaceState(window.history.state,``,s),P(t)):D.replace(s,{scroll:!1});return}F!==t&&P(t)},[F,u,W?.id,W?.name,w,D,P]),$=W?.status===`1`,{data:pe}=o([s.CHANNEL],()=>n()),me=e(pe?.data),he=_(()=>{if(T!==void 0){let e=new Map(S.map(e=>[e.componentName,e]));return T.map(t=>{let n=e.get(t.componentName);return{...n,...t,props:{...n?.props??{},...t.props??{}}}})}return S},[T]),ge=_(()=>({information:W??void 0,currentSeriesNum:F,onEpisodeChange:Q,onUpdateInformation:Z,detailId:u,episodeIndex:I,isShow:!0,isWebView:w,isInformationLoading:K,isInformationResolved:q}),[F,u,I,Q,Z,W,K,q,w,!0]),_e=h(e=>{if(!W)return null;let t=ne[e.componentName];if(!t)return null;let n=t.clientComponent,r=f(t,e.props);return r.isValid?y(n,{...r.props}):y(`div`,{children:`组件配置错误`})},[W]);return b(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 ${w?``:`pt-11`}`,children:[!w&&y(`div`,{className:`fixed bg-black top-0 left-0 right-0 z-[1000]`,children:y(te,{data:{list:me}})}),y(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:b(v,{children:[W&&!$&&y(a,{type:`no-content`,text:E(`videoDetailClient.videoUnavailable`)}),W&&$&&b(v,{children:[!w&&y(p,{isVideo:!0,information:W,episodeIndex:I}),y(`div`,{id:`selectPopupPosition`,className:`w-full`}),!1,b(`div`,{className:t(`w-full`,!1),children:[y(d,{value:ge,children:he.map(e=>y(m,{children:_e(e)},e.id))}),!1]}),!1]}),!W&&y(a,{type:`no-content`,text:E(`videoDetailClient.videoDeleted`)})]})})]})}export{C as default};
2
+ "use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{cn as t}from"../../../utils/cn.mjs";import{gContentGetAppChannels as n,gContentGetVideoDetail as r}from"../../../service/generated/client.mjs";import{useRouter as i}from"../../../utils/use-compatible-router.mjs";import{EmptyState as a}from"../../ui/empty.mjs";import{notifyBridgeEpisodeChanged as ee}from"../../../utils/login-modal-bridge.mjs";import{useRequest as o}from"../../../hooks/query/use-query.mjs";import{queryKey as s}from"../../../constants/query-key.mjs";import{useKeepAliveEffect as c,useKeepAliveState as l}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as u}from"../../../utils/api-collect.mjs";import te from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{VideoDetailMaterialRuntimeProvider as d}from"../../biz/business/detail/shared/runtime-context-provider.mjs";import{resolveMaterialProps as f,videoDetailMaterials as ne}from"../../biz/business/detail/shared/registry.mjs";import{DetailHero as p}from"../../biz/business/detail/shared/video-hero.mjs";import{Fragment as m,useCallback as h,useEffect as g,useMemo as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{useParams as re,useSearchParams as ie}from"next/navigation";import{useTranslations as x}from"next-intl";const S=[{id:`detail-info`,componentName:`video-detail-info`,props:{}},{id:`detail-info-title-tags-episodes`,componentName:`video-detail-info-title-tags-episodes`,props:{}},{id:`detail-actions`,componentName:`video-detail-actions`,props:{}},{id:`detail-recommend`,componentName:`video-detail-recommend`,props:{title:`猜你喜欢`,rows:2,columns:3,smartTagEnabled:!1,smartTagIds:[`腐剧`],showPlayCount:!0,playCountDelta:0,showEpisode:!0,enableInfinite:!1,items:[{contentId:`d6a35ba3279e6f0d`,contentName:`贺总的私宠罪妻`,titleMode:`custom`,title:`贺总的私宠罪妻`,description:`简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百简介多少字是不是两百`,coverMode:`upload`,coverUrl:`/truss/20260227/69a136457d10f.jpgxxx`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`b0f42fed731239a7`,contentName:`少年江湖物语`,titleMode:`custom`,title:`少年江湖物语`,description:`网剧《少年江湖物语》讲述了一个江湖中邪不压正,青春正好,有情有爱的温暖故事。剧中有魔教教主,有天下第一剑客,有身世成谜的江湖大夫,有忠心耿耿的小丫鬟,更有艳压秦淮的当红花魁,众多看似完全没有交集的人物纷纷亮相登场,搅乱江湖一池春水。`,coverMode:`content`,coverUrl:`/md-204/uploads/default/other/2024-08-26/14664d2c31e61c201a29cd4abba267c5.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`c2304e94ec0ba208`,contentName:`王的男人`,titleMode:`custom`,title:`王的男人`,description:`朝鲜第十代王燕山王君时期,艺人长生(甘宇成饰)和孔吉(李俊基饰)因为不肯加入当地的艺人团,来到京城汉阳谋生。此时暴君燕山君(郑镇荣饰)沉迷于宠妾张绿水(姜成妍饰),朝纲混乱,民不聊生。长生与孔吉二人在街头开始表演讽刺君主的喜剧,大受欢迎,却遭逮捕。后要求到王面前表演,求得一笑。结果,多亏孔吉的急中生智,燕山君才笑了出来。两人随即被留在宫中取乐,孔吉更是因为美色令王倍加宠爱。他们不停表演,大臣们却各自心怀鬼胎,导致了杀戮局面。最终,君王和艺人的命运又将如何呢?`,coverMode:`content`,coverUrl:`/md-204/resource/8c/8cb28f46831558fbeb2f34b2076c3b4e.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`c7ffc6a558ae8683`,contentName:`怒`,titleMode:`custom`,title:`怒`,description:`炎炎夏日,东京八王子郊外社区,一对夫妇惨遭杀害。事后凶手用血在墙上写下大大的“怒”字,随后逃亡,销声匿迹长达一年之久。而在此期间,三个身份不明的男子和身边的人相遇了。曾自甘堕落的爱子(宫崎葵饰)被父亲(渡边谦饰)领回海滨小镇,邂逅了不善言辞的哲也(松山研一饰)。在东京工作的同性恋优马(妻夫木聪饰)将柔情似水的直人(绫野刚饰)带回了家,他不相信对方,却又尝试去相信。随母亲搬到冲绳的小泉(广濑铃饰)跟着同学辰哉(佐久本宝饰)登上一座荒岛,在废墟中遇到了背包客田中(森山未来饰),他们短暂成为朋友,而可怕的命运突然降临泉的头上。不久之后,通缉令遍布全国,三个男子的真实身份引人生疑……本片根据吉田修一的同名原作改编。`,coverMode:`content`,coverUrl:`/md-204/resource/24/24ef267eef2c35b5e4cf12dac8b55c14.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`98217427ed96ec51`,contentName:`熔炉`,titleMode:`custom`,title:`熔炉`,description:`来自首尔的哑语美术老师仁浩(孔宥饰)来到雾津,应聘慈爱聋哑人学校。天降大雾,他意外撞车,维修时邂逅了人权组织成员柔珍(郑有美饰)。仁浩妻子早亡,8岁女儿天生哮喘由祖母照看,所以他不辞辛苦谋职养家。然而,双胞胎的校长与教导主任竟逼仁浩索贿5千万韩元。同时,仁浩逐渐发现学校笼罩着一种紧张压抑的气氛,令人窒息。有三个孩子引人关注:聪颖的金妍斗(金贤秀饰)、贪吃的陈宥利(郑仁絮饰)和弟弟自杀身亡的全民秀(白承焕饰),民秀总是满脸淤青。下课后,仁浩还听到女厕所中有呼喊与哭泣,在门卫的阻拦下他未深究。之后。他意外目睹了校长行贿警察,教导员毒打民秀,宿导溺罚妍斗的行径。一个惊天的隐秘被慢慢揭开,真相令韩国震惊……本片取材于2005年光州一所聋哑障碍人学校的真实事件,改编自韩国作家孔枝泳的同名小说。`,coverMode:`content`,coverUrl:`/md-204/resource/b4/b410ccdcd86936455b9460a9152aaa47.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0},{contentId:`caa2b4eb4eb40de0`,contentName:`再次来寻我`,titleMode:`custom`,title:`再次来寻我`,description:`在宇回到曾经与初恋志勋相遇的303号房,这里即将被拆迁,他在房间里回忆和志勋的点点滴滴,突然被书桌上的电话所吸引,一拿起话筒听到的竟是志勋的声音!在房子主人的同意下,在宇带着电话离开了303室,在回家的途中他发现自己像走在一个陌生的地方,而对面走来的竟是已消失已久的志勋…`,coverMode:`content`,coverUrl:`/md-204/resource/2b/2b43375f2248c1a012847d4507fd21a3.jpg`,showPlayCount:!0,playCountDelta:0,showEpisode:!0}]}}];function ae(e,t){let n=String(e||``).split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`||e===`webview`);return r<0?!1:n[r+1]===t}function C({detailId:u,initialInformation:C,isWebView:w=!1,materialConfig:T}){let E=x(`components.pages.videoDetail`),D=i(),O=re(),k=ie(),A=O.level,j=Array.isArray(A)?A:typeof A==`string`?[A]:[],M=j.findIndex(e=>e===`episode`),oe=M>=0?j[M+1]:j[2],N=Math.max(1,Number(oe)||1),[se,P]=l(`detail-current-series-num-${u}`,N);g(()=>{P(N)},[N,P]);let F=Math.max(1,Number(se)||1),I=Math.max(0,F-1),{data:L,isPending:R,isFetching:z,isError:B,isSuccess:V}=o(_(()=>[`video-detail`,u],[u]),async()=>u?await r({id:u}):null,{enabled:!!u}),H=_(()=>{let e=L?.data?.video;return!e||typeof e!=`object`?null:{...e,content_type:1,episode_cnt:e.links?.length||0}},[L?.data?.video]),U=C??H??null,[W,G]=l(`detail-information-${u}`,U),ce=W?.links?.[I]?.id||``,K=!!u&&!W&&(R||z),q=!u||!!W||B||V,[le,ue]=l(`info-detail-active-tab-${u}`,`video`),[J,Y]=l(`info-detail-comment-add-count-${u}`,0),[X,de]=l(`info-detail-comment-total-${u}`,void 0);g(()=>{!W&&H&&G(H)},[W,H,G]);let Z=h(e=>{G(t=>t&&{...t,...e})},[G]);c(()=>{W?.id&&W.id},[W?.id],`detail-page-report-${u}`),g(()=>{!W||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:W.id||u,author_id:W.up_user,object_type:W.content_type,object_category:W.content_type,object_tags:W.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[u,W]),g(()=>{Y(0)},[ce,Y]),_(()=>(typeof X==`number`?X:0)+J,[J,X]);let fe=h(()=>{},[!1,ue]);h(()=>{Y(e=>e+1)},[Y]),g(()=>{},[!1,fe,W?.id,k]);let Q=h(e=>{let t=Math.max(1,Math.floor(Number(e)||1));if(typeof window>`u`)return;let n=String(W?.id||u||``).trim();if(!n)return;let r=`/video/${n}/${encodeURIComponent(W?.name||``)}/episode/${t}`,{search:i,hash:a,pathname:o}=window.location,s=`${r}${i}${a}`,c=`${o}${i}${a}`,l=ae(o,n);if(c!==s){w&&ee({title:W?.title||``,detailId:n,seriesNum:t,nextPath:r}),l&&typeof window.history?.replaceState==`function`?(window.history.replaceState(window.history.state,``,s),P(t)):D.replace(s,{scroll:!1});return}F!==t&&P(t)},[F,u,W?.id,W?.name,W?.title,w,D,P]),$=W?.status===`1`,{data:pe}=o([s.CHANNEL],()=>n()),me=e(pe?.data),he=_(()=>{if(T!==void 0){let e=new Map(S.map(e=>[e.componentName,e]));return T.map(t=>{let n=e.get(t.componentName);return{...n,...t,props:{...n?.props??{},...t.props??{}}}})}return S},[T]),ge=_(()=>({information:W??void 0,currentSeriesNum:F,onEpisodeChange:Q,onUpdateInformation:Z,detailId:u,episodeIndex:I,isShow:!0,isWebView:w,isInformationLoading:K,isInformationResolved:q}),[F,u,I,Q,Z,W,K,q,w,!0]),_e=h(e=>{if(!W)return null;let t=ne[e.componentName];if(!t)return null;let n=t.clientComponent,r=f(t,e.props);return r.isValid?y(n,{...r.props}):y(`div`,{children:`组件配置错误`})},[W]);return b(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 ${w?``:`pt-11`}`,children:[!w&&y(`div`,{className:`fixed bg-black top-0 left-0 right-0 z-[1000]`,children:y(te,{data:{list:me}})}),y(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:b(v,{children:[W&&!$&&y(a,{type:`no-content`,text:E(`videoDetailClient.videoUnavailable`)}),W&&$&&b(v,{children:[!w&&y(p,{isVideo:!0,information:W,episodeIndex:I}),y(`div`,{id:`selectPopupPosition`,className:`w-full`}),!1,b(`div`,{className:t(`w-full`,!1),children:[y(d,{value:ge,children:he.map(e=>y(m,{children:_e(e)},e.id))}),!1]}),!1]}),!W&&y(a,{type:`no-content`,text:E(`videoDetailClient.videoDeleted`)})]})})]})}export{C as default};