UNPKG

@uploadcare/react-uploader

Version:

React component for file uploads using Uploadcare

2 lines (1 loc) 2.66 kB
"use strict";const f=require("react"),y=require("@uploadcare/file-uploader");function b(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const v=b(y),h=new Set(["children","ref","style","className"]),O=(e={})=>Object==null?void 0:Object.keys(e).reduce((t,r)=>{var s,n;const o=e==null?void 0:e[r],a=`on${(n=(s=o==null?void 0:o.split("-"))==null?void 0:s.map(c=>c.charAt(0).toUpperCase()+c.slice(1)))==null?void 0:n.join("")}`;return t[a]=o,t},{}),m=new WeakMap,j=e=>{let t=m.get(e);return t===void 0&&(t=new Map,m.set(e,t)),t},E=({node:e,nameProp:t,valueProp:r,prevValueProp:s,event:n})=>{if(n!==void 0){if(r!==s){const o=j(e),a=o.has(n);let c=o.get(n);r!==void 0?a?c.handleEvent=r:(c={handleEvent:r},o.set(n,c),e.addEventListener(n,l=>c.handleEvent(l.detail))):a&&(o.delete(n),e.removeEventListener(n,c))}return}e[t]=r,r==null&&t in HTMLElement.prototype&&e.removeAttribute(t)},U=(e,t,r)=>{const s={},n={};return Object.entries(e).forEach(([o,a])=>{h.has(o)?s[o==="className"?"class":o]=a:t.has(o)||o in r.prototype?n[o]=a:s[o]=a}),{reactProps:s,customElProps:n}},g=({react:e,tag:t,elClass:r,schemaEvents:s})=>{const n=O(s),o=new Set(Object.keys(n??{})),a=e.forwardRef((c,l)=>{const d=e.useRef(new Map),p=e.useRef(null),{reactProps:C,customElProps:P}=U(c,o,r);return e.useLayoutEffect(()=>{if(p.current===null)return;const i=new Map;for(const u in P)E({node:p.current,nameProp:u,valueProp:P[u],prevValueProp:d.current.get(u),event:n[u]}),d.current.delete(u),i.set(u,c[u]);for(const[u,w]of d.current)E({node:p.current,nameProp:u,valueProp:void 0,prevValueProp:w,event:n[u]});d.current=i}),e.createElement(t??r.__tag,{...C,ref:e.useCallback(i=>{p.current=i,typeof l=="function"?l(i):l!==null&&(l.current=i)},[l])})});return a.displayName=r.name,a},A=g({react:f,tag:"uc-config",elClass:v.Config}),M=g({react:f,tag:"uc-upload-ctx-provider",elClass:v.UploadCtxProvider,schemaEvents:v.UploadCtxProvider.EventType}),N=e=>{const t={},r={},s={};for(const[n,o]of Object.entries(e)){if(n.startsWith("on")){t[n]=o;continue}if(n==="headless"){s[n]=o;continue}r[n]=o}return{eventHandlers:t,uploader:s,config:r}},S="1.10.0",I="React-Uploader",_=()=>`${I}/${S}`,k=({children:e})=>e,x=()=>{const[e,t]=f.useState(!1);return f.useEffect(()=>{typeof window<"u"&&t(!0)},[]),e};exports.AdapterConfig=A;exports.AdapterUploadCtxProvider=M;exports.ConditionalSuspense=k;exports.getCalcPropertyOfProps=N;exports.getUserAgentIntegration=_;exports.j=g;exports.useIsBrowser=x;