define([

], function () {

function HidePlaceholder (decorated, $element, options, dataAdapter) {
  this.placeholder = this.normalizePlaceholder(options.get('placeholder'));

  decorated.call(this, $element, options, dataAdapter);
}

HidePlaceholder.prototype.append = function (decorated, data) {
  data.results = this.removePlaceholder(data.results);

  decorated.call(this, data);
};

HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
  if (typeof placeholder === 'string') {
    placeholder = {
      id: '',
      text: placeholder
    };
  }

  return placeholder;
};

HidePlaceholder.prototype.removePlaceholder = function (_, data) {
  var modifiedData = data.slice(0);

  for (var d = data.length - 1; d >= 0; d--) {
    var item = data[d];

    if (this.placeholder.id === item.id) {
      modifiedData.splice(d, 1);
    }
  }

  return modifiedData;
};

return HidePlaceholder;

});