kaerus-component-slideshow 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52b19604b6f001d260096edef9cd4148191fd590
4
- data.tar.gz: 9e33c37a52f6256994861d2f393d1d14c364cb4f
3
+ metadata.gz: 08e035c2de90c36a6a9910bedba72c8fa2296b49
4
+ data.tar.gz: 0e4004a25723a2b16e2f4d3c221ff215e22aa67b
5
5
  SHA512:
6
- metadata.gz: 1953b19d35de7f8892f6895fb6e337a27bef589ea6a3cfba42686df68b9fef71811a5a3825cf1d1a358d7e897c1d4c177b5c5d52a2fe12b935866d3b0a96e4aa
7
- data.tar.gz: 33c63a8f8b156900c584dc415c272409543bb9ab8d26ac827f0b8b5d4be6c9dc9baccb5da34993a325e0a3380226a1bbd74baaedab9f559c5c7401ef742f1e1e
6
+ metadata.gz: 566a9c37500beca3b09bb9857248e80bf2e86170751c606f7942a846c17616f24a08a6d50b3e96b9bb418724615a76a4e508e995d7d0f1a05f0d33ec9398a656
7
+ data.tar.gz: 31a8db638eeb98a67eea1a26f76d2399535f29d019612d387b0a1bbc87f1eb98e199d10a5a35dea9716e63835b65748aec255b7a6275f54ef6d98f795c53de4b
@@ -1,7 +1,7 @@
1
1
  module Kaerus
2
2
  module Component
3
3
  module Slideshow
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
6
6
  end
7
7
  end
@@ -200,6 +200,129 @@ require.relative = function(parent) {
200
200
 
201
201
  return localRequire;
202
202
  };
203
+ require.register("kaerus-component-emitter/index.js", function(exports, require, module){
204
+ // Emitter /////////////////////////////////////////////////////////////////////////////
205
+ function Emitter(obj) {
206
+ /* Emitter mixin */
207
+ if(obj) {
208
+ for(var key in Emitter.prototype) {
209
+ obj[key] = Emitter.prototype[key];
210
+ }
211
+ obj._events = {};
212
+ return obj;
213
+ }
214
+
215
+ if(!(this instanceof Emitter)) {
216
+ return new Emitter;
217
+ }
218
+
219
+ this._events = {};
220
+ }
221
+
222
+ Emitter.prototype.listeners = function(event) {
223
+ var handlers = this._events[event];
224
+
225
+ if(!handlers) return [];
226
+
227
+ return handlers.filter(function(f){return f !==before && f !==after});
228
+ }
229
+
230
+ Emitter.prototype.hasListeners = function(event) {
231
+ return this.listeners(event).length > 0;
232
+ }
233
+
234
+ Emitter.prototype.hasHandler = function(event,handler) {
235
+ return this.listeners(event).filter(function(f) {
236
+ return (f._of || f) !== handler;
237
+ }).length > 0;
238
+
239
+ return false;
240
+ }
241
+
242
+ function before(){};
243
+ function after(){};
244
+
245
+ Emitter.prototype.on = function(event,handler,first) {
246
+ var events = this._events[event];
247
+
248
+ if(!events) events = this._events[event] = [before,after];
249
+
250
+ if(first === true) events.splice(events.indexOf(before),0,handler);
251
+ else if(first === undefined) events.splice(events.indexOf(after),0,handler);
252
+ else events[events.length] = handler;
253
+
254
+ return this;
255
+ }
256
+
257
+ Emitter.prototype.before = function(event,handler) {
258
+ return this.on(event,handler,true);
259
+ }
260
+
261
+ Emitter.prototype.after = function(event,handler) {
262
+ return this.on(event,handler,false);
263
+ }
264
+
265
+ Emitter.prototype.off = function(event,handler) {
266
+ var listeners;
267
+
268
+ if(!arguments.length) {
269
+ this._events = {};
270
+ }
271
+ else {
272
+ if(!handler) {
273
+ this._events[event] = null;
274
+ } else if(this.hasListeners(event)){
275
+ this._events[event] = this._events[event].filter(function(f){
276
+ return (f._of ? f._of : f) !== handler;
277
+ });
278
+ }
279
+ }
280
+
281
+ return this;
282
+ }
283
+
284
+ Emitter.prototype.emit = function(event) {
285
+ var context, handler, args;
286
+
287
+ if(typeof event === 'object') {
288
+ context = event;
289
+ event = arguments[1];
290
+ }
291
+
292
+ args = Array.prototype.slice.call(arguments, (context ? 2 : 1));
293
+
294
+ handler = this.listeners(event);
295
+
296
+ context = context ? context : this;
297
+
298
+ for(var i = 0, l = handler.length; i < l; i++){
299
+ console.log("emit handler for", event);
300
+ if(handler[i].apply(context,args) === false) break;
301
+ }
302
+
303
+ return this;
304
+ }
305
+
306
+ Emitter.prototype.once = function(event,handler) {
307
+ var self = this;
308
+
309
+ function once() {
310
+ console.log("calling once", handler.toString());
311
+ self.off(event, handler);
312
+ handler.apply(this, arguments);
313
+ }
314
+
315
+ console.log("only once", event);
316
+ this.on(event, once);
317
+
318
+ once._of = handler;
319
+
320
+ return this;
321
+ }
322
+
323
+ module.exports = Emitter;
324
+
325
+ });
203
326
  require.register("kaerus-component-carousel/index.js", function(exports, require, module){
204
327
  // CAROUSEL ////////////////////////////////////////////////////////
205
328
  /* element class mappings */
@@ -433,170 +556,78 @@ Carousel.prototype.resume = function(skipPauseInterval){
433
556
 
434
557
  module.exports = Carousel;
435
558
  });
436
- require.register("kaerus-component-emitter/index.js", function(exports, require, module){
437
- // Emitter /////////////////////////////////////////////////////////////////////////////
438
- function Emitter(obj) {
439
- /* Emitter mixin */
440
- if(obj) {
441
- for(var key in Emitter.prototype) {
442
- obj[key] = Emitter.prototype[key];
443
- }
444
- obj._events = {};
445
- return obj;
446
- }
559
+ require.register("jkroso-prefix/index.js", function(exports, require, module){
447
560
 
448
- if(!(this instanceof Emitter)) {
449
- return new Emitter;
450
- }
561
+ var style = document.createElement('p').style
562
+ var prefixes = 'O ms Moz webkit'.split(' ')
563
+ var upper = /([A-Z])/g
451
564
 
452
- this._events = {};
453
- }
454
-
455
- Emitter.prototype.listeners = function(event) {
456
- var handlers = this._events[event];
457
-
458
- if(!handlers) return [];
459
-
460
- return handlers.filter(function(f){return f !==before && f !==after});
461
- }
462
-
463
- Emitter.prototype.hasListeners = function(event) {
464
- return !!this._events[event];
465
- }
466
-
467
- function before(){};
468
- function after(){};
565
+ var memo = {}
469
566
 
470
- Emitter.prototype.on = function(event,handler,first) {
471
- var events = this._events[event];
472
-
473
- if(!events) events = this._events[event] = [before,after];
474
-
475
- if(first === true) events.splice(events.indexOf(before),0,handler);
476
- else if(first === undefined) events.splice(events.indexOf(after),0,handler);
477
- else events[events.length] = handler;
478
-
479
- return this;
480
- }
481
-
482
- Emitter.prototype.before = function(event,handler) {
483
- return this.on(event,handler,true);
484
- }
485
-
486
- Emitter.prototype.after = function(event,handler) {
487
- return this.on(event,handler,false);
488
- }
489
-
490
- Emitter.prototype.off = function(event,handler) {
491
-
492
- if(!arguments.length) {
493
- this._events = {};
494
- }
495
-
496
- if(this._events[event]) {
497
- if(!handler) {
498
- delete this._events[event];
499
- } else {
500
- this._events[event] = this._events[event].filter(function(f) {
501
- return (f._of || f) !== handler;
502
- });
503
- }
504
- }
567
+ /**
568
+ * memoized `prefix`
569
+ *
570
+ * @param {String} key
571
+ * @return {String}
572
+ * @api public
573
+ */
505
574
 
506
- return this;
575
+ module.exports = exports = function(key){
576
+ return key in memo
577
+ ? memo[key]
578
+ : memo[key] = prefix(key)
507
579
  }
508
580
 
509
- Emitter.prototype.emit = function(event) {
510
- var context, handler, args;
581
+ exports.prefix = prefix
582
+ exports.dash = dashedPrefix
511
583
 
512
- if(typeof event === 'object') {
513
- context = event;
514
- event = arguments[1];
515
- }
516
-
517
- args = Array.prototype.slice.call(arguments, (context ? 2 : 1));
518
-
519
- handler = this.listeners(event);
520
-
521
- context = context ? context : this;
584
+ /**
585
+ * prefix `key`
586
+ *
587
+ * prefix('transform') // => webkitTransform
588
+ *
589
+ * @param {String} key
590
+ * @return {String}
591
+ * @api public
592
+ */
522
593
 
523
- for(var i = 0, l = handler.length; i < l; i++){
524
- if(handler[i].apply(context,args) === false) break;
525
- }
594
+ function prefix(key){
595
+ // camel case
596
+ key = key.replace(/-([a-z])/g, function(_, char){
597
+ return char.toUpperCase()
598
+ })
599
+
600
+ // without prefix
601
+ if (style[key] !== undefined) return key
602
+
603
+ // with prefix
604
+ var Key = capitalize(key)
605
+ var i = prefixes.length
606
+ while (i--) {
607
+ var name = prefixes[i] + Key
608
+ if (style[name] !== undefined) return name
609
+ }
526
610
 
527
- return this;
611
+ throw new Error('unable to prefix ' + key)
528
612
  }
529
613
 
530
- Emitter.prototype.once = function(event,handler) {
531
- var self = this;
532
-
533
- function once() {
534
- self.off(event, handler);
535
- handler.apply(this, arguments);
536
- }
537
-
538
- this.on(event, once);
539
-
540
- once._of = handler;
541
-
542
- return this;
614
+ function capitalize(str){
615
+ return str.charAt(0).toUpperCase() + str.slice(1)
543
616
  }
544
617
 
545
- module.exports = Emitter;
546
-
547
- });
548
- require.register("pgherveou-prefix/index.js", function(exports, require, module){
549
- // module globals
550
-
551
- var prefixes = ['webkit','Moz','ms','O']
552
- , len = prefixes.length
553
- , p = document.createElement('p')
554
- , style = p.style
555
- , capitalize = function (str) {return str.charAt(0).toUpperCase() + str.slice(1);}
556
- , dasherize = function(str) {
557
- return str.replace(/([A-Z])/g, function(str,m1) {
558
- return '-' + m1.toLowerCase();
559
- });
560
- };
561
-
562
- // nullify p to release dom node
563
- p = null;
564
-
565
618
  /**
566
- * get prefix for dom style
567
- *
568
- * example
569
- * prefix('transform') // webkitTransform
570
- * prefix('transform', true) // -webkit-transform
619
+ * create a dasherized prefix
571
620
  *
572
- * @param {String} ppty dom style
573
- * @param {Boolean} dasherize
574
- * @return {String} prefixed ppty
621
+ * @param {String} key
622
+ * @return {String}
575
623
  * @api public
576
624
  */
577
625
 
578
- module.exports = function(ppty, dasherized) {
579
- var Ppty, name, Name;
580
-
581
- // test without prefix
582
- if (style[ppty] !== undefined) {
583
- if (!dasherized) return ppty;
584
- return dasherize(ppty);
585
- }
586
-
587
- // test with prefix
588
- Ppty = capitalize(ppty);
589
- for (i = 0; i < len; i++) {
590
- name = prefixes[i] + Ppty;
591
- if (style[name] !== undefined) {
592
- if (!dasherized) return name;
593
- return '-' + prefixes[i].toLowerCase() + '-' + dasherize(ppty);
594
- }
595
- }
596
-
597
- // not found return empty string
598
- return '';
599
- };
626
+ function dashedPrefix(key){
627
+ key = prefix(key)
628
+ if (upper.test(key)) key = '-' + key.replace(upper, '-$1')
629
+ return key.toLowerCase()
630
+ }
600
631
 
601
632
  });
602
633
  require.register("slideshow/index.js", function(exports, require, module){
@@ -735,14 +766,12 @@ function Slideshow(container,options){
735
766
  return this;
736
767
  },
737
768
  next: function(){
738
- if(this.whenReady('next'));
739
- this.emit('next');
769
+ this.whenReady('next');
740
770
 
741
771
  return this;
742
772
  },
743
773
  prev: function(){
744
- if(this.whenReady('prev'));
745
- this.emit('prev');
774
+ this.whenReady('prev');
746
775
 
747
776
  return this;
748
777
  },
@@ -758,8 +787,7 @@ function Slideshow(container,options){
758
787
  x = x ? parseInt(x,10) : 0;
759
788
  }
760
789
 
761
- if(this.whenReady('show',x));
762
- this.emit('show',x);
790
+ this.whenReady('show',x);
763
791
 
764
792
  return this;
765
793
  },
@@ -773,26 +801,14 @@ function Slideshow(container,options){
773
801
  return this;
774
802
  },
775
803
  whenReady: function(action,value){
776
- var self = this, handlers, hasHandler;
804
+ var self = this;
777
805
 
778
806
  if(!this.inTransition) {
779
807
  this.carousel[action](value);
780
- return true;
781
- } else {
782
- handlers = this.listeners('transition-end');
783
- for(var h in handlers){
784
- if(handlers[h]._of && handlers[h]._of === self[action]){
785
- hasHandler = true;
786
- break;
787
- }
788
- }
789
-
790
- if(!hasHandler){
791
- this.once('transition-end', self[action], value);
792
- }
808
+ this.emit(action,value);
809
+ } else {
810
+ this.once('transition-end', this[action], value);
793
811
  }
794
-
795
- return false;
796
812
  }
797
813
  }
798
814
 
@@ -805,7 +821,7 @@ function Slideshow(container,options){
805
821
 
806
822
  if(!elem || !prop) return;
807
823
 
808
- prop = getStyleProperty(prop,true);
824
+ prop = Prefix.dash(prop);
809
825
 
810
826
  if(Array.isArray(elem)){
811
827
  for(var i = 0, l = elem.length; i < l; i++)
@@ -836,8 +852,8 @@ function Slideshow(container,options){
836
852
  timer, durationProp, s = 0,
837
853
  ix, fx, lx = navItems.length, slide = [], node;
838
854
 
839
- durationProp = getStyleProperty('transition-duration',true);
840
-
855
+ durationProp = 'transition-duration';
856
+
841
857
  for(var x in slides.childNodes){
842
858
  node = slides.childNodes[x];
843
859
  if(node && node.id && node.id.indexOf(settings.id + '-s') === 0)
@@ -860,7 +876,7 @@ function Slideshow(container,options){
860
876
  navItems[fx].className = "navItem";
861
877
 
862
878
  s = window.getComputedStyle(slide[ix],null).getPropertyValue(durationProp);
863
-
879
+
864
880
  if(s.indexOf('s') > 0) s = parseInt(s,10) * 1000;
865
881
  else s = parseInt(s,10);
866
882
 
@@ -874,6 +890,11 @@ function Slideshow(container,options){
874
890
  },s);
875
891
  }
876
892
  }
893
+
894
+ function endTransition(){
895
+ slideshow.inTransition = false;
896
+ slideshow.emit('transition-end',slide[current],current);
897
+ }
877
898
 
878
899
  navItems[ix].className = "active navItem";
879
900
 
@@ -881,12 +902,6 @@ function Slideshow(container,options){
881
902
  }
882
903
  }
883
904
 
884
- function getStyleProperty(prop){
885
- if(!prefixProp.hasOwnProperty(prop))
886
- prefixProp[prop] = Prefix(prop,true);
887
-
888
- return prefixProp[prop];
889
- }
890
905
 
891
906
  }());
892
907
 
@@ -901,16 +916,15 @@ module.exports = '<div class="slides" id="{id}-slides">{slides}</div>\n<div clas
901
916
 
902
917
 
903
918
 
904
- require.alias("kaerus-component-carousel/index.js", "slideshow/deps/carousel/index.js");
905
- require.alias("kaerus-component-carousel/index.js", "carousel/index.js");
906
-
907
919
  require.alias("kaerus-component-emitter/index.js", "slideshow/deps/emitter/index.js");
908
920
  require.alias("kaerus-component-emitter/index.js", "emitter/index.js");
909
921
 
910
- require.alias("pgherveou-prefix/index.js", "slideshow/deps/prefix/index.js");
911
- require.alias("pgherveou-prefix/index.js", "slideshow/deps/prefix/index.js");
912
- require.alias("pgherveou-prefix/index.js", "prefix/index.js");
913
- require.alias("pgherveou-prefix/index.js", "pgherveou-prefix/index.js");if (typeof exports == "object") {
922
+ require.alias("kaerus-component-carousel/index.js", "slideshow/deps/carousel/index.js");
923
+ require.alias("kaerus-component-carousel/index.js", "carousel/index.js");
924
+
925
+ require.alias("jkroso-prefix/index.js", "slideshow/deps/prefix/index.js");
926
+ require.alias("jkroso-prefix/index.js", "prefix/index.js");
927
+ if (typeof exports == "object") {
914
928
  module.exports = require("slideshow");
915
929
  } else if (typeof define == "function" && define.amd) {
916
930
  define(function(){ return require("slideshow"); });
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaerus-component-slideshow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anders Elo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-28 00:00:00.000000000 Z
11
+ date: 2014-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler