12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports["default"] = getAccessibleChildText;
- var _jsxAstUtils = require("jsx-ast-utils");
- var _isHiddenFromScreenReader = _interopRequireDefault(require("./isHiddenFromScreenReader"));
- function standardizeSpaceAndCase(input) {
- return input.trim().replace(/[,.?¿!‽¡;:]/g, '')
- .replace(/\s\s+/g, ' ')
- .toLowerCase();
- }
- function getAccessibleChildText(node, elementType) {
- var ariaLabel = (0, _jsxAstUtils.getLiteralPropValue)((0, _jsxAstUtils.getProp)(node.openingElement.attributes, 'aria-label'));
-
- if (ariaLabel) return standardizeSpaceAndCase(ariaLabel);
-
- var altTag = (0, _jsxAstUtils.getLiteralPropValue)((0, _jsxAstUtils.getProp)(node.openingElement.attributes, 'alt'));
- if (elementType(node.openingElement) === 'img' && altTag) return standardizeSpaceAndCase(altTag);
-
- if ((0, _isHiddenFromScreenReader["default"])(elementType(node.openingElement), node.openingElement.attributes)) {
- return '';
- }
- var rawChildText = node.children.map(function (currentNode) {
-
- if (currentNode.type === 'Literal' || currentNode.type === 'JSXText') {
- return String(currentNode.value);
- }
- if (currentNode.type === 'JSXElement') {
- return getAccessibleChildText(currentNode, elementType);
- }
- return '';
- }).join(' ');
- return standardizeSpaceAndCase(rawChildText);
- }
- module.exports = exports.default;
|