• FREE SHIPPING on orders over $59.99

  • FREE SHIPPING on orders over $59.99

👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
1/6
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
👑Purely natural hair growth oil🌿✨
1/6

👑Purely natural hair growth oil🌿✨

$22.99
$39.99
Save $17.00
BUNDLE DISCOUNT
Please select a bundle discount
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);

  • 🍭Fast refund guarantee>>Partial or full refund depends on the situation.
  • ✈ Worldwide Express Shipping Available.
  • <<😍 97.72% Of Customers Buy 2 Or More😍>>

🎁This week's special event: randomly select 20 lucky customers and get double-order products. We will send you an email, please remember to check, thanks for your support. Good luck!

As a gift for your loved ones, this limited-stock Wireless Handheld Car Vacuum Cleaner will be perfect!😍

Thinning? Bald spots? Shedding? Breakage? Flakiness?

We’ve all been there.
The good news is that they're all reversible…with the right treatment.
And that's why we developed this holistic, all-in-one approach to hair wellness.

Unleash the power of nature with EELHOE, a transformative natural oil treatment meticulously crafted to nourish and stimulate your hair for thicker, denser, and fuller-looking locks. Our Plant-Powered Growth Blend combines a harmonious fusion of ELEVEN carefully sourced natural oils, each contributing to scalp health, improved circulation, and the promotion of new hair growth. Embrace a holistic approach to hair care with our cruelty-free formula, thoughtfully designed to bring out the best in your tresses.

Plant-Powered Growth Blend: Harness the botanical prowess of eleven remarkable natural oils, working in perfect harmony to support your hair's vitality.

Thicker-Looking Hair in 45 Days: Experience the remarkable transformation as our nutrient-rich blend helps your hair flourish with a noticeable thickness within just seven weeks.

100% Vegan & Cruelty-Free: We are committed to creating a product that is kind to animals and the environment, ensuring that your journey to healthier hair is ethical and sustainable.

Suitable for All Hair Types and Styles: Embrace the versatility of EELHOE, tailored to cater to the unique needs of every hair type and style.

Satisfaction Guaranteed: Our commitment to your satisfaction is unwavering. With our reliable Return Policy, confidently embark on your hair growth journey.

Nature's Nurturing Ingredients:

🌿 Rosemary Oil: Stimulates cellular generation, thickens hair, and encourages new growth while preventing hair loss.

🥑 Avocado Oil: Packed with biotin and essential fatty acids, it nourishes hair follicles, combats dryness, and promotes a healthy scalp.

🥥 Coconut Oil: Easily absorbed, this ultra-hydrating oil locks in proteins to fortify and encourage strong, vibrant hair growth.

🌿 Olive Oil: Rich in vitamins A and E, and antioxidants, it repairs and protects your hair's keratin while sealing in vital moisture.

💜 Lavender Oil: With calming properties, it strengthens new hair growth and supports scalp health with its anti-inflammatory and antimicrobial benefits.

🌰 Almond Oil: Intensely hydrating, it smoothens and adds shine by stimulating hair keratin production.

🌳 Baobab Oil: Abundant in omega-3 fatty acids and essential vitamins triggers healthy hair growth.

🌿 Argan Oil: Time-tested remedy to strengthen, nourish, and deeply hydrate hair follicles.

☕ Coffee Oil: Invigorates hair growth and preserves follicle elasticity, reducing the risk of breakage.

🌻 Castor Oil: Enhances blood flow to the scalp, fortifying each strand from the root.

🌱 Parsley Seed Oil: Antimicrobial, antibacterial, and anti-fungal, this oil ensures complete hair health.

Thicker, Longer Hair After Just 20 Seconds Per Day!

The secret to healthy hair starts with a holistic approach. That's why our cruelty-free blend contains a diverse blend of ELEVEN natural oils that work in tandem to support scalp health & circulation and assist with new hair growth.

Join 8,500+ Of Our Customers Transforming Their Hair Today!

98% of customers experienced hair growth.*

96% of customers reported a reduction in hair loss.*

87% of customers said their hair felt healthier & stronger.*

87.4% of customers said it covered thinning hair.*

95% of customers said they would continue to use our Natural Hair Growth Oil™.*

*Based on a 14-day study out of 105 subjects, ages 18 - 50 years
*Hair types straight, wavy, curly, combination, and oily.

92% More Effective On All 4 Stages of Hair Growth

Anagen (growth) Anagen is the period of active cell division and noticeable hair growth. Throughout hair cycling, about 90% of all follicles are in the anagen phase and can remain in this phase anywhere from 2 to 8 years.

Catagen (regression) Over 2 to 3 weeks, cell production is halted, and the hair follicle shrinks. The hair shaft begins to separate from the bottom of the follicle and forms what is referred to as club hair.

Telogen (resting) Derived from the Greek telo meaning end and gen meaning produce, telogen is marked as the end of hair production as the follicle undergoes dormancy or cell quiescence. The follicle can remain dormant for up to 3 months with the hair club intact.

Exogen (shedding) Coupled with the telogen phase, exogen is when the hairs fall out of the follicle, during which new hair begins to grow in the follicle as it returns to the anagen phase.‍

Powerful Ingredients for Enhanced Growth

Capilia Longa: Increasing the duration of the anagen phase Curcuma longa callus conditioned media shifts the cycle towards a prolonged period of growth compared to the placebo group.

Caffeine: As a stimulant, caffeine arouses blood vessels on the scalp contributing to increased oxygen and nutrient delivery to the hair bulbs.

Amino Acid Complex: Topically, the application of amino acids can strengthen and improve the integrity of damaged hair.

Clinically Tested & Approved by Professionals

The Natural Hair Growth Oil™ has been recommended by Dr.Diane, a board-certified dermatologist, and dermatological specialist as an easy, effective, non-invasive, drug-free, hair-utilizing, and low-cost treatment to reduce hair loss & support the growth of new hair.

Rest Assured:
We prioritize the purity of our oils. Free from synthetic fragrances and colors, parabens, sulfates, silicones, EDTA, and mineral oils, our natural blend is carefully curated to offer the best to your hair without compromise.


  • Experience the revitalizing journey to naturally robust, healthy hair with EELHOE. Unveil your hair's full potential as you indulge in the transformative benefits of our Plant-Powered Growth Blend. Embrace your most beautiful, confident self, one strand at a time.

 

How To Use:

Congratulations on choosing EELHOE, the transformative natural oil treatment that will nourish and stimulate your hair for thicker, denser, and fuller-looking locks. Follow these simple steps to unleash the power of nature and experience the remarkable benefits of our Plant-Powered Growth Blend:

Step 1: Preparing for Application

  • Ensure your hair is clean and free from any styling products.
  • Gently towel-dry your hair to remove excess water before applying EELHOE.

Step 2: Dispensing the Product

  • Shake the EELHOE bottle well to blend the natural oils perfectly.
  • Unscrew the cap and use the dropper to dispense the desired amount of oil into your palm.

Step 3: Application

  • Rub your hands together to distribute the oil evenly.
  • Apply the oil directly to your scalp using your fingertips.
  • Gently massage the oil into your scalp in circular motions. This will help to stimulate blood flow, improve circulation, and encourage the absorption of nutrients into the hair follicles.

Step 4: Distributing the Oil

  • Once you've massaged the oil into your scalp, work the remaining oil down the length of your hair strands.
  • Focus on the ends, as they tend to be more prone to dryness and damage.

Optional Overnight Treatment:

  • For a deeply nourishing treatment, consider leaving EELHOE on overnight.
  • Simply cover your hair with a shower cap or a soft cloth to protect your pillowcase.

Styling:

  • If you choose to use EELHOE before styling your hair, wait for a few minutes to allow the oil to fully absorb before using any heat styling tools.

Regular Use:

  • For optimal results, use EELHOE three times a week.
  • Consistency is key, so incorporate it into your hair care routine to experience the best results within the recommended 45-day period.

Admire the Results:

  • After using EELHOE consistently, you will notice thicker, denser, and healthier-looking hair.
  • Embrace your natural beauty and newfound confidence as you flaunt your revitalized tresses.

We are confident that you will love the results that EELHOE brings to your hair. Remember, our commitment to your satisfaction is unwavering, and if you are not entirely satisfied, we offer a reliable Return Policy.
Experience the power of nature and embrace a holistic approach to hair care with EELHOE. Unveil your hair's full potential and let the beauty of your tresses shine through.
Enjoy your journey to naturally robust, healthy hair!

💖Support small brand

Due to the high increase in demand, this product will be on sale only for a limited period of time. Our stock is limited, so hurry up and order before it's all gone!

------------------------------------------------

⚡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 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 Card.

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('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);