UNPKG

vue-cms-data

Version:

Applies lazy loading and routing to static cms/html data\

51 lines (50 loc) 1.99 kB
"use strict"; 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;