Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet
Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet

Book Wallets , Book Clutch, Book Lover Gift, Best Holiday Gifts, Purple Purse Bag, Charlotte Bronte, Zip Around Wallet

📚 Bookish & Unique & Vintage 📚
Price
$65.59
$44.99
654 sold
The current produc does not participate any Rebate. Switch the participating product to check the design.
(This prompt will not be displayed on the client-side.)
if(window.self === window.top) { (window.disabled_exts ||=[]).push('product_detail_rebate'); } class SpzRebateComponent extends SPZ.BaseElement { constructor(element) { super(element); } xhr_ = SPZServices.xhrFor(this.win); viewport_ = this.getViewport(); action_ = null; lang = document.documentElement.lang || 'en-US'; landPage = "\/promotions\/rebate\/"; pageType = 1; cart = []; initData = null; rebateInfo = null; renderData = null; footerImage = `${this.win.SHOPLAZZA["image_domain"]}oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg`; isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.initData = this.getProduct(); this.action_ = SPZServices.actionServiceForDoc(this.element); this.registerAction("triggerGetRenderData", () => { const event = SPZUtils.Event.create(this.win, "triggerGetRenderData", this.renderData); this.action_.trigger(this.element, "getRenderData", event); }); this.registerAction("bindPropagation", () => { document.querySelector(".product_detail_rebate_list").addEventListener("click", e => { e.stopPropagation(); this.win.sa && this.win.sa.track("plugin_rebate_promotion_click", { plugin_timestamp: Date.now(), plugin_location: "info", product_id: this.initData.product.id, discount_id: this.rebateInfo.discount_list.map((item) => item.discount_id)[0], }); }); }); } async mountCallback() { document.addEventListener("dj.variantChange", e => { const data = e.detail; if (document.querySelector("#product-select-modal.show")) return; if (this.initData && this.initData.product && data.product && this.initData.product.id === data.product.id) { this.initData = data; this.initRebate(this.initData, true); } else { this.initData = data; this.getRebateInfo(); } }); document.addEventListener("dj.addToCart", e => { const v = e.detail; this.rebateInfo && this.win.sa && this.win.sa.track("plugin_rebate_atc", { variant_discount_id: this.getVariantDiscountId(v.variant_id).map(item => item.discount_id), discount_ids: this.rebateInfo.discount_list.map(item => item.discount_id), variant_id: v.variant_id, product_id: v.product_id, price: v.item_price, number: v.number, }); }); await this.getRebateInfo(); if (document.querySelector(".plugin-container__bottom-fixed")) { this.showDiscountPopupsInfoBar(); } else { this.win.addEventListener("extloaded", () => { this.showDiscountPopupsInfoBar(); }); } } getProduct = (() => { document.addEventListener("dj.variantChange", e => { if (!e.detail || !e.detail.product) return; const productJson = document.querySelector("#product-json"); if (productJson && productJson.textContent && JSON.parse(productJson.textContent)) { productJson.textContent = JSON.stringify(e.detail); } if (this.win.jQuery && this.win.jQuery.fn && this.win.jQuery(document).data("djproduct")) { this.win.jQuery(document).data("djproduct", e.detail); } }); return () => { let productData = null; if (this.win.jQuery && this.win.jQuery.fn) { try { let product = this.win.jQuery(document).data("djproduct"); if (product) { productData = JSON.parse(JSON.stringify(product)); } else { productData = null; } } catch (error) { productData = null; } } if (!productData) { const productJson = document.querySelector("#product-json"); productData = (productJson && productJson.textContent && JSON.parse(productJson.textContent)) || null; } return productData; }; })(); initRebate = this.win.SPZCore.Types.debounce( this.win, (async (data, variantChange) => { let discount_list = Object.assign([], this.rebateInfo.discount_list); /* 按子商品的多少对优惠信息进行排序 */ discount_list && discount_list.sort((a, b) => { return b.variant_ids.length - a.variant_ids.length; }); /* 选中子商品时 筛选子商品的优惠信息 */ if (data.selected && data.selected.id) { discount_list = this.getVariantDiscountId(data.selected.id); } /* 无满减信息 */ if (!(discount_list && discount_list.length)) { return; } const isSection = !!document.querySelector( `div[data-section-type^="shoplazza://apps/publicapp/blocks/rebate"] #rebate_custom_component` ); if ( (this.rebateInfo.rebate_type == "sku" && data && data.selected && data.selected.id) || this.rebateInfo.rebate_type == "spu" ) { let nowLandpage = this.landPage; if (discount_list[0]) { nowLandpage = this.landPage + discount_list[0].discount_id || ""; } const info = { rebate: discount_list[0], maxShowCount: this.win.innerWidth > 768 ? 3 : 1, landPage: nowLandpage, modalFooterImg: `url(${`${this.win.SHOPLAZZA["image_domain"]}oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg`})`, }; this.renderData = info; if(isSection) { SPZ.whenApiDefined( document.getElementById("app_rebate_section") ).then(apis => { apis.render(info, true); }); } else { // 重新渲染 抖动问题处理 this.templates_ = SPZServices.templatesForDoc(); const newTplDom = await this.templates_.renderTemplate(document.querySelector('#appRebateBlockTpl'), info) const parentDiv = document.querySelector('#app_rebate_block'); const oldDom = parentDiv.querySelector('.app_rebate_list'); if(oldDom){ parentDiv.replaceChild(newTplDom, oldDom); } else { parentDiv.appendChild(newTplDom); } } } this.insertSlideTag(this.rebateInfo.tag, variantChange); var pluginCurrencyEvent = new CustomEvent("plugin_currency_update"); document.dispatchEvent(pluginCurrencyEvent); }).bind(this), 10 ); getRebateInfo = async () => { if (this.initData && this.initData.product && this.initData.product.id) { var variant_ids = this.initData.product.variants.map(variant => variant.id); const res = await this.xhr_.fetchJson( "\/api\/discount-rebate\/product-discount", { method: "POST", body: { product_id: this.initData.product.id, product_type: this.initData.product.product_type, variant_ids: variant_ids, }, } ); if (!SPZCore.Types.isEmptyObject(res.rebate_info)) { res.rebate_info.tag = res.tag; res.rebate_info.rebate_type = res.rebate_type; this.rebateInfo = res.rebate_info; this.initRebate(this.initData); } else { if (this.win.top !== this.win.self) { const noActivity = document.getElementById("no-rebate-activity"); noActivity && (noActivity["style"].display = "block"); } } } }; getVariantDiscountId = (variant_id) => { if (!variant_id || !this.rebateInfo) return []; var rebateId = this.rebateInfo.variant_discount_map[variant_id]; return this.rebateInfo.discount_list.filter(item => item.discount_id == rebateId) || []; }; insertSlideTag = (tag, variantChange) => { setTimeout(() => { if (tag) { var tag_container; var modal = document.getElementById("product-select-modal"); if (modal && modal.classList.contains("show")) { if (!variantChange && modal.querySelector(".slider-discount-tag")) return; if ( variantChange && modal.querySelector(".slider-discount-tag:not(.rebate-tag)") ) return; tag_container = modal; } else { var product_detail_card = document.querySelector( '.page_container > [data-section-type="product_detail"], .page_container > [data-section-type="product-template"]' ); if(!product_detail_card) return; if (!variantChange && product_detail_card.querySelector(".slider-discount-tag")) return; if (variantChange && product_detail_card.querySelector(".slider-discount-tag:not(.rebate-tag)")) return; tag_container = product_detail_card; } if (tag_container.matches("#product-select-modal") && this.pageType === 13 && document.documentElement.clientWidth < 768) return; const tagDom = `<div class="slider-discount-tag dj_skin_product_title rebate-tag">${tag}</div>` if (document.querySelector(".sep-loaded-slider")) { var loadedSlider = tag_container.querySelector(".sep-loaded-slider"); loadedSlider.querySelectorAll(".slider-discount-tag").forEach(function(element) { element.remove(); }); loadedSlider.insertAdjacentHTML("beforeend", tagDom); } else { if (tag_container.querySelector(".support-slick")) { var supportSlick = tag_container.querySelectorAll(".support-slick, .sep-slider"); supportSlick.forEach((element) => { element.querySelectorAll(".slider-discount-tag").forEach((element) => { element.remove(); }); element.insertAdjacentHTML("beforeend",tagDom); }); } else { var sepSlider = tag_container.querySelector(".sep-slider"); sepSlider.querySelectorAll(".slider-discount-tag").forEach(function(element) { element.remove(); }); sepSlider.insertAdjacentHTML("beforeend",tagDom); } } if (document.documentElement.clientWidth < 768) { const sliderDiscountTagHeight = tag_container.querySelector(".slider-discount-tag").offsetHeight || 0; document.querySelector(".product-image__swiper_bullets").style.bottom = `${sliderDiscountTagHeight + 15}px`; } } }, 1000); }; fetchInfoBar = () => { let discount_ids = []; if (this.pageType === 1) { discount_ids = this.rebateInfo && this.rebateInfo.discount_list.map(item => item.discount_id); } else if (this.pageType === 38) { discount_ids = [this.win.rebateObj.rebateCollection_id] || []; } const productObj = this.getProduct(); return this.xhr_.fetchJson("\/api\/discount-rebate\/global-text", { method: "POST", body: { product_type: productObj && productObj.product && productObj.product.product_type, line_items: (this.cart.line_items || []).map(item => ({ variant_id: item.variant_id, product_id: item.product_id, quantity: item.quantity, price: item.price, selected: !item.unchecked, })), discount_ids: discount_ids, }, }); }; renderBottomBanner = res => { if (!res.tips) return; if (document.querySelector(".discount__info-bar")) return; var bar_style = `background:linear-gradient(90deg,${res.config.background_color_start},${res.config.background_color_end}); color:${res.config.color};`; let data = { tips: res.tips, landPage: this.landPage + res.id, bar_style }; const html = SPZCore.Dom.htmlFor(this.element); const banner = html([ `<a impr="1" imprevt="1" id="rebate_bottom_bar" href=${data.landPage} class="discount__info-bar text-truncate" data-activity-type="rebate" style="${data.bar_style}">${data.tips}</a>`, ]); document.querySelector(".plugin-container__bottom-fixed").appendChild(banner); const pluginCurrencyEvent = new CustomEvent("plugin_currency_update"); document.dispatchEvent(pluginCurrencyEvent); if (res.id) { var trackParams = { page: this.pageType, discount_id: res.id, product_id: this.getProduct()?.product.id, }; banner.addEventListener("click", () => { this.win.sa && this.win.sa.track("plugin_rebate_promotion_click", { plugin_timestamp: Date.now(), plugin_location: "bottom_bar", product_id: trackParams.product_id, discount_id: trackParams.discount_id, }); }); this.win.sa && this.win.sa.track("plugin_rebate_banner_pv", trackParams); } }; showDiscountPopupsInfoBar = () => { if ([13, 14, 19, 30, 31].includes(this.pageType)) return; if (document.querySelector(".plugin-container__bottom-fixed .discount__info-bar")) return; this.fetchInfoBar().then(this.renderBottomBanner); document.addEventListener("dj.cartChange", () => { this.fetchInfoBar().then(this.renderBottomBanner); }); }; } SPZ.defineElement("spz-custom-rebate", SpzRebateComponent);
Style
Please select a style
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);

About this item

Little  book wallet purse with zipper made from vegan leather. Coin purse cosmetic bag ideal for book lover gift.

📚The Hobbit: Celebrate the adventures of J.R.R. Tolkien’s The Hobbit with this charming faux leather purse. It features the majestic image of the dragon Smaug and the Lonely Mountain in the background, capturing the essence of this fantasy tale. Embrace your love for this timeless story while keeping your essentials neatly stored.

📚Pride and Prejudice Embrace the timeless elegance of Jane Austen’s Pride and Prejudice with this sophisticated vegan leather purse. It features a stunning peacock with its feathers fully spread, set against a rich emerald green background. The intricate detail of the peacock’s plumage adds a touch of opulence, perfectly capturing the romance and wit of this beloved novel. Ideal for fans of Elizabeth Bennet and Mr. Darcy.

📚The Little Prince Embrace the whimsical world of Antoine de Saint-Exupéry’s The Little Prince with this enchanting vegan leather purse. It showcases the beloved little prince standing on his small planet with stars all around, set against a serene yellow background. Perfect for holding your treasures while celebrating this classic story.

📚Dracula Indulge in the dark elegance of Bram Stoker’s Dracula with this striking faux leather zip around purse. The purse features an intricate gothic design with a silhouette of Count Dracula’s castle under a blood-red moon. A must-have for fans of this iconic vampire tale.

📚Frankenstein Honor the legacy of Mary Shelley’s Frankenstein with this hauntingly beautiful vegan leather purse. It presents a dramatic depiction of the creature against a stormy sky, capturing the essence of this groundbreaking novel. Perfect for carrying your essentials with a touch of gothic flair.

📚Grimm's Fairy Tales Delight in the timeless magic of Grimm’s Fairy Tales with this whimsical faux leather purse. It features a collage of enchanting illustrations from classic tales like Cinderella and Snow White, set against a vibrant, storybook-inspired background. Ideal for storing your cards and keys while celebrating these beloved stories.

📚Anne of Green Gables Embrace the spirit of L.M. Montgomery's "Anne of Green Gables" with this charming vegan leather purse. It showcases a profile portrait of Anne, creating a warm and inviting atmosphere. The background of this purse is light-hearted and delightful, perfectly capturing the emotional depth of this beloved classic novel. An ideal choice for Anne fans.

📚Burn Book Channel the iconic high school drama of the Burn Book with this bold faux leather zip around purse. Inspired by the infamous book from Mean Girls, it features a hot pink cover with cut-out letters and doodles. Keep your secrets and essentials stylishly concealed.

📚Winnie the Pooh Embrace the whimsy of A.A. Milne's Winnie the Pooh with this delightful vegan leather purse. It features an adorable illustration of Winnie the Pooh and his friends frolicking in the Hundred Acre Wood, evoking a sense of joy and nostalgia. The background is a soft yellow color, adding to the charm of this beloved classic. Perfect for fans of Pooh Bear and his adventures.

📚Alice's Adventures in Wonderland Celebrate the whimsical world of Lewis Carroll with this enchanting Alice in Wonderland inspired vegan leather purse. It features a delightful depiction of Alice with her classic red and white dress and a curious expression, surrounded by fantastical elements from Wonderland on a mysterious yellow background. Carry your love for this timeless adventure while conveniently storing your cards and keys.

📚The Wonderful Wizard of Oz Embrace the magic of L. Frank Baum’s The Wonderful Wizard of Oz with this vibrant zip around purse. A captivating design showcases Dorothy, Toto on a cheerful emerald green purse, made with vegan leather. Celebrate your journey to the Emerald City while keeping your essentials organized.

📚Peter Rabbit Delight in the charming world of Beatrix Potter’s Peter Rabbit with this adorable vegan leather purse. Featuring a sweet illustration of Peter Rabbit in his iconic blue jacket amidst a garden of vegetables on a soft sky blue background, this purse is as practical as it is pretty. Store your cards and keys with a touch of childhood nostalgia.

📚Shakespeare Honor the timeless works of William Shakespeare with this elegant zip around purse. Showcasing a refined design with a picture frame and assorted flowers over a rich brownish-red background, this vegan leather purse is perfect for literature lovers. Keep your essentials safe while celebrating the Bard’s enduring legacy.

📚The Great Gatsby Channel the glamour and decadence of F. Scott Fitzgerald’s The Great Gatsby with this sophisticated vegan leather purse. Featuring a striking Art Deco design in gold and black on a somber blue background, this purse pays homage to the roaring twenties and the enigmatic Jay Gatsby. Perfect for keeping your cards and keys secure while you live out your own roaring adventures.

📚Don Quixote Celebrate the unwavering idealism of Don Quixote with this beautifully crafted vegan leather purse. Featuring a vibrant sunflower design over a soft beige background, this purse symbolizes the timeless pursuit of dreams and light, much like the legendary knight-errant himself. Just as sunflowers turn towards the sun, Don Quixote chased after his own noble ideals with relentless determination. Carry your cards and keys while honoring Cervantes’ classic tale of chivalry, idealism, and the unshakable belief in the impossible.

📚Emma Embrace the wit and charm of Jane Austen’s Emma with this delightful vegan leather purse. Adorned with a delicate pastel design and subtle regency motifs, this purse reflects the elegance of Highbury’s most famous matchmaker. Enjoy the sophistication of Austen’s world while carrying your cards and essentials in style.

📚Fourth Wing Step into the thrilling world of Fourth Wing with this daring vegan leather purse. With a striking metallic gold dragon wing design across a rich burgundy background, this accessory is perfect for fans of the epic dragon-rider saga. Keep your cards, keys, and more safe while carrying the magic and adventure of this captivating fantasy series with you.

📚NARUTO ICHA ICHA Unleash your inner ninja with this playful NARUTO ICHA ICHA inspired vegan leather purse. Featuring a cheeky and vibrant orange design with illustrations of the iconic book from the anime, this purse is a fun tribute to Jiraiya’s infamous novels. Perfect for storing your daily essentials while embracing your love for the world of Naruto.

📚Sherlock Holmes Embrace the mystery and sophistication of Sherlock Holmes with this sleek vegan leather purse. Featuring a classic view of a traditional British street from afar, the design captures the atmospheric charm of Victorian London. The muted grey background evokes the foggy streets where the iconic detective solved his greatest cases. This purse is perfect for fans of Sir Arthur Conan Doyle’s timeless sleuth, allowing you to carry your essentials while channeling the intrigue and intelligence of the world’s most famous detective.

📚The Handbook for the Recently Deceased Step into the quirky world of The Handbook for the Recently Deceased with this unique vegan leather purse. Featuring a whimsical vintage design straight from the pages of Beetlejuice’s iconic book, this accessory is both stylish and fun. Perfect for carrying your cards and keys while embracing the otherworldly humor and charm of this cult classic.

📚Odyssey Celebrate the epic journey of The Odyssey with this striking vegan leather purse. Set against a deep green background, the design evokes the timeless adventure of Odysseus as he navigates through the seas and unknown lands. The rich green symbolizes growth, endurance, and the natural world that Odysseus encounters on his voyage. Perfect for fans of Greek mythology, this purse allows you to carry your essentials while reflecting on the bravery, wisdom, and perseverance that define this ancient epic.

📚Little Women: Celebrate the ingenuity of Louisa May Alcott with this pretty Little Women inspired vegan leather purse. It features a pretty profile of a young woman over a dark green background. Enjoy your love of this classic feminist novel whilst handily storing your cards and keys.

📚Jane Eyre: Embrace your love of Charlotte Brontȅ’s Jane Eyre with this eye-catching zip around purse. A beautiful flowery design takes centre stage on this whimsical lilac purse, made with vegan leather. 

📚Allan Edgar Poe: Celebrate one of the most prized authors of the 19th century with this handy faux leather zip around purse. The purse features Allan Edgar Poe’s Complete Tales and Poems. Depicting an eye-catching blue design and a prominent raven image.

More styles of book purses are still being designed. Stay tuned.

You can leave a facebook comment with your favorite book.

We will try to add it for you.

Technical Details

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