third_party/polymer3/bower_components/polymer/lib/utils/gestures.js
function _fire(target, type, detail) {
  let ev = new Event(type, { bubbles: true, cancelable: true, composed: true });
  ev.detail = detail;
  target.dispatchEvent(ev);
  // forward `preventDefault` in a clean way
  if (ev.defaultPrevented) {
    let preventer = detail.preventer || detail.sourceEvent;
    if (preventer && preventer.preventDefault) {
      preventer.preventDefault();
    }
  }
}
function _fire(target, type, detail) {
  let ev = new Event(type, { bubbles: true, cancelable: true, composed: true });
  ev.detail = detail;
  target.dispatchEvent(ev);
  // forward `preventDefault` in a clean way
  if (ev.defaultPrevented) {
    let preventer = detail.preventer || detail.sourceEvent;
    if (preventer && preventer.preventDefault) {
      preventer.preventDefault();
    }
  }
}
function _fire ( target , type , detail ) { let ev = new Event ( type , { bubbles : true , cancelable : true , composed : true } ) ; ev . detail = detail ; target . dispatchEvent ( ev ) ; // forward `preventDefault` in a clean way if ( ev . defaultPrevented ) { let preventer = detail . preventer || detail . sourceEvent ; if ( preventer && preventer . preventDefault ) { preventer . preventDefault ( ) ; } } }
Dispatches an event on the `target` element of `type` with the given
`detail`.
@private
@param {!EventTarget} target The element on which to fire an event.
@param {string} type The type of event to fire.
@param {!Object=} detail The detail object to populate on the event.
@return {void}
Dispatches an event on the target element of type with the given detail .