class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent);

3D Wooden Carving Handcraft

$25.99
1 sold
Color : Giraffe
Quantity
Worldwide delivery
Return guarantee
Sustainably made
Secure payments
people are viewing this right now
Description

Wooden Carving Handcraft Gift|3D Natural Animal Decoration with light|Desktop ornaments|Home Decor

The 3D tabletop ornament has multiple designs.
Each design contains layers of interwoven forest plants and wildlife scenes.
Each layer is carefully cut and polished to highlight each layer, then put together to create a beautiful 3D effect that gives the piece depth.

☆Size
Giraffe: 20*24*2.5cm/8*9.4*1inches
Butterfly: 23*14*3cm/9*5.5*1.2inches
Hummingbird: 18*17*3cm/7.1*6.7*1.2inches
Northern Cardinal: 18x18x3cm/7.1*7.1*1.2inches
Cat: 18x14x3cm/7.1*6*1.2inches
Sloths: 18x15x3cm/7.1*6*1.2inches
Running Fox: 24x12.4x2.5cm/9.4*4.9*1inches
Dragon: 22x20x2.5cm/8.7*7.9*1inches
Bee: 18x16x2.5cm/7.1*6.3*1inches
Dragonfly: 20x18x2.5cm/7.9*7.1*1inches
Peacock: 19x14.6 cm*2.5cm/7.48*5.74 *1inches
Camel: 18x14x3cm/7.1*6*1.2inches
Owl: 20x16.8cm*2.5cm/7.9*6.6*1inches
Owl-2: 13*18*2.5cm/5.5*7.1*1inches
Groundhog: 20x17x2.5cm/7.9*6.4*1inches
🦖Tyrannosaurus: 18*16*3.2cm/7.08*6.29*1.25in
Bear: 18.5*14.5*4cm/7.3*5.7*1.6inches
Moose: 18*14*2.5cm/7*5.5*1inches
Wolf: 16*14cm*2.5cm/6.3*5.5*1inches
Wolf-2: 18x18x2.5cm/7.1*7.1*1inches
Nativity Scene: 18x18.2cm/7.0*7.1inches
Fox: 18x14x3.2cm/7*5.5*1.3inches
Turtle: 18x14x2.5cm/7.1*6*1inches
Dolphin: 18x14x2.5cm/7.1*6*1inches
Atlantic blue marlin: 16x18x2.5cm/6.3*7.1*1inches
Starfish: 18x20x2.5cm/7.1*7.9*1inches
Eagle: 18*14*2.5cm/7*5.5*1inches
American Flag Bald Eagle: 20*18*3cm/7.8*7.1*1.2inches
Pommel horse: 18x11x2.5cm/7.1*4.3*1inches
Horse: 17.5*13.6*2.5cm/7*5.4*1inches
Rhino: 18*10*3cm/7.1*4*1.2inches
Panda: 18x14x3.2cm/7.1*5.5*1.3inches
Dinosaur: 18*16*2.5cm/7.1*6.3*1inches
Triceratops: 22*11*2.5cm/8.7*4.3*1inches
Eagle-2: 22.4*12cm*2.5cm/8.8*4.7*1inches
Piggy: 18*11.5*2.5cm/7.1*4.5**1inches
Sheep: 16.5*13*2.5cm/6.5*5.1*1inches
Cattle: 18*11.5*2.5cm/7.1*4.5*1inches
Elephant: 19x16x2.5cm/7.5*6.3*1inches
Baby elephant: 11x8x2.5cm/4.3*3.2*1inches
Soldier: 20x18x3.5cm/8*7.1*1.4inches
Hippocampus animal: 29*13.8*2.5cm/11.4*5.4*1inches
Mermaid: 28.8*12.5cm*2.5cm/11.3*5*1inches


With the right lighting, it would be a delightful piece of decoration!
It can stand freely, which makes it the perfect decoration for any tabletop, mantel, or another flat surface in your home!
Likewise, you can hang it on the wall or hang it on the door.
Whether as a decoration or a gift for someone, it's absolutely perfect.

 How do we make them? - Carefully mechanical engraved from premium multi-layer boxwood with a forest scene, the art sculpture boasts a unique look, fine in detail and safe without burrs.


Where will you place them? - These charming animal wooden crafts add a natural forest accent to your personal space. They feature a beautiful, hollowed-out hardwood front. Our vivid wooden animal figurines are a perfect decoration for shelves, cabinets, tables and fireplaces, etc.

The design that we conceived - From plane to three-dimensional, from contour to details, the high-spiritual ornament will integrate into any home, office, shop and bar decorations and lights up people’s life.

Exquisite Decor Gift - Add it to an existing placement and create your own distinctive forest animal family. You will love our forest animal collection. It is a perfect gift for family, friends, animal lovers for anniversaries, birthdays and housewarmings. These Carving Handcrafts are nice home decor items for living rooms, bedrooms, or as delicate decorations displayed in shops and bars.

Note: The end result may be slightly different from the pictures, because the sculpture is carved and painted by hand, and it is impossible to obtain identical pieces. But this is the beauty of the sculptures made by hand. Each piece is unique.

Rose, Cupid, I LOVE YOU, LOVE, love cross these products are specially created for Valentine's Day. We combined different perspectives such as plants, letters, and fairy tales.

Archery Cupid Wooden Night Light:8.5*7.9*1inches

Rose Wooden Night Light: 9.1*8.3*1inches

Romantic 'LOVE' Night Light:5.8*10.2*1 inches

I❤U Wooden Night Light:5.8*10.2*1 inches

Baby Cupid Wooden Night Light:9.9*6.9*1 inches

Heart Cross for sweetheart Wooden Night Light:6.9*10.2*1 inches