1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | Object.defineProperty(exports, "__esModule", {
|
5 | value: true
|
6 | });
|
7 | exports.default = void 0;
|
8 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9 | var React = _interopRequireWildcard(require("react"));
|
10 | var _Tabs = require("../Tabs");
|
11 | var _useTabsList = require("./useTabsList.types");
|
12 | var _useCompound = require("../utils/useCompound");
|
13 | var _useList = _interopRequireDefault(require("../useList"));
|
14 | var _tabsListReducer = _interopRequireDefault(require("./tabsListReducer"));
|
15 | function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
16 | function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | function useTabsList(parameters) {
|
28 | var _selectedValues$;
|
29 | const {
|
30 | rootRef: externalRef
|
31 | } = parameters;
|
32 | const {
|
33 | direction = 'ltr',
|
34 | onSelected,
|
35 | orientation = 'horizontal',
|
36 | value,
|
37 | registerTabIdLookup,
|
38 | selectionFollowsFocus
|
39 | } = (0, _Tabs.useTabsContext)();
|
40 | const {
|
41 | subitems,
|
42 | contextValue: compoundComponentContextValue
|
43 | } = (0, _useCompound.useCompoundParent)();
|
44 | const tabIdLookup = React.useCallback(tabValue => {
|
45 | var _subitems$get;
|
46 | return (_subitems$get = subitems.get(tabValue)) == null ? void 0 : _subitems$get.id;
|
47 | }, [subitems]);
|
48 | registerTabIdLookup(tabIdLookup);
|
49 | const subitemKeys = React.useMemo(() => Array.from(subitems.keys()), [subitems]);
|
50 | const getTabElement = React.useCallback(tabValue => {
|
51 | var _subitems$get$ref$cur, _subitems$get2;
|
52 | if (tabValue == null) {
|
53 | return null;
|
54 | }
|
55 | return (_subitems$get$ref$cur = (_subitems$get2 = subitems.get(tabValue)) == null ? void 0 : _subitems$get2.ref.current) != null ? _subitems$get$ref$cur : null;
|
56 | }, [subitems]);
|
57 | const isRtl = direction === 'rtl';
|
58 | let listOrientation;
|
59 | if (orientation === 'vertical') {
|
60 | listOrientation = 'vertical';
|
61 | } else {
|
62 | listOrientation = isRtl ? 'horizontal-rtl' : 'horizontal-ltr';
|
63 | }
|
64 | const handleChange = React.useCallback((event, newValue) => {
|
65 | var _newValue$;
|
66 | onSelected(event, (_newValue$ = newValue[0]) != null ? _newValue$ : null);
|
67 | }, [onSelected]);
|
68 | const controlledProps = React.useMemo(() => {
|
69 | if (value === undefined) {
|
70 | return {};
|
71 | }
|
72 | return value != null ? {
|
73 | selectedValues: [value]
|
74 | } : {
|
75 | selectedValues: []
|
76 | };
|
77 | }, [value]);
|
78 | const isItemDisabled = React.useCallback(item => {
|
79 | var _subitems$get$disable, _subitems$get3;
|
80 | return (_subitems$get$disable = (_subitems$get3 = subitems.get(item)) == null ? void 0 : _subitems$get3.disabled) != null ? _subitems$get$disable : false;
|
81 | }, [subitems]);
|
82 | const {
|
83 | contextValue: listContextValue,
|
84 | dispatch,
|
85 | getRootProps: getListboxRootProps,
|
86 | state: {
|
87 | highlightedValue,
|
88 | selectedValues
|
89 | },
|
90 | rootRef: mergedRootRef
|
91 | } = (0, _useList.default)({
|
92 | controlledProps,
|
93 | disabledItemsFocusable: !selectionFollowsFocus,
|
94 | focusManagement: 'DOM',
|
95 | getItemDomElement: getTabElement,
|
96 | isItemDisabled,
|
97 | items: subitemKeys,
|
98 | rootRef: externalRef,
|
99 | onChange: handleChange,
|
100 | orientation: listOrientation,
|
101 | reducerActionContext: React.useMemo(() => ({
|
102 | selectionFollowsFocus: selectionFollowsFocus || false
|
103 | }), [selectionFollowsFocus]),
|
104 | selectionMode: 'single',
|
105 | stateReducer: _tabsListReducer.default
|
106 | });
|
107 | React.useEffect(() => {
|
108 | if (value === undefined) {
|
109 | return;
|
110 | }
|
111 |
|
112 |
|
113 | if (value != null) {
|
114 | dispatch({
|
115 | type: _useTabsList.TabsListActionTypes.valueChange,
|
116 | value
|
117 | });
|
118 | }
|
119 | }, [dispatch, value]);
|
120 | const getRootProps = (otherHandlers = {}) => {
|
121 | return (0, _extends2.default)({}, otherHandlers, getListboxRootProps(otherHandlers), {
|
122 | 'aria-orientation': orientation === 'vertical' ? 'vertical' : undefined,
|
123 | role: 'tablist'
|
124 | });
|
125 | };
|
126 | return {
|
127 | contextValue: (0, _extends2.default)({}, compoundComponentContextValue, listContextValue),
|
128 | dispatch,
|
129 | getRootProps,
|
130 | highlightedValue,
|
131 | isRtl,
|
132 | orientation,
|
133 | rootRef: mergedRootRef,
|
134 | selectedValue: (_selectedValues$ = selectedValues[0]) != null ? _selectedValues$ : null
|
135 | };
|
136 | }
|
137 | var _default = useTabsList;
|
138 | exports.default = _default; |
\ | No newline at end of file |