HEX
Server: LiteSpeed
System: Linux l24.yourwebhosting.net 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: turkishi (1582)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //proc/thread-self/cwd/wp-content/plugins/stratum/includes/widgets/lottie-animations.php
<?php
/**
 * Class: Lottie_Animations
 * Name: Lottie Animations
 * Slug: lottie-animations
 */

namespace Stratum;

use \Elementor\Plugin;
use Elementor\Repeater;
use \Elementor\Utils;
use \Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class Lottie_Animations extends Stratum_Widget_Base {
	protected $widget_name = 'lottie-animations';

	public function __construct($data = [], $args = null) {
		parent::__construct( $data, $args );
	}

	public function get_title() {
		return esc_html__( 'Lottie Animations', 'stratum' );
	}

	public function get_icon() {
		return 'stratum-icon-lottie-animations';
	}

	public function get_categories() {
		return [ 'stratum-widgets' ];
	}

	public function get_script_depends() {
		return [
			'lottie-animations-api'
        ];
    }

    protected function register_controls() {
		$controls = $this;

		/*-----------------------------------------------------------------------------------*/
        /*	Content Tab
        /*-----------------------------------------------------------------------------------*/

        $controls->start_controls_section(
			'general_settings',
			[
				'label' => esc_html__( 'General Settings', 'stratum' )
			]
		);

			$controls->add_control(
				'lottie_url',
				[
					'label' => esc_html__( 'Animation JSON URL', 'stratum' ),
					'type'  => Controls_Manager::TEXT,
					'dynamic' => [ 'active' => true ],
					'description' => 'Get JSON code URL from <a href="https://lottiefiles.com/" target="_blank">here</a>',
					'label_block' => true
				]
			);

			$controls->add_control(
				'lottie_loop',
				[
					'label' => esc_html__( 'Loop','stratum' ),
					'type'  => Controls_Manager::SWITCHER,
					'return_value' => 'true',
					'default'      => ''
				]
			);

			$controls->add_control(
				'lottie_reverse',
				[
					'label' => esc_html__( 'Reverse', 'stratum' ),
					'type'  => Controls_Manager::SWITCHER,
					'return_value' => 'true',
					'default' => '',
					'condition' => [
						'lottie_loop' => 'true',
					]
				]
			);

			$controls->add_control(
				'lottie_hover',
				[
					'label' => esc_html__( 'Only Play on Hover','stratum' ),
					'type'  => Controls_Manager::SWITCHER,
					'return_value'  => 'true',
					'default' => ''
				]
			);

			$controls->add_control(
				'lottie_speed',
				[
					'label'   => esc_html__( 'Animation Speed', 'stratum' ),
					'type'    => Controls_Manager::NUMBER,
					'default' => 1,
					'min'     => 0.1,
					'max'     => 3,
					'step'    => 0.1
				]
			);

			$controls->add_control(
				'animate_on_scroll',
				[
					'label' => esc_html__( 'Animate On Scroll', 'stratum' ),
					'type'  => Controls_Manager::SWITCHER,
					'return_value'  => 'false',
					'condition' => [
						'lottie_hover!'   => 'true',
						'lottie_reverse!' => 'true'
					]
				]
			);

			$controls->add_control(
				'animate_speed',
				[
					'label' => esc_html__( 'Speed', 'stratum' ),
					'type'  => Controls_Manager::SLIDER,
					'default' => [
						'size' => 4
					],
					'range' => [
						'px' => [
							'max' => 10,
							'step' => 0.1
						]
					],
					'condition'     => [
						'lottie_hover!' => 'true',
						'animate_on_scroll' => 'true',
						'lottie_reverse!'   => 'true'
					]
				]
			);

			$controls->add_control(
				'animate_view',
				[
					'label' => esc_html__( 'Viewport', 'stratum' ),
					'type'  => Controls_Manager::SLIDER,
					'default' => [
						'sizes' => [
							'start' => 0,
							'end' => 100
						],
						'unit' => '%'
					],
					'labels' => [
						esc_html__( 'Bottom', 'stratum' ),
						esc_html__( 'Top', 'stratum' )
					],
					'scales' => 1,
					'handles' => 'range',
					'condition' => [
						'lottie_hover!' => 'true',
						'animate_on_scroll' => 'true',
						'lottie_reverse!'   => 'true'
					]
				]
			);

			$controls->add_responsive_control(
				'animation_size',
				[
					'label' => esc_html__( 'Size', 'stratum' ),
					'type'  => Controls_Manager::SLIDER,
					'size_units' => ['px', 'em', '%'],
					'default'    => [
						'unit' => 'px',
						'size' => 600
					],
					'range' => [
						'px' => [
							'min' => 1,
							'max' => 800
						],
						'em' => [
							'min' => 1,
							'max' => 30
						]
					],
					'render_type' => 'template',
					'separator'   => 'before',
					'selectors'   => [
						'{{WRAPPER}} .stratum-lottie-animations__wrapper' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}'
					]
				]
			);

			$controls->add_control(
				'lottie_rotate',
				[
					'label' => esc_html__( 'Rotate (degrees)', 'stratum' ),
					'type'  => Controls_Manager::SLIDER,
					'description' => esc_html__( 'Set rotation value in degress', 'stratum' ),
					'range' => [
						'px' => [
							'min' => -180,
							'max' => 180
						]
					],
					'default' => [
						'size' => 0
					],
					'selectors'     => [
						'{{WRAPPER}} .stratum-lottie-animations__wrapper' => 'transform: rotate({{SIZE}}deg)'
					]
				]
			);

			$controls->add_responsive_control(
				'animation_align',
				[
					'label' => esc_html__( 'Alignment', 'stratum' ),
					'type'  => Controls_Manager::CHOOSE,
					'options' => [
						'flex-start' => [
							'title'=> esc_html__( 'Left', 'stratum' ),
							'icon' => 'fa fa-align-left'
						],
						'center' => [
							'title'=> esc_html__( 'Center', 'stratum' ),
							'icon' => 'fa fa-align-center'
						],
						'flex-end' => [
							'title'=> esc_html__( 'Right', 'stratum' ),
							'icon' => 'fa fa-align-right'
						]
					],
					'default' => 'center',
					'toggle'  => false,
					'separator' => 'before',
					'selectors' => [
						'{{WRAPPER}} .stratum-lottie-animations' => 'justify-content: {{VALUE}}'
					]
				]
			);

			$controls->add_control(
				'lottie_renderer',
				[
					'label'   => esc_html__( 'Render As', 'stratum' ),
					'type'    => Controls_Manager::SELECT,
					'options' => [
						'svg'    => esc_html__( 'SVG', 'stratum' ),
						'canvas' => esc_html__( 'Canvas', 'stratum' )
					],
					'default'      => 'svg',
					'prefix_class' => 'stratum-lottie-',
					'render_type'  => 'template',
					'label_block'  => true,
					'separator'    => 'before'
				]
			);

			$controls->add_control('render_notice',
				[
					'raw'   => esc_html__( 'Set render type to canvas if you\'re having performance issues on the page.', 'stratum' ),
					'type' => Controls_Manager::RAW_HTML,
					'content_classes' => 'elementor-panel-alert elementor-panel-alert-info'
				]
			);

		$controls->end_controls_section();

		$controls->start_controls_section(
			'section_lottie_style',
			[
				'label' => esc_html__( 'Animation', 'stratum' ),
				'tab'   => Controls_Manager::TAB_STYLE,
				'show_label' => false
			]
		);

			$controls->start_controls_tabs( 'tabs_lottie' );

				$controls->start_controls_tab(
					'tab_lottie_normal',
					[
						'label' => esc_html__( 'Normal', 'stratum' )
					]
				);

					$controls->add_control(
						'lottie_background',
						[
							'label' => esc_html__( 'Background Color', 'stratum' ),
							'type'  => Controls_Manager::COLOR,
							'selectors' => [
								'{{WRAPPER}} .stratum-lottie-animations__wrapper' => 'background-color: {{VALUE}}'
							]
						]
					);

					$controls->add_control(
						'opacity',
						[
							'label' => esc_html__( 'Opacity', 'stratum' ),
							'type'  => Controls_Manager::SLIDER,
							'range' => [
								'px' => [
									'max' => 1,
									'min' => 0.10,
									'step' => 0.01
								]
							],
							'selectors' => [
								'{{WRAPPER}} .stratum-lottie-animations__wrapper' => 'opacity: {{SIZE}}'
							]
						]
					);

					$controls->add_group_control(
						Group_Control_Css_Filter::get_type(),
						[
							'name' => 'css_filters',
							'selector' => '{{WRAPPER}} .stratum-lottie-animations__wrapper'
						]
					);

				$controls->end_controls_tab();

				$controls->start_controls_tab(
					'tab_lottie_hover',
					[
						'label' => esc_html__( 'Hover', 'stratum' )
					]
				);

					$controls->add_control(
						'lottie_hover_background',
						[
							'label' => esc_html__( 'Background Color', 'stratum' ),
							'type'  => Controls_Manager::COLOR,
							'selectors' => [
								'{{WRAPPER}} .stratum-lottie-animations__wrapper:hover' => 'background-color: {{VALUE}}'
							]
						]
					);

					$controls->add_control(
						'hover_opacity',
						[
							'label' => esc_html__( 'Opacity', 'stratum' ),
							'type'  => Controls_Manager::SLIDER,
							'range' => [
								'px' => [
									'max'  => 1,
									'min'  => 0.10,
									'step' => 0.01
								],
							],
							'selectors' => [
								'{{WRAPPER}} .stratum-lottie-animations__wrapper:hover' => 'opacity: {{SIZE}}'
							]
						]
					);

					$controls->add_group_control(
						Group_Control_Css_Filter::get_type(),
						[
							'name' => 'hover_css_filters',
							'selector' => '{{WRAPPER}} .stratum-lottie-animations__wrapper:hover'
						]
					);

				$controls->end_controls_tab();

			$controls->end_controls_tabs();

			$controls->add_group_control(
				Group_Control_Border::get_type(),
				[
					'name' => 'lottie_border',
					'selector'  => '{{WRAPPER}} .stratum-lottie-animations__wrapper',
					'separator' => 'before'
				]
			);

			$controls->add_control('lottie_border_radius',
				[
					'label' => esc_html__( 'Border Radius', 'stratum' ),
					'type'  => Controls_Manager::DIMENSIONS,
					'size_units' => [ 'px', '%', 'em' ],
					'selectors' => [
						'{{WRAPPER}} .stratum-lottie-animations__wrapper' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
					]
				]
			);

			$controls->add_responsive_control('animation_padding',
				[
					'label' => esc_html__( 'Padding', 'stratum' ),
					'type'  => Controls_Manager::DIMENSIONS,
					'size_units' => [ 'px', 'em', '%' ],
					'selectors' => [
						'{{WRAPPER}} .stratum-lottie-animations__wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}'
					]
				]
			);

		$controls->end_controls_section();
	}

	protected function render() {
		$this->render_widget( 'php' );
	}

	protected function content_template() {}
	public function render_plain_content( $instance = [] ) {}

	protected function is_dynamic_content(): bool {

		return false;
	}

}

Plugin::instance()->widgets_manager->register( new Lottie_Animations() );