• File: default-styles-sections.php
  • Full Path: /home/slvgwrnz/public_html/wp-content/plugins/elementor/modules/default-styles/default-styles-sections.php
  • Date Modified: 11/05/2026 9:17 AM
  • File size: 1.82 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace Elementor\Modules\DefaultStyles;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class Default_Styles_Sections {

	public const SECTION_PROPS = [
		'layout' => [
			'display',
			'flex-direction',
			'flex-wrap',
			'justify-content',
			'align-items',
			'align-content',
			'align-self',
			'gap',
			'order',
			'grid-column',
			'grid-row',
			'grid-auto-rows',
			'grid-auto-columns',
		],
		'spacing' => [ 'margin', 'padding' ],
		'size' => [
			'width',
			'min-width',
			'max-width',
			'height',
			'min-height',
			'max-height',
			'overflow',
			'aspect-ratio',
			'object-fit',
		],
		'position' => [ 'position', 'z-index', 'scroll-margin-top' ],
		'typography' => [
			'font-family',
			'font-weight',
			'font-size',
			'text-align',
			'color',
			'line-height',
			'letter-spacing',
			'word-spacing',
			'column-count',
			'text-decoration',
			'text-transform',
			'direction',
			'font-style',
			'stroke',
		],
		'background' => [ 'background' ],
		'border' => [ 'border-radius', 'border-width', 'border-color', 'border-style' ],
		'effects' => [
			'mix-blend-mode',
			'box-shadow',
			'opacity',
			'transform',
			'filter',
			'backdrop-filter',
			'transform-origin',
			'transition',
		],
	];

	public static function for_variants( array $variants ): array {
		$touched_props = [];
		$has_custom_css = false;

		foreach ( $variants as $variant ) {
			$touched_props = array_merge(
				$touched_props,
				array_keys( $variant['props'] ?? [] ),
				$variant['null_props'] ?? []
			);

			$has_custom_css = $has_custom_css || ! empty( $variant['custom_css'] );
		}

		$sections = [];

		foreach ( self::SECTION_PROPS as $section => $props ) {
			if ( array_intersect( $props, $touched_props ) ) {
				$sections[] = $section;
			}
		}

		if ( $has_custom_css ) {
			$sections[] = 'custom_css';
		}

		return $sections;
	}
}