PluginProbe
Elementor Website Builder – more than just a page builder / 3.35.0-dev4
Elementor Website Builder – more than just a page builder v3.35.0-dev4
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / modules / components / transformers / overridable-transformer.php

overridable-transformer.php in Elementor Website Builder – more than just a page builder 3.35.0-dev4, at modules/components/transformers/overridable-transformer.php

49 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Modules\Components\Transformers;
4
5 use Elementor\Modules\AtomicWidgets\PropsResolver\Props_Resolver_Context;
6 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformer_Base;
7 use Elementor\Modules\AtomicWidgets\Elements\Base\Render_Context;
8 use Elementor\Modules\Components\PropTypes\Override_Prop_Type;
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit; // Exit if accessed directly.
12 }
13
14 class Overridable_Transformer extends Transformer_Base {
15 public function transform( $value, Props_Resolver_Context $context ) {
16 [ 'override_key' => $override_key, 'origin_value' => $origin_value ] = $value;
17
18 $result = $origin_value;
19
20 $overrides = Render_Context::get( static::class )['overrides'] ?? [];
21
22 if ( isset( $overrides[ $override_key ] ) ) {
23 $matching_override_value = $overrides[ $override_key ];
24
25 if ( $this->is_origin_value_override( $origin_value ) ) {
26 $result = $this->transform_overridable_override( $origin_value, $matching_override_value, $context );
27 } else {
28 $result = $matching_override_value;
29 }
30 }
31
32 return $result;
33 }
34
35 private function is_origin_value_override( array $origin_value ): bool {
36 return isset( $origin_value['$$type'] ) && Override_Prop_Type::get_key() === $origin_value['$$type'];
37 }
38
39 private function transform_overridable_override( array $inner_override, array $outer_override_value, Props_Resolver_Context $context ): ?array {
40 $override_transformer = new Override_Transformer();
41 $transformed_inner_override = $override_transformer->transform( $inner_override['value'], $context );
42
43 return [
44 'override_key' => $transformed_inner_override['override_key'],
45 'override_value' => $outer_override_value,
46 ];
47 }
48 }
49