123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 'use strict';
- const getDimension = require('./getDimension');
- const isStandardSyntaxValue = require('./isStandardSyntaxValue');
- const isVariable = require('./isVariable');
- const { animationShorthandKeywords, basicKeywords } = require('../reference/keywords');
- const postcssValueParser = require('postcss-value-parser');
- module.exports = function findAnimationName(value) {
-
- const animationNames = [];
- const valueNodes = postcssValueParser(value);
- const { nodes } = valueNodes;
-
- if (nodes.length === 1 && nodes[0] && 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();
-
- if (!isStandardSyntaxValue(valueLowerCase)) {
-
- shouldBeIgnored = true;
- animationNames.length = 0;
- return;
- }
-
- if (isVariable(valueLowerCase)) {
- return;
- }
-
- if (animationShorthandKeywords.has(valueLowerCase)) {
- return;
- }
-
- const { unit } = getDimension(valueNode);
- if (unit || unit === '') {
- return;
- }
- animationNames.push(valueNode);
- });
- return animationNames;
- };
|