vue-cms-data
Version:
Applies lazy loading and routing to static cms/html data\
51 lines (50 loc) • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.lazyloadImages = exports.localizeLinks = void 0;
function localizeLinks(el, $vm) {
el.querySelectorAll('a').forEach(function (child) {
child.addEventListener('click', function ($event) {
var target = $event.target;
while (target && target.tagName !== 'A')
target = target.parentNode;
var altKey = $event.altKey, ctrlKey = $event.ctrlKey, metaKey = $event.metaKey, shiftKey = $event.shiftKey, button = $event.button, defaultPrevented = $event.defaultPrevented;
// don't handle with control keys
if (metaKey || altKey || ctrlKey || shiftKey)
return;
// don't handle when preventDefault called
if (defaultPrevented)
return;
// don't handle right clicks
if (button !== undefined && button !== 0)
return;
// don't handle same page links/anchors
var url = new URL(target.href);
var to = url.pathname;
// don't handle target attribute
if (target.getAttribute('target'))
return;
if (window.location.pathname !== to && target.href.includes(window.location.host) && $event.preventDefault) {
$event.preventDefault();
$vm.$router.push(to);
}
});
});
}
exports.localizeLinks = localizeLinks;
function lazyloadImages(el, vnode) {
el.querySelectorAll('img').forEach(function (child) {
var value;
if (child.getAttribute('data-src')) {
value = child.getAttribute('data-src');
}
else {
value = child.getAttribute('src');
}
vnode.context.$Lazyload.add(child, {
value: value,
modifiers: {},
}, vnode);
child.removeAttribute('src');
});
}
exports.lazyloadImages = lazyloadImages;