/** * Remove Video Overlay on click */ ;( function( $, _undefined ) { "use strict"; // Global variable for YouTube player API objects window.$us.YTPlayers = window.$us.YTPlayers || {}; /* @class wVideo */ $us.wVideo = function( container ) { const self = this; // Elements self.$container = $( container ); self.$videoH = $( '.w-video-h', self.$container ); // Cookies for the GDPR Compliance self.cookieName = self.$container.data( 'cookie-name' ); // Determines if video has overlay self.isWithOverlay = self.$container.hasClass( 'with_overlay' ); // Fix Safari Video Thumbnail before play if ( $ush.isSafari ) { ( self.getVideoElement() || { load: $.noop } ).load(); } // Prevent action if ( ! self.cookieName && ! self.isWithOverlay ) { return; } // Private "Variables" self.data = {}; // Get data for initializing the player if ( self.$container.is( '[onclick]' ) ) { self.data = self.$container[0].onclick() || {}; // Delete data everywhere except for the preview of the USBuilder, the data may be needed again to restore the elements. if ( ! $us.usbPreview() ) self.$container.removeAttr( 'onclick' ); } // Bondable events self._events = { hideOverlay: self._hideOverlay.bind( self ), confirm: self._confirm.bind( self ) }; // Initialization via confirmations if ( self.cookieName ) { self.$container .on( 'click', '.action_confirm_load', self._events.confirm ); } self.$container.one( 'click', '> *', self._events.hideOverlay ); }; // Export API $.extend( $us.wVideo.prototype, { /** * Get video element */ getVideoElement: function() { return $( 'video', this.$videoH )[0] || null; }, /** * Video Player initialization handler after confirmation * * @event handler */ _confirm: function() { const self = this; // Save permission to loading maps in cookies if ( $( 'input[name^=' + self.cookieName + ']:checked', self.$container ).length ) { $ush.setCookie( self.cookieName, /* value */1, /* days */365 ); } if ( self.isWithOverlay ) { self.insertPlayer(); } else { self.$videoH // Add video html markup to element .html( $ush.base64Decode( '' + $( 'script[type="text/template"]', self.$container ).text() ) ) .removeAttr( 'data-cookie-name' ); } }, /** * @param {Event} e The Event interface represents an event which takes place in the DOM. */ _hideOverlay: function( e ) { const self = this; e.preventDefault(); // Remove overlay. if ( self.$container.is( '.with_overlay' ) ) { self.$container .removeAttr( 'style' ) .removeClass( 'with_overlay' ); } // Add player to document. if ( ! self.cookieName ) { self.insertPlayer(); } }, /** * Add player to document. */ insertPlayer: function() { const self = this; var data = $.extend( { player_id: '', player_api: '', player_html: '' }, self.data || {} ); // If there is no API in the document yet, then add to the head. if ( data.player_api && ! $( 'script[src="'+ data.player_api +'"]', document.head ).length ) { $( 'head' ).append( '' ); } // Add player to document self.$videoH.html( data.player_html ); // Play "