PageSourceSearch

https://akks.no/wp-content/themes/flex/assets/js/a11y-toggle.js?ver=5.8.17

js akks.no collected 2026-10-04 13:33:41 UTC 2,460 bytes, 85 lines download raw bytes

1(function () {
2  'use strict';
3
4  var internalId = 0;
5  var togglesMap = {};
6  var targetsMap = {};
7
8  function $ (selector) {
9    return Array.prototype.slice.call(document.querySelectorAll(selector));
10  }
11
12  function getClosestToggle (element) {
13    if (element.closest) {
14      return element.closest('[data-a11y-toggle]');
15    }
16
17    while (element) {
18      if (element.nodeType === 1 && element.hasAttribute('data-a11y-toggle')) {
19        return element;
20      }
21
22      element = element.parentNode;
23    }
24
25    return null;
26  }
27
28  function handleToggle (toggle) {
29    var target = toggle && targetsMap[toggle.getAttribute('aria-controls')];
30
31    if (!target) {
32      return false;
33    }
34
35    var toggles = togglesMap['#' + target.id];
36    var isExpanded = target.getAttribute('aria-hidden') === 'false';
37
38    target.setAttribute('aria-hidden', isExpanded);
39    toggles.forEach(function (toggle) {
40      toggle.setAttribute('aria-expanded', !isExpanded);
41    });
42  }
43
44  document.addEventListener('DOMContentLoaded', function () {
45    togglesMap = $('[data-a11y-toggle]').reduce(function (acc, toggle) {
46      var selector = '#' + toggle.getAttribute('data-a11y-toggle');
47      acc[selector] = acc[selector] || [];
48      acc[selector].push(toggle);
49      return acc;
50    }, togglesMap);
51
52    var targets = Object.keys(togglesMap);
53    targets.length && $(targets).forEach(function (target) {
54      var toggles = togglesMap['#' + target.id];
55      var isExpanded = target.hasAttribute('data-a11y-toggle-open');
56      var labelledby = [];
57
58      toggles.forEach(function (toggle) {
59        toggle.id || toggle.setAttribute('id', 'a11y-toggle-' + internalId++);
60        toggle.setAttribute('aria-controls', target.id);
61        toggle.setAttribute('aria-expanded', isExpanded);
62        labelledby.push(toggle.id);
63      });
64
65      target.setAttribute('aria-hidden', !isExpanded);
66      target.hasAttribute('aria-labelledby') || target.setAttribute('aria-labelledby', labelledby.join(' '));
67
68      targetsMap[target.id] = target;
69    });
70  });
71
72  document.addEventListener('click', function (event) {
73    var toggle = getClosestToggle(event.target);
74    handleToggle(toggle);
75  });
76
77  document.addEventListener('keyup', function (event) {
78    if (event.which === 13 || event.which === 32) {
79      var toggle = getClosestToggle(event.target);
80      if (toggle && toggle.getAttribute('role') === 'button') {
81        handleToggle(toggle);
82      }
83    }
84  });
85})();

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.