(async function () { window.sfbtuData = {"url":"https:\/\/smart-bundles.theextensions.com\/storefront\/uxqg6s","script":"https:\/\/smart-bundles.theextensions.com\/js\/smart-fbt-upsells.js","settings":{"temp_product_id":null,"default_bundle_name":"Frequently Bought Together","placement":"before_product_description","max_bundles_slider":3,"created_at":"2026-04-15T09:53:17.000000Z"},"place":{"id":"before_product_description","label":"Before \"Product Description\"","selectors":[{"selector":".productView-description","position":"before"}]},"currency":{"symbol":"$","decimal_separator":".","thousands_separator":",","decimal_places":2,"currency_symbol_location":"left"}}; window.sfbtuApplicationBaseApiUrl = sfbtuData.url; const addScript = async src => new Promise((resolve, reject) => { const el = document.createElement('script'); el.src = src; el.addEventListener('load', resolve); el.addEventListener('error', reject); document.body.append(el); }); const insertPlaceHolders = () => { let place = window.sfbtuData.place; place.selectors.map((sel, index) => { let element = document.querySelector(sel.selector); let id = `product-sfbtu-placeholder-${place.id}-${index}`; if (element && !document.getElementById(id)) { let placeHolder = document.createElement(sel.tag ?? 'div'); placeHolder.className = place.id; placeHolder.id = id; placeHolder.dataset.productSfbtu = place.id; Object.assign(placeHolder.style, { width: '100%', float: 'left', paddingLeft: '1rem', paddingRight: '1rem', position: 'relative', zIndex: '1', }); placeHolder.innerHTML = ["
" , "Loading..." , "
"].join(''); if (sel.position === 'before') { element.parentNode.insertBefore(placeHolder, element) } else if (sel.position === 'inside') { element.append(placeHolder); } else if (sel.position === 'afterend') { element.insertAdjacentElement('afterend', placeHolder); console.log(element.nextSibling); } else if (sel.position === 'instead') { if (element.parentNode) { element.parentNode.replaceChild(placeHolder, element); } } else { element.parentNode.insertBefore(placeHolder, element.nextSibling); } } }); } insertPlaceHolders(); const productId = ( document.querySelector('.productView[data-entity-id]')?.getAttribute('data-entity-id') || document.querySelector('.productView-options input[name="product_id"]')?.value || window.__bc__?.productId )?.toString().trim(); if(productId) { setTimeout(() => { fetch('/api/storefront/carts', { method: "GET", credentials: "same-origin" }) .then(response => response.json()) .then(result => { window.bigcommerceCartId = result.length ? result[0].id : null; }) .catch(error => console.error(error)); }, 300) // --- Try to detect breadcrumb categories --- let categories = []; const breadcrumbLinks = document.querySelectorAll('.breadcrumbs .breadcrumb-label'); if (breadcrumbLinks.length > 2) { categories = Array.from(breadcrumbLinks) .slice(1, -1) .map(link => new URL(link.href).pathname); } const params = new URLSearchParams({ product_id: productId, categories: JSON.stringify(categories) }); fetch(window.sfbtuApplicationBaseApiUrl + '/bundles?' + params.toString(), { method: "GET", credentials: "same-origin" }) .then(response => response.json()) .then(result => { window.sfbtuProductData = result; console.log('tesssstttttt') addScript(sfbtuData.script + "?v=1").then(); }) .catch(error => console.error(error)); } })();