www.manazon.club Open in urlscan Pro
104.18.233.42  Public Scan

Submitted URL: http://manazon.club/
Effective URL: https://www.manazon.club/
Submission: On September 07 via api from SG — Scanned from SG

Form analysis 4 forms found in the DOM

POST

<form id="footer-newsletter-form" class="footer-newsletter-form mt-3" action-xhr="/api/customers/newsletters" method="POST" custom-validation="change-interact-and-submit"
  @submiterror="footer-newsletter-error.rerender(data=event);footer-newsletter-error.toggleClass(class='hidden', force=false);"
  @submitsuccess="footer-subscription-popup.open;footer-newsletter-subscription-success.toggleClass(class='hidden', force=false);footer-newsletter-form.toggleClass(class='hidden', force=true);footer-newsletter-error.toggleClass(class='hidden', force=true);">
  <div class="footer-newsletter-form-group flex items-center justify-between rounded">
    <div class="footer-newsletter-form-item relative flex-1">
      <input class="footer-newsletter-form-input clear w-full text-base" type="text" id="footer-newsletter-email" name="email" required=""
        pattern="[a-zA-Z0-9!#$%&amp;'*+\\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&amp;'*+\\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?"
        @input-debounced="footer-newsletter-error.toggleClass(class='hidden', force=true);">
      <label class="footer-newsletter-form-label absolute color-footer-text-60 text-base" for="footer-newsletter-email"> Your email </label>
    </div>
    <button class="footer-newsletter-submit-btn button-primary flex-shrink-0" type="submit"> Join </button>
  </div>
  <div class="footer-newsletter-tip flex text-sm color-footer-text-80" validation-for="footer-newsletter-email" visible-when-invalid="valueMissing" hidden="">
    <svg class="flex-shrink-0" width="14" height="14" xmlns="http://www.w3.org/2000/svg">
      <rect width="14" height="14" rx="7" fill="#EB391B"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd" d="M7 2.9a.6.6 0 0 1 .6.6v4.8a.6.6 0 1 1-1.2 0V3.5a.6.6 0 0 1 .6-.6Z" fill="#fff"></path>
      <path d="M7.6 10.5a.6.6 0 1 1-1.2 0 .6.6 0 0 1 1.2 0Z" fill="#fff"></path>
    </svg>Please fill in this field
  </div>
  <div class="footer-newsletter-tip flex text-sm color-footer-text-80" validation-for="footer-newsletter-email" visible-when-invalid="patternMismatch" hidden="">
    <svg class="flex-shrink-0" width="14" height="14" xmlns="http://www.w3.org/2000/svg">
      <rect width="14" height="14" rx="7" fill="#EB391B"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd" d="M7 2.9a.6.6 0 0 1 .6.6v4.8a.6.6 0 1 1-1.2 0V3.5a.6.6 0 0 1 .6-.6Z" fill="#fff"></path>
      <path d="M7.6 10.5a.6.6 0 1 1-1.2 0 .6.6 0 0 1 1.2 0Z" fill="#fff"></path>
    </svg>Please enter a valid email address
  </div>
</form>

POST

<form id="footer-newsletter-form-md" class="footer-newsletter-form mt-3" action-xhr="/api/customers/newsletters" method="POST" custom-validation="change-interact-and-submit"
  @submiterror="footer-newsletter-error-md.rerender(data=event);footer-newsletter-error-md.toggleClass(class='hidden', force=false);"
  @submitsuccess="footer-subscription-popup.open;footer-newsletter-subscription-success-md.toggleClass(class='hidden', force=false);footer-newsletter-form-md.toggleClass(class='hidden', force=true);footer-newsletter-error-md.toggleClass(class='hidden', force=true);">
  <div class="footer-newsletter-form-group flex items-center justify-between rounded">
    <div class="footer-newsletter-form-item relative flex-1">
      <input class="footer-newsletter-form-input clear w-full text-base" type="text" id="footer-newsletter-email-md" name="email" required=""
        pattern="[a-zA-Z0-9!#$%&amp;'*+\\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&amp;'*+\\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?"
        @input-debounced="footer-newsletter-error.toggleClass(class='hidden', force=true);">
      <label class="footer-newsletter-form-label absolute color-footer-text-60 text-base" for="footer-newsletter-email-md"> Your email </label>
    </div>
    <button class="footer-newsletter-submit-btn button-primary flex-shrink-0" type="submit"> Join </button>
  </div>
  <div class="footer-newsletter-tip flex text-sm color-footer-text-80" validation-for="footer-newsletter-email-md" visible-when-invalid="valueMissing" hidden="">
    <svg class="flex-shrink-0" width="14" height="14" xmlns="http://www.w3.org/2000/svg">
      <rect width="14" height="14" rx="7" fill="#EB391B"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd" d="M7 2.9a.6.6 0 0 1 .6.6v4.8a.6.6 0 1 1-1.2 0V3.5a.6.6 0 0 1 .6-.6Z" fill="#fff"></path>
      <path d="M7.6 10.5a.6.6 0 1 1-1.2 0 .6.6 0 0 1 1.2 0Z" fill="#fff"></path>
    </svg>Please fill in this field
  </div>
  <div class="footer-newsletter-tip flex text-sm color-footer-text-80" validation-for="footer-newsletter-email-md" visible-when-invalid="patternMismatch" hidden="">
    <svg class="flex-shrink-0" width="14" height="14" xmlns="http://www.w3.org/2000/svg">
      <rect width="14" height="14" rx="7" fill="#EB391B"></rect>
      <path fill-rule="evenodd" clip-rule="evenodd" d="M7 2.9a.6.6 0 0 1 .6.6v4.8a.6.6 0 1 1-1.2 0V3.5a.6.6 0 0 1 .6-.6Z" fill="#fff"></path>
      <path d="M7.6 10.5a.6.6 0 1 1-1.2 0 .6.6 0 0 1 1.2 0Z" fill="#fff"></path>
    </svg>Please enter a valid email address
  </div>
</form>

<form class="">
  <div class="zb-flex">
    <a href="${product.url}?${toQuery({ aid: 'smart_recommend.2.' + data.id, ifb: product.ifb || '', cfb: product.cfb || '', scm: product.scm || data.scm || '', ssp: data.ssp || '' })}" impr="1" imprevt="1" class="zb-w-[132px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0" data-prdct="${product.id}" data-ifb="${product.ifb || ''}" data-cfb="${product.cfb || ''}" data-scm="${product.scm || data.scm || ''}" data-spm="${productIndex}"> <ljs-render layout="container" id="smart_cart_pop_image_${product.id}" template="smart_cart_pop_image_template" manual=""></ljs-render> </a>
    <div class="zb-flex zb-flex-col zb-flex-grow zb-justify-between">
      <div>
        <div class="zb-line-clamp-2 zb-text-sm zb-mb-2">${product.title}</div> <ljs-render layout="container" id="smart_cart_pop_price_${product.id}" template="smart_cart_pop_price_template" manual=""></ljs-render>
      </div>
      <div>
        <div class="zb-relative zb-w-full zb-cursor-pointer">
          <div class="zb-border zb-border-solid zb-border-[#eee] zb-px-3 zb-py-[10px] zb-flex zb-items-center zb-justify-between zb-font-semibold zb-text-sm zb-rounded-sm"
            @tap="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);smart_cart_pop_variant_${product.id}_mobile.toggleClass(class=zb-hidden);smart_cart_pop_variant_${product.id}_pc.toggleClass(class=smart_cart_pop_variant_pc_show,force=true);smart_cart_pop_variant_modal_${product.id}.open"
            spz-if="${!!(product.options &amp;&amp; product.options.length &amp;&amp; product.options.length > 0) &amp;&amp; data.config.variant_select_visible}"> <ljs-render manual="" layout="container" id="smart_cart_pop_variant_text_${product.id}"
              template="smart_cart_pop_variant_text_template"></ljs-render> <svg id="smart_pop_variant-select-${product.id}" width="12" height="8" class="zb-ml-2" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
              <path
                d="M6.00002 7.06738C6.19244 7.06775 6.38498 6.99453 6.5318 6.84772C6.54504 6.83447 6.55769 6.82086 6.56973 6.8069L11.1251 2.25152C11.418 1.95863 11.418 1.48375 11.1251 1.19086C10.8322 0.897968 10.3573 0.897968 10.0645 1.19086L6.00003 5.25529L1.9356 1.19086C1.64271 0.897968 1.16784 0.897968 0.874943 1.19086C0.58205 1.48375 0.58205 1.95863 0.874943 2.25152L5.43033 6.8069C5.44237 6.82086 5.45502 6.83447 5.46826 6.84772C5.61507 6.99453 5.8076 7.06775 6.00002 7.06738Z"
                fill="#0A1533"></path>
            </svg> </div> <ljs-lightbox layout="nodisplay" disable-unmount="" class="smart_cart_pop_lightbox_pc" id="smart_cart_pop_variant_modal_${product.id}" @close="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);">
            <div id="smart_cart_pop_variant_${product.id}_pc" class="zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
                class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template"
                onclick="event.stopPropagation()" disabled-dj-event="" interference=""> </ljs-variants></div>
          </ljs-lightbox>
        </div>
        <div class="zb-mt-3"> <button product-id="${product.id}" id="smart_cart_pop_atc_btn_${product.id}"
            class="zb-flex zb-items-center zb-justify-center zb-w-full zb-text-white zb-py-[10px] zb-h-9 zb-text-xs zb-font-normal zb-border-none zb-rounded-[4px] smart_cart_pop_atc_btn_bg" type="button" role="addToCart"
            @tap="smart_cart_pop_loading_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_btn_${product.id}.toggleClass(class=zb-pointer-events-none);custom-func.addATCHook(activity_id='${data.id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${product.scm || data.scm}',ssp='${data.ssp}',spm='${data.spmBase}.${productIndex}')">
            <ljs-render layout="container" id="smart_cart_pop_atc_${product.id}" template="smart_cart_pop_atc_template" mamual="" class="notranslate"> </ljs-render>
            <div id="smart_cart_pop_added_${product.id}" class="zb-hidden"><span class="zb-flex zb-justify-center zb-gap-1"><svg width="14" height="15" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
                  <path
                    d="M8 16.5006C3.58171 16.5006 0 12.9183 0 8.5C0 4.08171 3.58171 0.5 8 0.5C12.4183 0.5 16 4.08171 16 8.5C16 12.9183 12.4183 16.5006 8 16.5006ZM8 2.04344C4.21314 2.04344 1.54287 4.71371 1.54287 8.50057C1.54287 12.2874 4.21314 14.9577 8 14.9577C11.7869 14.9577 14.4571 12.2874 14.4571 8.50057C14.4571 4.71371 11.7869 2.04344 8 2.04344ZM7.26057 11.1909L7.12229 11.3286L7.09543 11.3017C7.02286 11.336 6.94286 11.3577 6.85714 11.3577C6.73543 11.3577 6.62857 11.3109 6.536 11.2463L6.52229 11.2594L6.45371 11.1909C6.45314 11.1903 6.45314 11.1903 6.45257 11.1897L4.09771 8.83486L4.90629 8.02686L6.85714 9.97771L11.1629 5.67143L11.9714 6.48L7.26171 11.1897C7.26114 11.1903 7.26114 11.1903 7.26057 11.1909Z"
                    fill="white"></path>
                </svg>Added</span></div>
            <div id="smart_cart_pop_loading_${product.id}" class="zb-hidden">
              <div class="smart_cart_pop_loading"></div>
            </div>
          </button> </div>
      </div>
    </div>
  </div>
  <div id="smart_cart_pop_variant_${product.id}_mobile" class="zb-hidden md:zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
      class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template" onclick="event.stopPropagation()"
      disabled-dj-event="" interference=""> </ljs-variants></div>
</form>

POST //translate.googleapis.com/translate_voting?client=te

<form id="goog-gt-votingForm" action="//translate.googleapis.com/translate_voting?client=te" method="post" target="votingFrame" class="VIpgJd-yAWNEb-hvhgNd-aXYTce"><input type="text" name="sl" id="goog-gt-votingInputSrcLang"><input type="text"
    name="tl" id="goog-gt-votingInputTrgLang"><input type="text" name="query" id="goog-gt-votingInputSrcText"><input type="text" name="gtrans" id="goog-gt-votingInputTrgText"><input type="text" name="vote" id="goog-gt-votingInputVote"></form>

Text Content

 * More links


由 翻译强力驱动
English,Français,Italiano,Deutsch
USD
 * United States Dollars (USD)
 * Euro (EUR)
 * United Kingdom Pounds (GBP)

Sign in Create an account
${(data.data && data.data.count) > 999 ? '999+' : (data.data &&
data.data.count)}
0


${(data.data && data.data.count) > 999 ? '999+' : (data.data &&
data.data.count)}


English,Français,Italiano,Deutsch
USD
 * United States Dollars (USD)
 * Euro (EUR)
 * United Kingdom Pounds (GBP)

Log in



MANAZON G-SPOT RABBIT VIBRATOR FOR WOMEN

Not only has a small and cute appearance, but also has a powerful orgasmic
function
Shop Now



OUR SERVICES

Contact Us
Customer email address: service@manazon.club

Discreet Package
No product information will be displayed on the package

Discount
15% off for all first orders

Safe Payments
The payment process is secure and protected from fraud or unauthorized access
Contact Us
Contact Us Order Track Payment Methods Terms & Conditions Discreet Packaging
NEWLETTER
We send great emails!
Your email
Join
Please fill in this field
Please enter a valid email address
${data.errors && data.errors[0]}
Thanks for subscribing
Contact Us
Contact Us Order Track Payment Methods Terms & Conditions Discreet Packaging
NEWLETTER
We send great emails!
Your email
Join
Please fill in this field
Please enter a valid email address
${data.errors && data.errors[0]}
Thanks for subscribing


10% off your first order1

Thank you for your subscription, you can enjoy a 10% discount for the first
purchase.
Enter a discount code
Copy code

${function() { const force_image_size = "natural"; const product_hover_on =
true; const product_show_sale_label = false; const product_save_type = "amount";
const badge1 = "Hot"; const badge2 = ""; const badge3 = ""; const
product_title_mobile_hide = false; const product_title_style = "full"; const
enable_collection_thumb_image = true; const variantNames = ["color"]; const
thumbMaxNum = 4; const suffix_id = Math.random().toFixed(6).slice(-6); const url
= data.url; const productId = data.id; const price = data.price; const
productAvailable = data.available; const productVariants = data.variants || [];
const images = data.images || []; const image = data.image || {}; const
imageWidth = image.width; let imageHeight = image.height; let image2 = null; let
imageHoverOn = false; if (force_image_size !== 'natural') { imageHeight =
imageWidth * force_image_size; } if (product_hover_on) { for (let i = 1; i <
images.length; i++) { const img = images[i]; if (img.src &&
img.src.indexOf('video=') === -1) { image2 = img; imageHoverOn = true; break; }
} } let compareAtPrice = data.compare_at_price; let offRatio = data.off_ratio;
let discountMaxUrl = url; const showFrom = data.price_min != data.price_max ?
true : false; for (let i = 0; i < productVariants.length; i++) { const variant =
productVariants[i]; if (variant.price == price && compareAtPrice <
variant.compare_at_price) { compareAtPrice = variant.compare_at_price; offRatio
= variant.off_ratio; variant.available && (discountMaxUrl = variant.url); } }
const soldOutText = "Sold out"; let soldOn = false; let saleOn = false; if
(productAvailable) { if (product_show_sale_label && +price < +compareAtPrice) {
saleOn = true; } } else { soldOn = true; } const diffPrice = compareAtPrice -
price; const saveLabelContent = product_save_type == 'percent' ? (offRatio +
'%') : ``; let saveText = "Save {off_ratio}"; saveText =
saveText.replace('{off_ratio}', saveLabelContent); const productTitle =
data.title; const variantValues = []; const showVariants = []; if
(data.need_variant_image && enable_collection_thumb_image && variantNames.length
> 0) { for (let i = 0; i < (data.options || []).length; i++) { const option =
data.options[i]; const optionName = option.name.toLowerCase(); if
(variantNames.includes(optionName)) { for (let j = 0; j <
productVariants.length; j++) { const variant = productVariants[j]; const value =
variant.options[i].value; if (!variantValues.includes(value)) {
variantValues.push(value); showVariants.push(variant); } } break; } } } return `
${showVariants.map(item => { return ` `; }).join('')}
${saleOn ? saveText : soldOutText} ${badge1} ${badge2} ${badge3}


${ "TITLE" === 'SUBTITLE' ? DATA.BRIEF : DATA.TITLE }

From ${saveText} ${showVariants.map((item, idx) => { let showMoreHtml = ''; if
(idx == thumbMaxNum) { showMoreHtml += ` +${showVariants.length - thumbMaxNum}
`; } return ` ${showMoreHtml} `; }).join('') }
`; }()}
${function() { const defaultSelectedVariant = data.variants.find(v =>
v.available) || data.variants[0]; const defaultIndex = !!defaultSelectedVariant
? data.images.findIndex(img => img.src == (defaultSelectedVariant.image &&
defaultSelectedVariant.image.src)) : -1; const initialSlide = defaultIndex == -1
? 0 : defaultIndex; const attrs = data.images.length > 1 ? 'slide controls' :
''; return ` ${data.images.map(img => ` `).join('')} `; }()}
${data.images.map((img, index) => ` `).join('')}


${DATA.TITLE}

${data.brief}
${function() { const defaultSelectedVariant = data.variants.find(v =>
v.available) || data.variants[0]; return `
${("Save {off_ratio}").replace('{off_ratio}', ("amount") == 'percent' ?
defaultSelectedVariant.off_ratio + '%' : `` )}
-
`; }()}
Quantity
${function() { const defaultSelectedVariant = data.variants.find(v =>
v.available) || data.variants[0]; let status_lan = "Add to cart"; if
((defaultSelectedVariant && !defaultSelectedVariant.available) ||
(!defaultSelectedVariant && !data.available)) { status_lan = "Sold out"; }
return ` ${status_lan}
 - 

Buy now

`; }()}
${function() { var thumbSwitchName = ''; return
data.product.options.map((option, index) => { const optionName = option.name ||
''; const optionPosition = 'option' + (index + 1); const values = option.values
|| []; const soldOutValues = (data.soldOutValues &&
data.soldOutValues[optionPosition]) || {}; const variantThumbs = ["color"] ||
[]; var isThumbImage = false; if (data.product.need_variant_image &&
thumbSwitchName == '') { for (let i = 0; i < variantThumbs.length; i++) { const
name = variantThumbs[i].toLowerCase(); if (name == optionName.toLowerCase()) {
isThumbImage = true; thumbSwitchName = name; } } } const thumbStyle =
"image_with_text"; const thumbType = isThumbImage ? thumbStyle.replace(/_/g,
'-') : 'text'; return `
${optionName.slice(0, 1).toUpperCase() + optionName.slice(1).toLowerCase()} : 
${values.map(value => { let selected = ''; let soldout = soldOutValues[value] ?
'soldout' : ''; if (data.selectedValues[optionName] == value) { selected =
'selected'; } let thumbImage = null; if (isThumbImage) { const variants =
data.product.variants; for (let i = 0; i < variants.length; i++) { const variant
= variants[i]; if (variant[optionPosition] == value && thumbImage == null) {
thumbImage = variant.image; break; } } } return `
${value}

${value}
`; }).join('')}
`; }).join(''); }()}
${data.targetOption || data.defaultValue || ''}
${("Save {off_ratio}").replace('{off_ratio}', ("amount") == 'percent' ?
data.variant.off_ratio + '%' : `` )}
-
 - 



YOUR MAY ALSO LIKE

${data.map(data => ` `).join('')}
${data.map(data => ` `).join('')}
${ data == 1 ? ("1 product was added to your cart!") : ("{count} products were
added to your cart!").replace('{count}', data) }
${function() { const freeShippingAmount = 499; const totalPrice =
data.data.total_price; const diffAmount = freeShippingAmount - totalPrice; const
freeShippingText = diffAmount > 0 ? "Spend {amount} more and get free shipping!"
: "Your order is free delivery"; return `
${diffAmount > 0 ? freeShippingText.replace('{amount}', ``) : freeShippingText}
`; }()}
${data.product.title}
${data.variant.options.map(option => option.value).join(' / ')}
${(data.product.parsedProperties || []).map((propertie)=>{ if
(propertie.isImage){ return `
${propertie.name}: View image
` }else{ return `
${propertie.name}: ${propertie.value}
` } }).join('')}
${data.data.item_count == 1 ? ("Cart subtotal (1 product)") : ("Cart subtotal (
{count} products)").replace('{count}', data.data.item_count)}
${("Save {off_ratio}").replace('{off_ratio}', ``)}
Taxes and shipping calculated at checkout
View cart Continue shopping
Rewards
111

111
Item has been added
${(function(){ const products = data.products; const getDefaultVariant =
function(product){ if (product.min_price_variant.available){ return
product.min_price_variant; }else { const avail_variants =
product.variants.filter(function(variant){ return variant.available; }); if
(avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj
=> Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v =>
`${k}[]=${encodeURIComponent(v)}`).join('&') :
`${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams =
function(product, index){ const variant = getDefaultVariant(product); const
params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm ||
'', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams =
Object.keys(params).map(function(key){ return params[key]; }).join('__'); return
trackParams; }; const hasMore = (data.products.length - data.page * data.limit)
=== 0; return `
${(function(){ return `
${data.config.pop_title}

${data.rebate_tips || ''}
`; })()}
${product.title}
Added




`; })()}

class SpzCustomComponent extends SPZ.BaseElement { constructor(element) {
super(element); this.templates_ = null; this.container_ = null;
this._atcLineItem = {}; this.cart_ = {}; this.products_ = []; this.activityId_ =
null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {};
this.config_ = {}; this.page_ = 1; this.limit_ = 10; this.loading_ = false; }
static deferredMount() { return false; } isLayoutSupported(layout) { return
layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ =
SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback()
{ console.log('pop mounted'); this.i18n_ = window.smartRecommendI18n &&
window.smartRecommendI18n[document.documentElement.lang || 'en-US'] || {}; const
cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const
modalEl = document.getElementById("smart_cart_pop_modal"); const spmBase =
`smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, };
const that = this; document.addEventListener('dj.addToCart', (event) => { try {
const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block ||
this.rendered_) return; that.fetchActivityData({product_id: e.product_id,
variant_id: e.variant_id}).then(data => { if (!data || !data.products ||
!data.products.length) return; that.config_ = data.config; const recommendStyle
= document.createElement('style'); recommendStyle.innerHTML = `
#plugin_recommend_atc_pop { display: none !important; } `;
document.head.appendChild(recommendStyle); if (data.config.pop_frequency ===
'once' && window.sessionStorage.getItem('smart_pop_times') > 0) return;
SPZ.whenApiDefined(cartPopRenderEl).then(function(api){
api.render(Object.assign({}, data, extra), true).then(function() {
that.rendered_ = true; if (data.products.length) { const headEl =
document.getElementById("smart_cart_pop_head_render"); if (headEl) {
SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); });
} SPZ.whenApiDefined(modalEl).then(function(api){
that.impressListen('#smart_cart_pop_activity', function(){
that.trackPluginImpression_(data); }); api.open(); const intersectionObserver =
new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio
> 0){ !that.loading_ && that.products_.length === that.page_ * that.limit_ &&
that.viewMore(); } }, { threshold: [0.1] } ); intersectionObserver.observe(
document.querySelector('#smart_cart_pop_view_more_text') ); }); } }) }); }) }
catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const
cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const that =
this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){
that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_
}).then(function(data) { data.products = that.products_; data.i18n = that.i18n_;
data.spmBase = `smart_recommend_2`; api.render(data); }) }) }
fetchActivityData(data) { const that = this; if (data.product_id) {
that._atcLineItem = data; } that.loading_ = true; return
that.getCart().then(cart => { that.cart_ = cart.cart; return
fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_activities", {
method: "POST", headers: { "Content-Type": "application/json", "store-id":
window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ "show_type": 2,
"line_item": { "product_id": that._atcLineItem.product_id, "variant_id":
that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page":
data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){
return res.json(); } }).then(function(data){ data.cart = cart.cart;
that.products_ = that.products_.concat(data.products || []); that.page_ =
data.page || 1; that.limit_ = data.limit || 10; return data;
}).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ =
false; }) }); }; setAction_() { this.registerAction('changeBannerColor', (data)
=> { if (!data.args.data || !data.args.data.data || !data.args.data.data.data)
return false; const config = data.args.data.data.data.config; const bannerBgEl =
document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) {
bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color =
config.banner_text_color; } }); this.registerAction('handleProductChange',
(data) => { const that = this; const imageEl =
document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`);
SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data:
data.args.data, config: that.config_ }); }); const atcTextEl =
document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`);
SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data:
data.args.data, defaultText: data.args.defaultText, soldOutText:
that.i18n_.sold_out }); }); if (data.args.data.variant.available) {
document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none');
} else {
document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none');
} }); this.registerAction('handleProduct', (detail) => { const that = this;
this.renderProductsForm_(detail.args.data.data); });
this.registerAction('addATCHook', (data) => { const params = data.args;
this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({
event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id,
ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm:
`..${window.SHOPLAZZA.meta.page.template_name}.${params.spm}`, }, once: true });
}); this.registerAction('handleAtcSuccess', (detail) => {
detail.args.data.product = detail.args.data.product || {};
detail.args.data.variant = detail.args.data.variant || {}; const defParams =
detail.args.product.split('__'); const product_id = detail.args.data.product.id;
const product_title = detail.args.data.product.title; const variant_id =
detail.args.data.variant.id; const price = detail.args.data.variant.price; const
aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb =
detail.args.data.product.cfb; const scm = defParams[1]; const spm =
defParams[2]; const ssp = defParams[3]; 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, } }; const
activity_id = `${detail.args.activity_id}`; const target_drive_way =
detail.args.target_drive_way;
document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden');
document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden');
setTimeout(() => {
document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden');
document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden');
document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none');
}, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') {
const bannerEl = document.getElementById(`smart_cart_pop_banner`);
this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) {
bannerEl.innerHTML = res.rebate_tips; } }) } });
this.registerAction('handleCartSummary', (event) => { this.onBuyNowClick();
const tipEl = document.getElementById("smart_cart_pop_tip_info"); if (!tipEl)
return; const that = this; let cart = this.cart_; let total_price =
cart.total_price; if (!total_price) {
SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price:
total_price, i18n: that.i18n_ }, false); }); } else {
this.getBindDiscount_(cart.line_items).then(res => { if (res &&
res.discount_code){ const total = cart.line_price - cart.total_discount -
res.bundle_discount_value; if (total > 0) { total_price = total; } else {
total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({
total_price: total_price, i18n: that.i18n_ }, false); }); }) } });
this.registerAction('open', () => {
window.sessionStorage.setItem('smart_pop_times',
Number(window.sessionStorage.getItem('smart_pop_times')) + 1); });
this.registerAction('close', () => { this.rendered_ = false; this.products_ =
[]; window.djInterceptors &&
window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return
fetch(`${window.SHOPLAZZA.routes.root || ''}/api/cart`, { method: 'GET',
headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res =>
res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart
=> { this.cart_ = cart.cart; return fetch(`${window.SHOPLAZZA.routes.root ||
''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type':
'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2,
rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item:
this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data)
{ const products = data.products; const listPopRenderEl =
document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return;
listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){
el.style.background = data.config.add_to_cart_button_color; });
products.forEach(function(product){ const productId = product.id; const
productFormEls =
listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`);
let variantsEl =
listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]
#smart_cart_pop_variant_${productId}_mobile ljs-variants`); if
(window.innerWidth > 768) { variantsEl =
listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]
#smart_cart_pop_variant_${productId}_pc ljs-variants`); }
productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){
api.setProduct(product); }); }); variantsEl.forEach(function(el){
SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) });
} tranckAddToCart(detail) { if (window.$) {
window.$(document.body).trigger('dj.addToCart', detail); } }
trackPluginImpression_(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: 2 });
window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` });
} } onBuyNowClick() { const checkoutEl =
document.getElementById("smart_cart_pop_checkout"); if (!checkoutEl) return;
checkoutEl.addEventListener('click', function(e) { const trackData = {
plugin_name: "upsell", event_type: "checkout_submit", rule_id:
`${this.activityId_}`, show_type: 2 }; window.sa &&
window.sa.track("plugin_common", trackData); }); } getBindDiscount_(carts) { let
bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids']
&& JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) =>
arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); }
if (!carts.length) { Promise.resolve(); } return
fetch(`${window.SHOPLAZZA.routes.root || ''}/api/bundle-sales/cart`, { method:
'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8',
'store-id': window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ cart:
carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) }
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',
SpzCustomComponent); ${function(){ return `
${data.data.rebate_tips || ''}
`; }()} ${function(){ const getImageHeight = function(image){ const width =
image.width || 500; const height = image.height || 500; const image_size =
data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height
/ width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 *
ratio; }; const image = data.data.variant.image || data.data.product.image;
return ` `; }()}
${(function(){ const product = data.product; const avail_variants =
product.variants.filter(function(variant){ return variant.available; }); const
selected_variant = product.min_price_variant.available ?
product.min_price_variant : avail_variants.length && avail_variants[0]; return `
${option.name}
${ option.values.map(function(value, index){ const checked =
selected_variant["option"+option.position] == value ? "checked": ""; return `
${value}
` }).join("") }
` })()}
${(function(){ const variant = data.variant; return `

`; })()} ${(function(){ const variant = data.variant; return `
${ variant.options.map(function(option){ return option.value; }).join("/") ||
'Not exist' }
`; })()} ${(function(){ const variant = data.data && data.data.variant; const
defaultText = data.defaultText || 'Add To Cart'; const text = (!variant ||
variant.available) ? defaultText: data.soldOutText; return `
${text}
`; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; }
return `
${cart.item_count >=0 ? cart.item_count : '..'}
Checkout
`; })()}
GIFTS

POINTS

15% Coupon Code: PV15




$0.00



1





原文

请对此翻译评分
您的反馈将用于改进谷歌翻译