import React, { FC } from 'react'
import Image from 'next/image'
import {
BackgroundStoryblok,
SectionStoryblok
} from '../../typings/generated/components-schema'
import { getRootImageUrl } from '../../utils/imageServices'
import { storyblokImageLoader } from '../../utils/storyblokImageLoader'
import { LmImagePlaceholder } from '../image/imageTypes'
import { makeStyles } from 'tss-react/mui'
const useStyles = makeStyles({ name: 'BackgroundImage' })((theme) => ({
root: {
'@media (orientation: landscape)': {
'&.portrait': {
display: 'none !important'
}
},
'@media (orientation: portrait)': {
'&.landscape': {
display: 'none !important'
}
},
'&.hide__xs': {
[theme.breakpoints.only('xs')]: {
display: 'none !important'
}
},
'&.hide__sm': {
[theme.breakpoints.down('md')]: {
display: 'none !important'
}
},
'&.hide__md': {
[theme.breakpoints.down('lg')]: {
display: 'none !important'
}
}
},
rootFixedImage: {
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
zIndex: -1,
// disable for mobile
[theme.breakpoints.up('sm')]: {
clip: 'rect(0,auto,auto,0)!important',
clipPath: 'polygon(0px 0px,100% 0px,100% 100%,0px 100%)!important',
zIndex: 0
}
},
fixedCoverImageWrap: {
// disable for mobile
[theme.breakpoints.up('sm')]: {
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
overflow: 'hidden',
zIndex: -1
}
}
}))
type BackgroundImageProps = {
content: BackgroundStoryblok & {
background_data?: LmImagePlaceholder
}
backgroundStyle?: SectionStoryblok['background_style']
sectionPosition?: number
}
const BackgroundImage = ({
content,
backgroundStyle,
sectionPosition
}: BackgroundImageProps): JSX.Element | null => {
const { classes, cx } = useStyles()
const {
image,
alternative_image,
background_position,
background_size,
hide_image_on_breakpoint,
priority,
disable_lazy_loading,
// image_focal_point,
// used for quality of background image
quality
} = content
const priorityLoading = priority || sectionPosition === 0
const loading = priorityLoading
? undefined
: disable_lazy_loading
? 'eager'
: undefined
const imageSource = image
const imageSourcePortrait = alternative_image || undefined
const BgImage = ({ src, className }: { src: string; className: string }) => {
// const rootImageUrl = `${getRootImageUrl(src)}${
// image_focal_point ? `?focalPoint=${image_focal_point}` : ''
// }`
return (
)
}
const Wrap: FC> = ({ children }) => {
return ['fixed_cover', 'fixed_image'].includes(backgroundStyle || '') ? (
) : (
<>{children}>
)
}
const defaultImgClassNames = cx(classes.root, {
[`hide__${hide_image_on_breakpoint}`]: !!hide_image_on_breakpoint
})
return (
{imageSource && (
)}
{imageSourcePortrait && (
)}
)
}
export default BackgroundImage