IconExtractorInterface.php

Namespace

Drupal\Core\Theme\Icon

File

core/lib/Drupal/Core/Theme/Icon/IconExtractorInterface.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Core\Theme\Icon;

use Drupal\Core\Plugin\PluginFormInterface;

/**
 * Interface for icon_extractor plugins.
 *
 * @internal
 *   This API is experimental.
 */
interface IconExtractorInterface extends PluginFormInterface {
  
  /**
   * Get a list of all the icons discovered by this extractor.
   *
   * The icons must be provided as an associative array keyed by the icon id
   * with values used to load the icon: source and group.
   *
   * @return array
   *   List of icons that are found by this extractor. Keyed by icon full id.
   */
  public function discoverIcons() : array;
  
  /**
   * Load an icon object.
   *
   * @param array $icon_data
   *   The icon data build in the discoverIcons() method.
   *
   * @return \Drupal\Core\Theme\Icon\IconDefinitionInterface|null
   *   The icon.
   */
  public function loadIcon(array $icon_data) : ?IconDefinitionInterface;
  
  /**
   * Returns the translated plugin label.
   */
  public function label() : string;
  
  /**
   * Returns the translated plugin description.
   */
  public function description() : string;
  
  /**
   * Create the icon definition from an extractor plugin.
   *
   * @param string $icon_id
   *   The id of the icon.
   * @param string|null $source
   *   The source, url or path of the icon.
   * @param string|null $group
   *   The group of the icon.
   * @param array|null $data
   *   The icon data.
   *
   * @return \Drupal\Core\Theme\Icon\IconDefinitionInterface
   *   The icon definition.
   *
   * @see \Drupal\Core\Theme\Icon\IconDefinition::create()
   */
  public function createIcon(string $icon_id, ?string $source = NULL, ?string $group = NULL, ?array $data = NULL) : IconDefinitionInterface;

}

Interfaces

Title Deprecated Summary
IconExtractorInterface Interface for icon_extractor plugins.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.