1function setButtonClass(button, className, enabled) { 2 if (button.classList) { 3 enabled ? button.classList.add(className) : button.classList.remove(className); 4 return; 5 } 6 7 var classes = button.className.split(/\s+/).filter(Boolean); 8 var hasClass = classes.indexOf(className) !== -1; 9 if (enabled && !hasClass) { 10 classes.push(className); 11 } else if (!enabled && hasClass) { 12 classes = classes.filter(function(item) { return item !== className; }); 13 } 14 button.className = classes.join(' '); 15} 16 17function copyToClipboard(var1, button) { 18 var source = document.getElementById(var1); 19 if (!source) { 20 return false; 21 } 22 23 var val = (source.textContent || source.innerText || source.innerHTML || '').trim(); 24 var selBox = document.createElement('textarea'); 25 selBox.style.position = 'fixed'; 26 selBox.style.left = '0'; 27 selBox.style.top = '0'; 28 selBox.style.opacity = '0'; 29 selBox.value = val; 30 document.body.appendChild(selBox); 31 selBox.focus(); 32 selBox.select(); 33 document.execCommand('copy'); 34 document.body.removeChild(selBox); 35 36 if (button) { 37 if (!button.dataset.copyOriginalText) { 38 button.dataset.copyOriginalText = button.textContent; 39 } 40 if (button.dataset.copyTimer) { 41 clearTimeout(Number(button.dataset.copyTimer)); 42 } 43 44 button.textContent = 'Copied'; 45 setButtonClass(button, 'is-copied', true); 46 button.setAttribute('aria-live', 'polite'); 47 button.dataset.copyTimer = setTimeout(function() { 48 button.textContent = button.dataset.copyOriginalText || 'BibTeX'; 49 setButtonClass(button, 'is-copied', false); 50 delete button.dataset.copyTimer; 51 }, 1200); 52 } 53 54 return false; 55}
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.