ager::MEDIA, 'dynamic' => [ 'active' => true, ], 'condition' => [ 'background' => [ 'video' ], ], 'selectors' => [ '{{SELECTOR}}' => 'background: url("{{URL}}") 50% 50%; background-size: cover;', ], 'of_type' => 'video', ]; $fields['slideshow_gallery'] = [ 'label' => esc_html__( 'Images', 'elementor' ), 'type' => Controls_Manager::GALLERY, 'condition' => [ 'background' => [ 'slideshow' ], ], 'show_label' => false, 'of_type' => 'slideshow', 'frontend_available' => true, ]; $fields['slideshow_loop'] = [ 'label' => esc_html__( 'Infinite Loop', 'elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'condition' => [ 'background' => [ 'slideshow' ], ], 'of_type' => 'slideshow', 'frontend_available' => true, ]; $fields['slideshow_slide_duration'] = [ 'label' => esc_html__( 'Duration', 'elementor' ) . ' (ms)', 'type' => Controls_Manager::NUMBER, 'default' => 5000, 'condition' => [ 'background' => [ 'slideshow' ], ], 'frontend_available' => true, ]; $fields['slideshow_slide_transition'] = [ 'label' => esc_html__( 'Transition', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'fade', 'options' => [ 'fade' => 'Fade', 'slide_right' => 'Slide Right', 'slide_left' => 'Slide Left', 'slide_up' => 'Slide Up', 'slide_down' => 'Slide Down', ], 'condition' => [ 'background' => [ 'slideshow' ], ], 'of_type' => 'slideshow', 'frontend_available' => true, ]; $fields['slideshow_transition_duration'] = [ 'label' => esc_html__( 'Transition Duration', 'elementor' ) . ' (ms)', 'type' => Controls_Manager::NUMBER, 'default' => 500, 'condition' => [ 'background' => [ 'slideshow' ], ], 'frontend_available' => true, ]; $fields['slideshow_background_size'] = [ 'label' => esc_html__( 'Background Size', 'elementor' ), 'type' => Controls_Manager::SELECT, 'responsive' => true, 'default' => '', 'options' => [ '' => esc_html__( 'Default', 'elementor' ), 'auto' => esc_html__( 'Auto', 'elementor' ), 'cover' => esc_html__( 'Cover', 'elementor' ), 'contain' => esc_html__( 'Contain', 'elementor' ), ], 'selectors' => [ '{{WRAPPER}} .elementor-background-slideshow__slide__image' => 'background-size: {{VALUE}};', ], 'condition' => [ 'background' => [ 'slideshow' ], ], ]; $fields['slideshow_background_position'] = [ 'label' => esc_html__( 'Background Position', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'responsive' => true, 'options' => [ '' => esc_html__( 'Default', 'elementor' ), 'center center' => esc_html__( 'Center Center', 'elementor' ), 'center left' => esc_html__( 'Center Left', 'elementor' ), 'center right' => esc_html__( 'Center Right', 'elementor' ), 'top center' => esc_html__( 'Top Center', 'elementor' ), 'top left' => esc_html__( 'Top Left', 'elementor' ), 'top right' => esc_html__( 'Top Right', 'elementor' ), 'bottom center' => esc_html__( 'Bottom Center', 'elementor' ), 'bottom left' => esc_html__( 'Bottom Left', 'elementor' ), 'bottom right' => esc_html__( 'Bottom Right', 'elementor' ), ], 'selectors' => [ '{{WRAPPER}} .elementor-background-slideshow__slide__image' => 'background-position: {{VALUE}};', ], 'condition' => [ 'background' => [ 'slideshow' ], ], ]; $fields['slideshow_lazyload'] = [ 'label' => esc_html__( 'Lazyload', 'elementor' ), 'type' => Controls_Manager::SWITCHER, 'separator' => 'before', 'condition' => [ 'background' => [ 'slideshow' ], ], 'of_type' => 'slideshow', 'frontend_available' => true, ]; $fields['slideshow_ken_burns'] = [ 'label' => esc_html__( 'Ken Burns Effect', 'elementor' ), 'type' => Controls_Manager::SWITCHER, 'separator' => 'before', 'condition' => [ 'background' => [ 'slideshow' ], ], 'of_type' => 'slideshow', 'frontend_available' => true, ]; $fields['slideshow_ken_burns_zoom_direction'] = [ 'label' => esc_html__( 'Direction', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'in', 'options' => [ 'in' => esc_html__( 'In', 'elementor' ), 'out' => esc_html__( 'Out', 'elementor' ), ], 'condition' => [ 'background' => [ 'slideshow' ], 'slideshow_ken_burns!' => '', ], 'of_type' => 'slideshow', 'frontend_available' => true, ]; return $fields; } /** * Get child default args. * * Retrieve the default arguments for all the child controls for a specific group * control. * * @since 1.2.2 * @access protected * * @return array Default arguments for all the child controls. */ protected function get_child_default_args() { return [ 'types' => [ 'classic', 'gradient' ], 'selector' => '{{WRAPPER}}:not(.elementor-motion-effects-element-type-background), {{WRAPPER}} > .elementor-motion-effects-container > .elementor-motion-effects-layer', ]; } /** * Filter fields. * * Filter which controls to display, using `include`, `exclude`, `condition` * and `of_type` arguments. * * @since 1.2.2 * @access protected * * @return array Control fields. */ protected function filter_fields() { $fields = parent::filter_fields(); $args = $this->get_args(); foreach ( $fields as &$field ) { if ( isset( $field['of_type'] ) && ! in_array( $field['of_type'], $args['types'] ) ) { unset( $field ); } } return $fields; } /** * Prepare fields. * * Process background control fields before adding them to `add_control()`. * * @since 1.2.2 * @access protected * * @param array $fields Background control fields. * * @return array Processed fields. */ protected function prepare_fields( $fields ) { $args = $this->get_args(); $background_types = self::get_background_types(); $choose_types = []; foreach ( $args['types'] as $type ) { if ( isset( $background_types[ $type ] ) ) { $choose_types[ $type ] = $background_types[ $type ]; } } $fields['background']['options'] = $choose_types; return parent::prepare_fields( $fields ); } /** * Get default options. * * Retrieve the default options of the background control. Used to return the * default options while initializing the background control. * * @since 1.9.0 * @access protected * * @return array Default background control options. */ protected function get_default_options() { return [ 'popover' => false, ]; } }