/var/www/html_de/wp-content/plugins/elementor/modules/variables/hooks.php


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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php

namespace Elementor\Modules\Variables;

use 
Elementor\Modules\Variables\Classes\Variable_Types_Registry;
use 
Elementor\Modules\Variables\PropTypes\Color_Variable_Prop_Type;
use 
Elementor\Modules\Variables\PropTypes\Font_Variable_Prop_Type;
use 
Elementor\Plugin;
use 
Elementor\Core\Files\CSS\Post as Post_CSS;
use 
Elementor\Modules\Variables\Classes\CSS_Renderer as Variables_CSS_Renderer;
use 
Elementor\Modules\Variables\Classes\Fonts;
use 
Elementor\Modules\Variables\Classes\Rest_Api as Variables_API;
use 
Elementor\Modules\Variables\Storage\Repository as Variables_Repository;
use 
Elementor\Modules\Variables\Classes\Style_Schema;
use 
Elementor\Modules\Variables\Classes\Style_Transformers;
use 
Elementor\Modules\Variables\Classes\Variables;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly.
}

class 
Hooks {
    const 
PACKAGES = [
        
'editor-variables',
    ];

    public function 
register() {
        
$this->register_styles_transformers()
            ->
register_packages()
            ->
filter_for_style_schema()
            ->
register_css_renderer()
            ->
register_fonts()
            ->
register_api_endpoints()
            ->
register_variable_types();

        return 
$this;
    }

    private function 
register_variable_types() {
        
add_action'elementor/variables/register', function ( Variable_Types_Registry $registry ) {
            
$registry->registerColor_Variable_Prop_Type::get_key(), new Color_Variable_Prop_Type() );
            
$registry->registerFont_Variable_Prop_Type::get_key(), new Font_Variable_Prop_Type() );
        } );

        return 
$this;
    }

    private function 
register_packages() {
        
add_filter'elementor/editor/v2/packages', function ( $packages ) {
            return 
array_merge$packagesself::PACKAGES );
        } );

        return 
$this;
    }

    private function 
register_styles_transformers() {
        
add_action'elementor/atomic-widgets/styles/transformers/register', function ( $registry ) {
            
Variables::init$this->variables_repository() );
            ( new 
Style_Transformers() )->append_to$registry );
        } );

        return 
$this;
    }

    private function 
filter_for_style_schema() {
        
add_filter'elementor/atomic-widgets/styles/schema', function ( array $schema ) {
            return ( new 
Style_Schema() )->augment$schema );
        } );

        return 
$this;
    }

    private function 
css_renderer() {
        return new 
Variables_CSS_Renderer$this->variables_repository() );
    }

    private function 
register_css_renderer() {
        
add_action'elementor/css-file/post/parse', function ( Post_CSS $post_css ) {
            if ( ! 
Plugin::$instance->kits_manager->is_kit$post_css->get_post_id() ) ) {
                return;
            }

            
$post_css->get_stylesheet()->add_raw_css(
                
$this->css_renderer()->raw_css()
            );
        } );

        return 
$this;
    }

    private function 
fonts() {
        return new 
Fonts$this->variables_repository() );
    }

    private function 
register_fonts() {
        
add_action'elementor/css-file/post/parse', function ( $post_css ) {
            
$this->fonts()->append_to$post_css );
        } );

        return 
$this;
    }

    private function 
rest_api() {
        return new 
Variables_API$this->variables_repository() );
    }

    private function 
register_api_endpoints() {
        
add_action'rest_api_init', function () {
            
$this->rest_api()->register_routes();
        } );

        return 
$this;
    }

    private function 
variables_repository() {
        return new 
Variables_Repository(
            
Plugin::$instance->kits_manager->get_active_kit()
        );
    }
}