@mui/x-tree-view
Version:
The community edition of the MUI X Tree View components.
30 lines (28 loc) • 1.28 kB
JavaScript
;
'use client';
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useTreeViewStore = useTreeViewStore;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
var _useOnMount = require("@base-ui/utils/useOnMount");
var _useDisposable = require("@mui/x-internals/useDisposable");
var _RtlProvider = require("@mui/system/RtlProvider");
/**
* Creates a Tree View store and keep it in sync with the provided parameters.
*/
function useTreeViewStore(StoreClass, parameters) {
const isRtl = (0, _RtlProvider.useRtl)();
const store = (0, _useDisposable.useDisposable)(() => new StoreClass((0, _extends2.default)({}, parameters, {
isRtl
})));
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => store.updateStateFromParameters((0, _extends2.default)({}, 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.
(0, _useOnMount.useOnMount)(store.mountEffect);
return store;
}