document.addEventListener('DOMContentLoaded', function () { const boxes = document.querySelectorAll('.meal-tab .text'); const menuWrap = document.querySelector('#menu-content'); let splideInstances = []; const mealHTMLMap = { "1": `

雅コース

当館最上級コースです。
料理長が腕によりをかけて仕上げる豪華なお造りは、花盛りで美しく華やかに。
豪華に彩る懐石料理となります。

季節や仕入れによって料理内容が変更になる可能性もあります。予めご了承くださいませ。
`, "2": `

松コース

当館人気ナンバーワンの上級懐石です。
前菜からデザートまでこだわりぬいた
料理長渾身の懐石料理をお楽しみ下さい。

季節や仕入れによって料理内容が変更になる可能性もあります。予めご了承くださいませ。
`, "3": `

竹コース

四季折々の地元食材を使用した懐石料理をお楽しみいただけます。
皆様から大変好評をいただいている豆乳しゃぶしゃぶや、地魚のお造り、
旬の食材をふんだんに使用した創作懐石をお楽しみ下さい。

季節や仕入れによって料理内容が変更になる可能性もあります。予めご了承くださいませ。
`, "4": `

梅コース

気軽に懐石料理を楽しみたい方におすすめのコースです。
甘い香りが食欲をそそる日南どりのくるみ味噌焼きなど
リーズナブルでありながら、お腹も心も満たされる品々で彩ります。

季節や仕入れによって料理内容が変更になる可能性もあります。予めご了承くださいませ。
`, }; function waitForImages(callback) { const images = menuWrap.querySelectorAll('img'); let loaded = 0; if (images.length === 0) return callback(); images.forEach(img => { if (img.complete) { loaded++; if (loaded === images.length) callback(); } else { img.addEventListener('load', () => { loaded++; if (loaded === images.length) callback(); }); img.addEventListener('error', () => { loaded++; if (loaded === images.length) callback(); }); } }); } function initMenuSplide() { splideInstances.forEach(instance => instance.destroy()); splideInstances = []; document.querySelectorAll('.meal-splide01, .meal-splide02, .meal-splide03').forEach(splideEl => { let options; if (splideEl.classList.contains('meal-splide01') || splideEl.classList.contains('meal-splide03')) { options = { type: 'loop', perPage: 1, focus: 'center', gap: '1rem', padding: { left: '25%', right: '25%' }, autoplay: true, interval: 6000, speed: 2000, arrows: true, pagination: true, pauseOnHover: false, pauseOnFocus: false, breakpoints: { 768: { padding: { left: '0%', right: '0%' }, gap: '1rem', }, }, }; } else if (splideEl.classList.contains('meal-splide02')) { options = { type: 'loop', perPage: 1, autoplay: true, interval: 6000, speed: 2000, pagination: true, pauseOnHover: false, pauseOnFocus: false, }; } const instance = new Splide(splideEl, options); instance.mount(); splideInstances.push(instance); }); } function loadMenuHTML(menuNumber) { const html = mealHTMLMap[menuNumber]; if (!html) { menuWrap.innerHTML = '

料理情報が見つかりません。

'; return; } // フェードアウト → HTML差し替え → フェードイン menuWrap.classList.add('fade-out'); setTimeout(() => { menuWrap.innerHTML = html; requestAnimationFrame(() => { waitForImages(() => { initMenuSplide(); menuWrap.classList.remove('fade-out'); }); }); }, 1000); // フェードアウト時間に合わせて調整 } boxes.forEach(box => { box.addEventListener('click', function () { const menuNumber = this.dataset.meal_tab; boxes.forEach(b => b.classList.remove('active')); this.classList.add('active'); loadMenuHTML(menuNumber); }); }); const defaultMenu = "1"; document.querySelector(`.meal-tab .text[data-meal_tab="${defaultMenu}"]`)?.classList.add('active'); loadMenuHTML(defaultMenu); });