PageSourceSearch

https://yarmarka-shapok.ru/catalog/view/javascript/yarmarka-contact-widget.js?v=20261006-global

js yarmarka-shapok.ru collected 2026-10-10 00:22:58 UTC 2,055 bytes, 43 lines download raw bytes

1(function () {
2  'use strict';
3  var widget = document.querySelector('[data-yh-contact-widget]');
4  if (!widget) return;
5  var trigger = widget.querySelector('.yh-contact-widget__toggle');
6  var panel = widget.querySelector('.yh-contact-widget__panel');
7  function setOpen(open, restoreFocus) {
8    widget.classList.toggle('is-open', open);
9    trigger.setAttribute('aria-expanded', String(open));
10    trigger.setAttribute('aria-label', open ? trigger.dataset.closeLabel : trigger.dataset.openLabel);
11    panel.inert = !open;
12    panel.setAttribute('aria-hidden', String(!open));
13    if (!open) {
14      if (restoreFocus) trigger.focus({ preventScroll: true });
15    }
16  }
17  trigger.addEventListener('click', function () { setOpen(!widget.classList.contains('is-open'), false); });
18  widget.addEventListener('keydown', function (event) {
19    if (event.key === 'Escape') { setOpen(false, true); event.preventDefault(); }
20  });
21  document.addEventListener('pointerdown', function (event) {
22    if (!widget.contains(event.target)) setOpen(false, false);
23  });
24  widget.addEventListener('focusout', function () {
25    window.setTimeout(function () { if (!widget.contains(document.activeElement)) setOpen(false, false); }, 0);
26  });
27  document.body.appendChild(widget);
28  setOpen(false, false);
29  function updateVisibility() {
30    var maxScroll = Math.max(0, document.documentElement.scrollHeight - window.innerHeight);
31    var threshold = maxScroll >= 3000 ? 3000 : maxScroll / 2;
32    var visible = window.pageYOffset >= threshold;
33    if (!visible && widget.classList.contains('is-open')) setOpen(false, false);
34    widget.hidden = !visible;
35  }
36  window.addEventListener('scroll', updateVisibility, { passive: true });
37  window.addEventListener('pageshow', updateVisibility);
38  window.addEventListener('resize', updateVisibility);
39  window.addEventListener('load', updateVisibility);
40  if (window.ResizeObserver) new ResizeObserver(updateVisibility).observe(document.body);
41  updateVisibility();
42  document.body.classList.add('yh-contact-widget-ready');
43})();

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.