UNPKG

2.15 kBJavaScriptView Raw
1import { forwardRef, createElement } from 'react';
2import PropTypes from 'prop-types';
3
4function _extends() {
5 _extends = Object.assign || function (target) {
6 for (var i = 1; i < arguments.length; i++) {
7 var source = arguments[i];
8
9 for (var key in source) {
10 if (Object.prototype.hasOwnProperty.call(source, key)) {
11 target[key] = source[key];
12 }
13 }
14 }
15
16 return target;
17 };
18
19 return _extends.apply(this, arguments);
20}
21
22function _objectWithoutPropertiesLoose(source, excluded) {
23 if (source == null) return {};
24 var target = {};
25 var sourceKeys = Object.keys(source);
26 var key, i;
27
28 for (i = 0; i < sourceKeys.length; i++) {
29 key = sourceKeys[i];
30 if (excluded.indexOf(key) >= 0) continue;
31 target[key] = source[key];
32 }
33
34 return target;
35}
36
37var _excluded = ["as", "style"];
38
39/**
40 * VisuallyHidden
41 *
42 * Provides text for screen readers that is visually hidden.
43 * It is the logical opposite of the `aria-hidden` attribute.
44 */
45var VisuallyHidden = /*#__PURE__*/forwardRef(function VisuallyHidden(_ref, ref) {
46 var _ref$as = _ref.as,
47 Comp = _ref$as === void 0 ? "span" : _ref$as,
48 _ref$style = _ref.style,
49 style = _ref$style === void 0 ? {} : _ref$style,
50 props = _objectWithoutPropertiesLoose(_ref, _excluded);
51
52 return /*#__PURE__*/createElement(Comp, _extends({
53 ref: ref,
54 style: _extends({
55 border: 0,
56 clip: "rect(0 0 0 0)",
57 height: "1px",
58 margin: "-1px",
59 overflow: "hidden",
60 padding: 0,
61 position: "absolute",
62 width: "1px",
63 // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
64 whiteSpace: "nowrap",
65 wordWrap: "normal"
66 }, style)
67 }, props));
68});
69/**
70 * @see Docs https://reach.tech/visually-hidden#visuallyhidden-props
71 */
72
73if (process.env.NODE_ENV !== "production") {
74 VisuallyHidden.displayName = "VisuallyHidden";
75 VisuallyHidden.propTypes = {
76 as: PropTypes.any,
77 children: PropTypes.node
78 };
79} ////////////////////////////////////////////////////////////////////////////////
80
81export default VisuallyHidden;
82export { VisuallyHidden };