Cat Toy Tumbler - Interactive Toy

$26.99
Sold 1
Color:  brown
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-1651799308132').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);
Share the love
Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.
Description
【Entertaining Wobble Design】: Our Cat Toy Tumbler uses a unique rocking design, rolling in a 360-degree motion for endless entertainment. Make every playtime a joyous event for your cat.
【Interactive Treat Dispenser】: Amp up the fun with a built-in treat dispenser. Just fill the bottom with your cat's favorite treats and watch as playtime turns into a rewarding snack hunt.
【Made for Cat Enthusiasts】: Designed with cat owners in mind, our Tumbler enhances the play experience, stimulating mental activity, promoting active feeding, and fostering a deeper bond between you and your feline friend.
【Safe and Durable】: Crafted from food-grade ABS and PC materials, our Cat Toy Tumbler stands up to playful pounces while ensuring your cat's safety. Enjoy peace of mind as your cat plays.
【Customizable Treat Dispensing】: Adjust the amount and size of treats dispensed to suit your cat's dietary needs and preferences. This interactive tumbler presents a mental challenge that rewards your cat with tasty treats.

Product Description

Cat Toy Tumbler Cat Toy Tumbler

Our Cat Toy Tumbler uses a unique rocking design, rolling in a 360-degree motion for endless entertainment. Make every playtime a joyous event for your cat.

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy Tumbler Cat Toy Tumbler

Easy three steps to start a happy cat life

Step 1: Gently rotate to open the lid and put in the food.

Step 2: Toggle the switch to open and close the food outlet.

Step 3: The cat starts to play with the toy, causing it to dispense food.

Cat Toy Tumbler Cat Toy Tumbler

Easy to use

Open the top cover to put in the cat food.

Adjust the movable baffle to choose whether to dispense food.

Cat Toy Tumbler Cat Toy Tumbler

Tumbler Food Dispenser, an engaging cat toy with a delightful design. This beginner-friendly dispenser is easy to use. Simply open the top cover to load the dispenser with your cat's favorite kibble. The adjustable movable baffle lets you control the food dispensing according to your cat's needs, making mealtime both entertaining and stimulating.

But this is not just a food dispenser. It's also a tumbler toy that will pique your cat's curiosity. As your cat paws and nudges the toy, it wobbles, but it doesn't fall over! This fun design encourages your cat to play and interact, providing both physical exercise and mental stimulation.

The cute and attractive design is the ball on top. This toy's delightful aesthetic makes it a stylish addition to your home, all while providing your feline friend with hours of fun. It's a perfect blend of form and function - an essential toy for any cat owner seeking to enrich their pet's life.



Product Description

Cat Toy Tumbler Cat Toy Tumbler

Our Cat Toy Tumbler uses a unique rocking design, rolling in a 360-degree motion for endless entertainment. Make every playtime a joyous event for your cat.

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy TumblerCat Toy Tumbler

Cat Toy Tumbler Cat Toy Tumbler

Easy three steps to start a happy cat life

Step 1: Gently rotate to open the lid and put in the food.

Step 2: Toggle the switch to open and close the food outlet.

Step 3: The cat starts to play with the toy, causing it to dispense food.

Cat Toy Tumbler Cat Toy Tumbler

Easy to use

Open the top cover to put in the cat food.

Adjust the movable baffle to choose whether to dispense food.

Cat Toy Tumbler Cat Toy Tumbler

Tumbler Food Dispenser, an engaging cat toy with a delightful design. This beginner-friendly dispenser is easy to use. Simply open the top cover to load the dispenser with your cat's favorite kibble. The adjustable movable baffle lets you control the food dispensing according to your cat's needs, making mealtime both entertaining and stimulating.

But this is not just a food dispenser. It's also a tumbler toy that will pique your cat's curiosity. As your cat paws and nudges the toy, it wobbles, but it doesn't fall over! This fun design encourages your cat to play and interact, providing both physical exercise and mental stimulation.

The cute and attractive design is the ball on top. This toy's delightful aesthetic makes it a stylish addition to your home, all while providing your feline friend with hours of fun. It's a perfect blend of form and function - an essential toy for any cat owner seeking to enrich their pet's life.