HEX
Server: LiteSpeed
System: Linux node612.namehero.net 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: dfwparty (1186)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/dfwparty/candytheclown.com/wp-content/plugins/ws-form-pro/public/js/ws-form-public-loader.js
(function($) {

	'use strict';

	// Loader
	$.WS_Form.prototype.form_loader = function() {

		var ws_this = this;

		// If loader already exists, skip
		if($('.wsf-loader', this.form_canvas_obj).length) { return; }

		// Prepend loader div to form
		this.form_canvas_obj.prepend(this.form_loader_get_html());

		// CSS
		this.form_loader_css_vars();

		// On resize observer
		var loader_resize_observer = new ResizeObserver((entries) => {

			ws_this.form_loader_position();
		});
		loader_resize_observer.observe(this.form_canvas_obj[0]);

		// On document scroll
		$(document).on('scroll', function() {

			ws_this.form_loader_position();
		});

		// On window resize
		$(window).on('resize', function() {

			ws_this.form_loader_position();
		});
	}

	// Set CSS vars
	$.WS_Form.prototype.form_loader_css_vars = function() {

		var css_var_root = this.form_canvas_obj[0];

		// Background color
		this.form_loader_css_var_set_color(css_var_root, 'loader_overlay_color', '--wsf-loader-overlay-color', '#ffffff');

		// Background opacity
		this.form_loader_css_var_set_range(css_var_root, 'loader_overlay_opacity', '--wsf-loader-overlay-opacity', 0.5, 0, 1);

		// Cursor
		this.form_loader_css_var_set_value(css_var_root, 'loader_overlay_cursor', '--wsf-loader-overlay-cursor', 'wait');

		// Fade-in duration
		this.form_loader_css_var_set_range(css_var_root, 'loader_fade_in_duration', '--wsf-loader-fade-in-duration', 0, 0, 5, 's');

		// Fade-out duration
		this.form_loader_css_var_set_range(css_var_root, 'loader_fade_out_duration', '--wsf-loader-fade-out-duration', 0, 0, 5, 's');

		// Sprite animation duration
		this.form_loader_css_var_set_range(css_var_root, 'loader_sprite_animation_duration', '--wsf-loader-sprite-animation-duration', 1, 0.1, 5, 's');

		// Sprite Color
		this.form_loader_css_var_set_color(css_var_root, 'loader_sprite_color', '--wsf-loader-sprite-color', '#000000');

		// Sprite Accent color
		this.form_loader_css_var_set_color(css_var_root, 'loader_sprite_color_accent', '--wsf-loader-sprite-color-accent', '#418fde');

		// Sprite Opacity
		this.form_loader_css_var_set_range(css_var_root, 'loader_sprite_opacity', '--wsf-loader-sprite-opacity', 1, 0, 1);

		// Sprite Accent opacity
		this.form_loader_css_var_set_range(css_var_root, 'loader_sprite_opacity_accent', '--wsf-loader-sprite-opacity-accent', 1, 0, 1);

		// Sprite Size
		this.form_loader_css_var_set_range(css_var_root, 'loader_sprite_size', '--wsf-loader-sprite-size', 48, 10, 400, 'px');

		// Sprite Border width
		this.form_loader_css_var_set_range(css_var_root, 'loader_sprite_border_width', '--wsf-loader-sprite-border', 5, 1, 100, 'px');

		// Text display
		this.form_loader_css_var_set_display(css_var_root, 'loader_text_display', '--wsf-loader-text-display', 'none');

		// Get loader obj
		var loader_obj = $('.wsf-loader', this.form_canvas_obj);
	}

	// Set css variable - Range slider
	$.WS_Form.prototype.form_loader_css_var_set_range = function(css_var_root, meta_key, css_var, default_value, min, max, suffix) {

		if(typeof suffix === 'undefined') { suffix = ''; }

		var value = parseFloat(this.get_object_meta_value(this.form, meta_key, default_value));
		if(
			(value < min) ||
			(value > max)
		) {
			value = default_value;
		}

		css_var_root.style.setProperty(css_var, value + suffix);
	}

	// Set css variable - Color
	$.WS_Form.prototype.form_loader_css_var_set_color = function(css_var_root, meta_key, css_var, default_value) {

		var value = this.get_object_meta_value(this.form, meta_key, default_value);

		var rgb_array = this.hex_to_rgb(value);

		if(rgb_array === false) { rgb_array = this.hex_to_rgb(default_value); }

		if(rgb_array === false) { return false; }

		css_var_root.style.setProperty(css_var, rgb_array.r + ', ' + rgb_array.g + ', ' + rgb_array.b);
	}

	// Set css variable - Display
	$.WS_Form.prototype.form_loader_css_var_set_display = function(css_var_root, meta_key, css_var, default_value) {

		var value = this.get_object_meta_value(this.form, meta_key, default_value);

		css_var_root.style.setProperty(css_var, value ? 'block' : 'none');
	}

	// Set css variable - Value
	$.WS_Form.prototype.form_loader_css_var_set_value = function(css_var_root, meta_key, css_var, default_value) {

		var value = this.get_object_meta_value(this.form, meta_key, default_value);

		css_var_root.style.setProperty(css_var, value);
	}

	// Resize
	$.WS_Form.prototype.form_loader_position = function() {

		// On calculate when shown
		if(!this.form_obj.hasClass('wsf-form-loader-show')) { return; }

		// Get loader obj
		var loader_obj = $('.wsf-loader', this.form_canvas_obj);
		if(!loader_obj.length) { return; }

		// Get form width
		var width = this.form_canvas_obj.width();

		// Get form height
		var height = this.form_canvas_obj.height();

		// Set loader width and height
		loader_obj.width(width).height(height);

		// Get loader inner obj
		var loader_inner_obj = $('.wsf-loader-inner', loader_obj);
		if(!loader_inner_obj.length) { return; }

		// Get loader inner width
		var loader_inner_width = loader_inner_obj.width();
		var loader_sprite_offset_left_align = (loader_inner_width * -0.5);

		// Get loader inner height
		var loader_inner_height = loader_inner_obj.height();
		var loader_sprite_offset_top_align = (loader_inner_height * -0.5);

		// Always visible
		if(this.get_object_meta_value(this.form, 'loader_sprite_always_visible', 'on') === 'on') {

			// Calculate always visible offset
			var document_scroll_top = $(document).scrollTop();
			var window_height = $(window).height();
			if(
				!loader_obj.position ||
				(typeof loader_obj.position !== 'function') ||
				(typeof loader_obj.position() !== 'object')
			) {
				return false;
			}

			var loader_obj_top = loader_obj.position().top;
			var loader_obj_height = loader_obj.height();
			var loader_obj_bottom = loader_obj_top + loader_obj_height;

			// Hidden height
			var loader_hidden_top = document_scroll_top - loader_obj_top;
			if(loader_hidden_top < 0) { loader_hidden_top = 0; }

			// Calculate vertical form visible
			var loader_visible_top = loader_obj_top - document_scroll_top;
			if(loader_visible_top < 0) { loader_visible_top = 0; }
			var loader_visible_bottom = loader_obj_bottom - document_scroll_top;
			if(loader_visible_bottom > window_height) { loader_visible_bottom = window_height; }
			var loader_visible_height = loader_visible_bottom - loader_visible_top;

			// Calculate offset top
			var loader_sprite_offset_top_always_visible = loader_hidden_top + (loader_visible_height / 2);

			// Bounds
			var loader_sprite_offset_top_always_visible_min = (loader_inner_height / 2) + 10;
			var loader_sprite_offset_top_always_visible_max = loader_obj_height - (loader_inner_height / 2) - 10;

			if(loader_sprite_offset_top_always_visible > loader_sprite_offset_top_always_visible_max) {

				loader_sprite_offset_top_always_visible = loader_sprite_offset_top_always_visible_max;
			}

			if(loader_sprite_offset_top_always_visible < loader_sprite_offset_top_always_visible_min) {

				loader_sprite_offset_top_always_visible = loader_sprite_offset_top_always_visible_min;
			}

			// Offset for 50% css
			loader_sprite_offset_top_always_visible = loader_sprite_offset_top_always_visible - (loader_obj_height / 2);

		} else {

			loader_sprite_offset_top_always_visible = 0;
		}

		// Set alignment
		var css_var_root = this.form_canvas_obj[0];

		// Position sprite
		css_var_root.style.setProperty('--wsf-loader-sprite-offset-top-always-visible', loader_sprite_offset_top_always_visible + 'px');
		css_var_root.style.setProperty('--wsf-loader-sprite-offset-top-align', loader_sprite_offset_top_align + 'px');
		css_var_root.style.setProperty('--wsf-loader-sprite-offset-left-align', loader_sprite_offset_left_align + 'px');
	}

	// Get HTML
	$.WS_Form.prototype.form_loader_get_html = function() {

		return '<div class="wsf-loader"><div class="wsf-loader-inner" role="alert" aria-live="assertive"></div></div>';
	}

	// Show loader
	$.WS_Form.prototype.form_loader_show = function(loader_event) {

		if(typeof loader_event === 'undefined') { return; }

		// If form loader already showing, skip
		if(this.form_loader_showing) { return; }

		var ws_this = this;

		// Build loader show function
		var loader_show = function() {

			// Get loader type
			var loader_sprite_type = ws_this.get_object_meta_value(ws_this.form, 'loader_sprite_type', 'rotate-25-gap');

			// Builder loader HTML according to type
			var loader_sprite_html = '';

			switch(loader_sprite_type) {

				case '' :

					loader_sprite_html = '';
					break;

				case 'html' :

					loader_sprite_html = ws_this.get_object_meta_value(ws_this.form, 'loader_sprite_html', '');
					break;

				default :

					loader_sprite_html = '<div class="wsf-loader-sprite wsf-loader-sprite-' + ws_this.esc_attr(loader_sprite_type) + '"></div>';

					// Get text
					var loader_text = ws_this.get_object_meta_value(ws_this.form, 'loader_text', '');
					if(loader_text !== '') {

						// We allow HTML in the loader text
						loader_sprite_html += '<p>' + loader_text + '</p>';
					}

					break;
			}

			// Set HTML of loader (prompts accessibility reader)
			$('.wsf-loader .wsf-loader-inner', ws_this.form_canvas_obj).html(loader_sprite_html);

			// Show loader
			$('.wsf-loader', ws_this.form_canvas_obj).show();

			// Set form classes
			ws_this.form_obj.addClass('wsf-form-loader-show').removeClass('wsf-form-loader-hide');

			// Resize loader
			ws_this.form_loader_position();

			// Set start
			ws_this.form_loader_show_start = new Date();

			// Log
			ws_this.log('log_loader_show');
		};

		// Check if loader event is enabled
		if(loader_event !== 'conditional') {

			if(!this.get_object_meta_value(this.form, 'loader_event_' + loader_event)) { return; }
		}

		// Set showing
		ws_this.form_loader_showing = true;

		// Get delay
		var loader_event_delay = parseFloat(this.get_object_meta_value(this.form, 'loader_event_' + loader_event + '_delay'));

		// Show loader
		if(loader_event_delay) {

			this.form_loader_timeout_id = setTimeout(function() { loader_show(); }, (loader_event_delay * 1000));

		} else {

			loader_show();
		}
	}

	// Hide loader
	$.WS_Form.prototype.form_loader_hide = function(timeout) {

		if(typeof timeout === 'undefined') { timeout = true; }

		// If form loader is not show, skip
		if(!this.form_loader_showing) { return; }

		// Clear any pending timeouts
		if(this.form_loader_timeout_id) {

			clearTimeout(this.form_loader_timeout_id);
		}

		var ws_this = this;

		// Build loader hide function
		var loader_hide = function() {

			// Set form classes
			ws_this.form_obj.removeClass('wsf-form-loader-show').addClass('wsf-form-loader-hide');

			// Get fade-out duration
			var loader_fade_out_duration = parseFloat(ws_this.get_object_meta_value(ws_this.form, 'loader_fade_out_duration', '0'));

			// Hide loader after fade-out completes
			setTimeout(function() {

				// Hide loader
				$('.wsf-loader', ws_this.form_canvas_obj).hide();

				// Clear HTML of loader (ready for next prompt for accessibility reader)
				$('.wsf-loader .wsf-loader-inner', ws_this.form_canvas_obj).html('');

				// Log
				ws_this.log('log_loader_hide');

			}, (loader_fade_out_duration * 1000));
		};

		// Set not showing
		ws_this.form_loader_showing = false;

		// Calculate timeout. Form will not be locked longer than form_post_lock_duration_max.
		var form_loader_show_duration = new Date() - this.form_loader_show_start;

		var timeout_duration = Math.max(this.form_loader_show_duration_max - form_loader_show_duration, 0);

		// Hide loader
		timeout ? setTimeout(function() { loader_hide(); }, timeout_duration) : loader_hide();
	}

})(jQuery);