{"version":3,"sources":["webpack:///./javascript/ab/pages/pip/index.js","webpack:///./javascript/_shared/vendors/paypal/index.js","webpack:///./javascript/_shared/ui-helpers/index.js","webpack:///./javascript/_shared/ui-helpers/schema.js"],"names":["tabButtons","addPayPalMarketingBanner","update","window","amount","parseFloat","document","querySelector","textContent","replace","e","console","log","paypal","PayPal","options","style","layout","logo","position","type","updateMarketingBanner","addMarketingBanner","sendAnalytics","tabName","_T","sendEventDataToAnalytics","thdAnalyticsEvent","category","primaryCategory","eventInfo","eventName","eventDescription","querySelectorAll","Array","prototype","forEach","call","navItem","addEventListener","b","classList","remove","target","add","activeTab","attributes","title","value","dataset","tab","scrollToSection","MutationObserver","mutations","mutation","attributeName","debounce","observe","childList","characterData","subtree","Paypal","args","this","paypalLandingPage","Element","matches","msMatchesSelector","globals","paypalParams","cancelUrl","returnUrl","fetch","paths","setPaypalExpressCheckout","body","credentials","headers","method","then","res","json","data","Data","Token","orderID","payerID","location","href","page","digitalData","pageInfo","pageType","pageVar","fundingSource","isPayPalCredit","triggerAnalyticsEvent","container","stylesParam","$this","color","fundingicons","height","label","shape","tagline","Buttons","createOrder","onApprove","onClick","render","containerSelector","firstChild","removeChild","watchClickOnMarketingBanners","pageContextJavascript","defaultOptions","getScript","paypalClientId","Messages","newOptions","triggerAnalyticsEventBanners","mktBannerId","ddoEventInit","substr","isFinancing","mktBannerContainerSelector","mktBannersObj","iframeMouseOver","setTimeout","activeElement","HTMLIFrameElement","closest","event","animateScrollLeft","pElement","finalLeft","element","id","left","scrollLeft","direction","setInterval","clearInterval","baseURL","protocol","host","breakpoint","getComputedStyle","getPropertyValue","camelCaseToDash","str","toLowerCase","capitalize","String","x","toUpperCase","callback","wait","immediate","timeout","callNow","next","apply","clearTimeout","getDevice","ua","navigator","userAgent","test","getDistanceFromTop","getBoundingClientRect","t","top","innerHeight","getQueryParams","stringToParse","search","lastIndexOf","substring","JSON","parse","key","decodeURIComponent","dollars","price","undefined","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","format","round","decimals","Number","Math","getOrientation","matchMedia","getParents","el","parentParam","parentSelector","parents","p","parentNode","o","push","source","getElementsByTagName","resolve","scripts","length","script","createElement","async","onload","onreadystatechange","_","isAbort","readyState","setAttribute","src","appendChild","node","isLoaded","getAttribute","oldOnLoad","isIE11","MSInputMethodContext","documentMode","isInViewport","h","selector","matchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","smoothScroll","topOrLeft","horizontal","testSupportsSmoothScroll","supports","scrollTo","err","easingOutQuint","c","d","$t","hasNativeSmoothScroll","smoothScrollPolyfill","nodeParam","$node","startTime","Date","now","offset","gap","interrupt","cancel","cleanup","removeEventListener","passive","step","elapsed","requestAnimationFrame","hash","yOffset","to","yCoordinate","pageYOffset","behavior","scrollTillYouReachElement","elmnt","timeToCheck","numberOfTries","bounding","numTries","scrollIntoView","time","numberTries","throttle","func","delay","schemaBreadcrumbLDJSON","schemaBreadcrumbLDJSONScript","breadcrumbs","breadcrumbArray","map","i","text","url","crumb","name","item","itemListElement","schema","innerHTML"],"mappings":"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","file":"ab_pip-b78ba52823f3c39e284b.js","sourcesContent":["import { debounce, scrollToSection } from 'ui-helpers';\r\nimport PayPal from 'vendors/paypal';\r\n\r\nconst addPayPalMarketingBanner = (update) => {\r\n if (typeof window !== 'undefined') {\r\n let amount = 0;\r\n try {\r\n amount = parseFloat(document.querySelector('.gcc-prd-prcupd-prc-curr').textContent.replace(/[^0-9.]/g, ''));\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.log(`PayPal Marketing Banner: Amount on the PIP couldn't be parsed: ${e}`);\r\n }\r\n const paypal = new PayPal();\r\n const options = {\r\n amount,\r\n style: {\r\n layout: 'text',\r\n logo: {\r\n position: 'left',\r\n type: 'alternative',\r\n },\r\n },\r\n };\r\n if (update) {\r\n paypal.updateMarketingBanner('#gcc-prd-ppcredit', options);\r\n } else {\r\n paypal.addMarketingBanner('#gcc-prd-ppcredit', options);\r\n }\r\n }\r\n};\r\n\r\nconst sendAnalytics = (tabName) => {\r\n // eslint-disable-next-line no-underscore-dangle, no-undef\r\n if (window._T && typeof _T.sendEventDataToAnalytics !== 'undefined') {\r\n const thdAnalyticsEvent = {\r\n category: {\r\n primaryCategory: 'button submission',\r\n },\r\n eventInfo: {\r\n eventName: 'flex button',\r\n eventDescription: tabName,\r\n },\r\n };\r\n // eslint-disable-next-line no-undef\r\n if (_T.sendEventDataToAnalytics) {\r\n // eslint-disable-next-line no-undef\r\n _T.sendEventDataToAnalytics(thdAnalyticsEvent);\r\n }\r\n }\r\n};\r\n\r\nconst handleTabClicks = () => {\r\n const tabButtons = document.querySelectorAll('#Tabs button');\r\n Array.prototype.forEach.call(tabButtons, (navItem) => {\r\n navItem.addEventListener('click', (e) => {\r\n Array.prototype.forEach.call(tabButtons, (b) => {\r\n b.classList.remove('active');\r\n });\r\n const { target } = e;\r\n target.classList.add('active');\r\n const activeTab = target.attributes.title.value;\r\n\r\n // show content block\r\n document.querySelector('main.gcc-prd').dataset.tab = activeTab;\r\n scrollToSection('#scrollHere', 20);\r\n\r\n if (activeTab === 'colors-tab') {\r\n sendAnalytics('tabs - product colors');\r\n } else if (activeTab === 'reviews-tab') {\r\n sendAnalytics('tabs - product revivews');\r\n } else if (activeTab === 'qa-tab') {\r\n sendAnalytics('tabs - question & answers');\r\n } else if (activeTab === 'details-tab') {\r\n sendAnalytics('tabs - product details');\r\n }\r\n });\r\n });\r\n};\r\n\r\nhandleTabClicks();\r\naddPayPalMarketingBanner();\r\nconst observer = new MutationObserver((mutations) =>\r\n mutations.forEach((mutation) => {\r\n if (mutation.attributeName === 'data-current-price') {\r\n debounce(() => addPayPalMarketingBanner(true))();\r\n }\r\n })\r\n);\r\nconst observerConfig = { attributes: true, childList: true, characterData: true, subtree: true };\r\nobserver.observe(document.querySelector('.gcc-prd-prcupd-prc-curr'), observerConfig);\r\n","import { getScript } from 'ui-helpers';\r\n\r\n/* eslint-disable class-methods-use-this */\r\nclass Paypal {\r\n constructor(args) {\r\n const $this = this;\r\n $this.paypalLandingPage = '/paypal';\r\n $this.paypal = window.paypal;\r\n if (args) {\r\n Object.assign(this, args);\r\n }\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector;\r\n }\r\n }\r\n\r\n async createOrder() {\r\n const paypalLegacyReturnCancelUrl = 'https://www.paypal.com/checkoutnow/error';\r\n const { globals } = window;\r\n const paypalParams = {\r\n cancelUrl: paypalLegacyReturnCancelUrl,\r\n returnUrl: paypalLegacyReturnCancelUrl,\r\n };\r\n return fetch(globals.paths.setPaypalExpressCheckout, {\r\n body: JSON.stringify(paypalParams),\r\n credentials: 'same-origin',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'POST',\r\n })\r\n .then((res) => res.json())\r\n .then((data) => data.Data.Token);\r\n }\r\n\r\n onApprove(data) {\r\n const { orderID, payerID } = data;\r\n window.location.href = `/Ordering/Checkout/Review?token=${orderID}&PayerID=${payerID}`;\r\n }\r\n\r\n onClick(data) {\r\n const page = window.digitalData.page.pageInfo.pageType;\r\n const pageVar = page === 'checkout' ? 'shipping' : page;\r\n const { fundingSource } = data;\r\n const isPayPalCredit = fundingSource === 'credit' || fundingSource === 'venmo';\r\n this.triggerAnalyticsEvent(pageVar, isPayPalCredit);\r\n }\r\n\r\n triggerAnalyticsEventBanners = (page, mktBannerId) => {\r\n window.ddoEventInit({\r\n category: {\r\n primaryCategory: 'button submission',\r\n },\r\n eventInfo: {\r\n eventName: 'flex button',\r\n eventDescription: `paypal banner - ${page} page - ${mktBannerId.substr(1)}`,\r\n },\r\n });\r\n };\r\n\r\n triggerAnalyticsEvent = (page, isFinancing) => {\r\n if (isFinancing) {\r\n window.ddoEventInit({\r\n category: {\r\n primaryCategory: 'button submission',\r\n },\r\n eventInfo: {\r\n eventName: 'flex button',\r\n eventDescription: `paypal credit - ${page} page`,\r\n },\r\n });\r\n } else {\r\n const pageVar = page === 'checkout' ? 'shipping' : page;\r\n window.ddoEventInit({\r\n category: {\r\n primaryCategory: 'button submission',\r\n },\r\n eventInfo: {\r\n eventName: `blinds paypal ${pageVar}`,\r\n },\r\n });\r\n }\r\n };\r\n\r\n addHorizontalButtons(container, stylesParam) {\r\n const $this = this;\r\n const defaultStyles = {\r\n color: 'gold',\r\n fundingicons: false,\r\n height: 41,\r\n label: 'paypal',\r\n layout: 'horizontal',\r\n shape: 'rect',\r\n tagline: false,\r\n };\r\n const style = { ...defaultStyles, ...stylesParam };\r\n if (typeof this.paypal !== 'undefined') {\r\n this.paypal\r\n .Buttons({\r\n createOrder: this.createOrder,\r\n onApprove: this.onApprove,\r\n onClick: (data) => {\r\n $this.onClick(data);\r\n },\r\n style,\r\n })\r\n .render(container);\r\n }\r\n }\r\n\r\n addVerticalButtons(container) {\r\n const $this = this;\r\n if (typeof this.paypal !== 'undefined') {\r\n this.paypal\r\n .Buttons({\r\n createOrder: this.createOrder,\r\n onApprove: this.onApprove,\r\n onClick: (data) => {\r\n $this.onClick(data);\r\n },\r\n style: {\r\n color: 'gold',\r\n fundingicons: false,\r\n label: 'paypal',\r\n layout: 'vertical',\r\n shape: 'rect',\r\n tagline: false,\r\n },\r\n })\r\n .render(container);\r\n }\r\n }\r\n\r\n watchClickOnMarketingBanners = (mktBannerContainerSelector) => {\r\n const $this = this;\r\n const mktBannersObj = {\r\n iframeMouseOver: false,\r\n };\r\n\r\n window.addEventListener('blur', () => {\r\n window.setTimeout(() => {\r\n if (\r\n document.activeElement instanceof HTMLIFrameElement &&\r\n document.activeElement.closest(mktBannerContainerSelector)\r\n ) {\r\n const page = window.digitalData.page.pageInfo.pageType;\r\n $this.triggerAnalyticsEventBanners(page, mktBannerContainerSelector);\r\n }\r\n }, 0);\r\n });\r\n\r\n document.addEventListener('mouseover', (event) => {\r\n if (event.target.matches('[title=\"paypal_buttons\"]')) {\r\n mktBannersObj.iframeMouseOver = true;\r\n }\r\n });\r\n\r\n document.addEventListener('mouseout', (event) => {\r\n if (event.target.matches('[title=\"paypal_buttons\"]')) {\r\n mktBannersObj.iframeMouseOver = false;\r\n }\r\n });\r\n };\r\n\r\n addMarketingBanner(containerSelector, options) {\r\n const container = document.querySelector(containerSelector);\r\n if (container) {\r\n while (container.firstChild) {\r\n container.removeChild(container.firstChild);\r\n }\r\n this.watchClickOnMarketingBanners(containerSelector);\r\n\r\n const { pageContextJavascript } = window;\r\n const defaultOptions = {\r\n style: {\r\n layout: 'text',\r\n logo: {\r\n type: 'primary',\r\n position: 'left',\r\n },\r\n },\r\n };\r\n // eslint-disable-next-line no-param-reassign\r\n options = options || {};\r\n getScript(\r\n `https://www.paypal.com/sdk/js?client-id=${pageContextJavascript.paypalClientId}&components=messages`\r\n ).then(() => {\r\n const { paypal } = window;\r\n paypal.Messages({ ...defaultOptions, ...options }).render(containerSelector);\r\n });\r\n }\r\n }\r\n\r\n updateMarketingBanner(containerSelector, options) {\r\n const container = document.querySelector(containerSelector);\r\n if (container) {\r\n const defaultOptions = {\r\n style: {\r\n layout: 'text',\r\n logo: {\r\n type: 'primary',\r\n position: 'left',\r\n },\r\n },\r\n };\r\n const newOptions = options || {};\r\n const { paypal } = window;\r\n paypal.Messages({ ...defaultOptions, ...newOptions }).render(containerSelector);\r\n }\r\n }\r\n}\r\n\r\nexport default Paypal;\r\n","/* eslint-disable func-names */\r\nimport Intl from 'intl';\r\nimport 'intl/locale-data/jsonp/en-US';\r\nimport { schemaBreadcrumbLDJSON, schemaBreadcrumbLDJSONScript } from './schema';\r\n\r\n/* eslint-disable no-multi-assign */\r\nconst animateScrollLeft = (pElement, finalLeft) => {\r\n const element = pElement;\r\n let id;\r\n let left = element.scrollLeft;\r\n const direction = finalLeft > left ? 'right' : 'left';\r\n const scrollLeft = () => {\r\n if (direction === 'left') {\r\n left -= 15;\r\n } else {\r\n left += 15;\r\n }\r\n element.scrollLeft = left;\r\n if (direction === 'left') {\r\n if (left <= finalLeft) {\r\n clearInterval(id);\r\n }\r\n } else if (left >= finalLeft) {\r\n clearInterval(id);\r\n }\r\n };\r\n id = setInterval(scrollLeft, 10);\r\n};\r\n\r\nconst baseURL = typeof window !== 'undefined' ? `${window.location.protocol}//${window.location.host}` : '';\r\n\r\nconst breakpoint = () =>\r\n typeof window === 'undefined'\r\n ? 'small'\r\n : window.getComputedStyle(document.querySelector('body'), ':before').getPropertyValue('content').replace(/\"/g, '');\r\n\r\nconst camelCaseToDash = (str) => str.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase();\r\n\r\nconst capitalize = (str) =>\r\n String(str)\r\n .toLowerCase()\r\n .replace(/(^| )(\\w)/g, (x) => x.toUpperCase());\r\n\r\nconst debounce = (callback, wait, immediate = false) => {\r\n let timeout = null;\r\n return () => {\r\n const callNow = immediate && !timeout;\r\n // eslint-disable-next-line no-undef\r\n const next = () => callback.apply(this, arguments);\r\n clearTimeout(timeout);\r\n timeout = setTimeout(next, wait);\r\n if (callNow) {\r\n next();\r\n }\r\n };\r\n};\r\n\r\nconst getDevice = () => {\r\n const ua = typeof navigator === 'undefined' ? '' : navigator.userAgent.toLowerCase();\r\n if (\r\n /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(\r\n ua\r\n )\r\n ) {\r\n return 'tablet';\r\n } else if (\r\n /(mobi|ipod|phone|blackberry|opera mini|fennec|minimo|symbian|psp|nintendo ds|archos|skyfire|puffin|blazer|bolt|gobrowser|iris|maemo|semc|teashark|uzard)/.test(\r\n ua\r\n )\r\n ) {\r\n return 'phone';\r\n }\r\n return 'desktop';\r\n};\r\n\r\nconst getDistanceFromTop = (e, { top: t } = e.getBoundingClientRect()) => t - innerHeight;\r\n\r\nconst getQueryParams = (stringToParse = window.location.search.lastIndexOf('?') + 1) => {\r\n const search = stringToParse.substring(stringToParse.lastIndexOf('?') + 1);\r\n return JSON.parse(`{\"${search.replace(/&/g, '\",\"').replace(/=/g, '\":\"')}\"}`, (key, value) =>\r\n key === '' ? value : decodeURIComponent(value)\r\n );\r\n};\r\n\r\nconst dollars = (price) => {\r\n if (price === undefined) return '';\r\n return new Intl.NumberFormat('en', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }).format(price);\r\n};\r\n\r\nconst round = (value, decimals) => Number(`${Math.round(`${value}e${decimals}`)}e-${decimals}`);\r\n\r\nconst getOrientation = () => {\r\n if (typeof window === 'undefined') {\r\n return '';\r\n } else if (window.matchMedia('(orientation: landscape)').matches) {\r\n return 'landscape';\r\n }\r\n return 'portrait';\r\n};\r\n\r\nconst getParents = (el, parentParam) => {\r\n let parentSelector = parentParam;\r\n if (parentSelector === undefined) {\r\n parentSelector = document;\r\n }\r\n const parents = [];\r\n let p = el.parentNode;\r\n while (p !== parentSelector) {\r\n const o = p;\r\n parents.push(o);\r\n p = o.parentNode;\r\n }\r\n parents.push(parentSelector);\r\n return parents;\r\n};\r\n\r\nconst getScript = (source, callback, container = document.getElementsByTagName('head')[0]) =>\r\n new Promise((resolve) => {\r\n const scripts = document.querySelectorAll(`script[src=\"${source}\"]`);\r\n if (scripts.length < 1) {\r\n let script = document.createElement('script');\r\n script.async = 1;\r\n script.onload = script.onreadystatechange = (_, isAbort) => {\r\n if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {\r\n script.onload = script.onreadystatechange = null;\r\n script.setAttribute('data-loadstate', 'loaded');\r\n script = undefined;\r\n if (!isAbort) {\r\n if (callback) {\r\n callback();\r\n }\r\n resolve();\r\n }\r\n }\r\n };\r\n script.src = source;\r\n container.appendChild(script);\r\n } else {\r\n const node = scripts[0];\r\n const isLoaded = node.getAttribute('data-loadstate');\r\n if (isLoaded && isLoaded === 'loaded') {\r\n if (callback) {\r\n callback();\r\n }\r\n resolve();\r\n } else {\r\n const oldOnLoad = node.onload;\r\n node.onload = (_, isAbort) => {\r\n oldOnLoad(_, isAbort);\r\n if (!isAbort) {\r\n if (callback) {\r\n callback();\r\n }\r\n resolve();\r\n }\r\n };\r\n }\r\n }\r\n });\r\n\r\nconst isIE11 = typeof window === 'undefined' ? false : !!window.MSInputMethodContext && !!document.documentMode;\r\n\r\nconst isInViewport = (e, { top: t, height: h } = e.getBoundingClientRect()) => t <= innerHeight && t + h >= 0;\r\n\r\nconst matches = (el, selector) =>\r\n (\r\n el.matches ||\r\n el.matchesSelector ||\r\n el.msMatchesSelector ||\r\n el.mozMatchesSelector ||\r\n el.webkitMatchesSelector ||\r\n el.oMatchesSelector\r\n ).call(el, selector);\r\n\r\nconst smoothScroll = (node, topOrLeft = 'top', horizontal = false) => {\r\n const testSupportsSmoothScroll = () => {\r\n let supports = false;\r\n try {\r\n const div = document.createElement('div');\r\n div.scrollTo({\r\n top: 0,\r\n get behavior() {\r\n supports = true;\r\n return 'smooth';\r\n },\r\n });\r\n // eslint-disable-next-line no-empty\r\n } catch (err) {}\r\n return supports;\r\n };\r\n const easingOutQuint = (x, t, b, c, d) => {\r\n // via https://github.com/tootsuite/mastodon/blob/f59ed3a4fafab776b4eeb92f805dfe1fecc17ee3/app/javascript/mastodon/scroll.js\r\n let $t = t;\r\n return c * (($t = $t / d - 1) * $t * $t * $t * $t + 1) + b;\r\n };\r\n const hasNativeSmoothScroll = testSupportsSmoothScroll();\r\n const smoothScrollPolyfill = (nodeParam, key, target) => {\r\n const $node = nodeParam;\r\n const startTime = Date.now();\r\n const offset = node[key];\r\n const gap = target - offset;\r\n const duration = 1000;\r\n let interrupt = false;\r\n\r\n const cancel = () => {\r\n interrupt = true;\r\n // eslint-disable-next-line no-use-before-define\r\n cleanup();\r\n };\r\n\r\n const cleanup = () => {\r\n $node.removeEventListener('wheel', cancel);\r\n $node.removeEventListener('touchstart', cancel);\r\n };\r\n\r\n const step = () => {\r\n const elapsed = Date.now() - startTime;\r\n const percentage = elapsed / duration;\r\n if (interrupt) {\r\n return;\r\n }\r\n if (percentage > 1) {\r\n cleanup();\r\n return;\r\n }\r\n $node[key] = easingOutQuint(0, elapsed, offset, gap, duration);\r\n requestAnimationFrame(step);\r\n };\r\n $node.addEventListener('wheel', cancel, { passive: true });\r\n $node.addEventListener('touchstart', cancel, { passive: true });\r\n step();\r\n return cancel;\r\n };\r\n if (hasNativeSmoothScroll) {\r\n return node.scrollTo({\r\n [horizontal ? 'left' : 'top']: topOrLeft,\r\n behavior: 'smooth',\r\n });\r\n }\r\n return smoothScrollPolyfill(node, horizontal ? 'scrollLeft' : 'scrollTop', topOrLeft);\r\n};\r\n\r\nconst scrollToSection = (hash, yOffset = 0) => {\r\n const to = document.querySelector(hash);\r\n if (to) {\r\n // to.scrollIntoView({ behavior: 'smooth' });\r\n const yCoordinate = to.getBoundingClientRect().top + window.pageYOffset;\r\n window.scrollTo({\r\n top: yCoordinate + yOffset,\r\n behavior: 'smooth',\r\n });\r\n }\r\n};\r\n\r\nconst scrollTillYouReachElement = (elmnt, timeToCheck, numberOfTries) => {\r\n const bounding = elmnt.getBoundingClientRect();\r\n let numTries = numberOfTries || 0;\r\n if (!(bounding.top >= 0 && bounding.top <= 1)) {\r\n elmnt.scrollIntoView();\r\n numTries += 1;\r\n // Check recursively and scroll till the element appears in the view port. Check three times and quit.\r\n if (numTries <= 3) {\r\n setTimeout(\r\n (element, time, numberTries) => {\r\n scrollTillYouReachElement(element, time, numberTries);\r\n },\r\n timeToCheck || 800,\r\n elmnt,\r\n timeToCheck,\r\n numTries\r\n );\r\n }\r\n }\r\n};\r\n\r\nconst throttle = (func, delay = 500) => {\r\n let timeout = null;\r\n return function (...args) {\r\n if (!timeout) {\r\n timeout = setTimeout(() => {\r\n func.call(this, ...args);\r\n timeout = null;\r\n }, delay);\r\n }\r\n };\r\n};\r\n\r\nexport {\r\n animateScrollLeft,\r\n baseURL,\r\n breakpoint,\r\n camelCaseToDash,\r\n capitalize,\r\n debounce,\r\n dollars,\r\n getDevice,\r\n getDistanceFromTop,\r\n getOrientation,\r\n getQueryParams,\r\n getParents,\r\n getScript,\r\n isIE11,\r\n isInViewport,\r\n matches,\r\n round,\r\n schemaBreadcrumbLDJSON,\r\n schemaBreadcrumbLDJSONScript,\r\n scrollToSection,\r\n smoothScroll,\r\n scrollTillYouReachElement,\r\n throttle,\r\n};\r\n","export const schemaBreadcrumbLDJSON = (breadcrumbs) => {\r\n const breadcrumbArray = breadcrumbs.map(({ text, url }, i) => {\r\n const crumb = {\r\n '@type': 'ListItem',\r\n position: i + 1,\r\n name: text,\r\n };\r\n if (url) crumb.item = `${url}`;\r\n\r\n return crumb;\r\n });\r\n const schema = JSON.stringify({\r\n '@context': 'https://schema.org',\r\n '@type': 'BreadcrumbList',\r\n itemListElement: breadcrumbArray,\r\n });\r\n\r\n return schema;\r\n};\r\n\r\nexport const schemaBreadcrumbLDJSONScript = (breadcrumbs) => {\r\n const schema = schemaBreadcrumbLDJSON(breadcrumbs);\r\n const script = document.createElement('script');\r\n script.type = 'application/ld+json';\r\n script.innerHTML = schema;\r\n\r\n return script;\r\n};\r\n"],"sourceRoot":""}