{"version":3,"sources":["core/fullscreen.js","core/lightbox.js","components/lightbox.js","attributes/lightbox.js"],"names":["doc","api","vendor","apis","w3","enabled","element","request","exit","events","change","error","webkit","moz","ms","dispatch","type","target","event","createEvent","initEvent","dispatchEvent","createResolver","method","resolve","reject","addEventListener","removeEventListener","TypeError","setTimeout","e","stopPropagation","stopImmediatePropagation","result","window","Promise","Element","prototype","this","apply","arguments","document","overlay","slider","prevButton","nextButton","closeButton","lastFocus","currentGallery","currentIndex","dmx","lightbox","count","gallery","options","fullscreen","noscrollbars","autoplay","loopvideo","buttons","animation","spinner","classPrefix","touch","hideOverlay","isVisible","vids","getElementsByTagName","i","length","paused","pause","documentElement","style","removeProperty","body","keydownHandler","classList","remove","fullscreenElement","exitFullscreen","component","focus","display","showPrevImage","updateOffset","preloadPrev","add","showNextImage","images","preloadNext","index","loadImage","initFocus","callback","container","node","nodes","loaded","getAttribute","href","querySelector","play","parentNode","removeChild","figure","createElement","id","url","class","classes","appendChild","title","hasAttribute","pathname","URL","test","img","onload","setAttribute","vid","controls","loop","src","canplay","transform","setProperty","focusHandler","contains","fullscreenHandler","keyCode","overlayClickHandler","indexOf","prevButtonClickHandler","nextButtonClickHandler","closeButtonClickHandler","touchstartHandler","startX","changedTouches","pageX","startY","pageY","touchendHandler","done","touchmoveHandler","preventDefault","x","y","tag","attrs","html","elm","Object","keys","forEach","name","innerHTML","join","call","register","console","warn","getGallery","addToGallery","push","updated","setOptions","newOptions","extend","run","alert","role","transition","firstChild","filter","exists","figureIds","captionIds","prepareOverlay","requestFullscreen","activeElement","showOverlay","Component","attributes","Boolean","default","String","show","Event","hide","render","BaseComponent","update","props","Attribute","attr","argument"],"mappings":"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","file":"../dmxLightbox/dmxLightbox.js","sourcesContent":["(function ( doc ) {\r\n\t// Use JavaScript strict mode\r\n\t\"use strict\";\r\n\r\n\t/*global Element, Promise */\r\n\r\n\tvar pollute = true,\r\n\t\tapi,\r\n\t\tvendor,\r\n\t\tapis = {\r\n\t\t\t// http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\r\n\t\t\tw3: {\r\n\t\t\t\tenabled: \"fullscreenEnabled\",\r\n\t\t\t\telement: \"fullscreenElement\",\r\n\t\t\t\trequest: \"requestFullscreen\",\r\n\t\t\t\texit: \"exitFullscreen\",\r\n\t\t\t\tevents: {\r\n\t\t\t\t\tchange: \"fullscreenchange\",\r\n\t\t\t\t\terror: \"fullscreenerror\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\twebkit: {\r\n\t\t\t\tenabled: \"webkitFullscreenEnabled\",\r\n\t\t\t\telement: \"webkitCurrentFullScreenElement\",\r\n\t\t\t\trequest: \"webkitRequestFullscreen\",\r\n\t\t\t\texit: \"webkitExitFullscreen\",\r\n\t\t\t\tevents: {\r\n\t\t\t\t\tchange: \"webkitfullscreenchange\",\r\n\t\t\t\t\terror: \"webkitfullscreenerror\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmoz: {\r\n\t\t\t\tenabled: \"mozFullScreenEnabled\",\r\n\t\t\t\telement: \"mozFullScreenElement\",\r\n\t\t\t\trequest: \"mozRequestFullScreen\",\r\n\t\t\t\texit: \"mozCancelFullScreen\",\r\n\t\t\t\tevents: {\r\n\t\t\t\t\tchange: \"mozfullscreenchange\",\r\n\t\t\t\t\terror: \"mozfullscreenerror\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tms: {\r\n\t\t\t\tenabled: \"msFullscreenEnabled\",\r\n\t\t\t\telement: \"msFullscreenElement\",\r\n\t\t\t\trequest: \"msRequestFullscreen\",\r\n\t\t\t\texit: \"msExitFullscreen\",\r\n\t\t\t\tevents: {\r\n\t\t\t\t\tchange: \"MSFullscreenChange\",\r\n\t\t\t\t\terror: \"MSFullscreenError\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tw3 = apis.w3;\r\n\r\n\t// Loop through each vendor's specific API\r\n\tfor (vendor in apis) {\r\n\t\t// Check if document has the \"enabled\" property\r\n\t\tif (apis[vendor].enabled in doc) {\r\n\t\t\t// It seems this browser support the fullscreen API\r\n\t\t\tapi = apis[vendor];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction dispatch( type, target ) {\r\n\t\tvar event = doc.createEvent( \"Event\" );\r\n\r\n\t\tevent.initEvent( type, true, false );\r\n\t\ttarget.dispatchEvent( event );\r\n\t} // end of dispatch()\r\n\r\n\tfunction handleChange( e ) {\r\n\t\te.stopPropagation();\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\t// Recopy the enabled and element values\r\n\t\tdoc[w3.enabled] = doc[api.enabled];\r\n\t\tdoc[w3.element] = doc[api.element];\r\n\r\n\t\tdispatch( w3.events.change, e.target );\r\n\t} // end of handleChange()\r\n\r\n\tfunction handleError( e ) {\r\n\t\tdispatch( w3.events.error, e.target );\r\n\t} // end of handleError()\r\n\r\n\t// Prepare a resolver to use for the requestFullscreen and exitFullscreen's promises\r\n\t// Use a closure since we need to check which method was used\r\n\tfunction createResolver(method) {\r\n\t\treturn function resolver(resolve, reject) {\r\n\t\t\t// Reject the promise if asked to exitFullscreen and there is no element currently in fullscreen\r\n\t\t\tif (method === w3.exit && !doc[api.element]) {\r\n\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\treject(new TypeError());\r\n\t\t\t\t}, 1);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// When receiving an internal fullscreenchange event, fulfill the promise\r\n\t\t\tfunction change() {\r\n\t\t\t\tresolve();\r\n\t\t\t\tdoc.removeEventListener(api.events.change, change, false);\r\n\t\t\t}\r\n\r\n\t\t\t// When receiving an internal fullscreenerror event, reject the promise\r\n\t\t\tfunction error() {\r\n\t\t\t\treject(new TypeError());\r\n\t\t\t\tdoc.removeEventListener(api.events.error, error, false);\r\n\t\t\t}\r\n\r\n\t\t\tdoc.addEventListener(api.events.change, change, false);\r\n\t\t\tdoc.addEventListener(api.events.error, error, false);\r\n\t\t};\r\n\t}\r\n\r\n\t// Pollute only if the API doesn't already exists\r\n\tif (pollute && !(w3.enabled in doc) && api) {\r\n\t\t// Add listeners for fullscreen events\r\n\t\tdoc.addEventListener( api.events.change, handleChange, false );\r\n\t\tdoc.addEventListener( api.events.error, handleError, false );\r\n\r\n\t\t// Copy the default value\r\n\t\tdoc[w3.enabled] = doc[api.enabled];\r\n\t\tdoc[w3.element] = doc[api.element];\r\n\r\n\t\t// Match the reference for exitFullscreen\r\n\t\tdoc[w3.exit] = function() {\r\n\t\t\tvar result = doc[api.exit]();\r\n\t\t\treturn !result && window.Promise ? new Promise(createResolver(w3.exit)) : result;\r\n\t\t};\r\n\r\n\t\t// Add the request method to the Element's prototype\r\n\t\tElement.prototype[w3.request] = function () {\r\n\t\t\tvar result = this[api.request].apply( this, arguments );\r\n\t\t\treturn !result && window.Promise ? new Promise(createResolver(w3.request)) : result;\r\n\t\t};\r\n\t}\r\n\r\n\t// Return the API found (or undefined if the Fullscreen API is unavailable)\r\n\treturn api;\r\n\r\n}( document ));\r\n","(function() {\r\n\r\n 'use strict';\r\n\r\n dmx.lightbox = {\r\n count: 0,\r\n gallery: {},\r\n options: {\r\n fullscreen: false,\r\n noscrollbars: false,\r\n autoplay: false,\r\n loopvideo: false,\r\n buttons: 'auto',\r\n animation: 'slide',\r\n spinner: 'Spinner1'\r\n }\r\n };\r\n\r\n var overlay, slider, prevButton, nextButton, closeButton, lastFocus, currentGallery, currentIndex;\r\n var classPrefix = 'dmxLightbox';\r\n var touch = { count: 0 };\r\n\r\n dmx.lightbox.register = function(component) {\r\n if (dmx.lightbox.component) {\r\n return console.warn('Only 1 lightbox component should be used on the page!');\r\n }\r\n dmx.lightbox.component = component;\r\n };\r\n\r\n dmx.lightbox.getGallery = function(name) {\r\n if (!dmx.lightbox.gallery[name]) {\r\n dmx.lightbox.gallery[name] = {\r\n nodes: [],\r\n images: []\r\n };\r\n }\r\n\r\n return dmx.lightbox.gallery[name];\r\n };\r\n\r\n dmx.lightbox.addToGallery = function(name, node) {\r\n var gallery = dmx.lightbox.getGallery(name);\r\n if (gallery.nodes.indexOf(node) === -1) {\r\n gallery.nodes.push(node);\r\n gallery.updated = true;\r\n }\r\n };\r\n\r\n dmx.lightbox.setOptions = function(newOptions) {\r\n dmx.lightbox.options = dmx.extend(dmx.lightbox.options, newOptions);\r\n };\r\n\r\n dmx.lightbox.run = function(name, node) {\r\n var gallery = dmx.lightbox.gallery[name];\r\n\r\n if (!gallery) {\r\n return alert('Gallery ' + name + ' does not exist.');\r\n }\r\n\r\n if (!overlay) {\r\n setup();\r\n }\r\n\r\n prepareOverlay(gallery);\r\n\r\n showOverlay(gallery.nodes.indexOf(node));\r\n };\r\n\r\n function setup() {\r\n overlay = createElement('div', {\r\n class: classes('Overlay'),\r\n role: 'dialog'\r\n });\r\n\r\n slider = createElement('div', {\r\n class: classes('Slider')\r\n });\r\n\r\n prevButton = createElement('button', {\r\n class: classes('Button', 'Prev'),\r\n type: 'button',\r\n 'aria-label': 'Previous'\r\n });\r\n\r\n nextButton = createElement('button', {\r\n class: classes('Button', 'Next'),\r\n type: 'button',\r\n 'aria-label': 'Next'\r\n });\r\n\r\n closeButton = createElement('button', {\r\n class: classes('Button', 'Close'),\r\n type: 'button',\r\n 'aria-label': 'Close'\r\n });\r\n\r\n overlay.appendChild(slider);\r\n overlay.appendChild(prevButton);\r\n overlay.appendChild(nextButton);\r\n overlay.appendChild(closeButton);\r\n\r\n document.body.appendChild(overlay);\r\n\r\n document.addEventListener('focus', focusHandler, true);\r\n document.addEventListener('fullscreenchange', fullscreenHandler);\r\n\r\n overlay.addEventListener('click', overlayClickHandler);\r\n prevButton.addEventListener('click', prevButtonClickHandler);\r\n nextButton.addEventListener('click', nextButtonClickHandler);\r\n closeButton.addEventListener('click', closeButtonClickHandler);\r\n\r\n overlay.addEventListener('touchstart', touchstartHandler);\r\n overlay.addEventListener('touchend', touchendHandler);\r\n overlay.addEventListener('touchmove', touchmoveHandler);\r\n };\r\n\r\n function showOverlay(index) {\r\n if (dmx.lightbox.options.noscrollbars) {\r\n document.documentElement.style.setProperty('overflow', 'hidden');\r\n document.body.style.setProperty('overflow', 'scroll');\r\n }\r\n\r\n if (isVisible()) {\r\n return;\r\n }\r\n\r\n document.addEventListener('keydown', keydownHandler);\r\n\r\n currentIndex = index;\r\n\r\n loadImage(index, function() {\r\n preloadNext(index);\r\n preloadPrev(index);\r\n });\r\n\r\n updateOffset(index);\r\n\r\n overlay.style.setProperty('display', 'block');\r\n\r\n if (dmx.lightbox.options.fullscreen && overlay.requestFullscreen) {\r\n overlay.requestFullscreen();\r\n }\r\n\r\n setTimeout(function() {\r\n overlay.classList.add(classPrefix + 'Visible');\r\n if (dmx.lightbox.component) {\r\n dmx.lightbox.component.dispatchEvent('show');\r\n }\r\n }, 50);\r\n\r\n lastFocus = document.activeElement;\r\n initFocus();\r\n }\r\n\r\n function hideOverlay() {\r\n if (!isVisible()) {\r\n return;\r\n }\r\n\r\n // pause video\r\n var vids = overlay.getElementsByTagName('video');\r\n for (var i = 0; i < vids.length; i++) {\r\n if (!vids[i].paused) {\r\n vids[i].pause();\r\n }\r\n }\r\n\r\n if (dmx.lightbox.options.noscrollbars) {\r\n document.documentElement.style.removeProperty('overflow');\r\n document.body.style.removeProperty('overflow');\r\n }\r\n\r\n document.removeEventListener('keydown', keydownHandler);\r\n\r\n overlay.classList.remove(classPrefix + 'Visible');\r\n setTimeout(function() {\r\n overlay.style.removeProperty('display');\r\n if (document.fullscreenElement) {\r\n document.exitFullscreen();\r\n }\r\n if (dmx.lightbox.component) {\r\n dmx.lightbox.component.dispatchEvent('hide');\r\n }\r\n }, 500);\r\n lastFocus.focus();\r\n }\r\n\r\n function isVisible() {\r\n return overlay.style.display === 'block';\r\n }\r\n\r\n function exitFullscreen() {\r\n document.exitFullscreen();\r\n }\r\n\r\n function showPrevImage() {\r\n if (currentIndex >= 1) {\r\n currentIndex--;\r\n updateOffset();\r\n preloadPrev(currentIndex);\r\n } else if (dmx.lightbox.options.animation !== 'none') {\r\n slider.classList.add(classPrefix + 'BounceLeft');\r\n setTimeout(function() {\r\n slider.classList.remove(classPrefix + 'BounceLeft');\r\n }, 400);\r\n }\r\n }\r\n\r\n function showNextImage() {\r\n if (currentIndex <= currentGallery.images.length - 2) {\r\n currentIndex++;\r\n updateOffset();\r\n preloadNext(currentIndex);\r\n } else if (dmx.lightbox.options.animation !== 'none') {\r\n slider.classList.add(classPrefix + 'BounceRight');\r\n setTimeout(function() {\r\n slider.classList.remove(classPrefix + 'BounceRight');\r\n }, 400);\r\n }\r\n }\r\n\r\n function preloadPrev(index) {\r\n loadImage(index - 1, function() {\r\n preloadPrev(index - 1);\r\n })\r\n }\r\n\r\n function preloadNext(index) {\r\n loadImage(index + 1, function() {\r\n preloadNext(index + 1);\r\n })\r\n }\r\n\r\n function prepareOverlay(gallery) {\r\n currentGallery = gallery;\r\n\r\n setOptions();\r\n\r\n while (slider.firstChild) {\r\n slider.removeChild(slider.firstChild);\r\n }\r\n\r\n gallery.nodes = gallery.nodes.filter(function(node) {\r\n var exists = document.body.contains(node);\r\n if (!exists) gallery.updated = true;\r\n return exists;\r\n });\r\n\r\n if (gallery.updated) {\r\n gallery.images = [];\r\n gallery.updated = false;\r\n }\r\n\r\n var figureIds = [];\r\n var captionIds = [];\r\n\r\n for (var i = 0; i < gallery.nodes.length; i++) {\r\n if (!gallery.images[i]) {\r\n gallery.images.push(createElement('div', {\r\n id: classPrefix + 'Image' + i,\r\n class: classPrefix + 'Image'\r\n }));\r\n }\r\n\r\n figureIds.push(classPrefix + 'Figure' + i);\r\n captionIds.push(classPrefix + 'Caption' + i);\r\n slider.appendChild(gallery.images[i]);\r\n }\r\n\r\n overlay.setAttribute('aria-labelledby', figureIds.join(' '));\r\n overlay.setAttribute('aria-describedby', captionIds.join(' '));\r\n }\r\n\r\n function setOptions() {\r\n var options = dmx.extend(dmx.lightbox.options);\r\n\r\n slider.style.transition = (options.animation === 'fade' ? 'opacity .4s ease' : options.animation === 'slide' ? '' : 'none');\r\n\r\n if (options.buttons === 'auto' && ('ontouchstart' in window || currentGallery.nodes.length === 1)) {\r\n options.buttons = 'hide';\r\n }\r\n\r\n prevButton.style.display = nextButton.style.display = (options.buttons === 'hide' ? 'none' : '');\r\n }\r\n\r\n function initFocus() {\r\n if (dmx.lightbox.options.buttons !== 'hide') {\r\n prevButton.focus();\r\n } else {\r\n closeButton.focus();\r\n }\r\n }\r\n\r\n function loadImage(index, callback) {\r\n var container = currentGallery.images[index];\r\n var node = currentGallery.nodes[index];\r\n\r\n if (!container || !node) {\r\n return;\r\n }\r\n\r\n var loaded = container.getElementsByTagName('figure')[0];\r\n\r\n if (loaded && loaded.getAttribute('url') == node.href) {\r\n if (callback) callback();\r\n if (dmx.lightbox.options.autoplay) {\r\n var vids = overlay.getElementsByTagName('video');\r\n for (var i = 0; i < vids.length; i++) {\r\n if (vids[i] == container.querySelector('video')) {\r\n vids[i].play();\r\n } else if (!vids[i].paused) {\r\n vids[i].pause();\r\n }\r\n }\r\n }\r\n return\r\n }\r\n\r\n if (loaded) {\r\n loaded.parentNode.removeChild(loaded);\r\n }\r\n\r\n var figure = createElement('figure', {\r\n id: classPrefix + 'Figure' + index,\r\n url: node.href\r\n });\r\n\r\n var spinner = createElement('div', {\r\n class: classes('Spinner', dmx.lightbox.options.spinner)\r\n });\r\n\r\n figure.appendChild(spinner);\r\n\r\n if (node.title) {\r\n figure.appendChild(createElement('figcaption', {\r\n id: classPrefix + 'Caption' + index\r\n }, node.title));\r\n }\r\n\r\n var type = 'image'; // default to image\r\n if (node.hasAttribute('data-type')) {\r\n type = node.getAttribute('data-type');\r\n } else {\r\n var pathname = node.href;\r\n if (window.URL) {\r\n pathname = (new URL(node.href)).pathname;\r\n }\r\n if (/\\.(avi|mp4|mov|og[mvg]|webm)$/i.test(pathname)) {\r\n type = 'video';\r\n }\r\n }\r\n\r\n\r\n if (type == 'image') {\r\n var img = createElement('img');\r\n img.onload = function() {\r\n figure.removeChild(spinner);\r\n if (callback) callback();\r\n };\r\n img.setAttribute('src', node.href);\r\n figure.appendChild(img);\r\n } else if (type == 'video') {\r\n var vid = createElement('video');\r\n vid.controls = true;\r\n vid.loop = dmx.lightbox.options.loopvideo;\r\n var src = createElement('source', {\r\n src: node.href\r\n });\r\n vid.addEventListener('canplay', function canplay() {\r\n vid.removeEventListener('canplay', canplay);\r\n figure.removeChild(spinner);\r\n if (callback) callback();\r\n if (dmx.lightbox.options.autoplay && currentIndex === index) {\r\n vid.play();\r\n }\r\n });\r\n vid.appendChild(src);\r\n figure.appendChild(vid);\r\n } else {\r\n figure.appendChild(createElement('div', {}, 'Url not supported'))\r\n figure.removeChild(spinner);\r\n if (callback) callback();\r\n }\r\n\r\n container.appendChild(figure);\r\n }\r\n\r\n function updateOffset() {\r\n var transform = 'translate3d(' + (-currentIndex * 100) + '%,0,0)';\r\n\r\n if (dmx.lightbox.options.animation === 'fade') {\r\n slider.style.setProperty('opacity', 0);\r\n setTimeout(function() {\r\n slider.style.setProperty('transform', transform);\r\n slider.style.setProperty('opacity', 1);\r\n }, 400);\r\n } else {\r\n slider.style.setProperty('transform', transform);\r\n }\r\n }\r\n\r\n // Event handlers\r\n\r\n function focusHandler(event) {\r\n if (isVisible() && !overlay.contains(event.target)) {\r\n event.stopPropagation();\r\n initFocus();\r\n }\r\n }\r\n\r\n function fullscreenHandler(event) {\r\n if (!document.fullscreenElement) {\r\n hideOverlay();\r\n }\r\n }\r\n\r\n function keydownHandler(event) {\r\n switch (event.keyCode) {\r\n case 37: // Left arrow\r\n showPrevImage();\r\n break;\r\n case 39: // Right arrow\r\n showNextImage();\r\n break;\r\n case 27: // Esc\r\n hideOverlay();\r\n break;\r\n }\r\n }\r\n\r\n function overlayClickHandler(event) {\r\n if (event.target.id.indexOf('dmxLightboxImage') !== -1) {\r\n hideOverlay();\r\n }\r\n }\r\n\r\n function prevButtonClickHandler(event) {\r\n event.stopPropagation();\r\n showPrevImage();\r\n }\r\n\r\n function nextButtonClickHandler(event) {\r\n event.stopPropagation();\r\n showNextImage();\r\n }\r\n\r\n function closeButtonClickHandler(event) {\r\n event.stopPropagation();\r\n hideOverlay();\r\n }\r\n\r\n function touchstartHandler(event) {\r\n touch.count++;\r\n touch.startX = event.changedTouches[0].pageX;\r\n touch.startY = event.changedTouches[0].pageY;\r\n }\r\n\r\n function touchendHandler(event) {\r\n touch.count--;\r\n touch.done = false;\r\n }\r\n\r\n function touchmoveHandler(event) {\r\n if (touch.done || touch.count > 1) return;\r\n\r\n event.preventDefault();\r\n\r\n var x = event.changedTouches[0].pageX;\r\n var y = event.changedTouches[0].pageY;\r\n\r\n if (x - touch.startX > 40) {\r\n touch.done = true;\r\n showPrevImage();\r\n } else if (touch.startX - x > 40) {\r\n touch.done = true;\r\n showNextImage();\r\n } else if (touch.startY - y > 100) {\r\n hideOverlay();\r\n }\r\n }\r\n\r\n // Helper methods\r\n\r\n function createElement(tag, attrs, html) {\r\n var elm = document.createElement(tag);\r\n if (attrs) {\r\n Object.keys(attrs).forEach(function(name) {\r\n elm.setAttribute(name, attrs[name]);\r\n });\r\n }\r\n if (html) {\r\n elm.innerHTML = html;\r\n }\r\n return elm;\r\n }\r\n\r\n function classes() {\r\n return classPrefix + [].join.call(arguments, ' ' + classPrefix);\r\n }\r\n\r\n})();\r\n","dmx.Component('lightbox', {\r\n\r\n attributes: {\r\n fullscreen: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n noscrollbars: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n autoplay: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n loopvideo: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n buttons: {\r\n type: String,\r\n default: 'auto' // auto, show, hide (auto is hidden on touch enabled devices and galleries with single image)\r\n },\r\n\r\n animation: {\r\n type: String,\r\n default: 'slide' // slide, fade, none\r\n },\r\n\r\n spinner: {\r\n type: String,\r\n default: 'Spinner1' // Spinner1, Spinner2, Spinner3, Spinner4, Spinner5, Spinner6, Spinner7, Spinner8\r\n }\r\n },\r\n\r\n events: {\r\n show: Event,\r\n hide: Event\r\n },\r\n\r\n render: function(node) {\r\n dmx.lightbox.register(this);\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n },\r\n\r\n update: function(props) {\r\n dmx.lightbox.setOptions(this.props);\r\n }\r\n\r\n});\r\n","dmx.Attribute('lightbox', 'mounted', function(node, attr) {\r\n var name = attr.argument || 'dmxImage' + (++dmx.lightbox.count);\r\n\r\n dmx.lightbox.addToGallery(name, node);\r\n\r\n node.addEventListener('click', function(event) {\r\n event.preventDefault();\r\n dmx.lightbox.run(name, node);\r\n });\r\n});\r\n"]}