blog/themes/next/source/js/third-party/fancybox.js

36 lines
1.1 KiB
JavaScript

/* global Fancybox */
document.addEventListener('page:loaded', () => {
/**
* Wrap images with fancybox.
*/
document.querySelectorAll('.post-body :not(a) > img, .post-body > img').forEach(image => {
const imageLink = image.dataset.src || image.src;
const imageWrapLink = document.createElement('a');
imageWrapLink.classList.add('fancybox');
imageWrapLink.href = imageLink;
imageWrapLink.setAttribute('itemscope', '');
imageWrapLink.setAttribute('itemtype', 'http://schema.org/ImageObject');
imageWrapLink.setAttribute('itemprop', 'url');
let dataFancybox = 'default';
if (image.closest('.post-gallery') !== null) {
dataFancybox = 'gallery';
} else if (image.closest('.group-picture') !== null) {
dataFancybox = 'group';
}
imageWrapLink.dataset.fancybox = dataFancybox;
const imageTitle = image.title || image.alt;
if (imageTitle) {
imageWrapLink.title = imageTitle;
// Make sure img captions will show correctly in fancybox
imageWrapLink.dataset.caption = imageTitle;
}
image.wrap(imageWrapLink);
});
Fancybox.bind('[data-fancybox]');
});