/* Elementor hooks - editor - frontend */ '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' ); }, /* needed for Inner Section stickyness */ isInnerSection: function() { return this.$element.hasClass( 'elementor-inner-section' ); }, onElementChange: function( changedProp ) { // Breaking Bad 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' ); } } // Inner Section 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 ) { // Breaking Bad 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' ); } } // Sticky Inner Section - identical for both front-and-back-end if( 'yes' === this.getElementSettings( '_ob_bbad_sssic_use' ) && this.isInnerSection() ) { if( this.isEdit ) this.$element.addClass( 'ob-is-sticky-inner-section' ); // find first wrapping element; must match some class name(s) 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 ); // is E3.0 column? if( ! this.$element.find( '.elementor-column-wrap' ).first().length ) this.$element.addClass( 'ob-is-e3' ); // Teleporter issue with Chrome var ua = navigator.userAgent.toLowerCase(); if( ua.indexOf( 'chrome' ) > -1 ) this.teleporterChromeResize(); // columns... 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 = dis.$element.find( '.elementor-column-wrap' ).first(); 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' ); }, /* Teleporter */ isTeleporter: function() { return this.$element.hasClass( 'ob-is-teleporter' ); }, /* Widget Stalker */ isWidgetStalkerCol: function() { return this.$element.hasClass( 'ob-is-stalker' ); }, initColumnExtends: function() { /* breaking bad */ if( ! this.isEdit ) { var bb_settings = {}; try { bb_settings = JSON.parse( this.$element.attr( 'data-settings' ) ); } catch ( error ) { return; } // handle links if( undefined !== bb_settings._ob_bbad_link ) { var bb_link = bb_settings._ob_bbad_link; if( '' === bb_link.url ) { this.$element.removeClass( 'bb-column-link' ); return; } else { this.$element.addClass( 'bb-column-link' ); } this.$element.off( 'click.bb' ); this.$element.on( 'click.bb', function() { if( bb_link.is_external ) window.open( bb_link.url ); else location.href = bb_link.url; } ); } } /* Teleporter */ 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(); } /* Widget Stalker */ 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' ); } /* Widget Stalker */ if( changedProp === '_ob_bbad_is_stalker' ) { this.routeWidgetStalkerCol(); } }, /* Widget Stalker */ 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' ); }, /* Teleporter */ doTeleporterEditor: function() { if( 'use-teleporter' !== this.getElementSettings( '_ob_teleporter_use' ) ) return; // bail // E3.0+ wrap the children of .elementor-widget-wrap for the animation purpose var widgets_wrapper = this.$element.find( '.elementor-widget-wrap' ).first(); if( widgets_wrapper.length ) { widgets_wrapper.wrapInner( '
' ); 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; // bail too var this_ob = this; var myself = this.$element; var my_id = this.$element.attr( 'data-id' ); // default classes 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' ); // this column's parent section 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; // bail // parent overflow parent_section.css( 'overflow', 'hidden' ); // new element & effect var hover_effect = this.getElementSettings( '_ob_teleporter_pass_effect' ); var hover_element = '