PluginProbe
Elementor Website Builder – more than just a page builder / trunk
Elementor Website Builder – more than just a page builder vtrunk
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 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 All 457 releases
elementor / modules / mcp / abilities / appliers / v3 / converter / converters / simple-setting-converter.php

simple-setting-converter.php in Elementor Website Builder – more than just a page builder trunk, at modules/mcp/abilities/appliers/v3/converter/converters/simple-setting-converter.php

76 lines 2.2 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\Mcp\Abilities\Appliers\V3\Converter\Converters;
4
5 use Elementor\Modules\Mcp\Abilities\Appliers\V3\Converter\V3_Context_Meta;
6 use Elementor\Modules\Mcp\Abilities\Appliers\V3\Converter\V3_Conversion_Context;
7 use Elementor\Modules\Mcp\Abilities\Appliers\V3\Converter\V3_Property_Converter;
8 use Elementor\Modules\Mcp\Abilities\Appliers\V3\Mapper\Responsive_Key_Resolver;
9 use Elementor\Modules\Mcp\Abilities\Appliers\V3\V3_Value_Resolvers;
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13 }
14
15 /**
16 * Handles simple `setting` + `resolver` overrides: single-key writes with responsive
17 * suffixing. Also handles the `resolver = box_shadow` sub-case (writes both
18 * `<setting>_type` and `<setting>`).
19 */
20 class Simple_Setting_Converter implements V3_Property_Converter {
21
22 private Responsive_Key_Resolver $responsive_resolver;
23
24 public function __construct( Responsive_Key_Resolver $responsive_resolver ) {
25 $this->responsive_resolver = $responsive_resolver;
26 }
27
28 public function is_supported( array $rule, V3_Context_Meta $meta ): bool {
29 $override = $meta->get_override( $rule['property'], $rule['state'] );
30
31 return null !== $override && isset( $override['setting'] );
32 }
33
34 public function convert( V3_Conversion_Context $ctx, array $rule, V3_Context_Meta $meta ): bool {
35 $override = $meta->get_override( $rule['property'], $rule['state'] );
36 if ( null === $override || ! isset( $override['setting'] ) ) {
37 return false;
38 }
39
40 $setting = $override['setting'];
41 if ( ! is_string( $setting ) || '' === $setting ) {
42 return false;
43 }
44
45 $resolver = $override['resolver'] ?? 'text';
46 $resolved = V3_Value_Resolvers::resolve( (string) $resolver, (string) $rule['value'] );
47 if ( null === $resolved ) {
48 return false;
49 }
50
51 if ( 'box_shadow' === $resolver && is_array( $resolved ) ) {
52 $ctx->merge_patch( [
53 $setting . '_type' => $resolved['box_shadow_type'],
54 $setting => $resolved['box_shadow'],
55 ] );
56
57 return true;
58 }
59
60 $key = $this->responsive_resolver->resolve(
61 $setting,
62 (string) $rule['breakpoint'],
63 ! empty( $override['responsive'] ),
64 $meta
65 );
66
67 if ( null === $key ) {
68 return false;
69 }
70
71 $ctx->merge_patch( [ $key => $resolved ] );
72
73 return true;
74 }
75 }
76