UNPKG

2.26 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = TabContext;
9exports.useTabContext = useTabContext;
10exports.getPanelId = getPanelId;
11exports.getTabId = getTabId;
12
13var React = _interopRequireWildcard(require("react"));
14
15var PropTypes = _interopRequireWildcard(require("prop-types"));
16
17/**
18 * @type {React.Context<{ idPrefix: string; value: string } | null>}
19 */
20var Context = React.createContext(null);
21
22if (process.env.NODE_ENV !== 'production') {
23 Context.displayName = 'TabContext';
24}
25
26function useUniquePrefix() {
27 var _React$useState = React.useState(null),
28 id = _React$useState[0],
29 setId = _React$useState[1];
30
31 React.useEffect(function () {
32 setId("mui-p-".concat(Math.round(Math.random() * 1e5)));
33 }, []);
34 return id;
35}
36
37function TabContext(props) {
38 var children = props.children,
39 value = props.value;
40 var idPrefix = useUniquePrefix();
41 var context = React.useMemo(function () {
42 return {
43 idPrefix: idPrefix,
44 value: value
45 };
46 }, [idPrefix, value]);
47 return /*#__PURE__*/React.createElement(Context.Provider, {
48 value: context
49 }, children);
50}
51
52process.env.NODE_ENV !== "production" ? TabContext.propTypes = {
53 // ----------------------------- Warning --------------------------------
54 // | These PropTypes are generated from the TypeScript type definitions |
55 // | To update them edit the d.ts file and run "yarn proptypes" |
56 // ----------------------------------------------------------------------
57
58 /**
59 * The content of the component.
60 */
61 children: PropTypes.node,
62
63 /**
64 * The value of the currently selected `Tab`.
65 */
66 value: PropTypes.string.isRequired
67} : void 0;
68/**
69 * @returns {unknown}
70 */
71
72function useTabContext() {
73 return React.useContext(Context);
74}
75
76function getPanelId(context, value) {
77 var idPrefix = context.idPrefix;
78
79 if (idPrefix === null) {
80 return null;
81 }
82
83 return "".concat(context.idPrefix, "-P-").concat(value);
84}
85
86function getTabId(context, value) {
87 var idPrefix = context.idPrefix;
88
89 if (idPrefix === null) {
90 return null;
91 }
92
93 return "".concat(context.idPrefix, "-T-").concat(value);
94}
\No newline at end of file