jQuery(document).on('action.ready_trx_addons', function(){
"use strict";
var USE_OBSERVERS=trx_addons_apply_filters('trx_addons_filter_use_observers_to_fix_rows', true)
&& typeof IntersectionObserver!='undefined';
var $window=jQuery(window),
$document=jQuery(document),
$body=jQuery('body');
function get_id(row){
return row.attr('id') ? row.attr('id'):row.attr('data-id');
}
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(rows.length > 0){
rows.each(function(idx){
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>');
}}
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');
}});
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(){
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
});
});
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;
}
if(row.css('display')=='none'&&! row.hasClass('sc_layouts_row_hide_unfixed')){
return;
}
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();
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);
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;
}}
}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();
}
$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,
delay
);
}
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='';
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;
}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;
}
if(event){
$document.trigger('action.sc_layouts_row_fixed_' + event, [ rows.filter('.sc_layouts_row_fixed_on') ]);
}}else{
last_scroll_offset=scroll_offset;
}}
}
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' });
}});
}}
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||'';
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;
}
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);
}}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)
){
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;
}});
}});