kaerus-component-slideshow 0.1.2 → 0.1.3

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.
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