www.tymmc.com Open in urlscan Pro
104.17.247.119  Public Scan

Submitted URL: https://tymmc.com/
Effective URL: https://www.tymmc.com/
Submission: On August 16 via api from US — Scanned from CA

Form analysis 4 forms found in the DOM

GET /search

<form action="/search" method="get" class="tw-max-w-[250px] tw-mr-11">
  <div tabindex="-1" class="tw-flex tw-relative header__search">
    <input autocomplete="off" name="q" type="text"
      class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global  tw-border-none  tw-placeholder-current header__search-input" placeholder="بحث...">
    <button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1">
      <svg class="icon-search " width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
      </svg>
    </button>
    <button type="button"
      class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close  lg:tw-absolute lg:tw--right-11 lg:tw-h-full ">
      <svg class="icon-close-small " width="14" height="14" xmlns="http://www.w3.org/2000/svg">
        <path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
      </svg>
    </button>
  </div>
</form>

GET /search

<form action="/search" method="get" class="">
  <div tabindex="-1" class="tw-flex tw-relative header__search">
    <input autocomplete="off" name="q" type="text"
      class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global  tw-border-none  tw-placeholder-current header__search-input" placeholder="بحث...">
    <button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1">
      <svg class="icon-search " width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
      </svg>
    </button>
    <button type="button"
      class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close  lg:tw-absolute lg:tw--right-11 lg:tw-h-full ">
      <svg class="icon-close-small " width="14" height="14" xmlns="http://www.w3.org/2000/svg">
        <path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
      </svg>
    </button>
  </div>
</form>

GET /search

<form action="/search" method="get" class="">
  <div tabindex="-1" class="tw-flex tw-relative header__search">
    <input autocomplete="off" name="q" type="text"
      class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global  tw-border-none  tw-placeholder-current header__search-input" placeholder="بحث...">
    <button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1">
      <svg class="icon-search " width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
      </svg>
    </button>
    <button type="button"
      class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close  lg:tw-absolute lg:tw--right-11 lg:tw-h-full ">
      <svg class="icon-close-small " width="14" height="14" xmlns="http://www.w3.org/2000/svg">
        <path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
      </svg>
    </button>
  </div>
</form>

GET /search

<form action="/search" method="get" class="">
  <div tabindex="-1" class="tw-flex tw-relative header__search">
    <input autocomplete="off" name="q" type="text"
      class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global  tw-border-none  tw-placeholder-current header__search-input" placeholder="بحث...">
    <button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1">
      <svg class="icon-search " width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
      </svg>
    </button>
    <button type="button" class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close ">
      <svg class="icon-close-small " width="14" height="14" xmlns="http://www.w3.org/2000/svg">
        <path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
      </svg>
    </button>
  </div>
</form>

Text Content

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

سيتم التبديل إلى بناءً على موقعك
 * تسوق بـ
 * احصل على خيارات الشحن لـ

إلغاء
تبديل
تم تعيين بناءً على موقعك
 * تسوق بـ
 * احصل على خيارات الشحن لـ

تابع التسوق
تعديل الدولة/المنطقة
تعديل الدولة/المنطقة

تابع التسوق
إلغاء
Region/Country
SA
(
SAR
﷼
)
SA
(
SAR
﷼
)
AE
(
AED
د.إ
)
KW
(
KWD
د.ك
)
QA
(
QAR
﷼
)
Language
العربية
العربية

SA
(
SAR
﷼
)
SA
(
SAR
﷼
)
AE
(
AED
د.إ
)
KW
(
KWD
د.ك
)
QA
(
QAR
﷼
)
العربية
العربية




LOVE PLAYING

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

سيتم التبديل إلى بناءً على موقعك
 * تسوق بـ
 * احصل على خيارات الشحن لـ

إلغاء
تبديل
تم تعيين بناءً على موقعك
 * تسوق بـ
 * احصل على خيارات الشحن لـ

تابع التسوق
تعديل الدولة/المنطقة
تعديل الدولة/المنطقة

تابع التسوق
إلغاء
Region/Country
SA
(
SAR
﷼
)
SA
(
SAR
﷼
)
AE
(
AED
د.إ
)
KW
(
KWD
د.ك
)
QA
(
QAR
﷼
)
Language
العربية
العربية

SA
(
SAR
﷼
)
SA
(
SAR
﷼
)
AE
(
AED
د.إ
)
KW
(
KWD
د.ك
)
QA
(
QAR
﷼
)
العربية
العربية



بحث
حساب
 * يسجل دخول
 * إنشاء حساب

0 عربة التسوق
يغلق


 * المنزل
 * المنتجات الجديدة
 * منطقة الواقي الذكري
 * الملابس الداخلية
 * قسم الرجال
    * قسم الرجال
    * كوب الطائرة
    * منتجات التأخير الزمني
    * منتجات السيليكون
    * دمية سيليكون
    * SM

 * منطقة النساء
    * منطقة النساء
    * القضيب
    * دسار
    * SM

 * الأزواج
 * يسجل دخول
 * إنشاء حساب
   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
   
   سيتم التبديل إلى بناءً على موقعك
    * تسوق بـ
    * احصل على خيارات الشحن لـ
   
   إلغاء
   تبديل
   تم تعيين بناءً على موقعك
    * تسوق بـ
    * احصل على خيارات الشحن لـ
   
   تابع التسوق
   تعديل الدولة/المنطقة
   تعديل الدولة/المنطقة
   
   تابع التسوق
   إلغاء
   Region/Country
   SA
   (
   SAR
   ﷼
   )
   SA
   (
   SAR
   ﷼
   )
   AE
   (
   AED
   د.إ
   )
   KW
   (
   KWD
   د.ك
   )
   QA
   (
   QAR
   ﷼
   )
   Language
   العربية
   العربية
   
   SA
   (
   SAR
   ﷼
   )
   SA
   (
   SAR
   ﷼
   )
   AE
   (
   AED
   د.إ
   )
   KW
   (
   KWD
   د.ك
   )
   QA
   (
   QAR
   ﷼
   )
   العربية
   العربية
   
   

 * المنزل
 * المنتجات الجديدة
 * منطقة الواقي الذكري
 * الملابس الداخلية
 * قسم الرجال
   كوب الطائرة
   منتجات التأخير الزمني
   منتجات السيليكون
   دمية سيليكون
   SM
   
   
   الواقي الذكري
   
   ﷼5.50
   
 * منطقة النساء
   القضيب
   دسار
   SM
   
   
   جهاز استمناء أنثوي للإدخال
   
   ﷼200.00
   
 * الأزواج
 * المزيد من الروابط







NEW FASHION

UP TO 20% OFF

UP TO 20% OFF

We use the same manufacturers and premium materials as top luxury brands, but
sell our products for zero profit.

Shop Now


HOLIDAY SALES

BUY 3 GET·15% OFF

BUY 3 GET·15% OFF

Hundreds of products from the same manufacturers as the top luxury brands at
unparalleled prices.

Shop Now




 * BANNER PROMOTION
   
   Add the details of your promotion in smaller text
   Shop Now


قائمة الألبومات


القضيب




منتجات السيليكون2




ملابس داخلية مثيرة




سلسلة قفل الحيوانات المنوية




الأزواج




كم قضيب طويل وسميك للغاية


الأشياء الجيدة الموصى بها

عرض الكل


 * أطقم اللعب
   
   ﷼200.00
   


 * واقي ذكري شائك عادي
   
   ﷼150.00
   


 * الهزازات
   
   ﷼180.00
   


 * جهاز هزاز يعمل بالتحكم عن بعد
   
   ﷼190.00
   


 * سدادات قفل الشرج المقفلة للمني
   
   ﷼180.00
   


 * دسار
   
   ﷼190.00
   

زوجان مهذبان وحنونان

كل أنين هو نداء للحب.

Couples enter


FEATURED COLLECTION

عرض الكل


 * كأس استمناء كهربائي مزدوج الرأس
   
   ﷼190.00
   


 * كأس استمناء كهربائي
   
   ﷼190.00
   


 * كأس الاستمناء اليدوي
   
   ﷼175.00
   


 * خرة التفاح السيليكون
   
   ﷼220.00
   


 * ألعاب الملاك الشيطانة الشيطانة سيليكون
   
   ﷼190.00
   



HALF-BODIED DOLL

FREE 200ML LUBRICANT + WARMING WAND

FREE 200ML LUBRICANT + WARMING WAND

We know how important it is to have gear that won't let you down in the dead of
night.

Shop Now




عملاؤنا

Really went out of their way to make me feel special as a customer, highly
recommend!

Ada
Los Angeles, CA

Awesome item experience was great! I would recommend it to anyone.

Aaliyah
New Orleans, LA

Couldn't be happier with the service I received from this company.

Aditi
Montreal, QC

It arrived quickly and was beautifully packaged. I hope it's as perfect in use

Adela
Toronto, ON

Really went out of their way to make me feel special as a customer, highly
recommend!

Ada
Los Angeles, CA

Awesome item experience was great! I would recommend it to anyone.

Aaliyah
New Orleans, LA

Couldn't be happier with the service I received from this company.

Aditi
Montreal, QC

It arrived quickly and was beautifully packaged. I hope it's as perfect in use

Adela
Toronto, ON


 * منتج جديد
   
   لتمنحك النشوة الجنسية القصوى.
   
   Shop Now

 * طقم ألعاب كهربائية
   
   طرق متعددة للعب، وتجارب متعددة لتجلب لك مشاعر مختلفة
   
   Shop Now

 * ألعاب إس إم تويز
   
   مع 21 تركيبة، هناك تجربة جديدة في كل مرة!
   
   Shop Now


Subscribe today to hear first about our sales
الإشتراك
شكرا على الإشتراك

SUPPORT
 * About Us
 * Cotact Us
 * Shipping Policy
 * Returns & Reund policy
 * Terms of Service
 * Privacy Statement
 * Track Your Order
 * FAQs

Get in touch
Email us Live chat
تابعنا

© 2024 Love playing
About Us
Cotact Us
Shipping Policy
Returns & Reund policy
Terms of Service
Privacy Statement
Track Your Order
FAQs


SIGN UP AND SAVE

Entice customers to sign up for your mailing list with discounts or exclusive
offers. Include an image for extra impact.
الإشتراك
شكرا على الإشتراك
Optional button


عربة التسوق










111
GIFTS

POINTS