PluginProbe
Elementor Website Builder – more than just a page builder / 3.25.7
Elementor Website Builder – more than just a page builder v3.25.7
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 / atomic-widgets / module.php

module.php in Elementor Website Builder – more than just a page builder 3.25.7, at modules/atomic-widgets/module.php

107 lines 3.9 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\AtomicWidgets;
4
5 use Elementor\Core\Base\Module as BaseModule;
6 use Elementor\Core\Experiments\Manager as Experiments_Manager;
7 use Elementor\Modules\AtomicWidgets\DynamicTags\Dynamic_Tags_Module;
8 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Classes_Transformer;
9 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Image_Src_Transformer;
10 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Image_Transformer;
11 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Primitive_Transformer;
12 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers_Registry;
13 use Elementor\Modules\AtomicWidgets\PropTypes\Boolean_Prop_Type;
14 use Elementor\Modules\AtomicWidgets\PropTypes\Classes_Prop_Type;
15 use Elementor\Modules\AtomicWidgets\PropTypes\Image_Prop_Type;
16 use Elementor\Modules\AtomicWidgets\PropTypes\Image_Src_Prop_Type;
17 use Elementor\Modules\AtomicWidgets\PropTypes\Number_Prop_Type;
18 use Elementor\Modules\AtomicWidgets\PropTypes\String_Prop_Type;
19 use Elementor\Modules\AtomicWidgets\Widgets\Atomic_Heading;
20 use Elementor\Modules\AtomicWidgets\Widgets\Atomic_Image;
21 use Elementor\Plugin;
22 use Elementor\Widgets_Manager;
23
24 if ( ! defined( 'ABSPATH' ) ) {
25 exit; // Exit if accessed directly.
26 }
27
28 class Module extends BaseModule {
29 const EXPERIMENT_NAME = 'atomic_widgets';
30
31 const PACKAGES = [
32 'editor-documents', // TODO: NEED to be removed once the editor will not be dependent on the documents package.
33 'editor-panels',
34 'editor-editing-panel',
35 'editor-style',
36 ];
37
38 public function get_name() {
39 return 'atomic-widgets';
40 }
41
42 public function __construct() {
43 parent::__construct();
44
45 $this->register_experiment();
46
47 if ( Plugin::$instance->experiments->is_feature_active( self::EXPERIMENT_NAME ) ) {
48 Dynamic_Tags_Module::instance()->register_hooks();
49
50 ( new Atomic_Styles() )->register_hooks();
51
52 add_filter( 'elementor/editor/v2/packages', fn( $packages ) => $this->add_packages( $packages ) );
53 add_filter( 'elementor/widgets/register', fn( Widgets_Manager $widgets_manager ) => $this->register_widgets( $widgets_manager ) );
54 add_action( 'elementor/atomic-widgets/settings/transformers/register', fn ( $transformers ) => $this->register_transformers( $transformers ) );
55
56 add_action( 'elementor/editor/after_enqueue_scripts', fn() => $this->enqueue_scripts() );
57 }
58 }
59
60 private function register_experiment() {
61 Plugin::$instance->experiments->add_feature( [
62 'name' => self::EXPERIMENT_NAME,
63 'title' => esc_html__( 'Atomic Widgets', 'elementor' ),
64 'description' => esc_html__( 'Enable atomic widgets.', 'elementor' ),
65 'hidden' => true,
66 'default' => Experiments_Manager::STATE_INACTIVE,
67 'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA,
68 ] );
69 }
70
71 private function add_packages( $packages ) {
72 return array_merge( $packages, self::PACKAGES );
73 }
74
75 private function register_widgets( Widgets_Manager $widgets_manager ) {
76 $widgets_manager->register( new Atomic_Heading() );
77 $widgets_manager->register( new Atomic_Image() );
78 }
79
80 private function register_transformers( Transformers_Registry $transformers ) {
81 // Primitives
82 $transformers->register( Boolean_Prop_Type::get_key(), new Primitive_Transformer() );
83 $transformers->register( Number_Prop_Type::get_key(), new Primitive_Transformer() );
84 $transformers->register( String_Prop_Type::get_key(), new Primitive_Transformer() );
85
86 // Other
87 $transformers->register( Classes_Prop_Type::get_key(), new Classes_Transformer() );
88 $transformers->register( Image_Prop_Type::get_key(), new Image_Transformer() );
89 $transformers->register( Image_Src_Prop_Type::get_key(), new Image_Src_Transformer() );
90 }
91
92 /**
93 * Enqueue the module scripts.
94 *
95 * @return void
96 */
97 private function enqueue_scripts() {
98 wp_enqueue_script(
99 'elementor-atomic-widgets-editor',
100 $this->get_js_assets_url( 'atomic-widgets-editor' ),
101 [ 'elementor-editor' ],
102 ELEMENTOR_VERSION,
103 true
104 );
105 }
106 }
107