1/** 2* DO NOT EDIT THIS FILE. 3* See the following change record for more information, 4* https://www.drupal.org/node/2815083 5* @preserve 6**/ 7document.addEventListener('DOMContentLoaded', function () { 8 var tooltips = document.querySelectorAll('[data-text]'); 9 if (tooltips) { 10 var modal = document.createElement('div'); 11 modal.className = 'modal-tooltip'; 12 modal.style.display = 'none'; 13 modal.innerHTML = "\n <div class=\"modal-tooltip-content\"></div>\n <div class=\"modal-tooltip-close\"></div>\n "; 14 document.body.appendChild(modal); 15 function showTooltipModal(tooltip) { 16 removeActiveTools(); 17 var tooltipText = tooltip.getAttribute('data-text'); 18 var sanitizedTooltipText = sanitizeHTML(tooltipText); 19 var tooltipContent = document.querySelector('.modal-tooltip-content'); 20 var tooltipParent = tooltip.closest('.field--type-text-long'); 21 tooltipContent.innerHTML = sanitizedTooltipText; 22 tooltip.classList.add('active'); 23 modal.style.display = 'block'; 24 modal.style.position = 'absolute'; 25 modal.style.top = getElementPageOffset(tooltip).top + 'px'; 26 if (window.innerWidth >= 76.25 * parseFloat(getComputedStyle(document.documentElement).fontSize)) { 27 modal.style.left = getElementPageOffset(tooltipParent).left + tooltipParent.offsetWidth + 'px'; 28 } 29 } 30 var _loop = function _loop(i) { 31 tooltips[i].addEventListener('click', function () { 32 requestAnimationFrame(function () { 33 showTooltipModal(tooltips[i]); 34 }); 35 }); 36 }; 37 for (var i = 0; i < tooltips.length; i++) { 38 _loop(i); 39 } 40 var closeModal = document.querySelector('.modal-tooltip-close'); 41 closeModal.addEventListener('click', function () { 42 modal.style.display = 'none'; 43 removeActiveTools(); 44 }); 45 document.addEventListener('click', function (e) { 46 var isTooltip = e.target.closest('[data-text]'); 47 var isModal = e.target.closest('.modal-tooltip'); 48 if (!isTooltip && !isModal) { 49 modal.style.display = 'none'; 50 removeActiveTools(); 51 } 52 }); 53 function removeActiveTools() { 54 var activeTooltips = document.querySelectorAll('[data-text].active'); 55 for (var _i = 0; _i < activeTooltips.length; _i++) { 56 activeTooltips[_i].classList.remove('active'); 57 } 58 } 59 function getElementPageOffset(element) { 60 var offsetTop = 0; 61 var offsetLeft = 0; 62 while (element) { 63 offsetTop += element.offsetTop; 64 offsetLeft += element.offsetLeft; 65 element = element.offsetParent; 66 } 67 return { 68 top: offsetTop, 69 left: offsetLeft 70 }; 71 } 72 function sanitizeHTML(text) { 73 var sanitizedText = text.replace(/<\/?script>|<\/?iframe>/gi, ''); 74 return sanitizedText; 75 } 76 } 77});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.