Sha256: eead88499027f352eb97531e6223ea63e349695f46228fe7c60ca2107b7da2d3

Contents?: true

Size: 1.5 KB

Versions: 23

Compression:

Stored size: 1.5 KB

Contents

'use strict';

const getUnitFromValueNode = require('./getUnitFromValueNode');
const isStandardSyntaxValue = require('./isStandardSyntaxValue');
const isVariable = require('./isVariable');
const keywordSets = require('../reference/keywordSets');
const postcssValueParser = require('postcss-value-parser');

/** @typedef {import('postcss-value-parser').Node} Node */

/**
 * Get the font-families within a `font` shorthand property value.
 *
 * @param {string} value
 *
 * @returns {Node[]}
 */
module.exports = function findAnimationName(value) {
	/** @type {Node[]} */
	const animationNames = [];

	const valueNodes = postcssValueParser(value);

	// Handle `inherit`, `initial` and etc
	if (
		valueNodes.nodes.length === 1 &&
		keywordSets.basicKeywords.has(valueNodes.nodes[0].value.toLowerCase())
	) {
		return [valueNodes.nodes[0]];
	}

	valueNodes.walk((valueNode) => {
		if (valueNode.type === 'function') {
			return false;
		}

		if (valueNode.type !== 'word') {
			return;
		}

		const valueLowerCase = valueNode.value.toLowerCase();

		// Ignore non standard syntax
		if (!isStandardSyntaxValue(valueLowerCase)) {
			return;
		}

		// Ignore variables
		if (isVariable(valueLowerCase)) {
			return;
		}

		// Ignore keywords for other font parts
		if (keywordSets.animationShorthandKeywords.has(valueLowerCase)) {
			return;
		}

		// Ignore numbers with units
		const unit = getUnitFromValueNode(valueNode);

		if (unit || unit === '') {
			return;
		}

		animationNames.push(valueNode);
	});

	return animationNames;
};

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
trusty-cms-5.0.7 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-5.0.6 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-5.0.5 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-5.0.4 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-5.0.3 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-5.0.2 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-5.0.1 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.3.5 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-5.0.0 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.3.4 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.3.3 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.3.2 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.3.1 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.3 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.2.3 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.2.2 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.2.1 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.2 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.1.9 node_modules/stylelint/lib/utils/findAnimationName.js
trusty-cms-4.1.8 node_modules/stylelint/lib/utils/findAnimationName.js