Serenity Rhinestone Cami Maxi Dress

$149.99
Size : S
Color : red
Quantity
BUY $100 SAVE $15[Code: F15]
BUY $200 SAVE $30[Code: F30]
🌐WORLDWIDE FREE SHIPPING ON ORDERS ≥ USD$89

✈️➤ALL WEBSITE

30% off for all website

Use code: SY30

💥➤PROM COLLECTION

Buy 1 get free gift

Select any style you want

💝➤GIFT CARD

GUARANTEED SAFE CHECKOUT

Description
Sparkling silhouettes. A premium design created for your most special events, Serenity is a dramatic, floor sweeping evening gown created from our dual-layered power mesh fabric with all-over glittering hand embellishment. A sparkling gown with a built-in corset and underwired cups that enhance your shape and provide elevated support, Serenity is complete with a fishtail hem and a small train.
 
Size(cm)/ Bust Waist Hips
(inch)
S 84 64 92
32.76 24.96 35.88
M 88 68 96
34.32 26.52 37.44
L 92 72 100
35.88 28.08 39


Material: Polyester
*The above data is for flat dimensions, and the high elastic fabric can be stretched.
*The above data is for reference only, please choose based on your usual purchase code.
*This size chart is manually measured and may have an error of approximately 1-3CM.
*The fabric of this product is hand-heat-drilled and may have minor imperfections. We have strict product quality inspection, which basically does not affect the overall wear. If you mind, please order carefully.
*The model is wearing a lined base layer. Our product do not include a lining base layer. The somewhat sexy see-through color is the characteristic design of this dress. If you mind, please order carefully.
 
Shipping Policy

DISPATCH TIME

Our products are made to order, which means we create your item after your order has been placed. To ensure the highest quality, our some products are handmade with love and attention to details. At this time, please expect your order to ship out in 1-4 business days. For pre-orders, please expect a production time of 15-30 working days as we require this time to prepare the materials.

Good things take time, and we assure you that our products are all worth waiting for. You will receive an email with tracking number once your order is shipped out! Kindly note that we are unable to cancel the order when it was shipped.

  • Free Shipping for orders over $89!
  • Delivery Time=Processing Time + Shipping Time
  • Processing time : Within 1-4 business days
  • Expedited shipping: $24.99, 6-8 days
  • Standard shipping: $8.99, 8-15 days.

SHIPPING TIMES & COSTS

We ship worldwide! All our shipping prices are in US Dollars (USD). Please note that business days DO NOT include weekends or public holidays. See below to find more information regarding delivery timeframes per destination:

Destination

Average Time (days)

The United States

11 (Standard Shipping)

8 (Expedited Shipping

United Kingdom

8

Romania

12

Canada

10

Australia

8

France

9

Italy

11

Switzerland

14

Netherlands

9

Spain

12

Germany

13

Ireland

12

United Arab Emirates

6

Poland

10

Belgium

12

Sweden

11

Croatia

15

Greece

13

Mexico

15

We offer free standard shipping for all orders above $100 USD!

Please note that the time frame in the table is only an estimation. As there are many uncontrollable factors in international shipping, we can't make any shipping time guarantees. We are also unable to offer return for items arrive late. Check out our full return policy here

DELIVERY INFORMATION

  • Delivery Delays: During busy sale periods or new collection launches, your order may not always be delivered within the specified delivery timeframes. We are unable to provide compensation to customers for any unexpected delays with your delivery once the item has been despatched from our warehouse.
  • Customs Charges: The prices within the online store do not include relevant overseas duties and other customs charges you may incur. These costs are imposed by your local customs office and are outside of our control. Please familiarise yourself with your country's customs charges and levies prior to placing an order. Shineinsky is not responsible if customers are not notified by their country's postal authority that items are awaiting payment of customs duties and taxes.
Hand-Made Craft

MISSION

We are committed to providing sexy and luxurious women’s fashion with a purpose, designed especially for women who want to feel beautiful, and enjoy expressing their voice through fashion that inspires them, and everyone else around them.

VISION

We aim to become a leading fashion brand, as well as a trendsetter within our industry, generating long lasting and trust-based relationships with our customers, and empowering them to follow their passion, so that they can feel comfortable stepping outside the established norms to be different and unique.

FEMININE BEAUTY

We encourage women to have a positive and confident attitude. They are endowed with charming curves by nature, it is a kind of nature beauty. No matter what kind of body you are, Shineinsky can show your unique curve beauty. Every girl should have the right to express themselves and make things around look better. Self-awareness is what we actually adovate. Let Shineinsky give you a stage to express yourself boldly and show your dazzling brilliance!

CORPORATE
SOCIAL RESPONSIBILITY

If there are no customers, there is no Shineinsky. Yes, it refers to you. Therefore, we have the responsibility to give back to the society and make our modest contribution to our common home--the earth. We adhere to the concept of "sustainability", contributing to environmental protection and make the earth healthier.

Every time we receive an order, we will plant a tree in a wildland restoration project in one of our priority threatened ecosystems, including the Northern Great Lakes, Northern Rockies and Cascades, and Lower Rio Grande Valley. Therefore, each of your orders will be given more meaning, not only adding beauty to the world, but also providing homes and food for wild animals and clean air and water for descendants.

PRODUCT EXCLUSIVE ADVANTAGE

OUR MATERIALS : BANDAGE

Our materials are made of natural fibers. Among the 12 main textile fibers, the moisture content most meets the physiological requirements of human skin. They are smooth, cool, breathable, antistatic and not easy to fade. In addition, we advocate the concept of sustainability and reject "disposable" dress, so we upgrade and optimize on the basis of ordinary viscose to increase its strength and fatigue resistance. This means that the dresses are stronger and durable, and the shrinkage is greatly reduced.

We added spandex in the bandage fabric, which is also the reason why our dresses are elastic, not easy to wrinkle and durable. This fabric has the characteristics of strong elasticity and can stretch up to 5 to 8 times without damaging the fiber. Because the spandex plant has good adaptability to the body, it is very suitable for bodycon dresses without pressure.

HANDMADE : DECORATION

All heavy work dresses with decorations in Shineinsky are carefully made by hand sewing, which need to take a lot of time and manpower. However, this is what we must do to ensure product quality, minimize the natural shedding of pearls, rhinestones and other decorations, and ensure the fashion and design sense of dresses.

OUR FACTORY

Adhering to the tenet of “quality first”, we select high-quality suppliers for cooperation according to the standard of light luxury brand, and assist suppliers in continuous process upgrading. After several rounds of field investigation and evaluation, we finally decided to take the factory in Guangzhou, China as a partner. They have more than ten years of experience in producing bandage dress, and have a complete, scientific and intelligent production management system. Our factory is committed to reducing the impact on the environment and mainly relies on machines for product production.

RESPONSIBLE PRODUCTION SIMPLIFIED INTERMEDIATE LINKS

Awareness of Green. We believe that clothing is a long-term asset. To create a substainable business, we have a big input of resources into the R&D of our cloth. The material of our clothing is durable as well as comfortable.

 Our mission is to break the profit gap between suppliers and customers, and bring customers the best quality products within their budget. We Independently develop and use the tripartite sass system to promote the digitization process of supply chain and suppliers, improve the production efficiency of upstream and downstream. We are devoted to cutting down cost in every part, making profits for consumers and promise that the gross profit margin of the brand will not exceed 20%.

BEHIND THE SCENE

There are rich raw materials, abundant labor resources, advanced production technology and safe production environment on our production line. We choose modern, high-tech and ethical factories for cooperation through various investigations, and will require factories to continuously participate in evaluation and update technology in time to ensure production quality and efficiency. Welcome to learn more about the details of our factory, and welcome to supervise at any time.

FRIENDLY WORKING PLACE

Shineinsky is committed to satisfying everyone who works for us, which determines that the factory we choose must provide workers with a healthy and safe working environment. At the same time, we will also supervise the factory to provide perfect employee welfare and treatment for workers, ensuring their working hours are controlled within a reasonable range, and always pay attention to the physical and mental health of workers.

SOLVE THE EMPLOYMENT PROBLEM

It is a long-standing phenomenon that a part of the labor force is unemployed. The factories we cooperate with provide jobs and a good working environment for hundreds of workers. Each worker has a family behind him, which is also related to the happiness of hundreds of families. In the future, we will still try our best to contribute to solving the problem of social employment, and supervise the factory to provide protection for workers' welfare, rest time, physical and mental health.

 

Email:service@shineinsky.com

Place an Order,Plant a Tree

PLACE AN ORDER,  PLANT A TREE

CORPORATE SOCIAL RESPONSIBILITY

If there are no customers, there is no Shineinsky. Yep, that means you. Therefore, we have the responsibility to give back to the society and make our modest contribution to our common home--the earth. We adhere to the concept of "sustainability", contributing to environmental protection and make the earth healthier.

ABOUT AMERICAN FORESTS

FOUNDED IN 1875

American forests is the Forestry Association of the United States, which advocates a prudent and scientific strategy to manage and protect forests for future generations, help mitigate and adapt to climate change, and promote social equity. From cities to large natural landscapes, American forests have created healthy and resilient forests, which have brought essential benefits to climate, human beings, water and wildlife. By 2021, American forest has funded more than 1000 forest restoration projects in every state, planted 65 million trees, and helped dozens of major cities expand tree crowns.

IMPORTANCE OF PLANTING TREES

Each of your orders will help protect and restore our forests, which provide significant benefits to human beings, wild animal and all life on earth.

15%of American’s carbon emissions from burning fossil fuels is captured and stored by forests and forest products.

50%of land-dwelling species rely on forests to survive.

>50%of America’s drinking water originates from forests.

2ac.of American’s carbon emissions from burning fossil fuels is captured and stored by forests and forest products.

WHAT WE DO

On this season of giving. We collaborate with American forests. From June 3rd to June 6th, every time we receive an order, we will donate one dollar in a wildland restoration project in one of our priority threatened ecosystems, including the Northern Great Lakes, Northern Rockies and Cascades, and Lower Rio Grande Valley. Therefore, each of your orders will be given more meaning, not only adding beauty to the world, but also providing homes and food for wild animals and clean air and water for descendants. We firmly believe that every insignificant force will eventually condense into a powerful force enough to change the world.

DONATION INQUIRY

The electronic certificate is provided by American forest to confirm our donation, which make donation easier, transparent and reassuring. We are firmly committed to making your love traceable. You can also check through the website of American forest: https://www.americanforests.org/

Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.
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);