@@ -22,6 +22,7 @@ export enum EngineStreamTransition {
22
22
// Our dependencies to set
23
23
SetPool = 'set-pool' ,
24
24
SetAuthToken = 'set-auth-token' ,
25
+ SetContainerElementRef = 'set-container-element-ref' ,
25
26
SetVideoRef = 'set-video-ref' ,
26
27
SetCanvasRef = 'set-canvas-ref' ,
27
28
SetMediaStream = 'set-media-stream' ,
@@ -39,6 +40,7 @@ export enum EngineStreamTransition {
39
40
export interface EngineStreamContext {
40
41
pool : string | null
41
42
authToken : string | undefined
43
+ containerElementRef : MutableRefObject < HTMLDivElement | null >
42
44
videoRef : MutableRefObject < HTMLVideoElement | null >
43
45
canvasRef : MutableRefObject < HTMLCanvasElement | null >
44
46
mediaStream : MediaStream | null
@@ -48,6 +50,7 @@ export interface EngineStreamContext {
48
50
export const engineStreamContextCreate = ( ) : EngineStreamContext => ( {
49
51
pool : null ,
50
52
authToken : undefined ,
53
+ containerElementRef : { current : null } ,
51
54
videoRef : { current : null } ,
52
55
canvasRef : { current : null } ,
53
56
mediaStream : null ,
@@ -99,12 +102,13 @@ export const engineStreamMachine = setup({
99
102
}
100
103
} ) => {
101
104
if ( ! context . authToken ) return Promise . reject ( )
105
+ if ( ! context . containerElementRef . current ) return Promise . reject ( )
102
106
if ( ! context . videoRef . current ) return Promise . reject ( )
103
107
if ( ! context . canvasRef . current ) return Promise . reject ( )
104
108
105
109
const { width, height } = getDimensions (
106
- window . innerWidth ,
107
- window . innerHeight
110
+ context . containerElementRef . current . clientWidth ,
111
+ context . containerElementRef . current . clientHeight
108
112
)
109
113
110
114
context . videoRef . current . width = width
@@ -273,6 +277,14 @@ export const engineStreamMachine = setup({
273
277
assign ( { authToken : ( { context, event } ) => event . authToken } ) ,
274
278
] ,
275
279
} ,
280
+ [ EngineStreamTransition . SetContainerElementRef ] : {
281
+ target : EngineStreamState . WaitingForDependencies ,
282
+ actions : [
283
+ assign ( {
284
+ containerElementRef : ( { event } ) => event . containerElementRef ,
285
+ } ) ,
286
+ ] ,
287
+ } ,
276
288
[ EngineStreamTransition . SetVideoRef ] : {
277
289
target : EngineStreamState . WaitingForDependencies ,
278
290
actions : [
0 commit comments