FrontPastel/node_modules/@mui/base/legacy/utils/useSlotProps.js

36 lines
1.9 KiB
JavaScript

'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import { unstable_useForkRef as useForkRef } from '@mui/utils';
import { appendOwnerState } from './appendOwnerState';
import { mergeSlotProps } from './mergeSlotProps';
import { resolveComponentProps } from './resolveComponentProps';
/**
* @ignore - do not document.
* Builds the props to be passed into the slot of an unstyled component.
* It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.
* If the slot component is not a host component, it also merges in the `ownerState`.
*
* @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.
*/
export function useSlotProps(parameters) {
var _parameters$additiona;
var elementType = parameters.elementType,
externalSlotProps = parameters.externalSlotProps,
ownerState = parameters.ownerState,
_parameters$skipResol = parameters.skipResolvingSlotProps,
skipResolvingSlotProps = _parameters$skipResol === void 0 ? false : _parameters$skipResol,
rest = _objectWithoutProperties(parameters, ["elementType", "externalSlotProps", "ownerState", "skipResolvingSlotProps"]);
var resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);
var _mergeSlotProps = mergeSlotProps(_extends({}, rest, {
externalSlotProps: resolvedComponentsProps
})),
mergedProps = _mergeSlotProps.props,
internalRef = _mergeSlotProps.internalRef;
var ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);
var props = appendOwnerState(elementType, _extends({}, mergedProps, {
ref: ref
}), ownerState);
return props;
}