PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.4
Elementor Website Builder – more than just a page builder v4.2.4
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 / assets-manager / module.php

module.php in Elementor Website Builder – more than just a page builder 4.2.4, at modules/assets-manager/module.php

120 lines 2.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\AssetsManager;
4
5 use Elementor\Plugin;
6 use Elementor\Core\Base\Module as BaseModule;
7 use Elementor\Core\Experiments\Manager as Experiments_Manager;
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 class Module extends BaseModule {
14 const MODULE_NAME = 'assets-manager';
15 const EXPERIMENT_NAME = 'e_assets_manager';
16
17 private $style_assets;
18 private $script_assets;
19
20 public function get_name() {
21 return self::MODULE_NAME;
22 }
23
24 public static function get_experimental_data() {
25 return [
26 'name' => self::EXPERIMENT_NAME,
27 'title' => esc_html__( 'Dynamic Assets Management', 'elementor' ),
28 'description' => esc_html__( 'Enable dynamic assets management (JS and CSS lazy-loading).', 'elementor' ),
29 'hidden' => true,
30 'default' => Experiments_Manager::STATE_INACTIVE,
31 'release_status' => Experiments_Manager::RELEASE_STATUS_DEV,
32 ];
33 }
34
35 public function is_experiment_active() {
36 return Plugin::$instance->experiments->is_feature_active( self::EXPERIMENT_NAME );
37 }
38
39 public function __construct() {
40 parent::__construct();
41
42 if ( ! $this->is_experiment_active() ) {
43 return;
44 }
45
46 $this->init();
47
48 $this->register_hooks();
49 }
50
51 private function init() {
52 $this->style_assets = new Assets();
53 $this->script_assets = new Assets();
54
55 return $this;
56 }
57
58 private function register_hooks() {
59 add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'manage_style_assets' ], PHP_INT_MAX );
60 add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'manage_script_assets' ], PHP_INT_MAX );
61
62 add_action( 'elementor/preview/enqueue_styles', [ $this, 'manage_style_assets' ], PHP_INT_MAX );
63 add_action( 'elementor/preview/enqueue_scripts', [ $this, 'manage_script_assets' ], PHP_INT_MAX );
64
65 add_action( 'elementor/editor/footer', [ $this, 'manage_assets' ], PHP_INT_MAX );
66
67 return $this;
68 }
69
70 public function manage_style_assets() {
71 do_action( 'elementor/assets-manager/register_styles', $this->style_assets );
72
73 foreach ( array_keys( $this->style_assets->assets_map() ) as $handle ) {
74 wp_dequeue_style( $handle );
75 }
76
77 return $this;
78 }
79
80 public function manage_script_assets() {
81 do_action( 'elementor/assets-manager/register_scripts', $this->script_assets );
82
83 foreach ( array_keys( $this->script_assets->assets_map() ) as $handle ) {
84 wp_dequeue_script( $handle );
85 }
86
87 return $this;
88 }
89
90 public function manage_assets() {
91 wp_enqueue_script(
92 self::MODULE_NAME,
93 $this->get_js_assets_url( self::MODULE_NAME ),
94 [],
95 ELEMENTOR_VERSION,
96 [
97 'in_footer' => true,
98 'strategy' => 'defer',
99 ]
100 );
101
102 wp_localize_script(
103 self::MODULE_NAME,
104 'elementorAssetsManager',
105 [
106 'styles' => [
107 'map' => $this->style_assets->assets_map(),
108 'priority_queue' => $this->style_assets->priority_queue(),
109 ],
110 'scripts' => [
111 'map' => $this->script_assets->assets_map(),
112 'priority_queue' => $this->script_assets->priority_queue(),
113 ],
114 ]
115 );
116
117 return $this;
118 }
119 }
120