Server IP : 192.64.112.168 / Your IP : 13.58.203.104 Web Server : Apache System : Linux nc-ph-2300-85.bluforrest.com 4.18.0-513.9.1.el8_9.x86_64 #1 SMP Sat Dec 2 05:23:44 EST 2023 x86_64 User : expressoneac ( 1128) PHP Version : 8.0.30 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/expressoneac/www/wp-content/plugins/elementor/modules/atomic-widgets/styles/ |
Upload File : |
<?php namespace Elementor\Modules\AtomicWidgets\Styles; use Elementor\Core\Files\CSS\Post; use Elementor\Element_Base; use Elementor\Modules\AtomicWidgets\Base\Atomic_Widget_Base; use Elementor\Plugin; class Atomic_Styles { /** * @var array<string, array{direction: 'min' | 'max', value: int, is_enabled: boolean}> $breakpoints */ private array $breakpoints = []; private Styles_Renderer $styles_renderer; public function register_hooks() { add_action( 'elementor/element/parse_css', fn( Post $post, Element_Base $element ) => $this->parse_element_style( $post, $element ), 10, 2 ); } private function get_breakpoints(): array { if ( count( $this->breakpoints ) === 0 ) { $this->breakpoints = $this->build_breakpoints(); } return $this->breakpoints; } private function build_breakpoints(): array { return Plugin::$instance->breakpoints->get_breakpoints_config(); } private function get_styles_renderer(): Styles_Renderer { if ( ! isset( $this->styles_renderer ) ) { $this->styles_renderer = $this->build_styles_renderer(); } return $this->styles_renderer; } private function build_styles_renderer(): Styles_Renderer { $breakpoints = $this->get_breakpoints(); return new Styles_Renderer( [ 'breakpoints' => $breakpoints, ] ); } private function parse_element_style( Post $post, Element_Base $element ) { if ( ! ( $element instanceof Atomic_Widget_Base ) || Post::class !== get_class( $post ) ) { return; } $styles = $element->get_raw_data()['styles']; if ( empty( $styles ) ) { return; } $this->styles_enqueue_fonts( $styles ); $post->get_stylesheet()->add_raw_css( $this->convert_styles_to_css( $styles ) ); } /** * @param array<int, array{ * id: string, * type: string, * variants: array<int, array{ * props: array<string, mixed>, * meta: array<string, mixed> * }> * }> $styles */ private function styles_enqueue_fonts( array $styles ): void { foreach ( $styles as $style ) { foreach ( $style['variants'] as $variant ) { if ( isset( $variant['props']['font-family'] ) ) { Plugin::$instance->frontend->enqueue_font( $variant['props']['font-family'] ); } } } } private function convert_styles_to_css( array $styles ): string { $styles_renderer = $this->get_styles_renderer(); return $styles_renderer->render( $styles ); } }