import '@affine/component/theme/global.css'; import '@affine/component/theme/theme.css'; import { WorkspaceFallback } from '@affine/component/workspace'; import { config, setupGlobal } from '@affine/env'; import { createI18n, I18nextProvider } from '@affine/i18n'; import { rootStore } from '@affine/workspace/atom'; import type { EmotionCache } from '@emotion/cache'; import { CacheProvider } from '@emotion/react'; import { Provider } from 'jotai'; import type { AppProps } from 'next/app'; import Head from 'next/head'; import { useRouter } from 'next/router'; import type { PropsWithChildren, ReactElement } from 'react'; import React, { lazy, Suspense, useEffect, useMemo } from 'react'; import { AffineErrorBoundary } from '../components/affine/affine-error-eoundary'; import { ProviderComposer } from '../components/provider-composer'; import { MessageCenter } from '../components/pure/message-center'; import { ThemeProvider } from '../providers/theme-provider'; import type { NextPageWithLayout } from '../shared'; import createEmotionCache from '../utils/create-emotion-cache'; setupGlobal(); type AppPropsWithLayout = AppProps & { Component: NextPageWithLayout; }; const EmptyLayout = (page: ReactElement) => page; const clientSideEmotionCache = createEmotionCache(); const DevTools = lazy(() => import('jotai-devtools').then(m => ({ default: m.DevTools })) ); const DebugProvider = ({ children }: PropsWithChildren): ReactElement => { return ( <> {process.env.DEBUG_JOTAI === 'true' && } {children} ); }; const App = function App({ Component, pageProps, emotionCache = clientSideEmotionCache, }: AppPropsWithLayout & { emotionCache?: EmotionCache; }) { const getLayout = Component.getLayout || EmptyLayout; const i18n = useMemo(() => createI18n(), []); if (process.env.NODE_ENV === 'development') { // I know what I'm doing // eslint-disable-next-line react-hooks/rules-of-hooks useEffect(() => { console.log('Runtime Preset', config); }, []); } return ( }> [ , , , ].filter(Boolean), [] )} > AFFiNE {getLayout()} ); }; export default App;