Files
gitbook/packages/react-contentkit/src/ElementMarkdown.tsx
T
Samy Pessé 70c6c9df42 First pass at implementing ContentKit (#69)
* Start

* Try webframe

* Lint and format

* Move to package

* Continue

* Implement card and cleanup contexts

* Start code blocks

* Start rendering image

* Continue with card

* Start stack

* Start text

* Start modal

* Format

* Continue

* Fix TS errors

* Cleanup

* Make markdown work with server components

* Format

* Add visual test

* Lint and format

* Fix lifecycle

* Implement textinput

* Divider

* Remove console logs

* Remove listSpaceIntegrationsBlocks
2024-02-28 14:46:47 +01:00

28 lines
993 B
TypeScript

import { ContentKitMarkdown } from '@gitbook/api';
import { ContentKitServerElementProps } from './types';
import { ElementMarkdownClient } from './ElementMarkdownClient';
import { resolveDynamicBinding } from './dynamic';
export function ElementMarkdown(props: ContentKitServerElementProps<ContentKitMarkdown>) {
const { element, context, state } = props;
const Markdown = context.markdown;
const initialMarkdown = resolveDynamicBinding(state, element.content);
async function renderMarkdown(markdown: string) {
'use server';
return <Markdown className="contentkit-markdown" markdown={markdown} />;
}
return (
<ElementMarkdownClient
element={element}
initialMarkdown={initialMarkdown !== element.content ? initialMarkdown : undefined}
renderMarkdown={renderMarkdown}
>
<Markdown className="contentkit-markdown" markdown={initialMarkdown} />
</ElementMarkdownClient>
);
}