Sofirn SC31 Pro EDC Flashlight with Anduril 2.0 UI

9599 sold
style- with battery
color- 6500K Black
$24.99
$49.99
-50%
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'a05c59a9-71db-4041-a751-358cb704c3ef'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = '13609fc4-0da8-48af-a22f-7c76bc4c78f6'; const variantId = this.variant_id; const productType = ''; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '13609fc4-0da8-48af-a22f-7c76bc4c78f6' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = '13609fc4-0da8-48af-a22f-7c76bc4c78f6'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() {} unmountCallback() {} setupAction_() { this.registerAction('showAddToCartToast', () => { const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy') if(themeAddToCartToastEl) return const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
Quantity
Free worldwide shipping over $29
Returnable within 30 days
Professional and attentive service
Secure payments
Shipping
Estimated delivery time:Apr-05 - Apr-14
Description

Product manual, click to download!

Features

1. Super bright: SC31 Pro uses a single SST40 LED and outputs a maximum 2000 lumens, for long range observation up to a maximum distance of 226 meters. 

2. Fast charging: SC31 Pro is equipped with a rechargeable 18650 battery, using a USB-C charging cable and 2A power adapter (not included), it only takes 2.5 hours to be fully charged.

3. Anduril 2.0 UI: SC31 Pro uses sophysicated Anduril UI which takes time to learn but fun to play with. For ease of use, Click to turn on, then press and hold for lumen brightness ramping.

4. Pocket-sized EDC Light: 4.6 inches in length and 2 oz in weight (excluding battery), it fits nicely in the palm of your hand and your pocket or backpack. With clips and lanyard, easy to fix in jeans pocket or wrist.

5. Tough & reliable: It is rated IPX8 waterproof and works very well in heavy rain. The flashlight body is built from durable Military Grade aluminum alloy and it's drop resistant design makes it tough and reliable.

6. Clip & lanyard: The pocket-size SC31 Pro fits nicely in the palm of your hand and you can clip the flashlight into the pocket or onto a backpack chest strap to free your hands.

7. Versatile Usage: It's perfect for running, outdoors, sports and professional maintenance work. It can be a special gift for parents, spouse or flash-aholic friends.

8. Build Quality: The body and tail cap have ample knurling which helps grip for removing the battery. A silicone diffuser can also be installed for use as a night light or reading lamp  and a magnetic end cap can be installed for securely attaching to any ferrous metal object.

9. LED Indicator: When charging, the battery indicator glows red. After being fully charged, the indicator glows green.

10. Mode Memory: The SC31 Pro automatically memorizes the last brightness level used. It will turn on again to the exact brightness you need. Read the user guide for information on the many ways one can operate or customize the versatlle SC31 Pro via the Anduril 2.0 User Interface.

Note: To prevent accidental activation, when not using the flashlight or carrying it outdoors, please loosen the tailcap to disconnect the battery or activate the lockout mode (if available).

Specification:

1. Emitter: single SST40 LED

2. Tint: 6500K cool white (daylight) or 5000K warm white

3. Working voltage: 2.8V-4.2V

4. Dimension: 117.5 mm (length) x 25.4mm (head diameter)

5. Weight: 59±1 gram (without batteries)

6. Flashlight body: Aerospace grade 6061 grade aluminum alloy hard-anodized anti-abrasive finish to get solid built body, anti-crash geometry.

7. Toughened mineral glass lens

8. Powered by single button-top 18650 battery (not includes in the choice 1-- SC31 pro without battery)

9. Mode Memory: It memorizes the last brightness level used in the general modes. It will activate the last brightness you selected, when you turn on the flashlight next time.

10. Low Voltage Protection: LVP makes the light step down to a lower level when the battery is lower than 2.8V, and if the light is already at the lowest level, it shuts itself off.






You may also like