self::EXPERIMENT_NAME, 'title' => esc_html__( 'Size Variables', 'elementor-pro' ), 'description' => esc_html__( 'Allows the use of size variables within supported controls. Note: This feature requires both the "Atomic Widgets" and "Variables" experiments to be enabled.', 'elementor-pro' ), 'hidden' => true, 'default' => ExperimentsManager::STATE_ACTIVE, 'release_status' => ExperimentsManager::RELEASE_STATUS_ALPHA, ]; } private function hooks() { return new Hooks(); } private function is_supported_by_license() { return API::is_licence_has_feature( 'size-variable', API::BC_VALIDATION_CALLBACK ); } public function __construct() { parent::__construct(); if ( ! $this->is_experiment_active() || ! $this->is_supported_by_license() ) { return; } $this->hooks()->register(); add_action( 'elementor/editor/before_enqueue_scripts', fn () => $this->enqueue_editor_scripts() ); } private function is_experiment_active(): bool { return class_exists( 'Elementor\\Modules\\Variables\\Module' ) && Plugin::elementor()->experiments->is_feature_active( self::EXPERIMENT_NAME ) && Plugin::elementor()->experiments->is_feature_active( AtomicWidgetsModule::EXPERIMENT_NAME ) && Plugin::elementor()->experiments->is_feature_active( VariablesModule::EXPERIMENT_NAME ); } private function get_quota_config( $limit ): array { return [ Size_Variable_Prop_Type::get_key() => $limit, ]; } public function enqueue_editor_scripts() { $limit = 100000; if ( API::is_license_expired() ) { $limit = 0; } wp_add_inline_script( 'elementor-common', 'window.ElementorVariablesQuotaConfigExtended = ' . wp_json_encode( $this->get_quota_config( $limit ) ) . ';', 'before' ); } }