Automattic\WooCommerce\Vendor\Pelago\Emogrifier\Utilities

CssConcatenator::appendpublicWC 1.0

Appends a declaration block to the CSS.

Method of the class: CssConcatenator{}

No Hooks.

Returns

null. Nothing (null).

Usage

$CssConcatenator = new CssConcatenator();
$CssConcatenator->append( $selectors, $declarationsBlock, $media ): void;
$selectors(array) (required)
.
$declarationsBlock(string) (required)
the property declarations, e.g. "margin-top: 0.5em; padding: 0".
$media(string)
the media query for the rule, e.g. "@media screen and (max-width:639px)", or an empty string if none.
Default: ''

CssConcatenator::append() code WC 10.7.0

public function append(array $selectors, string $declarationsBlock, string $media = ''): void
{
    $selectorsAsKeys = \array_flip($selectors);

    $mediaRule = $this->getOrCreateMediaRuleToAppendTo($media);
    $ruleBlocks = $mediaRule->ruleBlocks;
    $lastRuleBlock = \end($ruleBlocks);

    $hasSameDeclarationsAsLastRule = \is_object($lastRuleBlock)
        && $declarationsBlock === $lastRuleBlock->declarationsBlock;
    if ($hasSameDeclarationsAsLastRule) {
        $lastRuleBlock->selectorsAsKeys += $selectorsAsKeys;
    } else {
        $lastRuleBlockSelectors = \is_object($lastRuleBlock) ? $lastRuleBlock->selectorsAsKeys : [];
        $hasSameSelectorsAsLastRule = \is_object($lastRuleBlock)
            && self::hasEquivalentSelectors($selectorsAsKeys, $lastRuleBlockSelectors);
        if ($hasSameSelectorsAsLastRule) {
            $lastDeclarationsBlockWithoutSemicolon = \rtrim(\rtrim($lastRuleBlock->declarationsBlock), ';');
            $lastRuleBlock->declarationsBlock = $lastDeclarationsBlockWithoutSemicolon . ';' . $declarationsBlock;
        } else {
            $mediaRule->ruleBlocks[] = (object) \compact('selectorsAsKeys', 'declarationsBlock');
        }
    }
}