Automattic\WooCommerce\Vendor\Pelago\Emogrifier\Utilities
CssConcatenator::append
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() 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');
}
}
}