active_frontend 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +97 -0
  6. data/Rakefile +1 -0
  7. data/active_frontend.gemspec +23 -0
  8. data/app/assets/fonts/gotham/gotham-bold.eot +0 -0
  9. data/app/assets/fonts/gotham/gotham-bold.svg +2066 -0
  10. data/app/assets/fonts/gotham/gotham-bold.ttf +0 -0
  11. data/app/assets/fonts/gotham/gotham-bold.woff +0 -0
  12. data/app/assets/fonts/gotham/gotham-book.eot +0 -0
  13. data/app/assets/fonts/gotham/gotham-book.svg +631 -0
  14. data/app/assets/fonts/gotham/gotham-book.ttf +0 -0
  15. data/app/assets/fonts/gotham/gotham-book.woff +0 -0
  16. data/app/assets/fonts/gotham/gotham-light.eot +0 -0
  17. data/app/assets/fonts/gotham/gotham-light.svg +635 -0
  18. data/app/assets/fonts/gotham/gotham-light.ttf +0 -0
  19. data/app/assets/fonts/gotham/gotham-light.woff +0 -0
  20. data/app/assets/fonts/gotham/gotham-medium.eot +0 -0
  21. data/app/assets/fonts/gotham/gotham-medium.svg +629 -0
  22. data/app/assets/fonts/gotham/gotham-medium.ttf +0 -0
  23. data/app/assets/fonts/gotham/gotham-medium.woff +0 -0
  24. data/app/assets/fonts/ionicons/ionicons.eot +0 -0
  25. data/app/assets/fonts/ionicons/ionicons.svg +2232 -0
  26. data/app/assets/fonts/ionicons/ionicons.ttf +0 -0
  27. data/app/assets/fonts/ionicons/ionicons.woff +0 -0
  28. data/lib/active_frontend.rb +6 -0
  29. data/lib/active_frontend/version.rb +3 -0
  30. data/vendor/assets/javascripts/.keep +0 -0
  31. data/vendor/assets/javascripts/affix.js +153 -0
  32. data/vendor/assets/javascripts/alert.js +85 -0
  33. data/vendor/assets/javascripts/animation.js +45 -0
  34. data/vendor/assets/javascripts/button.js +107 -0
  35. data/vendor/assets/javascripts/carousel.js +228 -0
  36. data/vendor/assets/javascripts/chart.js +3309 -0
  37. data/vendor/assets/javascripts/collapse.js +202 -0
  38. data/vendor/assets/javascripts/date_picker.js +1649 -0
  39. data/vendor/assets/javascripts/dropdown.js +152 -0
  40. data/vendor/assets/javascripts/file_input.js +71 -0
  41. data/vendor/assets/javascripts/hoverdown.js +109 -0
  42. data/vendor/assets/javascripts/map.js +2174 -0
  43. data/vendor/assets/javascripts/modal.js +234 -0
  44. data/vendor/assets/javascripts/popover.js +99 -0
  45. data/vendor/assets/javascripts/scrollspy.js +163 -0
  46. data/vendor/assets/javascripts/sort.js +1432 -0
  47. data/vendor/assets/javascripts/swoggle.js +415 -0
  48. data/vendor/assets/javascripts/tab.js +144 -0
  49. data/vendor/assets/javascripts/tablespy.js +1883 -0
  50. data/vendor/assets/javascripts/time_ago.js +206 -0
  51. data/vendor/assets/javascripts/time_picker.js +1087 -0
  52. data/vendor/assets/javascripts/tooltip.js +466 -0
  53. data/vendor/assets/javascripts/transition.js +50 -0
  54. data/vendor/assets/javascripts/typeahead.js +368 -0
  55. data/vendor/assets/stylesheets/.keep +0 -0
  56. data/vendor/assets/stylesheets/ad.scss +72 -0
  57. data/vendor/assets/stylesheets/affix.scss +11 -0
  58. data/vendor/assets/stylesheets/alert.scss +57 -0
  59. data/vendor/assets/stylesheets/animation.scss +2388 -0
  60. data/vendor/assets/stylesheets/aside.scss +136 -0
  61. data/vendor/assets/stylesheets/breadcrumb.scss +23 -0
  62. data/vendor/assets/stylesheets/button.scss +581 -0
  63. data/vendor/assets/stylesheets/carousel.scss +152 -0
  64. data/vendor/assets/stylesheets/chart.scss +11 -0
  65. data/vendor/assets/stylesheets/code.scss +139 -0
  66. data/vendor/assets/stylesheets/collapse.scss +15 -0
  67. data/vendor/assets/stylesheets/datepicker.scss +136 -0
  68. data/vendor/assets/stylesheets/dropdown.scss +90 -0
  69. data/vendor/assets/stylesheets/footer.scss +68 -0
  70. data/vendor/assets/stylesheets/form.scss +346 -0
  71. data/vendor/assets/stylesheets/grid.scss +287 -0
  72. data/vendor/assets/stylesheets/header.scss +205 -0
  73. data/vendor/assets/stylesheets/icon.scss +1538 -0
  74. data/vendor/assets/stylesheets/image.scss +330 -0
  75. data/vendor/assets/stylesheets/label_and_badge.scss +110 -0
  76. data/vendor/assets/stylesheets/link.scss +25 -0
  77. data/vendor/assets/stylesheets/list.scss +60 -0
  78. data/vendor/assets/stylesheets/map.scss +13 -0
  79. data/vendor/assets/stylesheets/modal.scss +137 -0
  80. data/vendor/assets/stylesheets/nav_and_tab.scss +183 -0
  81. data/vendor/assets/stylesheets/pagination.scss +41 -0
  82. data/vendor/assets/stylesheets/panel.scss +62 -0
  83. data/vendor/assets/stylesheets/placeholder.scss +44 -0
  84. data/vendor/assets/stylesheets/popover.scss +117 -0
  85. data/vendor/assets/stylesheets/progress.scss +43 -0
  86. data/vendor/assets/stylesheets/reset.scss +88 -0
  87. data/vendor/assets/stylesheets/spinner.scss +767 -0
  88. data/vendor/assets/stylesheets/swoggle.scss +126 -0
  89. data/vendor/assets/stylesheets/table.scss +149 -0
  90. data/vendor/assets/stylesheets/timepicker.scss +75 -0
  91. data/vendor/assets/stylesheets/tooltip.scss +90 -0
  92. data/vendor/assets/stylesheets/transition.scss +12 -0
  93. data/vendor/assets/stylesheets/trunk.scss +116 -0
  94. data/vendor/assets/stylesheets/typeahead.scss +8 -0
  95. data/vendor/assets/stylesheets/typography.scss +191 -0
  96. metadata +167 -0
@@ -0,0 +1,1432 @@
1
+ ;(function(){
2
+
3
+ /**
4
+ * Require the given path.
5
+ *
6
+ * @param {String} path
7
+ * @return {Object} exports
8
+ * @api public
9
+ */
10
+
11
+ function require(path, parent, orig) {
12
+ var resolved = require.resolve(path);
13
+
14
+ // lookup failed
15
+ if (null == resolved) {
16
+ orig = orig || path;
17
+ parent = parent || 'root';
18
+ var err = new Error('Failed to require "' + orig + '" from "' + parent + '"');
19
+ err.path = orig;
20
+ err.parent = parent;
21
+ err.require = true;
22
+ throw err;
23
+ }
24
+
25
+ var module = require.modules[resolved];
26
+
27
+ // perform real require()
28
+ // by invoking the module's
29
+ // registered function
30
+ if (!module._resolving && !module.exports) {
31
+ var mod = {};
32
+ mod.exports = {};
33
+ mod.client = mod.component = true;
34
+ module._resolving = true;
35
+ module.call(this, mod.exports, require.relative(resolved), mod);
36
+ delete module._resolving;
37
+ module.exports = mod.exports;
38
+ }
39
+
40
+ return module.exports;
41
+ }
42
+
43
+ /**
44
+ * Registered modules.
45
+ */
46
+
47
+ require.modules = {};
48
+
49
+ /**
50
+ * Registered aliases.
51
+ */
52
+
53
+ require.aliases = {};
54
+
55
+ /**
56
+ * Resolve `path`.
57
+ *
58
+ * Lookup:
59
+ *
60
+ * - PATH/index.js
61
+ * - PATH.js
62
+ * - PATH
63
+ *
64
+ * @param {String} path
65
+ * @return {String} path or null
66
+ * @api private
67
+ */
68
+
69
+ require.resolve = function(path) {
70
+ if (path.charAt(0) === '/') path = path.slice(1);
71
+
72
+ var paths = [
73
+ path,
74
+ path + '.js',
75
+ path + '.json',
76
+ path + '/index.js',
77
+ path + '/index.json'
78
+ ];
79
+
80
+ for (var i = 0; i < paths.length; i++) {
81
+ var path = paths[i];
82
+ if (require.modules.hasOwnProperty(path)) return path;
83
+ if (require.aliases.hasOwnProperty(path)) return require.aliases[path];
84
+ }
85
+ };
86
+
87
+ /**
88
+ * Normalize `path` relative to the current path.
89
+ *
90
+ * @param {String} curr
91
+ * @param {String} path
92
+ * @return {String}
93
+ * @api private
94
+ */
95
+
96
+ require.normalize = function(curr, path) {
97
+ var segs = [];
98
+
99
+ if ('.' != path.charAt(0)) return path;
100
+
101
+ curr = curr.split('/');
102
+ path = path.split('/');
103
+
104
+ for (var i = 0; i < path.length; ++i) {
105
+ if ('..' == path[i]) {
106
+ curr.pop();
107
+ } else if ('.' != path[i] && '' != path[i]) {
108
+ segs.push(path[i]);
109
+ }
110
+ }
111
+
112
+ return curr.concat(segs).join('/');
113
+ };
114
+
115
+ /**
116
+ * Register module at `path` with callback `definition`.
117
+ *
118
+ * @param {String} path
119
+ * @param {Function} definition
120
+ * @api private
121
+ */
122
+
123
+ require.register = function(path, definition) {
124
+ require.modules[path] = definition;
125
+ };
126
+
127
+ /**
128
+ * Alias a module definition.
129
+ *
130
+ * @param {String} from
131
+ * @param {String} to
132
+ * @api private
133
+ */
134
+
135
+ require.alias = function(from, to) {
136
+ if (!require.modules.hasOwnProperty(from)) {
137
+ throw new Error('Failed to alias "' + from + '", it does not exist');
138
+ }
139
+ require.aliases[to] = from;
140
+ };
141
+
142
+ /**
143
+ * Return a require function relative to the `parent` path.
144
+ *
145
+ * @param {String} parent
146
+ * @return {Function}
147
+ * @api private
148
+ */
149
+
150
+ require.relative = function(parent) {
151
+ var p = require.normalize(parent, '..');
152
+
153
+ /**
154
+ * lastIndexOf helper.
155
+ */
156
+
157
+ function lastIndexOf(arr, obj) {
158
+ var i = arr.length;
159
+ while (i--) {
160
+ if (arr[i] === obj) return i;
161
+ }
162
+ return -1;
163
+ }
164
+
165
+ /**
166
+ * The relative require() itself.
167
+ */
168
+
169
+ function localRequire(path) {
170
+ var resolved = localRequire.resolve(path);
171
+ return require(resolved, parent, path);
172
+ }
173
+
174
+ /**
175
+ * Resolve relative to the parent.
176
+ */
177
+
178
+ localRequire.resolve = function(path) {
179
+ var c = path.charAt(0);
180
+ if ('/' == c) return path.slice(1);
181
+ if ('.' == c) return require.normalize(p, path);
182
+
183
+ // resolve deps by returning
184
+ // the dep in the nearest "deps"
185
+ // directory
186
+ var segs = parent.split('/');
187
+ var i = lastIndexOf(segs, 'deps') + 1;
188
+ if (!i) i = 0;
189
+ path = segs.slice(0, i + 1).join('/') + '/deps/' + path;
190
+ return path;
191
+ };
192
+
193
+ /**
194
+ * Check if module is defined at `path`.
195
+ */
196
+
197
+ localRequire.exists = function(path) {
198
+ return require.modules.hasOwnProperty(localRequire.resolve(path));
199
+ };
200
+
201
+ return localRequire;
202
+ };
203
+ require.register("component-classes/index.js", function(exports, require, module){
204
+ /**
205
+ * Module dependencies.
206
+ */
207
+
208
+ var index = require('indexof');
209
+
210
+ /**
211
+ * Whitespace regexp.
212
+ */
213
+
214
+ var re = /\s+/;
215
+
216
+ /**
217
+ * toString reference.
218
+ */
219
+
220
+ var toString = Object.prototype.toString;
221
+
222
+ /**
223
+ * Wrap `el` in a `ClassList`.
224
+ *
225
+ * @param {Element} el
226
+ * @return {ClassList}
227
+ * @api public
228
+ */
229
+
230
+ module.exports = function(el){
231
+ return new ClassList(el);
232
+ };
233
+
234
+ /**
235
+ * Initialize a new ClassList for `el`.
236
+ *
237
+ * @param {Element} el
238
+ * @api private
239
+ */
240
+
241
+ function ClassList(el) {
242
+ if (!el) throw new Error('A DOM element reference is required');
243
+ this.el = el;
244
+ this.list = el.classList;
245
+ }
246
+
247
+ /**
248
+ * Add class `name` if not already present.
249
+ *
250
+ * @param {String} name
251
+ * @return {ClassList}
252
+ * @api public
253
+ */
254
+
255
+ ClassList.prototype.add = function(name){
256
+ // classList
257
+ if (this.list) {
258
+ this.list.add(name);
259
+ return this;
260
+ }
261
+
262
+ // fallback
263
+ var arr = this.array();
264
+ var i = index(arr, name);
265
+ if (!~i) arr.push(name);
266
+ this.el.className = arr.join(' ');
267
+ return this;
268
+ };
269
+
270
+ /**
271
+ * Remove class `name` when present, or
272
+ * pass a regular expression to remove
273
+ * any which match.
274
+ *
275
+ * @param {String|RegExp} name
276
+ * @return {ClassList}
277
+ * @api public
278
+ */
279
+
280
+ ClassList.prototype.remove = function(name){
281
+ if ('[object RegExp]' == toString.call(name)) {
282
+ return this.removeMatching(name);
283
+ }
284
+
285
+ // classList
286
+ if (this.list) {
287
+ this.list.remove(name);
288
+ return this;
289
+ }
290
+
291
+ // fallback
292
+ var arr = this.array();
293
+ var i = index(arr, name);
294
+ if (~i) arr.splice(i, 1);
295
+ this.el.className = arr.join(' ');
296
+ return this;
297
+ };
298
+
299
+ /**
300
+ * Remove all classes matching `re`.
301
+ *
302
+ * @param {RegExp} re
303
+ * @return {ClassList}
304
+ * @api private
305
+ */
306
+
307
+ ClassList.prototype.removeMatching = function(re){
308
+ var arr = this.array();
309
+ for (var i = 0; i < arr.length; i++) {
310
+ if (re.test(arr[i])) {
311
+ this.remove(arr[i]);
312
+ }
313
+ }
314
+ return this;
315
+ };
316
+
317
+ /**
318
+ * Toggle class `name`, can force state via `force`.
319
+ *
320
+ * For browsers that support classList, but do not support `force` yet,
321
+ * the mistake will be detected and corrected.
322
+ *
323
+ * @param {String} name
324
+ * @param {Boolean} force
325
+ * @return {ClassList}
326
+ * @api public
327
+ */
328
+
329
+ ClassList.prototype.toggle = function(name, force){
330
+ // classList
331
+ if (this.list) {
332
+ if ("undefined" !== typeof force) {
333
+ if (force !== this.list.toggle(name, force)) {
334
+ this.list.toggle(name); // toggle again to correct
335
+ }
336
+ } else {
337
+ this.list.toggle(name);
338
+ }
339
+ return this;
340
+ }
341
+
342
+ // fallback
343
+ if ("undefined" !== typeof force) {
344
+ if (!force) {
345
+ this.remove(name);
346
+ } else {
347
+ this.add(name);
348
+ }
349
+ } else {
350
+ if (this.has(name)) {
351
+ this.remove(name);
352
+ } else {
353
+ this.add(name);
354
+ }
355
+ }
356
+
357
+ return this;
358
+ };
359
+
360
+ /**
361
+ * Return an array of classes.
362
+ *
363
+ * @return {Array}
364
+ * @api public
365
+ */
366
+
367
+ ClassList.prototype.array = function(){
368
+ var str = this.el.className.replace(/^\s+|\s+$/g, '');
369
+ var arr = str.split(re);
370
+ if ('' === arr[0]) arr.shift();
371
+ return arr;
372
+ };
373
+
374
+ /**
375
+ * Check if class `name` is present.
376
+ *
377
+ * @param {String} name
378
+ * @return {ClassList}
379
+ * @api public
380
+ */
381
+
382
+ ClassList.prototype.has =
383
+ ClassList.prototype.contains = function(name){
384
+ return this.list
385
+ ? this.list.contains(name)
386
+ : !! ~index(this.array(), name);
387
+ };
388
+
389
+ });
390
+ require.register("segmentio-extend/index.js", function(exports, require, module){
391
+
392
+ module.exports = function extend (object) {
393
+ // Takes an unlimited number of extenders.
394
+ var args = Array.prototype.slice.call(arguments, 1);
395
+
396
+ // For each extender, copy their properties on our object.
397
+ for (var i = 0, source; source = args[i]; i++) {
398
+ if (!source) continue;
399
+ for (var property in source) {
400
+ object[property] = source[property];
401
+ }
402
+ }
403
+
404
+ return object;
405
+ };
406
+ });
407
+ require.register("component-indexof/index.js", function(exports, require, module){
408
+ module.exports = function(arr, obj){
409
+ if (arr.indexOf) return arr.indexOf(obj);
410
+ for (var i = 0; i < arr.length; ++i) {
411
+ if (arr[i] === obj) return i;
412
+ }
413
+ return -1;
414
+ };
415
+ });
416
+ require.register("component-event/index.js", function(exports, require, module){
417
+ var bind = window.addEventListener ? 'addEventListener' : 'attachEvent',
418
+ unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent',
419
+ prefix = bind !== 'addEventListener' ? 'on' : '';
420
+
421
+ /**
422
+ * Bind `el` event `type` to `fn`.
423
+ *
424
+ * @param {Element} el
425
+ * @param {String} type
426
+ * @param {Function} fn
427
+ * @param {Boolean} capture
428
+ * @return {Function}
429
+ * @api public
430
+ */
431
+
432
+ exports.bind = function(el, type, fn, capture){
433
+ el[bind](prefix + type, fn, capture || false);
434
+ return fn;
435
+ };
436
+
437
+ /**
438
+ * Unbind `el` event `type`'s callback `fn`.
439
+ *
440
+ * @param {Element} el
441
+ * @param {String} type
442
+ * @param {Function} fn
443
+ * @param {Boolean} capture
444
+ * @return {Function}
445
+ * @api public
446
+ */
447
+
448
+ exports.unbind = function(el, type, fn, capture){
449
+ el[unbind](prefix + type, fn, capture || false);
450
+ return fn;
451
+ };
452
+ });
453
+ require.register("javve-to-array/index.js", function(exports, require, module){
454
+ /**
455
+ * Convert an array-like object into an `Array`.
456
+ * If `collection` is already an `Array`, then will return a clone of `collection`.
457
+ *
458
+ * @param {Array | Mixed} collection An `Array` or array-like object to convert e.g. `arguments` or `NodeList`
459
+ * @return {Array} Naive conversion of `collection` to a new `Array`.
460
+ * @api public
461
+ */
462
+
463
+ module.exports = function toArray(collection) {
464
+ if (typeof collection === 'undefined') return []
465
+ if (collection === null) return [null]
466
+ if (collection === window) return [window]
467
+ if (typeof collection === 'string') return [collection]
468
+ if (collection instanceof Array) return collection
469
+ if (typeof collection.length != 'number') return [collection]
470
+ if (typeof collection === 'function') return [collection]
471
+
472
+ var arr = []
473
+ for (var i = 0; i < collection.length; i++) {
474
+ if (Object.prototype.hasOwnProperty.call(collection, i) || i in collection) {
475
+ arr.push(collection[i])
476
+ }
477
+ }
478
+ if (!arr.length) return []
479
+ return arr
480
+ }
481
+
482
+ });
483
+ require.register("javve-events/index.js", function(exports, require, module){
484
+ var events = require('event'),
485
+ toArray = require('to-array');
486
+
487
+ /**
488
+ * Bind `el` event `type` to `fn`.
489
+ *
490
+ * @param {Element} el, NodeList, HTMLCollection or Array
491
+ * @param {String} type
492
+ * @param {Function} fn
493
+ * @param {Boolean} capture
494
+ * @api public
495
+ */
496
+
497
+ exports.bind = function(el, type, fn, capture){
498
+ el = toArray(el);
499
+ for ( var i = 0; i < el.length; i++ ) {
500
+ events.bind(el[i], type, fn, capture);
501
+ }
502
+ };
503
+
504
+ /**
505
+ * Unbind `el` event `type`'s callback `fn`.
506
+ *
507
+ * @param {Element} el, NodeList, HTMLCollection or Array
508
+ * @param {String} type
509
+ * @param {Function} fn
510
+ * @param {Boolean} capture
511
+ * @api public
512
+ */
513
+
514
+ exports.unbind = function(el, type, fn, capture){
515
+ el = toArray(el);
516
+ for ( var i = 0; i < el.length; i++ ) {
517
+ events.unbind(el[i], type, fn, capture);
518
+ }
519
+ };
520
+
521
+ });
522
+ require.register("javve-get-by-class/index.js", function(exports, require, module){
523
+ /**
524
+ * Find all elements with class `className` inside `container`.
525
+ * Use `single = true` to increase performance in older browsers
526
+ * when only one element is needed.
527
+ *
528
+ * @param {String} className
529
+ * @param {Element} container
530
+ * @param {Boolean} single
531
+ * @api public
532
+ */
533
+
534
+ module.exports = (function() {
535
+ if (document.getElementsByClassName) {
536
+ return function(container, className, single) {
537
+ if (single) {
538
+ return container.getElementsByClassName(className)[0];
539
+ } else {
540
+ return container.getElementsByClassName(className);
541
+ }
542
+ };
543
+ } else if (document.querySelector) {
544
+ return function(container, className, single) {
545
+ className = '.' + className;
546
+ if (single) {
547
+ return container.querySelector(className);
548
+ } else {
549
+ return container.querySelectorAll(className);
550
+ }
551
+ };
552
+ } else {
553
+ return function(container, className, single) {
554
+ var classElements = [],
555
+ tag = '*';
556
+ if (container == null) {
557
+ container = document;
558
+ }
559
+ var els = container.getElementsByTagName(tag);
560
+ var elsLen = els.length;
561
+ var pattern = new RegExp("(^|\\s)"+className+"(\\s|$)");
562
+ for (var i = 0, j = 0; i < elsLen; i++) {
563
+ if ( pattern.test(els[i].className) ) {
564
+ if (single) {
565
+ return els[i];
566
+ } else {
567
+ classElements[j] = els[i];
568
+ j++;
569
+ }
570
+ }
571
+ }
572
+ return classElements;
573
+ };
574
+ }
575
+ })();
576
+
577
+ });
578
+ require.register("javve-get-attribute/index.js", function(exports, require, module){
579
+ /**
580
+ * Return the value for `attr` at `element`.
581
+ *
582
+ * @param {Element} el
583
+ * @param {String} attr
584
+ * @api public
585
+ */
586
+
587
+ module.exports = function(el, attr) {
588
+ var result = (el.getAttribute && el.getAttribute(attr)) || null;
589
+ if( !result ) {
590
+ var attrs = el.attributes;
591
+ var length = attrs.length;
592
+ for(var i = 0; i < length; i++) {
593
+ if (attr[i] !== undefined) {
594
+ if(attr[i].nodeName === attr) {
595
+ result = attr[i].nodeValue;
596
+ }
597
+ }
598
+ }
599
+ }
600
+ return result;
601
+ }
602
+ });
603
+ require.register("javve-natural-sort/index.js", function(exports, require, module){
604
+ /*
605
+ * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
606
+ * Author: Jim Palmer (based on chunking idea from Dave Koelle)
607
+ */
608
+
609
+ module.exports = function(a, b, options) {
610
+ var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
611
+ sre = /(^[ ]*|[ ]*$)/g,
612
+ dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
613
+ hre = /^0x[0-9a-f]+$/i,
614
+ ore = /^0/,
615
+ options = options || {},
616
+ i = function(s) { return options.insensitive && (''+s).toLowerCase() || ''+s },
617
+ // convert all to strings strip whitespace
618
+ x = i(a).replace(sre, '') || '',
619
+ y = i(b).replace(sre, '') || '',
620
+ // chunk/tokenize
621
+ xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
622
+ yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
623
+ // numeric, hex or date detection
624
+ xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
625
+ yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null,
626
+ oFxNcL, oFyNcL,
627
+ mult = options.desc ? -1 : 1;
628
+ // first try and sort Hex codes or Dates
629
+ if (yD)
630
+ if ( xD < yD ) return -1 * mult;
631
+ else if ( xD > yD ) return 1 * mult;
632
+ // natural sorting through split numeric strings and default strings
633
+ for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {
634
+ // find floats not starting with '0', string or 0 if not defined (Clint Priest)
635
+ oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
636
+ oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
637
+ // handle numeric vs string comparison - number < string - (Kyle Adams)
638
+ if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }
639
+ // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
640
+ else if (typeof oFxNcL !== typeof oFyNcL) {
641
+ oFxNcL += '';
642
+ oFyNcL += '';
643
+ }
644
+ if (oFxNcL < oFyNcL) return -1 * mult;
645
+ if (oFxNcL > oFyNcL) return 1 * mult;
646
+ }
647
+ return 0;
648
+ };
649
+
650
+ /*
651
+ var defaultSort = getSortFunction();
652
+
653
+ module.exports = function(a, b, options) {
654
+ if (arguments.length == 1) {
655
+ options = a;
656
+ return getSortFunction(options);
657
+ } else {
658
+ return defaultSort(a,b);
659
+ }
660
+ }
661
+ */
662
+ });
663
+ require.register("javve-to-string/index.js", function(exports, require, module){
664
+ module.exports = function(s) {
665
+ s = (s === undefined) ? "" : s;
666
+ s = (s === null) ? "" : s;
667
+ s = s.toString();
668
+ return s;
669
+ };
670
+
671
+ });
672
+ require.register("component-type/index.js", function(exports, require, module){
673
+ /**
674
+ * toString ref.
675
+ */
676
+
677
+ var toString = Object.prototype.toString;
678
+
679
+ /**
680
+ * Return the type of `val`.
681
+ *
682
+ * @param {Mixed} val
683
+ * @return {String}
684
+ * @api public
685
+ */
686
+
687
+ module.exports = function(val){
688
+ switch (toString.call(val)) {
689
+ case '[object Date]': return 'date';
690
+ case '[object RegExp]': return 'regexp';
691
+ case '[object Arguments]': return 'arguments';
692
+ case '[object Array]': return 'array';
693
+ case '[object Error]': return 'error';
694
+ }
695
+
696
+ if (val === null) return 'null';
697
+ if (val === undefined) return 'undefined';
698
+ if (val !== val) return 'nan';
699
+ if (val && val.nodeType === 1) return 'element';
700
+
701
+ return typeof val.valueOf();
702
+ };
703
+
704
+ });
705
+ require.register("list.js/index.js", function(exports, require, module){
706
+ /*
707
+ ListJS with beta 1.0.0
708
+ By Jonny Strömberg (www.jonnystromberg.com, www.listjs.com)
709
+ */
710
+ (function( window, undefined ) {
711
+ "use strict";
712
+
713
+ var document = window.document,
714
+ getByClass = require('get-by-class'),
715
+ extend = require('extend'),
716
+ indexOf = require('indexof');
717
+
718
+ var List = function(id, options, values) {
719
+
720
+ var self = this,
721
+ init,
722
+ Item = require('./src/item')(self),
723
+ addAsync = require('./src/add-async')(self),
724
+ parse = require('./src/parse')(self);
725
+
726
+ init = {
727
+ start: function() {
728
+ self.listClass = "sortable";
729
+ self.searchClass = "sort-filter";
730
+ self.sortClass = "sort-trigger";
731
+ self.page = 200;
732
+ self.i = 1;
733
+ self.items = [];
734
+ self.visibleItems = [];
735
+ self.matchingItems = [];
736
+ self.searched = false;
737
+ self.filtered = false;
738
+ self.handlers = { 'updated': [] };
739
+ self.plugins = {};
740
+ self.helpers = {
741
+ getByClass: getByClass,
742
+ extend: extend,
743
+ indexOf: indexOf
744
+ };
745
+
746
+ extend(self, options);
747
+
748
+ self.listContainer = (typeof(id) === 'string') ? document.getElementById(id) : id;
749
+ if (!self.listContainer) { return; }
750
+ self.list = getByClass(self.listContainer, self.listClass, true);
751
+
752
+ self.templater = require('./src/templater')(self);
753
+ self.search = require('./src/search')(self);
754
+ self.filter = require('./src/filter')(self);
755
+ self.sort = require('./src/sort')(self);
756
+
757
+ this.items();
758
+ self.update();
759
+ this.plugins();
760
+ },
761
+ items: function() {
762
+ parse(self.list);
763
+ if (values !== undefined) {
764
+ self.add(values);
765
+ }
766
+ },
767
+ plugins: function() {
768
+ for (var i = 0; i < self.plugins.length; i++) {
769
+ var plugin = self.plugins[i];
770
+ self[plugin.name] = plugin;
771
+ plugin.init(self);
772
+ }
773
+ }
774
+ };
775
+
776
+
777
+ /*
778
+ * Add object to list
779
+ */
780
+ this.add = function(values, callback) {
781
+ if (callback) {
782
+ addAsync(values, callback);
783
+ return;
784
+ }
785
+ var added = [],
786
+ notCreate = false;
787
+ if (values[0] === undefined){
788
+ values = [values];
789
+ }
790
+ for (var i = 0, il = values.length; i < il; i++) {
791
+ var item = null;
792
+ if (values[i] instanceof Item) {
793
+ item = values[i];
794
+ item.reload();
795
+ } else {
796
+ notCreate = (self.items.length > self.page) ? true : false;
797
+ item = new Item(values[i], undefined, notCreate);
798
+ }
799
+ self.items.push(item);
800
+ added.push(item);
801
+ }
802
+ self.update();
803
+ return added;
804
+ };
805
+
806
+ this.show = function(i, page) {
807
+ this.i = i;
808
+ this.page = page;
809
+ self.update();
810
+ return self;
811
+ };
812
+
813
+ /* Removes object from list.
814
+ * Loops through the list and removes objects where
815
+ * property "valuename" === value
816
+ */
817
+ this.remove = function(valueName, value, options) {
818
+ var found = 0;
819
+ for (var i = 0, il = self.items.length; i < il; i++) {
820
+ if (self.items[i].values()[valueName] == value) {
821
+ self.templater.remove(self.items[i], options);
822
+ self.items.splice(i,1);
823
+ il--;
824
+ i--;
825
+ found++;
826
+ }
827
+ }
828
+ self.update();
829
+ return found;
830
+ };
831
+
832
+ /* Gets the objects in the list which
833
+ * property "valueName" === value
834
+ */
835
+ this.get = function(valueName, value) {
836
+ var matchedItems = [];
837
+ for (var i = 0, il = self.items.length; i < il; i++) {
838
+ var item = self.items[i];
839
+ if (item.values()[valueName] == value) {
840
+ matchedItems.push(item);
841
+ }
842
+ }
843
+ return matchedItems;
844
+ };
845
+
846
+ /*
847
+ * Get size of the list
848
+ */
849
+ this.size = function() {
850
+ return self.items.length;
851
+ };
852
+
853
+ /*
854
+ * Removes all items from the list
855
+ */
856
+ this.clear = function() {
857
+ self.templater.clear();
858
+ self.items = [];
859
+ return self;
860
+ };
861
+
862
+ this.on = function(event, callback) {
863
+ self.handlers[event].push(callback);
864
+ return self;
865
+ };
866
+
867
+ this.off = function(event, callback) {
868
+ var e = self.handlers[event];
869
+ var index = indexOf(e, callback);
870
+ if (index > -1) {
871
+ e.splice(index, 1);
872
+ }
873
+ return self;
874
+ };
875
+
876
+ this.trigger = function(event) {
877
+ var i = self.handlers[event].length;
878
+ while(i--) {
879
+ self.handlers[event][i](self);
880
+ }
881
+ return self;
882
+ };
883
+
884
+ this.reset = {
885
+ filter: function() {
886
+ var is = self.items,
887
+ il = is.length;
888
+ while (il--) {
889
+ is[il].filtered = false;
890
+ }
891
+ return self;
892
+ },
893
+ search: function() {
894
+ var is = self.items,
895
+ il = is.length;
896
+ while (il--) {
897
+ is[il].found = false;
898
+ }
899
+ return self;
900
+ }
901
+ };
902
+
903
+ this.update = function() {
904
+ var is = self.items,
905
+ il = is.length;
906
+
907
+ self.visibleItems = [];
908
+ self.matchingItems = [];
909
+ self.templater.clear();
910
+ for (var i = 0; i < il; i++) {
911
+ if (is[i].matching() && ((self.matchingItems.length+1) >= self.i && self.visibleItems.length < self.page)) {
912
+ is[i].show();
913
+ self.visibleItems.push(is[i]);
914
+ self.matchingItems.push(is[i]);
915
+ } else if (is[i].matching()) {
916
+ self.matchingItems.push(is[i]);
917
+ is[i].hide();
918
+ } else {
919
+ is[i].hide();
920
+ }
921
+ }
922
+ self.trigger('updated');
923
+ return self;
924
+ };
925
+
926
+ init.start();
927
+ };
928
+
929
+ module.exports = List;
930
+
931
+ })(window);
932
+
933
+ });
934
+ require.register("list.js/src/search.js", function(exports, require, module){
935
+ var events = require('events'),
936
+ getByClass = require('get-by-class'),
937
+ toString = require('to-string');
938
+
939
+ module.exports = function(list) {
940
+ var item,
941
+ text,
942
+ columns,
943
+ searchString,
944
+ customSearch;
945
+
946
+ var prepare = {
947
+ resetList: function() {
948
+ list.i = 1;
949
+ list.templater.clear();
950
+ customSearch = undefined;
951
+ },
952
+ setOptions: function(args) {
953
+ if (args.length == 2 && args[1] instanceof Array) {
954
+ columns = args[1];
955
+ } else if (args.length == 2 && typeof(args[1]) == "function") {
956
+ customSearch = args[1];
957
+ } else if (args.length == 3) {
958
+ columns = args[1];
959
+ customSearch = args[2];
960
+ }
961
+ },
962
+ setColumns: function() {
963
+ columns = (columns === undefined) ? prepare.toArray(list.items[0].values()) : columns;
964
+ },
965
+ setSearchString: function(s) {
966
+ s = toString(s).toLowerCase();
967
+ s = s.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&"); // Escape regular expression characters
968
+ searchString = s;
969
+ },
970
+ toArray: function(values) {
971
+ var tmpColumn = [];
972
+ for (var name in values) {
973
+ tmpColumn.push(name);
974
+ }
975
+ return tmpColumn;
976
+ }
977
+ };
978
+ var search = {
979
+ list: function() {
980
+ for (var k = 0, kl = list.items.length; k < kl; k++) {
981
+ search.item(list.items[k]);
982
+ }
983
+ },
984
+ item: function(item) {
985
+ item.found = false;
986
+ for (var j = 0, jl = columns.length; j < jl; j++) {
987
+ if (search.values(item.values(), columns[j])) {
988
+ item.found = true;
989
+ return;
990
+ }
991
+ }
992
+ },
993
+ values: function(values, column) {
994
+ if (values.hasOwnProperty(column)) {
995
+ text = toString(values[column]).toLowerCase();
996
+ if ((searchString !== "") && (text.search(searchString) > -1)) {
997
+ return true;
998
+ }
999
+ }
1000
+ return false;
1001
+ },
1002
+ reset: function() {
1003
+ list.reset.search();
1004
+ list.searched = false;
1005
+ }
1006
+ };
1007
+
1008
+ var searchMethod = function(str) {
1009
+ list.trigger('searchStart');
1010
+
1011
+ prepare.resetList();
1012
+ prepare.setSearchString(str);
1013
+ prepare.setOptions(arguments); // str, cols|searchFunction, searchFunction
1014
+ prepare.setColumns();
1015
+
1016
+ if (searchString === "" ) {
1017
+ search.reset();
1018
+ } else {
1019
+ list.searched = true;
1020
+ if (customSearch) {
1021
+ customSearch(searchString, columns);
1022
+ } else {
1023
+ search.list();
1024
+ }
1025
+ }
1026
+
1027
+ list.update();
1028
+ list.trigger('searchComplete');
1029
+ return list.visibleItems;
1030
+ };
1031
+
1032
+ list.handlers.searchStart = list.handlers.searchStart || [];
1033
+ list.handlers.searchComplete = list.handlers.searchComplete || [];
1034
+
1035
+ events.bind(getByClass(list.listContainer, list.searchClass), 'keyup', function(e) {
1036
+ var target = e.target || e.srcElement; // IE have srcElement
1037
+ searchMethod(target.value);
1038
+ });
1039
+
1040
+ list.helpers.toString = toString;
1041
+ return searchMethod;
1042
+ };
1043
+
1044
+ });
1045
+ require.register("list.js/src/sort.js", function(exports, require, module){
1046
+ var naturalSort = require('natural-sort'),
1047
+ classes = require('classes'),
1048
+ events = require('events'),
1049
+ getByClass = require('get-by-class'),
1050
+ getAttribute = require('get-attribute');
1051
+
1052
+ module.exports = function(list) {
1053
+ list.sortFunction = list.sortFunction || function(itemA, itemB, options) {
1054
+ options.desc = options.order == "desc" ? true : false; // Natural sort uses this format
1055
+ return naturalSort(itemA.values()[options.valueName], itemB.values()[options.valueName], options);
1056
+ };
1057
+
1058
+ var buttons = {
1059
+ els: undefined,
1060
+ clear: function() {
1061
+ for (var i = 0, il = buttons.els.length; i < il; i++) {
1062
+ classes(buttons.els[i]).remove('asc');
1063
+ classes(buttons.els[i]).remove('desc');
1064
+ }
1065
+ },
1066
+ getOrder: function(btn) {
1067
+ var predefinedOrder = getAttribute(btn, 'data-order');
1068
+ if (predefinedOrder == "asc" || predefinedOrder == "desc") {
1069
+ return predefinedOrder;
1070
+ } else if (classes(btn).has('desc')) {
1071
+ return "asc";
1072
+ } else if (classes(btn).has('asc')) {
1073
+ return "desc";
1074
+ } else {
1075
+ return "asc";
1076
+ }
1077
+ },
1078
+ getInSensitive: function(btn, options) {
1079
+ var insensitive = getAttribute(btn, 'data-insensitive');
1080
+ if (insensitive === "true") {
1081
+ options.insensitive = true;
1082
+ } else {
1083
+ options.insensitive = false;
1084
+ }
1085
+ },
1086
+ setOrder: function(options) {
1087
+ for (var i = 0, il = buttons.els.length; i < il; i++) {
1088
+ var btn = buttons.els[i];
1089
+ if (getAttribute(btn, 'data-sort') !== options.valueName) {
1090
+ continue;
1091
+ }
1092
+ var predefinedOrder = getAttribute(btn, 'data-order');
1093
+ if (predefinedOrder == "asc" || predefinedOrder == "desc") {
1094
+ if (predefinedOrder == options.order) {
1095
+ classes(btn).add(options.order);
1096
+ }
1097
+ } else {
1098
+ classes(btn).add(options.order);
1099
+ }
1100
+ }
1101
+ }
1102
+ };
1103
+ var sort = function() {
1104
+ list.trigger('sortStart');
1105
+ options = {};
1106
+
1107
+ var target = arguments[0].currentTarget || arguments[0].srcElement || undefined;
1108
+
1109
+ if (target) {
1110
+ options.valueName = getAttribute(target, 'data-sort');
1111
+ buttons.getInSensitive(target, options);
1112
+ options.order = buttons.getOrder(target);
1113
+ } else {
1114
+ options = arguments[1] || options;
1115
+ options.valueName = arguments[0];
1116
+ options.order = options.order || "asc";
1117
+ options.insensitive = (typeof options.insensitive == "undefined") ? true : options.insensitive;
1118
+ }
1119
+ buttons.clear();
1120
+ buttons.setOrder(options);
1121
+
1122
+ options.sortFunction = options.sortFunction || list.sortFunction;
1123
+ list.items.sort(function(a, b) {
1124
+ return options.sortFunction(a, b, options);
1125
+ });
1126
+ list.update();
1127
+ list.trigger('sortComplete');
1128
+ };
1129
+
1130
+ // Add handlers
1131
+ list.handlers.sortStart = list.handlers.sortStart || [];
1132
+ list.handlers.sortComplete = list.handlers.sortComplete || [];
1133
+
1134
+ buttons.els = getByClass(list.listContainer, list.sortClass);
1135
+ events.bind(buttons.els, 'click', sort);
1136
+ list.on('searchStart', buttons.clear);
1137
+ list.on('filterStart', buttons.clear);
1138
+
1139
+ // Helpers
1140
+ list.helpers.classes = classes;
1141
+ list.helpers.naturalSort = naturalSort;
1142
+ list.helpers.events = events;
1143
+ list.helpers.getAttribute = getAttribute;
1144
+
1145
+ return sort;
1146
+ };
1147
+
1148
+ });
1149
+ require.register("list.js/src/item.js", function(exports, require, module){
1150
+ module.exports = function(list) {
1151
+ return function(initValues, element, notCreate) {
1152
+ var item = this;
1153
+
1154
+ this._values = {};
1155
+
1156
+ this.found = false; // Show if list.searched == true and this.found == true
1157
+ this.filtered = false;// Show if list.filtered == true and this.filtered == true
1158
+
1159
+ var init = function(initValues, element, notCreate) {
1160
+ if (element === undefined) {
1161
+ if (notCreate) {
1162
+ item.values(initValues, notCreate);
1163
+ } else {
1164
+ item.values(initValues);
1165
+ }
1166
+ } else {
1167
+ item.elm = element;
1168
+ var values = list.templater.get(item, initValues);
1169
+ item.values(values);
1170
+ }
1171
+ };
1172
+ this.values = function(newValues, notCreate) {
1173
+ if (newValues !== undefined) {
1174
+ for(var name in newValues) {
1175
+ item._values[name] = newValues[name];
1176
+ }
1177
+ if (notCreate !== true) {
1178
+ list.templater.set(item, item.values());
1179
+ }
1180
+ } else {
1181
+ return item._values;
1182
+ }
1183
+ };
1184
+ this.show = function() {
1185
+ list.templater.show(item);
1186
+ };
1187
+ this.hide = function() {
1188
+ list.templater.hide(item);
1189
+ };
1190
+ this.matching = function() {
1191
+ return (
1192
+ (list.filtered && list.searched && item.found && item.filtered) ||
1193
+ (list.filtered && !list.searched && item.filtered) ||
1194
+ (!list.filtered && list.searched && item.found) ||
1195
+ (!list.filtered && !list.searched)
1196
+ );
1197
+ };
1198
+ this.visible = function() {
1199
+ return (item.elm.parentNode == list.list) ? true : false;
1200
+ };
1201
+ init(initValues, element, notCreate);
1202
+ };
1203
+ };
1204
+
1205
+ });
1206
+ require.register("list.js/src/templater.js", function(exports, require, module){
1207
+ var getByClass = require('get-by-class');
1208
+
1209
+ var Templater = function(list) {
1210
+ var itemSource = getItemSource(list.item),
1211
+ templater = this;
1212
+
1213
+ function getItemSource(item) {
1214
+ if (item === undefined) {
1215
+ var nodes = list.list.childNodes,
1216
+ items = [];
1217
+
1218
+ for (var i = 0, il = nodes.length; i < il; i++) {
1219
+ // Only textnodes have a data attribute
1220
+ if (nodes[i].data === undefined) {
1221
+ return nodes[i];
1222
+ }
1223
+ }
1224
+ return null;
1225
+ } else if (item.indexOf("<") !== -1) { // Try create html element of list, do not work for tables!!
1226
+ var div = document.createElement('div');
1227
+ div.innerHTML = item;
1228
+ return div.firstChild;
1229
+ } else {
1230
+ return document.getElementById(list.item);
1231
+ }
1232
+ }
1233
+
1234
+ /* Get values from element */
1235
+ this.get = function(item, valueNames) {
1236
+ templater.create(item);
1237
+ var values = {};
1238
+ for(var i = 0, il = valueNames.length; i < il; i++) {
1239
+ var elm = getByClass(item.elm, valueNames[i], true);
1240
+ values[valueNames[i]] = elm ? elm.innerHTML : "";
1241
+ }
1242
+ return values;
1243
+ };
1244
+
1245
+ /* Sets values at element */
1246
+ this.set = function(item, values) {
1247
+ if (!templater.create(item)) {
1248
+ for(var v in values) {
1249
+ if (values.hasOwnProperty(v)) {
1250
+ // TODO speed up if possible
1251
+ var elm = getByClass(item.elm, v, true);
1252
+ if (elm) {
1253
+ /* src attribute for image tag & text for other tags */
1254
+ if (elm.tagName === "IMG" && values[v] !== "") {
1255
+ elm.src = values[v];
1256
+ } else {
1257
+ elm.innerHTML = values[v];
1258
+ }
1259
+ }
1260
+ }
1261
+ }
1262
+ }
1263
+ };
1264
+
1265
+ this.create = function(item) {
1266
+ if (item.elm !== undefined) {
1267
+ return false;
1268
+ }
1269
+ /* If item source does not exists, use the first item in list as
1270
+ source for new items */
1271
+ var newItem = itemSource.cloneNode(true);
1272
+ newItem.removeAttribute('id');
1273
+ item.elm = newItem;
1274
+ templater.set(item, item.values());
1275
+ return true;
1276
+ };
1277
+ this.remove = function(item) {
1278
+ list.list.removeChild(item.elm);
1279
+ };
1280
+ this.show = function(item) {
1281
+ templater.create(item);
1282
+ list.list.appendChild(item.elm);
1283
+ };
1284
+ this.hide = function(item) {
1285
+ if (item.elm !== undefined && item.elm.parentNode === list.list) {
1286
+ list.list.removeChild(item.elm);
1287
+ }
1288
+ };
1289
+ this.clear = function() {
1290
+ /* .innerHTML = ''; fucks up IE */
1291
+ if (list.list.hasChildNodes()) {
1292
+ while (list.list.childNodes.length >= 1)
1293
+ {
1294
+ list.list.removeChild(list.list.firstChild);
1295
+ }
1296
+ }
1297
+ };
1298
+ };
1299
+
1300
+ module.exports = function(list) {
1301
+ return new Templater(list);
1302
+ };
1303
+
1304
+ });
1305
+ require.register("list.js/src/filter.js", function(exports, require, module){
1306
+ module.exports = function(list) {
1307
+
1308
+ // Add handlers
1309
+ list.handlers.filterStart = list.handlers.filterStart || [];
1310
+ list.handlers.filterComplete = list.handlers.filterComplete || [];
1311
+
1312
+ return function(filterFunction) {
1313
+ list.trigger('filterStart');
1314
+ list.i = 1; // Reset paging
1315
+ list.reset.filter();
1316
+ if (filterFunction === undefined) {
1317
+ list.filtered = false;
1318
+ } else {
1319
+ list.filtered = true;
1320
+ var is = list.items;
1321
+ for (var i = 0, il = is.length; i < il; i++) {
1322
+ var item = is[i];
1323
+ if (filterFunction(item)) {
1324
+ item.filtered = true;
1325
+ } else {
1326
+ item.filtered = false;
1327
+ }
1328
+ }
1329
+ }
1330
+ list.update();
1331
+ list.trigger('filterComplete');
1332
+ return list.visibleItems;
1333
+ };
1334
+ };
1335
+
1336
+ });
1337
+ require.register("list.js/src/add-async.js", function(exports, require, module){
1338
+ module.exports = function(list) {
1339
+ return function(values, callback, items) {
1340
+ var valuesToAdd = values.splice(0, 100);
1341
+ items = items || [];
1342
+ items = items.concat(list.add(valuesToAdd));
1343
+ if (values.length > 0) {
1344
+ setTimeout(function() {
1345
+ addAsync(values, callback, items);
1346
+ }, 10);
1347
+ } else {
1348
+ list.update();
1349
+ callback(items);
1350
+ }
1351
+ };
1352
+ };
1353
+ });
1354
+ require.register("list.js/src/parse.js", function(exports, require, module){
1355
+ module.exports = function(list) {
1356
+
1357
+ var Item = require('./item')(list);
1358
+
1359
+ var getChildren = function(parent) {
1360
+ var nodes = parent.childNodes,
1361
+ items = [];
1362
+ for (var i = 0, il = nodes.length; i < il; i++) {
1363
+ // Only textnodes have a data attribute
1364
+ if (nodes[i].data === undefined) {
1365
+ items.push(nodes[i]);
1366
+ }
1367
+ }
1368
+ return items;
1369
+ };
1370
+
1371
+ var parse = function(itemElements, valueNames) {
1372
+ for (var i = 0, il = itemElements.length; i < il; i++) {
1373
+ list.items.push(new Item(valueNames, itemElements[i]));
1374
+ }
1375
+ };
1376
+ var parseAsync = function(itemElements, valueNames) {
1377
+ var itemsToIndex = itemElements.splice(0, 100); // TODO: If < 100 items, what happens in IE etc?
1378
+ parse(itemsToIndex, valueNames);
1379
+ if (itemElements.length > 0) {
1380
+ setTimeout(function() {
1381
+ init.items.indexAsync(itemElements, valueNames);
1382
+ }, 10);
1383
+ } else {
1384
+ list.update();
1385
+ // TODO: Add indexed callback
1386
+ }
1387
+ };
1388
+
1389
+ return function() {
1390
+ var itemsToIndex = getChildren(list.list),
1391
+ valueNames = list.valueNames;
1392
+
1393
+ if (list.indexAsync) {
1394
+ parseAsync(itemsToIndex, valueNames);
1395
+ } else {
1396
+ parse(itemsToIndex, valueNames);
1397
+ }
1398
+ };
1399
+ };
1400
+
1401
+ });
1402
+
1403
+ require.alias("component-classes/index.js", "list.js/deps/classes/index.js");
1404
+ require.alias("component-classes/index.js", "classes/index.js");
1405
+ require.alias("component-indexof/index.js", "component-classes/deps/indexof/index.js");
1406
+ require.alias("segmentio-extend/index.js", "list.js/deps/extend/index.js");
1407
+ require.alias("segmentio-extend/index.js", "extend/index.js");
1408
+ require.alias("component-indexof/index.js", "list.js/deps/indexof/index.js");
1409
+ require.alias("component-indexof/index.js", "indexof/index.js");
1410
+ require.alias("javve-events/index.js", "list.js/deps/events/index.js");
1411
+ require.alias("javve-events/index.js", "events/index.js");
1412
+ require.alias("component-event/index.js", "javve-events/deps/event/index.js");
1413
+ require.alias("javve-to-array/index.js", "javve-events/deps/to-array/index.js");
1414
+ require.alias("javve-get-by-class/index.js", "list.js/deps/get-by-class/index.js");
1415
+ require.alias("javve-get-by-class/index.js", "get-by-class/index.js");
1416
+ require.alias("javve-get-attribute/index.js", "list.js/deps/get-attribute/index.js");
1417
+ require.alias("javve-get-attribute/index.js", "get-attribute/index.js");
1418
+ require.alias("javve-natural-sort/index.js", "list.js/deps/natural-sort/index.js");
1419
+ require.alias("javve-natural-sort/index.js", "natural-sort/index.js");
1420
+ require.alias("javve-to-string/index.js", "list.js/deps/to-string/index.js");
1421
+ require.alias("javve-to-string/index.js", "list.js/deps/to-string/index.js");
1422
+ require.alias("javve-to-string/index.js", "to-string/index.js");
1423
+ require.alias("javve-to-string/index.js", "javve-to-string/index.js");
1424
+ require.alias("component-type/index.js", "list.js/deps/type/index.js");
1425
+ require.alias("component-type/index.js", "type/index.js");
1426
+ if (typeof exports == "object") {
1427
+ module.exports = require("list.js");
1428
+ } else if (typeof define == "function" && define.amd) {
1429
+ define(function(){ return require("list.js"); });
1430
+ } else {
1431
+ this["List"] = require("list.js");
1432
+ }})();