<?php
/**
 * @package WPSEO_Local\Main
 * @since   6.0
 */

if ( ! class_exists( 'WPSEO_Local_Blocks' ) ) {

	/**
	 * WPSEO_Local_Core class. Handles defining of Yoast Local SEO Gutenberg blocks.
	 */
	class WPSEO_Local_Blocks {

		/**
		 * JavaScript extension.
		 *
		 * @var string
		 */
		private $js_ext;

		/**
		 * CSS Extension.
		 *
		 * @var string
		 */
		private $css_ext;

		/**
		 * WPSEO_Local_Blocks constructor.
		 */
		public function __construct() {
			$this->init();
		}

		/**
		 * The init function for the WPSEO_Local_Blocks class.
		 */
		public function init() {
			$this->set_ext();

			add_action( 'enqueue_block_editor_assets', array( $this, 'register_block_editor_assets' ) );

			add_action( 'wp_ajax_wpseo_local_show_address_ajax_cb', 'wpseo_local_show_address_ajax_cb', 10 );
			add_action( 'wp_ajax_nopriv_wpseo_local_show_address_ajax_cb', 'wpseo_local_show_address_ajax_cb', 10 );

			add_action( 'wp_ajax_wpseo_local_show_map_ajax_cb', 'wpseo_local_show_map_ajax_cb', 10 );
			add_action( 'wp_ajax_nopriv_wpseo_local_show_map_ajax_cb', 'wpseo_local_show_map_ajax_cb', 10 );
		}

		/**
		 * Set the file extension for
		 */
		private function set_ext() {
			$this->css_ext = '.min.css';
			$this->js_ext  = '.min.js';

			// If debugging is on, don't use a minified file.
			if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
				$this->css_ext = '.css';
				$this->js_ext  = '.js';
			}
		}

		/**
		 * Register Block Editor Assets.
		 */
		public function register_block_editor_assets() {
			// Scripts.
			wp_register_script( 'yoast-local-seo-block-editor-js', plugins_url( 'js/dist/wp-seo-local-blocks-' . yoast_seo_local_flatten_version( WPSEO_LOCAL_VERSION ) . $this->js_ext, WPSEO_LOCAL_FILE ), array( 'wp-blocks', 'wp-i18n', 'wp-element' ), WPSEO_LOCAL_VERSION, true );
			wp_localize_script( 'yoast-local-seo-block-editor-js', 'yoastSeoLocal', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'plugin_url' => trailingslashit( plugins_url( '', WPSEO_LOCAL_FILE ) ), 'hasMultipleLocations' => wpseo_has_multiple_locations() ) );
			wp_enqueue_script( 'yoast-local-seo-block-editor-js' );

			$wpseo_asset_manager = new WPSEO_Admin_Asset_Manager();
			$wpseo_asset_manager->register_assets();

			$wpseo_asset_manager->enqueue_script( 'api' );

			$yoast_seo_local_asset_manager = new WPSEO_Local_Admin_Assets();
			$yoast_seo_local_asset_manager->register_assets();

			$yoast_seo_local_asset_manager->enqueue_script( 'frontend' );

			/*
			// Styles.
			wp_register_style( 'yoast-local-seo-block-editor-css', plugins_url( 'editor.css', dirname( __FILE__ ) ), array( 'wp-edit-blocks' ), filemtime( plugin_dir_path( WPSEO_LOCAL_FILE ) . 'assets/_src/css/editor.css' ) );
			wp_enqueue_style( 'yoast-local-seo-block-editor-css' );
			*/
		}
	}
}
