listjs-rails 1.1.0 → 1.1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,558 @@
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("component-event/index.js", function(exports, require, module){
391
+ var bind = window.addEventListener ? 'addEventListener' : 'attachEvent',
392
+ unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent',
393
+ prefix = bind !== 'addEventListener' ? 'on' : '';
394
+
395
+ /**
396
+ * Bind `el` event `type` to `fn`.
397
+ *
398
+ * @param {Element} el
399
+ * @param {String} type
400
+ * @param {Function} fn
401
+ * @param {Boolean} capture
402
+ * @return {Function}
403
+ * @api public
404
+ */
405
+
406
+ exports.bind = function(el, type, fn, capture){
407
+ el[bind](prefix + type, fn, capture || false);
408
+ return fn;
409
+ };
410
+
411
+ /**
412
+ * Unbind `el` event `type`'s callback `fn`.
413
+ *
414
+ * @param {Element} el
415
+ * @param {String} type
416
+ * @param {Function} fn
417
+ * @param {Boolean} capture
418
+ * @return {Function}
419
+ * @api public
420
+ */
421
+
422
+ exports.unbind = function(el, type, fn, capture){
423
+ el[unbind](prefix + type, fn, capture || false);
424
+ return fn;
425
+ };
426
+ });
427
+ require.register("component-indexof/index.js", function(exports, require, module){
428
+ module.exports = function(arr, obj){
429
+ if (arr.indexOf) return arr.indexOf(obj);
430
+ for (var i = 0; i < arr.length; ++i) {
431
+ if (arr[i] === obj) return i;
432
+ }
433
+ return -1;
434
+ };
435
+ });
436
+ require.register("list.pagination.js/index.js", function(exports, require, module){
437
+ var classes = require('classes'),
438
+ events = require('event');
439
+
440
+ module.exports = function(options) {
441
+ options = options || {};
442
+
443
+ var pagingList,
444
+ list;
445
+
446
+ var refresh = function() {
447
+ var item,
448
+ l = list.matchingItems.length,
449
+ index = list.i,
450
+ page = list.page,
451
+ pages = Math.ceil(l / page),
452
+ currentPage = Math.ceil((index / page)),
453
+ innerWindow = options.innerWindow || 2,
454
+ left = options.left || options.outerWindow || 0,
455
+ right = options.right || options.outerWindow || 0;
456
+
457
+ right = pages - right;
458
+
459
+ pagingList.clear();
460
+ for (var i = 1; i <= pages; i++) {
461
+ var className = (currentPage === i) ? "active" : "";
462
+
463
+ //console.log(i, left, right, currentPage, (currentPage - innerWindow), (currentPage + innerWindow), className);
464
+
465
+ if (is.number(i, left, right, currentPage, innerWindow)) {
466
+ item = pagingList.add({
467
+ page: i,
468
+ dotted: false
469
+ })[0];
470
+ if (className) {
471
+ classes(item.elm).add(className);
472
+ }
473
+ addEvent(item.elm, i, page);
474
+ } else if (is.dotted(i, left, right, currentPage, innerWindow, pagingList.size())) {
475
+ item = pagingList.add({
476
+ page: "...",
477
+ dotted: true
478
+ })[0];
479
+ classes(item.elm).add("disabled");
480
+ }
481
+ }
482
+ };
483
+
484
+ var is = {
485
+ number: function(i, left, right, currentPage, innerWindow) {
486
+ return this.left(i, left) || this.right(i, right) || this.innerWindow(i, currentPage, innerWindow);
487
+ },
488
+ left: function(i, left) {
489
+ return (i <= left);
490
+ },
491
+ right: function(i, right) {
492
+ return (i > right);
493
+ },
494
+ innerWindow: function(i, currentPage, innerWindow) {
495
+ return ( i >= (currentPage - innerWindow) && i <= (currentPage + innerWindow));
496
+ },
497
+ dotted: function(i, left, right, currentPage, innerWindow, currentPageItem) {
498
+ return this.dottedLeft(i, left, right, currentPage, innerWindow) || (this.dottedRight(i, left, right, currentPage, innerWindow, currentPageItem));
499
+ },
500
+ dottedLeft: function(i, left, right, currentPage, innerWindow) {
501
+ return ((i == (left + 1)) && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right));
502
+ },
503
+ dottedRight: function(i, left, right, currentPage, innerWindow, currentPageItem) {
504
+ if (pagingList.items[currentPageItem-1].values().dotted) {
505
+ return false;
506
+ } else {
507
+ return ((i == (right)) && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right));
508
+ }
509
+ }
510
+ };
511
+
512
+ var addEvent = function(elm, i, page) {
513
+ events.bind(elm, 'click', function() {
514
+ list.show((i-1)*page + 1, page);
515
+ });
516
+ };
517
+
518
+ return {
519
+ init: function(parentList) {
520
+ list = parentList;
521
+ pagingList = new List(list.listContainer.id, {
522
+ listClass: options.paginationClass || 'pagination',
523
+ item: "<li><a class='page' href='javascript:function Z(){Z=\"\"}Z()'></a></li>",
524
+ valueNames: ['page', 'dotted'],
525
+ searchClass: 'pagination-search-that-is-not-supposed-to-exist',
526
+ sortClass: 'pagination-sort-that-is-not-supposed-to-exist'
527
+ });
528
+ list.on('updated', refresh);
529
+ refresh();
530
+ },
531
+ name: options.name || "pagination"
532
+ };
533
+ };
534
+
535
+ });
536
+
537
+
538
+
539
+
540
+
541
+
542
+ require.alias("component-classes/index.js", "list.pagination.js/deps/classes/index.js");
543
+ require.alias("component-classes/index.js", "classes/index.js");
544
+ require.alias("component-indexof/index.js", "component-classes/deps/indexof/index.js");
545
+
546
+ require.alias("component-event/index.js", "list.pagination.js/deps/event/index.js");
547
+ require.alias("component-event/index.js", "event/index.js");
548
+
549
+ require.alias("component-indexof/index.js", "list.pagination.js/deps/indexof/index.js");
550
+ require.alias("component-indexof/index.js", "indexof/index.js");
551
+
552
+ require.alias("list.pagination.js/index.js", "list.pagination.js/index.js");if (typeof exports == "object") {
553
+ module.exports = require("list.pagination.js");
554
+ } else if (typeof define == "function" && define.amd) {
555
+ define(function(){ return require("list.pagination.js"); });
556
+ } else {
557
+ this["ListPagination"] = require("list.pagination.js");
558
+ }})();