• FREE SHIPPING on orders over $59.99

  • FREE SHIPPING on orders over $59.99

Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
2/64
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter
2/64

Christmas Special🔥Reusable Eyeliner and Eyelash Stickers with Glitter

(🥰Buy 1 Get 1 Free 😍 8Pairs🎁🔥 )

$29.99
$59.99
Save $30.00
COLOR(4PAIRS)
Please select a color(4pairs)
FREE GIFT(4PAIRS)
Please select a free gift(4pairs)
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);

HURRY! ONLY 435 LEFT IN STOCK.
98% of customer buy 2-4 items to use daily and gifts for their loved one

✅ Guaranteed! GoogleTrusted Store!
🛒 Payments Via PayPal® and CreditCard


Very popular and often out of stock, order today!

The eyeliner and eyelash stickers are a genius invention that gives you a killer cat eye in no time!

It only takes a few seconds for the most flawless look you can get.

  • EASY TO USE & REMOVE

Our reusable eyeliner and eyelash stickers have an eye contour next to the body, so when you place them in the right place on your eyes, you can easily stick them without worrying about skewing. The high-quality cosmetic ingredients can be completely torn apart and are very comfortable when stuck to the skin without any pain.

  • VARIOUS STYLES

The reusable eyeliner and eyelash stickers have 7 different colors of eyeliner stickers, and there are more options to satisfy your amazing makeup.

  • WATERPROOF & SAFE USE

The reusable eyeliner and eyelash stickers are waterproof and durable and can preserve the original shape and color within 3-5 days.

  • SPECTACULAR AND NATURAL STYLE

Supernatural and light; thick hair and thin strips make eyelashes look natural and fluffy, and can't make your eyelids heavy.

  • BEAUTIFUL ANYTIME, ANYWHERE

100% handmade, non-irritating, luxurious, soft, light, comfortable, natural, and fluffy false eyelashes. 

  • PERFECT FOR ALL OCCASIONS

Reusable eyeliner and eyelash stickers can make you shine in Halloween, nightclubs, masquerade, carnivals, cosplay, birthday parties, photography, and other occasions. Create your own unique style.

  • USING METHOD Here's how it works...

Start with dry-cleaning skin!
1 - You carefully just peel off the sticker
2 - Adjust it with the outer corner of your eye
3 - Stick it on your eyelid, and you're good to go!

The eyeliner and eyelash stickers come in tons of different designs and styles for all types of eye shapes and ethnicities.

SPECIFICATION

  • Color: Blue, Green, Gold, Purple, Black, Pink, Fluorescent Colors
  • Package: 4 pairs of eyeliner and fake eyelashes stickers
  • Product material: Plastic
  • Product size: Eyeliner 4.2*2.3CM, eyelashes 1.1-1.5cm

Click on "ADD TO CART" to get yours now!

PAYMENT

  • Payments Via PayPal® and CreditCard
  • To protect consumer rights, the store uses PayPal to pay. If there is any problem with the product, you can appeal to PayPal. Please rest assured to buy!
⚡️Stock sells fast - get yours today!

WHY CHOOSE US

🌎Worldwide Shipping: Each order includes real-time tracking details and insurance coverage in the unlikely event that a package gets lost or stolen in transit.

💰 Money-Back Guarantee: If you bought it and felt that it was not for you, don't worry. Just shoot us a message at contact 📪, and we will make it right by offering you a replacement or refund. 100% Simple & Risk-Free process.

✉️ 24/7 Customer Support: We have a team of live reps ready to help and answer any questions you have within a 24-hour time frame, 7 days a week.

🔒 Safe & Secure Checkouts: We use state-of-the-art SSL Secure encryption to keep your personal and financial information 100% protected.

OUR GUARANTEE

🏺We take pride in our products as we believe they are amazing. However, we understand that buying things online can be daunting, especially for the first time, so we offer a 100% satisfaction 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.

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