@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
29 lines (26 loc) • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hasTextChildrenOnly = hasTextChildrenOnly;
var _eslintCodemodUtils = require("eslint-codemod-utils");
var _functionCall = require("../../../ast-nodes/function-call");
var _jsxElementHelper = require("../../../ast-nodes/jsx-element-helper");
// The use of `<FormattedMessage ... />` component and `{formatMessage(...)}` are allowed as these are used for i18n
function hasTextChildrenOnly(node) {
var _node$children;
return (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children.every(function (child) {
if ((0, _eslintCodemodUtils.isNodeOfType)(child, 'JSXText')) {
return true;
}
// JSX child element <span><FormattedMessage /></span>
if ((0, _eslintCodemodUtils.isNodeOfType)(child, 'JSXElement') && _jsxElementHelper.JSXElementHelper.getName(child) === 'FormattedMessage') {
return true;
}
// JSX expression <span>{formatMessage(...)}</span>
if ((0, _eslintCodemodUtils.isNodeOfType)(child, 'JSXExpressionContainer') && (0, _eslintCodemodUtils.isNodeOfType)(child.expression, 'CallExpression')) {
return _functionCall.FunctionCall.getName(child.expression) === 'formatMessage';
}
return false;
});
}