Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
1/4
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
Mocuishle™ - Kitten Playtunnel
1/4

Mocuishle™ - Kitten Playtunnel

$9.99
$19.99
Save $10.00
It's been recommended by 683 people on Facebook, Twitter and Instagram
Option
Please select a option
Quantity
/** @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-1539149753700').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);
Weight: 0kg
Barcode:


Endless Fun and Entertainment 😆

This Toys design makes it impossible for your Kitten to not be totally engaged with limitless fun and entertainment. The next point will explain why.
 

Innovative 4-in-1 Design 👀

This Tunnel has a mouse, bell and feather attached to it which is basically everything Kittens love and get heavily engaged by…combined!

Boost Mental & Physical Growth 💪

Figuring out how to use the Tunnel and the active playtime that comes with it will positively impact your kitten's mental and physical Growth in the early stages.
 

Create Unbreakable Bond 💕

Help your kitten explore the Tunnel in the beginning and you will quickly see a big increase in trust and love... an unbreakable bond!

Safety and Durability Guaranteed 👈

Don’t need to worry about your kitten! Our Playtunnel is made from flexible, high-quality & non-toxic materials for long-lasting enjoyment.

Designed by Kitten Owners 🤝

This tunnel is designed for both kittens and owners, prioritizing your little one's needs and your peace of mind.

Men's Wear