HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/insiders/wp-load/wp-content/plugins/gutenmate/lib/inview/_inview.js
class GtmScrollHandler {
	constructor() {
		this.scrollHandler = this.scrollHandler.bind(this);
		this.triggerScroll = this.triggerScroll.bind(this);

		// Init
		this.prevOffset = window.pageYOffset;

		// Setup scroll handler
		window.addEventListener("scroll", this.scrollHandler, {
			passive: true,
		});

		// Trigger for current inview items at page load
		window.addEventListener("DOMContentLoaded", this.scrollHandler);
	}

	scrollHandler(e) {
		let direction;

		if (window.pageYOffset >= this.prevOffset) {
			direction = "down";
		} else {
			direction = "up";
		}

		this.prevOffset = window.pageYOffset;
		this.triggerScroll(direction);
	}

	triggerScroll(direction = "down") {
		let event = new CustomEvent("gtmScrolling", {
			detail: { direction }, // Can access by e.detail.direction
		});

		window.dispatchEvent(event);
	}
}

const stuckClass = "gtm-header-stuck";
const stuckUpClass = "gtm-header-stuck-up";
const stuckDownClass = "gtm-header-stuck-down";

export const initScrollHandler = () => {
	if (!window.gtmScrollHandler) {
		window.gtmScrollHandler = new GtmScrollHandler();
	}
};

export function headerSticky(selector) {
	initScrollHandler();

	const divs = document.querySelectorAll(selector);
	divs.forEach((el) => {
		window.addEventListener(
			"gtmScrolling",
			(e) => {
				const isUp = e.detail.direction == "up";
				el.classList.toggle(stuckUpClass, isUp);
				el.classList.toggle(stuckDownClass, !isUp);

				let isStuck = window.pageYOffset > el.getBoundingClientRect().bottom;
				el.classList.toggle(stuckClass, isStuck);
			},
			{
				passive: true,
			}
		);
	});
}