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;
}
}