function LibraryDependencyResolver::getMinimalRepresentativeSubset

Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php \Drupal\Core\Asset\LibraryDependencyResolver::getMinimalRepresentativeSubset()
  2. 10 core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php \Drupal\Core\Asset\LibraryDependencyResolver::getMinimalRepresentativeSubset()
  3. 11.x core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php \Drupal\Core\Asset\LibraryDependencyResolver::getMinimalRepresentativeSubset()

Gets the minimal representative subset of the given libraries.

A minimal representative subset means that any library in the given set of libraries that is a dependency of another library in the set, is removed.

Hence a minimal representative subset is the most compact representation possible of a set of libraries.

(Each asset library has dependencies and can therefore be seen as a tree. Hence the given list of libraries represent a forest. This function returns all roots of trees that are not a subtree of another tree in the forest.)

Parameters

string[] $libraries: A set of libraries.

Return value

string[] A representative subset of the given set of libraries.

Overrides LibraryDependencyResolverInterface::getMinimalRepresentativeSubset

File

core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php, line 81

Class

LibraryDependencyResolver
Resolves the dependencies of asset (CSS/JavaScript) libraries.

Namespace

Drupal\Core\Asset

Code

public function getMinimalRepresentativeSubset(array $libraries) {
    assert(count($libraries) === count(array_unique($libraries)), '$libraries can\'t contain duplicate items.');
    // Determine each library's dependencies.
    $all_dependencies = [];
    foreach ($libraries as $library) {
        $with_deps = $this->getLibrariesWithDependencies([
            $library,
        ]);
        // We don't need library itself listed in the dependencies.
        $all_dependencies += array_diff($with_deps, [
            $library,
        ]);
    }
    return array_values(array_diff($libraries, array_intersect($all_dependencies, $libraries)));
}

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