(function () { 'use strict'; const loadTabContent = async (wrapper, key) => { const ajax = wrapper.dataset.ajax === 'yes'; if (!ajax) { return true; } const panel = wrapper.querySelector('.ka-woo-tabs__panel[data-tab="' + key + '"]'); if (!panel || !panel.querySelector('.ka-woo-tabs__placeholder')) { return true; } const ajaxUrl = wrapper.dataset.ajaxUrl; const nonce = wrapper.dataset.nonce; const productId = wrapper.dataset.productId; if (!ajaxUrl || !nonce || !productId) { return true; } panel.classList.add('is-loading'); const formData = new FormData(); formData.append('action', 'king_addons_render_product_tab'); formData.append('nonce', nonce); formData.append('product_id', productId); formData.append('tab_key', key); try { const response = await fetch(ajaxUrl, { method: 'POST', credentials: 'same-origin', body: formData, }); const result = await response.json(); if (result && result.success && result.data && typeof result.data.html === 'string') { panel.innerHTML = result.data.html; panel.dataset.loaded = 'yes'; } else { panel.innerHTML = '
Could not load content.
'; } } catch (e) { panel.innerHTML = '
Could not load content.
'; } panel.classList.remove('is-loading'); return true; }; const initTabs = (wrapper) => { const tabs = wrapper.querySelectorAll('.ka-woo-tabs__tab'); const panels = wrapper.querySelectorAll('.ka-woo-tabs__panel'); const accordions = wrapper.querySelectorAll('.ka-woo-tabs__accordion-toggle'); const setActive = (key) => { tabs.forEach((btn) => btn.classList.toggle('is-active', btn.dataset.tab === key)); panels.forEach((panel) => { const active = panel.dataset.tab === key; panel.classList.toggle('is-active', active); const body = panel.querySelector('.ka-woo-tabs__accordion-body'); if (body) { body.style.display = active ? 'block' : 'none'; } }); }; const handleSwitch = async (key) => { const panel = wrapper.querySelector('.ka-woo-tabs__panel[data-tab="' + key + '"]'); const needsLoad = panel && panel.querySelector('.ka-woo-tabs__placeholder'); if (needsLoad) { await loadTabContent(wrapper, key); } setActive(key); }; tabs.forEach((btn) => { btn.addEventListener('click', () => handleSwitch(btn.dataset.tab)); }); accordions.forEach((btn) => { btn.addEventListener('click', () => handleSwitch(btn.dataset.tab)); }); }; const bootstrap = (scope) => { const root = scope || document; root.querySelectorAll('.ka-woo-tabs').forEach(initTabs); }; document.addEventListener('DOMContentLoaded', () => bootstrap(document)); if (window.elementorFrontend && window.elementorFrontend.hooks) { window.elementorFrontend.hooks.addAction('frontend/element_ready/woo_product_tabs.default', (scope) => { bootstrap(scope[0] || scope); }); } })();