Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil
2 / 5

Relieve Dry Skin And Tighten Body Skin Massage Treatment Oil

Specifications
Please select a specifications
Price
$11.97
$0.00

Quantity

Product information:
Product Name: Body Massage Oil
Key words: firming skin
Capacity: 30ml
Ingredients: cornflower oil, rose oil, sunflower seed oil, sweet almond oil, Jasmine flower oil, vitamin E
Product Size: 10.2 * 2.8cm


Packing list:
Essential oil * 1

Product Image:
/** @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-1726694338796').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);