@mui/x-tree-view
Version:
The community edition of the MUI X Tree View components.
51 lines • 1.43 kB
JavaScript
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
const _excluded = ["apiRef"];
import * as React from 'react';
export const useExtractPluginParamsFromProps = _ref => {
let {
props: {
apiRef
},
plugins
} = _ref,
props = _objectWithoutPropertiesLoose(_ref.props, _excluded);
const paramsLookup = React.useMemo(() => {
const tempParamsLookup = {};
plugins.forEach(plugin => {
Object.assign(tempParamsLookup, plugin.params);
});
return tempParamsLookup;
}, [plugins]);
const {
forwardedProps,
pluginParams
} = React.useMemo(() => {
const tempPluginParams = {};
const tempForwardedProps = {};
Object.keys(props).forEach(propName => {
const prop = props[propName];
if (paramsLookup[propName]) {
tempPluginParams[propName] = prop;
} else {
tempForwardedProps[propName] = prop;
}
});
const pluginParamsWithDefaults = plugins.reduce((acc, plugin) => {
if (plugin.applyDefaultValuesToParams) {
return plugin.applyDefaultValuesToParams({
params: acc
});
}
return acc;
}, tempPluginParams);
return {
forwardedProps: tempForwardedProps,
pluginParams: pluginParamsWithDefaults
};
}, [plugins, props, paramsLookup]);
return {
forwardedProps,
pluginParams,
apiRef
};
};