Example #1
0
  onDragEnter = e => {
    e.dataTransfer.dropEffect = 'copy'

    this.messenger.send({
      action: 'dragenter',
    })
  }
Example #2
0
  onStartDrag = e => {
    this.messenger.send({
      action: 'drag',
    })

    e.dataTransfer.effectAllowed = 'copyMove'

    if (
      typeof e.dataTransfer.getData('text/html') === 'undefined' ||
      e.target.tagName === 'IMG'
    ) {
      const targetParent = document.createElement('A')

      const parentHTML = targetParent.cloneNode(false)
      const targetImage = e.target.cloneNode(false)

      parentHTML.appendChild(targetImage)
      e.dataTransfer.setData('text/html', parentHTML.outerHTML)
    }

    // Show the drop target
    this.dragTarget.style.display = 'flex'
    this.dragTarget.style.opacity = 1

    // Hide the underlying iframe
    this.hideIframe()
  }
Example #3
0
  sendData = msg => {
    const data = new DataExtractor().extractSelection(msg)

    if (data.type) {
      this.messenger.send({
        action: 'drop',
        value: data,
      })
    }
  }
Example #4
0
  onDrop = e => {
    e.stopPropagation()
    e.preventDefault()

    const data = new DataExtractor(e).extract()

    this.messenger.send({
      action: 'drop',
      value: data,
    })

    return false
  }
Example #5
0
  sendCurrentPage = () => {
    let { data } = new DataExtractor()

    data = {
      ...data,
      type: 'Link',
      value: window.location.href,
      url: window.location.href,
      title: document.title,
    }

    this.messenger.send({
      action: 'currentPage',
      value: data,
    })
  }
Example #6
0
 saveCurrentPage = () => {
   this.messenger.send({
     action: 'saveCurrentPage',
   })
 }
Example #7
0
 onDragLeave = () => {
   this.messenger.send({
     action: 'dragleave',
   })
 }