kaerus-component-slideshow 0.0.10 → 0.0.11

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