UNPKG

bespoke-backdrop

Version:
52 lines (42 loc) 1.33 kB
module.exports = function() { return function(deck) { var backdrops; function createBackdropForSlide(slide) { var backdropAttribute = slide.getAttribute('data-bespoke-backdrop'); if (backdropAttribute) { var backdrop = document.createElement('div'); backdrop.className = backdropAttribute; backdrop.classList.add('bespoke-backdrop'); deck.parent.appendChild(backdrop); return backdrop; } } function updateClasses(el) { if (el) { var index = backdrops.indexOf(el), currentIndex = deck.slide(); removeClass(el, 'active'); removeClass(el, 'inactive'); removeClass(el, 'before'); removeClass(el, 'after'); if (index !== currentIndex) { addClass(el, 'inactive'); addClass(el, index < currentIndex ? 'before' : 'after'); } else { addClass(el, 'active'); } } } function removeClass(el, className) { el.classList.remove('bespoke-backdrop-' + className); } function addClass(el, className) { el.classList.add('bespoke-backdrop-' + className); } backdrops = deck.slides .map(createBackdropForSlide); deck.on('activate', function() { backdrops.forEach(updateClasses); }); }; };