2023-05-18 15:25:40 +02:00
|
|
|
import dynamic from 'next/dynamic'
|
|
|
|
import { useState } from 'react'
|
|
|
|
import { Spinner } from 'shared/components/spinner.mjs'
|
|
|
|
import { MdxWrapper } from './wrapper.mjs'
|
|
|
|
import { components } from 'shared/components/mdx/index.mjs'
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Webpack will check on disk for all possible files matching this
|
|
|
|
* dynamic import. So unless we divide it up a bit your computer
|
|
|
|
* will melt when running this in development mode
|
|
|
|
*
|
|
|
|
* This will return a language-specific component
|
|
|
|
*/
|
|
|
|
const dynamicDocsFactory = (lang) => {
|
2023-05-31 18:34:37 +02:00
|
|
|
return function DynamicDocs({ path }) {
|
2023-05-18 15:25:40 +02:00
|
|
|
const [frontmatter, setFrontmatter] = useState({})
|
|
|
|
const mdx = dynamic(
|
|
|
|
() =>
|
|
|
|
import(`orgmarkdown/docs/${path}/${lang}.md`).then((mod) => {
|
|
|
|
setFrontmatter(mod.frontmatter)
|
|
|
|
return mod
|
|
|
|
}),
|
|
|
|
{ ssr: false }
|
|
|
|
)
|
|
|
|
const MDX = mdx ? mdx : <Spinner className="w16 h-16 animate-spin text-primary" />
|
|
|
|
|
|
|
|
return (
|
2023-05-31 18:08:07 +02:00
|
|
|
<MdxWrapper {...frontmatter} path={path} language={lang}>
|
2023-05-18 15:25:40 +02:00
|
|
|
<MDX components={components} />
|
|
|
|
</MdxWrapper>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Instantiate language-specific components
|
|
|
|
*/
|
|
|
|
const OrgDocsEn = dynamicDocsFactory('en')
|
|
|
|
const OrgDocsDe = dynamicDocsFactory('de')
|
|
|
|
const OrgDocsFr = dynamicDocsFactory('fr')
|
|
|
|
const OrgDocsEs = dynamicDocsFactory('es')
|
|
|
|
const OrgDocsNl = dynamicDocsFactory('nl')
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return language-specific component
|
|
|
|
*/
|
|
|
|
export const DynamicOrgDocs = ({ path = false, language = 'en' }) => {
|
|
|
|
if (!path) return null
|
|
|
|
if (language === 'en') return <OrgDocsEn path={path} />
|
|
|
|
if (language === 'de') return <OrgDocsDe path={path} />
|
|
|
|
if (language === 'es') return <OrgDocsEs path={path} />
|
|
|
|
if (language === 'fr') return <OrgDocsFr path={path} />
|
|
|
|
if (language === 'nl') return <OrgDocsNl path={path} />
|
|
|
|
}
|