PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.1
Elementor Website Builder – more than just a page builder v4.3.1
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 4.1.0-beta2 4.1.0-dev2 4.0.8 All 454 releases
elementor / modules / mcp / abilities / appliers / v3 / v3-value-formatters.php

v3-value-formatters.php in Elementor Website Builder – more than just a page builder 4.3.1, at modules/mcp/abilities/appliers/v3/v3-value-formatters.php

93 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;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 /**
10 * Inverse of {@see V3_Value_Resolvers}: turns V3 control values back into CSS strings.
11 * Uses the same resolver names so mapper/serializer stay symmetric under one vocabulary.
12 */
13 class V3_Value_Formatters {
14
15 const DEFAULT_UNIT = 'px';
16
17 public static function format( string $resolver, $value ): ?string {
18 if ( null === $value || '' === $value ) {
19 return null;
20 }
21
22 switch ( $resolver ) {
23 case 'text':
24 case 'color':
25 return is_scalar( $value ) ? (string) $value : null;
26
27 case 'dimension':
28 case 'slider':
29 return self::format_dimension( $value );
30
31 case 'sides':
32 return self::format_sides( $value );
33
34 default:
35 return null;
36 }
37 }
38
39 public static function format_size( $size ): string {
40 if ( is_int( $size ) ) {
41 return (string) $size;
42 }
43
44 if ( is_float( $size ) ) {
45 return rtrim( rtrim( sprintf( '%.4f', $size ), '0' ), '.' );
46 }
47
48 if ( is_string( $size ) && '' !== $size ) {
49 return $size;
50 }
51
52 return '0';
53 }
54
55 private static function format_dimension( $value ): ?string {
56 if ( ! is_array( $value ) || ! array_key_exists( 'size', $value ) ) {
57 return null;
58 }
59
60 if ( '' === $value['size'] || null === $value['size'] ) {
61 return null;
62 }
63
64 $unit = isset( $value['unit'] ) ? (string) $value['unit'] : '';
65
66 return self::format_size( $value['size'] ) . $unit;
67 }
68
69 private static function format_sides( $value ): ?string {
70 if ( ! is_array( $value ) ) {
71 return null;
72 }
73
74 foreach ( [ 'top', 'right', 'bottom', 'left' ] as $side ) {
75 if ( ! array_key_exists( $side, $value ) || '' === $value[ $side ] || null === $value[ $side ] ) {
76 return null;
77 }
78 }
79
80 $unit = isset( $value['unit'] ) && '' !== $value['unit'] ? $value['unit'] : self::DEFAULT_UNIT;
81 $top = self::format_size( $value['top'] );
82 $right = self::format_size( $value['right'] );
83 $bottom = self::format_size( $value['bottom'] );
84 $left = self::format_size( $value['left'] );
85
86 if ( ! empty( $value['isLinked'] ) && $top === $right && $right === $bottom && $bottom === $left ) {
87 return $top . $unit;
88 }
89
90 return sprintf( '%s%s %s%s %s%s %s%s', $top, $unit, $right, $unit, $bottom, $unit, $left, $unit );
91 }
92 }
93