www.animefwiw.com
Open in
urlscan Pro
104.17.247.119
Public Scan
Submitted URL: http://www.animefwiw.com/products/jigglypuff-face-pokemon-gym-shorts?aid=smart_recommend.5.359222054299374290&ifb=1e9cefc...
Effective URL: https://www.animefwiw.com/products/jigglypuff-face-pokemon-gym-shorts?aid=smart_recommend.5.359222054299374290&ifb=1e9cefc...
Submission: On August 31 via api from US — Scanned from CA
Effective URL: https://www.animefwiw.com/products/jigglypuff-face-pokemon-gym-shorts?aid=smart_recommend.5.359222054299374290&ifb=1e9cefc...
Submission: On August 31 via api from US — Scanned from CA
Form analysis
4 forms found in the DOMGET /search
<form action="/search" method="get" class="">
<div tabindex="-1" class="header__search tw-flex tw-items-center tw-relative">
<button type="submit" class="header__search-icon tw-m-0 tw-p-0 tw-flex tw-items-center tw-pr-8 tw-bg-transparent tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-text-current" tabindex="-1"><svg class="" width="24" height="24"
xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg></button>
<input autocomplete="off" name="q" type="text" class="header__search-input tw-bg-header-search tw-w-full tw-flex-1 tw-h-10 tw-p-0 tw-text-body-base tw-leading-none tw-border-none tw-text-current tw-bg-body tw-placeholder-body-alpha-50 "
placeholder="Search our store">
<button type="button" class="header__search-close tw-p-4 tw--mr-4 tw-hidden tw-justify-center tw-items-center tw-m-0 tw-ml-5 tw-bg-transparent tw-border-none tw-outline-none tw-text-current tw-cursor-pointer"><svg class="" width="14" height="14"
xmlns="http://www.w3.org/2000/svg">
<path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
</svg></button>
</div>
</form>
<form class="product-info product-info-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8">
<nav class="tw-container tw-flex tw-flex-wrap tw-items-center tw-body-sm breadcrumb md:tw-hidden tw-mb-[10px] lg:tw-mb-2">
<a href="/" class=" tw-text-current tw-no-underline lg:hover:tw-opacity-80 ">Home</a> / <style>
.main-content>.breadcrumb {
margin-top: 20px;
}
</style>
<a href="javascript:;" class=" tw-text-current tw-no-underline lg:hover:tw-opacity-80 ">Jigglypuff Face Pokemon Gym Shorts</a>
</nav>
<input type="hidden" name="product_id" value="ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8">
<input type="hidden" name="variant_id" id="selected_variant_id_ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="d3ccbc6f-e9c6-41ee-8baa-3829554efe77">
<div class="product-info__body" data-sold-out="Sorry, the goods have been sold out." data-unavailable="This combination does not exist, please try other.">
<div class="tw-my-2 first:tw-mt-0 last:tw-mb-0 product-info__header">
<h2 class="product-info__header_title tw-m-0 type-title-font-family tw-text-heading tw-break-words ">Jigglypuff Face Pokemon Gym Shorts</h2>
</div>
<div class="tw-my-4 first:tw-mt-0 last:tw-mb-0 product-info__header_price-wrapper">
<p class="tw-m-0 lg:tw-hidden tw-mb-2 tw-body-sm tw-font-bold tw-uppercase tw-tracking-widest">Price</p>
<div class="tw-flex tw-justify-between tw-items-center tw--mt-2">
<div class="tw-flex tw-flex-wrap tw-items-center tw-text-price-color tw-leading-none">
<del class="money tw-text-compare-at-price-color product-info__header_compare-at-price tw-hidden tw-mt-2 tw-mr-4 tw-body-plus-4 lg:tw-mr-5">$0.00</del>
<span class="money product-info__header_price tw-mt-2 tw-mr-4 tw-body-plus-4 lg:tw-mr-5">$35.00</span>
</div>
</div>
</div>
<div class="bootstrap">
<div class="plugin__wrappers d-flex flex-column"></div>
</div>
<div class="tw-mt-2 first:tw-mt-0 tw--mb-2 tw-flex tw-flex-wrap tw--mr-2">
<div class="tw-body-minus-4 tw-leading-none tw-mr-2 tw-mb-2 tw-px-2 tw-py-[5px] tw-rounded-btn tw-text-save-color tw-border-solid tw-border-[1px] tw-border-save-color">𝐁𝐮𝐲 𝟐 𝐢𝐭𝐞𝐦𝐬 𝐠𝐞𝐭 𝐅𝐑𝐄𝐄𝐒𝐇𝐈𝐏𝐏𝐈𝐍𝐆✈️& 𝟏𝟎%𝐎𝐅𝐅🔥
</div>
<div class="tw-body-minus-4 tw-leading-none tw-mr-2 tw-mb-2 tw-px-2 tw-py-[5px] tw-rounded-btn tw-text-save-color tw-border-solid tw-border-[1px] tw-border-save-color">Buy 3 items get 15%OFF</div>
<div class="tw-body-minus-4 tw-leading-none tw-mr-2 tw-mb-2 tw-px-2 tw-py-[5px] tw-rounded-btn tw-text-save-color tw-border-solid tw-border-[1px] tw-border-save-color">Buy 4 items get 20%OFF</div>
</div>
<div class="product-info__variants tw-space-y-5 tw-my-5 first:tw-mt-0 last:tw-mb-0" data-soldout="Sold out">
<div class="product-info__variants-wrapper product-info__variants_items slider-switch " data-selected-variant="false">
<p class="product-info__variants_title tw-m-0 md:tw--mb-1 tw-body-sm tw-font-bold tw-uppercase tw-tracking-widest" data-keyword="size" style="overflow: hidden;"> size
<a onclick="openSizeModal()" class="size_guide_btn " data-toggle="modal" data-target="#size_guide_modal" data-product_id="ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" href="javascript:void"><img src="https://static.staticdj.com/oss/operation/ab4f520a75bf23c2b60ce852095f3308.png" alt="size guide"> Size Guide </a>
<script>
function openSizeModal() {
document.documentElement.style.overflow = 'hidden'
}
</script>
</p>
<div class="tw-flex tw-flex-wrap tw-mb-[10px]">
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-0-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="XS" checked="">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-0-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">XS</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="S">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">S</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-2-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="M">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-2-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">M</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-3-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="L">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-3-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">L</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-4-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="XL">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-4-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">XL</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-5-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="2XL">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-5-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">2XL</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-6-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="3XL">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-6-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">3XL</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-7-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="4XL">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-7-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">4XL</label>
</div>
<div class="product-info__variants_value tw-relative ">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" id="option1-8-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" value="5XL">
<label class="product-info__label tw-flex tw-justify-center tw-items-center tw-min-w-[44px] tw-min-h-[44px] tw-px-4 tw-py-[14px] tw-mt-3 tw-mr-3 tw-leading-none tw-cursor-pointer lg:tw-mt-4"
for="option1-8-ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" data-track="switch_variants">5XL</label>
</div>
</div>
<div class="product-info__variant-tips tw-text-[15px] tw-leading-none tw-text-[#F0672C] tw-font-bold tw-hidden">Please select a size</div>
</div>
</div>
<div class="product-info__qty_container tw-my-5 first:tw-mt-0 last:tw-mb-0">
<p class="tw-m-0 tw-body-sm tw-font-bold tw-uppercase tw-tracking-widest">Quantity</p>
<div class="product-info__qty tw-relative tw-h-11 tw-mt-2 tw-rounded-global-fixed lg:tw-mt-4 tw-flex tw-items-center">
<button data-track="product_minus_quantity" type="button" class="
tw-bg-transparent tw-border tw-border-solid tw-border-line tw-m-0 tw-p-0 tw-w-11 tw-h-full tw-cursor-pointer disabled:tw-cursor-default disabled:tw-bg-[#f9f9f9] disabled:tw-text-[#90959a] tw-outline-none tw-flex tw-justify-center tw-items-center product-info__qty_btn tw-text-[#d8d8d8] lg:hover:tw-bg-[#f2f2f2]
product-info__qty_decr" data-click="decrease" disabled="disabled"><svg class="tw-text-[#888888]" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"></path>
</svg></button>
<input class="tw-box-border tw-p-0 tw-w-11 tw-h-full tw-text-center tw-body-plus-2 tw-text-body-color tw-bg-transparent tw-border-0 tw-border-t tw-border-b tw-border-solid tw-border-line tw-outline-none form-control product-info__qty_num"
id="product_quantity_ecf78b69-1d3d-47e6-89d6-6ef6ff2112d8" name="quantity" type="text" value="1">
<button data-track="product_add_quantity" type="button" class="
tw-bg-transparent tw-border tw-border-solid tw-border-line tw-m-0 tw-p-0 tw-w-11 tw-h-full tw-cursor-pointer disabled:tw-cursor-default disabled:tw-bg-[#f9f9f9] disabled:tw-text-[#90959a] tw-outline-none tw-flex tw-justify-center tw-items-center product-info__qty_btn tw-text-[#d8d8d8] lg:hover:tw-bg-[#f2f2f2]
product-info__qty_incr " data-click="increase"><svg class="tw-text-[#888888]" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"></path>
</svg></button>
</div>
</div>
<div class="product-info__btn tw-mt-6 lg:tw-mt-9 first:tw-mt-0 last:tw-mb-0">
<div class="tw-flex tw-flex-col tw-space-y-3">
<button type="button"
class="product-info__add-to-cart tw-primary-btn-style tw-relative tw-h-12 tw-text-center tw-uppercase tw-body-minus-4 tw-font-bold tw-tracking-widest tw-leading-1.3 tw-rounded-btn tw-border tw-border-solid tw-border-line tw-cursor-pointer painter-swing-animation"
data-click="addToCart" data-on-sale="Add to cart" data-unavailable="Unavailable" data-sold-out="Sold out" data-btn-class=" tw-primary-btn-style " data-track="click" data-track-content="add_to_cart" data-track-source="add_to_cart"> Add to
cart - <span class="money">$35.00</span>
</button>
<button type="button" class="product-info__buy-now tw-secondary-btn tw-h-12" data-click="submit" data-track="click" data-track-content="checkout" data-track-source="buy_now">Buy it now</button>
<div class="" id="paypal-express-button-container">
<div id="zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg" class="paypal-buttons paypal-buttons-context-iframe paypal-buttons-label-unknown paypal-buttons-layout-horizontal" data-paypal-smart-button-version="5.0.457"
style="height: 48px; transition: 0.2s ease-in-out;">
<style nonce="">
#zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg {
position: relative;
display: inline-block;
width: 100%;
min-height: 25px;
min-width: 150px;
font-size: 0;
}
#zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg>iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg>iframe.component-frame {
z-index: 100;
}
#zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg>iframe.prerender-frame {
transition: opacity .2s linear;
z-index: 200;
}
#zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg>iframe.visible {
opacity: 1;
}
#zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg>iframe.invisible {
opacity: 0;
pointer-events: none;
}
#zoid-paypal-buttons-uid_29fbe7bb32_mde6mdu6ntg>.smart-menu {
position: absolute;
z-index: 300;
top: 0;
left: 0;
width: 100%;
}
</style><iframe allowtransparency="true"
name="__zoid__paypal_buttons__eyJzZW5kZXIiOnsiZG9tYWluIjoiaHR0cHM6Ly93d3cuYW5pbWVmd2l3LmNvbSJ9LCJtZXRhRGF0YSI6eyJ3aW5kb3dSZWYiOnsidHlwZSI6InBhcmVudCIsImRpc3RhbmNlIjowfX0sInJlZmVyZW5jZSI6eyJ0eXBlIjoicmF3IiwidmFsIjoie1widWlkXCI6XCJ6b2lkLXBheXBhbC1idXR0b25zLXVpZF8yOWZiZTdiYjMyX21kZTZtZHU2bnRnXCIsXCJjb250ZXh0XCI6XCJpZnJhbWVcIixcInRhZ1wiOlwicGF5cGFsLWJ1dHRvbnNcIixcImNoaWxkRG9tYWluTWF0Y2hcIjp7XCJfX3R5cGVfX1wiOlwicmVnZXhcIixcIl9fdmFsX19cIjpcIlxcXFwucGF5cGFsXFxcXC4oY29tfGNuKSg6XFxcXGQrKT8kXCJ9LFwidmVyc2lvblwiOlwiMTBfM18zXCIsXCJwcm9wc1wiOntcImVudlwiOlwicHJvZHVjdGlvblwiLFwiY29tbWl0XCI6dHJ1ZSxcInN0eWxlXCI6e1wibGFiZWxcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwibGF5b3V0XCI6XCJob3Jpem9udGFsXCIsXCJjb2xvclwiOlwiZ29sZFwiLFwic2hhcGVcIjpcInJlY3RcIixcInRhZ2xpbmVcIjpmYWxzZSxcImhlaWdodFwiOjQ4LFwicGVyaW9kXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm1lbnVQbGFjZW1lbnRcIjpcImJlbG93XCIsXCJkaXNhYmxlTWF4V2lkdGhcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiZGlzYWJsZU1heEhlaWdodFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJib3JkZXJSYWRpdXNcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9fSxcImZ1bmRpbmdcIjp7XCJkaXNhbGxvd2VkXCI6W1wiY3JlZGl0XCJdfSxcIm9uQXBwcm92ZVwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzgzODdjYTEyYmFfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcIm9uQXBwcm92ZVwifX0sXCJjcmVhdGVPcmRlclwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzQ1ZWViMjA0MDBfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcImNyZWF0ZU9yZGVyXCJ9fSxcImNzcE5vbmNlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImFsbG93QmlsbGluZ1BheW1lbnRzXCI6dHJ1ZSxcImFtb3VudFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJhcGlTdGFnZUhvc3RcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiYXBwbGVQYXlcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiYXBwbGVQYXlTdXBwb3J0XCI6ZmFsc2UsXCJicmFuZGVkXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImJ1dHRvbkxvY2F0aW9uXCI6XCJ3d3cuYW5pbWVmd2l3LmNvbVwiLFwiYnV0dG9uU2Vzc2lvbklEXCI6XCJ1aWRfYzE0NDQ4OWVhN19tZGU2bWR1Nm50Z1wiLFwiYnV0dG9uU2l6ZVwiOlwiaHVnZVwiLFwiYnV5ZXJDb3VudHJ5XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImNsaWVudEFjY2Vzc1Rva2VuXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImN1c3RvbWVySWRcIjpcIlwiLFwiY2xpZW50SURcIjpcIkFVd29SbHYzaVozanQzbzNoaGNmdF90WjVnNnR2ZWZFcGpDZjlZTkdlSDdxOHBfV3JhbGVpdGtLZkxuV0lzOEhMcHphbGdSQTVBTVQwQllPXCIsXCJjbGllbnRNZXRhZGF0YUlEXCI6XCJ1aWRfYjgzZDU0YjQ2ZV9tZGU2bWR1Nm50Z1wiLFwiY29tcG9uZW50c1wiOltcImJ1dHRvbnNcIl0sXCJjcmVhdGVCaWxsaW5nQWdyZWVtZW50XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImNyZWF0ZVN1YnNjcmlwdGlvblwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJjcmVhdGVWYXVsdFNldHVwVG9rZW5cIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiY3NwXCI6e1wibm9uY2VcIjpcIlwifSxcImN1cnJlbmN5XCI6XCJVU0RcIixcImRlYnVnXCI6ZmFsc2UsXCJkaXNhYmxlQ2FyZFwiOltdLFwiZGlzYWJsZUZ1bmRpbmdcIjpbXCJjYXJkXCIsXCJiYW5jb250YWN0XCIsXCJibGlrXCIsXCJlcHNcIixcImdpcm9wYXlcIixcImlkZWFsXCIsXCJtZXJjYWRvcGFnb1wiLFwibXliYW5rXCIsXCJwMjRcIixcInNlcGFcIixcInNvZm9ydFwiLFwidmVubW9cIl0sXCJkaXNhYmxlU2V0Q29va2llXCI6dHJ1ZSxcImRpc3BsYXlPbmx5XCI6W10sXCJlbmFibGVGdW5kaW5nXCI6W1wicGF5bGF0ZXJcIl0sXCJlbmFibGVUaHJlZURvbWFpblNlY3VyZVwiOmZhbHNlLFwiZW5hYmxlVmF1bHRcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiZXhwZXJpbWVudFwiOntcImVuYWJsZVZlbm1vXCI6ZmFsc2UsXCJ2ZW5tb1ZhdWx0V2l0aG91dFB1cmNoYXNlXCI6ZmFsc2UsXCJ2ZW5tb1dlYkVuYWJsZWRcIjpmYWxzZX0sXCJleHBlcmltZW50YXRpb25cIjp7fSxcImZsb3dcIjpcInB1cmNoYXNlXCIsXCJmdW5kaW5nRWxpZ2liaWxpdHlcIjp7XCJwYXlwYWxcIjp7XCJlbGlnaWJsZVwiOnRydWUsXCJ2YXVsdGFibGVcIjpmYWxzZX0sXCJwYXlsYXRlclwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjpmYWxzZSxcInByb2R1Y3RzXCI6e1wicGF5SW4zXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhcmlhbnRcIjpudWxsfSxcInBheUluNFwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXJpYW50XCI6bnVsbH0sXCJwYXlsYXRlclwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXJpYW50XCI6bnVsbH19fSxcImNhcmRcIjp7XCJlbGlnaWJsZVwiOmZhbHNlLFwiYnJhbmRlZFwiOnRydWUsXCJpbnN0YWxsbWVudHNcIjpmYWxzZSxcInZlbmRvcnNcIjp7XCJ2aXNhXCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJtYXN0ZXJjYXJkXCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJhbWV4XCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJkaXNjb3ZlclwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImhpcGVyXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOmZhbHNlfSxcImVsb1wiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImpjYlwiOntcImVsaWdpYmxlXCI6dHJ1ZSxcInZhdWx0YWJsZVwiOnRydWV9LFwibWFlc3Ryb1wiOntcImVsaWdpYmxlXCI6dHJ1ZSxcInZhdWx0YWJsZVwiOnRydWV9LFwiZGluZXJzXCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJjdXBcIjp7XCJlbGlnaWJsZVwiOmZhbHNlLFwidmF1bHRhYmxlXCI6dHJ1ZX19LFwiZ3Vlc3RFbmFibGVkXCI6dHJ1ZX0sXCJ2ZW5tb1wiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjpmYWxzZX0sXCJpdGF1XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJjcmVkaXRcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImFwcGxlcGF5XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJzZXBhXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJpZGVhbFwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiYmFuY29udGFjdFwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiZ2lyb3BheVwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiZXBzXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJzb2ZvcnRcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcIm15YmFua1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwicDI0XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJ3ZWNoYXRwYXlcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcInBheXVcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImJsaWtcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcInRydXN0bHlcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcIm94eG9cIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImJvbGV0b1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiYm9sZXRvYmFuY2FyaW9cIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcIm1lcmNhZG9wYWdvXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJtdWx0aWJhbmNvXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJzYXRpc3BheVwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwicGFpZHlcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfX0sXCJmdW5kaW5nU291cmNlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImdldFBhZ2VVcmxcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF8xZWIwNGM0YjVhX21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJnZXRQYWdlVXJsXCJ9fSxcImdldFBvcHVwQnJpZGdlXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfMjE4OTYzMzA4ZF9tZGU2bWR1Nm50Z1wiLFwibmFtZVwiOlwiZ2V0UG9wdXBCcmlkZ2VcIn19LFwiZ2V0UHJlcmVuZGVyRGV0YWlsc1wiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzU2ZDk3ZjZjMDJfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcImdldFByZXJlbmRlckRldGFpbHNcIn19LFwiZ2V0UXVlcmllZEVsaWdpYmxlRnVuZGluZ1wiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzM3ZmQ5MGJiYmNfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcImdldFF1ZXJpZWRFbGlnaWJsZUZ1bmRpbmdcIn19LFwiaG9zdGVkQnV0dG9uSWRcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiaW50ZW50XCI6XCJjYXB0dXJlXCIsXCJqc1Nka0xpYnJhcnlcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwibG9jYWxlXCI6e1wiY291bnRyeVwiOlwiVVNcIixcImxhbmdcIjpcImVuXCJ9LFwibWVyY2hhbnRJRFwiOltcIkJDVUhRU002VDdDU1FcIl0sXCJtZXJjaGFudFJlcXVlc3RlZFBvcHVwc0Rpc2FibGVkXCI6ZmFsc2UsXCJtZXNzYWdlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm5vbmNlXCI6XCJcIixcIm9uQ2FuY2VsXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm9uQ2xpY2tcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwib25Db21wbGV0ZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJvbkluaXRcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF9mMDBjZmM4YTFiX21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJvbkluaXRcIn19LFwib25NZXNzYWdlQ2xpY2tcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF83MGMzYjNkNDI2X21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJvbk1lc3NhZ2VDbGlja1wifX0sXCJvbk1lc3NhZ2VIb3ZlclwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2MxNjM5NGQ4M2FfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcIm9uTWVzc2FnZUhvdmVyXCJ9fSxcIm9uTWVzc2FnZVJlYWR5XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfN2E5NDZjZDRkNF9tZGU2bWR1Nm50Z1wiLFwibmFtZVwiOlwib25NZXNzYWdlUmVhZHlcIn19LFwib25TaGlwcGluZ0FkZHJlc3NDaGFuZ2VcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwib25TaGlwcGluZ0NoYW5nZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJvblNoaXBwaW5nT3B0aW9uc0NoYW5nZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJoYXNTaGlwcGluZ0NhbGxiYWNrXCI6ZmFsc2UsXCJwYWdlVHlwZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJwYXJ0bmVyQXR0cmlidXRpb25JRFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJwYXltZW50TWV0aG9kTm9uY2VcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwicGF5bWVudE1ldGhvZFRva2VuXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInBheW1lbnRSZXF1ZXN0XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInBsYXRmb3JtXCI6XCJkZXNrdG9wXCIsXCJyZWZlcnJlckRvbWFpblwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJyZW1lbWJlclwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2Y3OTZhMGIyMWZfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcInJlbWVtYmVyXCJ9fSxcInJlbWVtYmVyZWRcIjpbXSxcInJlbmRlcmVkQnV0dG9uc1wiOltcInBheXBhbFwiXSxcInNlc3Npb25JRFwiOlwidWlkX2I4M2Q1NGI0NmVfbWRlNm1kdTZudGdcIixcInNka0NvcnJlbGF0aW9uSURcIjpcImYyNzMyODRlMWEzZjVcIixcInNlc3Npb25TdGF0ZVwiOntcImdldFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzI1NWQ3ZDdjNGJfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcImdldFwifX0sXCJzZXRcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF83OWE5MjI0MjZmX21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJzZXRcIn19fSxcImdldFNob3BwZXJJbnNpZ2h0c1VzZWRcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF9mNTkyN2YwZWM5X21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJDclwifX0sXCJzdGFnZUhvc3RcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwic3RvcmFnZUlEXCI6XCJ1aWRfNDNmYjhiNjQzZl9tZGU2bWR1Nm50Z1wiLFwic3RvcmFnZVN0YXRlXCI6e1wiZ2V0XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNDRlMjJkOTIyZF9tZGU2bWR1Nm50Z1wiLFwibmFtZVwiOlwiZ2V0XCJ9fSxcInNldFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzIzMzhiZTA4ODdfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcInNldFwifX19LFwic3VwcG9ydGVkTmF0aXZlQnJvd3NlclwiOmZhbHNlLFwic3VwcG9ydHNQb3B1cHNcIjp0cnVlLFwidGVzdFwiOntcImFjdGlvblwiOlwiY2hlY2tvdXRcIn0sXCJ1c2VyRXhwZXJpZW5jZUZsb3dcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwidXNlcklEVG9rZW5cIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwidmF1bHRcIjpmYWxzZSxcIndhbGxldFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn19LFwiZXhwb3J0c1wiOntcImluaXRcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF81ZGFjYTMxMjc1X21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJpbml0XCJ9fSxcImNsb3NlXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfODA3ZGJlZjIzZV9tZGU2bWR1Nm50Z1wiLFwibmFtZVwiOlwiY2xvc2U6Om1lbW9pemVkXCJ9fSxcImNoZWNrQ2xvc2VcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF83YWVmNjA0MWFmX21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJjaGVja0Nsb3NlXCJ9fSxcInJlc2l6ZVwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzJiNWYzNWYwMWRfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcIl9uXCJ9fSxcIm9uRXJyb3JcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF9iMjAxYmNmNTcyX21kZTZtZHU2bnRnXCIsXCJuYW1lXCI6XCJxblwifX0sXCJzaG93XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNGY5YmI5NTA2YV9tZGU2bWR1Nm50Z1wiLFwibmFtZVwiOlwiZ25cIn19LFwiaGlkZVwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2YzZmFjODhmYTdfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcInZuXCJ9fSxcImV4cG9ydFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzIwNzU1MmMyMWJfbWRlNm1kdTZudGdcIixcIm5hbWVcIjpcIlduXCJ9fX19In19__"
title="PayPal" allowpaymentrequest="allowpaymentrequest" scrolling="no" id="jsx-iframe-64d9bb51a4" class="component-frame visible" style="background-color: transparent; border: none;"></iframe>
<div id="smart-menu" class="smart-menu"></div>
<div id="installments-modal" class="installments-modal"></div><iframe name="__detect_close_uid_c77837f9b3_mde6mdu6ntg__" style="display: none;"></iframe>
</div>
</div>
<div class="product-info__tips empty:tw-hidden tw-mt-3 tw-text-center tw-text-sm tw-leading-none tw-font-medium" data-unavailable="Product is unavailable." data-out-of-stock="Product was out of stock."></div>
</div>
</div>
<div class="tw-space-y-4 tw-my-5 first:tw-mt-0 last:tw-mb-0">
<div class="tw-flex tw-items-center">
<svg class="tw-flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M18.41 14.672a1.811 1.811 0 0 0-1.743-1.359c-.834 0-1.538.578-1.743 1.359H13.81v-4.366h5.238v4.366h-.638zm-1.743 1.552a1.04 1.04 0 0 1-.929-.582 1.042 1.042 0 0 1 0-.97 1.04 1.04 0 0 1 .929-.582c.404 0 .757.237.928.582a1.042 1.042 0 0 1 0 .97 1.04 1.04 0 0 1-.928.582zm-3.81-1.552h-5.4a1.811 1.811 0 0 0-1.743-1.359c-.833 0-1.538.578-1.743 1.359H.952V4.97h11.905v9.702zm-7.143 1.552a1.04 1.04 0 0 1-.928-.582 1.042 1.042 0 0 1 0-.97 1.04 1.04 0 0 1 .928-.582c.405 0 .757.237.929.582a1.042 1.042 0 0 1 0 .97 1.04 1.04 0 0 1-.929.582zM16.9 6.91l1.699 2.426h-4.79V6.91H16.9zm.486-.97H13.81V4H0v11.642h3.971c.205.78.91 1.358 1.743 1.358.834 0 1.538-.577 1.743-1.358H14.924c.205.78.91 1.358 1.743 1.358.833 0 1.538-.577 1.743-1.358H20V9.666L17.386 5.94z"
fill="currentColor"></path>
</svg>
<span class="tw-ml-3 md:tw-body-minus-2">Free Delivery: Free international delivery available over 2 items.</span>
</div>
<div class="tw-flex tw-items-center">
<svg class="tw-flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M9.496 0 0 5.45v8.993L9.5 20l9.5-5.522V5.281L9.496 0zm-7.96 5.745 7.968-4.573 3.01 1.673-7.67 4.77-3.308-1.87zm4.321 2.442 7.678-4.775 3.929 2.183-7.968 4.648-3.639-2.056zm4.149 2.94 7.983-4.657v7.416l-7.983 4.64v-7.4zM1.01 13.852V6.62l3.34 1.888v3.007l1.012.45V9.079l3.631 2.052v7.391l-7.983-4.67z"
fill="currentColor"></path>
</svg>
<span class="tw-ml-3 md:tw-body-minus-2">Free Returns: Not in love? 100% guarantee & free returns.</span>
</div>
<div class="tw-flex tw-items-center">
<svg class="tw-flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="m16.185 9.248-4.237-.92 4.46-4.46c.345 1.804.26 3.646-.223 5.38m-3.019 5.18-.092.091c-2.54 2.484-5.592 1.881-7.533.216l5.592-5.591 4.749 1.03a11.784 11.784 0 0 1-2.716 4.253m-8.094-7.91.092-.093a11.775 11.775 0 0 1 4.252-2.717l1.031 4.751-5.591 5.591c-1.666-1.94-2.268-4.993.216-7.532m8.45-3.548c.734 0 1.472.072 2.202.212l-4.462 4.462-.919-4.235a11.829 11.829 0 0 1 3.18-.439m3.634-.193-.072-.27-.27-.073A12.802 12.802 0 0 0 4.477 5.74l-.099.099c-2.094 2.14-2.985 5.782-.205 8.894L2 16.905l.686.686 2.17-2.171c1.383 1.235 2.869 1.752 4.283 1.752 1.769 0 3.424-.796 4.614-1.96l.1-.1a12.802 12.802 0 0 0 3.304-12.336"
fill="currentColor"></path>
</svg>
<span class="tw-ml-3 md:tw-body-minus-2">Made to order in 5-10 Days for planet's protection.</span>
</div>
</div>
<script async="" crossorigin="anonymous" src="//static.staticdj.com/cuttlefish/v1/spz.min.js"></script>
<div class="rebate-wrap" id="no-rebate-activity">
<div class="rebate-skeleton"> The current produc does not participate any Rebate. Switch the participating product to check the design. <br> (This prompt will not be displayed on the client-side.) </div>
</div>
<ljs-render manual="" layout="container" id="app_rebate_block" @finish="rebate_custom_component.bindPropagation" class="i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
<template>
<div> ${function() { const show = rebate.format_rules.length > data.maxShowCount; return ` <div>
<div class="rebate_modal__list" ${show?`@tap="rebate_block_modal.open" `:''}="">
<style>
:root {
--rebate-modal-footer: $ {
data.modalFooterImg
}
;
}
</style>
<a class="product_detail_rebate_list" impr="1" imprevt="1" href="${landPage}">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="24" fill="none"><g clip-path="url(#a)"><path fill="#EB391B" fill-rule="evenodd" d="M9.127 1.275a1.576 1.576 0 0 0-2.255 0l-.693.709a1.576 1.576 0 0 1-1.146.475l-.991-.012a1.576 1.576 0 0 0-1.595 1.595l.011.991a1.576 1.576 0 0 1-.475 1.146l-.708.693a1.576 1.576 0 0 0 0 2.255l.709.693c.308.3.48.716.475 1.146l-.012.992a1.576 1.576 0 0 0 1.595 1.594l.991-.011a1.577 1.577 0 0 1 1.146.475l.693.709a1.575 1.575 0 0 0 2.255 0l.693-.71a1.576 1.576 0 0 1 1.146-.475l.992.012a1.575 1.575 0 0 0 1.594-1.594l-.011-.992a1.577 1.577 0 0 1 .475-1.146l.709-.693a1.575 1.575 0 0 0 0-2.255l-.71-.693a1.576 1.576 0 0 1-.475-1.146l.012-.991a1.576 1.576 0 0 0-1.594-1.595l-.992.011a1.576 1.576 0 0 1-1.146-.475l-.693-.708ZM5.84 6.92a1.08 1.08 0 1 0 0-2.16 1.08 1.08 0 0 0 0 2.16Zm4.32 4.32a1.08 1.08 0 1 0 0-2.161 1.08 1.08 0 0 0 0 2.16Zm.56-5.96a.793.793 0 0 1 0 1.12L6.4 10.72A.792.792 0 0 1 5.28 9.6L9.6 5.28a.792.792 0 0 1 1.12 0Z" clip-rule="evenodd"></path></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"></path></clipPath></defs></svg>
<div style="flex:1;">
<li spz-for="rule in originData.rebate.format_rules" class="rebate_rule">
${rule}
</li>
</div>
</a> ${function() { if(!show) return ""; return ` <i id="rebate_icon">
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><defs><style></style></defs><path d="M636.48 512.32l-366.4 366.4a48 48 0 0067.84 67.872l384.672-384.64a48 48 0 0011.456-49.6 48 48 0 00-11.456-49.6L337.952 78.016a48 48 0 00-67.904 67.904l366.4 366.4z"></path></svg>
</i> `; }()}
</div> `; }()} <ljs-dropdown id="rebate_block_modal" layout="nodisplay" placement="bottomRight" class="rebate_modal" @dropdownopen="rebate_custom_component.triggerGetRenderData;rebate_icon.toggleClass(class='rebate_rotate',force=true)"
@dropdownclose="rebate_icon.toggleClass(class='rebate_rotate',force=false)">
<ljs-loading @tap="rebate_block_modal.close" class="loading" layout="container" has-mask=""></ljs-loading>
<div class="rebate-modal-content">
<div class="modal-header justify-content-center p-1">
<span class="modal-title p-1">SPECIAL OFFER</span>
<i type="button" class="modal_close" @tap="rebate_block_modal.close" aria-label="Close">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" class="icon" viewBox="0 0 1024 1024"><path fill="currentColor" d="M512 1024C229.805 1024 0 794.195 0 512S229.805 0 512 0s512 229.805 512 512-229.805 512-512 512zm0-47.628C768 976.372 976.372 768 976.372 512S768 47.628 512 47.628 47.628 256 47.628 512 256 976.372 512 976.372z"></path><path fill="currentColor" d="m540.577 507.237 167.888 167.889c9.526 9.525 9.526 23.814 0 33.34s-23.814 9.525-33.34 0l-167.888-167.89-169.079 167.89c-9.525 9.525-23.814 9.525-33.34 0-9.525-9.526-9.525-23.815 0-33.34l167.889-167.889-167.888-169.079c-9.526-9.525-9.526-23.814 0-33.34 9.525-9.525 23.814-9.525 33.34 0l167.888 167.889 167.888-167.888c9.525-9.526 23.814-9.526 33.34 0 9.525 9.525 9.525 23.814 0 33.34L540.576 507.236z"></path></svg>
</i>
</div>
<div class="modal-body">
<div class="rebate_modal__wrapper">
<img alt="product rebate"
src="data:image/png;base64,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">
<div class="rebate_modal__wrapper-bg">
<div class="rebate_modal__wrapper-list">
<ljs-render manual="" layout="container" id="rebate_modal_content">
<template>
<a impr="1" imprevt="1" href="${landPage}">
<li spz-for="rule in originData.rebate.format_rules" class="rebate_rule">
${rule}
</li>
</a>
</template>
</ljs-render>
</div>
</div>
<img alt="product rebate" class="plugin_modals__wrapper-bottom w-100"
src="data:image/png;base64,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">
</div>
</div>
<div class="modal-footer d-md-none">
<a @tap="rebate_block_modal.close" type="button" class="footer_close" style="border-radius: 100px" data-dismiss="modal">CLOSE</a>
</div>
</div>
</ljs-dropdown>
</div>
</div>
</template>
<div>
<div>
<div class="rebate_modal__list">
<style>
:root {
--rebate-modal-footer: url(//img.fantaskycdn.com/oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg);
}
</style>
<a class="product_detail_rebate_list" impr="1" imprevt="1" href="/promotions/rebate/062ff146-9dec-4725-a7e8-347a829d7a2a" imprsd="true"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="24" fill="none"><g clip-path="url(#a)"><path fill="#EB391B" fill-rule="evenodd" d="M9.127 1.275a1.576 1.576 0 0 0-2.255 0l-.693.709a1.576 1.576 0 0 1-1.146.475l-.991-.012a1.576 1.576 0 0 0-1.595 1.595l.011.991a1.576 1.576 0 0 1-.475 1.146l-.708.693a1.576 1.576 0 0 0 0 2.255l.709.693c.308.3.48.716.475 1.146l-.012.992a1.576 1.576 0 0 0 1.595 1.594l.991-.011a1.577 1.577 0 0 1 1.146.475l.693.709a1.575 1.575 0 0 0 2.255 0l.693-.71a1.576 1.576 0 0 1 1.146-.475l.992.012a1.575 1.575 0 0 0 1.594-1.594l-.011-.992a1.577 1.577 0 0 1 .475-1.146l.709-.693a1.575 1.575 0 0 0 0-2.255l-.71-.693a1.576 1.576 0 0 1-.475-1.146l.012-.991a1.576 1.576 0 0 0-1.594-1.595l-.992.011a1.576 1.576 0 0 1-1.146-.475l-.693-.708ZM5.84 6.92a1.08 1.08 0 1 0 0-2.16 1.08 1.08 0 0 0 0 2.16Zm4.32 4.32a1.08 1.08 0 1 0 0-2.161 1.08 1.08 0 0 0 0 2.16Zm.56-5.96a.793.793 0 0 1 0 1.12L6.4 10.72A.792.792 0 0 1 5.28 9.6L9.6 5.28a.792.792 0 0 1 1.12 0Z" clip-rule="evenodd"></path></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"></path></clipPath></defs></svg> <div style="flex:1;"> <li class="rebate_rule"> Buy <b>2</b> items and save <b>10%</b> off </li><li class="rebate_rule"> Buy <b>3</b> items and save <b>15%</b> off </li><li class="rebate_rule"> Buy <b>4</b> items and save <b>20%</b> off </li> </div> </a>
</div> <ljs-dropdown id="rebate_block_modal" layout="nodisplay" placement="bottomRight" class="rebate_modal" @dropdownopen="rebate_custom_component.triggerGetRenderData;rebate_icon.toggleClass(class='rebate_rotate',force=true)"
@dropdownclose="rebate_icon.toggleClass(class='rebate_rotate',force=false)"> <ljs-loading @tap="rebate_block_modal.close"
class="loading i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt i-spzhtml-layout-container spz-unresolved i-spzhtml-unresolved" layout="container" has-mask="" i-spzhtml-layout="container"></ljs-loading>
<div class="rebate-modal-content">
<div class="modal-header justify-content-center p-1"> <span class="modal-title p-1">SPECIAL OFFER</span>
<i type="button" class="modal_close" @tap="rebate_block_modal.close" aria-label="Close"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" class="icon" viewBox="0 0 1024 1024"><path fill="currentColor" d="M512 1024C229.805 1024 0 794.195 0 512S229.805 0 512 0s512 229.805 512 512-229.805 512-512 512zm0-47.628C768 976.372 976.372 768 976.372 512S768 47.628 512 47.628 47.628 256 47.628 512 256 976.372 512 976.372z"></path><path fill="currentColor" d="m540.577 507.237 167.888 167.889c9.526 9.525 9.526 23.814 0 33.34s-23.814 9.525-33.34 0l-167.888-167.89-169.079 167.89c-9.525 9.525-23.814 9.525-33.34 0-9.525-9.526-9.525-23.815 0-33.34l167.889-167.889-167.888-169.079c-9.526-9.525-9.526-23.814 0-33.34 9.525-9.525 23.814-9.525 33.34 0l167.888 167.889 167.888-167.888c9.525-9.526 23.814-9.526 33.34 0 9.525 9.525 9.525 23.814 0 33.34L540.576 507.236z"></path></svg> </i>
</div>
<div class="modal-body">
<div class="rebate_modal__wrapper"> <img alt="product rebate"
src="data:image/png;base64,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">
<div class="rebate_modal__wrapper-bg">
<div class="rebate_modal__wrapper-list"> <ljs-render manual="" layout="container" id="rebate_modal_content" class="i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt i-spzhtml-layout-container spz-unresolved i-spzhtml-unresolved"
i-spzhtml-layout="container"> <template>
<a impr="1" imprevt="1" href="/promotions/rebate/062ff146-9dec-4725-a7e8-347a829d7a2a"> <li class="rebate_rule"> Buy <b>2</b> items and save <b>10%</b> off </li><li class="rebate_rule"> Buy <b>3</b> items and save <b>15%</b> off </li><li class="rebate_rule"> Buy <b>4</b> items and save <b>20%</b> off </li> </a>
</template> </ljs-render> </div>
</div> <img alt="product rebate" class="plugin_modals__wrapper-bottom w-100"
src="data:image/png;base64,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">
</div>
</div>
<div class="modal-footer d-md-none"> <a @tap="rebate_block_modal.close" type="button" class="footer_close" style="border-radius: 100px" data-dismiss="modal">CLOSE</a> </div>
</div>
</ljs-dropdown>
</div>
</div>
</ljs-render>
<ljs-render manual="" layout="container" id="app_rebate_section" class="i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
<template>
<a class="rebate_rule_section" style="background: linear-gradient(135deg, #FE4747, #FA7F67);color:#FEFFFE" impr="1" imprevt="1" href="${landPage}">
<span>${originData.rebate.format_rules.join(", ")}</span>
<svg style="min-width: 20px;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" t="1675674957969" viewBox="0 0 1024 1024" version="1.1" p-id="2667" width="20" height="20"><path d="M729.6 448H128v85.333333h601.6L597.333333 665.6l59.733334 59.733333 234.666666-234.666666L661.333333 256l-59.733333 59.733333 128 132.266667z" fill="currentColor" p-id="2668"></path></svg>
</a>
</template>
</ljs-render>
<spz-custom-rebate id="rebate_custom_component" layout="logic" @getrenderdata="rebate_modal_content.rerender(data=event)" class="i-spzhtml-element i-spzhtml-layout-logic i-spzhtml-built i-spzhtml-layout"
i-spzhtml-layout="logic"></spz-custom-rebate>
<ljs-script style="display: none;" layout="logic" type="application/javascript" class="i-spzhtml-element i-spzhtml-layout-logic i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="logic"> 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 =
{"line_items":[],"ineffectives":[],"discount_applications":[],"total_discount":"0.00","discount_line_item_price":"0.00","invalid_msg":"","currency":null,"note":"","item_count":0,"original_line_price":0,"original_total_price":0,"line_price":0,"total_price":0,"total_weight":0};
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`})`, }; 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);
</ljs-script>
</div>
<div class="plugin__buy_on_others empty:tw-hidden"></div>
</form>
<form class="zb-flex zb-flex-col zb-relative zb-w-full">
<div class="zb-overflow-y-auto zb-pb-[100px]">
<div class="zb-flex zb-items-center zb-pb-4 zb-border-b zb-border-t-0 zb-border-l-0 zb-border-r-0 zb-border-solid zb-border-[#eee] md:zb-border-none">
<ljs-render layout="container" class="zb-flex-shrink-0 zb-w-[66px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0 zb-h-[70px] md:zb-hidden" id="smart_recommend_product_image" manual="" template="smart_recommend_product_image_template"></ljs-render>
<div class="zb-w-full">
<div class="zb-line-clamp-2 zb-mb-2 zb-text-sm md:zb-text-base">${product.title}</div>
<div class="zb-flex zb-justify-between zb-items-center">
<spz-render layout="container" template="smart_recommend_price_template" id="smart_recommend_modal_price" manual="">
<div class="zb-flex zb-items-center">
<ljs-currency class="zb-font-semibold zb-text-[22px] zb-text-[#CD201A] zb-mr-2" layout="container" value="${product.min_price_variant.price}"></ljs-currency>
<ljs-currency class="zb-text-[#93989D] zb-text-xs zb-line-through" layout="container" value="${product.min_price_variant.compare_at_price}"
spz-if="${product.min_price_variant.compare_at_price > product.min_price_variant.price ? true : false}"></ljs-currency>
</div>
</spz-render>
<a class="zb-flex zb-items-center zb-cursor-pointer zb-text-[#212B36] zb-no-underline" href="${product.url}?${toQuery({ aid: 'smart_recommend.' + data.show_type + '.' + data.rule_id, ifb: product.ifb || '', cfb: product.cfb || '', scm: data.scm || '', ssp: data.ssp || '' })}">
<span class="zb-text-[13px]">See detail</span>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path d="M13.1714 12.0007L8.22168 7.05093L9.63589 5.63672L15.9999 12.0007L9.63589 18.3646L8.22168 16.9504L13.1714 12.0007Z" fill="#93989D"></path></svg>
</a>
</div>
</div>
</div>
<ljs-variants id="smart_recommend_product_variants" layout="container" template="smart_recommend_product_variant_template" slide="smart_recommend_carousel" disabled-dj-event="" interference="">
</ljs-variants>
<div class="zb-text-sm zb-mb-2">Quantity</div>
<ljs-quantity disabled-dj-event="" layout="fixed" width="150" height="52" min="1" max="999999" value="1" input-class="!zb-text-base" icon-class="!zb-p-3"></ljs-quantity>
</div>
<div class="zb-absolute zb-bottom-0 zb-flex md:zb-flex-col zb-w-full zb-bg-white">
<button class="zb-flex zb-items-center zb-mr-2 rtl:zb-ml-2 rtl:zb-mr-0 md:zb-mb-2 zb-justify-center zb-cursor-pointer zb-w-full zb-border zb-border-solid zb-border-[#313131] zb-bg-white zb-rounded zb-h-[42px]" role="addToCart" type="button"
@tap="smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');">
<span>Add To Cart</span>
</button>
<button class="zb-flex zb-items-center zb-justify-center zb-cursor-pointer zb-w-full zb-bg-[#292929] zb-text-white zb-rounded zb-h-[42px] zb-border-none" type="button" role="buyNow"
@tap="smart_recommend_loading.showLoading;smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');">
<span>Buy Now</span>
</button>
</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 && product.options.length && product.options.length > 0) && 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>
Text Content
* 𝐁𝐮𝐲 𝟐 𝐢𝐭𝐞𝐦𝐬 𝐠𝐞𝐭 𝐅𝐑𝐄𝐄𝐒𝐇𝐈𝐏𝐏𝐈𝐍𝐆✈️& 𝟏𝟎%𝐎𝐅𝐅🔥 * 𝐁𝐮𝐲 𝟐 𝐢𝐭𝐞𝐦𝐬 𝐠𝐞𝐭 𝐅𝐑𝐄𝐄𝐒𝐇𝐈𝐏𝐏𝐈𝐍𝐆✈️& 𝟏𝟎%𝐎𝐅𝐅🔥 * Log in * Create an account 0 * Trending Now * 🥤40oz Tumbler * 🩳Gym Shorts * 👕Rash Guard * Tops Button Up Shirts Baseball Jerseys Rash Guard T-Shirts Tank Top Polo Shirts Bomber Jackets Sweatshirts Pajamas Sets Ugly Sweaters * Bottoms Gym Shorts Board Shorts Basketball Shorts Sweatpants * Hoodies Streetwear Hoodies Zip Hoodies Dream Cloak Blanket Hoodies * 🃏TCG Booster Packs * Shop by Anime Pokemon Dragon Ball Super Mario Bros One Piece Sailor Moon Spongebob The Cream Of The Crop Naruto Power Rangers The Legend of Zelda Marvel & DC Comics Jujutsu Kaisen Fullmetal Alchemist Resident Evil Harry Potter Maigc The Gathering Demon Slayer My Hero Academia Bleach Attack On Titan Jojo's Bizarre Adventure Hunter X Hunter Studio Ghibli Chainsaw Man Black Clover Mega Power * More links Shop by Anime * Trending Now * 🥤40oz Tumbler * 🩳Gym Shorts * 👕Rash Guard * Tops * Tops * Button Up Shirts * Baseball Jerseys * Rash Guard * T-Shirts * Tank Top * Polo Shirts * Bomber Jackets * Sweatshirts * Pajamas Sets * Ugly Sweaters * Bottoms * Bottoms * Gym Shorts * Board Shorts * Basketball Shorts * Sweatpants * Hoodies * Hoodies * Streetwear Hoodies * Zip Hoodies * Dream Cloak * Blanket Hoodies * 🃏TCG Booster Packs * Shop by Anime * Shop by Anime * Pokemon * Dragon Ball * Super Mario Bros * One Piece * Sailor Moon * Spongebob * The Cream Of The Crop * Naruto * Power Rangers * The Legend of Zelda * Marvel & DC Comics * Jujutsu Kaisen * Fullmetal Alchemist * Resident Evil * Harry Potter * Maigc The Gathering * Demon Slayer * My Hero Academia * Bleach * Attack On Titan * Jojo's Bizarre Adventure * Hunter X Hunter * Studio Ghibli * Chainsaw Man * Black Clover * Mega Power * Log in * Create an account Home / Jigglypuff Face Pokemon Gym Shorts Home / Jigglypuff Face Pokemon Gym Shorts Home / Jigglypuff Face Pokemon Gym Shorts JIGGLYPUFF FACE POKEMON GYM SHORTS Price $0.00 $35.00 𝐁𝐮𝐲 𝟐 𝐢𝐭𝐞𝐦𝐬 𝐠𝐞𝐭 𝐅𝐑𝐄𝐄𝐒𝐇𝐈𝐏𝐏𝐈𝐍𝐆✈️& 𝟏𝟎%𝐎𝐅𝐅🔥 Buy 3 items get 15%OFF Buy 4 items get 20%OFF size Size Guide XS S M L XL 2XL 3XL 4XL 5XL Please select a size Quantity Add to cart - $35.00 Buy it now Free Delivery: Free international delivery available over 2 items. Free Returns: Not in love? 100% guarantee & free returns. Made to order in 5-10 Days for planet's protection. 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 ` `; }()} `; }()} SPECIAL OFFER ${rule} CLOSE Buy 2 items and save 10% off Buy 3 items and save 15% off Buy 4 items and save 20% off SPECIAL OFFER Buy 2 items and save 10% off Buy 3 items and save 15% off Buy 4 items and save 20% off CLOSE ${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'; landPage = "\/promotions\/rebate\/"; pageType = 1; cart = {"line_items":[],"ineffectives":[],"discount_applications":[],"total_discount":"0.00","discount_line_item_price":"0.00","invalid_msg":"","currency":null,"note":"","item_count":0,"original_line_price":0,"original_total_price":0,"line_price":0,"total_price":0,"total_weight":0}; 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`})`, }; 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); Description These Anime FWIW exclusive gym shorts are custom-made-to-order and handcrafted to the highest quality standards. Made from Birds Eye Pique Fabric which offers outstanding durability, insulation, and wrinkle resistance. Incredibly stylish, comfortable and can be worn in all occasions, not just for the gym! * 5 inch inseam with double side pockets * 100% Birds Eye pique mesh fabric * Breathable and moisture wicking material * Outstanding durability and wrinkle resistance Only available from animefwiw.com All of our products are designed by Anime FWIWs creative otaku designers. Make sure you are purchasing from animefwiw.com so you receive an authentic item! UNIQUE ONE-OF-A-KIND ITEM! We print our designs using dye-sublimation, a technology that allows for us to produce these insanely vibrant all over designs. Due to this process, each item is a unique, one-of-a-kind product, printed exclusively for the customer who ordered it! * Not available in stores Were on a mission to make high-quality art accessible. By skipping the middleman and selling directly to you, we can offer high-quality designs at affordable prices. * Limited-edition designs Unlike a lot of mass-produced designs on the market, each and every item is part of a unique, limited-edition series produced by our in-house team of designers from all over the world. * Only the best materials Our apparel is made with premium eco-friendly inks that blend seamlessly with the threads of the shirt and our inks are odorless and environmentally friendly. * Absolutely no regrets Our 100% Satisfaction Guarantee and Return Policy guarantees youll make a no-regret purchase when you buy. Please allow 6-8 days to receive a tracking number while your order is hand-crafted, packaged and shipped from our facility. Estimated shipping time is 2-4 weeks. FAQ ORDERING -IS YOUR SITE SAFE AND SECURE? Yes, our site is 100% secure. We use 256-bit SSL, the same level of encryption used by large banks around the world. -HOW MUCH IS SHIPPING? We offer affordable shipping, starting at just $7.99 (Free shipping on orders of two items or more)for shipping worldwide. -DO YOU SHIP OUTSIDE OF THE US? Yes. Check our full shipping policy to see what countries we ship to! -WHAT FORMS OF PAYMENT DO YOU ACCEPT? We take PayPaly, Klarna, Visa, Mastercard, American Express, Discover and more! -DO YOU HAVE A QUALITY GUARANTEE? Yes absolutely! We want you to be completely satisfied with your purchase. If your products are flawed in any way, just contact us and we’ll make it right. -HOW LONG DOES IT TAKE FOR ANIME FWIW TO SHIP? All of our items are handcrafted so please allow 5-10 business days for your order to ship out. We source products from all over the world to bring you epic offers and the lowest prices. This means sometimes you have to wait a little longer to get your order depending on the item but it’s always worth it! You will receive a tracking number via email once they are shipped. Once shipped, please allow 3-7 business days for your order to arrive to the majority of the continental United States and please allow 1-2 weeks for your order to arrive to most international countries. CUSTOMERS -WHEN CAN I EXPECT MY ITEMS? All of our items are handcrafted so please allow 5-10 business days for your order to ship out. We source products from all over the world to bring you epic offers and the lowest prices. This means sometimes you have to wait a little longer to get your order depending on the item but it’s always worth it! You will receive a tracking number via email once they are shipped. Once shipped, please allow 3-7 business days for your order to arrive to the majority of the continental United States and please allow 1-2 weeks for your order to arrive to most international countries. -HOW CAN I CANCEL OR CHANGE MY ORDER? Regrets happen, we know… So If you decide you want to cancel an order, just contact us within 24 hours after the order was placed and we’ll cancel it no questions asked. If it has been more than 24 hours, we may have already sent your order to the printer and may not be able to cancel as it will already be in the crafting or shipping process. -I ORDERED 2 ITEMS, WHY DID I ONLY RECEIVE ONE? Since we have fulfillment centers all over the world, when you order multiple items, they may be shipped from different warehouses. You may receive one item before the next. So don’t panic if you don’t receive all of your items at once…they will get to you, and if in doubt, just contact us. -THE STATUS OF MY TRACKING NUMBER HAS NOT CHANGED? Depending on which fulfillment center is crafting your orders, they may create the tracking number while your order is still being crafted to prepare the courier of the incoming shipment. If so, it may look like your package is standing still, but don’t worry, it is making progress to reach your hands. Also, during holiday months, we may have delays because of a bigger volume of orders, please be patient with us as we are a small business and take pride in masterfully crafting each product to ensure the highest quality when it reaches its new home. -OH NO, I MESSED UP MY SHIPPING ADDRESS AND/OR SIZE! CAN I CHANGE IT? If this happens to you, just email us as soon as you can and we MIGHT be able care of it. However, we can’t make any promises. All of our shirts are printed on demand so we usually start immediately after you order and it ships out the same day. If your order has already been shipped, take heart. We’ll still try to make it right. We know how frustrating it can be to pay for something you can’t use. -I DIDN'T RECEIVE AN ORDER CONFIRMATION EMAIL AFTER MY ORDER? If you have not received an Order Confirmation Email, please check your Spam Folder. If you did not receive it, please feel free to contact us if necessary. -MY ITEM CAME IN WITH SOME DISCOLORATION THAT LOOKS LIKE A STAIN, WHAT SHOULD I DO? Due to our sublimation printing process and vacuum sealed shipping, lighter colored items may arrive with slight discoloration which is completely normal and will come out after one light wash! RETURNS -WHAT IS THE RETURN POLICY? Our 30 Day Return Policy guarantees you’ll make a no-regret purchase when you buy. Unhappy with your product for any reason? We’ll take it back! We stand by our high quality products with award winning customer service. Your satisfaction is 100% guaranteed -ARE THERE ANY CHARGES FOR EXCHANGES OR RETURNS? At this time, all customers are responsible for their own return postage since we are still a small but growing company Original shipping charges are also non-refundable -HOW DO I REQUEST A RETURN? Just contact us and we’ll process your return in a snap! -WHAT ITEMS ARE RETURNABLE? Any items purchased within the last 30 days In original condition Unwashed and unworn In the original packaging (if applicable) -I RECEIVED A DEFECTIVE, DAMAGED OR AN INCORRECT ITEM, WHAT SHOULD I DO? If you received a defective, damaged or an incorrect item, contact us within 7 days of receiving your order and we will get it sorted out immediately; since it was our fault, we will not require you to ship the item back. Shipping Info Shipping Information: - We offer worldwide shipping to all countries. No matter where you are, you can place an order for our products. - Handling Time: 3-7 business days - Standard Shipping: 10-20 Business Days - Receiving Time = Handling Time + Shipping Time Shipping Policy: - Free shipping on orders of two items or more. - For orders of less than two items, a shipping fee of $7.99 will be applied. Thank you for choosing us as your shopping destination! ${function(){ const rules = data.data.rules; return ` ` }()} You May Also Like * Mega Powers Macho Man and Hulk Hogan Pop Culture Gym Shorts Quick Shop * Vegeta Pattern Dragon Ball Button Up Hawaiian Shirt Quick Shop * Trippy The Cream of the Crop Randy Savage Pop Culture Gym Shorts Quick Shop * Snorlax Face Pokemon Gym Shorts Quick Shop * Vegeta Badman Pink Dragon Ball Z Button Up Hawaiian Shirt Quick Shop * The Cream of the Crop Randy Savage Pop Culture Button Up Hawaiian Shirt Quick Shop * Gengar Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Togepi Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Pokemon Eevee Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Chopper Pattern One Piece Button Up Hawaiian Shirt Quick Shop * Sylveon Classic Pokemon Gym Shorts Quick Shop * Goku Dragon Ball Z Gym Shorts Quick Shop * Shine Sprite Super Mario Sunshine Button Up Hawaiian Shirt Quick Shop * Jigglypuff Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Gengar Classic Pokemon Gym Shorts Quick Shop * Umbreon V2 Pokemon Zip Hoodie Jacket Quick Shop * Togepi Pattern Pokemon Gym Shorts Quick Shop * Doflamingo Pattern One Piece Button Up Hawaiian Shirt Quick Shop * Sailor Moon 40oz Tumbler Cup With Handle Anime Quick Shop * Jedi Skywalker Star Wars Baseball Jersey Quick Shop * Capsule Corp Dragon Ball Z Zip Hoodie Jacket Quick Shop * Spongebob Pattern Spongebob Squarepants Button Up Hawaiian Shirt Quick Shop * Chimera V1 Fullmetal Alchemist Button Up Hawaiian Shirt Quick Shop * Monkey D. Luffy Gear 5 Name Coffee 40oz Tumbler Cup With Handle Anime Quick Shop * Gengar Face Pokemon Gym Shorts Quick Shop * Satoru Gojo 40oz Tumbler Cup With Handle Jujutsu Kaisen Anime Quick Shop * Super Mario Items Pattern Button Up Hawaiian Shirt Quick Shop * Piranha Plant Super Mario Bros Button Up Hawaiian Shirt Quick Shop * Snorlax Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Pokemon Charizard Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Kakashi Hatake Naruto Dream Cloak Coat Quick Shop * Pokemon Bulbasaur Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Android 17 Dragon Ball Z T-Shirt Quick Shop * Mario Super Mario Bros Baseball Jersey Quick Shop * Snorlax Pokemon Hoodie Quick Shop * Gengar V5 Pokemon Streetwear T-Shirt Quick Shop * Strawhats Jolly Roger One Piece Board Shorts Swim Trunks Quick Shop * Naruto Shippuden Zip Hoodie Jacket Quick Shop * Sylveon Pokemon Zip Hoodie Jacket Quick Shop * Bartholomew Kuma One Piece Zip Hoodie Jacket Quick Shop * Zelda Shield Style The Legend of Zelda Gym Shorts Quick Shop * Elements of Magic the Gathering Baseball Jersey Quick Shop * Snorlax Pokemon Button Up Hawaiian Shirt Quick Shop * Snorlax Classic Pokemon Gym Shorts Quick Shop * Togepi Pokemon Hoodie Quick Shop * Umbrella Corp Resident Evil Baseball Jersey Quick Shop * Gengar 40oz Tumbler Cup With Handle Pokemon Anime Cup Quick Shop * Magikarp Face Pokemon Gym Shorts Quick Shop * Usagi Tsukino Sailor Moon Button Up Hawaiian Shirt Quick Shop * Trippy The Cream of the Crop Randy Savage Pop Culture Pokemon T-Shirt Quick Shop * Sephiroth Final Fantasy Dream Cloak Coat Quick Shop * Luffy v2 One Piece Gym Shorts Quick Shop * Dungeons & Dragons Baseball Jersey Quick Shop * Magikarp Pokemon Button Up Hawaiian Shirt Quick Shop * Crest Symbols Digimon Button Up Hawaiian Shirt Quick Shop * Venom Marvel Comics Button Up Hawaiian Shirt Quick Shop * Pokemon Snorlax 40oz Tumbler Cup With Handle Quick Shop * Nezuko Kamado 40oz Tumbler Cup With Handle Anime Cup Quick Shop * Pokemon Dragonite Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Snorlax Attack Pokemon T-Shirt Quick Shop * Uchiha Symbol Naruto T-Shirt Quick Shop * Squirtle Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Sailor Jupiter 40oz Tumbler Cup With Handle Anime Quick Shop * Bulbasaur Face Pokemon Gym Shorts Quick Shop * Pokemon Snorlax Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Gengar Attack Pokemon Gym Shorts Quick Shop * Navy Blue Monkey D. Luffy Dressrosa One Piece Button Up Hawaiian Shirt Quick Shop * Strawhats Jolly Roger One Piece T-Shirt Quick Shop * Capsule Corp Dragon Ball Z Gym Shorts Quick Shop * Android 17 MIR Dragon Ball Super Hoodie Quick Shop * Luffy Straw Hats One Piece Basketball Shorts Quick Shop * Rockos Shirt Rockos Modern Life Button Up Hawaiian Shirt Quick Shop * Mandalorians Boba Fett Star Wars Baseball Jersey Quick Shop * King Boo and Boo Ghosts Super Mario Bros Button Up Hawaiian Shirt Quick Shop * Goku Super Saiyan 2 Anime 40oz Tumbler Cup With Handle Manga Art Name Quick Shop * Gengar Nightshade Pokemon Gym Shorts Quick Shop * Mew Classic Pokemon Gym Shorts Quick Shop * Vegeta Dum Cumpster Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Quick Shop * South Park Cows McCormick South Park Baseball Jersey Quick Shop * Yoshi Super Mario Bros Button Up Hawaiian Shirt Quick Shop * Sailor Pluto 40oz Tumbler Cup With Handle Anime Quick Shop * Minato Namikaze 4th Hokage Naruto Dream Cloak Coat Quick Shop * Bowser Super Mario Button Up Hawaiian Shirt Quick Shop * Edward Elric Fullmetal Alchemist Dream Cloak Coat Quick Shop * Sailor Neptune 40oz Tumbler Cup With Handle Anime Quick Shop * Link Legend of Zelda Button Up Hawaiian Shirt Quick Shop * Koopa Troopas Super Mario Bros Baseball Jersey Quick Shop * Sharingan Naruto Shippuden Button Up Hawaiian Shirt Quick Shop * Majoras Mask v2 Legend of Zelda Button Up Hawaiian Shirt Quick Shop * King Bob Omb Super Mario Bros Button Up Hawaiian Shirt Quick Shop * Vegeta Blowjob Princess Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Quick Shop * Dragonite Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Batman DC Comics Baseball Jersey Quick Shop * Sailor Saturn Hotaru Tomoe 40oz Travel Tumbler Anime Cup Quick Shop * Trippy Ghostly Evolution Ghastly Haunter Gengar Pokemon Dream Cloak Coat Quick Shop * Umbreon Face Pokemon Gym Shorts Quick Shop * Trafalgar Punk Hazard One Piece Button Up Hawaiian Shirt Quick Shop * Frankys Shirt One Piece Button Up Hawaiian Shirt Quick Shop * Goku Dragon Ball Z Zip Hoodie Jacket Quick Shop * Togepi Pokemon Zip Hoodie Jacket Quick Shop Related Items * Snorlax Face Pokemon Gym Shorts Quick Shop * Jigglypuff Attack Pokemon Gym Shorts Quick Shop * Squirtle Face Pokemon Gym Shorts Quick Shop * Pikachu Face Pokemon Gym Shorts Quick Shop * Magikarp Face Pokemon Gym Shorts Quick Shop * Rayquaza Face Pokemon Gym Shorts Quick Shop * Zoroark Face Pokemon Gym Shorts Quick Shop * Umbreon Face Pokemon Gym Shorts Quick Shop * Gardevoir Face Pokemon Gym Shorts Quick Shop * Bulbasaur Face Pokemon Gym Shorts Quick Shop * Gengar Face Pokemon Gym Shorts Quick Shop * Jigglypuff Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Mew Face Pokemon Gym Shorts Quick Shop * Jigglypuff Classic Pokemon Gym Shorts Quick Shop * Togepi Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Gyarados Face Pokemon Gym Shorts Quick Shop * Charizard Face Pokemon Gym Shorts Quick Shop * Eevee Face Pokemon Gym Shorts Quick Shop * Dragonite Face Pokemon Gym Shorts Quick Shop * Togepi Pattern Pokemon Gym Shorts Quick Shop * Togepi Pokemon Hoodie Quick Shop * Sylveon Face Pokemon Gym Shorts Quick Shop * Greninja Face Pokemon Gym Shorts Quick Shop * Snorlax Pokemon Board Shorts Swim Trunks Quick Shop * Mewtwo Face Pokemon Gym Shorts Quick Shop * Snorlax Pokemon Hoodie Quick Shop * Lucario Face Pokemon Gym Shorts Quick Shop * Snorlax Attack Pokemon Gym Shorts Quick Shop * Jigglypuff Pokemon Board Shorts Swim Trunks Quick Shop * Typhlosion Face Pokemon Gym Shorts Quick Shop * Pikachu Attack Pokemon Gym Shorts Quick Shop * Gengar Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Greninja Classic Pokemon Gym Shorts Quick Shop * Gardevoir Attack Pokemon Gym Shorts Quick Shop * Charlotte Fissure Machoke Pokemon Basketball Shorts Quick Shop * SpongeBob SquarePants Gym Shorts Quick Shop * Princess Peach Mario Bros Gym Shorts Quick Shop * Jigglypuff Polo Shirts Quick Shop * Grengar Pokemon Hoodie Quick Shop * Bartholomew Kuma One Piece Zip Hoodie Jacket Quick Shop * Vegeta Badman Pink Dragon Ball Z Button Up Hawaiian Shirt Quick Shop * Trippy Ghostly Evolution Ghastly Haunter Gengar Pokemon Dream Cloak Coat Quick Shop * Crest Symbols Digimon Button Up Hawaiian Shirt Quick Shop * Sylveon Pokemon Zip Hoodie Jacket Quick Shop * The Cream of the Crop Randy Savage Pop Culture Button Up Hawaiian Shirt Quick Shop * Gengar Classic Pokemon Gym Shorts Quick Shop * Mega Powers Macho Man and Hulk Hogan Pop Culture Gym Shorts Quick Shop * Usagi Tsukino Sailor Moon Button Up Hawaiian Shirt Quick Shop * Patrick Star SpongeBob SquarePants Gym Shorts Quick Shop * Sailor Moon 40oz Tumbler Cup With Handle Anime Quick Shop * Gengar Nightshade Pokemon Gym Shorts Quick Shop * Gengar Attack Pokemon Gym Shorts Quick Shop * Chibi Eevelutions Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Arcanine Pokemon Dream Cloak Coat Quick Shop * Super Mario Items Pattern Button Up Hawaiian Shirt Quick Shop * Bowser Super Mario Button Up Hawaiian Shirt Quick Shop * Minato Namikaze 4th Hokage Naruto Dream Cloak Coat Quick Shop * Magical Creatures Pokemon Button Up Hawaiian Shirt Quick Shop * Shine Sprite Super Mario Sunshine Button Up Hawaiian Shirt Quick Shop * Snorlax Pokemon Snug Oversized Blanket Hoodie Quick Shop * Doflamingo Pattern One Piece Button Up Hawaiian Shirt Quick Shop * Snorlax Pokemon Button Up Hawaiian Shirt Quick Shop * Mew Classic Pokemon Gym Shorts Quick Shop * Snorlax Pokemon Zip Hoodie Jacket Quick Shop * Pokemon Eevee Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Snorlax Cherry Blossom Pokemon Dream Cloak Coat Quick Shop * Bulbasaur Pokemon Hoodie Quick Shop * Chimera V1 Fullmetal Alchemist Button Up Hawaiian Shirt Quick Shop * Eevee Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Capsule Corp Dragon Ball Z Zip Hoodie Jacket Quick Shop * Jedi Skywalker Star Wars Baseball Jersey Quick Shop * Pokemon Bulbasaur Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Pokemon Charizard Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Piranha Plant Super Mario Bros Button Up Hawaiian Shirt Quick Shop * Naruto Shippuden Zip Hoodie Jacket Quick Shop * Monkey D. Luffy Gear 5 Name Coffee 40oz Tumbler Cup With Handle Anime Quick Shop * Snorlax Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Spongebob Pattern Spongebob Squarepants Button Up Hawaiian Shirt Quick Shop * Strawhats Jolly Roger One Piece Board Shorts Swim Trunks Quick Shop * Elements of Magic the Gathering Baseball Jersey Quick Shop * Mario Super Mario Bros Baseball Jersey Quick Shop * Android 17 Dragon Ball Z T-Shirt Quick Shop * Pokemon Dragonite Coffee 40oz Tumbler Cup With Handle Anime Accessories Quick Shop * Vegeta Dum Cumpster Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Quick Shop * Zelda Shield Style The Legend of Zelda Gym Shorts Quick Shop * Trippy The Cream of the Crop Randy Savage Pop Culture Gym Shorts Quick Shop * Vegeta Blowjob Princess Pink Dragon Ball Z Abridged Button Up Hawaiian Shirt Quick Shop * Satoru Gojo 40oz Tumbler Cup With Handle Jujutsu Kaisen Anime Quick Shop * Umbrella Corp Resident Evil Baseball Jersey Quick Shop * Venom Marvel Comics Button Up Hawaiian Shirt Quick Shop * Gengar 40oz Tumbler Cup With Handle Pokemon Anime Cup Quick Shop * Edward Elric Fullmetal Alchemist Dream Cloak Coat Quick Shop * Pokemon Snorlax 40oz Tumbler Cup With Handle Quick Shop * Squirtle Pattern Pokemon Button Up Hawaiian Shirt Quick Shop * Dungeons & Dragons Baseball Jersey Quick Shop * Sailor Jupiter 40oz Tumbler Cup With Handle Anime Quick Shop * Typhlosion Pokemon Streetwear Hoodie Quick Shop * Chimera Fullmetal Alchemist Gym Shorts Quick Shop * Android 17 MIR Dragon Ball Super Hoodie Quick Shop * Magikarp Pokemon Button Up Hawaiian Shirt Quick Shop ${function(){ const isCart = data.data.isCart; const isCollection = data.data.isCollection; const isProduct = data.data.isProduct; const isIndex = data.data.isIndex; return ` ${isCart ? 'The items in the shopping cart do not participate in any recommendation rule. Add the participating items to your shopping cart to check the design.' : ''} ${isProduct ? 'This product did not participated in any recommendation rule. Switch to another product to check the design.' : ''} ${isCollection ? 'The items in this collection do not participate in any recommendation rule. Switch the participating items to check the design.' : ''} ${isIndex ? 'The home page do not participate in any recommendation rule.' : ''} (This prompt would not display on client-side) Recommended Products ` }()} ${function(){ const rule = data.data; const getImageHeight = function(image){ const image_size = rule.config.image_size || 0; const imageWidth = image.width || 600; const imageHeight = image.height || 800; let ratio = 0; if(image_size == 0){ ratio = (imageHeight / imageWidth).toFixed(2); }else if(image_size == 1){ ratio = 1.5; }else if(image_size == 2){ ratio = 1; }else if(image_size == 3){ ratio = 0.75; } return imageWidth * ratio; }; 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('&'); return ` ${rule.config.title} * ${product.title} ${rule.config.quick_shop_button_text} ` }()} class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent); ${(function(){ const product = data.product; 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('&'); return ` ${product.images.map((image) => { return `` }).join('')} ${product.title} See detail Quantity Add To Cart Buy Now `; })()} ${(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("") } ` })()} LISTEN TO OUR CUSTOMERS 9 Lonzo Rice Fits perfect Zak Hamilton Great Quality!! I was searching for a way to make my gaming setup more comfy and this was by far one of the better options I found! Dylan Lockhart Another MUST in my cart I had to get, big fan, love the design, fits well and comfortably, will be back for more! Dawnyielle Brown Very good and great material. Super warm. People love it Aaron Westemeyer I was super excited when I ordered the shirt. I received the shirt on my birthday and I was not disappointed. Gabriel McElwee This is actually the 2nd product I've purchased from these guys and they great quality shipping is great for they showed up for me usually around 2-2½ weeks nice shrink wrap packaging great picture quality no runners so far Rachael Collins Bossman said if we wore something festive we didn’t have to wear our uniform. WORTH IT!!! THANK YOU ❤️ Mike Zarle I was surprised to see how greatly detailed the shirt is! I was a bit surprised that it made from nylon material, but it’s a super comfortable, great looking shirt! 5/5 highly recommend! Meghan Mullen He loves it..I didn't realize how big I got it but over all it was definitely a wonderful gift 🎁 Subscribe today to hear first about our sales SUBSCRIBE Thanks for subscribing WE ACCEPT PayPal Visa Mastercard Klarna GET IN TOUCH service@animefwiw.com FOLLOW US © 2024 animefwiw Best Selllers Tracking Your Order About Us Contact Us Shipping and Delivery Refund Policy Order Cancellation Policy Privacy Policy Term of Service Payment & Pricing DMCA SIGN UP AND SAVE Entice customers to sign up for your mailing list with discounts or exclusive offers. Include an image for extra impact. SUBSCRIBE Thanks for subscribing No Thanks const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation); 111 GIFTS POINTS 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.target_top_product_num - 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.top_product_ids_ = []; 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.target_top_product_num_) === 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.target_top_product_num = that.target_top_product_num_; 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.C_SETTINGS.routes.root + "/api/possum/recommend_activities", { method: "POST", headers: { "Content-Type": "application/json", "store-id": window.C_SETTINGS.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; if (data.page === 1) { that.target_top_product_num_ = data.target_top_product_num || 0; } 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.C_SETTINGS.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.C_SETTINGS.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) => { const that = this; const checkoutButtonEle = document.getElementById("smart_cart_pop_checkout_button"); if (checkoutButtonEle) { SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n: that.i18n_ }, false); }); } const tipEl = document.getElementById("smart_cart_pop_tip_info"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; 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.C_SETTINGS.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.C_SETTINGS.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("module_impressions", { aid: `smart_recommend.2.${rule.id}` }); } } 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.C_SETTINGS.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.C_SETTINGS.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 : '..'} `; })()} ${(function(){ return ` ${data.i18n.checkout} `; })()}