You are here

protected function ImageDerivative::resolveValues in GraphQL 8.3

Retrieve the list of field values.

Always returns a list of field values. Even for single value fields. Single/multi field handling is responsibility of the base class.

Parameters

mixed $value: The current object value.

array $args: Field arguments.

$context: The resolve context.

\GraphQL\Type\Definition\ResolveInfo $info: The resolve info object.

Return value

\Generator The value generator.

Overrides FieldPluginBase::resolveValues

File

modules/graphql_core/src/Plugin/GraphQL/Fields/Entity/Fields/Image/ImageDerivative.php, line 71

Class

ImageDerivative
Retrieve the image field derivative (image style).

Namespace

Drupal\graphql_core\Plugin\GraphQL\Fields\Entity\Fields\Image

Code

protected function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
  if ($value instanceof ImageItem && $value->entity && $value->entity
    ->access('view') && ($style = ImageStyle::load($args['style']))) {
    assert($style instanceof ImageStyle);
    $file = $value->entity;
    assert($file instanceof File);

    // Determine the dimensions of the styled image.
    $dimensions = [
      'width' => $value->width,
      'height' => $value->height,
    ];
    if ($style
      ->supportsUri($file
      ->getFileUri())) {
      $style
        ->transformDimensions($dimensions, $file
        ->getFileUri());
      $url = $style
        ->buildUrl($file
        ->getFileUri());
    }
    else {
      $url = $file
        ->url();
    }
    (yield new CacheableValue([
      'url' => $url,
      'width' => $dimensions['width'],
      'height' => $dimensions['height'],
    ], [
      $style,
    ]));
  }
}