/* Put this file in /static/js/load-photoswipe.js Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/ */ /* Show an alert if this js file has been loaded twice */ if (window.loadphotoswipejs) { window.alert("You've loaded load-photoswipe.js twice. See https://github.com/liwenyip/hugo-easy-gallery/issues/6") } var loadphotoswipejs = 1 /* TODO: Make the share function work */ document.addEventListener('DOMContentLoaded', function() { var items = []; // array of slide objects that will be passed to PhotoSwipe() // for every figure element on the page: document.querySelectorAll('figure').forEach(function($figure, index) { if ($figure.className == 'no-photoswipe') return true; // ignore any figures where class="no-photoswipe" var $a = $figure.querySelector('a'), $img = $figure.querySelector('img'), $src = $a.href, $title = $img.alt, $msrc = $img.src; // if data-size on tag is set, read it and create an item if ($a.dataset.size) { var $size = $a.dataset.size.split('x'); var item = { src : $src, w : $size[0], h : $size[1], title : $title, msrc : $msrc }; console.log("Using pre-defined dimensions for " + $src); // if not, set temp default size then load the image to check actual size } else { var item = { src : $src, w : 400, // temp default size h : 300, // temp default size title : $title, msrc : $msrc }; console.log("Using default dimensions for " + $src); // load the image to check its dimensions // update the item as soon as w and h are known (check every 30ms) var img = new Image(); img.src = $src; var wait = setInterval(function() { var w = img.naturalWidth, h = img.naturalHeight; if (w && h) { clearInterval(wait); item.w = w; item.h = h; console.log("Got actual dimensions for " + img.src); // Update the figure parent div's max width. var $parentDiv = $figure.parentElement; if (!$parentDiv.hasOwnProperty("style")) { $figure.parentElement.style = "max-width: " + w + "px" } } }, 30); } // Save the index of this image then add it to the array items.push(item); // Event handler for click on a figure $figure.addEventListener('click', function(event) { event.preventDefault(); // prevent the normal behaviour i.e. load the hyperlink // Get the PSWP element and initialize it with the desired options var $pswp = document.querySelector('.pswp'); var options = { index: index, bgOpacity: 0.8, showHideOpacity: true, showHideAnimationType: 'zoom', focus: 'false', history: 'false' } new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options).init(); }, false); }); }, false);