use-tus 0.8.3 → 0.9.0

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.
@@ -1,5 +1,3 @@
1
- declare const _default: {
2
- title: string;
3
- };
1
+ declare const _default: Meta;
4
2
  export default _default;
5
3
  export declare const Basic: () => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,3 @@
1
- declare const _default: {
2
- title: string;
3
- };
1
+ declare const _default: Meta;
4
2
  export default _default;
5
3
  export declare const CacheKey: () => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,3 @@
1
- declare const _default: {
2
- title: string;
3
- };
1
+ declare const _default: Meta;
4
2
  export default _default;
5
3
  export declare const WithDefaultOptions: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import type React from "react";
2
+ type PlaceValue = number | ".";
3
+ interface CounterProps {
4
+ value: number;
5
+ fontSize?: number;
6
+ padding?: number;
7
+ places?: PlaceValue[];
8
+ gap?: number;
9
+ borderRadius?: number;
10
+ horizontalPadding?: number;
11
+ textColor?: string;
12
+ fontWeight?: React.CSSProperties["fontWeight"];
13
+ containerStyle?: React.CSSProperties;
14
+ counterStyle?: React.CSSProperties;
15
+ digitStyle?: React.CSSProperties;
16
+ gradientHeight?: number;
17
+ gradientFrom?: string;
18
+ gradientTo?: string;
19
+ topGradientStyle?: React.CSSProperties;
20
+ bottomGradientStyle?: React.CSSProperties;
21
+ }
22
+ export default function Counter({ value, fontSize, padding, places, gap, borderRadius, horizontalPadding, textColor, fontWeight, containerStyle, counterStyle, digitStyle, gradientHeight, gradientFrom, gradientTo, topGradientStyle, bottomGradientStyle, }: CounterProps): import("react/jsx-runtime").JSX.Element;
23
+ export {};
@@ -0,0 +1 @@
1
+ export { default as Counter } from "./Counter";
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ interface FadeContentProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ container?: Element | string | null;
5
+ blur?: boolean;
6
+ duration?: number;
7
+ ease?: string;
8
+ delay?: number;
9
+ threshold?: number;
10
+ initialOpacity?: number;
11
+ disappearAfter?: number;
12
+ disappearDuration?: number;
13
+ disappearEase?: string;
14
+ onComplete?: () => void;
15
+ onDisappearanceComplete?: () => void;
16
+ }
17
+ declare const FadeContent: React.FC<FadeContentProps>;
18
+ export default FadeContent;
@@ -0,0 +1 @@
1
+ export { default as FadeContent } from "./FadeContent";
@@ -1,6 +1,5 @@
1
1
  import { FC } from "react";
2
2
  type ProgressBarProps = {
3
- title?: string;
4
3
  value?: number;
5
4
  };
6
5
  export declare const ProgressBar: FC<ProgressBarProps>;
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ interface ShinyTextProps {
3
+ text: string;
4
+ disabled?: boolean;
5
+ speed?: number;
6
+ className?: string;
7
+ color?: string;
8
+ shineColor?: string;
9
+ spread?: number;
10
+ yoyo?: boolean;
11
+ pauseOnHover?: boolean;
12
+ direction?: "left" | "right";
13
+ delay?: number;
14
+ }
15
+ declare const ShinyText: React.FC<ShinyTextProps>;
16
+ export default ShinyText;
@@ -0,0 +1 @@
1
+ export { default as ShinyText } from "./ShinyText";
@@ -1,5 +1,5 @@
1
1
  import type { Upload } from "tus-js-client";
2
2
  export declare const createUploadMock: (start: jest.Mock, abort: jest.Mock) => typeof Upload;
3
- export declare const createConsoleErrorMock: () => jest.SpyInstance<void, [message?: any, ...optionalParams: any[]], any>;
3
+ export declare const createConsoleErrorMock: () => jest.SpyInstance<void, any[], any>;
4
4
  export declare const insertEnvValue: (value: NodeJS.Process["env"]) => void;
5
5
  export declare const startOrResumeUploadMock: jest.SpyInstance<void, [upload: Upload], any>;
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("react"),h=require("tus-js-client");const V=Object.freeze({autoAbort:!0,autoStart:!1,uploadOptions:void 0,Upload:h.Upload}),D=o=>({...V,...o}),m=({upload:o,abort:t,autoAbort:e})=>{n.useEffect(()=>{const s=async()=>{!o||!t||await t()};return()=>{e&&s()}},[e,o])},q=(o,t,e)=>{let s=o[e];const a=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(o,e,{get(){return a?.get?.()??s},set(r){a?.set?a.set.call(o,r):s=r,t(this)}})},I=({Upload:o,file:t,uploadOptions:e,uploadFnOptions:s,onChange:a,onStart:r,onAbort:p})=>{const u=new o(t,e),i=u.start.bind(u),l=u.abort.bind(u),A=(...d)=>{i(...d),r()},E=async(...d)=>{l(...d),p()};return u.start=A,u.abort=E,q(u,a,"url"),Object.entries(s).forEach(([d,c])=>{if(typeof c!="function")return;const O=(...b)=>c(...b,u);u.options[d]=O}),{upload:u,originalStart:i,originalAbort:l}};function R(o){const t=Object.entries(o).reduce((s,[a,r])=>({...s,[a]:typeof r!="function"?r:void 0}),{}),e=Object.entries(o).reduce((s,[a,r])=>({...s,[a]:typeof r=="function"?r:void 0}),{});return{uploadOptions:t,uploadFnOptions:e}}const F=o=>{o.findPreviousUploads().then(t=>{t.length&&o.resumeFromPreviousUpload(t[0]),o.start()})},w=Object.freeze({upload:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,error:void 0}),z=(o={})=>{const{autoAbort:t,autoStart:e,uploadOptions:s,Upload:a}=D(o),[r,p]=n.useState(w),[u,i]=n.useState({originalAbort:void 0}),l=c=>{p(O=>O.upload===void 0?O:{...O,...c})},A=n.useCallback((c,O={})=>{const b={...s,...O};function T(){l({isSuccess:!0,isUploading:!1}),b?.onSuccess?.(U)}const v={...b,onSuccess:T,onError:f=>{l({error:f,isUploading:!1}),b?.onError?.(f,U)}},y=f=>{p(K=>({...K,upload:f}))},g=()=>{l({isUploading:!0,isAborted:!1})},N=()=>{l({isUploading:!1,isAborted:!0})},{uploadOptions:_,uploadFnOptions:S}=R(v),{upload:U,originalAbort:H}=I({Upload:a,file:c,uploadOptions:_,uploadFnOptions:S,onChange:y,onStart:g,onAbort:N});e&&F(U),p({upload:U,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}),i({originalAbort:H})},[a,e,s]),E=n.useCallback(()=>{u?.originalAbort?.(),p(w),i({originalAbort:void 0})},[u]),d={...r,setUpload:A,remove:E};return m({upload:d.upload,abort:u.originalAbort,autoAbort:t??!1}),d},P={tusClientHasNotFounded:"No TusClient set, use TusClientProvider to set one",tusIsNotSupported:"This browser does not support uploads. Please use a modern browser instead."},x=n.createContext(void 0),L=n.createContext(void 0),k=()=>{const o=n.useContext(x);if(!o&&process.env.NODE_ENV!=="production")throw new Error(P.tusClientHasNotFounded);return n.useMemo(()=>o,[o])},j=()=>{const o=n.useContext(L);if(!o&&process.env.NODE_ENV!=="production")throw new Error(P.tusClientHasNotFounded);return n.useMemo(()=>o,[o])},X=(o,t)=>({type:"INSERT_UPLOAD_INSTANCE",payload:{cacheKey:o,uploadState:t}}),C=(o,t)=>({type:"UPDATE_UPLOAD_CONTEXT",payload:{cacheKey:o,context:t}}),M=o=>({type:"REMOVE_UPLOAD_INSTANCE",payload:{cacheKey:o}}),G=()=>({type:"RESET_CLIENT"}),J=o=>({type:"UPDATE_DEFAULT_OPTIONS",payload:{defaultOptions:o}}),B=(o,t={})=>{const{autoAbort:e,autoStart:s,uploadOptions:a,Upload:r}=D(t),{defaultOptions:p,uploads:u}=k(),i=j(),l=n.useCallback((c,O={})=>{const b={...p?.(c),...a,...O},T={...b,onSuccess:()=>{i(C(o,{isSuccess:!0,isUploading:!1})),b?.onSuccess?.(S)},onError:U=>{i(C(o,{error:U,isUploading:!1})),b?.onError?.(U,S)}},v=U=>{i(C(o,{upload:U}))},y=()=>{i(C(o,{isAborted:!1,isUploading:!0}))},g=()=>{i(C(o,{isAborted:!0,isUploading:!1}))},{uploadOptions:N,uploadFnOptions:_}=R(T),{upload:S}=I({Upload:r,file:c,uploadOptions:N,uploadFnOptions:_,onChange:v,onStart:y,onAbort:g});s&&F(S),i(X(o,{upload:S,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}))},[r,s,o,p,a,i]),A=n.useMemo(()=>u[o],[o,u]),E=n.useCallback(()=>{A?.upload?.abort(),i(M(o))},[A,i,o]),d=A?{...A,setUpload:l,remove:E}:{upload:void 0,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,setUpload:l,remove:E};return m({upload:d.upload,abort:d.upload?.abort,autoAbort:e??!1}),d},Q=()=>{const o=k(),t=j(),e=o.uploads,s=n.useCallback(r=>{t(M(r))},[t]),a=n.useCallback(()=>t(G()),[t]);return{state:e,removeUpload:s,reset:a}},W=(o,t)=>{switch(t.type){case"INSERT_UPLOAD_INSTANCE":{const{cacheKey:e,uploadState:s}=t.payload;return{...o,uploads:{...o.uploads,[e]:s}}}case"UPDATE_UPLOAD_CONTEXT":{const{cacheKey:e,context:s}=t.payload,a=o.uploads[e];return a?{...o,uploads:{...o.uploads,[e]:{...a,...s}}}:o}case"REMOVE_UPLOAD_INSTANCE":{const{cacheKey:e}=t.payload,s=o.uploads;return delete s[e],{...o,uploads:s}}case"UPDATE_DEFAULT_OPTIONS":{const{defaultOptions:e}=t.payload;return{...o,defaultOptions:e}}case"RESET_CLIENT":return{...o,uploads:{}};default:return o}},Y={uploads:{},defaultOptions:void 0},Z=({defaultOptions:o,children:t})=>{const[e,s]=n.useReducer(W,{...Y,defaultOptions:o});n.useEffect(()=>{h.isSupported||process.env.NODE_ENV==="production"||console.error(P.tusIsNotSupported)},[]),n.useEffect(()=>{e.defaultOptions!==o&&s(J(o))},[o,e.defaultOptions]);const a=n.createElement(L.Provider,{value:s},t);return n.createElement(x.Provider,{value:e},a)};exports.TusClientProvider=Z,exports.useTus=z,exports.useTusClient=Q,exports.useTusStore=B;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react"),h=require("tus-js-client");const K=Object.freeze({autoAbort:!0,autoStart:!1,uploadOptions:void 0,Upload:h.Upload}),D=o=>({...K,...o}),m=({upload:o,abort:t,autoAbort:e})=>{r.useEffect(()=>{const s=async()=>{!o||!t||await t()};return()=>{e&&s()}},[e,o])},V=(o,t,e)=>{let s=o[e];const a=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(o,e,{get(){return a?.get?.()??s},set(n){a?.set?a.set.call(o,n):s=n,t(this)}})},I=({Upload:o,file:t,uploadOptions:e,uploadFnOptions:s,onChange:a,onStart:n,onAbort:p})=>{const u=new o(t,e),i=u.start.bind(u),l=u.abort.bind(u),U=(...d)=>{i(...d),n()},S=async(...d)=>{l(...d),p()};return u.start=U,u.abort=S,V(u,a,"url"),Object.entries(s).forEach(([d,c])=>{if(typeof c!="function")return;const O=(...b)=>c(...b,u);u.options[d]=O}),{upload:u,originalStart:i,originalAbort:l}};function R(o){const t=Object.entries(o).reduce((s,[a,n])=>({...s,[a]:typeof n!="function"?n:void 0}),{}),e=Object.entries(o).reduce((s,[a,n])=>({...s,[a]:typeof n=="function"?n:void 0}),{});return{uploadOptions:t,uploadFnOptions:e}}const F=o=>{o.findPreviousUploads().then(t=>{t.length&&o.resumeFromPreviousUpload(t[0]),o.start()})},w=Object.freeze({upload:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,error:void 0}),q=(o={})=>{const{autoAbort:t,autoStart:e,uploadOptions:s,Upload:a}=D(o),[n,p]=r.useState(w),[u,i]=r.useState({originalAbort:void 0}),l=c=>{p(O=>O.upload===void 0?O:{...O,...c})},U=r.useCallback((c,O={})=>{const b={...s,...O},f={...b,onSuccess:(...C)=>{l({isSuccess:!0,isUploading:!1}),b?.onSuccess?.(...C)},onError:C=>{l({error:C,isUploading:!1}),b?.onError?.(C,E)}},v=C=>{p(H=>({...H,upload:C}))},y=()=>{l({isUploading:!0,isAborted:!1})},g=()=>{l({isUploading:!1,isAborted:!0})},{uploadOptions:N,uploadFnOptions:_}=R(f),{upload:E,originalAbort:A}=I({Upload:a,file:c,uploadOptions:N,uploadFnOptions:_,onChange:v,onStart:y,onAbort:g});e&&F(E),p({upload:E,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}),i({originalAbort:A})},[a,e,s]),S=r.useCallback(()=>{u?.originalAbort?.(),p(w),i({originalAbort:void 0})},[u]),d={...n,setUpload:U,remove:S};return m({upload:d.upload,abort:u.originalAbort,autoAbort:t??!1}),d},P={tusClientHasNotFounded:"No TusClient set, use TusClientProvider to set one",tusIsNotSupported:"This browser does not support uploads. Please use a modern browser instead."},x=r.createContext(void 0),L=r.createContext(void 0),k=()=>{const o=r.useContext(x);if(!o&&process.env.NODE_ENV!=="production")throw new Error(P.tusClientHasNotFounded);return r.useMemo(()=>o,[o])},j=()=>{const o=r.useContext(L);if(!o&&process.env.NODE_ENV!=="production")throw new Error(P.tusClientHasNotFounded);return r.useMemo(()=>o,[o])},z=(o,t)=>({type:"INSERT_UPLOAD_INSTANCE",payload:{cacheKey:o,uploadState:t}}),T=(o,t)=>({type:"UPDATE_UPLOAD_CONTEXT",payload:{cacheKey:o,context:t}}),M=o=>({type:"REMOVE_UPLOAD_INSTANCE",payload:{cacheKey:o}}),X=()=>({type:"RESET_CLIENT"}),G=o=>({type:"UPDATE_DEFAULT_OPTIONS",payload:{defaultOptions:o}}),J=(o,t={})=>{const{autoAbort:e,autoStart:s,uploadOptions:a,Upload:n}=D(t),{defaultOptions:p,uploads:u}=k(),i=j(),l=r.useCallback((c,O={})=>{const b={...p?.(c),...a,...O},f={...b,onSuccess:(...A)=>{i(T(o,{isSuccess:!0,isUploading:!1})),b?.onSuccess?.(...A)},onError:A=>{i(T(o,{error:A,isUploading:!1})),b?.onError?.(A,E)}},v=A=>{i(T(o,{upload:A}))},y=()=>{i(T(o,{isAborted:!1,isUploading:!0}))},g=()=>{i(T(o,{isAborted:!0,isUploading:!1}))},{uploadOptions:N,uploadFnOptions:_}=R(f),{upload:E}=I({Upload:n,file:c,uploadOptions:N,uploadFnOptions:_,onChange:v,onStart:y,onAbort:g});s&&F(E),i(z(o,{upload:E,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}))},[n,s,o,p,a,i]),U=r.useMemo(()=>u[o],[o,u]),S=r.useCallback(()=>{U?.upload?.abort(),i(M(o))},[U,i,o]),d=U?{...U,setUpload:l,remove:S}:{upload:void 0,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,setUpload:l,remove:S};return m({upload:d.upload,abort:d.upload?.abort,autoAbort:e??!1}),d},B=()=>{const o=k(),t=j(),e=o.uploads,s=r.useCallback(n=>{t(M(n))},[t]),a=r.useCallback(()=>t(X()),[t]);return{state:e,removeUpload:s,reset:a}},Q=(o,t)=>{switch(t.type){case"INSERT_UPLOAD_INSTANCE":{const{cacheKey:e,uploadState:s}=t.payload;return{...o,uploads:{...o.uploads,[e]:s}}}case"UPDATE_UPLOAD_CONTEXT":{const{cacheKey:e,context:s}=t.payload,a=o.uploads[e];return a?{...o,uploads:{...o.uploads,[e]:{...a,...s}}}:o}case"REMOVE_UPLOAD_INSTANCE":{const{cacheKey:e}=t.payload,s=o.uploads;return delete s[e],{...o,uploads:s}}case"UPDATE_DEFAULT_OPTIONS":{const{defaultOptions:e}=t.payload;return{...o,defaultOptions:e}}case"RESET_CLIENT":return{...o,uploads:{}};default:return o}},W={uploads:{},defaultOptions:void 0},Y=({defaultOptions:o,children:t})=>{const[e,s]=r.useReducer(Q,{...W,defaultOptions:o});r.useEffect(()=>{h.isSupported||process.env.NODE_ENV==="production"||console.error(P.tusIsNotSupported)},[]),r.useEffect(()=>{e.defaultOptions!==o&&s(G(o))},[o,e.defaultOptions]);const a=r.createElement(L.Provider,{value:s},t);return r.createElement(x.Provider,{value:e},a)};exports.TusClientProvider=Y,exports.useTus=q,exports.useTusClient=B,exports.useTusStore=J;
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{useEffect as D,useState as R,useCallback as T,createContext as F,useContext as w,useMemo as m,useReducer as B,createElement as L}from"react";import{Upload as J,isSupported as Q}from"tus-js-client";const W=Object.freeze({autoAbort:!0,autoStart:!1,uploadOptions:void 0,Upload:J}),x=o=>({...W,...o}),j=({upload:o,abort:t,autoAbort:e})=>{D(()=>{const s=async()=>{!o||!t||await t()};return()=>{e&&s()}},[e,o])},Y=(o,t,e)=>{let s=o[e];const n=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(o,e,{get(){var r,d;return(d=(r=n==null?void 0:n.get)==null?void 0:r.call(n))!=null?d:s},set(r){n!=null&&n.set?n.set.call(o,r):s=r,t(this)}})},K=({Upload:o,file:t,uploadOptions:e,uploadFnOptions:s,onChange:n,onStart:r,onAbort:d})=>{const a=new o(t,e),A=a.start.bind(a),l=a.abort.bind(a),S=(...p)=>{A(...p),r()},v=async(...p)=>{l(...p),d()};return a.start=S,a.abort=v,Y(a,n,"url"),Object.entries(s).forEach(([p,u])=>{if(typeof u!="function")return;const i=(...c)=>u(...c,a);a.options[p]=i}),{upload:a,originalStart:A,originalAbort:l}};function H(o){const t=Object.entries(o).reduce((s,[n,r])=>({...s,[n]:typeof r!="function"?r:void 0}),{}),e=Object.entries(o).reduce((s,[n,r])=>({...s,[n]:typeof r=="function"?r:void 0}),{});return{uploadOptions:t,uploadFnOptions:e}}const V=o=>{o.findPreviousUploads().then(t=>{t.length&&o.resumeFromPreviousUpload(t[0]),o.start()})},k=Object.freeze({upload:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,error:void 0}),Z=(o={})=>{const{autoAbort:t,autoStart:e,uploadOptions:s,Upload:n}=x(o),[r,d]=R(k),[a,A]=R({originalAbort:void 0}),l=u=>{d(i=>i.upload===void 0?i:{...i,...u})},S=T((u,i={})=>{const c={...s,...i};function b(){var O;l({isSuccess:!0,isUploading:!1}),(O=c==null?void 0:c.onSuccess)==null||O.call(c,U)}const g={...c,onSuccess:b,onError:O=>{var C;l({error:O,isUploading:!1}),(C=c==null?void 0:c.onError)==null||C.call(c,O,U)}},y=O=>{d(C=>({...C,upload:O}))},N=()=>{l({isUploading:!0,isAborted:!1})},_=()=>{l({isUploading:!1,isAborted:!0})},{uploadOptions:h,uploadFnOptions:P}=H(g),{upload:U,originalAbort:E}=K({Upload:n,file:u,uploadOptions:h,uploadFnOptions:P,onChange:y,onStart:N,onAbort:_});e&&V(U),d({upload:U,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}),A({originalAbort:E})},[n,e,s]),v=T(()=>{var u;(u=a==null?void 0:a.originalAbort)==null||u.call(a),d(k),A({originalAbort:void 0})},[a]),p={...r,setUpload:S,remove:v};return j({upload:p.upload,abort:a.originalAbort,autoAbort:t!=null?t:!1}),p},I={tusClientHasNotFounded:"No TusClient set, use TusClientProvider to set one",tusIsNotSupported:"This browser does not support uploads. Please use a modern browser instead."},M=F(void 0),z=F(void 0),X=()=>{const o=w(M);if(!o&&process.env.NODE_ENV!=="production")throw new Error(I.tusClientHasNotFounded);return m(()=>o,[o])},G=()=>{const o=w(z);if(!o&&process.env.NODE_ENV!=="production")throw new Error(I.tusClientHasNotFounded);return m(()=>o,[o])},$=(o,t)=>({type:"INSERT_UPLOAD_INSTANCE",payload:{cacheKey:o,uploadState:t}}),f=(o,t)=>({type:"UPDATE_UPLOAD_CONTEXT",payload:{cacheKey:o,context:t}}),q=o=>({type:"REMOVE_UPLOAD_INSTANCE",payload:{cacheKey:o}}),oo=()=>({type:"RESET_CLIENT"}),to=o=>({type:"UPDATE_DEFAULT_OPTIONS",payload:{defaultOptions:o}}),eo=(o,t={})=>{var e;const{autoAbort:s,autoStart:n,uploadOptions:r,Upload:d}=x(t),{defaultOptions:a,uploads:A}=X(),l=G(),S=T((i,c={})=>{const b={...a==null?void 0:a(i),...r,...c},g={...b,onSuccess:()=>{var E;l(f(o,{isSuccess:!0,isUploading:!1})),(E=b==null?void 0:b.onSuccess)==null||E.call(b,U)},onError:E=>{var O;l(f(o,{error:E,isUploading:!1})),(O=b==null?void 0:b.onError)==null||O.call(b,E,U)}},y=E=>{l(f(o,{upload:E}))},N=()=>{l(f(o,{isAborted:!1,isUploading:!0}))},_=()=>{l(f(o,{isAborted:!0,isUploading:!1}))},{uploadOptions:h,uploadFnOptions:P}=H(g),{upload:U}=K({Upload:d,file:i,uploadOptions:h,uploadFnOptions:P,onChange:y,onStart:N,onAbort:_});n&&V(U),l($(o,{upload:U,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}))},[d,n,o,a,r,l]),v=m(()=>A[o],[o,A]),p=T(()=>{var i;(i=v==null?void 0:v.upload)==null||i.abort(),l(q(o))},[v,l,o]),u=v?{...v,setUpload:S,remove:p}:{upload:void 0,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,setUpload:S,remove:p};return j({upload:u.upload,abort:(e=u.upload)==null?void 0:e.abort,autoAbort:s!=null?s:!1}),u},so=()=>{const o=X(),t=G(),e=o.uploads,s=T(r=>{t(q(r))},[t]),n=T(()=>t(oo()),[t]);return{state:e,removeUpload:s,reset:n}},no=(o,t)=>{switch(t.type){case"INSERT_UPLOAD_INSTANCE":{const{cacheKey:e,uploadState:s}=t.payload;return{...o,uploads:{...o.uploads,[e]:s}}}case"UPDATE_UPLOAD_CONTEXT":{const{cacheKey:e,context:s}=t.payload,n=o.uploads[e];return n?{...o,uploads:{...o.uploads,[e]:{...n,...s}}}:o}case"REMOVE_UPLOAD_INSTANCE":{const{cacheKey:e}=t.payload,s=o.uploads;return delete s[e],{...o,uploads:s}}case"UPDATE_DEFAULT_OPTIONS":{const{defaultOptions:e}=t.payload;return{...o,defaultOptions:e}}case"RESET_CLIENT":return{...o,uploads:{}};default:return o}},ro={uploads:{},defaultOptions:void 0},ao=({defaultOptions:o,children:t})=>{const[e,s]=B(no,{...ro,defaultOptions:o});D(()=>{Q||process.env.NODE_ENV==="production"||console.error(I.tusIsNotSupported)},[]),D(()=>{e.defaultOptions!==o&&s(to(o))},[o,e.defaultOptions]);const n=L(z.Provider,{value:s},t);return L(M.Provider,{value:e},n)};export{ao as TusClientProvider,Z as useTus,so as useTusClient,eo as useTusStore};
1
+ import{useEffect as P,useState as I,useCallback as S,createContext as R,useContext as F,useMemo as D,useReducer as q,createElement as w}from"react";import{Upload as B,isSupported as J}from"tus-js-client";const Q=Object.freeze({autoAbort:!0,autoStart:!1,uploadOptions:void 0,Upload:B}),L=o=>({...Q,...o}),x=({upload:o,abort:t,autoAbort:e})=>{P(()=>{const s=async()=>{!o||!t||await t()};return()=>{e&&s()}},[e,o])},W=(o,t,e)=>{let s=o[e];const n=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(o,e,{get(){var r,c;return(c=(r=n==null?void 0:n.get)==null?void 0:r.call(n))!=null?c:s},set(r){n!=null&&n.set?n.set.call(o,r):s=r,t(this)}})},j=({Upload:o,file:t,uploadOptions:e,uploadFnOptions:s,onChange:n,onStart:r,onAbort:c})=>{const a=new o(t,e),A=a.start.bind(a),l=a.abort.bind(a),E=(...O)=>{A(...O),r()},U=async(...O)=>{l(...O),c()};return a.start=E,a.abort=U,W(a,n,"url"),Object.entries(s).forEach(([O,u])=>{if(typeof u!="function")return;const i=(...v)=>u(...v,a);a.options[O]=i}),{upload:a,originalStart:A,originalAbort:l}};function H(o){const t=Object.entries(o).reduce((s,[n,r])=>({...s,[n]:typeof r!="function"?r:void 0}),{}),e=Object.entries(o).reduce((s,[n,r])=>({...s,[n]:typeof r=="function"?r:void 0}),{});return{uploadOptions:t,uploadFnOptions:e}}const K=o=>{o.findPreviousUploads().then(t=>{t.length&&o.resumeFromPreviousUpload(t[0]),o.start()})},V=Object.freeze({upload:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,error:void 0}),Y=(o={})=>{const{autoAbort:t,autoStart:e,uploadOptions:s,Upload:n}=L(o),[r,c]=I(V),[a,A]=I({originalAbort:void 0}),l=u=>{c(i=>i.upload===void 0?i:{...i,...u})},E=S((u,i={})=>{const v={...s,...i},b={...v,onSuccess:(...d)=>{var p;l({isSuccess:!0,isUploading:!1}),(p=v==null?void 0:v.onSuccess)==null||p.call(v,...d)},onError:d=>{var p;l({error:d,isUploading:!1}),(p=v==null?void 0:v.onError)==null||p.call(v,d,T)}},g=d=>{c(p=>({...p,upload:d}))},y=()=>{l({isUploading:!0,isAborted:!1})},N=()=>{l({isUploading:!1,isAborted:!0})},{uploadOptions:_,uploadFnOptions:h}=H(b),{upload:T,originalAbort:f}=j({Upload:n,file:u,uploadOptions:_,uploadFnOptions:h,onChange:g,onStart:y,onAbort:N});e&&K(T),c({upload:T,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}),A({originalAbort:f})},[n,e,s]),U=S(()=>{var u;(u=a==null?void 0:a.originalAbort)==null||u.call(a),c(V),A({originalAbort:void 0})},[a]),O={...r,setUpload:E,remove:U};return x({upload:O.upload,abort:a.originalAbort,autoAbort:t!=null?t:!1}),O},m={tusClientHasNotFounded:"No TusClient set, use TusClientProvider to set one",tusIsNotSupported:"This browser does not support uploads. Please use a modern browser instead."},k=R(void 0),M=R(void 0),z=()=>{const o=F(k);if(!o&&process.env.NODE_ENV!=="production")throw new Error(m.tusClientHasNotFounded);return D(()=>o,[o])},X=()=>{const o=F(M);if(!o&&process.env.NODE_ENV!=="production")throw new Error(m.tusClientHasNotFounded);return D(()=>o,[o])},Z=(o,t)=>({type:"INSERT_UPLOAD_INSTANCE",payload:{cacheKey:o,uploadState:t}}),C=(o,t)=>({type:"UPDATE_UPLOAD_CONTEXT",payload:{cacheKey:o,context:t}}),G=o=>({type:"REMOVE_UPLOAD_INSTANCE",payload:{cacheKey:o}}),$=()=>({type:"RESET_CLIENT"}),oo=o=>({type:"UPDATE_DEFAULT_OPTIONS",payload:{defaultOptions:o}}),to=(o,t={})=>{var e;const{autoAbort:s,autoStart:n,uploadOptions:r,Upload:c}=L(t),{defaultOptions:a,uploads:A}=z(),l=X(),E=S((i,v={})=>{const b={...a==null?void 0:a(i),...r,...v},g={...b,onSuccess:(...d)=>{var p;l(C(o,{isSuccess:!0,isUploading:!1})),(p=b==null?void 0:b.onSuccess)==null||p.call(b,...d)},onError:d=>{var p;l(C(o,{error:d,isUploading:!1})),(p=b==null?void 0:b.onError)==null||p.call(b,d,f)}},y=d=>{l(C(o,{upload:d}))},N=()=>{l(C(o,{isAborted:!1,isUploading:!0}))},_=()=>{l(C(o,{isAborted:!0,isUploading:!1}))},{uploadOptions:h,uploadFnOptions:T}=H(g),{upload:f}=j({Upload:c,file:i,uploadOptions:h,uploadFnOptions:T,onChange:y,onStart:N,onAbort:_});n&&K(f),l(Z(o,{upload:f,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1}))},[c,n,o,a,r,l]),U=D(()=>A[o],[o,A]),O=S(()=>{var i;(i=U==null?void 0:U.upload)==null||i.abort(),l(G(o))},[U,l,o]),u=U?{...U,setUpload:E,remove:O}:{upload:void 0,error:void 0,isSuccess:!1,isAborted:!1,isUploading:!1,setUpload:E,remove:O};return x({upload:u.upload,abort:(e=u.upload)==null?void 0:e.abort,autoAbort:s!=null?s:!1}),u},eo=()=>{const o=z(),t=X(),e=o.uploads,s=S(r=>{t(G(r))},[t]),n=S(()=>t($()),[t]);return{state:e,removeUpload:s,reset:n}},so=(o,t)=>{switch(t.type){case"INSERT_UPLOAD_INSTANCE":{const{cacheKey:e,uploadState:s}=t.payload;return{...o,uploads:{...o.uploads,[e]:s}}}case"UPDATE_UPLOAD_CONTEXT":{const{cacheKey:e,context:s}=t.payload,n=o.uploads[e];return n?{...o,uploads:{...o.uploads,[e]:{...n,...s}}}:o}case"REMOVE_UPLOAD_INSTANCE":{const{cacheKey:e}=t.payload,s=o.uploads;return delete s[e],{...o,uploads:s}}case"UPDATE_DEFAULT_OPTIONS":{const{defaultOptions:e}=t.payload;return{...o,defaultOptions:e}}case"RESET_CLIENT":return{...o,uploads:{}};default:return o}},no={uploads:{},defaultOptions:void 0},ro=({defaultOptions:o,children:t})=>{const[e,s]=q(so,{...no,defaultOptions:o});P(()=>{J||process.env.NODE_ENV==="production"||console.error(m.tusIsNotSupported)},[]),P(()=>{e.defaultOptions!==o&&s(oo(o))},[o,e.defaultOptions]);const n=w(M.Provider,{value:s},t);return w(k.Provider,{value:e},n)};export{ro as TusClientProvider,Y as useTus,eo as useTusClient,to as useTusStore};
package/dist/index.js CHANGED
@@ -123,10 +123,10 @@ const useTus = (baseOption = {}) => {
123
123
  ...baseUploadOptions,
124
124
  ...options,
125
125
  };
126
- function onSuccess() {
126
+ const onSuccess = (...args) => {
127
127
  updateTusTruthlyContext({ isSuccess: true, isUploading: false });
128
- targetOptions?.onSuccess?.(upload);
129
- }
128
+ targetOptions?.onSuccess?.(...args);
129
+ };
130
130
  const onError = (error) => {
131
131
  updateTusTruthlyContext({
132
132
  error,
@@ -253,9 +253,9 @@ const useTusStore = (cacheKey, baseOption = {}) => {
253
253
  ...defaultUploadOptions,
254
254
  ...options,
255
255
  };
256
- const onSuccess = () => {
256
+ const onSuccess = (...args) => {
257
257
  tusClientDispatch(updateUploadContext(cacheKey, { isSuccess: true, isUploading: false }));
258
- targetOptions?.onSuccess?.(upload);
258
+ targetOptions?.onSuccess?.(...args);
259
259
  };
260
260
  const onError = (error) => {
261
261
  tusClientDispatch(updateUploadContext(cacheKey, { error, isUploading: false }));
package/package.json CHANGED
@@ -1,10 +1,26 @@
1
1
  {
2
2
  "name": "use-tus",
3
- "version": "0.8.3",
3
+ "version": "0.9.0",
4
4
  "description": "React hooks for resumable file uploads using tus-js-client",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
7
7
  "types": "dist/index.d.ts",
8
+ "scripts": {
9
+ "build": "npm-run-all -s type clean build:rollup",
10
+ "build:rollup": "cross-env NODE_ENV=production rollup -c",
11
+ "test": "cross-env NODE_ENV=TEST jest",
12
+ "type": "tsc --noEmit",
13
+ "format": "npm-run-all -s format:*",
14
+ "format:fix": "prettier --write './**/*.{ts,tsx,js,jsx,json}'",
15
+ "format:lint": "eslint ./ --ext .ts,.tsx",
16
+ "clean": "rimraf ./dist",
17
+ "prepublishOnly": "npm run build",
18
+ "prepare": "husky install",
19
+ "storybook": "storybook dev -p 6006",
20
+ "storybook:build": "storybook build",
21
+ "storybook:static": "gh-pages -d storybook-static",
22
+ "storybook:deploy": "npm-run-all -s storybook:build storybook:static"
23
+ },
8
24
  "keywords": [
9
25
  "react",
10
26
  "react-hooks",
@@ -31,19 +47,19 @@
31
47
  "@rollup/plugin-commonjs": "^18.0.0",
32
48
  "@rollup/plugin-node-resolve": "^11.2.1",
33
49
  "@rollup/plugin-typescript": "^8.3.0",
34
- "@storybook/addon-actions": "^7.5.1",
35
- "@storybook/addon-essentials": "^7.5.1",
36
- "@storybook/addon-links": "^7.5.1",
37
- "@storybook/react": "^7.5.1",
38
- "@storybook/react-vite": "^7.5.1",
50
+ "@storybook/addon-docs": "^10.3.5",
51
+ "@storybook/addon-links": "^10.3.5",
52
+ "@storybook/react": "^10.3.5",
53
+ "@storybook/react-vite": "^10.3.5",
39
54
  "@testing-library/jest-dom": "^6.1.4",
40
55
  "@testing-library/react": "^13.3.0",
41
56
  "@types/jest": "^29.5.6",
57
+ "@types/node": "^25.6.0",
42
58
  "@types/react": "^17.0.3",
43
59
  "@types/react-dom": "^17.0.3",
44
60
  "@typescript-eslint/eslint-plugin": "^6.8.0",
45
61
  "@typescript-eslint/parser": "^6.8.0",
46
- "autoprefixer": "^9",
62
+ "autoprefixer": "^10.5.0",
47
63
  "clsx": "^1.1.1",
48
64
  "cross-env": "^7.0.3",
49
65
  "esbuild": "^0.19.5",
@@ -55,44 +71,33 @@
55
71
  "eslint-plugin-prettier": "^5.0.1",
56
72
  "eslint-plugin-react": "^7.33.2",
57
73
  "eslint-plugin-react-hooks": "^4.6.0",
58
- "eslint-plugin-storybook": "^0.6.15",
74
+ "eslint-plugin-storybook": "^10.3.5",
59
75
  "gh-pages": "^3.1.0",
76
+ "gsap": "^3.15.0",
60
77
  "husky": "^6.0.0",
61
78
  "jest": "^29.7.0",
62
79
  "jest-dom": "^4.0.0",
63
80
  "jest-environment-jsdom": "^29.7.0",
64
81
  "lint-staged": "^10.5.4",
82
+ "motion": "^12.38.0",
65
83
  "npm-run-all": "^4.1.5",
66
- "postcss": "^7",
84
+ "postcss": "^8.5.10",
67
85
  "prettier": "^2.2.1",
68
86
  "react": "^18.1.0",
69
87
  "react-dom": "^18.1.0",
70
88
  "rimraf": "^3.0.2",
71
89
  "rollup": "^2.44.0",
72
90
  "rollup-plugin-esbuild": "^6.1.0",
73
- "storybook": "^7.5.1",
74
- "tailwindcss": "npm:@tailwindcss/postcss7-compat",
91
+ "storybook": "^10.3.5",
92
+ "tailwindcss": "^3.4.0",
75
93
  "ts-jest": "^29.1.1",
76
- "tus-js-client": "4.0.0",
94
+ "tus-js-client": "4.3.1",
77
95
  "typescript": "^5.2.2",
78
96
  "vite": "^4.5.0"
79
97
  },
80
98
  "peerDependencies": {
81
99
  "react": ">=16.8",
82
- "tus-js-client": ">=2.2.0"
100
+ "tus-js-client": ">=2.2.0 <5.0.0"
83
101
  },
84
- "scripts": {
85
- "build": "npm-run-all -s type clean build:rollup",
86
- "build:rollup": "cross-env NODE_ENV=production rollup -c",
87
- "test": "cross-env NODE_ENV=TEST jest",
88
- "type": "tsc --noEmit",
89
- "format": "npm-run-all -s format:*",
90
- "format:fix": "prettier --write './**/*.{ts,tsx,js,jsx,json}'",
91
- "format:lint": "eslint ./ --ext .ts,.tsx",
92
- "clean": "rimraf ./dist",
93
- "storybook": "storybook dev -p 6006",
94
- "storybook:build": "storybook build",
95
- "storybook:static": "gh-pages -d storybook-static",
96
- "storybook:deploy": "npm-run-all -s storybook:build storybook:static"
97
- }
98
- }
102
+ "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319"
103
+ }