<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/*** 適用させるアコーディオンの動作条件によって適切なJS、CSSを読み込む ***/
function haup_smooth_accordion_script_style_init(){
	$options = GetOP01_utility() ;
	$setting = $options['accordion-block-animation-conditions'];

	// アコーディオンブロックが存在する場合のみ実行
	global $post;
	if ( ! is_a( $post, 'WP_Post' ) || ! has_block( 'core/accordion', $post ) ) {
		return;
	}

	//スクリプトの読み込み
	if(isset($setting) && $setting == '2'  ){ //アコーディオンコンテンツブロックに「アニメーション」が指定されている場合
		wp_enqueue_script('haup-smooth-accordion-conditional-js');
	}else{ //サイト内の全アコーディオンブロックへ適用
		wp_enqueue_script('haup-smooth-accordion-js');
	}

	//スタイルをインラインで出力
	if(isset( $setting ) && $setting == '2'  ){ //アコーディオンコンテンツブロックに「アニメーション」が指定されている場合
		$custom_css_pre = '
			/* HAUP Accordion Smoothly Conditional */
			.is-style-ha-smooth-accordion .wp-block-accordion-panel .wp-block-image {
				margin-top: 0;
				margin-bottom: 0;
				padding: 1rem 0;
			}

			.is-style-ha-smooth-accordion .wp-block-accordion-panel .wp-block-image img {
				transition: opacity 0.3s ease-out;
				opacity: 0;
			}

			.is-style-ha-smooth-accordion.is-open .wp-block-accordion-panel .wp-block-image img {
				opacity: 1;
			}
		';
	}else{ //サイト内の全アコーディオンブロックへ適用
		$custom_css_pre = '
			/* HAUP Accordion Smoothly */
			.wp-block-accordion-panel {
				display: none;
				height: 0;
				opacity: 0;
				overflow: hidden;
			}

			.wp-block-accordion-item.is-open .wp-block-accordion-panel {
				display: block;
				height: auto;
				opacity: 1;
			}

			.wp-block-accordion-panel .wp-block-image {
				margin-top: 0;
				margin-bottom: 0;
				padding: 1rem 0;
			}

			.wp-block-accordion-item .wp-block-accordion-panel .wp-block-image img {
				transition: opacity 0.3s ease-out;
				opacity: 0;
			}

			.wp-block-accordion-item.is-open .wp-block-accordion-panel .wp-block-image img {
				opacity: 1;
			}
		';
	}

	//タブを除去
$custom_css_deltab = preg_replace('/\t+/', '', $custom_css_pre);
//改行を除去
$custom_css = str_replace(PHP_EOL, '', $custom_css_deltab);

//インラインで出力
	wp_add_inline_style( 'haup-front-and-blocks-style', $custom_css );
}
add_action('wp_enqueue_scripts','haup_smooth_accordion_script_style_init');

/*** アコーディオンコンテンツのブロックスタイル（条件付き） ***/
function haup_register_smooth_accordion_block_style() {
	$options = GetOP01_utility() ;
	$setting = $options['accordion-block-animation-conditions'];

	if(isset( $setting ) && $setting == '2'  ){ //アコーディオンコンテンツブロックに「アニメーション」が指定されている場合
		register_block_style(
			'core/accordion-item', // アコーディオンアイテムブロックを対象に
			array(
				'name'  => 'ha-smooth-accordion',
				'label' => __('Animation','hima-art-utility'), // 管理画面に表示される名前
			)
		);
	}
}
add_action('init', 'haup_register_smooth_accordion_block_style');

/*** アコーディオンブロックのデフォルト見出しレベルを強制変更する ***/
function haup_change_accordion_default_level_dynamic( $args, $block_type ) {
 	if ( 'core/accordion' === $block_type ) {
		if ( isset( $args['attributes']['headingLevel'] ) ) {
            
			//配列保存されているオプションを丸ごと取得
			$settings = get_option( 'hautility-option-01-utility', array() );
            
			//キーの存在をチェックしつつ、数値型にキャスト（無ければ 3 ）
			$saved_level = isset( $settings['change-accordion-heading-level'] ) ? $settings['change-accordion-heading-level'] : 3;
            
			// 2〜6の安全な範囲に収まっているかバリデーション
			if ( $saved_level >= 1 && $saved_level <= 6 ) {
				$args['attributes']['headingLevel']['default'] = $saved_level;
			}
		}
	}

	return $args;
}
add_filter( 'register_block_type_args', 'haup_change_accordion_default_level_dynamic', 10, 2 );