1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<?php
namespace Elementor\Modules\Variables\Classes;
use Elementor\Modules\Variables\Storage\Repository as Variables_Repository;
if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. }
class CSS_Renderer { private Variables_Repository $repository;
public function __construct( Variables_Repository $repository ) { $this->repository = $repository; }
private function global_variables(): array { return $this->repository->variables(); }
public function raw_css(): string { $list_of_variables = $this->global_variables();
if ( empty( $list_of_variables ) ) { return ''; }
$css_entries = $this->css_entries_for( $list_of_variables );
if ( empty( $css_entries ) ) { return ''; }
return $this->wrap_with_root( $css_entries ); }
private function css_entries_for( array $list_of_variables ): array { $entries = [];
foreach ( $list_of_variables as $variable_id => $variable ) { $entry = $this->build_css_variable_entry( $variable_id, $variable );
if ( empty( $entry ) ) { continue; }
$entries[] = $entry; }
return $entries; }
private function build_css_variable_entry( string $id, array $variable ): ?string { $variable_name = sanitize_text_field( $id );
if ( ! array_key_exists( 'deleted', $variable ) ) { $variable_name = sanitize_text_field( $variable['label'] ?? '' ); }
$value = sanitize_text_field( $variable['value'] ?? '' );
if ( empty( $value ) || empty( $variable_name ) ) { return null; }
return "--{$variable_name}:{$value};"; }
private function wrap_with_root( array $css_entries ): string { return ':root { ' . implode( ' ', $css_entries ) . ' }'; } }
|