Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler
Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler

Limited Edition 40oz Steel H2.0 FlowState Quencher Tumbler

Price

€40.00 €9.99
Save 75%
Easy Returns
Fast Global Delivery
45-Day Money-Back Guarantee

color - Christmas Tree1.0

Please select a color

Quantity

Stanley X Harry Potter
Limited Edition Quencher H2.0
FlowState™ Tumbler | 40 OZ

A must-have for all wizard fans who wish to carry a piece of the wizarding world wherever they go. This tumbler showcases a captivating design that will transport you to the magical halls and ignite your imagination.

HP Wizard 40 盎司淬火剂 H2.0 燧石魁地奇霍格沃茨图片 3

Buy two get one free, buy three get two free, the color of the gift is random

This beautiful authentic Stanley Adventure Quencher 40oz laser engraved with a full wrap horror movie character design. Laser engraving is a permanent process and will not peel off or fade.
HP Wizard 40 盎司淬火剂 H2.0 燧石魁地奇霍格沃茨图片 1
ABOUT
Limited edition thermoses now available for purchase! These high-quality thermoses are perfect for keeping your drinks hot or cold for hours, whether you're on a camping trip or just running errands around town.

猝灭剂

Please note that these thermoses are limited edition, so once they're gone, they're gone for good. We encourage all customers to purchase only what they need and to avoid any attempts to resell the product at a higher price. Our goal is to provide our customers with a quality product at a fair price, and we hope you'll enjoy your thermos for years to come.

Thank you for your support, and happy sipping!

HP Wizard 40oz Quencher H2.0 Black Quidditch Hogwarts image 2

Highlights

  • TEMPERATURE CONTROL: This double wall insulated tumbler keeps drinks cold for 9 hours and iced for 40 hours. To keep you hydrated all day long, the H2.0 FlowState™ tumbler has an ample capacity of 40oz.
  • EVERYDAY USE: To ensure this quencher travel tumbler goes everywhere you do, we’ve designed it to have a car cup holder-compatible silhouette. The advanced FlowState™ lid, featuring a rotating cover with three positions: a straw opening designed to resist splashes with a seal that holds the reusable straw in place, a drink opening, and a full-cover top for added leak resistance.
  • EARTH-FRIENDLY DURABILITY: Constructed of 90% recycled BPA free stainless steel for sustainable sipping, the Quencher H2.0 has the durability to stand up to a lifetime of use. Eliminate the use of single-use plastic bottles and straws with a travel tumbler built with sustainability in mind.
  • DISHWASHER SAFE: Cleaning your tumbler and lid couldn't be easier, just pop it into the dishwasher.
  • BUILT FOR LIFE: Lifetime warranty guaranteed.

Description

Inspired by fresh spring colors, and ready to go wherever the season takes you. When you head out, take the 40oz Quencher H2.0 FlowState™ Tumbler with you for all-day hydration. These new, Target exclusive looks are bursting to match your mood, with never-before-seen tie dyes and colors bringing vibrancy and fun.

With double-wall vacuum insulation that will keep your drink ice cold for hours, the Quencher is perfect for venturing out in search of new inspiration—or as your constant companion as you plan your next getaway. Designed to fit into most cup holders, the Quencher features a comfortable handle for easy grabbing and going. The advanced FlowState™ lid rotates to three positions: a straw opening, one for sipping and a full-cover top to help prevent splashes and spills. Grab this one while you can – brighten your day and let color inspire play.
Quencher
Quencher
Quencher
Quencher

Warranty

  • Manufacturer's Warranty - Parts: 1

  • Manufacturer's Warranty - Labor: 1

No matter what color mug you buy, we will prepare a matching gift package for you!!

Our Promise to You:

  • ✈️ Free worldwide shipping
  • ⭐️ 100% money-back guarantee for fast refunds
  • 🔒 5-year warranty period

Our Goal:

  • 🌟 To provide the world with interesting, stylish, and high-quality products.
  • 💯 We are committed to delivering superior customer service and support, and we value your satisfaction above all else.

Shop worry-free on our website with:

  • Real-time tracking and insurance
  • 30-day money-back guarantee
  • 24/7 customer support
  • Secure checkout
  • Simple, risk-free process

Experience hassle-free shopping today!

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