| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- document.body.classList.add('about-nav-light');
- (function () {
- var siteHeader = document.getElementById('siteHeader');
- var siteLogoImg = document.getElementById('siteLogoImg');
- var links = Array.prototype.slice.call(document.querySelectorAll('.about-side-link'));
- var panels = Array.prototype.slice.call(document.querySelectorAll('.about-panel[data-panel]'));
- var accordions = Array.prototype.slice.call(document.querySelectorAll('.about-inline-accordion'));
- function syncAboutHeader() {
- if (!siteHeader) return;
- siteHeader.classList.remove('hero-theme-light');
- siteHeader.classList.add('hero-theme-dark', 'page-navbar-solid');
- }
- if (siteHeader) {
- syncAboutHeader();
- if (siteLogoImg) {
- var darkLogo = siteLogoImg.getAttribute('data-logo-dark');
- if (darkLogo) siteLogoImg.src = darkLogo;
- }
- window.addEventListener('scroll', syncAboutHeader, { passive: true });
- document.addEventListener('DOMContentLoaded', syncAboutHeader);
- }
- function setActiveLink(id) {
- links.forEach(function (link) {
- var active = link.getAttribute('data-target') === id;
- link.classList.toggle('is-active', active);
- if (active) link.setAttribute('aria-current', 'true');
- else link.removeAttribute('aria-current');
- });
- panels.forEach(function (panel) {
- panel.classList.toggle('is-active', panel.getAttribute('data-panel') === id);
- });
- }
- links.forEach(function (link) {
- link.addEventListener('click', function (event) {
- event.preventDefault();
- var targetId = link.getAttribute('data-target');
- var targetEl = targetId ? document.getElementById(targetId) : null;
- if (targetEl) {
- targetEl.scrollIntoView({ behavior: 'smooth', block: 'start' });
- setActiveLink(targetId);
- }
- });
- });
- if ('IntersectionObserver' in window && panels.length) {
- var observer = new IntersectionObserver(function (entries) {
- var visible = entries.filter(function (entry) { return entry.isIntersecting; }).sort(function (a, b) { return b.intersectionRatio - a.intersectionRatio; });
- if (visible.length) setActiveLink(visible[0].target.getAttribute('data-panel'));
- }, { threshold: [0.35, 0.5, 0.68, 0.85], rootMargin: '-16% 0px -22% 0px' });
- panels.forEach(function (panel) { observer.observe(panel); });
- } else if (panels.length) {
- var onScroll = function () {
- var current = panels[0];
- var marker = window.innerHeight * 0.42;
- panels.forEach(function (panel) {
- var rect = panel.getBoundingClientRect();
- if (rect.top <= marker && rect.bottom >= marker) current = panel;
- });
- if (current) setActiveLink(current.getAttribute('data-panel'));
- };
- window.addEventListener('scroll', onScroll, { passive: true });
- onScroll();
- }
- function initAccordion(accordion) {
- var stageButtons = Array.prototype.slice.call(accordion.querySelectorAll('.about-accordion-year'));
- var stagePanels = Array.prototype.slice.call(accordion.querySelectorAll('.about-stage-panel[data-stage-panel]'));
- var stageItems = Array.prototype.slice.call(accordion.querySelectorAll('.about-inline-accordion-item[data-accordion-item], .about-inline-accordion-item'));
- function setActiveStage(targetId) {
- if (!targetId) return;
- stageButtons.forEach(function (button) {
- button.classList.toggle('is-active', button.getAttribute('data-stage-target') === targetId);
- });
- stagePanels.forEach(function (panel) {
- panel.classList.toggle('is-active', panel.id === targetId);
- });
- stageItems.forEach(function (item) {
- var button = item.querySelector('.about-accordion-year');
- var active = button && button.getAttribute('data-stage-target') === targetId;
- item.classList.toggle('is-active', !!active);
- });
- }
- stageButtons.forEach(function (button) {
- button.addEventListener('click', function () {
- setActiveStage(button.getAttribute('data-stage-target'));
- });
- });
- if (stageButtons.length) {
- setActiveStage(stageButtons[0].getAttribute('data-stage-target'));
- }
- }
- accordions.forEach(initAccordion);
- Array.prototype.slice.call(document.querySelectorAll('[data-stage-slider]')).forEach(function (slider) {
- var slides = Array.prototype.slice.call(slider.querySelectorAll('[data-stage-slide]'));
- var prevBtn = slider.querySelector('.about-stage-arrow-prev');
- var nextBtn = slider.querySelector('.about-stage-arrow-next');
- var index = 0;
- slides.forEach(function (slide, i) {
- slide.hidden = false;
- slide.classList.toggle('is-active', i === 0);
- });
- function render(direction) {
- slides.forEach(function (slide, slideIndex) {
- slide.classList.remove('is-active', 'is-leaving-left', 'is-leaving-right', 'is-entering-left', 'is-entering-right');
- if (slideIndex === index) {
- if (direction === 'prev') slide.classList.add('is-entering-left');
- if (direction === 'next') slide.classList.add('is-entering-right');
- requestAnimationFrame(function () {
- slide.classList.add('is-active');
- slide.classList.remove('is-entering-left', 'is-entering-right');
- });
- }
- });
- var single = slides.length <= 1;
- prevBtn.disabled = single;
- nextBtn.disabled = single;
- prevBtn.style.display = single ? 'none' : 'flex';
- nextBtn.style.display = single ? 'none' : 'flex';
- }
- prevBtn.addEventListener('click', function () {
- if (slides.length <= 1) return;
- slides[index].classList.add('is-leaving-right');
- index = (index - 1 + slides.length) % slides.length;
- render('prev');
- });
- nextBtn.addEventListener('click', function () {
- if (slides.length <= 1) return;
- slides[index].classList.add('is-leaving-left');
- index = (index + 1) % slides.length;
- render('next');
- });
- render();
- });
- if (panels.length) {
- setActiveLink(panels[0].getAttribute('data-panel'));
- }
- })();
|