@funhub/platform 0.1.116 → 0.1.118
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/channel-list/channel-filter-dialog.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/client.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/button.d.mts +2 -2
- package/dist/components/ui/image.mjs +1 -1
- package/dist/utils/decrypt-image-client.d.mts +8 -1
- package/dist/utils/decrypt-image-client.mjs +1 -1
- package/dist/utils.d.mts +2 -2
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
|
@@ -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 r from"../../../ui/popup.mjs";import i from"../../../../assets/images/add.mjs";import a from"../../../../assets/images/less.mjs";import{useEffect as o,useMemo as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";const f=`channel-filter-hidden-channel-ids`;function p(){if(typeof window>`u`)return[];try{let e=localStorage.getItem(
|
|
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 r from"../../../ui/popup.mjs";import i from"../../../../assets/images/add.mjs";import a from"../../../../assets/images/less.mjs";import{useEffect as o,useMemo as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import{useTranslations as d}from"next-intl";const f=`channel-filter-hidden-channel-ids`;function p(){return typeof window>`u`?f:`${f}-${window.location.pathname||`/`}`}function m(){if(typeof window>`u`)return[];try{let e=p(),t=localStorage.getItem(e);return t?JSON.parse(t):[]}catch(e){return console.error(`Failed to load hidden channel IDs:`,e),[]}}function h(e){if(!(typeof window>`u`))try{let t=p();localStorage.setItem(t,JSON.stringify(e))}catch(e){console.error(`Failed to save hidden channel IDs:`,e)}}function g({open:f,onOpenChange:p,channels:g,onChannelClick:_,onChannelsChange:v}){let y=d(`components.biz.business.navBar.variants.basicNavBar.runtime`),[b,x]=c(g);o(()=>{if(g.length>0){let e=m();x(g.filter(t=>!e.includes(t.name)))}},[g]);let S=s(()=>g.filter(e=>!b.some(t=>t.name===e.name)),[g,b]),C=e=>{if(p(e),!e){h(S.map(e=>e.name)),v?.(b);let e=new URL(window.location.href).pathname,t=decodeURIComponent(e.split(`/`).pop());S.find(e=>e.name===t)&&b[0]&&(window.location.href=`/`)}},w=e=>{x(t=>t.filter(t=>t.name!==e.name))},T=e=>{x(t=>[...t,e])},E=(e,t)=>{_?.(e,t)},D=()=>{x(g),h([])},O=e=>e===`推荐`;return l(r,{open:f,onOpenChange:C,side:`top`,showCloseButton:!0,className:`!h-screen max-h-screen`,closeButtonClassName:`border-0`,children:u(t,{className:`flex flex-col h-full px-[12px]`,children:[l(t,{className:`mb-4 pt-4`,children:l(n,{className:`text-text1 font-bold text-[18px]`,children:y(`channelFilterDialog.allChannels`)})}),u(t,{className:`mb-[32px]`,children:[u(t,{className:`flex items-center justify-between h-6 mb-[12px]`,children:[l(n,{className:`text-text1 text-[16px]`,children:y(`channelFilterDialog.myChannels`)}),l(t,{onClick:D,children:l(n,{className:`text-text1 text-[16px]`,children:y(`channelFilterDialog.resetDefault`)})})]}),l(t,{className:`grid grid-cols-4 gap-[12px]`,children:b.map((r,i)=>{let o=O(r.name);return u(t,{className:`relative h-[40px] px-4 bg-bg1 rounded-[50px] cursor-pointer flex items-center justify-center whitespace-nowrap`,onClick:()=>E(r,i),children:[l(n,{className:`text-text1 text-[14px]`,children:r.name}),!o&&l(t,{className:`absolute top-0 right-0 flex items-center justify-center cursor-pointer w-[16px] h-[16px]`,onClick:e=>{e.stopPropagation(),w(r)},children:l(e,{src:typeof a==`string`?a:a.src,alt:y(`channelFilterDialog.delete`),width:16,height:16})})]},r.name||`my-channel-${i}`)})})]}),u(t,{children:[l(t,{className:`h-6 mb-[12px]`,children:l(n,{className:`text-text1 text-[16px]`,children:y(`channelFilterDialog.moreChannels`)})}),S.length===0?l(t,{className:`flex justify-center`,children:u(n,{className:`text-text3 text-[14px]`,children:[y(`channelFilterDialog.allAddedTo`),`"`,y(`channelFilterDialog.myChannels`),`"`]})}):l(t,{className:`grid grid-cols-4 gap-[12px]`,children:S.map((r,a)=>u(t,{className:`relative h-[40px] px-4 bg-bg1 rounded-[50px] cursor-pointer flex items-center justify-center whitespace-nowrap`,onClick:()=>E(r,a),children:[l(n,{className:`text-text1 text-[14px]`,children:r.name}),l(t,{className:`absolute top-0 right-0 flex items-center justify-center cursor-pointer w-[16px] h-[16px]`,onClick:e=>{e.stopPropagation(),T(r)},children:l(e,{src:typeof i==`string`?i:i.src,alt:y(`channelFilterDialog.add`),width:16,height:16})})]},r.name||`more-channel-${a}`))})]})]})})}export{g as default,m as loadHiddenChannelIdsFromStorage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
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 r from"../../../ui/link.mjs";import i from"../../../../assets/icons/view.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";function s({data:
|
|
2
|
+
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 r from"../../../ui/link.mjs";import i from"../../../../assets/icons/view.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";function s(e){let t=Number(e||0);return Number.isNaN(t)||t<=0?`0`:t>=1e4?`${(t/1e4).toFixed(1)}w`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function c({data:c}){return c?a(t,{children:(Array.isArray(c)?c:[c]).map((c,l)=>{if(!c||typeof c!=`object`)return null;let{id:u,title:d,desc:f,cover:p,tagImageUrl:m,showEpisode:h,episodeText:g,showPlayCount:_,play_count:v}=c,y=d||``,b=u?`/video/${u}/${y?encodeURIComponent(y):``}`:`#`,x=m?String(m):null,S=g==null?``:String(g).trim(),C=(h??!0)&&S!==``,w=_??!0,T=s(v);return a(t,{children:o(r,{href:b,children:[o(t,{className:`relative w-full overflow-hidden rounded-[12px] bg-neutral-800`,style:{aspectRatio:`16/9`},children:[p&&a(e,{src:p,alt:y||`封面`,fill:!0,objectFit:`cover`}),x&&a(t,{className:`absolute top-0 right-0 z-10 w-[37px] h-[20px]`,children:a(e,{src:x,alt:y||`角标`,fill:!0,sizes:`37px`,className:`object-contain`})}),a(t,{className:`absolute inset-x-0 bottom-0 h-[40px] bg-gradient-to-t from-black/80 to-transparent z-0 pointer-events-none`}),w&&o(t,{className:`absolute bottom-0 left-[8px] mb-[6px] z-10 flex items-center gap-[4px]`,children:[a(i,{className:`h-[14px] w-[14px] text-white`}),a(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:T})]}),C&&a(t,{className:`absolute bottom-0 right-[8px] mb-[6px] z-10 flex items-center`,children:a(n,{as:`span`,className:`text-[12px] font-medium text-white drop-shadow-md`,children:S})})]}),o(t,{className:`flex items-center justify-between gap-[12px] pt-[10px] px-2`,children:[o(t,{className:`flex-1 min-w-0`,children:[a(n,{as:`h3`,className:`text-[16px] font-semibold leading-[24px] text-text1 line-clamp-1`,children:y}),f&&a(n,{as:`p`,className:`mt-[4px] text-[13px] leading-[20px] text-text2 line-clamp-1`,children:f})]}),a(n,{className:`shrink-0 rounded-[20px] border border-[#FD4C5E] px-[24px] py-[8px] text-[14px] font-normal text-[#FD4C5E]`,children:`观看`})]})]})},u||y||`large-grid-item-${l}`)})}):null}export{c as LargeGridItemClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{Box as e}from"../../../ui/box.mjs";import{Text as t}from"../../../ui/text.mjs";import n from"../../../ui/link.mjs";import r from"../../../../assets/icons/common/right_arrow.mjs";import{LargeGridItemClient as i}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as a}from"./schema.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=[],l=a.data??[];function u(e){return e==null}function d(e,t){return u(e)?t:e}function f(e,t){
|
|
2
|
+
"use client";import{Box as e}from"../../../ui/box.mjs";import{Text as t}from"../../../ui/text.mjs";import n from"../../../ui/link.mjs";import r from"../../../../assets/icons/common/right_arrow.mjs";import{LargeGridItemClient as i}from"./card-item.mjs";import{largeFeatureGridInspectorDefaultProps as a}from"./schema.mjs";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=[],l=a.data??[];function u(e){return e==null}function d(e,t){return u(e)?t:e}function f(e,t){return t?{...e,...t,id:d(t.id,e.id),cover:d(t.cover,e.cover),title:d(t.title,e.title),desc:d(t.desc,e.desc),play_count:d(t.play_count,e.play_count),showPlayCount:t.showPlayCount??e.showPlayCount,episodeText:d(t.episodeText,e.episodeText),showEpisode:t.showEpisode??e.showEpisode,useContentCover:t.useContentCover??e.useContentCover,tagImageUrl:d(t.tagImageUrl,e.tagImageUrl)}:e}function p(e,t){if(!t)return e;let n=e.items;return{...e,...t,title:d(t.title,e.title),moreUrl:d(t.moreUrl,e.moreUrl),moreLinkType:t.moreLinkType??e.moreLinkType,items:n?f(n,t.items):t.items}}function m({mode:a=`renderer`,data:u=c}){let d=a===`editor`,f=u??c,m=Array.isArray(f)&&f.length>0?[p(l[0],f[0])]:l;if(!m||m.length===0)return null;let h=m[0],g=h?.title,_=h?.moreUrl;return s(e,{className:d?`p-3 pointer-events-none`:`p-3`,children:[s(e,{className:`flex items-center justify-between mb-[10px] h-[24px]`,children:[g&&o(t,{as:`h2`,className:`text-[18px] font-bold text-text1 line-clamp-1 flex-1 min-w-0 mr-[12px]`,children:g}),_&&s(n,{href:_,className:`flex items-center text-[14px] text-text2 ml-auto`,children:[`更多`,o(r,{className:`ml-[2px] h-[12px] w-[12px] text-text2`})]})]}),m.map((t,n)=>{let{items:r}=t;return r?o(e,{className:n>0?`mt-3`:``,children:o(i,{data:r})},`large-feature-grid-items-${n}`):null})]})}export{m as LargeFeatureGridClient};
|
|
@@ -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?: "
|
|
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,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?: "
|
|
11
|
-
size?: "default" | "
|
|
10
|
+
variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
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 组件属性。 */
|
|
14
14
|
type ButtonProps = Button.Props & VariantProps<typeof buttonVariants> & {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import
|
|
2
|
+
"use client";import{decryptImageToArrayBuffer as e,isEncryptedImageUrl as t,resolveImageUrl as n,shouldProbeImageUrl as r}from"../../utils/decrypt-image-client.mjs";import{pxToVw as i}from"../../utils/helper.mjs";import{useEffect as a,useReducer as o,useRef as s}from"react";import{jsx as c}from"react/jsx-runtime";import l from"next/image";const u=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP4//8/LwAJCQMLCIuEYQAAAABJRU5ErkJggg==`,d=new Map,f=new Map,p={display:`flex`,alignItems:`center`,justifyContent:`center`,backgroundColor:`#f3f4f6`,color:`#9ca3af`,fontSize:12};function m(e){return d.get(e)}function h(e,t){if(d.has(e)&&d.delete(e),d.set(e,t),d.size<=300)return;let n=d.keys().next().value;if(!n)return;let r=d.get(n);d.delete(n),r?.startsWith(`blob:`)&&URL.revokeObjectURL(r)}async function g(t){let n=m(t);if(n)return n;let r=f.get(t);if(r)return r;let i=e(t).then(e=>{if(!e)return``;let n=URL.createObjectURL(new Blob([e.buffer],{type:e.contentType}));return h(t,n),n}).finally(()=>{f.delete(t)});return f.set(t,i),i}function _(e,t){switch(t.type){case`set-final-src`:return{...e,finalSrc:t.value};case`set-has-error`:return{...e,hasError:t.value};default:return e}}function v(e){return e?.trim()?t(e)?m(e)??u:e.startsWith(`http`)?e:r(e)?u:e:u}function y(e){return e?/\b(?:w|h)-[\w[\]/.]+/.test(e):!1}function b(e){let{src:d,alt:f=``,className:h,style:b,unoptimized:x=!0,priority:S,quality:C,sizes:w,fill:T,objectFit:E,onLoad:D,onError:O,...k}=e,A=`width`in e?e.width:void 0,j=`height`in e?e.height:void 0,[M,N]=o(_,d,e=>({finalSrc:v(e),hasError:!1})),P=s(0);a(()=>{if(d?.trim()){if(N({type:`set-has-error`,value:!1}),P.current=0,t(d)){let e=m(d);if(e){N({type:`set-final-src`,value:e});return}N({type:`set-final-src`,value:u});let t=!1;return g(d).then(e=>{t||!e||N({type:`set-final-src`,value:e})}).catch(()=>{}),()=>{t=!0}}if(d.startsWith(`http`)){N({type:`set-final-src`,value:d});return}if(r(d)){N({type:`set-final-src`,value:u});let e=!1;return n(d).then(t=>{e||!t||N({type:`set-final-src`,value:t})}).catch(()=>{e||N({type:`set-final-src`,value:d})}),()=>{e=!0}}N({type:`set-final-src`,value:d})}},[d]);function F(e){e.currentTarget.dataset.keyId=d,P.current=0,N({type:`set-has-error`,value:!1}),e.currentTarget.dataset.keyId=d,D?.(e)}function I(e){P.current+=1,P.current===1?N({type:`set-final-src`,value:`/feedback.png`}):P.current>1&&N({type:`set-has-error`,value:!0}),O?.(e)}if(M.hasError)return c(`div`,{className:h,style:{...p,...T?{width:`100%`,height:`100%`}:{width:i(A??0),height:i(j??0)}},children:`error`});let L={...b||{},...E?{objectFit:E}:{}},R=y(h)?L:{width:i(A??0),height:i(j??0),...L};return T?c(l,{...k,src:M.finalSrc,alt:f,fill:!0,className:h,style:L,priority:S,quality:C,sizes:w,unoptimized:x,onLoad:F,onError:I,crossOrigin:`anonymous`}):c(l,{...k,src:M.finalSrc,alt:f,width:A??0,height:j??0,className:h,style:R,priority:S,quality:C,sizes:w,unoptimized:x,onLoad:F,onError:I,crossOrigin:`anonymous`})}export{b as Image};
|
|
@@ -16,6 +16,13 @@ declare function isEncryptedImageUrl(url: string): boolean;
|
|
|
16
16
|
* @returns 推断得到的 MIME 类型。
|
|
17
17
|
*/
|
|
18
18
|
declare function guessImageContentTypeFromUrl(url: string): string;
|
|
19
|
+
/** 判断图片地址是否需要在原始路径和 apiRes 路径之间做探测。 */
|
|
20
|
+
declare function shouldProbeImageUrl(url: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 解析相对图片地址最终应使用的地址。
|
|
23
|
+
* 并发探测原始路径和 `${apiRes}${path}`,谁先成功就用谁。
|
|
24
|
+
*/
|
|
25
|
+
declare function resolveImageUrl(url: string): Promise<string>;
|
|
19
26
|
/**
|
|
20
27
|
* 将「可能是加密」的图片 URL 解密/拉取为 ArrayBuffer。
|
|
21
28
|
*
|
|
@@ -52,4 +59,4 @@ declare function decryptImageToUint8Array(url: string, secretKey?: string): Prom
|
|
|
52
59
|
*/
|
|
53
60
|
declare function decryptImageUrl(url: string, secretKey?: string): Promise<string>;
|
|
54
61
|
//#endregion
|
|
55
|
-
export { decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, guessImageContentTypeFromUrl, isEncryptedImageUrl };
|
|
62
|
+
export { decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, guessImageContentTypeFromUrl, isEncryptedImageUrl, resolveImageUrl, shouldProbeImageUrl };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{getItem as e,setItem as t}from"./db.mjs";import{createBncDecryptWorker as n}from"./decrypt.worker.mjs";import r from"./get-res-url.mjs";
|
|
2
|
+
"use client";import{getItem as e,setItem as t}from"./db.mjs";import{createBncDecryptWorker as n}from"./decrypt.worker.mjs";import r from"./get-res-url.mjs";const i=new Map,a=new Map;let o=null;function s(){if(typeof window>`u`)return null;if(o)return o;let e=[];function t(){let e={worker:n(),busy:!1,current:null},t=()=>{try{e.worker.terminate()}catch{}e.worker=n(),e.busy=!1,e.current=null,r(e)},r=e=>{e.worker.addEventListener(`message`,t=>{let n=t.data;if(!e.current||n?.id!==e.current.id)return;let{resolve:r}=e.current;e.current=null,e.busy=!1,r(n),y()}),e.worker.addEventListener(`error`,n=>{if(e.current){let{reject:t}=e.current;e.current=null,e.busy=!1,t(n)}t(),y()})};return r(e),e}for(let n=0;n<4;n++)e.push(t());return o=e,o}const c=[];function l(e){if(!e)return!1;let t=e.split(`?`)[0];return/bnc$/i.test(t)||/xxx$/i.test(t)}function u(e){let t=String(e||``).split(`?`)[0].toLowerCase().match(/\.(jpg|jpeg|png|gif|webp)(?:\.?(?:bnc|xxx))?$/i)?.[1];return t===`jpg`||t===`jpeg`?`image/jpeg`:t===`png`?`image/png`:t===`gif`?`image/gif`:t===`webp`?`image/webp`:`application/octet-stream`}function d(e,t){return!t||e.startsWith(`http`)?e:`${t.endsWith(`/`)?t.slice(0,-1):t}${e.startsWith(`/`)?e:`/${e}`}`}function f(e){return Array.from(new Set(e.filter(e=>!!e?.trim())))}function p(e,t=3e3){return typeof window>`u`?Promise.resolve(!1):new Promise(n=>{let r=new XMLHttpRequest,i=!1,a=e=>{if(!i){i=!0,clearTimeout(o);try{r.abort()}catch{}n(e)}},o=window.setTimeout(()=>{a(!1)},t);r.onreadystatechange=()=>{r.readyState===2&&a(r.status===200||r.status===206)},r.onerror=()=>{a(!1)},r.onabort=()=>{a(!1)};try{r.open(`GET`,e,!0),r.setRequestHeader(`Range`,`bytes=0-0`),r.send()}catch{a(!1)}})}function m(e){return/^(?:https?:)?\/\//.test(e)||e.startsWith(`data:`)}function h(e){return!e?.trim()||l(e)?!1:!m(e)}async function g(e){if(!h(e))return e;let t=e.startsWith(`/`)?e:`/${e}`,n=i.get(t);if(n)return n;let o=a.get(t);if(o)return o;let s=(async()=>{let e=r(),n=t,a=d(t,e),o=f([n,a]),s=await new Promise(e=>{let t=o.length,n=!1;if(!t){e(null);return}let r=t=>{n||(n=!0,e(t))};for(let e of o)p(e).then(n=>{if(n){r(e);return}--t,t===0&&r(null)}).catch(()=>{--t,t===0&&r(null)})});if(s)return i.set(t,s),s;let c=a||n;return i.set(t,c),c})().finally(()=>{a.delete(t)});return a.set(t,s),s}async function _(n,i){if(!n?.trim())return null;if(l(n)){let r=await e(n);if(r instanceof ArrayBuffer)return{buffer:r,contentType:u(n)};let{buffer:a,contentType:o,error:s}=await b(n,i);return s?null:(await t(n,a),{buffer:a,contentType:o??u(n)})}let a=r(),o=h(n)?await g(n):n.startsWith(`http`)?n:n.startsWith(`/`)?d(n,a):d(`/${n}`,a),s=await fetch(o);return s.ok?{buffer:await s.arrayBuffer(),contentType:s.headers.get(`content-type`)||u(n)}:null}async function v(e,t){let n=await _(e,t);return n?{bytes:new Uint8Array(n.buffer),contentType:n.contentType}:null}function y(){let e=s();if(e)for(let t of e){if(t.busy)continue;let e=c.shift();if(!e)return;t.busy=!0,t.current={id:e.id,resolve:e.resolve,reject:e.reject};let n={id:e.id,mode:`bnc-url`,url:e.url,apiRes:r(),secretKey:e.secretKey};t.worker.postMessage(n)}}function b(e,t){if(!s())return Promise.resolve({id:`no-worker`,buffer:new ArrayBuffer(0),error:`worker not available`});let n=typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`;return new Promise((r,i)=>{c.push({id:n,url:e,secretKey:t,resolve:r,reject:i}),y()})}async function x(n,r){let i=await e(n);if(i instanceof ArrayBuffer)return URL.createObjectURL(new Blob([i],{type:u(n)}));if(l(n)){let{buffer:e,contentType:i,error:a}=await b(n,r);return a?``:(await t(n,e),URL.createObjectURL(new Blob([e],{type:i??u(n)})))}else return m(n)?n:h(n)?g(n):n}export{_ as decryptImageToArrayBuffer,v as decryptImageToUint8Array,x as decryptImageUrl,u as guessImageContentTypeFromUrl,l as isEncryptedImageUrl,g as resolveImageUrl,h as shouldProbeImageUrl};
|
package/dist/utils.d.mts
CHANGED
|
@@ -6,7 +6,7 @@ import "./utils/schema/index.mjs";
|
|
|
6
6
|
import { clearMyChannelsFromStorage, loadHiddenChannelIdsFromStorage, loadMyChannelsFromStorage, saveHiddenChannelIdsToStorage } from "./utils/channel-storage.mjs";
|
|
7
7
|
import { cn } from "./utils/cn.mjs";
|
|
8
8
|
import { debounceFun, formatVideoDuration, generateDynamicSign, generateUUID, getAtUserElement, getCookie, getCurrentSecondTime, getUserId, hashPassword, isClient, isMobileDevice, numToString, parseResolution, parseTextAtUserIds, randomString, removeCookie, replaceAtUserElement, replaceAtUserElementHtmlStr, secondToTime, setCookie, stringToNumber, stripHtmlTags, updateUrlParams } from "./utils/common.mjs";
|
|
9
|
-
import { decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, guessImageContentTypeFromUrl, isEncryptedImageUrl } from "./utils/decrypt-image-client.mjs";
|
|
9
|
+
import { decryptImageToArrayBuffer, decryptImageToUint8Array, decryptImageUrl, guessImageContentTypeFromUrl, isEncryptedImageUrl, resolveImageUrl, shouldProbeImageUrl } from "./utils/decrypt-image-client.mjs";
|
|
10
10
|
import { eventBus } from "./utils/event-bus.mjs";
|
|
11
11
|
import { checkFollowStatus, followUser, getAppId, getCurrentUserId, unfollowUser } from "./utils/follow-service.mjs";
|
|
12
12
|
import { getResUrl } from "./utils/get-res-url.mjs";
|
|
@@ -19,4 +19,4 @@ import { PASSWORD_ALLOWED_SPECIAL_CHARS, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGT
|
|
|
19
19
|
import { PresignedUploadInfo, UploadToS3Options, UploadToS3Result, uploadToS3WithPresignedUrl } from "./utils/s3-uploader.mjs";
|
|
20
20
|
import { base64ToUint8Array, uint8ArrayToBase64, uint8ArrayToNumberArray } from "./utils/uint8.mjs";
|
|
21
21
|
import { UploadFileResult, encryptBncBuffer, uploadFile } from "./utils/upload-file.mjs";
|
|
22
|
-
export { eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, MaterialComponentMode, MaterialComponentProps, MaterialMap, 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, rewriteComponent, saveHiddenChannelIdsToStorage, secondToTime, setCookie, stringToNumber, stripHtmlTags, uint8ArrayToBase64, uint8ArrayToNumberArray, unfollowUser, updateUrlParams, uploadFile, uploadToS3WithPresignedUrl, validatePasswordPair, withInspectorMeta };
|
|
22
|
+
export { eventBus as EventBus, HttpClient, HttpError, INSPECTOR_META_KEY, ImageCompressionQualityRule, InferSchemaProps, MaterialComponentMode, MaterialComponentProps, MaterialMap, 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, 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}from"./utils/decrypt-image-client.mjs";import
|
|
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}from"./utils/decrypt-image-client.mjs";import I from"./utils/event-bus.mjs";import L,{HttpClient as R,HttpError as z}from"./utils/http.mjs";import{checkFollowStatus as B,followUser as V,getAppId as H,getCurrentUserId as U,unfollowUser as W}from"./utils/follow-service.mjs";import{disablePageScroll as G,enablePageScroll as K,normalizeClassName as q,pxToVw as J}from"./utils/helper.mjs";import{compressImage as Y,defaultImageCompressionMaxSizeMB as X,defaultImageCompressionQuality as Z,getImageCompressionQuality as Q,imageCompressionQualityRules as $}from"./utils/image-compression.mjs";import{components as ee,loadComponent as te,rewriteComponent as ne}from"./utils/loaders.mjs";import{createInputAndSelectFile as re,getCoverImage as ie,getImageResolutionFromFile as ae}from"./utils/media.mjs";import{PASSWORD_ALLOWED_SPECIAL_CHARS as oe,PASSWORD_MAX_LENGTH as se,PASSWORD_MIN_LENGTH as ce,getFirstInvalidPasswordChar as le,getPasswordCharacterTypeCount as ue,getPasswordValidationErrorText as de,validatePasswordPair as fe}from"./utils/password-validator.mjs";import{uploadToS3WithPresignedUrl as pe}from"./utils/s3-uploader.mjs";import{defineMaterial as me,overwriteMaterial as he}from"./utils/schema/material.mjs";import{INSPECTOR_META_KEY as ge,defineArrayItemPropSchema as _e,defineCheckboxPropSchema as ve,defineColorPropSchema as ye,defineComponentPropsSchema as be,defineDatetimePropSchema as xe,defineNumberPropSchema as Se,defineObjectPropSchema as Ce,defineSelectEnumPropSchema as we,defineSelectPropSchema as Te,defineSwitchPropSchema as Ee,defineTextPropSchema as De,defineTextareaPropSchema as Oe,defineTimeRangePropSchema as ke,getSchemaDefaultProps as Ae,withInspectorMeta as je}from"./utils/schema/schema.mjs";import{generateMaterialMap as Me,generateMaterialMapGroupByCategory as Ne}from"./utils/schema/utils.mjs";import{base64ToUint8Array as Pe,uint8ArrayToBase64 as Fe,uint8ArrayToNumberArray as Ie}from"./utils/uint8.mjs";import{encryptBncBuffer as Le,uploadFile as Re}from"./utils/upload-file.mjs";export{I as EventBus,R as HttpClient,z as HttpError,ge as INSPECTOR_META_KEY,oe as PASSWORD_ALLOWED_SPECIAL_CHARS,se as PASSWORD_MAX_LENGTH,ce as PASSWORD_MIN_LENGTH,Pe as base64ToUint8Array,B as checkFollowStatus,t as clearMyChannelsFromStorage,e as cn,ee as components,Y as compressImage,re as createInputAndSelectFile,a as debounceFun,k as decryptImageToArrayBuffer,A as decryptImageToUint8Array,j as decryptImageUrl,X as defaultImageCompressionMaxSizeMB,Z as defaultImageCompressionQuality,_e as defineArrayItemPropSchema,ve as defineCheckboxPropSchema,ye as defineColorPropSchema,be as defineComponentPropsSchema,xe as defineDatetimePropSchema,me as defineMaterial,Se as defineNumberPropSchema,Ce as defineObjectPropSchema,we as defineSelectEnumPropSchema,Te as defineSelectPropSchema,Ee as defineSwitchPropSchema,De as defineTextPropSchema,Oe as defineTextareaPropSchema,ke as defineTimeRangePropSchema,G as disablePageScroll,K as enablePageScroll,Le as encryptBncBuffer,V as followUser,o as formatVideoDuration,s as generateDynamicSign,Me as generateMaterialMap,Ne as generateMaterialMapGroupByCategory,c as generateUUID,H as getAppId,l as getAtUserElement,u as getCookie,ie as getCoverImage,d as getCurrentSecondTime,U as getCurrentUserId,le as getFirstInvalidPasswordChar,Q as getImageCompressionQuality,ae as getImageResolutionFromFile,ue as getPasswordCharacterTypeCount,de as getPasswordValidationErrorText,O as getResUrl,Ae as getSchemaDefaultProps,f as getUserId,M as guessImageContentTypeFromUrl,p as hashPassword,L as httpClient,$ as imageCompressionQualityRules,m as isClient,N as isEncryptedImageUrl,h as isMobileDevice,te as loadComponent,n as loadHiddenChannelIdsFromStorage,r as loadMyChannelsFromStorage,q as normalizeClassName,g as numToString,he as overwriteMaterial,_ as parseResolution,v as parseTextAtUserIds,J as pxToVw,y as randomString,b as removeCookie,x as replaceAtUserElement,S as replaceAtUserElementHtmlStr,P as resolveImageUrl,ne as rewriteComponent,i as saveHiddenChannelIdsToStorage,C as secondToTime,w as setCookie,F as shouldProbeImageUrl,T as stringToNumber,E as stripHtmlTags,Fe as uint8ArrayToBase64,Ie as uint8ArrayToNumberArray,W as unfollowUser,D as updateUrlParams,Re as uploadFile,pe as uploadToS3WithPresignedUrl,fe as validatePasswordPair,je as withInspectorMeta};
|