: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
} else if ( ! $this->has_advanced_fields ) {
// Disable if module doesn't set advanced_fields property and has no VB support
// Module has to explicitly set false to disable filters options
if ( false === self::$_->array_get( $this->advanced_fields, 'filters', false ) ) {
if ( ! isset( $i18n['filter'] ) ) {
// phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment
'title' => esc_html__( 'Filters', 'et_builder' ),
'description' => esc_html__( 'Shift all colors by this amount.', 'et_builder' ),
'description' => esc_html__( 'Define how intense the color saturation should be.', 'et_builder' ),
'label' => esc_html__( 'Brightness', 'et_builder' ),
'description' => esc_html__( 'Define how bright the colors should be.', 'et_builder' ),
'label' => esc_html__( 'Contrast', 'et_builder' ),
'description' => esc_html__( 'Define how distinct bright and dark areas should be.', 'et_builder' ),
'label' => esc_html__( 'Invert', 'et_builder' ),
'description' => esc_html__( 'Invert the hue, saturation, and brightness by this amount.', 'et_builder' ),
'label' => esc_html__( 'Sepia', 'et_builder' ),
'description' => esc_html__( 'Travel back in time by this amount.', 'et_builder' ),
'label' => esc_html__( 'Opacity', 'et_builder' ),
'description' => esc_html__( 'Define how transparent or opaque this should be.', 'et_builder' ),
'description' => esc_html__( 'Blur by this amount.', 'et_builder' ),
'label' => esc_html__( 'Blend Mode', 'et_builder' ),
'description' => esc_html__( 'Modify how this element blends with any layers beneath it. To reset, choose the "Normal" option.', 'et_builder' ),
$filter_settings = self::$_->array_get( $this->advanced_fields, 'filters' );
$tab_slug = self::$_->array_get( $filter_settings, 'tab_slug', 'advanced' );
$toggle_slug = self::$_->array_get( $filter_settings, 'toggle_slug','filters' );
$toggle_name = self::$_->array_get( $filter_settings, 'toggle_name', $i18n['filter']['toggle']['title'] );
$this->_add_settings_modal_toggles( $tab_slug, array(
$additional_options = array();
$additional_options['filter_hue_rotate'] = array(
'label' => et_builder_i18n( 'Hue' ),
'description' => $i18n['filter']['hue']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['filter_saturate'] = array(
'label' => et_builder_i18n( 'Saturation' ),
'description' => $i18n['filter']['saturate']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['filter_brightness'] = array(
'label' => $i18n['filter']['brightness']['label'],
'description' => $i18n['filter']['brightness']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['filter_contrast'] = array(
'label' => $i18n['filter']['contrast']['label'],
'description' => $i18n['filter']['contrast']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['filter_invert'] = array(
'label' => $i18n['filter']['invert']['label'],
'description' => $i18n['filter']['invert']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['filter_sepia'] = array(
'label' => $i18n['filter']['sepia']['label'],
'description' => $i18n['filter']['sepia']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['filter_opacity'] = array(
'label' => $i18n['filter']['opacity']['label'],
'description' => $i18n['filter']['opacity']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['filter_blur'] = array(
'label' => et_builder_i18n( 'Blur' ),
'description' => $i18n['filter']['blur']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'allowed_units' => array( 'em', 'rem', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ex', 'vh', 'vw' ),
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$additional_options['mix_blend_mode'] = array(
'label' => $i18n['filter']['blend']['label'],
'description' => $i18n['filter']['blend']['description'],
'option_category' => 'layout',
'default_on_child' => true,
'normal' => et_builder_i18n( 'Normal' ),
'multiply' => et_builder_i18n( 'Multiply' ),
'screen' => et_builder_i18n( 'Screen' ),
'overlay' => et_builder_i18n( 'Overlay' ),
'darken' => et_builder_i18n( 'Darken' ),
'lighten' => et_builder_i18n( 'Lighten' ),
'color-dodge' => et_builder_i18n( 'Color Dodge' ),
'color-burn' => et_builder_i18n( 'Color Burn' ),
'hard-light' => et_builder_i18n( 'Hard Light' ),
'soft-light' => et_builder_i18n( 'Soft Light' ),
'difference' => et_builder_i18n( 'Difference' ),
'exclusion' => et_builder_i18n( 'Exclusion' ),
'hue' => et_builder_i18n( 'Hue' ),
'saturation' => et_builder_i18n( 'Saturation' ),
'color' => et_builder_i18n( 'Color' ),
'luminosity' => et_builder_i18n( 'Luminosity' ),
'toggle_slug' => $toggle_slug,
'reset_animation' => false,
'mobile_options' => true,
$this->_additional_fields_options = array_merge( $this->_additional_fields_options, $additional_options );
// Maybe add child filters (i.e. targeting only images within a module)
if ( ! isset( $this->advanced_fields['filters']['child_filters_target'] ) ) {
$child_filter = $this->advanced_fields['filters']['child_filters_target'];
// Allow to modify child filter options label. Default is Image.
$child_filter_label = isset( $child_filter['label'] ) ? $child_filter['label'] : et_builder_i18n( 'Image' );
$additional_child_options = array(
'child_filter_hue_rotate' => array(
'label' => $child_filter_label . ' ' . et_builder_i18n( 'Hue' ),
'description' => $i18n['filter']['hue']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_filter_saturate' => array(
'label' => $child_filter_label . ' ' . et_builder_i18n( 'Saturation' ),
'description' => $i18n['filter']['saturate']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_filter_brightness' => array(
'label' => $child_filter_label . ' ' . $i18n['filter']['brightness']['label'],
'description' => $i18n['filter']['brightness']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_filter_contrast' => array(
'label' => $child_filter_label . ' ' . $i18n['filter']['contrast']['label'],
'description' => $i18n['filter']['contrast']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_filter_invert' => array(
'label' => $child_filter_label . ' ' . $i18n['filter']['invert']['label'],
'description' => $i18n['filter']['invert']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_filter_sepia' => array(
'label' => $child_filter_label . ' ' . $i18n['filter']['sepia']['label'],
'description' => $i18n['filter']['sepia']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_filter_opacity' => array(
'label' => $child_filter_label . ' ' . $i18n['filter']['opacity']['label'],
'description' => $i18n['filter']['opacity']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_filter_blur' => array(
'label' => $child_filter_label . ' ' . et_builder_i18n( 'Blur' ),
'description' => $i18n['filter']['blur']['description'],
'option_category' => 'layout',
'range_settings' => array(
'default_on_child' => true,
'allowed_units' => array( 'em', 'rem', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ex', 'vh', 'vw' ),
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
'child_mix_blend_mode' => array(
'label' => $child_filter_label . ' ' . $i18n['filter']['blend']['label'],
'description' => $i18n['filter']['blend']['description'],
'option_category' => 'layout',
'default_on_child' => true,
'normal' => et_builder_i18n( 'Normal' ),
'multiply' => et_builder_i18n( 'Multiply' ),
'screen' => et_builder_i18n( 'Screen' ),
'overlay' => et_builder_i18n( 'Overlay' ),
'darken' => et_builder_i18n( 'Darken' ),
'lighten' => et_builder_i18n( 'Lighten' ),
'color-dodge' => et_builder_i18n( 'Color Dodge' ),
'color-burn' => et_builder_i18n( 'Color Burn' ),
'hard-light' => et_builder_i18n( 'Hard Light' ),
'soft-light' => et_builder_i18n( 'Soft Light' ),
'difference' => et_builder_i18n( 'Difference' ),
'exclusion' => et_builder_i18n( 'Exclusion' ),
'hue' => et_builder_i18n( 'Hue' ),
'saturation' => et_builder_i18n( 'Saturation' ),
'color' => et_builder_i18n( 'Color' ),
'luminosity' => et_builder_i18n( 'Luminosity' ),
'tab_slug' => $child_filter['tab_slug'],
'toggle_slug' => $child_filter['toggle_slug'],
'reset_animation' => false,
'mobile_options' => true,
if ( isset( $child_filter['depends_show_if'] ) ) {
foreach ( $additional_child_options as $option => $value ) {
$additional_child_options[ $option ]['depends_show_if'] = $child_filter['depends_show_if'];