Wrap any function-as-child component to turn it into a Drop zone that reads the contents of files. A prescribed method for reading files in the browser.
import Dropperx from 'dropperx'
// inside component tree
<Dropperx
onDrop={files => this.setState({ files })}
accept="image/png"
maxSize={10000}
>
{({ canDrop, files, history }) => (
<Overlay title={`Drop your files here to import ${canDrop ? 'β' : 'β'}`}>
<Upload filesContents={files.map(file => file.content)} />
{history.map(bundle => (
<li>bundle</li>
))}
</Overlay>
)}
</Dropperx>onDrop(files): Callback called with an array of files dropped. Get the contents of the file fromfiles[0].contentfilter: Function passed tofiles.filter(filter). Lets you control which files are read.accept: List of comma separated MIME typesminSize: Minimum file sizemaxSize: Maximum file size
The function you pass into Dropperx is called with a single object containing these keys:
isOver: Boolean that says whether cursor is over the targetcanDrop: Boolean that states if able to drop on the window. This is true if the cursor is holding filesfiles: Array of files that were last dropped.nullif nothing has been dropped.history: Array of past dropped contents.history[0]contains the array of files last dropped.
MIT