Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
Handmade Plush Cat Bag Messenger Bag
7 / 8

Handmade Plush Cat Bag Messenger Bag

Size
Please select a size
Color - Black
Please select a color
Price
$87.00
$0.00

Quantity

Product Details:
Texture: artificial wool
Closing method: zipper
Color classification: small black cat medium black cat large black cat
Backpack mode: single-shoulder cross-body portable
Lining material: polyester shoulder strap
Style: double root
Type of lifting part: handling handle
Type of outer bag: three-dimensional bag
Case hardness: soft
Style: shoulder bag

Large size: length 31cm, width 17cm, height 15cm, tail 30cm
Medium size: 26cm long, 15cm wide, 13cm high, 23cm tail
Small size: 18cm long, 10cm wide, 9.5cm high, 16cm tail


Product Packaging:

Cat bag * 1

/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1726694338796').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);