UNPKG

@ariakit/react-core

Version:

Ariakit React core

50 lines (47 loc) 1.42 kB
"use client"; import { useSelectContext } from "./QI6TYHPV.js"; import { useCompositeStoreProps } from "./VEHC2EHR.js"; import { useComboboxContext } from "./7P7IWEBR.js"; import { useStore, useStoreProps } from "./Q3KUZPD7.js"; import { useUpdateEffect } from "./K2XTQB3X.js"; // src/tab/tab-store.ts import * as Core from "@ariakit/core/tab/tab-store"; import { useMemo } from "react"; function useTabStoreProps(store, update, props) { useUpdateEffect(update, [props.composite, props.combobox]); store = useCompositeStoreProps(store, update, props); useStoreProps(store, props, "selectedId", "setSelectedId"); useStoreProps(store, props, "selectOnMove"); const [panels, updatePanels] = useStore(() => store.panels, {}); useUpdateEffect(updatePanels, [store, updatePanels]); return Object.assign( useMemo(() => ({ ...store, panels }), [store, panels]), { composite: props.composite, combobox: props.combobox } ); } function useTabStore(props = {}) { const combobox = useComboboxContext(); const composite = useSelectContext() || combobox; props = { ...props, composite: props.composite !== void 0 ? props.composite : composite, combobox: props.combobox !== void 0 ? props.combobox : combobox }; const [store, update] = useStore(Core.createTabStore, props); return useTabStoreProps(store, update, props); } export { useTabStoreProps, useTabStore };