🎁Free Shipping on Orders Over $59🎉
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
4 / 14
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
Christmas Pot Holder Baking Mitts
41% OFF
Fnkus

Christmas Pot Holder Baking Mitts

$9.99 $16.99
0 sold
Style
Qty 1000 in stock

🌟These pot holders make a great gift for everyone on your holiday gift-giving list. Each potholder has a pocket that is perfect to fill with a baking mix and spatula, fresh baked cookies, cookie cutters and sprinkles, a gift card, etc (not included).

null

 🍪🥄These Christmas adorable cookie pack make the perfect gift🎁 for teachers, neighbors, coworkers, friends or anyone you want to spread some holiday cheer to this Christmas.💖🌟

null

  • Baking Spirits Bright
  • Tis the Season to Bake Cookies
  • Baking Christmas Cheer
  • Christmas Calories Don't Count
  • We Whisk You a Merry Christmas
  • Have a Sweet Christmas

Size:

  • 10 x 7 inches

Material:

  • Cloth

 

const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);