| 1 |
<?php |
| 2 |
namespace Elementor\Modules\Components\Documents; |
| 3 |
|
| 4 |
if ( ! defined( 'ABSPATH' ) ) { |
| 5 |
exit; // Exit if accessed directly |
| 6 |
} |
| 7 |
|
| 8 |
class Component_Overridable_Props { |
| 9 |
/** @var array{ [string]: Component_Overridable_Prop } */ |
| 10 |
public array $props; |
| 11 |
public array $groups; |
| 12 |
|
| 13 |
private function __construct( $overridable_props_meta ) { |
| 14 |
if ( is_string( $overridable_props_meta ) && ! empty( $overridable_props_meta ) ) { |
| 15 |
$overridable_props_meta = json_decode( $overridable_props_meta, true ); |
| 16 |
} |
| 17 |
|
| 18 |
if ( empty( $overridable_props_meta ) ) { |
| 19 |
$this->props = []; |
| 20 |
$this->groups = []; |
| 21 |
|
| 22 |
return; |
| 23 |
} |
| 24 |
|
| 25 |
$formatted_props = array_map( function( array $overridable_prop ) { |
| 26 |
return Component_Overridable_Prop::make( $overridable_prop ); |
| 27 |
}, $overridable_props_meta['props'] ?? [] ); |
| 28 |
|
| 29 |
$this->props = $formatted_props; |
| 30 |
$this->groups = $overridable_props_meta['groups'] ?? []; |
| 31 |
} |
| 32 |
|
| 33 |
public static function make( array $overridable_props_meta ): self { |
| 34 |
return new self( $overridable_props_meta ); |
| 35 |
} |
| 36 |
} |
| 37 |
|