   focus
   blur
 
+  pointerClick
+  pointerUpInside
+  pointerUpOutside
+  pointerMoveIn
+  pointerMoveOut
+
+TODO:
+  Rename these events:
+
+    mouseMove => cursorMove
+    mouseIn   => cursorMoveIn
+    mouseOut  => cursorMoveOut
+
 DESIGN NOTES
 Purpose:
   Support Touch and Mouse events.

      return unless !pointer.location.eq location

      @activePointers[id] = pointer = pointer.moved location
      @queuePointerEvents "pointerMove", pointer, timeStampInPerformanceSeconds

    mouseDown: (location, timeStampInPerformanceSeconds) -> @pointerDown "mousePointer", location, timeStampInPerformanceSeconds


    queuePointerEventForElements: (elements, type, pointer, timeStampInPerformanceSeconds) ->
      elements = prioritySortElements elements.slice()
      for element in elements
        @queuePointerEventForElement element, type, pointer, timeStampInPerformanceSeconds

    queuePointerEvents: (type, pointer, timeStampInPerformanceSeconds) ->
      @forEachReceivingElement (e) =>
        @queuePointerEventForElement e, type, pointer, timeStampInPerformanceSeconds

    forEachReceivingElement: (f) ->
      if e = @capturingElement
        f e
      else
        f e for e in @currentFocusedPath

    queueMouseEvents: (type, pointer, timeStampInPerformanceSeconds) ->
      @queuePointerEventForElements @currentMousePath, type, pointer, timeStampInPerformanceSeconds
