// source --> https://belforte-e20.it/wp-content/plugins/search-filter-elementor/assets/js/search-filter-elementor.js?ver=1.0.0 
( function ( $ ) {
	"use strict";
	$( function () {
		// re init layout after ajax request
		$( document ).on( "sf:ajaxfinish", ".searchandfilter", function( e, data ) {
			if ( window.elementorFrontend && window.elementorFrontend.elementsHandler && window.elementorFrontend.elementsHandler.runReadyTrigger) {
				var runReadyTrigger = window.elementorFrontend.elementsHandler.runReadyTrigger;

				runReadyTrigger( data.targetSelector );
				var ajaxTarget = $( data.targetSelector );
				if ( ajaxTarget.length > 0 ) {
					// re-init the accordion js - elementor-widget-accordion
					ajaxTarget.find( '.elementor-widget' ).each( function () {
						runReadyTrigger( $( this ) );
					} );
				}
			}
		});
	});

	//Detects the end of an ajax request being made
	var forms = [];
	$(document).on("sf:ajaxfinish", ".searchandfilter", function( e, form ){
		var $form = $( '.searchandfilter[data-sf-form-id=' + form.sfid  + ']' )
		forms[ form.sfid ] = $form[0].innerHTML;
	});
	
	// load search forms in popups
	$( window ).on( 'elementor/frontend/init', function() {
		// Search forms in popups reset to their page load state every time they are shown.
		// So we need to keep track of the latest one, and reload it into the popup when it is shown.
		if ( window.elementorFrontend ) {
			window.elementorFrontend.elements.$window.on( 'elementor/popup/show', ( e, id, document ) => {
				if ( $().searchAndFilter ) {
					var $sliders = $( '.elementor-popup-modal .searchandfilter .meta-slider' );
					if ( $sliders.length > 0 ) {
						$sliders.empty();
					}

					// Get the forms ID:
					$( '.elementor-popup-modal .searchandfilter' ).each( function () {
						var $form = $( this );
						$form.off();
						var formId = $form.data( 'sf-form-id' );
						if ( forms[ formId ] ) {
							// Replace the form with the latest version:
							$form.html( forms[ formId ])
						}
						$form.searchAndFilter();

					} );
				}
			} );
		}
	});

}( jQuery ) );