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/breadly/block-extensions/core-navigation.php
<?php
defined( 'GTM_BLOCK_SUPPORT_PROPS_KEY' ) || define( 'GTM_BLOCK_SUPPORT_PROPS_KEY', 'gtmBlockProps' );

class GTM_Core_Navigation_Style {
	private static $instance;
	public static $style_class = 'gtm-core-navigation-style';
	public $registered         = [];

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

		return self::$instance;
	}

	public function __construct() {
	}

	/**
	 * For registering a block style that will use gutenmate's navigation menu props
	 *
	 * @return void
	 */
	public function register( $block_style_name ) {
		$this->registered[] = $block_style_name;
	}

	/**
	 * For checking the current class has the registered styles
	 *
	 * @param [string] $className, from $attributes['className']
	 * @return boolean
	 */
	public function has_registered( $className ) {
		if ( ! empty( $className ) ) {
			foreach ( $this->registered as $style ) {
				if ( stripos( $className, 'is-style-' . $style ) !== false ) {
					return true;
				}
			}
		}

		return false;
	}
}

// Register built-in styles
GTM_Core_Navigation_Style::get_instance()->register( 'gtm-core-navigation-gutenmate' );
GTM_Core_Navigation_Style::get_instance()->register( 'gtm-core-navigation-list-mini' );

add_filter( 'gtm_config', 'gtm_core_navigation_style_editor_config' );
function gtm_core_navigation_style_editor_config( $config ) {
	$config['gtm_core_navigation_styles']      = GTM_Core_Navigation_Style::get_instance()->registered;
	$config['gtm_core_navigation_style_class'] = GTM_Core_Navigation_Style::$style_class;
	return $config;
};

/**
 * Render block style
 */

add_filter( 'gtm.BlockStyleCompiler.core/navigation', 'gtm_compile_block_css_core_navigation', 10, 3 );
function gtm_compile_block_css_core_navigation( $output, $attributes, $blockName ) {
	$shouldHaveSubmenuAppearance = ( $attributes['layout']['orientation'] ?? '' ) == 'horizontal' && ( $attributes['overlayMenu'] ?? '' ) != "always";

	$block_style = ['classes' => [], 'style' => []];

	if ( version_compare( gtm_get_gutenberg_version(), '12', '<' ) ) {
		$block_style['classes'][] = gtm_get_gutenberg_version_class();
	}

	if ( ! empty( $attributes['className'] ) && GTM_Core_Navigation_Style::get_instance()->has_registered( $attributes['className'] ) ) {
		$block_style['classes'][] = 'gtm-core-navigation-style';
	}

	if ( ! empty( $attributes['showSubmenuIcon'] ) ) {
		$block_style['classes'][] = 'gtm-has-core-navigation-show-submenu-icon';
	}

	/* Top level */
	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-item-typography", gtm_css_parseTypographyProps( $attributes['gtmTopLevelItemTypography'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-item-spacing", gtm_css_parseSpacingValue( $attributes['gtmTopLevelItemSpacing'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-icon-size", $attributes['gtmTopLevelIconSize'] ?? null );

	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-icon-spacing", gtm_css_parseSpacingValue( $attributes['gtmTopLevelIconSpacing'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-link-radius", gtm_css_parseBorderRadiusValue( $attributes['gtmTopLevelLinkRadius'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-link-padding", gtm_css_parseResponsiveBoxProps( $attributes['gtmTopLevelLinkPadding'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-link-color", gtm_css_parseColorValue( $attributes['gtmTopLevelLinkColor'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-link-bg", gtm_css_parseColorValue( $attributes['gtmTopLevelLinkBg'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-link-hover-color", gtm_css_parseColorValue( $attributes['gtmTopLevelLinkHoverColor'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-top-level-link-hover-bg", gtm_css_parseColorValue( $attributes['gtmTopLevelLinkHoverBg'] ?? null ) );

	/* Sub level */
	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-item-typography", gtm_css_parseTypographyProps( $attributes['gtmSubLevelItemTypography'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-item-spacing", gtm_css_parseSpacingValue( $attributes['gtmSubLevelItemSpacing'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-icon-size", $attributes['gtmSubLevelIconSize'] ?? null );

	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-icon-spacing", gtm_css_parseSpacingValue( $attributes['gtmSubLevelIconSpacing'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-link-radius", gtm_css_parseBorderRadiusValue( $attributes['gtmSubLevelLinkRadius'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-link-padding", gtm_css_parseResponsiveBoxProps( $attributes['gtmSubLevelLinkPadding'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-link-color", gtm_css_parseColorValue( $attributes['gtmSubLevelLinkColor'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-link-bg", gtm_css_parseColorValue( $attributes['gtmSubLevelLinkBg'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-link-hover-color", gtm_css_parseColorValue( $attributes['gtmSubLevelLinkHoverColor'] ?? null ) );
	gtm_css_compileCssVar( $block_style, "core-navigation-sub-level-link-hover-bg", gtm_css_parseColorValue( $attributes['gtmSubLevelLinkHoverBg'] ?? null ) );

	/* Submenu appearance */

	gtm_css_compileCssVar( $block_style, "core-navigation-submenu-spacing", gtm_css_parseSpacingValue( $attributes['gtmSubmenuSpacing'] ?? null ) );

	gtm_css_compileCssVar( $block_style, "core-navigation-submenu-padding", gtm_css_parseResponsiveBoxProps( $attributes['gtmSubmenuPadding'] ?? null ) );

	if ( $shouldHaveSubmenuAppearance ) {
		gtm_css_compileCssVar( $block_style, "core-navigation-submenu-width", $attributes['gtmSubmenuWidth'] ?? null );
		gtm_css_compileCssVar( $block_style, "core-navigation-submenu-radius", gtm_css_parseBorderRadiusValue( $attributes['gtmSubmenuRadius'] ?? null ) );
		gtm_css_compileCssVar( $block_style, "core-navigation-submenu-bg", gtm_css_parseColorValue( $attributes['gtmSubmenuBg'] ?? null ) );
	}

	/* Overlay menu */

	if (  ( $attributes['overlayMenu'] ?? '' ) !== 'never' ) {
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-icon-size", $attributes['gtmOverlayMenuIconSize'] ?? null );
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-close-icon-size", $attributes['gtmOverlayMenuCloseIconSize'] ?? null );
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-submenu-indent", gtm_css_parseSpacingValue( $attributes['gtmOverlayMenuSubmenuIndent'] ?? null ) );
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-icon-color", gtm_css_parseColorValue( $attributes['gtmOverlayMenuIconColor'] ?? null ) );
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-close-icon-color", gtm_css_parseColorValue( $attributes['gtmOverlayMenuCloseIconColor'] ?? null ) );
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-bg", gtm_css_parseColorValue( $attributes['gtmOverlayMenuBg'] ?? null ) );
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-link-color", gtm_css_parseColorValue( $attributes['gtmOverlayMenuLinkColor'] ?? null ) );
		gtm_css_compileCssVar( $block_style, "core-navigation-overlay-menu-link-hover-color", gtm_css_parseColorValue( $attributes['gtmOverlayMenuLinkHoverColor'] ?? null ) );
	}

	// Apply to output
	$block_style['style'] = ['{{BLOCK}}' => $block_style['style']];

	return [
		'classes' => array_merge( $output['classes'], $block_style['classes'] ),
		'style'   => array_replace_recursive( $output['style'], $block_style['style'] ),
	];
}