overleaf/services/web/frontend/js/features/editor-left-menu/components/sync-menu.tsx
M Fahru c008a1aece Migrate github-sync menu to react
GitOrigin-RevId: 87e767a064421c7bad6c4fa3c7053959bfdb4cd4
2022-11-09 09:03:08 +00:00

43 lines
1.1 KiB
TypeScript

import { useState } from 'react'
import { useTranslation } from 'react-i18next'
import importOverleafModules from '../../../../macros/import-overleaf-module.macro'
import getMeta from '../../../utils/meta'
export default function SyncMenu() {
const { t } = useTranslation()
const anonymous = getMeta('ol-anonymous') as boolean | undefined
const [editorLeftMenuSync] = useState<any[]>(
() =>
getMeta('editorLeftMenuSync') ||
importOverleafModules('editorLeftMenuSync')
)
if (anonymous === true || anonymous === undefined) {
return null
}
if (editorLeftMenuSync.length === 0) {
return null
}
return (
<>
<h4>{t('sync')}</h4>
<ul className="list-unstyled nav">
{editorLeftMenuSync.map(({ import: importObject }) => (
<li key={Object.keys(importObject)[0]}>
<ModuleComponent Component={Object.values(importObject)[0]} />
</li>
))}
</ul>
</>
)
}
type ModuleComponentProps = {
Component: any
}
function ModuleComponent({ Component }: ModuleComponentProps) {
return <Component />
}