1(function ($) { 2 "use strict"; 3 4 var widgetSel = ".article-content-col.video"; 5 var isRo = (document.documentElement.lang || "").toLowerCase().indexOf("ro") === 0; 6 7 function getPlaylist($player) { 8 return $player.closest(".yotu-playlist"); 9 } 10 11 function currentVideoId($playlist, $player) { 12 if (window.yotuwp && yotuwp.player && yotuwp.player.current && yotuwp.player.current.video) { 13 return yotuwp.player.current.video; 14 } 15 16 var iframeSrc = $player.find("iframe").attr("src") || ""; 17 var fromIframe = iframeSrc.match(/\/embed\/([^?&/]+)/); 18 if (fromIframe) { 19 return fromIframe[1]; 20 } 21 22 return $playlist.find(".yotu-videos li:first-child a").data("videoid"); 23 } 24 25 function thumbFor($playlist, videoId) { 26 var $img = $playlist.find('a[data-videoid="' + videoId + '"] img').first(); 27 if ($img.length && $img.attr("src")) { 28 return $img.attr("src"); 29 } 30 return "https://i.ytimg.com/vi/" + videoId + "/mqdefault.jpg"; 31 } 32 33 function pauseInline($playlist) { 34 if (!window.yotuwp || !yotuwp.data || !yotuwp.data.players) { 35 return; 36 } 37 var playerId = $playlist.data("yotu"); 38 var player = yotuwp.data.players[playerId]; 39 if (player && typeof player.pauseVideo === "function") { 40 try { 41 player.pauseVideo(); 42 } catch (e) {} 43 } 44 } 45 46 function ensurePoster($player) { 47 var $poster = $player.children(".energy-yt-poster"); 48 if ($poster.length) { 49 return $poster; 50 } 51 52 $poster = $( 53 '<button type="button" class="energy-yt-poster" aria-label="' + 54 (isRo ? "RedÄ videoclipul vertical" : "Play vertical video") + 55 '">' + 56 '<img alt="">' + 57 '<span class="energy-yt-poster-play" aria-hidden="true"></span>' + 58 '<span class="energy-yt-poster-badge">Shorts</span>' + 59 "</button>" 60 ); 61 $player.append($poster); 62 return $poster; 63 } 64 65 function syncPoster($player) { 66 var $playlist = getPlaylist($player); 67 var $poster = ensurePoster($player); 68 var isVertical = $player.hasClass("yotu-player-vertical") || $playlist.hasClass("yotu-type-shorts"); 69 70 if (!isVertical) { 71 $poster.removeClass("is-visible").removeData("videoid"); 72 return; 73 } 74 75 var videoId = currentVideoId($playlist, $player); 76 if (!videoId) { 77 return; 78 } 79 80 $poster.find("img").attr("src", thumbFor($playlist, videoId)); 81 $poster.data("videoid", videoId).addClass("is-visible"); 82 pauseInline($playlist); 83 } 84 85 function closeModal() { 86 var $modal = $("#energy-yt-modal"); 87 $modal.removeClass("is-open"); 88 $modal.find("iframe").attr("src", ""); 89 $("body").css("overflow", ""); 90 } 91 92 function openModal(videoId) { 93 var $modal = $("#energy-yt-modal"); 94 if (!$modal.length) { 95 $modal = $( 96 '<div id="energy-yt-modal" class="energy-yt-modal" role="dialog" aria-modal="true">' + 97 '<div class="energy-yt-modal-backdrop"></div>' + 98 '<div class="energy-yt-modal-dialog">' + 99 '<button type="button" class="energy-yt-modal-close" aria-label="' + 100 (isRo ? "Ãnchide" : "Close") + 101 '">×</button>' + 102 '<iframe allow="autoplay; encrypted-media; picture-in-picture" allowfullscreen></iframe>' + 103 "</div>" + 104 "</div>" 105 ); 106 $("body").append($modal); 107 } 108 109 var src = 110 "https://www.youtube.com/embed/" + 111 encodeURIComponent(videoId) + 112 "?autoplay=1&rel=0&modestbranding=1"; 113 114 $modal.find("iframe").attr("src", src); 115 $modal.addClass("is-open"); 116 $("body").css("overflow", "hidden"); 117 } 118 119 function observePlayer($player) { 120 if (!$player.length || $player.data("energyYtObserved")) { 121 return; 122 } 123 $player.data("energyYtObserved", true); 124 125 syncPoster($player); 126 127 if (typeof MutationObserver === "function") { 128 var observer = new MutationObserver(function () { 129 syncPoster($player); 130 }); 131 observer.observe($player.get(0), { attributes: true, attributeFilter: ["class"] }); 132 } 133 } 134 135 function initWidget() { 136 var $player = $(widgetSel + " .yotu-player").first(); 137 if (!$player.length) { 138 return false; 139 } 140 observePlayer($player); 141 return true; 142 } 143 144 $(document).on("click", widgetSel + " .energy-yt-poster", function (e) { 145 e.preventDefault(); 146 e.stopPropagation(); 147 var videoId = $(this).data("videoid"); 148 if (!videoId) { 149 return; 150 } 151 pauseInline($(this).closest(".yotu-playlist")); 152 openModal(videoId); 153 }); 154 155 $(document).on("click", ".energy-yt-modal-backdrop, .energy-yt-modal-close", function (e) { 156 e.preventDefault(); 157 closeModal(); 158 }); 159 160 $(document).on("keydown", function (e) { 161 if (e.key === "Escape") { 162 closeModal(); 163 } 164 }); 165 166 $(document).on("click", widgetSel + " .yotu-videos a.yotu-video", function () { 167 var videoId = $(this).data("videoid"); 168 var $player = $(widgetSel + " .yotu-player").first(); 169 var cache = window.yotuwp && yotuwp.player && yotuwp.player.aspect_cache; 170 171 if (cache && typeof cache[videoId] !== "undefined" && !cache[videoId]) { 172 $player.children(".energy-yt-poster").removeClass("is-visible"); 173 } 174 175 setTimeout(function () { 176 syncPoster($player); 177 }, 80); 178 }); 179 180 function boot() { 181 if (initWidget()) { 182 return; 183 } 184 var tries = 0; 185 var timer = setInterval(function () { 186 tries += 1; 187 if (initWidget() || tries > 80) { 188 clearInterval(timer); 189 } 190 }, 250); 191 } 192 193 $(boot); 194})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.