PKs"\OA99text.phpnuW+Aget_control_uid(); ?>
<# if ( data.label ) {#> <# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> 'text', 'placeholder' => '', 'title' => '', 'dynamic' => [ 'categories' => [ TagsModule::TEXT_CATEGORY, ], ], ]; } } PKs"\ /HHexit-animation.phpnuW+A [ 'fadeIn' => 'Fade Out', 'fadeInDown' => 'Fade Out Up', 'fadeInLeft' => 'Fade Out Left', 'fadeInRight' => 'Fade Out Right', 'fadeInUp' => 'Fade Out Down', ], 'Zooming' => [ 'zoomIn' => 'Zoom Out', 'zoomInDown' => 'Zoom Out Up', 'zoomInLeft' => 'Zoom Out Left', 'zoomInRight' => 'Zoom Out Right', 'zoomInUp' => 'Zoom Out Down', ], 'Sliding' => [ 'slideInDown' => 'Slide Out Up', 'slideInLeft' => 'Slide Out Left', 'slideInRight' => 'Slide Out Right', 'slideInUp' => 'Slide Out Down', ], 'Rotating' => [ 'rotateIn' => 'Rotate Out', 'rotateInDownLeft' => 'Rotate Out Up Left', 'rotateInDownRight' => 'Rotate Out Up Right', 'rotateInUpRight' => 'Rotate Out Down Left', 'rotateInUpLeft' => 'Rotate Out Down Right', ], 'Light Speed' => [ 'lightSpeedIn' => 'Light Speed Out', ], 'Specials' => [ 'rollIn' => 'Roll Out', ], ]; /** * Element appearance animations list. * * @since 2.5.0 * * @param array $additional_animations Additional Animations array. */ $additional_animations = apply_filters( 'elementor/controls/exit-animations/additional_animations', [] ); return array_merge( $animations, $additional_animations ); } } PKs"\J icons.phpnuW+A '', 'library' => '', ]; } /** * Render Icons control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 2.6.0 * @access public */ public function content_template() { ?> <# if ( 'inline' === data.skin ) { #> render_inline_skin(); ?> <# } else { #> render_media_skin(); ?> <# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #>
get_control_uid(); ?>
<# if ( ! data.exclude_inline_options.includes( 'svg' ) ) { #> <# } if ( ! data.exclude_inline_options.includes( 'icon' ) ) { #> <# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> true, 'dynamic' => [ 'categories' => [ TagsModule::IMAGE_CATEGORY ], 'returnType' => 'object', ], 'search_bar' => true, 'recommended' => false, 'is_svg_enabled' => Svg_Handler::is_enabled(), 'skin' => 'media', 'exclude_inline_options' => [], ]; } public function support_svg_import( $mimes ) { $mimes['svg'] = 'image/svg+xml'; return $mimes; } public function on_import( $settings ) { if ( empty( $settings['library'] ) || 'svg' !== $settings['library'] || empty( $settings['value']['url'] ) ) { return $settings; } add_filter( 'upload_mimes', [ $this, 'support_svg_import' ], 100 ); $imported = Plugin::$instance->templates_manager->get_import_images_instance()->import( $settings['value'] ); remove_filter( 'upload_mimes', [ $this, 'support_svg_import' ], 100 ); if ( ! $imported ) { $settings['value'] = ''; $settings['library'] = ''; } else { $settings['value'] = $imported; } return $settings; } } PKs"\#ϴ hidden.phpnuW+A 'yes', ]; } /** * Render popover toggle control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.9.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
get_control_uid( '{{value}}' ); ?>
<# _.each( data.options, function( options, value ) { #> <# } ); #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> [], 'toggle' => true, ]; } } PKs"\t8 textarea.phpnuW+A true, 'rows' => 5, 'placeholder' => '', 'dynamic' => [ 'categories' => [ TagsModule::TEXT_CATEGORY ], ], ]; } /** * Render textarea control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> '', 'description' => '', 'show_label' => true, 'label_block' => false, 'separator' => 'default', ]; /** * Get features. * * Retrieve the list of all the available features. Currently Elementor uses only * the `UI` feature. * * @since 1.5.0 * @access public * @static * * @return array Features array. */ public static function get_features() { return []; } /** * Get control type. * * Retrieve the control type. * * @since 1.5.0 * @access public * @abstract */ abstract public function get_type(); /** * Control base constructor. * * Initializing the control base class. * * @since 1.5.0 * @access public */ public function __construct() { $this->set_settings( array_merge( $this->_base_settings, $this->get_default_settings() ) ); $this->set_settings( 'features', static::get_features() ); } /** * Enqueue control scripts and styles. * * Used to register and enqueue custom scripts and styles used by the control. * * @since 1.5.0 * @access public */ public function enqueue() {} /** * Control content template. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * Note that the content template is wrapped by Base_Control::print_template(). * * @since 1.5.0 * @access public * @abstract */ abstract public function content_template(); /** * Print control template. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.5.0 * @access public */ final public function print_template() { ?> [], 'title_field' => '', 'prevent_empty' => true, 'is_repeater' => true, 'item_actions' => [ 'add' => true, 'duplicate' => true, 'remove' => true, 'sort' => true, ], ]; } /** * Get repeater control value. * * Retrieve the value of the repeater control from a specific Controls_Stack. * * @since 1.0.0 * @access public * * @param array $control Control * @param array $settings Controls_Stack settings * * @return mixed Control values. */ public function get_value( $control, $settings ) { $value = parent::get_value( $control, $settings ); if ( ! empty( $value ) ) { foreach ( $value as &$item ) { foreach ( $control['fields'] as $field ) { $control_obj = Plugin::$instance->controls_manager->get_control( $field['type'] ); // Prior to 1.5.0 the fields may contains non-data controls. if ( ! $control_obj instanceof Base_Data_Control ) { continue; } $item[ $field['name'] ] = $control_obj->get_value( $field, $item ); } } } return $value; } /** * Import repeater. * * Used as a wrapper method for inner controls while importing Elementor * template JSON file, and replacing the old data. * * @since 1.8.0 * @access public * * @param array $settings Control settings. * @param array $control_data Optional. Control data. Default is an empty array. * * @return array Control settings. */ public function on_import( $settings, $control_data = [] ) { if ( empty( $settings ) || empty( $control_data['fields'] ) ) { return $settings; } $method = 'on_import'; foreach ( $settings as &$item ) { foreach ( $control_data['fields'] as $field ) { if ( empty( $field['name'] ) || empty( $item[ $field['name'] ] ) ) { continue; } $control_obj = Plugin::$instance->controls_manager->get_control( $field['type'] ); if ( ! $control_obj ) { continue; } if ( method_exists( $control_obj, $method ) ) { $item[ $field['name'] ] = $control_obj->{$method}( $item[ $field['name'] ], $field ); } } } return $settings; } /** * Render repeater control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?>
<# if ( itemActions.add ) { #>
<# } #> '', 'id' => '', ]; } /** * Import media images. * * Used to import media control files from external sites while importing * Elementor template JSON file, and replacing the old data. * * @since 1.0.0 * @access public * * @param array $settings Control settings * * @return array Control settings. */ public function on_import( $settings ) { if ( empty( $settings['url'] ) ) { return $settings; } $settings = Plugin::$instance->templates_manager->get_import_images_instance()->import( $settings ); if ( ! $settings ) { $settings = [ 'id' => '', 'url' => Utils::get_placeholder_image_src(), ]; } return $settings; } /** * Enqueue media control scripts and styles. * * Used to register and enqueue custom scripts and styles used by the media * control. * * @since 1.0.0 * @access public */ public function enqueue() { global $wp_version; $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_media(); wp_enqueue_style( 'media', admin_url( '/css/media' . $suffix . '.css' ), [], $wp_version ); wp_register_script( 'image-edit', '/wp-admin/js/image-edit' . $suffix . '.js', [ 'jquery', 'json2', 'imgareaselect', ], $wp_version, true ); wp_enqueue_script( 'image-edit' ); } /** * Render media control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?>
<# if( 'image' === data.media_type ) { #>
<# } else if( 'video' === data.media_type ) { #> <# } #>
<# if( 'image' === data.media_type ) { #>
<# } else if( 'video' === data.media_type ) { #>
<# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #>
true, 'media_type' => 'image', 'dynamic' => [ 'categories' => [ TagsModule::IMAGE_CATEGORY ], 'returnType' => 'object', ], ]; } /** * Get media control image title. * * Retrieve the `title` of the image selected by the media control. * * @since 1.0.0 * @access public * @static * * @param array $attachment Media attachment. * * @return string Image title. */ public static function get_image_title( $attachment ) { if ( empty( $attachment['id'] ) ) { return ''; } return get_the_title( $attachment['id'] ); } /** * Get media control image alt. * * Retrieve the `alt` value of the image selected by the media control. * * @since 1.0.0 * @access public * @static * * @param array $instance Media attachment. * * @return string Image alt. */ public static function get_image_alt( $instance ) { if ( empty( $instance['id'] ) ) { return ''; } $attachment_id = $instance['id']; if ( ! $attachment_id ) { return ''; } $attachment = get_post( $attachment_id ); if ( ! $attachment ) { return ''; } $alt = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ); if ( ! $alt ) { $alt = $attachment->post_excerpt; if ( ! $alt ) { $alt = $attachment->post_title; } } return trim( strip_tags( $alt ) ); } } PKs"\~t'btabs.phpnuW+Astart_controls_tabs()` * and in the end `$widget->end_controls_tabs()`. * * @since 1.0.0 */ class Control_Tabs extends Base_UI_Control { /** * Get tabs control type. * * Retrieve the control type, in this case `tabs`. * * @since 1.0.0 * @access public * * @return string Control type. */ public function get_type() { return 'tabs'; } /** * Render tabs control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() {} /** * Get tabs control default settings. * * Retrieve the default settings of the tabs control. Used to return the * default settings while initializing the tabs control. * * @since 1.0.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { return [ 'separator' => 'none', ]; } } PKs"\:;qbase-multiple.phpnuW+A value` array. * * @since 1.0.0 * @abstract */ abstract class Control_Base_Multiple extends Base_Data_Control { /** * Get multiple control default value. * * Retrieve the default value of the multiple control. Used to return the default * values while initializing the multiple control. * * @since 1.0.0 * @access public * * @return array Control default value. */ public function get_default_value() { return []; } /** * Get multiple control value. * * Retrieve the value of the multiple control from a specific Controls_Stack settings. * * @since 1.0.0 * @access public * * @param array $control Control * @param array $settings Settings * * @return mixed Control values. */ public function get_value( $control, $settings ) { $value = parent::get_value( $control, $settings ); if ( empty( $control['default'] ) ) { $control['default'] = []; } if ( ! is_array( $value ) ) { $value = []; } $control['default'] = array_merge( $this->get_default_value(), $control['default'] ); return array_merge( $control['default'], $value ); } /** * Get multiple control style value. * * Retrieve the style of the control. Used when adding CSS rules to the control * while extracting CSS from the `selectors` data argument. * * @since 1.0.5 * @since 2.3.3 New `$control_data` parameter added. * @access public * * @param string $css_property CSS property. * @param array $control_value Control value. * @param array $control_data Control Data. * * @return array Control style value. */ public function get_style_value( $css_property, $control_value, array $control_data ) { return $control_value[ strtolower( $css_property ) ]; } } PKs"\( section.phpnuW+Astart_controls_section()` * and `$widget->end_controls_section()` to wrap a set of controls. * * @since 1.0.0 */ class Control_Section extends Base_UI_Control { /** * Get section control type. * * Retrieve the control type, in this case `section`. * * @since 1.0.0 * @access public * * @return string Control type. */ public function get_type() { return 'section'; } /** * Render section control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?>
{{{ data.label }}}
'none', ]; } } PKs"\N3))code.phpnuW+A true, 'language' => 'html', // html/css 'rows' => 10, ]; } /** * Render code control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> '', 'height' => '', ]; } /** * Get image dimensions control default settings. * * Retrieve the default settings of the image dimensions control. Used to return * the default settings while initializing the image dimensions control. * * @since 1.0.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { return [ 'show_label' => false, 'label_block' => true, ]; } /** * Render image dimensions control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { if ( ! $this->is_image_editor_supports() ) : ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #>
get_control_uid( 'width' ); ?>
x
get_control_uid( 'height' ); ?>
'image/jpeg', ]; return ( wp_image_editor_supports( $arg ) ); } } PKs"\SP4U wysiwyg.phpnuW+A
{{{ data.label }}}
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> true, 'dynamic' => [ 'active' => true, 'categories' => [ TagsModule::TEXT_CATEGORY ], ], ]; } } PKs"\:  structure.phpnuW+Aget_control_uid( '{{ preset.key }}' ); ?>
<# var morePresets = getMorePresets(); if ( morePresets.length ) { #>
<# _.each( morePresets, function( preset ) { #>
{{{ preset.preset.join( ', ' ) }}}
<# } ); #>
<# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> 'none', 'label_block' => true, 'show_label' => false, ]; } } PKs"\G!url.phpnuW+A '', 'is_external' => '', 'nofollow' => '', 'custom_attributes' => '', ]; } /** * Get url control default settings. * * Retrieve the default settings of the url control. Used to return the default * settings while initializing the url control. * * @since 1.0.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { return [ 'label_block' => true, 'placeholder' => __( 'Paste URL or type', 'elementor' ), 'autocomplete' => true, 'options' => [ 'is_external', 'nofollow', 'custom_attributes' ], 'dynamic' => [ 'categories' => [ TagsModule::URL_CATEGORY ], 'property' => 'url', ], 'custom_attributes_description' => __( 'Set custom attributes for the link element. Separate attribute keys from values using the | (pipe) character. Separate key-value pairs with a comma.', 'elementor' ), ]; } /** * Render url control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); $is_external_control_uid = $this->get_control_uid( 'is_external' ); $nofollow_control_uid = $this->get_control_uid( 'nofollow' ); $custom_attributes_uid = $this->get_control_uid( 'custom_attributes' ); ?>
<# if ( ( data.options && -1 !== data.options.indexOf( 'custom_attributes' ) ) && data.custom_attributes_description ) { #>
{{{ data.custom_attributes_description }}}
<# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #>
true, 'scheme' => '', 'dynamic' => [ 'categories' => [ TagsModule::COLOR_CATEGORY, ], 'active' => true, ], ]; } } PKs"\k++ gallery.phpnuW+Atemplates_manager->get_import_images_instance()->import( $attachment ); } // Filter out attachments that don't exist $settings = array_filter( $settings ); return $settings; } /** * Render gallery control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?>
{{{ data.label }}}
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #>
true, 'separator' => 'none', 'dynamic' => [ 'categories' => [ TagsModule::GALLERY_CATEGORY ], 'returnType' => 'object', ], ]; } /** * Get gallery control default values. * * Retrieve the default value of the gallery control. Used to return the default * values while initializing the gallery control. * * @since 1.0.0 * @access public * * @return array Control default value. */ public function get_default_value() { return []; } } PKs"\C4ZZ date-time.phpnuW+A true, 'picker_options' => [], ]; } /** * Render date time control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> 0, 'vertical' => 0, 'blur' => 10, 'spread' => 0, 'color' => 'rgba(0,0,0,0.5)', ]; } /** * Get box shadow control sliders. * * Retrieve the sliders of the box shadow control. Sliders are used while * rendering the control output in the editor. * * @since 1.0.0 * @access public * * @return array Control sliders. */ public function get_sliders() { return [ 'horizontal' => [ 'label' => __( 'Horizontal', 'elementor' ), 'min' => -100, 'max' => 100, ], 'vertical' => [ 'label' => __( 'Vertical', 'elementor' ), 'min' => -100, 'max' => 100, ], 'blur' => [ 'label' => __( 'Blur', 'elementor' ), 'min' => 0, 'max' => 100, ], 'spread' => [ 'label' => __( 'Spread', 'elementor' ), 'min' => -100, 'max' => 100, ], ]; } /** * Render box shadow control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?>
get_sliders() as $slider_name => $slider ) : $control_uid = $this->get_control_uid( $slider_name ); ?>
'', 'event' => '', 'button_type' => 'default', ]; } /** * Render button control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.9.0 * @access public */ public function content_template() { ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> 'none', ]; } /** * Render divider control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 2.0.0 * @access public */ public function content_template() {} } PKs"\dimensions.phpnuW+A '', 'right' => '', 'bottom' => '', 'left' => '', 'isLinked' => true, ] ); } /** * Get dimensions control default settings. * * Retrieve the default settings of the dimensions control. Used to return the * default settings while initializing the dimensions control. * * @since 1.0.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { return array_merge( parent::get_default_settings(), [ 'label_block' => true, 'allowed_dimensions' => 'all', 'placeholder' => '', ] ); } /** * Render dimensions control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $dimensions = [ 'top' => __( 'Top', 'elementor' ), 'right' => __( 'Right', 'elementor' ), 'bottom' => __( 'Bottom', 'elementor' ), 'left' => __( 'Left', 'elementor' ), ]; ?>
print_units_template(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> start_controls_tab()` * and in the end `$widget->end_controls_tab()`. * * @since 1.0.0 */ class Control_Tab extends Base_UI_Control { /** * Get tab control type. * * Retrieve the control type, in this case `tab`. * * @since 1.0.0 * @access public * * @return string Control type. */ public function get_type() { return 'tab'; } /** * Render tab control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?>
{{{ data.label }}}
'none', ]; } } PKs"\f select.phpnuW+A [], ]; } /** * Render select control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.label ) {#> <# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> __( 'No', 'elementor' ), 'label_on' => __( 'Yes', 'elementor' ), 'return_value' => 'yes', ]; } } PKs"\ebase-units.phpnuW+A 'px', ]; } /** * Get units control default settings. * * Retrieve the default settings of the units control. Used to return the default * settings while initializing the units control. * * @since 1.0.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { return [ 'size_units' => [ 'px' ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, 'step' => 1, ], 'em' => [ 'min' => 0.1, 'max' => 10, 'step' => 0.1, ], 'rem' => [ 'min' => 0.1, 'max' => 10, 'step' => 0.1, ], '%' => [ 'min' => 0, 'max' => 100, 'step' => 1, ], 'deg' => [ 'min' => 0, 'max' => 360, 'step' => 1, ], 'vh' => [ 'min' => 0, 'max' => 100, 'step' => 1, ], 'vw' => [ 'min' => 0, 'max' => 100, 'step' => 1, ], ], ]; } /** * Print units control settings. * * Used to generate the units control template in the editor. * * @since 1.0.0 * @access protected */ protected function print_units_template() { ?> <# if ( data.size_units && data.size_units.length > 1 ) { #>
<# _.each( data.size_units, function( unit ) { #> <# } ); #>
<# } #> bb wp-widget.phpnuW+A
Loading..
_x( 'Blur', 'Filter Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'required' => 'true', 'range' => [ 'px' => [ 'min' => 0, 'max' => 10, 'step' => 0.1, ], ], 'default' => [ 'size' => 0, ], 'selectors' => [ '{{SELECTOR}}' => 'filter: brightness( {{brightness.SIZE}}% ) contrast( {{contrast.SIZE}}% ) saturate( {{saturate.SIZE}}% ) blur( {{blur.SIZE}}px ) hue-rotate( {{hue.SIZE}}deg )', ], ]; $controls['brightness'] = [ 'label' => _x( 'Brightness', 'Filter Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'render_type' => 'ui', 'required' => 'true', 'default' => [ 'size' => 100, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 200, ], ], 'separator' => 'none', ]; $controls['contrast'] = [ 'label' => _x( 'Contrast', 'Filter Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'render_type' => 'ui', 'required' => 'true', 'default' => [ 'size' => 100, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 200, ], ], 'separator' => 'none', ]; $controls['saturate'] = [ 'label' => _x( 'Saturation', 'Filter Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'render_type' => 'ui', 'required' => 'true', 'default' => [ 'size' => 100, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 200, ], ], 'separator' => 'none', ]; $controls['hue'] = [ 'label' => _x( 'Hue', 'Filter Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'render_type' => 'ui', 'required' => 'true', 'default' => [ 'size' => 0, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 360, ], ], 'separator' => 'none', ]; return $controls; } /** * Get default options. * * Retrieve the default options of the CSS filter control. Used to return the * default options while initializing the CSS filter control. * * @since 2.1.0 * @access protected * * @return array Default CSS filter control options. */ protected function get_default_options() { return [ 'popover' => [ 'starter_name' => 'css_filter', 'starter_title' => _x( 'CSS Filters', 'Filter Control', 'elementor' ), 'settings' => [ 'render_type' => 'ui', ], ], ]; } } PKs"\U9 9 groups/box-shadow.phpnuW+A _x( 'Box Shadow', 'Box Shadow Control', 'elementor' ), 'type' => Controls_Manager::BOX_SHADOW, 'selectors' => [ '{{SELECTOR}}' => 'box-shadow: {{HORIZONTAL}}px {{VERTICAL}}px {{BLUR}}px {{SPREAD}}px {{COLOR}} {{box_shadow_position.VALUE}};', ], ]; $controls['box_shadow_position'] = [ 'label' => _x( 'Position', 'Box Shadow Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'options' => [ ' ' => _x( 'Outline', 'Box Shadow Control', 'elementor' ), 'inset' => _x( 'Inset', 'Box Shadow Control', 'elementor' ), ], 'default' => ' ', 'render_type' => 'ui', ]; return $controls; } /** * Get default options. * * Retrieve the default options of the box shadow control. Used to return the * default options while initializing the box shadow control. * * @since 1.9.0 * @access protected * * @return array Default box shadow control options. */ protected function get_default_options() { return [ 'popover' => [ 'starter_title' => _x( 'Box Shadow', 'Box Shadow Control', 'elementor' ), 'starter_name' => 'box_shadow_type', 'starter_value' => 'yes', 'settings' => [ 'render_type' => 'ui', ], ], ]; } } PKs"\YYgroups/background.phpnuW+A [ 'title' => _x( 'Classic', 'Background Control', 'elementor' ), 'icon' => 'eicon-paint-brush', ], 'gradient' => [ 'title' => _x( 'Gradient', 'Background Control', 'elementor' ), 'icon' => 'eicon-barcode', ], 'video' => [ 'title' => _x( 'Video', 'Background Control', 'elementor' ), 'icon' => 'eicon-video-camera', ], 'slideshow' => [ 'title' => _x( 'Slideshow', 'Background Control', 'elementor' ), 'icon' => 'eicon-slideshow', ], ]; } /** * Init fields. * * Initialize background control fields. * * @since 1.2.2 * @access public * * @return array Control fields. */ public function init_fields() { $fields = []; $fields['background'] = [ 'label' => _x( 'Background Type', 'Background Control', 'elementor' ), 'type' => Controls_Manager::CHOOSE, 'render_type' => 'ui', ]; $fields['color'] = [ 'label' => _x( 'Color', 'Background Control', 'elementor' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'title' => _x( 'Background Color', 'Background Control', 'elementor' ), 'selectors' => [ '{{SELECTOR}}' => 'background-color: {{VALUE}};', ], 'condition' => [ 'background' => [ 'classic', 'gradient' ], ], ]; $fields['color_stop'] = [ 'label' => _x( 'Location', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ '%' ], 'default' => [ 'unit' => '%', 'size' => 0, ], 'render_type' => 'ui', 'condition' => [ 'background' => [ 'gradient' ], ], 'of_type' => 'gradient', ]; $fields['color_b'] = [ 'label' => _x( 'Second Color', 'Background Control', 'elementor' ), 'type' => Controls_Manager::COLOR, 'default' => '#f2295b', 'render_type' => 'ui', 'condition' => [ 'background' => [ 'gradient' ], ], 'of_type' => 'gradient', ]; $fields['color_b_stop'] = [ 'label' => _x( 'Location', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ '%' ], 'default' => [ 'unit' => '%', 'size' => 100, ], 'render_type' => 'ui', 'condition' => [ 'background' => [ 'gradient' ], ], 'of_type' => 'gradient', ]; $fields['gradient_type'] = [ 'label' => _x( 'Type', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'linear' => _x( 'Linear', 'Background Control', 'elementor' ), 'radial' => _x( 'Radial', 'Background Control', 'elementor' ), ], 'default' => 'linear', 'render_type' => 'ui', 'condition' => [ 'background' => [ 'gradient' ], ], 'of_type' => 'gradient', ]; $fields['gradient_angle'] = [ 'label' => _x( 'Angle', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'deg' ], 'default' => [ 'unit' => 'deg', 'size' => 180, ], 'range' => [ 'deg' => [ 'step' => 10, ], ], 'selectors' => [ '{{SELECTOR}}' => 'background-color: transparent; background-image: linear-gradient({{SIZE}}{{UNIT}}, {{color.VALUE}} {{color_stop.SIZE}}{{color_stop.UNIT}}, {{color_b.VALUE}} {{color_b_stop.SIZE}}{{color_b_stop.UNIT}})', ], 'condition' => [ 'background' => [ 'gradient' ], 'gradient_type' => 'linear', ], 'of_type' => 'gradient', ]; $fields['gradient_position'] = [ 'label' => _x( 'Position', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'center center' => _x( 'Center Center', 'Background Control', 'elementor' ), 'center left' => _x( 'Center Left', 'Background Control', 'elementor' ), 'center right' => _x( 'Center Right', 'Background Control', 'elementor' ), 'top center' => _x( 'Top Center', 'Background Control', 'elementor' ), 'top left' => _x( 'Top Left', 'Background Control', 'elementor' ), 'top right' => _x( 'Top Right', 'Background Control', 'elementor' ), 'bottom center' => _x( 'Bottom Center', 'Background Control', 'elementor' ), 'bottom left' => _x( 'Bottom Left', 'Background Control', 'elementor' ), 'bottom right' => _x( 'Bottom Right', 'Background Control', 'elementor' ), ], 'default' => 'center center', 'selectors' => [ '{{SELECTOR}}' => 'background-color: transparent; background-image: radial-gradient(at {{VALUE}}, {{color.VALUE}} {{color_stop.SIZE}}{{color_stop.UNIT}}, {{color_b.VALUE}} {{color_b_stop.SIZE}}{{color_b_stop.UNIT}})', ], 'condition' => [ 'background' => [ 'gradient' ], 'gradient_type' => 'radial', ], 'of_type' => 'gradient', ]; $fields['image'] = [ 'label' => _x( 'Image', 'Background Control', 'elementor' ), 'type' => Controls_Manager::MEDIA, 'dynamic' => [ 'active' => true, ], 'responsive' => true, 'title' => _x( 'Background Image', 'Background Control', 'elementor' ), 'selectors' => [ '{{SELECTOR}}' => 'background-image: url("{{URL}}");', ], 'render_type' => 'template', 'condition' => [ 'background' => [ 'classic' ], ], ]; $fields['position'] = [ 'label' => _x( 'Position', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'responsive' => true, 'options' => [ '' => _x( 'Default', 'Background Control', 'elementor' ), 'center center' => _x( 'Center Center', 'Background Control', 'elementor' ), 'center left' => _x( 'Center Left', 'Background Control', 'elementor' ), 'center right' => _x( 'Center Right', 'Background Control', 'elementor' ), 'top center' => _x( 'Top Center', 'Background Control', 'elementor' ), 'top left' => _x( 'Top Left', 'Background Control', 'elementor' ), 'top right' => _x( 'Top Right', 'Background Control', 'elementor' ), 'bottom center' => _x( 'Bottom Center', 'Background Control', 'elementor' ), 'bottom left' => _x( 'Bottom Left', 'Background Control', 'elementor' ), 'bottom right' => _x( 'Bottom Right', 'Background Control', 'elementor' ), 'initial' => _x( 'Custom', 'Background Control', 'elementor' ), ], 'selectors' => [ '{{SELECTOR}}' => 'background-position: {{VALUE}};', ], 'condition' => [ 'background' => [ 'classic' ], 'image[url]!' => '', ], ]; $fields['xpos'] = [ 'label' => _x( 'X Position', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'responsive' => true, 'size_units' => [ 'px', 'em', '%', 'vw' ], 'default' => [ 'unit' => 'px', 'size' => 0, ], 'tablet_default' => [ 'unit' => 'px', 'size' => 0, ], 'mobile_default' => [ 'unit' => 'px', 'size' => 0, ], 'range' => [ 'px' => [ 'min' => -800, 'max' => 800, ], 'em' => [ 'min' => -100, 'max' => 100, ], '%' => [ 'min' => -100, 'max' => 100, ], 'vw' => [ 'min' => -100, 'max' => 100, ], ], 'selectors' => [ '{{SELECTOR}}' => 'background-position: {{SIZE}}{{UNIT}} {{ypos.SIZE}}{{ypos.UNIT}}', ], 'condition' => [ 'background' => [ 'classic' ], 'position' => [ 'initial' ], 'image[url]!' => '', ], 'required' => true, 'device_args' => [ Controls_Stack::RESPONSIVE_TABLET => [ 'selectors' => [ '{{SELECTOR}}' => 'background-position: {{SIZE}}{{UNIT}} {{ypos_tablet.SIZE}}{{ypos_tablet.UNIT}}', ], 'condition' => [ 'background' => [ 'classic' ], 'position_tablet' => [ 'initial' ], ], ], Controls_Stack::RESPONSIVE_MOBILE => [ 'selectors' => [ '{{SELECTOR}}' => 'background-position: {{SIZE}}{{UNIT}} {{ypos_mobile.SIZE}}{{ypos_mobile.UNIT}}', ], 'condition' => [ 'background' => [ 'classic' ], 'position_mobile' => [ 'initial' ], ], ], ], ]; $fields['ypos'] = [ 'label' => _x( 'Y Position', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'responsive' => true, 'size_units' => [ 'px', 'em', '%', 'vh' ], 'default' => [ 'unit' => 'px', 'size' => 0, ], 'tablet_default' => [ 'unit' => 'px', 'size' => 0, ], 'mobile_default' => [ 'unit' => 'px', 'size' => 0, ], 'range' => [ 'px' => [ 'min' => -800, 'max' => 800, ], 'em' => [ 'min' => -100, 'max' => 100, ], '%' => [ 'min' => -100, 'max' => 100, ], 'vh' => [ 'min' => -100, 'max' => 100, ], ], 'selectors' => [ '{{SELECTOR}}' => 'background-position: {{xpos.SIZE}}{{xpos.UNIT}} {{SIZE}}{{UNIT}}', ], 'condition' => [ 'background' => [ 'classic' ], 'position' => [ 'initial' ], 'image[url]!' => '', ], 'required' => true, 'device_args' => [ Controls_Stack::RESPONSIVE_TABLET => [ 'selectors' => [ '{{SELECTOR}}' => 'background-position: {{xpos_tablet.SIZE}}{{xpos_tablet.UNIT}} {{SIZE}}{{UNIT}}', ], 'condition' => [ 'background' => [ 'classic' ], 'position_tablet' => [ 'initial' ], ], ], Controls_Stack::RESPONSIVE_MOBILE => [ 'selectors' => [ '{{SELECTOR}}' => 'background-position: {{xpos_mobile.SIZE}}{{xpos_mobile.UNIT}} {{SIZE}}{{UNIT}}', ], 'condition' => [ 'background' => [ 'classic' ], 'position_mobile' => [ 'initial' ], ], ], ], ]; $fields['attachment'] = [ 'label' => _x( 'Attachment', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => _x( 'Default', 'Background Control', 'elementor' ), 'scroll' => _x( 'Scroll', 'Background Control', 'elementor' ), 'fixed' => _x( 'Fixed', 'Background Control', 'elementor' ), ], 'selectors' => [ '(desktop+){{SELECTOR}}' => 'background-attachment: {{VALUE}};', ], 'condition' => [ 'background' => [ 'classic' ], 'image[url]!' => '', ], ]; $fields['attachment_alert'] = [ 'type' => Controls_Manager::RAW_HTML, 'content_classes' => 'elementor-control-field-description', 'raw' => __( 'Note: Attachment Fixed works only on desktop.', 'elementor' ), 'separator' => 'none', 'condition' => [ 'background' => [ 'classic' ], 'image[url]!' => '', 'attachment' => 'fixed', ], ]; $fields['repeat'] = [ 'label' => _x( 'Repeat', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'responsive' => true, 'options' => [ '' => _x( 'Default', 'Background Control', 'elementor' ), 'no-repeat' => _x( 'No-repeat', 'Background Control', 'elementor' ), 'repeat' => _x( 'Repeat', 'Background Control', 'elementor' ), 'repeat-x' => _x( 'Repeat-x', 'Background Control', 'elementor' ), 'repeat-y' => _x( 'Repeat-y', 'Background Control', 'elementor' ), ], 'selectors' => [ '{{SELECTOR}}' => 'background-repeat: {{VALUE}};', ], 'condition' => [ 'background' => [ 'classic' ], 'image[url]!' => '', ], ]; $fields['size'] = [ 'label' => _x( 'Size', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'responsive' => true, 'default' => '', 'options' => [ '' => _x( 'Default', 'Background Control', 'elementor' ), 'auto' => _x( 'Auto', 'Background Control', 'elementor' ), 'cover' => _x( 'Cover', 'Background Control', 'elementor' ), 'contain' => _x( 'Contain', 'Background Control', 'elementor' ), 'initial' => _x( 'Custom', 'Background Control', 'elementor' ), ], 'selectors' => [ '{{SELECTOR}}' => 'background-size: {{VALUE}};', ], 'condition' => [ 'background' => [ 'classic' ], 'image[url]!' => '', ], ]; $fields['bg_width'] = [ 'label' => _x( 'Width', 'Background Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'responsive' => true, 'size_units' => [ 'px', 'em', '%', 'vw' ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 1000, ], '%' => [ 'min' => 0, 'max' => 100, ], 'vw' => [ 'min' => 0, 'max' => 100, ], ], 'default' => [ 'size' => 100, 'unit' => '%', ], 'required' => true, 'selectors' => [ '{{SELECTOR}}' => 'background-size: {{SIZE}}{{UNIT}} auto', ], 'condition' => [ 'background' => [ 'classic' ], 'size' => [ 'initial' ], 'image[url]!' => '', ], 'device_args' => [ Controls_Stack::RESPONSIVE_TABLET => [ 'selectors' => [ '{{SELECTOR}}' => 'background-size: {{SIZE}}{{UNIT}} auto', ], 'condition' => [ 'background' => [ 'classic' ], 'size_tablet' => [ 'initial' ], ], ], Controls_Stack::RESPONSIVE_MOBILE => [ 'selectors' => [ '{{SELECTOR}}' => 'background-size: {{SIZE}}{{UNIT}} auto', ], 'condition' => [ 'background' => [ 'classic' ], 'size_mobile' => [ 'initial' ], ], ], ], ]; $fields['video_link'] = [ 'label' => _x( 'Video Link', 'Background Control', 'elementor' ), 'type' => Controls_Manager::TEXT, 'placeholder' => 'https://www.youtube.com/watch?v=XHOmBV4js_E', 'description' => __( 'YouTube/Vimeo link, or link to video file (mp4 is recommended).', 'elementor' ), 'label_block' => true, 'default' => '', 'condition' => [ 'background' => [ 'video' ], ], 'of_type' => 'video', 'frontend_available' => true, ]; $fields['video_start'] = [ 'label' => __( 'Start Time', 'elementor' ), 'type' => Controls_Manager::NUMBER, 'description' => __( 'Specify a start time (in seconds)', 'elementor' ), 'placeholder' => 10, 'condition' => [ 'background' => [ 'video' ], ], 'of_type' => 'video', 'frontend_available' => true, ]; $fields['video_end'] = [ 'label' => __( 'End Time', 'elementor' ), 'type' => Controls_Manager::NUMBER, 'description' => __( 'Specify an end time (in seconds)', 'elementor' ), 'placeholder' => 70, 'condition' => [ 'background' => [ 'video' ], ], 'of_type' => 'video', 'frontend_available' => true, ]; $fields['play_once'] = [ 'label' => __( 'Play Once', 'elementor' ), 'type' => Controls_Manager::SWITCHER, 'condition' => [ 'background' => [ 'video' ], ], 'of_type' => 'video', 'frontend_available' => true, ]; $fields['play_on_mobile'] = [ 'label' => __( 'Play On Mobile', 'elementor' ), 'type' => Controls_Manager::SWITCHER, 'condition' => [ 'background' => [ 'video' ], ], 'of_type' => 'video', 'frontend_available' => true, ]; $fields['video_fallback'] = [ 'label' => _x( 'Background Fallback', 'Background Control', 'elementor' ), 'description' => __( 'This cover image will replace the background video in case that the video could not be loaded.', 'elementor' ), 'type' => Controls_Manager::MEDIA, 'condition' => [ 'background' => [ 'video' ], ], 'selectors' => [ '{{SELECTOR}}' => 'background: url("{{URL}}") 50% 50%; background-size: cover;', ], 'of_type' => 'video', ]; $fields['slideshow_gallery'] = [ 'label' => _x( 'Images', 'Background Control', 'elementor' ), 'type' => Controls_Manager::GALLERY, 'condition' => [ 'background' => [ 'slideshow' ], ], 'show_label' => false, 'of_type' => 'slideshow', 'frontend_available' => true, ]; $fields['slideshow_loop'] = [ 'label' => __( 'Infinite Loop', 'elementor' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'condition' => [ 'background' => [ 'slideshow' ], ], 'of_type' => 'slideshow', 'frontend_available' => true, ]; $fields['slideshow_slide_duration'] = [ 'label' => __( 'Duration', 'elementor' ) . ' (ms)', 'type' => Controls_Manager::NUMBER, 'default' => 5000, 'condition' => [ 'background' => [ 'slideshow' ], ], 'frontend_available' => true, ]; $fields['slideshow_slide_transition'] = [ 'label' => __( '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' => __( 'Transition Duration', 'elementor' ) . ' (ms)', 'type' => Controls_Manager::NUMBER, 'default' => 500, 'condition' => [ 'background' => [ 'slideshow' ], ], 'frontend_available' => true, ]; $fields['slideshow_background_size'] = [ 'label' => __( 'Background Size', 'elementor' ), 'type' => Controls_Manager::SELECT, 'responsive' => true, 'default' => '', 'options' => [ '' => __( 'Default', 'elementor' ), 'auto' => __( 'Auto', 'elementor' ), 'cover' => __( 'Cover', 'elementor' ), 'contain' => __( 'Contain', 'elementor' ), ], 'selectors' => [ '{{WRAPPER}} .elementor-background-slideshow__slide__image' => 'background-size: {{VALUE}};', ], 'condition' => [ 'background' => [ 'slideshow' ], ], ]; $fields['slideshow_background_position'] = [ 'label' => __( 'Background Position', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'responsive' => true, 'options' => [ '' => __( 'Default', 'elementor' ), 'center center' => _x( 'Center Center', 'Background Control', 'elementor' ), 'center left' => _x( 'Center Left', 'Background Control', 'elementor' ), 'center right' => _x( 'Center Right', 'Background Control', 'elementor' ), 'top center' => _x( 'Top Center', 'Background Control', 'elementor' ), 'top left' => _x( 'Top Left', 'Background Control', 'elementor' ), 'top right' => _x( 'Top Right', 'Background Control', 'elementor' ), 'bottom center' => _x( 'Bottom Center', 'Background Control', 'elementor' ), 'bottom left' => _x( 'Bottom Left', 'Background Control', 'elementor' ), 'bottom right' => _x( 'Bottom Right', 'Background Control', 'elementor' ), ], 'selectors' => [ '{{WRAPPER}} .elementor-background-slideshow__slide__image' => 'background-position: {{VALUE}};', ], 'condition' => [ 'background' => [ 'slideshow' ], ], ]; $fields['slideshow_ken_burns'] = [ 'label' => __( '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' => __( 'Direction', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => 'in', 'options' => [ 'in' => __( 'In', 'elementor' ), 'out' => __( '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, ]; } } PKs"\QH groups/border.phpnuW+A _x( 'Border Type', 'Border Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'options' => [ '' => __( 'None', 'elementor' ), 'solid' => _x( 'Solid', 'Border Control', 'elementor' ), 'double' => _x( 'Double', 'Border Control', 'elementor' ), 'dotted' => _x( 'Dotted', 'Border Control', 'elementor' ), 'dashed' => _x( 'Dashed', 'Border Control', 'elementor' ), 'groove' => _x( 'Groove', 'Border Control', 'elementor' ), ], 'selectors' => [ '{{SELECTOR}}' => 'border-style: {{VALUE}};', ], ]; $fields['width'] = [ 'label' => _x( 'Width', 'Border Control', 'elementor' ), 'type' => Controls_Manager::DIMENSIONS, 'selectors' => [ '{{SELECTOR}}' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'border!' => '', ], 'responsive' => true, ]; $fields['color'] = [ 'label' => _x( 'Color', 'Border Control', 'elementor' ), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => [ '{{SELECTOR}}' => 'border-color: {{VALUE}};', ], 'condition' => [ 'border!' => '', ], ]; return $fields; } /** * Get default options. * * Retrieve the default options of the border control. Used to return the * default options while initializing the border control. * * @since 1.9.0 * @access protected * * @return array Default border control options. */ protected function get_default_options() { return [ 'popover' => false, ]; } } PKs"\7"groups/typography.phpnuW+Aget_model()->get_settings( 'elementor_default_generic_fonts' ); if ( $default_fonts ) { $default_fonts = ', ' . $default_fonts; } $fields['font_family'] = [ 'label' => _x( 'Family', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::FONT, 'default' => '', 'selector_value' => 'font-family: "{{VALUE}}"' . $default_fonts . ';', ]; $fields['font_size'] = [ 'label' => _x( 'Size', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px', 'em', 'rem', 'vw' ], 'range' => [ 'px' => [ 'min' => 1, 'max' => 200, ], 'vw' => [ 'min' => 0.1, 'max' => 10, 'step' => 0.1, ], ], 'responsive' => true, 'selector_value' => 'font-size: {{SIZE}}{{UNIT}}', ]; $typo_weight_options = [ '' => __( 'Default', 'elementor' ), ]; foreach ( array_merge( [ 'normal', 'bold' ], range( 100, 900, 100 ) ) as $weight ) { $typo_weight_options[ $weight ] = ucfirst( $weight ); } $fields['font_weight'] = [ 'label' => _x( 'Weight', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => $typo_weight_options, ]; $fields['text_transform'] = [ 'label' => _x( 'Transform', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => __( 'Default', 'elementor' ), 'uppercase' => _x( 'Uppercase', 'Typography Control', 'elementor' ), 'lowercase' => _x( 'Lowercase', 'Typography Control', 'elementor' ), 'capitalize' => _x( 'Capitalize', 'Typography Control', 'elementor' ), 'none' => _x( 'Normal', 'Typography Control', 'elementor' ), ], ]; $fields['font_style'] = [ 'label' => _x( 'Style', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => __( 'Default', 'elementor' ), 'normal' => _x( 'Normal', 'Typography Control', 'elementor' ), 'italic' => _x( 'Italic', 'Typography Control', 'elementor' ), 'oblique' => _x( 'Oblique', 'Typography Control', 'elementor' ), ], ]; $fields['text_decoration'] = [ 'label' => _x( 'Decoration', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => __( 'Default', 'elementor' ), 'underline' => _x( 'Underline', 'Typography Control', 'elementor' ), 'overline' => _x( 'Overline', 'Typography Control', 'elementor' ), 'line-through' => _x( 'Line Through', 'Typography Control', 'elementor' ), 'none' => _x( 'None', 'Typography Control', 'elementor' ), ], ]; $fields['line_height'] = [ 'label' => _x( 'Line-Height', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'desktop_default' => [ 'unit' => 'em', ], 'tablet_default' => [ 'unit' => 'em', ], 'mobile_default' => [ 'unit' => 'em', ], 'range' => [ 'px' => [ 'min' => 1, ], ], 'responsive' => true, 'size_units' => [ 'px', 'em' ], 'selector_value' => 'line-height: {{SIZE}}{{UNIT}}', ]; $fields['letter_spacing'] = [ 'label' => _x( 'Letter Spacing', 'Typography Control', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => -5, 'max' => 10, 'step' => 0.1, ], ], 'responsive' => true, 'selector_value' => 'letter-spacing: {{SIZE}}{{UNIT}}', ]; return $fields; } /** * Prepare fields. * * Process typography control fields before adding them to `add_control()`. * * @since 1.2.3 * @access protected * * @param array $fields Typography control fields. * * @return array Processed fields. */ protected function prepare_fields( $fields ) { array_walk( $fields, function( &$field, $field_name ) { if ( in_array( $field_name, [ 'typography', 'popover_toggle' ] ) ) { return; } $selector_value = ! empty( $field['selector_value'] ) ? $field['selector_value'] : str_replace( '_', '-', $field_name ) . ': {{VALUE}};'; $field['selectors'] = [ '{{SELECTOR}}' => $selector_value, ]; } ); return parent::prepare_fields( $fields ); } /** * Add group arguments to field. * * Register field arguments to typography control. * * @since 1.2.2 * @access protected * * @param string $control_id Typography control id. * @param array $field_args Typography control field arguments. * * @return array Field arguments. */ protected function add_group_args_to_field( $control_id, $field_args ) { $field_args = parent::add_group_args_to_field( $control_id, $field_args ); $args = $this->get_args(); if ( in_array( $control_id, self::get_scheme_fields_keys() ) && ! empty( $args['scheme'] ) ) { $field_args['scheme'] = [ 'type' => self::get_type(), 'value' => $args['scheme'], 'key' => $control_id, ]; } return $field_args; } /** * Get default options. * * Retrieve the default options of the typography control. Used to return the * default options while initializing the typography control. * * @since 1.9.0 * @access protected * * @return array Default typography control options. */ protected function get_default_options() { return [ 'popover' => [ 'starter_name' => 'typography', 'starter_title' => _x( 'Typography', 'Typography Control', 'elementor' ), 'settings' => [ 'render_type' => 'ui', ], ], ]; } } PKs"\ɪ+c4c4groups/base.phpnuW+Aoptions ) { $this->init_options(); } if ( $option ) { if ( isset( $this->options[ $option ] ) ) { return $this->options[ $option ]; } return null; } return $this->options; } /** * Add new controls to stack. * * Register multiple controls to allow the user to set/update data. * * @since 1.0.0 * @access public * * @param Controls_Stack $element The element stack. * @param array $user_args The control arguments defined by the user. * @param array $options Optional. The element options. Default is * an empty array. */ final public function add_controls( Controls_Stack $element, array $user_args, array $options = [] ) { $this->init_args( $user_args ); // Filter which controls to display $filtered_fields = $this->filter_fields(); $filtered_fields = $this->prepare_fields( $filtered_fields ); // For php < 7 reset( $filtered_fields ); if ( isset( $this->args['separator'] ) ) { $filtered_fields[ key( $filtered_fields ) ]['separator'] = $this->args['separator']; } $has_injection = false; if ( ! empty( $options['position'] ) ) { $has_injection = true; $element->start_injection( $options['position'] ); unset( $options['position'] ); } if ( $this->get_options( 'popover' ) ) { $this->start_popover( $element ); } foreach ( $filtered_fields as $field_id => $field_args ) { // Add the global group args to the control $field_args = $this->add_group_args_to_field( $field_id, $field_args ); // Register the control $id = $this->get_controls_prefix() . $field_id; if ( ! empty( $field_args['responsive'] ) ) { unset( $field_args['responsive'] ); $element->add_responsive_control( $id, $field_args, $options ); } else { $element->add_control( $id, $field_args, $options ); } } if ( $this->get_options( 'popover' ) ) { $element->end_popover(); } if ( $has_injection ) { $element->end_injection(); } } /** * Get arguments. * * Retrieve group control arguments. * * @since 1.0.0 * @access public * * @return array Group control arguments. */ final public function get_args() { return $this->args; } /** * Get fields. * * Retrieve group control fields. * * @since 1.2.2 * @access public * * @return array Control fields. */ final public function get_fields() { if ( null === static::$fields ) { static::$fields = $this->init_fields(); } return static::$fields; } /** * Get controls prefix. * * Retrieve the prefix of the group control, which is `{{ControlName}}_`. * * @since 1.0.0 * @access public * * @return string Control prefix. */ public function get_controls_prefix() { return $this->args['name'] . '_'; } /** * Get group control classes. * * Retrieve the classes of the group control. * * @since 1.0.0 * @access public * * @return string Group control classes. */ public function get_base_group_classes() { return 'elementor-group-control-' . static::get_type() . ' elementor-group-control'; } /** * Init fields. * * Initialize group control fields. * * @abstract * @since 1.2.2 * @access protected */ abstract protected function init_fields(); /** * Get default options. * * Retrieve the default options of the group control. Used to return the * default options while initializing the group control. * * @since 1.9.0 * @access protected * * @return array Default group control options. */ protected function get_default_options() { return []; } /** * Get child default arguments. * * 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 []; } /** * Filter fields. * * Filter which controls to display, using `include`, `exclude` and the * `condition` arguments. * * @since 1.2.2 * @access protected * * @return array Control fields. */ protected function filter_fields() { $args = $this->get_args(); $fields = $this->get_fields(); if ( ! empty( $args['include'] ) ) { $fields = array_intersect_key( $fields, array_flip( $args['include'] ) ); } if ( ! empty( $args['exclude'] ) ) { $fields = array_diff_key( $fields, array_flip( $args['exclude'] ) ); } return $fields; } /** * Add group arguments to field. * * Register field arguments to group control. * * @since 1.2.2 * @access protected * * @param string $control_id Group control id. * @param array $field_args Group control field arguments. * * @return array */ protected function add_group_args_to_field( $control_id, $field_args ) { $args = $this->get_args(); if ( ! empty( $args['tab'] ) ) { $field_args['tab'] = $args['tab']; } if ( ! empty( $args['section'] ) ) { $field_args['section'] = $args['section']; } $field_args['classes'] = $this->get_base_group_classes() . ' elementor-group-control-' . $control_id; foreach ( [ 'condition', 'conditions' ] as $condition_type ) { if ( ! empty( $args[ $condition_type ] ) ) { if ( empty( $field_args[ $condition_type ] ) ) { $field_args[ $condition_type ] = []; } $field_args[ $condition_type ] += $args[ $condition_type ]; } } return $field_args; } /** * Prepare fields. * * Process group control fields before adding them to `add_control()`. * * @since 1.2.2 * @access protected * * @param array $fields Group control fields. * * @return array Processed fields. */ protected function prepare_fields( $fields ) { $popover_options = $this->get_options( 'popover' ); $popover_name = ! $popover_options ? null : $popover_options['starter_name']; foreach ( $fields as $field_key => &$field ) { if ( $popover_name ) { $field['condition'][ $popover_name . '!' ] = ''; } if ( isset( $this->args['fields_options']['__all'] ) ) { $field = array_merge( $field, $this->args['fields_options']['__all'] ); } if ( isset( $this->args['fields_options'][ $field_key ] ) ) { $field = array_merge( $field, $this->args['fields_options'][ $field_key ] ); } if ( ! empty( $field['condition'] ) ) { $field = $this->add_condition_prefix( $field ); } if ( ! empty( $field['conditions'] ) ) { $field['conditions'] = $this->add_conditions_prefix( $field['conditions'] ); } if ( ! empty( $field['selectors'] ) ) { $field['selectors'] = $this->handle_selectors( $field['selectors'] ); } if ( ! empty( $field['device_args'] ) ) { foreach ( $field['device_args'] as $device => $device_arg ) { if ( ! empty( $field['device_args'][ $device ]['condition'] ) ) { $field['device_args'][ $device ] = $this->add_condition_prefix( $field['device_args'][ $device ] ); } if ( ! empty( $field['device_args'][ $device ]['conditions'] ) ) { $field['device_args'][ $device ]['conditions'] = $this->add_conditions_prefix( $field['device_args'][ $device ]['conditions'] ); } if ( ! empty( $device_arg['selectors'] ) ) { $field['device_args'][ $device ]['selectors'] = $this->handle_selectors( $device_arg['selectors'] ); } } } } return $fields; } /** * Init options. * * Initializing group control options. * * @since 1.9.0 * @access private */ private function init_options() { $default_options = [ 'popover' => [ 'starter_name' => 'popover_toggle', 'starter_value' => 'custom', 'starter_title' => '', ], ]; $this->options = array_replace_recursive( $default_options, $this->get_default_options() ); } /** * Init arguments. * * Initializing group control base class. * * @since 1.2.2 * @access protected * * @param array $args Group control settings value. */ protected function init_args( $args ) { $this->args = array_merge( $this->get_default_args(), $this->get_child_default_args(), $args ); } /** * Get default arguments. * * Retrieve the default arguments of the group control. Used to return the * default arguments while initializing the group control. * * @since 1.2.2 * @access private * * @return array Control default arguments. */ private function get_default_args() { return [ 'default' => '', 'selector' => '{{WRAPPER}}', 'fields_options' => [], ]; } /** * Add condition prefix. * * Used to add the group prefix to controls with conditions, to * distinguish them from other controls with the same name. * * This way Elementor can apply condition logic to a specific control in a * group control. * * @since 1.2.0 * @access private * * @param array $field Group control field. * * @return array Group control field. */ private function add_condition_prefix( $field ) { $controls_prefix = $this->get_controls_prefix(); $prefixed_condition_keys = array_map( function( $key ) use ( $controls_prefix ) { return $controls_prefix . $key; }, array_keys( $field['condition'] ) ); $field['condition'] = array_combine( $prefixed_condition_keys, $field['condition'] ); return $field; } private function add_conditions_prefix( $conditions ) { $controls_prefix = $this->get_controls_prefix(); foreach ( $conditions['terms'] as & $condition ) { if ( isset( $condition['terms'] ) ) { $condition = $this->add_conditions_prefix( $condition ); continue; } $condition['name'] = $controls_prefix . $condition['name']; } return $conditions; } /** * Handle selectors. * * Used to process the CSS selector of group control fields. When using * group control, Elementor needs to apply the selector to different fields. * This method handles the process. * * In addition, it handles selector values from other fields and process the * css. * * @since 1.2.2 * @access private * * @param array $selectors An array of selectors to process. * * @return array Processed selectors. */ private function handle_selectors( $selectors ) { $args = $this->get_args(); $selectors = array_combine( array_map( function( $key ) use ( $args ) { return str_replace( '{{SELECTOR}}', $args['selector'], $key ); }, array_keys( $selectors ) ), $selectors ); if ( ! $selectors ) { return $selectors; } $controls_prefix = $this->get_controls_prefix(); foreach ( $selectors as &$selector ) { $selector = preg_replace_callback( '/\{\{\K(.*?)(?=}})/', function( $matches ) use ( $controls_prefix ) { return preg_replace_callback( '/[^ ]+(?=\.)/', function( $sub_matches ) use ( $controls_prefix ) { return $controls_prefix . $sub_matches[0]; }, $matches[1] ); }, $selector ); } return $selectors; } /** * Start popover. * * Starts a group controls popover. * * @since 1.9.1 * @access private * @param Controls_Stack $element Element. */ private function start_popover( Controls_Stack $element ) { $popover_options = $this->get_options( 'popover' ); $settings = $this->get_args(); if ( ! empty( $settings['label'] ) ) { $label = $settings['label']; } else { $label = $popover_options['starter_title']; } $control_params = [ 'type' => Controls_Manager::POPOVER_TOGGLE, 'label' => $label, 'return_value' => $popover_options['starter_value'], ]; if ( ! empty( $popover_options['settings'] ) ) { $control_params = array_replace_recursive( $control_params, $popover_options['settings'] ); } foreach ( [ 'condition', 'conditions' ] as $key ) { if ( ! empty( $settings[ $key ] ) ) { $control_params[ $key ] = $settings[ $key ]; } } $starter_name = $popover_options['starter_name']; if ( isset( $this->args['fields_options'][ $starter_name ] ) ) { $control_params = array_merge( $control_params, $this->args['fields_options'][ $starter_name ] ); } $element->add_control( $this->get_controls_prefix() . $starter_name, $control_params ); $element->start_popover(); } } PKs"\@9groups/text-shadow.phpnuW+A _x( 'Text Shadow', 'Text Shadow Control', 'elementor' ), 'type' => Controls_Manager::TEXT_SHADOW, 'selectors' => [ '{{SELECTOR}}' => 'text-shadow: {{HORIZONTAL}}px {{VERTICAL}}px {{BLUR}}px {{COLOR}};', ], ]; return $controls; } /** * Get default options. * * Retrieve the default options of the text shadow control. Used to return the * default options while initializing the text shadow control. * * @since 1.9.0 * @access protected * * @return array Default text shadow control options. */ protected function get_default_options() { return [ 'popover' => [ 'starter_title' => _x( 'Text Shadow', 'Text Shadow Control', 'elementor' ), 'starter_name' => 'text_shadow_type', 'starter_value' => 'yes', 'settings' => [ 'render_type' => 'ui', ], ], ]; } } PKs"\ x1V(V(groups/image-size.phpnuW+A trim( $image_class ), ]; $html .= wp_get_attachment_image( $image['id'], $size, false, $image_attr ); } else { $image_src = self::get_attachment_image_src( $image['id'], $image_size_key, $settings ); if ( ! $image_src && isset( $image['url'] ) ) { $image_src = $image['url']; } if ( ! empty( $image_src ) ) { $image_class_html = ! empty( $image_class ) ? ' class="' . $image_class . '"' : ''; $html .= sprintf( '%s', esc_attr( $image_src ), Control_Media::get_image_title( $image ), Control_Media::get_image_alt( $image ), $image_class_html ); } } /** * Get Attachment Image HTML * * Filters the Attachment Image HTML * * @since 2.4.0 * @param string $html the attachment image HTML string * @param array $settings Control settings. * @param string $image_size_key Optional. Settings key for image size. * Default is `image`. * @param string $image_key Optional. Settings key for image. Default * is null. If not defined uses image size key * as the image key. */ return apply_filters( 'elementor/image_size/get_attachment_image_html', $html, $settings, $image_size_key, $image_key ); } /** * Get all image sizes. * * Retrieve available image sizes with data like `width`, `height` and `crop`. * * @since 1.0.0 * @access public * @static * * @return array An array of available image sizes. */ public static function get_all_image_sizes() { global $_wp_additional_image_sizes; $default_image_sizes = [ 'thumbnail', 'medium', 'medium_large', 'large' ]; $image_sizes = []; foreach ( $default_image_sizes as $size ) { $image_sizes[ $size ] = [ 'width' => (int) get_option( $size . '_size_w' ), 'height' => (int) get_option( $size . '_size_h' ), 'crop' => (bool) get_option( $size . '_crop' ), ]; } if ( $_wp_additional_image_sizes ) { $image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes ); } /** This filter is documented in wp-admin/includes/media.php */ return apply_filters( 'image_size_names_choose', $image_sizes ); } /** * Get attachment image src. * * Retrieve the attachment image source URL. * * @since 1.0.0 * @access public * @static * * @param string $attachment_id The attachment ID. * @param string $image_size_key Settings key for image size. * @param array $settings Control settings. * * @return string Attachment image source URL. */ public static function get_attachment_image_src( $attachment_id, $image_size_key, array $settings ) { if ( empty( $attachment_id ) ) { return false; } $size = $settings[ $image_size_key . '_size' ]; if ( 'custom' !== $size ) { $attachment_size = $size; } else { // Use BFI_Thumb script // TODO: Please rewrite this code. require_once( ELEMENTOR_PATH . 'includes/libraries/bfi-thumb/bfi-thumb.php' ); $custom_dimension = $settings[ $image_size_key . '_custom_dimension' ]; $attachment_size = [ // Defaults sizes 0 => null, // Width. 1 => null, // Height. 'bfi_thumb' => true, 'crop' => true, ]; $has_custom_size = false; if ( ! empty( $custom_dimension['width'] ) ) { $has_custom_size = true; $attachment_size[0] = $custom_dimension['width']; } if ( ! empty( $custom_dimension['height'] ) ) { $has_custom_size = true; $attachment_size[1] = $custom_dimension['height']; } if ( ! $has_custom_size ) { $attachment_size = 'full'; } } $image_src = wp_get_attachment_image_src( $attachment_id, $attachment_size ); if ( empty( $image_src[0] ) && 'thumbnail' !== $attachment_size ) { $image_src = wp_get_attachment_image_src( $attachment_id ); } return ! empty( $image_src[0] ) ? $image_src[0] : ''; } /** * Get child default arguments. * * 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 [ 'include' => [], 'exclude' => [], ]; } /** * Init fields. * * Initialize image size control fields. * * @since 1.2.2 * @access protected * * @return array Control fields. */ protected function init_fields() { $fields = []; $fields['size'] = [ 'label' => _x( 'Image Size', 'Image Size Control', 'elementor' ), 'type' => Controls_Manager::SELECT, ]; $fields['custom_dimension'] = [ 'label' => _x( 'Image Dimension', 'Image Size Control', 'elementor' ), 'type' => Controls_Manager::IMAGE_DIMENSIONS, 'description' => __( 'You can crop the original image size to any custom size. You can also set a single value for height or width in order to keep the original size ratio.', 'elementor' ), 'condition' => [ 'size' => 'custom', ], 'separator' => 'none', ]; return $fields; } /** * Prepare fields. * * Process image size control fields before adding them to `add_control()`. * * @since 1.2.2 * @access protected * * @param array $fields Image size control fields. * * @return array Processed fields. */ protected function prepare_fields( $fields ) { $image_sizes = $this->get_image_sizes(); $args = $this->get_args(); if ( ! empty( $args['default'] ) && isset( $image_sizes[ $args['default'] ] ) ) { $default_value = $args['default']; } else { // Get the first item for default value. $default_value = array_keys( $image_sizes ); $default_value = array_shift( $default_value ); } $fields['size']['options'] = $image_sizes; $fields['size']['default'] = $default_value; if ( ! isset( $image_sizes['custom'] ) ) { unset( $fields['custom_dimension'] ); } return parent::prepare_fields( $fields ); } /** * Get image sizes. * * Retrieve available image sizes after filtering `include` and `exclude` arguments. * * @since 2.0.0 * @access private * * @return array Filtered image sizes. */ private function get_image_sizes() { $wp_image_sizes = self::get_all_image_sizes(); $args = $this->get_args(); if ( $args['include'] ) { $wp_image_sizes = array_intersect_key( $wp_image_sizes, array_flip( $args['include'] ) ); } elseif ( $args['exclude'] ) { $wp_image_sizes = array_diff_key( $wp_image_sizes, array_flip( $args['exclude'] ) ); } $image_sizes = []; foreach ( $wp_image_sizes as $size_key => $size_attributes ) { $control_title = ucwords( str_replace( '_', ' ', $size_key ) ); if ( is_array( $size_attributes ) ) { $control_title .= sprintf( ' - %d x %d', $size_attributes['width'], $size_attributes['height'] ); } $image_sizes[ $size_key ] = $control_title; } $image_sizes['full'] = _x( 'Full', 'Image Size Control', 'elementor' ); if ( ! empty( $args['include']['custom'] ) || ! in_array( 'custom', $args['exclude'] ) ) { $image_sizes['custom'] = _x( 'Custom', 'Image Size Control', 'elementor' ); } return $image_sizes; } /** * Get default options. * * Retrieve the default options of the image size control. Used to return the * default options while initializing the image size control. * * @since 1.9.0 * @access protected * * @return array Default image size control options. */ protected function get_default_options() { return [ 'popover' => false, ]; } } PKs"\">Zttbase-icon-font.phpnuW+A <# data.raw = elementor.compileTemplate( data.raw, { view } ); if ( data.label ) { #> {{{ data.label }}} <# } #>
{{{ data.raw }}}
'', 'content_classes' => '', ]; } } PKs"\hh number.phpnuW+A '', 'max' => '', 'step' => '', 'placeholder' => '', 'title' => '', 'dynamic' => [ 'categories' => [ TagsModule::NUMBER_CATEGORY ], ], ]; } /** * Render number control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> <# if ( data.label ) { #> {{{ data.label }}} <# } let notice = elementor.translate( 'deprecated_notice', [ data.widget, data.plugin, data.since ] ); if ( data.replacement ) { notice += '
' + elementor.translate( 'deprecated_notice_replacement', [ data.replacement ] ); } if ( data.last ) { notice += '
' + elementor.translate( 'deprecated_notice_last', [ data.widget, data.plugin, data.last ] ); } #>
{{{ notice }}}
'', // Widgets name 'since' => '', // Plugin version widget was deprecated 'last' => '', // Plugin version in which the widget will be removed 'plugin' => '', // Plugin's title 'replacement' => '', // Widget replacement ]; } } PKs"\ :|:|icon.phpnuW+A '500px', 'fa fa-address-book' => 'address-book', 'fa fa-address-book-o' => 'address-book-o', 'fa fa-address-card' => 'address-card', 'fa fa-address-card-o' => 'address-card-o', 'fa fa-adjust' => 'adjust', 'fa fa-adn' => 'adn', 'fa fa-align-center' => 'align-center', 'fa fa-align-justify' => 'align-justify', 'fa fa-align-left' => 'align-left', 'fa fa-align-right' => 'align-right', 'fa fa-amazon' => 'amazon', 'fa fa-ambulance' => 'ambulance', 'fa fa-american-sign-language-interpreting' => 'american-sign-language-interpreting', 'fa fa-anchor' => 'anchor', 'fa fa-android' => 'android', 'fa fa-angellist' => 'angellist', 'fa fa-angle-double-down' => 'angle-double-down', 'fa fa-angle-double-left' => 'angle-double-left', 'fa fa-angle-double-right' => 'angle-double-right', 'fa fa-angle-double-up' => 'angle-double-up', 'fa fa-angle-down' => 'angle-down', 'fa fa-angle-left' => 'angle-left', 'fa fa-angle-right' => 'angle-right', 'fa fa-angle-up' => 'angle-up', 'fa fa-apple' => 'apple', 'fa fa-archive' => 'archive', 'fa fa-area-chart' => 'area-chart', 'fa fa-arrow-circle-down' => 'arrow-circle-down', 'fa fa-arrow-circle-left' => 'arrow-circle-left', 'fa fa-arrow-circle-o-down' => 'arrow-circle-o-down', 'fa fa-arrow-circle-o-left' => 'arrow-circle-o-left', 'fa fa-arrow-circle-o-right' => 'arrow-circle-o-right', 'fa fa-arrow-circle-o-up' => 'arrow-circle-o-up', 'fa fa-arrow-circle-right' => 'arrow-circle-right', 'fa fa-arrow-circle-up' => 'arrow-circle-up', 'fa fa-arrow-down' => 'arrow-down', 'fa fa-arrow-left' => 'arrow-left', 'fa fa-arrow-right' => 'arrow-right', 'fa fa-arrow-up' => 'arrow-up', 'fa fa-arrows' => 'arrows', 'fa fa-arrows-alt' => 'arrows-alt', 'fa fa-arrows-h' => 'arrows-h', 'fa fa-arrows-v' => 'arrows-v', 'fa fa-asl-interpreting' => 'asl-interpreting', 'fa fa-assistive-listening-systems' => 'assistive-listening-systems', 'fa fa-asterisk' => 'asterisk', 'fa fa-at' => 'at', 'fa fa-audio-description' => 'audio-description', 'fa fa-automobile' => 'automobile', 'fa fa-backward' => 'backward', 'fa fa-balance-scale' => 'balance-scale', 'fa fa-ban' => 'ban', 'fa fa-bandcamp' => 'bandcamp', 'fa fa-bank' => 'bank', 'fa fa-bar-chart' => 'bar-chart', 'fa fa-bar-chart-o' => 'bar-chart-o', 'fa fa-barcode' => 'barcode', 'fa fa-bars' => 'bars', 'fa fa-bath' => 'bath', 'fa fa-bathtub' => 'bathtub', 'fa fa-battery' => 'battery', 'fa fa-battery-0' => 'battery-0', 'fa fa-battery-1' => 'battery-1', 'fa fa-battery-2' => 'battery-2', 'fa fa-battery-3' => 'battery-3', 'fa fa-battery-4' => 'battery-4', 'fa fa-battery-empty' => 'battery-empty', 'fa fa-battery-full' => 'battery-full', 'fa fa-battery-half' => 'battery-half', 'fa fa-battery-quarter' => 'battery-quarter', 'fa fa-battery-three-quarters' => 'battery-three-quarters', 'fa fa-bed' => 'bed', 'fa fa-beer' => 'beer', 'fa fa-behance' => 'behance', 'fa fa-behance-square' => 'behance-square', 'fa fa-bell' => 'bell', 'fa fa-bell-o' => 'bell-o', 'fa fa-bell-slash' => 'bell-slash', 'fa fa-bell-slash-o' => 'bell-slash-o', 'fa fa-bicycle' => 'bicycle', 'fa fa-binoculars' => 'binoculars', 'fa fa-birthday-cake' => 'birthday-cake', 'fa fa-bitbucket' => 'bitbucket', 'fa fa-bitbucket-square' => 'bitbucket-square', 'fa fa-bitcoin' => 'bitcoin', 'fa fa-black-tie' => 'black-tie', 'fa fa-blind' => 'blind', 'fa fa-bluetooth' => 'bluetooth', 'fa fa-bluetooth-b' => 'bluetooth-b', 'fa fa-bold' => 'bold', 'fa fa-bolt' => 'bolt', 'fa fa-bomb' => 'bomb', 'fa fa-book' => 'book', 'fa fa-bookmark' => 'bookmark', 'fa fa-bookmark-o' => 'bookmark-o', 'fa fa-braille' => 'braille', 'fa fa-briefcase' => 'briefcase', 'fa fa-btc' => 'btc', 'fa fa-bug' => 'bug', 'fa fa-building' => 'building', 'fa fa-building-o' => 'building-o', 'fa fa-bullhorn' => 'bullhorn', 'fa fa-bullseye' => 'bullseye', 'fa fa-bus' => 'bus', 'fa fa-buysellads' => 'buysellads', 'fa fa-cab' => 'cab', 'fa fa-calculator' => 'calculator', 'fa fa-calendar' => 'calendar', 'fa fa-calendar-check-o' => 'calendar-check-o', 'fa fa-calendar-minus-o' => 'calendar-minus-o', 'fa fa-calendar-o' => 'calendar-o', 'fa fa-calendar-plus-o' => 'calendar-plus-o', 'fa fa-calendar-times-o' => 'calendar-times-o', 'fa fa-camera' => 'camera', 'fa fa-camera-retro' => 'camera-retro', 'fa fa-car' => 'car', 'fa fa-caret-down' => 'caret-down', 'fa fa-caret-left' => 'caret-left', 'fa fa-caret-right' => 'caret-right', 'fa fa-caret-square-o-down' => 'caret-square-o-down', 'fa fa-caret-square-o-left' => 'caret-square-o-left', 'fa fa-caret-square-o-right' => 'caret-square-o-right', 'fa fa-caret-square-o-up' => 'caret-square-o-up', 'fa fa-caret-up' => 'caret-up', 'fa fa-cart-arrow-down' => 'cart-arrow-down', 'fa fa-cart-plus' => 'cart-plus', 'fa fa-cc' => 'cc', 'fa fa-cc-amex' => 'cc-amex', 'fa fa-cc-diners-club' => 'cc-diners-club', 'fa fa-cc-discover' => 'cc-discover', 'fa fa-cc-jcb' => 'cc-jcb', 'fa fa-cc-mastercard' => 'cc-mastercard', 'fa fa-cc-paypal' => 'cc-paypal', 'fa fa-cc-stripe' => 'cc-stripe', 'fa fa-cc-visa' => 'cc-visa', 'fa fa-certificate' => 'certificate', 'fa fa-chain' => 'chain', 'fa fa-chain-broken' => 'chain-broken', 'fa fa-check' => 'check', 'fa fa-check-circle' => 'check-circle', 'fa fa-check-circle-o' => 'check-circle-o', 'fa fa-check-square' => 'check-square', 'fa fa-check-square-o' => 'check-square-o', 'fa fa-chevron-circle-down' => 'chevron-circle-down', 'fa fa-chevron-circle-left' => 'chevron-circle-left', 'fa fa-chevron-circle-right' => 'chevron-circle-right', 'fa fa-chevron-circle-up' => 'chevron-circle-up', 'fa fa-chevron-down' => 'chevron-down', 'fa fa-chevron-left' => 'chevron-left', 'fa fa-chevron-right' => 'chevron-right', 'fa fa-chevron-up' => 'chevron-up', 'fa fa-child' => 'child', 'fa fa-chrome' => 'chrome', 'fa fa-circle' => 'circle', 'fa fa-circle-o' => 'circle-o', 'fa fa-circle-o-notch' => 'circle-o-notch', 'fa fa-circle-thin' => 'circle-thin', 'fa fa-clipboard' => 'clipboard', 'fa fa-clock-o' => 'clock-o', 'fa fa-clone' => 'clone', 'fa fa-close' => 'close', 'fa fa-cloud' => 'cloud', 'fa fa-cloud-download' => 'cloud-download', 'fa fa-cloud-upload' => 'cloud-upload', 'fa fa-cny' => 'cny', 'fa fa-code' => 'code', 'fa fa-code-fork' => 'code-fork', 'fa fa-codepen' => 'codepen', 'fa fa-codiepie' => 'codiepie', 'fa fa-coffee' => 'coffee', 'fa fa-cog' => 'cog', 'fa fa-cogs' => 'cogs', 'fa fa-columns' => 'columns', 'fa fa-comment' => 'comment', 'fa fa-comment-o' => 'comment-o', 'fa fa-commenting' => 'commenting', 'fa fa-commenting-o' => 'commenting-o', 'fa fa-comments' => 'comments', 'fa fa-comments-o' => 'comments-o', 'fa fa-compass' => 'compass', 'fa fa-compress' => 'compress', 'fa fa-connectdevelop' => 'connectdevelop', 'fa fa-contao' => 'contao', 'fa fa-copy' => 'copy', 'fa fa-copyright' => 'copyright', 'fa fa-creative-commons' => 'creative-commons', 'fa fa-credit-card' => 'credit-card', 'fa fa-credit-card-alt' => 'credit-card-alt', 'fa fa-crop' => 'crop', 'fa fa-crosshairs' => 'crosshairs', 'fa fa-css3' => 'css3', 'fa fa-cube' => 'cube', 'fa fa-cubes' => 'cubes', 'fa fa-cut' => 'cut', 'fa fa-cutlery' => 'cutlery', 'fa fa-dashboard' => 'dashboard', 'fa fa-dashcube' => 'dashcube', 'fa fa-database' => 'database', 'fa fa-deaf' => 'deaf', 'fa fa-deafness' => 'deafness', 'fa fa-dedent' => 'dedent', 'fa fa-delicious' => 'delicious', 'fa fa-desktop' => 'desktop', 'fa fa-deviantart' => 'deviantart', 'fa fa-diamond' => 'diamond', 'fa fa-digg' => 'digg', 'fa fa-dollar' => 'dollar', 'fa fa-dot-circle-o' => 'dot-circle-o', 'fa fa-download' => 'download', 'fa fa-dribbble' => 'dribbble', 'fa fa-drivers-license' => 'drivers-license', 'fa fa-drivers-license-o' => 'drivers-license-o', 'fa fa-dropbox' => 'dropbox', 'fa fa-drupal' => 'drupal', 'fa fa-edge' => 'edge', 'fa fa-edit' => 'edit', 'fa fa-eercast' => 'eercast', 'fa fa-eject' => 'eject', 'fa fa-ellipsis-h' => 'ellipsis-h', 'fa fa-ellipsis-v' => 'ellipsis-v', 'fa fa-empire' => 'empire', 'fa fa-envelope' => 'envelope', 'fa fa-envelope-o' => 'envelope-o', 'fa fa-envelope-open' => 'envelope-open', 'fa fa-envelope-open-o' => 'envelope-open-o', 'fa fa-envelope-square' => 'envelope-square', 'fa fa-envira' => 'envira', 'fa fa-eraser' => 'eraser', 'fa fa-etsy' => 'etsy', 'fa fa-eur' => 'eur', 'fa fa-euro' => 'euro', 'fa fa-exchange' => 'exchange', 'fa fa-exclamation' => 'exclamation', 'fa fa-exclamation-circle' => 'exclamation-circle', 'fa fa-exclamation-triangle' => 'exclamation-triangle', 'fa fa-expand' => 'expand', 'fa fa-expeditedssl' => 'expeditedssl', 'fa fa-external-link' => 'external-link', 'fa fa-external-link-square' => 'external-link-square', 'fa fa-eye' => 'eye', 'fa fa-eye-slash' => 'eye-slash', 'fa fa-eyedropper' => 'eyedropper', 'fa fa-fa' => 'fa', 'fa fa-facebook' => 'facebook', 'fa fa-facebook-f' => 'facebook-f', 'fa fa-facebook-official' => 'facebook-official', 'fa fa-facebook-square' => 'facebook-square', 'fa fa-fast-backward' => 'fast-backward', 'fa fa-fast-forward' => 'fast-forward', 'fa fa-fax' => 'fax', 'fa fa-feed' => 'feed', 'fa fa-female' => 'female', 'fa fa-fighter-jet' => 'fighter-jet', 'fa fa-file' => 'file', 'fa fa-file-archive-o' => 'file-archive-o', 'fa fa-file-audio-o' => 'file-audio-o', 'fa fa-file-code-o' => 'file-code-o', 'fa fa-file-excel-o' => 'file-excel-o', 'fa fa-file-image-o' => 'file-image-o', 'fa fa-file-movie-o' => 'file-movie-o', 'fa fa-file-o' => 'file-o', 'fa fa-file-pdf-o' => 'file-pdf-o', 'fa fa-file-photo-o' => 'file-photo-o', 'fa fa-file-picture-o' => 'file-picture-o', 'fa fa-file-powerpoint-o' => 'file-powerpoint-o', 'fa fa-file-sound-o' => 'file-sound-o', 'fa fa-file-text' => 'file-text', 'fa fa-file-text-o' => 'file-text-o', 'fa fa-file-video-o' => 'file-video-o', 'fa fa-file-word-o' => 'file-word-o', 'fa fa-file-zip-o' => 'file-zip-o', 'fa fa-files-o' => 'files-o', 'fa fa-film' => 'film', 'fa fa-filter' => 'filter', 'fa fa-fire' => 'fire', 'fa fa-fire-extinguisher' => 'fire-extinguisher', 'fa fa-firefox' => 'firefox', 'fa fa-first-order' => 'first-order', 'fa fa-flag' => 'flag', 'fa fa-flag-checkered' => 'flag-checkered', 'fa fa-flag-o' => 'flag-o', 'fa fa-flash' => 'flash', 'fa fa-flask' => 'flask', 'fa fa-flickr' => 'flickr', 'fa fa-floppy-o' => 'floppy-o', 'fa fa-folder' => 'folder', 'fa fa-folder-o' => 'folder-o', 'fa fa-folder-open' => 'folder-open', 'fa fa-folder-open-o' => 'folder-open-o', 'fa fa-font' => 'font', 'fa fa-font-awesome' => 'font-awesome', 'fa fa-fonticons' => 'fonticons', 'fa fa-fort-awesome' => 'fort-awesome', 'fa fa-forumbee' => 'forumbee', 'fa fa-forward' => 'forward', 'fa fa-foursquare' => 'foursquare', 'fa fa-free-code-camp' => 'free-code-camp', 'fa fa-frown-o' => 'frown-o', 'fa fa-futbol-o' => 'futbol-o', 'fa fa-gamepad' => 'gamepad', 'fa fa-gavel' => 'gavel', 'fa fa-gbp' => 'gbp', 'fa fa-ge' => 'ge', 'fa fa-gear' => 'gear', 'fa fa-gears' => 'gears', 'fa fa-genderless' => 'genderless', 'fa fa-get-pocket' => 'get-pocket', 'fa fa-gg' => 'gg', 'fa fa-gg-circle' => 'gg-circle', 'fa fa-gift' => 'gift', 'fa fa-git' => 'git', 'fa fa-git-square' => 'git-square', 'fa fa-github' => 'github', 'fa fa-github-alt' => 'github-alt', 'fa fa-github-square' => 'github-square', 'fa fa-gitlab' => 'gitlab', 'fa fa-gittip' => 'gittip', 'fa fa-glass' => 'glass', 'fa fa-glide' => 'glide', 'fa fa-glide-g' => 'glide-g', 'fa fa-globe' => 'globe', 'fa fa-google' => 'google', 'fa fa-google-plus' => 'google-plus', 'fa fa-google-plus-circle' => 'google-plus-circle', 'fa fa-google-plus-official' => 'google-plus-official', 'fa fa-google-plus-square' => 'google-plus-square', 'fa fa-google-wallet' => 'google-wallet', 'fa fa-graduation-cap' => 'graduation-cap', 'fa fa-gratipay' => 'gratipay', 'fa fa-grav' => 'grav', 'fa fa-group' => 'group', 'fa fa-h-square' => 'h-square', 'fa fa-hacker-news' => 'hacker-news', 'fa fa-hand-grab-o' => 'hand-grab-o', 'fa fa-hand-lizard-o' => 'hand-lizard-o', 'fa fa-hand-o-down' => 'hand-o-down', 'fa fa-hand-o-left' => 'hand-o-left', 'fa fa-hand-o-right' => 'hand-o-right', 'fa fa-hand-o-up' => 'hand-o-up', 'fa fa-hand-paper-o' => 'hand-paper-o', 'fa fa-hand-peace-o' => 'hand-peace-o', 'fa fa-hand-pointer-o' => 'hand-pointer-o', 'fa fa-hand-rock-o' => 'hand-rock-o', 'fa fa-hand-scissors-o' => 'hand-scissors-o', 'fa fa-hand-spock-o' => 'hand-spock-o', 'fa fa-hand-stop-o' => 'hand-stop-o', 'fa fa-handshake-o' => 'handshake-o', 'fa fa-hard-of-hearing' => 'hard-of-hearing', 'fa fa-hashtag' => 'hashtag', 'fa fa-hdd-o' => 'hdd-o', 'fa fa-header' => 'header', 'fa fa-headphones' => 'headphones', 'fa fa-heart' => 'heart', 'fa fa-heart-o' => 'heart-o', 'fa fa-heartbeat' => 'heartbeat', 'fa fa-history' => 'history', 'fa fa-home' => 'home', 'fa fa-hospital-o' => 'hospital-o', 'fa fa-hotel' => 'hotel', 'fa fa-hourglass' => 'hourglass', 'fa fa-hourglass-1' => 'hourglass-1', 'fa fa-hourglass-2' => 'hourglass-2', 'fa fa-hourglass-3' => 'hourglass-3', 'fa fa-hourglass-end' => 'hourglass-end', 'fa fa-hourglass-half' => 'hourglass-half', 'fa fa-hourglass-o' => 'hourglass-o', 'fa fa-hourglass-start' => 'hourglass-start', 'fa fa-houzz' => 'houzz', 'fa fa-html5' => 'html5', 'fa fa-i-cursor' => 'i-cursor', 'fa fa-id-badge' => 'id-badge', 'fa fa-id-card' => 'id-card', 'fa fa-id-card-o' => 'id-card-o', 'fa fa-ils' => 'ils', 'fa fa-image' => 'image', 'fa fa-imdb' => 'imdb', 'fa fa-inbox' => 'inbox', 'fa fa-indent' => 'indent', 'fa fa-industry' => 'industry', 'fa fa-info' => 'info', 'fa fa-info-circle' => 'info-circle', 'fa fa-inr' => 'inr', 'fa fa-instagram' => 'instagram', 'fa fa-institution' => 'institution', 'fa fa-internet-explorer' => 'internet-explorer', 'fa fa-intersex' => 'intersex', 'fa fa-ioxhost' => 'ioxhost', 'fa fa-italic' => 'italic', 'fa fa-joomla' => 'joomla', 'fa fa-jpy' => 'jpy', 'fa fa-jsfiddle' => 'jsfiddle', 'fa fa-key' => 'key', 'fa fa-keyboard-o' => 'keyboard-o', 'fa fa-krw' => 'krw', 'fa fa-language' => 'language', 'fa fa-laptop' => 'laptop', 'fa fa-lastfm' => 'lastfm', 'fa fa-lastfm-square' => 'lastfm-square', 'fa fa-leaf' => 'leaf', 'fa fa-leanpub' => 'leanpub', 'fa fa-legal' => 'legal', 'fa fa-lemon-o' => 'lemon-o', 'fa fa-level-down' => 'level-down', 'fa fa-level-up' => 'level-up', 'fa fa-life-bouy' => 'life-bouy', 'fa fa-life-buoy' => 'life-buoy', 'fa fa-life-ring' => 'life-ring', 'fa fa-life-saver' => 'life-saver', 'fa fa-lightbulb-o' => 'lightbulb-o', 'fa fa-line-chart' => 'line-chart', 'fa fa-link' => 'link', 'fa fa-linkedin' => 'linkedin', 'fa fa-linkedin-square' => 'linkedin-square', 'fa fa-linode' => 'linode', 'fa fa-linux' => 'linux', 'fa fa-list' => 'list', 'fa fa-list-alt' => 'list-alt', 'fa fa-list-ol' => 'list-ol', 'fa fa-list-ul' => 'list-ul', 'fa fa-location-arrow' => 'location-arrow', 'fa fa-lock' => 'lock', 'fa fa-long-arrow-down' => 'long-arrow-down', 'fa fa-long-arrow-left' => 'long-arrow-left', 'fa fa-long-arrow-right' => 'long-arrow-right', 'fa fa-long-arrow-up' => 'long-arrow-up', 'fa fa-low-vision' => 'low-vision', 'fa fa-magic' => 'magic', 'fa fa-magnet' => 'magnet', 'fa fa-mail-forward' => 'mail-forward', 'fa fa-mail-reply' => 'mail-reply', 'fa fa-mail-reply-all' => 'mail-reply-all', 'fa fa-male' => 'male', 'fa fa-map' => 'map', 'fa fa-map-marker' => 'map-marker', 'fa fa-map-o' => 'map-o', 'fa fa-map-pin' => 'map-pin', 'fa fa-map-signs' => 'map-signs', 'fa fa-mars' => 'mars', 'fa fa-mars-double' => 'mars-double', 'fa fa-mars-stroke' => 'mars-stroke', 'fa fa-mars-stroke-h' => 'mars-stroke-h', 'fa fa-mars-stroke-v' => 'mars-stroke-v', 'fa fa-maxcdn' => 'maxcdn', 'fa fa-meanpath' => 'meanpath', 'fa fa-medium' => 'medium', 'fa fa-medkit' => 'medkit', 'fa fa-meetup' => 'meetup', 'fa fa-meh-o' => 'meh-o', 'fa fa-mercury' => 'mercury', 'fa fa-microchip' => 'microchip', 'fa fa-microphone' => 'microphone', 'fa fa-microphone-slash' => 'microphone-slash', 'fa fa-minus' => 'minus', 'fa fa-minus-circle' => 'minus-circle', 'fa fa-minus-square' => 'minus-square', 'fa fa-minus-square-o' => 'minus-square-o', 'fa fa-mixcloud' => 'mixcloud', 'fa fa-mobile' => 'mobile', 'fa fa-mobile-phone' => 'mobile-phone', 'fa fa-modx' => 'modx', 'fa fa-money' => 'money', 'fa fa-moon-o' => 'moon-o', 'fa fa-mortar-board' => 'mortar-board', 'fa fa-motorcycle' => 'motorcycle', 'fa fa-mouse-pointer' => 'mouse-pointer', 'fa fa-music' => 'music', 'fa fa-navicon' => 'navicon', 'fa fa-neuter' => 'neuter', 'fa fa-newspaper-o' => 'newspaper-o', 'fa fa-object-group' => 'object-group', 'fa fa-object-ungroup' => 'object-ungroup', 'fa fa-odnoklassniki' => 'odnoklassniki', 'fa fa-odnoklassniki-square' => 'odnoklassniki-square', 'fa fa-opencart' => 'opencart', 'fa fa-openid' => 'openid', 'fa fa-opera' => 'opera', 'fa fa-optin-monster' => 'optin-monster', 'fa fa-outdent' => 'outdent', 'fa fa-pagelines' => 'pagelines', 'fa fa-paint-brush' => 'paint-brush', 'fa fa-paper-plane' => 'paper-plane', 'fa fa-paper-plane-o' => 'paper-plane-o', 'fa fa-paperclip' => 'paperclip', 'fa fa-paragraph' => 'paragraph', 'fa fa-paste' => 'paste', 'fa fa-pause' => 'pause', 'fa fa-pause-circle' => 'pause-circle', 'fa fa-pause-circle-o' => 'pause-circle-o', 'fa fa-paw' => 'paw', 'fa fa-paypal' => 'paypal', 'fa fa-pencil' => 'pencil', 'fa fa-pencil-square' => 'pencil-square', 'fa fa-pencil-square-o' => 'pencil-square-o', 'fa fa-percent' => 'percent', 'fa fa-phone' => 'phone', 'fa fa-phone-square' => 'phone-square', 'fa fa-photo' => 'photo', 'fa fa-picture-o' => 'picture-o', 'fa fa-pie-chart' => 'pie-chart', 'fa fa-pied-piper' => 'pied-piper', 'fa fa-pied-piper-alt' => 'pied-piper-alt', 'fa fa-pied-piper-pp' => 'pied-piper-pp', 'fa fa-pinterest' => 'pinterest', 'fa fa-pinterest-p' => 'pinterest-p', 'fa fa-pinterest-square' => 'pinterest-square', 'fa fa-plane' => 'plane', 'fa fa-play' => 'play', 'fa fa-play-circle' => 'play-circle', 'fa fa-play-circle-o' => 'play-circle-o', 'fa fa-plug' => 'plug', 'fa fa-plus' => 'plus', 'fa fa-plus-circle' => 'plus-circle', 'fa fa-plus-square' => 'plus-square', 'fa fa-plus-square-o' => 'plus-square-o', 'fa fa-podcast' => 'podcast', 'fa fa-power-off' => 'power-off', 'fa fa-print' => 'print', 'fa fa-product-hunt' => 'product-hunt', 'fa fa-pull-left' => 'pull-left', 'fa fa-pull-right' => 'pull-right', 'fa fa-puzzle-piece' => 'puzzle-piece', 'fa fa-qq' => 'qq', 'fa fa-qrcode' => 'qrcode', 'fa fa-question' => 'question', 'fa fa-question-circle' => 'question-circle', 'fa fa-question-circle-o' => 'question-circle-o', 'fa fa-quora' => 'quora', 'fa fa-quote-left' => 'quote-left', 'fa fa-quote-right' => 'quote-right', 'fa fa-ra' => 'ra', 'fa fa-random' => 'random', 'fa fa-ravelry' => 'ravelry', 'fa fa-rebel' => 'rebel', 'fa fa-recycle' => 'recycle', 'fa fa-reddit' => 'reddit', 'fa fa-reddit-alien' => 'reddit-alien', 'fa fa-reddit-square' => 'reddit-square', 'fa fa-refresh' => 'refresh', 'fa fa-registered' => 'registered', 'fa fa-remove' => 'remove', 'fa fa-renren' => 'renren', 'fa fa-reorder' => 'reorder', 'fa fa-repeat' => 'repeat', 'fa fa-reply' => 'reply', 'fa fa-reply-all' => 'reply-all', 'fa fa-resistance' => 'resistance', 'fa fa-retweet' => 'retweet', 'fa fa-rmb' => 'rmb', 'fa fa-road' => 'road', 'fa fa-rocket' => 'rocket', 'fa fa-rotate-left' => 'rotate-left', 'fa fa-rotate-right' => 'rotate-right', 'fa fa-rouble' => 'rouble', 'fa fa-rss' => 'rss', 'fa fa-rss-square' => 'rss-square', 'fa fa-rub' => 'rub', 'fa fa-ruble' => 'ruble', 'fa fa-rupee' => 'rupee', 'fa fa-s15' => 's15', 'fa fa-safari' => 'safari', 'fa fa-save' => 'save', 'fa fa-scissors' => 'scissors', 'fa fa-scribd' => 'scribd', 'fa fa-search' => 'search', 'fa fa-search-minus' => 'search-minus', 'fa fa-search-plus' => 'search-plus', 'fa fa-sellsy' => 'sellsy', 'fa fa-send' => 'send', 'fa fa-send-o' => 'send-o', 'fa fa-server' => 'server', 'fa fa-share' => 'share', 'fa fa-share-alt' => 'share-alt', 'fa fa-share-alt-square' => 'share-alt-square', 'fa fa-share-square' => 'share-square', 'fa fa-share-square-o' => 'share-square-o', 'fa fa-shekel' => 'shekel', 'fa fa-sheqel' => 'sheqel', 'fa fa-shield' => 'shield', 'fa fa-ship' => 'ship', 'fa fa-shirtsinbulk' => 'shirtsinbulk', 'fa fa-shopping-bag' => 'shopping-bag', 'fa fa-shopping-basket' => 'shopping-basket', 'fa fa-shopping-cart' => 'shopping-cart', 'fa fa-shower' => 'shower', 'fa fa-sign-in' => 'sign-in', 'fa fa-sign-language' => 'sign-language', 'fa fa-sign-out' => 'sign-out', 'fa fa-signal' => 'signal', 'fa fa-signing' => 'signing', 'fa fa-simplybuilt' => 'simplybuilt', 'fa fa-sitemap' => 'sitemap', 'fa fa-skyatlas' => 'skyatlas', 'fa fa-skype' => 'skype', 'fa fa-slack' => 'slack', 'fa fa-sliders' => 'sliders', 'fa fa-slideshare' => 'slideshare', 'fa fa-smile-o' => 'smile-o', 'fa fa-snapchat' => 'snapchat', 'fa fa-snapchat-ghost' => 'snapchat-ghost', 'fa fa-snapchat-square' => 'snapchat-square', 'fa fa-snowflake-o' => 'snowflake-o', 'fa fa-soccer-ball-o' => 'soccer-ball-o', 'fa fa-sort' => 'sort', 'fa fa-sort-alpha-asc' => 'sort-alpha-asc', 'fa fa-sort-alpha-desc' => 'sort-alpha-desc', 'fa fa-sort-amount-asc' => 'sort-amount-asc', 'fa fa-sort-amount-desc' => 'sort-amount-desc', 'fa fa-sort-asc' => 'sort-asc', 'fa fa-sort-desc' => 'sort-desc', 'fa fa-sort-down' => 'sort-down', 'fa fa-sort-numeric-asc' => 'sort-numeric-asc', 'fa fa-sort-numeric-desc' => 'sort-numeric-desc', 'fa fa-sort-up' => 'sort-up', 'fa fa-soundcloud' => 'soundcloud', 'fa fa-space-shuttle' => 'space-shuttle', 'fa fa-spinner' => 'spinner', 'fa fa-spoon' => 'spoon', 'fa fa-spotify' => 'spotify', 'fa fa-square' => 'square', 'fa fa-square-o' => 'square-o', 'fa fa-stack-exchange' => 'stack-exchange', 'fa fa-stack-overflow' => 'stack-overflow', 'fa fa-star' => 'star', 'fa fa-star-half' => 'star-half', 'fa fa-star-half-empty' => 'star-half-empty', 'fa fa-star-half-full' => 'star-half-full', 'fa fa-star-half-o' => 'star-half-o', 'fa fa-star-o' => 'star-o', 'fa fa-steam' => 'steam', 'fa fa-steam-square' => 'steam-square', 'fa fa-step-backward' => 'step-backward', 'fa fa-step-forward' => 'step-forward', 'fa fa-stethoscope' => 'stethoscope', 'fa fa-sticky-note' => 'sticky-note', 'fa fa-sticky-note-o' => 'sticky-note-o', 'fa fa-stop' => 'stop', 'fa fa-stop-circle' => 'stop-circle', 'fa fa-stop-circle-o' => 'stop-circle-o', 'fa fa-street-view' => 'street-view', 'fa fa-strikethrough' => 'strikethrough', 'fa fa-stumbleupon' => 'stumbleupon', 'fa fa-stumbleupon-circle' => 'stumbleupon-circle', 'fa fa-subscript' => 'subscript', 'fa fa-subway' => 'subway', 'fa fa-suitcase' => 'suitcase', 'fa fa-sun-o' => 'sun-o', 'fa fa-superpowers' => 'superpowers', 'fa fa-superscript' => 'superscript', 'fa fa-support' => 'support', 'fa fa-table' => 'table', 'fa fa-tablet' => 'tablet', 'fa fa-tachometer' => 'tachometer', 'fa fa-tag' => 'tag', 'fa fa-tags' => 'tags', 'fa fa-tasks' => 'tasks', 'fa fa-taxi' => 'taxi', 'fa fa-telegram' => 'telegram', 'fa fa-television' => 'television', 'fa fa-tencent-weibo' => 'tencent-weibo', 'fa fa-terminal' => 'terminal', 'fa fa-text-height' => 'text-height', 'fa fa-text-width' => 'text-width', 'fa fa-th' => 'th', 'fa fa-th-large' => 'th-large', 'fa fa-th-list' => 'th-list', 'fa fa-themeisle' => 'themeisle', 'fa fa-thermometer' => 'thermometer', 'fa fa-thermometer-0' => 'thermometer-0', 'fa fa-thermometer-1' => 'thermometer-1', 'fa fa-thermometer-2' => 'thermometer-2', 'fa fa-thermometer-3' => 'thermometer-3', 'fa fa-thermometer-4' => 'thermometer-4', 'fa fa-thermometer-empty' => 'thermometer-empty', 'fa fa-thermometer-full' => 'thermometer-full', 'fa fa-thermometer-half' => 'thermometer-half', 'fa fa-thermometer-quarter' => 'thermometer-quarter', 'fa fa-thermometer-three-quarters' => 'thermometer-three-quarters', 'fa fa-thumb-tack' => 'thumb-tack', 'fa fa-thumbs-down' => 'thumbs-down', 'fa fa-thumbs-o-down' => 'thumbs-o-down', 'fa fa-thumbs-o-up' => 'thumbs-o-up', 'fa fa-thumbs-up' => 'thumbs-up', 'fa fa-ticket' => 'ticket', 'fa fa-times' => 'times', 'fa fa-times-circle' => 'times-circle', 'fa fa-times-circle-o' => 'times-circle-o', 'fa fa-times-rectangle' => 'times-rectangle', 'fa fa-times-rectangle-o' => 'times-rectangle-o', 'fa fa-tint' => 'tint', 'fa fa-toggle-down' => 'toggle-down', 'fa fa-toggle-left' => 'toggle-left', 'fa fa-toggle-off' => 'toggle-off', 'fa fa-toggle-on' => 'toggle-on', 'fa fa-toggle-right' => 'toggle-right', 'fa fa-toggle-up' => 'toggle-up', 'fa fa-trademark' => 'trademark', 'fa fa-train' => 'train', 'fa fa-transgender' => 'transgender', 'fa fa-transgender-alt' => 'transgender-alt', 'fa fa-trash' => 'trash', 'fa fa-trash-o' => 'trash-o', 'fa fa-tree' => 'tree', 'fa fa-trello' => 'trello', 'fa fa-tripadvisor' => 'tripadvisor', 'fa fa-trophy' => 'trophy', 'fa fa-truck' => 'truck', 'fa fa-try' => 'try', 'fa fa-tty' => 'tty', 'fa fa-tumblr' => 'tumblr', 'fa fa-tumblr-square' => 'tumblr-square', 'fa fa-turkish-lira' => 'turkish-lira', 'fa fa-tv' => 'tv', 'fa fa-twitch' => 'twitch', 'fa fa-twitter' => 'twitter', 'fa fa-twitter-square' => 'twitter-square', 'fa fa-umbrella' => 'umbrella', 'fa fa-underline' => 'underline', 'fa fa-undo' => 'undo', 'fa fa-universal-access' => 'universal-access', 'fa fa-university' => 'university', 'fa fa-unlink' => 'unlink', 'fa fa-unlock' => 'unlock', 'fa fa-unlock-alt' => 'unlock-alt', 'fa fa-unsorted' => 'unsorted', 'fa fa-upload' => 'upload', 'fa fa-usb' => 'usb', 'fa fa-usd' => 'usd', 'fa fa-user' => 'user', 'fa fa-user-circle' => 'user-circle', 'fa fa-user-circle-o' => 'user-circle-o', 'fa fa-user-md' => 'user-md', 'fa fa-user-o' => 'user-o', 'fa fa-user-plus' => 'user-plus', 'fa fa-user-secret' => 'user-secret', 'fa fa-user-times' => 'user-times', 'fa fa-users' => 'users', 'fa fa-vcard' => 'vcard', 'fa fa-vcard-o' => 'vcard-o', 'fa fa-venus' => 'venus', 'fa fa-venus-double' => 'venus-double', 'fa fa-venus-mars' => 'venus-mars', 'fa fa-viacoin' => 'viacoin', 'fa fa-viadeo' => 'viadeo', 'fa fa-viadeo-square' => 'viadeo-square', 'fa fa-video-camera' => 'video-camera', 'fa fa-vimeo' => 'vimeo', 'fa fa-vimeo-square' => 'vimeo-square', 'fa fa-vine' => 'vine', 'fa fa-vk' => 'vk', 'fa fa-volume-control-phone' => 'volume-control-phone', 'fa fa-volume-down' => 'volume-down', 'fa fa-volume-off' => 'volume-off', 'fa fa-volume-up' => 'volume-up', 'fa fa-warning' => 'warning', 'fa fa-wechat' => 'wechat', 'fa fa-weibo' => 'weibo', 'fa fa-weixin' => 'weixin', 'fa fa-whatsapp' => 'whatsapp', 'fa fa-wheelchair' => 'wheelchair', 'fa fa-wheelchair-alt' => 'wheelchair-alt', 'fa fa-wifi' => 'wifi', 'fa fa-wikipedia-w' => 'wikipedia-w', 'fa fa-window-close' => 'window-close', 'fa fa-window-close-o' => 'window-close-o', 'fa fa-window-maximize' => 'window-maximize', 'fa fa-window-minimize' => 'window-minimize', 'fa fa-window-restore' => 'window-restore', 'fa fa-windows' => 'windows', 'fa fa-won' => 'won', 'fa fa-wordpress' => 'wordpress', 'fa fa-wpbeginner' => 'wpbeginner', 'fa fa-wpexplorer' => 'wpexplorer', 'fa fa-wpforms' => 'wpforms', 'fa fa-wrench' => 'wrench', 'fa fa-xing' => 'xing', 'fa fa-xing-square' => 'xing-square', 'fa fa-y-combinator' => 'y-combinator', 'fa fa-y-combinator-square' => 'y-combinator-square', 'fa fa-yahoo' => 'yahoo', 'fa fa-yc' => 'yc', 'fa fa-yc-square' => 'yc-square', 'fa fa-yelp' => 'yelp', 'fa fa-yen' => 'yen', 'fa fa-yoast' => 'yoast', 'fa fa-youtube' => 'youtube', 'fa fa-youtube-play' => 'youtube-play', 'fa fa-youtube-square' => 'youtube-square', ]; } /** * Get icons control default settings. * * Retrieve the default settings of the icons control. Used to return the default * settings while initializing the icons control. * * @since 1.0.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { return [ 'options' => self::get_icons(), 'include' => '', 'exclude' => '', ]; } /** * Render icons control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{ data.description }}
<# } #> Fonts::get_font_groups(), 'options' => Fonts::get_fonts(), ]; } /** * Render font control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> '', 'sizes' => [], ] ); } /** * Get slider control default settings. * * Retrieve the default settings of the slider control. Used to return the * default settings while initializing the slider control. * * @since 1.0.0 * @access protected * * @return array Control default settings. */ protected function get_default_settings() { return array_merge( parent::get_default_settings(), [ 'label_block' => true, 'labels' => [], 'scales' => 0, 'handles' => 'default', 'dynamic' => [ 'categories' => [ TagsModule::NUMBER_CATEGORY ], 'property' => 'size', ], ] ); } /** * Render slider control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
print_units_template(); ?>
<# if ( isMultiple && ( data.labels.length || data.scales ) ) { #>
<# if ( data.labels.length ) { #>
<# jQuery.each( data.labels, ( index, label ) => { #>
{{{ label }}}
<# } ); #>
<# } if ( data.scales ) { #>
<# for ( var i = 0; i < data.scales; i++ ) { #>
<# } #>
<# } #>
<# } #>
<# if ( ! isMultiple ) { #>
<# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> get_default_value(); } if ( isset( $settings[ $control['name'] ] ) ) { $value = $settings[ $control['name'] ]; } else { $value = $control['default']; } return $value; } /** * Parse dynamic tags. * * Iterates through all the controls and renders all the dynamic tags. * * @since 2.0.0 * @access public * * @param string $dynamic_value The dynamic tag text. * @param array $dynamic_settings The dynamic tag settings. * * @return string|string[]|mixed A string or an array of strings with the * return value from each tag callback function. */ public function parse_tags( $dynamic_value, $dynamic_settings ) { $current_dynamic_settings = $this->get_settings( 'dynamic' ); if ( is_array( $current_dynamic_settings ) ) { $dynamic_settings = array_merge( $current_dynamic_settings, $dynamic_settings ); } return Plugin::$instance->dynamic_tags->parse_tags_text( $dynamic_value, $dynamic_settings, [ Plugin::$instance->dynamic_tags, 'get_tag_data_content' ] ); } /** * Get data control style value. * * Retrieve the style of the control. Used when adding CSS rules to the control * while extracting CSS from the `selectors` data argument. * * @since 1.5.0 * @since 2.3.3 New `$control_data` parameter added. * @access public * * @param string $css_property CSS property. * @param string $control_value Control value. * @param array $control_data Control Data. * * @return string Control style value. */ public function get_style_value( $css_property, $control_value, array $control_data ) { if ( 'DEFAULT' === $css_property ) { return $control_data['default']; } return $control_value; } /** * Get data control unique ID. * * Retrieve the unique ID of the control. Used to set a uniq CSS ID for the * element. * * @since 1.5.0 * @access protected * * @param string $input_type Input type. Default is 'default'. * * @return string Unique ID. */ protected function get_control_uid( $input_type = 'default' ) { return 'elementor-control-' . $input_type . '-{{{ data._cid }}}'; } } PKs"\*#& & select2.phpnuW+A [], 'multiple' => false, 'select2options' => [], ]; } /** * Render select2 control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.label ) {#> <# } #>
<# var multiple = ( data.multiple ) ? 'multiple' : ''; #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> [ 'fadeIn' => 'Fade In', 'fadeInDown' => 'Fade In Down', 'fadeInLeft' => 'Fade In Left', 'fadeInRight' => 'Fade In Right', 'fadeInUp' => 'Fade In Up', ], 'Zooming' => [ 'zoomIn' => 'Zoom In', 'zoomInDown' => 'Zoom In Down', 'zoomInLeft' => 'Zoom In Left', 'zoomInRight' => 'Zoom In Right', 'zoomInUp' => 'Zoom In Up', ], 'Bouncing' => [ 'bounceIn' => 'Bounce In', 'bounceInDown' => 'Bounce In Down', 'bounceInLeft' => 'Bounce In Left', 'bounceInRight' => 'Bounce In Right', 'bounceInUp' => 'Bounce In Up', ], 'Sliding' => [ 'slideInDown' => 'Slide In Down', 'slideInLeft' => 'Slide In Left', 'slideInRight' => 'Slide In Right', 'slideInUp' => 'Slide In Up', ], 'Rotating' => [ 'rotateIn' => 'Rotate In', 'rotateInDownLeft' => 'Rotate In Down Left', 'rotateInDownRight' => 'Rotate In Down Right', 'rotateInUpLeft' => 'Rotate In Up Left', 'rotateInUpRight' => 'Rotate In Up Right', ], 'Attention Seekers' => [ 'bounce' => 'Bounce', 'flash' => 'Flash', 'pulse' => 'Pulse', 'rubberBand' => 'Rubber Band', 'shake' => 'Shake', 'headShake' => 'Head Shake', 'swing' => 'Swing', 'tada' => 'Tada', 'wobble' => 'Wobble', 'jello' => 'Jello', ], 'Light Speed' => [ 'lightSpeedIn' => 'Light Speed In', ], 'Specials' => [ 'rollIn' => 'Roll In', ], ]; /** * Element appearance animations list. * * @since 2.4.0 * * @param array $additional_animations Additional Animations array. */ $additional_animations = apply_filters( 'elementor/controls/animations/additional_animations', [] ); return array_merge( $animations, $additional_animations ); } /** * Render animations control template. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> 'Grow', 'shrink' => 'Shrink', 'pulse' => 'Pulse', 'pulse-grow' => 'Pulse Grow', 'pulse-shrink' => 'Pulse Shrink', 'push' => 'Push', 'pop' => 'Pop', 'bounce-in' => 'Bounce In', 'bounce-out' => 'Bounce Out', 'rotate' => 'Rotate', 'grow-rotate' => 'Grow Rotate', 'float' => 'Float', 'sink' => 'Sink', 'bob' => 'Bob', 'hang' => 'Hang', 'skew' => 'Skew', 'skew-forward' => 'Skew Forward', 'skew-backward' => 'Skew Backward', 'wobble-vertical' => 'Wobble Vertical', 'wobble-horizontal' => 'Wobble Horizontal', 'wobble-to-bottom-right' => 'Wobble To Bottom Right', 'wobble-to-top-right' => 'Wobble To Top Right', 'wobble-top' => 'Wobble Top', 'wobble-bottom' => 'Wobble Bottom', 'wobble-skew' => 'Wobble Skew', 'buzz' => 'Buzz', 'buzz-out' => 'Buzz Out', ]; $additional_animations = []; /** * Element hover animations list. * * @since 2.4.0 * * @param array $additional_animations Additional Animations array. */ $additional_animations = apply_filters( 'elementor/controls/hover_animations/additional_animations', $additional_animations ); self::$_animations = array_merge( self::$_animations, $additional_animations ); } return self::$_animations; } /** * Render hover animation control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #> true, ]; } } PKs"\߁J+ text-shadow.phpnuW+A 0, 'vertical' => 0, 'blur' => 10, 'color' => 'rgba(0,0,0,0.3)', ]; } /** * Get text shadow control sliders. * * Retrieve the sliders of the text shadow control. Sliders are used while * rendering the control output in the editor. * * @since 1.6.0 * @access public * * @return array Control sliders. */ public function get_sliders() { return [ 'blur' => [ 'label' => __( 'Blur', 'elementor' ), 'min' => 0, 'max' => 100, ], 'horizontal' => [ 'label' => __( 'Horizontal', 'elementor' ), 'min' => -100, 'max' => 100, ], 'vertical' => [ 'label' => __( 'Vertical', 'elementor' ), 'min' => -100, 'max' => 100, ], ]; } /** * Render text shadow control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.6.0 * @access public */ public function content_template() { ?>
get_sliders() as $slider_name => $slider ) : $control_uid = $this->get_control_uid( $slider_name ); ?>
true, ]; } /** * Render heading control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. The variables for the class are available using `data` JS * object. * * @since 1.0.0 * @access public */ public function content_template() { ?>

{{ data.label }}

bb 7wp-widget.phpnuW+APKs"\n d=groups/css-filter.phpnuW+APKs"\U9 9 yKgroups/box-shadow.phpnuW+APKs"\YYTgroups/background.phpnuW+APKs"\QH Ogroups/border.phpnuW+APKs"\7"groups/typography.phpnuW+APKs"\ɪ+c4c4groups/base.phpnuW+APKs"\@9M groups/text-shadow.phpnuW+APKs"\ x1V(V(;groups/image-size.phpnuW+APKs"\">Ztt:base-icon-font.phpnuW+APKs"\ EP =raw-html.phpnuW+APKs"\hh Cnumber.phpnuW+APKs"\ĨkkYLdeprecated-notice.phpnuW+APKs"\ :|:| Uicon.phpnuW+APKs"\-T{font.phpnuW+APKs"\Oc@ slider.phpnuW+APKs"\Lae e base-data.phpnuW+APKs"\*#& & nselect2.phpnuW+APKs"\KB animation.phpnuW+APKs"\Vd %base-ui.phpnuW+APKs"\D}NNdhover-animation.phpnuW+APKs"\߁J+ "text-shadow.phpnuW+APKs"\I]BB /heading.phpnuW+APK4425