{
  "version": 3,
  "sources": ["/cdn/shop/t/56/assets/custom.js?enable_js_minification=1"],
  "sourcesContent": ["window.theme = window.theme || {};\n\ntheme.config = {\n  mqlSmall: false,\n  mediaQuerySmall: 'screen and (max-width: 749px)',\n  isTouch:\n    'ontouchstart' in window ||\n    (window.DocumentTouch && window.document instanceof DocumentTouch) ||\n    window.navigator.maxTouchPoints ||\n    window.navigator.msMaxTouchPoints\n      ? true\n      : false,\n};\n\n// Init section function when it's visible, then disable observer\ntheme.initWhenVisible = function (options) {\n  const threshold = options.threshold ? options.threshold : 0;\n\n  const observer = new IntersectionObserver(\n    (entries, observer) => {\n      entries.forEach((entry) => {\n        if (entry.isIntersecting) {\n          if (typeof options.callback === 'function') {\n            options.callback();\n            observer.unobserve(entry.target);\n          }\n        }\n      });\n    },\n    { rootMargin: `0px 0px ${threshold}px 0px` }\n  );\n\n  observer.observe(options.element);\n};\n\nclass ImageComparison extends HTMLElement {\n  constructor() {\n    super();\n    this.active = false;\n    this.button = this.querySelector('button');\n    this.horizontal = this.dataset.layout === 'horizontal';\n    this.init();\n    theme.initWhenVisible({\n      element: this.querySelector('.image-comparison__animate'),\n      callback: this.animate.bind(this),\n      threshold: 0,\n    });\n  }\n\n  animate() {\n    this.setAttribute('animate', '');\n    this.classList.add('animating');\n    setTimeout(() => {\n      this.classList.remove('animating');\n    }, 1e3);\n  }\n\n  init() {\n    if (theme.config.isTouch) {\n      this.button.addEventListener('touchstart', this.startHandler.bind(this));\n      document.body.addEventListener('touchend', this.endHandler.bind(this));\n      document.body.addEventListener('touchmove', this.onHandler.bind(this));\n    } else {\n      this.button.addEventListener('mousedown', this.startHandler.bind(this));\n      document.body.addEventListener('mouseup', this.endHandler.bind(this));\n      document.body.addEventListener('mousemove', this.onHandler.bind(this));\n    }\n  }\n\n  startHandler() {\n    this.active = true;\n    this.classList.add('scrolling');\n  }\n\n  endHandler() {\n    this.active = false;\n    this.classList.remove('scrolling');\n  }\n\n  onHandler(e) {\n    if (!this.active) return;\n\n    const event = (e.touches && e.touches[0]) || e;\n    const x = this.horizontal\n      ? event.pageX - this.offsetLeft\n      : event.pageY - this.offsetTop;\n\n    this.scrollIt(x);\n  }\n\n  scrollIt(x) {\n    const distance = this.horizontal ? this.clientWidth : this.clientHeight;\n\n    const max = distance - 20;\n    const min = 20;\n    const mouseX = Math.max(min, Math.min(x, max));\n    const mousePercent = (mouseX * 100) / distance;\n    this.style.setProperty('--percent', mousePercent + '%');\n  }\n}\ncustomElements.define('image-comparison', ImageComparison);\n\nconst API = 'https://api.myulike.com';\nconst isLoggedIn = Number(document.body.getAttribute(\"data-customer\")); // 1 \u672A\u767B\u5F55 2 \u5DF2\u767B\u5F55\n\nwindow.ULIKE_MESSAGES = window.ULIKE_MESSAGES || {\n  default_error: 'Subscription failed. Please try again.',\n  email_empty: 'Please enter your email address.',\n  email_invalid: 'Please enter a valid email address.',\n  consent_required: 'Please agree to the Terms of Use and Privacy Policy.',\n  user_subscribe_email_repeat: 'This email is already subscribed. Please use a different email.',\n  user_subscribe_phone_repeat: 'This phone number is already subscribed. Please use a different phone number.'\n};\n\n// \u7528\u6237\u81EA\u5B9A\u4E49js\u516C\u5171\u5E93\nfunction isMobile() {\n  const userAgent = navigator.userAgent || navigator.vendor || window.opera;\n  const isMobileUserAgent = /Android|iPhone|iPad|iPod|BlackBerry/i.test(\n    userAgent\n  );\n  const maxMobileWidth = 768; // \u5E38\u7528\u7684\u79FB\u52A8\u8BBE\u5907\u5C4F\u5E55\u6700\u5927\u5BBD\u5EA6\n  return isMobileUserAgent && window.innerWidth <= maxMobileWidth;\n}\n/**\n * GTM \u589E\u52A0GA\u4E8B\u4EF6\n * @param {*} category\n * @param {*} operating\n * @param {*} label\n */\nfunction commonGtmEvent(category, operating, label) {\n  if (operating == 'true' && isMobile()) {\n    category = `M-${category}`\n  }\n  dataLayer.push({ event: 'common', category, operating, label, user_role: isLoggedIn });\n}\n\n/**\n * \u516C\u5171 data-ga-event \u70B9\u51FB\u57CB\u70B9\u7ED1\u5B9A\n * \u4F7F\u7528\u65B9\u5F0F\uFF1A\u7ED9\u5143\u7D20\u6DFB\u52A0 data-ga-event=\"\u4E8B\u4EF6\u540D\"\uFF0C\u53EF\u9009 data-ga-label=\"label\"\n * operating \u56FA\u5B9A\u4F20 false\n */\nfunction bindCommonGtmEventLinks() {\n  document.querySelectorAll('[data-ga-event]').forEach(function (target) {\n    if (target.dataset.gtmBound === 'true') return;\n    target.dataset.gtmBound = 'true';\n    target.addEventListener('click', function () {\n      const category = target.getAttribute('data-ga-event');\n      const label = target.getAttribute('data-ga-label') || '';\n      if (!category) return;\n      commonGtmEvent(category, 'false', label);\n    });\n  });\n}\n/**\n * \u83B7\u53D6cookie\n * @param {\u540D\u79F0} name\n * @returns\n */\nfunction getCookie(name) {\n  const cookieName = name + '=';\n  const cookies = document.cookie.split(';');\n  for (let i = 0; i < cookies.length; i++) {\n    let cookie = cookies[i].trim();\n    if (cookie.indexOf(cookieName) === 0) {\n      return cookie.substring(cookieName.length, cookie.length);\n    }\n  }\n  return '';\n}\n\n/**\n * \u8BBE\u7F6Ecookie\n * @param {string} cookieName - cookie\u7684\u540D\u79F0\n * @param {string} cookieValue - cookie\u7684\u503C\n * @param {number} daysToExpire - cookie\u7684\u8FC7\u671F\u5929\u6570\uFF0C\u9ED8\u8BA4\u4E3A0\uFF0C\u8868\u793A\u6C38\u4E0D\u8FC7\u671F\n */\nfunction setCookie(cookieName, cookieValue, daysToExpire, endOfDay = false) {\n  var expires = '';\n  if (daysToExpire) {\n    var date = new Date();\n    date.setTime(date.getTime() + daysToExpire * 24 * 60 * 60 * 1000);\n    if (endOfDay) {\n      date.setHours(00, 00, 00, 000); // \u8BBE\u7F6E\u4E3A\u90A3\u5929\u7684\u7B2C\u4E00\u79D2\n    }\n    expires = '; expires=' + date.toUTCString();\n  }\n  document.cookie = cookieName + '=' + cookieValue + expires + '; path=/';\n}\n\n/**\n * \u6E05\u9664\u6307\u5B9A\u540D\u79F0\u7684cookie\u3002\n * @param {string} name \u9700\u8981\u6E05\u9664\u7684cookie\u7684\u540D\u79F0\u3002\n * \u8BE5\u51FD\u6570\u6CA1\u6709\u8FD4\u56DE\u503C\u3002\n */\nfunction clearCookie(name) {\n  // \u8BBE\u7F6Ecookie\u7684\u503C\u4E3A\u7A7A\uFF0C\u5E76\u8BBE\u7F6E\u8FC7\u671F\u65F6\u95F4\u4E3A0\uFF0C\u4EE5\u5B9E\u73B0\u6E05\u9664cookie\u7684\u6548\u679C\n  document.cookie = name + '=; max-age=0; path=/';\n}\n\n/**\n *  \u516C\u7528\u521D\u59CB\u5316\u65B9\u6CD5\n */\nfunction init() {\n  // seo\n  const videoImages = document.querySelectorAll('video img');\n  videoImages.forEach((img) => {\n    img.setAttribute('alt', 'video image');\n    img.setAttribute('loading', 'lazy');\n  });\n\n  // \u5904\u7406\u5168\u5C40\u6298\u6263\u7801\n  const urlParams = new URLSearchParams(window.location.search);\n  let gDiscount = urlParams.get('discount');\n  if (gDiscount) {\n    autoDiscountCode(gDiscount);\n  }\n}\n\n/**\n * \u516C\u5171 GA\u4EE3\u7801\u6DFB\u52A0\u65B9\u6CD5\n */\nfunction initGA() {\n  // \u5BFC\u822A\n  $(document).on(\n    'click',\n    '#shopify-section-announcement-bar .announcement-bar__message a',\n    function () {\n      let _title = $(this).text();\n      if (_title == 'Learn more') {\n        commonGtmEvent('\u9996\u9875-90 learn', 'click', _title);\n      } else {\n        commonGtmEvent('\u9996\u9875-free shop', 'click', _title);\n      }\n    }\n  );\n  // logo\n  $(document).on('click', '.header__logo-link', function () {\n    commonGtmEvent('header__logo-link', 'click', 'logo');\n  });\n\n  // \u65B0\u5BFC\u822A\u6DFB\u52A0\u4E8B\u4EF6\n  $(document).on('click', '#desktop-menu-1 .header-new-operate-btn, #mobile-menu-1 .header-new-operate-btn', function () {\n    commonGtmEvent('\u5BFC\u822A-Sale', 'true', location.pathname);\n  });\n\n  $(document).on('click', '#desktop-menu-2 .header-new-product-item, #mobile-menu-2  .header-new-product-item', function () {\n    let index = $('#desktop-menu-2 .header-new-product-item').index(this);\n    console.log(index);\n    if (isMobile()) {\n     index = $('#mobile-menu-2 .header-new-product-item').index(this);\n    }\n    switch(index){\n      case 0:\n        commonGtmEvent('\u5BFC\u822A-air10', 'true', location.pathname);\n        break;\n      case 1:\n        commonGtmEvent('\u5BFC\u822A-air3', 'true', location.pathname);\n        break;\n      case 2:\n        commonGtmEvent('\u5BFC\u822A-airX', 'true', location.pathname);\n        break;\n      case 3:\n        commonGtmEvent('\u5BFC\u822A-reglow', 'true', location.pathname);\n        break;\n    }\n  });\n\n  $(document).on('click', '#desktop-menu-4 .header-new-link-item, #mobile-menu-4 .header-new-link-item', function (e) {\n    const linkText = $(this).attr('text').trim();\n    commonGtmEvent('\u5BFC\u822A-explore more-' + linkText, 'true', location.pathname);\n  });\n\n  $(document).on('click', '.header .header__linklist-link, #mobile-menu-drawer .mobile-nav .mobile-nav__link', function () {\n    const index = $(this).parent().index();\n    const mIndex = $('#mobile-menu-drawer .mobile-nav .mobile-nav__link').index(this);\n    const linkText = $(this).attr('text');\n    if (!linkText){\n      return false;\n    }\n\n    if (!isMobile() && index != 0){\n      commonGtmEvent('\u5BFC\u822A-'+ linkText, 'true', location.pathname);\n    } else if(mIndex != 0) {\n      commonGtmEvent('\u5BFC\u822A-'+ linkText, 'true', location.pathname);\n    }\n\n  });\n\n  $(document).on('click', '#desktop-menu-5 .header-new-link-item,#mobile-menu-5 .header-new-link-item', function (e) {\n    const linkText = $(this).attr('text').trim();\n    commonGtmEvent('\u5BFC\u822A-Explore More-' + linkText, 'true', location.pathname);\n  });\n\n  $(document).on('click', '.header .popover-button', function (e) {\n    commonGtmEvent('\u5BFC\u822A-english', 'true', location.pathname);\n  });\n  \n  // \u641C\u7D22\n  $(document).on('click', '.header .j-search', function () {\n    commonGtmEvent('\u5BFC\u822A-search', 'true', 'search');\n  });\n  $(document).on('click', '.header .j-cart', function () {\n    commonGtmEvent('\u5BFC\u822A-add cart', 'true', 'cart');\n  });\n  // \u767B\u5F55\n  $(document).on('click', '.header .j-user-login', function () {\n    commonGtmEvent('\u5BFC\u822A-login', 'true', 'wishlist');\n  });\n\n  // \u516C\u5171 data-gtm-event \u57CB\u70B9\u7ED1\u5B9A\n  bindCommonGtmEventLinks();\n\n  $(document).on('click', '.mobile-nav .market-cont-menu-item', function (e) {\n    const index = $(this).index(); // \u83B7\u53D6\u5F53\u524D\u70B9\u51FB\u5143\u7D20\u5728\u540C\u7EA7\u4E2D\u7684\u7D22\u5F15\n    if (index === 0) {\n      commonGtmEvent('\u5BFC\u822A-Explore-AAD', 'true', location.pathname);\n    }\n\n    if (index === 1) {\n      commonGtmEvent('\u5BFC\u822A-Explore-PCOS', 'true', location.pathname);\n    }\n  });\n\n  \n\n\n  $(document).on('click', '#AddToCart', function () {\n    // AB \u57CB\u70B9\n    commonGtmEvent(`${g_product_name} Product-add to cart`, '', 'Product');\n  });\n\n  // banner\n  $(document).on('click', '.slideshow__slide-list .button-wrapper .home-btn', function () {\n    var i = 1,\n      index = 1;\n    $('.slideshow__progress-bar').each(function () {\n      if ($(this).attr('aria-current') == 'true') {\n        index = i;\n        return;\n      }\n      i++;\n    });\n      // \u5224\u65AD\u662F\u7B2C\u4E00\u4E2A\u6309\u94AE\u8FD8\u662F\u7B2C\u4E8C\u4E2A\u6309\u94AE\n    const btnIndex = $(this).hasClass('home-btn') ? $(this).index('.home-btn') : -1;\n    console.log('\u6309\u94AE\u7D22\u5F15:', btnIndex, '\u5F53\u524D\u7D22\u5F15:', index);\n    // if (index == 1) {\n    //   commonGtmEvent(`\u9996\u9875-banner${index}-buy amazon`, 'click', '');\n    // } else {\n    commonGtmEvent(`\u9996\u9875-banner${index}`, 'click', '');\n    // }\n  });\n  $(document).on(\n    'click',\n    '.product-area-list .product-area-item:eq(0) .product-area-btn-item:eq(0)',\n    function () {\n      commonGtmEvent('\u9996\u9875-air10-learn more', 'click', '');\n    }\n  );\n  $(document).on(\n    'click',\n    '.product-area-list .product-area-item:eq(0) .product-area-btn-item:eq(1)',\n    function () {\n      commonGtmEvent('\u9996\u9875-air10-shop now', 'click', '');\n    }\n  );\n  $(document).on(\n    'click',\n    '.product-area-list .product-area-item:eq(1) .product-area-btn-item:eq(0)',\n    function () {\n      commonGtmEvent('\u9996\u9875-air3 learn more', 'click', '');\n    }\n  );\n  $(document).on(\n    'click',\n    '.product-area-list .product-area-item:eq(1) .product-area-btn-item:eq(1)',\n    function () {\n      commonGtmEvent('\u9996\u9875-air3 shop now', 'click', '');\n    }\n  );\n  $(document).on(\n    'click',\n    '.media-evaluation-real-box .media-real-bottom-arrow-item',\n    function () {\n      commonGtmEvent('\u9996\u9875-review swith', 'click', '');\n    }\n  );\n  $(document).on('click', '.sub-activity-left .sub-activity-btn', function () {\n    commonGtmEvent('\u9996\u9875- marketing banner1', 'click', '');\n  });\n  $(document).on(\n    'click',\n    '.sub-activity-right .sub-activity-btn:eq(0)',\n    function () {\n      commonGtmEvent('\u9996\u9875- marketing banner2', 'click', '');\n    }\n  );\n  $(document).on(\n    'click',\n    '.sub-activity-right .sub-activity-btn:eq(1)',\n    function () {\n      commonGtmEvent('\u9996\u9875- marketing banner3', 'click', '');\n    }\n  );\n  // blog\n  $(document).on('click', '.blog-info-cont .blog-info-left', function () {\n    commonGtmEvent('\u9996\u9875-blog1', 'click', '');\n  });\n  $(document).on('click', '.blog-info-list .blog-info-item', function () {\n    var index = $('.blog-info-list .blog-info-item').index($(this)) + 2;\n    commonGtmEvent(`\u9996\u9875-blog${index}`, 'click', '');\n  });\n  // \u8BA2\u9605\n  $(document).on('click', '.footer__top .btn-ico', function () {\n    commonGtmEvent('\u9996\u9875-bottom subscription', 'click', '');\n  });\n\n  $(document).on('click', '.footer__top .social-media__item', function () {\n    let index = $(this).index();\n    let name = '\u9996\u9875-ins';\n    switch (index) {\n      case 0:\n        name = '\u9996\u9875-fb';\n        break;\n      case 1:\n        name = '\u9996\u9875-tw';\n        break;\n      case 2:\n        name = '\u9996\u9875-ins';\n        break;\n      case 3:\n        name = '\u9996\u9875-youtube';\n        break;\n      case 4:\n        name = '\u9996\u9875-tt';\n        break;\n    }\n    commonGtmEvent(name, 'click', '');\n  });\n\n  $(document).on('click', '.footer__item-list .link--faded', function () {\n    let _title = $(this).text();\n    commonGtmEvent(`\u9996\u9875-bottom ${_title}`, 'click', '');\n  });\n\n  $(document).on('click', '.checkout-button', function () {\n    commonGtmEvent(`\u7ED3\u8D26-check out`, 'click', location.pathname);\n    window._conv_q = window._conv_q || [];\n    _conv_q.push(['triggerConversion', '100476463']);\n  });\n\n  $(document).on('click', '.brand-video .brand-video-btn', function () {\n    // \u627E\u5230\u6700\u8FD1\u7684 .brand-video-item \u5E76\u83B7\u53D6 data-swiper-slide-index \u7684\u503C\n    let slideIndex = $(this).closest('.brand-video-item').attr('data-swiper-slide-index') + 1;\n    // \u89E6\u53D1 GTM \u4E8B\u4EF6\u5E76\u4F20\u9012 slideIndex\n    commonGtmEvent(`\u9996\u9875-\u89C6\u9891\u70B9\u51FB-${slideIndex}`, 'click', location.pathname, slideIndex);\n  });\n\n  $(document).on('click', '.account-list .header-logout', function (e) {\n      e.preventDefault(); // \u963B\u6B62\u9ED8\u8BA4\u8DF3\u8F6C\u884C\u4E3A\n      localStorage.removeItem('userInfo');\n      fetch(\"https://api.ulike.com/user/logout\", {\n        headers: {\n          accept: \"application/json, text/plain, */*\",\n          \"content-type\": \"application/json\",\n          \"x-requested-with\": \"XMLHttpRequest\"\n        },\n        referrer: \"https://account.ulike.com/\",\n        referrerPolicy: \"strict-origin-when-cross-origin\",\n        method: \"GET\",\n        mode: \"cors\",\n        credentials: \"include\"\n      })\n      .then(response => {\n        // \u53EF\u6839\u636E response.status \u5224\u65AD\u662F\u5426\u767B\u51FA\u6210\u529F\n        if (response.ok) {\n          // \u8DF3\u8F6C\u5230\u76EE\u6807\u94FE\u63A5\uFF0C\u6BD4\u5982\u9996\u9875\u6216\u767B\u5F55\u9875\n          window.location.href = $(this).attr('href') || '/';\n        } else {\n          console.error('Logout failed');\n        }\n      })\n      .catch(error => {\n        console.error('Logout error:', error);\n      });\n  });\n\n  // \u6839\u636E\u6307\u5B9A\u9875\u9762\u76D1\u542C\u4E8B\u4EF6\n  if (location.pathname == '/pages/treatment-tracker') {\n    let _temp = isMobile() ? 'M-' : '';\n    $(document).on(\n      'click',\n      '.treatment-tracker-banner .button-wrapper a',\n      function () {\n        commonGtmEvent(`${_temp}reminder_join`, isMobile(), location.pathname);\n      }\n    );\n    $(document).on('click', '.january-two .btn-txt', function () {\n      commonGtmEvent(`${_temp}reminder_sign up`, isMobile(), location.pathname);\n    });\n\n    $(document).on('click', '.review-product .review-product-btn', function () {\n      window._conv_q = window._conv_q || [];\n      _conv_q.push([\"triggerConversion\", \"100481517\" ]);\n    });\n\n    $(document).on('click', '.results-reviews-product-module .results-reviews-product-add-btn', function () {\n      window._conv_q = window._conv_q || [];\n      _conv_q.push([\"triggerConversion\", \"100481517\" ]);\n    });\n  }\n\n  if (location.href == 'https://www.ulike.com/') {\n    $('.refer-friend-container .join-button').on('click', function () {\n      commonGtmEvent(`\u8001\u5E26\u65B0\uFF0C\u5BFC\u6D41\uFF0C\u9996\u9875\u70B9\u51FB`, isMobile(), location.pathname);\n    })\n    // $('.product-area-first .product-area-btn-item').on('click', function () {\n    //   commonGtmEvent(`\u9996\u9875-A10-buy amazon`, isMobile(), location.pathname);\n    // })\n  }\n \n  $(document).on('click', '.product-form__button .button', function (e) {\n    commonGtmEvent(\"buy on amazon\", isMobile(), location.pathname);\n  });\n  \n  // 1V1  \n  if (!location.pathname.includes('/products/')) {\n    $(document).on('click', '.cs-consult .cs-consult__btn', function (e) {\n      commonGtmEvent('1V1-consultation', '', '');\n    });\n  }\n\n  \n\n  // \u79FB\u9664\u4F18\u60E0\u5238 \u5237\u65B0\u8D2D\u7269\u8F66\n  document.body.addEventListener('docapp-discount-code-remove', (e) => {\n    console.log('Code is being removed', e);\n    setTimeout(function () {\n      document.documentElement.dispatchEvent(\n        new CustomEvent('cart:refresh', {\n          bubbles: false,\n        })\n      );\n    }, 4400);\n  });\n\n  document.body.addEventListener('docapp-discount-code-submit', (e) => { \n    let code = $('.docapp-coupon-input--input').val()\n    if (code){\n      window.discountOnCartProApp.removeCode(window.discountOnCartProApp.codes[0]);\n    }\n  });\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n  init();\n  setTimeout(initGA, 1000);\n});\n\n/**\n * \u4ECEURL\u4E2D\u83B7\u53D6\u6307\u5B9A\u53C2\u6570\u7684\u503C\n * @param {string} paramName \u9700\u8981\u83B7\u53D6\u7684\u53C2\u6570\u540D\n * @return {string|null} \u5982\u679C\u627E\u5230\u6307\u5B9A\u53C2\u6570\uFF0C\u5219\u8FD4\u56DE\u5176\u503C\uFF1B\u5426\u5219\uFF0C\u8FD4\u56DEnull\n */\nfunction getUrlParameter(paramName) {\n  // \u521B\u5EFA\u4E00\u4E2AURLSearchParams\u5BF9\u8C61\uFF0C\u7528\u4E8E\u89E3\u6790URL\u4E2D\u7684\u67E5\u8BE2\u53C2\u6570\n  const params = new URLSearchParams(window.location.search);\n  // \u4F7F\u7528\u6307\u5B9A\u7684\u53C2\u6570\u540D\u83B7\u53D6\u53C2\u6570\u503C\u5E76\u8FD4\u56DE\n  return params.get(paramName);\n}\n\n/**\n * \u53D1\u9001\u8BF7\u6C42\u51FD\u6570\n * @param {string} url - \u8BF7\u6C42\u7684URL\n * @param {string} method - \u8BF7\u6C42\u65B9\u6CD5\uFF0C\u9ED8\u8BA4\u4E3A'GET'\n * @param {object} data - \u8BF7\u6C42\u7684\u6570\u636E\uFF0C\u9ED8\u8BA4\u4E3Anull\n * @returns {Promise} - \u8FD4\u56DE\u4E00\u4E2APromise\u5BF9\u8C61\n */\nfunction makeRequest(url, method = 'GET', data = null) {\n  return new Promise((resolve, reject) => {\n    const options = {\n      method,\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      mode: 'cors',\n      cache: 'no-cache',\n    };\n\n    if (data) {\n      options.body = JSON.stringify(data);\n    }\n\n    fetch(url, options)\n      .then((response) => {\n        if (!response.ok) {\n          throw new Error(`HTTP\u9519\u8BEF\uFF01\u72B6\u6001\u7801\uFF1A${response.status}`);\n        }\n        return response.json();\n      })\n      .then((data) => resolve(data))\n      .catch((error) => reject(error));\n  });\n}\n\n/**\n * \u9A8C\u8BC1\u90AE\u7BB1\u683C\u5F0F\u662F\u5426\u6B63\u786E\n * @param {string} email - \u5F85\u9A8C\u8BC1\u7684\u90AE\u7BB1\u5730\u5740\n * @returns {boolean} - \u8FD4\u56DEtrue\u8868\u793A\u90AE\u7BB1\u683C\u5F0F\u6B63\u786E\uFF0C\u8FD4\u56DEfalse\u8868\u793A\u90AE\u7BB1\u683C\u5F0F\u9519\u8BEF\n */\nfunction validateEmail(email) {\n  // \u90AE\u7BB1\u6B63\u5219\u8868\u8FBE\u5F0F\n  var emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  // \u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u6D4B\u8BD5\u90AE\u7BB1\u683C\u5F0F\u662F\u5426\u6B63\u786E\n  return emailRegex.test(email);\n}\n\n// \u590D\u5236code\nfunction copyTextFallback(text) {\n  if (navigator.clipboard) {\n    // \u786E\u4FDD\u8FD0\u884C\u5728\u5B89\u5168\u4E0A\u4E0B\u6587\uFF08\u5982 HTTPS\uFF09\u4E0B\u624D\u80FD\u4F7F\u7528 Clipboard API\n    navigator.clipboard.writeText(text);\n  } else {\n    const textArea = document.createElement('textarea');\n    textArea.value = text;\n    textArea.style.position = 'fixed'; // \u4F7F\u6587\u672C\u6846\u4E0D\u53EF\u89C1\n    document.body.appendChild(textArea);\n    textArea.select();\n    try {\n      document.execCommand('copy');\n      console.log('\u590D\u5236\u6210\u529F:', text);\n    } catch (err) {\n      console.error('\u590D\u5236\u5931\u8D25:', err);\n    }\n    document.body.removeChild(textArea); // \u5220\u9664\u4E34\u65F6\u6587\u672C\u6846\n  }\n}\n\n/**\n * \u81EA\u52A8\u5E94\u7528\u6298\u6263\u7801\u51FD\u6570\n * \u8BE5\u51FD\u6570\u7528\u4E8E\u68C0\u67E5\u5F53\u524D\u8D2D\u7269\u8F66\u4E2D\u5DF2\u5E94\u7528\u7684\u6298\u6263\u7801\uFF0C\u5982\u679C\u5B58\u5728\u4E0E\u9884\u8BBE\u6298\u6263\u7801\u76F8\u4F3C\u7684\u4EE3\u7801\uFF0C\u5219\u79FB\u9664\u8BE5\u4EE3\u7801\u5E76\u5E94\u7528\u65B0\u7684\u6298\u6263\u7801\u3002\n * @param {string} code - \u9700\u8981\u5E94\u7528\u7684\u65B0\u6298\u6263\u7801\n */\nfunction autoDiscountCode(code) {\n  let ulikeCode = [\n    'VVBPV0VS',\n    'SE9MSURBWQ==',\n    'VkRBWTI0',\n    'MTBZZWFycw==',\n    'UHJpbWVEZWFs',\n    'TUVNREFZODA=',\n    'TU9NUzgw',\n    'QUlSMTBFQVJMWQ==',\n    'TkVXNjA=',\n  ];\n  checkObject(window.discountOnCartProApp, function () {\n    let cartCodeArr = window.discountOnCartProApp.codes;\n    if (cartCodeArr.length < 1) {\n      window.discountOnCartProApp.applyCode(code);\n    } else {\n      var flag = ulikeCode.some((item) => cartCodeArr.includes(atob(item)));\n      if (flag) {\n        window.discountOnCartProApp.removeCode(\n          cartCodeArr[cartCodeArr.length - 1]\n        );\n        window.discountOnCartProApp.applyCode(code);\n      } else {\n        setCookie('discount_code', code, 1);\n        window.discountOnCartProApp.applyCode(code);\n      }\n    }\n    setTimeout(function () {\n      window.discountOnCartProApp.updateWidgets();\n    }, 3000);\n  });\n}\n\nfunction checkObject(obj, callback) {\n  if (window.discountOnCartProApp) {\n    // \u5BF9\u8C61\u5B58\u5728\uFF0C\u6267\u884C\u56DE\u8C03\u51FD\u6570\n    callback();\n  } else {\n    // \u5BF9\u8C61\u4E0D\u5B58\u5728\uFF0C1\u79D2\u540E\u518D\u6B21\u68C0\u67E5\n    setTimeout(() => checkObject(window.discountOnCartProApp, callback), 1000);\n  }\n}\n\nfunction scrollToElement(targetId) {\n  var targetElement = $('#' + targetId);\n\n  if (targetElement.length) {\n    // \u6EDA\u52A8\u5230\u76EE\u6807\u5143\u7D20\n    $('html, body').animate(\n      {\n        scrollTop: targetElement.offset().top - 100, // \u51CF\u53BB100\u50CF\u7D20\u7684\u504F\u79FB\u91CF\n      },\n      1000\n    );\n  } else {\n    // \u5982\u679C\u76EE\u6807\u5143\u7D20\u4E0D\u5B58\u5728\uFF0C\u6EDA\u52A8\u5230\u9875\u9762\u9876\u90E8\n    $('html, body').animate(\n      {\n        scrollTop: 0,\n      },\n      1000\n    );\n  }\n}\n\n/**\n * \u8BA2\u9605API\u51FD\u6570\n * \u8BE5\u51FD\u6570\u7528\u4E8E\u5411\u6307\u5B9A\u7684API\u53D1\u9001\u8BA2\u9605\u8BF7\u6C42\n *\n * @param {string} email - \u7528\u6237\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740\uFF0C\u7528\u4E8E\u8BA2\u9605\n * @param {string} tag - \u8BA2\u9605\u7684\u6807\u7B7E\uFF0C\u7528\u4E8E\u6307\u5B9A\u8BA2\u9605\u7684\u5185\u5BB9\u7C7B\u578B\n */\nfunction subscriptionApi(email, tag,type) {\n  let data = {\n    userEmail: email,\n    userPhone: '',\n    since: type || 'USER_SUBSCRIBE',\n    tags: [tag],\n  };\n  return sendUlikeApi('/user/userSubscribe', data);\n}\n\nfunction subscriptionApiNew(email, tag,type) {\n  let data = {\n    userEmail: email,\n    userPhone: '',\n    scene: type || 'USER_SUBSCRIBE',\n    tags: [tag],\n  };\n  return sendUlikeApi('/user/userSubscribe', data);\n}\n\nfunction sendUlikeApi(url, data) {\n  // api.myulike.test  \n  // api.ulike.com  \n  // 'https://api.myulike.com';  \n  data.siteCode = 'US';\n  var _url = 'https://api.ulike.com' + url;\n  data.language = window.Shopify.locale;\n\n  data.requestId = generateGUID();\n  // Set up the AJAX settings\n  var settings = {\n    url: _url,\n    method: 'POST', // POST is used as the request method\n    headers: {\n      'Content-Type': 'application/json', // Request payload is in JSON format\n    },\n    data: JSON.stringify(data), // Convert data object to JSON string\n    xhrFields: {\n      withCredentials: true, // Allow cookies and credentials to be sent\n    },\n  };\n\n  // Return a new Promise\n  return new Promise((resolve, reject) => {\n    $.ajax(settings)\n      .done(function (response) {\n        resolve(response); // Resolve the promise with the response\n      })\n      .fail(function (error) {\n        console.error('Error during API call:', error); // Log the error\n        reject(error); // Reject the promise with the error\n      });\n  });\n}\n\nfunction generateGUID() {\n  function s4() {\n    return Math.floor((1 + Math.random()) * 0x10000)\n      .toString(16)\n      .substring(1);\n  }\n  return (\n    s4() +\n    s4() +\n    '-' +\n    s4() +\n    '-' +\n    s4() +\n    '-' +\n    s4() +\n    '-' +\n    s4() +\n    s4() +\n    s4()\n  );\n}\n\n/**\n * \u624B\u673A\u53F7\u7801\u9A8C\u8BC1\n * @param {\u53F7\u7801} number\n * @returns\n */\nfunction validatePhoneNumber(number) {\n  const regex = /^(\\+|00)?[\\d\\s-]{0,4}?[\\s-]?(\\(?\\d+\\)?[\\s-]?){1,6}\\d+$/;\n  return regex.test(number);\n}\n\nfunction loadCSS(href) {\n  let link = document.createElement(\"link\");\n  link.rel = \"stylesheet\";\n  link.href = href;\n  link.media = \"all\"; // \u4F7F\u5176\u7ACB\u5373\u751F\u6548\n  link.fetchPriority = \"low\"; // \u4F4E\u4F18\u5148\u7EA7\u52A0\u8F7D\n  document.head.appendChild(link);\n}"],
  "mappings": "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",
  "names": ["observer", "data"]
}
