Files
Malin f3ff7b7186 feat: initial ACRIB WordPress deployment
- WordPress 6.9.4 (es_ES) with Kadence theme
- Homepage: Hero, La Asociación, Pilares, Beneficios, Eventos, Miembros, Hazte Miembro, Contacto
- Brand identity: #13294b navy, #a12932 burgundy, #c69c48 gold
- Fonts: Raleway (headings) + Source Sans 3 (body) + Lato (UI)
- Plugins: Kadence Blocks, Polylang, Contact Form 7
- Custom CSS with full brand styling and responsive layout
- HTTPS enforced via wp-config.php proxy detection
2026-05-19 19:25:59 +02:00

138 lines
4.1 KiB
PHP

<?php declare( strict_types=1 );
namespace KadenceWP\KadenceBlocks\Optimizer\Response;
/**
* Data Transfer Object representing comprehensive analysis data for an image element.
*
* Contains detailed information about an image including dimensions, loading attributes,
* computed styles, srcset entries, and optimization recommendations such as optimal sizes.
*/
final class ImageAnalysis {
public string $path;
public string $src;
/**
* @var SrcsetEntry[]
*/
public array $srcset;
public int $width;
public int $height;
public string $widthAttr;
public string $heightAttr;
public int $naturalWidth;
public int $naturalHeight;
public ?float $aspectRatio;
public ?string $alt;
public string $className;
public string $loading;
public string $decoding;
public ?string $sizes;
public ComputedStyle $computedStyle;
public string $optimalSizes;
/**
* @param SrcsetEntry[] $srcset The srcset entry.
*/
private function __construct(
string $path,
string $src,
array $srcset,
int $width,
int $height,
string $widthAttr,
string $heightAttr,
int $naturalWidth,
int $naturalHeight,
?float $aspectRatio,
?string $alt,
string $className,
string $loading,
string $decoding,
?string $sizes,
ComputedStyle $computedStyle,
string $optimalSizes
) {
$this->path = $path;
$this->src = $src;
$this->srcset = $srcset;
$this->width = $width;
$this->height = $height;
$this->widthAttr = $widthAttr;
$this->heightAttr = $heightAttr;
$this->naturalWidth = $naturalWidth;
$this->naturalHeight = $naturalHeight;
$this->aspectRatio = $aspectRatio;
$this->alt = $alt;
$this->className = $className;
$this->loading = $loading;
$this->decoding = $decoding;
$this->sizes = $sizes;
$this->computedStyle = $computedStyle;
$this->optimalSizes = $optimalSizes;
}
/**
* @param array{path: string, src: string, srcset: array, width: int, height: int, widthAttr: string, heightAttr: string, naturalWidth: int, naturalHeight: int, aspectRatio: float, alt: ?string, class: ?string, loading: string, decoding: string, sizes: ?string, computedStyle: array, optimalSizes: string} $attributes
*/
public static function from( array $attributes ): self {
$srcset = array_map(
static function ( array $entry ): SrcsetEntry {
return SrcsetEntry::from( $entry );
},
$attributes['srcset'] ?? []
);
return new self(
$attributes['path'] ?? '',
$attributes['src'] ?? '',
$srcset,
$attributes['width'] ?? 0,
$attributes['height'] ?? 0,
$attributes['widthAttr'] ?? '',
$attributes['heightAttr'] ?? '',
$attributes['naturalWidth'] ?? 0,
$attributes['naturalHeight'] ?? 0,
$attributes['aspectRatio'] ?? null,
$attributes['alt'],
$attributes['class'] ?? '',
$attributes['loading'],
$attributes['decoding'],
$attributes['sizes'],
ComputedStyle::from( $attributes['computedStyle'] ),
$attributes['optimalSizes']
);
}
/**
* @return array{path: string, src: string, srcset: array, width: int, height: int, widthAttr: string, heightAttr: string, naturalWidth: int, naturalHeight: int, aspectRatio: float, alt: ?string, class: string, loading: string, decoding: string, sizes: ?string, computedStyle: array, optimalSizes: string}
*/
public function toArray(): array {
return [
'path' => $this->path,
'src' => $this->src,
'srcset' => array_map(
static function ( SrcsetEntry $entry ): array {
return $entry->toArray();
},
$this->srcset
),
'width' => $this->width,
'height' => $this->height,
'widthAttr' => $this->widthAttr,
'heightAttr' => $this->heightAttr,
'naturalWidth' => $this->naturalWidth,
'naturalHeight' => $this->naturalHeight,
'aspectRatio' => $this->aspectRatio,
'alt' => $this->alt,
'class' => $this->className,
'loading' => $this->loading,
'decoding' => $this->decoding,
'sizes' => $this->sizes,
'computedStyle' => $this->computedStyle->toArray(),
'optimalSizes' => $this->optimalSizes,
];
}
}