PageSourceSearch

https://www.energynomics.ro/wp-content/themes/energynomics/resurse/scripts/home-youtube.js?ver=6ab5c930a7ff4

js energynomics.ro collected 2026-09-25 04:35:16 UTC 5,139 bytes, 194 lines download raw bytes

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						'">&times;</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.