1 | 'use client';
|
2 |
|
3 | import _extends from "@babel/runtime/helpers/esm/extends";
|
4 | import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
5 | import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
6 | import useForkRef from '@mui/utils/useForkRef';
|
7 | import { appendOwnerState, resolveComponentProps, mergeSlotProps } from '@mui/base/utils';
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | export default function useSlot(
|
23 | /**
|
24 | * The slot's name. All Material UI components should have `root` slot.
|
25 | *
|
26 | * If the name is `root`, the logic behaves differently from other slots,
|
27 | * e.g. the `externalForwardedProps` are spread to `root` slot but not other slots.
|
28 | */
|
29 | name, parameters) {
|
30 | var className = parameters.className,
|
31 | initialElementType = parameters.elementType,
|
32 | ownerState = parameters.ownerState,
|
33 | externalForwardedProps = parameters.externalForwardedProps,
|
34 | getSlotOwnerState = parameters.getSlotOwnerState,
|
35 | internalForwardedProps = parameters.internalForwardedProps,
|
36 | useSlotPropsParams = _objectWithoutProperties(parameters, ["className", "elementType", "ownerState", "externalForwardedProps", "getSlotOwnerState", "internalForwardedProps"]);
|
37 | var rootComponent = externalForwardedProps.component,
|
38 | _externalForwardedPro = externalForwardedProps.slots,
|
39 | slots = _externalForwardedPro === void 0 ? _defineProperty({}, name, undefined) : _externalForwardedPro,
|
40 | _externalForwardedPro2 = externalForwardedProps.slotProps,
|
41 | slotProps = _externalForwardedPro2 === void 0 ? _defineProperty({}, name, undefined) : _externalForwardedPro2,
|
42 | other = _objectWithoutProperties(externalForwardedProps, ["component", "slots", "slotProps"]);
|
43 | var elementType = slots[name] || initialElementType;
|
44 |
|
45 |
|
46 |
|
47 | var resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);
|
48 | var _mergeSlotProps = mergeSlotProps(_extends({
|
49 | className: className
|
50 | }, useSlotPropsParams, {
|
51 | externalForwardedProps: name === 'root' ? other : undefined,
|
52 | externalSlotProps: resolvedComponentsProps
|
53 | })),
|
54 | _mergeSlotProps$props = _mergeSlotProps.props,
|
55 | slotComponent = _mergeSlotProps$props.component,
|
56 | mergedProps = _objectWithoutProperties(_mergeSlotProps$props, ["component"]),
|
57 | internalRef = _mergeSlotProps.internalRef;
|
58 | var ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, parameters.ref);
|
59 | var slotOwnerState = getSlotOwnerState ? getSlotOwnerState(mergedProps) : {};
|
60 | var finalOwnerState = _extends({}, ownerState, slotOwnerState);
|
61 | var LeafComponent = name === 'root' ? slotComponent || rootComponent : slotComponent;
|
62 | var props = appendOwnerState(elementType, _extends({}, name === 'root' && !rootComponent && !slots[name] && internalForwardedProps, name !== 'root' && !slots[name] && internalForwardedProps, mergedProps, LeafComponent && {
|
63 | as: LeafComponent
|
64 | }, {
|
65 | ref: ref
|
66 | }), finalOwnerState);
|
67 | Object.keys(slotOwnerState).forEach(function (propName) {
|
68 | delete props[propName];
|
69 | });
|
70 | return [elementType, props];
|
71 | } |
\ | No newline at end of file |