class DesignTokenValuePluginCollection
A collection of design token value plugins.
Hierarchy
- class \Drupal\Component\Plugin\LazyPluginCollection implements \Drupal\Component\Plugin\IteratorAggregate, \Drupal\Component\Plugin\Countable
- class \Drupal\Core\Theme\DesignToken\DesignTokenValuePluginCollection extends \Drupal\Component\Plugin\LazyPluginCollection
Expanded class hierarchy of DesignTokenValuePluginCollection
2 files declare their use of DesignTokenValuePluginCollection
- DesignToken.php in core/
lib/ Drupal/ Core/ Theme/ Entity/ DesignToken.php - DesignTokenInterface.php in core/
lib/ Drupal/ Core/ Theme/ Entity/ DesignTokenInterface.php
File
-
core/
lib/ Drupal/ Core/ Theme/ DesignToken/ DesignTokenValuePluginCollection.php, line 14
Namespace
Drupal\Core\Theme\DesignTokenView source
class DesignTokenValuePluginCollection extends LazyPluginCollection {
public function __construct(protected DesignTokenValuePluginManagerInterface $manager, protected string $pluginId, protected array $configurations = []) {
if (!empty($this->configurations)) {
$instance_ids = array_keys($this->configurations);
$this->instanceIds = array_combine($instance_ids, $instance_ids);
}
}
/**
* {@inheritdoc}
*/
protected function initializePlugin($instance_id) : void {
$this->set($instance_id, $this->manager
->createInstance($this->pluginId, DesignTokenValuePluginBase::prepareConfiguration($this->configurations[$instance_id] ?? [])));
}
/**
* {@inheritdoc}
*/
public function setConfiguration(array $configuration) {
// Track each instance ID as it is updated.
$unprocessed_instance_ids = $this->getInstanceIds();
foreach ($configuration as $instance_id => $instance_configuration) {
$this->configurations[$instance_id] = $instance_configuration;
$instance = $this->get($instance_id);
if ($instance instanceof ConfigurableInterface) {
$instance->setConfiguration(DesignTokenValuePluginBase::prepareConfiguration($instance_configuration));
}
// Remove this instance ID from the list being updated.
unset($unprocessed_instance_ids[$instance_id]);
}
// Remove remaining instances that had no configuration specified for them.
foreach ($unprocessed_instance_ids as $unprocessed_instance_id) {
$this->removeInstanceId($unprocessed_instance_id);
}
return $this;
}
/**
* {@inheritdoc}
*/
public function getConfiguration() : array {
$preparedConfigurations = [];
foreach ($this->configurations as $instanceId => $configuration) {
$instance = $this->get($instanceId);
$preparedConfigurations[DesignTokenEntity::getConfigScopeName($instanceId)] = $instance->toDtcg();
}
return $preparedConfigurations;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.