1( function () { 2 'use strict'; 3 4 function initGroupPicker() { 5 var picker = document.getElementById( 'group-picker' ); 6 if ( ! picker ) { 7 return; 8 } 9 10 var pickerTop = picker.querySelector( '.top' ); 11 var pickerDropdown = picker.querySelector( '.dropdown' ); 12 var pickerText = picker.querySelector( '.top .text' ); 13 14 if ( ! pickerTop || ! pickerDropdown || ! pickerText ) { 15 return; 16 } 17 18 pickerTop.addEventListener( 'click', function () { 19 var isOpen = window.getComputedStyle( pickerDropdown ).display !== 'none'; 20 pickerDropdown.style.display = isOpen ? 'none' : 'block'; 21 pickerTop.setAttribute( 'aria-expanded', isOpen ? 'false' : 'true' ); 22 } ); 23 24 pickerTop.addEventListener( 'keydown', function ( event ) { 25 if ( event.key === 'Escape' ) { 26 pickerDropdown.style.display = 'none'; 27 pickerTop.setAttribute( 'aria-expanded', 'false' ); 28 } 29 } ); 30 31 var pickerItems = pickerDropdown.querySelectorAll( 'li' ); 32 for ( var i = 0; i < pickerItems.length; i++ ) { 33 pickerItems[ i ].addEventListener( 'click', function () { 34 pickerText.textContent = this.textContent; 35 pickerDropdown.style.display = 'none'; 36 pickerTop.setAttribute( 'aria-expanded', 'false' ); 37 } ); 38 } 39 } 40 41 function initFooterAnimation() { 42 var footerMark = document.querySelector( '.footer-logo__mark' ); 43 if ( ! footerMark ) { 44 return; 45 } 46 47 function revealFooterMark() { 48 footerMark.classList.add( 'is-visible' ); 49 } 50 51 if ( ! ( 'IntersectionObserver' in window ) ) { 52 revealFooterMark(); 53 return; 54 } 55 56 var observer = new IntersectionObserver( function ( entries ) { 57 if ( ! entries[ 0 ].isIntersecting ) { 58 return; 59 } 60 61 revealFooterMark(); 62 observer.disconnect(); 63 }, { 64 threshold: 0 65 } ); 66 67 observer.observe( footerMark ); 68 } 69 70 function init() { 71 initGroupPicker(); 72 initFooterAnimation(); 73 } 74 75 if ( document.readyState === 'loading' ) { 76 document.addEventListener( 'DOMContentLoaded', init ); 77 } else { 78 init(); 79 } 80}() ); 81 82var skillsForLifeLastShareTrigger = null; 83 84// Close the site notice. 85function closeSiteNotice() { 86 var notice = document.getElementById( 'SiteNotice' ); 87 if ( notice ) { 88 notice.style.display = 'none'; 89 notice.setAttribute( 'hidden', '' ); 90 } 91} 92 93// Open the share box. 94function openShare() { 95 var overlay = document.getElementById( 'ShareOverlay' ); 96 if ( overlay ) { 97 skillsForLifeLastShareTrigger = document.activeElement; 98 overlay.style.display = 'block'; 99 overlay.style.height = ''; 100 overlay.setAttribute( 'aria-hidden', 'false' ); 101 var triggers = document.querySelectorAll( '[aria-controls="ShareOverlay"]' ); 102 for ( var i = 0; i < triggers.length; i++ ) { 103 triggers[ i ].setAttribute( 'aria-expanded', 'true' ); 104 } 105 106 var closeButton = overlay.querySelector( '.closebtn' ); 107 if ( closeButton ) { 108 window.setTimeout( function () { 109 closeButton.focus(); 110 }, 0 ); 111 } 112 } 113} 114 115// Close the share box. 116function closeShare() { 117 var overlay = document.getElementById( 'ShareOverlay' ); 118 if ( overlay ) { 119 overlay.style.display = 'none'; 120 overlay.style.height = '0px'; 121 overlay.setAttribute( 'aria-hidden', 'true' ); 122 var triggers = document.querySelectorAll( '[aria-controls="ShareOverlay"]' ); 123 for ( var i = 0; i < triggers.length; i++ ) { 124 triggers[ i ].setAttribute( 'aria-expanded', 'false' ); 125 } 126 127 if ( skillsForLifeLastShareTrigger && typeof skillsForLifeLastShareTrigger.focus === 'function' ) { 128 skillsForLifeLastShareTrigger.focus(); 129 } 130 } 131} 132 133document.addEventListener( 'keydown', function ( event ) { 134 var overlay = document.getElementById( 'ShareOverlay' ); 135 if ( event.key === 'Escape' && overlay && overlay.getAttribute( 'aria-hidden' ) === 'false' ) { 136 closeShare(); 137 } 138} );
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.