You are here

public static function Blazy::imageAttributes in Blazy 8.2

Same name and namespace in other branches
  1. 8 src/Blazy.php \Drupal\blazy\Blazy::imageAttributes()
  2. 7 src/Blazy.php \Drupal\blazy\Blazy::imageAttributes()

Modifies $variables to provide optional (Responsive) image attributes.

1 call to Blazy::imageAttributes()
Blazy::buildMedia in src/Blazy.php
Modifies variables for image and iframe.

File

src/Blazy.php, line 150

Class

Blazy
Provides common blazy utility static methods.

Namespace

Drupal\blazy

Code

public static function imageAttributes(array &$variables) {
  $item = $variables['item'];
  $settings =& $variables['settings'];
  $image =& $variables['image'];
  $attributes =& $variables['item_attributes'];

  // Respects hand-coded image attributes.
  if ($item) {
    if (!isset($attributes['alt'])) {
      $attributes['alt'] = empty($item->alt) ? NULL : trim($item->alt);
    }

    // Do not output an empty 'title' attribute.
    if (isset($item->title) && mb_strlen($item->title) != 0) {
      $attributes['title'] = trim($item->title);
    }
  }

  // Only output dimensions for non-svg. Respects hand-coded image attributes.
  // Do not pass it to $attributes to also respect both (Responsive) image.
  if (!isset($attributes['width']) && empty($settings['unstyled'])) {
    $image['#height'] = $settings['height'];
    $image['#width'] = $settings['width'];
  }
  $attributes['class'][] = 'media__image';

  // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode.
  if (!empty($settings['decode'])) {
    $attributes['decoding'] = 'async';
  }
  self::commonAttributes($attributes, $variables['settings']);
  $image['#attributes'] = empty($image['#attributes']) ? $attributes : NestedArray::mergeDeep($image['#attributes'], $attributes);

  // Provides a noscript if so configured, before any lazy defined.
  if (!empty($settings['noscript']) && empty($settings['is_preview'])) {
    self::buildNoscriptImage($variables);
  }

  // Provides [data-(src|lazy)] for (Responsive) image, after noscript.
  if (!empty($settings['lazy'])) {
    self::lazyAttributes($image['#attributes'], $settings);
  }
}