Example #1
0
  onDropOrPaste = (event, change, editor) => {
    const target = getEventRange(event, change.value)
    if (!target && event.type == 'drop') return

    const transfer = getEventTransfer(event)
    const { type, text, files } = transfer

    if (type == 'files') {
      for (const file of files) {
        const reader = new FileReader()
        const [mime] = file.type.split('/')
        if (mime != 'image') continue

        reader.addEventListener('load', () => {
          editor.change(c => {
            c.call(insertImage, reader.result, target)
          })
        })

        reader.readAsDataURL(file)
      }
    }

    if (type == 'text') {
      if (!isUrl(text)) return
      if (!isImage(text)) return
      change.call(insertImage, text, target)
    }
  }
Example #2
0
 onPaste = (event, change) => {
   const transfer = getEventTransfer(event)
   if (transfer.type != 'html') return
   const { document } = serializer.deserialize(transfer.html)
   change.insertFragment(document)
   return true
 }
Example #3
0
  onPaste = (event, change) => {
    if (change.value.isCollapsed) return

    const transfer = getEventTransfer(event)
    const { type, text } = transfer
    if (type != 'text' && type != 'html') return
    if (!isUrl(text)) return

    if (this.hasLinks()) {
      change.call(unwrapLink)
    }

    change.call(wrapLink, text)
    return true
  }
Example #4
0
 onPaste = (event, editor, next) => {
   const transfer = getEventTransfer(event)
   if (transfer.type !== 'html') return next()
   const { document } = serializer.deserialize(transfer.html)
   editor.insertFragment(document)
 }