66 lines
1.8 KiB
PHP
66 lines
1.8 KiB
PHP
<?php
|
|
namespace Elementor\Modules\AtomicWidgets\Elements;
|
|
|
|
use Elementor\Modules\AtomicWidgets\PropDependencies\Manager as Dependency_Manager;
|
|
use Elementor\Modules\AtomicWidgets\PropTypes\Contracts\Prop_Type;
|
|
use Elementor\Widget_Base;
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly.
|
|
}
|
|
|
|
abstract class Atomic_Widget_Base extends Widget_Base {
|
|
use Has_Atomic_Base;
|
|
|
|
protected $version = '0.0';
|
|
protected $styles = [];
|
|
protected $editor_settings = [];
|
|
|
|
public function __construct( $data = [], $args = null ) {
|
|
parent::__construct( $data, $args );
|
|
|
|
$this->version = $data['version'] ?? '0.0';
|
|
$this->styles = $data['styles'] ?? [];
|
|
$this->editor_settings = $data['editor_settings'] ?? [];
|
|
}
|
|
|
|
abstract protected function define_atomic_controls(): array;
|
|
|
|
public function get_global_scripts() {
|
|
return [];
|
|
}
|
|
|
|
public function get_initial_config() {
|
|
$config = parent::get_initial_config();
|
|
$props_schema = static::get_props_schema();
|
|
|
|
$config['atomic'] = true;
|
|
$config['atomic_controls'] = $this->get_atomic_controls();
|
|
$config['base_styles'] = $this->get_base_styles();
|
|
$config['base_styles_dictionary'] = $this->get_base_styles_dictionary();
|
|
$config['atomic_props_schema'] = $props_schema;
|
|
$config['dependencies_per_target_mapping'] = Dependency_Manager::get_source_to_dependents( $props_schema );
|
|
$config['version'] = $this->version;
|
|
|
|
return $config;
|
|
}
|
|
|
|
public function get_categories(): array {
|
|
return [ 'v4-elements' ];
|
|
}
|
|
/**
|
|
* TODO: Removes the wrapper div from the widget.
|
|
*/
|
|
public function before_render() {}
|
|
public function after_render() {}
|
|
|
|
/**
|
|
* @return array<string, Prop_Type>
|
|
*/
|
|
abstract protected static function define_props_schema(): array;
|
|
|
|
public static function generate() {
|
|
return Widget_Builder::make( static::get_element_type() );
|
|
}
|
|
}
|