Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/elementor/modules/atomic-widgets/module.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
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\Elements_Manager;
8
+
use Elementor\Modules\AtomicWidgets\DynamicTags\Dynamic_Tags_Module;
9
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Youtube\Atomic_Youtube;
10
+
use Elementor\Modules\AtomicWidgets\Elements\Div_Block\Div_Block;
11
+
use Elementor\Modules\AtomicWidgets\Elements\Flexbox\Flexbox;
12
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Heading\Atomic_Heading;
13
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Image\Atomic_Image;
14
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Paragraph\Atomic_Paragraph;
15
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Button\Atomic_Button;
16
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Divider\Atomic_Divider;
17
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Svg\Atomic_Svg;
18
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Tabs\Atomic_Tabs;
19
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Tabs\Atomic_Tabs_Menu;
20
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Tabs\Atomic_Tab;
21
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Tabs\Atomic_Tabs_Content_Area;
22
+
use Elementor\Modules\AtomicWidgets\ImportExport\Atomic_Import_Export;
23
+
use Elementor\Modules\AtomicWidgets\Loader\Frontend_Assets_Loader;
24
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Combine_Array_Transformer;
25
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Export\Image_Src_Export_Transformer;
26
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Image_Src_Transformer;
27
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Image_Transformer;
28
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Import\Image_Src_Import_Transformer;
29
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Import_Export_Plain_Transformer;
30
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Classes_Transformer;
31
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Date_Time_Transformer;
32
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Link_Transformer;
33
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Plain_Transformer;
34
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Background_Color_Overlay_Transformer;
35
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Background_Gradient_Overlay_Transformer;
36
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Background_Transformer;
37
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Color_Stop_Transformer;
38
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Multi_Props_Transformer;
39
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Position_Transformer;
40
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Shadow_Transformer;
41
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Size_Transformer;
42
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Stroke_Transformer;
43
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Background_Image_Overlay_Transformer;
44
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Background_Image_Overlay_Size_Scale_Transformer;
45
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Background_Overlay_Transformer;
46
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Filter_Transformer;
47
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Transform_Origin_Transformer;
48
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Transition_Transformer;
49
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Transform_Rotate_Transformer;
50
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Transform_Skew_Transformer;
51
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Transform_Functions_Transformer;
52
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Transform_Move_Transformer;
53
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Flex_Transformer;
54
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Transform_Scale_Transformer;
55
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Attributes_Transformer;
56
+
use Elementor\Modules\AtomicWidgets\PropTypes\Attributes_Prop_Type;
57
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers_Registry;
58
+
use Elementor\Modules\AtomicWidgets\PropTypes\Background_Color_Overlay_Prop_Type;
59
+
use Elementor\Modules\AtomicWidgets\PropTypes\Background_Gradient_Overlay_Prop_Type;
60
+
use Elementor\Modules\AtomicWidgets\PropTypes\Background_Image_Overlay_Size_Scale_Prop_Type;
61
+
use Elementor\Modules\AtomicWidgets\PropTypes\Background_Image_Overlay_Prop_Type;
62
+
use Elementor\Modules\AtomicWidgets\PropTypes\Background_Image_Position_Offset_Prop_Type;
63
+
use Elementor\Modules\AtomicWidgets\PropTypes\Background_Overlay_Prop_Type;
64
+
use Elementor\Modules\AtomicWidgets\PropTypes\Background_Prop_Type;
65
+
use Elementor\Modules\AtomicWidgets\PropTypes\Box_Shadow_Prop_Type;
66
+
use Elementor\Modules\AtomicWidgets\PropTypes\Border_Radius_Prop_Type;
67
+
use Elementor\Modules\AtomicWidgets\PropTypes\Border_Width_Prop_Type;
68
+
use Elementor\Modules\AtomicWidgets\PropTypes\Color_Stop_Prop_Type;
69
+
use Elementor\Modules\AtomicWidgets\PropTypes\Date_Time_Prop_Type;
70
+
use Elementor\Modules\AtomicWidgets\PropTypes\Filters\Backdrop_Filter_Prop_Type;
71
+
use Elementor\Modules\AtomicWidgets\PropTypes\Filters\Filter_Prop_Type;
72
+
use Elementor\Modules\AtomicWidgets\PropTypes\Gradient_Color_Stop_Prop_Type;
73
+
use Elementor\Modules\AtomicWidgets\PropTypes\Layout_Direction_Prop_Type;
74
+
use Elementor\Modules\AtomicWidgets\PropTypes\Flex_Prop_Type;
75
+
use Elementor\Modules\AtomicWidgets\PropTypes\Link_Prop_Type;
76
+
use Elementor\Modules\AtomicWidgets\PropTypes\Classes_Prop_Type;
77
+
use Elementor\Modules\AtomicWidgets\PropTypes\Image_Prop_Type;
78
+
use Elementor\Modules\AtomicWidgets\PropTypes\Image_Src_Prop_Type;
79
+
use Elementor\Modules\AtomicWidgets\PropTypes\Dimensions_Prop_Type;
80
+
use Elementor\Modules\AtomicWidgets\PropTypes\Position_Prop_Type;
81
+
use Elementor\Modules\AtomicWidgets\PropTypes\Shadow_Prop_Type;
82
+
use Elementor\Modules\AtomicWidgets\PropTypes\Size_Prop_Type;
83
+
use Elementor\Modules\AtomicWidgets\PropTypes\Stroke_Prop_Type;
84
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Functions\Transform_Move_Prop_Type;
85
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Transform_Functions_Prop_Type;
86
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Transform_Origin_Prop_Type;
87
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Functions\Transform_Scale_Prop_Type;
88
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Transform_Prop_Type;
89
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Functions\Transform_Rotate_Prop_Type;
90
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Functions\Transform_Skew_Prop_Type;
91
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transition_Prop_Type;
92
+
use Elementor\Modules\AtomicWidgets\Styles\Atomic_Styles_Manager;
93
+
use Elementor\Modules\AtomicWidgets\Styles\Atomic_Widget_Base_Styles;
94
+
use Elementor\Modules\AtomicWidgets\Styles\Atomic_Widget_Styles;
95
+
use Elementor\Modules\AtomicWidgets\Styles\Size_Constants;
96
+
use Elementor\Modules\AtomicWidgets\Styles\Style_Schema;
97
+
use Elementor\Modules\AtomicWidgets\Database\Atomic_Widgets_Database_Updater;
98
+
use Elementor\Modules\AtomicWidgets\Elements\Atomic_Tabs\Atomic_Tab_Content;
99
+
use Elementor\Plugin;
100
+
use Elementor\Widgets_Manager;
101
+
use Elementor\Modules\AtomicWidgets\Library\Atomic_Widgets_Library;
102
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Query_Transformer;
103
+
use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Perspective_Origin_Transformer;
104
+
use Elementor\Modules\AtomicWidgets\PropTypes\Query_Prop_Type;
105
+
use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Perspective_Origin_Prop_Type;
106
+
use Elementor\Modules\AtomicWidgets\Utils\Utils;
107
+
108
+
if ( ! defined( 'ABSPATH' ) ) {
109
+
exit; // Exit if accessed directly.
110
+
}
111
+
112
+
class Module extends BaseModule {
113
+
const EXPERIMENT_NAME = 'e_atomic_elements';
114
+
const ENFORCE_CAPABILITIES_EXPERIMENT = 'atomic_widgets_should_enforce_capabilities';
115
+
const EXPERIMENT_EDITOR_MCP = 'editor_mcp';
116
+
const EXPERIMENT_INLINE_EDITING = 'v4-inline-text-editing';
117
+
118
+
const PACKAGES = [
119
+
'editor-canvas',
120
+
'editor-controls', // TODO: Need to be registered and not enqueued.
121
+
'editor-editing-panel',
122
+
'editor-elements', // TODO: Need to be registered and not enqueued.
123
+
'editor-props', // TODO: Need to be registered and not enqueued.
124
+
'editor-styles', // TODO: Need to be registered and not enqueued.
125
+
'editor-styles-repository',
126
+
'editor-interactions',
127
+
];
128
+
129
+
public function get_name() {
130
+
return 'atomic-widgets';
131
+
}
132
+
133
+
public function __construct() {
134
+
parent::__construct();
135
+
136
+
if ( self::is_active() ) {
137
+
$this->register_experimental_features();
138
+
}
139
+
140
+
if ( Plugin::$instance->experiments->is_feature_active( self::EXPERIMENT_NAME ) ) {
141
+
Dynamic_Tags_Module::instance()->register_hooks();
142
+
143
+
( new Atomic_Widget_Styles() )->register_hooks();
144
+
( new Atomic_Widget_Base_Styles() )->register_hooks();
145
+
( new Atomic_Widgets_Library() )->register_hooks();
146
+
147
+
Atomic_Styles_Manager::instance()->register_hooks();
148
+
149
+
( new Atomic_Import_Export() )->register_hooks();
150
+
( new Atomic_Widgets_Database_Updater() )->register();
151
+
152
+
add_filter( 'elementor/editor/v2/packages', fn ( $packages ) => $this->add_packages( $packages ) );
153
+
add_filter( 'elementor/editor/localize_settings', fn ( $settings ) => $this->add_styles_schema( $settings ) );
154
+
add_filter( 'elementor/editor/localize_settings', fn ( $settings ) => $this->add_supported_units( $settings ) );
155
+
add_filter( 'elementor/widgets/register', fn ( Widgets_Manager $widgets_manager ) => $this->register_widgets( $widgets_manager ) );
156
+
add_filter( 'elementor/usage/elements/element_title', fn ( $title, $type ) => $this->get_element_usage_name( $title, $type ), 10, 2 );
157
+
158
+
add_action( 'elementor/elements/elements_registered', fn ( $elements_manager ) => $this->register_elements( $elements_manager ) );
159
+
add_action( 'elementor/editor/after_enqueue_scripts', fn () => $this->enqueue_scripts() );
160
+
add_action( 'elementor/frontend/before_register_scripts', fn () => $this->register_frontend_scripts() );
161
+
162
+
add_action( 'elementor/atomic-widgets/settings/transformers/register', fn ( $transformers ) => $this->register_settings_transformers( $transformers ) );
163
+
add_action( 'elementor/atomic-widgets/styles/transformers/register', fn ( $transformers ) => $this->register_styles_transformers( $transformers ) );
164
+
add_action( 'elementor/atomic-widgets/import/transformers/register', fn ( $transformers ) => $this->register_import_transformers( $transformers ) );
165
+
add_action( 'elementor/atomic-widgets/export/transformers/register', fn ( $transformers ) => $this->register_export_transformers( $transformers ) );
166
+
add_action( 'elementor/editor/templates/panel/category', fn () => $this->render_panel_category_chip() );
167
+
}
168
+
}
169
+
170
+
public static function get_experimental_data() {
171
+
return [
172
+
'name' => self::EXPERIMENT_NAME,
173
+
'title' => esc_html__( 'Atomic Widgets', 'elementor' ),
174
+
'description' => esc_html__( 'Enable atomic widgets.', 'elementor' ),
175
+
'hidden' => true,
176
+
'default' => Experiments_Manager::STATE_INACTIVE,
177
+
'release_status' => Experiments_Manager::RELEASE_STATUS_ALPHA,
178
+
];
179
+
}
180
+
181
+
private function register_experimental_features() {
182
+
Plugin::$instance->experiments->add_feature( [
183
+
'name' => 'e_indications_popover',
184
+
'title' => esc_html__( 'V4 Indications Popover', 'elementor' ),
185
+
'description' => esc_html__( 'Enable V4 Indication Popovers', 'elementor' ),
186
+
'hidden' => true,
187
+
'default' => Experiments_Manager::STATE_INACTIVE,
188
+
] );
189
+
190
+
Plugin::$instance->experiments->add_feature( [
191
+
'name' => self::ENFORCE_CAPABILITIES_EXPERIMENT,
192
+
'title' => esc_html__( 'Enforce atomic widgets capabilities', 'elementor' ),
193
+
'description' => esc_html__( 'Enforce atomic widgets capabilities.', 'elementor' ),
194
+
'hidden' => true,
195
+
'default' => Experiments_Manager::STATE_ACTIVE,
196
+
'release_status' => Experiments_Manager::RELEASE_STATUS_DEV,
197
+
] );
198
+
199
+
Plugin::$instance->experiments->add_feature([
200
+
'name' => self::EXPERIMENT_EDITOR_MCP,
201
+
'title' => esc_html__( 'Editor MCP for atomic widgets', 'elementor' ),
202
+
'description' => esc_html__( 'Editor MCP for atomic widgets.', 'elementor' ),
203
+
'hidden' => true,
204
+
'default' => Experiments_Manager::STATE_INACTIVE,
205
+
'release_status' => Experiments_Manager::RELEASE_STATUS_DEV,
206
+
]);
207
+
208
+
Plugin::$instance->experiments->add_feature([
209
+
'name' => self::EXPERIMENT_INLINE_EDITING,
210
+
'title' => esc_html__( 'V4 inline text editing', 'elementor' ),
211
+
'description' => esc_html__( 'New inline text editor for v4', 'elementor' ),
212
+
'hidden' => true,
213
+
'default' => Experiments_Manager::STATE_INACTIVE,
214
+
'release_status' => Experiments_Manager::RELEASE_STATUS_DEV,
215
+
]);
216
+
}
217
+
218
+
private function add_packages( $packages ) {
219
+
return array_merge( $packages, self::PACKAGES );
220
+
}
221
+
222
+
private function add_styles_schema( $settings ) {
223
+
if ( ! isset( $settings['atomic'] ) ) {
224
+
$settings['atomic'] = [];
225
+
}
226
+
227
+
$settings['atomic']['styles_schema'] = Style_Schema::get();
228
+
229
+
return $settings;
230
+
}
231
+
232
+
private function add_supported_units( $settings ) {
233
+
$settings['supported_size_units'] = Size_Constants::all_supported_units();
234
+
235
+
return $settings;
236
+
}
237
+
238
+
private function register_widgets( Widgets_Manager $widgets_manager ) {
239
+
$widgets_manager->register( new Atomic_Heading() );
240
+
$widgets_manager->register( new Atomic_Image() );
241
+
$widgets_manager->register( new Atomic_Paragraph() );
242
+
$widgets_manager->register( new Atomic_Svg() );
243
+
$widgets_manager->register( new Atomic_Button() );
244
+
$widgets_manager->register( new Atomic_Youtube() );
245
+
$widgets_manager->register( new Atomic_Divider() );
246
+
}
247
+
248
+
private function register_elements( Elements_Manager $elements_manager ) {
249
+
$elements_manager->register_element_type( new Div_Block() );
250
+
$elements_manager->register_element_type( new Flexbox() );
251
+
252
+
$elements_manager->register_element_type( new Atomic_Tabs() );
253
+
$elements_manager->register_element_type( new Atomic_Tabs_Menu() );
254
+
$elements_manager->register_element_type( new Atomic_Tab() );
255
+
$elements_manager->register_element_type( new Atomic_Tabs_Content_Area() );
256
+
$elements_manager->register_element_type( new Atomic_Tab_Content() );
257
+
}
258
+
259
+
private function register_settings_transformers( Transformers_Registry $transformers ) {
260
+
$transformers->register_fallback( new Plain_Transformer() );
261
+
262
+
$transformers->register( Classes_Prop_Type::get_key(), new Classes_Transformer() );
263
+
$transformers->register( Image_Prop_Type::get_key(), new Image_Transformer() );
264
+
$transformers->register( Image_Src_Prop_Type::get_key(), new Image_Src_Transformer() );
265
+
$transformers->register( Link_Prop_Type::get_key(), new Link_Transformer() );
266
+
$transformers->register( Query_Prop_Type::get_key(), new Query_Transformer() );
267
+
$transformers->register( Attributes_Prop_Type::get_key(), new Attributes_Transformer() );
268
+
$transformers->register( Date_Time_Prop_Type::get_key(), new Date_Time_Transformer() );
269
+
}
270
+
271
+
private function register_styles_transformers( Transformers_Registry $transformers ) {
272
+
$transformers->register_fallback( new Plain_Transformer() );
273
+
274
+
$transformers->register( Size_Prop_Type::get_key(), new Size_Transformer() );
275
+
$transformers->register( Box_Shadow_Prop_Type::get_key(), new Combine_Array_Transformer( ',' ) );
276
+
$transformers->register( Shadow_Prop_Type::get_key(), new Shadow_Transformer() );
277
+
$transformers->register( Flex_Prop_Type::get_key(), new Flex_Transformer() );
278
+
$transformers->register( Stroke_Prop_Type::get_key(), new Stroke_Transformer() );
279
+
$transformers->register( Image_Prop_Type::get_key(), new Image_Transformer() );
280
+
$transformers->register( Image_Src_Prop_Type::get_key(), new Image_Src_Transformer() );
281
+
$transformers->register( Background_Image_Overlay_Prop_Type::get_key(), new Background_Image_Overlay_Transformer() );
282
+
$transformers->register( Background_Image_Overlay_Size_Scale_Prop_Type::get_key(), new Background_Image_Overlay_Size_Scale_Transformer() );
283
+
$transformers->register( Background_Image_Position_Offset_Prop_Type::get_key(), new Position_Transformer() );
284
+
$transformers->register( Background_Color_Overlay_Prop_Type::get_key(), new Background_Color_Overlay_Transformer() );
285
+
$transformers->register( Background_Overlay_Prop_Type::get_key(), new Background_Overlay_Transformer() );
286
+
$transformers->register( Background_Prop_Type::get_key(), new Background_Transformer() );
287
+
$transformers->register( Background_Gradient_Overlay_Prop_Type::get_key(), new Background_Gradient_Overlay_Transformer() );
288
+
$transformers->register( Filter_Prop_Type::get_key(), new Filter_Transformer() );
289
+
$transformers->register( Backdrop_Filter_Prop_Type::get_key(), new Filter_Transformer() );
290
+
$transformers->register( Transition_Prop_Type::get_key(), new Transition_Transformer() );
291
+
$transformers->register( Color_Stop_Prop_Type::get_key(), new Color_Stop_Transformer() );
292
+
$transformers->register( Gradient_Color_Stop_Prop_Type::get_key(), new Combine_Array_Transformer( ',' ) );
293
+
$transformers->register( Position_Prop_Type::get_key(), new Position_Transformer() );
294
+
$transformers->register( Transform_Move_Prop_Type::get_key(), new Transform_Move_Transformer() );
295
+
$transformers->register( Transform_Scale_Prop_Type::get_key(), new Transform_Scale_Transformer() );
296
+
$transformers->register( Transform_Rotate_Prop_Type::get_key(), new Transform_Rotate_Transformer() );
297
+
$transformers->register( Transform_Skew_Prop_Type::get_key(), new Transform_Skew_Transformer() );
298
+
$transformers->register( Transform_Functions_Prop_Type::get_key(), new Transform_Functions_Transformer() );
299
+
$transformers->register( Transform_Origin_Prop_Type::get_key(), new Transform_Origin_Transformer() );
300
+
$transformers->register( Perspective_Origin_Prop_Type::get_key(), new Perspective_Origin_Transformer() );
301
+
$transformers->register(
302
+
Transform_Prop_Type::get_key(),
303
+
new Multi_Props_Transformer(
304
+
[ 'transform-functions', 'transform-origin', 'perspective', 'perspective-origin' ],
305
+
fn( $_, $key ) => 'transform-functions' === $key ? 'transform' : $key
306
+
)
307
+
);
308
+
$transformers->register(
309
+
Border_Radius_Prop_Type::get_key(),
310
+
new Multi_Props_Transformer( [ 'start-start', 'start-end', 'end-start', 'end-end' ], fn ( $_, $key ) => "border-{$key}-radius" )
311
+
);
312
+
$transformers->register(
313
+
Border_Width_Prop_Type::get_key(),
314
+
new Multi_Props_Transformer( [ 'block-start', 'block-end', 'inline-start', 'inline-end' ], fn ( $_, $key ) => "border-{$key}-width" )
315
+
);
316
+
$transformers->register(
317
+
Layout_Direction_Prop_Type::get_key(),
318
+
new Multi_Props_Transformer( [ 'column', 'row' ], fn ( $prop_key, $key ) => "{$key}-{$prop_key}" )
319
+
);
320
+
$transformers->register(
321
+
Dimensions_Prop_Type::get_key(),
322
+
new Multi_Props_Transformer( [ 'block-start', 'block-end', 'inline-start', 'inline-end' ], fn ( $prop_key, $key ) => "{$prop_key}-{$key}" )
323
+
);
324
+
}
325
+
326
+
public function register_import_transformers( Transformers_Registry $transformers ) {
327
+
$transformers->register_fallback( new Import_Export_Plain_Transformer() );
328
+
329
+
$transformers->register( Image_Src_Prop_Type::get_key(), new Image_Src_Import_Transformer() );
330
+
}
331
+
332
+
public function register_export_transformers( Transformers_Registry $transformers ) {
333
+
$transformers->register_fallback( new Import_Export_Plain_Transformer() );
334
+
335
+
$transformers->register( Image_Src_Prop_Type::get_key(), new Image_Src_Export_Transformer() );
336
+
}
337
+
338
+
public static function is_active(): bool {
339
+
return Plugin::$instance->experiments->is_feature_active( self::EXPERIMENT_NAME );
340
+
}
341
+
342
+
private function get_element_usage_name( $title, $type ) {
343
+
$element_instance = Plugin::$instance->elements_manager->get_element_types( $type );
344
+
$widget_instance = Plugin::$instance->widgets_manager->get_widget_types( $type );
345
+
346
+
if ( Utils::is_atomic( $element_instance ) || Utils::is_atomic( $widget_instance ) ) {
347
+
return $type;
348
+
}
349
+
350
+
return $title;
351
+
}
352
+
353
+
/**
354
+
* Enqueue the module scripts.
355
+
*
356
+
* @return void
357
+
*/
358
+
private function enqueue_scripts() {
359
+
wp_enqueue_script(
360
+
'elementor-atomic-widgets-editor',
361
+
$this->get_js_assets_url( 'atomic-widgets-editor' ),
362
+
[ 'elementor-editor' ],
363
+
ELEMENTOR_VERSION,
364
+
true
365
+
);
366
+
}
367
+
368
+
private function render_panel_category_chip() {
369
+
?><# if ( 'v4-elements' === name ) { #>
370
+
<span class="elementor-panel-heading-category-chip">
371
+
<?php echo esc_html__( 'Alpha', 'elementor' ); ?><i class="eicon-info"></i>
372
+
<span class="e-promotion-react-wrapper" data-promotion="v4_chip"></span>
373
+
</span>
374
+
<# } #><?php
375
+
}
376
+
377
+
private function register_frontend_scripts() {
378
+
$loader = new Frontend_Assets_Loader();
379
+
$loader->register_scripts();
380
+
}
381
+
}
382
+