🎁Free Shipping on Orders Over $59🎉
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
2 / 27
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
Handmade Musicbox
50% OFF
Fnkus

Handmade Musicbox

$19.99 $39.99
0 sold
Variant
Qty 1000 in stock

 Amazing gift for anyone

Improves mindfulness

Wonderful sounds

Family is a six-letter word that has an entire universe encapsulated inside. Parents, children, grandparents, grandchildren, aunts, uncles, and friends, all of these people make our lives easier, cherishable, and a little more bearable when fate takes turns.

Let’s cherish all these relations with this unique handcrafted custom wooden music box that plays music and tells about your heart’s feelings – one box for each, the daughter, son, grandchild, and siblings’ children.

This is a beautiful wooden music box with a meaningful message engraved from the inside of the box.

“My wife loved it! It is a perfect small gift for the woman or man who is hard to buy for. And it sounds great!”
⭐️⭐️⭐️⭐️⭐️
Gary D.

  • Retro Wooden Engraved Music Box
  • Comes with a beautifully engraved message
  • Hand-cranked music, no batteries needed
  • Wood color
  • Plays your favorite tunes
  • Express love with it
  • Dimensions: 38mm (1.5in) x 65mm (2.55in) x 50mm (1.97in)


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);