text: import warning from 'warning';
  
  var scrollbarWidth = void 0;
  
  // Measure scrollbar width for padding body during modal show/hide
  var scrollbarMeasure = {
    position: 'absolute',
    top: '-9999px',
    width: '50px',
    height: '50px',
    overflow: 'scroll'
  };
  
  export function measureScrollbar() {
    if (typeof document === 'undefined' || typeof window === 'undefined') {
      return 0;
    }
    if (scrollbarWidth) {
      return scrollbarWidth;
    }
    var scrollDiv = document.createElement('div');
    for (var scrollProp in scrollbarMeasure) {
      if (scrollbarMeasure.hasOwnProperty(scrollProp)) {
        scrollDiv.style[scrollProp] = scrollbarMeasure[scrollProp];
      }
    }
    document.body.appendChild(scrollDiv);
    var width = scrollDiv.offsetWidth - scrollDiv.clientWidth;
    document.body.removeChild(scrollDiv);
    scrollbarWidth = width;
    return scrollbarWidth;
  }
  
  export function debounce(func, wait, immediate) {
    var timeout = void 0;
    function debounceFunc() {
      var context = this;
      var args = arguments;
      // https://fb.me/react-event-pooling
      if (args[0] && args[0].persist) {
        args[0].persist();
      }
      var later = function later() {
        timeout = null;
        if (!immediate) {
          func.apply(context, args);
        }
      };
      var callNow = immediate && !timeout;
      clearTimeout(timeout);
      timeout = setTimeout(later, wait);
      if (callNow) {
        func.apply(context, args);
      }
    }
    debounceFunc.cancel = function cancel() {
      if (timeout) {
        clearTimeout(timeout);
        timeout = null;
      }
    };
    return debounceFunc;
  }
  
  var warned = {};
  export function warningOnce(condition, format, args) {
    if (!warned[format]) {
      warning(condition, format, args);
      warned[format] = !condition;
    }
  }
  
  export function remove(array, item) {
    var index = array.indexOf(item);
    var front = array.slice(0, index);
    var last = array.slice(index + 1, array.length);
    return front.concat(last);
  }