<?php
/**
 * WP Hook Class
 *
 * @package errigal
 * @since 1.1.0
 */

namespace Errigal\Constant;

defined( 'ABSPATH' ) || exit;

/**
 * This class is in charge of providing WordPress hook names.
 *
 * @since 1.1.0
 */
class Errigal_WP_Hook implements Errigal_Hook_Interface {
	/**
	 * Action: admin_enqueue_scripts.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/admin_enqueue_scripts/
	 *
	 * @var string
	 */
	public const ADMIN_ENQUEUE_SCRIPTS = 'admin_enqueue_scripts';

	/**
	 * Action: admin_init.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/admin_init/
	 *
	 * @var string
	 */
	public const ADMIN_INIT = 'admin_init';

	/**
	 * Action: admin_notices.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/admin_notices/
	 *
	 * @var string
	 */
	public const ADMIN_NOTICES = 'admin_notices';

	/**
	 * Action: after_setup_theme.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/after_setup_theme/
	 *
	 * @var string
	 */
	public const AFTER_SETUP_THEME = 'after_setup_theme';

	/**
	 * Action: customize_controls_enqueue_scripts.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/customize_controls_enqueue_scripts/
	 *
	 * @var string
	 */
	public const CUSTOMIZE_CONTROLS_ENQUEUE_SCRIPTS = 'customize_controls_enqueue_scripts';

	/**
	 * Action: customize_preview_init.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/customize_preview_init/
	 *
	 * @var string
	 */
	public const CUSTOMIZE_PREVIEW_INIT = 'customize_preview_init';

	/**
	 * Action: customize_register.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/customize_register/
	 *
	 * @var string
	 */
	public const CUSTOMIZE_REGISTER = 'customize_register';

	/**
	 * Action: enqueue_block_editor_assets.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/enqueue_block_editor_assets/
	 *
	 * @var string
	 */
	public const ENQUEUE_BLOCK_EDITOR_ASSETS = 'enqueue_block_editor_assets';

	/**
	 * Action: wp_ajax_{$action}.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/wp_ajax_action/
	 *
	 * @var string
	 */
	public const WP_AJAX_ = 'wp_ajax_';

	/**
	 * Action: wp_enqueue_scripts.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/
	 *
	 * @var string
	 */
	public const WP_ENQUEUE_SCRIPTS = 'wp_enqueue_scripts';

	/**
	 * Action: wp_head.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/wp_head/
	 *
	 * @var string
	 */
	public const WP_HEAD = 'wp_head';

	/**
	 * Filter: body_class.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/body_class/
	 *
	 * @var string
	 */
	public const BODY_CLASS = 'body_class';

	/**
	 * Filter: comment_form_default_fields.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/comment_form_default_fields/
	 *
	 * @var string
	 */
	public const COMMENT_FORM_DEFAULT_FIELDS = 'comment_form_default_fields';

	/**
	 * Filter: comment_form_defaults.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/comment_form_defaults/
	 *
	 * @var string
	 */
	public const COMMENT_FORM_DEFAULTS = 'comment_form_defaults';

	/**
	 * Filter: comment_reply_link.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/comment_reply_link/
	 *
	 * @var string
	 */
	public const COMMENT_REPLY_LINK = 'comment_reply_link';

	/**
	 * Filter: the_password_form.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/the_password_form/
	 *
	 * @var string
	 */
	public const THE_PASSWORD_FORM = 'the_password_form';

	/**
	 * Filter: the_title.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/the_title/
	 *
	 * @var string
	 */
	public const THE_TITLE = 'the_title';

	/**
	 * Filter: tiny_mce_before_init.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/tiny_mce_before_init/
	 *
	 * @var string
	 */
	public const TINY_MCE_BEFORE_INIT = 'tiny_mce_before_init';

	/**
	 * Filter: walker_nav_menu_start_el.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/walker_nav_menu_start_el/
	 *
	 * @var string
	 */
	public const WALKER_NAV_MENU_START_EL = 'walker_nav_menu_start_el';

	/**
	 * Filter: wp_link_pages_args.
	 *
	 * @since 1.1.0
	 *
	 * @link https://developer.wordpress.org/reference/hooks/wp_link_pages_args/
	 *
	 * @var string
	 */
	public const WP_LINK_PAGES_ARGS = 'wp_link_pages_args';
}
