GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining
GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining

GRAND PATIO 7-Piece Outdoor Dining Set with 6 Outdoor Modern Recycled Plastic Dining Chairs Rust Free Frame, Woodgrain Legs, Whale Modeling Design for Kitchen, Dining

$849.99
$0.00
-$-849.99
Color-Blue
Please select a color
Quantity
Free shipping-FedEx or UPS delivery
30-Day Return Policy
Sustainably made-1 Year Warranty
Secure payments-PayPal installment
Shipping

Grand Patio Blue Whale Dining Chair Set

Grand Patio Blue Whale Dining Chair Set

  • Inspired by the distinctive abdominal folds of the blue whale and the rhythm of ocean waves, our chair design aims to offer comfort outdoors while encouraging an appreciation for the Earth's marine ecosystems.

  • Renowned for our durable & green products, we proudly use recycled PP plastic derived from plastic bottles, reflecting our commitment to responsible and eco-conscious manufacturing.

  • CURVED ONE-PIECE SEAT & BACK

    support the spine, fit the body curve, effectively relieve the fatigue of long time seating

  • SKELETONIZED BACKREST

    cutout shape on the back provides a window for air circulation and enhances the sende of sophistication

  • WOODGRAIN TRANSFER

    aluminum legs are heat-transfer printed, for a natural wood grain look & maintenance-free

PRODUCT SPECIFICATIONS

Chair Dimension: 22.75‘’W×22.75‘’D×32.35‘’H

Material: Recycled marine materials, powder coated steel legs

Weight Capacity: 350 LBS

Tabel Dimension: 71‘’W×38‘W’×29.5‘’H

Material: Rust free and recycled plastic, aluminum casting table legs

All pieces are fast and easy to assemble, and all hardware and tools are included. 

  • Unique Blue Whale Design: Inspired by the deep sea blue whale, this patio furniture set features a back with hollowed-out details and curved armrests for relaxation and leisure.
  • Eco-Friendly Construction: Made from recycled marine materials, these chairs are an environmentally friendly choice for your kitchen & dining room sets.
  • Low Maintenance, Durable Woodgrain: The patio chair features powder coated steel legs with heat transfer technology offer a black walnut wood grain appearance without the need for regular upkeep.
  • Lightweight and Durable: Rust free and recycled plastic patio table and chairs set ensures lightweight ease of movement, corrosion resistance, and longevity in various outdoor dining set locations.
  • Multipurpose Dining Table: Using 1500 UVH ultra-weather-resistant transfer printing process, it presents the appearance and texture of solid wood, bringing brightness and beauty all year round. And Clever use of aluminum casting angle technology to give the table legs and dining table an elegant curved appearance, creating a comfortable and safe dining environment.
  • DIMENSIONS & ASSEMBLY:The dining set for 6 has 6 outdoor chairs and 1 Rectangular table. Size of Table: 38"D x 71"W x 29.50"H, Weight Capacity: 350 lbs; Size of Chair: 22.5"D x 22.75"W x 32.25"H, Weight Capacity: 200 lbs. All pieces are fast and easy to assemble, and all hardware and tools are included. If you have any questions about the purchase, please feel free to contact us directly.
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);