---
import type { types } from 'react-bricks/astro'
import {
  ClickToEdit,
  PageWrapper,
  reactBricksAstroStore,
} from 'react-bricks/astro'
import DynamicComponent from './DynamicComponent.astro'
import TemplateViewer from './TemplateViewer.astro'

interface Props {
  page: types.Page
  main?: boolean
  preview?: boolean
}

let error = false
const { page, main, preview } = Astro.props as Props

if (!page) {
  console.error(`Page not found.`)
  error = true
}

reactBricksAstroStore.setPage(page)

const pageType = reactBricksAstroStore.getPageType(page)

if (!pageType) {
  console.error(`Unknown pageType ${page.type}.`)
  error = true
}

const { content, ...pageWithoutContent } = page
---

{
  !pageType || error ? (
    ''
  ) : (
    <PageWrapper
      pageType={pageType}
      page={pageWithoutContent}
      renderEnvironment={preview ? 'Preview' : 'Frontend'}
    >
      {pageType.template ? (
        <TemplateViewer page={page} pageType={pageType} />
      ) : (
        (page?.content?.map((block: any, index: any) => (
          <DynamicComponent
            page={page}
            key={`${block.id}-${index}`}
            {...{ block }}
          />
        )) ?? null)
      )}
    </PageWrapper>
  )
}
{
  !!main && !!page ? (
    <ClickToEdit
      client:idle
      customValues={page.customValues}
      id={page.id}
      language={page.language}
    />
  ) : (
    ''
  )
}
