'use strict';
(function($, w){
var $window=$(w);
$window.on('elementor/frontend/init', function(){
var SectionExtends=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.initSectionExtends();
},
isBreakingBad: function(){
return this.$element.hasClass('ob-is-breaking-bad');
},
isInnerSection: function(){
return this.$element.hasClass('elementor-inner-section');
},
onElementChange: function(changedProp){
if(changedProp==='_ob_bbad_use_it'){
if('yes'===this.getElementSettings('_ob_bbad_use_it') ){
this.$element.addClass('ob-is-breaking-bad');
if(this.isInnerSection()) this.$element.addClass('ob-bb-inner');
}else{
this.$element.removeClass('ob-is-breaking-bad');
if(this.isInnerSection()) this.$element.removeClass('ob-bb-inner');
}}
if(changedProp==='_ob_bbad_sssic_use'&&this.isInnerSection()){
if('yes'===this.getElementSettings('_ob_bbad_sssic_use') ) this.$element.addClass('ob-is-sticky-inner-section');
else this.$element.removeClass('ob-is-sticky-inner-section');
}},
initSectionExtends: function(){
if(this.isEdit){
if('yes'===this.getElementSettings('_ob_bbad_use_it')&&! this.isBreakingBad()){
this.$element.addClass('ob-is-breaking-bad');
if(this.isInnerSection()) this.$element.addClass('ob-bb-inner');
}}
if('yes'===this.getElementSettings('_ob_bbad_sssic_use')&&this.isInnerSection()){
if(this.isEdit) this.$element.addClass('ob-is-sticky-inner-section');
var parent_wrapper=this.$element.closest('.elementor-widget-wrap');
if(parent_wrapper.length) parent_wrapper.addClass('ob-sssic-wrapper');
}},
});
var ColumnExtends=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
var ua=navigator.userAgent.toLowerCase();
if(ua.indexOf('chrome') > -1) this.teleporterChromeResize();
this.initColumnExtends();
},
teleporterChromeResize: function(){
if(! this.isTeleporter()) return;
var dis=this;
var myID=this.$element.attr('data-id');
$window.on('resize', function(){
dis.$element.closest('.ob-is-teleporter').addClass('ob-chrome-resize');
clearTimeout(myID);
myID=setTimeout(function(){
var column_height=parseInt(dis.$element.closest('.ob-is-teleporter').css('height') );
var col_wrap="";
if(col_wrap.length) col_wrap.css({ 'height': column_height });
else {
dis.$element.find('.elementor-widget-wrap').first().css({ 'height': column_height });
}
dis.$element.closest('.ob-is-teleporter').removeClass('ob-chrome-resize');
}, 500);
});
$window.trigger('resize');
},
isTeleporter: function(){
return this.$element.hasClass('ob-is-teleporter');
},
isWidgetStalkerCol: function(){
return this.$element.hasClass('ob-is-stalker');
},
initColumnExtends: function(){
function getSafeUrl(url){
try {
var parsed=new URL(url, window.location.origin);
var allowedProtocols=['http:', 'https:', 'mailto:', 'tel:'];
if(!allowedProtocols.includes(parsed.protocol)){
return false;
}
return parsed.href;
} catch (e){
return false;
}}
if(! this.isEdit){
var bb_settings={};
try {
bb_settings=JSON.parse(this.$element.attr('data-settings') );
} catch(error){
return;
}
if(undefined!==bb_settings._ob_bbad_link){
var bb_link=bb_settings._ob_bbad_link;
if(! bb_link.url||bb_link.url===''){
this.$element.removeClass('bb-column-link');
return;
}
var safeUrl=getSafeUrl(bb_link.url);
if(! safeUrl){
this.$element.removeClass('bb-column-link');
return;
}
this.$element.addClass('bb-column-link');
this.$element.off('click.bb');
this.$element.on('click.bb', function(){
if(bb_link.is_external){
window.open(safeUrl, '_blank', 'noopener,noreferrer');
}else{
window.location.href=safeUrl;
}});
}}
if(this.isEdit&&'use-teleporter'===this.getElementSettings('_ob_teleporter_use') ){
this.$element.addClass('ob-is-teleporter');
this.$element.find('.elementor-widget-wrap').first().addClass('ob-tele-midget');
this.doTeleporterEditor();
}
if(! this.isEdit&&this.isTeleporter()){
this.$element.find('.elementor-widget-wrap').first().addClass('ob-tele-midget');
this.doTeleporter();
}
if(this.isEdit&&'yes'===this.getElementSettings('_ob_bbad_is_stalker') ){
this.$element.addClass('ob-is-stalker');
}},
onElementChange: function(changedProp){
if(changedProp==='_ob_teleporter_overlay_color'){
this.$element.find('div[class*="ob-teleporter-"] > .ob-tele-overlay').css('background-color', this.getElementSettings('_ob_teleporter_overlay_color') );
}else if(changedProp==='_ob_teleporter_no_pass_tablet'){
if('no-tablet'===this.getElementSettings('_ob_teleporter_no_pass_tablet') )
this.$element.addClass('ob-tele-no-tablet');
else
this.$element.removeClass('ob-tele-no-tablet');
}else if(changedProp==='_ob_teleporter_no_pass_mobile'){
if('no-mobile'===this.getElementSettings('_ob_teleporter_no_pass_mobile') )
this.$element.addClass('ob-tele-no-mobile');
else
this.$element.removeClass('ob-tele-no-mobile');
}
if(changedProp==='_ob_bbad_is_stalker'){
this.routeWidgetStalkerCol();
}},
routeWidgetStalkerCol: function(){
if(! this.isWidgetStalkerCol()&&'yes'===this.getElementSettings('_ob_bbad_is_stalker') ) this.$element.addClass('ob-is-stalker');
else this.$element.removeClass('ob-is-stalker');
},
doTeleporterEditor: function(){
if('use-teleporter'!==this.getElementSettings('_ob_teleporter_use') ) return;
var widgets_wrapper=this.$element.find('.elementor-widget-wrap').first();
if(widgets_wrapper.length){
widgets_wrapper.wrapInner('<div class="widget-wrap-children" />');
if(widgets_wrapper.find('.elementor-background-overlay').first().length){
widgets_wrapper.find('.elementor-background-overlay').first().insertBefore(widgets_wrapper.find('.elementor-background-overlay').first().parent());
}}
if('do-pass'!==this.getElementSettings('_ob_teleporter_pass') ) return;
var this_ob=this;
var myself=this.$element;
var my_id=this.$element.attr('data-id');
if('no-tablet'===this.getElementSettings('_ob_teleporter_no_pass_tablet') )
this.$element.addClass('ob-tele-no-tablet');
if('no-mobile'===this.getElementSettings('_ob_teleporter_no_pass_mobile') )
this.$element.addClass('ob-tele-no-mobile');
var parent_section=('section'===this.getElementSettings('_ob_teleporter_pass_element') ) ? this.$element.closest('.elementor-section'):this.$element.closest('.elementor-container');
if(! parent_section.length) return;
parent_section.css('overflow', 'hidden');
var hover_effect=this.getElementSettings('_ob_teleporter_pass_effect');
var hover_element='<div class="ob-teleporter-' + my_id + ' ob-tele-eff-' + hover_effect + '" data-id-teleporter="' + my_id + '"><div class="ob-tele-overlay" style="background-color: ' + this.getElementSettings('_ob_teleporter_overlay_color') + ';"></div></div>';
if(! $('.ob-teleporter-' + my_id).length) this.$element.prepend(hover_element);
this.$element.off('mouseenter mouseleave');
this.$element.on('mouseenter mouseleave', function(ev){
if('mouseenter'===ev.type){
if('no-tablet'===this_ob.getElementSettings('_ob_teleporter_no_pass_tablet') &&
'tablet'===elementorFrontend.getCurrentDeviceMode()) return;
if('no-mobile'===this_ob.getElementSettings('_ob_teleporter_no_pass_mobile') &&
'mobile'===elementorFrontend.getCurrentDeviceMode()) return;
if('do-pass'!==this_ob.getElementSettings('_ob_teleporter_pass') ) return;
var tele_css={
'background-color': $('.ob-teleporter-' + my_id).css('background-color'),
'background-image': $('.ob-teleporter-' + my_id).css('background-image'),
'background-position': $('.ob-teleporter-' + my_id).css('background-position'),
'background-size': $('.ob-teleporter-' + my_id).css('background-size'),
'background-repeat': $('.ob-teleporter-' + my_id).css('background-repeat')
};
if('section'===this_ob.getElementSettings('_ob_teleporter_pass_element') ){
var all_children=parent_section.children().not('.elementor-container').detach();
parent_section.addClass('ob-tele-mom-hover').prepend($('.ob-teleporter-' + my_id) );
parent_section.prepend(all_children);
}else{
parent_section.addClass('ob-tele-mom-hover').prepend($('.ob-teleporter-' + my_id) );
}
$('.ob-teleporter-' + my_id).css(tele_css).hide();
$('.ob-teleporter-' + my_id).addClass('ob-teleporter-hover').show();
}else{
parent_section.removeClass('ob-tele-mom-hover');
setTimeout(function(){
$('.ob-teleporter-' + my_id).removeAttr('style').removeClass('ob-teleporter-hover');
myself.prepend($('.ob-teleporter-' + my_id) );
}, 100);
}});
},
doTeleporter: function(){
var teleporter_settings={};
try {
teleporter_settings=JSON.parse(this.$element.attr('data-settings') );
} catch(error){
return;
}
if('use-teleporter'!==teleporter_settings._ob_teleporter_use) return;
var widgets_wrapper=this.$element.find('.elementor-widget-wrap').first();
if(widgets_wrapper.length){
widgets_wrapper.wrapInner('<div class="widget-wrap-children" />');
if(widgets_wrapper.find('.elementor-background-overlay').first().length){
widgets_wrapper.find('.elementor-background-overlay').first().insertBefore(widgets_wrapper.find('.elementor-background-overlay').first().parent());
}}
var myself=this.$element;
var my_id=this.$element.attr('data-id');
if('no-tablet'===teleporter_settings._ob_teleporter_no_pass_tablet)
this.$element.addClass('ob-tele-no-tablet');
if('no-mobile'===teleporter_settings._ob_teleporter_no_pass_mobile)
this.$element.addClass('ob-tele-no-mobile');
function getSafeUrl(url){
try {
var parsed=new URL(url, window.location.origin);
var allowedProtocols=['http:', 'https:', 'mailto:', 'tel:'];
if(!allowedProtocols.includes(parsed.protocol)){
return false;
}
return parsed.href;
} catch (e){
return false;
}}
if(undefined!==teleporter_settings._ob_teleporter_link){
var tele_link=teleporter_settings._ob_teleporter_link;
if(! tele_link.url||tele_link.url===''){
return;
}
var safeUrl=getSafeUrl(tele_link.url);
if(! safeUrl){
return;
}
this.$element.off('click.obTeleporter');
this.$element.on('click.obTeleporter', function(){
if(tele_link.is_external){
window.open(safeUrl, '_blank', 'noopener,noreferrer');
}else{
window.location.href=safeUrl;
}});
}
if('do-pass'!==teleporter_settings._ob_teleporter_pass) return;
var parent_section=('section'===teleporter_settings._ob_teleporter_pass_element) ? this.$element.closest('.elementor-section'):this.$element.closest('.elementor-container');
if(! parent_section.length) return;
parent_section.css('overflow', 'hidden');
var hover_effect=teleporter_settings._ob_teleporter_pass_effect;
var hover_element='<div class="ob-teleporter-' + my_id + ' ob-tele-eff-' + hover_effect + '" data-id-teleporter="' + my_id + '"><div class="ob-tele-overlay" style="background-color: ' + teleporter_settings._ob_teleporter_overlay_color + ';"></div>';
if(! $('.ob-teleporter-' + my_id).length) this.$element.prepend(hover_element);
this.$element.off('mouseenter mouseleave');
this.$element.on('mouseenter', function(){
if('no-tablet'===teleporter_settings._ob_teleporter_no_pass_tablet &&
'tablet'===elementorFrontend.getCurrentDeviceMode()) return;
if('no-mobile'===teleporter_settings._ob_teleporter_no_pass_mobile &&
'mobile'===elementorFrontend.getCurrentDeviceMode()) return;
var tele_css={
'background-color': $('.ob-teleporter-' + my_id).css('background-color'),
'background-image': $('.ob-teleporter-' + my_id).css('background-image'),
'background-position': $('.ob-teleporter-' + my_id).css('background-position'),
'background-size': $('.ob-teleporter-' + my_id).css('background-size'),
'background-repeat': $('.ob-teleporter-' + my_id).css('background-repeat')
};
if('section'===teleporter_settings._ob_teleporter_pass_element){
var all_children=parent_section.children().not('.elementor-container').detach();
parent_section.addClass('ob-tele-mom-hover').prepend($('.ob-teleporter-' + my_id) );
parent_section.prepend(all_children);
} else parent_section.addClass('ob-tele-mom-hover').prepend($('.ob-teleporter-' + my_id) );
$('.ob-teleporter-' + my_id).css(tele_css).hide();
$('.ob-teleporter-' + my_id).show().addClass('ob-teleporter-hover');
});
this.$element.on('mouseleave', function(){
parent_section.removeClass('ob-tele-mom-hover');
setTimeout(function(){
$('.ob-teleporter-' + my_id).removeAttr('style').removeClass('ob-teleporter-hover');
myself.prepend($('.ob-teleporter-' + my_id) );
}, 100);
});
},
});
var handlersList={
'section': SectionExtends,
'column': ColumnExtends,
};
$.each(handlersList, function(widgetName, handlerClass){
elementorFrontend.hooks.addAction('frontend/element_ready/' + widgetName, function($scope){
elementorFrontend.elementsHandler.addHandler(handlerClass, { $element: $scope });
});
});
});
}(jQuery, window) );