lunathreads
Home
New Arrivals
Trousers
Casual Pants
Shorts
Jeans
Nail Art
Bras
Everyday Bras
Wireless Bras
Push-up Bras
Lace Bras
Sports Bras
Bralettes
Maternity & Nursing Bras
Panties
Seamless Panties
High-waist Panties
Lace Panties
Cotton Panties
Thongs
Comfort Fit Panties
Shapewear
Bodysuits
Waist Cinchers & Belts
Shaping Shorts & Leggings
Sleepwear & Loungewear
Silk Pajamas
Cotton Pajamas
Robes
Loungewear Sets
Sexy Nightwear
Sports Bra & Panty Sets
Yoga Wear
High-impact Sports Bras
Accessories
Bra Inserts
Nipple Covers & Stickers
Bra Extenders
Laundry Bags for Lingerie
More links
Home
New Arrivals
Trousers
Casual Pants
Shorts
Jeans
Nail Art
Bras
Everyday Bras
Wireless Bras
Push-up Bras
Lace Bras
Sports Bras
Bralettes
Maternity & Nursing Bras
Panties
Seamless Panties
High-waist Panties
Lace Panties
Cotton Panties
Thongs
Comfort Fit Panties
Shapewear
Bodysuits
Waist Cinchers & Belts
Shaping Shorts & Leggings
Sleepwear & Loungewear
Silk Pajamas
Cotton Pajamas
Robes
Loungewear Sets
Sexy Nightwear
Sports Bra & Panty Sets
Yoga Wear
High-impact Sports Bras
Accessories
Bra Inserts
Nipple Covers & Stickers
Bra Extenders
Laundry Bags for Lingerie
const marketSlot = document.querySelector(".plugin_c_market"); if(marketSlot) { marketSlot.remove(); }
const SITE = (window.C_SETTINGS || window[atob('U0hPUExBWlpB')])?.routes?.root || ''; const MARKET_THEME_SETTINGS = `${SITE}/api/markets/theme_setting`; const MARKET_COUNTRIES = `${SITE}/api/markets/countries`; const IP_MATCHING_MARKET = `${SITE}/api/front/station`; const MARKET_LANGUAGES = `${SITE}/api/markets/:id/active_languages`; const URL_REDIRECT = '_market_redirected'; const COOKIE_TIPS_NAME = 'market_no_tips'; const COOKIE_TIPS_EXPIRES = 1000 * 60 * 60 * 24 * 14; const MARKET_COUNTRY_COOKIE = '_shoplazza_market_country'; const MARKET_MODAL_LOADED = '__market_modal_loaded__'; const PROPERTY_SELECTED = 'selected'; const MARKET_PC_HEADER_TRIGGER = 'market-pc-header-trigger'; const MARKET_PC_HEADER_COUNTRY_SELECT_TITLE = 'market-pc-header-country-select-title'; const MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE = 'market-pc-header-language-select-title'; const MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE = 'market-pc-header-language-select-sub-title'; const MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE = 'market-pc-header-country-select-sub-title'; const MARKET_FLAG = 'market-flag'; const MARKET_SELECT_VALUE = 'market-select-value'; const MARKET_CURRENCY = 'market-currency'; const MARKET_CURRENCY_SYMBOL = 'market-currency-symbol'; const MARKET_SELECT_ITEM = 'market-select-item'; const MARKET_SELECT_ITEM_ID = 'market-select-item-id'; const MARKET_SELECT_LIST = 'market-select-list'; const MARKET_LANGUAGE_SELECT = 'market-language-select'; const MARKET_COUNTRY_SELECT = 'market-country-select'; const MARKET_MODAL = 'market-modal'; const MARKET_GATEWAY_REDIRECT_MODAL = 'market-gateway-redirect-modal'; const MARKET_RESELECT_MODAL = 'market-reselect-modal'; const MARKET_MODAL_FLAG = 'market-modal-flag'; const MARKET_MODAL_COUNTRY_CODE = 'market-modal-country-code'; const MARKET_MODAL_CURRENCY_SYMBOL = 'market-modal-currency-symbol'; const MARKET_MODAL_CLOSE = 'market-modal-close'; const MARKET_MODAL_CONFIRM = 'market-modal-confirm'; const MARKET_MODAL_RESELECT = 'market-modal-reselect'; const MARKET_MODAL_RESELECT_COUNTRY_SELECT = 'market-modal-reselect-country-select'; const DATA_SECTION_TYPE = 'data-section-type'; const SECTION_TYPE_HEADER = 'header'; const SECTION_TYPE_FOOTER = 'footer'; class SpzCustomMarket extends SPZ.BaseElement { constructor(element) { super(element); this.global = null; this.useCountrySelect_ = false; this.useLanguageSelect_ = false; this.useModal_ = false; this.isSingleSelectMode_ = false; this.blockSectionPosition_ = ''; this.isEditMode = false; this.ipMatchingMarket = null; this.marketCountryList = []; this.marketLanguages = []; this.toast = null; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { console.debug('Geolocation'); this.xhr_ = SPZServices.xhrFor(this.win); const platform = SPZServices.platformFor(this.win); this.isIOS_ = platform.isIos(); this.action_ = SPZServices.actionServiceForDoc(this.element); this.global = this.win.C_SETTINGS || this.win[atob('U0hPUExBWlpB')]; this.isEditMode = new URLSearchParams(this.win.location.search).get('preview_theme_id') && new URLSearchParams(this.win.location.search).get('oseid'); this.init_(); } showToast_(content) { if (!this.toast) { this.toast = self.document.createElement('ljs-toast'); this.toast.setAttribute('layout', 'nodisplay'); this.toast.setAttribute('hidden', ''); this.toast.setAttribute('duration', '2000'); this.element.appendChild(this.toast); } SPZ.whenApiDefined(this.toast).then((apis) => { apis.showToast(content); }); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${TAG}.${name}`, data); this.action_.trigger(this.element, name, event); } findBlockSectionPosition() { let current = this.element; while (current) { const dataSectionType = current.getAttribute(DATA_SECTION_TYPE); if ( dataSectionType === SECTION_TYPE_HEADER || dataSectionType === SECTION_TYPE_FOOTER ) { return dataSectionType; } current = current.parentElement; } return ''; } async initSettings_() { await this.getMarketThemeSettings_(); if (this.useCountrySelect_) { this.element.setAttribute('use-country-select', true); } if (this.useLanguageSelect_) { this.element.setAttribute('use-language-select', true); } if (this.useModal_) { this.element.setAttribute('use-modal', true); } if ( (this.useCountrySelect_ && !this.useLanguageSelect_) || (!this.useCountrySelect_ && this.useLanguageSelect_) ) { this.isSingleSelectMode_ = true; } this.blockSectionPosition_ = this.findBlockSectionPosition(); this.isPCLayout_ = this.win.matchMedia('(min-width: 960px)').matches; } renderMarketSelectTemplateNode_(clonedTemplate, data) { this.renderTemplateImg_(clonedTemplate, MARKET_FLAG, { src: data?.flag, width: '24', height: '24', }); this.renderTemplateElement_( clonedTemplate, MARKET_SELECT_VALUE, data.value ); this.renderTemplateElement_( clonedTemplate, MARKET_CURRENCY, data?.currency ); this.renderTemplateElement_( clonedTemplate, MARKET_CURRENCY_SYMBOL, data?.currencySymbol ); } bindDropdownOpenClickEvent_(triggerElement, dropdown) { if (!triggerElement) return; const triggerOpen = () => { SPZ.whenApiDefined(dropdown).then((apis) => { if (!dropdown.hasAttribute('open')) { apis.open(triggerElement); } }); }; if (this.isIOS_) { triggerElement.addEventListener('touchstart', triggerOpen); } else { triggerElement.addEventListener('click', triggerOpen); } } createDropdown_() { const dropdown = self.document.createElement('ljs-dropdown'); dropdown.setAttribute('layout', 'nodisplay'); if (this.blockSectionPosition_ === 'header') { dropdown.setAttribute('overlay-style', 'top: 4px;'); dropdown.setAttribute('placement', 'bottomRight'); } else if (this.blockSectionPosition_ === 'footer') { dropdown.setAttribute('overlay-style', 'top: -4px;'); dropdown.setAttribute('placement', 'top'); } return dropdown; } createDropdownIcon_() { const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svgElement.setAttribute("class", "market-rotate-180"); svgElement.setAttribute("width", "16"); svgElement.setAttribute("height", "16"); const path1 = document.createElementNS("http://www.w3.org/2000/svg", "path"); path1.setAttribute("d", "M7.47 5.172a.75.75 0 0 1 1.06 0l4.596 4.596a.75.75 0 1 1-1.06 1.06L7.468 6.232a.75.75 0 0 1 0-1.06Z"); path1.setAttribute("fill", "currentColor"); const path2 = document.createElementNS("http://www.w3.org/2000/svg", "path"); path2.setAttribute("d", "M8.533 5.172a.75.75 0 0 1 0 1.06l-4.596 4.596a.75.75 0 1 1-1.061-1.06l4.596-4.596a.75.75 0 0 1 1.06 0Z"); path2.setAttribute("fill", "currentColor"); svgElement.appendChild(path1); svgElement.appendChild(path2); return svgElement; } renderDropdownListWithClickEvent_({ triggerElement, dataList, subTitleRole, listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem = false, }) { const dropdown = this.createDropdown_(); const itemTemplate = SPZCore.Dom.scopedQuerySelector( listElementWithTemplate, 'template' ); const clonedItemTemplate = itemTemplate.cloneNode(true); const fragment = self.document.createDocumentFragment(); dataList.forEach((data) => { const tempParentNode = self.document.createElement('div'); const clonedTemplate = self.document.importNode( clonedItemTemplate.content, true ); tempParentNode.appendChild(clonedTemplate); tempParentNode.firstElementChild.classList.add( 'market-select-item' ); this.renderMarketSelectTemplateNode_(tempParentNode, data); const selectItemElement = SPZCore.Dom.scopedQuerySelector( tempParentNode, `[role="${MARKET_SELECT_ITEM}"]` ); if (!selectItemElement) { return; } if (defaultValue === data.value) { if (shouldUpdateSelectedItem) { const clonedSelectItemElement = selectItemElement.cloneNode(true); triggerElement.replaceChild( clonedSelectItemElement, triggerElement.firstElementChild ); } selectItemElement.setAttribute(PROPERTY_SELECTED, ''); } selectItemElement.setAttribute(MARKET_SELECT_ITEM_ID, data.value); fragment.appendChild(tempParentNode.firstElementChild); }); let value = defaultValue; listElementWithTemplate.addEventListener( 'click', (e) => { if (this.isEditMode) { this.showToast_('编辑器下不支持切换国家'); SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } let targetElement = e.target; while (targetElement) { if ( !targetElement || targetElement.getAttribute(MARKET_SELECT_ITEM_ID) ) { break; } targetElement = targetElement.parentNode; } if ( !targetElement || !targetElement.hasAttribute(MARKET_SELECT_ITEM_ID) ) { return; } const selectValue = targetElement.getAttribute(MARKET_SELECT_ITEM_ID); if (value === selectValue) { SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } const selectedData = dataList.find((c) => c.value === selectValue); if (shouldUpdateSelectedItem) { const tempParentNode = self.document.createElement('div'); const clonedTemplate = self.document.importNode( clonedItemTemplate.content, true ); tempParentNode.appendChild(clonedTemplate); this.renderMarketSelectTemplateNode_(tempParentNode, selectedData); tempParentNode.firstElementChild.classList.add( 'market-select-item' ); triggerElement.replaceChild( tempParentNode.firstElementChild, triggerElement.firstElementChild ); } value = selectValue; itemHandler?.(selectedData); SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); }, false ); listElementWithTemplate.removeChild(itemTemplate); listElementWithTemplate.appendChild(fragment); listElementWithTemplate.classList.add('market-select-list'); dropdown.appendChild(listElementWithTemplate); if (subTitleRole) { this.renderSelectTitle_(dropdown, subTitleRole); } return dropdown; } createSelect_({ parent, defaultValue, dataList, listElementWithTemplate, itemHandler, titleRole, }) { const triggerElement = self.document.createElement('div'); triggerElement.classList.add('market-select'); const displayElement = self.document.createElement('div'); triggerElement.appendChild(displayElement); triggerElement.appendChild(this.createDropdownIcon_()); const dropdown = this.renderDropdownListWithClickEvent_({ triggerElement, dataList, listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem: true, }); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); const dropdownContainer = self.document.createElement('div'); dropdownContainer.appendChild(triggerElement); dropdownContainer.appendChild(dropdown); dropdownContainer.classList.add('market-select-container'); this.renderSelectTitle_(dropdownContainer, titleRole); parent.appendChild(dropdownContainer); } getListElementWithTemplate_(role) { const template = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); if (template) { const clonedTemplate = template.cloneNode(true); const tempParent = self.document.createElement("div"); tempParent.appendChild(clonedTemplate.content); const listElementWithTemplate = SPZCore.Dom.scopedQuerySelector( tempParent, `[role="${MARKET_SELECT_LIST}"]` ); return listElementWithTemplate; } return null; } renderSelectTitle_(parent, role) { if (!parent || !role) { return; } const template = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); const content = self.document.importNode(template.content, true); parent.insertBefore(content, parent.firstElementChild); parent.firstElementChild.classList.add( role.includes('sub') ? 'market-pc-header-select-sub-title' : 'market-pc-header-select-title' ); } initSelect_(rootNode, options) { const parent = rootNode || this.element; if (this.useCountrySelect_) { this.createSelect_({ parent, titleRole: options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_COUNTRY_SELECT_TITLE : undefined, defaultValue: this.getDefaultCountryValue_(), dataList: this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler: this.handleCountrySelectChange_.bind(this), }); } if (this.useLanguageSelect_) { this.createSelect_({ parent, titleRole: options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE : undefined, defaultValue: this.getDefaultLanguageValue_(), dataList: this.marketLanguages.map(this.mapLanguageRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_LANGUAGE_SELECT ), itemHandler: this.handleLanguageSelectChange_.bind(this), }); } } initPcHeaderTriggerElement() { const headerTriggerElementTemplate = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${MARKET_PC_HEADER_TRIGGER}"]` ); const headerTriggerElement = self.document.importNode( headerTriggerElementTemplate.content, true ); const parentDivElement = self.document.createElement('div'); parentDivElement.setAttribute('role', MARKET_PC_HEADER_TRIGGER); parentDivElement.appendChild(headerTriggerElement); this.element.removeChild(headerTriggerElementTemplate); return parentDivElement; } initPanelWithSelect_() { const triggerElement = this.initPcHeaderTriggerElement(); const dropdown = this.createDropdown_(); const panelElement = self.document.createElement('div'); panelElement.classList.add('market-panel'); this.initSelect_(panelElement, {shouldRenderSelectTitle: true}); dropdown.appendChild(panelElement); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); this.element.appendChild(triggerElement); this.element.insertBefore(dropdown, triggerElement); } initSingleSelectDropdown_() { const triggerElement = this.initPcHeaderTriggerElement(); let dropdown; if (this.useCountrySelect_) { dropdown = this.renderDropdownListWithClickEvent_({ triggerElement, subTitleRole: MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE, dataList: this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), defaultValue: this.getDefaultCountryValue_(), itemHandler: this.handleCountrySelectChange_.bind(this), }); } else if (this.useLanguageSelect_) { dropdown = this.renderDropdownListWithClickEvent_({ triggerElement, subTitleRole: MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE, dataList: this.marketLanguages.map(this.mapLanguageRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_LANGUAGE_SELECT ), defaultValue: this.getDefaultLanguageValue_(), itemHandler: this.handleLanguageSelectChange_.bind(this), }); } if (dropdown) { this.bindDropdownOpenClickEvent_(triggerElement, dropdown); this.element.appendChild(triggerElement); this.element.appendChild(dropdown); } } initEntry_() { if (this.blockSectionPosition_ === SECTION_TYPE_HEADER) { if (this.isSingleSelectMode_) { this.initSingleSelectDropdown_(); } else if (this.useCountrySelect_ && this.useLanguageSelect_) { this.initPanelWithSelect_(); } } this.initSelect_(this.element); } async initData_() { const promises = []; if (this.useCountrySelect_ || this.useModal_) { promises.push(this.getCountryList_(), this.getIpMatchingMarket_()); } if (this.useLanguageSelect_) { promises.push(this.getMarketLanguages_(this.global.market.market_id)); } return Promise.all(promises).then((results) => { const ipMatchingMarket = results.find((result) => result.hasOwnProperty('matching_station') ); const marketCountryList = results.find((result) => result.hasOwnProperty('data') ); if (ipMatchingMarket && marketCountryList) { this.ipMatchingMarket = ipMatchingMarket?.matching_station?.find?.( (item) => item.type === 'multiple_market' ) || { img: marketCountryList.length ? marketCountryList?.[0]?.detail && marketCountryList[0].detail?.flag : '', }; } }); } initModal_() { if ( this.isEditMode || !this.ipMatchingMarket?.market_id || !this.useModal_ || this.hasCookie_(COOKIE_TIPS_NAME) || this.win[MARKET_MODAL_LOADED] ) { return; } this.win[MARKET_MODAL_LOADED] = true; const redirectParam = new URLSearchParams(this.win.location.search).get( URL_REDIRECT ); if (redirectParam) { this.initModalEntry_(MARKET_GATEWAY_REDIRECT_MODAL); } else if ( this.ipMatchingMarket.market_id !== this.global?.market?.market_id ) { this.initModalEntry_(MARKET_MODAL); } } async init_() { await this.initSettings_(); await this.initData_(); this.initEntry_(); this.initModal_(); } getDefaultCountryValue_() { return this.getCookie_(MARKET_COUNTRY_COOKIE) || this.marketCountryList[0]?.country_code; } mapCountryRenderData_(country) { return { flag: country?.detail?.flag || '', value: country?.country_code, currency: country?.currency, currencySymbol: country?.symbol?.val || '', url: country?.url, }; } handleCountrySelectChange_(selectedData) { this.setCookie_(MARKET_COUNTRY_COOKIE, selectedData.value); this.handleChangeURL_(selectedData.url); } getDefaultLanguageValue_() { return this.marketLanguages?.find?.( (lang) => lang.code === this.global?.market?.market_lang )?.name; } mapLanguageRenderData_(language) { return { value: language.name, url: language.url, }; } handleLanguageSelectChange_(selectedData) { this.handleChangeURL_(selectedData.url); } renderTemplateElement_(parent, role, value) { const elements = SPZCore.Dom.scopedQuerySelectorAll( parent, `[role="${role}"]` ); elements.forEach((element) => { if (element && value) { element.innerHTML = value; } }); } renderTemplateImg_(parent, role, options) { const flagElement = SPZCore.Dom.scopedQuerySelector( parent, `[role="${role}"]` ); if (flagElement && options?.src && options?.height && options?.width) { const spzImg = self.document.createElement('ljs-img'); spzImg.setAttribute('src', options.src); spzImg.setAttribute('layout', 'responsive'); spzImg.setAttribute('width', options.width); spzImg.setAttribute('height', options.height); spzImg.setAttribute( 'style', `width: ${options.width}px; height: ${options.height}px;` ); flagElement.appendChild(spzImg); } } handleChangeURL_(url) { if (!!url) { let {origin, pathname, search} = this.win.location; pathname = pathname.replace(SITE, url != '/' ? url : ''); this.win.location.href = `${origin}${pathname}${search}`; } else { this.win.location.reload(true); } } initModalEntry_(role) { const marketModalTemplate = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); if (marketModalTemplate) { const tempParentNode = self.document.createElement('div'); const clonedTemplate = self.document.importNode( marketModalTemplate.content, true ); tempParentNode.appendChild(clonedTemplate); this.renderTemplateImg_(tempParentNode, MARKET_MODAL_FLAG, { src: this.ipMatchingMarket?.img, width: '80', height: '80', }); this.renderTemplateElement_( tempParentNode, MARKET_MODAL_COUNTRY_CODE, this.ipMatchingMarket?.name ); this.renderTemplateElement_( tempParentNode, MARKET_MODAL_CURRENCY_SYMBOL, this.ipMatchingMarket?.currency_with_symbol ); const lightbox = self.document.createElement('ljs-lightbox'); lightbox.setAttribute('layout', 'nodisplay'); lightbox.appendChild(tempParentNode.firstElementChild); self.document.body.appendChild(lightbox); SPZ.whenApiDefined(lightbox).then((apis) => { SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]` ).forEach((ele) => { ele.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); }); const marketModalConfirmElement = SPZCore.Dom.scopedQuerySelector( lightbox, `[role="${MARKET_MODAL_CONFIRM}"]` ); if (marketModalConfirmElement && this.ipMatchingMarket?.url) { marketModalConfirmElement.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); this.setCookie_(MARKET_COUNTRY_COOKIE, this.ipMatchingMarket?.name); this.handleChangeURL_(this.ipMatchingMarket?.url); }); } const marketModalReselectElement = SPZCore.Dom.scopedQuerySelector( lightbox, `[role="${MARKET_MODAL_RESELECT}"]` ); if (marketModalReselectElement) { marketModalReselectElement.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); const marketReselectTemplate = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${MARKET_RESELECT_MODAL}"]` ); if (marketReselectTemplate && lightbox.firstElementChild) { const clonedTemplate = self.document.importNode( marketReselectTemplate.content, true ); const selectParent = SPZCore.Dom.scopedQuerySelector( clonedTemplate, `[role="${MARKET_MODAL_RESELECT_COUNTRY_SELECT}"]` ); if (selectParent) { this.createSelect_({ parent: selectParent, defaultValue: this.getDefaultCountryValue_(), dataList: this.marketCountryList.map( this.mapCountryRenderData_ ), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler: this.handleCountrySelectChange_.bind(this), }); } lightbox.replaceChild(clonedTemplate, lightbox.firstElementChild); SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]` ).forEach((ele) => { ele.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); }); } }); } apis.open(); }); } } async getMarketThemeSettings_() { return this.xhr_.fetchJson(MARKET_THEME_SETTINGS).then((res) => { this.useCountrySelect_ = !!res.country_selector_enabled; this.useLanguageSelect_ = !!res.language_selector_enabled && this.global?.market?.market_id; this.useModal_ = !!res.redirect_pop_enabled; return res; }); } async getCountryList_() { return this.xhr_.fetchJson(MARKET_COUNTRIES).then((res) => { this.marketCountryList = res.data.length ? res.data : []; return res; }); } async getIpMatchingMarket_() { return this.xhr_.fetchJson(IP_MATCHING_MARKET, { method: 'POST', body: { stations: [], }, }); } async getMarketLanguages_(marketId) { return this.xhr_ .fetchJson(MARKET_LANGUAGES.replace(/:id/gim, marketId)) .then((res) => { this.marketLanguages = res?.languages?.length ? res.languages : []; return res; }); } hasCookie_(name) { const m = self.document.cookie .split(';') .filter((pair) => pair.trim().startsWith(name + '=')); return !!(m && m[0]); } getCookie_(name) { const m = self.document.cookie .split(';') .filter((pair) => pair.trim().startsWith(name + '=')); return m && m[0] ? m[0].split('=')[1] : null; } setCookie_(name, value, expires) { const expiresDate = new Date(Date.now() + expires).toGMTString(); self.document.cookie = `${name}=${encodeURIComponent( value )};expires=${expiresDate};path=/`; } } SPZ.defineElement('spz-custom-market', SpzCustomMarket);
Region/Country
Region/Country
(
)
Language
Language
Switch to
based on your location
Purchase with
Get shipping options for
Set to
based on your location
Purchase with
Get shipping options for
Modify Country/Region
Region/Country
US
(
USD
$
)
AD
(
EUR
€
)
AE
(
AED
د.إ
)
AF
(
AFN
؋
)
AG
(
XCD
$
)
AI
(
XCD
$
)
AL
(
ALL
Lek
)
AM
(
AMD
֏
)
AN
(
USD
$
)
AR
(
ARS
ARS$
)
AT
(
EUR
€
)
AU
(
AUD
A$
)
AW
(
AWG
ƒ
)
AX
(
EUR
€
)
AZ
(
AZN
ман
)
BA
(
BAM
KM
)
BB
(
BBD
BDS.$
)
BD
(
BDT
৳
)
BE
(
EUR
€
)
BG
(
BGN
лв
)
BH
(
BHD
د.ب
)
BM
(
BMD
$
)
BN
(
BND
$
)
BO
(
BOB
$b
)
BQ
(
USD
$
)
BR
(
BRL
R$
)
BS
(
BSD
B.$
)
BT
(
BTN
Nu.
)
BY
(
USD
$
)
BZ
(
BZD
BZ$
)
CA
(
CAD
CA$
)
CC
(
AUD
A$
)
CH
(
CHF
CHF
)
CK
(
NZD
NZ$
)
CL
(
CLP
CLP
)
CN
(
CNY
¥
)
CO
(
COP
COP$
)
CR
(
CRC
₡
)
CU
(
CUP
$
)
CW
(
ANG
ƒ
)
CX
(
AUD
A$
)
CY
(
EUR
€
)
CZ
(
CZK
Kč
)
DE
(
EUR
€
)
DK
(
DKK
kr
)
DM
(
XCD
$
)
DO
(
DOP
RD$
)
EC
(
USD
$
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FJ
(
FJD
$
)
FM
(
USD
$
)
FO
(
DKK
kr
)
FR
(
EUR
€
)
GB
(
GBP
£
)
GD
(
XCD
$
)
GE
(
GBP
£
)
GF
(
EUR
€
)
GG
(
GBP
£
)
GI
(
GBP
£
)
GL
(
DKK
kr
)
GP
(
EUR
€
)
GR
(
EUR
€
)
GT
(
GTQ
Q
)
GU
(
USD
$
)
GY
(
GYD
$
)
HK
(
HKD
HK$
)
HM
(
AUD
A$
)
HN
(
HNL
L
)
HR
(
EUR
€
)
HT
(
HTG
G
)
HU
(
HUF
Ft
)
ID
(
IDR
Rp
)
IE
(
EUR
€
)
IL
(
ILS
₪
)
IM
(
GBP
£
)
IN
(
INR
₨
)
IO
(
USD
$
)
IQ
(
USD
$
)
IR
(
USD
$
)
IS
(
ISK
kr
)
IT
(
EUR
€
)
JE
(
GBP
£
)
JM
(
JMD
J$
)
JO
(
USD
$
)
JP
(
JPY
¥
)
KG
(
KGS
сом
)
KH
(
THB
฿
)
KI
(
AUD
A$
)
KN
(
XCD
$
)
KP
(
KPW
₩
)
KR
(
KRW
₩
)
KW
(
KWD
د.ك
)
KY
(
KYD
$
)
KZ
(
KZT
₸
)
LA
(
LAK
₭
)
LB
(
LBP
ل.ل
)
LC
(
XCD
$
)
LI
(
CHF
CHF
)
LK
(
LKR
₨
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
MD
(
MDL
L
)
ME
(
EUR
€
)
MF
(
USD
$
)
MH
(
USD
$
)
MK
(
MKD
ден
)
MM
(
MMK
K
)
MN
(
MNT
₮
)
MO
(
MOP
P
)
MP
(
USD
$
)
MQ
(
EUR
€
)
MS
(
XCD
$
)
MT
(
EUR
€
)
MV
(
MVR
ރ.
)
MX
(
MXN
MXN$
)
MY
(
MYR
RM
)
NC
(
XPF
Fr
)
NF
(
AUD
A$
)
NI
(
NIO
C$
)
NL
(
EUR
€
)
NO
(
NOK
kr
)
NP
(
NPR
₨
)
NR
(
AUD
A$
)
NU
(
NZD
NZ$
)
NZ
(
NZD
NZ$
)
OM
(
OMR
﷼
)
PA
(
USD
$
)
PE
(
PEN
S/.
)
PF
(
XPF
Fr
)
PG
(
PGK
K
)
PH
(
PHP
₱
)
PK
(
PKR
₨
)
PL
(
PLN
zł
)
PM
(
EUR
€
)
PN
(
NZD
NZ$
)
PR
(
USD
$
)
PS
(
ILS
₪
)
PT
(
EUR
€
)
PW
(
USD
$
)
PY
(
PYG
₲
)
QA
(
QAR
﷼
)
RO
(
RON
lei
)
RS
(
RSD
Дин.
)
RU
(
RUB
руб
)
SA
(
SAR
﷼
)
SB
(
SBD
$
)
SE
(
SEK
kr
)
SG
(
SGD
S$
)
SI
(
EUR
€
)
SJ
(
NOK
kr
)
SK
(
EUR
€
)
SM
(
EUR
€
)
SR
(
SRD
$
)
SV
(
USD
$
)
SX
(
ANG
ƒ
)
SY
(
SYP
£
)
TC
(
USD
$
)
TH
(
THB
฿
)
TJ
(
TJS
SM
)
TK
(
NZD
NZ$
)
TL
(
USD
$
)
TM
(
TMT
m
)
TO
(
TOP
T$
)
TR
(
TRY
₺
)
TT
(
TTD
TT$
)
TV
(
AUD
A$
)
TW
(
TWD
NT$
)
UA
(
UAH
₴
)
UM
(
USD
$
)
UY
(
UYU
$U
)
UZ
(
UZS
so'm
)
VA
(
EUR
€
)
VC
(
XCD
$
)
VE
(
USD
$
)
VG
(
USD
$
)
VI
(
USD
$
)
VN
(
VND
₫
)
VU
(
VUV
Vt
)
WF
(
XPF
Fr
)
WS
(
WST
T
)
XK
(
EUR
€
)
YE
(
YER
﷼
)
US
(
USD
$
)
US
(
USD
$
)
AD
(
EUR
€
)
AE
(
AED
د.إ
)
AF
(
AFN
؋
)
AG
(
XCD
$
)
AI
(
XCD
$
)
AL
(
ALL
Lek
)
AM
(
AMD
֏
)
AN
(
USD
$
)
AR
(
ARS
ARS$
)
AT
(
EUR
€
)
AU
(
AUD
A$
)
AW
(
AWG
ƒ
)
AX
(
EUR
€
)
AZ
(
AZN
ман
)
BA
(
BAM
KM
)
BB
(
BBD
BDS.$
)
BD
(
BDT
৳
)
BE
(
EUR
€
)
BG
(
BGN
лв
)
BH
(
BHD
د.ب
)
BM
(
BMD
$
)
BN
(
BND
$
)
BO
(
BOB
$b
)
BQ
(
USD
$
)
BR
(
BRL
R$
)
BS
(
BSD
B.$
)
BT
(
BTN
Nu.
)
BY
(
USD
$
)
BZ
(
BZD
BZ$
)
CA
(
CAD
CA$
)
CC
(
AUD
A$
)
CH
(
CHF
CHF
)
CK
(
NZD
NZ$
)
CL
(
CLP
CLP
)
CN
(
CNY
¥
)
CO
(
COP
COP$
)
CR
(
CRC
₡
)
CU
(
CUP
$
)
CW
(
ANG
ƒ
)
CX
(
AUD
A$
)
CY
(
EUR
€
)
CZ
(
CZK
Kč
)
DE
(
EUR
€
)
DK
(
DKK
kr
)
DM
(
XCD
$
)
DO
(
DOP
RD$
)
EC
(
USD
$
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FJ
(
FJD
$
)
FM
(
USD
$
)
FO
(
DKK
kr
)
FR
(
EUR
€
)
GB
(
GBP
£
)
GD
(
XCD
$
)
GE
(
GBP
£
)
GF
(
EUR
€
)
GG
(
GBP
£
)
GI
(
GBP
£
)
GL
(
DKK
kr
)
GP
(
EUR
€
)
GR
(
EUR
€
)
GT
(
GTQ
Q
)
GU
(
USD
$
)
GY
(
GYD
$
)
HK
(
HKD
HK$
)
HM
(
AUD
A$
)
HN
(
HNL
L
)
HR
(
EUR
€
)
HT
(
HTG
G
)
HU
(
HUF
Ft
)
ID
(
IDR
Rp
)
IE
(
EUR
€
)
IL
(
ILS
₪
)
IM
(
GBP
£
)
IN
(
INR
₨
)
IO
(
USD
$
)
IQ
(
USD
$
)
IR
(
USD
$
)
IS
(
ISK
kr
)
IT
(
EUR
€
)
JE
(
GBP
£
)
JM
(
JMD
J$
)
JO
(
USD
$
)
JP
(
JPY
¥
)
KG
(
KGS
сом
)
KH
(
THB
฿
)
KI
(
AUD
A$
)
KN
(
XCD
$
)
KP
(
KPW
₩
)
KR
(
KRW
₩
)
KW
(
KWD
د.ك
)
KY
(
KYD
$
)
KZ
(
KZT
₸
)
LA
(
LAK
₭
)
LB
(
LBP
ل.ل
)
LC
(
XCD
$
)
LI
(
CHF
CHF
)
LK
(
LKR
₨
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
MD
(
MDL
L
)
ME
(
EUR
€
)
MF
(
USD
$
)
MH
(
USD
$
)
MK
(
MKD
ден
)
MM
(
MMK
K
)
MN
(
MNT
₮
)
MO
(
MOP
P
)
MP
(
USD
$
)
MQ
(
EUR
€
)
MS
(
XCD
$
)
MT
(
EUR
€
)
MV
(
MVR
ރ.
)
MX
(
MXN
MXN$
)
MY
(
MYR
RM
)
NC
(
XPF
Fr
)
NF
(
AUD
A$
)
NI
(
NIO
C$
)
NL
(
EUR
€
)
NO
(
NOK
kr
)
NP
(
NPR
₨
)
NR
(
AUD
A$
)
NU
(
NZD
NZ$
)
NZ
(
NZD
NZ$
)
OM
(
OMR
﷼
)
PA
(
USD
$
)
PE
(
PEN
S/.
)
PF
(
XPF
Fr
)
PG
(
PGK
K
)
PH
(
PHP
₱
)
PK
(
PKR
₨
)
PL
(
PLN
zł
)
PM
(
EUR
€
)
PN
(
NZD
NZ$
)
PR
(
USD
$
)
PS
(
ILS
₪
)
PT
(
EUR
€
)
PW
(
USD
$
)
PY
(
PYG
₲
)
QA
(
QAR
﷼
)
RO
(
RON
lei
)
RS
(
RSD
Дин.
)
RU
(
RUB
руб
)
SA
(
SAR
﷼
)
SB
(
SBD
$
)
SE
(
SEK
kr
)
SG
(
SGD
S$
)
SI
(
EUR
€
)
SJ
(
NOK
kr
)
SK
(
EUR
€
)
SM
(
EUR
€
)
SR
(
SRD
$
)
SV
(
USD
$
)
SX
(
ANG
ƒ
)
SY
(
SYP
£
)
TC
(
USD
$
)
TH
(
THB
฿
)
TJ
(
TJS
SM
)
TK
(
NZD
NZ$
)
TL
(
USD
$
)
TM
(
TMT
m
)
TO
(
TOP
T$
)
TR
(
TRY
₺
)
TT
(
TTD
TT$
)
TV
(
AUD
A$
)
TW
(
TWD
NT$
)
UA
(
UAH
₴
)
UM
(
USD
$
)
UY
(
UYU
$U
)
UZ
(
UZS
so'm
)
VA
(
EUR
€
)
VC
(
XCD
$
)
VE
(
USD
$
)
VG
(
USD
$
)
VI
(
USD
$
)
VN
(
VND
₫
)
VU
(
VUV
Vt
)
WF
(
XPF
Fr
)
WS
(
WST
T
)
XK
(
EUR
€
)
YE
(
YER
﷼
)
Log in
Create an account
${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)}
0
lunathreads
${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)}
Search
Home
New Arrivals
Trousers
Trousers
Casual Pants
Shorts
Jeans
Nail Art
Bras
Bras
Everyday Bras
Wireless Bras
Push-up Bras
Lace Bras
Sports Bras
Bralettes
Maternity & Nursing Bras
Panties
Panties
Seamless Panties
High-waist Panties
Lace Panties
Cotton Panties
Thongs
Comfort Fit Panties
Shapewear
Shapewear
Bodysuits
Waist Cinchers & Belts
Shaping Shorts & Leggings
Sleepwear & Loungewear
Sleepwear & Loungewear
Silk Pajamas
Cotton Pajamas
Robes
Loungewear Sets
Sexy Nightwear
Sports Bra & Panty Sets
Sports Bra & Panty Sets
Yoga Wear
High-impact Sports Bras
Accessories
Accessories
Bra Inserts
Nipple Covers & Stickers
Bra Extenders
Laundry Bags for Lingerie
const marketSlot = document.querySelector(".plugin_c_market"); if(marketSlot) { marketSlot.remove(); }
const SITE = (window.C_SETTINGS || window[atob('U0hPUExBWlpB')])?.routes?.root || ''; const MARKET_THEME_SETTINGS = `${SITE}/api/markets/theme_setting`; const MARKET_COUNTRIES = `${SITE}/api/markets/countries`; const IP_MATCHING_MARKET = `${SITE}/api/front/station`; const MARKET_LANGUAGES = `${SITE}/api/markets/:id/active_languages`; const URL_REDIRECT = '_market_redirected'; const COOKIE_TIPS_NAME = 'market_no_tips'; const COOKIE_TIPS_EXPIRES = 1000 * 60 * 60 * 24 * 14; const MARKET_COUNTRY_COOKIE = '_shoplazza_market_country'; const MARKET_MODAL_LOADED = '__market_modal_loaded__'; const PROPERTY_SELECTED = 'selected'; const MARKET_PC_HEADER_TRIGGER = 'market-pc-header-trigger'; const MARKET_PC_HEADER_COUNTRY_SELECT_TITLE = 'market-pc-header-country-select-title'; const MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE = 'market-pc-header-language-select-title'; const MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE = 'market-pc-header-language-select-sub-title'; const MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE = 'market-pc-header-country-select-sub-title'; const MARKET_FLAG = 'market-flag'; const MARKET_SELECT_VALUE = 'market-select-value'; const MARKET_CURRENCY = 'market-currency'; const MARKET_CURRENCY_SYMBOL = 'market-currency-symbol'; const MARKET_SELECT_ITEM = 'market-select-item'; const MARKET_SELECT_ITEM_ID = 'market-select-item-id'; const MARKET_SELECT_LIST = 'market-select-list'; const MARKET_LANGUAGE_SELECT = 'market-language-select'; const MARKET_COUNTRY_SELECT = 'market-country-select'; const MARKET_MODAL = 'market-modal'; const MARKET_GATEWAY_REDIRECT_MODAL = 'market-gateway-redirect-modal'; const MARKET_RESELECT_MODAL = 'market-reselect-modal'; const MARKET_MODAL_FLAG = 'market-modal-flag'; const MARKET_MODAL_COUNTRY_CODE = 'market-modal-country-code'; const MARKET_MODAL_CURRENCY_SYMBOL = 'market-modal-currency-symbol'; const MARKET_MODAL_CLOSE = 'market-modal-close'; const MARKET_MODAL_CONFIRM = 'market-modal-confirm'; const MARKET_MODAL_RESELECT = 'market-modal-reselect'; const MARKET_MODAL_RESELECT_COUNTRY_SELECT = 'market-modal-reselect-country-select'; const DATA_SECTION_TYPE = 'data-section-type'; const SECTION_TYPE_HEADER = 'header'; const SECTION_TYPE_FOOTER = 'footer'; class SpzCustomMarket extends SPZ.BaseElement { constructor(element) { super(element); this.global = null; this.useCountrySelect_ = false; this.useLanguageSelect_ = false; this.useModal_ = false; this.isSingleSelectMode_ = false; this.blockSectionPosition_ = ''; this.isEditMode = false; this.ipMatchingMarket = null; this.marketCountryList = []; this.marketLanguages = []; this.toast = null; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { console.debug('Geolocation'); this.xhr_ = SPZServices.xhrFor(this.win); const platform = SPZServices.platformFor(this.win); this.isIOS_ = platform.isIos(); this.action_ = SPZServices.actionServiceForDoc(this.element); this.global = this.win.C_SETTINGS || this.win[atob('U0hPUExBWlpB')]; this.isEditMode = new URLSearchParams(this.win.location.search).get('preview_theme_id') && new URLSearchParams(this.win.location.search).get('oseid'); this.init_(); } showToast_(content) { if (!this.toast) { this.toast = self.document.createElement('ljs-toast'); this.toast.setAttribute('layout', 'nodisplay'); this.toast.setAttribute('hidden', ''); this.toast.setAttribute('duration', '2000'); this.element.appendChild(this.toast); } SPZ.whenApiDefined(this.toast).then((apis) => { apis.showToast(content); }); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${TAG}.${name}`, data); this.action_.trigger(this.element, name, event); } findBlockSectionPosition() { let current = this.element; while (current) { const dataSectionType = current.getAttribute(DATA_SECTION_TYPE); if ( dataSectionType === SECTION_TYPE_HEADER || dataSectionType === SECTION_TYPE_FOOTER ) { return dataSectionType; } current = current.parentElement; } return ''; } async initSettings_() { await this.getMarketThemeSettings_(); if (this.useCountrySelect_) { this.element.setAttribute('use-country-select', true); } if (this.useLanguageSelect_) { this.element.setAttribute('use-language-select', true); } if (this.useModal_) { this.element.setAttribute('use-modal', true); } if ( (this.useCountrySelect_ && !this.useLanguageSelect_) || (!this.useCountrySelect_ && this.useLanguageSelect_) ) { this.isSingleSelectMode_ = true; } this.blockSectionPosition_ = this.findBlockSectionPosition(); this.isPCLayout_ = this.win.matchMedia('(min-width: 960px)').matches; } renderMarketSelectTemplateNode_(clonedTemplate, data) { this.renderTemplateImg_(clonedTemplate, MARKET_FLAG, { src: data?.flag, width: '24', height: '24', }); this.renderTemplateElement_( clonedTemplate, MARKET_SELECT_VALUE, data.value ); this.renderTemplateElement_( clonedTemplate, MARKET_CURRENCY, data?.currency ); this.renderTemplateElement_( clonedTemplate, MARKET_CURRENCY_SYMBOL, data?.currencySymbol ); } bindDropdownOpenClickEvent_(triggerElement, dropdown) { if (!triggerElement) return; const triggerOpen = () => { SPZ.whenApiDefined(dropdown).then((apis) => { if (!dropdown.hasAttribute('open')) { apis.open(triggerElement); } }); }; if (this.isIOS_) { triggerElement.addEventListener('touchstart', triggerOpen); } else { triggerElement.addEventListener('click', triggerOpen); } } createDropdown_() { const dropdown = self.document.createElement('ljs-dropdown'); dropdown.setAttribute('layout', 'nodisplay'); if (this.blockSectionPosition_ === 'header') { dropdown.setAttribute('overlay-style', 'top: 4px;'); dropdown.setAttribute('placement', 'bottomRight'); } else if (this.blockSectionPosition_ === 'footer') { dropdown.setAttribute('overlay-style', 'top: -4px;'); dropdown.setAttribute('placement', 'top'); } return dropdown; } createDropdownIcon_() { const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svgElement.setAttribute("class", "market-rotate-180"); svgElement.setAttribute("width", "16"); svgElement.setAttribute("height", "16"); const path1 = document.createElementNS("http://www.w3.org/2000/svg", "path"); path1.setAttribute("d", "M7.47 5.172a.75.75 0 0 1 1.06 0l4.596 4.596a.75.75 0 1 1-1.06 1.06L7.468 6.232a.75.75 0 0 1 0-1.06Z"); path1.setAttribute("fill", "currentColor"); const path2 = document.createElementNS("http://www.w3.org/2000/svg", "path"); path2.setAttribute("d", "M8.533 5.172a.75.75 0 0 1 0 1.06l-4.596 4.596a.75.75 0 1 1-1.061-1.06l4.596-4.596a.75.75 0 0 1 1.06 0Z"); path2.setAttribute("fill", "currentColor"); svgElement.appendChild(path1); svgElement.appendChild(path2); return svgElement; } renderDropdownListWithClickEvent_({ triggerElement, dataList, subTitleRole, listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem = false, }) { const dropdown = this.createDropdown_(); const itemTemplate = SPZCore.Dom.scopedQuerySelector( listElementWithTemplate, 'template' ); const clonedItemTemplate = itemTemplate.cloneNode(true); const fragment = self.document.createDocumentFragment(); dataList.forEach((data) => { const tempParentNode = self.document.createElement('div'); const clonedTemplate = self.document.importNode( clonedItemTemplate.content, true ); tempParentNode.appendChild(clonedTemplate); tempParentNode.firstElementChild.classList.add( 'market-select-item' ); this.renderMarketSelectTemplateNode_(tempParentNode, data); const selectItemElement = SPZCore.Dom.scopedQuerySelector( tempParentNode, `[role="${MARKET_SELECT_ITEM}"]` ); if (!selectItemElement) { return; } if (defaultValue === data.value) { if (shouldUpdateSelectedItem) { const clonedSelectItemElement = selectItemElement.cloneNode(true); triggerElement.replaceChild( clonedSelectItemElement, triggerElement.firstElementChild ); } selectItemElement.setAttribute(PROPERTY_SELECTED, ''); } selectItemElement.setAttribute(MARKET_SELECT_ITEM_ID, data.value); fragment.appendChild(tempParentNode.firstElementChild); }); let value = defaultValue; listElementWithTemplate.addEventListener( 'click', (e) => { if (this.isEditMode) { this.showToast_('编辑器下不支持切换国家'); SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } let targetElement = e.target; while (targetElement) { if ( !targetElement || targetElement.getAttribute(MARKET_SELECT_ITEM_ID) ) { break; } targetElement = targetElement.parentNode; } if ( !targetElement || !targetElement.hasAttribute(MARKET_SELECT_ITEM_ID) ) { return; } const selectValue = targetElement.getAttribute(MARKET_SELECT_ITEM_ID); if (value === selectValue) { SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } const selectedData = dataList.find((c) => c.value === selectValue); if (shouldUpdateSelectedItem) { const tempParentNode = self.document.createElement('div'); const clonedTemplate = self.document.importNode( clonedItemTemplate.content, true ); tempParentNode.appendChild(clonedTemplate); this.renderMarketSelectTemplateNode_(tempParentNode, selectedData); tempParentNode.firstElementChild.classList.add( 'market-select-item' ); triggerElement.replaceChild( tempParentNode.firstElementChild, triggerElement.firstElementChild ); } value = selectValue; itemHandler?.(selectedData); SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); }, false ); listElementWithTemplate.removeChild(itemTemplate); listElementWithTemplate.appendChild(fragment); listElementWithTemplate.classList.add('market-select-list'); dropdown.appendChild(listElementWithTemplate); if (subTitleRole) { this.renderSelectTitle_(dropdown, subTitleRole); } return dropdown; } createSelect_({ parent, defaultValue, dataList, listElementWithTemplate, itemHandler, titleRole, }) { const triggerElement = self.document.createElement('div'); triggerElement.classList.add('market-select'); const displayElement = self.document.createElement('div'); triggerElement.appendChild(displayElement); triggerElement.appendChild(this.createDropdownIcon_()); const dropdown = this.renderDropdownListWithClickEvent_({ triggerElement, dataList, listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem: true, }); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); const dropdownContainer = self.document.createElement('div'); dropdownContainer.appendChild(triggerElement); dropdownContainer.appendChild(dropdown); dropdownContainer.classList.add('market-select-container'); this.renderSelectTitle_(dropdownContainer, titleRole); parent.appendChild(dropdownContainer); } getListElementWithTemplate_(role) { const template = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); if (template) { const clonedTemplate = template.cloneNode(true); const tempParent = self.document.createElement("div"); tempParent.appendChild(clonedTemplate.content); const listElementWithTemplate = SPZCore.Dom.scopedQuerySelector( tempParent, `[role="${MARKET_SELECT_LIST}"]` ); return listElementWithTemplate; } return null; } renderSelectTitle_(parent, role) { if (!parent || !role) { return; } const template = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); const content = self.document.importNode(template.content, true); parent.insertBefore(content, parent.firstElementChild); parent.firstElementChild.classList.add( role.includes('sub') ? 'market-pc-header-select-sub-title' : 'market-pc-header-select-title' ); } initSelect_(rootNode, options) { const parent = rootNode || this.element; if (this.useCountrySelect_) { this.createSelect_({ parent, titleRole: options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_COUNTRY_SELECT_TITLE : undefined, defaultValue: this.getDefaultCountryValue_(), dataList: this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler: this.handleCountrySelectChange_.bind(this), }); } if (this.useLanguageSelect_) { this.createSelect_({ parent, titleRole: options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE : undefined, defaultValue: this.getDefaultLanguageValue_(), dataList: this.marketLanguages.map(this.mapLanguageRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_LANGUAGE_SELECT ), itemHandler: this.handleLanguageSelectChange_.bind(this), }); } } initPcHeaderTriggerElement() { const headerTriggerElementTemplate = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${MARKET_PC_HEADER_TRIGGER}"]` ); const headerTriggerElement = self.document.importNode( headerTriggerElementTemplate.content, true ); const parentDivElement = self.document.createElement('div'); parentDivElement.setAttribute('role', MARKET_PC_HEADER_TRIGGER); parentDivElement.appendChild(headerTriggerElement); this.element.removeChild(headerTriggerElementTemplate); return parentDivElement; } initPanelWithSelect_() { const triggerElement = this.initPcHeaderTriggerElement(); const dropdown = this.createDropdown_(); const panelElement = self.document.createElement('div'); panelElement.classList.add('market-panel'); this.initSelect_(panelElement, {shouldRenderSelectTitle: true}); dropdown.appendChild(panelElement); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); this.element.appendChild(triggerElement); this.element.insertBefore(dropdown, triggerElement); } initSingleSelectDropdown_() { const triggerElement = this.initPcHeaderTriggerElement(); let dropdown; if (this.useCountrySelect_) { dropdown = this.renderDropdownListWithClickEvent_({ triggerElement, subTitleRole: MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE, dataList: this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), defaultValue: this.getDefaultCountryValue_(), itemHandler: this.handleCountrySelectChange_.bind(this), }); } else if (this.useLanguageSelect_) { dropdown = this.renderDropdownListWithClickEvent_({ triggerElement, subTitleRole: MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE, dataList: this.marketLanguages.map(this.mapLanguageRenderData_), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_LANGUAGE_SELECT ), defaultValue: this.getDefaultLanguageValue_(), itemHandler: this.handleLanguageSelectChange_.bind(this), }); } if (dropdown) { this.bindDropdownOpenClickEvent_(triggerElement, dropdown); this.element.appendChild(triggerElement); this.element.appendChild(dropdown); } } initEntry_() { if (this.blockSectionPosition_ === SECTION_TYPE_HEADER) { if (this.isSingleSelectMode_) { this.initSingleSelectDropdown_(); } else if (this.useCountrySelect_ && this.useLanguageSelect_) { this.initPanelWithSelect_(); } } this.initSelect_(this.element); } async initData_() { const promises = []; if (this.useCountrySelect_ || this.useModal_) { promises.push(this.getCountryList_(), this.getIpMatchingMarket_()); } if (this.useLanguageSelect_) { promises.push(this.getMarketLanguages_(this.global.market.market_id)); } return Promise.all(promises).then((results) => { const ipMatchingMarket = results.find((result) => result.hasOwnProperty('matching_station') ); const marketCountryList = results.find((result) => result.hasOwnProperty('data') ); if (ipMatchingMarket && marketCountryList) { this.ipMatchingMarket = ipMatchingMarket?.matching_station?.find?.( (item) => item.type === 'multiple_market' ) || { img: marketCountryList.length ? marketCountryList?.[0]?.detail && marketCountryList[0].detail?.flag : '', }; } }); } initModal_() { if ( this.isEditMode || !this.ipMatchingMarket?.market_id || !this.useModal_ || this.hasCookie_(COOKIE_TIPS_NAME) || this.win[MARKET_MODAL_LOADED] ) { return; } this.win[MARKET_MODAL_LOADED] = true; const redirectParam = new URLSearchParams(this.win.location.search).get( URL_REDIRECT ); if (redirectParam) { this.initModalEntry_(MARKET_GATEWAY_REDIRECT_MODAL); } else if ( this.ipMatchingMarket.market_id !== this.global?.market?.market_id ) { this.initModalEntry_(MARKET_MODAL); } } async init_() { await this.initSettings_(); await this.initData_(); this.initEntry_(); this.initModal_(); } getDefaultCountryValue_() { return this.getCookie_(MARKET_COUNTRY_COOKIE) || this.marketCountryList[0]?.country_code; } mapCountryRenderData_(country) { return { flag: country?.detail?.flag || '', value: country?.country_code, currency: country?.currency, currencySymbol: country?.symbol?.val || '', url: country?.url, }; } handleCountrySelectChange_(selectedData) { this.setCookie_(MARKET_COUNTRY_COOKIE, selectedData.value); this.handleChangeURL_(selectedData.url); } getDefaultLanguageValue_() { return this.marketLanguages?.find?.( (lang) => lang.code === this.global?.market?.market_lang )?.name; } mapLanguageRenderData_(language) { return { value: language.name, url: language.url, }; } handleLanguageSelectChange_(selectedData) { this.handleChangeURL_(selectedData.url); } renderTemplateElement_(parent, role, value) { const elements = SPZCore.Dom.scopedQuerySelectorAll( parent, `[role="${role}"]` ); elements.forEach((element) => { if (element && value) { element.innerHTML = value; } }); } renderTemplateImg_(parent, role, options) { const flagElement = SPZCore.Dom.scopedQuerySelector( parent, `[role="${role}"]` ); if (flagElement && options?.src && options?.height && options?.width) { const spzImg = self.document.createElement('ljs-img'); spzImg.setAttribute('src', options.src); spzImg.setAttribute('layout', 'responsive'); spzImg.setAttribute('width', options.width); spzImg.setAttribute('height', options.height); spzImg.setAttribute( 'style', `width: ${options.width}px; height: ${options.height}px;` ); flagElement.appendChild(spzImg); } } handleChangeURL_(url) { if (!!url) { let {origin, pathname, search} = this.win.location; pathname = pathname.replace(SITE, url != '/' ? url : ''); this.win.location.href = `${origin}${pathname}${search}`; } else { this.win.location.reload(true); } } initModalEntry_(role) { const marketModalTemplate = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); if (marketModalTemplate) { const tempParentNode = self.document.createElement('div'); const clonedTemplate = self.document.importNode( marketModalTemplate.content, true ); tempParentNode.appendChild(clonedTemplate); this.renderTemplateImg_(tempParentNode, MARKET_MODAL_FLAG, { src: this.ipMatchingMarket?.img, width: '80', height: '80', }); this.renderTemplateElement_( tempParentNode, MARKET_MODAL_COUNTRY_CODE, this.ipMatchingMarket?.name ); this.renderTemplateElement_( tempParentNode, MARKET_MODAL_CURRENCY_SYMBOL, this.ipMatchingMarket?.currency_with_symbol ); const lightbox = self.document.createElement('ljs-lightbox'); lightbox.setAttribute('layout', 'nodisplay'); lightbox.appendChild(tempParentNode.firstElementChild); self.document.body.appendChild(lightbox); SPZ.whenApiDefined(lightbox).then((apis) => { SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]` ).forEach((ele) => { ele.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); }); const marketModalConfirmElement = SPZCore.Dom.scopedQuerySelector( lightbox, `[role="${MARKET_MODAL_CONFIRM}"]` ); if (marketModalConfirmElement && this.ipMatchingMarket?.url) { marketModalConfirmElement.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); this.setCookie_(MARKET_COUNTRY_COOKIE, this.ipMatchingMarket?.name); this.handleChangeURL_(this.ipMatchingMarket?.url); }); } const marketModalReselectElement = SPZCore.Dom.scopedQuerySelector( lightbox, `[role="${MARKET_MODAL_RESELECT}"]` ); if (marketModalReselectElement) { marketModalReselectElement.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); const marketReselectTemplate = SPZCore.Dom.scopedQuerySelector( this.element, `[role="${MARKET_RESELECT_MODAL}"]` ); if (marketReselectTemplate && lightbox.firstElementChild) { const clonedTemplate = self.document.importNode( marketReselectTemplate.content, true ); const selectParent = SPZCore.Dom.scopedQuerySelector( clonedTemplate, `[role="${MARKET_MODAL_RESELECT_COUNTRY_SELECT}"]` ); if (selectParent) { this.createSelect_({ parent: selectParent, defaultValue: this.getDefaultCountryValue_(), dataList: this.marketCountryList.map( this.mapCountryRenderData_ ), listElementWithTemplate: this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler: this.handleCountrySelectChange_.bind(this), }); } lightbox.replaceChild(clonedTemplate, lightbox.firstElementChild); SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]` ).forEach((ele) => { ele.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); }); } }); } apis.open(); }); } } async getMarketThemeSettings_() { return this.xhr_.fetchJson(MARKET_THEME_SETTINGS).then((res) => { this.useCountrySelect_ = !!res.country_selector_enabled; this.useLanguageSelect_ = !!res.language_selector_enabled && this.global?.market?.market_id; this.useModal_ = !!res.redirect_pop_enabled; return res; }); } async getCountryList_() { return this.xhr_.fetchJson(MARKET_COUNTRIES).then((res) => { this.marketCountryList = res.data.length ? res.data : []; return res; }); } async getIpMatchingMarket_() { return this.xhr_.fetchJson(IP_MATCHING_MARKET, { method: 'POST', body: { stations: [], }, }); } async getMarketLanguages_(marketId) { return this.xhr_ .fetchJson(MARKET_LANGUAGES.replace(/:id/gim, marketId)) .then((res) => { this.marketLanguages = res?.languages?.length ? res.languages : []; return res; }); } hasCookie_(name) { const m = self.document.cookie .split(';') .filter((pair) => pair.trim().startsWith(name + '=')); return !!(m && m[0]); } getCookie_(name) { const m = self.document.cookie .split(';') .filter((pair) => pair.trim().startsWith(name + '=')); return m && m[0] ? m[0].split('=')[1] : null; } setCookie_(name, value, expires) { const expiresDate = new Date(Date.now() + expires).toGMTString(); self.document.cookie = `${name}=${encodeURIComponent( value )};expires=${expiresDate};path=/`; } } SPZ.defineElement('spz-custom-market', SpzCustomMarket);
Region/Country
Region/Country
(
)
Language
Language
Switch to
based on your location
Purchase with
Get shipping options for
Set to
based on your location
Purchase with
Get shipping options for
Modify Country/Region
Region/Country
US
(
USD
$
)
AD
(
EUR
€
)
AE
(
AED
د.إ
)
AF
(
AFN
؋
)
AG
(
XCD
$
)
AI
(
XCD
$
)
AL
(
ALL
Lek
)
AM
(
AMD
֏
)
AN
(
USD
$
)
AR
(
ARS
ARS$
)
AT
(
EUR
€
)
AU
(
AUD
A$
)
AW
(
AWG
ƒ
)
AX
(
EUR
€
)
AZ
(
AZN
ман
)
BA
(
BAM
KM
)
BB
(
BBD
BDS.$
)
BD
(
BDT
৳
)
BE
(
EUR
€
)
BG
(
BGN
лв
)
BH
(
BHD
د.ب
)
BM
(
BMD
$
)
BN
(
BND
$
)
BO
(
BOB
$b
)
BQ
(
USD
$
)
BR
(
BRL
R$
)
BS
(
BSD
B.$
)
BT
(
BTN
Nu.
)
BY
(
USD
$
)
BZ
(
BZD
BZ$
)
CA
(
CAD
CA$
)
CC
(
AUD
A$
)
CH
(
CHF
CHF
)
CK
(
NZD
NZ$
)
CL
(
CLP
CLP
)
CN
(
CNY
¥
)
CO
(
COP
COP$
)
CR
(
CRC
₡
)
CU
(
CUP
$
)
CW
(
ANG
ƒ
)
CX
(
AUD
A$
)
CY
(
EUR
€
)
CZ
(
CZK
Kč
)
DE
(
EUR
€
)
DK
(
DKK
kr
)
DM
(
XCD
$
)
DO
(
DOP
RD$
)
EC
(
USD
$
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FJ
(
FJD
$
)
FM
(
USD
$
)
FO
(
DKK
kr
)
FR
(
EUR
€
)
GB
(
GBP
£
)
GD
(
XCD
$
)
GE
(
GBP
£
)
GF
(
EUR
€
)
GG
(
GBP
£
)
GI
(
GBP
£
)
GL
(
DKK
kr
)
GP
(
EUR
€
)
GR
(
EUR
€
)
GT
(
GTQ
Q
)
GU
(
USD
$
)
GY
(
GYD
$
)
HK
(
HKD
HK$
)
HM
(
AUD
A$
)
HN
(
HNL
L
)
HR
(
EUR
€
)
HT
(
HTG
G
)
HU
(
HUF
Ft
)
ID
(
IDR
Rp
)
IE
(
EUR
€
)
IL
(
ILS
₪
)
IM
(
GBP
£
)
IN
(
INR
₨
)
IO
(
USD
$
)
IQ
(
USD
$
)
IR
(
USD
$
)
IS
(
ISK
kr
)
IT
(
EUR
€
)
JE
(
GBP
£
)
JM
(
JMD
J$
)
JO
(
USD
$
)
JP
(
JPY
¥
)
KG
(
KGS
сом
)
KH
(
THB
฿
)
KI
(
AUD
A$
)
KN
(
XCD
$
)
KP
(
KPW
₩
)
KR
(
KRW
₩
)
KW
(
KWD
د.ك
)
KY
(
KYD
$
)
KZ
(
KZT
₸
)
LA
(
LAK
₭
)
LB
(
LBP
ل.ل
)
LC
(
XCD
$
)
LI
(
CHF
CHF
)
LK
(
LKR
₨
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
MD
(
MDL
L
)
ME
(
EUR
€
)
MF
(
USD
$
)
MH
(
USD
$
)
MK
(
MKD
ден
)
MM
(
MMK
K
)
MN
(
MNT
₮
)
MO
(
MOP
P
)
MP
(
USD
$
)
MQ
(
EUR
€
)
MS
(
XCD
$
)
MT
(
EUR
€
)
MV
(
MVR
ރ.
)
MX
(
MXN
MXN$
)
MY
(
MYR
RM
)
NC
(
XPF
Fr
)
NF
(
AUD
A$
)
NI
(
NIO
C$
)
NL
(
EUR
€
)
NO
(
NOK
kr
)
NP
(
NPR
₨
)
NR
(
AUD
A$
)
NU
(
NZD
NZ$
)
NZ
(
NZD
NZ$
)
OM
(
OMR
﷼
)
PA
(
USD
$
)
PE
(
PEN
S/.
)
PF
(
XPF
Fr
)
PG
(
PGK
K
)
PH
(
PHP
₱
)
PK
(
PKR
₨
)
PL
(
PLN
zł
)
PM
(
EUR
€
)
PN
(
NZD
NZ$
)
PR
(
USD
$
)
PS
(
ILS
₪
)
PT
(
EUR
€
)
PW
(
USD
$
)
PY
(
PYG
₲
)
QA
(
QAR
﷼
)
RO
(
RON
lei
)
RS
(
RSD
Дин.
)
RU
(
RUB
руб
)
SA
(
SAR
﷼
)
SB
(
SBD
$
)
SE
(
SEK
kr
)
SG
(
SGD
S$
)
SI
(
EUR
€
)
SJ
(
NOK
kr
)
SK
(
EUR
€
)
SM
(
EUR
€
)
SR
(
SRD
$
)
SV
(
USD
$
)
SX
(
ANG
ƒ
)
SY
(
SYP
£
)
TC
(
USD
$
)
TH
(
THB
฿
)
TJ
(
TJS
SM
)
TK
(
NZD
NZ$
)
TL
(
USD
$
)
TM
(
TMT
m
)
TO
(
TOP
T$
)
TR
(
TRY
₺
)
TT
(
TTD
TT$
)
TV
(
AUD
A$
)
TW
(
TWD
NT$
)
UA
(
UAH
₴
)
UM
(
USD
$
)
UY
(
UYU
$U
)
UZ
(
UZS
so'm
)
VA
(
EUR
€
)
VC
(
XCD
$
)
VE
(
USD
$
)
VG
(
USD
$
)
VI
(
USD
$
)
VN
(
VND
₫
)
VU
(
VUV
Vt
)
WF
(
XPF
Fr
)
WS
(
WST
T
)
XK
(
EUR
€
)
YE
(
YER
﷼
)
US
(
USD
$
)
US
(
USD
$
)
AD
(
EUR
€
)
AE
(
AED
د.إ
)
AF
(
AFN
؋
)
AG
(
XCD
$
)
AI
(
XCD
$
)
AL
(
ALL
Lek
)
AM
(
AMD
֏
)
AN
(
USD
$
)
AR
(
ARS
ARS$
)
AT
(
EUR
€
)
AU
(
AUD
A$
)
AW
(
AWG
ƒ
)
AX
(
EUR
€
)
AZ
(
AZN
ман
)
BA
(
BAM
KM
)
BB
(
BBD
BDS.$
)
BD
(
BDT
৳
)
BE
(
EUR
€
)
BG
(
BGN
лв
)
BH
(
BHD
د.ب
)
BM
(
BMD
$
)
BN
(
BND
$
)
BO
(
BOB
$b
)
BQ
(
USD
$
)
BR
(
BRL
R$
)
BS
(
BSD
B.$
)
BT
(
BTN
Nu.
)
BY
(
USD
$
)
BZ
(
BZD
BZ$
)
CA
(
CAD
CA$
)
CC
(
AUD
A$
)
CH
(
CHF
CHF
)
CK
(
NZD
NZ$
)
CL
(
CLP
CLP
)
CN
(
CNY
¥
)
CO
(
COP
COP$
)
CR
(
CRC
₡
)
CU
(
CUP
$
)
CW
(
ANG
ƒ
)
CX
(
AUD
A$
)
CY
(
EUR
€
)
CZ
(
CZK
Kč
)
DE
(
EUR
€
)
DK
(
DKK
kr
)
DM
(
XCD
$
)
DO
(
DOP
RD$
)
EC
(
USD
$
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FJ
(
FJD
$
)
FM
(
USD
$
)
FO
(
DKK
kr
)
FR
(
EUR
€
)
GB
(
GBP
£
)
GD
(
XCD
$
)
GE
(
GBP
£
)
GF
(
EUR
€
)
GG
(
GBP
£
)
GI
(
GBP
£
)
GL
(
DKK
kr
)
GP
(
EUR
€
)
GR
(
EUR
€
)
GT
(
GTQ
Q
)
GU
(
USD
$
)
GY
(
GYD
$
)
HK
(
HKD
HK$
)
HM
(
AUD
A$
)
HN
(
HNL
L
)
HR
(
EUR
€
)
HT
(
HTG
G
)
HU
(
HUF
Ft
)
ID
(
IDR
Rp
)
IE
(
EUR
€
)
IL
(
ILS
₪
)
IM
(
GBP
£
)
IN
(
INR
₨
)
IO
(
USD
$
)
IQ
(
USD
$
)
IR
(
USD
$
)
IS
(
ISK
kr
)
IT
(
EUR
€
)
JE
(
GBP
£
)
JM
(
JMD
J$
)
JO
(
USD
$
)
JP
(
JPY
¥
)
KG
(
KGS
сом
)
KH
(
THB
฿
)
KI
(
AUD
A$
)
KN
(
XCD
$
)
KP
(
KPW
₩
)
KR
(
KRW
₩
)
KW
(
KWD
د.ك
)
KY
(
KYD
$
)
KZ
(
KZT
₸
)
LA
(
LAK
₭
)
LB
(
LBP
ل.ل
)
LC
(
XCD
$
)
LI
(
CHF
CHF
)
LK
(
LKR
₨
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
MD
(
MDL
L
)
ME
(
EUR
€
)
MF
(
USD
$
)
MH
(
USD
$
)
MK
(
MKD
ден
)
MM
(
MMK
K
)
MN
(
MNT
₮
)
MO
(
MOP
P
)
MP
(
USD
$
)
MQ
(
EUR
€
)
MS
(
XCD
$
)
MT
(
EUR
€
)
MV
(
MVR
ރ.
)
MX
(
MXN
MXN$
)
MY
(
MYR
RM
)
NC
(
XPF
Fr
)
NF
(
AUD
A$
)
NI
(
NIO
C$
)
NL
(
EUR
€
)
NO
(
NOK
kr
)
NP
(
NPR
₨
)
NR
(
AUD
A$
)
NU
(
NZD
NZ$
)
NZ
(
NZD
NZ$
)
OM
(
OMR
﷼
)
PA
(
USD
$
)
PE
(
PEN
S/.
)
PF
(
XPF
Fr
)
PG
(
PGK
K
)
PH
(
PHP
₱
)
PK
(
PKR
₨
)
PL
(
PLN
zł
)
PM
(
EUR
€
)
PN
(
NZD
NZ$
)
PR
(
USD
$
)
PS
(
ILS
₪
)
PT
(
EUR
€
)
PW
(
USD
$
)
PY
(
PYG
₲
)
QA
(
QAR
﷼
)
RO
(
RON
lei
)
RS
(
RSD
Дин.
)
RU
(
RUB
руб
)
SA
(
SAR
﷼
)
SB
(
SBD
$
)
SE
(
SEK
kr
)
SG
(
SGD
S$
)
SI
(
EUR
€
)
SJ
(
NOK
kr
)
SK
(
EUR
€
)
SM
(
EUR
€
)
SR
(
SRD
$
)
SV
(
USD
$
)
SX
(
ANG
ƒ
)
SY
(
SYP
£
)
TC
(
USD
$
)
TH
(
THB
฿
)
TJ
(
TJS
SM
)
TK
(
NZD
NZ$
)
TL
(
USD
$
)
TM
(
TMT
m
)
TO
(
TOP
T$
)
TR
(
TRY
₺
)
TT
(
TTD
TT$
)
TV
(
AUD
A$
)
TW
(
TWD
NT$
)
UA
(
UAH
₴
)
UM
(
USD
$
)
UY
(
UYU
$U
)
UZ
(
UZS
so'm
)
VA
(
EUR
€
)
VC
(
XCD
$
)
VE
(
USD
$
)
VG
(
USD
$
)
VI
(
USD
$
)
VN
(
VND
₫
)
VU
(
VUV
Vt
)
WF
(
XPF
Fr
)
WS
(
WST
T
)
XK
(
EUR
€
)
YE
(
YER
﷼
)
Log in
function setSearchUrl(searchValue) { return Promise.resolve({ url: '/search?q=' + searchValue }); } exportFunction('setSearchUrl', setSearchUrl);
Top search terms
${function() { if (data === undefined || typeof data !== 'string' || data == '') return ''; const searchEmpty = ("Your search for \"{test}\" did not yield any results.").replace('{test}', data); return `
View more
${searchEmpty}
`; }()}
${data.index + 1}/29
6/29
Cute Laser Cat Ears Hairband Bowknot Rhinestone 5D Embossed Reliefs Self Adhesive Nail Art Decoration Sticker 3D Manicure Decals
${function() { let availableQuantity = data && data.available_quantity; if (availableQuantity == undefined) { return ("This product variant does not exist"); } availableQuantity = Math.max(availableQuantity, 0); const availableQuantityDom = `
${availableQuantity}
` return ("Sold 87 only {stock} item(s) left").replace(/\{*stock*\}/, availableQuantityDom); }()}
Sold 87 only
999999999
item(s) left
${function(){ const variant = data.variant; const price = "18.53"; const priceMax = "19.55"; const saveType = "amount"; const saveText = "Save {off_ratio}"; return `
-
${saveText.replace('{off_ratio}', saveType == 'percent' ? variant.off_ratio + '%' : `
` )}
` }()}
Color:
MP5519TO3350
MP5519TO3350
MP5518TA255XTJ
MP5518TA255S
MP5518TA255LSF
MP5517TA259
MP5517TA257
MP5517TA256
MP5517TA260
MP4192TL090
MP5519TO3351
MP5517TA261G
MP5517TA261S
MP5517TA262
MP3975TL001
MP4058TL032
MP3982TL021
MP3647TS2510
MP3647TS2511
MP4059TS3210
MP4059TS3211
MP5316TO3183
MP5316TO3184
MP5148FEB476
MP3660S072F
${data.value}
Quantity
Add to cart
-
-
Buy now
Share the love
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Description
Description
Style : High Quality Nail Art Stickers
Quantity : 1 Pcs
Size : as the picture shows
Material : Paper
Model Number : MP5519
Brand Name : PONYTREE
Number of Pieces : One Unit
Item Type : Sticker & Decal
You may also like
Recently viewed
${function() { const force_image_size = "natural"; const product_hover_on = true; const product_show_sale_label = true; const product_save_type = "amount"; const badge1 = "New"; const badge2 = ""; const badge3 = ""; const product_title_mobile_hide = false; const product_title_style = "full"; const enable_collection_thumb_image = true; const variantNames = ["color"]; const thumbMaxNum = 4; const suffix_id = Math.random().toFixed(6).slice(-6); const url = data.withinUrl; const productId = data.id; const price = data.price; const productAvailable = data.available; const productVariants = data.variants || []; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; let image2 = data.secondImage; let imageHoverOn = !!image2.src; if (force_image_size !== 'natural') { imageHeight = imageWidth * force_image_size; } let compareAtPrice = data.compare_at_price; let offRatio = data.off_ratio; let discountMaxUrl = url; const showFrom = data.price_min != data.price_max ? true : false; for (let i = 0; i < productVariants.length; i++) { const variant = productVariants[i]; if (variant.price == price && compareAtPrice < variant.compare_at_price) { compareAtPrice = variant.compare_at_price; offRatio = variant.off_ratio; variant.available && (discountMaxUrl = variant.withinUrl); } } const soldOutText = "Sold out"; let soldOn = false; let saleOn = false; if (productAvailable) { if (product_show_sale_label && +price < +compareAtPrice) { saleOn = true; } } else { soldOn = true; } const diffPrice = compareAtPrice - price; const saveLabelContent = product_save_type == 'percent' ? (offRatio + '%') : `
`; let saveText = "Save {off_ratio}"; saveText = saveText.replace('{off_ratio}', saveLabelContent); const productTitle = data.title; const variantValues = []; const showVariants = []; if (data.need_variant_image && enable_collection_thumb_image && variantNames.length > 0) { for (let i = 0; i < (data.options || []).length; i++) { const option = data.options[i]; const optionName = option.name.toLowerCase(); if (variantNames.includes(optionName)) { for (let j = 0; j < productVariants.length; j++) { const variant = productVariants[j]; const value = variant.options[i].value; if (!variantValues.includes(value)) { variantValues.push(value); showVariants.push(variant); } } break; } } } return `
${saleOn ? saveText : soldOutText}
${badge1}
${badge2}
${badge3}
${ "title" === 'subtitle' ? data.brief : data.title }
From
${saveText}
${showVariants.map((item, idx) => { let showMoreHtml = ''; if (idx == thumbMaxNum) { showMoreHtml += `
+${showVariants.length - thumbMaxNum}
`; } return ` ${showMoreHtml}
`; }).join('') }
`; }()}
${function() { const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; const defaultIndex = !!defaultSelectedVariant ? data.images.findIndex(img => img.src == (defaultSelectedVariant.image && defaultSelectedVariant.image.src)) : -1; const initialSlide = defaultIndex == -1 ? 0 : defaultIndex; const attrs = data.images.length > 1 ? 'slide controls' : ''; return `
`; }()}
${data.title}
${data.brief}
${function() { const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; return `
${("Save {off_ratio}").replace('{off_ratio}', ("amount") == 'percent' ? defaultSelectedVariant.off_ratio + '%' : `
` )}
-
`; }()}
${function(){ const defaultSelectedVariant = data.variants.find(v => v.available) || data.variants[0]; let status_lan = "Add to cart"; if ((defaultSelectedVariant && !defaultSelectedVariant.available) || (!defaultSelectedVariant && !data.available)) { status_lan = "Sold out"; } return `
Quantity
${status_lan}
Buy now
` }()}
${function() { var thumbSwitchName = ''; return data.product.options.map((option, index) => { const optionName = option.name || ''; const optionPosition = 'option' + (index + 1); const values = option.values || []; const soldOutValues = (data.soldOutValues && data.soldOutValues[optionPosition]) || {}; const position = `option${index + 1}`; const variantThumbs = ["color"] || []; var isThumbImage = false; if (data.product.need_variant_image && thumbSwitchName == '') { for (let i = 0; i < variantThumbs.length; i++) { const name = variantThumbs[i].toLowerCase(); if (name == optionName.toLowerCase()) { isThumbImage = true; thumbSwitchName = name; } } } const variantType = "button"; const currentProduct = data.product; const thumbStyle = "image_with_text"; const thumbType = isThumbImage ? thumbStyle.replace(/_/g, '-') : 'text'; const selectedVariantVal = data.selectedValues[optionName][0] || ''; return `
${optionName.slice(0, 1).toUpperCase() + optionName.slice(1).toLowerCase()} :
${selectedVariantVal}
${option.values.map((value, idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = currentProduct.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return `
${value}
${value}
` }).join('')}
` }).join(''); }()}
${data.targetOption || data.defaultValue || data.value || ''}
${("Save {off_ratio}").replace('{off_ratio}', ("amount") == 'percent' ? data.variant.off_ratio + '%' : `
` )}
-
-
${function() { const freeAmount = 34; const totalPrice = data?.total_price || data?.cart?.total_price || 0; const amountDiff = freeAmount - totalPrice; const percentDiff = (amountDiff > 0 ? (totalPrice / freeAmount * 100) : 100) + '%'; let tipText = `
Your order is free delivery
`; if (amountDiff > 0) { tipText = `
Spend
more and get free shipping!
`; } return `
${tipText}
`; }()}
${data.line_items.map(item => { const variantNames = item.options.map(option => option.value).join(' / '); return `
${item.product_title}
${variantNames}
${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return `
${propertie.name}:
View image
` }else{ return `
${propertie.name}: ${propertie.value}
` } }).join('')}
*${item.quantity}
Free gift
${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return `
${discount_item.title}
(-
)
` }).join('') }
Remove
`; }).join('')}
Cart
Add note
Write something here to seller.
${data.note || data.value}
Discount
${data.total_discount > 0 ? '-' : ''}
Subtotal
Taxes and shipping calculated at checkout
Check out
Your shopping cart is empty
Continue shopping
You may also like