1function loginpressScaleCaptcha(wrapperSelector, captchaSelector, originalWidth) { 2 const wrappers = document.querySelectorAll( wrapperSelector ); 3 4 wrappers.forEach( 5 wrapper => { 6 const captcha = wrapper.querySelector( captchaSelector ); 7 if (captcha) { 8 const wrapperWidth = wrapper.clientWidth; 9 const scale = wrapperWidth < originalWidth ? wrapperWidth / originalWidth : 1; 10 11 captcha.style.setProperty( 'transform', `scale( ${scale} )`, 'important' ); 12 captcha.style.setProperty( 'transform-origin', 'top left', 'important' ); 13 } 14 } 15 ); 16} 17 18const captchaConfigs = [ 19 { wrapper: '.cf-turnstile-wrapper', captcha: '.cf-turnstile', width: 300 }, 20 { wrapper: '.h-captcha-container', captcha: '.h-captcha[data-size="normal"] iframe', width: 304 }, 21 { wrapper: '.loginpress_recaptcha_wrapper', captcha: '.g-recaptcha iframe', width: 304 } 22]; 23 24function scaleAllCaptchas() { 25 captchaConfigs.forEach( 26 ({ wrapper, captcha, width }) => { 27 // Combine selectors for inner query (e.g., wrapper.querySelector(captcha)) 28 const fullCaptchaSelector = captcha.startsWith( '>' ) ? ` : scope ${captcha}` : captcha; 29 loginpressScaleCaptcha( wrapper, fullCaptchaSelector, width ); 30 } 31 ); 32} 33 34jQuery( document ).ready( scaleAllCaptchas ); 35jQuery( document ).ready( 36 function ($) { 37 $( '.loginpress_widget_links a' ).on( 38 'click', 39 function () { 40 setTimeout( scaleAllCaptchas, 100 ); 41 } 42 ); 43 } 44); 45window.addEventListener( 'load', scaleAllCaptchas ); 46window.addEventListener( 'resize', scaleAllCaptchas ); 47// Trigger on DOM modifications 48const observer = new MutationObserver( 49 () => { 50 scaleAllCaptchas(); 51 } 52); 53 54// Start observing the entire document for changes 55observer.observe( 56 document.body, 57 { 58 childList: true, // watch for added/removed elements 59 subtree: true, // watch all descendant elements 60 attributes: true // watch for attribute changes (optional) 61 } 62);
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.