Gwk-Cultural-Park/plugins/previewPane/index.tsx

55 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-09-07 01:40:25 +00:00
// This plugin is responsible for adding a “Preview” tab to the document pane
// You can add any React component to `S.view.component` and it will be rendered in the pane
// and have access to content in the form in real-time.
// It's part of the Studio's “Structure Builder API” and is documented here:
// https://www.sanity.io/docs/structure-builder-reference
import { DefaultDocumentNodeResolver } from 'sanity/desk'
import authorType from 'schemas/author'
import postType from 'schemas/post'
import AuthorAvatarPreviewPane from './AuthorAvatarPreviewPane'
import PostPreviewPane from './PostPreviewPane'
export const previewDocumentNode = ({
apiVersion,
previewSecretId,
}: {
apiVersion: string
previewSecretId: `${string}.${string}`
}): DefaultDocumentNodeResolver => {
return (S, { schemaType }) => {
switch (schemaType) {
case authorType.name:
return S.document().views([
S.view.form(),
S.view
.component(({ document }) => (
<AuthorAvatarPreviewPane
name={document.displayed.name as any}
picture={document.displayed.picture as any}
/>
))
.title('Preview'),
])
case postType.name:
return S.document().views([
S.view.form(),
S.view
.component(({ document }) => (
<PostPreviewPane
slug={document.displayed.slug?.current}
apiVersion={apiVersion}
previewSecretId={previewSecretId}
/>
))
.title('Preview'),
])
default:
return null
}
}
}