You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

33 lines
1.1 KiB

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