HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/insiders/wp-load/wp-content/plugins/gutenmate/block-supports/use-web-fonts.php
<?php
defined( 'GTM_BLOCK_SUPPORT_USE_WEB_FONTS_KEY' ) || define( 'GTM_BLOCK_SUPPORT_USE_WEB_FONTS_KEY', 'gtmUseWebFonts' );

function gtm_register_use_web_fonts_support( $block_type ) {
	if ( isset( $block_type->supports[GTM_BLOCK_SUPPORT_USE_WEB_FONTS_KEY] ) && is_array( $block_type->supports[GTM_BLOCK_SUPPORT_USE_WEB_FONTS_KEY] ) ) {
		gtm_register_block_use_web_fonts( $block_type->name, $block_type->supports[GTM_BLOCK_SUPPORT_USE_WEB_FONTS_KEY] );
	}
}

// Register the block support.
WP_Block_Supports::get_instance()->register(
	GTM_BLOCK_SUPPORT_USE_WEB_FONTS_KEY,
	[
		'register_attribute' => 'gtm_register_use_web_fonts_support',
	]
);

function gtm_register_block_use_web_fonts( $block_name, $fields ) {
	GTM_Use_Web_Font_Support::get_instance()->register( $block_name, $fields );
}

function gtm_enqueue_block_font( $blockName, $field ) {
	if ( ! empty( $field ) && isset( $field['preset'] ) && $field['preset'] == 'custom' && ! empty( $field['fontFamily'] ) ) {
		$family = urlencode( $field['fontFamily'] );
		$weight = urlencode( ! empty( $field['fontWeight'] ) ? $field['fontWeight'] : '400' );

		Gtm_Webfont_Loader::get_instance()->add( $family, $weight );
	}
}

class GTM_Use_Web_Font_Support {
	private static $instance = null;
	private $blocks          = [];

	public static function get_instance() {
		if ( null === self::$instance ) {
			self::$instance = new self();
		}

		return self::$instance;
	}

	public static function init() {
		$instance = self::get_instance();
	}

	public function register( $block_name, $fields ) {
		// Avoid duplicated filters
		if ( ! isset( $this->blocks[$block_name] ) ) {
			add_filter( 'render_block_' . $block_name, [$this, 'render'], 10, 2 );
		}

		$this->blocks[$block_name] = array_unique( $fields );
	}

	public function render( $block_content, $block ) {
		$block_name = $block['blockName'];

		if ( isset( $this->blocks[$block_name] ) ) {
			$fields = $this->blocks[$block_name];
			if ( ! empty( $fields ) ) {
				foreach ( $fields as $field ) {
					if ( isset( $block['attrs'][$field] ) ) {
						gtm_enqueue_block_font( $block['blockName'] . '-' . sanitize_title( $field ), $block['attrs'][$field] );
					}
				}
			}
		}

		return $block_content;
	}
}