dist/decorators.js
function debounce(n, immed, f) {
    var _ref3 = function () {
      switch (_extractHiddenClass(immed)) {
        case 'Boolean':
          return [f, immed];
        case 'Function':
          return [immed, false];
        default:
          throw new TypeError('Unrecognized arguments ' + immed + ' and ' + f + ' to function debounce.');
      }
    }(),
        _ref4 = _slicedToArray(_ref3, 2),
        fn = _ref4[0],
        now = _ref4[1];

    var timer = null;
    return function () {
      var _this = this;

      for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }

      if (timer === null && now) {
        fn.apply(this, args);
      }
      clearTimeout(timer);
      timer = setTimeout(function () {
        return fn.apply(_this, args);
      }, n);
      return timer;
    };
  }
function debounce(n, immed, f) {
    var _ref3 = function () {
      switch (_extractHiddenClass(immed)) {
        case 'Boolean':
          return [f, immed];
        case 'Function':
          return [immed, false];
        default:
          throw new TypeError('Unrecognized arguments ' + immed + ' and ' + f + ' to function debounce.');
      }
    }(),
        _ref4 = _slicedToArray(_ref3, 2),
        fn = _ref4[0],
        now = _ref4[1];

    var timer = null;
    return function () {
      var _this = this;

      for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }

      if (timer === null && now) {
        fn.apply(this, args);
      }
      clearTimeout(timer);
      timer = setTimeout(function () {
        return fn.apply(_this, args);
      }, n);
      return timer;
    };
  }
debounce :: Number -> (* -> Null) -> Number Delay in milliseconds. Returns the timer ID so caller can cancel