<?php

namespace HelloTheme\Includes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Script {

	protected string $handle;
	protected array $dependencies;

	public function __construct( string $handle, array $dependencies = [] ) {
		$this->handle       = $handle;
		$this->dependencies = $dependencies;
	}

	public function enqueue() {
		$asset_path = HELLO_THEME_SCRIPTS_PATH . $this->handle . '.asset.php';
		$asset_url = HELLO_THEME_SCRIPTS_URL;

		if ( ! file_exists( $asset_path ) ) {
			throw new \Exception( $asset_path . ' - You need to run `npm run build` for the "hello-elementor" first.' ); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
		}

		$script_asset = require $asset_path;

		foreach ( $this->dependencies as $dependency ) {
			$script_asset['dependencies'][] = $dependency;
		}

		wp_enqueue_script(
			$this->handle,
			$asset_url . "$this->handle.js",
			$script_asset['dependencies'],
			$script_asset['version'],
			true
		);

		\wp_set_script_translations( $this->handle, 'hello-elementor' );
	}
}
