public function register_controls()
{
require ELEMENTOR_PATH . 'includes/controls/base.php';
require ELEMENTOR_PATH . 'includes/controls/base-multiple.php';
require ELEMENTOR_PATH . 'includes/controls/base-units.php';
$available_controls = [self::TEXT, self::NUMBER, self::TEXTAREA, self::SELECT, self::CHECKBOX, self::SWITCHER, self::CHECKBOX_LIST, self::HIDDEN, self::HEADING, self::RAW_HTML, self::SECTION, self::TAB, self::DIVIDER, self::COLOR, self::MEDIA, self::SLIDER, self::DIMENSIONS, self::CHOOSE, self::WYSIWYG, self::CODE, self::FONT, self::IMAGE_DIMENSIONS, self::WP_WIDGET, self::URL, self::REPEATER, self::ICON, self::GALLERY, self::STRUCTURE, self::SELECT2, self::DATE_TIME, self::BOX_SHADOW, self::ANIMATION, self::HOVER_ANIMATION, self::ORDER];
foreach ($available_controls as $control_id) {
$control_filename = str_replace('_', '-', $control_id);
$control_filename = ELEMENTOR_PATH . "includes/controls/{$control_filename}.php";
require $control_filename;
$class_name = __NAMESPACE__ . '\\Control_' . ucwords($control_id);
$this->register_control($control_id, $class_name);
}
// Group Controls
require ELEMENTOR_PATH . 'includes/interfaces/group-control.php';
require ELEMENTOR_PATH . 'includes/controls/groups/base.php';
require ELEMENTOR_PATH . 'includes/controls/groups/background.php';
require ELEMENTOR_PATH . 'includes/controls/groups/border.php';
require ELEMENTOR_PATH . 'includes/controls/groups/typography.php';
require ELEMENTOR_PATH . 'includes/controls/groups/image-size.php';
require ELEMENTOR_PATH . 'includes/controls/groups/box-shadow.php';
$this->_group_controls['background'] = new Group_Control_Background();
$this->_group_controls['border'] = new Group_Control_Border();
$this->_group_controls['typography'] = new Group_Control_Typography();
$this->_group_controls['image-size'] = new Group_Control_Image_Size();
$this->_group_controls['box-shadow'] = new Group_Control_Box_Shadow();
}