const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'e04228f2-eb75-482b-8d5d-d3d02d4a07f7'; 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 = '6f13231f-ad35-473f-ae1d-65dd27f09c39'; const variantId = this.variant_id; const productType = 'default'; 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 == '6f13231f-ad35-473f-ae1d-65dd27f09c39' && 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 = '6f13231f-ad35-473f-ae1d-65dd27f09c39'; 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() { // 同一页可能有多个 block 各自渲染本 snippet,导致逻辑元素 spz-custom-discount-toast(#appsAddCartToastFunc) 重复。 // 仅保留 DOM 中第一个实例,其余重复实例移除自身,保证逻辑元素及其 action 引用(appsAddCartToastFunc)唯一。 const funcs = document.querySelectorAll('#appsAddCartToastFunc'); if (funcs.length > 1 && this.element !== funcs[0]) { this.element.remove(); return; } // 全局折扣 toast 的弹出点分散在多个模板/组件里(含声明式 @atcError),无法逐一在弹出前前置, // 故挂载时幂等地去重并挂到 body;加购 toast 改为弹出前按需去重(见 showAddToCartToast) this.ensureSingleToastInBody_('cart_match_discount_toast_wrap'); } unmountCallback() {} // 同一页面可能有多个 block 各自渲染本 toast snippet(如商详的 discount_automatic + 购物车抽屉里的折扣横幅), // 导致 toast 外层出现重复 id。重复 id 下 getElementById/querySelector 及 SPZ 动作引用都只命中第一个, // 且被关进抽屉的那份会被抽屉的 transform/overflow 裁剪/错位。这里在挂载时幂等去重: // 只保留一份、移除多余的,并把保留的挂到 body(body 是 position:fixed 最安全的落点,避免被任何祖先裁剪)。可反复调用。 ensureSingleToastInBody_(id) { const els = Array.from(document.querySelectorAll('#' + id)); if (!els.length) return; els.slice(1).forEach((el) => el.remove()); const keep = els[0]; if (keep.parentNode !== document.body) { document.body.appendChild(keep); } } // 主题购物车抽屉是否打开 isInCartDrawer_() { return !!document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setupAction_() { this.registerAction('showAddToCartToast', () => { // 抽屉内加购:主题本就不会有加购效果,统一弹插件自己的 toast // 非抽屉:主题有加购代理则沿用主题加购效果,否则插件兜底 const proxyEl = document.getElementById('add-cart-event-proxy'); const inDrawer = this.isInCartDrawer_(); if (!inDrawer && proxyEl) { return; } // 弹出前按需去重并挂到 body(幂等),避免重复 id 命中错对象或被抽屉裁剪/错位 this.ensureSingleToastInBody_('apps_add_cart_toast_wrap'); 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);

Ken Kaneki Tokyo Ghoul Cosplay HD150red/HD210Gray-ComicPie

$26.82
$59.90
-$33.08
class SpzCustomDiscountFlashsale extends SPZ.BaseElement { constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); this.getFlashSaleApi = "\/api\/storefront\/promotion\/flashsale\/display_setting\/product_setting"; this.timer = null; this.variantId = "e04228f2-eb75-482b-8d5d-d3d02d4a07f7"; // 促销活动数据 this.flashsaleData = {} } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // 挂载bind函数 解决this指向问题 this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } mountCallback() { // 获取数据 this.getData(); this.element.onclick = (e) => { const cur = this.win.document.querySelector(".app_discount_flashsale_desc"); const setting = this.flashsaleData.product_setting; const landingUrl = `/promotions/discount-default/${this.flashsaleData.discount_info.id}`; const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl); if (finalUrl && appDiscountUtils.inProductBody(this.element) && e.target !== cur) { this.win.open(finalUrl, '_blank', 'noopener'); } } // 绑定 this.viewport_.onResize(this.resize); // 监听子款式切换,重新渲染 this.win.document.addEventListener('dj.variantChange', this.switchVariant); } unmountCallback() { // 解绑 this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { this.render(); }, 200) } switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '6f13231f-ad35-473f-ae1d-65dd27f09c39' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "6f13231f-ad35-473f-ae1d-65dd27f09c39", product_type: "default", variant_id: this.variantId } this.flashsaleData = {}; this.win.fetch(this.getFlashSaleApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { this.flashsaleData = await response.json(); this.render(); } else { this.clearDom(); } }).catch(err => { this.clearDom(); }); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } render() { this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), inProductDetail: appDiscountUtils.inProductBody(this.element), flashsaleData: this.flashsaleData, image_domain: this.win.SHOPLAZZA.image_domain, }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) } } SPZ.defineElement('spz-custom-discount-flashsale', SpzCustomDiscountFlashsale);
Quantity
Discount Code

Free worldwide shipping
Free returns
Sustainably made
Secure payments

Description

Welcome to Comicpie. We offer thoughtfully curated products, delivered with care. All orders include free shipping—no minimum required. You can also explore more items to enjoy additional perks. Our support team is available 24/7 to answer your questions.

What’s Included: ✨ Free storage case ✨ Premium packaging (gift-ready!)

Shipping & Returns: Free US shipping on orders | Fast international delivery. 30-day hassle-free returns for unopened items.

 

Product Features

COSPLAY Character Eyes: Unleash Your Character's Soul ✨ Elevate your cosplay with our character-inspired visuals — the ultimate tool for achieving iconic looks! Designed for anime lovers, cosplay enthusiasts, and con-goers, these pieces combine vibrant designs, all-day comfort, and stunning effects to bring your favorite characters to life.

Why Choose Our Character Series?

  1. Studio-Level Character Accuracy

  • Precisely replicated patterns inspired by anime, manga, and games (e.g., dragon scales, neon cyber effects, magical gradients).

  • Choose between subtle enhancement or dramatic transformation — perfect for any role!

  1. All-Day Comfort

  • Made with breathable materials and high moisture content for over 8 hours of wear.

  • Sterile, individually sealed — fresh and hygienic for your events.

  1. Versatile for Every Occasion

  • Cosplay & Conventions: Accurately recreate details from your favorite series.

  • Themed Parties: Stand out at Halloween or anime cons with styles like vampire red, wolf yellow, or mermaid teal.

  • Content Creation: High-definition visuals perfect for photoshoots, TikTok skits, and YouTube cosplay videos.

How to Choose Your Perfect Pair

  • Enlargement Styles (14.0–16.0mm): Add doll-eyed charm for magical girls or shōjo characters.

  • Full Transformation Pieces: Completely change your look for demons, aliens, or mythical creatures.

  • Color-Focused Styles: Vibrant solids (electric blue, blood red) or gradients ideal for villains, heroes, and fantasy roles.

Ordering & Care Guide What’s Included: ✨ Free storage case ✨ Premium gift-ready packaging ✨ Character-style pairing guide

Unleash Your Inner Character Whether you’re a stoic swordsman, a cunning sorcerer, or a futuristic cyborg — our character eyes are your secret weapon for authenticity and show-stopping impact. Shop Now and let your vision steal the spotlight at your next event! 🌟

Product Usage Guidelines

I. Getting Ready

  • Initial Soak: Before your first wear, soak your new pair in a multi-purpose refreshing solution for at least 6 hours. This ensures maximum comfort for your transformation.

  • Pro Tip: Do not use the liquid from the original packaging for direct wear; it’s for storage only and may be too strong for sensitive eyes.

II. How to Wear

  1. Wash hands thoroughly with mild soap and dry them with a lint-free towel.

  2. Gently pick up the piece with an applicator and place it on your fingertip. Check if it forms a perfect "cup" shape to ensure it's not inside out.

  3. Gently hold your upper and lower eyelids open, then place the piece onto your eye.

  4. Blink naturally a few times to let it settle into the perfect position.

III. How to Remove

  1. Ensure your hands are clean and dry.

  2. Use your fingers to gently hold your eyelids open.

  3. Using the pads of your thumb and index finger (no nails!), gently pinch the edge and slide it off.

  4. Place it immediately into a case filled with fresh solution.

IV. Comfort & Care

  • Feeling Dry? If you feel any dryness or a "foreign body" sensation, remove them immediately and clean them with fresh solution. Check for any tiny dust particles or if they were worn inside out.

  • Daily Maintenance: Change the solution in your case after every use. We recommend deep-cleaning your storage case weekly.

V. Essential Safety Rules

  • ▲ Wearing Time: Start with 4 hours/day for the first few times. Once you’re used to them, do not exceed 8 hours/day.

  • ▲ When to Avoid: Remove before sleeping, swimming, or showering. Avoid high-heat areas like BBQs or saunas.

  • ▲ Makeup Logic: Put your "character eyes" in before makeup, and take them out before you start your makeup removal routine.

  • ▲ Hygiene: Never use tap water to rinse. Never share your pair with anyone else—keep your cosplay gear personal!

VI. Professional Maintenance

  1. The 10-Second Rub: After removing, gently rub both sides of the piece with your finger pads for 10 seconds to keep them crystal clear.

  2. Storage: Keep the case 2/3 full of solution. Ensure the pieces are fully submerged.

  3. Keep it Fresh: Replace your storage case every 3 months for the best hygiene.

VII. Friendly Reminders

  • Custom Fits: If you need different strengths for each eye, we’ve got you covered! Just specify your requirements when ordering.

  • Issue Resolution: If you notice any issues with your order, contact us within 24 hours of receipt with a photo.

Need help? Reach out to us: 📧 comicpie0@gmail.com

Global Shipping & Returns Policy

Global Shipping & Returns Policy

We are committed to providing a convenient and transparent global shopping experience. Below are the detailed guidelines for our shipping and returns services.

1. Shipping Coverage

We offer Free Standard Shipping worldwide, including but not limited to:

  • Major destinations: United States (including Alaska, Hawaii, and APO/FPO/DPO addresses), Canada, Australia, and all EU member states.

  • Other Regions: Our service extends to numerous other countries. If your country is not listed at checkout, please contact our customer service for verification.

2. Order Processing & Shipping

  • Processing Time: Orders are processed and prepared for shipment within 24-48 hours after successful payment.

  • Shipping Notification: Once dispatched, a confirmation email with a tracking number will be automatically sent to you, allowing you to monitor your package in real-time.

  • Shipping Origin: All packages are dispatched from our logistics center within 48 hours to ensure the fastest possible delivery.

3. Delivery Time Estimates

Estimated delivery times (after dispatch) are as follows. Please note that delays may occur due to holidays, customs, or extreme weather.

Region Group Major Countries Estimated Delivery
Group A UK, Germany, France, Netherlands, Spain, Singapore 7 - 14 Days
Group B USA, Australia, Canada, Italy, New Zealand 8 - 15 Days
Group C Mexico, Greece, Vietnam, etc. 15 - 25 Days
Group D Austria, Romania, Turkey, etc. 20 - 35 Days
Group E/F UAE, Bulgaria, Saudi Arabia, Pakistan 35+ Days


4. Return & Exchange Policy

Your satisfaction is our top priority.

  • Incorrect or Damaged Items:

    If you receive a product with defects (e.g., wrong style color, damaged outer packaging, or manufacturing issues), please contact us within 7 days of receipt with supporting photos. Upon verification, we will arrange a free replacement or a full refund.

  • Change of Mind:

    If you are not satisfied with your purchase, you may request a return or exchange within 7 days of delivery.

    • Unopened Products: Eligible for an exchange for another style of equal value.

    • Opened Products: Due to the personal nature of our character accessories, items that have been opened or used cannot be returned for non-quality reasons to maintain hygiene standards.

Contact Our Customer Service Team:

📧 Email: comicpie0@gmail.com

(We aim to respond within 24 hours on business days)