paradiego
This commit is contained in:
27
node_modules/@mui/system/ThemeProvider/ThemeProvider.d.ts
generated
vendored
Normal file
27
node_modules/@mui/system/ThemeProvider/ThemeProvider.d.ts
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
import { DefaultTheme } from '@mui/private-theming';
|
||||
|
||||
export interface ThemeProviderProps<Theme = DefaultTheme> {
|
||||
/**
|
||||
* Your component tree.
|
||||
*/
|
||||
children?: React.ReactNode;
|
||||
/**
|
||||
* The design system's unique id for getting the corresponded theme when there are multiple design systems.
|
||||
*/
|
||||
themeId?: string;
|
||||
/**
|
||||
* A theme object. You can provide a function to extend the outer theme.
|
||||
*/
|
||||
theme: Partial<Theme> | ((outerTheme: Theme) => Theme);
|
||||
}
|
||||
|
||||
/**
|
||||
* This component makes the `theme` available down the React tree.
|
||||
* It should preferably be used at **the root of your component tree**.
|
||||
* API:
|
||||
*
|
||||
* - [ThemeProvider API](https://mui.com/material-ui/customization/theming/#themeprovider)
|
||||
*/
|
||||
export default function ThemeProvider<T = DefaultTheme>(
|
||||
props: ThemeProviderProps<T>,
|
||||
): React.ReactElement<ThemeProviderProps<T>>;
|
||||
97
node_modules/@mui/system/ThemeProvider/ThemeProvider.js
generated
vendored
Normal file
97
node_modules/@mui/system/ThemeProvider/ThemeProvider.js
generated
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
'use client';
|
||||
|
||||
import * as React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';
|
||||
import exactProp from '@mui/utils/exactProp';
|
||||
import { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';
|
||||
import useThemeWithoutDefault from "../useThemeWithoutDefault/index.js";
|
||||
import RtlProvider from "../RtlProvider/index.js";
|
||||
import DefaultPropsProvider from "../DefaultPropsProvider/index.js";
|
||||
import { jsx as _jsx } from "react/jsx-runtime";
|
||||
const EMPTY_THEME = {};
|
||||
function useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {
|
||||
return React.useMemo(() => {
|
||||
const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;
|
||||
if (typeof localTheme === 'function') {
|
||||
const mergedTheme = localTheme(resolvedTheme);
|
||||
const result = themeId ? {
|
||||
...upperTheme,
|
||||
[themeId]: mergedTheme
|
||||
} : mergedTheme;
|
||||
// must return a function for the private theme to NOT merge with the upper theme.
|
||||
// see the test case "use provided theme from a callback" in ThemeProvider.test.js
|
||||
if (isPrivate) {
|
||||
return () => result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return themeId ? {
|
||||
...upperTheme,
|
||||
[themeId]: localTheme
|
||||
} : {
|
||||
...upperTheme,
|
||||
...localTheme
|
||||
};
|
||||
}, [themeId, upperTheme, localTheme, isPrivate]);
|
||||
}
|
||||
|
||||
/**
|
||||
* This component makes the `theme` available down the React tree.
|
||||
* It should preferably be used at **the root of your component tree**.
|
||||
*
|
||||
* <ThemeProvider theme={theme}> // existing use case
|
||||
* <ThemeProvider theme={{ id: theme }}> // theme scoping
|
||||
*/
|
||||
function ThemeProvider(props) {
|
||||
const {
|
||||
children,
|
||||
theme: localTheme,
|
||||
themeId
|
||||
} = props;
|
||||
const upperTheme = useThemeWithoutDefault(EMPTY_THEME);
|
||||
const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {
|
||||
console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\n'));
|
||||
}
|
||||
}
|
||||
const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
|
||||
const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
|
||||
const rtlValue = engineTheme.direction === 'rtl';
|
||||
return /*#__PURE__*/_jsx(MuiThemeProvider, {
|
||||
theme: privateTheme,
|
||||
children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {
|
||||
value: engineTheme,
|
||||
children: /*#__PURE__*/_jsx(RtlProvider, {
|
||||
value: rtlValue,
|
||||
children: /*#__PURE__*/_jsx(DefaultPropsProvider, {
|
||||
value: engineTheme?.components,
|
||||
children: children
|
||||
})
|
||||
})
|
||||
})
|
||||
});
|
||||
}
|
||||
process.env.NODE_ENV !== "production" ? ThemeProvider.propTypes /* remove-proptypes */ = {
|
||||
// ┌────────────────────────────── Warning ──────────────────────────────┐
|
||||
// │ These PropTypes are generated from the TypeScript type definitions. │
|
||||
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
|
||||
// └─────────────────────────────────────────────────────────────────────┘
|
||||
/**
|
||||
* Your component tree.
|
||||
*/
|
||||
children: PropTypes.node,
|
||||
/**
|
||||
* A theme object. You can provide a function to extend the outer theme.
|
||||
*/
|
||||
theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,
|
||||
/**
|
||||
* The design system's unique id for getting the corresponded theme when there are multiple design systems.
|
||||
*/
|
||||
themeId: PropTypes.string
|
||||
} : void 0;
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
process.env.NODE_ENV !== "production" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;
|
||||
}
|
||||
export default ThemeProvider;
|
||||
2
node_modules/@mui/system/ThemeProvider/index.d.ts
generated
vendored
Normal file
2
node_modules/@mui/system/ThemeProvider/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export { default } from './ThemeProvider';
|
||||
export * from './ThemeProvider';
|
||||
1
node_modules/@mui/system/ThemeProvider/index.js
generated
vendored
Normal file
1
node_modules/@mui/system/ThemeProvider/index.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export { default } from "./ThemeProvider.js";
|
||||
6
node_modules/@mui/system/ThemeProvider/package.json
generated
vendored
Normal file
6
node_modules/@mui/system/ThemeProvider/package.json
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "./index.js",
|
||||
"main": "../node/ThemeProvider/index.js",
|
||||
"types": "./index.d.ts"
|
||||
}
|
||||
Reference in New Issue
Block a user