🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
1/16
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅
1/16

🐏Copper Mag Prostate TherapyRing⏰Christmas Limited Time Offer 49% OFF🎅

$29.99
$59.98
Save $29.99
ColorWhite
Please select a color
Buy More Save More
Please select a buy more save more
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);


💝99.2% of Reviewers Recommends This Product.
🌎 Over $59.99 for free delivery worldwide
🛒 Tracking number for every order
💯 Payments Via PayPal® and Credit Card
⭐ Returns>>100% Money Back Guarantee

Our goods are authentic, with genuine patents, counterfeit must be investigated! Customers please identify our products

It will sell out fast, Enjoy a discount now!!⚡Please make sure to buy enough quantity before we increase the price!!!🔥


 

🎄Welcome to the pearyave!🎅

This Christmas, we’ve prepared amazing discounts and handpicked gifts just for you!

Exclusive Offer:The first 5,000 customers will receive a FREE mystery gift worth $199🎁

Shop now and pick the perfect holiday gifts for yourself and your loved ones. Wishing you a Merry Christmas! 🎉

FDA approved, no side effects to worry about

Take control of your prostate health with Histone Copper Mag Prostate Therapy Ring!

         

  The magnetic therapy idea intrigued me yet this Histone Copper Mag Prostate Therapy Ring exceeded my expectations. My urinary flow has improved, nighttime awakenings are less frequent, and my energy is up. It’s become a key part of my health routine, a pivotal turning point towards a better quality of life.” - William Thomas, Australia

             

   “I love spending my days outdoors, but prostate issues have always been a concern. Wearing this Histone ProstateCare Magnetic Therapy Bracelet lets me enjoy my outdoor chores and activities without any worries. It truly boosts my mood and energy as well!” - Elias Myrick, Canada

Don’t let prostate issues and discomfort affect your daily life

Unleash the benefits of nature and technology with our Histone Copper Mag Prostate Therapy Ring. This innovative device combines the therapeutic power of magnetism and copper to support prostate health effectively. Strategically positioned magnets are designed to boost blood flow to the prostate, optimizing its function. Copper’s renowned antioxidant properties protect prostate cells from damage, ensuring comprehensive care. Crafted for comfort and discretion, our ring offers a seamless fit for all-day wear.

Try Histone Copper Mag Prostate Therapy Ring today and discover the relief you deserve.

Backed by Research & Experts:

           

“I highly endorse Histone Copper Mag Prostate Therapy Ring as a natural and effective solution for prostate health issues. Modern studies validate their benefits in pain relief and inflammation management. This ring leverages these principles for a non-invasive solution to support prostate health and improve quality of life - prostate health support, symptom relief, sexual enhancement, antibacterial action, urinary comfort, and overall well-being.” - Dr. George Beck, board-certified urologist and FHO (Federation of Health Organizations) member.

Clinical Trial Data

The study's findings for men aged 40-70 years old: both immediate and long-lasting, are highlighted by impressive statistics that reveal the ring's multifaceted advantages:

Innovative Negative Ion Technology

Negative ions. naturally abundant in serene environments such as forests and near waterfalls. are pivotal in this advanced wellness tool. When integrated into the  Prostate Therapy Ring. they deliver substantial health benefits through mechanisms well-documented in clinical research.

How the Prostate Therapy Ring Works:

Biochemical Reaction: Negative ions influence the body at the molecular level. promoting better blood circulation by reducing blood viscosity and expanding blood vessels. especially crucial in the pelvic and prostate areas.

Cellular Activation: Enhanced blood flow increases oxygen delivery and nutrient supply to cells. vital for maintaining tissue health and supporting the prostate gland.

Natural Anti-inflammatory Effects: Negative ions help reduce inflammation in the body. a common problem in prostate conditions that can lead to symptoms like pain. discomfort. and urinary issues.

Scientifically Backed Benefits

Prostate Health: Clinical studies show that improved pelvic circulation can alleviate symptoms of prostate conditions like BPH and prostatitis. enhancing urinary function and reducing nighttime urination.

Profound Impact: Before and After Using the Prostate Ring

Before:

Frequent nocturnal bathroom visits. disrupting sleep.

Persistent discomfort in the pelvic region.

After:

Marked reduction in the frequency of nighttime urination.

Alleviated pelvic discomfort. leading to improved daily comfort and mobility.

Why the Prostate Therapy Ring?

Customized Prostate Health Support: Specifically engineered to address men's health needs. combining style with functionality.

Comfort and Durability: Crafted from high-quality materials. the ring is designed for continuous wear. providing lasting benefits without compromising comfort or style.

Non-Invasive and Drug-Free Solution: A perfect alternative to medications or surgical interventions. offering substantial health benefits with no adverse side effects.

Customer Experiences

Hear from real users who have seen significant improvements

"The  Prostate Therapy Ring has dramatically improved my quality of life. reducing urinary issues and enhancing my intimacy." – George M.

"This ring is a breakthrough. It's discreet. comfortable. and most importantly. effective. My overall vitality has never been better." – Carl F.

"Since wearing the IonRing. my nights are uninterrupted. and my days are more comfortable." – Richard L.

"The ring has not only helped with my prostate symptoms but also enhanced my overall vitality." – Samuel T.

"The difference in my sleep and overall comfort since wearing the Prostate Therapy Ring has been remarkable." – Edward M.

Integrating Science and Style into Daily Life

The  Prostate Therapy Ring combines functionality with elegance. providing you with a health-enhancing accessory that fits seamlessly into any lifestyle. It offers a holistic approach to managing health issues. particularly prostate health. without the need for drugs or invasive treatments.

Transform Your Health with the Prostate Therapy Ring

Don't let prostate health issues hold you back from enjoying life to the fullest. The   Prostate Therapy Ring is your daily companion in the journey towards a healthier. more vibrant self.

More Customers Feedback:

I've been struggling with frequent urination for years, nd it was really affecting my daily life. Within a few weeks of wearing Histone Copper Mag Prostate Therapy Ring, I noticed a significant reduction in my restroom visits. The discomfort and constant urges have diminished, and I feel a lot more at ease. Great product!" - Mark Jeffries

“At this age, I was dealing with common prostate problems and sought alternatives to medication. This Histone Copper Mag Prostate Ring impressed me with its comfort and effectiveness. My symptoms have improved, and I feel more confident and energetic. It’s a relief to have found this solution.” - Jon Stanko

Choose Histone Copper Mag Prostate Therapy Ring to Transform your Life:

✅ Support Prostate Function

Regulate frequent urination

Combat Urethritis

✅ Restore Erectile Confidence

✅ Improves blood circulation

✅ Relieves pressure to ease pain and prostate discomfort

✅ Alleviates BPH Symptoms

✅ Improves Sleep

✅ Powerful Antioxidant Protection

Package includes:

  • Copper Mag Prostate Therapy Ring
  • Colors: White、Yellow、Black、Rose gold、Brushed antique copper

NOTE:

Please allow slight measurement deviations due to manual measurement.

Due to the different monitor and light effect, the actual color of the item may be slightly different from the color shown on the pictures.


⚡Click On "ADD TO CART" To Get Yours Now!

✨OUR GUARANTEE✨


✅We truly believe we make some of the most innovative products in the world, and we want to make sure we back that up with a risk-free ironclad 45-day guarantee.

✅If you don't have a positive experience for ANY reason, we will do WHATEVER it takes to make sure you are 100% satisfied with your purchase.

✅Buying items online can be a daunting task, so we want you to realize that there is an absolute ZERO risk in buying something and trying it out. If you don't like it, no hard feelings we'll make it right.

✅We have 24/7/365 Ticket and Email Support.

WHY US?👇

  • We work directly with manufacturers all over the world to ensure the best quality of our products. We have a Quality Control department which helps us to keep our promise!
  • Price is always competitive.
  • Awesome Customer Service
  • Amazing products along with High Quality
  • Read reviews from our lovely customers

🔥 The price is limited! 🔥 Grab yours as the limited promotion available!

✈ Worldwide Shipping ✈  

Please note that shipping is insured. However, you may receive your items earlier. Tracking Numbers will ALWAYS be sent so you can track it every step of the way! Cool things are worth waiting for! 😉

🔒 100% Risk-Free Purchase 🔥 

  • We truly offer stunning, trendy high-quality products in the world.
  • We will do WHATEVER it takes with outstanding customer service support to assist everyone.
  • If you are not satisfied with receiving the goods, you can apply for a refund.
  • You can pay with PayPal, which will protect your money.

✅Payments Via PayPal®, Credit and Debit cards.

If you want to checkout with a Credit and Debit Card, just enter your * Card No, * Expiration Date, and * CVV.
f34603c6042c7802af86fc595826003b48c8f721fa4f1ffa117ffea06bd06849.png
153a0932404b13aa72f600fa0f9237172d5147ac6302b2183812028339748e9c.png
class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('appzebu smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent);