dropperx
Version:
File drop target
3 lines (2 loc) • 1.38 kB
JavaScript
import t from"react";import e from"react-dropzone";var r="DATA_URL",n="TEXT",o={outline:"none"};var i=function(i){function a(){for(var t=this,e=[],o=arguments.length;o--;)e[o]=arguments[o];i.apply(this,e),this.state={lastContent:null,history:[]},this.handleDrop=function(e){if(e[0]){var o=new FileReader;Promise.all(e.filter(t.props.filter).map(function(t){return new Promise(function(e){o.onload=function(r){t.content=r.target.result,e(t)},function(t){if(""===t.type)return r;switch(t.type.split("/")[0]){case"application":case"text":return n;case"image":case"video":return r;default:return n}}(t)===r?o.readAsDataURL(t):o.readAsText(t,"UTF-8")})})).then(function(e){t.setState(function(t){return{lastContent:e,history:[e].concat(t.history)}}),t.props.onDrop(e)})}}}return i&&(a.__proto__=i),(a.prototype=Object.create(i&&i.prototype)).constructor=a,a.prototype.render=function(){var r=this;return t.createElement(e,{onDrop:this.handleDrop,accept:this.props.accept,minSize:this.props.minSize,maxSize:this.props.maxSize},function(e){var n=e.isDragActive,i=e.isDragAccept,a=(0,e.getRootProps)();return t.createElement("div",Object.assign({},a,{style:o}),r.props.children({isOver:n,canDrop:i,files:r.state.lastContent,history:r.state.history}))})},a}(t.Component);i.defaultProps={filter:function(t){return t},onDrop:function(){}};export default i;
//# sourceMappingURL=index.mjs.map