11import { css } from '@emotion/react' ;
2+ import { isUndefined } from '@guardian/libs' ;
23import { from } from '@guardian/source/foundations' ;
34import { grid } from '../grid' ;
45import { type ArticleFormat } from '../lib/articleFormat' ;
56import { getImage } from '../lib/image' ;
67import { type ImageBlockElement } from '../types/content' ;
8+ import { type RenderingTarget } from '../types/renderingTarget' ;
9+ import { AppsLightboxImage } from './AppsLightboxImage.importable' ;
10+ import { Island } from './Island' ;
11+ import { LightboxLink } from './LightboxLink' ;
712import { Picture } from './Picture' ;
813
914type Props = {
1015 mainMedia : ImageBlockElement ;
1116 format : ArticleFormat ;
17+ renderingTarget : RenderingTarget ;
1218} ;
1319
1420const styles = css `
@@ -20,7 +26,11 @@ const styles = css`
2026 }
2127` ;
2228
23- export const MainMediaGallery = ( { mainMedia, format } : Props ) => {
29+ export const MainMediaGallery = ( {
30+ mainMedia,
31+ format,
32+ renderingTarget,
33+ } : Props ) => {
2434 const asset = getImage ( mainMedia . media . allImages ) ;
2535
2636 if ( asset === undefined ) {
@@ -36,16 +46,40 @@ export const MainMediaGallery = ({ mainMedia, format }: Props) => {
3646
3747 return (
3848 < figure css = { styles } >
39- < Picture
40- alt = { mainMedia . data . alt ?? '' }
41- format = { format }
42- role = { mainMedia . role }
43- master = { asset . url }
44- width = { width }
45- height = { height }
46- loading = "eager"
47- isMainMedia = { true }
48- />
49+ { renderingTarget === 'Apps' ? (
50+ < Island priority = "critical" >
51+ < AppsLightboxImage
52+ elementId = { mainMedia . elementId }
53+ role = { mainMedia . role }
54+ format = { format }
55+ master = { asset . url }
56+ alt = { mainMedia . data . alt ?? '' }
57+ width = { width }
58+ height = { height }
59+ loading = { 'lazy' }
60+ />
61+ </ Island >
62+ ) : (
63+ < Picture
64+ alt = { mainMedia . data . alt ?? '' }
65+ format = { format }
66+ role = { mainMedia . role }
67+ master = { asset . url }
68+ width = { width }
69+ height = { height }
70+ loading = "eager"
71+ isMainMedia = { true }
72+ />
73+ ) }
74+ { renderingTarget === 'Web' && ! isUndefined ( mainMedia . position ) && (
75+ < LightboxLink
76+ role = { mainMedia . role }
77+ format = { format }
78+ elementId = { mainMedia . elementId }
79+ isMainMedia = { false }
80+ position = { mainMedia . position }
81+ />
82+ ) }
4983 </ figure >
5084 ) ;
5185} ;
0 commit comments