← Back to Home

chillychic.com Scam Check: 25/100 Trust | ScamMinder

Website: chillychic.com

Screenshot of chillychic.com

Safety Score

25/100
✗ Scam Risk

Exercise caution when interacting with this website.

AI Analysis Results

Category: E-commerce
About this website:

Detailed Analysis Report: Is ChillyChic.com Safe and Legit? Website Overview and Purpose ChillyChic.com is an e-commerce website that specializes in selling affordable clothing items , particularly focusing on seasonal products like Christmas pajamas. The site promotes various discounts and offers, such as 'Buy 1 Get 1 Free' on pajama sets, targeting consumers looking for budget-friendly holiday apparel. Content Quality and User Experience Key Experience Highlights Prominent promotional banners highlighting discounts and special offers. Multiple categories for easy navigation, including best sellers and seasonal collections. Visual appeal with festive themes, enhancing the shopping experience. Pop-up notifications for email subscriptions and additional offers. Claims Verification and Red Flags ⚠️ Red Flags Detected Several red flags have been identified that raise concerns about the legitimacy of the website: Unrealistic Discounts: The site offers significant discounts (e.g., 'Buy 1 Get 1 Free'), which are often indicative of scam e-commerce sites . No Verifiable Company Information: There is a lack of clear company registration details or physical address, which is essential for trust. Generic Product Descriptions: Many product descriptions appear vague and lack specific details, suggesting potential copy-pasting from other sites. New Domain: The domain is relatively new (5 years old), which is often a red flag for e-commerce sites selling high-value items. Missing Customer Reviews: There are no verifiable customer reviews or testimonials available, which is concerning for an online store. ⚠️ Caution Points Users should verify the legitimacy of the site before making any purchases. Be cautious of providing personal information or payment details without clear company transparency. Security Note: The website uses a valid SSL certificate, but this does not guarantee legitimacy. Legitimacy and Reputation Assessment The domain has been operational for 5 years , which is relatively short for an e-commerce site. It is hosted in Toronto, Canada , and the SSL certificate is valid until December 2025. However, the lack of a comprehensive archive history and minimal online presence raises concerns about its reputation. Final Verdict and Recommendations Conclusion: ChillyChic.com exhibits several red flags that suggest it may not be a legitimate e-commerce platform. Users are advised to exercise caution and consider alternative, more established retailers for their shopping needs. Best practices include researching the site thoroughly, checking for customer reviews, and ensuring secure payment methods are used.

Risk Assessment: scam
⚠️ Red Flags:
  • [GUARDRAIL] No deterministic evidence for scam; downgrading to warning
  • [CLAIMS] Unrealistic discounts on products, typical of scam e-commerce sites.
  • [TRANSPARENCY] No clear company registration details or physical address available.
  • [CONTENT] Vague product descriptions suggest potential copy-pasting.
  • [DOMAIN] The domain is relatively new, which is often a red flag for e-commerce sites.
📊 Analysis Reasons:
  • [BUSINESS MODEL] The site offers unrealistic discounts typical of scam e-commerce platforms.
  • [TRANSPARENCY] No verifiable company information or physical address is provided.
  • [CONTENT QUALITY] Generic product descriptions indicate potential copy-pasting from other sites.
  • [DOMAIN HISTORY] The domain is relatively new (5 years old), raising concerns about its legitimacy.
  • [REPUTATION] Lack of customer reviews or testimonials further diminishes trust.
🛡️ Safety Actions Applied:
  • {"type":"scam_downgraded","reason":"No deterministic evidence for scam; downgrading to warning","scoreCeiling":null,"targetStatus":"warning"}
Score Source: openai_guardrail
AI Confidence: medium

Technical Details

\n\n\n \n \n \n chillychic\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n
\n \n
\n \n \n \n\n
\n
\n\n\n\n\n
\n \n \n \n \n \n \n

Christmas Pajamas-Buy 1 Get 1 Free

\n \n \n \n \n

Christmas Pajamas-Buy 1 Get 1 Free

\n \n \n
\n
\n\n
\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n
\n \n\n
\n
\n
\n \n\n\n

\n \n \n \"\"\n \n\n \n \n \n \n\n

\n\n\n \n \n \n \n\n\n\n
\n \n
\n\n\n \n\n \n\n
\n \n
\n \n \n
\n
\n
\n \n \n \n
\n
\n \n \n
\n
\n\n \n
\n\n \n const template_name = SHOPLAZZA?.meta?.page?.template_name || '';\n const SEARCH_URL = '/search';\n const TAG = 'spz-custom-smart-search-location';\n const SMART_PRODUCR_SEARCH_WRAP_CLASSNAME = 'app-smart-product-search-container';\n const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name.replace(/ /g,'');\n const BREAKPOINT = 960;\n const DELAY = 300;\n\n function diffThemeName(themeNameA, themeNameB){\n return themeNameA.toLocaleLowerCase().includes(themeNameB.toLocaleLowerCase())\n }\n\n const HEADER_DOM_MAP = {\n eva: 'header .header_grid_layout',\n geek: `.header-mobile-inner-container`,\n onePage: 'header .header',\n wind: 'header #header-nav',\n nova: 'header .header',\n hero: 'header .header__nav',\n 'flash': '#shoplaza-section-header>div>div',\n 'lifestyle': '#shoplaza-section-header .header__wrapper'\n }\n let HEADER_DOM = 'header';\n\n Object.keys(HEADER_DOM_MAP)\n .map(themeName=>{\n if (diffThemeName(THEME_NAME, themeName)) {\n HEADER_DOM = HEADER_DOM_MAP[themeName];\n }\n })\n\n const SEARCH_ICON_CLASS_MAP = {\n 'flash': 'app-smart-icon-search-large-flash',\n 'hero': 'app-smart-icon-search-large-hero',\n 'geek': 'app-smart-icon-search-large-geek',\n 'nova': 'app-smart-icon-search-large-nova',\n };\n let SEARCH_ICON_CLASS = 'app-smart-icon-search-large-default';\n Object.keys(SEARCH_ICON_CLASS_MAP)\n .map(themeName=>{\n if (diffThemeName(THEME_NAME, themeName)) {\n SEARCH_ICON_CLASS = SEARCH_ICON_CLASS_MAP[themeName];\n }\n })\n\n class SpzCustomSmartSearchLocation extends SPZ.BaseElement {\n constructor(element) {\n super(element);\n this.mobileHeaderPluginParentEle = null;\n this.outsideCarouselIndex = 0;\n this.insideCarouselIndex = 0;\n this.searchItemType = 'icon';\n }\n\n static deferredMount() {\n return false;\n }\n\n isLayoutSupported(layout) {\n return layout == SPZCore.Layout.LOGIC;\n }\n\n buildCallback() {\n this.init();\n this.listenerResize();\n this.initRegisterActions();\n }\n\n addIconClass(){\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>{\n e.classList.add(SEARCH_ICON_CLASS)\n });\n }\n\n moveIcon(){\n if (!diffThemeName(THEME_NAME, 'lifestyle')) return;\n if (this.searchItemType === 'input') return;\n if (this.isDesktop()) return;\n const smart_search_dom = document.querySelector('#app-smart-product-search-container-924');\n if (!smart_search_dom) return;\n const hasMovedIcon = !!document.querySelector('.header__wrapper .container .row.header>div>#app-smart-product-search-container-924');\n if (hasMovedIcon) return;\n const headerDivList = document.querySelectorAll('.header__wrapper .container .row.header>div');\n const iconBoxDom = headerDivList[headerDivList.length-1]\n iconBoxDom.appendChild(smart_search_dom, iconBoxDom.firstChild);\n }\n\n init() {\n this.addIconClass();\n this.moveIcon();\n if ( this.searchItemType === 'input' ) {\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'none');\n const mobileSmartSearchDom = document.querySelector(`.smart-search-mobile-container .app-smart-product-search-wrap`);\n if ( this.isDesktop() ) {\n document.querySelector(`#app-smart-product-search-container-924`).style=\"display: block\";\n if (mobileSmartSearchDom) {\n document.querySelector(`#app-smart-product-search-container-924`).appendChild(mobileSmartSearchDom);\n }\n }else{\n if( template_name=='search' ) return;\n if (!document.querySelector(`.smart-search-mobile-container`)) {\n const appSmartSearchContainer = document.createElement('div');\n appSmartSearchContainer.classList.add('smart-search-mobile-container');\n appSmartSearchContainer.classList.add('smart-search-mobile-container-'+THEME_NAME.toLocaleLowerCase());\n document.querySelector(HEADER_DOM).appendChild(appSmartSearchContainer);\n }\n if (!mobileSmartSearchDom) {\n document.querySelector(`.smart-search-mobile-container`).appendChild(\n document.querySelector(`.app-smart-product-search-wrap`)\n )\n }\n }\n }else{\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'flex');\n }\n // PC-end not load\n if (this.isDesktop()) {\n return;\n }\n if (!window.__isLoadAppSmartSearch__) {\n this.initSmartSearch();\n console.log('__isLoadAppSmartSearch__');\n }\n // B-end must reload\n if (window.self === window.top && !window.__isLoadAppSmartSearch__) {\n window.__isLoadAppSmartSearch__ = true;\n }\n }\n\n initSmartSearch() {\n if (this.hasMobileUpperRightPlugin()) {\n this.showMobileSmartSearch();\n } else {\n this.addMobileSmartSearch();\n }\n }\n\n initRegisterActions(){\n this.registOnSearchInputChange();\n this.registOnSearchFormSubmit();\n this.registOnOutsideCarouselIndexChange();\n this.registOnInsideCarouselIndexChange();\n this.registGetSearchItemType();\n this.registGenerateHotKeywordList();\n this.registerAction('onTapHotWord',(invocation)=>{\n this.onTapHotWord(invocation.args.type);\n });\n }\n\n registOnSearchInputChange(){\n this.registerAction('onSearchInputChange',(invocation)=>{\n const keyword = invocation.args.keyword;\n if (keyword === null || !keyword.length) {\n document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{\n e.style='display: block';\n }); \n } else {\n document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{\n e.style='display: none';\n });\n }\n })\n }\n\n registOnSearchFormSubmit(){\n this.registerAction('onSearchFormSubmit',(invocation)=>{\n const event = invocation.args.event;\n const keywordArray = event.q || [];\n const keyword = keywordArray[0];\n if (keyword!==null && keyword.length) {\n this.handleSearchSubmit_(keywordArray,1);\n } else {\n this.onTapHotWord('inside')\n }\n })\n }\n\n handleSearchSubmit_(value, retryNum){\n SPZ.whenApiDefined(document.getElementById('app-smart-search-924'))\n .then((ljsSearch) => {\n try{\n ljsSearch.handleSearchSubmit_({\n value: value\n })\n }catch(e){\n console.log('catch error',retryNum)\n if( 3 > retryNum ){\n this.handleSearchSubmit_(value, retryNum + 1);\n return;\n }\n const searchStr = value[0] || '';\n const searchResult = ljsSearch.setThinkSearchData_(searchStr);\n ljsSearch.afterSearching({\n query: searchResult.query,\n url: `${SEARCH_URL}?q=${searchStr}`,\n queryType: searchResult.queryType,\n })\n }\n })\n }\n\n registOnOutsideCarouselIndexChange(){\n this.registerAction('onOutsideCarouselIndexChange',(invocation)=>{\n this.outsideCarouselIndex = invocation.args.index || 0;\n })\n }\n\n registOnInsideCarouselIndexChange(){\n this.registerAction('onInsideCarouselIndexChange',(invocation)=>{\n this.insideCarouselIndex = invocation.args.index || 0;\n })\n }\n\n registGetSearchItemType(searchItemType){\n this.registerAction('getSearchItemType',(invocation)=>{\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-924'))\n .then((appSmartSearchOutsideItem) => {\n const search_item_type = appSmartSearchOutsideItem.getData()?.search_item_type;\n this.searchItemType = search_item_type || this.searchItemType;\n this.init();\n })\n })\n }\n\n registGenerateHotKeywordList(){\n this.registerAction('generateHotKeywordList',(invocation)=>{\n const search_keywords = invocation.args?.data?.data?.hotKeywordList || [];\n const isShowHotKeyword = invocation.args?.data?.data?.isShowHotKeyword || false;\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-924'))\n .then((appSmartSearchOutsideItem) => {\n const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || [];\n const new_search_keywords = search_keywords.map((item, index) => {\n item.url_obj = item.url_obj || {};\n const hotwordItem = hotwords.find(e=>e.word === item.word);\n if (hotwordItem) {\n item.icon = hotwordItem.icon || '';\n }\n if (!item.urlObj || !item.urlObj.url) {\n item.urlObj = {\n ...item.url_obj,\n url: item.url_obj.type === 'search' ? `${SEARCH_URL}?q=${item.word}` : item.url_obj.url,\n };\n }\n return item;\n });\n document.querySelectorAll('.app-hot-keyword-render-child')\n .forEach((ele) => {\n SPZ.whenApiDefined(ele)\n .then((hotWordsChildDom) => {\n hotWordsChildDom.render({\n list: new_search_keywords,\n isShowHotKeyword: isShowHotKeyword,\n });\n })\n });\n })\n });\n }\n\n onTapHotWord(type){\n const index = type === 'inside' ? this.insideCarouselIndex : this.outsideCarouselIndex;\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-924'))\n .then((appSmartSearchOutsideItem) => {\n const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || [];\n const currentHotwordItem = hotwords[index] || null;\n if (currentHotwordItem && currentHotwordItem.url_obj) {\n currentHotwordItem.url_obj.url = currentHotwordItem.url_obj.type === 'search' ? `${SEARCH_URL}?q=${currentHotwordItem.word}` : currentHotwordItem.url_obj.url;\n }\n SPZ.whenApiDefined(document.getElementById('app-smart-search-924'))\n .then((ljsSearch) => {\n if (currentHotwordItem) {\n ljsSearch.handleHotKeyword_({\n word: currentHotwordItem.word,\n query_type: currentHotwordItem.type,\n url: currentHotwordItem.url_obj?.url,\n });\n } else {\n this.handleSearchSubmit_([''],1);\n }\n })\n })\n }\n\n getOutsideCarouselConfig(){\n return SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-924'))\n .then((appSmartSearchOutsideItem) => {\n return {\n ...appSmartSearchOutsideItem.getData(),\n outsideCarouselIndex: this.outsideCarouselIndex,\n }\n })\n }\n\n listenerResize() {\n window.removeEventListener('resize', window.smartSearchResizeCallback);\n\n window.smartSearchResizeCallback = SPZCore.Types.debounce(\n this.win,\n () => {\n this.init();\n },\n DELAY\n );\n\n window.addEventListener('resize', window.smartSearchResizeCallback);\n }\n\n isDesktop() {\n const mediaQueryList = window.matchMedia(`(min-width: ${BREAKPOINT}px)`);\n return mediaQueryList.matches;\n }\n\n hasMobileUpperRightPlugin() {\n return !['geek', 'flash', 'boost'].includes(THEME_NAME.toLocaleLowerCase());\n }\n\n showMobileSmartSearch() {\n this.mobileHeaderPluginParentEle = this.getMobileHeaderPluginParentEle();\n this.setMobileHeaderIconsPluginStyle(this.mobileHeaderPluginParentEle);\n }\n\n getMobileHeaderPluginParentEle() {\n const MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP = {\n nova: '.header__mobile #header__plugin-container',\n hero: '.header__icons .tw-flex.tw-justify-end.tw-items-center.tw-space-x-7',\n onePage: '.header__mobile #header__plugin-container',\n wind: '#header-icons .flex.justify-end.items-center',\n eva: '#header__icons .plugin_content'\n };\n\n const headerPluginParentSelector = this.combineMultipleSelectors(\n Object.values(MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP)\n );\n return document.querySelector(headerPluginParentSelector);\n }\n\n setMobileHeaderIconsPluginStyle(pluginParentEle) {\n if (!pluginParentEle) {\n return;\n }\n const containHidden = pluginParentEle.classList.contains('md:hidden');\n const containTwHidden = pluginParentEle.classList.contains('md:tw-hidden');\n\n if (containHidden || containTwHidden) {\n Array.from(pluginParentEle.children).forEach((pluginElement) => {\n if (!this.hasSmartSearchPlugin(pluginElement)) {\n pluginElement.style.display = 'none';\n }\n });\n pluginParentEle.classList.remove('md:hidden', 'md:tw-hidden');\n } else {\n const smartSearchPluginElement = Array.from(pluginParentEle.children).find(\n (pluginElement) => {\n return this.hasSmartSearchPlugin(pluginElement);\n }\n );\n smartSearchPluginElement.style.display = 'block';\n }\n }\n\n hasSmartSearchPlugin(pluginElement) {\n return (\n pluginElement.classList.contains(`${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`) ||\n pluginElement.querySelectorAll(`.${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`).length > 0\n );\n }\n\n addMobileSmartSearch() {\n this.mobileHeaderIconsEle = this.getMobileHeaderIconsEle();\n this.smartSearchWrapEle = this.getSmartSearchWrapEle();\n this.appendSmartSearchToHeader();\n }\n\n getMobileHeaderIconsEle() {\n // Must be the parent element of the plugin\n const MOBILE_HEADER_ICONS_ELE_MAP = {\n geek: '#header-mobile-container .flex.items-center.justify-end.flex-shrink-0',\n flash: '#header-layout .header__icons',\n boost: '.header__mobile-bottom .tw-flex.tw-items-center.tw-justify-end.tw-flex-1'\n };\n\n const headerIconsSelector = this.combineMultipleSelectors(\n Object.values(MOBILE_HEADER_ICONS_ELE_MAP)\n );\n return document.querySelector(headerIconsSelector);\n }\n\n getSmartSearchWrapEle() {\n const smartSearchWrapEle = document.querySelector(this.getSmartSearchWrapSelector());\n if (!smartSearchWrapEle) {\n return null;\n }\n return smartSearchWrapEle;\n }\n\n appendSmartSearchToHeader() {\n if (!this.smartSearchWrapEle) {\n return;\n }\n\n this.mobileHeaderIconsEle.insertAdjacentElement('afterbegin', this.smartSearchWrapEle);\n }\n\n getSmartSearchWrapSelector() {\n const PLUGIN_POSITION = {\n DRAWER: 'drawer',\n HEADER_TOP: 'headerTop'\n };\n // only one this plugin of ancestor element\n const MOBILE_PLUGIN_POSITION_ELE_MAP = {\n [PLUGIN_POSITION.DRAWER]: {\n geek: '#header-menu-mobile #menu-drawer',\n flash: '#menu-drawer .plugin__header-content',\n boost: '.header__drawer'\n },\n [PLUGIN_POSITION.HEADER_TOP]: {\n geek: '#header-menu-mobile #menu-drawer',\n flash: '#menu-drawer .plugin__header-content',\n boost: '.header-content .logo-wrap'\n }\n };\n\n const MbPluginPositionInTheme = [\n ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.DRAWER]),\n ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.HEADER_TOP])\n ];\n\n return Object.values(MbPluginPositionInTheme).reduce((pre, ancestor) => {\n if (pre === '') {\n return `${ancestor} .app-smart-product-search-container`;\n }\n if (pre.includes(ancestor)) {\n return pre;\n }\n return `${pre},${ancestor} .app-smart-product-search-container`;\n }, '');\n }\n\n combineMultipleSelectors(selectorList) {\n return selectorList.reduce((pre, selector) => {\n if (pre === '') {\n return `${selector}`;\n }\n if (pre.includes(selector)) {\n return pre;\n }\n return `${pre},${selector}`;\n }, '');\n }\n }\n\n SPZ.defineElement(TAG, SpzCustomSmartSearchLocation);\n\n\n \n
\n
\n\n
\n \n \n
\n
Powered by \"GoogleTranslate
\n \n \n \n \n \n \n
\n
\n
\n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n \n \n \n
\n
\n \n\n\n\n\n\n\n \n\n
\n
\n
\n\n \n
\n
\n \n\n\n\n\n\n\n \n\n
\n
\n \n \n
\n
\n\n \n
\n
\n \n \n \n
\n \n \n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n\n \n
\n\n \n const template_name = SHOPLAZZA?.meta?.page?.template_name || '';\n const SEARCH_URL = '/search';\n const TAG = 'spz-custom-smart-search-location';\n const SMART_PRODUCR_SEARCH_WRAP_CLASSNAME = 'app-smart-product-search-container';\n const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name.replace(/ /g,'');\n const BREAKPOINT = 960;\n const DELAY = 300;\n\n function diffThemeName(themeNameA, themeNameB){\n return themeNameA.toLocaleLowerCase().includes(themeNameB.toLocaleLowerCase())\n }\n\n const HEADER_DOM_MAP = {\n eva: 'header .header_grid_layout',\n geek: `.header-mobile-inner-container`,\n onePage: 'header .header',\n wind: 'header #header-nav',\n nova: 'header .header',\n hero: 'header .header__nav',\n 'flash': '#shoplaza-section-header>div>div',\n 'lifestyle': '#shoplaza-section-header .header__wrapper'\n }\n let HEADER_DOM = 'header';\n\n Object.keys(HEADER_DOM_MAP)\n .map(themeName=>{\n if (diffThemeName(THEME_NAME, themeName)) {\n HEADER_DOM = HEADER_DOM_MAP[themeName];\n }\n })\n\n const SEARCH_ICON_CLASS_MAP = {\n 'flash': 'app-smart-icon-search-large-flash',\n 'hero': 'app-smart-icon-search-large-hero',\n 'geek': 'app-smart-icon-search-large-geek',\n 'nova': 'app-smart-icon-search-large-nova',\n };\n let SEARCH_ICON_CLASS = 'app-smart-icon-search-large-default';\n Object.keys(SEARCH_ICON_CLASS_MAP)\n .map(themeName=>{\n if (diffThemeName(THEME_NAME, themeName)) {\n SEARCH_ICON_CLASS = SEARCH_ICON_CLASS_MAP[themeName];\n }\n })\n\n class SpzCustomSmartSearchLocation extends SPZ.BaseElement {\n constructor(element) {\n super(element);\n this.mobileHeaderPluginParentEle = null;\n this.outsideCarouselIndex = 0;\n this.insideCarouselIndex = 0;\n this.searchItemType = 'icon';\n }\n\n static deferredMount() {\n return false;\n }\n\n isLayoutSupported(layout) {\n return layout == SPZCore.Layout.LOGIC;\n }\n\n buildCallback() {\n this.init();\n this.listenerResize();\n this.initRegisterActions();\n }\n\n addIconClass(){\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>{\n e.classList.add(SEARCH_ICON_CLASS)\n });\n }\n\n moveIcon(){\n if (!diffThemeName(THEME_NAME, 'lifestyle')) return;\n if (this.searchItemType === 'input') return;\n if (this.isDesktop()) return;\n const smart_search_dom = document.querySelector('#app-smart-product-search-container-899');\n if (!smart_search_dom) return;\n const hasMovedIcon = !!document.querySelector('.header__wrapper .container .row.header>div>#app-smart-product-search-container-899');\n if (hasMovedIcon) return;\n const headerDivList = document.querySelectorAll('.header__wrapper .container .row.header>div');\n const iconBoxDom = headerDivList[headerDivList.length-1]\n iconBoxDom.appendChild(smart_search_dom, iconBoxDom.firstChild);\n }\n\n init() {\n this.addIconClass();\n this.moveIcon();\n if ( this.searchItemType === 'input' ) {\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'none');\n const mobileSmartSearchDom = document.querySelector(`.smart-search-mobile-container .app-smart-product-search-wrap`);\n if ( this.isDesktop() ) {\n document.querySelector(`#app-smart-product-search-container-899`).style=\"display: block\";\n if (mobileSmartSearchDom) {\n document.querySelector(`#app-smart-product-search-container-899`).appendChild(mobileSmartSearchDom);\n }\n }else{\n if( template_name=='search' ) return;\n if (!document.querySelector(`.smart-search-mobile-container`)) {\n const appSmartSearchContainer = document.createElement('div');\n appSmartSearchContainer.classList.add('smart-search-mobile-container');\n appSmartSearchContainer.classList.add('smart-search-mobile-container-'+THEME_NAME.toLocaleLowerCase());\n document.querySelector(HEADER_DOM).appendChild(appSmartSearchContainer);\n }\n if (!mobileSmartSearchDom) {\n document.querySelector(`.smart-search-mobile-container`).appendChild(\n document.querySelector(`.app-smart-product-search-wrap`)\n )\n }\n }\n }else{\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'flex');\n }\n // PC-end not load\n if (this.isDesktop()) {\n return;\n }\n if (!window.__isLoadAppSmartSearch__) {\n this.initSmartSearch();\n console.log('__isLoadAppSmartSearch__');\n }\n // B-end must reload\n if (window.self === window.top && !window.__isLoadAppSmartSearch__) {\n window.__isLoadAppSmartSearch__ = true;\n }\n }\n\n initSmartSearch() {\n if (this.hasMobileUpperRightPlugin()) {\n this.showMobileSmartSearch();\n } else {\n this.addMobileSmartSearch();\n }\n }\n\n initRegisterActions(){\n this.registOnSearchInputChange();\n this.registOnSearchFormSubmit();\n this.registOnOutsideCarouselIndexChange();\n this.registOnInsideCarouselIndexChange();\n this.registGetSearchItemType();\n this.registGenerateHotKeywordList();\n this.registerAction('onTapHotWord',(invocation)=>{\n this.onTapHotWord(invocation.args.type);\n });\n }\n\n registOnSearchInputChange(){\n this.registerAction('onSearchInputChange',(invocation)=>{\n const keyword = invocation.args.keyword;\n if (keyword === null || !keyword.length) {\n document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{\n e.style='display: block';\n }); \n } else {\n document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{\n e.style='display: none';\n });\n }\n })\n }\n\n registOnSearchFormSubmit(){\n this.registerAction('onSearchFormSubmit',(invocation)=>{\n const event = invocation.args.event;\n const keywordArray = event.q || [];\n const keyword = keywordArray[0];\n if (keyword!==null && keyword.length) {\n this.handleSearchSubmit_(keywordArray,1);\n } else {\n this.onTapHotWord('inside')\n }\n })\n }\n\n handleSearchSubmit_(value, retryNum){\n SPZ.whenApiDefined(document.getElementById('app-smart-search-899'))\n .then((ljsSearch) => {\n try{\n ljsSearch.handleSearchSubmit_({\n value: value\n })\n }catch(e){\n console.log('catch error',retryNum)\n if( 3 > retryNum ){\n this.handleSearchSubmit_(value, retryNum + 1);\n return;\n }\n const searchStr = value[0] || '';\n const searchResult = ljsSearch.setThinkSearchData_(searchStr);\n ljsSearch.afterSearching({\n query: searchResult.query,\n url: `${SEARCH_URL}?q=${searchStr}`,\n queryType: searchResult.queryType,\n })\n }\n })\n }\n\n registOnOutsideCarouselIndexChange(){\n this.registerAction('onOutsideCarouselIndexChange',(invocation)=>{\n this.outsideCarouselIndex = invocation.args.index || 0;\n })\n }\n\n registOnInsideCarouselIndexChange(){\n this.registerAction('onInsideCarouselIndexChange',(invocation)=>{\n this.insideCarouselIndex = invocation.args.index || 0;\n })\n }\n\n registGetSearchItemType(searchItemType){\n this.registerAction('getSearchItemType',(invocation)=>{\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-899'))\n .then((appSmartSearchOutsideItem) => {\n const search_item_type = appSmartSearchOutsideItem.getData()?.search_item_type;\n this.searchItemType = search_item_type || this.searchItemType;\n this.init();\n })\n })\n }\n\n registGenerateHotKeywordList(){\n this.registerAction('generateHotKeywordList',(invocation)=>{\n const search_keywords = invocation.args?.data?.data?.hotKeywordList || [];\n const isShowHotKeyword = invocation.args?.data?.data?.isShowHotKeyword || false;\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-899'))\n .then((appSmartSearchOutsideItem) => {\n const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || [];\n const new_search_keywords = search_keywords.map((item, index) => {\n item.url_obj = item.url_obj || {};\n const hotwordItem = hotwords.find(e=>e.word === item.word);\n if (hotwordItem) {\n item.icon = hotwordItem.icon || '';\n }\n if (!item.urlObj || !item.urlObj.url) {\n item.urlObj = {\n ...item.url_obj,\n url: item.url_obj.type === 'search' ? `${SEARCH_URL}?q=${item.word}` : item.url_obj.url,\n };\n }\n return item;\n });\n document.querySelectorAll('.app-hot-keyword-render-child')\n .forEach((ele) => {\n SPZ.whenApiDefined(ele)\n .then((hotWordsChildDom) => {\n hotWordsChildDom.render({\n list: new_search_keywords,\n isShowHotKeyword: isShowHotKeyword,\n });\n })\n });\n })\n });\n }\n\n onTapHotWord(type){\n const index = type === 'inside' ? this.insideCarouselIndex : this.outsideCarouselIndex;\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-899'))\n .then((appSmartSearchOutsideItem) => {\n const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || [];\n const currentHotwordItem = hotwords[index] || null;\n if (currentHotwordItem && currentHotwordItem.url_obj) {\n currentHotwordItem.url_obj.url = currentHotwordItem.url_obj.type === 'search' ? `${SEARCH_URL}?q=${currentHotwordItem.word}` : currentHotwordItem.url_obj.url;\n }\n SPZ.whenApiDefined(document.getElementById('app-smart-search-899'))\n .then((ljsSearch) => {\n if (currentHotwordItem) {\n ljsSearch.handleHotKeyword_({\n word: currentHotwordItem.word,\n query_type: currentHotwordItem.type,\n url: currentHotwordItem.url_obj?.url,\n });\n } else {\n this.handleSearchSubmit_([''],1);\n }\n })\n })\n }\n\n getOutsideCarouselConfig(){\n return SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-899'))\n .then((appSmartSearchOutsideItem) => {\n return {\n ...appSmartSearchOutsideItem.getData(),\n outsideCarouselIndex: this.outsideCarouselIndex,\n }\n })\n }\n\n listenerResize() {\n window.removeEventListener('resize', window.smartSearchResizeCallback);\n\n window.smartSearchResizeCallback = SPZCore.Types.debounce(\n this.win,\n () => {\n this.init();\n },\n DELAY\n );\n\n window.addEventListener('resize', window.smartSearchResizeCallback);\n }\n\n isDesktop() {\n const mediaQueryList = window.matchMedia(`(min-width: ${BREAKPOINT}px)`);\n return mediaQueryList.matches;\n }\n\n hasMobileUpperRightPlugin() {\n return !['geek', 'flash', 'boost'].includes(THEME_NAME.toLocaleLowerCase());\n }\n\n showMobileSmartSearch() {\n this.mobileHeaderPluginParentEle = this.getMobileHeaderPluginParentEle();\n this.setMobileHeaderIconsPluginStyle(this.mobileHeaderPluginParentEle);\n }\n\n getMobileHeaderPluginParentEle() {\n const MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP = {\n nova: '.header__mobile #header__plugin-container',\n hero: '.header__icons .tw-flex.tw-justify-end.tw-items-center.tw-space-x-7',\n onePage: '.header__mobile #header__plugin-container',\n wind: '#header-icons .flex.justify-end.items-center',\n eva: '#header__icons .plugin_content'\n };\n\n const headerPluginParentSelector = this.combineMultipleSelectors(\n Object.values(MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP)\n );\n return document.querySelector(headerPluginParentSelector);\n }\n\n setMobileHeaderIconsPluginStyle(pluginParentEle) {\n if (!pluginParentEle) {\n return;\n }\n const containHidden = pluginParentEle.classList.contains('md:hidden');\n const containTwHidden = pluginParentEle.classList.contains('md:tw-hidden');\n\n if (containHidden || containTwHidden) {\n Array.from(pluginParentEle.children).forEach((pluginElement) => {\n if (!this.hasSmartSearchPlugin(pluginElement)) {\n pluginElement.style.display = 'none';\n }\n });\n pluginParentEle.classList.remove('md:hidden', 'md:tw-hidden');\n } else {\n const smartSearchPluginElement = Array.from(pluginParentEle.children).find(\n (pluginElement) => {\n return this.hasSmartSearchPlugin(pluginElement);\n }\n );\n smartSearchPluginElement.style.display = 'block';\n }\n }\n\n hasSmartSearchPlugin(pluginElement) {\n return (\n pluginElement.classList.contains(`${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`) ||\n pluginElement.querySelectorAll(`.${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`).length > 0\n );\n }\n\n addMobileSmartSearch() {\n this.mobileHeaderIconsEle = this.getMobileHeaderIconsEle();\n this.smartSearchWrapEle = this.getSmartSearchWrapEle();\n this.appendSmartSearchToHeader();\n }\n\n getMobileHeaderIconsEle() {\n // Must be the parent element of the plugin\n const MOBILE_HEADER_ICONS_ELE_MAP = {\n geek: '#header-mobile-container .flex.items-center.justify-end.flex-shrink-0',\n flash: '#header-layout .header__icons',\n boost: '.header__mobile-bottom .tw-flex.tw-items-center.tw-justify-end.tw-flex-1'\n };\n\n const headerIconsSelector = this.combineMultipleSelectors(\n Object.values(MOBILE_HEADER_ICONS_ELE_MAP)\n );\n return document.querySelector(headerIconsSelector);\n }\n\n getSmartSearchWrapEle() {\n const smartSearchWrapEle = document.querySelector(this.getSmartSearchWrapSelector());\n if (!smartSearchWrapEle) {\n return null;\n }\n return smartSearchWrapEle;\n }\n\n appendSmartSearchToHeader() {\n if (!this.smartSearchWrapEle) {\n return;\n }\n\n this.mobileHeaderIconsEle.insertAdjacentElement('afterbegin', this.smartSearchWrapEle);\n }\n\n getSmartSearchWrapSelector() {\n const PLUGIN_POSITION = {\n DRAWER: 'drawer',\n HEADER_TOP: 'headerTop'\n };\n // only one this plugin of ancestor element\n const MOBILE_PLUGIN_POSITION_ELE_MAP = {\n [PLUGIN_POSITION.DRAWER]: {\n geek: '#header-menu-mobile #menu-drawer',\n flash: '#menu-drawer .plugin__header-content',\n boost: '.header__drawer'\n },\n [PLUGIN_POSITION.HEADER_TOP]: {\n geek: '#header-menu-mobile #menu-drawer',\n flash: '#menu-drawer .plugin__header-content',\n boost: '.header-content .logo-wrap'\n }\n };\n\n const MbPluginPositionInTheme = [\n ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.DRAWER]),\n ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.HEADER_TOP])\n ];\n\n return Object.values(MbPluginPositionInTheme).reduce((pre, ancestor) => {\n if (pre === '') {\n return `${ancestor} .app-smart-product-search-container`;\n }\n if (pre.includes(ancestor)) {\n return pre;\n }\n return `${pre},${ancestor} .app-smart-product-search-container`;\n }, '');\n }\n\n combineMultipleSelectors(selectorList) {\n return selectorList.reduce((pre, selector) => {\n if (pre === '') {\n return `${selector}`;\n }\n if (pre.includes(selector)) {\n return pre;\n }\n return `${pre},${selector}`;\n }, '');\n }\n }\n\n SPZ.defineElement(TAG, SpzCustomSmartSearchLocation);\n\n\n \n
\n
\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n
\n \n \n\n\n

\n \n \n \n \n\n \n \n \n \n\n

\n\n\n \n\n \n \n \n \n \n\n
\n \n
\n \n \n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n\n \n
\n\n \n const template_name = SHOPLAZZA?.meta?.page?.template_name || '';\n const SEARCH_URL = '/search';\n const TAG = 'spz-custom-smart-search-location';\n const SMART_PRODUCR_SEARCH_WRAP_CLASSNAME = 'app-smart-product-search-container';\n const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name.replace(/ /g,'');\n const BREAKPOINT = 960;\n const DELAY = 300;\n\n function diffThemeName(themeNameA, themeNameB){\n return themeNameA.toLocaleLowerCase().includes(themeNameB.toLocaleLowerCase())\n }\n\n const HEADER_DOM_MAP = {\n eva: 'header .header_grid_layout',\n geek: `.header-mobile-inner-container`,\n onePage: 'header .header',\n wind: 'header #header-nav',\n nova: 'header .header',\n hero: 'header .header__nav',\n 'flash': '#shoplaza-section-header>div>div',\n 'lifestyle': '#shoplaza-section-header .header__wrapper'\n }\n let HEADER_DOM = 'header';\n\n Object.keys(HEADER_DOM_MAP)\n .map(themeName=>{\n if (diffThemeName(THEME_NAME, themeName)) {\n HEADER_DOM = HEADER_DOM_MAP[themeName];\n }\n })\n\n const SEARCH_ICON_CLASS_MAP = {\n 'flash': 'app-smart-icon-search-large-flash',\n 'hero': 'app-smart-icon-search-large-hero',\n 'geek': 'app-smart-icon-search-large-geek',\n 'nova': 'app-smart-icon-search-large-nova',\n };\n let SEARCH_ICON_CLASS = 'app-smart-icon-search-large-default';\n Object.keys(SEARCH_ICON_CLASS_MAP)\n .map(themeName=>{\n if (diffThemeName(THEME_NAME, themeName)) {\n SEARCH_ICON_CLASS = SEARCH_ICON_CLASS_MAP[themeName];\n }\n })\n\n class SpzCustomSmartSearchLocation extends SPZ.BaseElement {\n constructor(element) {\n super(element);\n this.mobileHeaderPluginParentEle = null;\n this.outsideCarouselIndex = 0;\n this.insideCarouselIndex = 0;\n this.searchItemType = 'icon';\n }\n\n static deferredMount() {\n return false;\n }\n\n isLayoutSupported(layout) {\n return layout == SPZCore.Layout.LOGIC;\n }\n\n buildCallback() {\n this.init();\n this.listenerResize();\n this.initRegisterActions();\n }\n\n addIconClass(){\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>{\n e.classList.add(SEARCH_ICON_CLASS)\n });\n }\n\n moveIcon(){\n if (!diffThemeName(THEME_NAME, 'lifestyle')) return;\n if (this.searchItemType === 'input') return;\n if (this.isDesktop()) return;\n const smart_search_dom = document.querySelector('#app-smart-product-search-container-961');\n if (!smart_search_dom) return;\n const hasMovedIcon = !!document.querySelector('.header__wrapper .container .row.header>div>#app-smart-product-search-container-961');\n if (hasMovedIcon) return;\n const headerDivList = document.querySelectorAll('.header__wrapper .container .row.header>div');\n const iconBoxDom = headerDivList[headerDivList.length-1]\n iconBoxDom.appendChild(smart_search_dom, iconBoxDom.firstChild);\n }\n\n init() {\n this.addIconClass();\n this.moveIcon();\n if ( this.searchItemType === 'input' ) {\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'none');\n const mobileSmartSearchDom = document.querySelector(`.smart-search-mobile-container .app-smart-product-search-wrap`);\n if ( this.isDesktop() ) {\n document.querySelector(`#app-smart-product-search-container-961`).style=\"display: block\";\n if (mobileSmartSearchDom) {\n document.querySelector(`#app-smart-product-search-container-961`).appendChild(mobileSmartSearchDom);\n }\n }else{\n if( template_name=='search' ) return;\n if (!document.querySelector(`.smart-search-mobile-container`)) {\n const appSmartSearchContainer = document.createElement('div');\n appSmartSearchContainer.classList.add('smart-search-mobile-container');\n appSmartSearchContainer.classList.add('smart-search-mobile-container-'+THEME_NAME.toLocaleLowerCase());\n document.querySelector(HEADER_DOM).appendChild(appSmartSearchContainer);\n }\n if (!mobileSmartSearchDom) {\n document.querySelector(`.smart-search-mobile-container`).appendChild(\n document.querySelector(`.app-smart-product-search-wrap`)\n )\n }\n }\n }else{\n document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'flex');\n }\n // PC-end not load\n if (this.isDesktop()) {\n return;\n }\n if (!window.__isLoadAppSmartSearch__) {\n this.initSmartSearch();\n console.log('__isLoadAppSmartSearch__');\n }\n // B-end must reload\n if (window.self === window.top && !window.__isLoadAppSmartSearch__) {\n window.__isLoadAppSmartSearch__ = true;\n }\n }\n\n initSmartSearch() {\n if (this.hasMobileUpperRightPlugin()) {\n this.showMobileSmartSearch();\n } else {\n this.addMobileSmartSearch();\n }\n }\n\n initRegisterActions(){\n this.registOnSearchInputChange();\n this.registOnSearchFormSubmit();\n this.registOnOutsideCarouselIndexChange();\n this.registOnInsideCarouselIndexChange();\n this.registGetSearchItemType();\n this.registGenerateHotKeywordList();\n this.registerAction('onTapHotWord',(invocation)=>{\n this.onTapHotWord(invocation.args.type);\n });\n }\n\n registOnSearchInputChange(){\n this.registerAction('onSearchInputChange',(invocation)=>{\n const keyword = invocation.args.keyword;\n if (keyword === null || !keyword.length) {\n document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{\n e.style='display: block';\n }); \n } else {\n document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{\n e.style='display: none';\n });\n }\n })\n }\n\n registOnSearchFormSubmit(){\n this.registerAction('onSearchFormSubmit',(invocation)=>{\n const event = invocation.args.event;\n const keywordArray = event.q || [];\n const keyword = keywordArray[0];\n if (keyword!==null && keyword.length) {\n this.handleSearchSubmit_(keywordArray,1);\n } else {\n this.onTapHotWord('inside')\n }\n })\n }\n\n handleSearchSubmit_(value, retryNum){\n SPZ.whenApiDefined(document.getElementById('app-smart-search-961'))\n .then((ljsSearch) => {\n try{\n ljsSearch.handleSearchSubmit_({\n value: value\n })\n }catch(e){\n console.log('catch error',retryNum)\n if( 3 > retryNum ){\n this.handleSearchSubmit_(value, retryNum + 1);\n return;\n }\n const searchStr = value[0] || '';\n const searchResult = ljsSearch.setThinkSearchData_(searchStr);\n ljsSearch.afterSearching({\n query: searchResult.query,\n url: `${SEARCH_URL}?q=${searchStr}`,\n queryType: searchResult.queryType,\n })\n }\n })\n }\n\n registOnOutsideCarouselIndexChange(){\n this.registerAction('onOutsideCarouselIndexChange',(invocation)=>{\n this.outsideCarouselIndex = invocation.args.index || 0;\n })\n }\n\n registOnInsideCarouselIndexChange(){\n this.registerAction('onInsideCarouselIndexChange',(invocation)=>{\n this.insideCarouselIndex = invocation.args.index || 0;\n })\n }\n\n registGetSearchItemType(searchItemType){\n this.registerAction('getSearchItemType',(invocation)=>{\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-961'))\n .then((appSmartSearchOutsideItem) => {\n const search_item_type = appSmartSearchOutsideItem.getData()?.search_item_type;\n this.searchItemType = search_item_type || this.searchItemType;\n this.init();\n })\n })\n }\n\n registGenerateHotKeywordList(){\n this.registerAction('generateHotKeywordList',(invocation)=>{\n const search_keywords = invocation.args?.data?.data?.hotKeywordList || [];\n const isShowHotKeyword = invocation.args?.data?.data?.isShowHotKeyword || false;\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-961'))\n .then((appSmartSearchOutsideItem) => {\n const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || [];\n const new_search_keywords = search_keywords.map((item, index) => {\n item.url_obj = item.url_obj || {};\n const hotwordItem = hotwords.find(e=>e.word === item.word);\n if (hotwordItem) {\n item.icon = hotwordItem.icon || '';\n }\n if (!item.urlObj || !item.urlObj.url) {\n item.urlObj = {\n ...item.url_obj,\n url: item.url_obj.type === 'search' ? `${SEARCH_URL}?q=${item.word}` : item.url_obj.url,\n };\n }\n return item;\n });\n document.querySelectorAll('.app-hot-keyword-render-child')\n .forEach((ele) => {\n SPZ.whenApiDefined(ele)\n .then((hotWordsChildDom) => {\n hotWordsChildDom.render({\n list: new_search_keywords,\n isShowHotKeyword: isShowHotKeyword,\n });\n })\n });\n })\n });\n }\n\n onTapHotWord(type){\n const index = type === 'inside' ? this.insideCarouselIndex : this.outsideCarouselIndex;\n SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-961'))\n .then((appSmartSearchOutsideItem) => {\n const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || [];\n const currentHotwordItem = hotwords[index] || null;\n if (currentHotwordItem && currentHotwordItem.url_obj) {\n currentHotwordItem.url_obj.url = currentHotwordItem.url_obj.type === 'search' ? `${SEARCH_URL}?q=${currentHotwordItem.word}` : currentHotwordItem.url_obj.url;\n }\n SPZ.whenApiDefined(document.getElementById('app-smart-search-961'))\n .then((ljsSearch) => {\n if (currentHotwordItem) {\n ljsSearch.handleHotKeyword_({\n word: currentHotwordItem.word,\n query_type: currentHotwordItem.type,\n url: currentHotwordItem.url_obj?.url,\n });\n } else {\n this.handleSearchSubmit_([''],1);\n }\n })\n })\n }\n\n getOutsideCarouselConfig(){\n return SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-961'))\n .then((appSmartSearchOutsideItem) => {\n return {\n ...appSmartSearchOutsideItem.getData(),\n outsideCarouselIndex: this.outsideCarouselIndex,\n }\n })\n }\n\n listenerResize() {\n window.removeEventListener('resize', window.smartSearchResizeCallback);\n\n window.smartSearchResizeCallback = SPZCore.Types.debounce(\n this.win,\n () => {\n this.init();\n },\n DELAY\n );\n\n window.addEventListener('resize', window.smartSearchResizeCallback);\n }\n\n isDesktop() {\n const mediaQueryList = window.matchMedia(`(min-width: ${BREAKPOINT}px)`);\n return mediaQueryList.matches;\n }\n\n hasMobileUpperRightPlugin() {\n return !['geek', 'flash', 'boost'].includes(THEME_NAME.toLocaleLowerCase());\n }\n\n showMobileSmartSearch() {\n this.mobileHeaderPluginParentEle = this.getMobileHeaderPluginParentEle();\n this.setMobileHeaderIconsPluginStyle(this.mobileHeaderPluginParentEle);\n }\n\n getMobileHeaderPluginParentEle() {\n const MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP = {\n nova: '.header__mobile #header__plugin-container',\n hero: '.header__icons .tw-flex.tw-justify-end.tw-items-center.tw-space-x-7',\n onePage: '.header__mobile #header__plugin-container',\n wind: '#header-icons .flex.justify-end.items-center',\n eva: '#header__icons .plugin_content'\n };\n\n const headerPluginParentSelector = this.combineMultipleSelectors(\n Object.values(MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP)\n );\n return document.querySelector(headerPluginParentSelector);\n }\n\n setMobileHeaderIconsPluginStyle(pluginParentEle) {\n if (!pluginParentEle) {\n return;\n }\n const containHidden = pluginParentEle.classList.contains('md:hidden');\n const containTwHidden = pluginParentEle.classList.contains('md:tw-hidden');\n\n if (containHidden || containTwHidden) {\n Array.from(pluginParentEle.children).forEach((pluginElement) => {\n if (!this.hasSmartSearchPlugin(pluginElement)) {\n pluginElement.style.display = 'none';\n }\n });\n pluginParentEle.classList.remove('md:hidden', 'md:tw-hidden');\n } else {\n const smartSearchPluginElement = Array.from(pluginParentEle.children).find(\n (pluginElement) => {\n return this.hasSmartSearchPlugin(pluginElement);\n }\n );\n smartSearchPluginElement.style.display = 'block';\n }\n }\n\n hasSmartSearchPlugin(pluginElement) {\n return (\n pluginElement.classList.contains(`${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`) ||\n pluginElement.querySelectorAll(`.${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`).length > 0\n );\n }\n\n addMobileSmartSearch() {\n this.mobileHeaderIconsEle = this.getMobileHeaderIconsEle();\n this.smartSearchWrapEle = this.getSmartSearchWrapEle();\n this.appendSmartSearchToHeader();\n }\n\n getMobileHeaderIconsEle() {\n // Must be the parent element of the plugin\n const MOBILE_HEADER_ICONS_ELE_MAP = {\n geek: '#header-mobile-container .flex.items-center.justify-end.flex-shrink-0',\n flash: '#header-layout .header__icons',\n boost: '.header__mobile-bottom .tw-flex.tw-items-center.tw-justify-end.tw-flex-1'\n };\n\n const headerIconsSelector = this.combineMultipleSelectors(\n Object.values(MOBILE_HEADER_ICONS_ELE_MAP)\n );\n return document.querySelector(headerIconsSelector);\n }\n\n getSmartSearchWrapEle() {\n const smartSearchWrapEle = document.querySelector(this.getSmartSearchWrapSelector());\n if (!smartSearchWrapEle) {\n return null;\n }\n return smartSearchWrapEle;\n }\n\n appendSmartSearchToHeader() {\n if (!this.smartSearchWrapEle) {\n return;\n }\n\n this.mobileHeaderIconsEle.insertAdjacentElement('afterbegin', this.smartSearchWrapEle);\n }\n\n getSmartSearchWrapSelector() {\n const PLUGIN_POSITION = {\n DRAWER: 'drawer',\n HEADER_TOP: 'headerTop'\n };\n // only one this plugin of ancestor element\n const MOBILE_PLUGIN_POSITION_ELE_MAP = {\n [PLUGIN_POSITION.DRAWER]: {\n geek: '#header-menu-mobile #menu-drawer',\n flash: '#menu-drawer .plugin__header-content',\n boost: '.header__drawer'\n },\n [PLUGIN_POSITION.HEADER_TOP]: {\n geek: '#header-menu-mobile #menu-drawer',\n flash: '#menu-drawer .plugin__header-content',\n boost: '.header-content .logo-wrap'\n }\n };\n\n const MbPluginPositionInTheme = [\n ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.DRAWER]),\n ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.HEADER_TOP])\n ];\n\n return Object.values(MbPluginPositionInTheme).reduce((pre, ancestor) => {\n if (pre === '') {\n return `${ancestor} .app-smart-product-search-container`;\n }\n if (pre.includes(ancestor)) {\n return pre;\n }\n return `${pre},${ancestor} .app-smart-product-search-container`;\n }, '');\n }\n\n combineMultipleSelectors(selectorList) {\n return selectorList.reduce((pre, selector) => {\n if (pre === '') {\n return `${selector}`;\n }\n if (pre.includes(selector)) {\n return pre;\n }\n return `${pre},${selector}`;\n }, '');\n }\n }\n\n SPZ.defineElement(TAG, SpzCustomSmartSearchLocation);\n\n\n \n
\n
\n\n
\n \n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n
\n \n \n \n \n \n\n \n \n \n \n
\n \n
\n
\n\n \n\n\n\n \n \n \n\n\n\n
\n\n (function(){\n let w = window.innerWidth;\n function setHeaderCssVar() {\n const headerEle = document.getElementById('shoplaza-section-header');\n if(!headerEle){ return };\n document.body.style.setProperty('--window-height', `${window.innerHeight}px`);\n document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`);\n\n const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide');\n if (mdScorllHideEle) {\n document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`);\n }\n\n const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide');\n if (pcScorllHideEle) {\n document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`);\n }\n\n }\n function handlResize() {\n if(w == window.innerWidth){return};\n w = window.innerWidth;\n setHeaderCssVar();\n };\n function init(){\n setHeaderCssVar();\n window.removeEventListener('resize', window._theme_header_listener)\n window._theme_header_listener = handlResize;\n window.addEventListener('resize', window._theme_header_listener);\n }\n init();\n })();\n\n\n
\n \n
\n
\n \n\n
\n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n
\n\n\n \n \n \n \n \n \n\n\n\n\n
\n\n
\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n \n \n \n\n \n\n\n\n\n\n\n
\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n \n

Best Seller

\n \n \n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Grinch Family Christmas Pajamas | Cream Matching Holiday Sleepwear Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Christmas Lollipop Jesus White Letter Prints Contrast Blue Long Sleeve with Blue and White Plaid Pants Family Matching Pajamas\n \n

\n\n \n \n \n \n \n \n from \n $9.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n \"2025 Family Christmas\" Letter Print Black Long Sleeve Top with Black And White Plaid Pants Family Matching Pajamas\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Grinch Holiday Pajama Set with Naughty/Nice Checklist and Christmas Characters\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n
\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Grinch Family Christmas Pajamas | Cream Matching Holiday Sleepwear Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Christmas Lollipop Jesus White Letter Prints Contrast Blue Long Sleeve with Blue and White Plaid Pants Family Matching Pajamas\n \n

\n\n \n \n \n \n \n \n from \n $9.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n \"2025 Family Christmas\" Letter Print Black Long Sleeve Top with Black And White Plaid Pants Family Matching Pajamas\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Grinch Holiday Pajama Set with Naughty/Nice Checklist and Christmas Characters\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n \"Let it Snow\" Slogan and Snowman Printed Blue Plaid Christmas Matching Pajamas\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Navy & White Plaid Christmas Pajamas Set with Snowman & Christmas Tree Print\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n
\n \n \n View more\n \n \n \n \n
\n
\n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n
\n\n\n \n \n \n \n \n \n\n\n\n\n
\n\n
\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n \n

Button-down Pajamas

\n \n \n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Red Plaid Button-Front Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Family Christmas Plaid Button-Front Pajamas Sets\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Cozy Green Plaid Button-Up Christmas PJs for Family\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Christmas Collar Button-Up Pajama Set for Family\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-down Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Santa Claus Button-Up Satin Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n
\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Red Plaid Button-Front Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Family Christmas Plaid Button-Front Pajamas Sets\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Cozy Green Plaid Button-Up Christmas PJs for Family\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Christmas Collar Button-Up Pajama Set for Family\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-down Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Santa Claus Button-Up Satin Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n
\n \n \n View more\n \n \n \n \n
\n
\n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n
\n\n\n \n \n \n \n \n \n\n\n\n\n
\n\n
\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n \n

Tie-Dye Dreams

\n \n \n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Green & Yellow Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Green Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Red Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Blue Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n\n\n\n\n\n \n\n\n\n\n\n \n\n \n \n \n\n \n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \"\"\n \n \n \n\n \n \"\"\n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Blue & Tree Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n
\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Green & Yellow Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Green Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Red Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Blue Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n \n \n \n\n\n\n\n\n \n\n\n\n\n\n\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n\n \n\n \n\n
\n\n \n \n\n \n

\n \n Holiday Family Button-Up Blue & Tree Tie-dyed Christmas Pajamas Set\n \n

\n\n \n \n \n \n \n \n from \n $19.99\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n
\n \n
\n \n \n View more\n \n \n \n \n
\n
\n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n
\n\n\n \n \n \n \n \n \n\n\n\n\n
\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n
\n
    \n \n \n \n
  • \n \n \n \n \n \n \n \n

    Free shipping

    \n

    Free shipping for orders over $99

    \n
  • \n \n \n \n
  • \n \n \n \n \n \n \n \n

    QUICK RESPONSE

    \n

    Email us: chillychic@gmail.com

    \n
  • \n \n \n \n
  • \n \n \n \n \n \n \n \n

    HASSLE-FREE RETURN

    \n

    Easily return in 30 days if unsatisfied

    \n
  • \n \n \n \n
  • \n \n \n \n \n \n \n \n

    Buy More Save More

    \n

    Christmas Family Pajamas-Buy Get 1 Free

    \n
  • \n \n
\n
\n
\n\n
\n \n\n \n\n \n\n \n\n
\n \n \n

\n Sign up and save\n

\n \n \n \n
\n Subscribe to get special offers, free giveaways, and once-in-a-lifetime deals.\n
\n \n \n \n \n \n\n
\n \n \n \n\n \n\n \n
\n\n \n \n \n \n \n \n
\n\n\n\n
\n
\n
\n\n\n\n \n \n
\n
\n \n \n \n \n \n \n \n \n
\n \n
\n \n

\n CUSTOMER CARE\n

\n \n \n \n \n
\n\n \n \n \n
\n

\n CUSTOMER CARE\n \n

\n
\n \n
\n
\n
\n \n
\n\n \n \n \n \n \n \n \n \n \n
\n \n
\n \n

\n HELP & SUPPORT\n

\n \n \n \n \n
\n\n \n \n \n
\n

\n HELP & SUPPORT\n \n

\n
\n \n
\n
\n
\n \n
\n\n \n \n \n \n \n \n \n \n \n
\n \n
\n \n

\n COLLECTION LIST\n

\n \n \n \n \n
\n\n \n \n \n
\n

\n COLLECTION LIST\n \n

\n \n
\n
\n \n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n
\n \n

\n Get in touch\n

\n \n \n
    \n \n \n
    \n \n \n
  • \n \n Email us\n
  • \n \n \n
    \n \n \n
  • support@chillychic.com

  • \n \n \n
\n \n
\n\n \n \n \n
\n

\n Get in touch\n \n

\n
\n
    \n \n \n
    \n \n \n
  • \n \n Email us\n
  • \n \n \n
    \n \n \n
  • support@chillychic.com

  • \n \n \n
\n
\n
\n
\n \n
\n\n \n
\n \n \n \n
\n
\n \n\n\n\n\n\n\n \n\n \n\n
\n
\n \n ©  chillychic\n \n \n \n
\n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n \n \n\n \n\n \n \n \n\n\n \n\n\n
\n
\n \n \n\n\n\n\n\n\n\n \n
\n \n \n
\n \n
\n \n
\n \n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n
\n
\n
×
\n
\n
\n \"\"\n
\n
\n
\n
\n All Pajamas \n
\n
\n Buy 1 Get 1 Free\n
\n
\n \n
\n \n \n\n \n\n
* Ihre persönlichen Daten werden strengstens vor Offenlegung geschützt.
\n \n \n\n \n \n
\n
\n
111
111
Item has been added
const zebu_ativity_pop_show_history_key = 'zebu_ativity_pop_show_history'; class SpzCustomComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this._atcLineItem = {}; this.cart_ = {}; this.top_product_ids_ = []; this.products_ = []; this.activityId_ = null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {}; this.config_ = {}; this.page_ = 1; this.limit_ = 10; this.loading_ = false; this.activityPopShowHistoryConfig = null; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } generateActivityPopShowHistoryKey(activity_id){ const customer_id = window.C_SETTINGS.customer.customer_id || 'unlogin'; return customer_id + '-' + activity_id; } judgeCanShowCartPop(data){ const pop_frequency = data.config.pop_frequency; if (pop_frequency == 'once'){ return { show: !window.sessionStorage.getItem('smart_pop_times'), type: 'once' }; } if( pop_frequency == 'not_limit' ){ return { show: true, type: 'not_limit' }; } const activityPopShowHistory = this.getActivityPopShowHistory(); if( !activityPopShowHistory ){ return { show: true, type: 'no_history' }; } const historyKey = this.generateActivityPopShowHistoryKey(data.id); const historyItem = activityPopShowHistory[historyKey]; if( !historyItem ){ return { show: true, type: 'no_history' }; } if( pop_frequency == 'once' ){ return { show: false, type: 'once' }; } const splitArray = pop_frequency.split(':'); if( splitArray.length != 3 ){ return { show: true, type: 'rule_error' }; } const limitType = splitArray[0]; const limitTypeNum = Number(splitArray[1]); const limitNum = Number(splitArray[2]); const startTime = Number(historyItem['startTime']); const count = Number(historyItem['count']); if( new Date().getTime() >= this.getLimitEndTime( startTime, limitType, limitTypeNum ) ){ return { show: true, type: 'another_range' }; } if( limitNum > count ){ return { show: true, type: 'under_limit' }; } return { show: false, type: 'exceed_range' }; } getActivityPopShowHistory(){ try{ const activityPopShowHistory = JSON.parse(window.localStorage.getItem(zebu_ativity_pop_show_history_key)); if( typeof activityPopShowHistory != 'object' ) return null; return activityPopShowHistory; }catch(e){ return null; } } addActivityPopShowHistory(props){ if( !props ) return; const { data, ruleCheckResult } = props; const pop_frequency = data.config.pop_frequency; if( pop_frequency == 'once' ){ return window.sessionStorage.setItem('smart_pop_times', Number(window.sessionStorage.getItem('smart_pop_times')) + 1); } const historyKey = this.generateActivityPopShowHistoryKey(data.id); const activityPopShowHistory = this.getActivityPopShowHistory() || {}; const historyItem = activityPopShowHistory[historyKey]; if( ruleCheckResult.type == 'another_range' || !historyItem ){ activityPopShowHistory[historyKey] = { startTime: new Date().getTime(), count: 1, }; }else{ activityPopShowHistory[historyKey].count += 1; } return window.localStorage.setItem(zebu_ativity_pop_show_history_key,JSON.stringify(activityPopShowHistory)); } removeActivityPopShowHistory(){ return window.localStorage.removeItem(zebu_ativity_pop_show_history_key); } getLimitEndTime(startTime, rangeType, rangeNum){ if( rangeType == 'day' ){ return startTime + 24*60*60*1000 * rangeNum; } if( rangeType == 'week' ){ return startTime + 24*60*60*1000 * 7 * rangeNum; } if( rangeType == 'month' ){ const date = new Date(startTime); date.setMonth( date.getMonth() + rangeNum ); return date.getTime(); } return startTime; } mountCallback() { this.i18n_ = (window.smartRecommendI18n && window.smartRecommendI18n[document.documentElement.lang] || window.smartRecommendI18n['en-US']) || {}; const cartPopRenderEl = document.getElementById(\"smart_cart_pop_render\"); const modalEl = document.getElementById(\"smart_cart_pop_modal\"); const spmBase = `smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, }; const that = this; document.addEventListener('dj.addToCart', (event) => { try { const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block || this.rendered_) return; that.fetchActivityData({product_id: e.product_id, variant_id: e.variant_id}).then(data => { if (!data || !data.products || !data.products.length) return; const ruleCheckResult = that.judgeCanShowCartPop(data); if( !ruleCheckResult.show ) return; that.config_ = data.config; const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` #plugin_recommend_atc_pop { display: none !important; } `; document.head.appendChild(recommendStyle); SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ api.render(Object.assign({}, data, extra), true).then(function() { that.rendered_ = true; if (data.products.length) { const headEl = document.getElementById(\"smart_cart_pop_head_render\"); if (headEl) { SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); }); } SPZ.whenApiDefined(modalEl).then(function(api){ that.impressListen('#smart_cart_pop_activity', function(){ that.trackPluginImpression_(data); }); api.open(); that.activityPopShowHistoryConfig = { data, ruleCheckResult }; const intersectionObserver = new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio > 0){ !that.loading_ && (that.products_.length - that.target_top_product_num_) === that.page_ * that.limit_ && that.viewMore(); } }, { threshold: [0.1] } ); if( document.querySelector('#smart_cart_pop_view_more_text') ){ intersectionObserver.observe( document.querySelector('#smart_cart_pop_view_more_text') ); } }); } }) }); }) } catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const cartPopRenderEl = document.getElementById(\"smart_cart_pop_render\"); const that = this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_ }).then(function(data) { data.products = that.products_; data.target_top_product_num = that.target_top_product_num_; data.i18n = that.i18n_; data.spmBase = `smart_recommend_2`; api.render(data); }) }) } fetchActivityData(data) { const that = this; if (data.product_id) { that._atcLineItem = data; } that.loading_ = true; return that.getCart().then(cart => { that.cart_ = cart.cart; return fetch(window.C_SETTINGS.routes.root + \"/api/possum/recommend_activities\", { method: \"POST\", headers: { \"Content-Type\": \"application/json\", \"store-id\": window.C_SETTINGS.shop.shop_id, }, body: JSON.stringify({ \"show_type\": 2, \"line_item\": { \"product_id\": that._atcLineItem.product_id, \"variant_id\": that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, \"page\": data.page || 1, \"limit\": data.limit || 10, }) }).then(function(res){ if(res.ok){ return res.json(); } }).then(function(data){ data.cart = cart.cart; if (data.page === 1) { that.target_top_product_num_ = data.target_top_product_num || 0; } that.products_ = that.products_.concat(data.products || []); that.page_ = data.page || 1; that.limit_ = data.limit || 10; return data; }).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ = false; }) }); }; setMatchDrawerHeight_(data) { const modalContent = document.querySelector(\"#smart_cart_pop_product_list\"); const windowHeight = window.innerHeight; modalContent.style.maxHeight = windowHeight * 0.85 + \"px\"; } setAction_() { this.registerAction('changeBannerColor', (data) => { if (!data.args.data || !data.args.data.data || !data.args.data.data.data) return false; const config = data.args.data.data.data.config; const bannerBgEl = document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) { bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color = config.banner_text_color; } }); this.registerAction('handleProductChange', (data) => { const that = this; const imageEl = document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`); SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data: data.args.data, config: that.config_ }); }); const atcTextEl = document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`); SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data: data.args.data, defaultText: data.args.defaultText, soldOutText: that.i18n_.sold_out }); }); if (data.args.data.variant.available) { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none'); } else { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none'); } }); this.registerAction('handleProduct', (detail) => { const that = this; this.renderProductsForm_(detail.args.data.data); }); this.registerAction('addATCHook', (data) => { const params = data.args; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.C_SETTINGS.meta.page.template_name}.${params.spm}`, }, once: true }); }); this.registerAction('handleAtcSuccess', (detail) => { detail.args.data.product = detail.args.data.product || {}; detail.args.data.variant = detail.args.data.variant || {}; const defParams = detail.args.product.split('__'); const product_id = detail.args.data.product.id; const product_title = detail.args.data.product.title; const variant_id = detail.args.data.variant.id; const price = detail.args.data.variant.price; const aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb = detail.args.data.product.cfb; const scm = defParams[1]; const spm = defParams[2]; const ssp = defParams[3]; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.C_SETTINGS.meta.page.template_name}.${spm}`, ssp: ssp, } }; const activity_id = `${detail.args.activity_id}`; const target_drive_way = detail.args.target_drive_way; document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden'); setTimeout(() => { document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden'); document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none'); }, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') { const bannerEl = document.getElementById(`smart_cart_pop_banner`); this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) { bannerEl.innerHTML = res.rebate_tips; } }) } }); this.registerAction('handleCartSummary', (event) => { const that = this; const checkoutButtonEle = document.getElementById(\"smart_cart_pop_checkout_button\"); if (checkoutButtonEle) { SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n: that.i18n_ }, false); }); } const tipEl = document.getElementById(\"smart_cart_pop_tip_info\"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; let total_price = cart.total_price; if (!total_price) { SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); } else { this.getBindDiscount_(cart.line_items).then(res => { if (res && res.discount_code){ const total = cart.line_price - cart.total_discount - res.bundle_discount_value; if (total > 0) { total_price = total; } else { total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); }) } }); this.registerAction('open', () => { this.setMatchDrawerHeight_(); this.addActivityPopShowHistory( this.activityPopShowHistoryConfig ); }); this.registerAction('close', () => { this.rendered_ = false; this.products_ = []; window.djInterceptors && window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return fetch(`${window.C_SETTINGS.routes.root || ''}/api/cart`, { method: 'GET', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res => res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart => { this.cart_ = cart.cart; return fetch(`${window.C_SETTINGS.routes.root || ''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2, rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item: this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data) { const products = data.products; const listPopRenderEl = document.getElementById(\"smart_cart_pop_render\"); if (!listPopRenderEl) return; listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){ el.style.color = data.config.add_to_cart_button_text_color; el.style.background = data.config.add_to_cart_button_color; }); products.forEach(function(product){ const productId = product.id; const productFormEls = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id=\"${productId}\"]`); let variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id=\"${productId}\"] #smart_cart_pop_variant_${productId}_mobile ljs-variants`); if (window.innerWidth > 768) { variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id=\"${productId}\"] #smart_cart_pop_variant_${productId}_pc ljs-variants`); } productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.setProduct(product); }); }); variantsEl.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } trackPluginImpression_(rule){ if (window.sa && window.sa.track) { window.sa.track(\"module_impressions\", { aid: `smart_recommend.2.${rule.id}` }); } } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids'] && JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) => arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); } if (!carts.length) { Promise.resolve(); } return fetch(`${window.C_SETTINGS.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.C_SETTINGS.shop.shop_id, }, body: JSON.stringify({ cart: carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart', SpzCustomComponent);
\n
\n
\n
\n \"gifts\"\n
\n
\n\n
\n
\n \"membership\"\n
\n
\n\n
\n
\n \"gifts\"\n \"membership\"\n
\n
\n
\n \"gifts\"\n GIFTS\n
\n
\n
\n \"membership\"\n POINTS\n
\n
\n
\n
\n
$0.00

1

\"\"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate
","screenshot":"https://cdn.scamminder.com/include/uploads/2025/11/chillychic.com-20251108-044916.webp","loadTimeInSeconds":8.013,"title":"chillychic","keywords":"chillychic","description":"chillychic","links":["https://chillychic.com","https://chillychic.com/account/login","https://chillychic.com/account/register","https://chillychic.com/collections/best-seller","https://chillychic.com/collections/2025-christmas-pajamas","https://chillychic.com/collections/2025-text-pajamas","https://chillychic.com/collections/short-sleeve-pajamas","https://chillychic.com/collections/jesus-pajamas","https://chillychic.com/collections/cheerful-gnome-pajamas","https://chillychic.com/collections/snowman-pajamas","https://chillychic.com/collections/green-christmas-pajamas","https://chillychic.com/collections/blue-christmas-pajamas","https://chillychic.com/collections/red-christmas-pajamas","https://chillychic.com/collections/black-white-christmas-pajamas","https://chillychic.com/products/2025-family-chriatmas-quirky-heart-letter-print-blue-long-sleeve-family-matching-pajamas-with-dog-bandana1","https://chillychic.com/products/2025-family-chriatmas-quirky-heart-letter-print-blue-long-sleeve-family-matching-pajamas-with-dog-bandana1?variant=46ad602a-124f-490b-8e3a-3c725a7bc4bd","https://chillychic.com/collections/button-down-pajamas","https://chillychic.com/collections/christmas-satin-pajamas","https://chillychic.com/products/holiday-family-red-plaid-christmas-pajamas-set","https://chillychic.com/products/holiday-family-red-plaid-christmas-pajamas-set?variant=ca3bb80c-f27c-4b40-aab9-843d84890756","https://chillychic.com/collections/2025-christmas-onesie","https://chillychic.com/collections/relaxed-drawstring-pants","https://chillychic.com/collections/wide-leg-pants","https://chillychic.com/collections/family-pajamas-pants","https://chillychic.com/collections/flare-legging","https://chillychic.com/collections/legging","https://chillychic.com/collections/christmas-sweatshirt","https://chillychic.com/collections/christmas-ugly-sweater","https://chillychic.com/products/festive-christmas-tree-holiday-sweatshirt","https://chillychic.com/products/festive-christmas-tree-holiday-sweatshirt?variant=915b37e7-72ee-4e4c-8137-a3189049f35e","https://chillychic.com/collections/couple-christmas-pajamas","https://chillychic.com/collections/couple-satin-pajamas","https://chillychic.com/collections/couple-swimsuit","https://chillychic.com/products/festive-christmas-tree-holiday-sweatshirt?variant=47d10146-2ef7-48a0-a0fa-b99b3e44907c","https://chillychic.com/products/festive-christmas-tree-holiday-sweatshirt?variant=a98dbddc-c530-4378-9149-7f5fdee73629","https://chillychic.com/collections/christmas-matching-pajamas","https://chillychic.com/collections/christmas-onesies","https://chillychic.com/collections/satin-holiday-glow","https://chillychic.com/collections/tie-dye-dreams","https://chillychic.com/products/christmas-hat-and-believe-letter-print-patterned-plaid-sleeve-contrast-tops-and-red-black-white-plaid-pants-family-matching-pajamas-set-with-dog-bandana?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=2.455169986202656&ssp=-","https://chillychic.com/products/christmas-hat-and-believe-letter-print-patterned-plaid-sleeve-contrast-tops-and-red-black-white-plaid-pants-family-matching-pajamas-set-with-dog-bandana?variant=72d65c15-aec7-48f5-93b7-2d929327e4d2","https://chillychic.com/products/grinch-family-christmas-pajamas-cream-matching-holiday-sleepwear-set?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.944290461004257&ssp=-","https://chillychic.com/products/grinch-family-christmas-pajamas-cream-matching-holiday-sleepwear-set?variant=98267667-f192-4c4e-a23f-35c1129d8a57","https://chillychic.com/products/christmas-lollipop-jesus-white-letter-prints-contrast-blue-long-sleeve-with-blue-and-white-plaid-pants-family-matching-pajamas?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.5967702061667455&ssp=-","https://chillychic.com/products/christmas-lollipop-jesus-white-letter-prints-contrast-blue-long-sleeve-with-blue-and-white-plaid-pants-family-matching-pajamas?variant=05d29c93-f7ef-4076-b602-31c62ac077b3","https://chillychic.com/products/2025-family-christmas-letter-print-black-long-sleeve-top-with-black-and-white-plaid-pants-family-matching-pajamas?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.5639367301589147&ssp=-","https://chillychic.com/products/2025-family-christmas-letter-print-black-long-sleeve-top-with-black-and-white-plaid-pants-family-matching-pajamas?variant=ce07a703-2c10-43d3-82e0-ce37c2064bd4","https://chillychic.com/products/our-family-chirstmas-2024-making-memories-together-letter-print-white-blue-long-sleeves-with-blue-white-black-plaid-pants-family-matching-pajamas?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.5437502728615073&ssp=-","https://chillychic.com/products/our-family-chirstmas-2024-making-memories-together-letter-print-white-blue-long-sleeves-with-blue-white-black-plaid-pants-family-matching-pajamas?variant=f4c67b86-0127-4a29-b1d8-bdcb6f36ce40","https://chillychic.com/products/grinch-holiday-pajama-set-with-naughty-nice-checklist-and-christmas-characters?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.497744827543494&ssp=-","https://chillychic.com/products/grinch-holiday-pajama-set-with-naughty-nice-checklist-and-christmas-characters?variant=96049f1a-1837-4a07-a1fe-d05fbcef654a","https://chillychic.com/products/let-it-snow-slogan-and-snowman-printed-blue-plaid-christmas-matching-pajamas?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.4842733965381854&ssp=-","https://chillychic.com/products/let-it-snow-slogan-and-snowman-printed-blue-plaid-christmas-matching-pajamas?variant=3baaed48-deee-4041-9167-ffb7b509a735","https://chillychic.com/products/christmas-jesus-is-the-reason-of-the-season-letter-print-patterned-white-long-sleeve-with-white-red-green-plaid-pants-family-matching-pajamas?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.4754904326344545&ssp=-","https://chillychic.com/products/christmas-jesus-is-the-reason-of-the-season-letter-print-patterned-white-long-sleeve-with-white-red-green-plaid-pants-family-matching-pajamas?variant=05dff546-d7ac-4547-a62d-bd5a89a4a5ce","https://chillychic.com/products/navy-white-plaid-christmas-pajamas-set-with-snowman-christmas-tree-print?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=1.4691928603280546&ssp=-","https://chillychic.com/products/navy-white-plaid-christmas-pajamas-set-with-snowman-christmas-tree-print?variant=f5cc8527-83ca-4140-b82b-9447c4493117","https://chillychic.com/products/family-christmas-plaid-button-front-pajamas-sets","https://chillychic.com/products/family-christmas-plaid-button-front-pajamas-sets?variant=7ccfac15-2390-4394-9ef4-1abf6f823a69","https://chillychic.com/products/cozy-green-plaid-button-up-christmas-pjs-for-family","https://chillychic.com/products/cozy-green-plaid-button-up-christmas-pjs-for-family?variant=075bd602-e96a-4f44-9ec1-c43437013e69","https://chillychic.com/products/christmas-collar-button-up-pajama-set-for-family","https://chillychic.com/products/christmas-collar-button-up-pajama-set-for-family?variant=29d5e027-e792-4487-af8f-e577d17c334b","https://chillychic.com/products/holiday-family-button-down-christmas-pajamas-set","https://chillychic.com/products/holiday-family-button-down-christmas-pajamas-set?variant=332da72b-ce29-4a07-a210-c2400bc9901a","https://chillychic.com/products/holiday-family-santa-claus-button-up-satin-christmas-pajamas-set","https://chillychic.com/products/holiday-family-santa-claus-button-up-satin-christmas-pajamas-set?variant=e38f61e6-fa64-4da6-92da-0afd29ddbd76","https://chillychic.com/products/holiday-family-button-up-green-yellow-tie-dyed-christmas-pajamas-set?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=2.019759916784947&ssp=-","https://chillychic.com/products/holiday-family-button-up-green-yellow-tie-dyed-christmas-pajamas-set?variant=e53d0fa4-dfdb-4ab3-80b6-70dc580a475d","https://chillychic.com/products/holiday-family-button-up-green-tie-dyed-christmas-pajamas-set?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=0.7980855059762091&ssp=-","https://chillychic.com/products/holiday-family-button-up-green-tie-dyed-christmas-pajamas-set?variant=af567161-0b17-40db-a73f-df43a9bb8bd3","https://chillychic.com/products/holiday-family-button-up-tie-dyed-christmas-pajamas-set?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=0.6187957135675966&ssp=-","https://chillychic.com/products/holiday-family-button-up-tie-dyed-christmas-pajamas-set?variant=b5df2086-5498-42ca-98b6-d578a3c7f0d2","https://chillychic.com/products/holiday-family-button-up-red-tie-dyed-christmas-pajamas-set?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=0.5854623802342631&ssp=-","https://chillychic.com/products/holiday-family-button-up-red-tie-dyed-christmas-pajamas-set?variant=84b99641-748a-44d0-a894-1b9c76874b5a","https://chillychic.com/products/holiday-family-button-up-blue-tie-dyed-christmas-pajamas-set?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=0.5775071126802871&ssp=-","https://chillychic.com/products/holiday-family-button-up-blue-tie-dyed-christmas-pajamas-set?variant=4c5cc01c-1942-4cb7-a562-5119a4ca44b8","https://chillychic.com/products/holiday-family-button-up-blue-tree-tie-dyed-christmas-pajamas-set?cfb=218fc5b3-efff-4ab2-8d53-bda2a158d298&scm=collection.v38.177.202.203.204&score=0.5&ssp=-","https://chillychic.com/products/holiday-family-button-up-blue-tree-tie-dyed-christmas-pajamas-set?variant=4970ab9c-22a0-42bd-bd66-0431d4a12999","https://chillychic.com/pages/about-us","https://chillychic.com/pages/payment-policy","https://chillychic.com/pages/shipping-info","https://chillychic.com/pages/terms-and-conditions","https://chillychic.com/pages/privacy-policy","https://chillychic.com/pages/refund-policy","https://chillychic.com/pages/exchange-policy","https://chillychic.com/pages/contact-us","https://chillychic.com/collections/christmas-pants","https://chillychic.com/cart","https://chillychic.com/?"],"scraper_engine":"Puppeteer (Enhanced)","screenshot_size_bytes":92334,"domSignals":{"lang":"en-US","canonical":"https://www.chillychic.com/","hasLogin":false,"hasCheckout":false,"hasContact":true,"hasPolicy":true,"ogTitle":"chillychic","ogSite":"chillychic","ogDescription":"chillychic"},"formRisks":[],"httpStatus":200,"finalUrl":"https://www.chillychic.com/","htmlLength":1256312,"textLength":72541,"lowEvidenceRecovery":false,"parkingDetection":{"isParked":false},"otherpages":{"internalLinks":["https://chillychic.com"],"internalPageContents":["Christmas Pajamas-Buy 1 Get 1 Free\n\nconst template_name = SHOPLAZZA?.meta?.page?.template_name || ''; const SEARCH_URL = '/search'; const TAG = 'spz-custom-smart-search-location'; const SMART_PRODUCR_SEARCH_WRAP_CLASSNAME = 'app-smart-product-search-container'; const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name.replace(/ /g,''); const BREAKPOINT = 960; const DELAY = 300; function diffThemeName(themeNameA, themeNameB){ return themeNameA.toLocaleLowerCase().includes(themeNameB.toLocaleLowerCase()) } const HEADER_DOM_MAP = { eva: 'header .header_grid_layout', geek: `.header-mobile-inner-container`, onePage: 'header .header', wind: 'header #header-nav', nova: 'header .header', hero: 'header .header__nav', 'flash': '#shoplaza-section-header>div>div', 'lifestyle': '#shoplaza-section-header .header__wrapper' } let HEADER_DOM = 'header'; Object.keys(HEADER_DOM_MAP) .map(themeName=>{ if (diffThemeName(THEME_NAME, themeName)) { HEADER_DOM = HEADER_DOM_MAP[themeName]; } }) const SEARCH_ICON_CLASS_MAP = { 'flash': 'app-smart-icon-search-large-flash', 'hero': 'app-smart-icon-search-large-hero', 'geek': 'app-smart-icon-search-large-geek', 'nova': 'app-smart-icon-search-large-nova', }; let SEARCH_ICON_CLASS = 'app-smart-icon-search-large-default'; Object.keys(SEARCH_ICON_CLASS_MAP) .map(themeName=>{ if (diffThemeName(THEME_NAME, themeName)) { SEARCH_ICON_CLASS = SEARCH_ICON_CLASS_MAP[themeName]; } }) class SpzCustomSmartSearchLocation extends SPZ.BaseElement { constructor(element) { super(element); this.mobileHeaderPluginParentEle = null; this.outsideCarouselIndex = 0; this.insideCarouselIndex = 0; this.searchItemType = 'icon'; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.init(); this.listenerResize(); this.initRegisterActions(); } addIconClass(){ document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>{ e.classList.add(SEARCH_ICON_CLASS) }); } moveIcon(){ if (!diffThemeName(THEME_NAME, 'lifestyle')) return; if (this.searchItemType === 'input') return; if (this.isDesktop()) return; const smart_search_dom = document.querySelector('#app-smart-product-search-container-19'); if (!smart_search_dom) return; const hasMovedIcon = !!document.querySelector('.header__wrapper .container .row.header>div>#app-smart-product-search-container-19'); if (hasMovedIcon) return; const headerDivList = document.querySelectorAll('.header__wrapper .container .row.header>div'); const iconBoxDom = headerDivList[headerDivList.length-1] iconBoxDom.appendChild(smart_search_dom, iconBoxDom.firstChild); } init() { this.addIconClass(); this.moveIcon(); if ( this.searchItemType === 'input' ) { document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'none'); const mobileSmartSearchDom = document.querySelector(`.smart-search-mobile-container .app-smart-product-search-wrap`); if ( this.isDesktop() ) { document.querySelector(`#app-smart-product-search-container-19`).style=\"display: block\"; if (mobileSmartSearchDom) { document.querySelector(`#app-smart-product-search-container-19`).appendChild(mobileSmartSearchDom); } }else{ if( template_name=='search' ) return; if (!document.querySelector(`.smart-search-mobile-container`)) { const appSmartSearchContainer = document.createElement('div'); appSmartSearchContainer.classList.add('smart-search-mobile-container'); appSmartSearchContainer.classList.add('smart-search-mobile-container-'+THEME_NAME.toLocaleLowerCase()); document.querySelector(HEADER_DOM).appendChild(appSmartSearchContainer); } if (!mobileSmartSearchDom) { document.querySelector(`.smart-search-mobile-container`).appendChild( document.querySelector(`.app-smart-product-search-wrap`) ) } } }else{ document.querySelectorAll('.app-smart-icon-search-large').forEach(e=>e.style.display = 'flex'); } // PC-end not load if (this.isDesktop()) { return; } if (!window.__isLoadAppSmartSearch__) { this.initSmartSearch(); console.log('__isLoadAppSmartSearch__'); } // B-end must reload if (window.self === window.top && !window.__isLoadAppSmartSearch__) { window.__isLoadAppSmartSearch__ = true; } } initSmartSearch() { if (this.hasMobileUpperRightPlugin()) { this.showMobileSmartSearch(); } else { this.addMobileSmartSearch(); } } initRegisterActions(){ this.registOnSearchInputChange(); this.registOnSearchFormSubmit(); this.registOnOutsideCarouselIndexChange(); this.registOnInsideCarouselIndexChange(); this.registGetSearchItemType(); this.registGenerateHotKeywordList(); this.registerAction('onTapHotWord',(invocation)=>{ this.onTapHotWord(invocation.args.type); }); } registOnSearchInputChange(){ this.registerAction('onSearchInputChange',(invocation)=>{ const keyword = invocation.args.keyword; if (keyword === null || !keyword.length) { document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{ e.style='display: block'; }); } else { document.querySelectorAll('.hot-words-carousel-inner-container').forEach(e=>{ e.style='display: none'; }); } }) } registOnSearchFormSubmit(){ this.registerAction('onSearchFormSubmit',(invocation)=>{ const event = invocation.args.event; const keywordArray = event.q || []; const keyword = keywordArray[0]; if (keyword!==null && keyword.length) { this.handleSearchSubmit_(keywordArray,1); } else { this.onTapHotWord('inside') } }) } handleSearchSubmit_(value, retryNum){ SPZ.whenApiDefined(document.getElementById('app-smart-search-19')) .then((ljsSearch) => { try{ ljsSearch.handleSearchSubmit_({ value: value }) }catch(e){ console.log('catch error',retryNum) if( 3 > retryNum ){ this.handleSearchSubmit_(value, retryNum + 1); return; } const searchStr = value[0] || ''; const searchResult = ljsSearch.setThinkSearchData_(searchStr); ljsSearch.afterSearching({ query: searchResult.query, url: `${SEARCH_URL}?q=${searchStr}`, queryType: searchResult.queryType, }) } }) } registOnOutsideCarouselIndexChange(){ this.registerAction('onOutsideCarouselIndexChange',(invocation)=>{ this.outsideCarouselIndex = invocation.args.index || 0; }) } registOnInsideCarouselIndexChange(){ this.registerAction('onInsideCarouselIndexChange',(invocation)=>{ this.insideCarouselIndex = invocation.args.index || 0; }) } registGetSearchItemType(searchItemType){ this.registerAction('getSearchItemType',(invocation)=>{ SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-19')) .then((appSmartSearchOutsideItem) => { const search_item_type = appSmartSearchOutsideItem.getData()?.search_item_type; this.searchItemType = search_item_type || this.searchItemType; this.init(); }) }) } registGenerateHotKeywordList(){ this.registerAction('generateHotKeywordList',(invocation)=>{ const search_keywords = invocation.args?.data?.data?.hotKeywordList || []; const isShowHotKeyword = invocation.args?.data?.data?.isShowHotKeyword || false; SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-19')) .then((appSmartSearchOutsideItem) => { const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || []; const new_search_keywords = search_keywords.map((item, index) => { item.url_obj = item.url_obj || {}; const hotwordItem = hotwords.find(e=>e.word === item.word); if (hotwordItem) { item.icon = hotwordItem.icon || ''; } if (!item.urlObj || !item.urlObj.url) { item.urlObj = { ...item.url_obj, url: item.url_obj.type === 'search' ? `${SEARCH_URL}?q=${item.word}` : item.url_obj.url, }; } return item; }); document.querySelectorAll('.app-hot-keyword-render-child') .forEach((ele) => { SPZ.whenApiDefined(ele) .then((hotWordsChildDom) => { hotWordsChildDom.render({ list: new_search_keywords, isShowHotKeyword: isShowHotKeyword, }); }) }); }) }); } onTapHotWord(type){ const index = type === 'inside' ? this.insideCarouselIndex : this.outsideCarouselIndex; SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-19')) .then((appSmartSearchOutsideItem) => { const hotwords = appSmartSearchOutsideItem.getData()?.search_keywords || []; const currentHotwordItem = hotwords[index] || null; if (currentHotwordItem && currentHotwordItem.url_obj) { currentHotwordItem.url_obj.url = currentHotwordItem.url_obj.type === 'search' ? `${SEARCH_URL}?q=${currentHotwordItem.word}` : currentHotwordItem.url_obj.url; } SPZ.whenApiDefined(document.getElementById('app-smart-search-19')) .then((ljsSearch) => { if (currentHotwordItem) { ljsSearch.handleHotKeyword_({ word: currentHotwordItem.word, query_type: currentHotwordItem.type, url: currentHotwordItem.url_obj?.url, }); } else { this.handleSearchSubmit_([''],1); } }) }) } getOutsideCarouselConfig(){ return SPZ.whenApiDefined(document.getElementById('app-smart-search-outside-item-19')) .then((appSmartSearchOutsideItem) => { return { ...appSmartSearchOutsideItem.getData(), outsideCarouselIndex: this.outsideCarouselIndex, } }) } listenerResize() { window.removeEventListener('resize', window.smartSearchResizeCallback); window.smartSearchResizeCallback = SPZCore.Types.debounce( this.win, () => { this.init(); }, DELAY ); window.addEventListener('resize', window.smartSearchResizeCallback); } isDesktop() { const mediaQueryList = window.matchMedia(`(min-width: ${BREAKPOINT}px)`); return mediaQueryList.matches; } hasMobileUpperRightPlugin() { return !['geek', 'flash', 'boost'].includes(THEME_NAME.toLocaleLowerCase()); } showMobileSmartSearch() { this.mobileHeaderPluginParentEle = this.getMobileHeaderPluginParentEle(); this.setMobileHeaderIconsPluginStyle(this.mobileHeaderPluginParentEle); } getMobileHeaderPluginParentEle() { const MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP = { nova: '.header__mobile #header__plugin-container', hero: '.header__icons .tw-flex.tw-justify-end.tw-items-center.tw-space-x-7', onePage: '.header__mobile #header__plugin-container', wind: '#header-icons .flex.justify-end.items-center', eva: '#header__icons .plugin_content' }; const headerPluginParentSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP) ); return document.querySelector(headerPluginParentSelector); } setMobileHeaderIconsPluginStyle(pluginParentEle) { if (!pluginParentEle) { return; } const containHidden = pluginParentEle.classList.contains('md:hidden'); const containTwHidden = pluginParentEle.classList.contains('md:tw-hidden'); if (containHidden || containTwHidden) { Array.from(pluginParentEle.children).forEach((pluginElement) => { if (!this.hasSmartSearchPlugin(pluginElement)) { pluginElement.style.display = 'none'; } }); pluginParentEle.classList.remove('md:hidden', 'md:tw-hidden'); } else { const smartSearchPluginElement = Array.from(pluginParentEle.children).find( (pluginElement) => { return this.hasSmartSearchPlugin(pluginElement); } ); smartSearchPluginElement.style.display = 'block'; } } hasSmartSearchPlugin(pluginElement) { return ( pluginElement.classList.contains(`${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`) || pluginElement.querySelectorAll(`.${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`).length > 0 ); } addMobileSmartSearch() { this.mobileHeaderIconsEle = this.getMobileHeaderIconsEle(); this.smartSearchWrapEle = this.getSmartSearchWrapEle(); this.appendSmartSearchToHeader(); } getMobileHeaderIconsEle() { // Must be the parent element of the plugin const MOBILE_HEADER_ICONS_ELE_MAP = { geek: '#header-mobile-container .flex.items-center.justify-end.flex-shrink-0', flash: '#header-layout .header__icons', boost: '.header__mobile-bottom .tw-flex.tw-items-center.tw-justify-end.tw-flex-1' }; const headerIconsSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_ICONS_ELE_MAP) ); return document.querySelector(headerIconsSelector); } getSmartSearchWrapEle() { const smartSearchWrapEle = document.querySelector(this.getSmartSearchWrapSelector()); if (!smartSearchWrapEle) { return null; } return smartSearchWrapEle; } appendSmartSearchToHeader() { if (!this.smartSearchWrapEle) { return; } this.mobileHeaderIconsEle.insertAdjacentElement('afterbegin', this.smartSearchWrapEle); } getSmartSearchWrapSelector() { const PLUGIN_POSITION = { DRAWER: 'drawer', HEADER_TOP: 'headerTop' }; // only one this plugin of ancestor element const MOBILE_PLUGIN_POSITION_ELE_MAP = { [PLUGIN_POSITION.DRAWER]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header__drawer' }, [PLUGIN_POSITION.HEADER_TOP]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header-content .logo-wrap' } }; const MbPluginPositionInTheme = [ ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.DRAWER]), ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.HEADER_TOP]) ]; return Object.values(MbPluginPositionInTheme).reduce((pre, ancestor) => { if (pre === '') { return `${ancestor} .app-smart-product-search-container`; } if (pre.includes(ancestor)) { return pre; } return `${pre},${ancestor} .app-smart-product-search-container`; }, ''); } combineMultipleSelectors(selectorList) { return selectorList.reduce((pre, selector) => { if (pre === '') { return `${selector}`; } if (pre.includes(selector)) { return pre; } return `${pre},${selector}`; }, ''); } } SPZ.defineElement(TAG, SpzCustomSmartSearchLocation);\n(function(){ let w = window.innerWidth; function setHeaderCssVar() { const headerEle = document.getElementById('shoplaza-section-header'); if(!headerEle){ return }; document.body.style.setProperty('--window-height', `${window.innerHeight}px`); document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`); const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide'); if (mdScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`); } const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide'); if (pcScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`); } } function handlResize() { if(w == window.innerWidth){return}; w = window.innerWidth; setHeaderCssVar(); }; function init(){ setHeaderCssVar(); window.removeEventListener('resize', window._theme_header_listener) window._theme_header_listener = handlResize; window.addEventListener('resize', window._theme_header_listener); } init(); })();\nShop By Category\n\nChristmas Pajamas Set\n\nChristmas Onesies\n\nButton-down Pajamas\n\nShort Sleeve Pajamas\n\nSatin Holiday Glow\n\nTie-Dye Dreams\n\nBest Seller\nView more\nButton-down Pajamas\nView more\nTie-Dye Dreams\nView more\nFree shipping\nQUICK RESPONSE\nHASSLE-FREE RETURN\nBuy More Save More\nSign up and save\nSubscribe to get special offers, free giveaways, and once-in-a-lifetime deals.\nSubscribe\n\nCUSTOMER CARE\n\nHELP & SUPPORT\n\nCOLLECTION LIST\n\nGet in touch\n\n© 2025 chillychic"]}},"webrisk":{"overall_risk":"unknown","threats":[],"malware":false,"social_engineering":false,"unwanted_software":false,"error":"Request failed with status code 400"},"metadata":{"preflight":{"bestUrl":"https://chillychic.com","probes":[{"url":"https://chillychic.com","ok":true,"status":200},{"url":"https://www.chillychic.com","ok":true,"status":200},{"url":"http://chillychic.com","ok":true,"status":200}],"zyteCheck":null},"best_url":"https://chillychic.com","phase_a_duration_ms":3510,"phase_b_duration_ms":21619,"early_exit_reason":null,"tls_warnings":[],"zyte_preflight":null,"low_evidence_recovery":false},"virustotal":{"malicious":0,"suspicious":0,"total":98,"scanned":true},"evidence_coverage":"90"},"reviews":[],"has_archive":false,"archive_data":null,"archive_stats":null}};