(function() {
  // Utility function for searching by a word.
  var filterItems, hasWordInString;

  hasWordInString = function(word) {
    return this.indexOf(word) !== -1;
  };

  // Function for filtering items by an array of words
  filterItems = function($el) {
    var $items, words;
    words = $el.val().toLowerCase();
    $items = $("[data-element=item]");
    
    // Split `text` to a space-delimited array.
    // We will search by this array later.
    words = words.split(" ");
    
    // Hide all items on event.
    $items.attr('data-filtered', false);
    
    // Is the first item of `text` a non-empty string?
    // Cool. Filter the items and show them.
    if (words[0].length > 0) {
      
      // Iterate through the array of words.
      // If any of those words are found in
      // the `itemText`, this will return `true`.
      // This tells the filter that this item
      // matches the search, which then shows it.
      $items = $items.filter(function() {
        var item;
        item = $(this);
        return words.every(hasWordInString, item.text().toLowerCase());
      });
      
      // Show filtered items
      $items.attr('data-filtered', 'true');
    } else {
      
      // Text input is empty? Show all items.
      $items.removeAttr('data-filtered');
    }
  };

  // Bind actions to event handlers
  $("[data-action]").each(function() {
    var $el, action;
    $el = $(this);
    action = $el.data('action');
    if (action === 'text-search') {
      return $el.on('keyup', function(event) {
        return filterItems($el);
      });
    }
  });

}).call(this);

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiPGFub255bW91cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQTJDO0VBQUE7QUFBQSxNQUFBLFdBQUEsRUFBQTs7RUFDM0MsZUFBQSxHQUFrQixRQUFBLENBQUMsSUFBRCxDQUFBO1dBQVUsSUFBQyxDQUFBLE9BQUQsQ0FBUyxJQUFULENBQUEsS0FBb0IsQ0FBQztFQUEvQixFQUR5Qjs7O0VBSTNDLFdBQUEsR0FBYyxRQUFBLENBQUMsR0FBRCxDQUFBO0FBQ2QsUUFBQSxNQUFBLEVBQUE7SUFBRSxLQUFBLEdBQVEsR0FBRyxDQUFDLEdBQUosQ0FBQSxDQUFTLENBQUMsV0FBVixDQUFBO0lBQ1IsTUFBQSxHQUFTLENBQUEsQ0FBRSxxQkFBRixFQURYOzs7O0lBS0UsS0FBQSxHQUFRLEtBQUssQ0FBQyxLQUFOLENBQVksR0FBWixFQUxWOzs7SUFRRSxNQUFNLENBQUMsSUFBUCxDQUFZLGVBQVosRUFBNkIsS0FBN0IsRUFSRjs7OztJQVlFLElBQUcsS0FBSyxDQUFDLENBQUQsQ0FBRyxDQUFDLE1BQVQsR0FBa0IsQ0FBckI7Ozs7Ozs7TUFPRSxNQUFBLEdBQVMsTUFBTSxDQUFDLE1BQVAsQ0FBYyxRQUFBLENBQUEsQ0FBQTtBQUMzQixZQUFBO1FBQU0sSUFBQSxHQUFPLENBQUEsQ0FBRSxJQUFGO0FBQ1AsZUFBTyxLQUFLLENBQUMsS0FBTixDQUFZLGVBQVosRUFBNkIsSUFBSSxDQUFDLElBQUwsQ0FBQSxDQUFXLENBQUMsV0FBWixDQUFBLENBQTdCO01BRmMsQ0FBZCxFQUxiOzs7TUFXSSxNQUFNLENBQUMsSUFBUCxDQUFZLGVBQVosRUFBNkIsTUFBN0IsRUFiRjtLQUFBLE1BQUE7OztNQWdCSyxNQUFNLENBQUMsVUFBUCxDQUFrQixlQUFsQixFQWhCTDs7RUFiWSxFQUo2Qjs7O0VBdUMzQyxDQUFBLENBQUUsZUFBRixDQUFrQixDQUFDLElBQW5CLENBQXdCLFFBQUEsQ0FBQSxDQUFBO0FBQ3hCLFFBQUEsR0FBQSxFQUFBO0lBQUUsR0FBQSxHQUFTLENBQUEsQ0FBRSxJQUFGO0lBQ1QsTUFBQSxHQUFTLEdBQUcsQ0FBQyxJQUFKLENBQVMsUUFBVDtJQUVULElBQUcsTUFBQSxLQUFVLGFBQWI7YUFBZ0MsR0FBRyxDQUFDLEVBQUosQ0FBTyxPQUFQLEVBQWdCLFFBQUEsQ0FBQyxLQUFELENBQUE7ZUFBVyxXQUFBLENBQVksR0FBWjtNQUFYLENBQWhCLEVBQWhDOztFQUpzQixDQUF4QjtBQXZDMkMiLCJzb3VyY2VzQ29udGVudCI6WyIjIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHNlYXJjaGluZyBieSBhIHdvcmQuXG5oYXNXb3JkSW5TdHJpbmcgPSAod29yZCkgLT4gQGluZGV4T2Yod29yZCkgaXNudCAtMVxuXG4jIEZ1bmN0aW9uIGZvciBmaWx0ZXJpbmcgaXRlbXMgYnkgYW4gYXJyYXkgb2Ygd29yZHNcbmZpbHRlckl0ZW1zID0gKCRlbCkgLT5cbiAgd29yZHMgPSAkZWwudmFsKCkudG9Mb3dlckNhc2UoKVxuICAkaXRlbXMgPSAkKFwiW2RhdGEtZWxlbWVudD1pdGVtXVwiKVxuICBcbiAgIyBTcGxpdCBgdGV4dGAgdG8gYSBzcGFjZS1kZWxpbWl0ZWQgYXJyYXkuXG4gICMgV2Ugd2lsbCBzZWFyY2ggYnkgdGhpcyBhcnJheSBsYXRlci5cbiAgd29yZHMgPSB3b3Jkcy5zcGxpdChcIiBcIilcbiAgXG4gICMgSGlkZSBhbGwgaXRlbXMgb24gZXZlbnQuXG4gICRpdGVtcy5hdHRyKCdkYXRhLWZpbHRlcmVkJywgZmFsc2UpXG4gIFxuICAjIElzIHRoZSBmaXJzdCBpdGVtIG9mIGB0ZXh0YCBhIG5vbi1lbXB0eSBzdHJpbmc/XG4gICMgQ29vbC4gRmlsdGVyIHRoZSBpdGVtcyBhbmQgc2hvdyB0aGVtLlxuICBpZiB3b3Jkc1swXS5sZW5ndGggPiAwXG4gICAgXG4gICAgIyBJdGVyYXRlIHRocm91Z2ggdGhlIGFycmF5IG9mIHdvcmRzLlxuICAgICMgSWYgYW55IG9mIHRob3NlIHdvcmRzIGFyZSBmb3VuZCBpblxuICAgICMgdGhlIGBpdGVtVGV4dGAsIHRoaXMgd2lsbCByZXR1cm4gYHRydWVgLlxuICAgICMgVGhpcyB0ZWxscyB0aGUgZmlsdGVyIHRoYXQgdGhpcyBpdGVtXG4gICAgIyBtYXRjaGVzIHRoZSBzZWFyY2gsIHdoaWNoIHRoZW4gc2hvd3MgaXQuXG4gICAgJGl0ZW1zID0gJGl0ZW1zLmZpbHRlciAtPlxuICAgICAgaXRlbSA9ICQodGhpcylcbiAgICAgIHJldHVybiB3b3Jkcy5ldmVyeShoYXNXb3JkSW5TdHJpbmcsIGl0ZW0udGV4dCgpLnRvTG93ZXJDYXNlKCkpXG4gICAgICByZXR1cm5cbiAgICBcbiAgICAjIFNob3cgZmlsdGVyZWQgaXRlbXNcbiAgICAkaXRlbXMuYXR0cignZGF0YS1maWx0ZXJlZCcsICd0cnVlJylcbiAgXG4gICMgVGV4dCBpbnB1dCBpcyBlbXB0eT8gU2hvdyBhbGwgaXRlbXMuXG4gIGVsc2UgJGl0ZW1zLnJlbW92ZUF0dHIoJ2RhdGEtZmlsdGVyZWQnKVxuXG4gIHJldHVyblxuXG5cbiMgQmluZCBhY3Rpb25zIHRvIGV2ZW50IGhhbmRsZXJzXG4kKFwiW2RhdGEtYWN0aW9uXVwiKS5lYWNoIC0+XG4gICRlbCAgICA9ICQoQClcbiAgYWN0aW9uID0gJGVsLmRhdGEoJ2FjdGlvbicpXG4gIFxuICBpZiBhY3Rpb24gPT0gJ3RleHQtc2VhcmNoJyB0aGVuICRlbC5vbiAna2V5dXAnLCAoZXZlbnQpIC0+IGZpbHRlckl0ZW1zKCRlbClcbiAgIl19
//# sourceURL=coffeescript