import * as React from 'react'
import { getBlockIcon, getBlockTitle } from 'notion-utils'
import { Block, PageBlock, CalloutBlock } from 'notion-types'
import { cs, isUrl } from '../utils'
import { DefaultPageIcon } from '../icons/default-page-icon'
import { useNotionContext } from '../context'
import { LazyImage } from './lazy-image'
const isIconBlock = (value: Block): value is PageBlock | CalloutBlock => {
return (
value.type === 'page' ||
value.type === 'callout' ||
value.type === 'collection_view' ||
value.type === 'collection_view_page'
)
}
export const PageIconImpl: React.FC<{
block: Block
className?: string
inline?: boolean
hideDefaultIcon?: boolean
defaultIcon?: string
}> = ({
block,
className,
inline = true,
hideDefaultIcon = false,
defaultIcon
}) => {
const { mapImageUrl, recordMap, darkMode } = useNotionContext()
let isImage = false
let content: any = null
if (isIconBlock(block)) {
const icon = getBlockIcon(block, recordMap)?.trim() || defaultIcon
const title = getBlockTitle(block, recordMap)
if (icon && isUrl(icon)) {
const url = mapImageUrl(icon, block)
isImage = true
content = (