mirror of
https://github.com/NoCrypt/migu.git
synced 2026-03-11 17:45:32 +00:00
31 lines
929 B
JavaScript
31 lines
929 B
JavaScript
import 'browser-event-target-emitter'
|
|
|
|
export default new class extends EventTarget {
|
|
constructor () {
|
|
super()
|
|
window.on('drop', this.handleTransfer.bind(this))
|
|
window.on('paste', this.handleTransfer.bind(this))
|
|
window.on('dragover', e => e.preventDefault())
|
|
}
|
|
|
|
async handleTransfer ({ dataTransfer, clipboardData }) {
|
|
const promises = [...(dataTransfer || clipboardData).items].map(item => {
|
|
const type = item.type
|
|
return new Promise(resolve => item.kind === 'string' ? item.getAsString(text => resolve({ text, type })) : resolve(item.getAsFile()))
|
|
})
|
|
|
|
const items = await Promise.all(promises)
|
|
|
|
const files = []
|
|
const text = []
|
|
for (const item of items) {
|
|
if (item instanceof Blob) {
|
|
files.push(item)
|
|
} else {
|
|
text.push(item)
|
|
}
|
|
}
|
|
if (files.length) this.emit('files', files)
|
|
if (text.length) this.emit('text', text)
|
|
}
|
|
}()
|