UNPKG

braid-design-system

Version:
46 lines (45 loc) 1.82 kB
"use strict"; const jsxRuntime = require("react/jsx-runtime"); const assert = require("assert"); const react = require("react"); const lib_utils_flattenChildren_cjs = require("../../utils/flattenChildren.cjs"); const lib_components_Tabs_TabPanelsContext_cjs = require("./TabPanelsContext.cjs"); const lib_components_Tabs_Tabs_actions_cjs = require("./Tabs.actions.cjs"); const lib_components_Tabs_TabsProvider_cjs = require("./TabsProvider.cjs"); const _interopDefaultCompat = (e) => e && typeof e === "object" && "default" in e ? e : { default: e }; const assert__default = /* @__PURE__ */ _interopDefaultCompat(assert); const TabPanels = ({ renderInactivePanels = false, children }) => { const tabsContext = react.useContext(lib_components_Tabs_TabsProvider_cjs.TabsContext); if (!tabsContext) { throw new Error("TabPanels rendered outside TabsProvider context"); } const { dispatch } = tabsContext; const panelItems = []; const panels = lib_utils_flattenChildren_cjs.flattenChildren(children).map((panel, index) => { assert__default.default( // @ts-expect-error typeof panel === "object" && panel.type.__isTabPanel__, "Only TabPanel elements can be direct children of a TabPanels" ); panelItems.push(index); return /* @__PURE__ */ jsxRuntime.jsx( lib_components_Tabs_TabPanelsContext_cjs.TabPanelsContext.Provider, { value: { renderInactive: renderInactivePanels, panelIndex: index }, children: panel }, index ); }); react.useEffect(() => { dispatch({ type: lib_components_Tabs_Tabs_actions_cjs.TAB_PANELS_UPDATED, panels: panelItems }); }, [panelItems.join(), dispatch]); return /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: panels }); }; exports.TabPanels = TabPanels;