PageSourceSearch

https://ovd.info/themes/custom/oinfo/js/tooltips.js?tm4ikg

js ovd.info collected 2026-10-01 08:29:49 UTC 2,834 bytes, 77 lines download raw bytes

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.