๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
8/11
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’
8/11

๐ŸŽUPGRADE PROFESSIONAL TITANIUM PHOTOCHROMIC READING GLASSESโฐPromotion 49% OFF Limited Time๐Ÿ›’

$19.97
$39.98
Save $20.01
ColorBlack
Please select a color
Lens
Please select a lens
Diopter
Please select a diopter
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!!!๐Ÿ”ฅ


โ€ผ๏ธ ๐™‡๐™ค๐™ฌ๐™š๐™จ๐™ฉ ๐™ฅ๐™ง๐™ž๐™˜๐™š ๐™ค๐™› ๐™ฉ๐™๐™š ๐™ฎ๐™š๐™–๐™ง, ๐™‚๐™ง๐™–๐™— ๐™ž๐™ฉ ๐™ฃ๐™ค๐™ฌ โ€ผ๏ธ


 Glassesith™ Reading Glasses, Be Your Personal Eye Guard.

At Glassesith, founded in 1988, we specialize in helping middle-aged and senior individuals with vision rehabilitation and care. We use advanced German lens technology, featuring photochromic coatings, progressive lens design, and Freeform Technology for precise customization. Our lenses are enhanced with anti-reflective, scratch-resistant, and UV protection coatings, ensuring durability and optimal visual comfort. With years of expertise in presbyopia solutions, we are committed to providing the best eyewear for eye health.



๐‘ผ๐‘ท๐‘ฎ๐‘น๐‘จ๐‘ซ๐‘ฌ ๐‘ท๐‘น๐‘ถ๐‘ญ๐‘ฌ๐‘บ๐‘บ๐‘ฐ๐‘ถ๐‘ต๐‘จ๐‘ณ ๐‘ป๐‘ฐ๐‘ป๐‘จ๐‘ต๐‘ฐ๐‘ผ๐‘ด ๐‘น๐‘ฌ๐‘จ๐‘ซ๐‘ฐ๐‘ต๐‘ฎ ๐‘ฎ๐‘ณ๐‘จ๐‘บ๐‘บ๐‘ฌ๐‘บ

Designed for active lifestyles, these glasses seamlessly combine photochromic technology that adjusts to changing light conditions, with the convenience of bifocal lenses for clear vision at both near and far distances. Perfect for middle-aged and senior individuals, these glasses offer a comfortable and functional solution for everyday use, whether you're enjoying outdoor activities or relaxing at home. With a modern, sporty design and advanced features, they provide both visual clarity and protection in one versatile pair of glasses.


โœ…Multi-focus Reading Glasses

Intelligent progressive multifocal Lens Give the best experience. Multifocus Reading Glasses feature three strengths in one pair of reading glasses so you can read, work on your computer and interact with others without having to take your glasses off. 

โœ…Photochromic Lenses

Automatically adjust to light conditions, darkening in sunlight and clearing indoors. They provide UV protection, shielding eyes from harmful rays, and reduce glare for better visual clarity. Ideal for outdoor activities, these lenses eliminate the need for multiple pairs of glasses, offering both comfort and convenience. Perfect for active lifestyles, they enhance vision, reduce eye strain, and seamlessly transition between different lighting environments. Whether you're driving, walking, or enjoying sports, photochromic lenses provide clear vision and protection in one stylish solution.
 

โœ…Durable Frames

Elevate your eyewear game with our high-end men's reading glasses. The stylish design is complemented by robust frames, specially crafted to withstand accidental drops and impacts. You won't need to worry about damaging your glasses; they're built to last.



 ๐Ÿ”… About Blue Light Blocking Lenses 

Blue light blocking lenses are designed to filter or absorb harmful blue light from screens and artificial lighting. They help reduce eye strain, discomfort, and potential long-term eye damage caused by prolonged exposure to digital devices (like phones, computers, and TVs). These lenses are especially useful for people who spend long hours in front of screens or under LED lighting. They improve visual comfort, reduce fatigue, and may help prevent issues like dry eyes and headaches.


๐Ÿ”ฌAnti-Blue Light and Photochromic Protection for Eye Health:

Our reading glasses with anti-blue light technology are designed to protect your eyes from the harmful effects of blue light emitted by digital screens, such as smartphones, computers, and TVs. This innovative technology filters out blue light, reducing eye strain, dryness, and fatigue, especially during prolonged screen time. The lenses are crafted to enhance contrast and clarity, providing a more comfortable viewing experience while maintaining natural color perception.
 

๐Ÿ‘ฅSuitable for Various Occasions: 

For people with presbyopia problems, whatever indoor or outdoor, all-weather wear, especially when reading books, newspapers, watching TV, playing games, traveling, gathering, fishing, this is A thoughtful and practical helper!

 

 About GLASSESITH 

A premium eyewear brand committed to providing high-quality vision solutions. Our guiding philosophy is encapsulated in our slogan: "Love Your Eyes Like You Love Life." This reflects our deep understanding of the importance of eye health and our dedication to delivering products that prioritize both comfort and protection.

Each pair of GLASSESITH eyewear is meticulously designed with the expertise of a global team of renowned optometrists, ophthalmologists, and cutting-edge technicians. Our multidisciplinary approach ensures that every product we offer incorporates the latest advancements in eye care and optical technology, while also considering individual comfort and style preferences.

At GLASSESITH, we believe that caring for your eyes is essential for overall well-being. That’s why we are not only focused on aesthetics but also on the health and long-term protection of your vision. Through rigorous design and quality control processes, we provide eyewear that meets the highest standards of optical performance, durability, and visual clarity.

With GLASSESITH, you can trust that your eyes are in expert hands, and our glasses are crafted to support your vision needs for both daily life and special occasions.


โšก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('appzebu 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);