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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9623d33cdb055350d09cc5d1717b2a78be468bbb
|
4
|
+
data.tar.gz: 08229965f72b944821118c69ef85423c36585ab9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 538fe6b9b7d4a90cd4f9434a3c82c7a651104bafa9735782a2f7bca212396a4f18e818dd5954e7703a70de245c0740fd356df7ef24dd448f1629b3188074de72
|
7
|
+
data.tar.gz: 4ec530f96a540bfe2563e2908392f491f4bf44a2873d6cd3b5e2f9a12e3bdc82f44505084ecd45a107675ee73cdcc6b09cb2d7603edc6ec3e98896cf6f1408ea
|
@@ -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
|
-
|
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
|
-
|
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 =
|
457
|
-
|
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
|
-
|
460
|
-
|
461
|
-
slideshow = this;
|
491
|
+
/* create newcarousel instance */
|
492
|
+
this.carousel = new Carousel(id+'-slides');
|
462
493
|
|
463
|
-
|
494
|
+
this.slides = this.carousel.slides;
|
464
495
|
|
465
|
-
|
496
|
+
attachHandlers(this);
|
497
|
+
|
498
|
+
return this;
|
466
499
|
},
|
467
500
|
start: function(){
|
468
|
-
carousel.start(0,
|
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
|
-
|
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(
|
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
|
-
|
546
|
-
|
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
|
553
|
-
|
554
|
-
|
555
|
-
|
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
|
-
|
562
|
-
|
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
|
596
|
-
|
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
|
-
|
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(
|
622
|
-
|
624
|
+
if(slideshow.paused) {
|
625
|
+
slideshow.resume();
|
623
626
|
} else {
|
624
|
-
|
627
|
+
slideshow.pause();
|
625
628
|
}
|
626
629
|
});
|
627
630
|
}
|
628
631
|
|
629
|
-
function addTransitionHandler(nav,slides){
|
630
|
-
var
|
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
|
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 =
|
645
|
-
applyStyle(
|
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,
|
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' +
|
672
|
+
target_id = slideshow.id + '-s' + index;
|
665
673
|
// fixme: fires twice
|
666
|
-
if(target.id === target_id && typeof
|
667
|
-
|
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
|
-
|
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
|
-
|
686
|
-
|
689
|
+
function getStyleProperty(props){
|
690
|
+
var root = document.documentElement,
|
691
|
+
prop;
|
687
692
|
|
688
|
-
|
689
|
-
|
690
|
-
|
693
|
+
prop = props.filter(function(p){
|
694
|
+
return p in root.style
|
695
|
+
});
|
691
696
|
|
692
|
-
|
693
|
-
}
|
697
|
+
return prop[0]
|
698
|
+
}
|
694
699
|
|
695
|
-
function hasTransitionEndEvent(){
|
696
|
-
|
700
|
+
function hasTransitionEndEvent(){
|
701
|
+
var hasTev;
|
697
702
|
|
698
|
-
|
699
|
-
|
700
|
-
|
703
|
+
hasTev = transitionEndEvents.filter(function(m){
|
704
|
+
return ('on'+m.toLowerCase()) in window
|
705
|
+
});
|
701
706
|
|
702
|
-
|
703
|
-
}
|
707
|
+
return hasTev[0];
|
708
|
+
}
|
704
709
|
|
705
|
-
function mergeOptions(target,source){
|
706
|
-
|
707
|
-
|
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
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
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
|
-
|
721
|
-
}
|
725
|
+
return el;
|
726
|
+
}
|
722
727
|
|
723
728
|
|
724
729
|
module.exports = Slideshow;
|