@mui/x-tree-view
Version:
The community edition of the MUI X Tree View components.
24 lines (22 loc) • 932 B
JavaScript
'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';
/**
* Creates a Tree View store and keep it in sync with the provided parameters.
*/
export function useTreeViewStore(StoreClass, parameters) {
const isRtl = useRtl();
const store = useDisposable(() => new StoreClass(_extends({}, parameters, {
isRtl
})));
useIsoLayoutEffect(() => store.updateStateFromParameters(_extends({}, parameters, {
isRtl
})), [store, isRtl, 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;
}