stylelint
Version:
Modern CSS linter
109 lines (90 loc) • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.messages = exports.ruleName = undefined;
exports.default = function (actual) {
return function (root, result) {
var validOptions = (0, _utils.validateOptions)(result, ruleName, { actual: actual });
if (!validOptions) {
return;
}
var declaredAnimations = new Set();
root.walkAtRules("keyframes", function (atRule) {
declaredAnimations.add(atRule.params);
});
root.walkDecls(function (decl) {
if (decl.prop === "animation-name" && !animationNameKeywords.has(decl.value)) {
checkAnimationName(decl.value, decl);
}
if (decl.prop === "animation") {
var valueList = _postcss2.default.list.space(decl.value);
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = valueList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var value = _step.value;
// Ignore numbers with units
if (_postcssValueParser2.default.unit(value)) {
continue;
}
// Ignore keywords for other animation parts
if (animationShorthandKeywords.has(value)) {
continue;
}
// Ignore variables
if ((0, _utils.cssWordIsVariable)(value)) {
continue;
}
// Ignore functions
if (value.indexOf("(") !== -1) {
continue;
}
checkAnimationName(value, decl, decl.value.indexOf(value));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
});
function checkAnimationName(animationName, decl) {
var offset = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2];
if (!declaredAnimations.has(animationName)) {
(0, _utils.report)({
result: result,
ruleName: ruleName,
message: messages.rejected(animationName),
node: decl,
index: (0, _utils.declarationValueIndexOffset)(decl) + offset
});
}
}
};
};
var _postcss = require("postcss");
var _postcss2 = _interopRequireDefault(_postcss);
var _postcssValueParser = require("postcss-value-parser");
var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);
var _utils = require("../../utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ruleName = exports.ruleName = "no-unknown-animations";
var messages = exports.messages = (0, _utils.ruleMessages)(ruleName, {
rejected: function rejected(animationName) {
return "Unknown animation name \"" + animationName + "\"";
}
});
// cf. https://developer.mozilla.org/en-US/docs/Web/CSS/animation
var animationShorthandKeywords = new Set(["infinite", "normal", "reverse", "alternate", "alternate-reverse", "none", "initial", "inherit", "unset", "forwards", "backwards", "both", "running", "paused", "linear", "ease-in", "ease-out", "ease-in-out", "step-start", "step-end"]);
var animationNameKeywords = new Set(["none", "initial", "inherit", "unset"]);