20690: Remove workbench1 and testing/packaging references.
[arvados.git] / apps / workbench / app / assets / javascripts / list.js
diff --git a/apps/workbench/app/assets/javascripts/list.js b/apps/workbench/app/assets/javascripts/list.js
deleted file mode 100644 (file)
index d8ea7ba..0000000
+++ /dev/null
@@ -1,1474 +0,0 @@
-;(function(){
-
-/**
- * Require the given path.
- *
- * @param {String} path
- * @return {Object} exports
- * @api public
- */
-
-function require(path, parent, orig) {
-  var resolved = require.resolve(path);
-
-  // lookup failed
-  if (null == resolved) {
-    orig = orig || path;
-    parent = parent || 'root';
-    var err = new Error('Failed to require "' + orig + '" from "' + parent + '"');
-    err.path = orig;
-    err.parent = parent;
-    err.require = true;
-    throw err;
-  }
-
-  var module = require.modules[resolved];
-
-  // perform real require()
-  // by invoking the module's
-  // registered function
-  if (!module._resolving && !module.exports) {
-    var mod = {};
-    mod.exports = {};
-    mod.client = mod.component = true;
-    module._resolving = true;
-    module.call(this, mod.exports, require.relative(resolved), mod);
-    delete module._resolving;
-    module.exports = mod.exports;
-  }
-
-  return module.exports;
-}
-
-/**
- * Registered modules.
- */
-
-require.modules = {};
-
-/**
- * Registered aliases.
- */
-
-require.aliases = {};
-
-/**
- * Resolve `path`.
- *
- * Lookup:
- *
- *   - PATH/index.js
- *   - PATH.js
- *   - PATH
- *
- * @param {String} path
- * @return {String} path or null
- * @api private
- */
-
-require.resolve = function(path) {
-  if (path.charAt(0) === '/') path = path.slice(1);
-
-  var paths = [
-    path,
-    path + '.js',
-    path + '.json',
-    path + '/index.js',
-    path + '/index.json'
-  ];
-
-  for (var i = 0; i < paths.length; i++) {
-    var path = paths[i];
-    if (require.modules.hasOwnProperty(path)) return path;
-    if (require.aliases.hasOwnProperty(path)) return require.aliases[path];
-  }
-};
-
-/**
- * Normalize `path` relative to the current path.
- *
- * @param {String} curr
- * @param {String} path
- * @return {String}
- * @api private
- */
-
-require.normalize = function(curr, path) {
-  var segs = [];
-
-  if ('.' != path.charAt(0)) return path;
-
-  curr = curr.split('/');
-  path = path.split('/');
-
-  for (var i = 0; i < path.length; ++i) {
-    if ('..' == path[i]) {
-      curr.pop();
-    } else if ('.' != path[i] && '' != path[i]) {
-      segs.push(path[i]);
-    }
-  }
-
-  return curr.concat(segs).join('/');
-};
-
-/**
- * Register module at `path` with callback `definition`.
- *
- * @param {String} path
- * @param {Function} definition
- * @api private
- */
-
-require.register = function(path, definition) {
-  require.modules[path] = definition;
-};
-
-/**
- * Alias a module definition.
- *
- * @param {String} from
- * @param {String} to
- * @api private
- */
-
-require.alias = function(from, to) {
-  if (!require.modules.hasOwnProperty(from)) {
-    throw new Error('Failed to alias "' + from + '", it does not exist');
-  }
-  require.aliases[to] = from;
-};
-
-/**
- * Return a require function relative to the `parent` path.
- *
- * @param {String} parent
- * @return {Function}
- * @api private
- */
-
-require.relative = function(parent) {
-  var p = require.normalize(parent, '..');
-
-  /**
-   * lastIndexOf helper.
-   */
-
-  function lastIndexOf(arr, obj) {
-    var i = arr.length;
-    while (i--) {
-      if (arr[i] === obj) return i;
-    }
-    return -1;
-  }
-
-  /**
-   * The relative require() itself.
-   */
-
-  function localRequire(path) {
-    var resolved = localRequire.resolve(path);
-    return require(resolved, parent, path);
-  }
-
-  /**
-   * Resolve relative to the parent.
-   */
-
-  localRequire.resolve = function(path) {
-    var c = path.charAt(0);
-    if ('/' == c) return path.slice(1);
-    if ('.' == c) return require.normalize(p, path);
-
-    // resolve deps by returning
-    // the dep in the nearest "deps"
-    // directory
-    var segs = parent.split('/');
-    var i = lastIndexOf(segs, 'deps') + 1;
-    if (!i) i = 0;
-    path = segs.slice(0, i + 1).join('/') + '/deps/' + path;
-    return path;
-  };
-
-  /**
-   * Check if module is defined at `path`.
-   */
-
-  localRequire.exists = function(path) {
-    return require.modules.hasOwnProperty(localRequire.resolve(path));
-  };
-
-  return localRequire;
-};
-require.register("component-classes/index.js", function(exports, require, module){
-/**
- * Module dependencies.
- */
-
-var index = require('indexof');
-
-/**
- * Whitespace regexp.
- */
-
-var re = /\s+/;
-
-/**
- * toString reference.
- */
-
-var toString = Object.prototype.toString;
-
-/**
- * Wrap `el` in a `ClassList`.
- *
- * @param {Element} el
- * @return {ClassList}
- * @api public
- */
-
-module.exports = function(el){
-  return new ClassList(el);
-};
-
-/**
- * Initialize a new ClassList for `el`.
- *
- * @param {Element} el
- * @api private
- */
-
-function ClassList(el) {
-  if (!el) throw new Error('A DOM element reference is required');
-  this.el = el;
-  this.list = el.classList;
-}
-
-/**
- * Add class `name` if not already present.
- *
- * @param {String} name
- * @return {ClassList}
- * @api public
- */
-
-ClassList.prototype.add = function(name){
-  // classList
-  if (this.list) {
-    this.list.add(name);
-    return this;
-  }
-
-  // fallback
-  var arr = this.array();
-  var i = index(arr, name);
-  if (!~i) arr.push(name);
-  this.el.className = arr.join(' ');
-  return this;
-};
-
-/**
- * Remove class `name` when present, or
- * pass a regular expression to remove
- * any which match.
- *
- * @param {String|RegExp} name
- * @return {ClassList}
- * @api public
- */
-
-ClassList.prototype.remove = function(name){
-  if ('[object RegExp]' == toString.call(name)) {
-    return this.removeMatching(name);
-  }
-
-  // classList
-  if (this.list) {
-    this.list.remove(name);
-    return this;
-  }
-
-  // fallback
-  var arr = this.array();
-  var i = index(arr, name);
-  if (~i) arr.splice(i, 1);
-  this.el.className = arr.join(' ');
-  return this;
-};
-
-/**
- * Remove all classes matching `re`.
- *
- * @param {RegExp} re
- * @return {ClassList}
- * @api private
- */
-
-ClassList.prototype.removeMatching = function(re){
-  var arr = this.array();
-  for (var i = 0; i < arr.length; i++) {
-    if (re.test(arr[i])) {
-      this.remove(arr[i]);
-    }
-  }
-  return this;
-};
-
-/**
- * Toggle class `name`, can force state via `force`.
- *
- * For browsers that support classList, but do not support `force` yet,
- * the mistake will be detected and corrected.
- *
- * @param {String} name
- * @param {Boolean} force
- * @return {ClassList}
- * @api public
- */
-
-ClassList.prototype.toggle = function(name, force){
-  // classList
-  if (this.list) {
-    if ("undefined" !== typeof force) {
-      if (force !== this.list.toggle(name, force)) {
-        this.list.toggle(name); // toggle again to correct
-      }
-    } else {
-      this.list.toggle(name);
-    }
-    return this;
-  }
-
-  // fallback
-  if ("undefined" !== typeof force) {
-    if (!force) {
-      this.remove(name);
-    } else {
-      this.add(name);
-    }
-  } else {
-    if (this.has(name)) {
-      this.remove(name);
-    } else {
-      this.add(name);
-    }
-  }
-
-  return this;
-};
-
-/**
- * Return an array of classes.
- *
- * @return {Array}
- * @api public
- */
-
-ClassList.prototype.array = function(){
-  var str = this.el.className.replace(/^\s+|\s+$/g, '');
-  var arr = str.split(re);
-  if ('' === arr[0]) arr.shift();
-  return arr;
-};
-
-/**
- * Check if class `name` is present.
- *
- * @param {String} name
- * @return {ClassList}
- * @api public
- */
-
-ClassList.prototype.has =
-ClassList.prototype.contains = function(name){
-  return this.list
-    ? this.list.contains(name)
-    : !! ~index(this.array(), name);
-};
-
-});
-require.register("segmentio-extend/index.js", function(exports, require, module){
-
-module.exports = function extend (object) {
-    // Takes an unlimited number of extenders.
-    var args = Array.prototype.slice.call(arguments, 1);
-
-    // For each extender, copy their properties on our object.
-    for (var i = 0, source; source = args[i]; i++) {
-        if (!source) continue;
-        for (var property in source) {
-            object[property] = source[property];
-        }
-    }
-
-    return object;
-};
-});
-require.register("component-indexof/index.js", function(exports, require, module){
-module.exports = function(arr, obj){
-  if (arr.indexOf) return arr.indexOf(obj);
-  for (var i = 0; i < arr.length; ++i) {
-    if (arr[i] === obj) return i;
-  }
-  return -1;
-};
-});
-require.register("component-event/index.js", function(exports, require, module){
-var bind = window.addEventListener ? 'addEventListener' : 'attachEvent',
-    unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent',
-    prefix = bind !== 'addEventListener' ? 'on' : '';
-
-/**
- * Bind `el` event `type` to `fn`.
- *
- * @param {Element} el
- * @param {String} type
- * @param {Function} fn
- * @param {Boolean} capture
- * @return {Function}
- * @api public
- */
-
-exports.bind = function(el, type, fn, capture){
-  el[bind](prefix + type, fn, capture || false);
-  return fn;
-};
-
-/**
- * Unbind `el` event `type`'s callback `fn`.
- *
- * @param {Element} el
- * @param {String} type
- * @param {Function} fn
- * @param {Boolean} capture
- * @return {Function}
- * @api public
- */
-
-exports.unbind = function(el, type, fn, capture){
-  el[unbind](prefix + type, fn, capture || false);
-  return fn;
-};
-});
-require.register("timoxley-to-array/index.js", function(exports, require, module){
-/**
- * Convert an array-like object into an `Array`.
- * If `collection` is already an `Array`, then will return a clone of `collection`.
- *
- * @param {Array | Mixed} collection An `Array` or array-like object to convert e.g. `arguments` or `NodeList`
- * @return {Array} Naive conversion of `collection` to a new `Array`.
- * @api public
- */
-
-module.exports = function toArray(collection) {
-  if (typeof collection === 'undefined') return []
-  if (collection === null) return [null]
-  if (collection === window) return [window]
-  if (typeof collection === 'string') return [collection]
-  if (isArray(collection)) return collection
-  if (typeof collection.length != 'number') return [collection]
-  if (typeof collection === 'function' && collection instanceof Function) return [collection]
-
-  var arr = []
-  for (var i = 0; i < collection.length; i++) {
-    if (Object.prototype.hasOwnProperty.call(collection, i) || i in collection) {
-      arr.push(collection[i])
-    }
-  }
-  if (!arr.length) return []
-  return arr
-}
-
-function isArray(arr) {
-  return Object.prototype.toString.call(arr) === "[object Array]";
-}
-
-});
-require.register("javve-events/index.js", function(exports, require, module){
-var events = require('event'),
-  toArray = require('to-array');
-
-/**
- * Bind `el` event `type` to `fn`.
- *
- * @param {Element} el, NodeList, HTMLCollection or Array
- * @param {String} type
- * @param {Function} fn
- * @param {Boolean} capture
- * @api public
- */
-
-exports.bind = function(el, type, fn, capture){
-  el = toArray(el);
-  for ( var i = 0; i < el.length; i++ ) {
-    events.bind(el[i], type, fn, capture);
-  }
-};
-
-/**
- * Unbind `el` event `type`'s callback `fn`.
- *
- * @param {Element} el, NodeList, HTMLCollection or Array
- * @param {String} type
- * @param {Function} fn
- * @param {Boolean} capture
- * @api public
- */
-
-exports.unbind = function(el, type, fn, capture){
-  el = toArray(el);
-  for ( var i = 0; i < el.length; i++ ) {
-    events.unbind(el[i], type, fn, capture);
-  }
-};
-
-});
-require.register("javve-get-by-class/index.js", function(exports, require, module){
-/**
- * Find all elements with class `className` inside `container`.
- * Use `single = true` to increase performance in older browsers
- * when only one element is needed.
- *
- * @param {String} className
- * @param {Element} container
- * @param {Boolean} single
- * @api public
- */
-
-module.exports = (function() {
-  if (document.getElementsByClassName) {
-    return function(container, className, single) {
-      if (single) {
-        return container.getElementsByClassName(className)[0];
-      } else {
-        return container.getElementsByClassName(className);
-      }
-    };
-  } else if (document.querySelector) {
-    return function(container, className, single) {
-      className = '.' + className;
-      if (single) {
-        return container.querySelector(className);
-      } else {
-        return container.querySelectorAll(className);
-      }
-    };
-  } else {
-    return function(container, className, single) {
-      var classElements = [],
-        tag = '*';
-      if (container == null) {
-        container = document;
-      }
-      var els = container.getElementsByTagName(tag);
-      var elsLen = els.length;
-      var pattern = new RegExp("(^|\\s)"+className+"(\\s|$)");
-      for (var i = 0, j = 0; i < elsLen; i++) {
-        if ( pattern.test(els[i].className) ) {
-          if (single) {
-            return els[i];
-          } else {
-            classElements[j] = els[i];
-            j++;
-          }
-        }
-      }
-      return classElements;
-    };
-  }
-})();
-
-});
-require.register("javve-get-attribute/index.js", function(exports, require, module){
-/**
- * Return the value for `attr` at `element`.
- *
- * @param {Element} el
- * @param {String} attr
- * @api public
- */
-
-module.exports = function(el, attr) {
-  var result = (el.getAttribute && el.getAttribute(attr)) || null;
-  if( !result ) {
-    var attrs = el.attributes;
-    var length = attrs.length;
-    for(var i = 0; i < length; i++) {
-      if (attr[i] !== undefined) {
-        if(attr[i].nodeName === attr) {
-          result = attr[i].nodeValue;
-        }
-      }
-    }
-  }
-  return result;
-}
-});
-require.register("javve-natural-sort/index.js", function(exports, require, module){
-/*
- * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
- * Author: Jim Palmer (based on chunking idea from Dave Koelle)
- */
-
-module.exports = function(a, b, options) {
-  var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
-    sre = /(^[ ]*|[ ]*$)/g,
-    dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
-    hre = /^0x[0-9a-f]+$/i,
-    ore = /^0/,
-    options = options || {},
-    i = function(s) { return options.insensitive && (''+s).toLowerCase() || ''+s },
-    // convert all to strings strip whitespace
-    x = i(a).replace(sre, '') || '',
-    y = i(b).replace(sre, '') || '',
-    // chunk/tokenize
-    xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
-    yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
-    // numeric, hex or date detection
-    xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
-    yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null,
-    oFxNcL, oFyNcL,
-    mult = options.desc ? -1 : 1;
-  // first try and sort Hex codes or Dates
-  if (yD)
-    if ( xD < yD ) return -1 * mult;
-    else if ( xD > yD ) return 1 * mult;
-  // natural sorting through split numeric strings and default strings
-  for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {
-    // find floats not starting with '0', string or 0 if not defined (Clint Priest)
-    oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
-    oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
-    // handle numeric vs string comparison - number < string - (Kyle Adams)
-    if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }
-    // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
-    else if (typeof oFxNcL !== typeof oFyNcL) {
-      oFxNcL += '';
-      oFyNcL += '';
-    }
-    if (oFxNcL < oFyNcL) return -1 * mult;
-    if (oFxNcL > oFyNcL) return 1 * mult;
-  }
-  return 0;
-};
-
-/*
-var defaultSort = getSortFunction();
-
-module.exports = function(a, b, options) {
-  if (arguments.length == 1) {
-    options = a;
-    return getSortFunction(options);
-  } else {
-    return defaultSort(a,b);
-  }
-}
-*/
-});
-require.register("javve-to-string/index.js", function(exports, require, module){
-module.exports = function(s) {
-    s = (s === undefined) ? "" : s;
-    s = (s === null) ? "" : s;
-    s = s.toString();
-    return s;
-};
-
-});
-require.register("component-type/index.js", function(exports, require, module){
-/**
- * toString ref.
- */
-
-var toString = Object.prototype.toString;
-
-/**
- * Return the type of `val`.
- *
- * @param {Mixed} val
- * @return {String}
- * @api public
- */
-
-module.exports = function(val){
-  switch (toString.call(val)) {
-    case '[object Date]': return 'date';
-    case '[object RegExp]': return 'regexp';
-    case '[object Arguments]': return 'arguments';
-    case '[object Array]': return 'array';
-    case '[object Error]': return 'error';
-  }
-
-  if (val === null) return 'null';
-  if (val === undefined) return 'undefined';
-  if (val !== val) return 'nan';
-  if (val && val.nodeType === 1) return 'element';
-
-  return typeof val.valueOf();
-};
-
-});
-require.register("list.js/index.js", function(exports, require, module){
-/*
-ListJS with beta 1.0.0
-By Jonny Strömberg (www.jonnystromberg.com, www.listjs.com)
-*/
-(function( window, undefined ) {
-"use strict";
-
-var document = window.document,
-    getByClass = require('get-by-class'),
-    extend = require('extend'),
-    indexOf = require('indexof');
-
-var List = function(id, options, values) {
-
-    var self = this,
-               init,
-        Item = require('./src/item')(self),
-        addAsync = require('./src/add-async')(self),
-        parse = require('./src/parse')(self);
-
-    init = {
-        start: function() {
-            self.listClass      = "list";
-            self.searchClass    = "search";
-            self.sortClass      = "sort";
-            self.page           = 200;
-            self.i              = 1;
-            self.items          = [];
-            self.visibleItems   = [];
-            self.matchingItems  = [];
-            self.searched       = false;
-            self.filtered       = false;
-            self.handlers       = { 'updated': [] };
-            self.plugins        = {};
-            self.helpers        = {
-                getByClass: getByClass,
-                extend: extend,
-                indexOf: indexOf
-            };
-
-            extend(self, options);
-
-            self.listContainer = (typeof(id) === 'string') ? document.getElementById(id) : id;
-            if (!self.listContainer) { return; }
-            self.list           = getByClass(self.listContainer, self.listClass, true);
-
-            self.templater      = require('./src/templater')(self);
-            self.search         = require('./src/search')(self);
-            self.filter         = require('./src/filter')(self);
-            self.sort           = require('./src/sort')(self);
-
-            this.items();
-            self.update();
-            this.plugins();
-        },
-        items: function() {
-            parse(self.list);
-            if (values !== undefined) {
-                self.add(values);
-            }
-        },
-        plugins: function() {
-            for (var i = 0; i < self.plugins.length; i++) {
-                var plugin = self.plugins[i];
-                self[plugin.name] = plugin;
-                plugin.init(self);
-            }
-        }
-    };
-
-
-    /*
-    * Add object to list
-    */
-    this.add = function(values, callback) {
-        if (callback) {
-            addAsync(values, callback);
-            return;
-        }
-        var added = [],
-            notCreate = false;
-        if (values[0] === undefined){
-            values = [values];
-        }
-        for (var i = 0, il = values.length; i < il; i++) {
-            var item = null;
-            if (values[i] instanceof Item) {
-                item = values[i];
-                item.reload();
-            } else {
-                notCreate = (self.items.length > self.page) ? true : false;
-                item = new Item(values[i], undefined, notCreate);
-            }
-            self.items.push(item);
-            added.push(item);
-        }
-        self.update();
-        return added;
-    };
-
-       this.show = function(i, page) {
-               this.i = i;
-               this.page = page;
-               self.update();
-        return self;
-       };
-
-    /* Removes object from list.
-    * Loops through the list and removes objects where
-    * property "valuename" === value
-    */
-    this.remove = function(valueName, value, options) {
-        var found = 0;
-        for (var i = 0, il = self.items.length; i < il; i++) {
-            if (self.items[i].values()[valueName] == value) {
-                self.templater.remove(self.items[i], options);
-                self.items.splice(i,1);
-                il--;
-                i--;
-                found++;
-            }
-        }
-        self.update();
-        return found;
-    };
-
-    /* Gets the objects in the list which
-    * property "valueName" === value
-    */
-    this.get = function(valueName, value) {
-        var matchedItems = [];
-        for (var i = 0, il = self.items.length; i < il; i++) {
-            var item = self.items[i];
-            if (item.values()[valueName] == value) {
-                matchedItems.push(item);
-            }
-        }
-        return matchedItems;
-    };
-
-    /*
-    * Get size of the list
-    */
-    this.size = function() {
-        return self.items.length;
-    };
-
-    /*
-    * Removes all items from the list
-    */
-    this.clear = function() {
-        self.templater.clear();
-        self.items = [];
-        return self;
-    };
-
-    this.on = function(event, callback) {
-        self.handlers[event].push(callback);
-        return self;
-    };
-
-    this.off = function(event, callback) {
-        var e = self.handlers[event];
-        var index = indexOf(e, callback);
-        if (index > -1) {
-            e.splice(index, 1);
-        }
-        return self;
-    };
-
-    this.trigger = function(event) {
-        var i = self.handlers[event].length;
-        while(i--) {
-            self.handlers[event][i](self);
-        }
-        return self;
-    };
-
-    this.reset = {
-        filter: function() {
-            var is = self.items,
-                il = is.length;
-            while (il--) {
-                is[il].filtered = false;
-            }
-            return self;
-        },
-        search: function() {
-            var is = self.items,
-                il = is.length;
-            while (il--) {
-                is[il].found = false;
-            }
-            return self;
-        }
-    };
-
-    this.update = function() {
-        var is = self.items,
-                       il = is.length;
-
-        self.visibleItems = [];
-        self.matchingItems = [];
-        self.templater.clear();
-        for (var i = 0; i < il; i++) {
-            if (is[i].matching() && ((self.matchingItems.length+1) >= self.i && self.visibleItems.length < self.page)) {
-                is[i].show();
-                self.visibleItems.push(is[i]);
-                self.matchingItems.push(is[i]);
-                       } else if (is[i].matching()) {
-                self.matchingItems.push(is[i]);
-                is[i].hide();
-                       } else {
-                is[i].hide();
-                       }
-        }
-        self.trigger('updated');
-        return self;
-    };
-
-    init.start();
-};
-
-module.exports = List;
-
-})(window);
-
-});
-require.register("list.js/src/search.js", function(exports, require, module){
-var events = require('events'),
-    getByClass = require('get-by-class'),
-    toString = require('to-string');
-
-module.exports = function(list) {
-    var item,
-        text,
-        columns,
-        searchString,
-        customSearch;
-
-    var prepare = {
-        resetList: function() {
-            list.i = 1;
-            list.templater.clear();
-            customSearch = undefined;
-        },
-        setOptions: function(args) {
-            if (args.length == 2 && args[1] instanceof Array) {
-                columns = args[1];
-            } else if (args.length == 2 && typeof(args[1]) == "function") {
-                customSearch = args[1];
-            } else if (args.length == 3) {
-                columns = args[1];
-                customSearch = args[2];
-            }
-        },
-        setColumns: function() {
-            columns = (columns === undefined) ? prepare.toArray(list.items[0].values()) : columns;
-        },
-        setSearchString: function(s) {
-            s = toString(s).toLowerCase();
-            s = s.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&"); // Escape regular expression characters
-            searchString = s;
-        },
-        toArray: function(values) {
-            var tmpColumn = [];
-            for (var name in values) {
-                tmpColumn.push(name);
-            }
-            return tmpColumn;
-        }
-    };
-    var search = {
-        list: function() {
-            for (var k = 0, kl = list.items.length; k < kl; k++) {
-                search.item(list.items[k]);
-            }
-        },
-        item: function(item) {
-            item.found = false;
-            for (var j = 0, jl = columns.length; j < jl; j++) {
-                if (search.values(item.values(), columns[j])) {
-                    item.found = true;
-                    return;
-                }
-            }
-        },
-        values: function(values, column) {
-            if (values.hasOwnProperty(column)) {
-                text = toString(values[column]).toLowerCase();
-                if ((searchString !== "") && (text.search(searchString) > -1)) {
-                    return true;
-                }
-            }
-            return false;
-        },
-        reset: function() {
-            list.reset.search();
-            list.searched = false;
-        }
-    };
-
-    var searchMethod = function(str) {
-        list.trigger('searchStart');
-
-        prepare.resetList();
-        prepare.setSearchString(str);
-        prepare.setOptions(arguments); // str, cols|searchFunction, searchFunction
-        prepare.setColumns();
-
-        if (searchString === "" ) {
-            search.reset();
-        } else {
-            list.searched = true;
-            if (customSearch) {
-                customSearch(searchString, columns);
-            } else {
-                search.list();
-            }
-        }
-
-        list.update();
-        list.trigger('searchComplete');
-        return list.visibleItems;
-    };
-
-    list.handlers.searchStart = list.handlers.searchStart || [];
-    list.handlers.searchComplete = list.handlers.searchComplete || [];
-
-    events.bind(getByClass(list.listContainer, list.searchClass), 'keyup', function(e) {
-        var target = e.target || e.srcElement, // IE have srcElement
-            alreadyCleared = (target.value === "" && !list.searched);
-        if (!alreadyCleared) { // If oninput already have resetted the list, do nothing
-            searchMethod(target.value);
-        }
-    });
-
-    // Used to detect click on HTML5 clear button
-    events.bind(getByClass(list.listContainer, list.searchClass), 'input', function(e) {
-        var target = e.target || e.srcElement;
-        if (target.value === "") {
-            searchMethod('');
-        }
-    });
-
-    list.helpers.toString = toString;
-    return searchMethod;
-};
-
-});
-require.register("list.js/src/sort.js", function(exports, require, module){
-var naturalSort = require('natural-sort'),
-    classes = require('classes'),
-    events = require('events'),
-    getByClass = require('get-by-class'),
-    getAttribute = require('get-attribute');
-
-module.exports = function(list) {
-    list.sortFunction = list.sortFunction || function(itemA, itemB, options) {
-        options.desc = options.order == "desc" ? true : false; // Natural sort uses this format
-        return naturalSort(itemA.values()[options.valueName], itemB.values()[options.valueName], options);
-    };
-
-    var buttons = {
-        els: undefined,
-        clear: function() {
-            for (var i = 0, il = buttons.els.length; i < il; i++) {
-                classes(buttons.els[i]).remove('asc');
-                classes(buttons.els[i]).remove('desc');
-            }
-        },
-        getOrder: function(btn) {
-            var predefinedOrder = getAttribute(btn, 'data-order');
-            if (predefinedOrder == "asc" || predefinedOrder == "desc") {
-                return predefinedOrder;
-            } else if (classes(btn).has('desc')) {
-                return "asc";
-            } else if (classes(btn).has('asc')) {
-                return "desc";
-            } else {
-                return "asc";
-            }
-        },
-        getInSensitive: function(btn, options) {
-            var insensitive = getAttribute(btn, 'data-insensitive');
-            if (insensitive === "true") {
-                options.insensitive = true;
-            } else {
-                options.insensitive = false;
-            }
-        },
-        setOrder: function(options) {
-            for (var i = 0, il = buttons.els.length; i < il; i++) {
-                var btn = buttons.els[i];
-                if (getAttribute(btn, 'data-sort') !== options.valueName) {
-                    continue;
-                }
-                var predefinedOrder = getAttribute(btn, 'data-order');
-                if (predefinedOrder == "asc" || predefinedOrder == "desc") {
-                    if (predefinedOrder == options.order) {
-                        classes(btn).add(options.order);
-                    }
-                } else {
-                    classes(btn).add(options.order);
-                }
-            }
-        }
-    };
-    var sort = function() {
-        list.trigger('sortStart');
-        options = {};
-
-        var target = arguments[0].currentTarget || arguments[0].srcElement || undefined;
-
-        if (target) {
-            options.valueName = getAttribute(target, 'data-sort');
-            buttons.getInSensitive(target, options);
-            options.order = buttons.getOrder(target);
-        } else {
-            options = arguments[1] || options;
-            options.valueName = arguments[0];
-            options.order = options.order || "asc";
-            options.insensitive = (typeof options.insensitive == "undefined") ? true : options.insensitive;
-        }
-        buttons.clear();
-        buttons.setOrder(options);
-
-        options.sortFunction = options.sortFunction || list.sortFunction;
-        list.items.sort(function(a, b) {
-            return options.sortFunction(a, b, options);
-        });
-        list.update();
-        list.trigger('sortComplete');
-    };
-
-    // Add handlers
-    list.handlers.sortStart = list.handlers.sortStart || [];
-    list.handlers.sortComplete = list.handlers.sortComplete || [];
-
-    buttons.els = getByClass(list.listContainer, list.sortClass);
-    events.bind(buttons.els, 'click', sort);
-    list.on('searchStart', buttons.clear);
-    list.on('filterStart', buttons.clear);
-
-    // Helpers
-    list.helpers.classes = classes;
-    list.helpers.naturalSort = naturalSort;
-    list.helpers.events = events;
-    list.helpers.getAttribute = getAttribute;
-
-    return sort;
-};
-
-});
-require.register("list.js/src/item.js", function(exports, require, module){
-module.exports = function(list) {
-    return function(initValues, element, notCreate) {
-        var item = this;
-
-        this._values = {};
-
-        this.found = false; // Show if list.searched == true and this.found == true
-        this.filtered = false;// Show if list.filtered == true and this.filtered == true
-
-        var init = function(initValues, element, notCreate) {
-            if (element === undefined) {
-                if (notCreate) {
-                    item.values(initValues, notCreate);
-                } else {
-                    item.values(initValues);
-                }
-            } else {
-                item.elm = element;
-                var values = list.templater.get(item, initValues);
-                item.values(values);
-            }
-        };
-        this.values = function(newValues, notCreate) {
-            if (newValues !== undefined) {
-                for(var name in newValues) {
-                    item._values[name] = newValues[name];
-                }
-                if (notCreate !== true) {
-                    list.templater.set(item, item.values());
-                }
-            } else {
-                return item._values;
-            }
-        };
-        this.show = function() {
-            list.templater.show(item);
-        };
-        this.hide = function() {
-            list.templater.hide(item);
-        };
-        this.matching = function() {
-            return (
-                (list.filtered && list.searched && item.found && item.filtered) ||
-                (list.filtered && !list.searched && item.filtered) ||
-                (!list.filtered && list.searched && item.found) ||
-                (!list.filtered && !list.searched)
-            );
-        };
-        this.visible = function() {
-            return (item.elm.parentNode == list.list) ? true : false;
-        };
-        init(initValues, element, notCreate);
-    };
-};
-
-});
-require.register("list.js/src/templater.js", function(exports, require, module){
-var getByClass = require('get-by-class');
-
-var Templater = function(list) {
-    var itemSource = getItemSource(list.item),
-        templater = this;
-
-    function getItemSource(item) {
-        if (item === undefined) {
-            var nodes = list.list.childNodes,
-                items = [];
-
-            for (var i = 0, il = nodes.length; i < il; i++) {
-                // Only textnodes have a data attribute
-                if (nodes[i].data === undefined) {
-                    return nodes[i];
-                }
-            }
-            return null;
-        } else if (item.indexOf("<") !== -1) { // Try create html element of list, do not work for tables!!
-            var div = document.createElement('div');
-            div.innerHTML = item;
-            return div.firstChild;
-        } else {
-            return document.getElementById(list.item);
-        }
-    }
-
-    /* Get values from element */
-    this.get = function(item, valueNames) {
-        templater.create(item);
-        var values = {};
-        for(var i = 0, il = valueNames.length; i < il; i++) {
-            var elm = getByClass(item.elm, valueNames[i], true);
-            values[valueNames[i]] = elm ? elm.innerHTML : "";
-        }
-        return values;
-    };
-
-    /* Sets values at element */
-    this.set = function(item, values) {
-        if (!templater.create(item)) {
-            for(var v in values) {
-                if (values.hasOwnProperty(v)) {
-                    // TODO speed up if possible
-                    var elm = getByClass(item.elm, v, true);
-                    if (elm) {
-                        /* src attribute for image tag & text for other tags */
-                        if (elm.tagName === "IMG" && values[v] !== "") {
-                            elm.src = values[v];
-                        } else {
-                            elm.innerHTML = values[v];
-                        }
-                    }
-                }
-            }
-        }
-    };
-
-    this.create = function(item) {
-        if (item.elm !== undefined) {
-            return false;
-        }
-        /* If item source does not exists, use the first item in list as
-        source for new items */
-        var newItem = itemSource.cloneNode(true);
-        newItem.removeAttribute('id');
-        item.elm = newItem;
-        templater.set(item, item.values());
-        return true;
-    };
-    this.remove = function(item) {
-        list.list.removeChild(item.elm);
-    };
-    this.show = function(item) {
-        templater.create(item);
-        list.list.appendChild(item.elm);
-    };
-    this.hide = function(item) {
-        if (item.elm !== undefined && item.elm.parentNode === list.list) {
-            list.list.removeChild(item.elm);
-        }
-    };
-    this.clear = function() {
-        /* .innerHTML = ''; fucks up IE */
-        if (list.list.hasChildNodes()) {
-            while (list.list.childNodes.length >= 1)
-            {
-                list.list.removeChild(list.list.firstChild);
-            }
-        }
-    };
-};
-
-module.exports = function(list) {
-    return new Templater(list);
-};
-
-});
-require.register("list.js/src/filter.js", function(exports, require, module){
-module.exports = function(list) {
-
-    // Add handlers
-    list.handlers.filterStart = list.handlers.filterStart || [];
-    list.handlers.filterComplete = list.handlers.filterComplete || [];
-
-    return function(filterFunction) {
-        list.trigger('filterStart');
-        list.i = 1; // Reset paging
-        list.reset.filter();
-        if (filterFunction === undefined) {
-            list.filtered = false;
-        } else {
-            list.filtered = true;
-            var is = list.items;
-            for (var i = 0, il = is.length; i < il; i++) {
-                var item = is[i];
-                if (filterFunction(item)) {
-                    item.filtered = true;
-                } else {
-                    item.filtered = false;
-                }
-            }
-        }
-        list.update();
-        list.trigger('filterComplete');
-        return list.visibleItems;
-    };
-};
-
-});
-require.register("list.js/src/add-async.js", function(exports, require, module){
-module.exports = function(list) {
-    return function(values, callback, items) {
-        var valuesToAdd = values.splice(0, 100);
-        items = items || [];
-        items = items.concat(list.add(valuesToAdd));
-        if (values.length > 0) {
-            setTimeout(function() {
-                addAsync(values, callback, items);
-            }, 10);
-        } else {
-            list.update();
-            callback(items);
-        }
-    };
-};
-});
-require.register("list.js/src/parse.js", function(exports, require, module){
-module.exports = function(list) {
-
-    var Item = require('./item')(list);
-
-    var getChildren = function(parent) {
-        var nodes = parent.childNodes,
-            items = [];
-        for (var i = 0, il = nodes.length; i < il; i++) {
-            // Only textnodes have a data attribute
-            if (nodes[i].data === undefined) {
-                items.push(nodes[i]);
-            }
-        }
-        return items;
-    };
-
-    var parse = function(itemElements, valueNames) {
-        for (var i = 0, il = itemElements.length; i < il; i++) {
-            list.items.push(new Item(valueNames, itemElements[i]));
-        }
-    };
-    var parseAsync = function(itemElements, valueNames) {
-        var itemsToIndex = itemElements.splice(0, 100); // TODO: If < 100 items, what happens in IE etc?
-        parse(itemsToIndex, valueNames);
-        if (itemElements.length > 0) {
-            setTimeout(function() {
-                init.items.indexAsync(itemElements, valueNames);
-            }, 10);
-        } else {
-            list.update();
-            // TODO: Add indexed callback
-        }
-    };
-
-    return function() {
-        var itemsToIndex = getChildren(list.list),
-            valueNames = list.valueNames;
-
-        if (list.indexAsync) {
-            parseAsync(itemsToIndex, valueNames);
-        } else {
-            parse(itemsToIndex, valueNames);
-        }
-    };
-};
-
-});
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-require.alias("component-classes/index.js", "list.js/deps/classes/index.js");
-require.alias("component-classes/index.js", "classes/index.js");
-require.alias("component-indexof/index.js", "component-classes/deps/indexof/index.js");
-
-require.alias("segmentio-extend/index.js", "list.js/deps/extend/index.js");
-require.alias("segmentio-extend/index.js", "extend/index.js");
-
-require.alias("component-indexof/index.js", "list.js/deps/indexof/index.js");
-require.alias("component-indexof/index.js", "indexof/index.js");
-
-require.alias("javve-events/index.js", "list.js/deps/events/index.js");
-require.alias("javve-events/index.js", "events/index.js");
-require.alias("component-event/index.js", "javve-events/deps/event/index.js");
-
-require.alias("timoxley-to-array/index.js", "javve-events/deps/to-array/index.js");
-
-require.alias("javve-get-by-class/index.js", "list.js/deps/get-by-class/index.js");
-require.alias("javve-get-by-class/index.js", "get-by-class/index.js");
-
-require.alias("javve-get-attribute/index.js", "list.js/deps/get-attribute/index.js");
-require.alias("javve-get-attribute/index.js", "get-attribute/index.js");
-
-require.alias("javve-natural-sort/index.js", "list.js/deps/natural-sort/index.js");
-require.alias("javve-natural-sort/index.js", "natural-sort/index.js");
-
-require.alias("javve-to-string/index.js", "list.js/deps/to-string/index.js");
-require.alias("javve-to-string/index.js", "list.js/deps/to-string/index.js");
-require.alias("javve-to-string/index.js", "to-string/index.js");
-require.alias("javve-to-string/index.js", "javve-to-string/index.js");
-require.alias("component-type/index.js", "list.js/deps/type/index.js");
-require.alias("component-type/index.js", "type/index.js");
-if (typeof exports == "object") {
-  module.exports = require("list.js");
-} else if (typeof define == "function" && define.amd) {
-  define(function(){ return require("list.js"); });
-} else {
-  this["List"] = require("list.js");
-}})();
\ No newline at end of file