✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
1/30
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨
1/30

✨Snatch Me Up Flattering Swimsuit ⏰Promotion 49% OFF Limited Time✨

$32.99
$69.99
Save $37.00
Style
Please select a style
ColorLake Blue
Please select a color
Size
Please select a size
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!!!🔥


(👙Newly Launched In 2024✨)

Why do we wear shapewear under our clothes but when we're most exposed we wear the flimsiest, most shapeless garments ever?

Everyone wants to be confident in their swimsuit, and Every woman deserves a swimsuit they love and feel confident in.

Our game-changing designs dramatically yet comfortably flatten, sculpt & lift. Prepare to be blown away.👙👗

The Sculpting Corset Swimsuit That Magically Grabs Your Waist - And It's Totally Worth Trying!🌈💖

It took me almost 2 years and hundreds of prototypes & fittings to create something waterproof that really supports and sculpts. I've been a designer forever, and making women love the way they look in a swimsuit has been the greatest thrill of my career.

The Sculpting Swimsuits have unparalleled sculpting abilities. Game-changing fabric & construction dramatically yet comfortably smooths & sculpts the midsection and lift the bust. Fabric is ultra matte so it works as a swimsuit or bodysuit.⭐✨

PRODUCT DETAILS

  • Medium-cut leg with cheeky back coverage
  • The outer fabric is a lightweight activewear compression fabric, similar to a high-end sports bra
  • Front & back waist is lined in power mesh
  • Adjustable straps
  • Removable bust pads
  • Ultra supportive shelf bra

How do Sculpting Corset swimsuits work?

The science behind this swimsuit isn't hard to understand:

Innovation with hidden shaping panels and curve-enhancing lacing. It makes you feel good and look good. More specifically, each swimsuit is released with compression fabric (similar to that found in high-end sports bras) and power mesh at the waist for unrivaled shaping capabilities.

Now, the real magic happens with the adjustable shoulder straps! Not only does it look cute, but it puts the control of shaping in your hands.

How tight is this swimsuit? Is it tight? Can I still breathe?

Well, there's only one way to find out. Please see the swimsuit review below👇👇👇

"INSANE! BARBIE WAIST!! Wow! I was advertised this on Instagram and kept going back to look at it because I am 30 and felt like I am over the point in my life where I wear weird Amazon bathing suits that never fit quite right...And I wanted to get a one-piece that actually looks good, all attempts really highlighted my rectangular shape and made me feel unattractive.

I finally ordered the Sculpting Corset Swimsuits. It is insane and making me look like a vintage Barbie! I do not have that waist, this bathing suit is a witch! It doesn't give you weird blobs hanging out anywhere even though it is sucking you in! I was really dreading wearing a bathing suit this summer on my trips but now I feel like it won't be such a nightmare. Thank you!! I already ordered more color and hope to get it soon. I hope that they make a higher neck version with an X back, that would be the dream. I have attached the picture of the difference between the Amazon bathing suits and Sculpting Corset Swimsuits and also a picture of me in a sketchy Amazon bathing suit to illustrate my rectangular form."

"WORTH THE HYPE AND MONEY! I finally caved to the hype and after reading about a million reviews decided to spend the money. I’ve only just tried it on ahead of a lake weekend but WOW! It’s about like getting any normal shapewear on so prepare for that, but once on, it’s comfy and doesn’t dig, and then *boom* pull those strings and you’re snatched. I will absolutely be ordering other colors. Could probably have taken a better photo but I was excited to send it to a pal who was eager to hear my review before buying hers… so it’s pretty realistic and accurate, no filters."

Steal the show from everyone with the snatched corset swimsuit from Lighthemind Design!

If you want to feel radiant, caught, and completely safe while splashing around in the water, this swimsuit could be your next best choice.

Fabric

The fabric of this piece is a lightweight sportswear compression material, not too different from a super support sports bra. The front and rear waist areas are lined with power mesh, a high-quality fabric designed to support, smooth, and never see-through when wet.

The back of the swimsuit is open with a drawstring and lace-up connection that can be tightened at will to tighten the waist and accentuate your hips.

Aside from comfort and its customizable fit, many appreciate a piece that pairs well with an outfit in between sunbathing and swimming (say, walking around a beach town or at the resort lunch spot) – and this one-piece acts as the ideal complementary item for denim shorts, a coverup skirt, or even loose beachy pants.

Butt Coverage Full
Cut On Sides Low
Length Longest
Straps Adjustable In Back
Bra Soft Cups With Jersey Lining, No Padding
Supports Cup Sizes A - H Cup

SEE ADDITIONAL SIZES:

WHERE WE MANUFACTURE

When I started Lighthemind Design I approached a number of US factories but unfortunately, none were interested in working with me as my quantities were too low. The bulk of our lingerie is made in Pakistan, in an ISO-certified factory that we've been working with since 2019.

The factory is a small family-owned factory and we now have our own facility which currently produces lingerie just for us. I spend a few weeks of the year in Pakistan sampling new designs, either alone or accompanied by a team member. My time is spent on the factory floor, frequently unsupervised with full access to all paperwork and members of staff.


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