worked on GarageApp stuff
This commit is contained in:
parent
60aaf17af3
commit
eb606572b0
51919 changed files with 2168177 additions and 18 deletions
90
node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js
generated
vendored
Normal file
90
node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js
generated
vendored
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
import clsx from 'clsx';
|
||||
import extractEventHandlers from "../extractEventHandlers/index.js";
|
||||
import omitEventHandlers from "../omitEventHandlers/index.js";
|
||||
/**
|
||||
* Merges the slot component internal props (usually coming from a hook)
|
||||
* with the externally provided ones.
|
||||
*
|
||||
* The merge order is (the latter overrides the former):
|
||||
* 1. The internal props (specified as a getter function to work with get*Props hook result)
|
||||
* 2. Additional props (specified internally on a Base UI component)
|
||||
* 3. External props specified on the owner component. These should only be used on a root slot.
|
||||
* 4. External props specified in the `slotProps.*` prop.
|
||||
* 5. The `className` prop - combined from all the above.
|
||||
* @param parameters
|
||||
* @returns
|
||||
*/
|
||||
function mergeSlotProps(parameters) {
|
||||
const {
|
||||
getSlotProps,
|
||||
additionalProps,
|
||||
externalSlotProps,
|
||||
externalForwardedProps,
|
||||
className
|
||||
} = parameters;
|
||||
if (!getSlotProps) {
|
||||
// The simpler case - getSlotProps is not defined, so no internal event handlers are defined,
|
||||
// so we can simply merge all the props without having to worry about extracting event handlers.
|
||||
const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);
|
||||
const mergedStyle = {
|
||||
...additionalProps?.style,
|
||||
...externalForwardedProps?.style,
|
||||
...externalSlotProps?.style
|
||||
};
|
||||
const props = {
|
||||
...additionalProps,
|
||||
...externalForwardedProps,
|
||||
...externalSlotProps
|
||||
};
|
||||
if (joinedClasses.length > 0) {
|
||||
props.className = joinedClasses;
|
||||
}
|
||||
if (Object.keys(mergedStyle).length > 0) {
|
||||
props.style = mergedStyle;
|
||||
}
|
||||
return {
|
||||
props,
|
||||
internalRef: undefined
|
||||
};
|
||||
}
|
||||
|
||||
// In this case, getSlotProps is responsible for calling the external event handlers.
|
||||
// We don't need to include them in the merged props because of this.
|
||||
|
||||
const eventHandlers = extractEventHandlers({
|
||||
...externalForwardedProps,
|
||||
...externalSlotProps
|
||||
});
|
||||
const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);
|
||||
const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);
|
||||
const internalSlotProps = getSlotProps(eventHandlers);
|
||||
|
||||
// The order of classes is important here.
|
||||
// Emotion (that we use in libraries consuming Base UI) depends on this order
|
||||
// to properly override style. It requires the most important classes to be last
|
||||
// (see https://github.com/mui/material-ui/pull/33205) for the related discussion.
|
||||
const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);
|
||||
const mergedStyle = {
|
||||
...internalSlotProps?.style,
|
||||
...additionalProps?.style,
|
||||
...externalForwardedProps?.style,
|
||||
...externalSlotProps?.style
|
||||
};
|
||||
const props = {
|
||||
...internalSlotProps,
|
||||
...additionalProps,
|
||||
...otherPropsWithoutEventHandlers,
|
||||
...componentsPropsWithoutEventHandlers
|
||||
};
|
||||
if (joinedClasses.length > 0) {
|
||||
props.className = joinedClasses;
|
||||
}
|
||||
if (Object.keys(mergedStyle).length > 0) {
|
||||
props.style = mergedStyle;
|
||||
}
|
||||
return {
|
||||
props,
|
||||
internalRef: internalSlotProps.ref
|
||||
};
|
||||
}
|
||||
export default mergeSlotProps;
|
||||
Loading…
Add table
Add a link
Reference in a new issue