UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

28 lines (26 loc) • 1.04 kB
'use client'; import _extends from "@babel/runtime/helpers/esm/extends"; import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect'; import { useOnMount } from '@base-ui/utils/useOnMount'; import { useDisposable } from '@mui/x-internals/useDisposable'; import { useRtl } from '@mui/system/RtlProvider'; import useId from '@mui/utils/useId'; /** * Creates a Tree View store and keep it in sync with the provided parameters. */ export function useTreeViewStore(StoreClass, parameters) { const isRtl = useRtl(); const defaultId = useId(); const store = useDisposable(() => new StoreClass(_extends({}, parameters, { isRtl, defaultId }))); useIsoLayoutEffect(() => store.updateStateFromParameters(_extends({}, parameters, { isRtl, defaultId })), [store, isRtl, defaultId, parameters]); // Mount-time side effects (e.g. kicking off lazy-loading fetches). The store is // created during render by `useDisposable`, so these can't run in the factory. useOnMount(store.mountEffect); return store; }