![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/hessa.corals.io/wp-content/plugins/trx_addons/components/cpt/layouts/ |
/* global jQuery, TRX_ADDONS_STORAGE */ jQuery(document).on('action.ready_trx_addons', function() { "use strict"; // How to handle fix/unfix rows: // true - Intersection observers are used // false - a scroll event handler is used var USE_OBSERVERS = trx_addons_apply_filters( 'trx_addons_filter_use_observers_to_fix_rows', true ) && typeof IntersectionObserver != 'undefined'; // Common objects var $window = jQuery( window ), $document = jQuery( document ), $body = jQuery( 'body' ); // Return the row 'id' or data-id (if 'id' is empty) function get_id( row ) { return row.attr('id') ? row.attr('id') : row.attr('data-id'); } // Handle fixed rows //--------------------------------------------------------- if ( ! TRX_ADDONS_STORAGE['pagebuilder_preview_mode'] && ! $body.hasClass( 'sc_layouts_row_fixed_inited' ) ) { var rows = jQuery('.sc_layouts_row_fixed'), rows_always = rows.filter('.sc_layouts_row_fixed_always'), rows_delayed = rows.filter('.sc_layouts_row_delay_fixed'), last_scroll_offset = -1; // If page contain fixed rows if ( rows.length > 0 ) { rows.each( function( idx ) { // Add placeholders after each row var row = rows.eq( idx ); if ( row.hasClass('sc_layouts_row_hide_unfixed' ) ) { if ( ! row.prev().hasClass('sc_layouts_row_unfixed_placeholder') ) { row.before( '<div class="sc_layouts_row_unfixed_placeholder">' + ( USE_OBSERVERS ? '<div class="sc_layouts_row_fixed_marker_on"></div>' : '' ) + '</div>'); } } if ( ! row.next().hasClass('sc_layouts_row_fixed_placeholder') ) { row.after('<div class="sc_layouts_row_fixed_placeholder" style="background-color:'+row.css('background-color')+';"><div class="sc_layouts_row_fixed_marker_off"></div></div>'); if ( USE_OBSERVERS && ! row.hasClass('sc_layouts_row_hide_unfixed' ) ) { row.append('<div class="sc_layouts_row_fixed_marker_on"></div>'); } } // Add class 'sc_layouts_row_fixed_with_fullscreen' to the row if it contains the element with class 'search_style_fullscreen' if ( row.find( trx_addons_apply_filters( 'trx_addons_filter_fullscreen_elements', '.search_style_fullscreen,.search_modern' ) ).length > 0 ) { row.addClass( 'sc_layouts_row_fixed_with_fullscreen' ); } } ); // Add handlers to fix/unfix rows var timedFix = trx_addons_throttle( function() { trx_addons_cpt_layouts_fix_rows( { rows: rows, rows_always: rows_always } ); }, 150 ); $document .on('action.scroll_trx_addons', function() { trx_addons_cpt_layouts_hide_fixed_rows(); if ( ! USE_OBSERVERS ) { trx_addons_cpt_layouts_fix_rows( { rows: rows, rows_always: rows_always } ); } else { timedFix(); } }) .on('action.resize_trx_addons', function() { // Update global values trx_addons_cpt_layouts_check_mobile_breakpoint(); trx_addons_cpt_layouts_hide_fixed_rows(); trx_addons_cpt_layouts_fix_rows( { rows: rows, rows_always: rows_always, resize: true } ); }); // Add observer to fix/unfix rows if ( USE_OBSERVERS ) { var fixed_rows_observe = function() { rows.each( function( idx ) { var row = rows.eq( idx ); var last_fixed_time = row.data('trx-addons-last-fixed-time') || 0; var delay = trx_addons_cpt_layouts_fix_rows_delay( row ); var marker_off = row.next().find( '>.sc_layouts_row_fixed_marker_off' ); var marker_on = row.hasClass( 'sc_layouts_row_hide_unfixed' ) ? row.prev().find( '>.sc_layouts_row_fixed_marker_on' ) : row.find( '>.sc_layouts_row_fixed_marker_on' ); var observer = row.data( 'trx-addons-fixed-observer' ); if ( observer ) { if ( marker_off.length ) observer.unobserve( marker_off.get(0) ); if ( marker_on.length ) observer.unobserve( marker_on.get(0) ); observer.disconnect(); observer = null; } // Skip hidden rows without a class 'sc_layouts_row_hide_unfixed' if ( row.css('display') == 'none' && ! row.hasClass('sc_layouts_row_hide_unfixed' ) ) { return; } // On mobile devices skip rows without a class 'sc_layouts_row_fixed_always' if ( trx_addons_window_width() < TRX_ADDONS_STORAGE['mobile_breakpoint_fixedrows_off'] && ! row.hasClass( 'sc_layouts_row_fixed_always' ) ) { return; } var row_height = row.hasClass( 'sc_layouts_row_hide_unfixed' ) ? 0 : row.outerHeight(); // Create an observer for each row (to pay account an individual settings for delay) observer = new IntersectionObserver( function( entries ) { var time = new Date().getTime(); entries.forEach( function( entry ) { var marker = jQuery( entry.target ), marker_offset = marker.offset().top, parent = marker.parent(), row = parent; if ( parent.hasClass( 'sc_layouts_row_unfixed_placeholder' ) ) { row = row.next(); } else if ( parent.hasClass( 'sc_layouts_row_fixed_placeholder' ) ) { row = row.prev(); } var animation_off_timeout = trx_addons_cpt_layouts_fix_rows_off_timeout( delay ); // marker_off is come in to the viewport if ( row.hasClass( 'sc_layouts_row_fixed_on' ) && entry.isIntersecting ) { if ( time - last_fixed_time > animation_off_timeout && entry.boundingClientRect.top >= entry.rootBounds.top ) { if ( ! row.hasClass( 'sc_layouts_row_fixed_animation_off' ) ) { trx_addons_cpt_layouts_fix_rows( { rows: rows, rows_always: rows_always, force_row: row, force_state: 'off' } ); last_fixed_time = time; } } // marker_on is go out from the viewport } else if ( ! row.hasClass( 'sc_layouts_row_fixed_on' ) && ! entry.isIntersecting ) { if ( time - last_fixed_time > animation_off_timeout && entry.boundingClientRect.bottom < entry.rootBounds.top ) { trx_addons_cpt_layouts_fix_rows( { rows: rows, rows_always: rows_always, force_row: row, force_state: 'on' } ); last_fixed_time = time; } } } ); }, { root: null, rootMargin: ( delay - trx_addons_fixed_rows_height() + ( ! $body.hasClass('hide_fixed_rows') && row.hasClass( 'sc_layouts_row_fixed_on' ) ? row_height : 0 ) ) + 'px 0px 0px 0px', threshold: 0 } ); var marker = row.hasClass( 'sc_layouts_row_fixed_on' ) ? marker_off : marker_on; observer.observe( marker.get(0) ); row.data( { 'trx-addons-fixed-observer': observer, 'trx-addons-last-fixed-time': last_fixed_time } ); } ); }; $document.on('action.sc_layouts_row_fixed_on action.sc_layouts_row_fixed_off', fixed_rows_observe ); fixed_rows_observe(); } // Add a class to the body $body.addClass( 'sc_layouts_row_fixed_inited' ); } } function trx_addons_cpt_layouts_fix_rows_delay( row ) { return trx_addons_apply_filters( 'trx_addons_filter_fixed_rows_delay', row.hasClass( 'sc_layouts_row_delay_fixed' ) ? Math.max( 300, trx_addons_window_height() / 4 * 3 ) : 0 ); } function trx_addons_cpt_layouts_fix_rows_off_timeout( delay ) { return trx_addons_apply_filters( 'trx_addons_filter_sc_layouts_row_fixed_off_timeout', delay > 0 ? 400 : 0, // Timeout must be equal to the css-animation time (see layouts.[s]css) delay ); } // Hide fixed rows on scroll down function trx_addons_cpt_layouts_hide_fixed_rows() { if ( TRX_ADDONS_STORAGE['hide_fixed_rows'] > 0 && ! window.trx_addons_document_animate_to_busy ) { var scroll_delta = 50; var scroll_offset = trx_addons_window_scroll_top(); if ( last_scroll_offset >= 0 ) { var event = ''; // Scroll down if ( scroll_offset > last_scroll_offset + scroll_delta ) { if ( scroll_offset > trx_addons_window_height() * ( rows_delayed.length > 0 ? 1.5 : 0.6667 ) && ! $body.hasClass( 'hide_fixed_rows' ) ) { $body.addClass( 'hide_fixed_rows' ); event = 'off'; } last_scroll_offset = scroll_offset; // Scroll up } else if ( scroll_offset < last_scroll_offset - scroll_delta ) { if ( $body.hasClass( 'hide_fixed_rows' ) ) { $body.removeClass( 'hide_fixed_rows' ); event = 'on'; } last_scroll_offset = scroll_offset; } // Trigger event if ( event ) { $document.trigger( 'action.sc_layouts_row_fixed_' + event, [ rows.filter('.sc_layouts_row_fixed_on') ] ); } } else { last_scroll_offset = scroll_offset; } } } // Break fixing on mobile devices (except rows with class 'sc_layouts_row_fixed_always') function trx_addons_cpt_layouts_check_mobile_breakpoint() { if ( trx_addons_window_width() < TRX_ADDONS_STORAGE['mobile_breakpoint_fixedrows_off'] ) { rows.each( function( idx ) { var row = rows.eq( idx ); if ( ! row.hasClass( 'sc_layouts_row_fixed_always' ) ) { row.removeClass( 'sc_layouts_row_fixed_on' ).css( { 'top': 'auto' } ); } }); } } // Fix/unfix rows function trx_addons_cpt_layouts_fix_rows( args ) { var rows = args.rows, rows_always = args.rows_always, resize = args.resize || false, force_row = args.force_row || null, force_state = args.force_state || ''; // Break fixing on mobile devices (except rows with class 'sc_layouts_row_fixed_always') if ( trx_addons_window_width() < TRX_ADDONS_STORAGE['mobile_breakpoint_fixedrows_off'] ) { if ( rows_always.length === 0 ) { return; } else { rows = rows_always; } } var scroll_offset = $window.scrollTop(); var rows_offset = trx_addons_adminbar_height(); rows.each( function( idx ) { var row = rows.eq( idx ); var placeholder = row.next(); var h = row.outerHeight(); if ( ( row.css('display') == 'none' || h === 0 ) && ! row.hasClass('sc_layouts_row_hide_unfixed' ) ) { placeholder.height(0); return; } var ph = row.hasClass( 'sc_layouts_row_fixed_on' ) ? placeholder.outerHeight() : 0; var row_unfixed_placeholder = row.hasClass('sc_layouts_row_hide_unfixed' ) ? row.prev() : false; var delay = trx_addons_cpt_layouts_fix_rows_delay( row ); var animation_off_timeout = trx_addons_cpt_layouts_fix_rows_off_timeout( delay ); var offset = parseInt( row.hasClass( 'sc_layouts_row_fixed_on' ) ? placeholder.offset().top : ( row.hasClass('sc_layouts_row_hide_unfixed' ) ? row_unfixed_placeholder.offset().top : row.offset().top ), 10 ); if ( isNaN( offset ) ) { offset = 0; } // Unfix row if ( ( force_state == 'off' && row.is( force_row ) ) || ( ! force_state && ( scroll_offset + rows_offset < offset + delay || h < ph ) ) ) { if ( row.hasClass( 'sc_layouts_row_fixed_on' ) ) { if ( animation_off_timeout > 0 ) { row.addClass( 'sc_layouts_row_fixed_animation_off' ); } setTimeout( function() { row .removeClass( 'sc_layouts_row_fixed_on' + ( animation_off_timeout > 0 ? ' sc_layouts_row_fixed_animation_off' : '' ) ) .css( { 'top': 'auto' } ); $document.trigger( 'action.sc_layouts_row_fixed_off', [ row ] ); }, animation_off_timeout ); } // Fix row } else { if ( ! row.hasClass( 'sc_layouts_row_fixed_on' ) ) { if ( ( force_state == 'on' && row.is( force_row ) ) || ( rows_offset + h < trx_addons_window_height() * 0.33 ) //! force_state && - if force_state='on' from observer and two fixed rows are near - only one (forced) row is processed ) { if ( ! row.hasClass( 'sc_layouts_row_hide_unfixed' ) ) { ph = h; placeholder.height( ph ); } row.addClass( 'sc_layouts_row_fixed_on' ).css( { 'top': rows_offset + 'px' } ); h = row.outerHeight(); if ( ph != h && ! row.hasClass( 'sc_layouts_row_hide_unfixed' ) ) { ph = h; placeholder.height( h ); } $document.trigger( 'action.sc_layouts_row_fixed_on', [ row ] ); } } else if ( resize && row.hasClass( 'sc_layouts_row_fixed_on' ) && row.offset().top != rows_offset ) { row.css( { 'top': rows_offset + 'px' } ); } rows_offset += h; } if ( force_state && row.is( force_row ) ) { force_state = ''; force_row = null; } }); } } );