www.sofirnlight.com
Open in
urlscan Pro
2606:4700::6812:e92a
Public Scan
Submitted URL: http://www.sofirnlight.com/
Effective URL: https://www.sofirnlight.com/
Submission: On December 04 via api from US — Scanned from DE
Effective URL: https://www.sofirnlight.com/
Submission: On December 04 via api from US — Scanned from DE
Form analysis
3 forms found in the DOM<form class="search-predictive-form" id="search-predictive-form" is="spz-form">
<input class="search-predictive-form-input border rounded-md w-full text-base" id="search-predictive-form-input" type="text" autocomplete="off" name="q" autofocus="" placeholder="Search"
@input-debounced="search-predictive-search-icon-render.rerender(data=event.value);search-predictive-result.rerender(data=event.value);">
<button class="search-predictive-form-clear clear text-0" type="button" @tap="search-predictive-search-icon-render.rerender(data='');search-predictive-form.clear();search-predictive-result.rerender(data='');"><svg class="" width="24" height="24"
fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="24" height="24" rx="12" fill="#F6F6F6"></rect>
<path d="M15.813 9.093a.64.64 0 0 0-.906-.905L12 11.095 9.093 8.188a.64.64 0 0 0-.905.905L11.094 12l-2.906 2.907a.64.64 0 0 0 .905.905L12 12.906l2.907 2.906a.64.64 0 0 0 .905-.905L12.906 12l2.906-2.907Z" fill="currentColor"></path>
</svg></button>
<spz-render class="search-predictive-search-icon-container absolute top-0 left-0 i-spzhtml-layout-container i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" id="search-predictive-search-icon-render"
layout="container" i-spzhtml-layout="container">
<template>
<a class="search-predictive-search-icon flex" href="/search?q=${encodeURIComponent(typeof data === 'string' ? data : '')}">
<svg class="lg:hidden" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 .8a6.2 6.2 0 1 0 3.992 10.945l2.534 2.535a.534.534 0 0 0 .754-.755l-2.534-2.534A6.2 6.2 0 0 0 7 .8ZM1.868 7a5.133 5.133 0 1 1 10.267 0A5.133 5.133 0 0 1 1.867 7Z" fill="currentColor"></path></svg>
<svg class="md:hidden" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M20 0H0v20h20V0Z" fill="#fff" fill-opacity="0"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M8.75 1a7.75 7.75 0 1 0 4.989 13.681l3.168 3.168a.667.667 0 0 0 .942-.942l-3.168-3.168A7.75 7.75 0 0 0 8.75 1ZM2.333 8.75a6.417 6.417 0 1 1 12.834 0 6.417 6.417 0 0 1-12.834 0Z" fill="currentColor"></path></svg>
</a>
</template>
</spz-render>
</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>
<form class="modal__form-style_template7" id="modal__form" style="background: rgba(255,255,255,1) none no-repeat scroll center center/cover; width: 552px; ">
<div class="modal__image-wrapper" style="background: rgba(0,0,0,1) url(https://cdn.shoplazza.com/c412d2b007d75178a316b8a54837f3eb.jpg) no-repeat scroll center center/cover; "></div>
<div class="modal__content">
<div class="modal__title">
<p><span style="font-size: 26px;"><strong>Sofirn Flahslight </strong><strong>Special Sale </strong></span></p>
</div>
<div id="modal__close-btn" class="d-flex align-items-center justify-content-center modal__button " style="background-color: #FF847D; border-color: #FF847D; "><span style="color: rgb(255, 255, 255); font-size: 16px; font-weight: bold;"
data-mce-style="color: #ffffff; font-size: 16px; font-weight: bold;">SHOP NOW</span></div>
<div class="modal__close-icon">×</div>
</div>
</form>
Text Content
Flash Sale products are not eligible for additional discounts or promotions * Sofirn Products * Rechargeable Flashlight * Powerful Flashlight * Tactical Flashlight * Diving Flashlight * EDC Flashlight * Mini flashlight * Headlamps * Lanterns * Batteries & Accesorries * Flash Sale * New Arrivals * More links * Non-Sofirn * Chargers & Cables * Diffuser & Holster * LED Bulbs * Local Warehouse * Ship From USA * Ship from DE USD * United States Dollars (USD) * Euro (EUR) Sign in Create an account ${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)} 0 ${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)} Search * Sofirn Products Sofirn Products * Rechargeable Flashlight * Powerful Flashlight * Tactical Flashlight * Diving Flashlight * EDC Flashlight * Mini flashlight * Headlamps * Lanterns * Batteries & Accesorries * Flash Sale * New Arrivals * Non-Sofirn Non-Sofirn * Chargers & Cables * Diffuser & Holster * LED Bulbs * Local Warehouse Local Warehouse * Ship From USA * Ship from DE USD * United States Dollars (USD) * Euro (EUR) Log in ${function() { if (data === undefined || typeof data !== 'string' || data == '') return ''; const searchEmpty = ("Your search for \"{test}\" did not yield any results.").replace('{test}', data); return ` View more ${searchEmpty} `; }()} ${Array(data.total || 0).fill().map((val, idx) => idx).map((val, idx) => ` * `).join('')} * * * ${Array(data.total || 0).fill().map((val, idx) => idx).map((val, idx) => ` * `).join('')} HOT SALE Save 39% SOFIRN IF23 EDC FLASHLIGHT RECHARGEABLE 4000LM POWERFUL XHP50B LED LIGHT 21700 TYPE C RGB MINI TORCH WITH MAGNETIC TAILCAP (3) From $39.99 $65.99 Save 39% Save 34% SOFIRN SF26 TACTICAL FLASHLIGHT MAX 2000 LUMENS, RECHARGEABLE EDC FLASHLIGHT SFT40 LED WITH TAIL SWITCH From $45.99 $69.99 Save 34% Save 25% SOFIRN IF30 EDC POWERFUL FLASHLIGHT 12000LM USB C RECHARGEABLE LIGHT $81.99 $109.99 Save 25% Save 52% SOFIRN SC33 EDC FLASHLIGHT 5200LM RECHARGEABLE LED TORCH (1) From $31.99 $66.99 Save 52% Save 39% SOFIRN IF23 EDC FLASHLIGHT RECHARGEABLE 4000LM POWERFUL XHP50B LED LIGHT 21700 TYPE C RGB MINI TORCH WITH MAGNETIC TAILCAP (3) From $39.99 $65.99 Save 39% Save 34% SOFIRN SF26 TACTICAL FLASHLIGHT MAX 2000 LUMENS, RECHARGEABLE EDC FLASHLIGHT SFT40 LED WITH TAIL SWITCH From $45.99 $69.99 Save 34% Save 25% SOFIRN IF30 EDC POWERFUL FLASHLIGHT 12000LM USB C RECHARGEABLE LIGHT $81.99 $109.99 Save 25% Save 52% SOFIRN SC33 EDC FLASHLIGHT 5200LM RECHARGEABLE LED TORCH (1) From $31.99 $66.99 Save 52% * New SC18 * NEW SC32 MAX 1800 LUMENS EDC SMALL FLASHLIGHT Super Bright Pocket Light with SST40 LED, Type C Charging Port for Camping, Emergency, Dog Walking Buy Now EDC LIGHT 2000 LUMENS BRIGHT LED TACTICAL FLASHLIGHT Rechargeable Flashlight with Tail E-Switch Pocket Size Buy Now TOP SELLERS * Best seller Save 39% SOFIRN IF23 EDC FLASHLIGHT RECHARGEABLE 4000LM POWERFUL XHP50B LED LIGHT 21700 TYPE C RGB MINI TORCH WITH MAGNETIC TAILCAP (3) From $39.99 $65.99 Save 39% Save 32% SOFIRN SC18 EDC SMALL RECHARGEABLE FLASHLIGHT, 1800 HIGH LUMEN SUPER BRIGHT POCKET LIGHT WITH TYPE C CHARGING PORT (17) From $14.99 $21.99 Save 32% Save 34% D25LR(H25LR) RECHARGEABLE HEADLAMP, WITH LH351D 5000K WHITE LED AND SST20 DR 660 NM RED LED, TYPE C CHARGING PORT From $20.99 $31.99 Save 34% Save 38% SOFIRN Q8 PRO POWERFUL 11000 LUMEN USB C RECHARGEABLE FLASHLIGHT, WITH 4* XHP50.2 LEDS ANDURIL 2 UI TORCH (316) From $74.99 $119.99 Save 38% Save 35% SOFIRN SC31PRO 2000LM ANDURIL 2.0 UI 5000K RECHARGEABLE EDC FLASHLIGHT WITH SST40 LED (84) From $23.99 $36.99 Save 35% Save 54% SOFIRN BLF LT1 RECHARGEABLE LANTERN WITH POWER BANK FUNCTION, ADJUSTABLE COLOR TEMPERATURE, LONG WORKING TIME (55) From $45.99 $99.99 Save 54% Save 38% SOFIRN IF22A RECHARGEABLE EDC FLASHLIGHT SPOTLIGHT, POWERFUL SFT40 LED MAX 2100 LUMENS, LONG BEAM DISTANCE LIGHT (122) From $34.99 $55.99 Save 38% Save 31% SOFIRN SP35T 3800LM TACTICAL FLASHLIGHT USB C RECHARGEABLE XHP50B LED TORCH WITH DUAL SWITCH POWER INDICATOR ATR (26) From $33.99 $48.99 Save 31% Load more EDC LIGHTS * EDC lights Save 39% SOFIRN IF23 EDC FLASHLIGHT RECHARGEABLE 4000LM POWERFUL XHP50B LED LIGHT 21700 TYPE C RGB MINI TORCH WITH MAGNETIC TAILCAP (3) From $39.99 $65.99 Save 39% Save 34% SOFIRN SF26 TACTICAL FLASHLIGHT MAX 2000 LUMENS, RECHARGEABLE EDC FLASHLIGHT SFT40 LED WITH TAIL SWITCH From $45.99 $69.99 Save 34% Save 25% SOFIRN IF30 EDC POWERFUL FLASHLIGHT 12000LM USB C RECHARGEABLE LIGHT $81.99 $109.99 Save 25% Save 52% SOFIRN SC33 EDC FLASHLIGHT 5200LM RECHARGEABLE LED TORCH (1) From $31.99 $66.99 Save 52% Save 35% SOFIRN SC31PRO 2000LM ANDURIL 2.0 UI 5000K RECHARGEABLE EDC FLASHLIGHT WITH SST40 LED (84) From $23.99 $36.99 Save 35% Save 38% SOFIRN IF22A RECHARGEABLE EDC FLASHLIGHT SPOTLIGHT, POWERFUL SFT40 LED MAX 2100 LUMENS, LONG BEAM DISTANCE LIGHT (122) From $34.99 $55.99 Save 38% Save 32% SOFIRN SC18 EDC SMALL RECHARGEABLE FLASHLIGHT, 1800 HIGH LUMEN SUPER BRIGHT POCKET LIGHT WITH TYPE C CHARGING PORT (17) From $14.99 $21.99 Save 32% Save 51% SOFIRN SC32 MINI TACTICAL FLASHLIGHT, MAX 2000 LUMEN RECHARGEABLE POCKET EDC LIGHT (2) From $22.68 $45.99 Save 51% Load more HIGHLY RECOMMENDED * Headlamps * Tactical Flashlights * Camping light Save 30% SOFIRN HS41 4000 LUMENS RECHARGEABLE HEADLAMP USB C RIGHT ANGLE HEADLIGHT POWERFUL 21700 LIGHT (1) From $31.99 $45.99 Save 30% Save 34% D25LR(H25LR) RECHARGEABLE HEADLAMP, WITH LH351D 5000K WHITE LED AND SST20 DR 660 NM RED LED, TYPE C CHARGING PORT From $20.99 $31.99 Save 34% Save 28% D25L(H25L) RECHARGEABLE HEADLAMP WITH 90 HIGH CRI LED, 1000LM DUAL LH351D FLASHLIGHT (2) From $17.99 $24.99 Save 28% Save 36% SOFIRN HS20 RECHARGEABLE USB C HEADLAMP, 18650 HEADLIGHT WITH DUAL LED AND DUAL SWITCH, SPOTLIGHT & FLOODLIGHT (40) From $35.99 $55.99 Save 36% Save 32% SOFIRN HS10 USB C RECHARGEABLE MINI 16340 HEADLAMP, 1100LM LH351D 90CRI ANGLE HEADLIGHT FLASHLIGHT TIR OPTICS WITH MAGNET TAIL (87) From $18.99 $27.99 Save 32% Save 30% SOFIRN HS40 RECHARGEABLE HEADLAMP, HIGH POWERED SST40 LED, MAX 2000LM HEADLIGHT WITH USB-C PORT MAGNETIC TAILCAP (16) From $31.99 $45.99 Save 30% Save 35% D25S(H25S) POWERFUL 1200 LUMENS RECHARGEABLE HEADLAMP, DUAL SST40 LED FLASHLIGHT WITH A USB C PORT (39) From $16.99 $25.99 Save 35% Save 35% H05A HEADLAMP POWERFUL 2400 LUMEN 5* LED BULBS, TYPE-C RECHARGEABLE OUTDOOR 30W HEADLIGHT WITH IP66 WATERPROOF (1) From $14.99 $22.99 Save 35% Load more Save 43% PREORDER SOFIRN SC28 TACTICAL FLASHLIGHT 2800 LUMENS From $29.99 $52.99 Save 43% Save 34% SOFIRN SF26 TACTICAL FLASHLIGHT MAX 2000 LUMENS, RECHARGEABLE EDC FLASHLIGHT SFT40 LED WITH TAIL SWITCH From $45.99 $69.99 Save 34% Save 52% SOFIRN SC33 EDC FLASHLIGHT 5200LM RECHARGEABLE LED TORCH (1) From $31.99 $66.99 Save 52% Save 40% SOFIRN SF15 TACTICAL PENLIGHT PORTABLE BLACK LIGHT WHITE PLUS UV LIGHT (1) $17.99 $29.99 Save 40% Save 31% SOFIRN SP35T 3800LM TACTICAL FLASHLIGHT USB C RECHARGEABLE XHP50B LED TORCH WITH DUAL SWITCH POWER INDICATOR ATR (26) From $33.99 $48.99 Save 31% Save 39% SOFIRN C8L RECHARGEABLE TACTICAL FLASHLIGHT, MAX 3100LM TYPE-C LIGHT XHP50D HI LED TORCH (17) From $39.99 $65.99 Save 39% Save 51% SOFIRN SC32 MINI TACTICAL FLASHLIGHT, MAX 2000 LUMEN RECHARGEABLE POCKET EDC LIGHT (2) From $22.68 $45.99 Save 51% Save 26% SOFIRN SP31V2.0 1200 LUMEN TACTICAL FLASHLIGHT, EDC LIGHT WITH DUAL SWITCH (78) From $25.99 $34.99 Save 26% Load more Save 54% SOFIRN BLF LT1 RECHARGEABLE LANTERN WITH POWER BANK FUNCTION, ADJUSTABLE COLOR TEMPERATURE, LONG WORKING TIME (55) From $45.99 $99.99 Save 54% Save 47% SOFIRN LT1S USB-C RECHARGEABLE LANTERN, OUTPUT 500 LUMENS WITH RED LIGHT AND WHITE LIGHT (64) From $31.99 $59.99 Save 47% Save 33% SOFIRN BLF LT1 MINI ANDURIL 2.0 LANTERN, 90 HIGH CRI CAMPING LIGHT USBC RECHARGEABLE FLASHLIGHT (11) From $30.99 $45.99 Save 33% Save 23% LED RECHARGEABLE CAMPING LIGHT 20W SUPER BRIGHT LED LANTERN LONG-RANGE LITHIUM OUTDOOR LAMPU FOR CAMPING FISHING HUNTING $9.99 $12.99 Save 23% Save 40% SOFIRN SC03 LANTERN 2000LM POWERFUL 2-IN-1 FLASHLIGHT RECHARGEABLE CAMPING LIGHT OUTDOOR TORCH WITH COMBO SIDE LIGHT From $29.94 $49.99 Save 40% Save 30% SOFIRN LT1S PRO CAMPING LANTERN ANDURIL 2.0 WITH NICHIA 519A LED & SST20 LED (660NM) From $55.99 $79.99 Save 30% Save 40% FOLDING LED CAMPING LANTERN, USB RECHARGEABLE COLLAPSIBLE HANGING TENT LIGHTS WITH MAGNETIC FOR CAMPING AND HURRICANES EMERGENCY POWER OUTAGES $11.99 $19.99 Save 40% ${Array(data.total || 0).fill().map((val, idx) => idx).map((val, idx) => ` * `).join('')} ${Array(data.total || 0).fill().map((val, idx) => idx).map((val, idx) => ` * `).join('')} BRIGHTEST LIGHT * Powerful flashlight Save 25% SOFIRN IF30 EDC POWERFUL FLASHLIGHT 12000LM USB C RECHARGEABLE LIGHT $81.99 $109.99 Save 25% Save 35% SOFIRN Q8PLUS 16000LM POWERFUL FLASHLIGHT, RECHARGEABLE ANDURIL 2.0 6* XHP50B LED TORCH (57) From $77.99 $119.99 Save 35% Save 31% SOFIRN SP36PRO ANDURIL 2.0 UI RECHARGEABLE FLASHLIGHT 8000 LUMEN MAX, POWERFUL LIGHT WITH 4* SST40 LED (59) From $47.99 $69.99 Save 31% Save 38% SOFIRN Q8 PRO POWERFUL 11000 LUMEN USB C RECHARGEABLE FLASHLIGHT, WITH 4* XHP50.2 LEDS ANDURIL 2 UI TORCH (316) From $74.99 $119.99 Save 38% Save 43% SOFIRN SP33S POWERFUL XHP70.2 LED 5000LM WITH LED LIGHT, USBC RECHARGEABLE TORCH LIGHT WITH POWER INDICATOR (85) From $45.99 $79.99 Save 43% Save 31% SOFIRN SP36 BLF ANDURIL 2.0 RECHARGEABLE FLASHLIGHT 5650 LUMENS, 4*LH351D LEDS AND POWERBANK OUTPUT (59) From $47.99 $69.99 Save 31% Save 40% SOFIRN SP70 FLASHLIGHT POWERFUL 5500LM XHP70.2 LED FLASHLIGHT 26650 LIGHT (82) From $65.99 $109.99 Save 40% Save 34% SOFIRN SD01 PRO 10000LM POWERFUL DIVING LIGHT, 3* XHP50.2 LEDS DIVING UNDERWATER FLASHLIGHT WITH MAGNETIC CONTROL SWITCH (16) From $65.99 $99.99 Save 34% Load more Click to watch SOFIRN FLASHLIGHTS * Sofirn Products Save 39% SOFIRN IF23 EDC FLASHLIGHT RECHARGEABLE 4000LM POWERFUL XHP50B LED LIGHT 21700 TYPE C RGB MINI TORCH WITH MAGNETIC TAILCAP (3) From $39.99 $65.99 Save 39% Save 52% SOFIRN SC33 EDC FLASHLIGHT 5200LM RECHARGEABLE LED TORCH (1) From $31.99 $66.99 Save 52% Save 43% PREORDER SOFIRN SC28 TACTICAL FLASHLIGHT 2800 LUMENS From $29.99 $52.99 Save 43% Save 32% SOFIRN SC18 EDC SMALL RECHARGEABLE FLASHLIGHT, 1800 HIGH LUMEN SUPER BRIGHT POCKET LIGHT WITH TYPE C CHARGING PORT (17) From $14.99 $21.99 Save 32% Save 34% SOFIRN SF26 TACTICAL FLASHLIGHT MAX 2000 LUMENS, RECHARGEABLE EDC FLASHLIGHT SFT40 LED WITH TAIL SWITCH From $45.99 $69.99 Save 34% Save 25% SOFIRN IF30 EDC POWERFUL FLASHLIGHT 12000LM USB C RECHARGEABLE LIGHT $81.99 $109.99 Save 25% Save 35% SOFIRN SC31PRO 2000LM ANDURIL 2.0 UI 5000K RECHARGEABLE EDC FLASHLIGHT WITH SST40 LED (84) From $23.99 $36.99 Save 35% Save 35% SOFIRN Q8PLUS 16000LM POWERFUL FLASHLIGHT, RECHARGEABLE ANDURIL 2.0 6* XHP50B LED TORCH (57) From $77.99 $119.99 Save 35% Save 49% SOFIRN SC31PRO EDC FLASHLIGHT RECHARGEABLE, SUPER BRIGHT LIGHT 2000 LUMENS ANDURIL 2 WITH SST40 6500K (121) From $18.88 $36.99 Save 49% Save 31% SOFIRN SP35T 3800LM TACTICAL FLASHLIGHT USB C RECHARGEABLE XHP50B LED TORCH WITH DUAL SWITCH POWER INDICATOR ATR (26) From $33.99 $48.99 Save 31% Load more ABOUT SOFIRN SOFIRN was originally an OEM provider founded in 2010. We started to do branding for our manufactured products in 2016, so SOFIRN became a flashlight branded company afterward. We seek to offer a wide range of high-quality and innovative illumination products at reasonable prices and create a world where darkness cannot escape anywhere. That purpose is grounded in our core beliefs which are quality, innovation, and value. We have launched many products over the past 6 years that have become bestsellers, including SC31Pro, Q8 Pro, LT1, IF22A, etc. SUPPORT Create an account Order tracking Privacy Policy Payment EXTRAS Delivery & Shipping Return & Refund Policy Terms & Conditions Warranty ACCOUNT About Sofirn Contact information Contact Us CONTACT Contact us Email:sofirnlight@gmail.com Facebook FB: https://www.facebook.com/barryserviceofsofirn/ SUPPORT Create an account Order tracking Privacy Policy Payment EXTRAS Delivery & Shipping Return & Refund Policy Terms & Conditions Warranty ACCOUNT About Sofirn Contact information Contact Us CONTACT Contact us Email:sofirnlight@gmail.com Facebook FB: https://www.facebook.com/barryserviceofsofirn/ © 2023 sofirn ${function() { const force_image_size = "natural"; const product_hover_on = true; const product_show_sale_label = true; const product_save_type = "percent"; const badge1 = ""; const badge2 = ""; const badge3 = ""; const product_title_mobile_hide = false; const product_title_style = "hide"; const enable_collection_thumb_image = false; const variantNames = ["color"]; const thumbMaxNum = 6; const suffix_id = Math.random().toFixed(6).slice(-6); const url = data.withinUrl; const productId = data.id; const price = data.price; const productAvailable = data.available; const productVariants = data.variants || []; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; let image2 = null; let imageHoverOn = false; if (force_image_size !== 'natural') { imageHeight = imageWidth * force_image_size; } if (product_hover_on) { for (let i = 1; i < images.length; i++) { const img = images[i]; if (img.src && img.src.indexOf('video=') === -1) { image2 = img; imageHoverOn = true; break; } } } let compareAtPrice = data.compare_at_price; let offRatio = data.off_ratio; let discountMaxUrl = url; const showFrom = data.price_min != data.price_max ? true : false; for (let i = 0; i < productVariants.length; i++) { const variant = productVariants[i]; if (variant.price == price && compareAtPrice < variant.compare_at_price) { compareAtPrice = variant.compare_at_price; offRatio = variant.off_ratio; variant.available && (discountMaxUrl = variant.withinUrl); } } const soldOutText = "Sold out"; let soldOn = false; let saleOn = false; if (productAvailable) { if (product_show_sale_label && +price < +compareAtPrice) { saleOn = true; } } else { soldOn = true; } const diffPrice = compareAtPrice - price; const saveLabelContent = product_save_type == 'percent' ? (offRatio + '%') : ``; let saveText = "Save {off_ratio}"; saveText = saveText.replace('{off_ratio}', saveLabelContent); const productTitle = data.title; const variantValues = []; const showVariants = []; if (data.need_variant_image && enable_collection_thumb_image && variantNames.length > 0) { for (let i = 0; i < (data.options || []).length; i++) { const option = data.options[i]; const optionName = option.name.toLowerCase(); if (variantNames.includes(optionName)) { for (let j = 0; j < productVariants.length; j++) { const variant = productVariants[j]; const value = variant.options[i].value; if (!variantValues.includes(value)) { variantValues.push(value); showVariants.push(variant); } } break; } } } return ` ${showVariants.map(item => { return ` `; }).join('')} ${saleOn ? saveText : soldOutText} ${badge1} ${badge2} ${badge3} ${ "TITLE" === 'SUBTITLE' ? DATA.BRIEF : DATA.TITLE } From ${saveText} ${showVariants.map((item, idx) => { let showMoreHtml = ''; if (idx == thumbMaxNum) { showMoreHtml += ` +${showVariants.length - thumbMaxNum} `; } return ` ${showMoreHtml} `; }).join('') } `; }()} ${function() { const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; const defaultIndex = !!defaultSelectedVariant ? data.images.findIndex(img => img.src == (defaultSelectedVariant.image && defaultSelectedVariant.image.src)) : -1; const initialSlide = defaultIndex == -1 ? 0 : defaultIndex; const attrs = data.images.length > 1 ? 'slide controls' : ''; return ` ${data.images.map(img => ` `).join('')} `; }()} ${data.images.map((img, index) => ` `).join('')} ${DATA.TITLE} ${data.brief} ${function() { const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; return ` ${("Save {off_ratio}").replace('{off_ratio}', ("percent") == 'percent' ? defaultSelectedVariant.off_ratio + '%' : `` )} - `; }()} Quantity ${function() { const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; let status_lan = "Add to cart"; if ((defaultSelectedVariant && !defaultSelectedVariant.available) || (!defaultSelectedVariant && !data.available)) { status_lan = "Sold out"; } return ` ${status_lan} - Buy now `; }()} ${function() { var thumbSwitchName = ''; return data.product.options.map((option, index) => { const optionName = option.name || ''; const optionPosition = 'option' + (index + 1); const values = option.values || []; const soldOutValues = (data.soldOutValues && data.soldOutValues[optionPosition]) || {}; const variantThumbs = ["color"] || []; var isThumbImage = false; if (data.product.need_variant_image && thumbSwitchName == '') { for (let i = 0; i < variantThumbs.length; i++) { const name = variantThumbs[i].toLowerCase(); if (name == optionName.toLowerCase()) { isThumbImage = true; thumbSwitchName = name; } } } const thumbStyle = "image_with_text"; const thumbType = isThumbImage ? thumbStyle.replace(/_/g, '-') : 'text'; return ` ${optionName.slice(0, 1).toUpperCase() + optionName.slice(1).toLowerCase()} : ${values.map(value => { let selected = ''; let soldout = soldOutValues[value] ? 'soldout' : ''; if (data.selectedValues[optionName] == value) { selected = 'selected'; } let thumbImage = null; if (isThumbImage) { const variants = data.product.variants; for (let i = 0; i < variants.length; i++) { const variant = variants[i]; if (variant[optionPosition] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} ${value} `; }).join('')} `; }).join(''); }()} ${data.targetOption || data.defaultValue || ''} ${("Save {off_ratio}").replace('{off_ratio}', ("percent") == 'percent' ? data.variant.off_ratio + '%' : `` )} - - YOUR MAY ALSO LIKE ${data.map(data => ` `).join('')} ${data.map(data => ` `).join('')} ${ data == 1 ? ("1 product was added to your cart!") : ("{count} products were added to your cart!").replace('{count}', data) } ${function() { const freeShippingAmount = 29; const totalPrice = data.data.total_price; const diffAmount = freeShippingAmount - totalPrice; const freeShippingText = diffAmount > 0 ? "Spend {amount} more and get free shipping!" : "Your order is free delivery"; return ` ${diffAmount > 0 ? freeShippingText.replace('{amount}', ``) : freeShippingText} `; }()} ${data.product.title} ${data.variant.options.map(option => option.value).join(' / ')} ${(data.product.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return ` ${propertie.name}: View image ` }else{ return ` ${propertie.name}: ${propertie.value} ` } }).join('')} ${data.data.item_count == 1 ? ("Cart subtotal (1 product)") : ("Cart subtotal ( {count} products)").replace('{count}', data.data.item_count)} ${("Save {off_ratio}").replace('{off_ratio}', ``)} Taxes and shipping calculated at checkout View cart Continue shopping 111 111 111 Item has been added ${(function(){ const products = data.products; const getDefaultVariant = function(product){ if (product.min_price_variant.available){ return product.min_price_variant; }else { const avail_variants = product.variants.filter(function(variant){ return variant.available; }); if (avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams = function(product, index){ const variant = getDefaultVariant(product); const params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm || '', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams = Object.keys(params).map(function(key){ return params[key]; }).join('__'); return trackParams; }; const hasMore = (data.products.length - data.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.SHOPLAZZA.routes.root + "/api/possum/recommend_activities", { method: "POST", headers: { "Content-Type": "application/json", "store-id": window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ "show_type": 2, "line_item": { "product_id": that._atcLineItem.product_id, "variant_id": that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page": data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){ return res.json(); } }).then(function(data){ data.cart = cart.cart; 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.SHOPLAZZA.meta.page.template_name}.${params.spm}`, }, once: true }); }); this.registerAction('handleAtcSuccess', (detail) => { detail.args.data.product = detail.args.data.product || {}; detail.args.data.variant = detail.args.data.variant || {}; const defParams = detail.args.product.split('__'); const product_id = detail.args.data.product.id; const product_title = detail.args.data.product.title; const variant_id = detail.args.data.variant.id; const price = detail.args.data.variant.price; const aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb = detail.args.data.product.cfb; const scm = defParams[1]; const spm = defParams[2]; const ssp = defParams[3]; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; const activity_id = `${detail.args.activity_id}`; const target_drive_way = detail.args.target_drive_way; document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden'); setTimeout(() => { document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden'); document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none'); }, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') { const bannerEl = document.getElementById(`smart_cart_pop_banner`); this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) { bannerEl.innerHTML = res.rebate_tips; } }) } }); this.registerAction('handleCartSummary', (event) => { this.onBuyNowClick(); const tipEl = document.getElementById("smart_cart_pop_tip_info"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; const that = this; let total_price = cart.total_price; if (!total_price) { SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); } else { this.getBindDiscount_(cart.line_items).then(res => { if (res && res.discount_code){ const total = cart.line_price - cart.total_discount - res.bundle_discount_value; if (total > 0) { total_price = total; } else { total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); }) } }); this.registerAction('open', () => { window.sessionStorage.setItem('smart_pop_times', Number(window.sessionStorage.getItem('smart_pop_times')) + 1); }); this.registerAction('close', () => { this.rendered_ = false; this.products_ = []; window.djInterceptors && window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/cart`, { method: 'GET', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res => res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart => { this.cart_ = cart.cart; return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2, rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item: this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data) { const products = data.products; const listPopRenderEl = document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return; listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){ el.style.background = data.config.add_to_cart_button_color; }); products.forEach(function(product){ const productId = product.id; const productFormEls = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`); let variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_mobile ljs-variants`); if (window.innerWidth > 768) { variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_pc ljs-variants`); } productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.setProduct(product); }); }); variantsEl.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } trackPluginImpression_(rule){ if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: 2 }); window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` }); } } onBuyNowClick() { const checkoutEl = document.getElementById("smart_cart_pop_checkout"); if (!checkoutEl) return; checkoutEl.addEventListener('click', function(e) { const trackData = { plugin_name: "upsell", event_type: "checkout_submit", rule_id: `${this.activityId_}`, show_type: 2 }; window.sa && window.sa.track("plugin_common", trackData); }); } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids'] && JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) => arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); } if (!carts.length) { Promise.resolve(); } return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ cart: carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart', SpzCustomComponent); ${function(){ return ` ${data.data.rebate_tips || ''} `; }()} ${function(){ const getImageHeight = function(image){ const width = image.width || 500; const height = image.height || 500; const image_size = data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height / width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 * ratio; }; const image = data.data.variant.image || data.data.product.image; return ` `; }()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} ${(function(){ const variant = data.variant; return ` `; })()} ${(function(){ const variant = data.variant; return ` ${ variant.options.map(function(option){ return option.value; }).join("/") || 'Not exist' } `; })()} ${(function(){ const variant = data.data && data.data.variant; const defaultText = data.defaultText || 'Add To Cart'; const text = (!variant || variant.available) ? defaultText: data.soldOutText; return ` ${text} `; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; } return ` ${cart.item_count >=0 ? cart.item_count : '..'} Checkout `; })()} 111 See detail $0.00 Quantity 1 See detail See detail $0.00 Quantity 1 Add to cart GIFTS POINTS $0.00 1 Sofirn Flahslight Special Sale SHOP NOW ×