{"version":3,"sources":["webpack:///./javascript/_shared/components/brightCovePlayer/index.js","webpack:///./javascript/_shared/vendors/brightcove/index.js","webpack:///./javascript/_shared/modals/index.js","webpack:///./node_modules/@material-ui/icons/Clear.js","webpack:///./javascript/_shared/modals/styles.js","webpack:///./javascript/_shared/ui-helpers/index.js","webpack:///./javascript/_shared/ui-helpers/schema.js"],"names":["BrightcovePlayer","props","accountId","classNames","playerId","productId","videoId","onSuccess","success","ref","updateCurrentBreakpoint","boundUpdateCurrentBreakpoint_","breakpoints","breakpoints_","player","player_","sendVideoEventAnalytics","eventName","thdAnalyticsEvent","category","primaryCategory","eventInfo","video","id","type","window","digitalData","page","pageInfo","pageType","ddoEventInit","one","on","large","breakpoint_","onFailure","failure","console","log","attrs","className","join","embedOptions","responsive","aspectRatio","maxWidth","propTypes","string","arrayOf","defaultProps","Brightcove","baseUrl","productBrand","url","this","fetch","crossDomain","response","json","data","count","videos","tagName","omsid","modals","Modals","defaultHeight","defaultWidth","state","content","hasMedia","hasVideo","height","modalToOpen","name","width","openModal","bind","closeModal","onLoad","document","addEventListener","e","obj","target","closest","matches","bc","injectVideo","videoName","videoOnly","term","getVideosByProductId","then","forEach","setState","catch","preventDefault","hash","getAttribute","querySelector","innerHTML","webFontsEvent","dispatchEvent","stopImmediatePropagation","axios","get","href","headers","definition","image","indexOf","capitalize","videoname","dataset","modalName","clickedObject","event","onload","title","parseInt","history","pushState","location","pathname","search","Fragment","isOpen","contentLabel","onRequestClose","closeTimeoutMS","onAfterOpen","overlayClassName","style","ModalCloseButton","onClick","dangerouslySetInnerHTML","__html","globalConfig","brightcove","src","alt","Component","Modal","setAppElement","_interopRequireDefault","_interopRequireWildcard","Object","defineProperty","exports","value","default","React","_default","createElement","d","styled","button","animateScrollLeft","pElement","finalLeft","element","left","scrollLeft","direction","setInterval","clearInterval","baseURL","protocol","host","breakpoint","getComputedStyle","getPropertyValue","replace","camelCaseToDash","str","toLowerCase","String","x","toUpperCase","debounce","callback","wait","immediate","timeout","callNow","next","apply","clearTimeout","setTimeout","getDevice","ua","navigator","userAgent","test","getDistanceFromTop","getBoundingClientRect","t","top","innerHeight","getQueryParams","stringToParse","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","getScript","source","container","getElementsByTagName","resolve","scripts","querySelectorAll","length","script","async","onreadystatechange","_","isAbort","readyState","setAttribute","appendChild","node","isLoaded","oldOnLoad","isIE11","MSInputMethodContext","documentMode","isInViewport","h","selector","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","call","smoothScroll","topOrLeft","horizontal","testSupportsSmoothScroll","supports","scrollTo","err","easingOutQuint","b","c","$t","hasNativeSmoothScroll","smoothScrollPolyfill","nodeParam","$node","startTime","Date","now","offset","gap","interrupt","cancel","cleanup","removeEventListener","passive","step","elapsed","requestAnimationFrame","scrollToSection","yOffset","to","yCoordinate","pageYOffset","behavior","scrollTillYouReachElement","elmnt","timeToCheck","numberOfTries","bounding","numTries","scrollIntoView","time","numberTries","throttle","func","delay","args","schemaBreadcrumbLDJSON","schemaBreadcrumbLDJSONScript","breadcrumbs","breadcrumbArray","map","i","text","crumb","position","item","itemListElement","schema"],"mappings":"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","file":"modals-15fc7f1afadcf010054b.js","sourcesContent":["/* eslint-disable no-underscore-dangle */\r\nimport ReactPlayerLoader from '@brightcove/react-player-loader';\r\nimport { arrayOf, string } from 'prop-types';\r\nimport React from 'react';\r\n\r\nconst BrightcovePlayer = (props) => {\r\n const { accountId, classNames, playerId, productId, videoId } = props;\r\n const onSuccess = (success) => {\r\n const { ref } = success;\r\n const { boundUpdateCurrentBreakpoint_: updateCurrentBreakpoint, breakpoints_: breakpoints, player_: player } = ref;\r\n const sendVideoEventAnalytics = (eventName) => {\r\n const thdAnalyticsEvent = {\r\n category: { primaryCategory: 'button submission' },\r\n eventInfo: { eventName },\r\n video: {\r\n id: videoId,\r\n type: window.digitalData.page.pageInfo.pageType,\r\n },\r\n };\r\n window.ddoEventInit(thdAnalyticsEvent);\r\n };\r\n\r\n player.one('play', () => sendVideoEventAnalytics('video start'));\r\n player.on('ended', () => sendVideoEventAnalytics('video complete'));\r\n\r\n window.updateCurrentBreakpoint = updateCurrentBreakpoint;\r\n updateCurrentBreakpoint(breakpoints.large);\r\n // eslint-disable-next-line no-underscore-dangle\r\n ref.breakpoint_ = breakpoints.large;\r\n };\r\n\r\n const onFailure = (failure) => {\r\n console.log(failure);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nBrightcovePlayer.propTypes = {\r\n accountId: string,\r\n classNames: arrayOf(string),\r\n playerId: string,\r\n productId: string,\r\n videoId: string,\r\n};\r\n\r\nBrightcovePlayer.defaultProps = {\r\n accountId: '6248889401001',\r\n classNames: [],\r\n playerId: 'NFnZhnSNG',\r\n productId: null,\r\n videoId: null,\r\n};\r\n\r\nexport default BrightcovePlayer;\r\n","/* eslint-disable */\r\nclass Brightcove {\r\n constructor() {}\r\n\r\n baseUrl = '/api/brightcove/videos';\r\n\r\n async getVideosByProductBrand(productBrand) {\r\n const url = `${this.baseUrl}?limit=100&q=product_brand:${productBrand}`;\r\n const response = await fetch(url, {\r\n crossDomain: true,\r\n });\r\n const data = await response.json();\r\n const { count, videos } = data;\r\n\r\n return (count > 0) ? videos : null; \r\n }\r\n\r\n async getVideosByProductId(productId) {\r\n const url = `${this.baseUrl}?limit=100&q=product_id:${productId}`;\r\n const response = await fetch(url, {\r\n crossDomain: true,\r\n });\r\n\r\n const data = await response.json();\r\n const { count, videos } = data;\r\n\r\n return (count > 0) ? videos : null; \r\n }\r\n\r\n async getVideosByTag(tagName) {\r\n const url = `${this.baseUrl}?limit=100&q=tags:${tagName}`;\r\n const response = await fetch(url, {\r\n crossDomain: true,\r\n });\r\n const data = await response.json();\r\n const { count, videos } = data;\r\n\r\n return (count > 0) ? videos : null; \r\n }\r\n\r\n async getVideosByOMSID(omsid) {\r\n const url = `${this.baseUrl}?limit=100&q=omsid:${omsid}`;\r\n const response = await fetch(url, {\r\n crossDomain: true,\r\n });\r\n const data = await response.json();\r\n const { count, videos } = data;\r\n\r\n return (count > 0) ? videos : null; \r\n }\r\n\r\n async getVideoByVideoId(videoId) {\r\n const url = `${this.baseUrl}?limit=100&q=id:${videoId}`;\r\n const response = await fetch(url, {\r\n crossDomain: true,\r\n });\r\n const data = await response.json();\r\n const { count, videos } = data;\r\n\r\n return (count > 0) ? videos : null; \r\n }\r\n}\r\n\r\nexport default Brightcove;\r\n","/* eslint-disable react/no-danger */\r\nimport React, { Component, Fragment } from 'react';\r\nimport { capitalize } from 'ui-helpers';\r\nimport axios from 'axios';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport Brightcove from 'vendors/brightcove';\r\nimport BrightcovePlayer from '_shared/components/brightCovePlayer';\r\nimport Modal from 'react-modal';\r\nimport { ModalCloseButton } from './styles';\r\n\r\nconst modals = {\r\n DICTIONARY_TERM: 'dictionary-term',\r\n INLINE: 'inline',\r\n BRIGHTCOVE: 'brightcove',\r\n NONE: '',\r\n};\r\n\r\nclass Modals extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.defaultHeight = 400;\r\n this.defaultWidth = 600;\r\n this.state = {\r\n content: null,\r\n hasMedia: false,\r\n hasVideo: false,\r\n height: this.defaultHeight,\r\n modalToOpen: modals.NONE,\r\n name: '',\r\n width: this.defaultWidth,\r\n videoId: '',\r\n };\r\n this.openModal = this.openModal.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n this.onLoad = this.onLoad.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('click', (e) => {\r\n let obj = e.target;\r\n if (obj.closest('.dictionary-term')) {\r\n obj = !obj.matches('.dictionary-term') ? obj.closest('.dictionary-term') : obj;\r\n } else if (obj.closest('.video-click')) {\r\n obj = !obj.matches('.video-click') ? obj.closest('.video-click') : obj;\r\n }\r\n const bc = new Brightcove();\r\n const injectVideo = (videoName, videoOnly = true, term = '') => {\r\n bc.getVideosByProductId(videoName)\r\n .then((videos) =>\r\n videos.forEach((video) => {\r\n const { name, id } = video;\r\n if (!videoOnly) {\r\n this.setState({\r\n name,\r\n videoId: id,\r\n });\r\n this.openModal(modals.DICTIONARY_TERM, obj);\r\n } else {\r\n this.setState({\r\n name,\r\n videoId: id,\r\n });\r\n this.openModal(modals.BRIGHTCOVE, obj);\r\n }\r\n })\r\n )\r\n .catch(() => {\r\n if (term) {\r\n this.setState({\r\n name: term,\r\n videoId: '',\r\n });\r\n this.openModal(modals.DICTIONARY_TERM, obj);\r\n } else {\r\n this.setState({\r\n name: term,\r\n videoId: '',\r\n });\r\n this.openModal(modals.BRIGHTCOVE, obj);\r\n }\r\n });\r\n };\r\n\r\n if (obj.matches('[data-action=\"close-modal\"]')) {\r\n this.closeModal();\r\n return;\r\n }\r\n\r\n if (obj.matches('[data-type=\"inline-modal\"]')) {\r\n e.preventDefault();\r\n const hash = obj.getAttribute('href');\r\n const content = document.querySelector(hash).innerHTML;\r\n this.setState({\r\n content,\r\n });\r\n const { webFontsEvent } = window;\r\n window.dispatchEvent(webFontsEvent);\r\n this.openModal(modals.INLINE);\r\n } else if (obj.matches('[data-type=\"iframe\"]')) {\r\n e.preventDefault();\r\n const href = obj.getAttribute('href');\r\n const content = ``;\r\n this.setState({\r\n content,\r\n });\r\n const { webFontsEvent } = window;\r\n window.dispatchEvent(webFontsEvent);\r\n this.openModal(modals.INLINE);\r\n } else if (obj.closest('.dictionary-term') || obj.closest('.video-click')) {\r\n // TODO: the .video-click added via admin (site product level) should be replaced with:\r\n // {Term}\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if (obj.matches('[href^=\"/DictionaryManagement\"]')) {\r\n axios\r\n .get(obj.href, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(({ data }) => {\r\n const { term, definition, video } = data;\r\n let { image } = data;\r\n // This is the hash code of the \"not available\" image\r\n if (image && image.indexOf('c4a3dd83-7bba-e311-a64d-84df7b46b4ac') >= 0) {\r\n image = null;\r\n }\r\n const name = capitalize(term);\r\n this.setState({\r\n content: definition,\r\n hasMedia: !!video || !!image,\r\n hasVideo: !!video,\r\n image,\r\n name,\r\n });\r\n this.openModal(modals.DICTIONARY_TERM, obj);\r\n if (video) {\r\n injectVideo(video, false);\r\n }\r\n });\r\n } else if (obj.matches('[data-videoname]')) {\r\n const { videoname } = obj.dataset;\r\n injectVideo(videoname, true);\r\n }\r\n }\r\n });\r\n }\r\n\r\n onLoad() {\r\n const { onLoad } = this.state;\r\n if (typeof window[onLoad] === 'function') {\r\n window[onLoad]();\r\n }\r\n }\r\n\r\n openModal(modalName, obj) {\r\n const clickedObject = obj || event.target;\r\n const height = clickedObject.dataset.height || this.state.height;\r\n const onLoad = clickedObject.dataset.onload || this.state.onload;\r\n const title = clickedObject.dataset.title || this.state.title;\r\n const width = clickedObject.dataset.width || this.state.width;\r\n this.setState({\r\n height: parseInt(height, 10),\r\n modalToOpen: modalName,\r\n onLoad,\r\n title,\r\n width: parseInt(width, 10),\r\n });\r\n }\r\n\r\n closeModal() {\r\n history.pushState('', document.title, window.location.pathname + window.location.search);\r\n this.setState({\r\n height: this.defaultHeight,\r\n modalToOpen: modals.NONE,\r\n title: '',\r\n width: this.defaultWidth,\r\n videoId: '',\r\n });\r\n }\r\n\r\n render() {\r\n const { content, hasMedia, hasVideo, height, image, modalToOpen, name, width, title } = this.state;\r\n return (\r\n \r\n {modalToOpen && (\r\n \r\n \r\n {name}\r\n \r\n \r\n \r\n \r\n {modalToOpen === modals.INLINE && (\r\n \r\n \r\n \r\n )}\r\n {modalToOpen === modals.BRIGHTCOVE && (\r\n \r\n \r\n \r\n )}\r\n {modalToOpen === modals.DICTIONARY_TERM && (\r\n \r\n \r\n {hasMedia && (\r\n \r\n {hasVideo && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!hasVideo && }\r\n \r\n )}\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nModal.setAppElement('body');\r\n\r\nexport default Modals;\r\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');\n\nexports.default = _default;","import styled from 'styled-components';\r\n\r\nexport const ModalCloseButton = styled.button.attrs(() => ({\r\n className: `f3 outline-0 pointer bn pa0 ma0 br-100 bn w2 h2 flex-shrink-0 flex items-center justify-center`,\r\n}))``;\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":""}