PageSourceSearch

https://kumailkazmi.com/wp-content/plugins/letterness-pro/assets/js/letterness-widget.js?ver=2.4.0

js kumailkazmi.com collected 2026-10-09 16:46:51 UTC 2,297 bytes, 61 lines download raw bytes

1(function () {
2	'use strict';
3
4	document.addEventListener( 'submit', function ( e ) {
5		var form = e.target;
6		if ( ! form.classList || ! form.classList.contains( 'letterness-widget-form' ) ) {
7			return;
8		}
9		e.preventDefault();
10
11		var card    = form.closest( '.letterness-widget-card' );
12		var emailEl = form.querySelector( '.letterness-widget-email' );
13		var msgEl   = card.querySelector( '.letterness-widget-message' );
14		var consent = form.querySelector( '.letterness-consent-input' );
15
16		if ( consent && consent.hasAttribute( 'required' ) && ! consent.checked ) {
17			msgEl.style.display = 'block';
18			msgEl.classList.add( 'letterness-error' );
19			msgEl.textContent = LTRN_WidgetConfig.consentError;
20			return;
21		}
22
23		var formData = new FormData();
24		formData.append( 'action', 'letterness_subscribe' );
25		formData.append( 'nonce', LTRN_WidgetConfig.nonce );
26		formData.append( 'email', emailEl.value );
27		formData.append( 'source', 'widget' );
28		formData.append( 'consent', consent && consent.checked ? '1' : '0' );
29
30		var wFields = form.querySelectorAll( '.letterness-field' );
31		for ( var wi = 0; wi < wFields.length; wi++ ) {
32			var wEl = wFields[ wi ];
33			if ( wEl.hasAttribute( 'required' ) && ! wEl.value.trim() ) {
34				msgEl.style.display = 'block';
35				msgEl.classList.add( 'letterness-error' );
36				msgEl.textContent = LTRN_WidgetConfig.fieldError || 'Please fill in the required fields.';
37				return;
38			}
39			formData.append( 'fields[' + wEl.getAttribute( 'data-field' ) + ']', wEl.value.trim() );
40		}
41
42		fetch( LTRN_WidgetConfig.ajaxUrl, { method: 'POST', body: formData } )
43			.then( function ( r ) { return r.json(); } )
44			.then( function ( res ) {
45				msgEl.style.display = 'block';
46				if ( res.success ) {
47					form.style.display = 'none';
48					msgEl.classList.remove( 'letterness-error' );
49					msgEl.textContent = LTRN_WidgetConfig.successText;
50				} else {
51					msgEl.classList.add( 'letterness-error' );
52					msgEl.textContent = ( res.data && res.data.message ) ? res.data.message : LTRN_WidgetConfig.errorText;
53				}
54			} )
55			.catch( function () {
56				msgEl.style.display = 'block';
57				msgEl.classList.add( 'letterness-error' );
58				msgEl.textContent = LTRN_WidgetConfig.networkError;
59			} );
60	} );
61})();

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.