@mui/x-tree-view
Version:
The community edition of the MUI X Tree View components.
60 lines (59 loc) • 1.87 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useExtractPluginParamsFromProps = void 0;
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var React = _interopRequireWildcard(require("react"));
const _excluded = ["apiRef"];
const useExtractPluginParamsFromProps = _ref => {
let {
props: {
apiRef
},
plugins
} = _ref,
props = (0, _objectWithoutPropertiesLoose2.default)(_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
};
};
exports.useExtractPluginParamsFromProps = useExtractPluginParamsFromProps;