class RazziMotionParallaxHandler extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
const options = {
addBackgroundLayerTo: '',
classes: {
element: 'elementor-motion-parallax',
container: 'elementor-motion-effects-container',
layer: 'elementor-motion-effects-layer',
}
};
return options;
}
addBackgroundLayer() {
const settings = this.getSettings();
this.elements.$motionParallaxContainer = jQuery( '
', { class: settings.classes.container } );
this.elements.$motionParallaxLayer = jQuery( '
', { class: settings.classes.layer } );
this.elements.$motionParallaxContainer.prepend( this.elements.$motionParallaxLayer );
const $addBackgroundLayerTo = settings.addBackgroundLayerTo ? this.$element.find( settings.addBackgroundLayerTo ) : this.$element;
$addBackgroundLayerTo.prepend( this.elements.$motionParallaxContainer );
}
removeBackgroundLayer() {
if ( this.elements.$motionParallaxContainer ) {
this.elements.$motionParallaxContainer.remove();
}
}
activate() {
this.addBackgroundLayer();
this.$element.addClass( this.getSettings( 'classes.element' ) );
this.elements.$motionParallaxLayer.jarallax({
speed: 0.8
});
}
deactivate() {
this.$element.removeClass( this.getSettings( 'classes.element' ) );
this.removeBackgroundLayer();
}
toggle() {
if ( this.getElementSettings( 'background_motion_fx_motion_fx_scrolling' ) ) {
this.activate();
} else {
this.deactivate();
}
}
onInit() {
super.onInit();
this.toggle();
}
}
jQuery( window ).on( 'elementor/frontend/init', () => {
if ( typeof ElementorProFrontendConfig === 'undefined' ) {
elementorFrontend.hooks.addAction( 'frontend/element_ready/section', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziMotionParallaxHandler, { $element: $element } );
});
elementorFrontend.hooks.addAction( 'frontend/element_ready/column', ( $element ) => {
elementorFrontend.elementsHandler.addHandler( RazziMotionParallaxHandler, { $element: $element, addBackgroundLayerTo: ' > .elementor-element-populated' } );
});
}
} );