HEX
Server: nginx/1.24.0
System: Linux 0c1023d6c65e 6.8.0-137-generic #137-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 17 20:28:23 UTC 2026 x86_64
User: root (0)
PHP: 8.3.33
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/themes/thegem-elementor/js/ethnic-megamenu.js
(() => {
	const desktopQuery = window.matchMedia('(min-width: 1213px)');
	const requestedMega = new URLSearchParams(window.location.search).get('ethnicMega');

	const initTabGroups = () => {
		const groups = Array.from(document.querySelectorAll('[data-ethnic-tab-group]'));

		groups.forEach((group) => {
			if (group.dataset.ethnicTabsBound === 'true') {
				return;
			}

			const tabs = Array.from(group.querySelectorAll('[data-ethnic-tab]')).filter(
				(tab) => tab.closest('[data-ethnic-tab-group]') === group
			);
			const panes = Array.from(group.querySelectorAll('[data-ethnic-pane]')).filter(
				(pane) => pane.closest('[data-ethnic-tab-group]') === group
			);

			group.dataset.ethnicTabsBound = 'true';

			if (!tabs.length || !panes.length) {
				return;
			}

			let lastInteractionWasPointer = false;

			const activate = (slug) => {
				tabs.forEach((tab) => {
					const isActive = tab.dataset.ethnicTab === slug;
					tab.classList.toggle('is-active', isActive);
					tab.setAttribute('aria-selected', isActive ? 'true' : 'false');
				});

				panes.forEach((pane) => {
					const isActive = pane.dataset.ethnicPane === slug;
					pane.classList.toggle('is-active', isActive);
					pane.setAttribute('aria-hidden', isActive ? 'false' : 'true');
				});
			};

			group.addEventListener('pointerdown', () => {
				lastInteractionWasPointer = true;
			});

			group.addEventListener('keydown', () => {
				lastInteractionWasPointer = false;
			});

			tabs.forEach((tab) => {
				const slug = tab.dataset.ethnicTab;

				tab.addEventListener('pointerenter', () => {
					activate(slug);
				});

				tab.addEventListener('focus', () => {
					if (!lastInteractionWasPointer) {
						activate(slug);
					}
				});

				tab.addEventListener('click', (event) => {
					event.preventDefault();
				});
			});

			const defaultTab = tabs.find((tab) => tab.classList.contains('is-active')) || tabs[0];
			activate(defaultTab.dataset.ethnicTab);
		});
	};

	const bindDropdowns = () => {
		const items = Array.from(document.querySelectorAll('.ethnic-mega-enhanced'));

		if (!items.length) {
			return;
		}

		const closeItem = (item) => {
			item.classList.remove('is-open');
			const trigger = item.querySelector(':scope > a[data-ethnic-mega-trigger]');
			if (trigger) {
				trigger.setAttribute('aria-expanded', 'false');
			}
		};

		const openItem = (item) => {
			if (!desktopQuery.matches) {
				return;
			}

			items.forEach((candidate) => {
				if (candidate !== item) {
					closeItem(candidate);
				}
			});

			item.classList.add('is-open');
			const trigger = item.querySelector(':scope > a[data-ethnic-mega-trigger]');
			if (trigger) {
				trigger.setAttribute('aria-expanded', 'true');
			}
		};

		const closeAll = () => {
			items.forEach(closeItem);
		};

		items.forEach((item) => {
			if (item.dataset.ethnicMegaBound === 'true') {
				return;
			}

			item.dataset.ethnicMegaBound = 'true';
			let lastInteractionWasPointer = false;
			const trigger = item.querySelector(':scope > a[data-ethnic-mega-trigger]');

			item.addEventListener('pointerdown', () => {
				lastInteractionWasPointer = true;
			});

			item.addEventListener('keydown', () => {
				lastInteractionWasPointer = false;
			});

			item.addEventListener('mouseenter', () => openItem(item));
			item.addEventListener('mouseleave', () => closeItem(item));
			item.addEventListener('focusin', () => {
				if (!lastInteractionWasPointer) {
					openItem(item);
				}
			});
			item.addEventListener('focusout', () => {
				window.requestAnimationFrame(() => {
					if (!item.contains(document.activeElement)) {
						closeItem(item);
					}
				});
			});
			item.addEventListener('keydown', (event) => {
				if (event.key === 'Escape') {
					closeItem(item);
					item.querySelector(':scope > a[data-ethnic-mega-trigger]')?.focus();
				}
			});

			if (trigger) {
				trigger.addEventListener('click', (event) => {
					event.preventDefault();
				});
			}
		});

		document.addEventListener('pointerdown', (event) => {
			if (!event.target.closest('.ethnic-mega-enhanced')) {
				closeAll();
			}
		});

		document.addEventListener('keydown', (event) => {
			if (event.key === 'Escape') {
				closeAll();
			}
		});

		if (typeof desktopQuery.addEventListener === 'function') {
			desktopQuery.addEventListener('change', (event) => {
				if (!event.matches) {
					closeAll();
				}
			});
		}
	};

	const boot = () => {
		initTabGroups();
		bindDropdowns();

		if (requestedMega && desktopQuery.matches) {
			const requestedItem = document.querySelector(`.ethnic-mega--${requestedMega}`);
			if (requestedItem) {
				requestedItem.classList.add('is-open');
				requestedItem.querySelector(':scope > a[data-ethnic-mega-trigger]')?.setAttribute('aria-expanded', 'true');
			}
		}
	};

	if (document.readyState === 'loading') {
		document.addEventListener('DOMContentLoaded', boot, { once: true });
	} else {
		boot();
	}
})();