@funhub/platform 0.1.74 → 0.1.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/biz/business/image-text-recommend/server.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/pages/edit/page.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/button.d.mts +1 -1
- package/dist/components/ui/image.d.mts +4 -4
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{pContentBatchGetVideoDetail as e,pContentGetPopularVideoList as t}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as n,pContentGetPopularVideoListKey as r}from"../../../../service/generated/tanstack.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as i,getImageTextRecommendFixedIds as a,getImageTextRecommendLayoutTags as o}from"../../../../hooks/image-text-recommend.mjs";import{HydrationBoundary as s}from"../../../../hooks/query/hydration-boundary.mjs";import{buildSmartPopularQuery as c,buildStableChosenTags as l}from"./shared/query.mjs";import{ImageTextRecommendClient as u}from"./client.mjs";import{jsx as d}from"react/jsx-runtime";const f=[];async function p(p){let{mode:m=`renderer`,...h}=p,g=h.items??f,_=h.layout,v=[],y=!!_?.enabled,b=a(g,y),x=o(_),S=g?.length??0;if(m===`renderer`&&g?.length)try{if(y){let e=c(l(x,S),S),n=await t(e);v.push({queryKey:r(e),queryFn:()=>Promise.resolve(n)})}else if(b.length>0){let t={ids:b.length<=i?b:b.slice(0,i)},r=await e(t);v.push({queryKey:n(t),queryFn:()=>Promise.resolve(r)})}}catch(e){console.warn(`[image-text-recommend] server prefetch failed:`,e)}return d(s,{prefetch:v,children:d(u,{...h,mode:m})})}export{p as ImageTextRecommendServer};
|
|
2
|
+
import{pContentBatchGetVideoDetail as e,pContentGetPopularVideoList as t}from"../../../../service/generated/client.mjs";import{pContentBatchGetVideoDetailKey as n,pContentGetPopularVideoListKey as r}from"../../../../service/generated/tanstack.mjs";import{IMAGE_TEXT_RECOMMEND_FIXED_BATCH_SIZE as i,getImageTextRecommendFixedIds as a,getImageTextRecommendLayoutTags as o}from"../../../../hooks/image-text-recommend.mjs";import{HydrationBoundary as s}from"../../../../hooks/query/hydration-boundary.mjs";import{buildSmartPopularQuery as c,buildStableChosenTags as l}from"./shared/query.mjs";import{ImageTextRecommendClient as u}from"./client.mjs";import{jsx as d}from"react/jsx-runtime";const f=[];async function p(p){let{mode:m=`renderer`,...h}=p,g=h.items??f,_=h.layout,v=[],y=!!_?.enabled,b=a(g,y),x=o(_),S=g?.length??0;if(m===`renderer`&&g?.length)try{if(y){let e=c(l(x,S),S),n=await t(e);v.push({queryKey:r(e),queryFn:()=>Promise.resolve(n)})}else if(b.length>0){let t={ids:b.length<=i?b:b.slice(0,i)},r=await e(t);console.log(`res`,r),v.push({queryKey:n(t),queryFn:()=>Promise.resolve(r)})}}catch(e){console.warn(`[image-text-recommend] server prefetch failed:`,e)}return d(s,{prefetch:v,children:d(u,{...h,mode:m})})}export{p as ImageTextRecommendServer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{usePathname as o,useRouter as s}from"next/navigation";const c=[];function l(l){let{items:u=c,mode:d=`renderer`}=l,f=s(),p=o(),m=r(()=>d===`editor
|
|
2
|
+
"use client";import{Image as e}from"../../../ui/image.mjs";import{Box as t}from"../../../ui/box.mjs";import{Text as n}from"../../../ui/text.mjs";import{useMemo as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{usePathname as o,useRouter as s}from"next/navigation";const c=[];function l(l){let{items:u=c,mode:d=`renderer`}=l,f=s(),p=o(),m=r(()=>{if(d===`editor`)return 0;let e=u.findIndex(e=>!!(e.domainId===`home`&&p===`/`||e.domainId===`mine`&&p.includes(`/mine`)));return e>=0?e:0},[u,p,d]),h=e=>{if(d!==`editor`)if(e.configType===1)switch(e.functionPageType){case`搜索`:f.push(`/search`);break;case`个人中心`:f.push(`/user/mine`);break;case`内容列表`:f.push(`/video-list?tags=${e.tags}&title=${e.title}`);break;default:f.push(`/`)}else{let t=(e.domainId??``).toString().trim();f.push(t?`/domain/${t}`:`/`)}};if(!u||u.length===0)return null;let g=u.some(e=>e.label!=null&&String(e.label).trim()!==``);return i(t,{className:`fixed bottom-0 left-0 right-0 z-50 safe-area-bottom bg-bg1 border-t border-line1 backdrop-blur-[2px] py-3 shadow-[0px_-4px_10px_0px_rgba(0,0,0,0.02)]`,children:i(t,{className:`flex w-full items-center`,children:u.map((r,o)=>{let s=m===o,c=r.icon;return s&&r.activeIcon&&(c=r.activeIcon),a(t,{className:`flex min-w-0 flex-1 cursor-pointer flex-col items-center justify-center ${g?`gap-1`:``}`,onClick:()=>h(r),children:[i(t,{className:`relative size-[22px] shrink-0`,children:c?i(e,{src:c,alt:typeof r.label==`string`?r.label:``,fill:!0,className:`object-contain`}):i(t,{className:`size-full rounded-sm ${s?`bg-theme5`:`bg-text3`}`})}),g&&i(n,{className:`truncate text-center text-[10px] leading-[10px] font-medium min-w-0 max-w-full px-0.5 ${s?`text-theme5`:`text-text2`}`,children:r.label??``})]},o)})})})}export{l as TabBarClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as ee}from"../../../service/generated/client.mjs";import{uploadFile as te}from"../../../utils/upload-file.mjs";import{Avatar as ne,AvatarFallback as re,AvatarImage as ie}from"../../ui/avatar.mjs";import{Box as r}from"../../ui/box.mjs";import{InputGroup as i,InputGroupAddon as a,InputGroupTextarea as
|
|
2
|
+
"use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as ee}from"../../../service/generated/client.mjs";import{uploadFile as te}from"../../../utils/upload-file.mjs";import{Avatar as ne,AvatarFallback as re,AvatarImage as ie}from"../../ui/avatar.mjs";import{Box as r}from"../../ui/box.mjs";import{InputGroup as i,InputGroupAddon as a,InputGroupTextarea as o}from"../../ui/input-group.mjs";import{Field as s,FieldLabel as c}from"../../ui/field.mjs";import{Text as l}from"../../ui/text.mjs";import{useDeleteRequest as ae,useMutation as oe,useRequest as u}from"../../../hooks/query/use-query.mjs";import{HeaderNav as se}from"../../common/header-nav/client.mjs";import{PickerDrawer as d}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ce}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as le}from"../../common/image-crop-modal/image-crop-modal.mjs";import{useEffect as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{useTranslations as ue}from"next-intl";import{produce as de}from"immer";const fe={0:`secret`,1:`male`,2:`female`},v={male:1,female:2,secret:0},y=[`image/jpeg`,`image/png`],pe=/^[\u4E00-\u9FFF\w.-]+$/;function me(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return y.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function b(e){return e?v[e]===void 0?fe[e]??`secret`:e:`secret`}function x(e){if(!e)return;if(v[e]!==void 0)return v[e];let t=Number(e);return Number.isNaN(t)?void 0:t}function S(e){return{nickname:e?.nick_name??``,gender:b(e?.gender?.toString()),signature:e?.signature??``,avatar:e?.avatar??``}}function C(e){if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}function w({id:fe}){let v=ue(`components.pages.edit`),{userId:y,userInfo:b,setUserInfo:w}=e(),T=fe??y,E=ae(),he={male:v(`page.genderMale`),female:v(`page.genderFemale`),secret:v(`page.genderSecret`)},D=p(null),O=p(null),k=p(null),[A,j]=m(()=>S()),[M,N]=m(!1),[ge,P]=m(!1),[F,I]=m(``),[L,R]=m(!1),[z,B]=m(``),[_e,V]=m(!1),[H,U]=m(`secret`),[W,G]=m(!1),[K,q]=m(``),ve={code:0,message:``,data:{}},ye={code:0,message:``,data:{}},{data:be,isLoading:xe}=u([`user-edit-info`,T],()=>T?t({user_id:T}):Promise.resolve(ve)),{data:Se}=u([`user-info-basic`,T],()=>T?n({user_id:T}):Promise.resolve(ye)),{mutateAsync:Ce,isPending:we}=oe(async e=>ee(e)),J=xe||we,Te=Se?.data?.display_id||b?.display_id||`--`,Y=A.gender||`secret`,Ee=J||z.trim()===A.nickname,De=J||H===Y,Oe=J||K===A.signature;f(()=>{let e=be?.data;e&&j(S(e))},[be]),f(()=>{if(!L)return;let e=window.setTimeout(()=>{C(O.current)},250);return()=>{window.clearTimeout(e)}},[L]),f(()=>{if(!W)return;let e=window.setTimeout(()=>{C(k.current)},250);return()=>{window.clearTimeout(e)}},[W]),f(()=>()=>{F&&URL.revokeObjectURL(F)},[F]);function X(e,t){j(de(n=>{n[e]=t}))}function ke(){F&&(URL.revokeObjectURL(F),I(``))}function Ae(){T&&(E([`user-edit-info`,T]),E([`user-info-basic`,T]),E([`user-profile`,`mine`]),E([`user-profile`,`mine`,T]),E([`user-profile`,`profile`,T]))}function Z(e){!T||T!==y||w({...b,user_id:T,...e})}function je(e){return{nick_name:e.nickname||void 0,avatar:e.avatar||void 0,signature:e.signature||void 0,gender:x(e.gender)}}async function Q(e){if(!T)return _.error(v(`page.userNotFound`)),!1;let t=je({...A,...e});try{return await Ce({user_id:T,...t}),Ae(),!0}catch(e){return console.error(`更新用户信息失败`,e),_.error(v(`page.updateFailed`)),!1}}function Me(){J||M||D.current?.click()}function Ne(e){let t=e.target.files?.[0];if(t){if(!me(t)){_.error(v(`page.imageTypeInvalid`)),e.target&&(e.target.value=``);return}I(URL.createObjectURL(t)),P(!0),e.target&&(e.target.value=``)}}async function Pe(e){try{N(!0);let t=await te(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);if(!await Q({avatar:t.objectKey}))return;X(`avatar`,t.objectKey),Z({avatar:t.objectKey}),$(),_.success(v(`page.avatarUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),_.error(v(`page.avatarUploadFailed`))}finally{N(!1)}}function $(){P(!1),ke()}function Fe(){J||(B(A.nickname),R(!0))}function Ie(e){let t=e.target.value;t.length>24||B(t)}function Le(e){return e?e.length<2?v(`page.nicknameTooShort`):pe.test(e)?``:v(`page.nicknameInvalidChars`):v(`page.nicknameRequired`)}async function Re(e){if(Ee)return!1;let t=e.trim(),n=Le(t);return n?(_.error(n),!1):await Q({nickname:t})?(X(`nickname`,t),Z({nick_name:t}),B(t),_.success(v(`page.nicknameUpdateSuccess`)),!0):!1}function ze(){J||(U(Y),V(!0))}function Be(){V(!1)}function Ve(e){U(e)}async function He(e){let t=e||H||`secret`;if(t===Y||!await Q({gender:t}))return!1;let n=x(t);return X(`gender`,t),Z({gender:n}),U(t),_.success(v(`page.genderUpdateSuccess`)),!0}function Ue(){J||(q(A.signature),G(!0))}function We(e){let t=e.target.value;t.length>100||q(t)}function Ge(e){let t=e.trim();return t.length>0&&t.length<2?v(`page.signatureTooShort`):``}async function Ke(e){if(Oe)return!1;let t=Ge(e);return t?(_.error(t),!1):await Q({signature:e})?(X(`signature`,e),Z({signature:e}),q(e),_.success(v(`page.signatureUpdateSuccess`)),!0):!1}return g(r,{className:`bg-bg2 !min-h-screen`,children:[h(se,{className:`!bg-bg2`,title:v(`page.title`)}),g(r,{onClick:Me,className:`flex bg-bg2 flex-col py-3 items-center justify-center gap-3`,children:[h(`input`,{ref:D,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:Ne}),g(ne,{className:`w-21 h-21`,children:[h(ie,{src:A.avatar}),h(re,{})]}),h(l,{className:`text-sm text-text2`,children:xe?v(`page.loading`):M?v(`page.avatarUploading`):`${Te}`})]}),g(r,{className:`pb-3`,children:[h(s,{className:`bg-bg2 px-3 cursor-pointer`,onClick:Fe,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(c,{children:v(`page.label`)}),h(l,{className:`text-text2 text-sm text-right max-w-[65%] line-clamp-1 text-ellipsis`,children:A.nickname||v(`page.nicknamePlaceholder`)})]})}),h(s,{className:`!bg-bg2 px-3 border-none cursor-pointer`,onClick:ze,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(c,{children:v(`page.genderLabel`)}),h(l,{className:`text-text2 text-sm`,children:he[Y]||v(`page.genderSecret`)})]})}),h(`div`,{className:`h-2 bg-bg1`}),h(s,{className:`border-none px-3 bg-bg2! mt-2 cursor-pointer`,onClick:Ue,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(c,{children:v(`page.signatureLabel`)}),h(l,{className:`text-text2 text-sm text-right max-w-[65%] line-clamp-1 text-ellipsis`,children:A.signature||v(`page.signaturePlaceholder`)})]})})]}),h(d,{open:L,onClose:()=>R(!1),title:v(`page.label`),confirmText:v(`page.submit`),onConfirm:e=>Re(String(e)),confirmDisabled:Ee,children:({onValueChange:e})=>h(r,{className:`px-4 py-4 min-h-[230px]`,children:g(i,{children:[h(o,{ref:O,className:`!bg-bg1 p-2.5`,rows:4,maxLength:24,placeholder:v(`page.nicknamePlaceholder`),value:z,onChange:t=>{Ie(t),e(t.target.value)},disabled:J}),h(a,{className:`!bg-bg1`,align:`block-end`,children:h(`div`,{className:`text-right w-full`,children:g(`span`,{className:`text-xs`,children:[z.length,`/`,24]})})})]})})}),h(ce,{open:_e,onClose:Be,value:H,onValueChange:Ve,onConfirm:He,confirmDisabled:De}),h(d,{open:W,onClose:()=>G(!1),title:v(`page.signatureLabel`),confirmText:v(`page.submit`),onConfirm:e=>Ke(String(e)),confirmDisabled:Oe,children:({onValueChange:e})=>h(r,{className:`px-4 py-4 min-h-[230px]`,children:g(i,{children:[h(o,{ref:k,className:`!bg-bg1 p-2.5`,rows:4,maxLength:100,placeholder:v(`page.signaturePlaceholder`),value:K,onChange:t=>{We(t),e(t.target.value)},disabled:J}),h(a,{className:`!bg-bg1`,align:`block-end`,children:h(`div`,{className:`text-right w-full`,children:g(`span`,{className:`text-xs`,children:[K.length,`/`,100]})})})]})})}),h(le,{open:ge,onClose:$,imageSrc:F,onConfirm:Pe,cropShape:`round`})]})}export{w as EditClient};
|
|
@@ -6,7 +6,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
|
|
|
6
6
|
//#region components/ui/badge.d.ts
|
|
7
7
|
/** badgeVariants 工具定义。 */
|
|
8
8
|
declare const badgeVariants: (props?: ({
|
|
9
|
-
variant?: "default" | "link" | "
|
|
9
|
+
variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
10
10
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
11
11
|
/** Badge 组件。 */
|
|
12
12
|
declare function Badge({
|
|
@@ -7,7 +7,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
|
|
|
7
7
|
//#region components/ui/button.d.ts
|
|
8
8
|
/** buttonVariants 工具定义。 */
|
|
9
9
|
declare const buttonVariants: (props?: ({
|
|
10
|
-
variant?: "default" | "link" | "
|
|
10
|
+
variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
11
11
|
size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
13
13
|
/** Button 组件属性。 */
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
-
import
|
|
4
|
+
import NextImage from "next/image";
|
|
5
5
|
|
|
6
6
|
//#region components/ui/image.d.ts
|
|
7
7
|
/** BaseImageProps 属性定义。 */
|
|
8
|
-
type BaseImageProps = Omit<React.ComponentPropsWithoutRef<typeof
|
|
8
|
+
type BaseImageProps = Omit<React.ComponentPropsWithoutRef<typeof NextImage>, 'className' | 'src' | 'alt' | 'width' | 'height' | 'loading' | 'priority' | 'fill' | 'style'>;
|
|
9
9
|
type CommonImageProps = BaseImageProps & {
|
|
10
10
|
/** 图片地址,支持普通 URL、默认资源路径和加密地址。 */src: string; /** 图片替代文本。 */
|
|
11
11
|
alt?: string; /** 图片类名。 */
|
|
@@ -27,6 +27,6 @@ type ImagePropsWithSize = CommonImageProps & {
|
|
|
27
27
|
/** ImageProps 属性定义。 */
|
|
28
28
|
type ImageProps = ImagePropsWithFill | ImagePropsWithSize;
|
|
29
29
|
/** 图片组件:支持 bnc 解密、默认资源域名拼接与错误占位。 */
|
|
30
|
-
declare function Image
|
|
30
|
+
declare function Image(props: ImageProps): react_jsx_runtime0.JSX.Element;
|
|
31
31
|
//#endregion
|
|
32
|
-
export { BaseImageProps, CommonImageProps, Image
|
|
32
|
+
export { BaseImageProps, CommonImageProps, Image, ImageProps, ImagePropsWithFill, ImagePropsWithSize };
|