UNPKG

@react-spectrum/s2

Version:
658 lines (641 loc) 28.5 kB
import "./Tabs.css"; import {centerBaseline as $1f4b04be3f24aae3$export$9d7e2342a7e53afa} from "./CenterBaseline.mjs"; import {IconContext as $ac8c32e6775ddd1f$export$a49f528ae1a4d0ed} from "../icons/Icon.mjs"; import {Picker as $0067ea932a992b6a$export$ba25329847403e11, PickerItem as $0067ea932a992b6a$export$d601881f38163e28} from "./TabsPicker.mjs"; import {Text as $8e847109a6ab556d$export$5f1af8db9871e1d6, TextContext as $8e847109a6ab556d$export$9afb8bc826b033ea} from "./Content.mjs"; import {useSpectrumContextProps as $5ce63c423902f47d$export$764f6146fadd77f7} from "../icons/useSpectrumContextProps.mjs"; import {jsx as $8bRfI$jsx, jsxs as $8bRfI$jsxs, Fragment as $8bRfI$Fragment} from "react/jsx-runtime"; import {createContext as $8bRfI$createContext, forwardRef as $8bRfI$forwardRef, useContext as $8bRfI$useContext, useState as $8bRfI$useState, useRef as $8bRfI$useRef, useEffect as $8bRfI$useEffect, useCallback as $8bRfI$useCallback, useMemo as $8bRfI$useMemo, createElement as $8bRfI$createElement} from "react"; import {Provider as $8bRfI$Provider, TabListStateContext as $8bRfI$TabListStateContext, TabList as $8bRfI$TabList, Tab as $8bRfI$Tab, TabPanel as $8bRfI$TabPanel, Group as $8bRfI$Group, Tabs as $8bRfI$Tabs} from "react-aria-components"; import {CollectionBuilder as $8bRfI$CollectionBuilder} from "@react-aria/collections"; import {useLayoutEffect as $8bRfI$useLayoutEffect, useId as $8bRfI$useId, inertValue as $8bRfI$inertValue, useLabels as $8bRfI$useLabels, useEffectEvent as $8bRfI$useEffectEvent, useResizeObserver as $8bRfI$useResizeObserver} from "@react-aria/utils"; import {useControlledState as $8bRfI$useControlledState} from "@react-stately/utils"; import {useDOMRef as $8bRfI$useDOMRef} from "@react-spectrum/utils"; import {useHasTabbableChild as $8bRfI$useHasTabbableChild} from "@react-aria/focus"; import {useLocale as $8bRfI$useLocale} from "@react-aria/i18n"; /* * Copyright 2024 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ const $79e2b4a1b34d1592$export$cfa7aa87c26e7d1f = /*#__PURE__*/ (0, $8bRfI$createContext)(null); const $79e2b4a1b34d1592$var$InternalTabsContext = /*#__PURE__*/ (0, $8bRfI$createContext)({}); const $79e2b4a1b34d1592$var$CollapseContext = /*#__PURE__*/ (0, $8bRfI$createContext)({ showTabs: true, menuId: '', valueId: '' }); const $79e2b4a1b34d1592$var$tabs = function anonymous(props, overrides) { let rules = " "; let position = false; let flexShrink = false; let matches = (overrides || '').matchAll(/(?:^|\s)(J|G|I|H|_u|_v|_s|__A|_d|_J|z|y|B|A|_P|_9|W|_l|_A|_z|Z|N|L|F|M|K)[^\s]+/g); for (let p of matches){ if (p[1] === "_P") position = true; if (p[1] === "_v") flexShrink = true; rules += p[0]; } if (!position) rules += ' _Pc91'; rules += ' sd91'; if (!flexShrink) rules += ' _va91'; rules += ' ug91'; rules += ' uch91'; rules += ' udi91'; rules += ' uea91'; rules += ' ugb91'; rules += ' uhd91'; rules += ' uje91'; rules += ' uic91'; rules += ' vd91'; rules += ' vsf91'; rules += ' wb91'; rules += ' xb91'; rules += ' _xa91'; rules += ' _Fa91'; rules += ' _Ffb91'; rules += ' pt91'; if (props.orientation === "horizontal") rules += ' _ta91'; return rules; }; const $79e2b4a1b34d1592$export$b2539bed5023c21c = /*#__PURE__*/ (0, $8bRfI$forwardRef)(function Tabs(props, ref) { [props, ref] = (0, $5ce63c423902f47d$export$764f6146fadd77f7)(props, ref, $79e2b4a1b34d1592$export$cfa7aa87c26e7d1f); let { density: density = 'regular', isDisabled: isDisabled, disabledKeys: disabledKeys, orientation: orientation = 'horizontal', labelBehavior: labelBehavior = 'show' } = props; let domRef = (0, $8bRfI$useDOMRef)(ref); let [value, setValue] = (0, $8bRfI$useControlledState)(props.selectedKey, props.defaultSelectedKey ?? null, props.onSelectionChange); if (!props['aria-label'] && !props['aria-labelledby']) throw new Error('An aria-label or aria-labelledby prop is required on Tabs for accessibility.'); return /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$Provider), { values: [ [ $79e2b4a1b34d1592$var$InternalTabsContext, { density: density, isDisabled: isDisabled, orientation: orientation, disabledKeys: disabledKeys, selectedKey: value, onSelectionChange: setValue, labelBehavior: labelBehavior, 'aria-label': props['aria-label'], 'aria-labelledby': props['aria-labelledby'] } ] ], children: /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$CollectionBuilder), { content: props.children, children: (collection)=>/*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$CollapsingTabs, { ...props, selectedKey: value, onSelectionChange: setValue, collection: collection, containerRef: domRef }) }) }); }); const $79e2b4a1b34d1592$var$tablist = function anonymous(props) { let rules = " "; rules += ' sd91'; if (props.orientation === "horizontal") { if (props.labelBehavior === "hide") { if (props.density === "regular") rules += ' Uj91'; else if (props.density === "compact") rules += ' Ul91'; } else if (props.density === "regular") rules += ' Up91'; else if (props.density === "compact") rules += ' Uj91'; } if (props.orientation === "horizontal") { if (props.labelBehavior === "hide") { if (props.density === "regular") rules += ' qj91'; else if (props.density === "compact") rules += ' ql91'; } else if (props.density === "regular") rules += ' qp91'; else if (props.density === "compact") rules += ' qj91'; } if (props.orientation === "vertical") rules += ' _ta91'; if (props.orientation === "vertical") rules += ' Hz91'; if (props.orientation === "vertical") rules += ' Ix91'; rules += ' _va91'; rules += ' _sa91'; return rules; }; function $79e2b4a1b34d1592$export$e51a686c67fdaa2d(props) { let { showTabs: showTabs } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$CollapseContext) ?? {}; if (showTabs) return /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$TabListInner, { ...props }); return null; } function $79e2b4a1b34d1592$var$TabListInner(props1) { let { density: density, isDisabled: isDisabled, disabledKeys: disabledKeys, orientation: orientation, labelBehavior: labelBehavior, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$InternalTabsContext) ?? {}; let state = (0, $8bRfI$useContext)((0, $8bRfI$TabListStateContext)); let [selectedTab, setSelectedTab] = (0, $8bRfI$useState)(undefined); let tablistRef = (0, $8bRfI$useRef)(null); (0, $8bRfI$useLayoutEffect)(()=>{ if (tablistRef?.current) { let tab = tablistRef.current.querySelector('[role=tab][data-selected=true]'); if (tab != null) setSelectedTab(tab); } }, [ tablistRef, state?.selectedItem?.key ]); return /*#__PURE__*/ (0, $8bRfI$jsxs)("div", { style: props1.UNSAFE_style, className: (props1.UNSAFE_className || '') + function anonymous(props, overrides) { let rules = " "; let position = false; let matches = (overrides || '').matchAll(/(?:^|\s)(J|G|I|H|_u|_v|_s|__A|_d|_J|z|y|B|A|_P|_9|W|_l|_A|_z|Z|N|L)[^\s]+/g); for (let p of matches){ if (p[1] === "_P") position = true; rules += p[0]; } if (!position) rules += ' _Pc91'; return rules; }(null, props1.styles), children: [ orientation === 'vertical' && /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$TabLine, { disabledKeys: disabledKeys, isDisabled: isDisabled, selectedTab: selectedTab, orientation: orientation, tabList: props1, density: density }), /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$TabList), { ...props1, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ref: tablistRef, className: (renderProps)=>$79e2b4a1b34d1592$var$tablist({ ...renderProps, labelBehavior: labelBehavior, density: density }) }), orientation === 'horizontal' && /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$TabLine, { disabledKeys: disabledKeys, isDisabled: isDisabled, selectedTab: selectedTab, orientation: orientation, tabList: props1, density: density }) ] }); } const $79e2b4a1b34d1592$var$selectedIndicator = function anonymous(props) { let rules = " "; rules += ' _Pa91'; if (props.isDisabled) rules += ' gH91'; else rules += ' g091'; if (props.isDisabled) rules += ' gld91'; else rules += ' gle91'; if (props.orientation === "horizontal") rules += ' FLvNfn91'; if (props.orientation === "vertical") rules += ' ZLvNfn91'; if (props.orientation === "horizontal") rules += ' _lr91'; rules += ' _je91'; rules += ' og91'; rules += ' ng91'; rules += ' kg91'; rules += ' jg91'; rules += ' Xa91'; rules += ' _2b91'; return rules; }; function $79e2b4a1b34d1592$var$TabLine(props) { let { disabledKeys: disabledKeys, isDisabled: isTabsDisabled, selectedTab: selectedTab, orientation: orientation, tabList: tabList, density: density } = props; let { direction: direction } = (0, $8bRfI$useLocale)(); let state = (0, $8bRfI$useContext)((0, $8bRfI$TabListStateContext)); // We want to add disabled styling to the selection indicator only if all the Tabs are disabled let [isDisabled, setIsDisabled] = (0, $8bRfI$useState)(false); (0, $8bRfI$useEffect)(()=>{ let isDisabled = isTabsDisabled || $79e2b4a1b34d1592$var$isAllTabsDisabled(state?.collection, disabledKeys ? new Set(disabledKeys) : new Set(null)); setIsDisabled(isDisabled); }, [ state?.collection, disabledKeys, isTabsDisabled, setIsDisabled ]); let [style, setStyle] = (0, $8bRfI$useState)({ transform: undefined, width: undefined, height: undefined }); let onResize = (0, $8bRfI$useCallback)(()=>{ if (selectedTab) { let styleObj = { transform: undefined, width: undefined, height: undefined }; // In RTL, calculate the transform from the right edge of the tablist so that resizing the window doesn't break the Tabline position due to offsetLeft changes let offset = direction === 'rtl' ? -1 * (selectedTab.offsetParent?.offsetWidth - selectedTab.offsetWidth - selectedTab.offsetLeft) : selectedTab.offsetLeft; styleObj.transform = orientation === 'vertical' ? `translateY(${selectedTab.offsetTop}px)` : `translateX(${offset}px)`; if (orientation === 'horizontal') styleObj.width = `${selectedTab.offsetWidth}px`; else styleObj.height = `${selectedTab.offsetHeight}px`; setStyle(styleObj); } }, [ direction, setStyle, selectedTab, orientation ]); (0, $8bRfI$useLayoutEffect)(()=>{ onResize(); }, [ onResize, state?.selectedItem?.key, density, direction, orientation, tabList ]); return /*#__PURE__*/ (0, $8bRfI$jsx)("div", { style: { ...style }, className: $79e2b4a1b34d1592$var$selectedIndicator({ isDisabled: isDisabled, orientation: orientation }) }); } const $79e2b4a1b34d1592$var$tab = function anonymous(props, overrides) { let rules = " "; let position = false; let flexShrink = false; let matches = (overrides || '').matchAll(/(?:^|\s)(J|G|I|H|_u|_v|_s|__A|_d|_J|z|y|B|A|_P|_9|W|_l|_A|_z|Z|N|L)[^\s]+/g); for (let p of matches){ if (p[1] === "_P") position = true; if (p[1] === "_v") flexShrink = true; rules += p[0]; } if (props.isFocusVisible) rules += ' _Lf91'; else rules += ' _Le91'; rules += ' Oh91'; rules += ' _Mc91'; rules += ' _Kd91'; rules += ' sd91'; if (props.isDisabled) rules += ' pp91'; else if (props.isSelected) { if (props.isPressed) rules += ' po91'; else if (props.isFocusVisible) rules += ' po91'; else if (props.isHovered) rules += ' po91'; else rules += ' pt91'; } else { if (props.isPressed) rules += ' pt91'; else if (props.isFocusVisible) rules += ' pt91'; else if (props.isHovered) rules += ' pt91'; else rules += ' pv91'; } if (props.isDisabled) rules += ' plc91'; else if (props.isSelected) rules += ' pld91'; rules += ' oa91'; rules += ' na91'; rules += ' ka91'; rules += ' ja91'; rules += ' Uc91'; rules += ' Usd91'; rules += ' qc91'; rules += ' qsd91'; if (props.density === "regular") rules += ' Fz91'; else if (props.density === "compact") rules += ' Fx91'; rules += ' eb91'; if (!position) rules += ' _Pc91'; rules += ' ri91'; if (!flexShrink) rules += ' _va91'; rules += ' Yd91'; rules += ' Xb91'; rules += ' _2b91'; if (props.labelBehavior === "hide") rules += ' SssxDec91'; if (props.labelBehavior === "hide") rules += ' RssxDec91'; rules += ' __ca91'; return rules; }; const $79e2b4a1b34d1592$var$icon = " sb91 _va91 -_8sjo0b-t5ZbAob91"; function $79e2b4a1b34d1592$export$3e41faf802a29e71(props1) { let { density: density, labelBehavior: labelBehavior } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$InternalTabsContext) ?? {}; let contentId = (0, $8bRfI$useId)(); let ariaLabelledBy = props1['aria-labelledby'] || ''; return /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$Tab), { ...props1, // @ts-ignore originalProps: props1, "aria-labelledby": `${labelBehavior === 'hide' ? contentId : ''} ${ariaLabelledBy}`, style: props1.UNSAFE_style, className: (renderProps)=>(props1.UNSAFE_className || '') + $79e2b4a1b34d1592$var$tab({ ...renderProps, density: density, labelBehavior: labelBehavior }, props1.styles), children: ({ isMenu: // @ts-ignore isMenu })=>{ if (isMenu) return props1.children; else return /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$Provider), { values: [ [ (0, $8e847109a6ab556d$export$9afb8bc826b033ea), { id: contentId, styles: function anonymous(props) { let rules = " "; rules += ' _Jb91'; if (props.labelBehavior === "hide") rules += ' sk91'; return rules; }({ labelBehavior: labelBehavior }) } ], [ (0, $ac8c32e6775ddd1f$export$a49f528ae1a4d0ed), { render: (0, $1f4b04be3f24aae3$export$9d7e2342a7e53afa)({ slot: 'icon', styles: " _Ja91" }), styles: $79e2b4a1b34d1592$var$icon } ] ], children: typeof props1.children === 'string' ? /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8e847109a6ab556d$export$5f1af8db9871e1d6), { children: props1.children }) : props1.children }); } }); } const $79e2b4a1b34d1592$var$tabPanel = function anonymous(props, overrides) { let rules = " "; let marginTop = false; let flexGrow = false; let flexBasis = false; let minHeight = false; let minWidth = false; let matches = (overrides || '').matchAll(/(?:^|\s)(J|G|I|H|_u|_v|_s|__A|_d|_J|z|y|B|A|_P|_9|W|_l|_A|_z|Z|N|L|F|M|K)[^\s]+/g); for (let p of matches){ if (p[1] === "J") marginTop = true; if (p[1] === "_u") flexGrow = true; if (p[1] === "_s") flexBasis = true; if (p[1] === "M") minHeight = true; if (p[1] === "N") minWidth = true; rules += p[0]; } if (props.isFocusVisible) rules += ' _Lf91'; else rules += ' _Le91'; rules += ' Oh91'; rules += ' _Mc91'; rules += ' _Kd91'; if (!marginTop) rules += ' Js91'; rules += ' pt91'; if (!flexGrow) rules += ' _ub91'; if (!flexBasis) rules += ' _sa91'; if (!minHeight) rules += ' Ma91'; if (!minWidth) rules += ' Na91'; return rules; }; function $79e2b4a1b34d1592$export$3d96ec278d3efce4(props) { let { showTabs: showTabs } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$CollapseContext); let { selectedKey: selectedKey } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$InternalTabsContext); if (showTabs) return /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$TabPanel), { ...props, style: props.UNSAFE_style, className: (renderProps)=>(props.UNSAFE_className ?? '') + $79e2b4a1b34d1592$var$tabPanel(renderProps, props.styles) }); if (props.id !== selectedKey) return null; return /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$CollapsedTabPanel, { ...props }); } function $79e2b4a1b34d1592$var$CollapsedTabPanel(props) { let { UNSAFE_style: UNSAFE_style, UNSAFE_className: UNSAFE_className = '', ...otherProps } = props; let { menuId: menuId, valueId: valueId } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$CollapseContext); let ref = (0, $8bRfI$useRef)(null); let tabIndex = (0, $8bRfI$useHasTabbableChild)(ref) ? undefined : 0; return /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$Group), { ...otherProps, ref: ref, "aria-labelledby": menuId + ' ' + valueId, tabIndex: tabIndex, style: UNSAFE_style, className: (renderProps)=>UNSAFE_className + $79e2b4a1b34d1592$var$tabPanel(renderProps, props.styles) }); } function $79e2b4a1b34d1592$var$isAllTabsDisabled(collection, disabledKeys) { let testKey = null; if (collection && collection.size > 0) { testKey = collection.getFirstKey(); let index = 0; while(testKey && index < collection.size){ // We have to check if the item in the collection has a key in disabledKeys or has the isDisabled prop set directly on it if (!disabledKeys.has(testKey) && !collection.getItem(testKey)?.props?.isDisabled) return false; testKey = collection.getKeyAfter(testKey); index++; } return true; } return false; } let $79e2b4a1b34d1592$var$HiddenTabs = function(props) { let { listRef: listRef, items: items, size: size, density: density } = props; return /*#__PURE__*/ (0, $8bRfI$jsx)("div", { // @ts-ignore inert: (0, $8bRfI$inertValue)(true), ref: listRef, className: " s40ub4c91 _t40ub4c91 U40ub4c91 q40ub4c91 _w40ub4c91 _Pa91 Wr91 _lr91 _Ar91 _zr91 _6b91 _Nc91 Pc91 _Ia91", children: items.map((item)=>{ // pull off individual props as an allow list, don't want refs or other props getting through return /*#__PURE__*/ (0, $8bRfI$jsx)("div", { "data-hidden-tab": true, style: item.props.UNSAFE_style, className: item.props.className({ size: size, density: density }), children: item.props.children({ size: size, density: density }) }, item.key); }) }); }; let $79e2b4a1b34d1592$var$TabsMenu = (props1)=>{ let { id: id, items: items, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, valueId: valueId } = props1; let { density: density, onSelectionChange: _onSelectionChange, selectedKey: selectedKey, isDisabled: isDisabled, disabledKeys: disabledKeys, labelBehavior: labelBehavior } = (0, $8bRfI$useContext)($79e2b4a1b34d1592$var$InternalTabsContext); let onSelectionChange = (0, $8bRfI$useCallback)((key)=>{ if (key != null) _onSelectionChange?.(key); }, [ _onSelectionChange ]); let state = (0, $8bRfI$useContext)((0, $8bRfI$TabListStateContext)); let allKeysDisabled = (0, $8bRfI$useMemo)(()=>{ return $79e2b4a1b34d1592$var$isAllTabsDisabled(state?.collection, disabledKeys ? new Set(disabledKeys) : new Set()); }, [ state?.collection, disabledKeys ]); let labelProps = (0, $8bRfI$useLabels)({ id: id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }); return /*#__PURE__*/ (0, $8bRfI$jsx)("div", { className: function anonymous(props) { let rules = " "; rules += ' sd91'; rules += ' _va91'; rules += ' eb91'; if (props.density === "regular") rules += ' Fz91'; else if (props.density === "compact") rules += ' Fx91'; return rules; }({ density: density }), children: /*#__PURE__*/ (0, $8bRfI$jsx)((0, $0067ea932a992b6a$export$ba25329847403e11), { id: id, valueId: valueId, ...labelProps, "aria-describedby": props1['aria-describedby'], "aria-details": props1['aria-details'], isDisabled: isDisabled || allKeysDisabled, density: density, labelBehavior: labelBehavior, items: items, disabledKeys: disabledKeys, selectedKey: selectedKey, onSelectionChange: onSelectionChange, children: (item)=>{ return /*#__PURE__*/ (0, $8bRfI$createElement)((0, $0067ea932a992b6a$export$d601881f38163e28), { ...item.props.originalProps, isDisabled: isDisabled || allKeysDisabled, key: item.key }, item.props.children({ density: density, isMenu: true })); } }) }); }; let $79e2b4a1b34d1592$var$CollapsingTabs = ({ collection: collection, containerRef: containerRef, ...props })=>{ let { density: density = 'regular', orientation: orientation = 'horizontal', labelBehavior: labelBehavior = 'show', onSelectionChange: onSelectionChange } = props; let [showItems, _setShowItems] = (0, $8bRfI$useState)(true); showItems = orientation === 'vertical' ? true : showItems; let setShowItems = (0, $8bRfI$useCallback)((value)=>{ if (orientation === 'vertical') // if orientation is vertical, we always show the items _setShowItems(true); else _setShowItems(value); }, [ orientation ]); let { direction: direction } = (0, $8bRfI$useLocale)(); let children = (0, $8bRfI$useMemo)(()=>[ ...collection ], [ collection ]); let listRef = (0, $8bRfI$useRef)(null); let updateOverflow = (0, $8bRfI$useEffectEvent)(()=>{ if (orientation === 'vertical' || !listRef.current || !containerRef?.current) return; let container = listRef.current; let containerRect = container.getBoundingClientRect(); let tabs = container.querySelectorAll('[data-hidden-tab]'); let lastTab = tabs[tabs.length - 1]; let lastTabRect = lastTab.getBoundingClientRect(); if (direction === 'ltr') setShowItems?.(lastTabRect.right <= containerRect.right); else setShowItems?.(lastTabRect.left >= containerRect.left); }); (0, $8bRfI$useResizeObserver)({ ref: containerRef, onResize: updateOverflow }); (0, $8bRfI$useLayoutEffect)(()=>{ if (collection.size > 0) queueMicrotask(updateOverflow); }, [ collection.size, updateOverflow ]); // start with null so that the first render won't have a flicker let prevOrientation = (0, $8bRfI$useRef)(null); (0, $8bRfI$useLayoutEffect)(()=>{ if (collection.size > 0 && prevOrientation.current !== orientation) updateOverflow(); prevOrientation.current = orientation; }, [ collection.size, updateOverflow, orientation ]); (0, $8bRfI$useEffect)(()=>{ // Recalculate visible tags when fonts are loaded. document.fonts?.ready.then(()=>updateOverflow()); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); let menuId = (0, $8bRfI$useId)(); let valueId = (0, $8bRfI$useId)(); let contents; if (showItems) contents = /*#__PURE__*/ (0, $8bRfI$jsx)((0, $8bRfI$Tabs), { ...props, style: { display: 'contents' }, children: props.children }); else contents = /*#__PURE__*/ (0, $8bRfI$jsxs)((0, $8bRfI$Fragment), { children: [ /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$TabsMenu, { id: menuId, valueId: valueId, items: children, onSelectionChange: onSelectionChange, "aria-label": props['aria-label'], "aria-describedby": props['aria-labelledby'] }), /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$CollapseContext.Provider, { value: { showTabs: false, menuId: menuId, valueId: valueId }, children: props.children }) ] }); return /*#__PURE__*/ (0, $8bRfI$jsxs)("div", { style: props.UNSAFE_style, className: (props.UNSAFE_className || '') + $79e2b4a1b34d1592$var$tabs({ orientation: orientation }, props.styles), ref: containerRef, children: [ /*#__PURE__*/ (0, $8bRfI$jsx)("div", { className: $79e2b4a1b34d1592$var$tablist({ orientation: orientation, labelBehavior: labelBehavior, density: density }), children: /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$HiddenTabs, { items: children, density: density, listRef: listRef }) }), /*#__PURE__*/ (0, $8bRfI$jsx)($79e2b4a1b34d1592$var$CollapseContext.Provider, { value: { showTabs: true, menuId: menuId, valueId: valueId }, children: contents }) ] }); }; export {$79e2b4a1b34d1592$export$cfa7aa87c26e7d1f as TabsContext, $79e2b4a1b34d1592$export$b2539bed5023c21c as Tabs, $79e2b4a1b34d1592$export$e51a686c67fdaa2d as TabList, $79e2b4a1b34d1592$export$3e41faf802a29e71 as Tab, $79e2b4a1b34d1592$export$3d96ec278d3efce4 as TabPanel}; //# sourceMappingURL=Tabs.mjs.map