{"version":3,"file":"article.756551d104a4473d621f.js","mappings":"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","sources":["webpack://essence_site/external var \"jQuery\"","webpack://essence_site/webpack/bootstrap","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://essence_site/./wp/wp-content/themes/pubstack/assets/js/article/article-scroll.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://essence_site/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://essence_site/./wp/wp-content/themes/beautycon/assets/article.js"],"sourcesContent":["module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","// Debounce function to optimize event handling\nfunction debounce(func, delay) {\n  let timer;\n  return function () {\n    clearTimeout(timer);\n    timer = setTimeout(() => func.apply(this, arguments), delay);\n  };\n}\n\nfunction articleScroll() {\n  let iscrollInitiated = false,\n    iscrollMax = 1,\n    initialArticleId = null,\n    trackingArticleId = null,\n    articlesToLoad = {},\n    articlesLoaded = [],\n    viewObserver = null,\n    viewed_urls = [];\n\n  $(function () {\n    if (iscrollDisabled()) {\n      return;\n    }\n\n    // Function to initialize both observers\n    function initializeObservers() {\n      // Validate if the appview1 or appview2 parameter exists to avoid run the functions.\n      const currentUrl = window.location.href;\n      const url = new URL(currentUrl);\n      const params = new URLSearchParams(url.search);\n\n      const appView1 = \"appview1\";\n      const appView2 = \"appview2\";\n\n      if (!params.has(appView1) || !params.has(appView2)) {\n        initViewObserver();\n        initIscrollObserver();\n      }\n    }\n\n    // Run on page load\n    initializeObservers();\n\n    // Debounced resize event listener\n    const debouncedResize = debounce(initializeObservers, 200); // 200ms debounce\n    jQuery(window).on(\"resize\", debouncedResize); // Run on resize\n  });\n\n  /**\n   * Check if iscroll is disabled.\n   * @returns bool\n   */\n  const iscrollDisabled = () => {\n    // Disable iscroll if the request is from a verified Google crawler or fetcher\n\n    if (\n      typeof googleVerification !== \"undefined\" &&\n      googleVerification.isGoogleRequest\n    ) {\n      console.log(\"Google crawler or fetcher detected. Disabling iscroll.\");\n      return true;\n    }\n    // Override disableIscroll if disableIscroll param is present.\n    const urlParams = new URLSearchParams(window.location.search);\n    if (\n      urlParams.get(\"disableIscroll\") ||\n      navigator.userAgent.indexOf(\"Chrome-Lighthouse\") > -1\n    ) {\n      return true;\n    }\n\n    return (\n      window.disableIscroll ||\n      \"undefined\" === typeof ess_iscroll ||\n      !$(\".pubstack-post-header\").length ||\n      !$(\".pubstack-infinite-scroll\").length ||\n      !$(\"#main article\").length\n    );\n  };\n\n  /**\n   * Init iscroll observer\n   */\n  const initIscrollObserver = () => {\n    const options = {\n      rootMargin: `-300% 0px 300% 0px`, // 3 screen heights\n      threshold: 0,\n    };\n\n    const handler = (entries, observer) => {\n      entries.forEach((entry) => {\n        if (entry.isIntersecting) {\n          initIscrollOnce();\n          loadNextArticle();\n        }\n      });\n    };\n\n    let iscrollObserver = new IntersectionObserver(handler, options);\n    iscrollObserver.observe(document.querySelector(\".site-footer\"));\n  };\n\n  /**\n   * Init url observer\n   */\n  const initViewObserver = () => {\n    viewObserver = new IntersectionObserver(\n      (entries, observer) => {\n        entries.forEach((entry) => {\n          const $currentArticle = $(entry.target);\n\n          // Check if this article or any of its children has the 'na-sponsor' class\n          const isSponsored = $currentArticle.find(\".na-sponsor\").length > 0;\n\n          // Get the previous article relative to the current one\n          const $prevArticle = $currentArticle.prevAll(\"article\").first();\n\n          if (isSponsored && $prevArticle.length) {\n            if (entry.isIntersecting) {\n              // Sponsored article is in view, add 'body' class to the previous article\n              $prevArticle.addClass(\"body\");\n            } else {\n              // Sponsored article is out of view, remove 'body' class from the previous article\n              $prevArticle.removeClass(\"body\");\n            }\n          }\n          const post = $(entry.target).prev().data(\"url\");\n          if (entry.isIntersecting) {\n            // Entering. Scrolling downwards.\n            if (entry.boundingClientRect.top > 0) {\n              onArticleView(entry.target);\n              entry.target.ess_entered_view = true;\n            }\n          } else {\n            // Initial page view. Or, scrolling upwards.\n            if (entry.boundingClientRect.top > 0) {\n              // Bypass the first call on observe start.\n              if (typeof entry.target.ess_entered_view !== \"undefined\") {\n                onArticleView($(entry.target).prevAll(\"article\").get(0));\n              }\n            }\n          }\n        });\n      },\n      { threshold: 0 }\n    );\n  };\n\n  /**\n   * Init iscroll setup.\n   */\n  const initIscrollOnce = () => {\n    if (iscrollInitiated) {\n      return;\n    }\n\n    /* Initial article */\n    initialArticleId = Number($(\".pubstack-post-header\").next().data(\"id\"));\n    trackingArticleId = initialArticleId; // Last article which is not loaded by injections\n    articlesLoaded = [initialArticleId];\n\n    getInjectionDetails();\n\n    iscrollInitiated = true;\n  };\n\n  /**\n   * Load next iscroll article.\n   */\n  const loadNextArticle = () => {\n    // Check if another loading is in progress.\n    if ($(\".pubstack-infinite-scroll\").hasClass(\"working\")) {\n      return false;\n    }\n\n    // Stop iscroll if max articles loaded.\n    if (articlesLoaded.length > iscrollMax) {\n      iscrollObserver.disconnect();\n      return; // Exit function early to prevent further execution\n    }\n\n    const nextIscrollIndex = articlesLoaded.length;\n\n    let data = {\n      articlesLoaded,\n    };\n\n    if (Object.keys(articlesToLoad).includes(`${nextIscrollIndex}`)) {\n      // check if article to inject is already loaded.\n      const articleToLoad = articlesToLoad[nextIscrollIndex];\n\n      if (\n        !(\n          articleToLoad.type === \"random\" &&\n          articlesLoaded.includes(articleToLoad.nextPostId)\n        )\n      ) {\n        data = { ...data, ...articleToLoad };\n      }\n    }\n\n    $(\".pubstack-infinite-scroll\").addClass(\"working\");\n    fetch(\n      pubstack.restUrl +\n        \"ess/v1/next-article/\" +\n        trackingArticleId +\n        \"?type=\" +\n        data[\"type\"] +\n        \"&articlesLoaded=\" +\n        articlesLoaded +\n        \"&nextPostId=\" +\n        data[\"nextPostId\"],\n      {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"html/text\",\n        },\n      }\n    )\n      .then((response) => {\n        return response.text();\n      })\n      .then((html) => {\n        $(\".pubstack-infinite-scroll\").replaceWith(html);\n\n        const id = html.match(/<article id=\"(post-\\d*)\"/);\n        const $article = id ? $(`#${id[1]}`) : false;\n        if ($article && $article.length) {\n          const articleId = $article[0].getAttribute(\"data-id\");\n          articlesLoaded.push(+articleId);\n\n          if (!data.type) {\n            trackingArticleId = articleId;\n          }\n          viewObserver.observe($article.get(0));\n          runTriggers($article.prev());\n        }\n      })\n      .catch((error) => {\n        console.error(\"Could not load next article.\");\n        $(\".pubstack-infinite-scroll\").addClass(\"failed\");\n      });\n  };\n\n  /**\n   * Get given count of random numbers between [start] and [end]\n   */\n  function getRandNumbers(start, end, count) {\n    const arr = [...Array(end + 1).keys()].slice(start); // start=2, end=8 ---> E.g: [ 2,3,4,5,6,7,8 ]\n    const length = end - start + 1;\n    let rands = [];\n\n    for (let i = 1; i <= count; i++) {\n      var r = Math.floor(Math.random() * (length - i + 1));\n      rands.push(arr[r]);\n      arr[r] = arr[length - i];\n    }\n\n    return rands.sort(); // count=3 ---> E.g. [ 3,7,8 ]  [ 2,5,6 ] ...\n  }\n\n  /**\n   * Get video + random articles lists to inject\n   */\n  function getInjectionDetails() {\n    iscrollMax = ess_iscroll.ess_iscroll_max;\n\n    // Let Google Optimize Test override the max variable.\n    if (typeof window.maxIscroll !== \"undefined\") {\n      iscrollMax = window.maxIscroll;\n    }\n\n    /* Random articles injection */\n    if (\"1\" === ess_iscroll.ess_random_articles_enabled) {\n      if (\"global\" === ess_iscroll.ess_injector_scope) {\n        let ess_random_articles = ess_iscroll.ess_random_articles.filter(\n          (x) => x !== initialArticleId\n        );\n        if (ess_random_articles.length) {\n          // Get available slot count\n          const slot_count = Math.min(\n            ess_iscroll.ess_slot_count,\n            iscrollMax,\n            ess_random_articles.length\n          );\n\n          // Get random position vs. article\n          const random_pos = getRandNumbers(1, iscrollMax - 1, slot_count);\n          const random_indexes = getRandNumbers(\n            0,\n            ess_random_articles.length - 1,\n            slot_count\n          );\n\n          // Add to injections\n          random_indexes.forEach((index, i) => {\n            articlesToLoad[random_pos[i]] = {\n              type: \"random\",\n              nextPostId: ess_random_articles[index],\n            };\n          });\n        }\n      } else if (\"specific\" === ess_iscroll.ess_injector_scope) {\n        let toDedupe = [];\n        ess_iscroll.ess_random_articles.forEach((slot) => {\n          if (+slot.pos > iscrollMax) {\n            return;\n          }\n          slot.articles = slot.articles.filter((x) => x !== initialArticleId);\n          slot.articles = slot.articles.filter((x) => !toDedupe.includes(x));\n          if (!slot.articles.length) {\n            return;\n          }\n          const random_index = getRandNumbers(0, slot.articles.length - 1, 1);\n          //ensure sponsored articles are prioritized\n          if (\"sponsored\" === slot.type) {\n            for (let i = 0; i < slot.articles.length; i++) {\n              toDedupe.push(slot.articles[i]);\n            }\n            //choose one at random\n            articlesToLoad[slot.pos] = {\n              type: \"random\",\n              nextPostId: slot.articles[random_index],\n            };\n          } else {\n            //pick a random selected article for this slot\n            toDedupe.push(slot.articles[random_index]);\n            //dont override sponsored articles\n            if (articlesToLoad[slot.pos] === undefined) {\n              articlesToLoad[slot.pos] = {\n                type: \"random\",\n                nextPostId: slot.articles[random_index],\n              };\n            }\n          }\n        });\n      }\n    }\n\n    /* Video injections */\n    if (ess_iscroll.ess_iscroll_video) {\n      let video_pos;\n      let inj_count = iscrollMax;\n      if (\"end\" === ess_iscroll.ess_iscroll_video_pos) {\n        articlesToLoad[++inj_count] = { type: \"video\" };\n        if (ess_iscroll.ess_iscroll_video2) {\n          articlesToLoad[++inj_count] = { type: \"video\" };\n        }\n      } else {\n        if (!isNaN(ess_iscroll.ess_iscroll_video1)) {\n          video_pos = Math.min(ess_iscroll.ess_iscroll_video1, inj_count + 1); // Append video to the end if the pos is greater than max count\n          // If any random article pos is the same as the video pos, insert video after the random article\n          while (Object.keys(articlesToLoad).includes(`${video_pos}`)) {\n            video_pos++;\n          }\n          articlesToLoad[video_pos] = { type: \"video\" };\n        }\n      }\n    }\n  }\n\n  const trackPageView = ($articleHeader = null) => {\n    if (!$articleHeader) {\n      $articleHeader = $(\".pubstack-post-header\").first();\n    }\n\n    const post_data = $articleHeader.data(\"post-info\");\n    $(window).trigger(\"analytics:pageView\", [\"\", post_data]);\n  };\n\n  const trackIscrollView = (iscrollIndex) => {\n    $(window).trigger(\"analytics:event:iscrollView\", [iscrollIndex]);\n  };\n\n  /**\n   * On article view, update the url and trigger analytics events.\n   */\n  function onArticleView(currArticle) {\n    const $currArticleHeader = $(currArticle).prev();\n    const currUrl = $currArticleHeader.data(\"url\");\n    const currTitle = $currArticleHeader.data(\"title\");\n\n    if (window.location.href.split(\"#\")[0] !== currUrl) {\n      history.replaceState({}, currTitle, currUrl);\n    }\n\n    const postType = $currArticleHeader.data(\"post_type\");\n    if (\"article\" === postType) {\n      $(window).trigger(\"gallery:updatesections\");\n    }\n\n    // Remember the first article viewed at initial page load\n    if (viewed_urls.length < 1) {\n      viewed_urls.push($(currArticle).prevAll(\"article\").prev().data(\"url\"));\n    }\n    // Trigger tracking events if it's the first time viewing the next article.\n    if (!viewed_urls.includes(currUrl)) {\n      viewed_urls.push(currUrl);\n\n      trackPageView($currArticleHeader);\n      // The initial page view was already tracked with iScrollIndex = 0\n      if (viewed_urls.length > 1) {\n        trackIscrollView(viewed_urls.length - 1);\n      }\n    }\n  }\n\n  /**\n   * Run triggers for 3rd parties after next article is loaded\n   */\n  function runTriggers(header) {\n    $(window).trigger(\"ess_article_loaded\", [header]);\n    // $(window).trigger(\"jw:loadplayers\");\n    $(window).trigger(\"customCodeBlock:insert\", [header]);\n    $(window).trigger(\"injector:scroll_update\", [header.next()]);\n    $(window).trigger(\"omebed:renderInstagram\", [header]);\n\n    $(window).trigger(\"jwplayer:addVideo\");\n  }\n}\n\nexport default articleScroll;\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/**\n * All Content post type scripts required should be included here.\n *\n * This is the file that Webpack is compiling into article.[hash].js\n */\n\nimport articleScroll from \"../../pubstack/assets/js/article/article-scroll\";\n\njQuery(function () {\n  articleScroll();\n});\n"],"names":["module","exports","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","_arrayLikeToArray","arr","len","length","i","arr2","Array","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","key","value","arg","input","hint","prim","toPrimitive","res","call","TypeError","String","Object","defineProperty","enumerable","configurable","writable","iscrollInitiated","iscrollMax","initialArticleId","trackingArticleId","articlesToLoad","articlesLoaded","viewObserver","viewed_urls","$","iscrollDisabled","initializeObservers","func","timer","debouncedResize","clearTimeout","setTimeout","apply","arguments","window","on","currentUrl","location","href","url","URL","params","URLSearchParams","search","has","initViewObserver","initIscrollObserver","googleVerification","isGoogleRequest","console","log","get","navigator","userAgent","indexOf","disableIscroll","ess_iscroll","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","initIscrollOnce","loadNextArticle","rootMargin","threshold","observe","document","querySelector","$currentArticle","target","isSponsored","find","$prevArticle","prevAll","first","addClass","removeClass","prev","data","boundingClientRect","top","onArticleView","ess_entered_view","Number","next","ess_iscroll_max","maxIscroll","ess_random_articles_enabled","ess_injector_scope","ess_random_articles","filter","x","slot_count","Math","min","ess_slot_count","random_pos","getRandNumbers","index","type","nextPostId","toDedupe","slot","pos","articles","includes","random_index","push","ess_iscroll_video","video_pos","inj_count","ess_iscroll_video_pos","ess_iscroll_video2","isNaN","ess_iscroll_video1","keys","getInjectionDetails","hasClass","iscrollObserver","disconnect","nextIscrollIndex","articleToLoad","fetch","pubstack","restUrl","method","headers","then","response","text","html","replaceWith","header","id","match","$article","articleId","getAttribute","trigger","catch","error","start","end","count","isArray","iter","from","o","minLen","n","toString","slice","name","test","rands","r","floor","random","sort","trackPageView","$articleHeader","post_data","trackIscrollView","iscrollIndex","currArticle","$currArticleHeader","currUrl","currTitle","split","history","replaceState","articleScroll"],"sourceRoot":""}