1document.addEventListener('DOMContentLoaded', function () { 2 const target = document.querySelector('.messages'); 3 if (!target) { 4 return; 5 } 6 7 let currentMessage = null; 8 9 const observer = new MutationObserver(function (mutations) { 10 mutations.forEach(function () { 11 const newMessage = target.querySelector('.message-success, .message-error, .message-warning, .message-info'); 12 13 if (newMessage) { 14 if (newMessage !== currentMessage) { 15 currentMessage = newMessage; 16 17 setTimeout(function () { 18 newMessage.style.transition = 'opacity 0.5s ease'; 19 newMessage.style.opacity = '0'; 20 21 setTimeout(() => { 22 if (newMessage.parentNode) { 23 newMessage.parentNode.removeChild(newMessage); 24 } 25 }, 500); 26 }, 3000); 27 } 28 } 29 }); 30 }); 31 32 observer.observe(target, { childList: true, subtree: true }); 33});
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.