| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // NOTICE: This file is generated by Rollup. To modify it,
- // please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
- 'use strict';
- const valueParser = require('postcss-value-parser');
- const keywords = require('../reference/keywords.cjs');
- const getDimension = require('./getDimension.cjs');
- const isStandardSyntaxValue = require('./isStandardSyntaxValue.cjs');
- const isVariable = require('./isVariable.cjs');
- /** @typedef {import('postcss-value-parser').Node} Node */
- /**
- * Get the animation name within an `animation` shorthand property value.
- *
- * @param {string} value
- *
- * @returns {Node[]}
- */
- function findAnimationName(value) {
- /** @type {Node[]} */
- const animationNames = [];
- const valueNodes = valueParser(value);
- const { nodes } = valueNodes;
- // Handle `inherit`, `initial` and etc
- if (nodes.length === 1 && nodes[0] && keywords.basicKeywords.has(nodes[0].value.toLowerCase())) {
- return [nodes[0]];
- }
- let shouldBeIgnored = false;
- valueNodes.walk((valueNode) => {
- if (shouldBeIgnored) return;
- if (valueNode.type === 'function') {
- return false;
- }
- if (valueNode.type !== 'word') {
- return;
- }
- const valueLowerCase = valueNode.value.toLowerCase();
- // Ignore non-standard syntax
- if (!isStandardSyntaxValue(valueLowerCase)) {
- // Cannot find animation name if shorthand has non-standard syntax value (#5532)
- shouldBeIgnored = true;
- animationNames.length = 0; // clears animationNames
- return;
- }
- // Ignore variables
- if (isVariable(valueLowerCase)) {
- return;
- }
- // Ignore keywords for other animation parts
- if (keywords.animationShorthandKeywords.has(valueLowerCase)) {
- return;
- }
- // Ignore numbers with units
- const { unit } = getDimension(valueNode);
- if (unit || unit === '') {
- return;
- }
- animationNames.push(valueNode);
- });
- return animationNames;
- }
- module.exports = findAnimationName;
|