{"version":3,"sources":["webpack:///./src/components/CategoryCard/CategoryIcon/CategoryIcon.tsx","webpack:///./src/components/Banderole/Banderole.tsx","webpack:///./src/components/CategoryCard/CategoryCard.tsx","webpack:///./src/components/CategoryCardGrid/CategoryCardGrid.tsx","webpack:///./src/modules/CategoryGrid/CategoryGrid.tsx","webpack:///./src/modules/CategoryGrid/index.ts","webpack:///./src/utils/gtag.ts","webpack:///./node_modules/prop-types/index.js","webpack:///./src/utils/dom.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./src/utils/image-utils.ts","webpack:///./node_modules/react-measure/dist/index.esm.js","webpack:///./node_modules/@charlietango/use-client-hydrated/lib/useClientHydrated.esm.js","webpack:///./node_modules/json2mq/index.js","webpack:///./src/components/NotificationCount/NotificationCount.tsx","webpack:///./node_modules/@charlietango/use-media/lib/useMedia.esm.js","webpack:///./node_modules/string-convert/camel2hyphen.js","webpack:///./node_modules/@charlietango/use-element-size/lib/useElementSize.esm.js"],"names":["CategoryIcon","_ref","icon","noMargin","className","React","cx","styles","categoryIcon","Icon","iconSrc","displayName","defaultProps","Banderole","banderole","cardWidth","banderoleHolder","banderoleInner","CategoryCard","avatar","notificationCount","section","categoryLine1","categoryLine2","link","mobile","useMedia","_useElementSize","useElementSize","_useElementSize2","_slicedToArray","ref","size","renderInner","iconHolder","Avatar","Object","assign","NotificationCount","width","category","href","mobileLink","categoryCard","mobileCard","BaseButton","noUnderline","_ref2","hovering","CategoryCardGrid","items","categoryGrid","length","mediumGrid","smallGrid","map","item","i","key","concat","card","CategoryGrid","_React$Component","_classCallCheck","_callSuper","arguments","_inherits","_createClass","value","_this$props","this","props","title","video","Heading","align","level","VideoPlayer","DividerComp","showOnDesktop","_defineProperty","ONLY_SERVER","global","trackEvent","event","eventData","eventLabel","window","gtmEvent","site_section","dataLayer","push","module","exports","truncateString","string","substring","Error","_arrayLikeToArray","r","a","e","n","Array","isArray","l","t","Symbol","iterator","u","f","o","call","next","done","toString","slice","constructor","name","from","test","TypeError","_extends","bind","hasOwnProperty","apply","_inheritsLoose","prototype","create","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","DIMENSION_NAMES","aspectRatios","desktop","defaultBreakpoints","hd","breakpoints","xs","sm","md","lg","generateSizes","imageBreaks","undefined","maxWidth","queries","reduce","acc","breakpoint","index","breakpointSize","types","getTypes","allowedTypes","forEach","type","getContentRect","calculations","indexOf","client","top","clientTop","left","clientLeft","clientWidth","height","clientHeight","offset","offsetTop","offsetLeft","offsetWidth","offsetHeight","scroll","scrollTop","scrollLeft","scrollWidth","scrollHeight","rect","getBoundingClientRect","bounds","right","bottom","getComputedStyle","margin","parseInt","marginTop","marginRight","marginBottom","marginLeft","getWindowOf","target","ownerDocument","defaultView","Measure","WrappedComponent","_class","_temp","_Component","WithContentRect","_this","_len","args","_key","state","contentRect","entry","_animationFrameID","_resizeObserver","_node","_window","measure","entries","requestAnimationFrame","setState","onResize","_handleRef","unobserve","innerRef","current","observe","_proto","componentDidMount","ResizeObserver","componentWillUnmount","cancelAnimationFrame","disconnect","render","measureRef","propTypes","withContentRect","children","clientHydrated","camel2hyphen","obj2mq","obj","mq","features","keys","feature","isDimension","query","q","getMediaQuery","matchMedia","defaultMatches","_useState","initialQuery","matches","setMatches","mediaQuery","listener","addListener","removeListener","str","replace","match","toLowerCase","ro","x","y","elementSize","setElementSize","observerStarted","_ro$current","_entry$contentRect","_ro$current2"],"mappings":"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","file":"static/scripts/21-5be30fbb2b440d1eac4f.js","sourcesContent":["import * as React from 'react'\nimport styles from './categoryIcon-style.css'\nimport Icon from '../../Icon/Icon'\nimport cx from 'classnames'\ntype Props = {\n icon: string\n noMargin?: boolean\n className?: string\n}\n\nfunction CategoryIcon({ icon, noMargin, className }: Props) {\n if (!icon) return null\n return (\n
\n {icon && }\n
\n )\n}\n\nCategoryIcon.displayName = 'CategoryIcon'\nCategoryIcon.defaultProps = {}\nexport default CategoryIcon","import * as React from 'react'\nimport styles from './banderole-style.css'\nimport cx from 'classnames'\ntype Props = {\n banderole: string\n cardWidth: number\n}\n\nfunction Banderole({ banderole, cardWidth }: Props) {\n if (!banderole) return null\n const className =\n cardWidth === 0 ? '' : cardWidth > 240 ? 'large' : cardWidth > 190 ? 'xsmall' : 'xsmall'\n return (\n
\n
\n
\n {banderole}\n
\n
\n )\n}\n\nBanderole.displayName = 'Banderole'\nBanderole.defaultProps = {}\nexport default Banderole","import * as React from 'react'\nimport cx from 'classnames'\nimport styles from './categoryCard-style.css'\nimport CategoryIcon from './CategoryIcon/CategoryIcon'\nimport BaseButton from '../BaseButton/BaseButton'\nimport type { CategoryCardViewModel } from '../../view-models/CategoryCardViewModel'\nimport Avatar from '../Avatar/Avatar'\nimport NotificationCount from '../NotificationCount/NotificationCount'\nimport Banderole from '../Banderole/Banderole'\nimport useMedia from '@charlietango/use-media'\nimport useElementSize from '@charlietango/use-element-size'\ntype Props = CategoryCardViewModel\n\nconst CategoryCard = ({\n icon,\n avatar,\n notificationCount,\n section,\n categoryLine1,\n categoryLine2,\n link,\n banderole,\n className,\n}: Props) => {\n const mobile = useMedia(`(max-width: 1024px)`)\n const [ref, size] = useElementSize()\n\n const renderBaseButton = () => (\n \n {({ hovering }) => (\n
\n {renderInner()}\n
\n )}\n
\n )\n\n const renderMobileAnchor = () => (\n \n
\n {renderInner()}\n
\n
\n )\n\n const renderInner = () => (\n <>\n
\n {icon && }\n {avatar && }\n {notificationCount && }\n
\n {banderole && icon && }\n {section && {section}}\n {categoryLine1 && {categoryLine1}}\n {categoryLine2 && {categoryLine2}}\n \n )\n\n return mobile && link && link.href ? renderMobileAnchor() : renderBaseButton()\n}\n\nexport default CategoryCard","import cx from 'classnames'\nimport * as React from 'react'\n\nimport type { CategoryCardViewModel } from '../../view-models/CategoryCardViewModel'\nimport CategoryCard from '../CategoryCard/CategoryCard'\nimport styles from './categoryCardGrid-style.css'\n\ntype Props = {\n items: Array\n\n /** @internal */\n noMargin?: boolean\n}\n\nfunction CategoryCardGrid({ items, noMargin }: Props) {\n if (!items) return null\n\n return (\n = 6 && styles.smallGrid,\n noMargin && styles.noMargin,\n )}\n >\n {items.map((item, i) => (\n \n \n \n ))}\n
\n )\n}\n\nCategoryCardGrid.displayName = 'CategoryCardGrid'\nCategoryCardGrid.defaultProps = {}\nexport default CategoryCardGrid","import * as React from 'react'\n\nimport CategoryCardGrid from '../../components/CategoryCardGrid/CategoryCardGrid'\nimport DividerComp from '../../components/DividerComp/DividerComp'\nimport Heading from '../../components/Heading/Heading'\nimport VideoPlayer from '../../components/VideoPlayer/VideoPlayer'\nimport type { CategoryCardViewModel } from '../../view-models/CategoryCardViewModel'\nimport type { VideoViewModel } from '../../view-models/VideoViewModel'\n\ntype Props = {\n items: Array\n title?: string\n video?: VideoViewModel\n}\ntype State = {}\n\nclass CategoryGrid extends React.Component {\n static displayName = 'CategoryGrid'\n static defaultProps = {}\n\n render() {\n const { items, title, video } = this.props\n\n return (\n
\n {title && (\n \n {title}\n \n )}\n \n {video && }\n \n
\n )\n }\n}\n\nexport default CategoryGrid","export { default } from './CategoryGrid'\n\n/**\n * Should the component only render server side?\n * You can set this to true if the component is a pure static component.\n */\nexport const ONLY_SERVER = false","global.dataLayer = global.dataLayer || []\nexport type GtagEvent = {\n event?: string\n eventData?: string\n eventLabel?: string\n}\n\n/**\n * Track an event\n * Supply a callback, that gets triggered after the event is tracked\n */\nexport function trackEvent({ event, eventData, eventLabel }: GtagEvent) {\n if (typeof window === 'undefined') return\n const eventName = event ? `${window.site_section || 'pensam'}-${event}` : ''\n const gtmEvent = {\n event: eventName,\n 'event-data': eventData || '',\n 'event-label': eventLabel || '',\n }\n\n if (global.dataLayer && gtmEvent.event) {\n global.dataLayer.push(gtmEvent)\n } //\n // if (\n // process.env.NODE_ENV === 'development' &&\n // global.dataLayer &&\n // gtmEvent.event\n // ) {\n // console.log('dataLayer', global.dataLayer)\n // }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export function scrollOffset(element, offset = 0, alignment = 'top') {\n const body = document.body\n const html = document.documentElement\n const elemRect = element.getBoundingClientRect()\n const clientHeight = html.clientHeight\n const documentHeight = Math.max(\n body.scrollHeight,\n body.offsetHeight,\n html.clientHeight,\n html.scrollHeight,\n html.offsetHeight,\n )\n let scrollPosition\n\n if (alignment === 'bottom') {\n scrollPosition = elemRect.bottom - clientHeight\n } else if (alignment === 'middle') {\n scrollPosition = elemRect.bottom - clientHeight / 2 - elemRect.height / 2\n } else {\n // top and default\n scrollPosition = elemRect.top\n }\n\n const maxScrollPosition = documentHeight - clientHeight\n return Math.min(scrollPosition + offset + window.pageYOffset, maxScrollPosition)\n}\n\n/**\n * Return true if child is contained in parent\n * @param parent {HTMLElement}\n * @param child {HTMLElement}\n * @returns {boolean}\n */\nexport function isDescendant(parent, child) {\n if (!child || !child.parentNode) return false\n let node = child.parentNode\n\n while (node != null) {\n if (node === parent) {\n return true\n }\n\n node = node.parentNode\n }\n\n return false\n}\nlet matchesFn\n\n/**\n * Find the closest element that matches the selector\n * @param el {HTMLElement}\n * @param selector {string}\n * @returns {HTMLElement}\n */\nexport function closest(el, selector) {\n if (!matchesFn) {\n // find vendor prefix\n ;[\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector',\n ].some((fn) => {\n if (typeof document.body[fn] === 'function') {\n matchesFn = fn\n return true\n }\n\n return false\n })\n }\n\n // traverse parents\n let parent\n let element = el\n\n while (element !== null) {\n parent = element.parentElement\n\n if (parent !== null && parent[matchesFn](selector)) {\n return parent\n }\n\n element = parent\n }\n\n return null\n}\n\n/**\n * Get the previous sibling DOM node to an element\n * @param node {HTMLElement}\n * @returns {HTMLElement}\n */\nexport function previousSibling(node) {\n if (!node) return null\n let element = node\n\n do {\n element = element.previousSibling\n if (!isIgnorable(element)) return element\n } while (element)\n\n return null\n}\n\n/**\n * Get the next sibling DOM node to an element\n * @param node {HTMLElement}\n * @returns {HTMLElement}\n */\nexport function nextSibling(node) {\n if (!node) return null\n let element = node\n\n do {\n element = element.nextSibling\n if (element && !isIgnorable(element)) return element\n } while (element)\n\n return null\n}\n\n/**\n * Ignore commment and text nodes.\n * @param node\n * @returns {*}\n */\nfunction isIgnorable(node) {\n if (!node) return null\n return node.nodeType === 8 || (node.nodeType === 3 && isAllWs(node))\n}\n\n/**\n * Ignore all whitespace nodes\n * @param node\n * @returns {*}\n */\nfunction isAllWs(node) {\n if (!node) return null\n // Use ECMA-262 Edition 3 String and RegExp features\n return !/[^\\t\\n\\r ]/.test(node.textContent)\n}\n\nexport function getNodePath(node) {\n if (!node) return null\n let currentNode = node\n let path\n\n while (currentNode.parentNode) {\n const tag = currentNode.tagName.toLowerCase()\n const classes = currentNode.getAttribute('class')\n const className = classes ? `.${classes.trim().split(' ').join('.')}` : ''\n\n if (path) {\n path = `${tag}${className} > ${path}`\n } else {\n path = `${tag}${className}`\n }\n\n // Move up in the tree\n currentNode = currentNode.parentNode\n }\n\n return path\n}\nexport function insertAfter(newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling)\n}\nexport function truncateString(string, length) {\n if (string.length > length) {\n if (typeof string === 'string' && typeof length === 'number') {\n return string.substring(0, length) + '\\u2026'\n } else {\n throw new Error('Function truncateString take args @string, @number')\n }\n } else return string\n}\nexport default {\n closest,\n isDescendant,\n previousSibling,\n nextSibling,\n scrollOffset,\n getNodePath,\n insertAfter,\n truncateString,\n}","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","export type ImageRatio = 'original' | 'dim16_9' | 'dim3_2'\nexport const DIMENSION_NAMES = ['xs', 'sm', 'md', 'lg', 'hd']\nexport const aspectRatios = {\n mobile: 10 / 23,\n desktop: 10 / 27,\n}\n\n/** Max image width at a given breakpoint. */\nexport type ImageBreakpoints = {\n xs?: string\n sm?: string\n md?: string\n lg?: string\n hd?: string\n}\nexport const IMAGE_WIDTHS = [150, 300, 560, 660, 750, 880, 1024, 1350, 1440, 1720, 1920, 2048, 2700]\nexport type ImageSizes = {\n breakpoints?: ImageBreakpoints\n maxWidth: string | number\n}\n// If image breaks are undefined, make sure the width tops out 100 viewport width\nconst defaultBreakpoints = {\n hd: '100vw',\n}\nconst breakpoints = {\n xs: 0,\n sm: 48,\n // 48*16 = 768px\n md: 64,\n // 64*16 = 1024px\n lg: 75,\n // 75*16 = 1200px\n hd: 90, // 88*16 = 1408px\n}\n\n/**\n * Converts a string number with a known unit type, to a unitless number in px size\n **/\nexport function sizeToNumber(size: string | number): number {\n if (!size) return 0\n if (typeof size === 'number') return size\n if (size.endsWith('px')) return parseInt(size.substr(0, size.length - 2), 10)\n if (size.endsWith('em')) return parseInt(size.substr(0, size.length - 2), 10) * 16\n if (size.endsWith('vw')) return (parseInt(size.substr(0, size.length - 2), 10) * 1440) / 100\n if (size.endsWith('rem')) return parseInt(size.substr(0, size.length - 3), 10) * 16\n return parseInt(size, 10)\n}\n\n/**\n * Generate the actual ratio for the the known Image ratios\n **/\nexport function calculateRatio(width: number = 16, height: number = 9, aspect: number) {\n return Math.min(aspect, height === 0 ? 1 : height / width === 0 ? 1 : width) // switch (aspect) {\n // case 'dim3_2':\n // return 2 / 3\n // case 'dim16_9':\n // return 9 / 16\n // default:\n // return height / width\n // }\n}\n\n/**\n * Generate sizes for images, while respecting Breakpoints\n **/\nexport function generateSizes(\n imageBreaks: ImageBreakpoints = defaultBreakpoints,\n maxWidth: string | number = '1440px',\n) {\n const queries = DIMENSION_NAMES.reduce((acc, breakpoint, index) => {\n // If the breakpoint is 0, or undefined, take the next dimension\n const maxWidth = breakpoints[breakpoint] || breakpoints[DIMENSION_NAMES[index + 1]]\n const breakpointSize = imageBreaks[breakpoint]\n\n if (breakpointSize) {\n return `${acc}(max-width: ${maxWidth}em) ${breakpointSize}, `\n }\n\n return acc\n }, '')\n return queries + (typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth)\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nvar types = ['client', 'offset', 'scroll', 'bounds', 'margin'];\nfunction getTypes(props) {\n var allowedTypes = [];\n types.forEach(function (type) {\n if (props[type]) {\n allowedTypes.push(type);\n }\n });\n return allowedTypes;\n}\n\nfunction getContentRect(node, types) {\n var calculations = {};\n\n if (types.indexOf('client') > -1) {\n calculations.client = {\n top: node.clientTop,\n left: node.clientLeft,\n width: node.clientWidth,\n height: node.clientHeight\n };\n }\n\n if (types.indexOf('offset') > -1) {\n calculations.offset = {\n top: node.offsetTop,\n left: node.offsetLeft,\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n }\n\n if (types.indexOf('scroll') > -1) {\n calculations.scroll = {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n }\n\n if (types.indexOf('bounds') > -1) {\n var rect = node.getBoundingClientRect();\n calculations.bounds = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n\n if (types.indexOf('margin') > -1) {\n var styles = getComputedStyle(node);\n calculations.margin = {\n top: styles ? parseInt(styles.marginTop) : 0,\n right: styles ? parseInt(styles.marginRight) : 0,\n bottom: styles ? parseInt(styles.marginBottom) : 0,\n left: styles ? parseInt(styles.marginLeft) : 0\n };\n }\n\n return calculations;\n}\n\n/**\n * Returns the global window object associated with provided element.\n */\nfunction getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local window object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || window;\n}\n\nfunction withContentRect(types) {\n return function (WrappedComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithContentRect, _Component);\n\n function WithContentRect() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n contentRect: {\n entry: {},\n client: {},\n offset: {},\n scroll: {},\n bounds: {},\n margin: {}\n }\n };\n _this._animationFrameID = null;\n _this._resizeObserver = null;\n _this._node = null;\n _this._window = null;\n\n _this.measure = function (entries) {\n var contentRect = getContentRect(_this._node, types || getTypes(_this.props));\n\n if (entries) {\n contentRect.entry = entries[0].contentRect;\n }\n\n _this._animationFrameID = _this._window.requestAnimationFrame(function () {\n if (_this._resizeObserver !== null) {\n _this.setState({\n contentRect: contentRect\n });\n\n if (typeof _this.props.onResize === 'function') {\n _this.props.onResize(contentRect);\n }\n }\n });\n };\n\n _this._handleRef = function (node) {\n if (_this._resizeObserver !== null && _this._node !== null) {\n _this._resizeObserver.unobserve(_this._node);\n }\n\n _this._node = node;\n _this._window = getWindowOf(_this._node);\n var innerRef = _this.props.innerRef;\n\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(_this._node);\n } else {\n innerRef.current = _this._node;\n }\n }\n\n if (_this._resizeObserver !== null && _this._node !== null) {\n _this._resizeObserver.observe(_this._node);\n }\n };\n\n return _this;\n }\n\n var _proto = WithContentRect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._resizeObserver = this._window !== null && this._window.ResizeObserver ? new this._window.ResizeObserver(this.measure) : new ResizeObserver(this.measure);\n\n if (this._node !== null) {\n this._resizeObserver.observe(this._node);\n\n if (typeof this.props.onResize === 'function') {\n this.props.onResize(getContentRect(this._node, types || getTypes(this.props)));\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._window !== null) {\n this._window.cancelAnimationFrame(this._animationFrameID);\n }\n\n if (this._resizeObserver !== null) {\n this._resizeObserver.disconnect();\n\n this._resizeObserver = null;\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n innerRef = _this$props.innerRef,\n onResize = _this$props.onResize,\n props = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"onResize\"]);\n\n return createElement(WrappedComponent, _extends({}, props, {\n measureRef: this._handleRef,\n measure: this.measure,\n contentRect: this.state.contentRect\n }));\n };\n\n return WithContentRect;\n }(Component), _class.propTypes = {\n client: PropTypes.bool,\n offset: PropTypes.bool,\n scroll: PropTypes.bool,\n bounds: PropTypes.bool,\n margin: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n onResize: PropTypes.func\n }, _temp;\n };\n}\n\nvar Measure = withContentRect()(function (_ref) {\n var measure = _ref.measure,\n measureRef = _ref.measureRef,\n contentRect = _ref.contentRect,\n children = _ref.children;\n return children({\n measure: measure,\n measureRef: measureRef,\n contentRect: contentRect\n });\n});\nMeasure.displayName = 'Measure';\nMeasure.propTypes.children = PropTypes.func;\n\nexport default Measure;\nexport { withContentRect };\n","import { useEffect } from 'react';\n\nvar clientHydrated = false;\n/**\n * Returns false when serverside rendering and during the first render pass (hydration) in the client.\n * Use this to modify behavior of components when they can be certain they are running client side.\n * Like check a media query during the initial render.\n * */\n\nfunction useClientHydrated() {\n useEffect(function () {\n if (!clientHydrated) clientHydrated = true;\n }, []);\n return clientHydrated;\n}\n\nexport default useClientHydrated;\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","import * as React from 'react'\nimport styles from './notificationCount-style.css'\ntype Props = {\n notificationCount: string\n}\n\nfunction NotificationCount({ notificationCount }: Props) {\n if (!notificationCount) return null\n return {notificationCount}\n}\n\nNotificationCount.displayName = 'NotificationCount'\nNotificationCount.defaultProps = {}\nexport default NotificationCount","import { useState, useEffect } from 'react';\nimport useClientHydrated from '@charlietango/use-client-hydrated';\nimport json2mq from 'json2mq';\n\nfunction getMediaQuery(query) {\n return window.matchMedia(typeof query === 'string' ? query : json2mq(query));\n}\n\nfunction useMedia(query, defaultMatches) {\n if (defaultMatches === void 0) {\n defaultMatches = true;\n }\n\n var clientHydrated = useClientHydrated();\n\n var _useState = useState(function () {\n var initialQuery = clientHydrated ? getMediaQuery(query) : undefined;\n return initialQuery ? initialQuery.matches : defaultMatches;\n }),\n matches = _useState[0],\n setMatches = _useState[1];\n\n useEffect(function () {\n var mediaQuery = getMediaQuery(query);\n if (!mediaQuery) return undefined;\n setMatches(mediaQuery.matches);\n\n var listener = function listener() {\n return setMatches(mediaQuery.matches);\n };\n\n mediaQuery.addListener(listener);\n return function () {\n mediaQuery.removeListener(listener);\n };\n }, [query]);\n return matches;\n}\n\nexport default useMedia;\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","import { useRef, useState, useCallback } from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nfunction useElementSize() {\n var ro = useRef();\n\n var _useState = useState({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }),\n elementSize = _useState[0],\n setElementSize = _useState[1];\n\n var setRef = useCallback(function (node) {\n if (ro.current) {\n ro.current.disconnect();\n }\n\n if (node) {\n if (!ro.current) {\n var observerStarted = false; // @ts-ignore\n\n ro.current = new ResizeObserver(function (_ref) {\n var _ro$current;\n\n var entry = _ref[0];\n\n if (observerStarted) {\n observerStarted = false;\n return;\n }\n\n (_ro$current = ro.current) == null ? void 0 : _ro$current.disconnect(); // [Operation that would cause resize here]\n\n var _entry$contentRect = entry.contentRect,\n x = _entry$contentRect.x,\n y = _entry$contentRect.y,\n width = _entry$contentRect.width,\n height = _entry$contentRect.height;\n setElementSize({\n x: x,\n y: y,\n width: width,\n height: height\n });\n observerStarted = true;\n requestAnimationFrame(function () {\n var _ro$current2;\n\n (_ro$current2 = ro.current) == null ? void 0 : _ro$current2.observe(node);\n });\n });\n }\n\n if (ro.current) ro.current.observe(node);\n } else {\n ro.current = undefined;\n }\n }, []);\n return [setRef, elementSize];\n}\n\nexport default useElementSize;\n"],"sourceRoot":""}