hasAccessibleChild.js 1.1 KB

123456789101112131415161718192021222324252627282930
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports["default"] = hasAccessibleChild;
  7. var _jsxAstUtils = require("jsx-ast-utils");
  8. var _isHiddenFromScreenReader = _interopRequireDefault(require("./isHiddenFromScreenReader"));
  9. function hasAccessibleChild(node, elementType) {
  10. return node.children.some(function (child) {
  11. switch (child.type) {
  12. case 'Literal':
  13. return !!child.value;
  14. // $FlowFixMe JSXText is missing in ast-types-flow
  15. case 'JSXText':
  16. return !!child.value;
  17. case 'JSXElement':
  18. return !(0, _isHiddenFromScreenReader["default"])(elementType(child.openingElement), child.openingElement.attributes);
  19. case 'JSXExpressionContainer':
  20. if (child.expression.type === 'Identifier') {
  21. return child.expression.name !== 'undefined';
  22. }
  23. return true;
  24. default:
  25. return false;
  26. }
  27. }) || (0, _jsxAstUtils.hasAnyProp)(node.openingElement.attributes, ['dangerouslySetInnerHTML', 'children']);
  28. }
  29. module.exports = exports.default;