| define([
], function () {
  function countResults (data) {
    var count = 0;
    for (var d = 0; d < data.length; d++) {
      var item = data[d];
      if (item.children) {
        count += countResults(item.children);
      } else {
        count++;
      }
    }
    return count;
  }
  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
    if (this.minimumResultsForSearch < 0) {
      this.minimumResultsForSearch = Infinity;
    }
    decorated.call(this, $element, options, dataAdapter);
  }
  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
    if (countResults(params.data.results) < this.minimumResultsForSearch) {
      return false;
    }
    return decorated.call(this, params);
  };
  return MinimumResultsForSearch;
});
 |