@uploadcare/react-widget
Version:
React File Uploader. React component with uploading from multiple sources
2 lines (1 loc) • 3.36 kB
JavaScript
;var e=require("./index-838bb604.cjs"),n=require("react"),r=require("uploadcare-widget"),t=require("./default-preview-url-callback-73cf76e2.cjs"),a=require("react-fast-compare");var u=["id","name","value","onFileSelect","onChange","onDialogOpen","onDialogClose","onTabChange","apiRef","customTabs","validators","tabsCss","locale","localeTranslations","localePluralize","previewUrlCallback","metadataCallback"],l=function(r,l){var o=r.id,c=r.name,i=r.value,s=r.onFileSelect,f=r.onChange,d=r.onDialogOpen,C=r.onDialogClose,p=r.onTabChange,m=r.apiRef,v=r.customTabs,b=r.validators,E=r.tabsCss,g=r.locale,A=r.localeTranslations,L=r.localePluralize,O=r.previewUrlCallback,w=r.metadataCallback,k=e._objectWithoutProperties(r,u),D=n.useRef(null),R=n.useRef(null),h=n.useRef(null),U=t.useCommitedCallback(s),P=t.useCommitedCallback(f),_=t.useCommitedCallback(d),T=t.useCommitedCallback(C),S=t.useCommitedCallback(p),I=t.useCommitedCallback(w),j=t.useCommitedCallback(O||t.defaultPreviewUrlCallback),q=function(e,r){var t=!0,u=n.useRef();u.current?t=!!(r&&u.current.deps&&a(r,u.current.deps)):u.current={deps:r,result:e()};var l=t?u.current:{deps:r,result:e()};return u.current=l,l.result}((function(){return k}),[k]);return t.useCustomTabs(v,l),t.useDeepEffect((function(){return g&&(window.UPLOADCARE_LOCALE=g),L&&(window.UPLOADCARE_LOCALE_PLURALIZE=L),A&&(window.UPLOADCARE_LOCALE_TRANSLATIONS=A),l.plugin((function(e){e.locale.rebuild({locale:g||null,localeTranslations:A||null,localePluralize:L||null})})),function(){g&&delete window.UPLOADCARE_LOCALE,L&&delete window.UPLOADCARE_LOCALE_PLURALIZE,A&&delete window.UPLOADCARE_LOCALE_TRANSLATIONS}}),[g,A,L]),n.useEffect((function(){var n=D.current;R.current=l.Widget(n,e._objectSpread2(e._objectSpread2({},q),{},{metadataCallback:q.metadata?void 0:I,previewUrlCallback:j}));var r=n.nextSibling;return h.current&&R.current.value(h.current),function(){l.jQuery(n).removeData("uploadcareWidget"),r&&r.remove()}}),[l,q,I,j]),function(e,r){n.useEffect((function(){if(null!=r){var n=e.current;return r.forEach((function(e){n.validators.push(e)})),function(){n.validators.length=0}}}),[e,r])}(R,b),n.useEffect((function(){return R.current.onUploadComplete.add(P),R.current.onChange.add(U),function(){R.current.onUploadComplete.remove(P),R.current.onChange.remove(U)}}),[P,U,l,q]),n.useEffect((function(){var e,n=function(n){(e=n).done(T).fail(T).progress(S),_(n)};return R.current.onDialogOpen.add(n),function(){R.current.onDialogOpen.remove(n),e&&e.reject()}}),[T,_,S,q]),n.useEffect((function(){var e=[],n=function(n){e=n?n.files?n.files():[n]:[]};return R.current.onChange.add(n),function(){e.forEach((function(e){return e.cancel()})),R.current.onChange.remove(n)}}),[q]),n.useEffect((function(){h.current!==i&&R.current.value(i),h.current=i}),[i]),n.useEffect((function(){l&&E&&"string"==typeof E&&(0===E.indexOf("https://")?l.tabsCss.addUrl(E):l.tabsCss.addStyle(E))}),[l,E]),n.useImperativeHandle(m,(function(){return{openDialog:function(){return R.current.openDialog()},reloadInfo:function(){return R.current.reloadInfo()},getInput:function(){return R.current.inputElement},value:function(e){return R.current.value(e)}}}),[]),n.useCallback((function(){return n.createElement("input",{type:"hidden",ref:D,id:o,name:c})}),[o,c])};exports.default=function(e){var t=l(e,r);return n.createElement(t,null)};