@funhub/platform 0.1.139 → 0.1.141
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/basics/fullscreen-feed/runtime/client.mjs +1 -1
- package/dist/components/biz/business/comment/reply-detail.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/registry.d.mts +4 -12
- package/dist/components/biz/business/detail/shared/registry.mjs +1 -1
- package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
- package/dist/components/biz/business/detail/shared/use-video-detail-webview-bridge.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-actions/material.d.mts +1 -1
- package/dist/components/biz/business/detail/video-detail-info/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-info/material.d.mts +2 -2
- package/dist/components/biz/business/detail/video-detail-info/schema.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-info/server.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-info-title-tags-episodes/material.d.mts +2 -2
- package/dist/components/biz/business/detail/video-detail-player/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/material.d.mts +2 -2
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/marquee/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
- package/dist/components/biz/business/search-bar/variants/detail-search-bar/runtime/client.mjs +1 -1
- package/dist/components/biz/business/search-history/client.mjs +1 -1
- package/dist/components/biz/business/search-input/client.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/biz/business/text-recommend/client.mjs +1 -1
- package/dist/components/common/at-element/index.mjs +1 -1
- package/dist/components/common/blocked-dialog/blocked-dialog.mjs +1 -1
- package/dist/components/common/funhub-provider/funhub-provider.mjs +1 -1
- package/dist/components/common/header-nav/client.mjs +1 -1
- package/dist/components/common/info-card/card-header.mjs +1 -1
- package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -1
- package/dist/components/common/tab-bar/index.mjs +1 -1
- package/dist/components/pages/(follow)/_components/interaction-tabs/index.mjs +1 -1
- package/dist/components/pages/(follow)/_components/user-list/index.mjs +1 -1
- package/dist/components/pages/collection-create/form.mjs +1 -1
- package/dist/components/pages/collection-detail/detail.mjs +1 -1
- package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
- package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
- package/dist/components/pages/home/client.mjs +1 -1
- package/dist/components/pages/login/auth-guard.mjs +1 -1
- package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
- package/dist/components/pages/publish/components/collection.mjs +1 -1
- package/dist/components/pages/publish/components/header.mjs +1 -1
- package/dist/components/pages/publish/page-client.mjs +1 -1
- package/dist/components/pages/search/page-client.mjs +1 -1
- package/dist/components/pages/search/top-header.mjs +1 -1
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/settings/_components/settings.mjs +1 -1
- package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-client.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/button.d.mts +2 -2
- package/dist/components/ui/image.d.mts +4 -4
- package/dist/components/ui/link.mjs +1 -1
- package/dist/hooks/use-card-decoration.mjs +1 -1
- package/dist/hooks/use-content-operate.mjs +1 -1
- package/dist/materials.d.mts +1 -3
- package/dist/materials.mjs +1 -1
- package/dist/utils/login-modal-bridge.mjs +1 -1
- package/dist/utils.d.mts +5 -6
- package/dist/utils.mjs +1 -1
- package/package.json +28 -28
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/client.d.mts +0 -12
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/client.mjs +0 -2
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/index.d.mts +0 -5
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/material.d.mts +0 -17
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/material.mjs +0 -2
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/schema.d.mts +0 -23
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/schema.mjs +0 -2
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/server.d.mts +0 -11
- package/dist/components/biz/business/detail/video-detail-player-bridge-only/server.mjs +0 -2
- package/dist/utils/use-compatible-router.d.mts +0 -26
- package/dist/utils/use-compatible-router.mjs +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Button as e}from"../../ui/button.mjs";import{pContentGetNewstVideoList as t,pContentGetPopularVideoList as n}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as r,pContentGetPopularVideoListKey as i}from"../../../service/generated/tanstack.mjs";import{
|
|
2
|
+
"use client";import{Button as e}from"../../ui/button.mjs";import{pContentGetNewstVideoList as t,pContentGetPopularVideoList as n}from"../../../service/generated/client.mjs";import{pContentGetNewstVideoListKey as r,pContentGetPopularVideoListKey as i}from"../../../service/generated/tanstack.mjs";import{Box as a}from"../../ui/box.mjs";import{InfiniteScroll as o}from"../../ui/infinite-scroll.mjs";import{Text as s}from"../../ui/text.mjs";import{usePaginated as c}from"../../../hooks/query/use-query.mjs";import l from"../../../assets/icons/left_arrow.mjs";import{getNextVideoListPageParam as u,resolveNextCursor as d}from"./types.mjs";import{VideoListItemComponent as f}from"./video-list-item.mjs";import{useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import _ from"next/link";import{useRouter as v}from"next/navigation";const y=[];function b({title:b=`列表页`,tags:x=y}){let S=v(),[C,w]=m(`hot`),T={page_size:10,tags:x.length?x:void 0},{data:E,fetchNextPage:D,hasNextPage:O}=c({key:C===`hot`?i(T):r(T),queryFn:async e=>{let r={page_size:10,cursor:e||void 0,tags:x.length?x:void 0},i=(C===`hot`?await n(r):await t(r)).data;return{list:i?.videos??[],nextCursor:d(i)}},getNextPageParam:u,initialPageParam:``}),k=p(()=>E?.pages?.flatMap(e=>e.list)??[],[E?.pages]);function A(){S.back()}let j=p(()=>k.map(e=>{let t=e.id??e.mid??``;return h(_,{href:`/video/${t}/${e.name??``}`,children:h(f,{item:e})},t)}),[k]);return g(a,{as:`main`,className:`min-h-[100dvh] bg-bg1`,children:[g(a,{className:`fixed top-0 left-0 right-0 z-20 bg-bg1`,children:[g(a,{as:`header`,className:`flex items-center gap-2 px-4 py-3`,children:[h(l,{className:`w-[16px] h-[16px]`,onClick:A}),h(s,{as:`h1`,className:`flex-1 min-w-0 flex justify-center overflow-hidden text-[18px] pr-[16px]`,children:h(s,{className:`block max-w-full truncate`,children:b})})]}),g(a,{as:`nav`,className:`px-4 pb-2 flex gap-2`,children:[h(e,{type:`button`,onClick:()=>w(`hot`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`hot`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最热`}),h(e,{type:`button`,onClick:()=>w(`latest`),className:`h-[30px] px-[12px] text-[14px] rounded-[50px] ${C===`latest`?`bg-theme5 text-text1`:`bg-transparent text-text2`}`,children:`最新`})]})]}),h(o,{loadMore:()=>D().then(()=>void 0),hasMore:O,threshold:300,className:`pt-[88px]`,children:h(a,{className:`grid grid-cols-2 gap-3 p-4`,children:j})})]})}export{b as default};
|
|
@@ -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?: "link" | "default" | "destructive" | "
|
|
9
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
10
10
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
11
11
|
/** Badge 组件。 */
|
|
12
12
|
declare function Badge({
|
|
@@ -7,8 +7,8 @@ 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?: "link" | "default" | "destructive" | "
|
|
11
|
-
size?: "default" | "xs" | "sm" | "
|
|
10
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
11
|
+
size?: "default" | "xs" | "sm" | "icon-xs" | "icon-sm" | "icon" | "lg" | "icon-lg" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
13
13
|
/** Button 组件属性。 */
|
|
14
14
|
type ButtonProps = Button.Props & VariantProps<typeof buttonVariants> & {
|
|
@@ -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 };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import"react";import{jsx as e}from"react/jsx-runtime";import t from"next/link";function n({href:n,children:r,className:i=``,webviewNavMode:a=`auto`,...o}){let s=i.trim(),c=a===`auto`?void 0:a;function l(e){
|
|
2
|
+
import"react";import{jsx as e}from"react/jsx-runtime";import t from"next/link";function n({href:n,children:r,className:i=``,webviewNavMode:a=`auto`,...o}){let s=i.trim(),c=a===`auto`?void 0:a;function l(e){typeof window>`u`||window.isWebview===!0&&a!==`spa`&&(e?.preventDefault?.(),window.location.href=n)}return e(t,{href:n,className:s,"data-webview-nav":c,...o,onClick:l,children:r})}export{n as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{formatVideoDuration as e}from"../utils/tools.mjs";import{useCallback as t}from"react";function n(){let n=t(e=>0,[]),r=t(e=>{switch(e){case 1:return`新剧`;case 2:return`热门`;default:return null}},[]),i=t(e=>{switch(e){case 1:return`linear-gradient( 270deg, #FD4C5E 0%, #F05D19 100%)`;case 2:return`linear-gradient( 180deg, #FFBB00 0%, #FF9500 100%)`;default:return`transparent`}},[]),a=t(e=>e.is_more_link===`y`&&e.links?.length||0,[]),o=t=>{if(t.content_type!==0)return``;if(t.is_more_link!==`y`)return e(Number(t.duration||0));let n=a(t);return t.update_status===`1`?`${n}集全`:`更新至${n}集`},s=t(e=>e.content_type===0?e.is_more_link===`y`?`剧集`:`电影`:`帖子`,[]);return{getSuperscript:n,getSuperscriptText:r,getSuperscriptBackground:i,getVideoDisplayText:o,handleClickJump:t(({information:e,toLink:t=!1,router:n})=>{let r=e.id,i
|
|
2
|
+
"use client";import{formatVideoDuration as e}from"../utils/tools.mjs";import{useCallback as t}from"react";function n(){let n=t(e=>0,[]),r=t(e=>{switch(e){case 1:return`新剧`;case 2:return`热门`;default:return null}},[]),i=t(e=>{switch(e){case 1:return`linear-gradient( 270deg, #FD4C5E 0%, #F05D19 100%)`;case 2:return`linear-gradient( 180deg, #FFBB00 0%, #FF9500 100%)`;default:return`transparent`}},[]),a=t(e=>e.is_more_link===`y`&&e.links?.length||0,[]),o=t=>{if(t.content_type!==0)return``;if(t.is_more_link!==`y`)return e(Number(t.duration||0));let n=a(t);return t.update_status===`1`?`${n}集全`:`更新至${n}集`},s=t(e=>e.content_type===0?e.is_more_link===`y`?`剧集`:`电影`:`帖子`,[]);return{getSuperscript:n,getSuperscriptText:r,getSuperscriptBackground:i,getVideoDisplayText:o,handleClickJump:t(({information:e,toLink:t=!1,router:n})=>{let r=e.id,i=e.content_type===0?`video`:`post`;t?window.location.href=`/${i}/${r}`:n?.push(`/${i}/${r}`)},[]),getTypeDescription:s,getHorizontalHoCoverImageUrl:t(e=>e.img_x||e.preview_images?.[0]||e.img_y||``,[]),getVerticalHoCoverImageUrl:t(e=>e.img_y||e.preview_images?.[0]||e.img_x||``,[]),getTitleText:t(e=>e.name||``,[]),getSeriesNumTotal:a,getCalculationScore:t(e=>{let t=Number(e.score||0),n=(t>10?t/10:t)/2,r=Math.floor(n),i=n-r;return i<.25?r:i<.75?r+.5:r+1},[])}}export{n as useCardDecoration};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{useUserStore as e}from"../store/modules/user-store.mjs";import{gCommunityGetUserCollections as t,pCommunityAddContentToCollection as n,pInteractionBatchQueryContentInteractions as r,pInteractionCancelDislike as i,pInteractionCancelLike as a,pInteractionDislike as o,pInteractionLike as s,pInteractionRemoveCollect as c}from"../service/generated/client.mjs";import{
|
|
2
|
+
import{useUserStore as e}from"../store/modules/user-store.mjs";import{gCommunityGetUserCollections as t,pCommunityAddContentToCollection as n,pInteractionBatchQueryContentInteractions as r,pInteractionCancelDislike as i,pInteractionCancelLike as a,pInteractionDislike as o,pInteractionLike as s,pInteractionRemoveCollect as c}from"../service/generated/client.mjs";import{useLoginModalStore as l}from"../store/modules/login-modal-store.mjs";import u from"../components/common/collection-popup/index.mjs";import d from"../components/common/share-popup/share-popup.mjs";import{useInteractionAnimation as f}from"./use-interaction-animation.mjs";import{useCallback as p,useEffect as m,useMemo as h,useState as g}from"react";import{toast as _}from"sonner";import{usePathname as v,useRouter as y,useSearchParams as b}from"next/navigation";function x(e){let t=Number(e);if(Number.isFinite(t))return t===0?1:t}function S(){let t=e.getState().userId||e.getState().userInfo?.userId;if(!t){let{open:e}=l.getState();return e(),null}return t}async function C(t,n){try{let i=e.getState().userId||e.getState().userInfo?.userId;if(!i)return console.warn(`用户未登录,无法查询交互状态`),null;let a=await r({app_id:0,user_id:i,content_ids:t,content_type:n});return a.code===0?a.data:(console.error(`查询交互状态失败:`,a.message),null)}catch(e){return console.error(`查询交互状态异常:`,e),null}}async function ee(e,t){try{let n=S();if(!n)return{success:!1,message:`请先登录`};let r=await s({user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`点赞失败`}}catch(e){return console.error(`点赞失败:`,e),{success:!1,message:`点赞失败`}}}async function w(e,t){try{let n=S();if(!n)return{success:!1,message:`请先登录`};let r=await a({user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`取消点赞失败`}}catch(e){return console.error(`取消点赞失败:`,e),{success:!1,message:`取消点赞失败`}}}async function T(e,t){try{let n=S();if(!n)return{success:!1,message:`请先登录`};let r=await o({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`点踩失败`}}catch(e){return console.error(`点踩异常:`,e),{success:!1,message:`点踩异常`}}}async function E(e,t){try{let n=S();if(!n)return{success:!1,message:`请先登录`};let r=await i({app_id:0,user_id:n,id:e,content_type:t});return r.code===0?{success:!0,data:r.data}:{success:!1,message:r.message||`取消点踩失败`}}catch(e){return console.error(`取消点踩异常:`,e),{success:!1,message:`取消点踩异常`}}}function D({id:r,isLike:i,isDislike:a,isCollect:o,likeCnt:s,dislikeCnt:S,contentType:C,animationClasses:D,copyUrl:O,prefetchDefaultCollection:k=!1}){let{isLogin:A,userInfo:j,userId:M}=e(),N=y(),P=v(),F=b()?.toString()||``,[I,L]=g(void 0),R=D?.like||`like-shake-animation`,z=D?.dislike||`dislike-shake-animation`,B=h(()=>String(M||j?.userId||``),[M,j?.userId]);m(()=>{L(void 0)},[B]);let[V,H]=g(!1),[U,W]=g(!1);m(()=>{d.clear(),u.clear()},[P,F]),m(()=>()=>{d.clear(),u.clear()},[]);let G=p(async()=>{if(!A||!B)return null;try{let e=await t({page:1,page_size:40});if(e.code!==0)return L(null),null;let n=(e.data?.data?.collections??[]).find(e=>e?.is_default),r=(typeof n?.title==`string`?n.title.trim():``)||null;return L(r),r}catch(e){return console.error(`获取默认收藏夹失败:`,e),L(null),null}},[A,B]);m(()=>{!A||!B||k&&I===void 0&&G()},[I,G,A,k,B]);let K=p(()=>{if(!A){let{open:e}=l.getState();return e(),!1}return!0},[A]),q=f(),J=f(),Y=p(async e=>{try{return e?await ee(r,C):await w(r,C)}catch(e){return console.error(`点赞操作失败`,e),{success:!1,message:`点赞操作失败`}}},[r,C]),X=p(async()=>{if(!(!K()||V)){H(!0);try{let e=!i;e&&q.trigger(R);let t={isLike:e,likeCnt:Math.max(0,s+(e?1:-1))};e&&a&&(t.isDislike=!1,t.dislikeCnt=Math.max(0,S-1));let n=await Y(e);if(!n.success){_.error(n.message||`点赞失败`);return}return t}finally{H(!1)}}},[q,i,a,s,S,Y,K,V,R]),Z=p(async e=>{try{return e?await T(r,C):await E(r,C)}catch(e){return console.error(`点踩操作失败`,e),{success:!1,message:`点踩操作失败`}}},[r,C]),te=p(async()=>{if(!(!K()||U)){W(!0);try{let e=!a;e&&J.trigger(z);let t={isDislike:e,dislikeCnt:Math.max(0,S+(e?1:-1))};e&&i&&(t.isLike=!1,t.likeCnt=Math.max(0,s-1));let n=await Z(e);if(!n.success){_.error(n.message||`操作失败`);return}return t}finally{W(!1)}}},[J,i,a,s,S,Z,K,U,z]),Q=p(async({currentId:e,isCancel:t,collectionIds:r})=>{try{if(t){let t=String(M||j?.userId||``);if(!t)return{success:!1};let n=await c({app_id:0,user_id:t,content_id:e,content_type:C});return n.code===0?{success:!0}:{success:!1,message:n.message}}if(!String(M||j?.userId||``))return{success:!1};let i=r?.[0],a=x(C),o=await n({...i?{collection_id:i}:{},content_id:e,...a===void 0?{}:{source_type:a}});return o.code===0?{success:!0}:{success:!1,message:o.message}}catch(e){return console.error(`取消收藏操作失败`,e),{success:!1,message:e?.message}}},[M,j?.userId,C]),$=p(({currentCollect:e,onUpdate:t})=>K()?(e?(async()=>{let e=await Q({currentId:r,isCancel:!0});if(!e?.success){_.error(e?.message||`操作失败`);return}t({isCollect:!1})})():(d.clear(),u.show({toCreateCollection:()=>{N.push(`/collection/create?information_id=${r}`)},onCollect:e=>{(async()=>{let n=await Q({currentId:r,isCancel:!1,collectionIds:[e]});if(!n?.success){_.error(n?.message||`操作失败`);return}t({isCollect:!0})})()}})),!0):!1,[r,N,K,Q]),ne=p(async({currentCollect:e,onUpdate:t})=>{if(!K())return;if(e){let e=await Q({currentId:r,isCancel:!0});return e?.success?(t({isCollect:!1}),{success:!0,isCollect:!1}):{success:!1,message:e?.message}}d.clear(),u.clear();let n=await Q({currentId:r,isCancel:!1});if(!n?.success)return{success:!1,message:n?.message};let i=I===void 0?await G():I;return t({isCollect:!0}),{success:!0,isCollect:!0,collectionTitle:i||void 0}},[I,G,Q,r,K]);return{likeAnimation:q,dislikeAnimation:J,handleLikeOperate:X,handleDislikeOperate:te,handleShareOperate:p((e,t)=>{let n=typeof t==`string`?{otherId:t}:t,i=n?.otherId||r,a=n?.shareUrl;d.show({copyUrl:O,data:{id:r,isCollect:o,parentId:i},...a?{shareUrl:a}:{},onCollect:t=>{$({currentCollect:t,onUpdate:e})}})},[r,o,$,O]),handleToCollectionOperate:$,handleDefaultCollectionOperate:ne}}export{C as batchQueryContentInteractions,D as useContentOperate};
|
package/dist/materials.d.mts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { videoDetailPlayerMaterial } from "./components/biz/business/detail/video-detail-player/material.mjs";
|
|
3
3
|
import "./components/biz/business/detail/video-detail-player/index.mjs";
|
|
4
|
-
import { videoDetailPlayerBridgeOnlyMaterial } from "./components/biz/business/detail/video-detail-player-bridge-only/material.mjs";
|
|
5
|
-
import "./components/biz/business/detail/video-detail-player-bridge-only/index.mjs";
|
|
6
4
|
import { videoDetailInfoMaterial } from "./components/biz/business/detail/video-detail-info/material.mjs";
|
|
7
5
|
import "./components/biz/business/detail/video-detail-info/index.mjs";
|
|
8
6
|
import { videoDetailInfoTitleTagsEpisodesMaterial } from "./components/biz/business/detail/video-detail-info-title-tags-episodes/material.mjs";
|
|
@@ -33,4 +31,4 @@ import { headerSearchMaterial } from "./components/biz/business/header-search/he
|
|
|
33
31
|
import "./components/biz/business/header-search/index.mjs";
|
|
34
32
|
import { largeFeatureGridMaterial } from "./components/biz/business/large-feature-grid/material.mjs";
|
|
35
33
|
import { shortcutGridMaterial } from "./components/biz/business/shortcut-grid/material.mjs";
|
|
36
|
-
export { BannerCarouselMaterial, channelListMaterial, exampleButtonMaterial, floatingBallMaterial, headerAvatarIconMaterial, headerAvatarLogoSearchIconMaterial, headerAvatarLogoSearchMaterial, headerLogoSearchMaterial, headerSearchMaterial, homeRecommendGridMaterial, homeRecommendWaterfallMaterial, imageTextRecommendMaterial, largeFeatureGridMaterial, marqueeMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, profileMainMaterial, searchHistoryMaterial, searchInputMaterial, shortcutGridMaterial, tabBarMaterial, textRecommendMaterial, videoDetailActionsMaterial, videoDetailInfoMaterial, videoDetailInfoTitleTagsEpisodesMaterial,
|
|
34
|
+
export { BannerCarouselMaterial, channelListMaterial, exampleButtonMaterial, floatingBallMaterial, headerAvatarIconMaterial, headerAvatarLogoSearchIconMaterial, headerAvatarLogoSearchMaterial, headerLogoSearchMaterial, headerSearchMaterial, homeRecommendGridMaterial, homeRecommendWaterfallMaterial, imageTextRecommendMaterial, largeFeatureGridMaterial, marqueeMaterial, profileHeaderMaterial, profileHeaderMaterialWithDisabledBackground, profileMainMaterial, searchHistoryMaterial, searchInputMaterial, shortcutGridMaterial, tabBarMaterial, textRecommendMaterial, videoDetailActionsMaterial, videoDetailInfoMaterial, videoDetailInfoTitleTagsEpisodesMaterial, videoDetailPlayerMaterial, videoDetailRecommendMaterial };
|
package/dist/materials.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{__exportAll as e}from"./_virtual/_rolldown/runtime.mjs";import{floatingBallMaterial as t}from"./components/biz/business/floating-ball/material.mjs";import{homeRecommendGridMaterial as n}from"./components/biz/business/home-recommend/home-recommend-grid/material.mjs";import{homeRecommendWaterfallMaterial as r}from"./components/biz/business/home-recommend/home-recommend-waterfall/material.mjs";import{imageTextRecommendMaterial as i}from"./components/biz/business/image-text-recommend/material.mjs";import{marqueeMaterial as a}from"./components/biz/business/marquee/material.mjs";import{profileHeaderMaterial as o,profileHeaderMaterialWithDisabledBackground as s}from"./components/biz/business/profile/profile-header/material.mjs";import{profileMainMaterial as c}from"./components/biz/business/profile/profile-main/material.mjs";import{searchHistoryMaterial as l}from"./components/biz/business/search-history/material.mjs";import{searchInputMaterial as u}from"./components/biz/business/search-input/material.mjs";import{tabBarMaterial as d}from"./components/biz/business/tab-bar/material.mjs";import{textRecommendMaterial as f}from"./components/biz/business/text-recommend/material.mjs";import{exampleButtonMaterial as p}from"./components/biz/example/button/material.mjs";import{BannerCarouselMaterial as m}from"./components/biz/business/banner-carousel/material.mjs";import{channelListMaterial as h}from"./components/biz/business/channel-list/material.mjs";import{videoDetailInfoMaterial as g}from"./components/biz/business/detail/video-detail-info/material.mjs";import{videoDetailInfoTitleTagsEpisodesMaterial as _}from"./components/biz/business/detail/video-detail-info-title-tags-episodes/material.mjs";import{videoDetailPlayerMaterial as v}from"./components/biz/business/detail/video-detail-player/material.mjs";import{
|
|
2
|
+
import{__exportAll as e}from"./_virtual/_rolldown/runtime.mjs";import{floatingBallMaterial as t}from"./components/biz/business/floating-ball/material.mjs";import{homeRecommendGridMaterial as n}from"./components/biz/business/home-recommend/home-recommend-grid/material.mjs";import{homeRecommendWaterfallMaterial as r}from"./components/biz/business/home-recommend/home-recommend-waterfall/material.mjs";import{imageTextRecommendMaterial as i}from"./components/biz/business/image-text-recommend/material.mjs";import{marqueeMaterial as a}from"./components/biz/business/marquee/material.mjs";import{profileHeaderMaterial as o,profileHeaderMaterialWithDisabledBackground as s}from"./components/biz/business/profile/profile-header/material.mjs";import{profileMainMaterial as c}from"./components/biz/business/profile/profile-main/material.mjs";import{searchHistoryMaterial as l}from"./components/biz/business/search-history/material.mjs";import{searchInputMaterial as u}from"./components/biz/business/search-input/material.mjs";import{tabBarMaterial as d}from"./components/biz/business/tab-bar/material.mjs";import{textRecommendMaterial as f}from"./components/biz/business/text-recommend/material.mjs";import{exampleButtonMaterial as p}from"./components/biz/example/button/material.mjs";import{BannerCarouselMaterial as m}from"./components/biz/business/banner-carousel/material.mjs";import{channelListMaterial as h}from"./components/biz/business/channel-list/material.mjs";import{videoDetailInfoMaterial as g}from"./components/biz/business/detail/video-detail-info/material.mjs";import{videoDetailInfoTitleTagsEpisodesMaterial as _}from"./components/biz/business/detail/video-detail-info-title-tags-episodes/material.mjs";import{videoDetailPlayerMaterial as v}from"./components/biz/business/detail/video-detail-player/material.mjs";import{videoDetailRecommendMaterial as y}from"./components/biz/business/detail/video-detail-recommend/material.mjs";import{videoDetailActionsMaterial as b}from"./components/biz/business/detail/video-detail-actions/material.mjs";import{headerAvatarIconMaterial as x}from"./components/biz/business/header-search/header-avatar-icon/material.mjs";import{headerAvatarLogoSearchMaterial as S}from"./components/biz/business/header-search/header-avatar-logo-search/material.mjs";import{headerAvatarLogoSearchIconMaterial as C}from"./components/biz/business/header-search/header-avatar-logo-search-icon/material.mjs";import{headerLogoSearchMaterial as w}from"./components/biz/business/header-search/header-logo-search/material.mjs";import{headerSearchMaterial as T}from"./components/biz/business/header-search/header-search/material.mjs";import{largeFeatureGridMaterial as E}from"./components/biz/business/large-feature-grid/material.mjs";import{shortcutGridMaterial as D}from"./components/biz/business/shortcut-grid/material.mjs";var O=e({BannerCarouselMaterial:()=>m,channelListMaterial:()=>h,exampleButtonMaterial:()=>p,floatingBallMaterial:()=>t,headerAvatarIconMaterial:()=>x,headerAvatarLogoSearchIconMaterial:()=>C,headerAvatarLogoSearchMaterial:()=>S,headerLogoSearchMaterial:()=>w,headerSearchMaterial:()=>T,homeRecommendGridMaterial:()=>n,homeRecommendWaterfallMaterial:()=>r,imageTextRecommendMaterial:()=>i,largeFeatureGridMaterial:()=>E,marqueeMaterial:()=>a,profileHeaderMaterial:()=>o,profileHeaderMaterialWithDisabledBackground:()=>s,profileMainMaterial:()=>c,searchHistoryMaterial:()=>l,searchInputMaterial:()=>u,shortcutGridMaterial:()=>D,tabBarMaterial:()=>d,textRecommendMaterial:()=>f,videoDetailActionsMaterial:()=>b,videoDetailInfoMaterial:()=>g,videoDetailInfoTitleTagsEpisodesMaterial:()=>_,videoDetailPlayerMaterial:()=>v,videoDetailRecommendMaterial:()=>y});export{m as BannerCarouselMaterial,h as channelListMaterial,p as exampleButtonMaterial,t as floatingBallMaterial,x as headerAvatarIconMaterial,C as headerAvatarLogoSearchIconMaterial,S as headerAvatarLogoSearchMaterial,w as headerLogoSearchMaterial,T as headerSearchMaterial,n as homeRecommendGridMaterial,r as homeRecommendWaterfallMaterial,i as imageTextRecommendMaterial,E as largeFeatureGridMaterial,a as marqueeMaterial,O as materials_exports,o as profileHeaderMaterial,s as profileHeaderMaterialWithDisabledBackground,c as profileMainMaterial,l as searchHistoryMaterial,u as searchInputMaterial,D as shortcutGridMaterial,d as tabBarMaterial,f as textRecommendMaterial,b as videoDetailActionsMaterial,g as videoDetailInfoMaterial,_ as videoDetailInfoTitleTagsEpisodesMaterial,v as videoDetailPlayerMaterial,y as videoDetailRecommendMaterial};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
function e(){return typeof window>`u`?!1:window.isWebView===!0}function t(t){if(!e())return;let n=window[t?`showBridgePlayer`:`hideBridgePlayer`];if(typeof n==`function`){Promise.resolve(n()).catch(e=>{console.warn(`调用 WebView 播放器显隐方法失败:`,e)});return}let r=window.flutter_inappwebview;typeof r?.callHandler==`function`&&Promise.resolve(r.callHandler(`setPlayerVisible`,t)).catch(e=>{console.warn(`调用 setPlayerVisible 失败:`,e)})}function n(t,...n){if(!e())return;let r=window[t];typeof r==`function`&&Promise.resolve(r(...n)).catch(e=>{console.warn(`调用 ${t} 失败:`,e)})}function r(){e()&&(t(!1),n(`notifyBridgeLoginModalOpened`))}function i(){t(!0)}function a(){n(`notifyBridgeLoginSuccessClosed`)}function o(e){n(`notifyBridgeEpisodeChanged`,e)}export{o as notifyBridgeEpisodeChanged,i as notifyBridgeLoginModalClosed,r as notifyBridgeLoginModalOpened,a as notifyBridgeLoginSuccessClosed};
|
|
2
|
+
function e(){return typeof window>`u`?!1:window.isWebView===!0||window.isWebview===!0}function t(t){if(!e())return;let n=window[t?`showBridgePlayer`:`hideBridgePlayer`];if(typeof n==`function`){Promise.resolve(n()).catch(e=>{console.warn(`调用 WebView 播放器显隐方法失败:`,e)});return}let r=window.flutter_inappwebview;typeof r?.callHandler==`function`&&Promise.resolve(r.callHandler(`setPlayerVisible`,t)).catch(e=>{console.warn(`调用 setPlayerVisible 失败:`,e)})}function n(t,...n){if(!e())return;let r=window[t];typeof r==`function`&&Promise.resolve(r(...n)).catch(e=>{console.warn(`调用 ${t} 失败:`,e)})}function r(){e()&&(t(!1),n(`notifyBridgeLoginModalOpened`))}function i(){t(!0)}function a(){n(`notifyBridgeLoginSuccessClosed`)}function o(e){n(`notifyBridgeEpisodeChanged`,e)}export{o as notifyBridgeEpisodeChanged,i as notifyBridgeLoginModalClosed,r as notifyBridgeLoginModalOpened,a as notifyBridgeLoginSuccessClosed};
|
package/dist/utils.d.mts
CHANGED
|
@@ -9,15 +9,14 @@ import { getResUrl } from "./utils/get-res-url.mjs";
|
|
|
9
9
|
import { disablePageScroll, enablePageScroll, normalizeClassName, pxToVw } from "./utils/helper.mjs";
|
|
10
10
|
import { HttpClient, HttpError, RequestConfig, RequestMethod, ResponseData, httpClient } from "./utils/http.mjs";
|
|
11
11
|
import { ImageCompressionQualityRule, compressImage, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, getImageCompressionQuality, imageCompressionQualityRules } from "./utils/image-compression.mjs";
|
|
12
|
-
import { INSPECTOR_META_KEY, InferSchemaProps, MaterialComponentMode, MaterialComponentProps, SchemaHasDefaultValue, defineArrayItemPropSchema, defineCheckboxPropSchema, defineColorPropSchema, defineComponentPropsSchema, defineDatetimePropSchema, defineNumberPropSchema, defineObjectPropSchema, defineSelectEnumPropSchema, defineSelectPropSchema, defineSwitchPropSchema, defineTextPropSchema, defineTextareaPropSchema, defineTimeRangePropSchema, getSchemaDefaultProps, withInspectorMeta } from "./utils/schema/schema.mjs";
|
|
13
|
-
import { DefineMaterialOption, MaterialCategory, OverwriteMaterialOption, defineMaterial, overwriteMaterial } from "./utils/schema/material.mjs";
|
|
14
|
-
import { MaterialMap, generateMaterialMap, generateMaterialMapGroupByCategory } from "./utils/schema/utils.mjs";
|
|
15
|
-
import "./utils/schema/index.mjs";
|
|
16
12
|
import { components, loadComponent, rewriteComponent } from "./utils/loaders.mjs";
|
|
17
13
|
import { createInputAndSelectFile, getCoverImage, getImageResolutionFromFile } from "./utils/media.mjs";
|
|
18
14
|
import { PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasswordValidationResult, PasswordValidationType, getFirstInvalidPasswordChar, getPasswordCharacterTypeCount, getPasswordValidationErrorText, validatePasswordPair } from "./utils/password-validator.mjs";
|
|
19
15
|
import { PresignedUploadInfo, UploadToS3Options, UploadToS3Result, uploadToS3WithPresignedUrl } from "./utils/s3-uploader.mjs";
|
|
16
|
+
import { INSPECTOR_META_KEY, InferSchemaProps, MaterialComponentMode, MaterialComponentProps, SchemaHasDefaultValue, defineArrayItemPropSchema, defineCheckboxPropSchema, defineColorPropSchema, defineComponentPropsSchema, defineDatetimePropSchema, defineNumberPropSchema, defineObjectPropSchema, defineSelectEnumPropSchema, defineSelectPropSchema, defineSwitchPropSchema, defineTextPropSchema, defineTextareaPropSchema, defineTimeRangePropSchema, getSchemaDefaultProps, withInspectorMeta } from "./utils/schema/schema.mjs";
|
|
17
|
+
import { DefineMaterialOption, MaterialCategory, OverwriteMaterialOption, defineMaterial, overwriteMaterial } from "./utils/schema/material.mjs";
|
|
18
|
+
import { MaterialMap, generateMaterialMap, generateMaterialMapGroupByCategory } from "./utils/schema/utils.mjs";
|
|
19
|
+
import "./utils/schema/index.mjs";
|
|
20
20
|
import { base64ToUint8Array, uint8ArrayToBase64, uint8ArrayToNumberArray } from "./utils/uint8.mjs";
|
|
21
21
|
import { UploadFileResult, encryptBncBuffer, uploadFile } from "./utils/upload-file.mjs";
|
|
22
|
-
|
|
23
|
-
export { CompatibleRouter, DefineMaterialOption, eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, MaterialCategory, MaterialComponentMode, MaterialComponentProps, MaterialMap, OverwriteMaterialOption, PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasswordValidationResult, PasswordValidationType, PresignedUploadInfo, RequestConfig, RequestMethod, ResponseData, SchemaHasDefaultValue, UploadFileResult, UploadToS3Options, UploadToS3Result, base64ToUint8Array, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, defineArrayItemPropSchema, defineCheckboxPropSchema, defineColorPropSchema, defineComponentPropsSchema, defineDatetimePropSchema, defineMaterial, defineNumberPropSchema, defineObjectPropSchema, defineSelectEnumPropSchema, defineSelectPropSchema, defineSwitchPropSchema, defineTextPropSchema, defineTextareaPropSchema, defineTimeRangePropSchema, disablePageScroll, enablePageScroll, encryptBncBuffer, followUser, formatVideoDuration, generateDynamicSign, generateMaterialMap, generateMaterialMapGroupByCategory, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getFirstInvalidPasswordChar, getImageCompressionQuality, getImageResolutionFromFile, getPasswordCharacterTypeCount, getPasswordValidationErrorText, getResUrl, getSchemaDefaultProps, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, overwriteMaterial, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, resolveImageUrl, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, shouldProbeImageUrl, shouldUseApiResDirectly, stringToNumber, stripHtmlTags, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, useRouter, validatePasswordPair, withInspectorMeta };
|
|
22
|
+
export { DefineMaterialOption, eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, MaterialCategory, MaterialComponentMode, MaterialComponentProps, MaterialMap, OverwriteMaterialOption, PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasswordValidationResult, PasswordValidationType, PresignedUploadInfo, RequestConfig, RequestMethod, ResponseData, SchemaHasDefaultValue, UploadFileResult, UploadToS3Options, UploadToS3Result, base64ToUint8Array, checkFollowStatus, clearMyChannelsFromStorage, cn, components, compressImage, createInputAndSelectFile, debounceFun, decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, defaultImageCompressionMaxSizeMB, defaultImageCompressionQuality, defineArrayItemPropSchema, defineCheckboxPropSchema, defineColorPropSchema, defineComponentPropsSchema, defineDatetimePropSchema, defineMaterial, defineNumberPropSchema, defineObjectPropSchema, defineSelectEnumPropSchema, defineSelectPropSchema, defineSwitchPropSchema, defineTextPropSchema, defineTextareaPropSchema, defineTimeRangePropSchema, disablePageScroll, enablePageScroll, encryptBncBuffer, followUser, formatVideoDuration, generateDynamicSign, generateMaterialMap, generateMaterialMapGroupByCategory, generateUUID, getAppId, getAtUserElement, getCookie, getCoverImage, getCurrentSecondTime, getCurrentUserId, getFirstInvalidPasswordChar, getImageCompressionQuality, getImageResolutionFromFile, getPasswordCharacterTypeCount, getPasswordValidationErrorText, getResUrl, getSchemaDefaultProps, getUserId, guessImageContentTypeFromUrl, hashPassword, httpClient, imageCompressionQualityRules, isClient, isEncryptedImageUrl, isMobileDevice, loadComponent, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, normalizeClassName, numToString, overwriteMaterial, parseResolution, parseTextAtUserIds, pxToVw, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, resolveImageUrl, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, shouldProbeImageUrl, shouldUseApiResDirectly, stringToNumber, stripHtmlTags, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, validatePasswordPair, withInspectorMeta };
|
package/dist/utils.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{cn as e}from"./utils/cn.mjs";import{clearMyChannelsFromStorage as t,loadHiddenChannelIdsFromStorage as n,loadMyChannelsFromStorage as r,saveHiddenChannelIdsToStorage as i}from"./utils/channel-storage.mjs";import{debounceFun as a,formatVideoDuration as o,generateDynamicSign as s,generateUUID as c,getAtUserElement as l,getCookie as u,getCurrentSecondTime as d,getUserId as f,hashPassword as p,isClient as m,isMobileDevice as h,numToString as g,parseResolution as _,parseTextAtUserIds as v,randomString as y,removeCookie as b,replaceAtUserElement as x,replaceAtUserElementHtmlStr as S,secondToTime as C,setCookie as w,stringToNumber as T,stripHtmlTags as E,updateUrlParams as D}from"./utils/common.mjs";import O from"./utils/get-res-url.mjs";import{decryptImageToArrayBuffer as k,decryptImageToUint8Array as A,decryptImageUrl as j,guessImageContentTypeFromUrl as M,isEncryptedImageUrl as N,resolveImageUrl as P,shouldProbeImageUrl as F,shouldUseApiResDirectly as I}from"./utils/decrypt-image-client.mjs";import L from"./utils/event-bus.mjs";import R,{HttpClient as z,HttpError as B}from"./utils/http.mjs";import{checkFollowStatus as V,followUser as H,getAppId as U,getCurrentUserId as W,unfollowUser as G}from"./utils/follow-service.mjs";import{disablePageScroll as K,enablePageScroll as q,normalizeClassName as J,pxToVw as Y}from"./utils/helper.mjs";import{compressImage as X,defaultImageCompressionMaxSizeMB as Z,defaultImageCompressionQuality as Q,getImageCompressionQuality as $,imageCompressionQualityRules as ee}from"./utils/image-compression.mjs";import{components as te,loadComponent as ne,rewriteComponent as re}from"./utils/loaders.mjs";import{createInputAndSelectFile as ie,getCoverImage as ae,getImageResolutionFromFile as oe}from"./utils/media.mjs";import{PASSWORD_ALLOWED_SPECIAL_CHARS as se,PASSWORD_MAX_LENGTH as ce,PASSWORD_MIN_LENGTH as le,getFirstInvalidPasswordChar as ue,getPasswordCharacterTypeCount as de,getPasswordValidationErrorText as fe,validatePasswordPair as pe}from"./utils/password-validator.mjs";import{uploadToS3WithPresignedUrl as me}from"./utils/s3-uploader.mjs";import{defineMaterial as he,overwriteMaterial as ge}from"./utils/schema/material.mjs";import{INSPECTOR_META_KEY as _e,defineArrayItemPropSchema as ve,defineCheckboxPropSchema as ye,defineColorPropSchema as be,defineComponentPropsSchema as xe,defineDatetimePropSchema as Se,defineNumberPropSchema as Ce,defineObjectPropSchema as we,defineSelectEnumPropSchema as Te,defineSelectPropSchema as Ee,defineSwitchPropSchema as De,defineTextPropSchema as Oe,defineTextareaPropSchema as ke,defineTimeRangePropSchema as Ae,getSchemaDefaultProps as je,withInspectorMeta as Me}from"./utils/schema/schema.mjs";import{generateMaterialMap as Ne,generateMaterialMapGroupByCategory as Pe}from"./utils/schema/utils.mjs";import{base64ToUint8Array as Fe,uint8ArrayToBase64 as Ie,uint8ArrayToNumberArray as Le}from"./utils/uint8.mjs";import{encryptBncBuffer as Re,uploadFile as ze}from"./utils/upload-file.mjs";
|
|
2
|
+
import{cn as e}from"./utils/cn.mjs";import{clearMyChannelsFromStorage as t,loadHiddenChannelIdsFromStorage as n,loadMyChannelsFromStorage as r,saveHiddenChannelIdsToStorage as i}from"./utils/channel-storage.mjs";import{debounceFun as a,formatVideoDuration as o,generateDynamicSign as s,generateUUID as c,getAtUserElement as l,getCookie as u,getCurrentSecondTime as d,getUserId as f,hashPassword as p,isClient as m,isMobileDevice as h,numToString as g,parseResolution as _,parseTextAtUserIds as v,randomString as y,removeCookie as b,replaceAtUserElement as x,replaceAtUserElementHtmlStr as S,secondToTime as C,setCookie as w,stringToNumber as T,stripHtmlTags as E,updateUrlParams as D}from"./utils/common.mjs";import O from"./utils/get-res-url.mjs";import{decryptImageToArrayBuffer as k,decryptImageToUint8Array as A,decryptImageUrl as j,guessImageContentTypeFromUrl as M,isEncryptedImageUrl as N,resolveImageUrl as P,shouldProbeImageUrl as F,shouldUseApiResDirectly as I}from"./utils/decrypt-image-client.mjs";import L from"./utils/event-bus.mjs";import R,{HttpClient as z,HttpError as B}from"./utils/http.mjs";import{checkFollowStatus as V,followUser as H,getAppId as U,getCurrentUserId as W,unfollowUser as G}from"./utils/follow-service.mjs";import{disablePageScroll as K,enablePageScroll as q,normalizeClassName as J,pxToVw as Y}from"./utils/helper.mjs";import{compressImage as X,defaultImageCompressionMaxSizeMB as Z,defaultImageCompressionQuality as Q,getImageCompressionQuality as $,imageCompressionQualityRules as ee}from"./utils/image-compression.mjs";import{components as te,loadComponent as ne,rewriteComponent as re}from"./utils/loaders.mjs";import{createInputAndSelectFile as ie,getCoverImage as ae,getImageResolutionFromFile as oe}from"./utils/media.mjs";import{PASSWORD_ALLOWED_SPECIAL_CHARS as se,PASSWORD_MAX_LENGTH as ce,PASSWORD_MIN_LENGTH as le,getFirstInvalidPasswordChar as ue,getPasswordCharacterTypeCount as de,getPasswordValidationErrorText as fe,validatePasswordPair as pe}from"./utils/password-validator.mjs";import{uploadToS3WithPresignedUrl as me}from"./utils/s3-uploader.mjs";import{defineMaterial as he,overwriteMaterial as ge}from"./utils/schema/material.mjs";import{INSPECTOR_META_KEY as _e,defineArrayItemPropSchema as ve,defineCheckboxPropSchema as ye,defineColorPropSchema as be,defineComponentPropsSchema as xe,defineDatetimePropSchema as Se,defineNumberPropSchema as Ce,defineObjectPropSchema as we,defineSelectEnumPropSchema as Te,defineSelectPropSchema as Ee,defineSwitchPropSchema as De,defineTextPropSchema as Oe,defineTextareaPropSchema as ke,defineTimeRangePropSchema as Ae,getSchemaDefaultProps as je,withInspectorMeta as Me}from"./utils/schema/schema.mjs";import{generateMaterialMap as Ne,generateMaterialMapGroupByCategory as Pe}from"./utils/schema/utils.mjs";import{base64ToUint8Array as Fe,uint8ArrayToBase64 as Ie,uint8ArrayToNumberArray as Le}from"./utils/uint8.mjs";import{encryptBncBuffer as Re,uploadFile as ze}from"./utils/upload-file.mjs";export{L as EventBus,z as HttpClient,B as HttpError,_e as INSPECTOR_META_KEY,se as PASSWORD_ALLOWED_SPECIAL_CHARS,ce as PASSWORD_MAX_LENGTH,le as PASSWORD_MIN_LENGTH,Fe as base64ToUint8Array,V as checkFollowStatus,t as clearMyChannelsFromStorage,e as cn,te as components,X as compressImage,ie as createInputAndSelectFile,a as debounceFun,k as decryptImageToArrayBuffer,A as decryptImageToUint8Array,j as decryptImageUrl,Z as defaultImageCompressionMaxSizeMB,Q as defaultImageCompressionQuality,ve as defineArrayItemPropSchema,ye as defineCheckboxPropSchema,be as defineColorPropSchema,xe as defineComponentPropsSchema,Se as defineDatetimePropSchema,he as defineMaterial,Ce as defineNumberPropSchema,we as defineObjectPropSchema,Te as defineSelectEnumPropSchema,Ee as defineSelectPropSchema,De as defineSwitchPropSchema,Oe as defineTextPropSchema,ke as defineTextareaPropSchema,Ae as defineTimeRangePropSchema,K as disablePageScroll,q as enablePageScroll,Re as encryptBncBuffer,H as followUser,o as formatVideoDuration,s as generateDynamicSign,Ne as generateMaterialMap,Pe as generateMaterialMapGroupByCategory,c as generateUUID,U as getAppId,l as getAtUserElement,u as getCookie,ae as getCoverImage,d as getCurrentSecondTime,W as getCurrentUserId,ue as getFirstInvalidPasswordChar,$ as getImageCompressionQuality,oe as getImageResolutionFromFile,de as getPasswordCharacterTypeCount,fe as getPasswordValidationErrorText,O as getResUrl,je as getSchemaDefaultProps,f as getUserId,M as guessImageContentTypeFromUrl,p as hashPassword,R as httpClient,ee as imageCompressionQualityRules,m as isClient,N as isEncryptedImageUrl,h as isMobileDevice,ne as loadComponent,n as loadHiddenChannelIdsFromStorage,r as loadMyChannelsFromStorage,J as normalizeClassName,g as numToString,ge as overwriteMaterial,_ as parseResolution,v as parseTextAtUserIds,Y as pxToVw,y as randomString,b as removeCookie,x as replaceAtUserElement,S as replaceAtUserElementHtmlStr,P as resolveImageUrl,re as rewriteComponent,i as saveHiddenChannelIdsToStorage,C as secondToTime,w as setCookie,F as shouldProbeImageUrl,I as shouldUseApiResDirectly,T as stringToNumber,E as stripHtmlTags,Ie as uint8ArrayToBase64,Le as uint8ArrayToNumberArray,G as unfollowUser,D as updateUrlParams,ze as uploadFile,me as uploadToS3WithPresignedUrl,pe as validatePasswordPair,Me as withInspectorMeta};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@funhub/platform",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.141",
|
|
5
5
|
"private": false,
|
|
6
6
|
"sideEffects": [
|
|
7
7
|
"**/*.css"
|
|
@@ -70,30 +70,6 @@
|
|
|
70
70
|
"dist",
|
|
71
71
|
"theme.css"
|
|
72
72
|
],
|
|
73
|
-
"scripts": {
|
|
74
|
-
"dev:web": "next dev",
|
|
75
|
-
"build:web": "next build",
|
|
76
|
-
"prebuild": "pnpm i18n:build",
|
|
77
|
-
"build": "cross-env TSDOWN_ENV=production tsdown",
|
|
78
|
-
"predev": "pnpm i18n:build",
|
|
79
|
-
"dev": "node scripts/dev-with-i18n-watch.mjs",
|
|
80
|
-
"dev:core": "cross-env TSDOWN_ENV=development tsdown --watch",
|
|
81
|
-
"publish:platform": "node scripts/publish-platform.mjs",
|
|
82
|
-
"gen:api": "node ./scripts/generate-from-swagger.cjs",
|
|
83
|
-
"pp": "pnpm publish:platform",
|
|
84
|
-
"start": "next start",
|
|
85
|
-
"prelint": "pnpm i18n:build",
|
|
86
|
-
"lint": "eslint . --fix",
|
|
87
|
-
"pretypecheck": "pnpm i18n:build",
|
|
88
|
-
"typecheck": "tsc --noEmit",
|
|
89
|
-
"i18n:find": "node scripts/i18n-locale-tool.mjs find",
|
|
90
|
-
"i18n:set": "node scripts/i18n-locale-tool.mjs set",
|
|
91
|
-
"i18n:flatten": "node scripts/i18n-flat-sync.mjs flatten",
|
|
92
|
-
"i18n:build": "node scripts/i18n-flat-sync.mjs build",
|
|
93
|
-
"i18n:watch": "node scripts/i18n-flat-sync.mjs watch",
|
|
94
|
-
"i18n:check": "node scripts/i18n-flat-sync.mjs check",
|
|
95
|
-
"pretest": "pnpm i18n:build"
|
|
96
|
-
},
|
|
97
73
|
"peerDependencies": {
|
|
98
74
|
"@tanstack/query-core": ">=5",
|
|
99
75
|
"@tanstack/react-query": ">=5",
|
|
@@ -142,7 +118,6 @@
|
|
|
142
118
|
"zustand": "^5.0.9"
|
|
143
119
|
},
|
|
144
120
|
"devDependencies": {
|
|
145
|
-
"@funhub/eslint-config": "workspace:*",
|
|
146
121
|
"@svgr/webpack": "^8.1.0",
|
|
147
122
|
"@types/crypto-js": "^4.2.2",
|
|
148
123
|
"@types/lodash-es": "^4.17.12",
|
|
@@ -151,6 +126,31 @@
|
|
|
151
126
|
"rollup-plugin-postcss": "^4.0.2",
|
|
152
127
|
"rollup-preserve-directives": "^1.1.3",
|
|
153
128
|
"tsdown": "0.20.3",
|
|
154
|
-
"vite-plugin-svgr": "^4.3.0"
|
|
129
|
+
"vite-plugin-svgr": "^4.3.0",
|
|
130
|
+
"@funhub/eslint-config": "0.0.1"
|
|
131
|
+
},
|
|
132
|
+
"scripts": {
|
|
133
|
+
"dev:web": "next dev",
|
|
134
|
+
"build:web": "next build",
|
|
135
|
+
"prebuild": "pnpm i18n:build",
|
|
136
|
+
"build": "cross-env TSDOWN_ENV=production tsdown",
|
|
137
|
+
"predev": "pnpm i18n:build",
|
|
138
|
+
"dev": "node scripts/dev-with-i18n-watch.mjs",
|
|
139
|
+
"dev:core": "cross-env TSDOWN_ENV=development tsdown --watch",
|
|
140
|
+
"publish:platform": "node scripts/publish-platform.mjs",
|
|
141
|
+
"gen:api": "node ./scripts/generate-from-swagger.cjs",
|
|
142
|
+
"pp": "pnpm publish:platform",
|
|
143
|
+
"start": "next start",
|
|
144
|
+
"prelint": "pnpm i18n:build",
|
|
145
|
+
"lint": "eslint . --fix",
|
|
146
|
+
"pretypecheck": "pnpm i18n:build",
|
|
147
|
+
"typecheck": "tsc --noEmit",
|
|
148
|
+
"i18n:find": "node scripts/i18n-locale-tool.mjs find",
|
|
149
|
+
"i18n:set": "node scripts/i18n-locale-tool.mjs set",
|
|
150
|
+
"i18n:flatten": "node scripts/i18n-flat-sync.mjs flatten",
|
|
151
|
+
"i18n:build": "node scripts/i18n-flat-sync.mjs build",
|
|
152
|
+
"i18n:watch": "node scripts/i18n-flat-sync.mjs watch",
|
|
153
|
+
"i18n:check": "node scripts/i18n-flat-sync.mjs check",
|
|
154
|
+
"pretest": "pnpm i18n:build"
|
|
155
155
|
}
|
|
156
|
-
}
|
|
156
|
+
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { VideoDetailPlayerBridgeOnlyProps } from "./schema.mjs";
|
|
3
|
-
|
|
4
|
-
//#region components/biz/business/detail/video-detail-player-bridge-only/client.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* WebView 桥接播放器物料客户端组件:
|
|
7
|
-
* - 仅注入 Bridge 所需全局方法
|
|
8
|
-
* - 不渲染 UI(return null)
|
|
9
|
-
*/
|
|
10
|
-
declare function VideoDetailPlayerBridgeOnlyClient(props: VideoDetailPlayerBridgeOnlyProps): null;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { VideoDetailPlayerBridgeOnlyClient };
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
"use client";import{useVideoDetailMaterialRuntimeContext as e}from"../shared/runtime-context-provider.mjs";import{useVideoDetailWebViewBridge as t}from"../shared/use-video-detail-webview-bridge.mjs";function n(n){let r=e();return t({enabled:!0,detailId:r?.detailId||r?.information?.id||``,information:r?.information??null,episodeIndex:r?.episodeIndex??0,currentSeriesNum:r?.currentSeriesNum??1}),null}export{n as VideoDetailPlayerBridgeOnlyClient};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { VideoDetailPlayerBridgeOnlyInspectorProps, VideoDetailPlayerBridgeOnlyProps, videoDetailPlayerBridgeOnlyInspectorPropsSchema } from "./schema.mjs";
|
|
3
|
-
import { VideoDetailPlayerBridgeOnlyClient } from "./client.mjs";
|
|
4
|
-
import { VideoDetailPlayerBridgeOnly } from "./server.mjs";
|
|
5
|
-
import { videoDetailPlayerBridgeOnlyMaterial } from "./material.mjs";
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { DefineMaterialOption } from "../../../../../utils/schema/material.mjs";
|
|
3
|
-
import "../../../../../utils/schema/index.mjs";
|
|
4
|
-
import { VideoDetailPlayerBridgeOnlyClient } from "./client.mjs";
|
|
5
|
-
import { VideoDetailPlayerBridgeOnly } from "./server.mjs";
|
|
6
|
-
import * as zod from "zod";
|
|
7
|
-
import * as zod_v4_core0 from "zod/v4/core";
|
|
8
|
-
|
|
9
|
-
//#region components/biz/business/detail/video-detail-player-bridge-only/material.d.ts
|
|
10
|
-
declare const videoDetailPlayerBridgeOnlyMaterial: DefineMaterialOption<typeof VideoDetailPlayerBridgeOnly, typeof VideoDetailPlayerBridgeOnlyClient, zod.ZodObject<{
|
|
11
|
-
mode: zod.ZodOptional<zod.ZodEnum<{
|
|
12
|
-
renderer: "renderer";
|
|
13
|
-
editor: "editor";
|
|
14
|
-
}>>;
|
|
15
|
-
}, zod_v4_core0.$strip>, "video-detail-player-bridge-only", "视频模块">;
|
|
16
|
-
//#endregion
|
|
17
|
-
export { videoDetailPlayerBridgeOnlyMaterial };
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import{defineMaterial as e}from"../../../../../utils/schema/material.mjs";import{VideoDetailPlayerBridgeOnlyClient as t}from"./client.mjs";import{videoDetailPlayerBridgeOnlyInspectorPropsSchema as n}from"./schema.mjs";import{VideoDetailPlayerBridgeOnly as r}from"./server.mjs";const i=e({type:`video-detail-player-bridge-only`,name:`播放器桥接(仅 WebView)`,icon:`/static/components-thumb/video_player.png`,category:`视频模块`,serverComponent:r,clientComponent:t,propsSchema:n});export{i as videoDetailPlayerBridgeOnlyMaterial};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { InferSchemaProps } from "../../../../../utils/schema/schema.mjs";
|
|
3
|
-
import "../../../../../utils/schema/index.mjs";
|
|
4
|
-
import * as zod from "zod";
|
|
5
|
-
import * as zod_v4_core0 from "zod/v4/core";
|
|
6
|
-
|
|
7
|
-
//#region components/biz/business/detail/video-detail-player-bridge-only/schema.d.ts
|
|
8
|
-
/**
|
|
9
|
-
* WebView 桥接播放器物料:
|
|
10
|
-
* - 不渲染任何 UI
|
|
11
|
-
* - 仅在 WebView 场景注入 `getVideoInfoAsync/getVideoBrowseRecordAsync/reportVideoBrowse` 等全局方法
|
|
12
|
-
*/
|
|
13
|
-
declare const videoDetailPlayerBridgeOnlyInspectorPropsSchema: zod.ZodObject<{
|
|
14
|
-
mode: zod.ZodOptional<zod.ZodEnum<{
|
|
15
|
-
renderer: "renderer";
|
|
16
|
-
editor: "editor";
|
|
17
|
-
}>>;
|
|
18
|
-
}, zod_v4_core0.$strip>;
|
|
19
|
-
type VideoDetailPlayerBridgeOnlyInspectorProps = InferSchemaProps<typeof videoDetailPlayerBridgeOnlyInspectorPropsSchema>;
|
|
20
|
-
/** WebView 桥接播放器物料 props。 */
|
|
21
|
-
interface VideoDetailPlayerBridgeOnlyProps extends VideoDetailPlayerBridgeOnlyInspectorProps {}
|
|
22
|
-
//#endregion
|
|
23
|
-
export { VideoDetailPlayerBridgeOnlyInspectorProps, VideoDetailPlayerBridgeOnlyProps, videoDetailPlayerBridgeOnlyInspectorPropsSchema };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { VideoDetailPlayerBridgeOnlyProps } from "./schema.mjs";
|
|
3
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
-
|
|
5
|
-
//#region components/biz/business/detail/video-detail-player-bridge-only/server.d.ts
|
|
6
|
-
/**
|
|
7
|
-
* WebView 桥接播放器物料服务端组件。
|
|
8
|
-
*/
|
|
9
|
-
declare function VideoDetailPlayerBridgeOnly(props: VideoDetailPlayerBridgeOnlyProps): react_jsx_runtime0.JSX.Element;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { VideoDetailPlayerBridgeOnly };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import * as next_dist_shared_lib_app_router_context_shared_runtime0 from "next/dist/shared/lib/app-router-context.shared-runtime";
|
|
3
|
-
|
|
4
|
-
//#region utils/use-compatible-router.d.ts
|
|
5
|
-
interface CompatibleNavigateOptions {
|
|
6
|
-
scroll?: boolean;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* `useRouter`
|
|
10
|
-
*
|
|
11
|
-
* 统一跳转兼容:
|
|
12
|
-
* - 非 WebView:走 Next.js App Router(SPA 跳转)
|
|
13
|
-
* - WebView:对同源 `/video/` 路由改写为 `/webview/`,适配 WebView 内部路由
|
|
14
|
-
* - 外链/跨域:降级为 `window.location` 整页跳转
|
|
15
|
-
*/
|
|
16
|
-
declare function useRouter(): {
|
|
17
|
-
push: (href: string, options?: CompatibleNavigateOptions) => void;
|
|
18
|
-
replace: (href: string, options?: CompatibleNavigateOptions) => void;
|
|
19
|
-
back(): void;
|
|
20
|
-
forward(): void;
|
|
21
|
-
refresh(): void;
|
|
22
|
-
prefetch(href: string, options?: next_dist_shared_lib_app_router_context_shared_runtime0.PrefetchOptions): void;
|
|
23
|
-
};
|
|
24
|
-
type CompatibleRouter = ReturnType<typeof useRouter>;
|
|
25
|
-
//#endregion
|
|
26
|
-
export { CompatibleRouter, useRouter };
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
"use client";import{useCallback as e,useMemo as t}from"react";import{useRouter as n}from"next/navigation";function r(){let r=n(),i=typeof window<`u`&&window.isWebView===!0,a=e(e=>{if(!i||typeof window>`u`)return e;try{let t=new URL(e,window.location.origin),n=t.pathname.split(`/`).filter(Boolean),r=n.findIndex(e=>e===`video`);return r<0?e:(n[r]=`webview`,t.pathname=`/${n.join(`/`)}`,`${t.pathname}${t.search}${t.hash}`)}catch{return e}},[i]),o=e(e=>{if(typeof window>`u`)return{isSameOrigin:!0,path:e};try{let t=new URL(e,window.location.href);return t.origin===window.location.origin?{isSameOrigin:!0,path:a(`${t.pathname}${t.search}${t.hash}`)}:{isSameOrigin:!1,path:e}}catch{return{isSameOrigin:!0,path:a(e)}}},[a]),s=e((e,t)=>{let n=o(e);if(!n.isSameOrigin&&typeof window<`u`){window.location.href=n.path;return}r.push(n.path,t)},[o,r]),c=e((e,t)=>{let n=o(e);if(!n.isSameOrigin&&typeof window<`u`){window.location.replace(n.path);return}r.replace(n.path,t)},[o,r]);return t(()=>({...r,push:s,replace:c}),[s,c,r])}export{r as useRouter};
|