@@ -93,6 +93,33 @@ export function getWebRenderViewports(ctx: Context): Array<Record<string,any>> {
9393 return webRenderViewports
9494}
9595
96+ export function getWebRenderViewportsForOptions ( options : any ) : Array < Record < string , any > > {
97+ let webRenderViewports : Array < Record < string , any > > = [ ] ;
98+
99+ if ( options . web && Array . isArray ( options . web . viewports ) ) {
100+ for ( const viewport of options . web . viewports ) {
101+ if ( Array . isArray ( viewport ) && viewport . length > 0 ) {
102+ let viewportObj : { width : number ; height ?: number } = {
103+ width : viewport [ 0 ]
104+ } ;
105+
106+ if ( viewport . length > 1 ) {
107+ viewportObj . height = viewport [ 1 ] ;
108+ }
109+
110+ webRenderViewports . push ( {
111+ viewport : viewportObj ,
112+ viewportString : `${ viewport [ 0 ] } ${ viewport [ 1 ] ? 'x' + viewport [ 1 ] : '' } ` ,
113+ fullPage : viewport . length === 1 ,
114+ device : false
115+ } ) ;
116+ }
117+ }
118+ }
119+
120+ return webRenderViewports ;
121+ }
122+
96123export function getMobileRenderViewports ( ctx : Context ) : Record < string , any > {
97124 let mobileRenderViewports : Record < string , Array < Record < string , any > > > = { }
98125 mobileRenderViewports [ constants . MOBILE_OS_IOS ] = [ ] ;
@@ -117,10 +144,50 @@ export function getMobileRenderViewports(ctx: Context): Record<string,any> {
117144 return mobileRenderViewports
118145}
119146
147+ export function getMobileRenderViewportsForOptions ( options : any ) : Record < string , any > {
148+ let mobileRenderViewports : Record < string , Array < Record < string , any > > > = { }
149+ mobileRenderViewports [ constants . MOBILE_OS_IOS ] = [ ] ;
150+ mobileRenderViewports [ constants . MOBILE_OS_ANDROID ] = [ ] ;
151+
152+ if ( options . mobile ) {
153+ for ( const device of options . mobile . devices ) {
154+ let os = constants . SUPPORTED_MOBILE_DEVICES [ device ] . os ;
155+ let { width, height } = constants . SUPPORTED_MOBILE_DEVICES [ device ] . viewport ;
156+ let orientation = options . mobile . orientation || constants . MOBILE_ORIENTATION_PORTRAIT ;
157+ let portrait = ( orientation === constants . MOBILE_ORIENTATION_PORTRAIT ) ;
158+
159+ // Check if fullPage is specified, otherwise use default
160+ let fullPage = options . mobile . fullPage !== undefined ? options . mobile . fullPage : true ;
161+
162+ mobileRenderViewports [ os ] ?. push ( {
163+ viewport : { width : portrait ? width : height , height : portrait ? height : width } ,
164+ viewportString : `${ device } (${ orientation } )` ,
165+ fullPage : fullPage ,
166+ device : true ,
167+ os : os
168+ } )
169+ }
170+ }
171+
172+ return mobileRenderViewports
173+ }
174+
120175export function getRenderViewports ( ctx : Context ) : Array < Record < string , any > > {
121176 let mobileRenderViewports = getMobileRenderViewports ( ctx ) ;
122177 let webRenderViewports = getWebRenderViewports ( ctx ) ;
123178
179+ // Combine arrays ensuring web viewports are first
180+ return [
181+ ...webRenderViewports ,
182+ ...mobileRenderViewports [ constants . MOBILE_OS_IOS ] ,
183+ ...mobileRenderViewports [ constants . MOBILE_OS_ANDROID ]
184+ ] ;
185+ }
186+
187+ export function getRenderViewportsForOptions ( options : any ) : Array < Record < string , any > > {
188+ let mobileRenderViewports = getMobileRenderViewportsForOptions ( options ) ;
189+ let webRenderViewports = getWebRenderViewportsForOptions ( options ) ;
190+
124191 // Combine arrays ensuring web viewports are first
125192 return [
126193 ...webRenderViewports ,
0 commit comments