${function() {
const variantData = data.variant || {"id":"307f9e97-3672-445f-a5cd-df1ed010302e","product_id":"837b6296-b318-4ae6-9d7c-0269c76566c0","title":"White","weight_unit":"kg","inventory_quantity":1000,"sku":"","barcode":"","position":1,"option1":"White","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/a57180d735c246a988754b2e14c35052.jpg","path":"a57180d735c246a988754b2e14c35052.jpg","width":800,"height":800,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":19.99,"min_quantity":1}],"weight":"0","compare_at_price":"26.99","price":"19.99","retail_price":"26.99","available":true,"url":"\/products\/oil-sprayer-dispenser?variant=307f9e97-3672-445f-a5cd-df1ed010302e","available_quantity":999999999,"options":[{"name":"Color","value":"White"}],"off_ratio":26,"flashsale_info":[],"sales":1};
const saveType = "amount";
const saveText = "Save {{saved_amount}}";
const productLabelDiscountOn = true;
return `
-
${saveText.replace('\{\{saved_amount\}\}',
saveType == 'percentage'
? variantData.off_ratio + '%'
: ` `
)}
`;
}()}
Spring Sale Limited Offer๐
Color
: White
${function(){
const optName = "Color";
const optionValue = data.originData.selectData ? data.originData.selectData[optName].value : data.originData.value;
const optionValueText = optionValue ? (': ' + optionValue) : '';
return `
${optionValueText}
`
}()}
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
Add to cart
$19.99
${function(){
const wholesale_enabled = false;
const qty = data.quantity || 1;
const currentSelectVariant = data.variant;
const defaultVariant = (data.product && data.product.variants && data.product.variants[0]);
const productVariant = {"id":"307f9e97-3672-445f-a5cd-df1ed010302e","product_id":"837b6296-b318-4ae6-9d7c-0269c76566c0","title":"White","weight_unit":"kg","inventory_quantity":1000,"sku":"","barcode":"","position":1,"option1":"White","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/a57180d735c246a988754b2e14c35052.jpg","path":"a57180d735c246a988754b2e14c35052.jpg","width":800,"height":800,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":19.99,"min_quantity":1}],"weight":"0","compare_at_price":"26.99","price":"19.99","retail_price":"26.99","available":true,"url":"\/products\/oil-sprayer-dispenser?variant=307f9e97-3672-445f-a5cd-df1ed010302e","available_quantity":999999999,"options":[{"name":"Color","value":"White"}],"off_ratio":26,"flashsale_info":[],"sales":1};
const variantData = currentSelectVariant || defaultVariant || productVariant;
const wholesale_price = variantData.wholesale_price || [];
if(wholesale_enabled && wholesale_price.length > 0) {
let wholesaleIndex = wholesale_price.findIndex(item => {
return item.min_quantity > qty;
});
if(wholesaleIndex < 0){
wholesaleIndex = wholesale_price.length - 1;
}else if(wholesaleIndex > 0){
wholesaleIndex = wholesaleIndex - 1;
}
const wholesalePrice = wholesale_price[wholesaleIndex] || '';
return `
`
}else {
const price = variantData && variantData.price;
return price != undefined ? `
` : ' ';
}
}()}
Buy now
Product was out of stock.
Product is unavailable.
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.)
${function() {
const show = rebate.format_rules.length > data.maxShowCount;
return `
${rule}
${function() {
if(!show) return "";
return `
`;
}()}
`;
}()}
${originData.rebate.format_rules.join(", ")}
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';
i18n = {"ar-SA":{"special_offer":"ุนุฑุถ ุฎุงุต","close":"ุฅุบูุงู"},"de-DE":{"special_offer":"Sonderangebot","close":"Schlieรen"},"en-US":{"special_offer":"SPECIAL OFFER","close":"CLOSE"},"es-ES":{"special_offer":"Oferta especial","close":"Cerrar"},"fr-FR":{"special_offer":"Offre spรฉciale","close":"Fermer"},"id-ID":{"special_offer":"Penawaran istimewa","close":"Tutup"},"it-IT":{"special_offer":"Offerta speciale","close":"Chiudi"},"ja-JP":{"special_offer":"็นๅฅใชใชใใกใผ","close":"้ใใ"},"ko-KR":{"special_offer":"ํน๋ณ ๋ฉ๋ด","close":"๋ซ๊ธฐ"},"nl-NL":{"special_offer":"Speciale aanbieding","close":"sluiten"},"pl-PL":{"special_offer":"Oferta specjalna","close":"blisko"},"pt-PT":{"special_offer":"Oferta especial","close":"Fechar"},"ru-RU":{"special_offer":"ะกะฟะตัะธะฐะปัะฝะพะต ะฟัะตะดะปะพะถะตะฝะธะต","close":"ะะฐะบัััั"},"th-TH":{"special_offer":"เธเนเธญเนเธชเธเธญเธเธดเนเธจเธฉ","close":"เธเธดเธ"},"zh-CN":{"special_offer":"็นไปท","close":"ๅ
ณ้ญ"},"zh-TW":{"special_offer":"็นๅน","close":"้้"}};
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,
((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"
) {
if (discount_list[0]) {
this.landPage += discount_list[0].discount_id || "";
}
const info = {
rebate: discount_list[0],
maxShowCount: this.win.innerWidth > 768 ? 3 : 1,
landPage: this.landPage,
modalFooterImg: `url(${`${this.win.SHOPLAZZA["image_domain"]}oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg`})`,
i18n: this.i18n[this.lang]
};
this.renderData = info;
SPZ.whenApiDefined(
document.getElementById(isSection ? "app_rebate_section" : "app_rebate_block")
).then(apis => {
apis.render(info, true);
});
}
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);
${function(){
const variantData = data.variant || {"id":"307f9e97-3672-445f-a5cd-df1ed010302e","product_id":"837b6296-b318-4ae6-9d7c-0269c76566c0","title":"White","weight_unit":"kg","inventory_quantity":1000,"sku":"","barcode":"","position":1,"option1":"White","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/a57180d735c246a988754b2e14c35052.jpg","path":"a57180d735c246a988754b2e14c35052.jpg","width":800,"height":800,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":19.99,"min_quantity":1}],"weight":"0","compare_at_price":"26.99","price":"19.99","retail_price":"26.99","available":true,"url":"\/products\/oil-sprayer-dispenser?variant=307f9e97-3672-445f-a5cd-df1ed010302e","available_quantity":999999999,"options":[{"name":"Color","value":"White"}],"off_ratio":26,"flashsale_info":[],"sales":1};
return `
Sku : ${variantData && variantData.sku}
Weight : ${variantData && variantData.weight}${variantData && variantData.weight_unit}
Barcode : ${variantData && variantData.barcode}
`
}()}
91.2% Of Customers Are Buying 2 Pcs Or More
Fast refund Guarantee>> Partial or full refund depend on the situation
Secure Payments Via PayPalยฎ and CreditCard.
SSL Certificates For 100% Security.
๐ Transform Your Cooking Experience! ๐
Introducing the ultimate kitchen companion – the 2-in-1 Glass Oil Sprayer & Dispenser! ๐ฉ๐ณ๐จ๐ณ Say goodbye to clutter and hello to convenience with this innovative tool designed to make your cooking sessions a breeze.
๐Why You'll Love It:๐
Versatile Kitchen Tool: Combines an oil dispenser and vinegar sprayer in one! Perfect for cooking oil, vinegar, soy sauce, and more. Plus, its wide mouth design means no more fussing with funnels.
Safe & Durable: Made from high-quality, BPA-free glass, our sprayer is odorless and ensures safe food preparation. Thickened glass construction makes it perfect for both indoor and outdoor use.
Efficient Oil Control: Control your oil usage like never before! A simple thumb press delivers a precise 0.2 ml spray, allowing for even coverage and healthier cooking.
Easy to Clean: After the cooking's done, simply place it in the dishwasher. Yes, it's that easy! Our sprayer is totally dishwasher-safe, making cleanup as effortless as its use.
๐Specifications๐
Materials: Borosilicate glass, Polypropylene, Stainless steel
Capacity: 470mL
Temperature: -20~120 หC
Embrace the ease of cooking with precision and style. Click now to make it yours! โจ