{"version":3,"sources":["core/fullscreen.js","core/lightbox.js","components/lightbox.js","attributes/lightbox.js"],"names":["doc","dispatch","type","target","event","createEvent","initEvent","dispatchEvent","handleChange","e","stopPropagation","stopImmediatePropagation","w3","enabled","api","element","events","change","handleError","error","createResolver","method","resolve","reject","removeEventListener","TypeError","exit","addEventListener","setTimeout","vendor","pollute","apis","request","webkit","moz","ms","result","window","Promise","Element","prototype","this","apply","arguments","document","setup","overlay","createElement","class","classes","role","slider","prevButton","aria-label","nextButton","closeButton","appendChild","body","focusHandler","fullscreenHandler","overlayClickHandler","prevButtonClickHandler","nextButtonClickHandler","closeButtonClickHandler","touchstartHandler","touchendHandler","touchmoveHandler","showOverlay","index","dmx","lightbox","options","noscrollbars","documentElement","style","setProperty","isVisible","keydownHandler","currentIndex","loadImage","preloadNext","preloadPrev","updateOffset","fullscreen","requestFullscreen","classList","add","classPrefix","component","lastFocus","activeElement","initFocus","hideOverlay","vids","getElementsByTagName","i","length","paused","pause","removeProperty","remove","fullscreenElement","exitFullscreen","focus","display","showPrevImage","animation","showNextImage","currentGallery","images","prepareOverlay","gallery","setOptions","firstChild","removeChild","nodes","filter","node","exists","contains","updated","figureIds","captionIds","push","id","setAttribute","join","extend","transition","buttons","callback","container","loaded","getAttribute","href","autoplay","querySelector","play","parentNode","figure","url","spinner","title","test","img","onload","vid","controls","loop","loopvideo","src","canplay","transform","keyCode","indexOf","touch","count","startX","changedTouches","pageX","startY","pageY","done","preventDefault","x","y","tag","attrs","html","elm","Object","keys","forEach","name","innerHTML","call","register","console","warn","getGallery","addToGallery","newOptions","run","alert","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 if (/\\.(jpe?g|gif|png)$/i.test(node.href)) {\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 (/\\.(mp4)$/i.test(node.href)) {\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"]}