UNPKG

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