code: function constructSelectEvent(nativeEvent, nativeEventTarget) {
    // Ensure we have the right element, and that the user is not dragging a
    // selection (this matches native `select` event behavior). In HTML5, select
    // fires only on input and textarea thus if there's no focused element we
    // won't dispatch.
    if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {
      return null;
    }
  
    // Only fire when selection has actually changed.
    var currentSelection = getSelection(activeElement);
    if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
      lastSelection = currentSelection;
  
      var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);
  
      syntheticEvent.type = 'select';
      syntheticEvent.target = activeElement;
  
      EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);
  
      return syntheticEvent;
    }
  
    return null;
  }
docs: Poll selection to see whether it's changed.
  
  @param {object} nativeEvent
  @return {?SyntheticEvent}