<?php
namespace EasyCorp\Bundle\EasyAdminBundle\Dto;
/**
* @author Javier Eguiluz <javier.eguiluz@gmail.com>
*/
final class AssetsDto
{
private $webpackEncoreAssets = [];
private $cssAssets = [];
private $jsAssets = [];
private $headContents = [];
private $bodyContents = [];
public function __construct()
{
}
public function addWebpackEncoreAsset(AssetDto $assetDto): void
{
if (\array_key_exists($entryName = $assetDto->getValue(), $this->webpackEncoreAssets)) {
throw new \InvalidArgumentException(sprintf('The "%s" Webpack Encore entry has been added more than once via the addWebpackEncoreEntry() method, but each entry can only be added once (to not overwrite its configuration).', $entryName));
}
$this->webpackEncoreAssets[$entryName] = $assetDto;
}
public function addCssAsset(AssetDto $assetDto): void
{
if (\array_key_exists($cssPath = $assetDto->getValue(), $this->cssAssets)) {
throw new \InvalidArgumentException(sprintf('The "%s" CSS file has been added more than once via the addCssFile() method, but each asset can only be added once (to not overwrite its configuration).', $cssPath));
}
$this->cssAssets[$cssPath] = $assetDto;
}
public function addJsAsset(AssetDto $assetDto): void
{
if (\array_key_exists($jsPath = $assetDto->getValue(), $this->jsAssets)) {
throw new \InvalidArgumentException(sprintf('The "%s" JS file has been added more than once via the addJsFile() method, but each asset can only be added once (to not overwrite its configuration).', $jsPath));
}
$this->jsAssets[$jsPath] = $assetDto;
}
public function addHtmlContentToHead(string $htmlContent): void
{
if (\in_array($htmlContent, $this->headContents, true)) {
return;
}
$this->headContents[] = $htmlContent;
}
public function addHtmlContentToBody(string $htmlContent): void
{
if (\in_array($htmlContent, $this->bodyContents, true)) {
return;
}
$this->bodyContents[] = $htmlContent;
}
/**
* @return AssetDto[]
*/
public function getWebpackEncoreAssets(): array
{
return $this->webpackEncoreAssets;
}
/**
* @return AssetDto[]
*/
public function getCssAssets(): array
{
return $this->cssAssets;
}
/**
* @return AssetDto[]
*/
public function getJsAssets(): array
{
return $this->jsAssets;
}
public function getHeadContents(): array
{
return $this->headContents;
}
public function getBodyContents(): array
{
return $this->bodyContents;
}
public function mergeWith(self $assetsDto): self
{
$this->webpackEncoreAssets = array_merge($this->webpackEncoreAssets, $assetsDto->getWebpackEncoreAssets());
$this->cssAssets = array_merge($this->cssAssets, $assetsDto->getCssAssets());
$this->jsAssets = array_merge($this->jsAssets, $assetsDto->getJsAssets());
$this->headContents = array_merge($this->headContents, $assetsDto->getHeadContents());
$this->bodyContents = array_merge($this->bodyContents, $assetsDto->getBodyContents());
return $this;
}
}