@@ -61,13 +61,12 @@ const getSanitizedViewer = () => {
6161 const viewerHtml = document . querySelector ( '#viewer-container' )
6262 ? document . querySelector ( '#viewer-container' ) . cloneNode ( true )
6363 : '' ;
64- viewerHtml . querySelector ( '.viewer-logo' ) . remove ( ) ;
65- viewerHtml . querySelector ( '.slide-quicktools' ) . remove ( ) ;
66- if ( viewerHtml . querySelector ( 'video' ) ) {
67- viewerHtml . querySelector ( 'video' ) . remove ( ) ;
68- }
69- viewerHtml . querySelector ( '.shabad-deck' ) . removeAttribute ( 'style' ) ;
70- viewerHtml . querySelector ( '.verse-slide-wrapper' ) . removeAttribute ( 'style' ) ;
64+ viewerHtml . querySelector ( '.viewer-logo' ) ?. remove ( ) ;
65+ viewerHtml . querySelector ( '.slide-quicktools' ) ?. remove ( ) ;
66+ viewerHtml . querySelector ( 'video' ) ?. remove ( ) ;
67+ viewerHtml . querySelector ( '.shabad-deck' ) ?. removeAttribute ( 'style' ) ;
68+ viewerHtml . querySelector ( '.verse-slide-wrapper' ) ?. removeAttribute ( 'style' ) ;
69+
7170 return viewerHtml . innerHTML ;
7271} ;
7372
@@ -105,7 +104,38 @@ export const sendMessage = (message) => {
105104} ;
106105
107106export const castToReceiver = ( ) => {
108- sendMessage ( JSON . stringify ( getSanitizedViewer ( ) ) ) ;
107+ const waitForAnimationComplete = ( attempts = 0 ) => {
108+ if ( attempts > 30 ) {
109+ appendMessage ( 'Animation timeout reached, casting anyway' ) ;
110+ sendMessage ( JSON . stringify ( getSanitizedViewer ( ) ) ) ;
111+ return ;
112+ }
113+
114+ const fadeElements = document . querySelectorAll (
115+ '.fade-enter, .fade-enter-active, .fade-exit, .fade-exit-active' ,
116+ ) ;
117+
118+ if ( fadeElements . length > 0 ) {
119+ setTimeout ( ( ) => waitForAnimationComplete ( attempts + 1 ) , 50 ) ;
120+ return ;
121+ }
122+
123+ const viewerContainer = document . querySelector ( '#viewer-container' ) ;
124+ if ( viewerContainer ) {
125+ const computedStyle = window . getComputedStyle ( viewerContainer ) ;
126+ const opacity = parseFloat ( computedStyle . opacity ) ;
127+
128+ if ( opacity < 1 ) {
129+ setTimeout ( ( ) => waitForAnimationComplete ( attempts + 1 ) , 50 ) ;
130+ return ;
131+ }
132+ }
133+
134+ appendMessage ( 'Fade animation complete, sending content to Chromecast' ) ;
135+ sendMessage ( JSON . stringify ( getSanitizedViewer ( ) ) ) ;
136+ } ;
137+
138+ waitForAnimationComplete ( ) ;
109139} ;
110140
111141const onRequestSessionSuccess = ( e ) => {
0 commit comments