From ba1e1ccf869b818f7a7a897264dfea05563a7796 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 07 Jun 2026 20:10:20 +0000
Subject: [PATCH] =Major overhaul of Integrations. Playing around with adding fields to post types through Registrar from an integrations' class file.

---
 src/video/view.js |   55 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 45 insertions(+), 10 deletions(-)

diff --git a/src/video/view.js b/src/video/view.js
index 8974786..76bcd1a 100644
--- a/src/video/view.js
+++ b/src/video/view.js
@@ -1,12 +1,47 @@
-const observer = new IntersectionObserver((entries) => {
-	entries.forEach(entry => {
-		if (entry.isIntersecting) {
-			loadVideo(entry.target);
-			observer.unobserve(entry.target);
-		}
-	});
-});
+/** view.js **/
+document.addEventListener("DOMContentLoaded", function () {
+	const lazyVideos = [].slice.call(
+		document.querySelectorAll(".video-container video")
+	);
 
-document.querySelectorAll('.video-container .placeholder').forEach(el => {
-	observer.observe(el);
+	// Build a helper to actually set sources + load
+	function loadVideo(video) {
+		const sources = video.querySelectorAll("source[data-src]");
+		sources.forEach(source => {
+			source.src = source.dataset.src;
+		});
+		video.load();
+	}
+
+	// --- 1. IntersectionObserver (best case) ---
+	if ("IntersectionObserver" in window) {
+		const lazyVideoObserver = new IntersectionObserver(
+			function (entries, observer) {
+				entries.forEach(entry => {
+					if (entry.isIntersecting) {
+						loadVideo(entry.target);
+						observer.unobserve(entry.target);
+					}
+				});
+			},
+			{
+				rootMargin: "200px 0px",
+				threshold: 0.1,
+			}
+		);
+
+		lazyVideos.forEach(video => lazyVideoObserver.observe(video));
+		return;
+	}
+
+	// --- 2. Fallback: requestIdleCallback ---
+	if ("requestIdleCallback" in window) {
+		requestIdleCallback(() => {
+			lazyVideos.forEach(video => loadVideo(video));
+		});
+		return;
+	}
+
+	// --- 3. Final fallback: load immediately ---
+	lazyVideos.forEach(video => loadVideo(video));
 });

--
Gitblit v1.10.0