/**
* Avada Builder Motion Effects Helper class.
*
* @package Avada-Builder
* @since 3.3
*/
// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
exit( 'Direct script access denied.' );
}
/**
* Avada Builder Motion Effects Helper class.
*
* @since 3.10
*/
class Fusion_Builder_Motion_Effects_Helper {
/**
* Class constructor.
*
* @since 3.10
* @access public
*/
public function __construct() {
}
/**
* Motion effects params.
*
* @since 3.10
* @access public
* @return array
*/
public static function get_params() {
$params = [
[
'type' => 'repeater',
'heading' => esc_html__( 'Motion Effects', 'fusion-builder' ),
'param_name' => 'motion_effects',
'description' => __( 'Add Motion Effects for the element.', 'fusion-builder' ),
'group' => esc_attr__( 'Extras', 'fusion-builder' ),
'row_add' => esc_html__( 'Add Motion Effect', 'Avada' ),
'row_title' => esc_html__( 'Motion Effect', 'Avada' ),
'bind_title' => 'type',
'skip_empty_row' => true,
'fields' => [
[
'type' => 'select',
'heading' => esc_attr__( 'Effect Type', 'fusion-builder' ),
'description' => esc_attr__( 'Choose the motion effect type.', 'fusion-builder' ),
'param_name' => 'type',
'value' => [
'' => esc_attr__( 'None', 'fusion-builder' ),
'scroll' => esc_attr__( 'Scroll Effect', 'fusion-builder' ),
'mouse' => esc_attr__( 'Mouse Effect', 'fusion-builder' ),
'infinite' => esc_attr__( 'Infinite Animation', 'fusion-builder' ),
],
'default' => '',
],
[
'type' => 'select',
'heading' => esc_attr__( 'Scroll Effect type', 'fusion-builder' ),
'description' => esc_attr__( 'Choose the scroll effect type.', 'fusion-builder' ),
'param_name' => 'scroll_type',
'value' => [
'transition' => esc_attr__( 'Transition', 'fusion-builder' ),
'fade' => esc_attr__( 'Fade', 'fusion-builder' ),
'scale' => esc_attr__( 'Scale', 'fusion-builder' ),
'rotate' => esc_attr__( 'Rotate', 'fusion-builder' ),
'blur' => esc_attr__( 'Blur', 'fusion-builder' ),
],
'default' => 'transition',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Direction', 'fusion-builder' ),
'description' => esc_attr__( 'Choose the element transition direction.', 'fusion-builder' ),
'param_name' => 'scroll_direction',
'value' => [
'up' => esc_attr__( 'Up', 'fusion-builder' ),
'down' => esc_attr__( 'Down', 'fusion-builder' ),
'right' => esc_attr__( 'Right', 'fusion-builder' ),
'left' => esc_attr__( 'Left', 'fusion-builder' ),
],
'default' => 'up',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'transition',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Speed', 'fusion-builder' ),
'description' => esc_attr__( 'Set the transition speed.', 'fusion-builder' ),
'param_name' => 'transition_speed',
'value' => '1',
'min' => '1',
'max' => '10',
'step' => '0.1',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'transition',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Fade Type', 'fusion-builder' ),
'description' => esc_attr__( 'Choose the element fade type.', 'fusion-builder' ),
'param_name' => 'fade_type',
'value' => [
'in' => esc_attr__( 'Fade In', 'fusion-builder' ),
'out' => esc_attr__( 'Fade Out', 'fusion-builder' ),
],
'default' => 'in',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'fade',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Scale Type', 'fusion-builder' ),
'description' => esc_attr__( 'Choose the element scale type.', 'fusion-builder' ),
'param_name' => 'scale_type',
'value' => [
'up' => esc_attr__( 'Scale Up', 'fusion-builder' ),
'down' => esc_attr__( 'Scale Down', 'fusion-builder' ),
],
'default' => 'up',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'scale',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Initial Scale', 'fusion-builder' ),
'description' => esc_attr__( 'Set the initial scale value.', 'fusion-builder' ),
'param_name' => 'initial_scale',
'value' => '1',
'min' => '0',
'max' => '5',
'step' => '0.1',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'scale',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Maximum Scale', 'fusion-builder' ),
'description' => esc_attr__( 'Set the maximum scale value.', 'fusion-builder' ),
'param_name' => 'max_scale',
'value' => '1.5',
'min' => '0',
'max' => '5',
'step' => '0.1',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'scale',
'operator' => '==',
],
[
'element' => 'scale_type',
'value' => 'up',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Minimum Scale', 'fusion-builder' ),
'description' => esc_attr__( 'Set the minimum scale value.', 'fusion-builder' ),
'param_name' => 'min_scale',
'value' => '0.5',
'min' => '0',
'max' => '5',
'step' => '0.1',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'scale',
'operator' => '==',
],
[
'element' => 'scale_type',
'value' => 'down',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Initial Rotate', 'fusion-builder' ),
'description' => esc_attr__( 'Set the element initial rotate.', 'fusion-builder' ),
'param_name' => 'initial_rotate',
'value' => '0',
'min' => '-360',
'max' => '360',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'rotate',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'End Rotate', 'fusion-builder' ),
'description' => esc_attr__( 'Set the element end rotate.', 'fusion-builder' ),
'param_name' => 'end_rotate',
'value' => '30',
'min' => '-360',
'max' => '360',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'rotate',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Initial Blur', 'fusion-builder' ),
'description' => esc_attr__( 'Set the element initial blur.', 'fusion-builder' ),
'param_name' => 'initial_blur',
'value' => '0',
'min' => '0',
'max' => '100',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'blur',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'End Blur', 'fusion-builder' ),
'description' => esc_attr__( 'Set the element end blur.', 'fusion-builder' ),
'param_name' => 'end_blur',
'value' => '3',
'min' => '0',
'max' => '100',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
[
'element' => 'scroll_type',
'value' => 'blur',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Start When', 'fusion-builder' ),
'param_name' => 'start_element',
'value' => [
'top' => esc_attr__( 'Top Of Element', 'fusion-builder' ),
'center' => esc_attr__( 'Middle Of Element', 'fusion-builder' ),
'bottom' => esc_attr__( 'Bottom Of Element', 'fusion-builder' ),
],
'default' => 'top',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Hits The', 'fusion-builder' ),
'param_name' => 'start_viewport',
'value' => [
'top' => esc_attr__( 'Top Of viewport', 'fusion-builder' ),
'center' => esc_attr__( 'Middle Of Viewport', 'fusion-builder' ),
'bottom' => esc_attr__( 'Bottom Of Viewport', 'fusion-builder' ),
],
'default' => 'bottom',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'End When', 'fusion-builder' ),
'param_name' => 'end_element',
'value' => [
'top' => esc_attr__( 'Top Of Element', 'fusion-builder' ),
'center' => esc_attr__( 'Middle Of Element', 'fusion-builder' ),
'bottom' => esc_attr__( 'Bottom Of Element', 'fusion-builder' ),
],
'default' => 'bottom',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Hits The', 'fusion-builder' ),
'param_name' => 'end_viewport',
'value' => [
'top' => esc_attr__( 'Top Of viewport', 'fusion-builder' ),
'center' => esc_attr__( 'Middle Of Viewport', 'fusion-builder' ),
'bottom' => esc_attr__( 'Bottom Of Viewport', 'fusion-builder' ),
],
'default' => 'top',
'dependency' => [
[
'element' => 'type',
'value' => 'scroll',
'operator' => '==',
],
],
],
/* Mouse effects */
[
'type' => 'select',
'heading' => esc_attr__( 'Mouse Effect Type', 'fusion-builder' ),
'description' => esc_attr__( 'Choose mouse effect type.', 'fusion-builder' ),
'param_name' => 'mouse_effect',
'value' => [
'track' => esc_attr__( 'Tracking', 'fusion-builder' ),
'tilt' => esc_attr__( '3D Tilt', 'fusion-builder' ),
],
'default' => 'track',
'dependency' => [
[
'element' => 'type',
'value' => 'mouse',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Direction', 'fusion-builder' ),
'param_name' => 'mouse_effect_direction',
'value' => [
'same' => esc_attr__( 'Same', 'fusion-builder' ),
'opposite' => esc_attr__( 'Opposite', 'fusion-builder' ),
],
'default' => 'opposite',
'dependency' => [
[
'element' => 'type',
'value' => 'mouse',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Speed', 'fusion-builder' ),
'description' => esc_attr__( 'Set the effect speed.', 'fusion-builder' ),
'param_name' => 'mouse_effect_speed',
'value' => '2',
'min' => '1',
'max' => '10',
'step' => '0.1',
'dependency' => [
[
'element' => 'type',
'value' => 'mouse',
'operator' => '==',
],
],
],
[
'type' => 'select',
'heading' => esc_attr__( 'Animation', 'fusion-builder' ),
'param_name' => 'infinite_animation',
'value' => [
'float' => esc_attr__( 'Float', 'fusion-builder' ),
'pulse' => esc_attr__( 'Pulse', 'fusion-builder' ),
'rotate' => esc_attr__( 'Rotate', 'fusion-builder' ),
'wiggle' => esc_attr__( 'Wiggle', 'fusion-builder' ),
],
'default' => 'float',
'dependency' => [
[
'element' => 'type',
'value' => 'infinite',
'operator' => '==',
],
],
],
[
'type' => 'range',
'heading' => esc_attr__( 'Speed', 'fusion-builder' ),
'description' => esc_attr__( 'Set the effect speed.', 'fusion-builder' ),
'param_name' => 'infinite_animation_speed',
'value' => '2',
'min' => '1',
'max' => '10',
'step' => '0.1',
'dependency' => [
[
'element' => 'type',
'value' => 'infinite',
'operator' => '==',
],
],
],
],
],
[
'type' => 'checkbox_button_set',
'heading' => esc_html__( 'Apply Motion Scroll Effects On', 'fusion-builder' ),
'description' => esc_html__( 'Choose which devices the scroll effects will be applied to.', 'fusion-builder' ),
'param_name' => 'scroll_motion_devices',
'group' => esc_attr__( 'Extras', 'fusion-builder' ),
'value' => fusion_builder_visibility_options( 'full' ),
'default' => fusion_builder_default_visibility( 'array' ),
],
];
return $params;
}
/**
* Motion effects data attribute.
*
* @since 3.10
* @access public
* @param array $args The placeholder arguments.
* @param array $attr The attributes.
* @return array
*/
public static function get_data_attr( $args, $attr ) {
// Early exit if no motion effects.
if ( ! is_array( $args ) || empty( $args['motion_effects'] ) ) {
return;
}
$effects = json_decode( base64_decode( $args['motion_effects'] ), true );
$effects_array = [];
if ( is_array( $effects ) && ! empty( $effects ) ) {
foreach ( $effects as $effect ) {
if ( ! empty( $effect['type'] ) ) {
$effects_array[] = self::clean_empty( $effect );
}
}
}
if ( ! empty( $effects_array ) ) {
$attr['data-motion-effects'] = wp_json_encode( $effects_array );
Fusion_Dynamic_JS::enqueue_script( 'fusion-motion-effects' );
}
if ( ! empty( $args['scroll_motion_devices'] ) ) {
$attr['data-scroll-devices'] = $args['scroll_motion_devices'];
}
return $attr;
}
/**
* Clean empty arguments.
*
* @since 4.0
* @access public
* @param array $args array.
* @return array
*/
public static function clean_empty( $args = [] ) {
foreach ( (array) $args as $key => $value ) {
if ( empty( $value ) && '0' !== $value && 0 !== $value ) {
unset( $args[ $key ] );
}
}
return $args;
}
}
Warning: Cannot modify header information - headers already sent by (output started at /home1/jeipplmy/public_html/wp-content/plugins/fusion-builder/inc/helpers/class-fusion-builder-motion-effects-helper.php:54) in /home1/jeipplmy/public_html/wp-includes/pluggable.php on line 1450
Warning: Cannot modify header information - headers already sent by (output started at /home1/jeipplmy/public_html/wp-content/plugins/fusion-builder/inc/helpers/class-fusion-builder-motion-effects-helper.php:54) in /home1/jeipplmy/public_html/wp-includes/pluggable.php on line 1453