mirror of
https://github.com/mediacms-io/mediacms.git
synced 2026-03-15 09:21:56 -04:00
* initial implementation * updates in ViewerInfoVideoTitleBanner component * Implement persistent "Embed Mode" to hide UI shell via Session Storage --------- Co-authored-by: Yiannis <1515939+styiannis@users.noreply.github.com>
86 lines
2.6 KiB
JavaScript
Executable File
86 lines
2.6 KiB
JavaScript
Executable File
import React from 'react';
|
|
import ReactDOM from 'react-dom';
|
|
import { ThemeProvider } from './contexts/ThemeContext';
|
|
import { LayoutProvider } from './contexts/LayoutContext';
|
|
import { UserProvider } from './contexts/UserContext';
|
|
import { inEmbeddedApp } from './helpers';
|
|
|
|
const AppProviders = ({ children }) => (
|
|
<LayoutProvider>
|
|
<ThemeProvider>
|
|
<UserProvider>{children}</UserProvider>
|
|
</ThemeProvider>
|
|
</LayoutProvider>
|
|
);
|
|
|
|
import { PageHeader, PageSidebar } from '../components/page-layout';
|
|
|
|
export function renderPage(idSelector, PageComponent) {
|
|
if (inEmbeddedApp()) {
|
|
globalThis.document.body.classList.add('embedded-app');
|
|
globalThis.document.body.classList.remove('visible-sidebar');
|
|
|
|
const appContent = idSelector ? document.getElementById(idSelector) : undefined;
|
|
|
|
if (appContent && PageComponent) {
|
|
ReactDOM.render(
|
|
<AppProviders>
|
|
<PageComponent />
|
|
</AppProviders>,
|
|
appContent
|
|
);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
const appContent = idSelector ? document.getElementById(idSelector) : undefined;
|
|
const appHeader = document.getElementById('app-header');
|
|
const appSidebar = document.getElementById('app-sidebar');
|
|
|
|
if (appContent && PageComponent) {
|
|
ReactDOM.render(
|
|
<AppProviders>
|
|
{appHeader ? ReactDOM.createPortal(<PageHeader />, appHeader) : null}
|
|
{appSidebar ? ReactDOM.createPortal(<PageSidebar />, appSidebar) : null}
|
|
<PageComponent />
|
|
</AppProviders>,
|
|
appContent
|
|
);
|
|
} else if (appHeader && appSidebar) {
|
|
ReactDOM.render(
|
|
<AppProviders>
|
|
{ReactDOM.createPortal(<PageHeader />, appHeader)}
|
|
<PageSidebar />
|
|
</AppProviders>,
|
|
appSidebar
|
|
);
|
|
} else if (appHeader) {
|
|
ReactDOM.render(
|
|
<LayoutProvider>
|
|
<ThemeProvider>
|
|
<UserProvider>
|
|
<PageHeader />
|
|
</UserProvider>
|
|
</ThemeProvider>
|
|
</LayoutProvider>,
|
|
appSidebar
|
|
);
|
|
} else if (appSidebar) {
|
|
ReactDOM.render(
|
|
<AppProviders>
|
|
<PageSidebar />
|
|
</AppProviders>,
|
|
appSidebar
|
|
);
|
|
}
|
|
}
|
|
|
|
export function renderEmbedPage(idSelector, PageComponent) {
|
|
const appContent = idSelector ? document.getElementById(idSelector) : undefined;
|
|
|
|
if (appContent && PageComponent) {
|
|
ReactDOM.render(<PageComponent />, appContent);
|
|
}
|
|
}
|