<?php
/**
 * Enqueue CSS/JS for shortcode.
 *
 * @package DatvetaucaotocBooking
 */

declare(strict_types=1);

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

final class Datvetau_Booking_Assets {

	private static bool $enqueue = false;

	public static function flag_enqueue(): void {
		self::$enqueue = true;
	}

	public static function register(): void {
		add_action( 'wp_enqueue_scripts', array( self::class, 'maybe_enqueue' ) );
	}

	public static function maybe_enqueue(): void {
		if ( ! self::$enqueue ) {
			return;
		}

		$js_path  = DATVETAU_BOOKING_DIR . 'assets/build/wizard.js';
		$css_path = DATVETAU_BOOKING_DIR . 'assets/css/ferry-booking.css';
		$wp_css   = DATVETAU_BOOKING_DIR . 'assets/css/ferry-booking-wp.css';

		wp_enqueue_style(
			'datvetau-booking',
			DATVETAU_BOOKING_URL . 'assets/css/ferry-booking.css',
			array(),
			file_exists( $css_path ) ? (string) filemtime( $css_path ) : DATVETAU_BOOKING_VERSION
		);

		wp_enqueue_style(
			'datvetau-booking-wp',
			DATVETAU_BOOKING_URL . 'assets/css/ferry-booking-wp.css',
			array( 'datvetau-booking' ),
			file_exists( $wp_css ) ? (string) filemtime( $wp_css ) : DATVETAU_BOOKING_VERSION
		);

		if ( file_exists( $js_path ) ) {
			wp_enqueue_script(
				'datvetau-booking-wizard',
				DATVETAU_BOOKING_URL . 'assets/build/wizard.js',
				array(),
				(string) filemtime( $js_path ),
				true
			);
		} else {
			wp_register_script( 'datvetau-booking-wizard', false, array(), DATVETAU_BOOKING_VERSION, true );
			wp_enqueue_script( 'datvetau-booking-wizard' );
		}

		wp_localize_script(
			'datvetau-booking-wizard',
			'datvetauBookingConfig',
			array(
				'restUrl' => esc_url_raw( rest_url( 'datvetau/v1' ) ),
				'nonce'   => wp_create_nonce( 'wp_rest' ),
			)
		);
	}
}
