Add support for rendering React components in legacy views
Add name to Contributors
This commit is contained in:
committed by
Bill Thornton
parent
e852931968
commit
a938650ded
@@ -100,6 +100,7 @@
|
|||||||
- [StableCrimson](https://github.com/StableCrimson)
|
- [StableCrimson](https://github.com/StableCrimson)
|
||||||
- [diegoeche](https://github.com/diegoeche)
|
- [diegoeche](https://github.com/diegoeche)
|
||||||
- [Free O'Toole](https://github.com/freeotoole)
|
- [Free O'Toole](https://github.com/freeotoole)
|
||||||
|
- [TheBosZ](https://github.com/thebosz)
|
||||||
|
|
||||||
## Emby Contributors
|
## Emby Contributors
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import { createRoot } from 'react-dom/client';
|
||||||
|
import * as React from 'react';
|
||||||
|
import { QueryClientProvider } from '@tanstack/react-query';
|
||||||
|
import { ApiProvider } from 'hooks/useApi';
|
||||||
|
import { UserSettingsProvider } from 'hooks/useUserSettings';
|
||||||
|
import { WebConfigProvider } from 'hooks/useWebConfig';
|
||||||
|
import { queryClient } from 'utils/query/queryClient';
|
||||||
|
import { useUserTheme } from 'hooks/useUserTheme';
|
||||||
|
import { ThemeProvider } from '@mui/material/styles';
|
||||||
|
import { getTheme } from 'themes/themes';
|
||||||
|
|
||||||
|
export const attachReactElement = (Element: (props: object) => React.ReactNode, props: object, element: HTMLElement, replace = false) => {
|
||||||
|
const domNode = document.createElement('div');
|
||||||
|
const root = createRoot(replace ? domNode : element);
|
||||||
|
root.render(
|
||||||
|
<RootContext>
|
||||||
|
<Element {...props} />
|
||||||
|
</RootContext>
|
||||||
|
);
|
||||||
|
|
||||||
|
if (replace) {
|
||||||
|
element.replaceWith(domNode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const RootContext: React.FC<React.PropsWithChildren> = ({ children }) => {
|
||||||
|
const { theme } = useUserTheme();
|
||||||
|
return (
|
||||||
|
<QueryClientProvider client={queryClient}>
|
||||||
|
<ApiProvider>
|
||||||
|
<UserSettingsProvider>
|
||||||
|
<WebConfigProvider>
|
||||||
|
<ThemeProvider theme={getTheme(theme)}>
|
||||||
|
{children}
|
||||||
|
</ThemeProvider>
|
||||||
|
</WebConfigProvider>
|
||||||
|
</UserSettingsProvider>
|
||||||
|
</ApiProvider>
|
||||||
|
</QueryClientProvider>
|
||||||
|
);
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user