Situs OMPONG188 Terbaru & Link Gacor Hari Ini

Bandingkan Produk (0)

Belum ada produk dipilih

Pilih produk yang ingin dibandingkan dengan klik tombol "Bandingkan Produk" di halaman produk.

💡 Catatan: Analisis ini dihasilkan secara otomatis dan dapat memiliki keterbatasan. Gunakan sebagai referensi tambahan dengan tetap mempertimbangkan kebutuhan Anda. Untuk informasi lebih lanjut, silakan hubungi tim OMPONG188.
OMPONG188

OMPONG188: Pilihan Hiburan Digital dengan Game Online Terbaru 2026

Rp 10.000,-Rp 1.000.000-99.5%
OMPONG188
OMPONG188
SITUS OMPONG188
OMPONG188 LOGIN
OMPONG188 DAFTAR
LINK OMPONG188
SITUS OMPONG188

OMPONG188: Pilihan Hiburan Digital dengan Game Online Terbaru 2026

Rp 10.000 Rp 50.000 -95%
Terjual 2
OMPONG188 SKU: 1S83N0880RID
💳 Autorized OMPONG188 Link OMPONG188
Bandingkan hingga 5 produk dengan bantuan AI

Informasi OMPONG188:

  • Minimal Deposit: Rp.10.000,-
  • Jenis Permainan: Game Gacor, Game Online, Live Khasino
  • Metode Pembayaran: Bank, QRIS, E-Wallet
  • Mata Uang: IDR (Indonesian Rupiah)
  • Jam Operasional: 24 Jam Nonstop
  • Total Rating: 7.777.123
  • Rating: ⭐⭐⭐⭐⭐
  • Daftar Sekarang: Klik Disini

⚡ OMPONG188 GAMPANG JACKPOT⚡

— READY —
Provider Rekomendasi
-
Mode: - RTP: -
RTP OMPONG188
-
Jam Ramai
-
Pola Main
-
Status
-
Tips: Ini simulasi hiburan. Gunakan dengan bijak.
3 Alternatif Provider RTP
Copyright- Initial-B
Mode ${type} • RTP ${x.rtp}%
Spin Meter: ${getSpinMeter()}
`; wrap.appendChild(el); }); } function spinButton(btn, on) { if (on) { btn.disabled = true; btn.dataset.text = btn.innerHTML; btn.innerHTML = '🔄 PROCESSING...'; } else { btn.disabled = false; btn.innerHTML = btn.dataset.text || '🎰 GENERATE RTP'; } } /* =============================== INIT ================================ */ (function init() { const sel = $("#providerFilter"); uniqueProviders().forEach(p => { const option = document.createElement("option"); option.value = p; option.textContent = p; sel.appendChild(option); }); $("#btnRtpRandom").addEventListener("click", (e) => { const btn = e.currentTarget; const type = $("#OMPONG188TypeFilter").value; const filtered = applyFilters(); const st = $("#rtpStatus"); if (!filtered.length) { st.textContent = "— NO MATCH —"; st.style.color = "#ffffff"; renderAlts([], type); $("#rProvider").textContent = "-"; $("#rOMPONG188Type").textContent = type; $("#rPercent").textContent = "-"; $("#rRtpValue").textContent = "-"; $("#rJam").textContent = "-"; $("#rPola").textContent = "-"; $("#rStatusText").textContent = "-"; return; } spinButton(btn, true); st.textContent = "— SCANNING RTP —"; st.style.animation = "pulse .6s linear infinite"; st.style.color = "#ffffff"; const t0 = setInterval(() => { const temp = pickRandom(filtered, 1)[0]; $("#rProvider").textContent = `${temp.provider} (${temp.code}) • Jam Ramai ${temp.jam}`; $("#rOMPONG188Type").textContent = type; $("#rPercent").textContent = `${temp.rtp}%`; $("#rRtpValue").textContent = getRtpText(temp.rtp); $("#rJam").textContent = temp.jam; $("#rPola").textContent = getRandomPattern(); $("#rStatusText").textContent = getRandomStatus(); }, 85); setTimeout(() => { clearInterval(t0); const picks = pickRandom(filtered, 4); renderMain(picks[0], type); renderAlts(picks.slice(1), type); st.textContent = "— READY —"; st.style.animation = ""; st.style.color = "#ffe8d8"; spinButton(btn, false); }, 1200); }); renderAlts([], "HIGH"); })();

OMPONG188

OMPONG188

Pilihan hiburan digital terus berkembang seiring munculnya berbagai game online dengan konsep dan pengalaman yang semakin beragam. Tidak sedikit pengguna yang lebih menikmati proses menjelajah daripada langsung mencari satu permainan tertentu, karena sering kali justru menemukan pilihan menarik yang sebelumnya belum pernah dicoba. OMPONG188 menghadirkan suasana tersebut melalui koleksi game online terbaru yang terus diperbarui sehingga setiap kunjungan memberikan kesempatan untuk menemukan pengalaman yang berbeda sepanjang tahun 2026.

Keberagaman koleksi menjadi salah satu alasan mengapa sebuah halaman tetap menarik untuk dikunjungi. Saat pilihan permainan terus bertambah dan kategori semakin lengkap, pengguna memiliki lebih banyak ruang untuk mengeksplorasi berbagai tema sesuai dengan minat masing-masing. OMPONG188 terus mengikuti perkembangan hiburan digital dengan menghadirkan pembaruan secara berkala, sehingga setiap perubahan membawa suasana baru tanpa mengurangi kenyamanan saat menjelajah.

Pada akhirnya, hiburan digital bukan hanya tentang banyaknya permainan yang tersedia, tetapi juga tentang bagaimana sebuah halaman mampu menghadirkan pengalaman yang terus berkembang. OMPONG188 memadukan koleksi game online terbaru, pembaruan yang konsisten, dan tampilan yang mudah digunakan agar setiap kunjungan selalu terasa berbeda. Dengan cara tersebut, proses menjelajahi berbagai pilihan permainan menjadi lebih menyenangkan sekaligus memberikan alasan untuk terus mengikuti perkembangan yang hadir sepanjang tahun 2026.

⚡ STATUS: Sistem STABIL, CEPAT, dan TERBARU untuk pengalaman akses maksimal.

FAQ

Bagaimana OMPONG188 menghadirkan hiburan digital yang terus berkembang?
OMPONG188 terus mengikuti perkembangan dunia hiburan digital dengan menghadirkan berbagai game online terbaru serta melakukan pembaruan koleksi permainan secara berkala. Dengan adanya penambahan kategori dan konten baru, pengguna dapat menikmati pengalaman menjelajah yang selalu terasa segar sepanjang tahun 2026.
Apa yang membuat koleksi game online di OMPONG188 selalu menarik untuk dijelajahi?
Setiap pembaruan membawa pilihan permainan baru yang mengikuti perkembangan terbaru. OMPONG188 tidak hanya menghadirkan permainan yang sedang populer, tetapi juga terus menambah variasi kategori agar pengguna memiliki lebih banyak alternatif saat ingin menikmati hiburan digital.
Mengapa hiburan digital di OMPONG188 terasa lebih beragam?
Keberagaman koleksi permainan menjadi salah satu alasan utama. OMPONG188 menghadirkan berbagai game online dari banyak kategori sehingga setiap pengguna dapat menemukan pilihan sesuai dengan minatnya. Pembaruan yang dilakukan secara konsisten juga membuat pengalaman menjelajah tidak mudah terasa monoton.
Apa keuntungan mengikuti pembaruan yang hadir sepanjang tahun 2026?
Pembaruan yang dilakukan sepanjang tahun memberikan kesempatan kepada pengguna untuk terus menemukan permainan dan kategori terbaru. Dengan demikian, setiap kunjungan ke OMPONG188 selalu menghadirkan sesuatu yang berbeda sehingga pengalaman menjelajah tetap menarik dari waktu ke waktu.
Mengapa OMPONG188 menjadi pilihan untuk menikmati game online terbaru?
OMPONG188 menghadirkan koleksi game online yang terus berkembang dan mengikuti perubahan dunia hiburan digital. Perpaduan antara pilihan permainan yang semakin lengkap, pembaruan rutin, dan tampilan yang nyaman membuat pengguna lebih mudah menemukan berbagai game online terbaru dalam satu halaman.
Apa yang membuat pengguna betah menjelajahi OMPONG188?
Selain koleksi permainan yang terus bertambah, OMPONG188 juga menghadirkan pengalaman menjelajah yang sederhana dan mudah dipahami. Setiap pembaruan memberikan alasan baru untuk kembali sehingga pengguna dapat menikmati hiburan digital dengan lebih nyaman dan beragam sepanjang tahun 2026.

Bagikan Produk

OMPONG188

OMPONG188

Rp 20.789.000

Bagikan ke

${variantText?` · ${escapeHtml(variantText)}`:''}
SKU: ${escapeHtml(skuText)} · Qty: ${qty}`, duration: 5000, actions: [{ label: 'Lihat Keranjang', onClick: () => {} }, { label: 'Lanjut Belanja', variant: 'alt', onClick: () => {} }] }); try { if (window.ga4Ecomm) { const qtySend = qty || 1; window.ga4Ecomm.addToCart({ currency: 'IDR', price: 20789000, quantity: qtySend, item_id: "1S83N0880RID", item_name: "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", item_brand: "Lenovo ", item_category: (["Komputer & Laptop", "Laptop", "Gaming"] || []).join(' / ') }) } } catch (_) {} return false } function showErrorToast() { showToast({ type: 'error', title: 'Gagal Menambah ke Keranjang', message: 'Terjadi kesalahan saat memproses permintaan. Silakan coba lagi.', duration: 5000 }) } function executeBuyNowLegacy(id, variantId) { const a = getVariantSummaryText(), b = (function() { const c = document.getElementById('pd-sku'); return c ? c.textContent.trim() : _0x5e6f })(); let willRedirect = false; try { if (window.addToCart) { window.addToCart(id, 1, variantId); willRedirect = false; } } catch (_) {} if (willRedirect) { showToast({ type: 'info', title: 'Menuju Keranjang', message: `${escapeHtml(PD_NAME)}${variantText?` · ${escapeHtml(variantText)}`:''}
SKU: ${escapeHtml(skuText)} · Qty: 1`, duration: 1800 }); setTimeout(() => { window.location.href = '/keranjang'; }, 1200); } else { showToast({ type: 'warn', title: 'Fitur Beli Langsung Segera Hadir', message: `Sementara ini Anda bisa menambahkan produk ke keranjang terlebih dahulu.
${escapeHtml(PD_NAME)}${variantText?` · ${escapeHtml(variantText)}`:''}`, duration: 6000, actions: [{ label: '+ Keranjang', onClick: () => { try { if (window.addToCart) window.addToCart(id, 1, variantId); } catch (_) {} } }, { label: 'Hubungi CS', variant: 'alt', onClick: () => { window.open('https://linkpeduli.me/whatsapp', '_blank'); } }] }); } } document.addEventListener('DOMContentLoaded', function() { var a = document.getElementById('pd-buy-form'); if (a) { a.addEventListener('submit', function(e) { var b = parseInt(a.getAttribute('data-pid'), 10) || 0; if (window.addToCartSubmit) { return window.addToCartSubmit(e, b) } }) } }); document.addEventListener('DOMContentLoaded', function() { var a = document.getElementById('btn-buy'); if (a) { a.addEventListener('click', function() { var b = a.getAttribute('data-id'); buyNow(b) }) } }); function _0x2m3n(s) { return String(s || '').replace(/[&"']/g, m => ({ '&': '&', '': '>', '"': '"', "'": ''' } [m])) } (function initGallery() { const mainImg = document.getElementById('pd-main-img'); const gallery = document.getElementById('pd-thumb-gallery'); if (!mainImg || !gallery) return; gallery.addEventListener('click', function(ev) { const btn = ev.target.closest('.pd-thumb-btn'); if (!btn) return; const full = btn.getAttribute('data-full'); if (full) { mainImg.src = full; const alt = btn.getAttribute('data-alt') || ''; if (alt) mainImg.alt = alt; const slug = btn.getAttribute('data-slug') || ''; if (slug) mainImg.dataset.slug = slug; gallery.querySelectorAll('.pd-thumb-btn').forEach(b => b.classList.remove('active')); btn.classList.add('active') } }) })(); (function initMobileSliderCounter() { const slider = document.getElementById('pd-mobile-slider'); const counter = document.getElementById('pd-gallery-counter'); if (!slider || !counter) return; let ticking = false; slider.addEventListener('scroll', function() { if (!ticking) { window.requestAnimationFrame(function() { const slides = slider.querySelectorAll('.pd-mslide'); if (!slides.length) return; const containerRect = slider.getBoundingClientRect(); const containerCenter = containerRect.left + containerRect.width / 2; let currentIdx = 0; let minDist = Infinity; slides.forEach((slide, idx) => { const slideRect = slide.getBoundingClientRect(); const slideCenter = slideRect.left + slideRect.width / 2; const dist = Math.abs(slideCenter - containerCenter); if (dist { let d = b[m] ?? 1; if (zeroEligible && (bank === 'BRI' || bank === 'Mandiri')) { d = 1; c = true } const e = a / d; const f = m > 0 ? Math.ceil((e / m) / 100) * 100 : 0; const g = document.createElement('li'); g.className = 'inst-month-item'; g.innerHTML = `${m}x${formatRupiah(f)} / bln${zeroEligible&&(bank==='BRI'||bank==='Mandiri')?'0%':''}`; listEl.appendChild(g) }); zeroNote.style.display = c ? 'block' : 'none' } card.addEventListener('click', function(ev) { const a = ev.target.closest('.bank-tab'); if (!a) return; card.querySelectorAll('.bank-tab').forEach(b => { b.classList.remove('active'); b.setAttribute('aria-selected', 'false') }); a.classList.add('active'); a.setAttribute('aria-selected', 'true'); _0x4o5p(a.dataset.bank) }); window.instSetBasePrice = function(newPrice) { setBasePrice(newPrice); _0x4o5p(activeBank()) }; _0x4o5p(activeBank()); })(); /* ====== Fokus gambar varian ====== */ function _0x6q7r(s) { return String(s || '').toLowerCase().replace(/[^a-z0-9]+/g, '') } function _0x8s9t(u) { try { return new URL(u, window.location.origin).pathname.split('/').pop().toLowerCase() } catch (e) { try { return (u || '').split('/').pop().toLowerCase() } catch (_) { return '' } } } function _0xau1v(url, altOpt) { const a = document.getElementById('pd-main-img'), b = document.getElementById('pd-thumb-gallery'), c = document.getElementById('pd-mobile-slider'); if (a && url) { a.src = url; if (altOpt) a.alt = altOpt } if (b) { const d = _0x8s9t(url); let e = null; b.querySelectorAll('.pd-thumb-btn').forEach(btn => { const f = btn.getAttribute('data-full') || '', g = _0x8s9t(f) === d; if (g) e = btn; btn.classList.toggle('active', g) }); if (e) { const h = e.getAttribute('data-alt') || '', i = e.getAttribute('data-slug') || ''; if (h && a) a.alt = h; if (i && a) a.dataset.slug = i } } if (c) { const targetName = _0x8s9t(url); const slideImg = Array.from(c.querySelectorAll('img')).find(im => _0x8s9t(im.src) === targetName); if (slideImg) { try { const container = c; const imgRect = slideImg.getBoundingClientRect(); const contRect = container.getBoundingClientRect(); const offsetLeft = slideImg.offsetLeft - container.offsetLeft; const center = offsetLeft - (container.clientWidth - slideImg.clientWidth) / 2; container.scrollTo({ left: Math.max(0, center), behavior: 'smooth' }); } catch (_) { slideImg.scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' }); } } } } function findImageForVariant(variant) { if (!variant || !variant.attrs) return null; const tokens = []; try { Object.values(variant.attrs).forEach(v => { if (!v) return; const raw = String(v); tokens.push(raw); tokens.push(normalize(raw)); }); } catch (_) {} if (variant.sku) { tokens.push(String(variant.sku)); tokens.push(normalize(String(variant.sku))); } if (variant.image_url) { tokens.push(String(variant.image_url)); } let best = null; let bestScore = -1; for (const g of (galleryData || [])) { const slugN = normalize(g.slug || ''); const altN = normalize(g.alt || ''); const file = _0x8s9t(g.url || ''); const fileN = normalize(file); const imgU = g.url; for (const t of tokens) { const tN = normalize(t); if (!tN) continue; let score = -1; if (imgU === tN) score = 300; if (slugN && slugN === tN) score = 300; else if (fileN && fileN.includes(tN)) score = 200; else if (altN && altN.includes(tN)) score = 120; if (score > bestScore) { bestScore = score; best = g; } if (bestScore >= 300) break; } if (bestScore >= 300) break; } return bestScore >= 120 ? best : null; } function _0xey3z(variant) { const a = _0xcw2x(variant); if (a && a.url) { _0xau1v(a.url, a.alt || '') } } /* ====== Layout mobile ====== */ (function _0xg04h() { const a = document.querySelector('.pd-media-card'), b = document.getElementById('pd-price-block'), c = document.getElementById('pd-price-anchor'), d = document.querySelector('.pd-info-card'), e = document.getElementById('pd-title'), f = document.getElementById('pd-variant-combined'), g = document.getElementById('pd-variants'), h = document.getElementById('pd-variants-anchor'), i = document.getElementById('pd-variant-summary'), j = document.getElementById('pd-summary-anchor'), titleRow = document.querySelector('.pd-title-row'), promoBanner = document.querySelector('.promo-endyear-mini-banner'), compareSection = document.querySelector('.pd-compare-section'); if (!a || !b || !c || !d || !e) return; let pricePlaced = false; let varPlaced = false; let titlePlaced = false; let promoPlaced = false; const mq = window.matchMedia('(max-width: 640px)'); function apply() { if (mq.matches) { if (!titlePlaced && a && titleRow && d.contains(titleRow)) { try { a.appendChild(titleRow); titlePlaced = true; } catch (_) {} } if (!pricePlaced && a && b) { try { a.appendChild(b); pricePlaced = true; } catch (_) {} } if (!varPlaced && f && d && e) { try { f.hidden = false; if (i && !f.contains(i)) f.appendChild(i); if (g && !f.contains(g)) f.appendChild(g); if (d.contains(e)) d.insertBefore(f, e); varPlaced = true; } catch (_) {} } if (!promoPlaced && promoBanner && compareSection && compareSection.parentNode) { try { compareSection.parentNode.insertBefore(promoBanner, compareSection); promoPlaced = true; } catch (_) {} } } else { if (titlePlaced && titleRow && d) { try { const vcombined = document.getElementById('pd-variant-combined'); if (vcombined && d.contains(vcombined)) { d.insertBefore(titleRow, vcombined); } else { d.insertBefore(titleRow, d.firstChild); } titlePlaced = false; } catch (_) {} } if (pricePlaced && b && c && c.parentNode) { try { c.parentNode.insertBefore(b, c.nextSibling); pricePlaced = false; } catch (_) {} } if (varPlaced) { try { if (i && j && j.parentNode && !j.parentNode.contains(i)) j.parentNode.insertBefore(i, j.nextSibling); if (g && h && h.parentNode && !h.parentNode.contains(g)) h.parentNode.insertBefore(g, h.nextSibling); if (f) { f.hidden = true; f.innerHTML = ''; } varPlaced = false; } catch (_) {} } if (promoPlaced && promoBanner && b) { try { b.appendChild(promoBanner); promoPlaced = false; } catch (_) {} } } } mq.addEventListener ? mq.addEventListener('change', apply) : mq.addListener(apply); apply(); const fab = document.getElementById('pd-mobile-fab'); if (fab) { const pid = parseInt(fab.getAttribute('data-pid') || '0', 10) || 325; const btnCart = document.getElementById('mf-cart'); if (btnCart) btnCart.addEventListener('click', function() { const varInput = document.getElementById('pd-variant-id'); const variantId = varInput ? parseInt(varInput.value || '0', 10) : 0; try { if (window.addToCart) addToCart(pid, 1, variantId); } catch (_) {} const variantText = getVariantSummaryText(); const skuText = (function() { const el = document.getElementById('pd-sku'); return el ? el.textContent.trim() : PD_SKU; })(); showToast({ type: 'success', title: 'Berhasil ditambahkan ke Keranjang', message: `${escapeHtml(PD_NAME)}${variantText?` · ${escapeHtml(variantText)}`:''}
SKU: ${escapeHtml(skuText)} · Qty: 1`, duration: 5000, actions: [{ label: 'Lihat Keranjang', onClick: () => { window.location.href = '/keranjang'; } }, { label: 'Lanjut Belanja', variant: 'alt', onClick: () => {} }] }); }); } })(); /* ====== Auto-hide installment banner if sidebar too tall (Desktop only) ====== */ (function() { function adjustSidebarBanner() { if (window.innerWidth infoCardHeight) { banner.style.display = 'none'; } else { banner.style.display = ''; } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', adjustSidebarBanner); } else { adjustSidebarBanner(); } let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(adjustSidebarBanner, 250); }); const pwpSection = document.getElementById('pwp-deals-section'); if (pwpSection) { const observer = new MutationObserver(function(mutations) { let shouldRecheck = false; mutations.forEach(function(mutation) { if (mutation.type === 'attributes' && mutation.attributeName === 'hidden') { shouldRecheck = true; } else if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { shouldRecheck = true; } }); if (shouldRecheck) { setTimeout(adjustSidebarBanner, 100); } }); observer.observe(pwpSection, { attributes: true, childList: true, subtree: true }); } window.adjustSidebarBanner = adjustSidebarBanner; })(); /* ====== Global constants ====== */ const IS_DIGITAL = false; const IS_PREORDER = false; /* ====== Variants state (REVISED) ====== */ (function initVariants() { const _0x7g8h = []; window.variants = _0x7g8h; window.isPreorderProduct = false; const attrOrder = []; if (!variants.length || !attrOrder.length) return; function comboKey(sel) { return attrOrder.map(a => a + '=' + (sel[a] ?? '')).join('|'); } const variantMap = {}; variants.forEach(v => { const key = comboKey(v.attrs); variantMap[key] = v; }); function readSelection() { const sel = {}; attrOrder.forEach(a => { const r = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio]:checked`); sel[a] = r ? r.value : ''; }); return sel; } function findVariant(sel) { return variantMap[comboKey(sel)] || null; } function autoFillMissing(sel) { let changed = false; for (const a of attrOrder) { if (sel[a]) continue; const possible = []; const seen = new Set(); variants.forEach(v => { let ok = true; for (const a2 of attrOrder) { if (a2 === a) continue; if (sel[a2] && v.attrs[a2] !== sel[a2]) { ok = false; break; } } if (ok) { const val = v.attrs[a]; if (!seen.has(val)) { seen.add(val); possible.push(val); } } }); if (possible.length === 1) { const val = possible[0]; const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); if (input && !input.checked) { input.checked = true; sel[a] = val; changed = true; } } } return changed; } function rupiah(n) { n = parseInt(n || 0, 10) || 0; return 'Rp ' + n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.'); } function focusGalleryByUrl(imageUrl) { const isMobile = window.matchMedia && window.matchMedia('(max-width: 640px)').matches; if (isMobile) { _0xau1v(imageUrl); return; } const gallery = document.getElementById('pd-thumb-gallery'); const targetName = _0x8s9t(imageUrl); if (gallery) { const btns = Array.from(gallery.querySelectorAll('.pd-thumb-btn')); const btn = btns.find(b => _0x8s9t(b.getAttribute('data-full') || '') === targetName); if (btn) { btn.click(); return; } } _0xau1v(imageUrl); } function formatStockLabel(n) { n = parseInt(n || 0, 10) || 0; return (n > 10) ? '10+' : String(n) } function updateBranchPopover(v) { try { if (!v) return; const a = document.getElementById('sp-qty-meg'), b = document.getElementById('sp-qty-mdf'), c = document.getElementById('sp-qty-bda'); if (a) a.textContent = formatStockLabel(Math.max(0, v.smm | 0)); if (b) b.textContent = formatStockLabel(Math.max(0, v.smf | 0)); if (c) c.textContent = formatStockLabel(Math.max(0, v.sba | 0)) } catch (_) {} } function calcVoucherDisc(type, value, price, maxDisc) { if (type === 'PERCENTAGE') { let d = (price * value) / 100; if (maxDisc > 0 && d > maxDisc) d = maxDisc; return Math.round(d) } return Math.round(value) } function applyVariant(v, focusImage = true) { const elCur = document.getElementById('pd-price-current'); const elOri = document.getElementById('pd-price-original'); const elDisc = document.getElementById('pd-discount-badge'); const elSku = document.getElementById('pd-sku'); const elStock = document.getElementById('pd-stock-badge'); const elQty = document.getElementById('qty'); const btnAdd = document.getElementById('btn-add-cart'); const btnBuy = document.getElementById('btn-buy'); const hidVar = document.getElementById('pd-variant-id'); const mfCart = document.getElementById('mf-cart'); const mfBuy = document.getElementById('mf-buy'); const fab = document.getElementById('pd-mobile-fab'); if (hidVar) hidVar.value = v ? v.id : 0; if (elCur) elCur.textContent = rupiah(v ? v.final : 0); if (elSku && v && v.sku) elSku.textContent = v.sku; if (v && v.ori > v.final) { if (elOri) { elOri.style.display = 'inline'; elOri.textContent = rupiah(v.ori); } if (elDisc) { elDisc.style.display = 'inline'; elDisc.textContent = '-' + (v.disc || 0) + '%'; } } else { if (elOri) elOri.style.display = 'none'; if (elDisc) elDisc.style.display = 'none'; } const stock = v ? (parseInt(v.stock || 0, 10) || 0) : 0; let effectiveStock = stock; let isActivePreorder = false; if (window.isPreorderProduct && v && 'preorder_remaining' in v && v.preorder_remaining !== null) { effectiveStock = parseInt(v.preorder_remaining, 10); if (isNaN(effectiveStock)) effectiveStock = 0; isActivePreorder = true; } if (elStock) { elStock.classList.remove('in', 'out'); if (effectiveStock > 0) { elStock.classList.add('in'); elStock.textContent = IS_DIGITAL ? 'Tersedia' : (isActivePreorder ? 'Sisa Slot: ' + effectiveStock : 'Stok: ' + formatStockLabel(effectiveStock)); } else { elStock.classList.add('out'); elStock.textContent = 'Habis'; } } if (elQty) { elQty.max = String(effectiveStock > 0 ? effectiveStock : 0); if (effectiveStock 0); const updateButtons = () => { const btnAddCart = document.getElementById('btn-add-cart'); const btnBuyNow = document.getElementById('btn-buy'); const mobileCart = document.getElementById('mf-cart'); const mobileBuy = document.getElementById('mf-buy'); [btnAddCart, btnBuyNow, mobileCart, mobileBuy].forEach(btn => { if (!btn) return; if (shouldDisable) { btn.disabled = true; btn.setAttribute('disabled', 'disabled'); btn.classList.add('stock-disabled'); btn.setAttribute('data-stock-blocked', 'true'); btn.setAttribute('data-stock-reason', window.isPreorderProduct ? 'Pre-order habis' : 'Stok habis'); } else { btn.disabled = false; btn.removeAttribute('disabled'); btn.classList.remove('stock-disabled'); btn.removeAttribute('data-stock-blocked'); btn.removeAttribute('data-stock-reason'); } }); }; updateButtons(); setTimeout(updateButtons, 10); setTimeout(updateButtons, 50); setTimeout(updateButtons, 100); if (mfBuy && v) { const voucherBtn = document.getElementById('btn-buy-voucher'); const voucherCode = fab ? fab.dataset.voucherCode : ''; let voucherDiscount = 0; if (voucherBtn && voucherCode) { const vType = voucherBtn.dataset.voucherType; const vValue = parseFloat(voucherBtn.dataset.voucherValue) || 0; const vMax = parseFloat(voucherBtn.dataset.voucherMax) || 0; const finalPrice = v.final || 0; if (vType && vValue > 0) { voucherDiscount = calcVoucherDisc(vType, vValue, finalPrice, vMax); if (fab) fab.dataset.voucherValue = voucherDiscount.toString(); } } const finalPrice = v.final || 0; const textEl = mfBuy.querySelector('.mf-buy-text'); const priceEl = mfBuy.querySelector('.mf-buy-price'); if (effectiveStock > 0) { if (IS_PREORDER) { if (textEl) textEl.textContent = 'Pre Order Sekarang'; if (priceEl) priceEl.textContent = rupiah(finalPrice); } else if (voucherCode && voucherDiscount > 0) { if (textEl) textEl.textContent = 'Beli dengan Voucher'; if (priceEl) priceEl.textContent = rupiah(Math.max(0, finalPrice - voucherDiscount)); } else { if (textEl) textEl.textContent = 'Beli Sekarang'; if (priceEl) priceEl.textContent = rupiah(finalPrice); } } else { if (textEl) textEl.textContent = 'Stok Habis'; if (priceEl) priceEl.textContent = rupiah(finalPrice); } } const isMobile = window.initMobile ?? 0; if (window.instSetBasePrice) window.instSetBasePrice(v ? (isMobile == '1' ? v.ori : v.final) : 0); if (window.updateSoldBySku) window.updateSoldBySku(v.sku); updateBranchPopover(v); if (v && v.image_url && focusImage) focusGalleryByUrl(v.image_url); if (v) { window.dispatchEvent(new CustomEvent('pd-variant-changed', { detail: { price: v.final, originalPrice: v.ori, discount: v.disc, stock: effectiveStock, sku: v.sku, variant_id: v.id } })); const encodedHash = encodeVariantHash(v.id); if (encodedHash && window.history && window.history.replaceState) { const newHash = '#v=' + encodedHash; const newUrl = window.location.pathname + window.location.search + newHash; window.history.replaceState(null, '', newUrl); } } } let sel = readSelection(); if (autoFillMissing(sel)) sel = readSelection(); let v = findVariant(sel); if (!v) { const candidates = variants.filter(variant => { return attrOrder.every(a => { if (!sel[a]) return true; return variant.attrs[a] === sel[a]; }); }); if (candidates.length >= 1) { v = candidates[0]; attrOrder.forEach(a => sel[a] = v.attrs[a]); attrOrder.forEach(a => { const val = sel[a]; const input = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"] input[type=radio][value="${CSS.escape(val)}"]`); if (input) input.checked = true; }); } } const initSel = readSelection(); const initVar = findVariant(initSel) || variants[0] || null; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => applyVariant(initVar, false)); } else { applyVariant(initVar, false); } function updateSummary(sel) { Object.entries(sel).forEach(([a, val]) => { const el = document.getElementById('vs-' + a); if (el) el.textContent = val || '-' }) } function refreshOptions(sel) { attrOrder.forEach(a => { const group = document.querySelector(`.v-group[data-attr="${CSS.escape(a)}"]`); if (!group) return; const chips = group.querySelectorAll('.v-chip'); chips.forEach(ch => { const val = ch.getAttribute('data-value'); const possible = variants.some(v => { if (v.attrs[a] !== val) return false; for (const a2 of attrOrder) { if (a2 === a) continue; if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; } return true; }); const input = ch.querySelector('input[type=radio]'); const disabled = !possible; if (input) input.disabled = disabled; ch.classList.toggle('disabled', disabled); let candidateVariant = null; if (possible) { candidateVariant = variants.find(v => { if (v.attrs[a] !== val) return false; for (const a2 of attrOrder) { if (a2 === a) continue; if (sel[a2] && v.attrs[a2] !== sel[a2]) return false; } return true; }); } const outOfStock = candidateVariant ? (window.isPreorderProduct && candidateVariant.preorder_remaining !== null ? candidateVariant.preorder_remaining { const input = ch.querySelector('input[type=radio]'); ch.classList.toggle('selected', input && input.checked); }); }); } updateSummary(sel); refreshOptions(sel); document.querySelectorAll('.v-chip').forEach(chip => { const input = chip.querySelector('input[type=radio]'); if (input && input.checked) { chip.classList.add('selected'); } }); const container = document.getElementById('pd-variants'); container && container.addEventListener('change', function(ev) { const radio = ev.target.closest('input[type=radio]'); if (!radio) return; sel = readSelection(); if (autoFillMissing(sel)) sel = readSelection(); const chosen = findVariant(sel); applyVariant(chosen || null, true); updateSummary(sel); refreshOptions(sel); }); window.applyVariant = applyVariant; })(); (function cleanBrokenDescImages() { const containers = [ document.querySelector('.pd-full-desc-body'), document.querySelector('.pd-short-desc') ].filter(Boolean); containers.forEach(root => { const imgs = root.querySelectorAll('img'); imgs.forEach(img => { if (img.complete && img.naturalWidth === 0) { img.remove(); return; } img.addEventListener('error', () => { img.remove(); }, { once: true }); }); }); })(); /* ====== Scroll To Top ====== */ (function _0xi25j() { const a = document.getElementById('pd-scroll-top'); if (!a) return; function b() { if (window.matchMedia('(max-width:640px)').matches) { const d = document.querySelector('.bottom-nav'), e = document.querySelector('.pd-mobile-fab'); if (!d && !e) { setTimeout(b, 100); return } const f = d && window.getComputedStyle(d).display !== 'none' && window.getComputedStyle(d).visibility !== 'hidden', g = e && window.getComputedStyle(e).display !== 'none' && window.getComputedStyle(e).visibility !== 'hidden'; let h; if (f && g) { h = 'calc(68px + 54px + env(safe-area-inset-bottom))' } else if (g) { h = 'calc(68px + 8px + env(safe-area-inset-bottom))' } else if (f) { h = 'calc(60px + env(safe-area-inset-bottom))' } else { h = 'calc(20px + env(safe-area-inset-bottom))' } a.style.setProperty('--scroll-top-bottom', h) } else { a.style.removeProperty('--scroll-top-bottom') } } function c() { const d = window.pageYOffset || document.documentElement.scrollTop || 0, e = d > 300; a.classList.toggle('visible', e); a.setAttribute('aria-hidden', e ? 'false' : 'true'); b() } window.addEventListener('scroll', c, { passive: !0 }); window.addEventListener('resize', b, { passive: !0 }); setTimeout(b, 100); c(); a.addEventListener('click', function() { window.scrollTo({ top: 0, behavior: 'smooth' }) }) })(); /* Format stok 10+ */ function _0xk67l(n) { n = parseInt(n || 0, 10) || 0; return n > 10 ? '10+' : String(n) } /* Toggle popover stok per cabang */ (function _0xm89n() { const a = document.getElementById('pd-stock-info-btn'), b = document.getElementById('pd-stock-popover'), c = document.getElementById('pd-stock-popover-close'); if (!a || !b) return; function d() { if (window.matchMedia('(min-width: 641px)').matches) { const e = document.getElementById('pd-stock-badge'); if (!e) return; const f = e.getBoundingClientRect(), g = window.pageXOffset || document.documentElement.scrollLeft || 0, h = window.pageYOffset || document.documentElement.scrollTop || 0; b.style.left = (f.left + g - 10) + 'px'; b.style.top = (f.bottom + h + 10) + 'px' } else { b.style.left = ''; b.style.top = '' } } function e() { d(); b.classList.add('show'); a.setAttribute('aria-expanded', 'true'); b.setAttribute('aria-hidden', 'false'); document.addEventListener('click', g, { capture: true }); window.addEventListener('resize', d, { passive: true }); window.addEventListener('scroll', d, { passive: true }) } function f() { b.classList.remove('show'); a.setAttribute('aria-expanded', 'false'); b.setAttribute('aria-hidden', 'true'); document.removeEventListener('click', g, { capture: true }); window.removeEventListener('resize', d); window.removeEventListener('scroll', d) } function g(h) { if (b.contains(h.target) || a.contains(h.target)) return; f() } a.addEventListener('click', function(h) { h.preventDefault(); b.classList.contains('show') ? f() : e() }); if (c) c.addEventListener('click', f) })(); /* ===== Share Product Modal ===== */ (function() { const a = document.getElementById('pd-share-btn'), z = document.getElementById('mf-share'), b = document.getElementById('pd-share-modal-overlay'), c = document.getElementById('pd-share-close'), d = document.getElementById('pd-share-copy-url-btn'), e = document.getElementById('pd-share-url-input'); if ((!a && !z) || !b) return; const f = "https://www.varenospspc.lt/", g = "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", h = "Rp 20.789.000"; const discountPercent = 1; let i = ''; if (discountPercent > 0) { i = `🔥 Lagi Promo Nih! Diskon ${discountPercent}%\n\n✨ ${g}\n💰 Cuma ${h} aja!\n\n🛒 Buruan cek sebelum kehabisan!\n👉 ` } else { i = `✨ Ada barang bagus nih!\n\n📦 ${g}\n💸 Harga: ${h}\n\n🛍️ Yuk, langsung cek!\n👉 ` } function j() { b.classList.add('show'); document.body.style.overflow = 'hidden' } function k() { b.classList.remove('show'); document.body.style.overflow = '' } if (a) a.addEventListener('click', j); if (z) z.addEventListener('click', j); if (c) c.addEventListener('click', k); b.addEventListener('click', function(l) { if (l.target === b) k() }); document.addEventListener('keydown', function(l) { if (l.key === 'Escape' && b.classList.contains('show')) k() }); b.addEventListener('click', function(l) { const m = l.target.closest('[data-share]'); if (!m) return; const n = m.getAttribute('data-share'), o = encodeURIComponent(f), p = encodeURIComponent(i), q = encodeURIComponent(g); let r = ''; switch (n) { case 'whatsapp': r = `https://wa.me/?text=${p}${o}`; break; case 'facebook': r = `https://www.facebook.com/sharer/sharer.php?u=${o}`; break; case 'twitter': r = `https://twitter.com/intent/tweet?text=${p}${o}`; break; case 'telegram': r = `https://t.me/share/url?url=${o}&text=${p}`; break; case 'email': r = `mailto:?subject=${encodeURIComponent('🔥 Cek Produk Keren Ini!')}&body=${p}${o}`; window.location.href = r; k(); return; case 'copy': s(); return; case 'pdf': const ps = document.querySelector('.product-single'); if (ps) { ps.setAttribute('data-print-date', new Date().toLocaleDateString('id-ID', { year: 'numeric', month: 'long', day: 'numeric' })) } k(); setTimeout(function() { window.print(); try { if (window.ga4Ecomm && window.ga4Ecomm.trackEvent) window.ga4Ecomm.trackEvent('share', { method: 'pdf_export', content_type: 'product', item_id: "1S83N0880RID" }) } catch (_) {} }, 300); return } if (r) { window.open(r, '_blank', 'noopener,noreferrer'); try { if (window.ga4Ecomm && window.ga4Ecomm.trackEvent) window.ga4Ecomm.trackEvent('share', { method: n, content_type: 'product', item_id: "1S83N0880RID" }) } catch (_) {} } }); function s() { if (!e) return; e.select(); e.setSelectionRange(0, 99999); try { if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(f).then(function() { t() }).catch(function() { document.execCommand('copy'); t() }) } else { document.execCommand('copy'); t() } } catch (u) { console.error('Failed to copy:', u) } } function t() { if (!d) return; const v = d.innerHTML; d.classList.add('copied'); d.innerHTML = 'Tersalin!'; if (window.showToast) showToast({ type: 'success', title: '✨ Link Tersalin!', message: 'Link produk berhasil disalin. Yuk bagikan ke teman!', duration: 3000 }); setTimeout(function() { d.classList.remove('copied'); d.innerHTML = v }, 2000) } if (d) d.addEventListener('click', s); if (navigator.share) { const shareHandler = function(w) { w.preventDefault(); navigator.share({ title: g, text: i + f, url: f }).catch(function(x) { console.log('Native share cancelled or failed:', x) }) }; if (a) a.addEventListener('dblclick', shareHandler); if (z) z.addEventListener('dblclick', shareHandler) } })(); /* ===== Embedding variants (server → client) ===== */ (function() { window.__PD_VARIANTS_WITH_BRANCH__ = []; })(); /* ===== Helper: update angka popover ===== */ function updateStockPopoverForVariant(v) { try { const elMeg = document.getElementById('sp-qty-meg'); const elMdf = document.getElementById('sp-qty-mdf'); const elBda = document.getElementById('sp-qty-bda'); if (typeof v?.smm === 'number' && elMeg) elMeg.textContent = formatStockLabel(Math.max(0, v.smm | 0)); if (typeof v?.smf === 'number' && elMdf) elMdf.textContent = formatStockLabel(Math.max(0, v.smf | 0)); if (typeof v?.sba === 'number' && elBda) elBda.textContent = formatStockLabel(Math.max(0, v.sba | 0)); } catch (_) {} } /* ===== applyVariant: 10+ dan update popover ===== */ (function patchApplyVariant() { if (typeof applyVariant !== 'function') return; const original = applyVariant; window.applyVariant = function(v) { original(v); try { const elStock = document.getElementById('pd-stock-badge'); if (elStock) { let txt = elStock.textContent || ''; let m = txt.match(/\d+/); if (m) { const n = parseInt(m[0] || '0', 10) || 0; elStock.textContent = (n > 0) ? ('Stok: ' + formatStockLabel(n)) : 'Habis'; } } } catch (_) {} if (window.__PD_VARIANTS_WITH_BRANCH__ && v) { const vv = window.__PD_VARIANTS_WITH_BRANCH__.find(x => x.id === v.id) || v; updateStockPopoverForVariant(vv) } }; })(); (function initCurrentVariantBranch() { const list = window.__PD_VARIANTS_WITH_BRANCH__ || []; if (!list.length) return; const hid = document.getElementById('pd-variant-id'); const vid = hid ? parseInt(hid.value || '0', 10) : 0; const current = list.find(x => x.id === vid) || list[0] || null; if (current) updateStockPopoverForVariant(current); })(); (function() { if (!window.ga4Ecomm) return; const catSegs = ["Komputer & Laptop", "Laptop", "Gaming"]; window.ga4Ecomm.viewItem({ currency: 'IDR', value: 20789000, item_id: "1S83N0880RID", item_name: "Lenovo Legion Go 8ASP2 - 83N0000RID /AMD Ryzen Z2 Extreme/32GB/1TB SSD/AMD Radeon Graphics/8.8\" WUXGA OLED Touch/Win 11 Home/Eclipse Black/3Y", item_brand: "Lenovo ", item_category: catSegs && catSegs.length ? catSegs.join(' / ') : '' }); })(); (function patchApplyVariantFocus() { if (typeof applyVariant !== 'function') return; const original = applyVariant; window.applyVariant = function(v, focusImage = true) { original(v, focusImage); if (focusImage && v && v.image_url) { _0xau1v(v.image_url); } }; })(); (function() { var soldMap = []; var soldTotalLabel = "Terjual 2"; function formatSoldLabel(qty) { if (qty >= 1000000) { var v = Math.floor((qty / 100000)) / 10; return 'Terjual ' + (String(v).replace('.', ',')) + 'jt+'; } if (qty >= 1000) { var v2 = Math.floor((qty / 100)) / 10; return 'Terjual ' + (String(v2).replace('.', ',')) + 'rb+'; } if (qty >= 100) { var v2 = Math.floor((qty / 100)) * 100; return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; } if (qty >= 10) { var v2 = Math.floor((qty / 10)) * 10; return 'Terjual ' + (String(v2).replace('.', ',')) + '+'; } return 'Terjual ' + (qty.toLocaleString('id-ID')); } function updateSoldLabel(labelText) { var el = document.querySelector('#pd-sold-inline, [data-role="sold-chip"]'); if (el) el.textContent = labelText; } window.updateSoldBySku = function(sku) { if (!sku || typeof sku !== 'string') { updateSoldLabel(soldTotalLabel); return; } var qty = soldMap[sku] || 0; updateSoldLabel(formatSoldLabel(qty)); }; updateSoldLabel(soldTotalLabel); })(); (function() { const h = document.getElementById('pd-sticky-header'); if (!h) return; const p = document.getElementById('pd-price-anchor'); const ac = document.getElementById('pd-sticky-add-cart'); const by = document.getElementById('pd-sticky-buy'); let lt = window.scrollY; let tk = false; function u() { if (!p) return; const r = p.getBoundingClientRect(); const s = window.scrollY; if (r.top 0) { pd.variant_id = variantId } if (variantSummary) { pd.variant_summary = variantSummary } return pd } const ch = document.getElementById('pd-sticky-chat'); if (ch) { ch.addEventListener('click', function(e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } const dch = document.getElementById('btn-chat-icon'); if (dch) { dch.addEventListener('click', function(e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } const mch = document.getElementById('mf-chat'); if (mch) { mch.addEventListener('click', function(e) { e.preventDefault(); if (!window.plazaChat) { console.warn('Chat widget not loaded'); return } window.plazaChat.attachProduct(getChatProductData()); window.plazaChat.openWidget() }) } window.addEventListener('pd-variant-changed', function(e) { const d = e.detail || {}; if (d.price !== undefined) { const sp = document.getElementById('pd-sticky-price'); if (sp) { sp.textContent = formatRupiah(d.price) } } if (d.originalPrice !== undefined && d.originalPrice > d.price) { const so = document.getElementById('pd-sticky-price-original'); if (so) { so.textContent = formatRupiah(d.originalPrice); so.style.display = '' } } else { const so = document.getElementById('pd-sticky-price-original'); if (so) { so.style.display = 'none' } } if (d.discount !== undefined && d.discount > 0) { const sd = document.getElementById('pd-sticky-discount'); if (sd) { sd.textContent = '-' + d.discount + '%'; sd.style.display = '' } } else { const sd = document.getElementById('pd-sticky-discount'); if (sd) { sd.style.display = 'none' } } const hs = d.stock > 0; if (ac) { ac.disabled = !hs } if (by) { by.disabled = !hs } }); function formatRupiah(n) { return 'Rp' + Math.floor(n).toLocaleString('id-ID') } })(); (function() { const t = document.getElementById('pdv-toggle-btn'); const v = document.getElementById('pd-voucher-section'); if (t && v) { const h = v.querySelectorAll('.pdv-min-hidden'); const n = h.length; t.addEventListener('click', function() { const e = t.classList.toggle('expanded'); h.forEach(function(i) { if (e) { i.classList.remove('pdv-min-hidden') } else { i.classList.add('pdv-min-hidden') } }); t.textContent = e ? 'Tutup' : '+' + n }) } const m = document.getElementById('voucher-detail-modal'); const mc = document.getElementById('voucher-modal-close'); const ma = document.getElementById('voucher-modal-cancel'); const mcp = document.getElementById('voucher-modal-copy'); if (m) { const bb = document.querySelectorAll('.pdv-badge-btn'); bb.forEach(function(btn) { btn.addEventListener('click', function() { if (btn.disabled) return; const c = btn.getAttribute('data-voucher-code'); const nm = btn.getAttribute('data-voucher-name'); const dl = btn.getAttribute('data-discount-label'); const bl = btn.getAttribute('data-badge-label'); const mp = parseInt(btn.getAttribute('data-min-purchase')); const md = parseInt(btn.getAttribute('data-max-discount')); const vu = btn.getAttribute('data-valid-until'); document.getElementById('voucher-modal-badge').innerHTML = '' + dl + '' + bl + ''; document.getElementById('voucher-modal-code').textContent = c; document.getElementById('voucher-modal-name').textContent = nm; const me = document.getElementById('voucher-modal-min'); if (mp > 0) { me.style.display = ''; document.getElementById('voucher-modal-min-val').textContent = fr(mp) } else { me.style.display = 'none' } const xe = document.getElementById('voucher-modal-max'); if (md > 0) { xe.style.display = ''; document.getElementById('voucher-modal-max-val').textContent = fr(md) } else { xe.style.display = 'none' } if (vu) { const d = new Date(vu); const ft = d.toLocaleDateString('id-ID', { day: 'numeric', month: 'long', year: 'numeric', hour: '2-digit', minute: '2-digit' }); document.getElementById('voucher-modal-valid-val').textContent = ft } mcp.setAttribute('data-code', c); m.classList.add('show'); document.body.style.overflow = 'hidden' }) }); function cm() { m.classList.remove('show'); document.body.style.overflow = '' } if (mc) mc.addEventListener('click', cm); if (ma) ma.addEventListener('click', cm); m.addEventListener('click', function(e) { if (e.target === m) cm() }); if (mcp) { mcp.addEventListener('click', function() { const c = mcp.getAttribute('data-code'); if (!c) return; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(c).then(function() { smc() }).catch(function(err) { fc(c) }) } else { fc(c) } }) } } const b = document.querySelectorAll('.pdv-min-copy'); b.forEach(function(btn) { btn.addEventListener('click', function() { if (btn.disabled) return; const code = btn.getAttribute('data-code'); if (!code) return; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(code).then(function() { sc(btn) }).catch(function(err) { fc(code, btn) }) } else { fc(code, btn) } }) }); function fc(text, btn) { const tx = document.createElement('textarea'); tx.value = text; tx.style.position = 'fixed'; tx.style.opacity = '0'; document.body.appendChild(tx); tx.select(); try { document.execCommand('copy'); if (btn) sc(btn); else smc() } catch (err) {} document.body.removeChild(tx) } function sc(btn) { const o = btn.textContent; btn.classList.add('copied'); btn.textContent = '✓ Tersalin'; setTimeout(function() { btn.classList.remove('copied'); btn.textContent = o }, 2000) } function smc() { const o = mcp.textContent; mcp.textContent = '✓ Kode Tersalin'; mcp.style.background = '#22c55e'; setTimeout(function() { mcp.textContent = o; mcp.style.background = '' }, 2000) } function fr(a) { return 'Rp' + Math.floor(a).toLocaleString('id-ID') } })();