import { useMemo } from '@wordpress/element' import { __, sprintf } from '@wordpress/i18n' import classNames from 'classnames' import { getTemplate } from '@onboarding/api/DataApi' import { StylePreview } from '@onboarding/components/StyledPreview' import { useFetch } from '@onboarding/hooks/useFetch' import { findTheCode } from '@onboarding/lib/util' import { useUserSelectionStore } from '@onboarding/state/UserSelections' import { Checkmark } from '@onboarding/svg' export const fetcher = (data) => getTemplate(data) export const PagePreview = ({ page, blockHeight, required = false, displayOnly = false, title = '', }) => { const { siteType, style, toggle, has } = useUserSelectionStore() const isHome = page?.slug === 'home' const { data: pageData } = useFetch( { siteType: siteType.slug, layoutType: page.slug, baseLayout: isHome ? siteType.slug.startsWith('blog') ? style?.blogBaseLayout : style?.homeBaseLayout : null, kit: page.slug !== 'home' ? style?.kit : null, }, fetcher, ) if (displayOnly) { return (
{title && (
{title}
)}
) } return (
required || toggle('pages', page)} title={ required && title ? sprintf(__('%s page is required', 'extendify'), title) : sprintf(__('Toggle %s page', 'extendify'), title) } onKeyDown={(e) => { if (['Enter', 'Space', ' '].includes(e.key)) { if (!required) toggle('pages', page) } }}>
{title && (
{title} {required && ( )}
)} {has('pages', page) ? (
) : (
)}
) } const StylePreviewWrapper = ({ page, style, measure = true, blockHeight = false, }) => { const context = useMemo( () => ({ type: 'page', detail: page.slug, measure, }), [page, measure], ) return ( ) }