!function(global){varundef,DECL_STATES={NOT_RESOLVED:"NOT_RESOLVED",IN_RESOLVING:"IN_RESOLVING",RESOLVED:"RESOLVED"},create=function(){varcurOptions={trackCircularDependencies:!0,allowMultipleDeclarations:!0},modulesStorage={},waitForNextTick=!1,pendingRequires=[],define=function(name,deps,declFn){declFn||(declFn=deps,deps=[]);varmodule=modulesStorage[name];module||(module=modulesStorage[name]={name:name,decl:undef}),module.decl={name:name,prev:module.decl,fn:declFn,state:DECL_STATES.NOT_RESOLVED,deps:deps,dependents:[],exports:undef}},require=function(modules,cb,errorCb){"string"==typeofmodules&&(modules=[modules]),waitForNextTick||(waitForNextTick=!0,nextTick(onNextTick)),pendingRequires.push({deps:modules,cb:function(exports,error){error?(errorCb||onError)(error):cb.apply(global,exports)}})},getState=function(name){varmodule=modulesStorage[name];returnmodule?DECL_STATES[module.decl.state]:"NOT_DEFINED"},isDefined=function(name){return!!modulesStorage[name]},setOptions=function(options){for(varnameinoptions)options.hasOwnProperty(name)&&(curOptions[name]=options[name])},getStat=function(){varmodule,res={};for(varnameinmodulesStorage)modulesStorage.hasOwnProperty(name)&&(module=modulesStorage[name],(res[module.decl.state]||(res[module.decl.state]=[])).push(name));returnres},onNextTick=function(){waitForNextTick=!1,applyRequires()},applyRequires=function(){varrequire,requiresToProcess=pendingRequires,i=0;for(pendingRequires=[];require=requiresToProcess[i++];)requireDeps(null,require.deps,[],require.cb)},requireDeps=function(fromDecl,deps,path,cb){varunresolvedDepsCnt=deps.length;unresolvedDepsCnt||cb([]);for(vardep,decl,decls=[],onDeclResolved=function(_,error){if(error)returnvoidcb(null,error);if(!--unresolvedDepsCnt){for(vardecl,exports=[],i=0;decl=decls[i++];)exports.push(decl.exports);cb(exports)}},i=0,len=unresolvedDepsCnt;i<len;){if(dep=deps[i++],"string"==typeofdep){if(!modulesStorage[dep])returnvoidcb(null,buildModuleNotFoundError(dep,fromDecl));decl=modulesStorage[dep].decl}elsedecl=dep;decls.push(decl),startDeclResolving(decl,path,onDeclResolved)}},startDeclResolving=function(decl,path,cb){if(decl.state===DECL_STATES.RESOLVED)returnvoidcb(decl.exports);if(decl.state===DECL_STATES.IN_RESOLVING)returnvoid(curOptions.trackCircularDependencies&&isDependenceCircular(decl,path)?cb(null,buildCircularDependenceError(decl,path)):decl.dependents.push(cb));if(decl.dependents.push(cb),decl.prev&&!curOptions.allowMultipleDeclarations)returnvoidprovideError(decl,buildMultipleDeclarationError(decl));curOptions.trackCircularDependencies&&(path=path.slice()).push(decl);varisProvided=!1,deps=decl.prev?decl.deps.concat([decl.prev]):decl.deps;decl.state=DECL_STATES.IN_RESOLVING,requireDeps(decl,deps,path,function(depDeclsExports,error){returnerror?voidprovideError(decl,error):(depDeclsExports.unshift(function(exports,error){returnisProvided?voidcb(null,buildDeclAreadyProvidedError(decl)):(isProvided=!0,void(error?provideError(decl,error):provideDecl(decl,exports)))}),voiddecl.fn.apply({name:decl.name,deps:decl.deps,global:global},depDeclsExports))})},provideDecl=function(decl,exports){decl.exports=exports,decl.state=DECL_STATES.RESOLVED;for(vardependent,i=0;dependent=decl.dependents[i++];)dependent(exports);decl.dependents=undef},provideError=function(decl,error){decl.state=DECL_STATES.NOT_RESOLVED;for(vardependent,i=0;dependent=decl.dependents[i++];)dependent(null,error);decl.dependents=[]};return{create:create,define:define,require:require,getState:getState,isDefined:isDefined,setOptions:setOptions,getStat:getStat}},onError=function(e){nextTick(function(){throwe})},buildModuleNotFoundError=function(name,decl){returnError(decl?'Module "'+decl.name+'": can\'t resolve dependence "'+name+'"':'Required module "'+name+"\" can't be resolved")},buildCircularDependenceError=function(decl,path){for(varpathDecl,strPath=[],i=0;pathDecl=path[i++];)strPath.push(pathDecl.name);returnstrPath.push(decl.name),Error('Circular dependence has been detected: "'+strPath.join(" -> ")+'"')},buildDeclAreadyProvidedError=function(decl){returnError('Declaration of module "'+decl.name+'" has already been provided')},buildMultipleDeclarationError=function(decl){returnError('Multiple declarations of module "'+decl.name+'" have been detected')},isDependenceCircular=function(decl,path){for(varpathDecl,i=0;pathDecl=path[i++];)if(decl===pathDecl)return!0;return!1},nextTick=function(){varfns=[],enqueueFn=function(fn){return1===fns.push(fn)},callFns=function(){varfnsToCall=fns,i=0,len=fns.length;for(fns=[];i<len;)fnsToCall[i++]()};if("object"==typeofprocess&&process.nextTick)returnfunction(fn){enqueueFn(fn)&&process.nextTick(callFns)};if(global.setImmediate)returnfunction(fn){enqueueFn(fn)&&global.setImmediate(callFns)};if(global.postMessage&&!global.opera){varisPostMessageAsync=!0;if(global.attachEvent){varcheckAsync=function(){isPostMessageAsync=!1};global.attachEvent("onmessage",checkAsync),global.postMessage("__checkAsync","*"),global.detachEvent("onmessage",checkAsync)}if(isPostMessageAsync){varmsg="__modules"++newDate,onMessage=function(e){e.data===msg&&(e.stopPropagation&&e.stopPropagation(),callFns())};returnglobal.addEventListener?global.addEventListener("message",onMessage,!0):global.attachEvent("onmessage",onMessage),function(fn){enqueueFn(fn)&&global.postMessage(msg,"*")}}}vardoc=global.document;if("onreadystatechange"indoc.createElement("script")){varhead=doc.getElementsByTagName("head")[0],createScript=function(){varscript=doc.createElement("script");script.onreadystatechange=function(){script.parentNode.removeChild(script),script=script.onreadystatechange=null,callFns()},head.appendChild(script)};returnfunction(fn){enqueueFn(fn)&&createScript()}}returnfunction(fn){enqueueFn(fn)&&setTimeout(callFns,0)}}();"object"==typeofexports?module.exports=create():global.modules=create()}("undefined"!=typeofwindow?window:global),function(global){functioninitialize(){global.shower.modules.require("shower.defaultOptions",function(defaultOptions){varhasOptions=global.hasOwnProperty("showerOptions"),options=global.shower.options,containerSelector=options.shower_selector||defaultOptions.container_selector,element=document.querySelector(containerSelector),getDataAttr=getData.bind(this,element),autoInit="undefined"==typeofoptions.auto_init||options.auto_init;if(!element)thrownewError("Shower element with selector "+containerSelector+" not found.");("false"!==getDataAttr("auto-init")||hasOptions&&autoInit)&&(hasOptions||dataAttrsOptions.forEach(function(name){varvalue=getDataAttr(name);null!==value&&"undefined"!=typeofvalue&&(options[name.replace(/-/g,"_")]=value)}),global.shower.modules.require(["shower"],function(sh){sh.init({container:element,options:options})}))})}functiongetData(element,name){returnelement.dataset?element.dataset[name]:element.getAttribute("data-"+name)}vardataAttrsOptions=["debug-mode","slides-selector","hotkeys"];global.shower={modules:modules.create(),options:global.showerOptions||{}},/interactive|complete|loaded/.test(document.readyState)?initialize():document.addEventListener("DOMContentLoaded",initialize)}(window),shower.modules.define("shower",["shower.global"],function(provide,showerGlobal){provide(showerGlobal)}),shower.modules.define("Emitter",["emitter.Event","emitter.EventGroup","util.extend"],function(provide,EmitterEvent,EventGroup,extend){functionEventEmitter(parameters){parameters=parameters||{},this._context=parameters.context,this._parent=parameters.parent,this._listeners={}}functionsortByPriority(aListener,bListener){returnaListener.priority-bListener.priority}extend(EventEmitter.prototype,{on:function(types,callback,context,priority){if("undefined"==typeofcallback)thrownewError("Callback is not defined.");if(priority=priority||0,"string"==typeoftypes)this._addListener(types,callback,context,priority);elsefor(vari=0,l=types.length;i<l;i++)this._addListener(types[i],callback,context,priority);returnthis},off:function(types,callback,context,priority){if(priority=priority||0,"string"==typeoftypes)this._removeListener(types,callback,context,priority);elsefor(vari=0,l=types.length;i<l;i++)this._removeListener(types[i],callback,context,priority);returnthis},once:function(eventType,callback,context,priority){varhandler=function(event){this.off(eventType,handler,this,priority),context?callback.call(context,event):callback(event)};returnthis.on(eventType,handler,this,priority),this},emit:function(eventType,eventObject){varevent=eventObject,listeners=this._listeners;event&&"function"==typeofevent.get||(event=this.createEventObject(eventType,eventObject,this._context)),event.isPropagationStopped()||(listeners.hasOwnProperty(eventType)&&this._callListeners(listeners[eventType],event),this._parent&&!event.isPropagationStopped()&&this._parent.emit(eventType,event))},createEventObject:function(type,eventData,target){vardata={target:target,type:type};returnnewEmitterEvent(eventData?extend(data,eventData):data)},setParent:function(parent){this._parent!=parent&&(this._parent=parent)},getParent:function(){returnthis._parent},group:function(){returnnewEventGroup(this)},_addListener:function(eventType,callback,context,priority){varlistener={callback:callback,context:context,priority:priority};this._listeners[eventType]?this._listeners[eventType].push(listener):this._listeners[eventType]=[listener]},_removeListener:function(eventType,callback,context,priority){varlistener,listeners=this._listeners[eventType];if(listeners){for(varfoundIndex=-1,i=0,l=listeners.length;i<l;i++)listener=listeners[i],listener.callback==callback&&listener.context==context&&listener.priority==priority&&(foundIndex=i);foundIndex!=-1&&(1==listeners.length?this._clearType(eventType):listeners.splice(foundIndex,1))}},_clearType:function(eventType){this._listeners.hasOwnProperty(eventType)&&deletethis._listeners[eventType]},_callListeners:function(listeners,event){vari=listeners.length-1;for(listeners.sort(sortByPriority);i>=0&&!event.defaultPrevented();){varlistener=listeners[i];listener&&(listener.context?listener.callback.call(listener.context,event):listener.callback(event)),i--}}}),provide(EventEmitter)}),shower.modules.define("emitter.Event",["util.extend"],function(provide,extend){functionEvent(data){this._data=data,this._preventDefault=!1,this._stopPropagation=!1}extend(Event.prototype,{get:function(key){returnthis._data[key]},preventDefault:function(){returnthis._preventDefault=!0,this._preventDefault},defaultPrevented:function(){returnthis._preventDefault},stopPropagation:function(){returnthis._stopPropagation=!0,this._stopPropagation},isPropagationStopped:function(){returnthis._stopPropagation}}),provide(Event)}),shower.modules.define("emitter.EventGroup",["util.extend"],function(provide,extend){functionEventGroup(eventManager){this.events=eventManager,this._listeners=[]}extend(EventGroup.prototype,{on:function(types,callback,context){if(Array.isArray(types))for(vari=0,k=types.length;i<k;i++)this._listeners.push(types[i],callback,context);elsethis._listeners.push(types,callback,context);returnthis.events.on(types,callback,context),this},off:function(types,callback,context){if(Array.isArray(types))for(vari=0,k=types.length;i<k;i++)this._removeListener(types[i],callback,context);elsethis._removeListener(types,callback,context);returnthis},offAll:function(){for(vari=0,k=this._listeners.length;i<k;i+=3)this.events.off(this._listeners[i],this._listeners[i+1],this._listeners[i+2]);returnthis._listeners.length=0,this},_removeListener:function(type,callback,context){for(varindex=this._listeners.indexOf(type,0);index!=-1;)this._listeners[index+1]==callback&&this._listeners[index+2]==context&&(this._listeners.splice(index,3),this.events.off(type,callback,context)),index=this._listeners.indexOf(type,index)}}),provide(EventGroup)}),shower.modules.define("Plugins",["Emitter","util.extend"],function(provide,EventEmitter,extend){functionPlugins(showerGlobal){this.events=newEventEmitter({context:this}),this._showerGlobal=showerGlobal,this._showerInstances=showerGlobal.getInited(),this._plugins={},this._instances=[],showerGlobal.events.on("init",this._onShowerInit,this)}extend(Plugins.prototype,{destroy:function(){this._showerGlobal.events.off("init",this._onShowerInit,this),this._plugins=null},add:function(name,options){if(this._plugins.hasOwnProperty(name))thrownewError("Plugin "+name+" already exist.");returnthis._requireAndAdd({name:name,options:options}),this},remove:function(name){if(!this._plugins.hasOwnProperty(name))thrownewError("Plugin "+name+" not found.");returndeletethis._plugins[name],this.events.emit("remove",{name:name}),this},get:function(name,shower){varpluginInstance,plugin=this._plugins[name];if(plugin&&shower)for(vari=0,l=this._instances.length;i<l;i++){varinstanceInfo=this._instances[i];instanceInfo.plugin.name===name&&instanceInfo.shower===shower&&(pluginInstance=instanceInfo.instance)}returnpluginInstance},_requireAndAdd:function(plugin){shower.modules.require(plugin.name,function(pluginClass){plugin.class=pluginClass,this._plugins[plugin.name]=plugin,this._instancePlugin(plugin)}.bind(this))},_instancePlugin:function(plugin){this._showerInstances.forEach(function(shower){this._instance(plugin,shower)},this),this.events.emit("add",{name:plugin.name})},_instanceFor:function(shower){for(varnameinthis._plugins)this._plugins.hasOwnProperty(name)&&this._instance(this._plugins[name],shower)},_instance:function(plugin,shower){varoptions=plugin.options||shower.options.get("plugin_"+plugin.name);this._instances.push({shower:shower,plugin:plugin,instance:newplugin.class(shower,options)})},_onShowerInit:function(event){varshower=event.get("shower");this._instanceFor(shower)}}),provide(Plugins)}),shower.modules.define("shower.global",["Emitter","Plugins"],function(provide,EventEmitter,Plugins){varinited=[],sh={ready:function(callback){returncallback&&(inited.length?inited.forEach(callback):this.events.once("init",function(e){callback(e.get("shower"))})),Boolean(inited.length)},init:function(initOptions){initOptions=initOptions||{},shower.modules.require(["Shower"],function(Shower){newShower(initOptions.container,initOptions.options)})},getInited:function(){returninited.slice()}};sh.events=newEventEmitter({context:sh}),sh.plugins=newPlugins(sh),sh.events.on("notify",function(e){varshowerInstance=e.get("shower");inited.push(showerInstance),sh.events.emit("init",e)}),provide(sh)}),shower.modules.define("Options",["Emitter","options.Monitor","util.Store","util.extend","util.inherit"],function(provide,EventEmitter,Monitor,Store,extend,inherit){functionOptions(initOptions){Options.super.constructor.apply(this,arguments),this.events=newEventEmitter}inherit(Options,Store,{set:function(name,value){varchanged=[];if("string"==typeofname)Options.super.set.call(this,name,value),changed.push({name:name,value:value});else{varoptions=name||{};Object.keys(options).forEach(function(optionName){varoptionValue=options[optionName];Options.super.set.call(this,optionName,optionValue),changed.push({name:optionName,value:optionValue})})}returnchanged.length&&this.events.emit("set",{items:changed}),this},unset:function(name){returnOptions.super.unset(this,name),this.events.emit("unset",{name:name}),this},getMonitor:function(){returnnewMonitor(this)}}),provide(Options)}),shower.modules.define("options.Monitor",["util.extend"],function(provide,extend){functionMonitor(options){this._options=options,this._optionsEvents=options.events.group().on(["set","unset"],this._onOptionsChange,this),this._fieldsHanders={}}extend(Monitor.prototype,{destroy:function(){this._options=null,this._optionsEvents.offAll(),this._fieldsHanders=null},add:function(field,callback,context){if(Array.prototype.isArray.call(null,field)){varfields=field;for(varfieldNameinfields)fields.hasOwnProperty(fieldName)&&this._addHandler(fieldName,callback,context)}elsethis._addHandler(field,callback,context);returnthis},remove:function(field,callback,context){if(Array.prototype.isArray.call(null,field)){varfields=field;for(varfieldNameinfields)fields.hasOwnProperty(fieldName)&&this._remodeHandler(fieldName,callback,context)}elsethis._remodeHandler(field,callback,context);returnthis},getOptions:function(){returnthis._options},_onOptionsChange:function(event){varfieldsUpdated="unset"===event.get("type")?[event.get("name")]:event.get("items");fieldsUpdated.forEach(function(field){this._fieldsHanders.hasOwnProperty(field)&&this._fieldsHanders[field].forEach(function(handler){handler.callback.call(handler.context,this._options.get(field))})},this)},_addHandler:function(field,callback,context){varhandler={callback:callback,context:context};this._fieldsHanders.hasOwnProperty(fieldName)?this._fieldsHanders[fieldName].push(handler):this._fieldsHanders[fieldName]=[handler]},_remodeHandler:function(field,callback,context){if(!this._fieldsHanders.hasOwnProperty(field))thrownewError("Remove undefined handler for "+field+" field");varfieldsHanders=this._fieldsHanders[field],handler=fieldsHanders.filter(function(hander){returnhander.callback===callback&&hander.context===context})[0];if(!hander)thrownewError("Hanlder for "+field+" not found.");fieldsHanders.splice(fieldsHanders.indexOf(handler,1))}}),provide(Monitor)}),shower.modules.define("Shower",["Emitter","Options","shower.global","shower.defaultOptions","shower.Container","shower.Player","shower.Location","shower.slidesParser","util.extend"],function(provide,EventEmitter,Options,showerGlobal,defaultShowerOptions,Container,Player,Location,defaultSlidesParser,extend){functionShower(container,options){options=options||{},this.events=newEventEmitter({context:this}),this.options=newOptions({},defaultShowerOptions,options);varcontainerElement=container||this.options.get("container_selector");"string"==typeofcontainerElement&&(containerElement=document.querySelector(containerElement)),this.player=newPlayer(this),this.container=newContainer(this,containerElement),this._slides=[],this._isHotkeysOn=!0,this._liveRegion=null,this._initSlides(),this._initLiveRegion(),this.options.get("debug_mode")&&(document.body.classList.add(this.options.get("debug_mode_classname")),console.info("Debug mode on")),this.options.get("hotkeys")||this.disableHotkeys(),this.location=newLocation(this),showerGlobal.events.emit("notify",{shower:this}),this._playerListeners=this.player.events.group().on("activate",this._onPlayerSlideActivate,this)}extend(Shower.prototype,{destroy:function(){this.events.emit("destroy"),this.location.destroy(),this.container.destroy(),this.player.destroy(),this._slides=[]},add:function(slide){if(Array.isArray.call(null,slide))for(vari=0,k=slide.length;i<k;i++)this._addSlide(slide[i]);elsethis._addSlide(slide);returnthis},remove:function(slide){varslidePosition;if("number"==typeofslide)slidePosition=slide;else{if(this._slides.indexOf(slide)==-1)thrownewError("Slide not found");slidePosition=this._slides.indexOf(slide)}returnslide=this._slides.splice(slidePosition,1)[0],this.events.emit("slideremove",{slide:slide}),slide.destroy(),this},get:function(index){returnthis._slides[index]},getSlides:function(){returnthis._slides.slice()},getSlidesCount:function(){returnthis._slides.length},getSlideIndex:function(slide){returnthis._slides.indexOf(slide)},disableHotkeys:function(){returnthis._isHotkeysOn=!1,this},enableHotkeys:function(){returnthis._isHotkeysOn=!0,this},isHotkeysEnabled:function(){returnthis._isHotkeysOn},getLiveRegion:function(){returnthis._liveRegion},updateLiveRegion:function(content){returnthis._liveRegion.innerHTML=content,this},_onPlayerSlideActivate:function(event){varcurrentSlide=event.get("slide");this.updateLiveRegion(currentSlide.getContent())},_initSlides:function(){varslidesParser=this.options.get("slides_parser")||defaultSlidesParser,slides=slidesParser(this.container.getElement(),this.options.get("slides_selector"));this.add(slides)},_addSlide:function(slide){slide.state.set("index",this._slides.length),this._slides.push(slide),this.events.emit("slideadd",{slide:slide})},_initLiveRegion:function(){varliveRegion=document.createElement("section");liveRegion.setAttribute("role","region"),liveRegion.setAttribute("aria-live","assertive"),liveRegion.setAttribute("aria-relevant","additions"),liveRegion.setAttribute("aria-label","Slide Content: Auto-updating"),liveRegion.className="region",document.body.appendChild(liveRegion),this._liveRegion=liveRegion}}),provide(Shower)}),shower.modules.define("shower.Container",["Emitter","util.bound","util.extend"],function(provide,EventEmitter,bound,extend){functionContainer(shower,containerElement){this.events=newEventEmitter({context:this,parent:shower.events}),this._shower=shower,this._element=containerElement,this._isSlideMode=!1,this.init()}extend(Container.prototype,{init:function(){varbodyClassList=document.body.classList,showerOptions=this._shower.options,fullModeClass=showerOptions.get("mode_full_classname"),listModeClass=showerOptions.get("mode_list_classname");bodyClassList.contains(listModeClass)||bodyClassList.contains(fullModeClass)||bodyClassList.add(listModeClass),this._setupListeners()},destroy:function(){this._clearListeners(),this._element=null,this._shower=null,this._isSlideMode=null},getElement:function(){returnthis._element},enterSlideMode:function(){varbodyClassList=document.body.classList,showerOptions=this._shower.options;returnbodyClassList.remove(showerOptions.get("mode_list_classname")),bodyClassList.add(showerOptions.get("mode_full_classname")),document.body.setAttribute("role","application"),this._applyTransform(this._getTransformScale()),this._isSlideMode=!0,this.events.emit("slidemodeenter"),this},exitSlideMode:function(){varelementClassList=document.body.classList,showerOptions=this._shower.options;returnelementClassList.remove(showerOptions.get("mode_full_classname")),elementClassList.add(showerOptions.get("mode_list_classname")),document.body.removeAttribute("role","application"),this._applyTransform("none"),this._isSlideMode=!1,this.scrollToCurrentSlide(),this.events.emit("slidemodeexit"),this},isSlideMode:function(){returnthis._isSlideMode},scrollToCurrentSlide:function(){varactiveSlideClassName=this._shower.options.get("slide_active_classname"),slideElement=this._element.querySelector("."+activeSlideClassName);returnslideElement&&window.scrollTo(0,slideElement.offsetTop),this},_setupListeners:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this),window.addEventListener("resize",bound(this,"_onResize")),document.addEventListener("keydown",bound(this,"_onKeyDown"))},_clearListeners:function(){this._showerListeners.offAll(),window.removeEventListener("resize",bound(this,"_onResize")),document.removeEventListener("keydown",bound(this,"_onKeyDown"))},_getTransformScale:function(){vardenominator=Math.max(document.body.clientWidth/window.innerWidth,document.body.clientHeight/window.innerHeight);return"scale("+1/denominator+")"},_applyTransform:function(transformValue){["WebkitTransform","MozTransform","msTransform","OTransform","transform"].forEach(function(property){document.body.style[property]=transformValue})},_onResize:function(){this.isSlideMode()&&this._applyTransform(this._getTransformScale())},_onSlideAdd:function(e){varslide=e.get("slide");slide.events.on("click",this._onSlideClick,this)},_onSlideRemove:function(e){varslide=e.get("slide");slide.events.off("click",this._onSlideClick,this)},_onSlideClick:function(){this._isSlideMode||this.enterSlideMode()},_onKeyDown:function(e){if(this._shower.isHotkeysEnabled())switch(e.which){case13:if(e.preventDefault(),!this.isSlideMode()&&e.metaKey){varslideNumber=e.shiftKey?0:this._shower.player.getCurrentSlideIndex();this._shower.player.go(slideNumber),this.enterSlideMode()}elsee.shiftKey?this._shower.player.prev():this._shower.player.next();break;case27:e.preventDefault(),this.exitSlideMode();break;case116:if(!this.isSlideMode()&&e.shiftKey){e.preventDefault();varslideNumber=this._shower.player.getCurrentSlideIndex();this._shower.player.go(slideNumber),this.enterSlideMode()}break;case80:!this.isSlideMode()&&e.altKey&&e.metaKey&&(e.preventDefault(),this.enterSlideMode())}}}),provide(Container)}),shower.modules.define("shower.Location",["util.SessionStore","util.bound","util.extend"],function(provide,SessionStore,bound,extend){functionLocation(shower){this._shower=shower;varsessionStoreKey=shower.options.get("sessionstore_key")+"-shower.Location";this.state=newSessionStore(sessionStoreKey,{isSlideMode:!1}),this._showerListeners=null,this._playerListeners=null,this._documentTitle=document.title,this._popStateProcess=null,this._setupListeners(),this._init()}extend(Location.prototype,{destroy:function(){this._clearListeners()},save:function(){this.state.set("isSlideMode",this._isSlideMode())},_init:function(){varslideInfo,shower=this._shower,currentSlideId=window.location.hash.substr(1),slideModeClass=shower.options.get("mode_full_classname");window.location.hash="",(this.state.get("isSlideMode")||document.body.classList.contains(slideModeClass))&&shower.container.enterSlideMode(),""!==currentSlideId&&(slideInfo=this._getSlideById(currentSlideId),shower.player.go("undefined"!=typeofslideInfo.index?slideInfo.index:0))},_setupListeners:function(){varshower=this._shower;this._playerListeners=shower.player.events.group().on("activate",this._onSlideActivate,this),this._containerListener=shower.container.events.group().on(["slidemodeenter","slidemodeexit"],this._onContainerSlideModeChange,this),window.addEventListener("popstate",bound(this,"_onPopstate"))},_clearListeners:function(){window.removeEventListener("popstate",bound(this,"_onPopstate")),this._playerListeners.offAll(),this._containerListener.offAll()},_getSlideById:function(slideId){for(varslide,index,slides=this._shower.getSlides(),i=slides.length-1;i>=0;i--)if(slides[i].getId()===slideId){slide=slides[i],index=i;break}return{slide:slide,index:index}},_onSlideActivate:function(e){window.location.hash=e.get("slide").getId(),this._setTitle()},_onContainerSlideModeChange:function(){this._setTitle(),this.save()},_isSlideMode:function(){returnthis._shower.container.isSlideMode()},_onPopstate:function(){varslideInfo,shower=this._shower,slideId=window.location.hash.substr(1),currentSlide=shower.player.getCurrentSlide(),currentSlideNumber=shower.player.getCurrentSlideIndex();this._isSlideMode()&¤tSlideNumber===-1?shower.player.go(0):currentSlideNumber===-1&&""!==window.location.hash&&shower.player.go(0),currentSlide&&slideId!==currentSlide.getId()&&(slideInfo=this._getSlideById(slideId),shower.player.go(slideInfo.index))},_setTitle:function(){vartitle=document.title,isSlideMode=this._isSlideMode(),currentSlide=this._shower.player.getCurrentSlide();if(isSlideMode&¤tSlide){varslideTitle=currentSlide.getTitle();document.title=slideTitle?slideTitle+" — "+this._documentTitle:this._documentTitle}elsethis._documentTitle!==title&&(document.title=this._documentTitle)}}),provide(Location)}),shower.modules.define("shower.Player",["Emitter","util.bound","util.extend"],function(provide,EventEmitter,bound,extend){functionPlayer(shower){this.events=newEventEmitter({context:this,parent:shower.events}),this._shower=shower,this._showerListeners=null,this._playerListeners=null,this._currentSlideNumber=-1,this._currentSlide=null,this.init()}extend(Player.prototype,{init:function(){this._showerListeners=this._shower.events.group().on("slideadd",this._onSlideAdd,this).on("slideremove",this._onSlideRemove,this).on("slidemodeenter",this._onSlideModeEnter,this),this._playerListeners=this.events.group().on("prev",this._onPrev,this).on("next",this._onNext,this).on("prevslide",this._onPrev,this).on("nextslide",this._onNext,this),document.addEventListener("keydown",bound(this,"_onKeyDown"))},destroy:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),document.removeEventListener("keydown",bound(this,"_onKeyDown")),this._currentSlide=null,this._currentSlideNumber=null,this._shower=null},next:function(){returnthis.events.emit("next"),this},prev:function(){returnthis.events.emit("prev"),this},nextSlide:function(){returnthis.events.emit("nextslide"),this},prevSlide:function(){returnthis.events.emit("prevslide"),this},first:function(){returnthis.go(0),this},last:function(){returnthis.go(this._shower.getSlidesCount()-1),this},go:function(index){"number"!=typeofindex&&(index=this._shower.getSlideIndex(index));varslidesCount=this._shower.getSlidesCount(),currentSlide=this._currentSlide;returnindex!=this._currentSlideNumber&&index<slidesCount&&index>=0&&(currentSlide&¤tSlide.isActive()&¤tSlide.deactivate(),currentSlide=this._shower.get(index),this._currentSlide=currentSlide,this._currentSlideNumber=index,currentSlide.isActive()||currentSlide.activate(),this.events.emit("activate",{index:index,slide:currentSlide})),this},getCurrentSlide:function(){returnthis._currentSlide},getCurrentSlideIndex:function(){returnthis._currentSlideNumber},_onPrev:function(){this._changeSlide(this._currentSlideNumber-1)},_onNext:function(){this._changeSlide(this._currentSlideNumber+1)},_changeSlide:function(index){this.go(index)},_onSlideAdd:function(e){varslide=e.get("slide");slide.events.on("activate",this._onSlideActivate,this)},_onSlideRemove:function(e){varslide=e.get("slide");slide.events.off("activate",this._onSlideActivate,this)},_onSlideActivate:function(e){varslide=e.get("slide"),slideNumber=this._shower.getSlideIndex(slide);this.go(slideNumber)},_onKeyDown:function(e){if(this._shower.isHotkeysEnabled()&&!/^(?:button|input|select|textarea)$/i.test(e.target.tagName)){this.events.emit("keydown",{event:e});varaction,allowModifiers=!1;switch(e.which){case33:case38:case37:case72:case75:case80:action=e.shiftKey?"prevSlide":"prev";break;case34:case40:case39:case76:case74:case78:action=e.shiftKey?"nextSlide":"next";break;case36:allowModifiers=!0,action="first";break;case35:allowModifiers=!0,action="last";break;case32:this._shower.container.isSlideMode()&&(action=e.shiftKey?"prev":"next")}!action||!allowModifiers&&(e.altKey||e.ctrlKey||e.metaKey)||(e.preventDefault(),this[action]())}},_onSlideModeEnter:function(){this._currentSlide||this.go(0)}}),provide(Player)}),shower.modules.define("shower.defaultOptions",function(provide,slidesParser){provide({container_selector:".shower",debug_mode:!1,debug_mode_classname:"debug",hotkeys:!0,sessionstore_key:"shower",slides_selector:".shower .slide",mode_full_classname:"full",mode_list_classname:"list",slide_title_element_selector:"H2",slide_active_classname:"active",slide_visited_classname:"visited"})}),shower.modules.define("shower.slidesParser",["Slide"],function(provide,Slide){functionparse(containerElement,cssSelector){varslidesElements=containerElement.querySelectorAll(cssSelector);returnslidesElements=Array.prototype.slice.call(slidesElements),slidesElements.map(function(slideElement,index){varslide=newSlide(slideElement);returnslideElement.id||(slideElement.id=index+1),slide})}provide(parse)}),shower.modules.define("Slide",["shower.defaultOptions","Emitter","Options","slide.Layout","slide.layoutFactory","util.Store","util.extend"],function(provide,defaultOptions,EventEmitter,OptionsManager,Layout,slideLayoutFactory,DataStore,extend){functionSlide(content,options,state){this.events=newEventEmitter,this.options=newOptionsManager(options),this.layout=null,this.state=newDataStore({visited:0,index:null},state),this._content=content,this._isVisited=this.state.get("visited")>0,this._isActive=!1,this.init()}extend(Slide.prototype,{init:function(){this.layout="string"==typeofthis._content?newslideLayoutFactory.createLayout({content:this._content}):newLayout(this._content,this.options),this.layout.setParent(this),
this._setupListeners()},destroy:function(){this._clearListeners(),this._isActive=null,this.options=null,this.layout.destroy()},activate:function(){this._isActive=!0;varvisited=this.state.get("visited");returnthis.state.set("visited",++visited),this.events.emit("activate",{slide:this}),this},deactivate:function(){returnthis._isActive=!1,this.events.emit("deactivate",{slide:this}),this},isActive:function(){returnthis._isActive},isVisited:function(){returnthis.state.get("visited")>0},getTitle:function(){returnthis.layout.getTitle()},setTitle:function(title){returnthis.layout.setTitle(title),this},getId:function(){returnthis.layout.getElement().id},getContent:function(){returnthis.layout.getContent()},_setupListeners:function(){this.layoutListeners=this.layout.events.group().on("click",this._onSlideClick,this)},_clearListeners:function(){this.layoutListeners.offAll()},_onSlideClick:function(){this.activate(),this.events.emit("click",{slide:this})}}),provide(Slide)}),shower.modules.define("slide.Layout",["Options","shower.defaultOptions","Emitter","util.bound","util.extend"],function(provide,OptionsManager,defaultOptions,EventEmitter,bound,extend){functionLayout(element,options){this.options=newOptionsManager({title_element_selector:defaultOptions.slide_title_element_selector,active_classname:defaultOptions.slide_active_classname,visited_classname:defaultOptions.slide_visited_classname},options),this.events=newEventEmitter,this._element=element,this._parent=null,this._parentElement=null,this.init()}extend(Layout.prototype,{init:function(){varparentNode=this._element.parentNode;parentNode?this._parentElement=parentNode:this.setParentElement(parentNode)},destroy:function(){this.setParent(null)},setParent:function(parent){this._parent!=parent&&(this._clearListeners(),this._parent=parent,this._parent&&this._setupListeners(),this.events.emit("parentchange",{parent:parent}))},getParent:function(){returnthis._parent},setParentElement:function(parentElement){parentElement!=this._parentElement&&(this._parentElement=parentElement,parentElement.appendChild(this._element),this.events.emit("parentelementchange",{parentElement:parentElement}))},getParentElement:function(){returnthis._parentElement},getElement:function(){returnthis._element},setTitle:function(title){vartitleElementSelector=this.options.get("title_element_selector"),titleElement=this._element.querySelector(titleElementSelector);titleElement?titleElement.innerHTML=title:(titleElement=document.createElement(titleElementSelector),titleElement.innerHTML=title,this._element.insertBefore(titleElement,this._element.firstChild))},getTitle:function(){vartitleElementSelector=this.options.get("title_element_selector"),titleElement=this._element.querySelector(titleElementSelector);returntitleElement?titleElement.textContent:null},getData:function(name){varelement=this._element;returnelement.dataset?element.dataset[name]:element.getAttribute("data-"+name)},getContent:function(){returnthis._element.innerHTML},_setupListeners:function(){this._slideListeners=this._parent.events.group().on("activate",this._onSlideActivate,this).on("deactivate",this._onSlideDeactivate,this),this._element.addEventListener("click",bound(this,"_onSlideClick"),!1)},_clearListeners:function(){this._slideListeners&&this._slideListeners.offAll(),this._element.removeEventListener("click",bound(this,"_onSlideClick"))},_onSlideActivate:function(){this._element.classList.add(this.options.get("active_classname"))},_onSlideDeactivate:function(){varelementClassList=this._element.classList;elementClassList.remove(this.options.get("active_classname")),elementClassList.add(this.options.get("visited_classname"))},_onSlideClick:function(){this.events.emit("click")}}),provide(Layout)}),shower.modules.define("slide.layoutFactory",["slide.Layout","util.extend"],function(provide,SlideLayout,extend){varlayoutFactory={};extend(layoutFactory,{createLayout:function(parameters){parameters=parameters||{};varelement=layoutFactory._createElement(extend({content:"",contentType:"slide"},parameters));returnnewSlideLayout(element)},_createElement:function(options){varelement=document.createElement("section");returnelement.innerHTML=options.content,element.classList.add(options.contentType),element}}),provide(layoutFactory)}),shower.modules.define("util.SessionStore",["util.Store","util.inherit"],function(provide,Store,inherit){functionSessionStore(storeKey,initData){this._storageKey=storeKey;vardata=this._loadFromStorage()||initData;SessionStore.super.constructor.call(this,data)}inherit(SessionStore,Store,{set:function(key,value){SessionStore.super.set.call(this,key,value),this._saveToStorage()},unset:function(key){SessionStore.super.unset.call(this,key),this._saveToStorage()},_saveToStorage:function(){window.sessionStorage.setItem(this._storageKey,JSON.stringify(this.getAll()))},_loadFromStorage:function(){varstore=window.sessionStorage.getItem(this._storageKey);returnstore&&JSON.parse(store)}}),provide(SessionStore)}),shower.modules.define("util.Store",["util.extend"],function(provide,extend){functionStore(initData){this._data=initData||{};for(vari=1,k=arguments.length;i<k;i++)extend(this._data,arguments[i]||{})}extend(Store.prototype,{get:function(key,defaultValue){returnthis._data.hasOwnProperty(key)?this._data[key]:defaultValue},getAll:function(){returnextend({},this._data)},set:function(key,value){returnthis._data[key]=value,this},unset:function(key){if(!this._data.hasOwnProperty(key))thrownewError(key+" not found.");returndeletethis._data[key],this},destroy:function(){this._data={}}}),provide(Store)}),shower.modules.define("util.bound",function(provide){functionbound(ctx,fn){returnctx["__bound_"+fn]||(ctx["__bound_"+fn]=ctx[fn].bind(ctx))}provide(bound)}),shower.modules.define("util.extend",function(provide){functionextend(target){if(!target)thrownewError("util.extend: Target not found");return"undefined"==typeofObject.assign?polyfill.apply(null,arguments):Object.assign.apply(null,arguments)}functionpolyfill(target){for(vari=1,l=arguments.length;i<l;i++){varobj=arguments[i];for(varpropertyinobj)obj.hasOwnProperty(property)&&(target[property]=obj[property])}returntarget}provide(extend)}),shower.modules.define("util.inherit",["util.extend"],function(provide,extend){varinherit=function(childClass,parentClass,override){returnchildClass.prototype=Object.create(parentClass.prototype),childClass.prototype.constructor=childClass,childClass.super=parentClass.prototype,childClass.super.constructor=parentClass,override&&extend(childClass.prototype,override),childClass.prototype};provide(inherit)}),shower.modules.define("shower-next",["shower","Emitter","util.extend"],function(provide,globalShower,EventEmitter,extend){functionNext(shower,options){options=options||{},this.events=newEventEmitter({context:this}),this._shower=shower,this._elementsSelector=options.selector||DEFAULT_SELECTOR,this._elements=[],this._innerComplete=0,this._setupListeners(),this._shower.player.getCurrentSlideIndex()!=-1&&this._onSlideActivate()}varTIMER_PLUGIN_NAME="shower-timer",DEFAULT_SELECTOR=".next";extend(Next.prototype,{destroy:function(){this._clearListeners(),this._elements=null,this._elementsSelector=null,this._innerComplete=null,this._shower=null},next:function(){if(!this._elements.length)thrownewError("Inner nav elements not found.");returnthis._innerComplete++,this._go(),this.events.emit("next"),this},prev:function(){if(!this._elements.length)thrownewError("Inner nav elements not found.");returnthis._innerComplete--,this._go(),this.events.emit("prev"),this},getLength:function(){returnthis._elements=this._getElements(),this._elements.length},getComplete:function(){returnthis._innerComplete},_setupListeners:function(){varshower=this._shower;this._showerListeners=shower.events.group().on("destroy",this.destroy,this),this._playerListeners=shower.player.events.group().on("activate",this._onSlideActivate,this).on("next",this._onNext,this).on("prev",this._onPrev,this);vartimerPlugin=globalShower.plugins.get(TIMER_PLUGIN_NAME,shower);timerPlugin?this._setupTimerPluginListener(timerPlugin):this._pluginsListeners=globalShower.plugins.events.group().on("add",function(e){e.get("name")===TIMER_PLUGIN_NAME&&(this._setupTimerPluginListener(),this._pluginsListeners.offAll())},this)},_setupTimerPluginListener:function(plugin){if(!plugin){globalShower.plugins.get(TIMER_PLUGIN_NAME,this._shower)}plugin.events.on("next",this._onNext,this,100)},_clearListeners:function(){this._showerListeners.offAll(),this._playerListeners.offAll(),this._pluginsListeners&&this._pluginsListeners.offAll()},_getElements:function(){varslideLayout=this._shower.player.getCurrentSlide().layout,slideElement=slideLayout.getElement();returnArray.prototype.slice.call(slideElement.querySelectorAll(this._elementsSelector))},_onNext:function(e){varelementsLength=this._elements.length,isSlideMode=this._shower.container.isSlideMode();isSlideMode&&elementsLength&&this._innerComplete<elementsLength&&(e.preventDefault(),this.next())},_onPrev:function(e){varelementsLength=this._elements.length,completed=(this._shower.container.isSlideMode(),this._innerComplete);elementsLength&&completed<elementsLength&&completed>0&&(e.preventDefault(),this.prev())},_go:function(){for(vari=0,k=this._elements.length;i<k;i++){varelement=this._elements[i];i<this._innerComplete?element.classList.add("active"):element.classList.remove("active")}},_onSlideActivate:function(){this._elements=this._getElements(),this._innerComplete=this._getInnerComplete()},_getInnerComplete:function(){returnthis._elements.filter(function(element){returnelement.classList.contains("active")}).length}}),provide(Next)}),shower.modules.require(["shower"],function(sh){sh.plugins.add("shower-next")}),shower.modules.define("shower-progress",["util.extend"],function(provide,extend){functionProgress(shower,options){options=options||{},this._shower=shower,this._playerListeners=null,this._element=null,this._elementSelector=options.selector||".progress";varshowerContainerElement=this._shower.container.getElement();this._element=showerContainerElement.querySelector(this._elementSelector),this._element&&(this._setupListeners(),this._element.setAttribute("role","progressbar"),this._element.setAttribute("aria-valuemin","0"),this._element.setAttribute("aria-valuemax","100"),this.updateProgress())}extend(Progress.prototype,{destroy:function(){this._clearListeners(),this._shower=null},updateProgress:function(){varslidesCount=this._shower.getSlidesCount(),currentSlideNumber=this._shower.player.getCurrentSlideIndex(),currentProgressValue=100/(slidesCount-1)*currentSlideNumber;this._element&&(this._element.style.width=currentProgressValue.toFixed(2)+"%",this._element.setAttribute("aria-valuenow",currentProgressValue.toFixed()),this._element.setAttribute("aria-valuetext","Slideshow Progress: "+currentProgressValue.toFixed()+"%"))},_setupListeners:function(){varshower=this._shower;this._showerListeners=shower.events.group().on("destroy",this.destroy,this),this._playerListeners=shower.player.events.group().on("activate",this._onSlideChange,this)},_clearListeners:function(){this._showerListeners&&this._showerListeners.offAll(),this._playerListeners&&this._playerListeners.offAll()},_onSlideChange:function(){this.updateProgress()}}),provide(Progress)}),shower.modules.require(["shower"],function(sh){sh.plugins.add("shower-progress")}),shower.modules.define("shower-timer",["shower","Emitter","util.extend"],function(provide,showerGlobal,EventEmitter,extend){functionTimer(shower){this.events=newEventEmitter,this._shower=shower,this._timer=null,this._showerListeners=null,this._playerListeners=null,this._pluginsListeners=null,this._setupListeners()}varPLUGIN_NAME_NEXT="shower-next";extend(Timer.prototype,{destroy:function(){this._clearTimer(),this._clearListeners(),this._shower=null},run:function(timing){this._initTimer(timing)},stop:function(){this._clearTimer()},_setupListeners:function(){varshower=this._shower;this.events.on("next",this._onNext,this),this._showerListeners=shower.events.group().on("destroy",this.destroy,this),this._playerListeners=shower.player.events.group().on("keydown",this._clearTimer,this).on("activate",this._onSlideActivate,this),this._nextPlugin=showerGlobal.plugins.get(PLUGIN_NAME_NEXT,shower),this._nextPlugin||(this._pluginsListeners=shower.plugins.events.group().on("pluginadd",function(e){e.get("name")===PLUGIN_NAME_NEXT&&(this._nextPlugin=shower.plugins.get(PLUGIN_NAME_NEXT),this._pluginsListeners.offAll())},this)),shower.player.getCurrentSlideIndex()!=-1&&this._onSlideActivate()},_clearListeners:function(){this._showerListeners.offAll(),this._playerListeners.offAll()},_onSlideActivate:function(){this._clearTimer();varcurrentSlide=this._shower.player.getCurrentSlide();if(this._shower.container.isSlideMode()&¤tSlide.state.get("visited")<2){vartiming=currentSlide.layout.getData("timing");timing&&/^(\d{1,2}:)?\d{1,3}$/.test(timing)&&(timing.indexOf(":")!==-1?(timing=timing.split(":"),timing=1e3*(60*parseInt(timing[0],10)+parseInt(timing[1],10))):timing=1e3*parseInt(timing,10),0!==timing&&this._initTimer(timing))}},_initTimer:function(timing){varevents=this.events,nextPlugin=(this._shower,this._nextPlugin);nextPlugin&&nextPlugin.getLength()&&nextPlugin.getLength()!=nextPlugin.getComplete()&&(timing/=nextPlugin.getLength()+1),this._timer=setInterval(function(){events.emit("next")},timing)},_clearTimer:function(){this._timer&&(clearInterval(this._timer),this._timer=null)},_onNext:function(){this._clearTimer(),this._shower.player.next()}}),provide(Timer)}),shower.modules.require(["shower"],function(sh){sh.plugins.add("shower-timer")}),shower.modules.define("shower-touch",["util.extend"],function(provide,extend){functionTouch(shower,options){options=options||{},this._shower=shower,this._setupListeners()}varINTERACTIVE_ELEMENTS=["VIDEO","AUDIO","A","BUTTON","INPUT"];extend(Touch.prototype,{destroy:function(){this._clearListeners(),this._shower=null},_setupListeners:function(){varshower=this._shower;this._showerListeners=shower.events.group().on("add",this._onSlideAdd,this),this._bindedTouchStart=this._onTouchStart.bind(this),this._bindedTouchMove=this._onTouchMove.bind(this),this._shower.getSlides().forEach(this._addTouchStartListener,this),document.addEventListener("touchmove",this._bindedTouchMove,!0)},_clearListeners:function(){this._showerListeners.offAll(),this._shower.getSlides().forEach(this._removeTouchStartListener,this),document.removeEventListener("touchmove",this._bindedTouchMove,!1)},_onSlideAdd:function(event){varslide=event.get("slide");this._addTouchStartListener(slide)},_addTouchStartListener:function(slide){varelement=slide.layout.getElement();element.addEventListener("touchstart",this._bindedTouchStart,!1)},_removeTouchStartListener:function(slide){varelement=slide.layout.getElement();element.removeEventListener("touchstart",this._bindedTouchStart,!1)},_onTouchStart:function(e){varx,shower=this._shower,isSlideMode=shower.container.isSlideMode(),element=e.target,slide=this._getSlideByElement(e.currentTarget);slide&&(isSlideMode&&!this._isInteractiveElement(element)&&(e.preventDefault(),x=e.touches[0].pageX,x>window.innerWidth/2?shower.player.next():shower.player.prev()),isSlideMode||slide.activate())},_onTouchMove:function(e){this._shower.container.isSlideMode()&&e.preventDefault()},_getSlideByElement:function(element){for(varslides=this._shower.getSlides(),result=null,i=0,k=slides.length;i<k;i++)if(element.id===slides[i].getId()){result=this._shower.get(i);break}returnresult},_isInteractiveElement:function(element){returnINTERACTIVE_ELEMENTS.some(function(elName){returnelName===element.tagName})}}),provide(Touch)}),shower.modules.require(["shower"],function(sh){sh.plugins.add("shower-touch")});
@@ -12,7 +12,7 @@ Get the Shower template where Material is already included. Download the [templa
...
@@ -12,7 +12,7 @@ Get the Shower template where Material is already included. Download the [templa
If you want to install Material separately you can install the package:
If you want to install Material separately you can install the package:
npm install shower-material
npm install @shower/material
## Features
## Features
...
@@ -36,7 +36,7 @@ If you want to adjust theme for your needs:
...
@@ -36,7 +36,7 @@ If you want to adjust theme for your needs:
1. Fork this repository and clone it to your local machine.
1. Fork this repository and clone it to your local machine.
2. Install dependencies: `npm install`.
2. Install dependencies: `npm install`.
3. Start a local server with watcher: `npm run dev` or just `gulp` if you have it installed globally.
3. Start a local server with watcher: `npm start`.
4. Edit your files and see changes in the opened browser.
4. Edit your files and see changes in the opened browser.
To take part in Material development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request.
To take part in Material development please read [contributing guidelines](CONTRIBUTING.md) first and [file an issue](https://github.com/shower/shower/issues/new) before sending any pull request.
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic.</p>
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic.</p>
<h2>Second Slide Header</h2>
<h2>Second Header</h2>
<p>Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.</p>
<p>Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.</p>
</section>
</section>
...
@@ -55,7 +55,7 @@
...
@@ -55,7 +55,7 @@
</section>
</section>
<sectionclass="slide">
<sectionclass="slide">
<h2>Quotes</h2>
<h2>Block Quotes</h2>
<blockquote>
<blockquote>
<p>Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.</p>
<p>Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.</p>
<li>Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.</li>
<li>Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.</li>
...
@@ -147,7 +147,7 @@
...
@@ -147,7 +147,7 @@
</section>
</section>
<sectionclass="slide">
<sectionclass="slide">
<h2>Two Columns</h2>
<h2>Two Text Columns</h2>
<divclass="columns two">
<divclass="columns two">
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch.</p>
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch.</p>
<p>American Apparel letterpress. Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa.</p>
<p>American Apparel letterpress. Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa.</p>
...
@@ -155,7 +155,7 @@
...
@@ -155,7 +155,7 @@
</section>
</section>
<sectionclass="slide">
<sectionclass="slide">
<h2>Two Lists</h2>
<h2>Two List Columns</h2>
<divclass="columns two">
<divclass="columns two">
<ul>
<ul>
<li>Occupy locavore, mustache you probably haven’t heard of them</li>
<li>Occupy locavore, mustache you probably haven’t heard of them</li>
<p>Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh.</p>
<p>Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh.</p>
<imgclass="place next right"height="100%"src="pictures/picture-3.svg"alt="Picture placeholder.">
<imgclass="place next right"height="100%"src="pictures/picture-3.svg"alt="Picture placeholder.">
</section>
</section>
<sectionclass="slide">
<h2>Spotlight</h2>
<p>Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical.</p>
<divclass="spotlight"style="
--spotlight-radius: 50%;
--spotlight-opacity: 0.2;
--spotlight-size: 256px;
--spotlight-top: 70px;
--spotlight-left: 280px;
"></div>
</section>
<sectionclass="slide">
<h2>Spotlight</h2>
<p>Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical.</p>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
...
@@ -12,7 +12,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
...
@@ -12,7 +12,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
Default theme for the [Shower](https://github.com/shower/shower/) presentation engine. Doesn’t include engine itself. [See it in action](http://shwr.me/shower/themes/ribbon/). Follow [@shower_me](https://twitter.com/shower_me) for support and updates, [file an issue](https://github.com/shower/shower/issues/new) if you have any.
Default theme for the [Shower](https://github.com/shower/shower/) presentation engine. Doesn’t include engine itself. [See it in action](https://shwr.me/shower/themes/ribbon/). Follow [@shower_me](https://twitter.com/shower_me) for support and updates, [file an issue](https://github.com/shower/shower/issues/new) if you have any.
## Usage
## Usage
Get the Shower template where Ribbon is already included. Download the [template archive](http://shwr.me/shower.zip) or install the package:
Get the Shower template where Ribbon is already included. Download the [template archive](https://shwr.me/shower.zip) or install the package:
npm install shower
npm install shower
If you want to install Ribbon separately you can install the package:
If you want to install Ribbon separately you can install the package:
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic.</p>
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic.</p>
<h2>Second Slide Header</h2>
<h2>Second Header</h2>
<p>Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.</p>
<p>Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid four loko quinoa.</p>
</section>
</section>
...
@@ -54,7 +54,7 @@
...
@@ -54,7 +54,7 @@
</section>
</section>
<sectionclass="slide">
<sectionclass="slide">
<h2>Quotes</h2>
<h2>Block Quotes</h2>
<blockquote>
<blockquote>
<p>Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.</p>
<p>Flannel bicycle rights locavore selfies skateboard. Authentic fanny pack paleo four loko bespoke. Artisan tattooed chia XOXO ennui, lomo disrupt 8-bit art party Tumblr scenester.</p>
<li>Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.</li>
<li>Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Hella sustainable messenger bag.</li>
...
@@ -146,7 +146,7 @@
...
@@ -146,7 +146,7 @@
</section>
</section>
<sectionclass="slide">
<sectionclass="slide">
<h2>Two Columns</h2>
<h2>Two Text Columns</h2>
<divclass="columns two">
<divclass="columns two">
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch.</p>
<p>Echo Park 8-bit sustainable umami deep v Kickstarter. DIY cliche typewriter brunch, Odd Future sriracha pickled aesthetic. Farm-to-table bespoke fingerstache, kale chips umami brunch.</p>
<p>American Apparel letterpress. Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa.</p>
<p>American Apparel letterpress. Whatever authentic disrupt, you probably haven’t heard of them direct trade mlkshk Etsy. Gluten-free roof party plaid American Apparel four loko quinoa.</p>
...
@@ -154,7 +154,7 @@
...
@@ -154,7 +154,7 @@
</section>
</section>
<sectionclass="slide">
<sectionclass="slide">
<h2>Two Lists</h2>
<h2>Two List Columns</h2>
<divclass="columns two">
<divclass="columns two">
<ul>
<ul>
<li>Occupy locavore, mustache you probably haven’t heard of them</li>
<li>Occupy locavore, mustache you probably haven’t heard of them</li>
<p>Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh.</p>
<p>Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh.</p>
<imgclass="place next right"height="100%"src="pictures/picture-3.svg"alt="Picture placeholder.">
<imgclass="place next right"height="100%"src="pictures/picture-3.svg"alt="Picture placeholder.">
</section>
</section>
<sectionclass="slide">
<h2>Spotlight</h2>
<p>Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical.</p>
<divclass="spotlight"style="
--spotlight-radius: 50%;
--spotlight-opacity: 0.2;
--spotlight-size: 256px;
--spotlight-top: 90px;
--spotlight-left: 290px;
"></div>
</section>
<sectionclass="slide">
<h2>Spotlight</h2>
<p>Retro meh brunch aesthetic Cosby sweater Shoreditch. Banksy Tumblr sriracha, flexitarian pug chia master cleanse vinyl wayfarers fanny pack bespoke Helvetica roof party. Messenger bag retro cred Portland next level. Yr stumptown Schlitz Carles deep v small batch. Echo Park 8-bit sustainable umami deep v Kickstarter. Hella sustainable messenger bag, leggings skateboard literally bicycle rights H₂0 mumblecore banh mi DIY VHS. Semiotics four loko street art asymmetrical.</p>
<divclass="spotlight"style="
--spotlight-radius: 0;
--spotlight-opacity: 0.2;
--spotlight-width: 1024px;
--spotlight-height: 50px;
--spotlight-top: 50px;
"></div>
</section>
<sectionclass="slide"data-timing="00:03">
<sectionclass="slide"data-timing="00:03">
<h2class="shout">Timer</h2>
<h2class="shout">Timed Slide</h2>
</section>
</section>
<sectionclass="slide">
<sectionclass="slide">
...
@@ -604,7 +630,7 @@
...
@@ -604,7 +630,7 @@
<ahref="https://github.com/shower/shower">Fork me on GitHub</a>
<ahref="https://github.com/shower/shower">Fork me on GitHub</a>