kaerus-component-slideshow 0.0.10 → 0.0.11

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: a24b45c7c9bde961092446d913fd38a26ecbb243
4
- data.tar.gz: f08391920945319dfb3544f7350f0b6e8f05f253
3
+ metadata.gz: 9623d33cdb055350d09cc5d1717b2a78be468bbb
4
+ data.tar.gz: 08229965f72b944821118c69ef85423c36585ab9
5
5
  SHA512:
6
- metadata.gz: 5487b90793cb4a1aacc65f623420f1ad40af8db768d94782d7e9d4e381d4fa2fc38eab2870838fd2e63de9e37149082753a6e2f0b55d76ae870a6361cc883b37
7
- data.tar.gz: 9fe46cd2d914c255c1accb0705ab6f84b629d45d88673f83c9337348b881074aca62cc15a00708ae2e2f64d46be9c74fa164636c1b01f0be779ce752faff0ddd
6
+ metadata.gz: 538fe6b9b7d4a90cd4f9434a3c82c7a651104bafa9735782a2f7bca212396a4f18e818dd5954e7703a70de245c0740fd356df7ef24dd448f1629b3188074de72
7
+ data.tar.gz: 4ec530f96a540bfe2563e2908392f491f4bf44a2873d6cd3b5e2f9a12e3bdc82f44505084ecd45a107675ee73cdcc6b09cb2d7603edc6ec3e98896cf6f1408ea
@@ -1,7 +1,7 @@
1
1
  module Kaerus
2
2
  module Component
3
3
  module Slideshow
4
- VERSION = "0.0.10"
4
+ VERSION = "0.0.11"
5
5
  end
6
6
  end
7
7
  end
@@ -422,11 +422,6 @@ require.register("slideshow/index.js", function(exports, require, module){
422
422
  var Carousel = require('carousel'),
423
423
  template = require('./template');
424
424
 
425
- var transitionProp = ['webkitTransition','mozTransition','msTransition','oTransition'],
426
- transitionEndEvents = ['transitionend', 'webkitTransitionEnd', 'otransitionend'],
427
- transformProp = ['webkitTransform','mozTransform','msTransform','oTransform'];
428
-
429
-
430
425
  function Slideshow(container,options){
431
426
  if(!(this instanceof Slideshow))
432
427
  return new Slideshow(container,options);
@@ -436,7 +431,7 @@ function Slideshow(container,options){
436
431
 
437
432
  if(!container) throw new Error("invalid slideshow container");
438
433
 
439
- var settings = {
434
+ this.settings = {
440
435
  id: container.id || 'slideshow',
441
436
  template: template,
442
437
  next:'⟩',
@@ -447,60 +442,98 @@ function Slideshow(container,options){
447
442
  afterTransit: undefined
448
443
  };
449
444
 
450
- mergeOptions(settings,options);
451
- mergeOptions(this,settings);
445
+ mergeOptions(this.settings,options);
446
+
447
+ Object.defineProperty(this,'paused',{
448
+ get: function() {
449
+ return this.carousel.paused;
450
+ }
451
+ });
452
452
 
453
453
  this.init(container);
454
454
  }
455
455
 
456
- Slideshow.prototype = (function(){
457
- var carousel, slideshow;
456
+ Slideshow.prototype = {
457
+ init: function(container,options){
458
+ var settings = this.settings,
459
+ id = settings.id,
460
+ slides = '\n',
461
+ dots = '\n',
462
+ navId = id + '-nav',
463
+ childs = container.childNodes;
464
+
465
+ /* get slides from parent container */
466
+ for(var i = 0, n = 0, l = childs.length; i < l; i++){
467
+ if(childs[i].nodeType === 1){
468
+ slides+= '<div id="'+ id + '-s' + n + '">' + childs[i].outerHTML + '</div>\n';
469
+ dots+='<li class="dot" id="' + navId + n + '"></li>\n';
470
+ n++;
471
+ }
472
+ }
473
+
474
+ /* create dom structure from template */
475
+ var template = settings.template.replace(/{\w+}/mg,function(m){
476
+ switch(m){
477
+ case "{id}": return id;
478
+ case "{slides}": return slides;
479
+ case "{next}": return settings.next;
480
+ case "{prev}": return settings.prev;
481
+ case "{nav}": return dots;
482
+ }
483
+ });
484
+
485
+ /* apply slider template */
486
+ container.innerHTML = template;
487
+ /* add slideshow class to target container */
488
+ if(!container.className) container.className = 'slideshow';
489
+ else container.className+= ' slideshow';
458
490
 
459
- SSproto = {
460
- init: function(container,options){
461
- slideshow = this;
491
+ /* create newcarousel instance */
492
+ this.carousel = new Carousel(id+'-slides');
462
493
 
463
- setup(container);
494
+ this.slides = this.carousel.slides;
464
495
 
465
- return this;
496
+ attachHandlers(this);
497
+
498
+ return this;
466
499
  },
467
500
  start: function(){
468
- carousel.start(0,slideshow.time);
501
+ this.carousel.start(0,this.settings.time);
469
502
 
470
503
  return this;
471
504
  },
472
505
  stop: function(){
473
- carousel.stop();
506
+ this.carousel.stop();
474
507
 
475
508
  return this;
476
509
  },
477
510
  pause: function(){
478
- carousel.pause();
511
+ this.carousel.pause();
479
512
 
480
513
  return this;
481
514
  },
482
515
  next: function(){
483
- carousel.next();
516
+ this.carousel.next();
484
517
 
485
518
  return this;
486
519
  },
487
- previous: function(){
488
- carousel.prev();
520
+ prev: function(){
521
+ this.carousel.prev();
489
522
 
490
523
  return this;
491
524
  },
492
525
  resume: function(){
493
- carousel.resume;
526
+ this.carousel.resume();
494
527
 
495
528
  return this;
496
529
  },
497
530
  show: function(x){
498
- carousel.show(x);
531
+ this.carousel.show(x);
499
532
 
500
533
  return this;
501
534
  },
502
535
  display: function(value){
503
- var slides = document.getElementById(slideshow.id);
536
+ var slides = document.getElementById(this.settings.id);
504
537
 
505
538
  if(typeof value === 'string') slides.style.display = value;
506
539
  else if(!!value) slides.style.display = 'block';
@@ -508,58 +541,35 @@ Slideshow.prototype = (function(){
508
541
 
509
542
  return this;
510
543
  }
511
- }
512
-
513
- function setup(container){
514
- var slides = '\n',
515
- dots = '\n',
516
- navId = slideshow.id + '-nav',
517
- childs = container.childNodes;
518
-
519
- /* get slides from parent container */
520
- for(var i = 0, n = 0, l = childs.length; i < l; i++){
521
- if(childs[i].nodeType === 1){
522
- slides+= '<div id="'+ slideshow.id + '-s' + n + '">' + childs[i].outerHTML + '</div>\n';
523
- dots+='<li class="dot" id="' + navId + n + '"></li>\n';
524
- n++;
525
- }
526
- }
527
-
528
- /* create dom structure from template */
529
- var template = slideshow.template.replace(/{\w+}/mg,function(m){
530
- switch(m){
531
- case "{id}": return slideshow.id;
532
- case "{slides}": return slides;
533
- case "{next}": return slideshow.next;
534
- case "{prev}": return slideshow.prev;
535
- case "{nav}": return dots;
536
- }
537
- });
544
+ }
538
545
 
539
- /* apply slider template */
540
- container.innerHTML = template;
541
- /* add slideshow class to target container */
542
- if(!container.className) container.className = 'slideshow';
543
- else container.className+= ' slideshow';
544
546
 
545
- /* create newcarousel instance */
546
- carousel = new Carousel(slideshow.id+'-slides');
547
+ var transitionProp = ['webkitTransition','mozTransition','msTransition','oTransition'],
548
+ transitionEndEvents = ['transitionend', 'webkitTransitionEnd', 'otransitionend'],
549
+ transformProp = ['webkitTransform','mozTransform','msTransform','oTransform'];
547
550
 
548
- attachHandlers();
549
- }
550
551
 
551
- function attachHandlers(){
552
- var slides = document.getElementById(slideshow.id+'-slides'),
553
- nav = document.getElementById(slideshow.id+'-nav'),
554
- next = document.getElementById(slideshow.id+'-next'),
555
- prev = document.getElementById(slideshow.id+'-prev');
552
+ function attachHandlers(slideshow){
553
+ var id = slideshow.settings.id,
554
+ slides = document.getElementById(id+'-slides'),
555
+ nav = document.getElementById(id+'-nav'),
556
+ next = document.getElementById(id+'-next'),
557
+ prev = document.getElementById(id+'-prev');
556
558
 
557
559
  /* add slidshow UI handlers */
558
- addNavHandler(nav);
560
+ addNavHandler(nav,slideshow);
559
561
  addPauseHandler(slides);
560
- addTransitionHandler(nav, slides);
561
- addButtonHandler(next,'next');
562
- addButtonHandler(prev,'prev');
562
+ addTransitionHandler(nav, slides, slideshow);
563
+
564
+ addEvent(next,'click',function(event){
565
+ slideshow.next();
566
+ event.stopPropagation();
567
+ });
568
+
569
+ addEvent(prev,'click',function(event){
570
+ slideshow.prev();
571
+ event.stopPropagation();
572
+ });
563
573
  }
564
574
 
565
575
  function applyStyle(elem,prop,attr){
@@ -592,15 +602,8 @@ Slideshow.prototype = (function(){
592
602
  elem.style[prop] = style;
593
603
  }
594
604
 
595
- function addButtonHandler(elem,button){
596
- addEvent(elem,'click',function(event){
597
- carousel[button]();
598
- event.stopPropagation();
599
- });
600
- }
601
-
602
- function addNavHandler(elem){
603
- var nav = document.getElementById(slideshow.id+'-nav'),
605
+ function addNavHandler(elem,slideshow){
606
+ var nav = document.getElementById(slideshow.settings.id+'-nav'),
604
607
  matchNav = new RegExp(elem.id + '(\\d+)');
605
608
 
606
609
  addEvent(elem,'click', function(event){
@@ -609,62 +612,67 @@ Slideshow.prototype = (function(){
609
612
  ix = matchNav.exec(target.id);
610
613
 
611
614
  if(ix) {
612
- carousel.show(ix[1]);
615
+ slideshow.show(ix[1]);
613
616
  event.stopPropagation();
614
617
  }
615
618
  });
616
619
  }
617
620
 
618
621
  /* adds click handler on slide to toggle pause */
619
- function addPauseHandler(elem){
622
+ function addPauseHandler(elem,slideshow){
620
623
  elem.addEventListener('click',function(event){
621
- if(carousel.paused) {
622
- carousel.resume();
624
+ if(slideshow.paused) {
625
+ slideshow.resume();
623
626
  } else {
624
- carousel.pause();
627
+ slideshow.pause();
625
628
  }
626
629
  });
627
630
  }
628
631
 
629
- function addTransitionHandler(nav,slides){
630
- var dots = nav.getElementsByTagName('li'),
632
+ function addTransitionHandler(nav,slides,slideshow){
633
+ var settings = slideshow.settings,
634
+ transition = settings.transition,
635
+ beforeTransit = settings.beforeTransit,
636
+ afterTransit = settings.afterTransit,
637
+ dots = nav.getElementsByTagName('li'),
631
638
  ix, fx, lx = dots.length;
632
639
 
633
- carousel.onChange = function(index,from){
640
+ slideshow.carousel.onChange = function(index,from){
634
641
  ix = index % lx;
635
642
  fx = from % lx;
636
643
 
637
- if(typeof slideshow.beforeTransit === 'function') slideshow.beforeTransit(ix, slideshow);
644
+ if(typeof beforeTransit === 'function')
645
+ beforeTransit(ix, slideshow);
638
646
 
639
647
  if(from !== undefined){
640
648
  dots[fx].className = "dot";
641
649
  /* apply transitions after first slide */
642
650
  /* to avoid animations on startup */
643
651
  if(!slideshow.hasTransitions){
644
- for(var i = 0, l = carousel.slides.length; i < l; i++)
645
- applyStyle(slideshow.id + '-s' + i,transitionProp,slideshow.transition);
652
+ for(var i = 0, l = slideshow.slides.length; i < l; i++)
653
+ applyStyle(settings.id + '-s' + i,transitionProp,transition);
646
654
  slideshow.hasTransitions = true;
647
655
  }
648
656
  }
649
657
 
650
658
  dots[ix].className = "active dot";
651
659
 
652
- carousel.transit(index,from);
660
+ slideshow.carousel.transit(index,from);
653
661
  }
654
662
 
655
663
  addTransitionEndHandler(slides);
656
664
 
657
665
  function addTransitionEndHandler(elem){
658
- var te, x = carousel.index % lx;
666
+ var te, index = slideshow.carousel.index, x = index % lx;
659
667
 
660
668
  if((te = hasTransitionEndEvent())){
661
669
  addEvent(elem,te,function(event){
662
670
  event = event ? event : window.event;
663
671
  var target = event.target || event.srcElement,
664
- target_id = slideshow.id + '-s' + carousel.index;
672
+ target_id = slideshow.id + '-s' + index;
665
673
  // fixme: fires twice
666
- if(target.id === target_id && typeof slideshow.afterTransit ==='function'){
667
- slideshow.afterTransit(x, slideshow);
674
+ if(target.id === target_id && typeof afterTransit ==='function'){
675
+ afterTransit(x, slideshow);
668
676
  }
669
677
  });
670
678
  slideshow.hasTransitionEndEvent = true;
@@ -675,50 +683,47 @@ Slideshow.prototype = (function(){
675
683
 
676
684
  }
677
685
 
678
- return SSproto;
679
- }());
680
-
681
- transitionProp = getStyleProperty(transitionProp);
682
- transformProp = getStyleProperty(transformProp);
686
+ transitionProp = getStyleProperty(transitionProp);
687
+ transformProp = getStyleProperty(transformProp);
683
688
 
684
- function getStyleProperty(props){
685
- var root = document.documentElement,
686
- prop;
689
+ function getStyleProperty(props){
690
+ var root = document.documentElement,
691
+ prop;
687
692
 
688
- prop = props.filter(function(p){
689
- return p in root.style
690
- });
693
+ prop = props.filter(function(p){
694
+ return p in root.style
695
+ });
691
696
 
692
- return prop[0]
693
- }
697
+ return prop[0]
698
+ }
694
699
 
695
- function hasTransitionEndEvent(){
696
- var hasTev;
700
+ function hasTransitionEndEvent(){
701
+ var hasTev;
697
702
 
698
- hasTev = transitionEndEvents.filter(function(m){
699
- return ('on'+m.toLowerCase()) in window
700
- });
703
+ hasTev = transitionEndEvents.filter(function(m){
704
+ return ('on'+m.toLowerCase()) in window
705
+ });
701
706
 
702
- return hasTev[0];
703
- }
707
+ return hasTev[0];
708
+ }
704
709
 
705
- function mergeOptions(target,source){
706
- for(var key in source) {
707
- target[key] = source[key];
710
+ function mergeOptions(target,source){
711
+ for(var key in source) {
712
+ target[key] = source[key];
713
+ }
714
+
715
+ return target;
708
716
  }
709
-
710
- return target;
711
- }
712
717
 
713
- function addEvent(el,ev,fn,cap){
714
- if(el.addEventListener){
715
- el.addEventListener(ev, fn, !!cap);
716
- } else if (elm.attachEvent){
717
- el.attachEvent('on' + ev, fn);
718
- } else el['on' + ev] = fn;
718
+ function addEvent(el,ev,fn,cap){
719
+ if(el.addEventListener){
720
+ el.addEventListener(ev, fn, !!cap);
721
+ } else if (el.attachEvent){
722
+ el.attachEvent('on' + ev, fn);
723
+ } else el['on' + ev] = fn;
719
724
 
720
- return el;
721
- }
725
+ return el;
726
+ }
722
727
 
723
728
 
724
729
  module.exports = Slideshow;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaerus-component-slideshow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anders Elo