     setData: (key, value) -> @data[key] = "#{value}" # Drag events stringify data values
     getData: (key) -> @data[key]
     files: []
+
+  Object.defineProperty(
+    dataTransfer,
+    'items',
+    get: ->
+      Object.keys(dataTransfer.data).map((key) -> {type: key})
+  )
 
   dropEvent = new DragEvent('drop')
   Object.defineProperty(dropEvent, 'target', value: dropTarget)

    getData: (key) -> @data[key]
    setDragImage: (@image) -> return

  dragStartEvent = new DragEvent('dragstart')
  Object.defineProperty(dragStartEvent, 'target', value: dragged)
  Object.defineProperty(dragStartEvent, 'currentTarget', value: dragged)

    setData: (key, value) -> @data[key] = "#{value}" # Drag events stringify data values
    getData: (key) -> @data[key]
    setDragImage: (@image) -> return

  Object.defineProperty(
    dataTransfer,
    'items',
    get: ->
      Object.keys(dataTransfer.data).map((key) -> {type: key})
  )

  dragStartEvent = new DragEvent('dragstart')
  Object.defineProperty(dragStartEvent, 'target', value: dragged)
