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