| @@ -2,8 +2,9 @@ | ||
| 2 | 2 | |
| 3 | 3 | namespace Tableberg\Renderer\Image; |
| 4 | 4 | |
| 5 | 5 | use Tableberg\Renderer\Attrs\Corners; |
| 6 | +use Tableberg\Renderer\Attrs\BoolAttr; | |
| 6 | 7 | use Tableberg\Renderer\Attrs\NumberAttr; |
| 7 | 8 | use Tableberg\Renderer\Attrs\Sides; |
| 8 | 9 | use Tableberg\Renderer\Attrs\StringAttr; |
| 9 | 10 | |
| @@ -42,8 +43,11 @@ | ||
| 42 | 43 | |
| 43 | 44 | /** @var StringAttr */ |
| 44 | 45 | public $linkTarget; |
| 45 | 46 | |
| 47 | + /** @var ImageLightboxAttrs */ | |
| 48 | + public $lightbox; | |
| 49 | + | |
| 46 | 50 | /** @var Sides */ |
| 47 | 51 | public $border; |
| 48 | 52 | |
| 49 | 53 | /** @var Corners */ |
| @@ -79,12 +83,38 @@ | ||
| 79 | 83 | getOrNull($data['linkTarget']), |
| 80 | 84 | $defaults['linkTarget'], |
| 81 | 85 | ['_blank', '_self'] |
| 82 | 86 | ); |
| 87 | + $instance->lightbox = ImageLightboxAttrs::from_array( | |
| 88 | + getOrNull($data['lightbox']), | |
| 89 | + $defaults['lightbox'] | |
| 90 | + ); | |
| 83 | 91 | $instance->border = Sides::from_array(getOrNull($data['border']), $defaults['border']); |
| 84 | 92 | $instance->borderRadius = Corners::from_array( |
| 85 | 93 | getOrNull($data['borderRadius']), |
| 86 | 94 | $defaults['borderRadius'] |
| 95 | + ); | |
| 96 | + | |
| 97 | + return $instance; | |
| 98 | + } | |
| 99 | +} | |
| 100 | + | |
| 101 | +class ImageLightboxAttrs { | |
| 102 | + /** @var BoolAttr */ | |
| 103 | + public $enabled; | |
| 104 | + | |
| 105 | + /** | |
| 106 | + * @param array<string, mixed>|null $data | |
| 107 | + * @param array<string, mixed> $defaults | |
| 108 | + * @return self | |
| 109 | + */ | |
| 110 | + public static function from_array($data, $defaults) { | |
| 111 | + $data = is_array($data) ? $data : []; | |
| 112 | + | |
| 113 | + $instance = new self(); | |
| 114 | + $instance->enabled = new BoolAttr( | |
| 115 | + getOrNull($data['enabled']), | |
| 116 | + (bool) ($defaults['enabled'] ?? false) | |
| 87 | 117 | ); |
| 88 | 118 | |
| 89 | 119 | return $instance; |
| 90 | 120 | } |