) nor does it use the innerRef prop.\\n\\n' + 'See https://goo.gl/LrBNgw for more info.';\n/**\n * Raise an error if \"children\" is not a DOM Element and there is no ref provided to Waypoint\n *\n * @param {?React.element} children\n * @param {?HTMLElement} ref\n * @return {undefined}\n */\n\nfunction ensureRefIsProvidedByChild(children, ref) {\n if (children && !isDOMElement(children) && !ref) {\n throw new Error(errorMessage);\n }\n}\n/**\n * @param {object} bounds An object with bounds data for the waypoint and\n * scrollable parent\n * @return {string} The current position of the waypoint in relation to the\n * visible portion of the scrollable parent. One of the constants `ABOVE`,\n * `BELOW`, `INSIDE` or `INVISIBLE`.\n */\n\n\nfunction getCurrentPosition(bounds) {\n if (bounds.viewportBottom - bounds.viewportTop === 0) {\n return INVISIBLE;\n } // top is within the viewport\n\n\n if (bounds.viewportTop <= bounds.waypointTop && bounds.waypointTop <= bounds.viewportBottom) {\n return INSIDE;\n } // bottom is within the viewport\n\n\n if (bounds.viewportTop <= bounds.waypointBottom && bounds.waypointBottom <= bounds.viewportBottom) {\n return INSIDE;\n } // top is above the viewport and bottom is below the viewport\n\n\n if (bounds.waypointTop <= bounds.viewportTop && bounds.viewportBottom <= bounds.waypointBottom) {\n return INSIDE;\n }\n\n if (bounds.viewportBottom < bounds.waypointTop) {\n return BELOW;\n }\n\n if (bounds.waypointTop < bounds.viewportTop) {\n return ABOVE;\n }\n\n return INVISIBLE;\n}\n\nvar timeout;\nvar timeoutQueue = [];\n\nfunction onNextTick(cb) {\n timeoutQueue.push(cb);\n\n if (!timeout) {\n timeout = setTimeout(function () {\n timeout = null; // Drain the timeoutQueue\n\n var item; // eslint-disable-next-line no-cond-assign\n\n while (item = timeoutQueue.shift()) {\n item();\n }\n }, 0);\n }\n\n var isSubscribed = true;\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n var index = timeoutQueue.indexOf(cb);\n\n if (index === -1) {\n return;\n }\n\n timeoutQueue.splice(index, 1);\n\n if (!timeoutQueue.length && timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n}\n\nfunction resolveScrollableAncestorProp(scrollableAncestor) {\n // When Waypoint is rendered on the server, `window` is not available.\n // To make Waypoint easier to work with, we allow this to be specified in\n // string form and safely convert to `window` here.\n if (scrollableAncestor === 'window') {\n return global.window;\n }\n\n return scrollableAncestor;\n}\n\nvar hasWindow = typeof window !== 'undefined';\nvar defaultProps = {\n debug: false,\n scrollableAncestor: undefined,\n children: undefined,\n topOffset: '0px',\n bottomOffset: '0px',\n horizontal: false,\n onEnter: function onEnter() {},\n onLeave: function onLeave() {},\n onPositionChange: function onPositionChange() {},\n fireOnRapidScroll: true\n}; // Calls a function when you scroll to the element.\n\nvar Waypoint = /*#__PURE__*/function (_React$PureComponent) {\n _inheritsLoose(Waypoint, _React$PureComponent);\n\n function Waypoint(props) {\n var _this;\n\n _this = _React$PureComponent.call(this, props) || this;\n\n _this.refElement = function (e) {\n _this._ref = e;\n };\n\n return _this;\n }\n\n var _proto = Waypoint.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n if (!hasWindow) {\n return;\n } // this._ref may occasionally not be set at this time. To help ensure that\n // this works smoothly and to avoid layout thrashing, we want to delay the\n // initial execution until the next tick.\n\n\n this.cancelOnNextTick = onNextTick(function () {\n _this2.cancelOnNextTick = null;\n var _this2$props = _this2.props,\n children = _this2$props.children,\n debug = _this2$props.debug; // Berofe doing anything, we want to check that this._ref is avaliable in Waypoint\n\n ensureRefIsProvidedByChild(children, _this2._ref);\n _this2._handleScroll = _this2._handleScroll.bind(_this2);\n _this2.scrollableAncestor = _this2._findScrollableAncestor();\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n debugLog('scrollableAncestor', _this2.scrollableAncestor);\n }\n\n _this2.scrollEventListenerUnsubscribe = addEventListener(_this2.scrollableAncestor, 'scroll', _this2._handleScroll, {\n passive: true\n });\n _this2.resizeEventListenerUnsubscribe = addEventListener(window, 'resize', _this2._handleScroll, {\n passive: true\n });\n\n _this2._handleScroll(null);\n });\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var _this3 = this;\n\n if (!hasWindow) {\n return;\n }\n\n if (!this.scrollableAncestor) {\n // The Waypoint has not yet initialized.\n return;\n } // The element may have moved, so we need to recompute its position on the\n // page. This happens via handleScroll in a way that forces layout to be\n // computed.\n //\n // We want this to be deferred to avoid forcing layout during render, which\n // causes layout thrashing. And, if we already have this work enqueued, we\n // can just wait for that to happen instead of enqueueing again.\n\n\n if (this.cancelOnNextTick) {\n return;\n }\n\n this.cancelOnNextTick = onNextTick(function () {\n _this3.cancelOnNextTick = null;\n\n _this3._handleScroll(null);\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!hasWindow) {\n return;\n }\n\n if (this.scrollEventListenerUnsubscribe) {\n this.scrollEventListenerUnsubscribe();\n }\n\n if (this.resizeEventListenerUnsubscribe) {\n this.resizeEventListenerUnsubscribe();\n }\n\n if (this.cancelOnNextTick) {\n this.cancelOnNextTick();\n }\n }\n /**\n * Traverses up the DOM to find an ancestor container which has an overflow\n * style that allows for scrolling.\n *\n * @return {Object} the closest ancestor element with an overflow style that\n * allows for scrolling. If none is found, the `window` object is returned\n * as a fallback.\n */\n ;\n\n _proto._findScrollableAncestor = function _findScrollableAncestor() {\n var _this$props = this.props,\n horizontal = _this$props.horizontal,\n scrollableAncestor = _this$props.scrollableAncestor;\n\n if (scrollableAncestor) {\n return resolveScrollableAncestorProp(scrollableAncestor);\n }\n\n var node = this._ref;\n\n while (node.parentNode) {\n node = node.parentNode;\n\n if (node === document.body) {\n // We've reached all the way to the root node.\n return window;\n }\n\n var style = window.getComputedStyle(node);\n var overflowDirec = horizontal ? style.getPropertyValue('overflow-x') : style.getPropertyValue('overflow-y');\n var overflow = overflowDirec || style.getPropertyValue('overflow');\n\n if (overflow === 'auto' || overflow === 'scroll' || overflow === 'overlay') {\n return node;\n }\n } // A scrollable ancestor element was not found, which means that we need to\n // do stuff on window.\n\n\n return window;\n }\n /**\n * @param {Object} event the native scroll event coming from the scrollable\n * ancestor, or resize event coming from the window. Will be undefined if\n * called by a React lifecyle method\n */\n ;\n\n _proto._handleScroll = function _handleScroll(event) {\n if (!this._ref) {\n // There's a chance we end up here after the component has been unmounted.\n return;\n }\n\n var bounds = this._getBounds();\n\n var currentPosition = getCurrentPosition(bounds);\n var previousPosition = this._previousPosition;\n var _this$props2 = this.props,\n debug = _this$props2.debug,\n onPositionChange = _this$props2.onPositionChange,\n onEnter = _this$props2.onEnter,\n onLeave = _this$props2.onLeave,\n fireOnRapidScroll = _this$props2.fireOnRapidScroll;\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n debugLog('currentPosition', currentPosition);\n debugLog('previousPosition', previousPosition);\n } // Save previous position as early as possible to prevent cycles\n\n\n this._previousPosition = currentPosition;\n\n if (previousPosition === currentPosition) {\n // No change since last trigger\n return;\n }\n\n var callbackArg = {\n currentPosition: currentPosition,\n previousPosition: previousPosition,\n event: event,\n waypointTop: bounds.waypointTop,\n waypointBottom: bounds.waypointBottom,\n viewportTop: bounds.viewportTop,\n viewportBottom: bounds.viewportBottom\n };\n onPositionChange.call(this, callbackArg);\n\n if (currentPosition === INSIDE) {\n onEnter.call(this, callbackArg);\n } else if (previousPosition === INSIDE) {\n onLeave.call(this, callbackArg);\n }\n\n var isRapidScrollDown = previousPosition === BELOW && currentPosition === ABOVE;\n var isRapidScrollUp = previousPosition === ABOVE && currentPosition === BELOW;\n\n if (fireOnRapidScroll && (isRapidScrollDown || isRapidScrollUp)) {\n // If the scroll event isn't fired often enough to occur while the\n // waypoint was visible, we trigger both callbacks anyway.\n onEnter.call(this, {\n currentPosition: INSIDE,\n previousPosition: previousPosition,\n event: event,\n waypointTop: bounds.waypointTop,\n waypointBottom: bounds.waypointBottom,\n viewportTop: bounds.viewportTop,\n viewportBottom: bounds.viewportBottom\n });\n onLeave.call(this, {\n currentPosition: currentPosition,\n previousPosition: INSIDE,\n event: event,\n waypointTop: bounds.waypointTop,\n waypointBottom: bounds.waypointBottom,\n viewportTop: bounds.viewportTop,\n viewportBottom: bounds.viewportBottom\n });\n }\n };\n\n _proto._getBounds = function _getBounds() {\n var _this$props3 = this.props,\n horizontal = _this$props3.horizontal,\n debug = _this$props3.debug;\n\n var _this$_ref$getBoundin = this._ref.getBoundingClientRect(),\n left = _this$_ref$getBoundin.left,\n top = _this$_ref$getBoundin.top,\n right = _this$_ref$getBoundin.right,\n bottom = _this$_ref$getBoundin.bottom;\n\n var waypointTop = horizontal ? left : top;\n var waypointBottom = horizontal ? right : bottom;\n var contextHeight;\n var contextScrollTop;\n\n if (this.scrollableAncestor === window) {\n contextHeight = horizontal ? window.innerWidth : window.innerHeight;\n contextScrollTop = 0;\n } else {\n contextHeight = horizontal ? this.scrollableAncestor.offsetWidth : this.scrollableAncestor.offsetHeight;\n contextScrollTop = horizontal ? this.scrollableAncestor.getBoundingClientRect().left : this.scrollableAncestor.getBoundingClientRect().top;\n }\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n debugLog('waypoint top', waypointTop);\n debugLog('waypoint bottom', waypointBottom);\n debugLog('scrollableAncestor height', contextHeight);\n debugLog('scrollableAncestor scrollTop', contextScrollTop);\n }\n\n var _this$props4 = this.props,\n bottomOffset = _this$props4.bottomOffset,\n topOffset = _this$props4.topOffset;\n var topOffsetPx = computeOffsetPixels(topOffset, contextHeight);\n var bottomOffsetPx = computeOffsetPixels(bottomOffset, contextHeight);\n var contextBottom = contextScrollTop + contextHeight;\n return {\n waypointTop: waypointTop,\n waypointBottom: waypointBottom,\n viewportTop: contextScrollTop + topOffsetPx,\n viewportBottom: contextBottom - bottomOffsetPx\n };\n }\n /**\n * @return {Object}\n */\n ;\n\n _proto.render = function render() {\n var _this4 = this;\n\n var children = this.props.children;\n\n if (!children) {\n // We need an element that we can locate in the DOM to determine where it is\n // rendered relative to the top of its context.\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: this.refElement,\n style: {\n fontSize: 0\n }\n });\n }\n\n if (isDOMElement(children) || isForwardRef(children)) {\n var ref = function ref(node) {\n _this4.refElement(node);\n\n if (children.ref) {\n if (typeof children.ref === 'function') {\n children.ref(node);\n } else {\n children.ref.current = node;\n }\n }\n };\n\n return /*#__PURE__*/React.cloneElement(children, {\n ref: ref\n });\n }\n\n return /*#__PURE__*/React.cloneElement(children, {\n innerRef: this.refElement\n });\n };\n\n return Waypoint;\n}(React.PureComponent);\n\nif (process.env.NODE_ENV !== 'production') {}\n\nWaypoint.above = ABOVE;\nWaypoint.below = BELOW;\nWaypoint.inside = INSIDE;\nWaypoint.invisible = INVISIBLE;\nWaypoint.defaultProps = defaultProps;\nWaypoint.displayName = 'Waypoint';\nexport { Waypoint };","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';\n\nvar b = Symbol.for(\"react.element\"),\n c = Symbol.for(\"react.portal\"),\n d = Symbol.for(\"react.fragment\"),\n e = Symbol.for(\"react.strict_mode\"),\n f = Symbol.for(\"react.profiler\"),\n g = Symbol.for(\"react.provider\"),\n h = Symbol.for(\"react.context\"),\n k = Symbol.for(\"react.server_context\"),\n l = Symbol.for(\"react.forward_ref\"),\n m = Symbol.for(\"react.suspense\"),\n n = Symbol.for(\"react.suspense_list\"),\n p = Symbol.for(\"react.memo\"),\n q = Symbol.for(\"react.lazy\"),\n t = Symbol.for(\"react.offscreen\"),\n u;\nu = Symbol.for(\"react.module.reference\");\n\nfunction v(a) {\n if (\"object\" === typeof a && null !== a) {\n var r = a.$$typeof;\n\n switch (r) {\n case b:\n switch (a = a.type, a) {\n case d:\n case f:\n case e:\n case m:\n case n:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case h:\n case l:\n case q:\n case p:\n case g:\n return a;\n\n default:\n return r;\n }\n\n }\n\n case c:\n return r;\n }\n }\n}\n\nexports.ContextConsumer = h;\nexports.ContextProvider = g;\nexports.Element = b;\nexports.ForwardRef = l;\nexports.Fragment = d;\nexports.Lazy = q;\nexports.Memo = p;\nexports.Portal = c;\nexports.Profiler = f;\nexports.StrictMode = e;\nexports.Suspense = m;\nexports.SuspenseList = n;\n\nexports.isAsyncMode = function () {\n return !1;\n};\n\nexports.isConcurrentMode = function () {\n return !1;\n};\n\nexports.isContextConsumer = function (a) {\n return v(a) === h;\n};\n\nexports.isContextProvider = function (a) {\n return v(a) === g;\n};\n\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === b;\n};\n\nexports.isForwardRef = function (a) {\n return v(a) === l;\n};\n\nexports.isFragment = function (a) {\n return v(a) === d;\n};\n\nexports.isLazy = function (a) {\n return v(a) === q;\n};\n\nexports.isMemo = function (a) {\n return v(a) === p;\n};\n\nexports.isPortal = function (a) {\n return v(a) === c;\n};\n\nexports.isProfiler = function (a) {\n return v(a) === f;\n};\n\nexports.isStrictMode = function (a) {\n return v(a) === e;\n};\n\nexports.isSuspense = function (a) {\n return v(a) === m;\n};\n\nexports.isSuspenseList = function (a) {\n return v(a) === n;\n};\n\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === d || a === f || a === e || a === m || a === n || a === t || \"object\" === typeof a && null !== a && (a.$$typeof === q || a.$$typeof === p || a.$$typeof === g || a.$$typeof === h || a.$$typeof === l || a.$$typeof === u || void 0 !== a.getModuleId) ? !0 : !1;\n};\n\nexports.typeOf = v;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","var characterMap = {\n \"À\": \"A\",\n \"Á\": \"A\",\n \"Â\": \"A\",\n \"Ã\": \"A\",\n \"Ä\": \"A\",\n \"Å\": \"A\",\n \"Ấ\": \"A\",\n \"Ắ\": \"A\",\n \"Ẳ\": \"A\",\n \"Ẵ\": \"A\",\n \"Ặ\": \"A\",\n \"Æ\": \"AE\",\n \"Ầ\": \"A\",\n \"Ằ\": \"A\",\n \"Ȃ\": \"A\",\n \"Ç\": \"C\",\n \"Ḉ\": \"C\",\n \"È\": \"E\",\n \"É\": \"E\",\n \"Ê\": \"E\",\n \"Ë\": \"E\",\n \"Ế\": \"E\",\n \"Ḗ\": \"E\",\n \"Ề\": \"E\",\n \"Ḕ\": \"E\",\n \"Ḝ\": \"E\",\n \"Ȇ\": \"E\",\n \"Ì\": \"I\",\n \"Í\": \"I\",\n \"Î\": \"I\",\n \"Ï\": \"I\",\n \"Ḯ\": \"I\",\n \"Ȋ\": \"I\",\n \"Ð\": \"D\",\n \"Ñ\": \"N\",\n \"Ò\": \"O\",\n \"Ó\": \"O\",\n \"Ô\": \"O\",\n \"Õ\": \"O\",\n \"Ö\": \"O\",\n \"Ø\": \"O\",\n \"Ố\": \"O\",\n \"Ṍ\": \"O\",\n \"Ṓ\": \"O\",\n \"Ȏ\": \"O\",\n \"Ù\": \"U\",\n \"Ú\": \"U\",\n \"Û\": \"U\",\n \"Ü\": \"U\",\n \"Ý\": \"Y\",\n \"à\": \"a\",\n \"á\": \"a\",\n \"â\": \"a\",\n \"ã\": \"a\",\n \"ä\": \"a\",\n \"å\": \"a\",\n \"ấ\": \"a\",\n \"ắ\": \"a\",\n \"ẳ\": \"a\",\n \"ẵ\": \"a\",\n \"ặ\": \"a\",\n \"æ\": \"ae\",\n \"ầ\": \"a\",\n \"ằ\": \"a\",\n \"ȃ\": \"a\",\n \"ç\": \"c\",\n \"ḉ\": \"c\",\n \"è\": \"e\",\n \"é\": \"e\",\n \"ê\": \"e\",\n \"ë\": \"e\",\n \"ế\": \"e\",\n \"ḗ\": \"e\",\n \"ề\": \"e\",\n \"ḕ\": \"e\",\n \"ḝ\": \"e\",\n \"ȇ\": \"e\",\n \"ì\": \"i\",\n \"í\": \"i\",\n \"î\": \"i\",\n \"ï\": \"i\",\n \"ḯ\": \"i\",\n \"ȋ\": \"i\",\n \"ð\": \"d\",\n \"ñ\": \"n\",\n \"ò\": \"o\",\n \"ó\": \"o\",\n \"ô\": \"o\",\n \"õ\": \"o\",\n \"ö\": \"o\",\n \"ø\": \"o\",\n \"ố\": \"o\",\n \"ṍ\": \"o\",\n \"ṓ\": \"o\",\n \"ȏ\": \"o\",\n \"ù\": \"u\",\n \"ú\": \"u\",\n \"û\": \"u\",\n \"ü\": \"u\",\n \"ý\": \"y\",\n \"ÿ\": \"y\",\n \"Ā\": \"A\",\n \"ā\": \"a\",\n \"Ă\": \"A\",\n \"ă\": \"a\",\n \"Ą\": \"A\",\n \"ą\": \"a\",\n \"Ć\": \"C\",\n \"ć\": \"c\",\n \"Ĉ\": \"C\",\n \"ĉ\": \"c\",\n \"Ċ\": \"C\",\n \"ċ\": \"c\",\n \"Č\": \"C\",\n \"č\": \"c\",\n \"C̆\": \"C\",\n \"c̆\": \"c\",\n \"Ď\": \"D\",\n \"ď\": \"d\",\n \"Đ\": \"D\",\n \"đ\": \"d\",\n \"Ē\": \"E\",\n \"ē\": \"e\",\n \"Ĕ\": \"E\",\n \"ĕ\": \"e\",\n \"Ė\": \"E\",\n \"ė\": \"e\",\n \"Ę\": \"E\",\n \"ę\": \"e\",\n \"Ě\": \"E\",\n \"ě\": \"e\",\n \"Ĝ\": \"G\",\n \"Ǵ\": \"G\",\n \"ĝ\": \"g\",\n \"ǵ\": \"g\",\n \"Ğ\": \"G\",\n \"ğ\": \"g\",\n \"Ġ\": \"G\",\n \"ġ\": \"g\",\n \"Ģ\": \"G\",\n \"ģ\": \"g\",\n \"Ĥ\": \"H\",\n \"ĥ\": \"h\",\n \"Ħ\": \"H\",\n \"ħ\": \"h\",\n \"Ḫ\": \"H\",\n \"ḫ\": \"h\",\n \"Ĩ\": \"I\",\n \"ĩ\": \"i\",\n \"Ī\": \"I\",\n \"ī\": \"i\",\n \"Ĭ\": \"I\",\n \"ĭ\": \"i\",\n \"Į\": \"I\",\n \"į\": \"i\",\n \"İ\": \"I\",\n \"ı\": \"i\",\n \"IJ\": \"IJ\",\n \"ij\": \"ij\",\n \"Ĵ\": \"J\",\n \"ĵ\": \"j\",\n \"Ķ\": \"K\",\n \"ķ\": \"k\",\n \"Ḱ\": \"K\",\n \"ḱ\": \"k\",\n \"K̆\": \"K\",\n \"k̆\": \"k\",\n \"Ĺ\": \"L\",\n \"ĺ\": \"l\",\n \"Ļ\": \"L\",\n \"ļ\": \"l\",\n \"Ľ\": \"L\",\n \"ľ\": \"l\",\n \"Ŀ\": \"L\",\n \"ŀ\": \"l\",\n \"Ł\": \"l\",\n \"ł\": \"l\",\n \"Ḿ\": \"M\",\n \"ḿ\": \"m\",\n \"M̆\": \"M\",\n \"m̆\": \"m\",\n \"Ń\": \"N\",\n \"ń\": \"n\",\n \"Ņ\": \"N\",\n \"ņ\": \"n\",\n \"Ň\": \"N\",\n \"ň\": \"n\",\n \"ʼn\": \"n\",\n \"N̆\": \"N\",\n \"n̆\": \"n\",\n \"Ō\": \"O\",\n \"ō\": \"o\",\n \"Ŏ\": \"O\",\n \"ŏ\": \"o\",\n \"Ő\": \"O\",\n \"ő\": \"o\",\n \"Œ\": \"OE\",\n \"œ\": \"oe\",\n \"P̆\": \"P\",\n \"p̆\": \"p\",\n \"Ŕ\": \"R\",\n \"ŕ\": \"r\",\n \"Ŗ\": \"R\",\n \"ŗ\": \"r\",\n \"Ř\": \"R\",\n \"ř\": \"r\",\n \"R̆\": \"R\",\n \"r̆\": \"r\",\n \"Ȓ\": \"R\",\n \"ȓ\": \"r\",\n \"Ś\": \"S\",\n \"ś\": \"s\",\n \"Ŝ\": \"S\",\n \"ŝ\": \"s\",\n \"Ş\": \"S\",\n \"Ș\": \"S\",\n \"ș\": \"s\",\n \"ş\": \"s\",\n \"Š\": \"S\",\n \"š\": \"s\",\n \"Ţ\": \"T\",\n \"ţ\": \"t\",\n \"ț\": \"t\",\n \"Ț\": \"T\",\n \"Ť\": \"T\",\n \"ť\": \"t\",\n \"Ŧ\": \"T\",\n \"ŧ\": \"t\",\n \"T̆\": \"T\",\n \"t̆\": \"t\",\n \"Ũ\": \"U\",\n \"ũ\": \"u\",\n \"Ū\": \"U\",\n \"ū\": \"u\",\n \"Ŭ\": \"U\",\n \"ŭ\": \"u\",\n \"Ů\": \"U\",\n \"ů\": \"u\",\n \"Ű\": \"U\",\n \"ű\": \"u\",\n \"Ų\": \"U\",\n \"ų\": \"u\",\n \"Ȗ\": \"U\",\n \"ȗ\": \"u\",\n \"V̆\": \"V\",\n \"v̆\": \"v\",\n \"Ŵ\": \"W\",\n \"ŵ\": \"w\",\n \"Ẃ\": \"W\",\n \"ẃ\": \"w\",\n \"X̆\": \"X\",\n \"x̆\": \"x\",\n \"Ŷ\": \"Y\",\n \"ŷ\": \"y\",\n \"Ÿ\": \"Y\",\n \"Y̆\": \"Y\",\n \"y̆\": \"y\",\n \"Ź\": \"Z\",\n \"ź\": \"z\",\n \"Ż\": \"Z\",\n \"ż\": \"z\",\n \"Ž\": \"Z\",\n \"ž\": \"z\",\n \"ſ\": \"s\",\n \"ƒ\": \"f\",\n \"Ơ\": \"O\",\n \"ơ\": \"o\",\n \"Ư\": \"U\",\n \"ư\": \"u\",\n \"Ǎ\": \"A\",\n \"ǎ\": \"a\",\n \"Ǐ\": \"I\",\n \"ǐ\": \"i\",\n \"Ǒ\": \"O\",\n \"ǒ\": \"o\",\n \"Ǔ\": \"U\",\n \"ǔ\": \"u\",\n \"Ǖ\": \"U\",\n \"ǖ\": \"u\",\n \"Ǘ\": \"U\",\n \"ǘ\": \"u\",\n \"Ǚ\": \"U\",\n \"ǚ\": \"u\",\n \"Ǜ\": \"U\",\n \"ǜ\": \"u\",\n \"Ứ\": \"U\",\n \"ứ\": \"u\",\n \"Ṹ\": \"U\",\n \"ṹ\": \"u\",\n \"Ǻ\": \"A\",\n \"ǻ\": \"a\",\n \"Ǽ\": \"AE\",\n \"ǽ\": \"ae\",\n \"Ǿ\": \"O\",\n \"ǿ\": \"o\",\n \"Þ\": \"TH\",\n \"þ\": \"th\",\n \"Ṕ\": \"P\",\n \"ṕ\": \"p\",\n \"Ṥ\": \"S\",\n \"ṥ\": \"s\",\n \"X́\": \"X\",\n \"x́\": \"x\",\n \"Ѓ\": \"Г\",\n \"ѓ\": \"г\",\n \"Ќ\": \"К\",\n \"ќ\": \"к\",\n \"A̋\": \"A\",\n \"a̋\": \"a\",\n \"E̋\": \"E\",\n \"e̋\": \"e\",\n \"I̋\": \"I\",\n \"i̋\": \"i\",\n \"Ǹ\": \"N\",\n \"ǹ\": \"n\",\n \"Ồ\": \"O\",\n \"ồ\": \"o\",\n \"Ṑ\": \"O\",\n \"ṑ\": \"o\",\n \"Ừ\": \"U\",\n \"ừ\": \"u\",\n \"Ẁ\": \"W\",\n \"ẁ\": \"w\",\n \"Ỳ\": \"Y\",\n \"ỳ\": \"y\",\n \"Ȁ\": \"A\",\n \"ȁ\": \"a\",\n \"Ȅ\": \"E\",\n \"ȅ\": \"e\",\n \"Ȉ\": \"I\",\n \"ȉ\": \"i\",\n \"Ȍ\": \"O\",\n \"ȍ\": \"o\",\n \"Ȑ\": \"R\",\n \"ȑ\": \"r\",\n \"Ȕ\": \"U\",\n \"ȕ\": \"u\",\n \"B̌\": \"B\",\n \"b̌\": \"b\",\n \"Č̣\": \"C\",\n \"č̣\": \"c\",\n \"Ê̌\": \"E\",\n \"ê̌\": \"e\",\n \"F̌\": \"F\",\n \"f̌\": \"f\",\n \"Ǧ\": \"G\",\n \"ǧ\": \"g\",\n \"Ȟ\": \"H\",\n \"ȟ\": \"h\",\n \"J̌\": \"J\",\n \"ǰ\": \"j\",\n \"Ǩ\": \"K\",\n \"ǩ\": \"k\",\n \"M̌\": \"M\",\n \"m̌\": \"m\",\n \"P̌\": \"P\",\n \"p̌\": \"p\",\n \"Q̌\": \"Q\",\n \"q̌\": \"q\",\n \"Ř̩\": \"R\",\n \"ř̩\": \"r\",\n \"Ṧ\": \"S\",\n \"ṧ\": \"s\",\n \"V̌\": \"V\",\n \"v̌\": \"v\",\n \"W̌\": \"W\",\n \"w̌\": \"w\",\n \"X̌\": \"X\",\n \"x̌\": \"x\",\n \"Y̌\": \"Y\",\n \"y̌\": \"y\",\n \"A̧\": \"A\",\n \"a̧\": \"a\",\n \"B̧\": \"B\",\n \"b̧\": \"b\",\n \"Ḑ\": \"D\",\n \"ḑ\": \"d\",\n \"Ȩ\": \"E\",\n \"ȩ\": \"e\",\n \"Ɛ̧\": \"E\",\n \"ɛ̧\": \"e\",\n \"Ḩ\": \"H\",\n \"ḩ\": \"h\",\n \"I̧\": \"I\",\n \"i̧\": \"i\",\n \"Ɨ̧\": \"I\",\n \"ɨ̧\": \"i\",\n \"M̧\": \"M\",\n \"m̧\": \"m\",\n \"O̧\": \"O\",\n \"o̧\": \"o\",\n \"Q̧\": \"Q\",\n \"q̧\": \"q\",\n \"U̧\": \"U\",\n \"u̧\": \"u\",\n \"X̧\": \"X\",\n \"x̧\": \"x\",\n \"Z̧\": \"Z\",\n \"z̧\": \"z\"\n};\nvar chars = Object.keys(characterMap).join('|');\nvar allAccents = new RegExp(chars, 'g');\nvar firstAccent = new RegExp(chars, '');\n\nvar removeAccents = function removeAccents(string) {\n return string.replace(allAccents, function (match) {\n return characterMap[match];\n });\n};\n\nvar hasAccents = function hasAccents(string) {\n return !!string.match(firstAccent);\n};\n\nmodule.exports = removeAccents;\nmodule.exports.has = hasAccents;\nmodule.exports.remove = removeAccents;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array
} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n\n\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n\n return false;\n });\n return result;\n }\n\n return (\n /** @class */\n function () {\n function class_1() {\n this.__entries__ = [];\n }\n\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function get() {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n return class_1;\n }()\n );\n}();\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\n\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; // Returns global object of a current environment.\n\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n } // eslint-disable-next-line no-new-func\n\n\n return Function('return this')();\n}();\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\n\n\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}(); // Defines minimum timeout before adding a trailing call.\n\n\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\n\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n\n\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n\n\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n } // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n\n\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n} // Minimum delay before invoking the update of observers.\n\n\nvar REFRESH_DELAY = 20; // A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\n\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; // Check if MutationObserver is available.\n\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\n\nvar ResizeObserverController =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n } // Add listeners if they haven't been added yet.\n\n\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer); // Remove observer if it's present in registry.\n\n if (~index) {\n observers.splice(index, 1);\n } // Remove listeners if controller has no connected observers.\n\n\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_(); // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n\n\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n }); // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n } // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n\n\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b; // Detect whether transition may affect dimensions of an element.\n\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\n\n\nvar defineConfigurable = function defineConfigurable(target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n};\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\n\n\nvar getWindowOf = function 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 global object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || global$1;\n}; // Placeholder of an empty content rectangle.\n\n\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\n\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\n\n\nfunction getBordersSize(styles) {\n var positions = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\n\n\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight; // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom; // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n\n var width = toFloat(styles.width),\n height = toFloat(styles.height); // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n } // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n\n\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight; // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n } // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n\n\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\n\n\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height; // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype); // Rectangle's properties are not writable and non-enumerable.\n\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\n\n\nvar ResizeObservation =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n\n\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n\n return ResizeObservation;\n}();\n\nvar ResizeObserverEntry =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit); // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n\n return ResizeObserverEntry;\n}();\n\nvar ResizeObserverSPI =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is already being observed.\n\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this); // Force the update of observations.\n\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is not being observed.\n\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_; // Create ResizeObserverEntry instance for every active observation.\n\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n\n return ResizeObserverSPI;\n}(); // Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\n\n\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\n\nvar ResizeObserver =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n\n return ResizeObserver;\n}(); // Expose public methods of ResizeObserver.\n\n\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\n\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n}();\n\nexport default index;","\"use strict\";\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nmodule.exports = function (_ref) {\n var data = _ref.data;\n var multiSection = _ref.multiSection;\n\n function nextNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = 0;\n } else {\n sectionIndex++;\n }\n\n while (sectionIndex < data.length && data[sectionIndex] === 0) {\n sectionIndex++;\n }\n\n return sectionIndex === data.length ? null : sectionIndex;\n }\n\n function prevNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = data.length - 1;\n } else {\n sectionIndex--;\n }\n\n while (sectionIndex >= 0 && data[sectionIndex] === 0) {\n sectionIndex--;\n }\n\n return sectionIndex === -1 ? null : sectionIndex;\n }\n\n function next(position) {\n var _position = _slicedToArray(position, 2);\n\n var sectionIndex = _position[0];\n var itemIndex = _position[1];\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === data[sectionIndex] - 1) {\n sectionIndex = nextNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, 0];\n }\n\n return [sectionIndex, itemIndex + 1];\n }\n\n if (data === 0 || itemIndex === data - 1) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, 0];\n }\n\n return [null, itemIndex + 1];\n }\n\n function prev(position) {\n var _position2 = _slicedToArray(position, 2);\n\n var sectionIndex = _position2[0];\n var itemIndex = _position2[1];\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === 0) {\n sectionIndex = prevNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, data[sectionIndex] - 1];\n }\n\n return [sectionIndex, itemIndex - 1];\n }\n\n if (data === 0 || itemIndex === 0) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, data - 1];\n }\n\n return [null, itemIndex - 1];\n }\n\n function isLast(position) {\n return next(position)[1] === null;\n }\n\n return {\n next: next,\n prev: prev,\n isLast: isLast\n };\n};","'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqualArrays;","var camel2hyphen = function camel2hyphen(str) {\n return str.replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n }).toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn't work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"
console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","import {createGlobalStyle} from \"styled-components\";\nimport {fonts} from \"../models\";\n\nimport \"../../static/fonts.css\";\n\nconst GlobalStyle = createGlobalStyle`\nbody {\n font-family: ${fonts.headerFont};\n padding: 0;\n margin: 0;\n\n /* OpenType features: kerning, ligatures & contextual alternates */\n font-kerning: normal; /* CSS3 */\n -webkit-font-feature-settings: \"kern\" 1, \"liga\" 1, \"calt\" 1;\n -moz-font-feature-settings: \"kern=1\", \"liga=1\", \"calt=1\";\t/* Firefox 4.0 to 14.0 */\n -moz-font-feature-settings: \"kern\" 1, \"liga\" 1, \"calt\" 1;\t/* Firefox 15.0 onwards */\n font-feature-settings: \"kern\" 1, \"liga\" 1, \"calt\" 1;\n\n /* Make rendering look more consistent across platforms */\n -webkit-font-smoothing: antialiased !important;\n -moz-osx-font-smoothing: grayscale;\n}\na {\n text-decoration: none;\n}\nul {\n margin: 0 auto;\n list-style-type: none;\n}\n\nbody.overflow-y-hidden {\n overflow-y: hidden;\n}\n`;\n\nexport default GlobalStyle;\n","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.org/docs/use-static-query/\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Helmet from \"react-helmet\";\nimport { useStaticQuery, graphql } from \"gatsby\";\n\nfunction SEO({ description, lang, meta, title }) {\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n title\n description\n author\n }\n }\n }\n `\n );\n\n const metaDescription = description || site.siteMetadata.description;\n\n return (\n \n );\n}\n\nSEO.defaultProps = {\n description: ``,\n lang: `en`,\n meta: [],\n};\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string.isRequired,\n};\n\nexport default SEO;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {colors, fonts, fontSizesPx} from \"../models\";\n\nconst Select = styled.select<{isBold: boolean}>`\n width: 100%;\n font-family: ${fonts.condensedFont};\n font-size: ${fontSizesPx.micro};\n font-weight: ${p => (p.isBold ? fonts.weightBold : fonts.weightRegular)};\n background: none;\n background-color: none;\n border: none;\n border-bottom: 1px solid ${colors.grayDark2};\n padding-bottom: 3px;\n border-radius: 0;\n -moz-appearance: none;\n appearance: none;\n -webkit-appearance: none;\n /* temporary */\n outline: none;\n`;\n\ntype OptionValue = string | number;\ninterface Option {\n value: T;\n label: string;\n}\n\ninterface NativeSelectProps {\n options: [Option];\n value?: T;\n onChange: (value: T) => void;\n selectedOption: any;\n isBold?: boolean;\n}\n\nfunction NativeSelect(props: NativeSelectProps) {\n function handleOnChange(e: React.FormEvent) {\n const {selectedIndex} = e.currentTarget;\n const selectedOption = props.options[selectedIndex];\n props.onChange(selectedOption.value);\n }\n return (\n \n );\n}\n\nexport default NativeSelect;\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n before = _this.prepend ? _this.container.firstChild : _this.before;\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs;\n/**\n * @param {number}\n * @return {string}\n */\n\nexport var from = String.fromCharCode;\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\n\nexport function hash(value, length) {\n return (((length << 2 ^ charat(value, 0)) << 2 ^ charat(value, 1)) << 2 ^ charat(value, 2)) << 2 ^ charat(value, 3);\n}\n/**\n * @param {string} value\n * @return {string}\n */\n\nexport function trim(value) {\n return value.trim();\n}\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\n\nexport function match(value, pattern) {\n return (value = pattern.exec(value)) ? value[0] : value;\n}\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\n\nexport function replace(value, pattern, replacement) {\n return value.replace(pattern, replacement);\n}\n/**\n * @param {string} value\n * @param {string} value\n * @return {number}\n */\n\nexport function indexof(value, search) {\n return value.indexOf(search);\n}\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\n\nexport function charat(value, index) {\n return value.charCodeAt(index) | 0;\n}\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\n\nexport function substr(value, begin, end) {\n return value.slice(begin, end);\n}\n/**\n * @param {string} value\n * @return {number}\n */\n\nexport function strlen(value) {\n return value.length;\n}\n/**\n * @param {any[]} value\n * @return {number}\n */\n\nexport function sizeof(value) {\n return value.length;\n}\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\n\nexport function append(value, array) {\n return array.push(value), value;\n}\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\n\nexport function combine(array, callback) {\n return array.map(callback).join('');\n}","import { from, trim, charat, strlen, substr, append } from './Utility.js';\nexport var line = 1;\nexport var column = 1;\nexport var length = 0;\nexport var position = 0;\nexport var character = 0;\nexport var characters = '';\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string} type\n * @param {string[]} props\n * @param {object[]} children\n * @param {number} length\n */\n\nexport function node(value, root, parent, type, props, children, length) {\n return {\n value: value,\n root: root,\n parent: parent,\n type: type,\n props: props,\n children: children,\n line: line,\n column: column,\n length: length,\n return: ''\n };\n}\n/**\n * @param {string} value\n * @param {object} root\n * @param {string} type\n */\n\nexport function copy(value, root, type) {\n return node(value, root.root, root.parent, type, root.props, root.children, 0);\n}\n/**\n * @return {number}\n */\n\nexport function char() {\n return character;\n}\n/**\n * @return {number}\n */\n\nexport function prev() {\n character = position > 0 ? charat(characters, --position) : 0;\n if (column--, character === 10) column = 1, line--;\n return character;\n}\n/**\n * @return {number}\n */\n\nexport function next() {\n character = position < length ? charat(characters, position++) : 0;\n if (column++, character === 10) column = 1, line++;\n return character;\n}\n/**\n * @return {number}\n */\n\nexport function peek() {\n return charat(characters, position);\n}\n/**\n * @return {number}\n */\n\nexport function caret() {\n return position;\n}\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\n\nexport function slice(begin, end) {\n return substr(characters, begin, end);\n}\n/**\n * @param {number} type\n * @return {number}\n */\n\nexport function token(type) {\n switch (type) {\n // \\0 \\t \\n \\r \\s whitespace token\n case 0:\n case 9:\n case 10:\n case 13:\n case 32:\n return 5;\n // ! + , / > @ ~ isolate token\n\n case 33:\n case 43:\n case 44:\n case 47:\n case 62:\n case 64:\n case 126: // ; { } breakpoint token\n\n case 59:\n case 123:\n case 125:\n return 4;\n // : accompanied token\n\n case 58:\n return 3;\n // \" ' ( [ opening delimit token\n\n case 34:\n case 39:\n case 40:\n case 91:\n return 2;\n // ) ] closing delimit token\n\n case 41:\n case 93:\n return 1;\n }\n\n return 0;\n}\n/**\n * @param {string} value\n * @return {any[]}\n */\n\nexport function alloc(value) {\n return line = column = 1, length = strlen(characters = value), position = 0, [];\n}\n/**\n * @param {any} value\n * @return {any}\n */\n\nexport function dealloc(value) {\n return characters = '', value;\n}\n/**\n * @param {number} type\n * @return {string}\n */\n\nexport function delimit(type) {\n return trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)));\n}\n/**\n * @param {string} value\n * @return {string[]}\n */\n\nexport function tokenize(value) {\n return dealloc(tokenizer(alloc(value)));\n}\n/**\n * @param {number} type\n * @return {string}\n */\n\nexport function whitespace(type) {\n while (character = peek()) {\n if (character < 33) next();else break;\n }\n\n return token(type) > 2 || token(character) > 3 ? '' : ' ';\n}\n/**\n * @param {string[]} children\n * @return {string[]}\n */\n\nexport function tokenizer(children) {\n while (next()) {\n switch (token(character)) {\n case 0:\n append(identifier(position - 1), children);\n break;\n\n case 2:\n append(delimit(character), children);\n break;\n\n default:\n append(from(character), children);\n }\n }\n\n return children;\n}\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\n\nexport function escaping(index, count) {\n while (--count && next()) {\n // not 0-9 A-F a-f\n if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97) break;\n }\n\n return slice(index, caret() + (count < 6 && peek() == 32 && next() == 32));\n}\n/**\n * @param {number} type\n * @return {number}\n */\n\nexport function delimiter(type) {\n while (next()) {\n switch (character) {\n // ] ) \" '\n case type:\n return position;\n // \" '\n\n case 34:\n case 39:\n return delimiter(type === 34 || type === 39 ? type : character);\n // (\n\n case 40:\n if (type === 41) delimiter(type);\n break;\n // \\\n\n case 92:\n next();\n break;\n }\n }\n\n return position;\n}\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\n\nexport function commenter(type, index) {\n while (next()) {\n // //\n if (type + character === 47 + 10) break; // /*\n else if (type + character === 42 + 42 && peek() === 47) break;\n }\n\n return '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next());\n}\n/**\n * @param {number} index\n * @return {string}\n */\n\nexport function identifier(index) {\n while (!token(peek())) {\n next();\n }\n\n return slice(index, position);\n}","export var MS = '-ms-';\nexport var MOZ = '-moz-';\nexport var WEBKIT = '-webkit-';\nexport var COMMENT = 'comm';\nexport var RULESET = 'rule';\nexport var DECLARATION = 'decl';\nexport var PAGE = '@page';\nexport var MEDIA = '@media';\nexport var IMPORT = '@import';\nexport var CHARSET = '@charset';\nexport var VIEWPORT = '@viewport';\nexport var SUPPORTS = '@supports';\nexport var DOCUMENT = '@document';\nexport var NAMESPACE = '@namespace';\nexport var KEYFRAMES = '@keyframes';\nexport var FONT_FACE = '@font-face';\nexport var COUNTER_STYLE = '@counter-style';\nexport var FONT_FEATURE_VALUES = '@font-feature-values';","import { IMPORT, COMMENT, RULESET, DECLARATION } from './Enum.js';\nimport { strlen, sizeof } from './Utility.js';\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\n\nexport function serialize(children, callback) {\n var output = '';\n var length = sizeof(children);\n\n for (var i = 0; i < length; i++) {\n output += callback(children[i], i, children, callback) || '';\n }\n\n return output;\n}\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\n\nexport function stringify(element, index, children, callback) {\n switch (element.type) {\n case IMPORT:\n case DECLARATION:\n return element.return = element.return || element.value;\n\n case COMMENT:\n return '';\n\n case RULESET:\n element.value = element.props.join(',');\n }\n\n return strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : '';\n}","import { MS, MOZ, WEBKIT } from './Enum.js';\nimport { hash, charat, strlen, indexof, replace } from './Utility.js';\n/**\n * @param {string} value\n * @param {number} length\n * @return {string}\n */\n\nexport function prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}","import { COMMENT, RULESET, DECLARATION } from './Enum.js';\nimport { abs, trim, from, sizeof, strlen, substr, append, replace } from './Utility.js';\nimport { node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter } from './Tokenizer.js';\n/**\n * @param {string} value\n * @return {object[]}\n */\n\nexport function compile(value) {\n return dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value));\n}\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\n\nexport function parse(value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n var index = 0;\n var offset = 0;\n var length = pseudo;\n var atrule = 0;\n var property = 0;\n var previous = 0;\n var variable = 1;\n var scanning = 1;\n var ampersand = 1;\n var character = 0;\n var type = '';\n var props = rules;\n var children = rulesets;\n var reference = rule;\n var characters = type;\n\n while (scanning) {\n switch (previous = character, character = next()) {\n // \" ' [ (\n case 34:\n case 39:\n case 91:\n case 40:\n characters += delimit(character);\n break;\n // \\t \\n \\r \\s\n\n case 9:\n case 10:\n case 13:\n case 32:\n characters += whitespace(previous);\n break;\n // \\\n\n case 92:\n characters += escaping(caret() - 1, 7);\n continue;\n // /\n\n case 47:\n switch (peek()) {\n case 42:\n case 47:\n append(comment(commenter(next(), caret()), root, parent), declarations);\n break;\n\n default:\n characters += '/';\n }\n\n break;\n // {\n\n case 123 * variable:\n points[index++] = strlen(characters) * ampersand;\n // } ; \\0\n\n case 125 * variable:\n case 59:\n case 0:\n switch (character) {\n // \\0 }\n case 0:\n case 125:\n scanning = 0;\n // ;\n\n case 59 + offset:\n if (property > 0 && strlen(characters) - length) append(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations);\n break;\n // @ ;\n\n case 59:\n characters += ';';\n // { rule/at-rule\n\n default:\n append(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets);\n if (character === 123) if (offset === 0) parse(characters, root, reference, reference, props, rulesets, length, points, children);else switch (atrule) {\n // d m s\n case 100:\n case 109:\n case 115:\n parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children);\n break;\n\n default:\n parse(characters, reference, reference, reference, [''], children, length, points, children);\n }\n }\n\n index = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo;\n break;\n // :\n\n case 58:\n length = 1 + strlen(characters), property = previous;\n\n default:\n if (variable < 1) if (character == 123) --variable;else if (character == 125 && variable++ == 0 && prev() == 125) continue;\n\n switch (characters += from(character), character * variable) {\n // &\n case 38:\n ampersand = offset > 0 ? 1 : (characters += '\\f', -1);\n break;\n // ,\n\n case 44:\n points[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1;\n break;\n // @\n\n case 64:\n // -\n if (peek() === 45) characters += delimit(next());\n atrule = peek(), offset = strlen(type = characters += identifier(caret())), character++;\n break;\n // -\n\n case 45:\n if (previous === 45 && strlen(characters) == 2) variable = 0;\n }\n\n }\n }\n\n return rulesets;\n}\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\n\nexport function ruleset(value, root, parent, index, offset, rules, points, type, props, children, length) {\n var post = offset - 1;\n var rule = offset === 0 ? rules : [''];\n var size = sizeof(rule);\n\n for (var i = 0, j = 0, k = 0; i < index; ++i) {\n for (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x) {\n if (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x]))) props[k++] = z;\n }\n }\n\n return node(value, root, parent, offset === 0 ? RULESET : type, props, children, length);\n}\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\n\nexport function comment(value, root, parent) {\n return node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0);\n}\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\n\nexport function declaration(value, root, parent, length) {\n return node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length);\n}","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, identifier, position, stringify, COMMENT, rulesheet, middleware, prefixer, serialize, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar last = function last(arr) {\n return arr.length ? arr[arr.length - 1] : null;\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifier(position - 1);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\n\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // .length indicates if this rule contains pseudo or not\n !element.length) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\n\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return !!element && element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule') return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n var prevElement = index > 0 ? children[index - 1] : null;\n\n if (prevElement && isIgnoringComment(last(prevElement.children))) {\n return;\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n var nodesToHydrate = [];\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;","import { MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION } from './Enum.js';\nimport { match, charat, substr, strlen, sizeof, replace, combine } from './Utility.js';\nimport { copy, tokenize } from './Tokenizer.js';\nimport { serialize } from './Serializer.js';\nimport { prefix } from './Prefixer.js';\n/**\n * @param {function[]} collection\n * @return {function}\n */\n\nexport function middleware(collection) {\n var length = sizeof(collection);\n return function (element, index, children, callback) {\n var output = '';\n\n for (var i = 0; i < length; i++) {\n output += collection[i](element, index, children, callback) || '';\n }\n\n return output;\n };\n}\n/**\n * @param {function} callback\n * @return {function}\n */\n\nexport function rulesheet(callback) {\n return function (element) {\n if (!element.root) if (element = element.return) callback(element);\n };\n}\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\n\nexport function prefixer(element, index, children, callback) {\n if (!element.return) switch (element.type) {\n case DECLARATION:\n element.return = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(replace(element.value, '@', '@' + WEBKIT), element, '')], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(replace(value, /:(read-\\w+)/, ':' + MOZ + '$1'), element, '')], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1'), element, ''), copy(replace(value, /:(plac\\w+)/, ':' + MOZ + '$1'), element, ''), copy(replace(value, /:(plac\\w+)/, MS + 'input-$1'), element, '')], callback);\n }\n\n return '';\n });\n }\n}\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\n\nexport function namespace(element) {\n switch (element.type) {\n case RULESET:\n element.props = element.props.map(function (value) {\n return combine(tokenize(value), function (value, index, children) {\n switch (charat(value, 0)) {\n // \\f\n case 12:\n return substr(value, 1, strlen(value));\n // \\0 ( + > ~\n\n case 0:\n case 40:\n case 43:\n case 62:\n case 126:\n return value;\n // :\n\n case 58:\n if (children[++index] === 'global') children[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1);\n // \\s\n\n case 32:\n return index === 1 ? '' : value;\n\n default:\n switch (index) {\n case 0:\n element = value;\n return sizeof(children) > 1 ? '' : value;\n\n case index = sizeof(children) - 1:\n case 2:\n return index === 2 ? value + element + element : value + element;\n\n default:\n return value;\n }\n\n }\n });\n });\n }\n}","var isBrowser = \"object\" !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\n\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\n\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };","import { createContext, useContext, forwardRef, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\n\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\n\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n} // thus we only need to replace what is a valid character for JS, but not for CSS\n\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\n\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type;\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z0-9$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z0-9$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n return newProps;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };","import { createElement, useContext, useRef, useLayoutEffect } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-99289b21.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-99289b21.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nvar pkg = {\n name: \"@emotion/react\",\n version: \"11.4.1\",\n main: \"dist/emotion-react.cjs.js\",\n module: \"dist/emotion-react.esm.js\",\n browser: {\n \"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n \"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n },\n types: \"types/index.d.ts\",\n files: [\"src\", \"dist\", \"jsx-runtime\", \"jsx-dev-runtime\", \"isolated-hoist-non-react-statics-do-not-use-this-in-your-code\", \"types/*.d.ts\", \"macro.js\", \"macro.d.ts\", \"macro.js.flow\"],\n sideEffects: false,\n author: \"mitchellhamilton \",\n license: \"MIT\",\n scripts: {\n \"test:typescript\": \"dtslint types\"\n },\n dependencies: {\n \"@babel/runtime\": \"^7.13.10\",\n \"@emotion/cache\": \"^11.4.0\",\n \"@emotion/serialize\": \"^1.0.2\",\n \"@emotion/sheet\": \"^1.0.2\",\n \"@emotion/utils\": \"^1.0.0\",\n \"@emotion/weak-memoize\": \"^0.2.5\",\n \"hoist-non-react-statics\": \"^3.3.1\"\n },\n peerDependencies: {\n \"@babel/core\": \"^7.0.0\",\n react: \">=16.8.0\"\n },\n peerDependenciesMeta: {\n \"@babel/core\": {\n optional: true\n },\n \"@types/react\": {\n optional: true\n }\n },\n devDependencies: {\n \"@babel/core\": \"^7.13.10\",\n \"@emotion/css\": \"11.1.3\",\n \"@emotion/css-prettifier\": \"1.0.0\",\n \"@emotion/server\": \"11.4.0\",\n \"@emotion/styled\": \"11.3.0\",\n \"@types/react\": \"^16.9.11\",\n dtslint: \"^0.3.0\",\n \"html-tag-names\": \"^1.1.2\",\n react: \"16.14.0\",\n \"svg-tag-names\": \"^1.1.1\"\n },\n repository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n publishConfig: {\n access: \"public\"\n },\n \"umd:main\": \"dist/emotion-react.umd.min.js\",\n preconstruct: {\n entrypoints: [\"./index.js\", \"./jsx-runtime.js\", \"./jsx-dev-runtime.js\", \"./isolated-hoist-non-react-statics-do-not-use-this-in-your-code.js\"],\n umdName: \"emotionReact\"\n }\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext)); // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n var sheetRef = useRef();\n useLayoutEffect(function () {\n var key = cache.key + \"-global\";\n var sheet = new StyleSheet({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useLayoutEffect(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n {\n insertStyles(cache, serialized, false);\n }\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n var isJest = typeof jest !== 'undefined';\n\n if (isBrowser && !isJest) {\n var globalContext = isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { jsx, keyframes, css as css$2, ClassNames } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport AutosizeInput from 'react-input-autosize';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _defineProperty$1 from '@babel/runtime/helpers/esm/defineProperty';\nimport { createContext, Component } from 'react';\nimport { createPortal } from 'react-dom';\n\nfunction _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n} // ==============================\n// NO OP\n// ==============================\n\n\nvar noop = function noop() {}; // Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\n\n\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, state, className) {\n var arr = [className];\n\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Clean Common Props\n// ==============================\n\n\nvar cleanCommonProps = function cleanCommonProps(props) {\n //className\n props.className;\n props.clearValue;\n props.cx;\n props.getStyles;\n props.getValue;\n props.hasValue;\n props.isMulti;\n props.isRtl;\n props.options;\n props.selectOption;\n props.selectProps;\n props.setValue;\n props.theme;\n\n var innerProps = _objectWithoutProperties(props, [\"className\", \"clearValue\", \"cx\", \"getStyles\", \"getValue\", \"hasValue\", \"isMulti\", \"isRtl\", \"options\", \"selectOption\", \"selectProps\", \"setValue\", \"theme\"]);\n\n return _objectSpread2({}, innerProps);\n}; // ==============================\n// Handle Input Change\n// ==============================\n\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n\n return el.scrollTop;\n}\n\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\n\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n\n if (currentTime < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\n\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\n\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n} // Touch Capability Detector\n// ==============================\n\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n} // ==============================\n// Passive Event Detector\n// ==============================\n// https://github.com/rafgraph/detect-it/blob/main/src/index.ts#L19-L36\n\n\nvar passiveOptionAccessed = false;\nvar options = {\n get passive() {\n return passiveOptionAccessed = true;\n }\n\n}; // check for SSR\n\nvar w = typeof window !== 'undefined' ? window : {};\n\nif (w.addEventListener && w.removeEventListener) {\n w.addEventListener('p', noop, options);\n w.removeEventListener('p', noop, false);\n}\n\nvar supportsPassiveEvents = passiveOptionAccessed;\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n } // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n if (shouldScroll) {\n scrollTo(scrollParent, scrollDown);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n } // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {\n label: 'menu'\n }, _defineProperty$1(_ref3, alignToControl(placement), '100%'), _defineProperty$1(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty$1(_ref3, \"borderRadius\", borderRadius), _defineProperty$1(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty$1(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty$1(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty$1(_ref3, \"position\", 'absolute'), _defineProperty$1(_ref3, \"width\", '100%'), _defineProperty$1(_ref3, \"zIndex\", 1), _ref3;\n};\n\nvar PortalPlacementContext = /*#__PURE__*/createContext({\n getPortalPlacement: null\n}); // NOTE: internal only\n\nvar MenuPlacer = /*#__PURE__*/function (_Component) {\n _inherits(MenuPlacer, _Component);\n\n var _super = _createSuper(MenuPlacer);\n\n function MenuPlacer() {\n var _this;\n\n _classCallCheck(this, MenuPlacer);\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 = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n };\n\n _this.getPlacement = function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n var getPortalPlacement = _this.context.getPortalPlacement;\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n };\n\n _this.getUpdatedProps = function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _objectSpread2(_objectSpread2({}, _this.props), {}, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n };\n\n return _this;\n }\n\n _createClass(MenuPlacer, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(Component);\n\nMenuPlacer.contextType = PortalPlacementContext;\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('menu', props),\n className: cx({\n menu: true\n }, className),\n ref: innerRef\n }, innerProps), children);\n}; // Menu List\n// ==============================\n\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\n\nvar MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n innerRef = props.innerRef,\n isMulti = props.isMulti;\n return jsx(\"div\", _extends({\n css: getStyles('menuList', props),\n className: cx({\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, innerProps), children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\n\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('noOptionsMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\n\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\n\nvar LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('loadingMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\n\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\n\nvar MenuPortal = /*#__PURE__*/function (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n var _super2 = _createSuper(MenuPortal);\n\n function MenuPortal() {\n var _this2;\n\n _classCallCheck(this, MenuPortal);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _this2.state = {\n placement: null\n };\n\n _this2.getPortalPlacement = function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n };\n\n return _this2;\n }\n\n _createClass(MenuPortal, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n className = _this$props2.className,\n controlElement = _this$props2.controlElement,\n cx = _this$props2.cx,\n innerProps = _this$props2.innerProps,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = jsx(\"div\", _extends({\n css: getStyles('menuPortal', state),\n className: cx({\n 'menu-portal': true\n }, className)\n }, innerProps), children);\n return jsx(PortalPlacementContext.Provider, {\n value: {\n getPortalPlacement: this.getPortalPlacement\n }\n }, appendTo ? /*#__PURE__*/createPortal(menuWrapper, appendTo) : menuWrapper);\n }\n }]);\n\n return MenuPortal;\n}(Component);\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\n\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('container', props),\n className: cx({\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\n\nvar ValueContainer = function ValueContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n innerProps = props.innerProps,\n isMulti = props.isMulti,\n getStyles = props.getStyles,\n hasValue = props.hasValue;\n return jsx(\"div\", _extends({\n css: getStyles('valueContainer', props),\n className: cx({\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\n\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n innerProps = props.innerProps,\n getStyles = props.getStyles;\n return jsx(\"div\", _extends({\n css: getStyles('indicatorsContainer', props),\n className: cx({\n indicators: true\n }, className)\n }, innerProps), children);\n};\n\nvar _templateObject;\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n}\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"8mmkcg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0\"\n} : {\n name: \"tj5bde-Svg\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;label:Svg;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n}; // ==============================\n// Dropdown & Clear Icons\n// ==============================\n\n\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, [\"size\"]);\n\n return jsx(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\n\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\n\nvar baseCSS = function baseCSS(_ref3) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\n\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('dropdownIndicator', props),\n className: cx({\n indicator: true,\n 'dropdown-indicator': true\n }, className)\n }, innerProps), children || jsx(DownChevron, null));\n};\n\nvar clearIndicatorCSS = baseCSS;\n\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('clearIndicator', props),\n className: cx({\n indicator: true,\n 'clear-indicator': true\n }, className)\n }, innerProps), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return {\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\n\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"span\", _extends({}, innerProps, {\n css: getStyles('indicatorSeparator', props),\n className: cx({\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\n\nvar loadingDotAnimations = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"])));\n\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n var delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css: /*#__PURE__*/css$2({\n animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n backgroundColor: 'currentColor',\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:LoadingDot;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBDb21tb25Qcm9wcywgVGhlbWUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IFN2ZyA9ICh7IHNpemUsIC4uLnByb3BzIH06IHsgc2l6ZTogbnVtYmVyIH0pID0+IChcbiAgPHN2Z1xuICAgIGhlaWdodD17c2l6ZX1cbiAgICB3aWR0aD17c2l6ZX1cbiAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBsaW5lSGVpZ2h0OiAxLFxuICAgICAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENyb3NzSWNvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk0xNC4zNDggMTQuODQ5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwbC0yLjY1MS0zLjAzMC0yLjY1MSAzLjAyOWMtMC40NjkgMC40NjktMS4yMjkgMC40NjktMS42OTcgMC0wLjQ2OS0wLjQ2OS0wLjQ2OS0xLjIyOSAwLTEuNjk3bDIuNzU4LTMuMTUtMi43NTktMy4xNTJjLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI4IDAtMS42OTdzMS4yMjgtMC40NjkgMS42OTcgMGwyLjY1MiAzLjAzMSAyLjY1MS0zLjAzMWMwLjQ2OS0wLjQ2OSAxLjIyOC0wLjQ2OSAxLjY5NyAwczAuNDY5IDEuMjI5IDAgMS42OTdsLTIuNzU4IDMuMTUyIDIuNzU4IDMuMTVjMC40NjkgMC40NjkgMC40NjkgMS4yMjkgMCAxLjY5OHpcIiAvPlxuICA8L1N2Zz5cbik7XG5leHBvcnQgY29uc3QgRG93bkNoZXZyb24gPSAocHJvcHM6IGFueSkgPT4gKFxuICA8U3ZnIHNpemU9ezIwfSB7Li4ucHJvcHN9PlxuICAgIDxwYXRoIGQ9XCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCIgLz5cbiAgPC9Tdmc+XG4pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERyb3Bkb3duICYgQ2xlYXIgQnV0dG9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIEluZGljYXRvclByb3BzID0gQ29tbW9uUHJvcHMgJiB7XG4gIC8qKiBUaGUgY2hpbGRyZW4gdG8gYmUgcmVuZGVyZWQgaW5zaWRlIHRoZSBpbmRpY2F0b3IuICovXG4gIGNoaWxkcmVuOiBOb2RlLFxuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn07XG5cbmNvbnN0IGJhc2VDU1MgPSAoe1xuICBpc0ZvY3VzZWQsXG4gIHRoZW1lOiB7XG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICAgIGNvbG9ycyxcbiAgfSxcbn06IEluZGljYXRvclByb3BzKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvckNvbnRhaW5lcicsXG4gIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBwYWRkaW5nOiBiYXNlVW5pdCAqIDIsXG4gIHRyYW5zaXRpb246ICdjb2xvciAxNTBtcycsXG5cbiAgJzpob3Zlcic6IHtcbiAgICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw4MCA6IGNvbG9ycy5uZXV0cmFsNDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGRyb3Bkb3duSW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBEcm9wZG93bkluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnZHJvcGRvd25JbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdkcm9wZG93bi1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPERvd25DaGV2cm9uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFySW5kaWNhdG9yQ1NTID0gYmFzZUNTUztcbmV4cG9ydCBjb25zdCBDbGVhckluZGljYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2dldFN0eWxlcygnY2xlYXJJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdjbGVhci1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4gfHwgPENyb3NzSWNvbiAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VwYXJhdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudHlwZSBTZXBhcmF0b3JTdGF0ZSA9IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaW5kaWNhdG9yU2VwYXJhdG9yQ1NTID0gKHtcbiAgaXNEaXNhYmxlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogQ29tbW9uUHJvcHMgJiBTZXBhcmF0b3JTdGF0ZSkgPT4gKHtcbiAgbGFiZWw6ICdpbmRpY2F0b3JTZXBhcmF0b3InLFxuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgYmFja2dyb3VuZENvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwxMCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIG1hcmdpbkJvdHRvbTogYmFzZVVuaXQgKiAyLFxuICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMixcbiAgd2lkdGg6IDEsXG59KTtcblxuZXhwb3J0IGNvbnN0IEluZGljYXRvclNlcGFyYXRvciA9IChwcm9wczogSW5kaWNhdG9yUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdpbmRpY2F0b3JTZXBhcmF0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KHsgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlIH0sIGNsYXNzTmFtZSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9hZGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGxvYWRpbmdEb3RBbmltYXRpb25zID0ga2V5ZnJhbWVzYFxuICAwJSwgODAlLCAxMDAlIHsgb3BhY2l0eTogMDsgfVxuICA0MCUgeyBvcGFjaXR5OiAxOyB9XG5gO1xuXG5leHBvcnQgY29uc3QgbG9hZGluZ0luZGljYXRvckNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgc2l6ZSxcbiAgdGhlbWU6IHtcbiAgICBjb2xvcnMsXG4gICAgc3BhY2luZzogeyBiYXNlVW5pdCB9LFxuICB9LFxufToge1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4sXG4gIHNpemU6IG51bWJlcixcbiAgdGhlbWU6IFRoZW1lLFxufSkgPT4gKHtcbiAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgYWxpZ25TZWxmOiAnY2VudGVyJyxcbiAgZm9udFNpemU6IHNpemUsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG1hcmdpblJpZ2h0OiBzaXplLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbn0pO1xuXG50eXBlIERvdFByb3BzID0geyBkZWxheTogbnVtYmVyLCBvZmZzZXQ6IGJvb2xlYW4gfTtcbmNvbnN0IExvYWRpbmdEb3QgPSAoeyBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdjdXJyZW50Q29sb3InLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luTGVmdDogb2Zmc2V0ID8gJzFlbScgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcywgaXNSdGwgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2xvYWRpbmdJbmRpY2F0b3InLCBwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICB7XG4gICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxuICAgICAgICAgICdsb2FkaW5nLWluZGljYXRvcic6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgKX1cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXswfSBvZmZzZXQ9e2lzUnRsfSAvPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezE2MH0gb2Zmc2V0IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\")\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('loadingIndicator', props),\n className: cx({\n indicator: true,\n 'loading-indicator': true\n }, className)\n }, innerProps), jsx(LoadingDot, {\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n delay: 320,\n offset: !isRtl\n }));\n};\n\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nvar css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n label: 'control',\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends({\n ref: innerRef,\n css: getStyles('control', props),\n className: cx({\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n innerProps = props.innerProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return jsx(\"div\", _extends({\n css: getStyles('group', props),\n className: cx({\n group: true\n }, className)\n }, innerProps), jsx(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\n\nvar GroupHeading = function GroupHeading(props) {\n var getStyles = props.getStyles,\n cx = props.cx,\n className = props.className;\n\n var _cleanCommonProps = cleanCommonProps(props);\n\n _cleanCommonProps.data;\n\n var innerProps = _objectWithoutProperties(_cleanCommonProps, [\"data\"]);\n\n return jsx(\"div\", _extends({\n css: getStyles('groupHeading', props),\n className: cx({\n 'group-heading': true\n }, className)\n }, innerProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles;\n\n var _cleanCommonProps = cleanCommonProps(props),\n innerRef = _cleanCommonProps.innerRef,\n isDisabled = _cleanCommonProps.isDisabled,\n isHidden = _cleanCommonProps.isHidden,\n innerProps = _objectWithoutProperties(_cleanCommonProps, [\"innerRef\", \"isDisabled\", \"isHidden\"]);\n\n return jsx(\"div\", {\n css: getStyles('input', props)\n }, jsx(AutosizeInput, _extends({\n className: cx({\n input: true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, innerProps)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n label: 'multiValue',\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n\n };\n};\n\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\n\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\n\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\n\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\n\nfunction MultiValueRemove(_ref5) {\n var children = _ref5.children,\n innerProps = _ref5.innerProps;\n return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n size: 14\n }));\n}\n\nvar MultiValue = function MultiValue(props) {\n var children = props.children,\n className = props.className,\n components = props.components,\n cx = props.cx,\n data = props.data,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n removeProps = props.removeProps,\n selectProps = props.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(ClassNames, null, function (_ref6) {\n var css = _ref6.css,\n emotionCx = _ref6.cx;\n return jsx(Container, {\n data: data,\n innerProps: _objectSpread2({\n className: emotionCx(css(getStyles('multiValue', props)), cx({\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className))\n }, innerProps),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: {\n className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n 'multi-value__label': true\n }, className))\n },\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _objectSpread2({\n className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n 'multi-value__remove': true\n }, className))\n }, removeProps),\n selectProps: selectProps\n }));\n });\n};\n\nMultiValue.defaultProps = {\n cropWithEllipsis: true\n};\n\nvar optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'option',\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('option', props),\n className: cx({\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('placeholder', props),\n className: cx({\n placeholder: true\n }, className)\n }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'singleValue',\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('singleValue', props),\n className: cx({\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\n\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread2(_objectSpread2({}, components), props.components);\n};\n\nexport { isMobileDevice as A, classNames as B, defaultComponents as C, isDocumentElement as D, cleanValue as E, scrollIntoView as F, noop as G, handleInputChange as H, MenuPlacer as M, _createSuper as _, _objectSpread2 as a, clearIndicatorCSS as b, components as c, containerCSS as d, css as e, dropdownIndicatorCSS as f, groupCSS as g, groupHeadingCSS as h, indicatorsContainerCSS as i, indicatorSeparatorCSS as j, inputCSS as k, loadingIndicatorCSS as l, loadingMessageCSS as m, menuCSS as n, menuListCSS as o, menuPortalCSS as p, multiValueCSS as q, multiValueLabelCSS as r, supportsPassiveEvents as s, multiValueRemoveCSS as t, noOptionsMessageCSS as u, optionCSS as v, placeholderCSS as w, css$1 as x, valueContainerCSS as y, isTouchCapable as z };","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","var safeIsNaN = Number.isNaN || function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n};\n\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n\n return false;\n}\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n function memoized() {\n var newArgs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n\n return memoized;\n}\n\nexport default memoizeOne;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { a as _objectSpread2, s as supportsPassiveEvents, b as clearIndicatorCSS, d as containerCSS, e as css$1, f as dropdownIndicatorCSS, g as groupCSS, h as groupHeadingCSS, i as indicatorsContainerCSS, j as indicatorSeparatorCSS, k as inputCSS, l as loadingIndicatorCSS, m as loadingMessageCSS, n as menuCSS, o as menuListCSS, p as menuPortalCSS, q as multiValueCSS, r as multiValueLabelCSS, t as multiValueRemoveCSS, u as noOptionsMessageCSS, v as optionCSS, w as placeholderCSS, x as css$2, y as valueContainerCSS, z as isTouchCapable, A as isMobileDevice, _ as _createSuper, B as classNames, C as defaultComponents, D as isDocumentElement, E as cleanValue, F as scrollIntoView, G as noop, M as MenuPlacer } from './index-4bd03571.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport React, { useMemo, useRef, useCallback, useEffect, Component } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport memoizeOne from 'memoize-one';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n}\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"7pg0cj-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap\"\n} : {\n name: \"1f43avz-a11yText-A11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFJIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbmNvbnN0IEExMXlUZXh0ID0gKHByb3BzOiBFbGVtZW50Q29uZmlnPCdzcGFuJz4pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends({\n css: _ref\n }, props));\n};\n\nvar defaultAriaLiveMessages = {\n guidance: function guidance(props) {\n var isSearchable = props.isSearchable,\n isMulti = props.isMulti,\n isDisabled = props.isDisabled,\n tabSelectsValue = props.tabSelectsValue,\n context = props.context;\n\n switch (context) {\n case 'menu':\n return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu\").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', \".\");\n\n case 'input':\n return \"\".concat(props['aria-label'] || 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n\n default:\n return '';\n }\n },\n onChange: function onChange(props) {\n var action = props.action,\n _props$label = props.label,\n label = _props$label === void 0 ? '' : _props$label,\n isDisabled = props.isDisabled;\n\n switch (action) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(label, \", deselected.\");\n\n case 'select-option':\n return isDisabled ? \"option \".concat(label, \" is disabled. Select another option.\") : \"option \".concat(label, \", selected.\");\n\n default:\n return '';\n }\n },\n onFocus: function onFocus(props) {\n var context = props.context,\n _props$focused = props.focused,\n focused = _props$focused === void 0 ? {} : _props$focused,\n options = props.options,\n _props$label2 = props.label,\n label = _props$label2 === void 0 ? '' : _props$label2,\n selectValue = props.selectValue,\n isDisabled = props.isDisabled,\n isSelected = props.isSelected;\n\n var getArrayIndex = function getArrayIndex(arr, item) {\n return arr && arr.length ? \"\".concat(arr.indexOf(item) + 1, \" of \").concat(arr.length) : '';\n };\n\n if (context === 'value' && selectValue) {\n return \"value \".concat(label, \" focused, \").concat(getArrayIndex(selectValue, focused), \".\");\n }\n\n if (context === 'menu') {\n var disabled = isDisabled ? ' disabled' : '';\n var status = \"\".concat(isSelected ? 'selected' : 'focused').concat(disabled);\n return \"option \".concat(label, \" \").concat(status, \", \").concat(getArrayIndex(options, focused), \".\");\n }\n\n return '';\n },\n onFilter: function onFilter(props) {\n var inputValue = props.inputValue,\n resultsMessage = props.resultsMessage;\n return \"\".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n }\n};\n\nvar LiveRegion = function LiveRegion(props) {\n var ariaSelection = props.ariaSelection,\n focusedOption = props.focusedOption,\n focusedValue = props.focusedValue,\n focusableOptions = props.focusableOptions,\n isFocused = props.isFocused,\n selectValue = props.selectValue,\n selectProps = props.selectProps;\n var ariaLiveMessages = selectProps.ariaLiveMessages,\n getOptionLabel = selectProps.getOptionLabel,\n inputValue = selectProps.inputValue,\n isMulti = selectProps.isMulti,\n isOptionDisabled = selectProps.isOptionDisabled,\n isSearchable = selectProps.isSearchable,\n menuIsOpen = selectProps.menuIsOpen,\n options = selectProps.options,\n screenReaderStatus = selectProps.screenReaderStatus,\n tabSelectsValue = selectProps.tabSelectsValue;\n var ariaLabel = selectProps['aria-label'];\n var ariaLive = selectProps['aria-live']; // Update aria live message configuration when prop changes\n\n var messages = useMemo(function () {\n return _objectSpread2(_objectSpread2({}, defaultAriaLiveMessages), ariaLiveMessages || {});\n }, [ariaLiveMessages]); // Update aria live selected option when prop changes\n\n var ariaSelected = useMemo(function () {\n var message = '';\n\n if (ariaSelection && messages.onChange) {\n var option = ariaSelection.option,\n removedValue = ariaSelection.removedValue,\n value = ariaSelection.value; // select-option when !isMulti does not return option so we assume selected option is value\n\n var asOption = function asOption(val) {\n return !Array.isArray(val) ? val : null;\n };\n\n var selected = removedValue || option || asOption(value);\n\n var onChangeProps = _objectSpread2({\n isDisabled: selected && isOptionDisabled(selected),\n label: selected ? getOptionLabel(selected) : ''\n }, ariaSelection);\n\n message = messages.onChange(onChangeProps);\n }\n\n return message;\n }, [ariaSelection, isOptionDisabled, getOptionLabel, messages]);\n var ariaFocused = useMemo(function () {\n var focusMsg = '';\n var focused = focusedOption || focusedValue;\n var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption));\n\n if (focused && messages.onFocus) {\n var onFocusProps = {\n focused: focused,\n label: getOptionLabel(focused),\n isDisabled: isOptionDisabled(focused),\n isSelected: isSelected,\n options: options,\n context: focused === focusedOption ? 'menu' : 'value',\n selectValue: selectValue\n };\n focusMsg = messages.onFocus(onFocusProps);\n }\n\n return focusMsg;\n }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, options, selectValue]);\n var ariaResults = useMemo(function () {\n var resultsMsg = '';\n\n if (menuIsOpen && options.length && messages.onFilter) {\n var resultsMessage = screenReaderStatus({\n count: focusableOptions.length\n });\n resultsMsg = messages.onFilter({\n inputValue: inputValue,\n resultsMessage: resultsMessage\n });\n }\n\n return resultsMsg;\n }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]);\n var ariaGuidance = useMemo(function () {\n var guidanceMsg = '';\n\n if (messages.guidance) {\n var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input';\n guidanceMsg = messages.guidance({\n 'aria-label': ariaLabel,\n context: context,\n isDisabled: focusedOption && isOptionDisabled(focusedOption),\n isMulti: isMulti,\n isSearchable: isSearchable,\n tabSelectsValue: tabSelectsValue\n });\n }\n\n return guidanceMsg;\n }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, tabSelectsValue]);\n var ariaContext = \"\".concat(ariaFocused, \" \").concat(ariaResults, \" \").concat(ariaGuidance);\n return jsx(A11yText, {\n \"aria-live\": ariaLive,\n \"aria-atomic\": \"false\",\n \"aria-relevant\": \"additions text\"\n }, isFocused && jsx(React.Fragment, null, jsx(\"span\", {\n id: \"aria-selection\"\n }, ariaSelected), jsx(\"span\", {\n id: \"aria-context\"\n }, ariaContext)));\n};\n\nvar diacritics = [{\n base: 'A',\n letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n base: 'AA',\n letters: \"\\uA732\"\n}, {\n base: 'AE',\n letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n base: 'AO',\n letters: \"\\uA734\"\n}, {\n base: 'AU',\n letters: \"\\uA736\"\n}, {\n base: 'AV',\n letters: \"\\uA738\\uA73A\"\n}, {\n base: 'AY',\n letters: \"\\uA73C\"\n}, {\n base: 'B',\n letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n base: 'C',\n letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n base: 'D',\n letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\"\n}, {\n base: 'DZ',\n letters: \"\\u01F1\\u01C4\"\n}, {\n base: 'Dz',\n letters: \"\\u01F2\\u01C5\"\n}, {\n base: 'E',\n letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n base: 'F',\n letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n base: 'G',\n letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n base: 'H',\n letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n base: 'I',\n letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n base: 'J',\n letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n base: 'K',\n letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n base: 'L',\n letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n base: 'LJ',\n letters: \"\\u01C7\"\n}, {\n base: 'Lj',\n letters: \"\\u01C8\"\n}, {\n base: 'M',\n letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n base: 'N',\n letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n base: 'NJ',\n letters: \"\\u01CA\"\n}, {\n base: 'Nj',\n letters: \"\\u01CB\"\n}, {\n base: 'O',\n letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n base: 'OI',\n letters: \"\\u01A2\"\n}, {\n base: 'OO',\n letters: \"\\uA74E\"\n}, {\n base: 'OU',\n letters: \"\\u0222\"\n}, {\n base: 'P',\n letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n base: 'Q',\n letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n base: 'R',\n letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n base: 'S',\n letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n base: 'T',\n letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n base: 'TZ',\n letters: \"\\uA728\"\n}, {\n base: 'U',\n letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n base: 'V',\n letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n base: 'VY',\n letters: \"\\uA760\"\n}, {\n base: 'W',\n letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n base: 'X',\n letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n base: 'Y',\n letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n base: 'Z',\n letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n base: 'a',\n letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n base: 'aa',\n letters: \"\\uA733\"\n}, {\n base: 'ae',\n letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n base: 'ao',\n letters: \"\\uA735\"\n}, {\n base: 'au',\n letters: \"\\uA737\"\n}, {\n base: 'av',\n letters: \"\\uA739\\uA73B\"\n}, {\n base: 'ay',\n letters: \"\\uA73D\"\n}, {\n base: 'b',\n letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n base: 'c',\n letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n base: 'd',\n letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n base: 'dz',\n letters: \"\\u01F3\\u01C6\"\n}, {\n base: 'e',\n letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n base: 'f',\n letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n base: 'g',\n letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n base: 'h',\n letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n base: 'hv',\n letters: \"\\u0195\"\n}, {\n base: 'i',\n letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n base: 'j',\n letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n base: 'k',\n letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n base: 'l',\n letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n base: 'lj',\n letters: \"\\u01C9\"\n}, {\n base: 'm',\n letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n base: 'n',\n letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n base: 'nj',\n letters: \"\\u01CC\"\n}, {\n base: 'o',\n letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n base: 'oi',\n letters: \"\\u01A3\"\n}, {\n base: 'ou',\n letters: \"\\u0223\"\n}, {\n base: 'oo',\n letters: \"\\uA74F\"\n}, {\n base: 'p',\n letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n base: 'q',\n letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n base: 'r',\n letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n base: 's',\n letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n base: 't',\n letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n base: 'tz',\n letters: \"\\uA729\"\n}, {\n base: 'u',\n letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n base: 'v',\n letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n base: 'vy',\n letters: \"\\uA761\"\n}, {\n base: 'w',\n letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n base: 'x',\n letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n base: 'y',\n letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n base: 'z',\n letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}];\nvar anyDiacritic = new RegExp('[' + diacritics.map(function (d) {\n return d.letters;\n}).join('') + ']', 'g');\nvar diacriticToBase = {};\n\nfor (var i = 0; i < diacritics.length; i++) {\n var diacritic = diacritics[i];\n\n for (var j = 0; j < diacritic.letters.length; j++) {\n diacriticToBase[diacritic.letters[j]] = diacritic.base;\n }\n}\n\nvar stripDiacritics = function stripDiacritics(str) {\n return str.replace(anyDiacritic, function (match) {\n return diacriticToBase[match];\n });\n};\n\nvar memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics);\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _objectSpread2({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = memoizedStripDiacriticsForInput(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nfunction DummyInput(_ref) {\n _ref.in;\n _ref.out;\n _ref.onExited;\n _ref.appear;\n _ref.enter;\n _ref.exit;\n var innerRef = _ref.innerRef;\n _ref.emotion;\n\n var props = _objectWithoutProperties(_ref, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return jsx(\"input\", _extends({\n ref: innerRef\n }, props, {\n css: /*#__PURE__*/css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \";label:DummyInput;\", process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbjogaW5Qcm9wLFxuICBvdXQsXG4gIG9uRXhpdGVkLFxuICBhcHBlYXIsXG4gIGVudGVyLFxuICBleGl0LFxuICBpbm5lclJlZixcbiAgZW1vdGlvbixcbiAgLi4ucHJvcHNcbn06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgcmVmPXtpbm5lclJlZn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIGNzcz17e1xuICAgICAgICBsYWJlbDogJ2R1bW15SW5wdXQnLFxuICAgICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgICBjb2xvcjogJ3RyYW5zcGFyZW50JyxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgIGxlZnQ6IC0xMDAsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */\")\n }));\n}\n\nvar cancelScroll = function cancelScroll(event) {\n event.preventDefault();\n event.stopPropagation();\n};\n\nfunction useScrollCapture(_ref) {\n var isEnabled = _ref.isEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var isBottom = useRef(false);\n var isTop = useRef(false);\n var touchStart = useRef(0);\n var scrollTarget = useRef(null);\n var handleEventDelta = useCallback(function (event, delta) {\n // Reference should never be `null` at this point, but flow complains otherwise\n if (scrollTarget.current === null) return;\n var _scrollTarget$current = scrollTarget.current,\n scrollTop = _scrollTarget$current.scrollTop,\n scrollHeight = _scrollTarget$current.scrollHeight,\n clientHeight = _scrollTarget$current.clientHeight;\n var target = scrollTarget.current;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && isBottom.current) {\n if (onBottomLeave) onBottomLeave(event);\n isBottom.current = false;\n }\n\n if (isDeltaPositive && isTop.current) {\n if (onTopLeave) onTopLeave(event);\n isTop.current = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !isBottom.current) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n isBottom.current = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !isTop.current) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n isTop.current = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n cancelScroll(event);\n }\n }, []);\n var onWheel = useCallback(function (event) {\n handleEventDelta(event, event.deltaY);\n }, [handleEventDelta]);\n var onTouchStart = useCallback(function (event) {\n // set touch start so we can calculate touchmove delta\n touchStart.current = event.changedTouches[0].clientY;\n }, []);\n var onTouchMove = useCallback(function (event) {\n var deltaY = touchStart.current - event.changedTouches[0].clientY;\n handleEventDelta(event, deltaY);\n }, [handleEventDelta]);\n var startListening = useCallback(function (el) {\n // bail early if no element is available to attach to\n if (!el) return;\n var notPassive = supportsPassiveEvents ? {\n passive: false\n } : false; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', onWheel, notPassive);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', onTouchStart, notPassive);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', onTouchMove, notPassive);\n }\n }, [onTouchMove, onTouchStart, onWheel]);\n var stopListening = useCallback(function (el) {\n // bail early if no element is available to detach from\n if (!el) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', onTouchMove, false);\n }\n }, [onTouchMove, onTouchStart, onWheel]);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n startListening(element);\n return function () {\n stopListening(element);\n };\n }, [isEnabled, startListening, stopListening]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\n\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\n\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\nvar listenerOptions = {\n capture: false,\n passive: false\n};\n\nfunction useScrollLock(_ref) {\n var isEnabled = _ref.isEnabled,\n _ref$accountForScroll = _ref.accountForScrollbars,\n accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll;\n var originalStyles = useRef({});\n var scrollTarget = useRef(null);\n var addScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n originalStyles.current[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n }, []);\n var removeScrollLock = useCallback(function (touchScrollTarget) {\n if (!canUseDOM) return;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = originalStyles.current[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions);\n }\n }\n }, []);\n useEffect(function () {\n if (!isEnabled) return;\n var element = scrollTarget.current;\n addScrollLock(element);\n return function () {\n removeScrollLock(element);\n };\n }, [isEnabled, addScrollLock, removeScrollLock]);\n return function (element) {\n scrollTarget.current = element;\n };\n}\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__$1() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n}\n\nvar blurSelectInput = function blurSelectInput() {\n return document.activeElement && document.activeElement.blur();\n};\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"1kfdb0e\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0\"\n} : {\n name: \"bp8cua-ScrollManager\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0RVIiwiZmlsZSI6IlNjcm9sbE1hbmFnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdHlwZSBFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZVNjcm9sbENhcHR1cmUgZnJvbSAnLi91c2VTY3JvbGxDYXB0dXJlJztcbmltcG9ydCB1c2VTY3JvbGxMb2NrIGZyb20gJy4vdXNlU2Nyb2xsTG9jayc7XG5cbnR5cGUgUmVmQ2FsbGJhY2s8VD4gPSAoVCB8IG51bGwpID0+IHZvaWQ7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiAoUmVmQ2FsbGJhY2s8SFRNTEVsZW1lbnQ+KSA9PiBFbGVtZW50PCo+LFxuICBsb2NrRW5hYmxlZDogYm9vbGVhbixcbiAgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW4sXG4gIG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudD4pID0+IHZvaWQsXG4gIG9uQm90dG9tTGVhdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BBcnJpdmU/OiAoZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxFbGVtZW50PikgPT4gdm9pZCxcbiAgb25Ub3BMZWF2ZT86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB2b2lkLFxufTtcblxuY29uc3QgYmx1clNlbGVjdElucHV0ID0gKCkgPT5cbiAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmID0gZWxlbWVudCA9PiB7XG4gICAgc2V0U2Nyb2xsQ2FwdHVyZVRhcmdldChlbGVtZW50KTtcbiAgICBzZXRTY3JvbGxMb2NrVGFyZ2V0KGVsZW1lbnQpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAge2xvY2tFbmFibGVkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIG9uQ2xpY2s9e2JsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtjaGlsZHJlbih0YXJnZXRSZWYpfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICk7XG59XG4iXX0= */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1\n};\n\nfunction ScrollManager(_ref) {\n var children = _ref.children,\n lockEnabled = _ref.lockEnabled,\n _ref$captureEnabled = _ref.captureEnabled,\n captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled,\n onBottomArrive = _ref.onBottomArrive,\n onBottomLeave = _ref.onBottomLeave,\n onTopArrive = _ref.onTopArrive,\n onTopLeave = _ref.onTopLeave;\n var setScrollCaptureTarget = useScrollCapture({\n isEnabled: captureEnabled,\n onBottomArrive: onBottomArrive,\n onBottomLeave: onBottomLeave,\n onTopArrive: onTopArrive,\n onTopLeave: onTopLeave\n });\n var setScrollLockTarget = useScrollLock({\n isEnabled: lockEnabled\n });\n\n var targetRef = function targetRef(element) {\n setScrollCaptureTarget(element);\n setScrollLockTarget(element);\n };\n\n return jsx(React.Fragment, null, lockEnabled && jsx(\"div\", {\n onClick: blurSelectInput,\n css: _ref2\n }), children(targetRef));\n}\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\n\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\n\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\n\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css$1,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$2,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // initialize with source styles\n\n var styles = _objectSpread2({}, source); // massage in target styles\n\n\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\nvar defaultProps = {\n 'aria-live': 'polite',\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\n\nfunction toCategorizedOption(props, option, selectValue, index) {\n var isDisabled = _isOptionDisabled(props, option, selectValue);\n\n var isSelected = _isOptionSelected(props, option, selectValue);\n\n var label = getOptionLabel$1(props, option);\n var value = getOptionValue$1(props, option);\n return {\n type: 'option',\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n label: label,\n value: value,\n index: index\n };\n}\n\nfunction buildCategorizedOptions(props, selectValue) {\n return props.options.map(function (groupOrOption, groupOrOptionIndex) {\n if (groupOrOption.options) {\n var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) {\n return toCategorizedOption(props, option, selectValue, optionIndex);\n }).filter(function (categorizedOption) {\n return isFocusable(props, categorizedOption);\n });\n return categorizedOptions.length > 0 ? {\n type: 'group',\n data: groupOrOption,\n options: categorizedOptions,\n index: groupOrOptionIndex\n } : undefined;\n }\n\n var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex);\n return isFocusable(props, categorizedOption) ? categorizedOption : undefined;\n }) // Flow limitation (see https://github.com/facebook/flow/issues/1414)\n .filter(function (categorizedOption) {\n return !!categorizedOption;\n });\n}\n\nfunction buildFocusableOptionsFromCategorizedOptions(categorizedOptions) {\n return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) {\n if (categorizedOption.type === 'group') {\n optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) {\n return option.data;\n })));\n } else {\n optionsAccumulator.push(categorizedOption.data);\n }\n\n return optionsAccumulator;\n }, []);\n}\n\nfunction buildFocusableOptions(props, selectValue) {\n return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue));\n}\n\nfunction isFocusable(props, categorizedOption) {\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue;\n var data = categorizedOption.data,\n isSelected = categorizedOption.isSelected,\n label = categorizedOption.label,\n value = categorizedOption.value;\n return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, {\n label: label,\n value: value,\n data: data\n }, inputValue);\n}\n\nfunction getNextFocusedValue(state, nextSelectValue) {\n var focusedValue = state.focusedValue,\n lastSelectValue = state.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n\n return null;\n}\n\nfunction getNextFocusedOption(state, options) {\n var lastFocusedOption = state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n}\n\nvar getOptionLabel$1 = function getOptionLabel(props, data) {\n return props.getOptionLabel(data);\n};\n\nvar getOptionValue$1 = function getOptionValue(props, data) {\n return props.getOptionValue(data);\n};\n\nfunction _isOptionDisabled(props, option, selectValue) {\n return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false;\n}\n\nfunction _isOptionSelected(props, option, selectValue) {\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof props.isOptionSelected === 'function') {\n return props.isOptionSelected(option, selectValue);\n }\n\n var candidate = getOptionValue$1(props, option);\n return selectValue.some(function (i) {\n return getOptionValue$1(props, i) === candidate;\n });\n}\n\nfunction _filterOption(props, option, inputValue) {\n return props.filterOption ? props.filterOption(option, inputValue) : true;\n}\n\nvar shouldHideSelectedOptions = function shouldHideSelectedOptions(props) {\n var hideSelectedOptions = props.hideSelectedOptions,\n isMulti = props.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n};\n\nvar instanceId = 1;\n\nvar Select = /*#__PURE__*/function (_Component) {\n _inherits(Select, _Component);\n\n var _super = _createSuper(Select); // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n\n\n function Select(_props) {\n var _this;\n\n _classCallCheck(this, Select);\n\n _this = _super.call(this, _props);\n _this.state = {\n ariaSelection: null,\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n selectValue: [],\n clearFocusValueOnUpdate: false,\n inputIsHiddenAfterUpdate: undefined,\n prevProps: undefined\n };\n _this.blockOptionHover = false;\n _this.isComposing = false;\n _this.commonProps = void 0;\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n _this.instancePrefix = '';\n _this.openAfterFocus = false;\n _this.scrollToFocusedOptionOnUpdate = false;\n _this.userIsDragging = void 0;\n _this.controlRef = null;\n\n _this.getControlRef = function (ref) {\n _this.controlRef = ref;\n };\n\n _this.focusedOptionRef = null;\n\n _this.getFocusedOptionRef = function (ref) {\n _this.focusedOptionRef = ref;\n };\n\n _this.menuListRef = null;\n\n _this.getMenuListRef = function (ref) {\n _this.menuListRef = ref;\n };\n\n _this.inputRef = null;\n\n _this.getInputRef = function (ref) {\n _this.inputRef = ref;\n };\n\n _this.focus = _this.focusInput;\n _this.blur = _this.blurInput;\n\n _this.onChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n actionMeta.name = name;\n\n _this.ariaOnChange(newValue, actionMeta);\n\n onChange(newValue, actionMeta);\n };\n\n _this.setValue = function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments.length > 2 ? arguments[2] : undefined;\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.setState({\n clearFocusValueOnUpdate: true\n });\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n };\n\n _this.selectOption = function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti,\n name = _this$props3.name;\n var selectValue = _this.state.selectValue;\n\n var deselected = isMulti && _this.isOptionSelected(newValue, selectValue);\n\n var isDisabled = _this.isOptionDisabled(newValue, selectValue);\n\n if (deselected) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n } else if (!isDisabled) {\n // Select option if option is not disabled\n if (isMulti) {\n _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n } else {\n _this.setValue(newValue, 'select-option');\n }\n } else {\n _this.ariaOnChange(newValue, {\n action: 'select-option',\n name: name\n });\n\n return;\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n };\n\n _this.removeValue = function (removedValue) {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n var newValueArray = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n var newValue = isMulti ? newValueArray : newValueArray[0] || null;\n\n _this.onChange(newValue, {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.focusInput();\n };\n\n _this.clearValue = function () {\n var selectValue = _this.state.selectValue;\n\n _this.onChange(_this.props.isMulti ? [] : null, {\n action: 'clear',\n removedValues: selectValue\n });\n };\n\n _this.popValue = function () {\n var isMulti = _this.props.isMulti;\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValueArray = selectValue.slice(0, selectValue.length - 1);\n var newValue = isMulti ? newValueArray : newValueArray[0] || null;\n\n _this.onChange(newValue, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n };\n\n _this.getValue = function () {\n return _this.state.selectValue;\n };\n\n _this.cx = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args));\n };\n\n _this.getOptionLabel = function (data) {\n return getOptionLabel$1(_this.props, data);\n };\n\n _this.getOptionValue = function (data) {\n return getOptionValue$1(_this.props, data);\n };\n\n _this.getStyles = function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n };\n\n _this.getElementId = function (element) {\n return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n };\n\n _this.getComponents = function () {\n return defaultComponents(_this.props);\n };\n\n _this.buildCategorizedOptions = function () {\n return buildCategorizedOptions(_this.props, _this.state.selectValue);\n };\n\n _this.getCategorizedOptions = function () {\n return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : [];\n };\n\n _this.buildFocusableOptions = function () {\n return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions());\n };\n\n _this.getFocusableOptions = function () {\n return _this.props.menuIsOpen ? _this.buildFocusableOptions() : [];\n };\n\n _this.ariaOnChange = function (value, actionMeta) {\n _this.setState({\n ariaSelection: _objectSpread2({\n value: value\n }, actionMeta)\n });\n };\n\n _this.onMenuMouseDown = function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n };\n\n _this.onMenuMouseMove = function (event) {\n _this.blockOptionHover = false;\n };\n\n _this.onControlMouseDown = function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n _this.onMenuClose();\n }\n }\n\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n event.preventDefault();\n }\n };\n\n _this.onDropdownIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: !isMulti\n });\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n\n event.preventDefault();\n event.stopPropagation();\n };\n\n _this.onClearIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n\n if (event.type === 'touchend') {\n _this.focusInput();\n } else {\n setTimeout(function () {\n return _this.focusInput();\n });\n }\n };\n\n _this.onScroll = function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n };\n\n _this.onCompositionStart = function () {\n _this.isComposing = true;\n };\n\n _this.onCompositionEnd = function () {\n _this.isComposing = false;\n };\n\n _this.onTouchStart = function (_ref2) {\n var touches = _ref2.touches;\n var touch = touches && touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n };\n\n _this.onTouchMove = function (_ref3) {\n var touches = _ref3.touches;\n var touch = touches && touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n };\n\n _this.onTouchEnd = function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n };\n\n _this.onControlTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n };\n\n _this.onClearIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n };\n\n _this.onDropdownIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n };\n\n _this.handleInputChange = function (event) {\n var inputValue = event.currentTarget.value;\n\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n if (!_this.props.menuIsOpen) {\n _this.onMenuOpen();\n }\n };\n\n _this.onInputFocus = function (event) {\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.setState({\n inputIsHiddenAfterUpdate: false,\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n };\n\n _this.onInputBlur = function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n };\n\n _this.onOptionHover = function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n };\n\n _this.shouldHideSelectedOptions = function () {\n return shouldHideSelectedOptions(_this.props);\n };\n\n _this.onKeyDown = function (event) {\n var _this$props5 = _this.props,\n isMulti = _this$props5.isMulti,\n backspaceRemovesValue = _this$props5.backspaceRemovesValue,\n escapeClearsValue = _this$props5.escapeClearsValue,\n inputValue = _this$props5.inputValue,\n isClearable = _this$props5.isClearable,\n isDisabled = _this$props5.isDisabled,\n menuIsOpen = _this$props5.menuIsOpen,\n onKeyDown = _this$props5.onKeyDown,\n tabSelectsValue = _this$props5.tabSelectsValue,\n openMenuOnFocus = _this$props5.openMenuOnFocus;\n var _this$state = _this.state,\n focusedOption = _this$state.focusedOption,\n focusedValue = _this$state.focusedValue,\n selectValue = _this$state.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (_this.isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.setState({\n inputIsHiddenAfterUpdate: false\n });\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n };\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n _this.state.selectValue = cleanValue(_props.value);\n return _this;\n }\n\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props6 = this.props,\n isDisabled = _this$props6.isDisabled,\n menuIsOpen = _this$props6.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n }\n\n if (isFocused && isDisabled && !prevProps.isDisabled) {\n // ensure select state gets blurred in case Select is programatically disabled while focused\n this.setState({\n isFocused: false\n }, this.onMenuClose);\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n } // ==============================\n // Consumer Handlers\n // ==============================\n\n }, {\n key: \"onMenuOpen\",\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this2 = this;\n\n var _this$state2 = this.state,\n selectValue = _this$state2.selectValue,\n isFocused = _this$state2.isFocused;\n var focusableOptions = this.buildFocusableOptions();\n var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1;\n\n if (!this.props.isMulti) {\n var selectedIndex = focusableOptions.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.setState({\n inputIsHiddenAfterUpdate: false,\n focusedValue: null,\n focusedOption: focusableOptions[openAtIndex]\n }, function () {\n return _this2.onMenuOpen();\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$state3 = this.state,\n selectValue = _this$state3.selectValue,\n focusedValue = _this$state3.focusedValue; // Only multiselects support value focusing\n\n if (!this.props.isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n this.setState({\n inputIsHidden: nextFocus !== -1,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var focusedOption = this.state.focusedOption;\n var options = this.getFocusableOptions();\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n }\n }, {\n key: \"getTheme\",\n value: // ==============================\n // Getters\n // ==============================\n function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\n } // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _objectSpread2(_objectSpread2({}, defaultTheme), this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n cx = this.cx,\n getStyles = this.getStyles,\n getValue = this.getValue,\n selectOption = this.selectOption,\n setValue = this.setValue,\n props = this.props;\n var isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var hasValue = this.hasValue();\n return {\n clearValue: clearValue,\n cx: cx,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n selectProps: props,\n setValue: setValue,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.getFocusableOptions().length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props7 = this.props,\n isClearable = _this$props7.isClearable,\n isMulti = _this$props7.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled(option, selectValue) {\n return _isOptionDisabled(this.props, option, selectValue);\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n return _isOptionSelected(this.props, option, selectValue);\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return _filterOption(this.props, option, inputValue);\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: \"startListeningComposition\",\n value: // ==============================\n // Composition Handlers\n // ==============================\n function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n value: // ==============================\n // Touch Handlers\n // ==============================\n function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"renderInput\",\n value: // ==============================\n // Renderers\n // ==============================\n function renderInput() {\n var _this$props8 = this.props,\n isDisabled = _this$props8.isDisabled,\n isSearchable = _this$props8.isSearchable,\n inputId = _this$props8.inputId,\n inputValue = _this$props8.inputValue,\n tabIndex = _this$props8.tabIndex,\n form = _this$props8.form;\n\n var _this$getComponents = this.getComponents(),\n Input = _this$getComponents.Input;\n\n var inputIsHidden = this.state.inputIsHidden;\n var commonProps = this.commonProps;\n var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return /*#__PURE__*/React.createElement(DummyInput, _extends({\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n form: form,\n value: \"\"\n }, ariaAttributes));\n }\n\n return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, {\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n form: form,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this3 = this;\n\n var _this$getComponents2 = this.getComponents(),\n MultiValue = _this$getComponents2.MultiValue,\n MultiValueContainer = _this$getComponents2.MultiValueContainer,\n MultiValueLabel = _this$getComponents2.MultiValueLabel,\n MultiValueRemove = _this$getComponents2.MultiValueRemove,\n SingleValue = _this$getComponents2.SingleValue,\n Placeholder = _this$getComponents2.Placeholder;\n\n var commonProps = this.commonProps;\n var _this$props9 = this.props,\n controlShouldRenderValue = _this$props9.controlShouldRenderValue,\n isDisabled = _this$props9.isDisabled,\n isMulti = _this$props9.isMulti,\n inputValue = _this$props9.inputValue,\n placeholder = _this$props9.placeholder;\n var _this$state4 = this.state,\n selectValue = _this$state4.selectValue,\n focusedValue = _this$state4.focusedValue,\n isFocused = _this$state4.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt, index) {\n var isOptionFocused = opt === focusedValue;\n return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: \"\".concat(_this3.getOptionValue(opt)).concat(index),\n index: index,\n removeProps: {\n onClick: function onClick() {\n return _this3.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this3.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }), _this3.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var _this$getComponents3 = this.getComponents(),\n ClearIndicator = _this$getComponents3.ClearIndicator;\n\n var commonProps = this.commonProps;\n var _this$props10 = this.props,\n isDisabled = _this$props10.isDisabled,\n isLoading = _this$props10.isLoading;\n var isFocused = this.state.isFocused;\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var _this$getComponents4 = this.getComponents(),\n LoadingIndicator = _this$getComponents4.LoadingIndicator;\n\n var commonProps = this.commonProps;\n var _this$props11 = this.props,\n isDisabled = _this$props11.isDisabled,\n isLoading = _this$props11.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$getComponents5 = this.getComponents(),\n DropdownIndicator = _this$getComponents5.DropdownIndicator,\n IndicatorSeparator = _this$getComponents5.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var _this$getComponents6 = this.getComponents(),\n DropdownIndicator = _this$getComponents6.DropdownIndicator;\n\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this4 = this;\n\n var _this$getComponents7 = this.getComponents(),\n Group = _this$getComponents7.Group,\n GroupHeading = _this$getComponents7.GroupHeading,\n Menu = _this$getComponents7.Menu,\n MenuList = _this$getComponents7.MenuList,\n MenuPortal = _this$getComponents7.MenuPortal,\n LoadingMessage = _this$getComponents7.LoadingMessage,\n NoOptionsMessage = _this$getComponents7.NoOptionsMessage,\n Option = _this$getComponents7.Option;\n\n var commonProps = this.commonProps;\n var focusedOption = this.state.focusedOption;\n var _this$props12 = this.props,\n captureMenuScroll = _this$props12.captureMenuScroll,\n inputValue = _this$props12.inputValue,\n isLoading = _this$props12.isLoading,\n loadingMessage = _this$props12.loadingMessage,\n minMenuHeight = _this$props12.minMenuHeight,\n maxMenuHeight = _this$props12.maxMenuHeight,\n menuIsOpen = _this$props12.menuIsOpen,\n menuPlacement = _this$props12.menuPlacement,\n menuPosition = _this$props12.menuPosition,\n menuPortalTarget = _this$props12.menuPortalTarget,\n menuShouldBlockScroll = _this$props12.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView,\n noOptionsMessage = _this$props12.noOptionsMessage,\n onMenuScrollToTop = _this$props12.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props12.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n var render = function render(props, id) {\n var type = props.type,\n data = props.data,\n isDisabled = props.isDisabled,\n isSelected = props.isSelected,\n label = props.label,\n value = props.value;\n var isFocused = focusedOption === data;\n var onHover = isDisabled ? undefined : function () {\n return _this4.onOptionHover(data);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this4.selectOption(data);\n };\n var optionId = \"\".concat(_this4.getElementId('option'), \"-\").concat(id);\n var innerProps = {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1\n };\n return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, {\n innerProps: innerProps,\n data: data,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: type,\n value: value,\n isFocused: isFocused,\n innerRef: isFocused ? _this4.getFocusedOptionRef : undefined\n }), _this4.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = this.getCategorizedOptions().map(function (item) {\n if (item.type === 'group') {\n var data = item.data,\n options = item.options,\n groupIndex = item.index;\n var groupId = \"\".concat(_this4.getElementId('group'), \"-\").concat(groupIndex);\n var headingId = \"\".concat(groupId, \"-heading\");\n return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, {\n key: groupId,\n data: data,\n options: options,\n Heading: GroupHeading,\n headingProps: {\n id: headingId,\n data: item.data\n },\n label: _this4.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option, \"\".concat(groupIndex, \"-\").concat(option.index));\n }));\n } else if (item.type === 'option') {\n return render(item, \"\".concat(item.index));\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) {\n var ref = _ref4.ref,\n _ref4$placerProps = _ref4.placerProps,\n placement = _ref4$placerProps.placement,\n maxHeight = _ref4$placerProps.maxHeight;\n return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this4.onMenuMouseDown,\n onMouseMove: _this4.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), /*#__PURE__*/React.createElement(ScrollManager, {\n captureEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom,\n lockEnabled: menuShouldBlockScroll\n }, function (scrollTargetRef) {\n return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, {\n innerRef: function innerRef(instance) {\n _this4.getMenuListRef(instance);\n\n scrollTargetRef(instance);\n },\n isLoading: isLoading,\n maxHeight: maxHeight,\n focusedOption: focusedOption\n }), menuUI);\n }));\n }); // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n\n return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this5 = this;\n\n var _this$props13 = this.props,\n delimiter = _this$props13.delimiter,\n isDisabled = _this$props13.isDisabled,\n isMulti = _this$props13.isMulti,\n name = _this$props13.name;\n var selectValue = this.state.selectValue;\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this5.getOptionValue(opt);\n }).join(delimiter);\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this5.getOptionValue(opt)\n });\n }) : /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return /*#__PURE__*/React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return /*#__PURE__*/React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n var commonProps = this.commonProps;\n var _this$state5 = this.state,\n ariaSelection = _this$state5.ariaSelection,\n focusedOption = _this$state5.focusedOption,\n focusedValue = _this$state5.focusedValue,\n isFocused = _this$state5.isFocused,\n selectValue = _this$state5.selectValue;\n var focusableOptions = this.getFocusableOptions();\n return /*#__PURE__*/React.createElement(LiveRegion, _extends({}, commonProps, {\n ariaSelection: ariaSelection,\n focusedOption: focusedOption,\n focusedValue: focusedValue,\n isFocused: isFocused,\n selectValue: selectValue,\n focusableOptions: focusableOptions\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$getComponents8 = this.getComponents(),\n Control = _this$getComponents8.Control,\n IndicatorsContainer = _this$getComponents8.IndicatorsContainer,\n SelectContainer = _this$getComponents8.SelectContainer,\n ValueContainer = _this$getComponents8.ValueContainer;\n\n var _this$props14 = this.props,\n className = _this$props14.className,\n id = _this$props14.id,\n isDisabled = _this$props14.isDisabled,\n menuIsOpen = _this$props14.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var prevProps = state.prevProps,\n clearFocusValueOnUpdate = state.clearFocusValueOnUpdate,\n inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate;\n var options = props.options,\n value = props.value,\n menuIsOpen = props.menuIsOpen,\n inputValue = props.inputValue;\n var newMenuOptionsState = {};\n\n if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) {\n var selectValue = cleanValue(value);\n var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : [];\n var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null;\n var focusedOption = getNextFocusedOption(state, focusableOptions);\n newMenuOptionsState = {\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue,\n clearFocusValueOnUpdate: false\n };\n } // some updates should toggle the state of the input visibility\n\n\n var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? {\n inputIsHidden: inputIsHiddenAfterUpdate,\n inputIsHiddenAfterUpdate: undefined\n } : {};\n return _objectSpread2(_objectSpread2(_objectSpread2({}, newMenuOptionsState), newInputIsHiddenState), {}, {\n prevProps: props\n });\n }\n }]);\n\n return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\nexport { Select as S, getOptionLabel as a, defaultProps as b, createFilter as c, defaultTheme as d, getOptionValue as g, mergeStyles as m };","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { _ as _createSuper } from './index-4bd03571.esm.js';\nimport React, { Component } from 'react';\nvar defaultProps = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(StateManager, _Component);\n\n var _super = _createSuper(StateManager);\n\n function StateManager() {\n var _this;\n\n _classCallCheck(this, StateManager);\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 = _super.call.apply(_super, [this].concat(args));\n _this.select = void 0;\n _this.state = {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n };\n\n _this.onChange = function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n };\n\n _this.onInputChange = function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n };\n\n _this.onMenuOpen = function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n };\n\n _this.onMenuClose = function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n };\n\n return _this;\n }\n\n _createClass(StateManager, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"getProp\",\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"callProp\",\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props;\n _this$props2.defaultInputValue;\n _this$props2.defaultMenuIsOpen;\n _this$props2.defaultValue;\n\n var props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexport { manageState as m };","import { S as Select } from './Select-dbb12e54.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-dbb12e54.esm.js';\nimport { m as manageState } from './stateManager-845a3300.esm.js';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport { _ as _createSuper } from './index-4bd03571.esm.js';\nexport { c as components } from './index-4bd03571.esm.js';\nimport React, { Component } from 'react';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport memoizeOne from 'memoize-one';\nimport '@babel/runtime/helpers/extends';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/typeof';\nimport 'react-input-autosize';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\n\nvar NonceProvider = /*#__PURE__*/function (_Component) {\n _inherits(NonceProvider, _Component);\n\n var _super = _createSuper(NonceProvider);\n\n function NonceProvider(props) {\n var _this;\n\n _classCallCheck(this, NonceProvider);\n\n _this = _super.call(this, props);\n\n _this.createEmotionCache = function (nonce, key) {\n return createCache({\n nonce: nonce,\n key: key\n });\n };\n\n _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n return _this;\n }\n\n _createClass(NonceProvider, [{\n key: \"render\",\n value: function render() {\n var emotionCache = this.createEmotionCache(this.props.nonce, this.props.cacheKey);\n return /*#__PURE__*/React.createElement(CacheProvider, {\n value: emotionCache\n }, this.props.children);\n }\n }]);\n\n return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\nexport default index;\nexport { NonceProvider };","import React from \"react\";\nimport Select from \"react-select\";\nimport styled from \"styled-components\";\nimport {colors, fontSizesPx, fonts} from \"../models\";\n\nconst OPTION_MIN_WIDTH = 70;\nconst Container = styled.div`\n min-width: ${OPTION_MIN_WIDTH * 2}px;\n`;\n\nconst customStyles = {\n control: () => ({\n display: \"flex\",\n alignItems: \"center\",\n backgroundColor: \"white\",\n border: \"none\",\n borderBottom: `1px solid ${colors.grayDark2}`,\n borderRadius: \"none\",\n cursor: \"pointer\",\n minHeight: \"25px\",\n \"&:hover\": {\n boxShadow: \"none\",\n },\n }),\n singleValue: () => ({\n fontFamily: fonts.condensedFont,\n fontSize: fontSizesPx.micro,\n textOverflow: \"initial\",\n whiteSpace: \"nowrap\",\n padding: \"0\",\n border: \"none\",\n \"& > div\": {\n display: \"flex\",\n },\n p: {\n margin: \"0\",\n padding: \"0\",\n \"&:first-child\": {\n marginRight: \"5px\",\n },\n },\n span: {\n color: colors.redDFL,\n },\n }),\n indicatorSeparator: () => {\n // leave empty as per doc to hide the separator\n },\n dropdownIndicator: () => ({\n color: colors.black,\n \"& svg\": {width: \"14px\"},\n }),\n option: (styles, {isDisabled, isFocused, isSelected}) => {\n return {\n ...styles,\n padding: \"5px 10px!important\",\n fontFamily: fonts.condensedFont,\n fontSize: fontSizesPx.micro,\n color: colors.black,\n borderRadius: \"none\",\n borderBottom: `1px solid ${colors.grayDark2}`,\n backgroundColor: isSelected || isFocused ? colors.grayUltraLight : \"none\",\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n \"&:last-child\": {\n borderBottom: \"none\",\n },\n \":active\": {\n ...styles[\":active\"],\n backgroundColor: !isDisabled && (isSelected ? colors.grayLight : \"none\"),\n },\n \"& > div\": {\n display: \"flex\",\n },\n p: {\n margin: \"0\",\n padding: \"0\",\n \"&:first-child\": {\n minWidth: `${OPTION_MIN_WIDTH}px`,\n },\n },\n span: {\n color: colors.redDFL,\n },\n };\n },\n menu: styles => ({\n ...styles,\n fontSize: fontSizesPx.micro,\n borderRadius: \"none\",\n boxShadow: \"none\",\n border: `1px solid ${colors.grayDark2}`,\n }),\n menuList: styles => ({\n ...styles,\n maxHeight: \"205px\",\n }),\n placeholder: () => ({\n fontSize: fontSizesPx.micro,\n }),\n};\ninterface SelectProps {\n className?: string;\n defaultValue: any;\n onHandleChange: () => void;\n options: any;\n}\n\nconst CustomSelect = (props: SelectProps) => {\n const {className, options, onHandleChange, defaultValue} = props;\n\n return (\n \n \n \n );\n};\n\nexport default CustomSelect;\n","import { createElement, Component } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n/**\n* Check whether some DOM node is our Component's node.\n*/\n\n\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n // Also cover shadowRoot node by checking current.host\n\n\n while (current.parentNode || current.host) {\n // Only check normal node without shadowRoot\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode || current.host;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n} // ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\n\n\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = null;\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions = {\n passive: !instance.props.preventDefault\n };\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n\n\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n }\n /**\n * Remove all document's event listeners for this component\n */\n ;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n }\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n ;\n /**\n * Pass-through render\n */\n\n\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n\n var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}\n\nexport default onClickOutsideHOC;\nexport { IGNORE_CLASS_NAME };","/**\n * A custom dropdown component with typesafe options\n *\n */\n\nimport * as React from \"react\";\nimport onClickOutside from \"react-onclickoutside\";\nimport styled from \"styled-components\";\nimport {Caret} from \"../components\";\nimport {condensedMicroRegular, px, colors, zIndices, elementSizes, condensedMicroBold, RowDiv} from \"../models\";\n\nconst DropdownWrapper = styled(RowDiv)`\n position: relative;\n width: 100%;\n z-index: ${zIndices.zDropdown};\n box-sizing: border-box;\n`;\nconst Select = styled(RowDiv)`\n ${condensedMicroRegular};\n width: 100%;\n height: ${px(elementSizes.dropdownHeight)};\n background-color: ${colors.white};\n line-height: 1.25em;\n cursor: pointer;\n box-sizing: border-box;\n border-bottom: 1px solid ${colors.grayMedium};\n justify-content: space-between;\n`;\nconst Title = styled.div`\n ${condensedMicroBold};\n margin-right: 10px;\n`;\nconst CaretWrapper = styled.div`\n width: 8px;\n height: 8px;\n margin: 2px 0 0 4px;\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nconst Choice = styled(RowDiv)`\n ${condensedMicroRegular};\n width: 100%;\n padding: ${px(6)} ${px(8)};\n background-color: ${colors.white};\n line-height: 1.25em;\n cursor: pointer;\n box-sizing: border-box;\n border: 1px solid ${colors.grayMedium};\n margin-top: -1px;\n justify-content: space-between;\n\n &:hover {\n background-color: ${colors.grayUltraLight};\n }\n`;\ninterface ChoicesListProps {\n isCollapsed: boolean;\n}\nconst ChoicesList = styled.div`\n position: absolute;\n box-sizing: border-box;\n width: 100%;\n top: ${px(elementSizes.dropdownHeight + 7)};\n left: 0;\n opacity: ${(props: ChoicesListProps) => (props.isCollapsed ? 0 : 1)};\n pointer-events: ${(props: ChoicesListProps) => (props.isCollapsed ? \"none\" : \"all\")};\n max-height: 300px;\n overflow-y: auto;\n\n ${Choice} {\n :nth-child(1) {\n margin-top: 0;\n }\n }\n`;\n\ntype OptionValue = string | number;\ninterface Option {\n value: T;\n label: string;\n}\ninterface GenericSelectProps {\n options: [Option];\n value: Option;\n onChange: (value: T) => void;\n title: string;\n}\ninterface GenericSelectState {\n isCollapsed: boolean;\n}\nclass GenericSelect extends React.Component, GenericSelectState> {\n constructor(props: GenericSelectProps) {\n super(props);\n this.state = {\n isCollapsed: true,\n };\n this.toggleCollapsed = this.toggleCollapsed.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n render() {\n const {options, onChange, value, title} = this.props;\n return (\n \n \n\n \n {options.map((option, i) => (\n {\n onChange(option.value);\n this.toggleCollapsed();\n }}\n >\n {title}\n {option.label}\n \n ))}\n \n \n );\n }\n\n handleClickOutside() {\n if (!this.state.isCollapsed) {\n this.setState({\n isCollapsed: true,\n });\n }\n }\n toggleCollapsed() {\n this.setState({\n isCollapsed: !this.state.isCollapsed,\n });\n }\n}\n\nexport default onClickOutside(GenericSelect);\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Caret} from \"../components\";\nimport {colors, smallBold, ButtonProps, CenteredDiv} from \"../models\";\n\nconst CTA = styled.a`\n ${smallBold};\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 50px;\n text-decoration: none;\n background-color: ${colors.white};\n color: ${colors.redDFL};\n border: 2px solid ${colors.redDFL};\n box-sizing: border-box;\n text-transform: uppercase;\n\n &:hover {\n background-color: ${colors.redDFL};\n color: ${colors.white};\n }\n`;\n\nconst CaretWrapper = styled(CenteredDiv)`\n position: absolute;\n width: 16px;\n height: 16px;\n top: 16px;\n right: 10px;\n transform: rotate(-90deg);\n`;\n\ninterface CtaState {\n hovered: boolean;\n}\nclass CTAComp extends React.Component {\n constructor(props: ButtonProps) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n render() {\n const {link, label} = this.props;\n\n return (\n this.setState({hovered: true})}\n onMouseLeave={() => this.setState({hovered: false})}\n >\n {label}\n \n \n \n \n );\n }\n}\n\nexport default CTAComp;\n","/**\n * Image component that shows a placeholder of the same dimensions until\n * has finished loading.\n * \n */\n\nimport React from \"react\";\n\ninterface ImageWithSpinnerProps {\n imageUrl: string;\n width: number;\n height: number;\n}\ninterface ImageWithSpinnerState {\n imageStatus: \"loading\" | \"loaded\" | \"failed to load\";\n}\nclass ImageWithSpinner extends React.Component {\n constructor(props: ImageWithSpinnerProps) {\n super(props);\n this.state = { imageStatus: \"loading\" };\n\n this.handleImageLoaded = this.handleImageLoaded.bind(this);\n this.handleImageErrored = this.handleImageErrored.bind(this);\n }\n\n handleImageLoaded() {\n this.setState({ imageStatus: \"loaded\" });\n }\n\n handleImageErrored() {\n this.setState({ imageStatus: \"failed to load\" });\n }\n\n render() {\n return (\n \n

\n
\n
\n );\n }\n}\nexport default ImageWithSpinner;\n\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {connect} from \"react-redux\";\nimport {AppState} from \"../../store\";\nimport {colors} from \"../../models\";\n\ninterface PropsFromState {\n screenWidth: number;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => {\n return {\n screenWidth: state.system.screenWidth,\n };\n};\n\nconst Wrapper = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n background-color: ${colors.black};\n z-index: 1;\n`;\n\ninterface MainStageVideoProps {\n useVerticalVideo: boolean;\n}\nconst MainStageVideo = styled.video`\n display: block;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n z-index: 1;\n\n /* depending on either using vertical or horizontal video, make the video fit the container */\n ${(props: MainStageVideoProps) => {\n return props.useVerticalVideo\n ? `\n @media screen and (max-aspect-ratio: 9/16) {\n height: 100%;\n }\n @media screen and (min-aspect-ratio: 9/16) {\n width: 100%;\n }\n `\n : `\n @media screen and (max-aspect-ratio: 16/9) { /* taller than 16:9 */\n height: 100%;\n }\n @media screen and (min-aspect-ratio: 16/9) { /* 16:9 or flatter */\n width: 100%;\n }\n `;\n }}\n`;\n\ninterface MainstageVideoCompProps extends PropsFromState {\n srcHorizontal: string;\n srcVertical: string;\n}\nconst mainstageVideoComp = (props: MainstageVideoCompProps) => {\n const {srcHorizontal, srcVertical, screenWidth} = props;\n const useVerticalVideo = screenWidth < 480;\n\n return (\n \n {!useVerticalVideo && (\n \n \n \n )}\n {useVerticalVideo && (\n \n \n \n )}\n \n );\n};\n\nexport default connect(mapStateToProps)(mainstageVideoComp);\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Caret} from \"../../components\";\nimport {\n colors,\n zIndices,\n mediumBold,\n ProductCategory,\n px,\n baseBold,\n componentBreakpoints,\n CenteredDiv,\n macroRegular,\n smallRegular,\n} from \"../../models\";\n\nconst Title = styled.div`\n ${baseBold};\n font-size: 18px;\n color: ${colors.white};\n text-transform: uppercase;\n line-height: 1.1em;\n margin-bottom: 7px;\n position: relative;\n z-index: ${zIndices.zTileText};\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.categoryList)}) {\n ${mediumBold};\n color: ${colors.white};\n margin-bottom: 10px;\n line-height: 1.1em;\n }\n`;\nconst Text = styled.div`\n ${macroRegular};\n font-size: 11px;\n line-height: 1.3em;\n color: ${colors.white};\n position: relative;\n z-index: ${zIndices.zTileText};\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.categoryList)}) {\n ${smallRegular};\n color: ${colors.white};\n line-height: 1.3em;\n }\n`;\n\nconst CaretIcon = styled(CenteredDiv)`\n background-color: ${colors.whiteAlpha60};\n width: 22px;\n height: 22px;\n position: absolute;\n right: 5px;\n bottom: 5px;\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.categoryList)}) {\n width: 30px;\n height: 30px;\n }\n`;\nconst CaretWrapper = styled.div`\n width: 10px;\n height: 10px;\n transform: rotate(-90deg);\n margin-left: -12px;\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.categoryList)}) {\n width: 16px;\n height: 16px;\n margin-left: 0;\n }\n`;\n\ninterface TileProps {\n color: string;\n image?: string;\n}\nconst Tile = styled.div`\n width: 100%;\n height: 100%;\n padding: 10px 20px 15px 10px;\n box-sizing: border-box;\n background-color: ${(props: TileProps) => props.color};\n background-image: ${(props: TileProps) => (props.image ? `url(${props.image})` : \"none\")};\n background-size: cover;\n position: relative;\n\n &:hover {\n ${Title} {\n text-decoration: underline;\n }\n }\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.categoryList)}) {\n padding: 30px 20px;\n }\n`;\nconst TileOverlay = styled.div`\n width: 100%;\n height: 50%;\n background: rgb(0, 132, 255);\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 100%);\n position: absolute;\n left: 0;\n top: 0;\n z-index: ${zIndices.zTileOverlay};\n`;\n\ninterface CategoryTileProps extends ProductCategory {\n isMobileNav?: boolean;\n}\nconst CategoryTile = (props: CategoryTileProps) => {\n const {title, description, color, image, isMobileNav} = props;\n return (\n \n {image && }\n {title}\n {!isMobileNav && {description}}\n \n \n \n \n \n \n );\n};\n\nexport default CategoryTile;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Link} from \"gatsby\";\nimport CategoryTile from \"./categoryTile\";\nimport {trackSubNavClick, SubNavType} from \"../../util/tracking\";\n\nimport {\n ProductCategory,\n px,\n componentBreakpoints,\n NavigationOverlayStateType,\n navigationOverlayStates,\n} from \"../../models\";\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n flex-direction: row;\n display: none;\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.categoryList)}) {\n display: flex;\n }\n`;\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 100%;\n`;\nconst Column = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n`;\n\nconst Cell = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n`;\n\nconst CategoryLink = styled(props => )`\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n padding: 4px;\n`;\n\ninterface CloseOverlayLinkProps {\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => void;\n category: ProductCategory;\n}\nconst CloseOverlayLink = (props: CloseOverlayLinkProps) => (\n {\n trackSubNavClick({type: SubNavType.Product, label: props.category.title, isMobile: false});\n props.updateNavigationOverlay(navigationOverlayStates.default);\n }}\n >\n \n \n);\n\ninterface DesktopViewProps {\n live: ProductCategory[];\n digital: ProductCategory[];\n other: ProductCategory[];\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => void;\n}\nconst DesktopView = (props: DesktopViewProps) => {\n const {live, digital, other, updateNavigationOverlay} = props;\n\n return (\n \n \n {/* live */}\n \n \n
\n \n \n \n | \n \n \n | \n
\n \n\n \n \n {/* digital */}\n \n \n | \n\n {/* other 1 */}\n \n \n | \n \n\n \n \n \n | \n \n \n | \n \n \n | \n \n
\n \n );\n};\n\nexport default DesktopView;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Link} from \"gatsby\";\nimport CategoryTile from \"./categoryTile\";\nimport {trackSubNavClick, SubNavType} from \"../../util/tracking\";\n\nimport {\n ProductCategory,\n px,\n breakpoints,\n RowDiv,\n ColumnDiv,\n baseBold,\n NavigationOverlayStateType,\n navigationOverlayStates,\n} from \"../../models\";\n\nconst MobileNavWrapper = styled(ColumnDiv)`\n position: relative;\n width: 100%;\n height: 100%;\n\n box-sizing: border-box;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n display: none;\n }\n`;\n\nconst Row = styled(RowDiv)`\n width: 100%;\n height: 100%;\n`;\n\nconst CategoryLink = styled(props => )`\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n padding: 4px;\n`;\n\nconst Headline = styled.div`\n ${baseBold};\n width: 100%;\n font-size: 18px;\n margin-bottom: 50px;\n text-transform: uppercase;\n text-align: center;\n`;\n\nconst Cell = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n`;\n\ninterface CloseOverlayLinkProps {\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => void;\n category: ProductCategory;\n isMobileNav?: boolean;\n}\nconst CloseOverlayLink = (props: CloseOverlayLinkProps) => (\n {\n trackSubNavClick({type: SubNavType.Product, label: props.category.title, isMobile: true});\n props.updateNavigationOverlay(navigationOverlayStates.default);\n }}\n >\n \n \n);\n\ninterface MobileViewProps {\n live: ProductCategory[];\n digital: ProductCategory[];\n other: ProductCategory[];\n isMobileNav?: boolean;\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => void;\n}\nconst MobileView = (props: MobileViewProps) => {\n const {live, digital, other, isMobileNav, updateNavigationOverlay} = props;\n\n return (\n \n {/* CategoryList in mobile navigation overlay */}\n {isMobileNav && (\n
\n {/* first row: Live Match */}\n \n \n \n | \n \n \n | \n
\n\n {/* second row: Match Highlights + Match Interviews */}\n \n \n \n | \n \n \n | \n
\n\n \n \n \n | \n \n \n | \n
\n\n \n \n \n | \n \n \n | \n
\n \n )}\n\n {/* CategoryList on mobile landing page */}\n {!isMobileNav && (\n
\n Bundesliga Products\n \n {/* first row: Live Match */}\n \n \n \n \n
\n\n {/* second row: Match Highlights + Match Interviews */}\n \n \n \n | \n \n \n | \n
\n\n \n \n \n \n | \n \n\n \n \n \n \n | \n \n \n \n \n | \n \n \n
\n\n \n \n \n | \n \n \n | \n
\n
\n \n )}\n
\n );\n};\n\nexport default MobileView;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {connect} from \"react-redux\";\nimport {Dispatch} from \"redux\";\nimport DesktopView from \"./DesktopView\";\nimport MobileView from \"./MobileView\";\n// import NavDropdownView from \"./NavDropdownView\"; // TODO: vllt doch genutzt\nimport {ProductCategory, px, breakpoints, NavigationOverlayStateType} from \"../../models\";\nimport {updateNavigationOverlayAction} from \"../../store/system/actions\";\n\n// COMPONENT PROPERTIES\n// interface PropsFromState {}\n// const mapStateToProps = (state: AppState): PropsFromState => {\n// return {};\n// };\n\ninterface PropsFromDispatch {\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => {\n return dispatch(updateNavigationOverlayAction(newState));\n },\n };\n};\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n }\n`;\n\ninterface CategoryListCompProps extends PropsFromDispatch {\n live: ProductCategory[];\n digital: ProductCategory[];\n other: ProductCategory[];\n isMobileNav?: boolean;\n}\nconst CategoryListComp = (props: CategoryListCompProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default connect(\n null,\n mapDispatchToProps,\n)(CategoryListComp);\n// export default CategoryListComp;\n","import React from \"react\";\nimport {graphql, useStaticQuery} from \"gatsby\";\nimport {CategoryList} from \"../../components\";\nimport {wpPageNodeToCategory} from \"../../util/util\";\nimport {WPPageNodeProps, categoryClasses, wordpressPageIds} from \"../../models\";\n\ninterface QueryProps {\n allWpPage?: {\n edges: WPPageNodeProps[];\n };\n}\ninterface CategoryListWithQueryProps {\n isMobileNav?: boolean;\n}\n\nconst CategoryListWithQueryComp = (props: CategoryListWithQueryProps) => {\n const query: QueryProps = useStaticQuery(\n graphql`\n query {\n allWpPage {\n edges {\n node {\n databaseId\n slug\n category {\n categoryclass\n name\n description\n image {\n sourceUrl\n }\n }\n }\n }\n }\n }\n `,\n );\n\n const productPages = query.allWpPage.edges.filter(page => {\n return (\n page.node.databaseId === wordpressPageIds.bundesligaMatches ||\n page.node.databaseId === wordpressPageIds.matchInterviews ||\n page.node.databaseId === wordpressPageIds.matchHighlights ||\n page.node.databaseId === wordpressPageIds.digitalContent ||\n page.node.databaseId === wordpressPageIds.promoTrailerContent ||\n page.node.databaseId === wordpressPageIds.seasonalContent ||\n page.node.databaseId === wordpressPageIds.monthlyContent ||\n page.node.databaseId === wordpressPageIds.weeklyContent\n );\n });\n const matchdayCategories = productPages.filter(edge => edge.node.category.categoryclass === categoryClasses.matchday);\n const promotionCategories = productPages.filter(edge => edge.node.category.categoryclass === categoryClasses.promotion);\n const storytellingCategories = productPages.filter(\n edge => edge.node.category.categoryclass === categoryClasses.storytelling,\n );\n\n return (\n wpPageNodeToCategory(category))}\n digital={promotionCategories.map(category => wpPageNodeToCategory(category))}\n other={storytellingCategories.map(category => wpPageNodeToCategory(category))}\n isMobileNav={props.isMobileNav}\n />\n );\n};\n\nexport default CategoryListWithQueryComp;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport {px, stage, breakpoints, mobilePaddings} from \"../../models\";\nimport {createMarkup} from \"../../util/util\";\n\nimport {mediumBold, mediumLight} from \"../../models/style-constants\";\n\n\nconst MessageWrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 0 ${px(mobilePaddings.mobile)};\n box-sizing: border-box;\n\n margin-top: 60px;\n margin-bottom: 20px;\n\n * {\n ${mediumLight};\n font-size: 25px;\n line-height: 1.5em;\n font-style: normal !important;\n text-decoration: none !important;\n }\n strong {\n ${mediumBold};\n font-size: 25px;\n line-height: 1.5em;\n }\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n padding: 0 ${px(mobilePaddings.tablet)};\n margin-top: 0;\n margin-bottom: 0;\n\n * {\n font-size: 40px;\n line-height: 1.8em;\n font-style: normal !important;\n text-decoration: none !important;\n }\n strong {\n font-size: 40px;\n line-height: 1.8em;\n }\n }\n`;\n\nconst Message = styled.div`\n width: ${px(stage.innerWidth)};\n`;\n\ninterface USPMessageCompProps {\n message: string;\n}\nconst USPMessageComp = (props: USPMessageCompProps) => {\n const { message } = props;\n return (\n \n \n \n );\n};\n\nexport default USPMessageComp;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {Link} from \"gatsby\";\nimport {ColorType, px, scheduleSizes, condensedMacroBold, condensedSmallBold, condensedSmallRegular} from \"../../../models\";\n\ninterface RegularCellProps {\n collapsed: boolean;\n backgroundColor: ColorType;\n opacity?: number;\n}\nexport const RegularCell = styled.td`\n width: ${(props: RegularCellProps) => props.collapsed ? px(scheduleSizes.collapsedColumnWidth) : \"initial\"};\n transition: width 0.5s, opacity 0.25s, color 0.5s;\n border: 1px solid white;\n box-sizing: border-box;\n vertical-align: top;\n text-align: left;\n background-color: ${(props: RegularCellProps) => props.backgroundColor};\n opacity: ${(props: RegularCellProps) => (props.opacity ? props.opacity : 1)};\n overflow: hidden;\n`;\n\nexport const CategoryAggregationCell = styled.td`\n width: ${px(scheduleSizes.categoryAggregationLabelColumn)};\n position: relative;\n padding: 0;\n`;\n\ninterface CategoryCellProps {\n color: ColorType;\n borderColor: ColorType;\n}\nexport const CategoryCell = styled.td`\n ${condensedMacroBold};\n text-transform: uppercase;\n width: ${px(scheduleSizes.categoryLabelColumn)};\n vertical-align: top;\n text-align: left;\n color: ${(props: CategoryCellProps) => props.color};\n border-left: 2px solid ${(props: CategoryCellProps) => props.borderColor};\n padding: 0 ${px(scheduleSizes.categoryLabelPadding)};\n box-sizing: content-box;\n`;\n\nexport const VerticalWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\nexport const VerticalRegular = styled.div`\n ${condensedSmallRegular};\n text-transform: uppercase;\n`;\nexport const VerticalBold = styled.div`\n ${condensedSmallBold};\n text-transform: uppercase;\n white-space: nowrap;\n`;\n\nexport const FlippedTextContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n transform-origin: 0% 0%;\n transform: rotate(-90deg);\n`;\nexport const FlippedTextInner = styled.div`\n position: absolute;\n right: 0;\n`;\n\nexport const ContentTable = styled.table`\n width: 100%;\n height: 100%;\n border-spacing: 0;\n table-layout: fixed;\n`;\n\nexport const BroadcastEntryLink = styled(props => )`\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n`;\n","import {\n UPDATE_ACTIVE_MATCHDAYS,\n UPDATE_ACTIVE_SYNERGIES,\n UPDATE_HOVERED_DAY,\n UPDATE_UTC_TIME_OFFSET,\n UPDATE_SELECTED_VIEW,\n ScheduleActionTypes,\n} from \"./types\";\nimport {BroadcastProductType, UTCTimeStateType, ScheduleViewType} from \"../../models\";\n\nexport const updateActiveMatchdaysAction = (newMatchdays: [number, number]): ScheduleActionTypes => {\n return {\n type: UPDATE_ACTIVE_MATCHDAYS,\n payload: newMatchdays,\n };\n};\n\nexport const updateActiveSynergiesAction = (newSynergies: BroadcastProductType[]): ScheduleActionTypes => {\n return {\n type: UPDATE_ACTIVE_SYNERGIES,\n payload: newSynergies,\n };\n};\n\nexport const updateHoveredDayAction = (newDayIndex: number): ScheduleActionTypes => {\n return {\n type: UPDATE_HOVERED_DAY,\n payload: newDayIndex,\n };\n};\n\nexport const updateUTCTimeOffsetAction = (newTimeOffset: UTCTimeStateType): ScheduleActionTypes => {\n return {\n type: UPDATE_UTC_TIME_OFFSET,\n payload: newTimeOffset,\n };\n};\n\nexport const updateSelectedViewAction = (newView: ScheduleViewType): ScheduleActionTypes => {\n return {\n type: UPDATE_SELECTED_VIEW,\n payload: newView,\n };\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\nimport {\n RegularCell,\n CategoryAggregationCell,\n CategoryCell,\n BroadcastEntryLink,\n FlippedTextContainer,\n FlippedTextInner,\n} from \"../styled\";\nimport {Clock} from \"../../..\";\nimport {\n WeekDayType,\n condensedSmallBold,\n broadcastSynergyGroups,\n BroadcastProductType,\n ScheduleCategoryContentProps,\n UTCTimeStateType,\n utcTimeStates,\n DFL_UTC_OFFSET,\n timings,\n} from \"../../../../models\";\nimport {AppState} from \"../../../../store\";\nimport {updateActiveSynergiesAction, updateHoveredDayAction} from \"../../../../store/schedule/actions\";\nimport {createBroadcastDate, displayBroadcastTimeByLocalTimezoneOffset} from \"../../../../util/util\";\nimport {trackInternalLinkClick} from \"../../../../util/tracking\";\n\nconst TableRow = styled.tr``;\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n /* font-size: 13px; */\n`;\nconst CellInner = styled.div`\n width: 100%;\n height: 100%;\n padding-top: 8px;\n`;\nconst BroadcastEntry = styled(Row)`\n width: 100%;\n margin-bottom: 2px;\n`;\nconst LabelRow = styled(Row)`\n justify-content: space-between;\n align-items: flex-start;\n`;\nconst RowRight = styled(Row)`\n width: 220px;\n justify-content: space-between;\n`;\ninterface LabelProps {\n active: boolean;\n textColor: string;\n}\nconst Label = styled.div`\n ${condensedSmallBold};\n font-size: 13px;\n padding: 0;\n margin: 0;\n color: ${(props: LabelProps) => props.textColor};\n opacity: ${(props: LabelProps) => (props.active ? 1 : 0.3)};\n transition: opacity ${timings.hurried}ms;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n\n &:hover {\n text-decoration: underline;\n }\n`;\nconst SubLabel = styled(Label)`\n margin-left: 10px;\n`;\nconst TimeLabel = styled(Label)`\n width: 180px;\n justify-content: flex-start;\n\n &:hover {\n text-decoration: none;\n }\n`;\n\ninterface ClockWrapperProps {\n active: boolean;\n}\nconst ClockWrapper = styled.div`\n width: 15px;\n height: 15px;\n margin-right: 4px;\n opacity: ${(props: ClockWrapperProps) => (props.active ? 1 : 0.3)};\n transition: opacity ${timings.hurried}ms;\n`;\n\nconst SynergyDotWrapper = styled.div`\n width: 30px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n`;\n\ninterface SynergyDotProps {\n active: boolean;\n color: string;\n}\nconst SynergyDot = styled.div`\n width: 6px;\n height: 6px;\n border-radius: 3px;\n background-color: ${(props: SynergyDotProps) => props.color};\n opacity: ${(props: SynergyDotProps) => (props.active ? 1 : 0)};\n transition: opacity ${timings.hurried}ms;\n`;\n\ninterface PropsFromState {\n activeSynergies: BroadcastProductType[];\n hoveredDay: number;\n localUTCOffset: number;\n selectedUTCOffset: UTCTimeStateType;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n activeSynergies: state.schedule.activeBroadcastSynergies,\n hoveredDay: state.schedule.hoveredDay,\n localUTCOffset: state.system.utcOffset,\n selectedUTCOffset: state.schedule.selectedUTCTimeOffset,\n});\n\ninterface PropsFromDispatch {\n updateActiveSynergies: (newSynergies: BroadcastProductType[]) => void;\n updateHoveredDay: (newDayIndex: number) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n updateActiveSynergies: (newSynergies: BroadcastProductType[]) => {\n return dispatch(updateActiveSynergiesAction(newSynergies));\n },\n updateHoveredDay: (newDayIndex: number) => {\n return dispatch(updateHoveredDayAction(newDayIndex));\n },\n };\n};\ninterface MatchdayCategoryRowProps extends PropsFromState, PropsFromDispatch {\n isSpan: boolean;\n span?: number;\n spanContent?: JSX.Element;\n content: ScheduleCategoryContentProps;\n activeMatchDays: [WeekDayType, WeekDayType];\n}\nconst MatchdayCategoryRow = (props: MatchdayCategoryRowProps) => {\n const {\n isSpan,\n span,\n spanContent,\n content,\n activeMatchDays,\n activeSynergies,\n updateActiveSynergies,\n updateHoveredDay,\n hoveredDay,\n localUTCOffset,\n selectedUTCOffset,\n } = props;\n const {categoryName, backgroundColor, labelColor, textColor, days} = content;\n\n return (\n \n {isSpan && (\n \n \n {spanContent}\n \n \n )}\n \n {categoryName}\n \n {days.map((day, dayIndex) => {\n const isCollapsed = !activeMatchDays.includes(dayIndex);\n const isDayHovered = hoveredDay === dayIndex;\n\n return (\n \n \n {!isCollapsed &&\n day.broadcastGroups.map((broadCastGroup, entryIndex) => {\n // check if any one broadcast of group is in the synergyGroup\n let isBroadcastGroupInActiveSynergyGroup = false;\n for (const broadcast of broadCastGroup.broadcasts) {\n if (activeSynergies.includes(broadcast.id)) {\n isBroadcastGroupInActiveSynergyGroup = true;\n }\n }\n\n // day.weekDay\n\n const linkTo = `/product/${broadCastGroup.productLink}`;\n\n return (\n \n \n \n \n\n trackInternalLinkClick({name: broadCastGroup.label, link: linkTo})}\n >\n \n {/* */}\n {\n const synergyGroup = broadcastSynergyGroups.filter(group => {\n return group.includes(broadCastGroup.broadcasts[0].id);\n });\n if (synergyGroup.length > 0) {\n updateActiveSynergies(synergyGroup[0]);\n updateHoveredDay(dayIndex);\n }\n }}\n onMouseLeave={() => {\n updateActiveSynergies([]);\n updateHoveredDay(null);\n }}*/\n >\n \n \n {broadCastGroup.subLabel}\n \n
\n\n \n {broadCastGroup.broadcasts.map((broadcast, broadcastIndex) => {\n // for each broadcast in broadcast group\n const utcOffsetToUse =\n selectedUTCOffset === utcTimeStates.localTime ? localUTCOffset : DFL_UTC_OFFSET;\n\n const isBroadcastInActiveSynergyGroup = activeSynergies.includes(broadcast.id);\n const broadCastDate = broadcast.time ?\n broadcast.time.anyTime ? 'Any time' : displayBroadcastTimeByLocalTimezoneOffset(\n utcOffsetToUse,\n createBroadcastDate(\n broadcast.time.day,\n broadcast.time.hours,\n broadcast.time.minutes,\n ),\n day.weekDay,\n )\n : null;\n\n return (\n broadcast.time && (\n {\n const synergyGroup = broadcastSynergyGroups.filter(group => {\n return group.includes(broadcast.id);\n });\n if (synergyGroup.length > 0) {\n updateActiveSynergies(synergyGroup[0]);\n updateHoveredDay(dayIndex);\n }\n }}\n onMouseLeave={() => {\n updateActiveSynergies([]);\n updateHoveredDay(null);\n }}*/\n >\n \n \n \n \n {broadCastDate}\n
\n \n )\n );\n })}\n \n \n \n \n );\n })}\n \n \n );\n })}\n \n );\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(MatchdayCategoryRow);\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {RegularCell, CategoryAggregationCell, CategoryCell} from \"../styled\";\nimport {px, scheduleSizes, WeekDayType, colors, scheduleWeek, weekDayMap, condensedSmallBold} from \"../../../../models\";\n\nconst DayLabelRow = styled.tr`\n height: ${px(scheduleSizes.dayLabelRow)};\n`;\n\ninterface LabelCellProps {\n centered: boolean;\n}\nconst LabelCell = styled(RegularCell)`\n${condensedSmallBold};\n font-size: 13px;\n color: white;\n text-transform: uppercase;\n text-align: ${(props: LabelCellProps) => (props.centered ? \"center\" : \"left\")};\n padding-left: ${(props: LabelCellProps) => (props.centered ? 0 : px(15))};\n vertical-align: middle;\n`;\n\ninterface DayLabelRowCompProps {\n activeMatchDays: [WeekDayType, WeekDayType];\n}\nconst DayLabelRowComp = (props: DayLabelRowCompProps) => {\n const {activeMatchDays} = props;\n\n return (\n \n \n \n\n {scheduleWeek.map((day, dayIndex) => {\n const isDayCollapsed = !activeMatchDays.includes(dayIndex);\n return (\n \n {isDayCollapsed ? weekDayMap.get(day).shortName : weekDayMap.get(day).fullName}\n \n );\n })}\n \n );\n};\n\nexport default DayLabelRowComp;\n","import * as React from 'react';\nimport MatchdayCategoryRow from \"./matchdayCategoryRow\";\nimport DayLabelRow from \"./dayLabelRow\";\nimport styled from 'styled-components';\nimport {condensedSmallRegular, condensedSmallBold, ScheduleCategoryContentProps} from \"../../../../models\";\n\nconst ContentTable = styled.table`\n width: 100%;\n height: 100%;\n border-spacing: 0;\n table-layout: fixed;\n`;\nconst VerticalWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\nconst VerticalRegular = styled.div`\n ${condensedSmallRegular};\n text-transform: uppercase;\n`;\nconst VerticalBold = styled.div`\n ${condensedSmallBold};\n text-transform: uppercase;\n white-space: nowrap;\n`;\n\ninterface AroundMatchdaysProps {\n categories: ScheduleCategoryContentProps[];\n activeMatchDays: [number, number];\n}\nconst aroundMatchdaysComp = (props: AroundMatchdaysProps) => {\n const {categories, activeMatchDays} = props;\n return (\n \n \n {/* day labels */}\n \n\n {/* bundesliga 2 matches row */}\n \n Bundesliga\n Matchday\n \n }\n content={categories[0]}\n activeMatchDays={activeMatchDays}\n />\n\n {/* bundesliga matches row */}\n \n\n {/* match highlights row */}\n \n\n {/* match interviews row */}\n \n\n {/* digital content row */}\n \n Bundesliga\n Storytelling & Promotion\n \n }\n content={categories[4]}\n activeMatchDays={activeMatchDays}\n />\n\n {/* weekly content row */}\n \n\n {/* promo & trailer row */}\n \n \n \n );\n};\n\nexport default aroundMatchdaysComp;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\nimport {\n RegularCell,\n CategoryAggregationCell,\n CategoryCell,\n FlippedTextContainer,\n FlippedTextInner,\n BroadcastEntryLink,\n} from \"../styled\";\nimport {\n BroadcastProductType,\n UTCTimeStateType,\n ScheduleAroundSeasonContentProps,\n condensedMicroBold,\n condensedMicroRegular,\n ColumnDiv,\n RowDiv,\n ColorType,\n colors,\n} from \"../../../../models\";\nimport {AppState} from \"../../../../store\";\nimport {updateActiveSynergiesAction, updateHoveredDayAction} from \"../../../../store/schedule/actions\";\n\nconst TableRow = styled.tr``;\n\ninterface TitleProps {\n textColor: string;\n}\nconst SeasonalProduct = styled(ColumnDiv)`\n width: 100%;\n margin-top: 10px;\n`;\nconst TitleRow = styled(RowDiv)``;\nconst Title = styled.div`\n ${condensedMicroBold};\n padding: 0;\n margin: 0;\n color: ${(props: TitleProps) => props.textColor};\n`;\ninterface EnhancementProps {\n color: ColorType;\n}\nconst Enhancement = styled.div`\n ${condensedMicroBold};\n background-color: ${(props: EnhancementProps) => props.color};\n color: ${colors.white};\n text-transform: uppercase;\n padding: 2px 4px 0;\n margin-right: 4px;\n margin-bottom: 1px;\n`;\n\nconst Description = styled.div`\n ${condensedMicroRegular};\n font-size: 12px;\n padding: 0;\n margin-top: -2px;\n color: ${(props: TitleProps) => props.textColor};\n`;\n\nconst SeasonCell = styled(RegularCell)`\n padding: 0 30px 0 30px;\n`;\n\ninterface PropsFromState {\n activeSynergies: BroadcastProductType[];\n hoveredDay: number;\n localUTCOffset: number;\n selectedUTCOffset: UTCTimeStateType;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n activeSynergies: state.schedule.activeBroadcastSynergies,\n hoveredDay: state.schedule.hoveredDay,\n localUTCOffset: state.system.utcOffset,\n selectedUTCOffset: state.schedule.selectedUTCTimeOffset,\n});\n\ninterface PropsFromDispatch {\n updateActiveSynergies: (newSynergies: BroadcastProductType[]) => void;\n updateHoveredDay: (newDayIndex: number) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n updateActiveSynergies: (newSynergies: BroadcastProductType[]) => {\n return dispatch(updateActiveSynergiesAction(newSynergies));\n },\n updateHoveredDay: (newDayIndex: number) => {\n return dispatch(updateHoveredDayAction(newDayIndex));\n },\n };\n};\ninterface CategoryRowProps extends PropsFromState, PropsFromDispatch {\n isSpan: boolean;\n span?: number;\n spanContent?: JSX.Element;\n content: ScheduleAroundSeasonContentProps;\n}\nconst SeasonCategoryRow = (props: CategoryRowProps) => {\n const {isSpan, span, spanContent, content} = props;\n const {categoryName, backgroundColor, labelColor, textColor, seasons} = content;\n\n return (\n \n {isSpan && (\n \n \n {spanContent}\n \n \n )}\n \n {categoryName}\n \n {seasons.map((season, seasonIndex) => {\n return (\n \n {season.seasonalProducts.map((product, productIndex) => {\n return (\n \n \n \n {product.enhancement && (\n {product.enhancement.label}\n )}\n {product.label}\n \n\n {product.description}\n \n \n );\n })}\n \n );\n })}\n \n );\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(SeasonCategoryRow);\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {CategoryAggregationCell, CategoryCell, RegularCell} from \"../styled\";\nimport {px, scheduleSizes, colors, seasonMap, condensedSmallBold, seasons} from \"../../../../models\";\n\nconst SeasonLabelRow = styled.tr`\n height: ${px(scheduleSizes.dayLabelRow)};\n`;\n\nconst LabelCell = styled(RegularCell)`\n ${condensedSmallBold};\n font-size: 13px;\n color: white;\n text-transform: uppercase;\n padding-left: ${px(15)};\n vertical-align: middle;\n`;\n\nconst SeasonLabelRowComp = () => {\n return (\n \n \n \n\n {[seasons.preSeason, seasons.season, seasons.postSeason].map((season, seasonIndex) => {\n return (\n \n {seasonMap.get(season).name}\n \n );\n })}\n \n );\n};\n\nexport default SeasonLabelRowComp;\n","import * as React from 'react';\nimport SeasonCategoryRow from \"./seasonCategoryRow\";\nimport SeasonLabelRow from \"./seasonLabelRow\";\nimport {VerticalBold, VerticalRegular, VerticalWrapper, ContentTable} from \"../styled\";\nimport {ScheduleAroundSeasonContentProps} from \"../../../../models\";\n\ninterface AroundMatchdaysProps {\n categories: ScheduleAroundSeasonContentProps[];\n}\nconst aroundSeasonComp = (props: AroundMatchdaysProps) => {\n const {categories} = props;\n return (\n \n \n {/* season labels */}\n \n\n {/* bundesliga matches row */}\n \n\n {/* digital content row */}\n \n Bundesliga\n Storytelling & Promotion\n \n }\n content={categories[1]}\n />\n\n {/* monthly content row */}\n \n\n {/* seasonal content row */}\n \n \n \n );\n};\n\nexport default aroundSeasonComp;\n","import * as React from \"react\";\nimport {Link} from \"gatsby\";\nimport styled from \"styled-components\";\nimport Slider from \"react-slick\";\nimport {Clock} from \"../../../../components\";\nimport {\n ScheduleCategoryContentProps,\n px,\n breakpoints,\n weekDayMap,\n ColorType,\n ColumnDiv,\n colors,\n condensedSmallBold,\n CenteredDiv,\n RowDiv,\n ScheduleAroundSeasonContentProps,\n ScheduleViewType,\n scheduleViews,\n seasonMap,\n condensedMicroBold,\n} from \"../../../../models\";\nimport {leftPad} from \"../../../../util/util\";\n\nconst ScheduleMobile = styled.div`\n display: block;\n margin: 0 auto 80px;\n width: 100%;\n max-width: 600px;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n display: none;\n }\n`;\n\n// Toggle Buttons\ninterface ToggleButtonProps {\n active: boolean;\n}\nconst ToggleButton = styled.button`\n ${condensedMicroBold};\n color: ${(props: ToggleButtonProps) => (props.active ? colors.grayMediumDark : colors.black)};\n border: ${(props: ToggleButtonProps) => (props.active ? `1px solid ${colors.grayMediumDark}` : \"none\")};\n border-radius: 3px;\n padding: 2px 6px 8px;\n text-transform: uppercase;\n background-color: ${colors.white};\n cursor: pointer;\n`;\nconst ToggleButtonWrapper = styled(RowDiv)`\n justify-content: center;\n margin-bottom: 15px;\n\n ${ToggleButton} {\n &:nth-child(1) {\n margin-right: 10px;\n }\n }\n`;\n\n// Schedule Items\ninterface CategoryRowProps {\n color: ColorType;\n}\nconst CategoriesWrapper = styled(ColumnDiv)`\n height: 550px;\n margin-bottom: 50px;\n\n\n @media (min-width: ${px(380)}) {\n height: 450px;\n }\n`;\ninterface CategoryRowProps {\n hasMargin?: boolean;\n}\nconst CategoryRow = styled.div`\n flex: 1;\n background-color: ${(props: CategoryRowProps) => props.color};\n padding: 3px 20px 8px;\n margin: ${(props: CategoryRowProps) => (props.hasMargin ? \"1px 0\" : 0)};\n`;\ninterface CategoryLabelProps {\n color?: ColorType;\n}\nconst CategoryLabel = styled.div`\n ${condensedSmallBold};\n font-size: 9px;\n text-transform: uppercase;\n color: ${(props: CategoryLabelProps) => (props.color ? props.color : colors.white)};\n opacity: 0.6;\n`;\nconst BroadcastEntryLink = styled(props => )``;\n\nconst DayLabel = styled(CenteredDiv)`\n ${condensedSmallBold};\n font-size: 13px;\n background-color: ${colors.black};\n color: white;\n text-transform: uppercase;\n text-align: center;\n margin-bottom: 2px;\n padding: 4px;\n`;\nconst BroadcastEntry = styled(RowDiv)`\n justify-content: space-between;\n`;\ninterface BroadcastLabelProps {\n textColor?: ColorType;\n}\nconst BroadcastLabel = styled.div`\n ${condensedSmallBold};\n font-size: 15px;\n padding: 0;\n margin: 0;\n color: ${(props: BroadcastLabelProps) => (props.textColor ? props.textColor : colors.white)};\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 2px;\n\n &:hover {\n text-decoration: underline;\n }\n`;\nconst SubLabel = styled(BroadcastLabel)`\n font-size: 13px;\n margin-left: 8px;\n\n &:hover {\n text-decoration: none;\n }\n`;\nconst TimeLabel = styled(SubLabel)`\n margin-left: 0;\n\n &:hover {\n text-decoration: none;\n }\n`;\nconst ClockWrapper = styled.div`\n width: 15px;\n height: 15px;\n margin-right: 4px;\n`;\nconst RowRight = styled(RowDiv)`\n width: 140px;\n justify-content: space-between;\n\n @media (min-width: ${px(380)}) {\n width: 160px;\n }\n`;\n\n// Carousel Dots\nconst CustomDot = styled.div`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${colors.grayMedium};\n`;\nconst CustomDotsList = styled.ul`\n padding: 0;\n margin: 0;\n\n & li.slick-active {\n ${CustomDot} {\n background-color: ${colors.white};\n border: 1px solid ${colors.grayMedium};\n }\n }\n`;\n\ninterface ScheduleMobileCompProps {\n matchdaysCategories: ScheduleCategoryContentProps[];\n seasonCategories: ScheduleAroundSeasonContentProps[];\n selectedView: ScheduleViewType;\n updateSelectedView: (newView: ScheduleViewType) => void;\n}\nconst ScheduleMobileComp = (props: ScheduleMobileCompProps) => {\n const {matchdaysCategories, seasonCategories, selectedView, updateSelectedView} = props;\n\n const settings = {\n dots: true,\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n initialSlide: 2,\n appendDots: dots => (\n \n {dots} \n
\n ),\n customPaging: (_i: number) => ,\n };\n\n return (\n \n \n updateSelectedView(scheduleViews.aroundMatchdays)}\n >\n Around Matchdays\n \n updateSelectedView(scheduleViews.aroundSeason)}\n >\n Around the season\n \n \n\n {/* Around Matchdays */}\n {selectedView === scheduleViews.aroundMatchdays && (\n \n {matchdaysCategories[0].days.map((currentDay, dayIndex) => (\n \n {weekDayMap.get(currentDay.weekDay).fullName}\n\n \n {matchdaysCategories.map((category, categoryIndex) => {\n const dayEntry = category.days.find(day => day.weekDay === currentDay.weekDay);\n\n return (\n \n \n {category.categoryName}\n \n\n {dayEntry.broadcastGroups.map((group, groupIndex) => (\n \n \n \n {group.label}\n {group.subLabel}\n \n \n\n \n {group.broadcasts.map((broadcast, broadcastIndex) => {\n return (\n broadcast.time && (\n \n \n \n \n \n {`${broadcast.time.hours}:${leftPad(\n broadcast.time.minutes,\n )}`}\n \n \n )\n );\n })}\n \n \n ))}\n \n );\n })}\n \n
\n ))}\n \n )}\n\n {/* Around Season */}\n {selectedView === scheduleViews.aroundSeason && (\n \n {seasonCategories[0].seasons.map((currentSeason, dayIndex) => (\n \n {seasonMap.get(currentSeason.season).name}\n\n \n {seasonCategories.map((seasonCategory, seasonCategoryIndex) => {\n const seasonEntry = seasonCategory.seasons.find(season => season.season === currentSeason.season);\n\n return (\n \n {seasonCategory.categoryName}\n\n {seasonEntry.seasonalProducts.map((seasonalProduct, groupIndex) => (\n \n \n \n {seasonalProduct.label}\n \n \n \n ))}\n \n );\n })}\n \n
\n ))}\n \n )}\n \n );\n};\n\nexport default ScheduleMobileComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\nimport AroundMatchdays from \"./aroundMatchdays/aroundMatchdays\";\nimport AroundSeason from \"./aroundSeason/aroundSeason\";\nimport ScheduleMobile from \"./scheduleMobile/scheduleMobile\";\nimport {GenericSelect, Caret, Download} from \"../../../components\";\nimport {mediumBold, CenteredDiv, RowDiv, condensedMicroRegular} from \"../../../models/style-constants\";\nimport {\n px,\n scheduleSizes,\n elementSizes,\n WeekDayType,\n ScheduleContentProps,\n UTCTimeStateType,\n utcTimeStates,\n utcTimeStateMap,\n condensedMicroBold,\n colors,\n timings,\n ScheduleViewType,\n scheduleViews,\n breakpoints,\n} from \"../../../models\";\nimport {AppState} from \"../../../store\";\nimport {\n updateActiveMatchdaysAction,\n updateUTCTimeOffsetAction,\n updateSelectedViewAction,\n} from \"../../../store/schedule/actions\";\n\n// COMPONENT PROPERTIES\ninterface PropsFromState {\n activeMatchDays: [WeekDayType, WeekDayType];\n selectedTimeOffset: UTCTimeStateType;\n localUTCOffsetText: string;\n selectedView: ScheduleViewType;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n activeMatchDays: state.schedule.activeMatchdays,\n selectedTimeOffset: state.schedule.selectedUTCTimeOffset,\n localUTCOffsetText: state.system.localUTCOffsetText,\n selectedView: state.schedule.selectedView,\n});\n\ninterface PropsFromDispatch {\n updateActiveMatchDays: (region: [WeekDayType, WeekDayType]) => void;\n updateSelectedTimeOffset: (newOffsetState: UTCTimeStateType) => void;\n updateSelectedView: (newView: ScheduleViewType) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n updateActiveMatchDays: (newMatchDays: [WeekDayType, WeekDayType]) => {\n return dispatch(updateActiveMatchdaysAction(newMatchDays));\n },\n updateSelectedTimeOffset: (newOffsetState: UTCTimeStateType) => {\n return dispatch(updateUTCTimeOffsetAction(newOffsetState));\n },\n updateSelectedView: (newView: ScheduleViewType) => {\n return dispatch(updateSelectedViewAction(newView));\n },\n };\n};\n\nexport interface ScheduleCompProps extends PropsFromState, PropsFromDispatch, ScheduleContentProps {\n title: string;\n pdfUrl: string;\n}\n\n// STYLES\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n padding-top: ${px(elementSizes.navigationHeaderHeight)};\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n`;\nconst HeaderRow = styled.div`\n ${mediumBold};\n font-size: 18px;\n letter-spacing: 0.24em;\n text-transform: uppercase;\n text-align: center;\n width: 100%;\n box-sizing: border-box;\n flex-grow: 0;\n margin-bottom: 20px;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n font-size: 25px;\n margin-bottom: 0;\n }\n`;\nconst ScheduleWrapper = styled.div`\n width: 100%;\n display: none;\n flex-grow: 1;\n flex-direction: row;\n padding-bottom: ${px(elementSizes.navigationHeaderHeight)};\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n display: flex;\n }\n`;\n\n// SCHEDULE\n\n// BUTTONS (left + right)\ninterface ButtonColumnProps {\n direction: \"left\" | \"right\";\n}\nconst ButtonColumn = styled.div`\n width: ${px(scheduleSizes.buttonColumn)};\n padding-top: ${px(scheduleSizes.navigationRow + scheduleSizes.dayLabelRow)};\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n margin: 0 ${(props: ButtonColumnProps) => (props.direction === \"right\" ? px(50) : 0)} 0\n ${(props: ButtonColumnProps) => (props.direction === \"left\" ? px(50) : 0)};\n`;\n\ninterface CaretWrapperProps {\n direction: \"left\" | \"right\";\n}\nconst CaretWrapper = styled.div`\n width: 20px;\n height: 20px;\n transition: width ${timings.hurried}ms, height ${timings.instant}ms;\n transform: translate(${(props: CaretWrapperProps) => (props.direction === \"left\" ? px(-2) : px(2))})\n rotate(${(props: CaretWrapperProps) => (props.direction === \"left\" ? 90 : -90)}deg);\n`;\n\nconst Button = styled.div`\n width: ${px(scheduleSizes.buttonSize)};\n height: ${px(scheduleSizes.buttonSize)};\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n border-width: 1px;\n border-style: solid;\n border-color: ${colors.redDFL30};\n transition: border-color ${timings.moderate}ms;\n cursor: pointer;\n\n &:hover {\n border-color: ${colors.redDFL};\n\n ${CaretWrapper} {\n width: 24px;\n height: 24px;\n }\n }\n`;\n\nconst ScheduleTableWrapper = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n`;\n\nconst Schedule = styled.div`\n flex-grow: 1;\n height: 100%;\n`;\nconst NavigationRow = styled.div`\n padding-left: ${px(\n scheduleSizes.categoryAggregationLabelColumn +\n scheduleSizes.categoryLabelColumn +\n scheduleSizes.categoryLabelPadding * 2 +\n 2,\n )};\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 6px;\n`;\nconst NavigationTimeSelect = styled.div`\n width: 180px;\n height: 100%;\n`;\nconst NavigationViewToggle = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\n// Download\nconst DownloadRow = styled(RowDiv)`\n justify-content: flex-end;\n margin-top: 4px;\n`;\n\nconst DownloadText = styled.div`\n ${condensedMicroRegular};\n margin-right: 6px;\n`;\n\nconst DownloadLink = styled.a`\n display: flex;\n flex-direction: row;\n cursor: pointer;\n\n &:hover {\n ${DownloadText} {\n color: ${colors.redDFL};\n text-decoration: underline;\n }\n }\n`;\n\nconst DownloadIconWrapper = styled(CenteredDiv)`\n width: 16px;\n height: 16px;\n`;\n\ninterface NavigationViewToggleElementProps {\n active: boolean;\n}\nconst NavigationViewToggleElement = styled.div`\n ${condensedMicroBold};\n font-size: 13px;\n color: ${(props: NavigationViewToggleElementProps) => (props.active ? colors.grayMediumDark : colors.black)};\n border-bottom: ${(props: NavigationViewToggleElementProps) =>\n props.active ? `2px solid ${colors.grayMediumDark}` : \"none\"};\n margin-left: 20px;\n text-transform: uppercase;\n padding-bottom: 2px;\n cursor: pointer;\n`;\n\ninterface OptionValueLabel {\n value: UTCTimeStateType;\n label: string;\n}\nconst ScheduleComp = (props: ScheduleCompProps) => {\n const {\n activeMatchDays,\n aroundMatchdaysCategories,\n aroundSeasonCategories,\n updateSelectedTimeOffset,\n selectedTimeOffset,\n localUTCOffsetText,\n selectedView,\n updateSelectedView,\n pdfUrl,\n title,\n } = props;\n\n const options: OptionValueLabel[] = [\n {value: utcTimeStates.germanTime, label: utcTimeStateMap.get(utcTimeStates.germanTime)},\n {\n value: utcTimeStates.localTime,\n label: `${utcTimeStateMap.get(utcTimeStates.localTime)} (UTC ${localUTCOffsetText})`,\n },\n ];\n const activeOption: OptionValueLabel = options.find(o => o.value === selectedTimeOffset);\n\n return (\n \n {title}\n\n {/* Schedule Desktop */}\n \n \n {selectedView === scheduleViews.aroundMatchdays && (\n \n )}\n \n\n \n \n \n \n updateSelectedTimeOffset(value)}\n value={activeOption}\n title=\"Time\"\n />\n \n\n \n updateSelectedView(scheduleViews.aroundMatchdays)}\n >\n Around Matchdays\n \n updateSelectedView(scheduleViews.aroundSeason)}\n >\n Around the season\n \n \n \n\n {selectedView === scheduleViews.aroundMatchdays && (\n \n )}\n {selectedView === scheduleViews.aroundSeason && }\n\n {/*\n \n \n Download PDF\n \n \n \n \n \n */}\n \n \n\n \n {selectedView === scheduleViews.aroundMatchdays && (\n \n )}\n \n \n\n {/* Schedule Mobile */}\n \n \n );\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(ScheduleComp);\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {colors} from \"../../models\";\n\nconst ProgressTag = styled.progress`\n position: relative;\n background-color: transparent;\n\n &[value] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 40px;\n border: 0;\n ::-webkit-progress-bar {\n background-color: transparent;\n border-radius: 0;\n }\n ::-webkit-progress-value {\n border-radius: 0;\n }\n }\n`;\n\nconst ProgressTagContainer = styled.div<{filledColor: string}>`\n position: relative;\n display: flex;\n align-items: center;\n height: 160px;\n transform: rotate(-90deg);\n &:before {\n position: absolute;\n z-index: 0;\n left: 50%;\n content: \"\";\n display: inline-block;\n width: 1px;\n height: 80%;\n background-color: ${colors.grayLight};\n transform: translateX(-50%) rotate(-90deg);\n }\n ${ProgressTag} {\n &[value]::-webkit-progress-value {\n border-right: 4px solid ${colors.white};\n background-color: ${p => (p.filledColor ? p.filledColor : colors.grayLight)};\n }\n\n /* NOTE: must put here and not add after a a comma after -webkit */\n &[value]::-moz-progress-bar {\n border-right: 4px solid ${colors.white};\n background-color: ${p => (p.filledColor ? p.filledColor : colors.grayLight)};\n }\n\n ::-ms-fill {\n border-right: 4px solid ${colors.white};\n transform: translateX(-20px);\n background-color: ${p => (p.filledColor ? p.filledColor : colors.grayLight)};\n }\n }\n`;\ninterface ProgressTagCompProps {\n value: number;\n max: number;\n filledColor: string;\n}\n\nconst ProgressTagComp = (props: ProgressTagCompProps) => {\n const {value, max, filledColor} = props;\n return (\n \n \n \n );\n};\n\nexport default ProgressTagComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {InfographicsBarChartProps, colors, fontSizesPx, breakpoint} from \"../../models\";\nimport ProgressTagComp from \"../progressTag/progressTag\";\nimport {addCommasToNumber} from \"../../util/util\";\n\nconst Number = styled.p`\n font-size: 17px;\n font-weight: bold;\n margin: 0;\n`;\n\nconst Label = styled.p`\n font-size: ${fontSizesPx.micro};\n color: ${colors.grayDark};\n margin: 0;\n\n @supports (-ms-ime-align: auto) {\n transform: translateY(60px);\n }\n\n ${breakpoint.xs.down} {\n word-break: break-all;\n hyphens: auto;\n };\n`;\n\nconst Item = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst Container = styled.div`\n display: grid;\n grid-template-columns: repeat(5, 50px);\n grid-column-gap: 8px;\n justify-content: space-around;\n ${breakpoint.s.up} {\n grid-gap: 30px;\n };\n`;\n\nconst QuickFactsBarChartComp = (props: InfographicsBarChartProps) => {\n const {items, barChartMaxValue} = props;\n return (\n \n {items.map((item, i) => {\n return (\n - \n {addCommasToNumber(item.value, barChartMaxValue)}\n \n \n
\n );\n })}\n \n );\n};\n\nexport default QuickFactsBarChartComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {colors, FullpageHeadline, FullpageSubheadline, fonts, fontSizesPx, breakpoint, stage} from \"../../models\";\nimport QuickFactsBarChartComp from \"./quickFactsBarChart\";\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\n\nconst ITEMS_MAX_WIDTH = 380;\n\nconst QuickFactsFootnoteText = styled.p`\n margin: 0 0 3px 0;\n`;\n\nconst QuickFactsFootnote = styled.div`\n font-family: ${fonts.condensedFont};\n font-size: ${fontSizesPx.macro};\n text-align: center;\n margin: 40px auto 0;\n max-width: ${stage.outerWidth}px;\n ${breakpoint.xl.up} {\n margin: 40px 0 0;\n text-align: right;\n };\n`;\n\nconst QuickFactsItemImage = styled.img`\n width: 100%;\n height: auto;\n max-width: ${ITEMS_MAX_WIDTH}px;\n margin: auto;\n`;\n\nconst QuickFactsItemMain = styled.div`\n margin-bottom: 30px;\n ${breakpoint.xl.up} {\n margin: auto 0 0;\n };\n`;\n\nconst QuickFactsItemDescription = styled.p`\n font-size: ${fontSizesPx.small};\n line-height: 1.3em;\n color: ${colors.black};\n margin: 0;\n\n ${breakpoint.xl.up} {\n margin: 0 0 20px 0;\n };\n`;\n\nconst QuickFactsItemHeadline = styled.h1`\n font-size: ${fontSizesPx.small};\n\n ${breakpoint.xl.up} {\n font-size: ${fontSizesPx.average};\n margin-bottom: 8px;\n };\n`;\n\nconst QuickFactsItemArticle = styled.article`\n order: 2;\n margin-bottom: 10px;\n\n ${QuickFactsItemHeadline},\n ${QuickFactsItemDescription} {\n /* margin: 0; */\n text-align: center;\n ${breakpoint.xl.up} {\n text-align: left;\n };\n }\n\n ${breakpoint.xl.up} {\n order: 0;\n margin-bottom: 30px;\n };\n`;\n\nconst QuickFactsItem = styled.div`\n display: flex;\n flex-direction: column;\n font-family: ${fonts.headerFont};\n margin: 0 auto;\n max-width: ${ITEMS_MAX_WIDTH}px;\n\n ${breakpoint.xs.down} {\n overflow-x: hidden;\n };\n`;\n\nconst QuickFactsItemWrapper = styled.div`\n ${breakpoint.xl.up} {\n display: flex;\n };\n`;\n\nconst QuickFactsNonSlider = styled.div`\n display: none;\n ${breakpoint.xl.up} {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-auto-columns: 1fr;\n grid-column-gap: 80px;\n };\n`;\n\nconst QuickFactsSlider = styled.div`\n ${breakpoint.xl.up} {\n display: none;\n };\n`;\n\nconst QuickFactsMain = styled.div`\n margin: 30px auto 0;\n max-width: ${stage.outerWidth}px;\n ${breakpoint.xl.up} {\n margin-top: 50px;\n };\n`;\n\nconst QuickFacts = styled.div`\n /* NOTE: can remove when making the landing page responsive */\n padding: 0 15px;\n\n ${breakpoint.m.up} {\n padding: 0 80px;\n };\n\n ${breakpoint.l.up} {\n padding: 80px 0 0 0;\n };\n\n /* NOTE: can remove once FullpageHeadline and FullpageSubheadline are responsive */\n ${FullpageHeadline},\n ${FullpageSubheadline} {\n ${breakpoint.m.down} {\n width: auto;\n };\n }\n`;\n// NOTE: could refactor typecheck\ninterface QuickFactsCompProps {\n headline: string;\n subheadline: string;\n content: any;\n footnote: any;\n}\nconst QuickFactsComp = (props: QuickFactsCompProps) => {\n const {headline, subheadline, content, footnote} = props;\n const SliderSettings = {\n dots: true,\n };\n\n const mainContent = content.map((item, i) => {\n return (\n \n \n \n {item.heading}\n {item.description}\n \n {/* NOTE: could add typecheck */}\n \n {item.barChartOrImage === \"Bar Chart\" && (\n \n )}\n {item.barChartOrImage === \"Image\" && (\n \n )}\n \n \n \n );\n });\n\n return (\n \n {headline}\n {subheadline}\n \n \n {mainContent}\n \n {mainContent}\n \n {footnote &&\n footnote.map((item, i) => {\n return {item.lineOfText};\n })}\n \n \n \n );\n};\n\nexport default QuickFactsComp;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport {colors, smallRegular, smallBold, ContactMainProps, px, breakpoints, microBold, microRegular} from \"../../models\";\nimport {trimWebsiteUrl} from \"../../util/util\";\n\nconst ContactCard = styled.div`\n max-width: 500px;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 0 10px;\n`;\n\ninterface LogoProps {\n src: string;\n}\nconst Logo = styled.div`\n background-size: contain;\n background-image: url(${(props: LogoProps) => props.src});\n background-repeat: no-repeat;\n background-position: center;\n width: 50px;\n height: 50px;\n align-self: center;\n\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n width: 80px;\n height: 80px;\n }\n`;\n\nconst ContactDetails = styled.div`\n margin-left: 50px;\n`;\n\nconst Name = styled.div`\n ${microBold};\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n ${smallBold};\n }\n`;\n\n\nconst Telephone = styled.div`\n ${microRegular};\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n ${smallRegular};\n }\n`;\n\nconst TextLink = styled.a`\n ${microRegular};\n color: ${colors.redDFL};\n display: block;\n\n &:hover {\n text-decoration: underline;\n }\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n ${smallRegular};\n color: ${colors.redDFL};\n }\n`;\n\n\ninterface ContactCardMainProps extends ContactMainProps {\n logo: string;\n}\nconst ContactCardMain = (props: ContactCardMainProps) => {\n const { name, phone, email, website, logo } = props;\n return (\n \n \n\n \n {name}\n {phone}\n {email}\n {trimWebsiteUrl(website)}\n \n \n );\n};\n\nexport default ContactCardMain;\n","export default __webpack_public_path__ + \"static/contactMainBLI-516bd45aa63ed3d379713c729c4ce2bb.svg\";","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI1OHB4IiB2aWV3Qm94PSIwIDAgODAgNTgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjIgKDc4MTgxKSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT5Hcm91cCA5PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGcgaWQ9IlVJLV9Ba3R1ZWxsIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iUHJvdG9fTGFuZGluZ3BhZ2VfQ29udGFjdC1Gb290ZXIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMjIuMDAwMDAwLCAtNjQxLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgIDxnIGlkPSJLb250YWt0LUFiYmluZGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgNTgxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPGcgaWQ9IkRGTCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjIyLjAwMDAwMCwgNjAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNjguNzk5NjY5MywyOS4wMzE0OTA3IEM2OC44NjkyMzY1LDI5LjIxNzk4ODUgNjguNjYwNTM0NywyOS4yODAxNTQ1IDY4LjM4MjI2NTYsMjkuNTI4ODE4MiBMNjguMTczNTYzOCwyOS42NTMxNTAxIEw2OC4yNDMxMzExLDI5Ljc3NzQ4MTkgQzY4LjMxMjY5ODQsMjkuODM5NjQ3OSA2OC4yNDMxMzExLDI5Ljk2Mzk3OTcgNjguMTAzOTk2NSwzMC4wMjYxNDU3IEw2Ny44MjU3Mjc1LDMwLjE1MDQ3NzUgQzY3LjY4NjU5MjksMzAuMjEyNjQzNSA2Ny41NDc0NTg0LDMwLjIxMjY0MzUgNjcuNDc3ODkxMSwzMC4xNTA0Nzc1IEw2Ny40MDgzMjM4LDMwLjAyNjE0NTcgTDY3LjA2MDQ4NzUsMzAuMjEyNjQzNSBMNjcuMTMwMDU0NywzMC4zMzY5NzUzIEM2Ny4xOTk2MjIsMzAuMzk5MTQxMyA2Ny4wNjA0ODc1LDMwLjUyMzQ3MzEgNjYuOTIxMzUyOSwzMC41ODU2MzkxIEw2Ni42NDMwODM4LDMwLjcwOTk3MDkgQzY2LjUwMzk0OTMsMzAuNzcyMTM2OSA2Ni4zNjQ4MTQ3LDMwLjc3MjEzNjkgNjYuMjk1MjQ3NSwzMC42NDc4MDUgTDY2LjIyNTY4MDIsMzAuNTIzNDczMSBDNjUuMDQzMDM2NiwzMS4wMjA4MDA2IDYzLjc5MDgyNTcsMzEuNTE4MTI4MSA2Mi40NjkwNDc1LDMyLjA3NzYyMTUgTDYyLjUzODYxNDgsMzIuMjAxOTUzMyBDNjIuNjA4MTgyMSwzMi4yNjQxMTkzIDYyLjQ2OTA0NzUsMzIuMzg4NDUxMSA2Mi4zOTk0ODAzLDMyLjQ1MDYxNzEgTDYyLjEyMTIxMTIsMzIuNTc0OTQ4OSBDNjEuOTgyMDc2NiwzMi42MzcxMTQ5IDYxLjg0Mjk0MjEsMzIuNjM3MTE0OSA2MS43NzMzNzQ4LDMyLjUxMjc4MyBMNjEuNzAzODA3NSwzMi4zODg0NTExIEw2MS4yODY0MDM5LDMyLjU3NDk0ODkgTDYxLjM1NTk3MTIsMzIuNjk5MjgwOCBDNjEuNDI1NTM4NSwzMi43NjE0NDY3IDYxLjI4NjQwMzksMzIuODg1Nzc4NiA2MS4xNDcyNjk0LDMyLjk0Nzk0NDUgTDYwLjg2OTAwMDMsMzMuMDcyMjc2NCBDNjAuNzI5ODY1NywzMy4xMzQ0NDIzIDYwLjU5MDczMTIsMzMuMTM0NDQyMyA2MC41MjExNjM5LDMzLjAxMDExMDUgTDYwLjQ1MTU5NjcsMzIuODg1Nzc4NiBDNTkuODI1NDkxMiwzMy4wNzIyNzY0IDU5LjE5OTM4NTgsMzMuMTk2NjA4MyA1OC43MTI0MTQ5LDMyLjM4ODQ1MTEgQzU4LjQzNDE0NTgsMzEuODI4OTU3NyA1OC41NzMyODAzLDMwLjU4NTYzOTEgNTguMDg2MzA5NCwzMC40NjEzMDcyIEM1Ny45NDcxNzQ5LDMwLjM5OTE0MTMgNTcuOTQ3MTc0OSwzMC4zOTkxNDEzIDU3Ljk0NzE3NDksMzAuMzk5MTQxMyBDNTIuMDMzOTU2OCwyOS40MDQ0ODYzIDUwLjA4NjA3MzIsMzAuNTIzNDczMSA0Ni4zMjk0NDA1LDI5LjY1MzE1MDEgQzQ1LjE0Njc5NjksMjkuNDA0NDg2MyA0NC41MjA2OTE0LDI4LjQwOTgzMTQgNDMuMDU5Nzc4NywyOC40MDk4MzE0IEMzOS44NTk2ODQyLDI4LjM0NzY2NTUgMzguOTU1MzA5NywyOC4zNDc2NjU1IDM1LjQ3Njk0NjEsMjguMjIzMzMzNiBDMzUuMzM3ODExNiwyOC42NTg0OTUyIDM1LjMzNzgxMTYsMjguNzgyODI3IDM1LjMzNzgxMTYsMjguNzgyODI3IEwyMy4yMzMxMDYzLDI4LjcyMDY2MTEgTDI1LjExMTQyMjYsMjkuNTI4ODE4MiBMMjUuNzM3NTI4MSwzNC4zMTU1OTUxIEMyNS43Mzc1MjgxLDM0LjMxNTU5NTEgMjUuMjUwNTU3MiwzNC40Mzk5MjY5IDI1LjExMTQyMjYsMzQuNDM5OTI2OSBDMjUuMzg5NjkxNywzNi43NDAwNjY1IDI1LjQ1OTI1OSwzOS4wNDAyMDYgMjUuNTI4ODI2Myw0MC41OTQzNTQzIEMyNS41Mjg4MjYzLDQwLjcxODY4NjIgMjUuNTI4ODI2Myw0MC44NDMwMTggMjUuNTI4ODI2Myw0MC45MDUxODQgQzI1LjUyODgyNjMsNDEuMDI5NTE1OCAyNS41Mjg4MjYzLDQxLjIxNjAxMzYgMjUuNDU5MjU5LDQxLjM0MDM0NTUgQzI1LjMyMDEyNDQsNDEuODM3NjczIDI0Ljk3MjI4ODEsNDIuMzM1MDAwNCAyNC4yNzY2MTU0LDQyLjgzMjMyNzkgQzI0LjA2NzkxMzUsNDIuOTU2NjU5OCAyMy43ODk2NDQ1LDQzLjE0MzE1NzYgMjMuNDQxODA4MSw0My4zMjk2NTU0IEwyMy40NDE4MDgxLDQzLjMyOTY1NTQgQzIyLjk1NDgzNzIsNDMuNjQwNDg1IDIyLjMyODczMTgsNDMuOTUxMzE0NyAyMS42MzMwNTksNDQuMTk5OTc4NCBDMjEuNjMzMDU5LDQ0LjMyNDMxMDMgMjEuNzcyMTkzNiw0NC40NDg2NDIyIDIxLjc3MjE5MzYsNDQuNTcyOTc0IEMxNC4zOTgwNjI4LDQ3Ljc0MzQzNjYgNS4yMTUxODI5Miw0OC44NjI0MjM0IDIuMjkzMzU3NSw1My44OTc4NjQgQzEuOTQ1NTIxMTUsNTQuNDU3MzU3NCAwLjc2Mjg3NzUyNyw1NC4yMDg2OTM2IDAuNjkzMzEwMjU1LDUzLjUyNDg2ODQgQzAuNjkzMzEwMjU1LDUzLjIxNDAzODcgMC42OTMzMTAyNTUsNTIuNzc4ODc3MiAwLjY5MzMxMDI1NSw1Mi41MzAyMTM1IEwwLjU1NDE3NTcxMiw1Mi41MzAyMTM1IEMwLjQ4NDYwODQ0LDUyLjUzMDIxMzUgMC40MTUwNDExNjgsNTIuNDA1ODgxNiAwLjQxNTA0MTE2OCw1Mi4yODE1NDk3IEwwLjQxNTA0MTE2OCw1MS45NzA3MjAxIEMwLjQxNTA0MTE2OCw1MS44NDYzODgyIDAuNDg0NjA4NDQsNTEuNzIyMDU2MyAwLjYyMzc0Mjk4Myw1MS43MjIwNTYzIEwwLjc2Mjg3NzUyNyw1MS43MjIwNTYzIEMwLjgzMjQ0NDc5OSw1MS40MTEyMjY3IDAuODMyNDQ0Nzk5LDUxLjE2MjU2MjkgMC45NzE1NzkzNDIsNTAuODUxNzMzMyBMMC44MzI0NDQ3OTksNTAuNzg5NTY3MyBDMC43NjI4Nzc1MjcsNTAuNzg5NTY3MyAwLjY5MzMxMDI1NSw1MC42MDMwNjk1IDAuNzYyODc3NTI3LDUwLjQ3ODczNzcgTDAuOTAyMDEyMDcsNTAuMjMwMDczOSBDMC45NzE1NzkzNDIsNTAuMTA1NzQyMSAxLjA0MTE0NjYxLDUwLjA0MzU3NjEgMS4xODAyODExNiw1MC4wNDM1NzYxIEwxLjMxOTQxNTcsNTAuMTA1NzQyMSBDMS44NzU5NTM4Nyw0OC45ODY3NTUzIDIuODQ5ODk1NjgsNDguNDg5NDI3OCAzLjMzNjg2NjU4LDQ3LjQ5NDc3MjkgTDMuMjY3Mjk5MzEsNDcuNDk0NzcyOSBDMy4xOTc3MzIwNCw0Ny40OTQ3NzI5IDMuMTI4MTY0NzYsNDcuMzA4Mjc1MSAzLjE5NzczMjA0LDQ3LjE4Mzk0MzIgTDMuMzM2ODY2NTgsNDYuODczMTEzNSBDMy40MDY0MzM4NSw0Ni43NDg3ODE3IDMuNDc2MDAxMTIsNDYuNjg2NjE1NyAzLjYxNTEzNTY3LDQ2LjY4NjYxNTcgTDMuNjg0NzAyOTQsNDYuNjg2NjE1NyBDMy43NTQyNzAyMSw0Ni41NjIyODM5IDMuODIzODM3NDgsNDYuMzc1Nzg2MSAzLjk2Mjk3MjAzLDQ2LjE4OTI4ODMgTDMuODkzNDA0NzUsNDYuMTI3MTIyMyBDMy44MjM4Mzc0OCw0Ni4wNjQ5NTY0IDMuODIzODM3NDgsNDUuOTQwNjI0NSAzLjg5MzQwNDc1LDQ1LjgxNjI5MjcgTDQuMTAyMTA2NTcsNDUuNTY3NjI4OSBDNC4xNzE2NzM4NCw0NS40NDMyOTcxIDQuMzEwODA4MzgsNDUuMzgxMTMxMiA0LjM4MDM3NTY2LDQ1LjQ0MzI5NzEgTDQuNDQ5OTQyOTMsNDUuNDQzMjk3MSBMNC41MTk1MTAyLDQ1LjQ0MzI5NzEgQzQuNTE5NTEwMiw0NS40NDMyOTcxIDQuNTE5NTEwMiw0NS40NDMyOTcxIDQuNTg5MDc3NDcsNDUuNDQzMjk3MSBDNC42NTg2NDQ3NCw0NS4zODExMzEyIDQuNjU4NjQ0NzQsNDUuMzgxMTMxMiA0LjcyODIxMjAxLDQ1LjMxODk2NTIgQzUuMjE1MTgyOTIsNDUuMDA4MTM1NiA1Ljg0MTI4ODM2LDQ1LjAwODEzNTYgNi4zMjgyNTkyNiw0NS4zMTg5NjUyIEM2LjgxNTIzMDE3LDQ1LjU2NzYyODkgOC42MjM5NzkyMyw0Ni41MDAxMTc5IDEwLjM2MzE2MSw0NS4wNzAzMDE1IEMxMy4yMTU0MTkyLDQyLjc3MDE2MiAxNi42MjQyMTU1LDM5LjU5OTY5OTQgMTkuMTI4NjM3MywzOS41Mzc1MzM0IEMxOC40MzI5NjQ1LDM4LjIzMjA0ODggMTcuMjUwMzIwOSwzNS40MzQ1ODE5IDE3LjExMTE4NjQsMzQuNDM5OTI2OSBMMTYuMjc2Mzc5MSwzNC4yNTM0MjkxIEMxNS44NTg5NzU1LDMzLjM4MzEwNjEgMTQuNzQ1ODk5MSwyOS40NjY2NTIzIDE0LjQ2NzYzMDEsMjYuNTQ0ODUzNCBDMTQuNDY3NjMwMSwyNi41NDQ4NTM0IDE0LjExOTc5MzcsMjMuMzc0MzkwOCAxNC40Njc2MzAxLDIyLjI1NTQwNCBDMTQuMjU4OTI4MiwyMi4yNTU0MDQgMTMuOTExMDkxOSwyMi41MDQwNjc4IDEzLjg0MTUyNDYsMjIuNTA0MDY3OCBDMTMuMzU0NTUzNywyMS41MDk0MTI4IDE0Ljg4NTAzMzcsMTIuOTMwNTE0MSAxNi4zNDU5NDY0LDEwLjM4MTcxMDggTDE4LjY0MTY2NjQsOS41NzM1NTM2OSBDMTguNDMyOTY0NSw5LjU3MzU1MzY5IDE2Ljc2MzM1LDkuNTExMzg3NzYgMTIuMzgwNjExOSw5LjEzODM5MjE2IEM5Ljk0NTc1NzM5LDExLjA2NTUzNjEgNy4xNjMwNjY1MiwxMy4xMTcwMTE5IDUuNzcxNzIxMDksMTQuMjM1OTk4NyBDNS41NjMwMTkyNywxNC40MjI0OTY1IDUuMTQ1NjE1NjQsMTUuNjAzNjQ5MiA1LjE0NTYxNTY0LDE1LjYwMzY0OTIgQzUuMTQ1NjE1NjQsMTUuNjAzNjQ5MiA0LjQ0OTk0MjkzLDE2LjE2MzE0MjYgMy43NTQyNzAyMSwxNi41OTgzMDQxIEMyLjg0OTg5NTY4LDE3LjE1Nzc5NzUgMC42OTMzMTAyNTUsMTcuNTkyOTU5MSAwLjI3NTkwNjYyNSwxNi45MDkxMzM4IEMwLjEzNjc3MjA4MSwxNi43MjI2MzYgMC4yMDYzMzkzNTMsMTYuNjYwNDcwMSAwLjI3NTkwNjYyNSwxNi41OTgzMDQxIEMwLjYyMzc0Mjk4MywxNi4yODc0NzQ1IDEuODc1OTUzODcsMTUuNzI3OTgxMSAyLjI5MzM1NzUsMTUuMDQ0MTU1OCBDMS41OTc2ODQ3OSwxNS4zNTQ5ODU1IDAuODMyNDQ0Nzk5LDE1LjY2NTgxNTEgMC4yNzU5MDY2MjUsMTUuNjAzNjQ5MiBDLTAuMDAyMzYyNDYxOTUsMTUuNjAzNjQ5MiAtMC4xNDE0OTcwMDUsMTUuMDQ0MTU1OCAwLjIwNjMzOTM1MywxNC45MTk4MjM5IEMxLjExMDcxMzg5LDE0LjU0NjgyODMgMS44NzU5NTM4NywxNC40MjI0OTY1IDIuMzYyOTI0NzgsMTMuNzM4NjcxMiBDMi44NDk4OTU2OCwxMy4xMTcwMTE5IDMuNDc2MDAxMTIsMTIuNjgxODUwMyA0LjMxMDgwODM4LDEyLjYxOTY4NDQgQzQuMzEwODA4MzgsMTIuNjE5Njg0NCA4LjM0NTcxMDE0LDcuODk1MDczNSAxMC43MTA5OTc0LDUuNjU3MDk5OTEgQzExLjMzNzEwMjgsNS4wMzU0NDA1OCAxMi41ODkzMTM3LDUuMjIxOTM4MzggMTIuNTg5MzEzNyw1LjIyMTkzODM4IEwxMi43OTgwMTU1LDQuNTM4MTEzMTIgQzEyLjc5ODAxNTUsNC41MzgxMTMxMiAyMC45MzczODYzLDMuNjY3NzkwMDUgMjQuNzYzNTg2Myw0Ljc4Njc3Njg1IEMyNC42OTQwMTksMi43MzUzMDEwNiAyNS43Mzc1MjgxLDAgMjkuMjg1NDU4OSwwIEMzMS4xNjM3NzUzLDAgMzMuODc2ODk4OSwxLjQ5MTk4MjM5IDM0LjIyNDczNTIsMy4yMzI2Mjg1MiBDMzQuMzYzODY5OCwzLjc5MjEyMTkyIDM0LjAxNjAzMzQsNC4xNjUxMTc1MiAzMy44MDczMzE2LDQuODQ4OTQyNzggQzMzLjQ1OTQ5NTIsNS45MDU3NjM2NCAzMy45NDY0NjYxLDcuMDg2OTE2MzcgMzMuODA3MzMxNiw3LjM5Nzc0NjA0IEMzMy42NjgxOTcsNy43MDg1NzU3IDMzLjMyMDM2MDcsNy42NDY0MDk3NyAzMi45NzI1MjQzLDguMDgxNTcxMyBDMzIuNjI0Njg4LDguNTE2NzMyODMgMzIuNDE1OTg2Miw4Ljk1MTg5NDM2IDMyLjIwNzI4NDMsOS4zMjQ4ODk5NiBMMzIuMjA3Mjg0Myw5LjMyNDg4OTk2IEwzMS43MjAzMTM0LDEwLjMxOTU0NDkgTDI5LjE0NjMyNDQsMTAuMTMzMDQ3MSBMMjkuMTQ2MzI0NCwxMC4xMzMwNDcxIEwyOS4xNDYzMjQ0LDEwLjEzMzA0NzEgQzI4LjI0MTk0OTksMTEuOTM1ODU5MiAyNi4yOTQwNjYyLDE1LjYwMzY0OTIgMjUuNjY3OTYwOCwxOS4yMDkyNzMzIEwyNS42Njc5NjA4LDE5LjIwOTI3MzMgQzI3LjY4NTQxMTcsMTkuMzMzNjA1MiAzNi43MjkxNTcsMjAuNTE0NzU3OSAzNi43MjkxNTcsMjAuNTE0NzU3OSBMMzYuOTM3ODU4OCwyMS4xOTg1ODMyIEMzNi45Mzc4NTg4LDIxLjE5ODU4MzIgMzYuOTM3ODU4OCwyMS4xOTg1ODMyIDM3LjA3Njk5MzQsMjEuMTk4NTgzMiBDMzcuNjMzNTMxNSwyMS4zMjI5MTUgNDAuNzY0MDU4OCwyMS41NzE1Nzg4IDQzLjg5NDU4NiwyMi45MzkyMjkzIEM0NC41OTAyNTg3LDIzLjA2MzU2MTIgNDYuMzI5NDQwNSwyMi44NzcwNjM0IDQ3LjUxMjA4NDEsMjMuMzEyMjI0OSBDNDcuNTgxNjUxNCwyMy4yNTAwNTkgNDcuNzkwMzUzMiwyMy4xMjU3MjcxIDQ3Ljg1OTkyMDUsMjMuMDYzNTYxMiBDNTEuODk0ODIyMiwyNC4xODI1NDggNTUuMzAzNjE4NSwyNi4xMDk2OTE5IDU5LjE5OTM4NTgsMjYuOTE3ODQ5IEw2MS42MzQyNDAzLDI3LjQxNTE3NjUgQzY1LjQ2MDQ0MDIsMjcuOTc0NjY5OSA2Ni4xNTYxMTI5LDI3Ljc4ODE3MjEgNjcuNjg2NTkyOSwyNy45MTI1MDQgQzY3Ljc1NjE2MDIsMjguMjg1NDk5NiA2OC41MjE0MDAyLDI4LjIyMzMzMzYgNjguNzk5NjY5MywyOS4wMzE0OTA3IE02OS45ODIzMTI5LDIyLjQ0MTkwMTggQzY5Ljk4MjMxMjksMTkuOTU1MjY0NSA3Mi4yMDg0NjU2LDE3Ljk2NTk1NDcgNzQuOTkxMTU2NCwxNy45NjU5NTQ3IEM3Ny43NzM4NDczLDE3Ljk2NTk1NDcgODAsMTkuOTU1MjY0NSA4MCwyMi40NDE5MDE4IEM4MCwyNC45Mjg1MzkyIDc3Ljc3Mzg0NzMsMjYuOTE3ODQ5IDc0Ljk5MTE1NjQsMjYuOTE3ODQ5IEM3Mi4yMDg0NjU2LDI2Ljk4MDAxNSA2OS45ODIzMTI5LDI0LjkyODUzOTIgNjkuOTgyMzEyOSwyMi40NDE5MDE4IiBpZD0iU2hhcGUiIGZpbGw9IiNEMjA1MTUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTM2LjM2MzYzNjQsNDEuNjk2OTY5NyBMNDMuODU4OTk4MSw0MS42OTY5Njk3IEM0OS43OTU5MTg0LDQxLjY5Njk2OTcgNTEuMjgwMTQ4NCw0My45NjAxMjc2IDUxLjI4MDE0ODQsNDkuNTE1MTUxNSBDNTEuMjgwMTQ4NCw1NC45MzMwMTQ0IDQ5LjU3MzI4MzksNTcuMzMzMzMzMyA0My44NTg5OTgxLDU3LjMzMzMzMzMgTDM2LjM2MzYzNjQsNTcuMzMzMzMzMyBMMzYuMzYzNjM2NCw0MS42OTY5Njk3IFogTTQzLjc4NDc4NjYsNTQuMzE1Nzg5NSBDNDYuMjMzNzY2Miw1NC4zMTU3ODk1IDQ3LjA1MDA5MjgsNTMuMTQ5OTIwMyA0Ny4wNTAwOTI4LDQ5LjUxNTE1MTUgQzQ3LjA1MDA5MjgsNDUuODgwMzgyOCA0Ni4yMzM3NjYyLDQ0LjcxNDUxMzYgNDMuNzg0Nzg2Niw0NC43MTQ1MTM2IEw0MC41OTM2OTIsNDQuNzE0NTEzNiBMNDAuNTkzNjkyLDU0LjM4NDM3IEw0My43ODQ3ODY2LDU0LjM4NDM3IEw0My43ODQ3ODY2LDU0LjMxNTc4OTUgWiBNNTguNjI3MDg3Miw0NC43MTQ1MTM2IEw1OC42MjcwODcyLDQ4LjM0OTI4MjMgTDY0LjkzNTA2NDksNDguMzQ5MjgyMyBMNjQuOTM1MDY0OSw1MS4yOTgyNDU2IEw1OC42MjcwODcyLDUxLjI5ODI0NTYgTDU4LjYyNzA4NzIsNTcuMzMzMzMzMyBMNTQuMzk3MDMxNSw1Ny4zMzMzMzMzIEw1NC4zOTcwMzE1LDQxLjY5Njk2OTcgTDY1Ljk3NDAyNiw0MS42OTY5Njk3IEw2NS45NzQwMjYsNDQuNjQ1OTMzIEw1OC42MjcwODcyLDQ0LjY0NTkzMyBMNTguNjI3MDg3Miw0NC43MTQ1MTM2IFogTTY4LjQ5NzIxNzEsNDEuNjk2OTY5NyBMNzIuNzI3MjcyNyw0MS42OTY5Njk3IEw3Mi43MjcyNzI3LDU0LjMxNTc4OTUgTDgwLDU0LjMxNTc4OTUgTDgwLDU3LjI2NDc1MjggTDY4LjU3MTQyODYsNTcuMjY0NzUyOCBMNjguNTcxNDI4Niw0MS42OTY5Njk3IEw2OC40OTcyMTcxLDQxLjY5Njk2OTcgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=\"","import * as React from \"react\";\nimport {StaticQuery, graphql, Link} from \"gatsby\";\nimport styled from \"styled-components\";\nimport ContactCardMain from \"./contactCardMain\";\nimport {\n px,\n colors,\n stage,\n smallRegular,\n WPAcfPostsProps,\n RowDiv,\n staticPageMap,\n staticPages,\n breakpoints,\n microRegular,\n} from \"../../models\";\nimport {trackFooterLinkClick} from \"../../util/tracking\";\n\nimport logoBLI from \"../../images/contactMainBLI.svg\";\nimport logoDFL from \"../../images/contactMainDFL.svg\";\n\nconst Cell = styled.div`\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 32px 0;\n background-color: ${colors.grayUltraLight};\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n padding: 64px 0;\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n padding: 0;\n }\n`;\n\nconst BottomRow = styled.div`\n min-height: unset;\n max-height: unset;\n\n display: flex;\n flex-direction: column;\n\n ${Cell} {\n &:nth-child(1) {\n margin-bottom: 2px;\n }\n }\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n flex-direction: row;\n min-height: 160px;\n max-height: 200px;\n\n ${Cell} {\n &:nth-child(1) {\n margin-bottom: 0;\n }\n }\n }\n`;\n\nconst FooterRow = styled.div`\n width: 100%;\n background-color: ${colors.black};\n`;\nconst FooterRowInner = styled.div`\n width: 100%;\n max-height: unset;\n min-height: unset;\n padding: 0;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n width: 100%;\n padding: 0 20px;\n max-height: 60px;\n min-height: 50px;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(stage.outerWidth)};\n margin: 0 auto;\n padding: 0;\n }\n`;\nconst FooterLinks = styled(RowDiv)`\n ${microRegular};\n height: 70px;\n justify-content: center;\n background-color: ${colors.grayDark};\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n ${smallRegular};\n background-color: ${colors.transparent};\n height: unset;\n }\n`;\nconst StaticPageLinks = styled(props => )`\n color: ${colors.white};\n\n &:hover {\n text-decoration: underline;\n }\n`;\nconst Separator = styled.div`\n margin: 0 10px;\n color: ${colors.white};\n`;\nconst FooterText = styled(RowDiv)`\n ${microRegular};\n color: ${colors.white};\n height: 70px;\n justify-content: center;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n height: unset;\n ${smallRegular};\n color: ${colors.white};\n }\n`;\n\ninterface QueryProps {\n wpPost: WPAcfPostsProps;\n}\nconst ContactListComp = () => {\n return (\n {\n const contactMainBLI = data.wpPost.contacts.mainBli[0];\n const contactMainDFL = data.wpPost.contacts.mainDfl[0];\n\n const legalNoticeLabel = staticPageMap.get(staticPages.legalNotice).label;\n const privacyPolicyLabel = staticPageMap.get(staticPages.privacyPolicy).label;\n const imprintLabel = staticPageMap.get(staticPages.imprint).label;\n return (\n \n \n \n \n | \n\n \n \n | \n \n\n \n \n \n trackFooterLinkClick(legalNoticeLabel)}\n >\n {legalNoticeLabel}\n \n\n |\n\n trackFooterLinkClick(privacyPolicyLabel)}\n >\n {privacyPolicyLabel}\n \n\n |\n\n trackFooterLinkClick(imprintLabel)}\n >\n {imprintLabel}\n \n \n\n © 2024 DFL Deutsche Fußball Liga e.V.\n \n \n
\n );\n }}\n />\n );\n};\n\nexport default ContactListComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n colors,\n smallRegular,\n smallBold,\n ContactPersonProps,\n px,\n breakpoints,\n microBold,\n microRegular,\n} from \"../../models\";\nimport {decryptMail} from \"../../util/util\";\n\nconst ContactCard = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n max-width: 100%;\n overflow: auto;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n width: 520px;\n max-width: 520px;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 10px 40px 30px;\n overflow: auto;\n }\n\n /* Desktop HD */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n }\n`;\n\ninterface AvaterProps {\n src: string;\n}\nconst Avatar = styled.div`\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n background-image: url(${(props: AvaterProps) => props.src});\n width: 70px;\n height: 70px;\n border-radius: 50%;\n align-self: center;\n margin-bottom: 16px;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n width: 100px;\n height: 100px;\n margin-bottom: 0;\n }\n`;\n\nconst ContactDetails = styled.div`\n margin-left: 0;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n margin-left: 50px;\n }\n\n /* Desktop HD */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n }\n`;\n\nconst Title = styled.div`\n ${microBold};\n text-align: center;\n margin-bottom: 6px;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n ${smallBold};\n margin-bottom: 10px;\n }\n`;\n\nconst Text = styled.div`\n ${microRegular};\n text-align: center;\n max-width: 340px;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n ${smallRegular};\n }\n`;\n\n// @ts-ignore //TODO: Fehler mit styled() ?\nconst Email = styled(Text)`\n color: ${colors.redDFL};\n cursor: pointer;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n color: ${colors.redDFL};\n }\n`;\n\nconst ContactCardComp = (props: ContactPersonProps) => {\n const {avatar, name, position, position_two, phone, email} = props;\n\n return (\n \n \n \n {name}\n {position}\n {position_two && {position_two}}\n {phone}\n {\n window.location.href = `mailto:${decryptMail(email)}`;\n }}\n >\n Send Email\n \n \n \n );\n};\n\nexport default ContactCardComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport ContactCardPerson from \"./contactCardPerson\";\nimport ContactFooter from \"./contactFooter\";\nimport {px, elementSizes, ContactPersonProps, FullpageHeadline} from \"../../models\";\n\nconst ContactList = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n padding-top: ${px(elementSizes.productPageMarginTop)};\n box-sizing: border-box;\n`;\n\nconst ContactRow = styled.div`\n margin: auto;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n padding-top: 36px;\n`;\nconst ContactWrapper = styled.div`\n margin-bottom: 50px;\n`;\n\ninterface ContactListCompProps {\n contactsDFL: ContactPersonProps[];\n contactsBLI: ContactPersonProps[];\n}\nconst ContactListComp = (props: ContactListCompProps) => {\n const {contactsBLI} = props;\n\n return (\n \n Your Local Contacts\n\n \n {contactsBLI.map((contact, i) => {\n return (\n \n \n \n \n
\n );\n })}\n \n\n \n \n );\n};\n\nexport default ContactListComp;\n","import React from \"react\";\nimport {StaticQuery, graphql} from \"gatsby\";\nimport {connect} from \"react-redux\";\nimport ContactList from \"./contactList\";\nimport {WPAcfPostsProps, DflRegionType} from \"../../models\";\nimport {AppState} from \"../../store/\";\nimport {acfFieldsToContactPersons} from \"../../util/util\";\n\ninterface QueryProps {\n wpPost: WPAcfPostsProps;\n}\n\n// COMPONENT PROPERTIES\ninterface PropsFromState {\n selectedRegion: DflRegionType;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n selectedRegion: state.system.selectedRegion,\n});\n\ninterface ContactListWithQueryState {\n selectedRegion: DflRegionType;\n}\nclass ContactListWithQuery extends React.Component {\n render() {\n return (\n {\n const contactsBLI = acfFieldsToContactPersons(data.wpPost.contacts.contactsBli);\n const contacts = contactsBLI.filter(contact => contact.market === this.props.selectedRegion);\n return (\n \n );\n }}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n)(ContactListWithQuery);\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {colors, stage, smallRegular, mediumBold, px, DescriptionColumnProps, breakpoints} from \"../../models\";\nimport {linesToTextArray} from \"../../util/util\";\n\nconst Column = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n padding: 0 22px;\n box-sizing: border-box;\n margin-bottom: 36px;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n padding: 0;\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(stage.columnWidth * 4 + stage.columnGap * 3)};\n padding: 0;\n margin-bottom: 0;\n }\n`;\n\nconst Title = styled.div`\n ${mediumBold};\n margin: 36px 0 32px;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n ${mediumBold};\n font-size: 30px;\n margin: -10px 0 25px;\n }\n`;\n\nconst DescriptionList = styled.ul`\n list-style: none;\n padding: 0;\n margin: 0;\n`;\n\nconst Description = styled.li`\n ${smallRegular};\n line-height: 1.3em;\n color: ${colors.grayDark};\n padding: 10px 4px 15px;\n border-bottom: 1px solid ${colors.grayLight};\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n padding: 10px 12px 15px;\n }\n`;\n\nconst DescriptionColumnComp = (props: DescriptionColumnProps) => {\n const {title, descriptions} = props;\n return (\n \n {title}\n \n {descriptions.map((description, i) => (\n \n {linesToTextArray(description).map((line, lineIndex) => (\n \n {line}\n
\n \n ))}\n \n ))}\n \n \n );\n};\n\nexport default DescriptionColumnComp;\n","import React from \"react\";\nimport ReactJWPlayer from \"react-jw-player\";\nimport {Waypoint} from \"react-waypoint\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\nimport {AppState} from \"../../store/\";\nimport {setCurrentJwPlayerIdAction} from \"../../store/system/actions\";\nimport {trackVideoPlayerAction} from \"../../util/tracking\";\n\nconst PLAYER_SCRIPT = \"https://cdn.jwplayer.com/libraries/FOfCxX5C.js\";\n\ninterface PropsFromState {\n currentJwPlayerId: string;\n}\n\ninterface PropsFromDispatch {\n setCurrentJwPlayerId: (newJwPlayerId: string) => void;\n}\ninterface VideoPlayerProps extends PropsFromState, PropsFromDispatch {\n playerId: string;\n}\n\ninterface VideoPlayerStates {\n isPlaying: boolean;\n playerId: string;\n loaded: boolean;\n}\n\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n currentJwPlayerId: state.system.currentJwPlayerId,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n setCurrentJwPlayerId: (newJwPlayerId: string) => {\n return dispatch(setCurrentJwPlayerIdAction(newJwPlayerId));\n },\n };\n};\n\nclass VideoPlayer extends React.Component {\n constructor(props: VideoPlayerProps) {\n super(props);\n this.onPlay = this.onPlay.bind(this);\n this.onPause = this.onPause.bind(this);\n this.onResume = this.onResume.bind(this);\n this.handleWaypointLeave = this.handleWaypointLeave.bind(this);\n // NOTE: using state for playerId for localized video change\n this.state = {isPlaying: false, playerId: this.props.playerId, loaded: false};\n }\n componentDidMount() {\n /* NOTE: temporary solution until this is merged.\n https://github.com/micnews/react-jw-player/issues/137 */\n setTimeout(() => {\n this.setState({\n loaded: true,\n });\n }, 500);\n }\n componentWillUnmount() {\n const {setCurrentJwPlayerId} = this.props;\n setCurrentJwPlayerId(null);\n }\n onPlay() {\n trackVideoPlayerAction({action: \"play\", videoId: this.state.playerId});\n const {setCurrentJwPlayerId} = this.props;\n setCurrentJwPlayerId(this.state.playerId);\n this.setState({isPlaying: true});\n }\n onPause() {\n trackVideoPlayerAction({action: \"pause\", videoId: this.state.playerId});\n this.setState({isPlaying: false});\n }\n onResume() {\n // the tracking document didn't list this event as one that should\n // be tracked so no event is fired\n const {setCurrentJwPlayerId} = this.props;\n setCurrentJwPlayerId(this.state.playerId);\n this.setState({isPlaying: true});\n }\n onEnterFullScreen = () => {\n trackVideoPlayerAction({action: \"fullscreen.true\", videoId: this.state.playerId});\n };\n onExitFullScreen = () => {\n trackVideoPlayerAction({action: \"fullscreen.false\", videoId: this.state.playerId});\n };\n onMute = () => {\n trackVideoPlayerAction({action: \"mute.true\", videoId: this.state.playerId});\n };\n onUnmute = () => {\n trackVideoPlayerAction({action: \"mute.false\", videoId: this.state.playerId});\n };\n onOneHundredPercent = () => {\n trackVideoPlayerAction({action: \"complete\", videoId: this.state.playerId});\n };\n\n handleWaypointLeave() {\n if (this.state.isPlaying) {\n window.jwplayer(this.state.playerId).pause();\n }\n }\n render() {\n const {playerId} = this.props;\n return (\n <>\n {this.state.loaded && (\n \n \n \n
\n \n )}\n >\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(VideoPlayer);\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {CTA, Column} from \"../../components\";\nimport {\n px,\n stage,\n DescriptionColumnProps,\n ButtonProps,\n WPHeadlineWithSubheadlineProps,\n mediumBold,\n baseRegular,\n DflRegionType,\n LocalizedVideoProps,\n LocalizedImageProps,\n breakpoints,\n} from \"../../models\";\nimport {slugify, columnSpan, getLocalizedVideo, getLocalizedImage} from \"../../util/util\";\nimport VideoPlayer from \"../videoPlayer/videoPlayer\";\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n`;\n\nconst DescriptionColumns = styled.div`\n width: 100%;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n width: ${px(stage.innerWidthTablet)};\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(stage.outerWidth)};\n flex-direction: row;\n }\n`;\n\nconst CTARow = styled.div`\n width: 100%;\n margin: 50px auto 0;\n display: flex;\n flex-direction: row;\n justify-content: center;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n width: ${px(stage.innerWidthTablet)};\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(stage.outerWidth)};\n }\n`;\nconst CTAWrapper = styled.div`\n position: relative;\n width: 100%;\n padding: 0 22px;\n margin-top: -36px;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(stage.columnWidth * 4 + stage.columnGap * 3)};\n margin-top: 0;\n }\n`;\n\nconst HeadlineWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst Headline = styled.div`\n ${mediumBold};\n margin-bottom: 16px;\n text-transform: uppercase;\n letter-spacing: 0.2em;\n`;\n\nconst Subheadline = styled.div`\n ${baseRegular};\n font-size: 20px;\n margin-bottom: 78px;\n`;\n\nconst Anchor = styled.div`\n position: absolute;\n top: -100px;\n`;\n\nconst LocalizedContentWrapper = styled.div`\n max-width: ${px(stage.outerWidth)};\n margin: auto;\n`;\n\nconst ContentWrapper = styled.div`\n max-width: ${px(columnSpan(10, stage.columnWidth, stage.columnGap))};\n margin-bottom: 60px;\n`;\nconst LocalizedImage = styled.img`\n width: 100%;\n`;\n\ninterface DescriptionColumnsCompProps {\n columns: DescriptionColumnProps[];\n cta?: ButtonProps;\n headline?: WPHeadlineWithSubheadlineProps;\n isLocalized: boolean;\n isImage?: boolean;\n isVideo?: boolean;\n localizedVideos?: LocalizedVideoProps;\n localizedImage?: LocalizedImageProps;\n selectedRegion: DflRegionType;\n}\nconst DescriptionColumnsComp = (props: DescriptionColumnsCompProps) => {\n const {\n columns,\n cta,\n headline,\n isLocalized,\n isImage,\n isVideo,\n localizedImage,\n localizedVideos,\n selectedRegion,\n } = props;\n const videoId = isLocalized && isVideo && getLocalizedVideo(localizedVideos, selectedRegion);\n const imageUrl = isLocalized && isImage && getLocalizedImage(localizedImage, selectedRegion);\n const useButton = cta && (cta.label && cta.label.length > 0) && (cta.link && cta.link.length > 0);\n\n return (\n \n {headline && (\n \n {headline.headline}\n {headline.subheadline}\n \n )}\n {isLocalized && (\n \n \n {isImage && }\n {isVideo && }\n \n \n )}\n \n {columns.map((column, i) => {\n const cleanedTitle = column.title.trim();\n return (\n \n );\n })}\n \n\n {useButton && (\n \n \n \n \n \n )}\n \n );\n};\n\nexport default DescriptionColumnsComp;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport {Link} from \"gatsby\";\nimport {Caret} from \"../../components\";\nimport {colors, mediumBold} from \"../../models\";\nimport {unslugify} from \"../../util/util\";\n\nconst CaretWrapper = styled.div`\n position: absolute;\n top: 4px;\n`;\nconst Cell = styled.div`\n position: relative;\n width: 100%;\n`;\nconst Text = styled.div`\n ${mediumBold};\n text-transform: uppercase;\n width: 100%;\n text-align: center;\n`;\n\nconst ButtonWrapper = styled(props => )`\n flex: 1;\n display: flex;\n flex-direction: row;\n align-items: center;\n background-color: ${colors.grayUltraLight};\n`;\nconst PrevNextButtons = styled.div`\n width: 100%;\n height: 320px;\n display: flex;\n flex-direction: row;\n /* align-items: center; */\n\n & ${ButtonWrapper}:nth-child(1) {\n margin-right: 4px;\n\n & ${CaretWrapper} {\n transform: rotate(90deg) scale(4);\n left: 80px;\n }\n }\n & ${ButtonWrapper}:nth-child(2) {\n & ${CaretWrapper} {\n transform: rotate(-90deg) scale(4);\n right: 80px;\n }\n }\n`;\n\ninterface PrevNextButtonsCompProps {\n previous: string;\n next: string;\n}\nconst PrevNextButtonsComp = (props: PrevNextButtonsCompProps) => {\n const { previous, next } = props;\n return (\n \n \n \n \n \n \n {unslugify(previous)}\n | \n \n \n \n \n \n \n {unslugify(next)}\n | \n \n \n );\n};\n\nexport default PrevNextButtonsComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Column, CTA, PinnedVisualAndContent} from \"../../components\";\nimport {\n stage,\n px,\n ProductDescriptionProps,\n productWithImageSizes,\n productWithVideoSizes,\n ProductWithImageSizeType,\n productWithDecorations,\n microBold,\n colors,\n decorationMap,\n ColorType,\n DflRegionType,\n breakpoints,\n MobileVisualWrapper,\n contentTypes,\n} from \"../../models\";\nimport {getLocalizedProductImage, getLocalizedVideo, slugify, columnSpan} from \"../../util/util\";\nimport VideoPlayer from \"../videoPlayer/videoPlayer\";\n\ninterface ProductWrapperProps {\n enhanced: boolean;\n}\nconst ProductWrapper = styled.div`\n width: 100%;\n position: relative;\n max-width: ${px(stage.maxWidth)};\n margin: auto;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 50px 0;\n background-color: ${(props: ProductWrapperProps) => (props.enhanced ? colors.grayUltraLight : \"none\")};\n`;\n\n// Sized Image and Video\ninterface SizedImageContainerProps {\n imageSize: ProductWithImageSizeType;\n layout: \"imageLeft\" | \"imageRight\";\n}\n\nconst SizedImageContainer = styled.div`\n width: ${(props: SizedImageContainerProps) =>\n props.imageSize === productWithImageSizes.small\n ? px(stage.columnWidth * 5 + stage.columnGap * 5)\n : px(stage.columnWidth * 7 + stage.columnGap * 7)};\n height: ${(props: SizedImageContainerProps) => (props.imageSize === productWithImageSizes.small ? px(290) : px(405))};\n order: ${(props: SizedImageContainerProps) => (props.layout === \"imageLeft\" ? -1 : 1)};\n margin-right: ${(props: SizedImageContainerProps) =>\n props.layout === \"imageLeft\" ? px(stage.columnWidth * 1 + stage.columnGap * 0.5) : 0};\n margin-left: ${(props: SizedImageContainerProps) =>\n props.layout === \"imageLeft\" ? 0 : px(stage.columnWidth * 1 + stage.columnGap * 0.5)};\n overflow: hidden;\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n`;\n\nconst SizedImage = styled.img`\n width: 100%;\n`;\n\n// text content\ninterface StageWidthContainerProps {\n width: number;\n layout: \"imageLeft\" | \"imageRight\";\n}\nconst StageWidthContainer = styled.div`\n width: ${(props: StageWidthContainerProps) => px(props.width)};\n margin: auto;\n display: flex;\n flex-direction: row;\n`;\n\ninterface DecorationProps {\n color: ColorType;\n}\nconst Decoration = styled.div`\n ${microBold};\n color: ${colors.white};\n background-color: ${(props: DecorationProps) => props.color};\n align-self: flex-start;\n padding: 10px 25px 8px;\n margin: 30px 0 0 22px;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n padding: 12px 30px 10px;\n margin: 30px 0 0 0;\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n padding: 12px 30px 10px;\n margin: 0 0 36px 0;\n }\n`;\n\nconst InfoBox = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n width: ${px(stage.innerWidthTablet)};\n margin: 0 auto;\n flex-direction: column;\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(stage.columnWidth * 4 + stage.columnGap * 3)};\n flex-direction: column;\n }\n`;\nconst ButtonWrapper = styled.div`\n margin-top: 0;\n width: 100%;\n padding: 0 22px;\n box-sizing: border-box;\n\n /* tablet */\n @media (min-width: ${px(breakpoints.tablet)}) {\n padding: 0;\n width: 353px;\n margin: 0 auto 0;\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n margin-top: 50px;\n }\n`;\n\nconst Anchor = styled.div`\n position: absolute;\n top: -80px;\n`;\n\nconst Image = styled.img`\n width: 100%;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n`;\n\ninterface ProductDescriptionComp extends ProductDescriptionProps {\n selectedRegion?: DflRegionType;\n screenWidth?: number;\n}\n\nconst ProductDescriptionComp = (props: ProductDescriptionComp) => {\n const {\n imageUrl,\n imageAltText,\n imageSize,\n title,\n descriptions,\n layout,\n button,\n decoration,\n isLocalized,\n localizedImages,\n localizedVideos,\n selectedRegion,\n videoId,\n videoSize,\n screenWidth,\n contentType,\n } = props;\n\n const localizedImageUrl = localizedImages && getLocalizedProductImage(localizedImages, selectedRegion);\n const localizedVideoId = localizedVideos && getLocalizedVideo(localizedVideos, selectedRegion);\n const isVideo = contentType === contentTypes.video;\n const isImage = contentType === contentTypes.image;\n\n const hasLocalizedImageLink = isImage && isLocalized && localizedImageUrl !== null;\n const imageSrc = hasLocalizedImageLink ? getLocalizedProductImage(localizedImages, selectedRegion) : imageUrl;\n\n const hasLocalizedVideoLink = isVideo && isLocalized && localizedVideoId !== null;\n const videoSrc = hasLocalizedVideoLink ? getLocalizedVideo(localizedVideos, selectedRegion) : videoId;\n\n const cleanedTitle = title.trim();\n\n // create the infoBox\n const infoBox = (\n \n {decoration !== productWithDecorations.none && (\n {decorationMap.get(decoration).label}\n )}\n \n\n {button && button.link && (\n \n \n \n )}\n \n );\n\n // create the visual element\n const visualElement = isImage ? (\n \n ) : isVideo ? (\n \n ) : null;\n\n // check type of visual and size\n const isLargeImage = isImage && imageSrc && imageSize === productWithImageSizes.large;\n const isSmallOrMediumImage = isImage && imageSrc && imageSize !== productWithImageSizes.large;\n const isLargeVideo = isVideo && videoSrc && videoSize === productWithVideoSizes.large;\n const isMediumVideo = isVideo && videoSrc && videoSize === productWithVideoSizes.medium;\n\n return (\n \n \n\n {/* desktop size large image or video*/}\n {screenWidth >= 1440 && (isLargeImage || isLargeVideo) && (\n \n )}\n\n {/* desktop size small or medium image*/}\n {screenWidth >= 1440 && isSmallOrMediumImage && (\n \n {contentType === contentTypes.image && (\n \n \n \n )}\n {/* infobox */}\n {infoBox}\n \n )}\n\n {/* desktop size medium video*/}\n {screenWidth >= 1440 && isMediumVideo && (\n \n {/* video */}\n {contentType === contentTypes.video && (\n \n \n \n )}\n\n {/* infobox */}\n {infoBox}\n \n )}\n\n {/* mobile sizes */}\n {screenWidth < 1440 && (\n \n {visualElement}\n\n {infoBox}\n
\n )}\n \n );\n};\n\nexport default ProductDescriptionComp;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport {colors, stage, hugeBold, px, mediumBold} from \"../../models\";\n\nconst ProductHeader = styled.div`\n width: 100%;\n`;\n\nconst Caption = styled.div`\n ${mediumBold};\n color: ${colors.redDFL};\n width: ${px(stage.innerWidth)};\n margin: 0 auto 32px;\n`;\nconst Headline = styled.div`\n ${hugeBold};\n color: ${colors.black};\n text-transform: uppercase;\n line-height: 1em;\n width: ${px(stage.outerWidth)};\n margin: 0 auto;\n`;\n\n\ninterface ProductHeaderCompProps {\n caption: string;\n title: string;\n}\nconst ProductHeaderComp = (props: ProductHeaderCompProps) => {\n const { caption, title } = props;\n return (\n \n {caption}\n {title}\n \n );\n};\n\nexport default ProductHeaderComp;\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';\nvar types = ['client', 'offset', 'scroll', 'bounds', 'margin'];\n\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 * Returns the global window object associated with provided element.\n */\n\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 = /*#__PURE__*/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;\nexport default Measure;\nexport { withContentRect };","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport Measure, {ContentRect} from \"react-measure\";\nimport {PinnedVisualAndContent} from \"../../components\";\nimport {stage, mediumLight, px} from \"../../models\";\nimport {columnSpan} from \"../../util/util\";\n\n// Image\nconst ProductIntro = styled.div`\n width: 100%;\n max-width: ${px(stage.maxWidth)};\n margin: auto;\n display: flex;\n`;\n\nconst TextWrap = styled.div`\n ${mediumLight};\n position: relative;\n line-height: 1.8em;\n width: 100%;\n`;\n\nconst Image = styled.img`\n width: 100%;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n`;\n\n// COMPONENT\ninterface ProductIntroCompProps {\n image: string;\n imageAltText?: string;\n text: string;\n imageSize: \"small\" | \"medium\";\n}\ninterface ProductIntroCompState {\n fullWidth: number;\n}\nclass ProductIntroComp extends React.Component {\n constructor(props: ProductIntroCompProps) {\n super(props);\n this.state = {\n fullWidth: 0,\n };\n this.handleResize = this.handleResize.bind(this);\n }\n\n render() {\n const {text, image, imageSize, imageAltText} = this.props;\n const textWidth = (imageSize === \"small\")\n ? columnSpan(6, stage.columnWidth, stage.columnGap)\n : columnSpan(4, stage.columnWidth, stage.columnGap);\n const gapWidth = stage.columnWidth + (stage.columnGap * 1.5);\n\n\n return (\n \n
\n {({measureRef: mapRef}) => (\n \n {text}\n }\n visualElement={}\n gapWidth={gapWidth}\n visualPosition=\"right\"\n />\n \n )}\n \n
\n );\n }\n\n handleResize(contentRect: ContentRect) {\n this.setState({\n fullWidth: (contentRect.entry && contentRect.entry.width) || 0,\n });\n }\n}\n\nexport default ProductIntroComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport Measure, {ContentRect} from \"react-measure\";\nimport {stage, px} from \"../models\";\n\n\n// Image\nconst PinnedImageRow = styled.div`\n width: 100%;\n max-width: ${px(stage.maxWidth)};\n margin: auto;\n display: flex;\n flex-direction: row;\n`;\n\ninterface ContentWrapperProps {\n marginLeft: number;\n width: number;\n}\nconst ContentWrapper = styled.div`\n margin-left: ${(props: ContentWrapperProps) => px(props.marginLeft)};\n width: ${(props: ContentWrapperProps) => px(props.width)};\n`;\n\n\ninterface ImageWrapperProps {\n marginLeft: number;\n width: number;\n isLeft: boolean;\n}\nconst VisualContentWrapper = styled.div`\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n margin-left: ${(props: ImageWrapperProps) => px(props.marginLeft)};\n order: ${(props: ImageWrapperProps) => props.isLeft ? -1 : 1};\n width: ${(props: ImageWrapperProps) => px(props.width)};\n height: ${(props: ImageWrapperProps) => px((props.width / 16) * 9)};\n overflow: hidden;\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n`;\n\n\n// COMPONENT\ninterface PinnedImageRowCompProps {\n stageWidth: number;\n visualPosition: \"left\" | \"right\";\n visualElement: JSX.Element;\n contentElement: JSX.Element;\n contentWidth: number;\n gapWidth: number;\n}\ninterface PinnedImageRowCompState {\n elementWidth: number;\n}\nclass PinnedImageRowComp extends React.Component {\n constructor(props: PinnedImageRowCompProps) {\n super(props);\n this.state = {\n elementWidth: 0,\n };\n this.handleResize = this.handleResize.bind(this);\n }\n\n render() {\n const {stageWidth, visualPosition, visualElement, contentElement, contentWidth, gapWidth} = this.props;\n const {elementWidth} = this.state;\n \n const offsetWidth = (elementWidth - stageWidth) / 2;\n const imageWidth = elementWidth - (offsetWidth + contentWidth + gapWidth);\n const isVisualLeft = visualPosition === \"left\";\n\n return (\n \n {({measureRef: mapRef}) => (\n \n {contentElement}\n \n\n \n {visualElement}\n \n \n )}\n \n );\n }\n\n handleResize(contentRect: ContentRect) {\n this.setState({\n elementWidth: (contentRect.entry && contentRect.entry.width) || 0,\n });\n }\n}\n\nexport default PinnedImageRowComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {px} from \"../models\";\n\nconst GridWrapper = styled.div`\n width: 100vw;\n height: 100vh;\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1000;\n pointer-events: none;\n`;\n\ninterface GridProps {\n width: number;\n}\nconst Grid = styled.div`\n width: ${(props: GridProps) => px(props.width)};\n margin: 0 auto;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\ninterface GridColumnProps {\n width: number;\n borderColor?: string;\n fillColor?: string;\n}\nconst GridColumn = styled.div`\n width: ${(props: GridColumnProps) => px(props.width)};\n box-sizing: border-box;\n background-color: ${(props: GridColumnProps) => (props.fillColor ? props.fillColor : \"none\")};\n opacity: 0.15;\n border-left: 1px solid ${(props: GridColumnProps) => (props.borderColor ? props.borderColor : \"rgba(255, 0, 0, 0.15)\")};\n border-right: 1px solid ${(props: GridColumnProps) => (props.borderColor ? props.borderColor : \"rgba(255, 0, 0, 0.15)\")};\n`;\n\ninterface GridCompProps {\n width: number;\n columns: number;\n columnWidth: number;\n borderColor?: string;\n fillColor?: string;\n enabled?: boolean;\n}\nconst GridComp = (props: GridCompProps) => {\n const {width, columns, columnWidth, borderColor, fillColor, enabled} = props;\n const columnsArray = [];\n for (let i = 0; i < columns; i += 1) {\n columnsArray.push(\n ,\n );\n }\n return (enabled !== undefined && enabled === false) ? null :\n (\n {columnsArray}\n );\n};\n\nexport default GridComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Link} from \"gatsby\";\nimport {Caret} from \"../../../components\";\nimport {\n RundownBlockSizeType,\n rundownBlockSizes,\n px,\n RowDiv,\n colors,\n ColorType,\n condensedMicroRegular,\n condensedMicroBold,\n condensedMacroBold,\n RundownBlockProps,\n RundownSpaceProps,\n rundownElementTypes,\n ColumnDiv,\n UTCTimeStateType,\n utcTimeStates,\n WeekDayType,\n DFL_UTC_OFFSET,\n} from \"../../../models\";\nimport {displayBroadcastTimeByLocalTimezoneOffset, createBroadcastDate} from \"../../../util/util\";\n\nconst RundownSection = styled(RowDiv)`\n width: 100%;\n align-items: flex-end;\n`;\n\n// Rundown Block\ninterface RundownBlockWrapperProps {\n size: RundownBlockSizeType;\n}\nconst RundownBlockWrapper = styled.div`\n width: ${(props: RundownBlockWrapperProps) =>\n props.size === rundownBlockSizes.l ? px(200) : props.size === rundownBlockSizes.m ? px(140) : px(80)};\n position: relative;\n`;\nconst RundownTimesRow = styled(RowDiv)`\n justify-content: space-between;\n margin-bottom: 4px;\n`;\nconst RundownTime = styled.div`\n ${condensedMicroRegular};\n color: ${colors.black};\n`;\ninterface RundownBlockDivProps {\n color: ColorType;\n}\nconst RundownBlockDiv = styled(RowDiv)`\n ${condensedMicroBold};\n background-color: ${(props: RundownBlockDivProps) => props.color};\n height: 45px;\n padding-left: 10px;\n color: ${colors.white};\n text-transform: uppercase;\n`;\n// Rundown Block Infobox\nconst BlockInfobox = styled.div`\n position: absolute;\n width: 100%;\n border-left: 1px solid ${colors.redDFL};\n`;\nconst ProductLink = styled(props => )`\n ${condensedMicroBold};\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n`;\nconst LinkDescription = styled.div`\n ${condensedMicroRegular};\n margin: 6px 6px 0 6px;\n`;\nconst CaretWrapper = styled.div`\n width: 8px;\n min-width: 8px;\n height: 8px;\n min-height: 8px;\n transform: rotate(-90deg);\n margin: 11px 8px -2px 0;\n`;\nconst LinkLabel = styled.div`\n margin-top: 6px;\n ${condensedMacroBold};\n font-size: 12px;\n\n &:hover {\n color: ${colors.redDFL};\n text-decoration: underline;\n }\n`;\n\n// Rundown Space\nconst SpaceWrapper = styled(ColumnDiv)`\n justify-content: flex-end;\n\n ${RundownTime} {\n padding: 0 2px;\n text-align: center;\n }\n flex-grow: 1;\n`;\nconst Space = styled.div`\n background-color: ${colors.grayLight};\n height: 15px;\n min-width: 10px;\n`;\n\ninterface RundownSectionCompProps {\n feed: [RundownBlockProps | RundownSpaceProps];\n selectedUTCOffset?: UTCTimeStateType;\n selectedWeekDay?: WeekDayType;\n selectedPreMatchStartAndEndTime?: [number, number, number, number];\n selectedLiveMatchFirstHalfStartAndEndTime?: [number, number, number, number];\n selectedLiveMatchSecondHalfStartAndEndTime?: [number, number, number, number];\n selectedPostMatchStartAndEndTime?: [number, number, number, number];\n selectedDigitalHighlightsClipsTime?: [number, number];\n selectedSlowMotionPlayOutsTime?: [number, number];\n selectedPostMatchInterviewsTime?: [number, number];\n localUTCOffset?: number;\n}\nconst RundownSectionComp = (props: RundownSectionCompProps) => {\n const {\n feed,\n selectedUTCOffset,\n localUTCOffset,\n selectedWeekDay,\n selectedPreMatchStartAndEndTime,\n selectedLiveMatchFirstHalfStartAndEndTime,\n selectedLiveMatchSecondHalfStartAndEndTime,\n selectedPostMatchStartAndEndTime,\n selectedDigitalHighlightsClipsTime,\n selectedSlowMotionPlayOutsTime,\n selectedPostMatchInterviewsTime,\n } = props;\n\n const utcOffsetToUse = selectedUTCOffset === utcTimeStates.localTime ? localUTCOffset : DFL_UTC_OFFSET;\n\n return (\n \n {feed.map((product, productIndex) => {\n const {\n color,\n description,\n endTime,\n label,\n link,\n minutes,\n size,\n startTime,\n subLabel,\n timePrefix,\n type,\n leftPosition,\n } = product;\n const isBlockElementType = type === rundownElementTypes.block;\n\n let matchStartTimeHours: number = 0;\n let matchStartTimeMinutes: number = 0;\n let matchEndTimeHours: number = 0;\n let matchEndTimeMinutes: number = 0;\n\n if (label === \"Pre-Match\") {\n matchStartTimeHours = selectedPreMatchStartAndEndTime[0];\n matchStartTimeMinutes = selectedPreMatchStartAndEndTime[1];\n matchEndTimeHours = selectedPreMatchStartAndEndTime[2];\n matchEndTimeMinutes = selectedPreMatchStartAndEndTime[3];\n }\n\n if (label === \"Live Match\" && subLabel === \"1st half\") {\n matchStartTimeHours = selectedLiveMatchFirstHalfStartAndEndTime[0];\n matchStartTimeMinutes = selectedLiveMatchFirstHalfStartAndEndTime[1];\n matchEndTimeHours = selectedLiveMatchFirstHalfStartAndEndTime[2];\n matchEndTimeMinutes = selectedLiveMatchFirstHalfStartAndEndTime[3];\n }\n\n if (label === \"Live Match\" && subLabel === \"2nd half\") {\n matchStartTimeHours = selectedLiveMatchSecondHalfStartAndEndTime[0];\n matchStartTimeMinutes = selectedLiveMatchSecondHalfStartAndEndTime[1];\n matchEndTimeHours = selectedLiveMatchSecondHalfStartAndEndTime[2];\n matchEndTimeMinutes = selectedLiveMatchSecondHalfStartAndEndTime[3];\n }\n\n if (label === \"Post-Match\") {\n matchStartTimeHours = selectedPostMatchStartAndEndTime[0];\n matchStartTimeMinutes = selectedPostMatchStartAndEndTime[1];\n matchEndTimeHours = selectedPostMatchStartAndEndTime[2];\n matchEndTimeMinutes = selectedPostMatchStartAndEndTime[3];\n }\n\n if (link && link.label === \"Digital Highlights Clips\") {\n matchStartTimeHours = selectedDigitalHighlightsClipsTime[0];\n matchStartTimeMinutes = selectedDigitalHighlightsClipsTime[1];\n matchEndTimeHours = 0;\n matchEndTimeMinutes = 0;\n }\n\n if (link && link.label === \"Slow-Motion Play-Outs\") {\n matchStartTimeHours = selectedSlowMotionPlayOutsTime[0];\n matchStartTimeMinutes = selectedSlowMotionPlayOutsTime[1];\n matchEndTimeHours = 0;\n matchEndTimeMinutes = 0;\n }\n\n if (link && link.label === \"Post-Match Interviews\") {\n matchStartTimeHours = selectedPostMatchInterviewsTime[0];\n matchStartTimeMinutes = selectedPostMatchInterviewsTime[1];\n matchEndTimeHours = 0;\n matchEndTimeMinutes = 0;\n }\n\n const getProductStartTime = startTime\n ? displayBroadcastTimeByLocalTimezoneOffset(\n utcOffsetToUse,\n createBroadcastDate(selectedWeekDay, matchStartTimeHours, matchStartTimeMinutes),\n selectedWeekDay,\n )\n : null;\n\n const getProductEndTime = endTime\n ? displayBroadcastTimeByLocalTimezoneOffset(\n utcOffsetToUse,\n createBroadcastDate(selectedWeekDay, matchEndTimeHours, matchEndTimeMinutes),\n selectedWeekDay,\n )\n : null;\n\n const startTimeWithOffset = isBlockElementType ? getProductStartTime : null;\n const endTimeWithOffset = isBlockElementType ? getProductEndTime : null;\n\n const element = isBlockElementType ? (\n \n {(startTime || endTime) && (\n \n {startTime && {`${timePrefix ? timePrefix : \"\"}${startTimeWithOffset}`}}\n {endTime && {endTimeWithOffset}}\n \n )}\n\n {label}\n\n \n {description && {description}}\n {link && (\n \n \n \n \n {link.label}\n \n )}\n \n \n ) : (\n \n {minutes ? (minutes > 0 ? `+${minutes}` : minutes) : \"\"}\n \n \n );\n\n return element;\n })}\n \n );\n};\n\nexport default RundownSectionComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Link} from \"gatsby\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\n\nimport RundownSection from \"./rundownSection\";\nimport {Caret, CustomSelect, NativeSelect} from \"../../../components\";\nimport {\n ColumnDiv,\n UTCTimeStateType,\n utcTimeStates,\n utcTimeStateMap,\n px,\n stage,\n RundownBlockProps,\n RundownSpaceProps,\n RowDiv,\n condensedMicroBold,\n componentBreakpoints,\n colors,\n CenteredDiv,\n FullpageHeadline,\n FullpageSubheadline,\n breakpoints,\n fonts,\n fontSizesPx,\n RundownSelectMenuValues,\n weekDays,\n WeekDayType,\n rundownTimeMap,\n} from \"../../../models\";\nimport {AppState} from \"../../../store\";\nimport {updateUTCTimeOffsetAction} from \"../../../store/schedule/actions\";\nimport {\n updateSelectedDateOptionAction,\n updateSelectedWeekDayAction,\n updateSelectedPreMatchStartAndEndTimeAction,\n updateSelectedLiveMatchFirstHalfStartAndEndTimeAction,\n updateSelectedLiveMatchSecondHalfStartAndEndTimeAction,\n updateSelectedPostMatchStartAndEndTimeAction,\n updateSelectedDigitalHighlightsClipsTimeAction,\n updateSelectedSlowMotionPlayOutsTimeAction,\n updateSelectedPostMatchInterviewsTimeAction,\n} from \"../../../store/rundown/actions\";\nimport {rundownDatesSelectOptionsDesktop, rundownDatesSelectOptionsNative} from \"../../../util/content\";\n\n// COMPONENT PROPERTIES\ninterface PropsFromState {\n selectedTimeOffset: UTCTimeStateType;\n selectedDateOption: any;\n localUTCOffset: number;\n localUTCOffsetText: string;\n selectedWeekDay: WeekDayType;\n selectedPreMatchStartAndEndTime: [number, number, number, number];\n selectedLiveMatchFirstHalfStartAndEndTime: [number, number, number, number];\n selectedLiveMatchSecondHalfStartAndEndTime: [number, number, number, number];\n selectedPostMatchStartAndEndTime: [number, number, number, number];\n selectedDigitalHighlightsClipsTime: [number, number];\n selectedSlowMotionPlayOutsTime: [number, number];\n selectedPostMatchInterviewsTime: [number, number];\n screenWidth: number;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n selectedTimeOffset: state.schedule.selectedUTCTimeOffset,\n localUTCOffset: state.system.utcOffset,\n localUTCOffsetText: state.system.localUTCOffsetText,\n selectedDateOption: state.rundown.selectedDateOption,\n selectedWeekDay: state.rundown.selectedWeekDay,\n selectedPreMatchStartAndEndTime: state.rundown.selectedPreMatchStartAndEndTime,\n selectedLiveMatchFirstHalfStartAndEndTime: state.rundown.selectedLiveMatchFirstHalfStartAndEndTime,\n selectedLiveMatchSecondHalfStartAndEndTime: state.rundown.selectedLiveMatchSecondHalfStartAndEndTime,\n selectedPostMatchStartAndEndTime: state.rundown.selectedPostMatchStartAndEndTime,\n selectedDigitalHighlightsClipsTime: state.rundown.selectedDigitalHighlightsClipsTime,\n selectedSlowMotionPlayOutsTime: state.rundown.selectedSlowMotionPlayOutsTime,\n selectedPostMatchInterviewsTime: state.rundown.selectedPostMatchInterviewsTime,\n screenWidth: state.system.screenWidth,\n});\n\ninterface PropsFromDispatch {\n updateSelectedTimeOffset: (newOffsetState: UTCTimeStateType) => void;\n updateSelectedDateOption: (newDateState: string) => void;\n updateSelectedWeekDay: (newWeekDayState: any) => void;\n updateSelectedPreMatchStartAndEndTime: (\n newSelectedPreMatchStartAndEndTimeState: [number, number, number, number],\n ) => void;\n updateSelectedLiveMatchFirstHalfStartAndEndTime: (\n newSelectedLiveMatchFirstHalfStartAndEndTimesState: [number, number, number, number],\n ) => void;\n updateSelectedLiveMatchSecondHalfStartAndEndTime: (\n newSelectedLiveMatchSecondHalfStartAndEndTimesState: [number, number, number, number],\n ) => void;\n updateSelectedPostMatchStartAndEndTime: (\n newSelectedPostMatchStartAndEndTimeState: [number, number, number, number],\n ) => void;\n updateSelectedDigitalHighlightsClipsTime: (newSelectedDigitalHighlightsClipsTimeState: [number, number]) => void;\n updateSelectedSlowMotionPlayOutsTime: (newSelectedDSlowMotionPlayOutsTimeState: [number, number]) => void;\n updateSelectedPostMatchInterviewsTime: (newSelectedPostMatchInterviewsTimeState: [number, number]) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n updateSelectedTimeOffset: (newOffsetState: UTCTimeStateType) => {\n return dispatch(updateUTCTimeOffsetAction(newOffsetState));\n },\n updateSelectedDateOption: (newDateState: string) => {\n return dispatch(updateSelectedDateOptionAction(newDateState));\n },\n updateSelectedWeekDay: (newWeekDayState: any) => {\n return dispatch(updateSelectedWeekDayAction(newWeekDayState));\n },\n updateSelectedPreMatchStartAndEndTime: (\n newSelectedPreMatchStartAndEndTimeState: [number, number, number, number],\n ) => {\n return dispatch(updateSelectedPreMatchStartAndEndTimeAction(newSelectedPreMatchStartAndEndTimeState));\n },\n updateSelectedLiveMatchFirstHalfStartAndEndTime: (\n newSelectedLiveMatchFirstHalfStartAndEndTimeState: [number, number, number, number],\n ) => {\n return dispatch(\n updateSelectedLiveMatchFirstHalfStartAndEndTimeAction(newSelectedLiveMatchFirstHalfStartAndEndTimeState),\n );\n },\n updateSelectedLiveMatchSecondHalfStartAndEndTime: (\n newSelectedLiveMatchSecondHalfStartAndEndTimeState: [number, number, number, number],\n ) => {\n return dispatch(\n updateSelectedLiveMatchSecondHalfStartAndEndTimeAction(newSelectedLiveMatchSecondHalfStartAndEndTimeState),\n );\n },\n updateSelectedPostMatchStartAndEndTime: (\n newSelectedPostMatchStartAndEndTimeState: [number, number, number, number],\n ) => {\n return dispatch(updateSelectedPostMatchStartAndEndTimeAction(newSelectedPostMatchStartAndEndTimeState));\n },\n updateSelectedDigitalHighlightsClipsTime: (newSelectedDigitalHighlightsClipsTimeState: [number, number]) => {\n return dispatch(updateSelectedDigitalHighlightsClipsTimeAction(newSelectedDigitalHighlightsClipsTimeState));\n },\n updateSelectedSlowMotionPlayOutsTime: (newSelectedSlowMotionPlayOutsTimeState: [number, number]) => {\n return dispatch(updateSelectedSlowMotionPlayOutsTimeAction(newSelectedSlowMotionPlayOutsTimeState));\n },\n updateSelectedPostMatchInterviewsTime: (newSelectedPostMatchInterviewsTimeState: [number, number]) => {\n return dispatch(updateSelectedPostMatchInterviewsTimeAction(newSelectedPostMatchInterviewsTimeState));\n },\n };\n};\n\nconst RundownWrapper = styled(ColumnDiv)`\n width: 100%;\n height: 100%;\n justify-content: flex-start;\n padding-top: 100px;\n`;\nconst RundownStage = styled.div`\n margin: 0 0 0 20px;\n\n /* Desktop HD */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n margin: 0 auto;\n }\n`;\n\nconst OverflowScroll = styled.div`\n width: 100%;\n overflow-x: scroll;\n position: relative;\n\n /* Desktop HD */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n overflow-x: visible;\n }\n`;\nconst RundownGraphicWrapper = styled(ColumnDiv)`\n width: ${px(stage.outerWidth)};\n padding-right: 20px;\n\n /* Desktop HD */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n padding-right: 0;\n }\n\n /* Desktop HD */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n padding-right: 0;\n }\n`;\n\nconst SelectDescription = styled.p`\n font-size: ${fontSizesPx.xsSmall};\n`;\n\nconst SelectMenu = styled(CustomSelect)`\n display: inline-block;\n margin-right: 20px;\n\n div {\n padding: 0;\n }\n &.select-menu-date {\n font-weight: bold;\n }\n`;\n\nconst NativeSelectCaret = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n width: 8px;\n`;\n\nconst NativeSelectContainer = styled.div`\n position: relative;\n display: inline-block;\n min-width: 120px;\n margin-right: 20px;\n`;\n\nconst SelectWrapper = styled.div`\n margin-bottom: 72px;\n`;\n\n// Rundown Graphic\nconst RundownElements = styled(RowDiv)`\n width: 100%;\n align-items: flex-end;\n`;\nconst WorldFeedElements = styled.div`\n width: 930px;\n flex-shrink: 0;\n`;\nconst AfterWorldFeedElements = styled(RowDiv)`\n width: 930px;\n align-items: flex-end;\n`;\n\nconst WorldFeedLinkRow = styled(RowDiv)`\n margin-top: 100px;\n width: 100%;\n`;\nconst AdditionalLinkRow = styled(RowDiv)`\n margin-top: 10px;\n width: 100%;\n`;\nconst WorldFeedLinkArea = styled(RowDiv)`\n width: 930px;\n`;\nconst GoalArenaLinkArea = styled(RowDiv)`\n width: 930px;\n`;\nconst CaretWrapper = styled(CenteredDiv)`\n width: 8px;\n height: 8px;\n transform: rotate(-90deg);\n margin: 12px 8px 0px -2px;\n`;\nconst WorldFeedLink = styled(props => )`\n ${condensedMicroBold};\n color: ${colors.black};\n margin-right: 4px;\n text-transform: uppercase;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n`;\nconst WorldFeedLinkLineWrapper = styled(RowDiv)`\n flex-grow: 1;\n border-right: 1px solid ${colors.redDFL};\n box-sizing: border-box;\n height: 9px;\n`;\nconst WorldFeedLinkLine = styled.div`\n width: 100%;\n background-color: ${colors.redDFL};\n height: 1px;\n`;\n\nconst HeadlineWrapper = styled.div`\n margin-bottom: 80px;\n width: 100%;\n`;\n\nconst Footnote = styled.p<{isMobile?: boolean}>`\n font-family: ${fonts.condensedFont};\n font-size: ${fontSizesPx.micro};\n color: ${p => (p.isMobile ? colors.black : colors.redDFL)};\n`;\n\ninterface OptionValueLabel {\n value: UTCTimeStateType;\n label: string;\n}\n\ninterface RundownCompProps extends PropsFromState, PropsFromDispatch {\n headline: string;\n intro: string;\n worldFeed: [RundownBlockProps | RundownSpaceProps];\n afterWorldFeed: [RundownBlockProps | RundownSpaceProps];\n selectedWeekDay: WeekDayType;\n}\n\nclass RundownComp extends React.Component {\n constructor(props: RundownCompProps) {\n super(props);\n this.onSelectTimeChange = this.onSelectTimeChange.bind(this);\n }\n onSelectTimeChange(weekday: WeekDayType, label: RundownSelectMenuValues) {\n const {\n updateSelectedWeekDay,\n updateSelectedPreMatchStartAndEndTime,\n updateSelectedLiveMatchFirstHalfStartAndEndTime,\n updateSelectedLiveMatchSecondHalfStartAndEndTime,\n updateSelectedPostMatchStartAndEndTime,\n updateSelectedDigitalHighlightsClipsTime,\n updateSelectedSlowMotionPlayOutsTime,\n updateSelectedPostMatchInterviewsTime,\n } = this.props;\n updateSelectedWeekDay(weekday);\n updateSelectedPreMatchStartAndEndTime([\n rundownTimeMap.get(label).preMatchStart.hours,\n rundownTimeMap.get(label).preMatchStart.minutes,\n rundownTimeMap.get(label).preMatchEnd.hours,\n rundownTimeMap.get(label).preMatchEnd.minutes,\n ]);\n updateSelectedLiveMatchFirstHalfStartAndEndTime([\n rundownTimeMap.get(label).liveMatchFirstHalfStart.hours,\n rundownTimeMap.get(label).liveMatchFirstHalfStart.minutes,\n rundownTimeMap.get(label).liveMatchFirstHalfEnd.hours,\n rundownTimeMap.get(label).liveMatchFirstHalfEnd.minutes,\n ]);\n updateSelectedLiveMatchSecondHalfStartAndEndTime([\n rundownTimeMap.get(label).liveMatchSecondHalfStart.hours,\n rundownTimeMap.get(label).liveMatchSecondHalfStart.minutes,\n rundownTimeMap.get(label).liveMatchSecondHalfEnd.hours,\n rundownTimeMap.get(label).liveMatchSecondHalfEnd.minutes,\n ]);\n updateSelectedPostMatchStartAndEndTime([\n rundownTimeMap.get(label).postMatchStart.hours,\n rundownTimeMap.get(label).postMatchStart.minutes,\n rundownTimeMap.get(label).postMatchEnd.hours,\n rundownTimeMap.get(label).postMatchEnd.minutes,\n ]);\n updateSelectedDigitalHighlightsClipsTime([\n rundownTimeMap.get(label).digitalHightlightClips.hours,\n rundownTimeMap.get(label).digitalHightlightClips.minutes,\n ]);\n updateSelectedSlowMotionPlayOutsTime([\n rundownTimeMap.get(label).slowMotionPlayOuts.hours,\n rundownTimeMap.get(label).slowMotionPlayOuts.minutes,\n ]);\n updateSelectedPostMatchInterviewsTime([\n rundownTimeMap.get(label).postMatchInterviews.hours,\n rundownTimeMap.get(label).postMatchInterviews.minutes,\n ]);\n }\n componentDidUpdate(prevProps) {\n const {selectedDateOption} = this.props;\n\n if (selectedDateOption !== prevProps.selectedDateOption) {\n const {\n fridayNight,\n saturdayAfternoon,\n saturdayNight,\n sundayLunch,\n sundayAfternoon,\n sundayNight,\n mondayNight,\n tuesdayNight,\n tuesdayLateNight,\n wednesdayNight,\n wednesdayLateNight,\n } = RundownSelectMenuValues;\n switch (selectedDateOption) {\n case fridayNight:\n this.onSelectTimeChange(weekDays.friday, fridayNight);\n break;\n case saturdayAfternoon:\n this.onSelectTimeChange(weekDays.saturday, saturdayAfternoon);\n break;\n case saturdayNight:\n this.onSelectTimeChange(weekDays.saturday, saturdayNight);\n break;\n case sundayLunch:\n this.onSelectTimeChange(weekDays.sunday, sundayLunch);\n break;\n case sundayAfternoon:\n this.onSelectTimeChange(weekDays.sunday, sundayAfternoon);\n break;\n case sundayNight:\n this.onSelectTimeChange(weekDays.sunday, sundayNight);\n break;\n case mondayNight:\n this.onSelectTimeChange(weekDays.monday, mondayNight);\n break;\n case tuesdayNight:\n this.onSelectTimeChange(weekDays.tuesday, tuesdayNight);\n break;\n case tuesdayLateNight:\n this.onSelectTimeChange(weekDays.tuesday, tuesdayLateNight);\n break;\n case wednesdayNight:\n this.onSelectTimeChange(weekDays.wednesday, wednesdayNight);\n break;\n case wednesdayLateNight:\n this.onSelectTimeChange(weekDays.wednesday, wednesdayLateNight);\n break;\n default:\n }\n }\n }\n render() {\n const {\n headline,\n intro,\n worldFeed,\n afterWorldFeed,\n localUTCOffset,\n localUTCOffsetText,\n selectedTimeOffset,\n updateSelectedTimeOffset,\n updateSelectedDateOption,\n selectedDateOption,\n selectedWeekDay,\n selectedPreMatchStartAndEndTime,\n selectedLiveMatchFirstHalfStartAndEndTime,\n selectedLiveMatchSecondHalfStartAndEndTime,\n selectedPostMatchStartAndEndTime,\n selectedDigitalHighlightsClipsTime,\n selectedPostMatchInterviewsTime,\n selectedSlowMotionPlayOutsTime,\n screenWidth,\n } = this.props;\n\n const localTime = utcTimeStateMap.get(utcTimeStates.localTime);\n\n const options: OptionValueLabel[] = [\n {\n value: utcTimeStates.germanTime,\n label: utcTimeStateMap.get(utcTimeStates.germanTime),\n },\n {\n value: utcTimeStates.localTime,\n label: `${localTime} (UTC ${localUTCOffsetText})`,\n },\n ];\n\n const activeOption: OptionValueLabel = options.find(o => o.value === selectedTimeOffset);\n const isMobile = screenWidth < componentBreakpoints.navigation;\n\n return (\n \n \n {headline}\n {intro}\n \n\n \n \n Choose a Kick-Off Match Time\n\n {isMobile ? (\n \n {\n updateSelectedTimeOffset(value);\n }}\n />\n \n \n \n \n ) : (\n option !== activeOption)}\n selectedOption={activeOption}\n onHandleChange={(value: UTCTimeStateType) => {\n updateSelectedTimeOffset(value.value);\n }}\n defaultValue={activeOption}\n />\n )}\n\n {isMobile ? (\n \n {\n updateSelectedDateOption(date);\n }}\n isBold\n />\n \n \n \n \n ) : (\n option !== selectedDateOption)}\n selectedOption={selectedDateOption.value}\n onHandleChange={date => {\n updateSelectedDateOption(date.value);\n }}\n defaultValue={rundownDatesSelectOptionsDesktop[1]}\n />\n )}\n \n\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n World Feed\n \n \n \n \n \n\n \n \n \n Satellite transmission\n \n \n \n \n \n\n \n \n \n Livestream\n \n \n \n \n \n\n \n \n \n \n \n Interactive Feed\n \n \n \n \n \n\n \n \n \n \n \n Goal Arena - the Bundesliga Konferenz\n \n \n \n \n \n \n * Standard Kick-Off Times\n \n \n \n \n \n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(RundownComp);\n","import {WeekDayType} from \"./../../models/constants\";\nimport {\n UPDATE_SELECTED_DATE_OPTION,\n UPDATE_SELECTED_WEEK_DAY,\n UPDATE_SELECTED_PREMATCH_START_AND_END_TIME,\n UPDATE_SELECTED_LIVEMATCH_FIRST_HALF_START_AND_END_TIME,\n UPDATE_SELECTED_LIVEMATCH_SECOND_HALF_START_AND_END_TIME,\n UPDATE_SELECTED_POST_MATCH_START_AND_END_TIME,\n UPDATE_SELECTED_DIGITAL_HIGHLIGHTS_CLIPS_TIME,\n UPDATE_SELECTED_SLOW_MOTION_PLAY_OUTS_TIME,\n UPDATE_SELECTED_POST_MATCH_INTERVIEWS_TIME,\n RundownActionTypes,\n} from \"./types\";\n\nexport const updateSelectedDateOptionAction = (newDate: any) => {\n return {\n type: UPDATE_SELECTED_DATE_OPTION,\n payload: newDate,\n };\n};\n\nexport const updateSelectedWeekDayAction = (newSelectedWeekDay: WeekDayType): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_WEEK_DAY,\n payload: newSelectedWeekDay,\n };\n};\n\nexport const updateSelectedPreMatchStartAndEndTimeAction = (\n newSelectedPreMatchStartAndEndTime: [number, number, number, number],\n): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_PREMATCH_START_AND_END_TIME,\n payload: newSelectedPreMatchStartAndEndTime,\n };\n};\n\nexport const updateSelectedLiveMatchFirstHalfStartAndEndTimeAction = (\n newSelectedLiveMatchFirstHalfStartAndEndTime: [number, number, number, number],\n): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_LIVEMATCH_FIRST_HALF_START_AND_END_TIME,\n payload: newSelectedLiveMatchFirstHalfStartAndEndTime,\n };\n};\n\nexport const updateSelectedLiveMatchSecondHalfStartAndEndTimeAction = (\n newSelectedLiveMatchSecondHalfStartAndEndTime: [number, number, number, number],\n): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_LIVEMATCH_SECOND_HALF_START_AND_END_TIME,\n payload: newSelectedLiveMatchSecondHalfStartAndEndTime,\n };\n};\n\nexport const updateSelectedPostMatchStartAndEndTimeAction = (\n newSelectedPostMatchStartAndEndTime: [number, number, number, number],\n): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_POST_MATCH_START_AND_END_TIME,\n payload: newSelectedPostMatchStartAndEndTime,\n };\n};\n\nexport const updateSelectedDigitalHighlightsClipsTimeAction = (\n newSelectedDigitalHighlightsClipsTime: [number, number],\n): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_DIGITAL_HIGHLIGHTS_CLIPS_TIME,\n payload: newSelectedDigitalHighlightsClipsTime,\n };\n};\n\nexport const updateSelectedSlowMotionPlayOutsTimeAction = (\n newSelectedSlowMotionPlayOutsTime: [number, number],\n): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_SLOW_MOTION_PLAY_OUTS_TIME,\n payload: newSelectedSlowMotionPlayOutsTime,\n };\n};\n\nexport const updateSelectedPostMatchInterviewsTimeAction = (\n newSelectedPostMatchInterviewsTime: [number, number],\n): RundownActionTypes => {\n return {\n type: UPDATE_SELECTED_POST_MATCH_INTERVIEWS_TIME,\n payload: newSelectedPostMatchInterviewsTime,\n };\n};\n","import * as React from \"react\";\nimport styled, {css} from \"styled-components\";\nimport {Link} from \"gatsby\";\nimport {\n breakpoint,\n colors,\n fonts,\n fontSizesPx,\n FullpageHeadline,\n RelatedProductsProps,\n stage,\n linksListItemsDesktopColumnsLayout,\n} from \"../../models\";\nimport {Caret} from \"../../components\";\n\nconst CARET_WIDTH_MOBILE = 12;\nconst CARET_WIDTH_DESKTOP = 16;\n\nconst CaretWrapper = styled.div`\n position: absolute;\n right: 0;\n top: 50%;\n width: ${CARET_WIDTH_MOBILE + 1}px;\n height: ${CARET_WIDTH_MOBILE}px;\n transform: rotate(-90deg) translateX(50%);\n\n ${breakpoint.l.up} {\n width: ${CARET_WIDTH_DESKTOP + 1}px;\n height: ${CARET_WIDTH_DESKTOP}px;\n };\n`;\n\nconst SubTitle = styled.b`\n font-size: ${fontSizesPx.macro};\n color: ${colors.black};\n text-transform: uppercase;\n padding-right: ${CARET_WIDTH_DESKTOP}px;\n\n ${breakpoint.m.up} {\n margin-bottom: 3px;\n };\n`;\n\nconst ListItems = styled.ul<{desktopColumnsLayout: linksListItemsDesktopColumnsLayout}>`\n display: grid;\n margin: 40px 0 0 0;\n padding: 0;\n\n ${breakpoint.m.up} {\n ${(p: {desktopColumnsLayout: linksListItemsDesktopColumnsLayout}) =>\n p.desktopColumnsLayout === linksListItemsDesktopColumnsLayout.multi\n ? css`\n grid-template-columns: repeat(2, 1fr);\n grid-column-gap: 40px;\n\n ${Item} {\n &:nth-child(2) {\n border-top: 1px solid ${colors.grayDarkLight2};\n }\n }\n `\n : `\n max-width: 580px;\n margin: 0 auto;\n `};\n };\n`;\n\nconst Item = styled.li`\n font-family: ${fonts.headerFont};\n font-weight: ${fonts.weightBold};\n margin: 0;\n padding: 15px 0;\n border-bottom: 1px solid ${colors.grayDarkLight2};\n\n &:first-child {\n border-top: 1px solid ${colors.grayDarkLight2};\n }\n\n a {\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n p {\n display: inline-flex;\n align-items: center;\n font-size: ${fontSizesPx.small};\n color: ${colors.redDFL};\n padding: 0 ${CARET_WIDTH_DESKTOP}px 0 0;\n margin: 0;\n\n ${breakpoint.m.up} {\n font-size: ${fontSizesPx.average};\n };\n }\n`;\n\nconst Container = styled.div`\n max-width: 580px;\n margin: 0 auto;\n\n ${breakpoint.m.up} {\n max-width: ${stage.outerWidth}px;\n };\n\n /* NOTE: can remove once FullpageHeadline is responsive */\n ${FullpageHeadline} {\n ${breakpoint.m.down} {\n font-size: ${fontSizesPx.average};\n width: auto;\n };\n }\n`;\n\ninterface LinksListItemsCompProps {\n content: RelatedProductsProps[];\n}\n\nconst LinksListItemsComp = (props: LinksListItemsCompProps) => {\n const {content} = props;\n const desktopColumnsLayout =\n content.length > 3 ? linksListItemsDesktopColumnsLayout.multi : linksListItemsDesktopColumnsLayout.single;\n\n return (\n \n Related Products\n \n {content.map((item, i) => {\n const url = item.link ? `/product/${item.link}` : \"404\";\n const subTitle = item.overline;\n\n return (\n - \n \n {subTitle}\n
{item.title}
\n \n \n \n \n \n );\n })}\n \n \n );\n};\n\nexport default LinksListItemsComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\nimport {AppState} from \"../../store/\";\nimport {\n setUserDidConsentAction,\n} from \"../../store/system/actions\";\nimport {colors, zIndices, px, stage, RowDiv, smallRegular, CenteredDiv, COOKIE_KEY, staticPageMap, staticPages, breakpoints} from \"../../models\";\nimport {columnSpan} from \"../../util/util\";\n\n// COMPONENT PROPERTIES\ninterface PropsFromState {\n userDidConsent: boolean;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n userDidConsent: state.system.userDidConsent,\n});\n\ninterface PropsFromDispatch {\n setUserDidConsent: (didConsent: boolean) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n setUserDidConsent: (didConsent: boolean) => {\n return dispatch(setUserDidConsentAction(didConsent));\n },\n };\n};\n\ninterface ConsentBannerContainerProps {\n hidden: boolean;\n}\nconst ConsentBannerContainer = styled(CenteredDiv)`\n position: fixed;\n width: 100%;\n height: unset;\n bottom: 0;\n z-index: ${zIndices.zConsentBanner};\n background-color: ${colors.blackAlpha90};\n color: ${colors.white};\n pointer-events: initial;\n display: ${(props: ConsentBannerContainerProps) => props.hidden ? \"none\" : \"flex\"};\n padding: 20px;\n box-sizing: border-box;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: 100vw;\n height: 100px;\n padding: 0;\n }\n`;\n\nconst ConsentBannerContainerInner = styled(RowDiv)`\n width: 100%;\n height: unset;\n margin: 0;\n flex-direction: column;\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(stage.outerWidth)};\n height: 100%;\n margin: 0 auto;\n flex-direction: row;\n }\n`;\nconst ConsentBannerMessage = styled.div`\n ${smallRegular};\n color: ${colors.white};\n margin-right: 0;\n margin-bottom: 32px;\n margin-left: 0;\n width: 100%;\n max-width: ${px(columnSpan(8, stage.columnWidth, stage.columnGap))};\n\n a {\n ${smallRegular};\n color: ${colors.white};\n text-decoration: underline;\n }\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(columnSpan(9, stage.columnWidth, stage.columnGap))};\n margin-right: ${px(stage.columnGap)};\n margin-bottom: 0;\n margin-left: ${px(columnSpan(1, stage.columnWidth, stage.columnGap) + stage.columnGap)};\n }\n`;\n\nconst ConsentBannerButton = styled.button`\n width: 100%;\n height: 50px;\n border: 1px solid ${colors.white};\n text-transform: uppercase;\n background-color: transparent;\n color: ${colors.white};\n cursor: pointer;\n max-width: ${px(columnSpan(4, stage.columnWidth, stage.columnGap))};\n\n /* desktop */\n @media (min-width: ${px(breakpoints.desktopHd)}) {\n width: ${px(columnSpan(2, stage.columnWidth, stage.columnGap))};\n }\n`;\n\ninterface ConsentBannerProps extends PropsFromState, PropsFromDispatch {}\nclass ConsentBanner extends React.Component {\n constructor(props: ConsentBannerProps) {\n super(props);\n this.hideForever = this.hideForever.bind(this);\n }\n\n componentDidMount() {\n // assume default of user already having consent to cookie policy\n\n const {setUserDidConsent} = this.props;\n\n // set to false if cookie can't be found\n const isConsentCookieSet = localStorage.getItem(COOKIE_KEY) === \"true\";\n if (!isConsentCookieSet) {\n setUserDidConsent(false);\n }\n }\n\n render() {\n const {userDidConsent} = this.props;\n return (\n \n \n \n {`We use cookies so that this website can be operated safely and optimized as well as its content. \n For further information, please refer to our `}\n \n {\"privacy statement\"}\n .\n \n\n \n OK\n \n \n \n );\n }\n\n hideForever() {\n localStorage.setItem(COOKIE_KEY, \"true\");\n this.props.setUserDidConsent(true);\n }\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(ConsentBanner);\n","import * as React from \"react\";\nimport styled, {css} from \"styled-components\";\nimport {Caret, RegionDropdown, TextFilter} from \"../../components\";\nimport {\n px,\n componentBreakpoints,\n elementSizes,\n timings,\n colors,\n fonts,\n navigationOverlayStates,\n NavigationOverlayStateType,\n DflRegionType,\n SearchableProductProps,\n GridColumnDiv,\n} from \"../../models\";\n\nimport {} from \"../../util/util\";\nimport {Link} from \"gatsby\";\n\ninterface DesktopLinksStyleProps {\n active?: boolean;\n isInverted?: boolean;\n isTextDark?: boolean;\n}\n\nconst CaretActiveStyles = `\n transform: translateY(25%) scaleY(-1);\n filter: flipv;\n`;\n\nconst CaretWrapper = styled.div<{isActive?: boolean}>`\n display: inline-block;\n width: 10px;\n height: 10px;\n margin-left: 6px;\n transition: transform 0.3s, filter 0.3s;\n transform-origin: 0 bottom;\n\n ${p =>\n p.isActive &&\n css`\n ${CaretActiveStyles};\n `};\n`;\n\nconst TextUnaccented = styled.span`\n font-weight: ${fonts.weightLight};\n`;\n\n/* NOTE: There is a scenario when navigating from the \n landing page where the inverted nav text needs to be black */\nconst TextLink = styled.div`\n ${p =>\n p.isTextDark &&\n css`\n color: ${colors.black};\n a {\n color: ${colors.black};\n }\n `};\n\n transition: color ${timings.hurried}ms;\n color: ${(p: DesktopLinksStyleProps) => (p.active ? colors.redDFL : p.isInverted ? colors.white : colors.black)};\n text-transform: uppercase;\n user-select: none;\n\n a {\n color: ${(p: DesktopLinksStyleProps) => (p.active ? colors.redDFL : p.isInverted ? colors.white : colors.black)};\n padding: 0 ${elementSizes.navigationHeaderDropdownMenuXPadding}px;\n }\n\n .active & {\n color: ${colors.redDFL};\n }\n`;\n\nconst PointerDiv = styled.div`\n pointer-events: all;\n cursor: pointer;\n`;\n\nconst LinkList = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n height: 100%;\n pointer-events: all;\n padding: 0 ${elementSizes.navigationHeaderDropdownMenuXPadding}px;\n`;\n\nconst LinkListDropdownMenuBtn = styled(LinkList)<{isInverted?: boolean}>`\n cursor: pointer;\n\n .link-list-dropdown-menu {\n display: none;\n }\n\n &:hover {\n background-color: ${p => (p.isInverted ? colors.white : colors.black)};\n\n .link-list-dropdown-menu {\n display: block;\n background-color: ${p => (p.isInverted ? colors.white : colors.black)};\n color: ${p => (p.isInverted ? colors.black : colors.white)};\n\n div:first-child {\n border-top: 1px solid ${p => (p.isInverted ? colors.grayUltraLight : colors.grayDark)};\n border-bottom: 1px solid ${p => (p.isInverted ? colors.grayUltraLight : colors.grayDark)};\n }\n }\n\n ${TextLink} {\n color: ${p => (p.isInverted ? colors.black : colors.white)};\n }\n\n svg polyline {\n stroke: ${p => (p.isInverted ? colors.black : colors.white)};\n }\n\n ${CaretWrapper} {\n ${CaretActiveStyles};\n }\n }\n`;\n\nconst Container = styled(GridColumnDiv)`\n display: none;\n grid-gap: 20px;\n height: 100%;\n @media (min-width: ${px(componentBreakpoints.navigation)}) {\n display: grid;\n }\n`;\n\ninterface DesktopLinksCompProps {\n overlayState: NavigationOverlayStateType;\n selectedRegion: DflRegionType;\n isNavigationInverted: boolean;\n isTextDark?: boolean;\n onProductsMouseOver: () => void;\n onProductsMouseLeave: () => void;\n onUpdateRegionClick?: (region: DflRegionType) => void;\n onPageLinkClick: (label: string) => void;\n searchables: SearchableProductProps[];\n}\n\nconst DesktopLinksComp = (props: DesktopLinksCompProps) => {\n const {\n isNavigationInverted,\n overlayState,\n onProductsMouseOver,\n onProductsMouseLeave,\n onUpdateRegionClick,\n onPageLinkClick,\n selectedRegion,\n searchables,\n isTextDark,\n } = props;\n\n const isCaretActive = overlayState === navigationOverlayStates.productsActive;\n const isNavInverted = isNavigationInverted && overlayState === navigationOverlayStates.default;\n const isNavInvertedAndTextBlack = isNavigationInverted && !isTextDark;\n const inactiveCaretColor = isNavInvertedAndTextBlack ? colors.white : colors.black;\n\n return (\n \n {/* TODO: refactor and use LinkListDropdownMenuBtn component */}\n \n {\n onProductsMouseOver();\n event.stopPropagation();\n }}\n onMouseLeave={onProductsMouseLeave}\n >\n \n Products\n \n {/* TODO: refactor nested */}\n \n \n \n \n \n\n \n \n onPageLinkClick(\"What's New\")}>\n What's New\n \n \n \n\n \n \n Region: {selectedRegion}\n \n \n \n \n\n \n \n\n \n \n onPageLinkClick(\"Contact\")}>\n contact\n \n \n \n\n {/* Search */}\n \n \n );\n};\n\nexport default DesktopLinksComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {TextFilter, Burger, Close} from \"../../components\";\nimport {RowDiv, px, componentBreakpoints, SearchableProductProps, CenteredDiv, colors} from \"../../models\";\n\nconst LinkList = styled(RowDiv)`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.navigation)}) {\n display: none;\n }\n`;\nconst PointerDiv = styled.div`\n pointer-events: all;\n`;\n\nconst IconWrapper = styled(CenteredDiv)`\n width: 26px;\n height: 21px;\n margin: 0 20px;\n cursor: pointer;\n`;\n\ninterface MobileLinksCompProps {\n isNavigationInverted: boolean;\n isOverlayActive: boolean;\n searchables: SearchableProductProps[];\n onMenuClick: () => void;\n}\nconst MobileLinksComp = (props: MobileLinksCompProps) => {\n const {isNavigationInverted, isOverlayActive, searchables, onMenuClick} = props;\n return (\n \n {/* Search */}\n \n\n \n \n {isOverlayActive && }\n {!isOverlayActive && }\n \n \n \n );\n};\n\nexport default MobileLinksComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Caret} from \"../../../components\";\nimport {smallBold, colors, CenteredDiv, RowDiv} from \"../../../models\";\n\nconst MobileOverlayButton = styled.button`\n ${smallBold};\n width: 100%;\n padding: 24px;\n text-transform: uppercase;\n background-color: ${colors.white};\n outline: none;\n border: none;\n cursor: pointer;\n`;\nconst ButtonContent = styled(RowDiv)`\n justify-content: space-between;\n .mobile-active & {\n color: ${colors.redDFL};\n }\n`;\nconst CaretWrapper = styled(CenteredDiv)`\n width: 22px;\n height: 22px;\n padding: 4px;\n box-sizing: border-box;\n transform: rotate(-90deg);\n`;\n\ninterface MobileOverlayButtonCompProps {\n label: string;\n onButtonClick: () => void;\n}\nconst MobileOverlayButtonComp = (props: MobileOverlayButtonCompProps) => {\n const {label, onButtonClick} = props;\n return (\n \n \n {label}
\n \n \n \n \n \n );\n};\n\nexport default MobileOverlayButtonComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {Checkmark} from \"../../../components\";\nimport {DflRegionType, ColumnDiv, smallBold, dflRegions, colors, CenteredDiv, RowDiv} from \"../../../models\";\n\nconst RegionRadioGroup = styled(ColumnDiv)`\n width: 100%;\n`;\n\ninterface RadioItemProps {\n active: boolean;\n}\nconst RadioItem = styled.div`\n ${smallBold};\n color: ${(props: RadioItemProps) => (props.active ? colors.redDFL : colors.black)};\n padding: 24px;\n margin-bottom: 2px;\n background-color: ${colors.white};\n cursor: pointer;\n`;\nconst RadioItemContent = styled(RowDiv)`\n justify-content: space-between;\n`;\nconst IconWrapper = styled(CenteredDiv)`\n width: 16px;\n height: 12px;\n`;\n\n\ninterface RadioItemCompProps {\n region: DflRegionType;\n selectedRegion: DflRegionType;\n onRegionClick: (region: DflRegionType) => void;\n}\nconst RadioItemComp = (props: RadioItemCompProps) => {\n const {region, selectedRegion, onRegionClick} = props;\n return (\n onRegionClick(region)}>\n \n {region}\n {region === selectedRegion && }\n \n \n );\n};\n\n\ninterface RegionRadioGroupCompProps {\n selectedRegion: DflRegionType;\n onRegionClick: (region: DflRegionType) => void;\n}\nconst RegionRadioGroupComp = (props: RegionRadioGroupCompProps) => {\n const {selectedRegion, onRegionClick} = props;\n return (\n \n \n \n \n \n );\n};\n\nexport default RegionRadioGroupComp;\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport {ContactMainProps, RowDiv, microBold, microRegular, colors} from \"../../../models\";\nimport {trimWebsiteUrl} from \"../../../util/util\";\n\nconst MobileOverlayMainContact = styled(RowDiv)`\n background-color: ${colors.white};\n margin-top: 1px;\n padding: 12px 24px;\n align-items: flex-start;\n`;\nconst LogoWrapper = styled.div`\n width: 50px;\n margin-right: 12px;\n margin-top: 4px;\n`;\nconst Logo = styled.img`\n width: 100%;\n`;\nconst Title = styled.div`\n ${microBold};\n margin-bottom: 8px;\n`;\nconst Text = styled.div`\n ${microRegular};\n margin-bottom: 2px;\n`;\nconst TextLink = styled.a`\n ${microRegular};\n color: ${colors.redDFL};\n display: block;\n margin-bottom: 2px;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\ninterface MobileOverlayMainContactCompProps extends ContactMainProps {\n imageUrl: string;\n}\nconst MobileOverlayMainContactComp = (props: MobileOverlayMainContactCompProps) => {\n const { imageUrl, name, email, phone, website } = props;\n return (\n \n \n \n \n \n
{name}\n {phone}\n {email}\n {trimWebsiteUrl(website)}\n \n \n );\n};\n\nexport default MobileOverlayMainContactComp;\n","import * as React from \"react\";\nimport styled from \"styled-components\";\nimport Button from \"./mobileOverlayButton\";\nimport RegionRadioGroup from \"./regionRadioGroup\";\nimport MobileOverlayMainContact from \"./mobileOverlayMainContact\";\nimport {CategoryListWithQuery} from \"../../../components\";\nimport {\n NavigationOverlayStateType,\n navigationOverlayStates,\n ColumnDiv,\n macroBold,\n DflRegionType,\n ContactMainProps,\n} from \"../../../models\";\n\nimport logoDfl from \"../../../images/contactMainDFL.svg\";\nimport logoBli from \"../../../images/contactMainBLI.svg\";\nimport {Link} from \"gatsby\";\n\ninterface WrapperProps {\n visible: boolean;\n}\nconst Wrapper = styled(ColumnDiv)`\n display: ${(props: WrapperProps) => (props.visible ? \"flex\" : \"none\")};\n width: 100%;\n max-width: 700px;\n margin: 0 auto;\n /* NOTE: must have a big padding bottom for iOS address bar \n See: MainContentWrapper in style-constants */\n padding: 50px 10px 100px;\n box-sizing: border-box;\n`;\n\nconst Headline = styled.div`\n ${macroBold};\n text-transform: uppercase;\n width: 100%;\n text-align: center;\n margin: 36px 0 18px;\n`;\n\ninterface CloseOverlayButtonProps {\n link: string;\n label: string;\n onButtonClick: () => void;\n}\nconst CloseOverlayButton = (props: CloseOverlayButtonProps) => (\n \n \n \n);\n\ninterface MobileOverlayContentProps {\n overlayState: NavigationOverlayStateType;\n selectedRegion: DflRegionType;\n onRegionClick: (region: DflRegionType) => void;\n onButtonClick: () => void;\n mainDfl: ContactMainProps;\n mainBli: ContactMainProps;\n}\nconst MobileOverlayContent = (props: MobileOverlayContentProps) => {\n const {overlayState, selectedRegion, onRegionClick, onButtonClick, mainDfl, mainBli} = props;\n\n return (\n \n Bundesliga Products\n \n\n What's new\n \n {/* \n \n */}\n\n Your region\n \n\n Contact\n \n \n
\n \n \n \n );\n};\n\nexport default MobileOverlayContent;\n","export default __webpack_public_path__ + \"static/logo_wide-942001bead9eee0279c27431b257eda8.svg\";","export default __webpack_public_path__ + \"static/logo__bundesliga-52888caf3e78144de0ab7e1b16217f67.svg\";","import React, {MouseEvent} from \"react\";\nimport styled from \"styled-components\";\nimport {CategoryListWithQuery} from \"../../../components\";\nimport {stage, elementSizes} from \"../../../models\";\n\ninterface ProductsDropdownStylesProps {\n show?: boolean;\n}\n\nconst CONTAINER_PADDING_TOP = elementSizes.navigationHeaderHeight + 20;\n\nconst InnerContainer = styled.div`\n width: ${stage.outerWidth}px;\n margin: 0 auto;\n`;\n\nconst Container = styled.div`\n display: ${p => (p.show ? \"flex\" : \"none\")};\n flex-direction: row;\n height: 100%;\n\n padding: ${CONTAINER_PADDING_TOP}px 0 80px 0;\n box-sizing: border-box;\n`;\n\ninterface ProductsDropdownProps {\n className?: string;\n show?: boolean;\n onMouseLeave: (event: MouseEvent) => void;\n}\n\nconst ProductsDropdown = (props: ProductsDropdownProps) => {\n const {className, show, onMouseLeave} = props;\n return (\n \n \n \n \n \n );\n};\n\nexport default ProductsDropdown;\n","/**\n * A navigation header that sticks to the top of the page\n *\n */\n\n// IMPORTS\nimport {Link, StaticQuery, graphql} from \"gatsby\";\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport Measure, {ContentRect} from \"react-measure\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\nimport DesktopLinks from \"./desktopLinks\";\nimport MobileLinks from \"./mobileLinks\";\nimport MobileOverlayContent from \"./mobileOverlayContent/mobileOverlayContent\";\nimport {AppState} from \"../../store/\";\nimport {\n updateRegionAction,\n updateNavigationOverlayAction,\n updateScreenWidthAction,\n updateIsNavigationInvertedAction,\n} from \"../../store/system/actions\";\nimport {\n px,\n colors,\n stage,\n smallBold,\n DflRegionType,\n NavigationOverlayStateType,\n navigationOverlayStates,\n elementSizes,\n zIndices,\n timings,\n SearchableProductProps,\n wordpressPageIds,\n suggestionSublineMaxLength,\n componentBreakpoints,\n WPFieldGroupContactMainProps,\n ProductNode,\n contentTypes,\n} from \"../../models\";\nimport {cutOffText, decodeHtml, productToRelatedProductProps} from \"../../util/util\";\nimport {\n trackNavClick,\n trackMainLogoClick,\n trackMobileMenuToggle,\n trackMobileLocalizationChange,\n} from \"../../util/tracking\";\n\nimport logoWide from \"../../images/logo_wide.svg\";\nimport logoSmall from \"../../images/logo__bundesliga.svg\";\nimport ProductsDropdown from \"./productsDropdown/productsDropdown\";\n\n// COMPONENT PROPERTIES\ninterface PropsFromState {\n selectedRegion: DflRegionType;\n overlayState: NavigationOverlayStateType;\n isHidden: boolean;\n isNavigationInverted: boolean;\n screenWidth: number;\n isTextDark?: boolean;\n isHomepageAboveVideo: boolean;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n selectedRegion: state.system.selectedRegion,\n overlayState: state.system.overlayState,\n isHidden: state.system.isNavigationHidden,\n isNavigationInverted: state.system.isNavigationInverted,\n screenWidth: state.system.screenWidth,\n isHomepageAboveVideo: state.system.isHomepageAboveVideo,\n});\n\ninterface PropsFromDispatch {\n updateRegion: (region: DflRegionType) => void;\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => void;\n updateScreenWidth: (newScreenWidth: number) => void;\n updateIsNavigationInverted: (isInverted: boolean) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n updateRegion: (region: DflRegionType) => {\n return dispatch(updateRegionAction(region));\n },\n updateNavigationOverlay: (newState: NavigationOverlayStateType) => {\n return dispatch(updateNavigationOverlayAction(newState));\n },\n updateScreenWidth: (newScreenWidth: number) => {\n return dispatch(updateScreenWidthAction(newScreenWidth));\n },\n updateIsNavigationInverted: (isInverted: boolean) => {\n return dispatch(updateIsNavigationInvertedAction(isInverted));\n },\n };\n};\ninterface NavigationHeaderProps extends PropsFromState, PropsFromDispatch {\n showProductsOnMouseOver?: boolean;\n isTextDark?: boolean;\n}\n\n// STYLES\ninterface HeaderProps {\n isHidden: boolean;\n}\nconst Header = styled.header`\n ${smallBold};\n width: 100vw;\n background: transparent;\n position: fixed;\n transition: top ${timings.moderate}ms;\n top: ${(props: HeaderProps) => (props.isHidden ? px(-elementSizes.navigationHeaderHeight) : px(0))};\n z-index: ${zIndices.zNavigation};\n`;\n\ninterface HeaderContentBackgroundProps {\n isInverted: boolean;\n}\nconst HeaderContentBackground = styled.div`\n position: relative;\n width: 100%;\n height: 70px;\n background-color: ${(props: HeaderContentBackgroundProps) => (props.isInverted ? colors.transparent : colors.white)};\n transition: background-color ${timings.hurried}ms;\n z-index: ${zIndices.zNavigationElements};\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.navigation)}) {\n height: ${elementSizes.navigationHeaderHeight}px;\n }\n`;\nconst HeaderContent = styled.div`\n max-width: ${px(stage.outerWidth)};\n height: 100%;\n margin: 0 auto;\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst PointerDiv = styled.div`\n pointer-events: all;\n`;\n\nconst LogoWrapper = styled.div`\n width: 70px;\n height: 70px;\n padding: 7px;\n box-sizing: border-box;\n\n /* desktop */\n @media (min-width: ${px(componentBreakpoints.navigation)}) {\n width: unset;\n padding: 18px 18px 18px 0;\n }\n`;\nconst Logo = styled.img`\n width: 100%;\n height: 100%;\n`;\n\n// Overlay\ninterface OverlayProps {\n overlayActive: boolean;\n}\n\nconst Overlay = styled.div`\n position: fixed;\n width: 100vw;\n height: 100vh;\n background-color: ${colors.grayUltraLight};\n z-index: ${zIndices.zNavigationOverlay};\n pointer-events: ${(props: OverlayProps) => (props.overlayActive ? \"all\" : \"none\")};\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n overflow-x: hidden;\n\n transition: opacity ${timings.instant}ms;\n opacity: ${(props: OverlayProps) => (props.overlayActive ? 1 : 0)};\n`;\n\ninterface QueryProps {\n allWpPage: {\n edges: [{\n node: {\n databaseId: number;\n title: string;\n slug: string;\n intro: {\n introText: string;\n };\n };\n }];\n };\n wpPost: {\n contacts: {\n mainBli: WPFieldGroupContactMainProps;\n mainDfl: WPFieldGroupContactMainProps;\n };\n };\n allWpPost: {\n edges: ProductNode[];\n };\n}\n\n// COMPONENT\nconst NavigationHeader = (props: NavigationHeaderProps) => {\n const {\n overlayState,\n updateNavigationOverlay,\n isHidden,\n updateRegion,\n selectedRegion,\n isNavigationInverted,\n screenWidth,\n updateScreenWidth,\n updateIsNavigationInverted,\n isTextDark,\n isHomepageAboveVideo,\n } = props;\n const overlayActive =\n overlayState === navigationOverlayStates.mobileActive || overlayState === navigationOverlayStates.productsActive;\n\n if (typeof window !== \"undefined\") {\n if (overlayActive) {\n document.body.classList.add(\"overflow-y-hidden\");\n } else {\n document.body.classList.remove(\"overflow-y-hidden\");\n }\n }\n return (\n {\n // get all product pages\n const productPages = data.allWpPage.edges.filter(page => {\n return (\n page.node.databaseId === wordpressPageIds.bundesligaMatches ||\n page.node.databaseId === wordpressPageIds.matchInterviews ||\n page.node.databaseId === wordpressPageIds.matchHighlights ||\n page.node.databaseId === wordpressPageIds.digitalContent ||\n page.node.databaseId === wordpressPageIds.promoTrailerContent ||\n page.node.databaseId === wordpressPageIds.seasonalContent ||\n page.node.databaseId === wordpressPageIds.monthlyContent ||\n page.node.databaseId === wordpressPageIds.weeklyContent\n );\n });\n\n // create searchables for the text filter component\n const searchables: SearchableProductProps[] = [];\n\n // make page titles and product titles searchable\n productPages.forEach(page => {\n searchables.push({\n name: decodeHtml(page.node.title),\n subline: cutOffText(page.node.intro.introText, suggestionSublineMaxLength),\n link: `/product/${page.node.slug.trim()}`,\n type: \"category\",\n });\n });\n\n // make products searchable\n if (data && data.allWpPost && data.allWpPost.edges) {\n data.allWpPost.edges.forEach(edge => {\n const props = productToRelatedProductProps(edge);\n const {\n node: {\n product_details: {\n productContent: {\n productContentType: contentType,\n productImageOrVideoSettings: imageOrVideoSettings,\n productThreeColumnModule: {\n threeColumnLocalizedContentColumnOne: columnOne,\n threeColumnLocalizedContentColumnTwo: columnTwo,\n threeColumnLocalizedContentColumnThree: columnThree,\n },\n },\n },\n },\n } = edge;\n\n // for the threeColumn module, add a search entry for each column\n if (contentType === contentTypes.threeColumn) {\n [columnOne, columnTwo, columnThree].forEach(column => {\n const attributes = column.attributes;\n const subline = cutOffText(attributes[0].attribute, suggestionSublineMaxLength);\n\n searchables.push({\n name: column.headline,\n subline,\n link: `/product/${props.link}`,\n type: \"product\",\n });\n });\n\n // for the image or video module, add a singe search entry\n } else if (contentType === contentTypes.image || contentType === contentTypes.video) {\n const attributes = imageOrVideoSettings.attributes;\n const subline = cutOffText(attributes[0].attribute, suggestionSublineMaxLength);\n\n searchables.push({\n name: props.title,\n subline,\n link: `/product/${props.link}`,\n type: \"product\",\n });\n }\n });\n }\n\n const mainDfl = data.wpPost.contacts.mainDfl[0];\n const mainBli = data.wpPost.contacts.mainBli[0];\n\n const isMobile = screenWidth < componentBreakpoints.navigation;\n\n return (\n {\n if (contentRect && contentRect.entry) {\n updateScreenWidth(contentRect.entry.width);\n }\n }}\n >\n {({measureRef: headerRef}) => (\n // \n <>\n \n {\n if (overlayState === navigationOverlayStates.productsActive) {\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n overlayActive={overlayActive}\n >\n {/* Content for Mobile overlay */}\n {\n trackMobileLocalizationChange(region);\n updateRegion(region);\n }}\n onButtonClick={() => updateNavigationOverlay(navigationOverlayStates.default)}\n selectedRegion={selectedRegion}\n mainDfl={mainDfl}\n mainBli={mainBli}\n />\n\n {\n if (isHomepageAboveVideo) {\n updateIsNavigationInverted(true);\n }\n }}\n />\n \n\n \n {\n if (!isMobile) {\n updateNavigationOverlay(navigationOverlayStates.default);\n }\n }}\n >\n {/* Logo */}\n \n {\n trackMainLogoClick();\n updateNavigationOverlay(navigationOverlayStates.default);\n }}\n >\n \n \n \n \n \n\n {/* Desktop view of the links and search */}\n {\n updateIsNavigationInverted(false);\n updateNavigationOverlay(navigationOverlayStates.productsActive);\n }}\n onProductsMouseLeave={() => {\n if (isHomepageAboveVideo) {\n updateIsNavigationInverted(true);\n }\n }}\n onUpdateRegionClick={region => {\n trackNavClick(\"Region\");\n updateRegion(region);\n updateNavigationOverlay(navigationOverlayStates.default);\n }}\n onPageLinkClick={(label: string) => {\n trackNavClick(label);\n updateNavigationOverlay(navigationOverlayStates.default);\n }}\n searchables={searchables}\n />\n\n {/* mobile view of the search and the menu icon */}\n {\n trackMobileMenuToggle(overlayState === navigationOverlayStates.default);\n updateNavigationOverlay(\n overlayState === navigationOverlayStates.mobileActive\n ? navigationOverlayStates.default\n : navigationOverlayStates.mobileActive,\n );\n }}\n />\n \n \n \n >\n )}\n \n );\n }}\n />\n );\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(NavigationHeader);\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {elementSizes, dflRegions, DflRegionType} from \"../../../models\";\n\nconst REGIONS = [dflRegions.emea, dflRegions.asia, dflRegions.americas];\n\nconst RegionDropdownContainer = styled.div`\n position: absolute;\n top: ${elementSizes.navigationHeaderHeight}px;\n left: 0;\n width: 100%;\n box-sizing: border-box;\n`;\n\nconst RegionDropdownItem = styled.div`\n font-size: 15px;\n font-weight: normal;\n text-transform: uppercase;\n text-align: right;\n padding: 15px 31px 15px ${elementSizes.navigationHeaderDropdownMenuXPadding}px;\n cursor: pointer;\n\n &:first-child {\n margin: 0 ${elementSizes.navigationHeaderDropdownMenuXPadding}px;\n padding-right: 16px;\n }\n`;\n\ninterface RegionDropdownProps {\n className?: string;\n updateRegion: (region: DflRegionType) => void;\n selectedRegion: DflRegionType;\n}\nconst RegionDropdown = (props: RegionDropdownProps) => {\n const {className, updateRegion, selectedRegion} = props;\n\n return (\n \n {REGIONS.filter(region => region !== selectedRegion).map((region, regionIndex) => {\n return (\n updateRegion(region)}>\n {region}\n \n );\n })}\n \n );\n};\n\nexport default RegionDropdown;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport {smallBold, smallRegular, colors, SearchableProductProps, zIndices} from \"../../../models\";\n\nconst SorryMessage = styled.div`\n background-color: ${colors.white};\n padding: 24px 15px;\n`;\nconst SorryMessageValue = styled.span`\n ${smallBold};\n`;\n\nconst SuggestionTitle = styled.div`\n ${smallBold};\n`;\nconst SuggestionSubline = styled.div`\n ${smallRegular};\n`;\nconst CategoryLink = styled.div`\n background-color: ${colors.grayUltraLight};\n padding: 8px 10px;\n display: block;\n border: 1px solid ${colors.grayMedium};\n margin-top: -1px;\n\n &:hover {\n background-color: ${colors.grayLight};\n }\n\n ${SuggestionTitle} {\n color: ${colors.redDFL};\n }\n`;\ninterface SuggestionContainerProps {\n hasInput: boolean;\n}\nconst SuggestionContainer = styled.div`\n display: ${(props: SuggestionContainerProps) => (props.hasInput ? \"block\" : \"none\")};\n max-height: 90vh;\n overflow-y: scroll;\n box-shadow: 0 3px 8px ${colors.blackAlpha20};\n z-index: ${zIndices.zNavigation - 5};\n position: relative;\n`;\n\n// const Background = styled.div`\n// width: 100vw;\n// height: 100vh;\n// position: fixed;\n// background-color: rgba(0, 0, 0, 0.1);\n// top: 0;\n// left: 0;\n// z-index: ${zIndices.zNavigation - 10};\n// `;\n\ninterface SuggestionContainerCompProps {\n hasInput: boolean;\n resultsEmpty: boolean;\n searchTerm: string;\n products: SearchableProductProps[];\n containerProps: any;\n children: JSX.Element;\n updateHoveredLink: (link: string) => void;\n}\nclass SuggestionContainerComp extends React.Component {\n render() {\n const {resultsEmpty, hasInput, searchTerm, containerProps, children, updateHoveredLink} = this.props;\n\n return (\n \n {resultsEmpty ? (\n \n \n \n {searchTerm} could not be matched. Explore our products\n \n \n\n {this.props.products\n .filter(product => product.type === \"category\")\n .map((category, categoryIndex) => {\n return (\n updateHoveredLink(category.link)}\n onMouseLeave={() => updateHoveredLink(null)}\n >\n {category.name}\n {category.subline}\n \n );\n })}\n \n ) : (\n \n {children}\n \n )}\n
\n );\n }\n}\n\nexport default SuggestionContainerComp;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Autosuggest from \"react-autosuggest\";\nimport match from \"autosuggest-highlight/match\";\nimport parse from \"autosuggest-highlight/parse\";\nimport {navigate} from \"gatsby\";\nimport {Dispatch} from \"redux\";\nimport {connect} from \"react-redux\";\nimport SuggestionContainer from \"./suggestionContainer\";\nimport {Magnifier} from \"../../../components\";\nimport {\n smallBold,\n smallRegular,\n colors,\n ColorType,\n SearchableProductProps,\n px,\n CenteredDiv,\n NavigationOverlayStateType,\n navigationOverlayStates,\n breakpoint,\n} from \"../../../models\";\nimport {escapeRegexCharacters} from \"../../../util/util\";\nimport {trackSearchButtonClick, trackSuggestionClick} from \"../../../util/tracking\";\nimport {AppState} from \"../../../store\";\nimport {updateIsTextFilterActiveAction} from \"../../../store/system/actions\";\n\n// COMPONENT PROPERTIES\ninterface PropsFromState {\n isNavigationInverted: boolean;\n overlayState: NavigationOverlayStateType;\n}\nconst mapStateToProps = (state: AppState): PropsFromState => ({\n isNavigationInverted: state.system.isNavigationInverted,\n overlayState: state.system.overlayState,\n});\n\ninterface PropsFromDispatch {\n updateIsTextFilterActive: (isActive: boolean) => void;\n}\nconst mapDispatchToProps = (dispatch: Dispatch): PropsFromDispatch => {\n return {\n updateIsTextFilterActive: (isActive: boolean) => {\n return dispatch(updateIsTextFilterActiveAction(isActive));\n },\n };\n};\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\n// collapsable container\ninterface IconContainerCollapsableProps {\n collapsed: boolean;\n}\nconst IconContainerCollapsable = styled(Row)`\n width: ${(props: IconContainerCollapsableProps) => (props.collapsed ? px(32) : px(300))};\n transition: width 0.2s;\n\n ${breakpoint.s.down} {\n width: ${(props: IconContainerCollapsableProps) => (props.collapsed ? px(32) : px(220))};\n };\n\n ${breakpoint.xs.down} {\n width: ${(props: IconContainerCollapsableProps) => (props.collapsed ? px(32) : px(160))};\n };\n`;\nconst IconWrapper = styled(CenteredDiv)`\n width: 32px;\n height: 32px;\n flex-shrink: 0;\n cursor: pointer;\n`;\nconst CollapsableContent = styled.div`\n flex-shrink: 1;\n overflow: hidden;\n opacity: ${(props: IconContainerCollapsableProps) => (props.collapsed ? 0 : 1)};\n transition: opacity 0.2s ease-in 0.1s;\n position: relative;\n`;\n\n// the autosuggest elements\ninterface AutosuggestWrapperProps {\n collapsed: boolean;\n}\nconst AutosuggestWrapper = styled.div`\n position: absolute;\n top: 4px;\n right: 0;\n width: ${(props: AutosuggestWrapperProps) => (props.collapsed ? 0 : px(300 - 32))};\n opacity: ${(props: AutosuggestWrapperProps) => (props.collapsed ? 0 : 1)};\n transition: opacity 0.2s, width 0.2s;\n\n ${breakpoint.s.down} {\n width: ${(props: AutosuggestWrapperProps) => (props.collapsed ? 0 : px(220 - 32))};\n };\n\n ${breakpoint.xs.down} {\n width: ${(props: AutosuggestWrapperProps) => (props.collapsed ? 0 : px(160 - 32))};\n };\n`;\n\nconst StyledInput = styled.input`\n ${smallRegular};\n outline: none;\n border: none;\n outline-width: 0;\n caret-color: ${colors.redDFL};\n border-bottom: 1px solid ${colors.grayLight};\n width: 100%;\n`;\n\nconst SuggestionTitle = styled.div`\n ${smallBold};\n`;\ninterface SuggestionTitleSpanProps {\n color: ColorType;\n}\nconst SuggestionTitleSpan = styled.span`\n color: ${(props: SuggestionTitleSpanProps) => props.color};\n`;\nconst SuggestionSubline = styled.div`\n ${smallRegular};\n`;\nconst SuggestionLink = styled.div`\n background-color: ${colors.white};\n padding: 8px 10px;\n display: block;\n border: 1px solid ${colors.grayMedium};\n margin-top: -1px;\n\n &:hover {\n background-color: ${colors.grayUltraLight};\n }\n`;\n\n// COMPONENT\ninterface TextFilterProps extends PropsFromState, PropsFromDispatch {\n products: SearchableProductProps[];\n}\ninterface TextFilterState {\n value: string;\n suggestions: SearchableProductProps[];\n isCollapsed: boolean;\n hoveredLink: string;\n}\nclass TextFilter extends React.Component {\n constructor(props: TextFilterProps) {\n super(props);\n\n this.state = {\n value: \"\",\n suggestions: [],\n isCollapsed: true,\n hoveredLink: null,\n };\n\n this.toggleCollapsed = this.toggleCollapsed.bind(this);\n this.renderInputComponent = this.renderInputComponent.bind(this);\n this.renderSuggestionsContainer = this.renderSuggestionsContainer.bind(this);\n this.renderSuggestion = this.renderSuggestion.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n render() {\n const {isNavigationInverted, overlayState} = this.props;\n const {value, suggestions} = this.state;\n const isOverlayActive = overlayState !== navigationOverlayStates.default;\n\n // Autosuggest will pass through all these props to the input.\n const inputProps = {\n placeholder: \"Search Products\",\n value,\n onChange: this.onChange,\n onBlur: this.onBlur,\n onKeyDown: this.onKeyDown,\n };\n\n return (\n \n
\n \n \n \n \n \n\n
\n \n \n
\n );\n }\n\n onChange = (_event: React.FormEvent, {newValue}) => {\n this.setState({\n value: newValue,\n });\n };\n\n onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\") {\n const suggestion = this.getSuggestions(this.state.value);\n\n if (suggestion.length > 0 && suggestion[0].link) {\n const link = suggestion[0].link;\n\n this.setState(\n {\n isCollapsed: true,\n value: \"\",\n hoveredLink: null,\n },\n () => link && navigate(link),\n );\n }\n }\n };\n\n // Autosuggest will call this function every time you need to update suggestions.\n onSuggestionsFetchRequested = ({value}) => {\n this.setState({\n suggestions: this.getSuggestions(value),\n });\n };\n\n // Autosuggest will call this function every time you need to clear suggestions.\n onSuggestionsClearRequested = () => {\n this.setState({\n suggestions: [],\n });\n };\n\n /**\n * gets called, when the text input loses focus\n *\n */\n onBlur(_event: React.FormEvent) {\n const link = this.state.hoveredLink;\n trackSuggestionClick({searchTerm: this.state.value, page: link});\n this.setState(\n {\n isCollapsed: true,\n value: \"\",\n hoveredLink: null,\n },\n () => {\n if (!link) {\n return;\n }\n navigate(link);\n },\n );\n\n this.props.updateIsTextFilterActive(false);\n }\n\n /**\n * toggles the collapsed state of the textfield (when clicking the magnifier or when input blurs)\n *\n */\n toggleCollapsed() {\n if (this.state.isCollapsed) {\n trackSearchButtonClick();\n this.props.updateIsTextFilterActive(true);\n }\n this.setState({\n isCollapsed: !this.state.isCollapsed,\n });\n }\n\n /**\n * Gets a list of suggestions that match the input\n *\n */\n getSuggestions(input: string) {\n const escapedValue = escapeRegexCharacters(input.trim());\n if (escapedValue === \"\") {\n return [];\n }\n const regex = new RegExp(\"\\\\b\" + escapedValue, \"i\");\n return this.props.products.filter(product => regex.test(this.getSuggestionValue(product)));\n }\n\n /**\n * How to get the searchable string value from a suggestion object\n *\n */\n getSuggestionValue(suggestion: SearchableProductProps): string {\n return suggestion.name;\n }\n\n /**\n * How to render the suggestions container\n *\n */\n renderSuggestionsContainer({containerProps, children}) {\n const hasInput = this.state.value.length > 0;\n const resultsEmpty = hasInput && this.state.suggestions.length === 0;\n\n return (\n {\n this.setState({\n hoveredLink: link,\n });\n }}\n />\n );\n }\n\n /**\n * How to render each suggestion\n *\n */\n renderSuggestion(suggestion: SearchableProductProps, {query}) {\n const matches = match(suggestion.name, query);\n const parts = parse(suggestion.name, matches);\n\n return (\n {\n this.setState(\n {\n isCollapsed: true,\n value: \"\",\n hoveredLink: null,\n },\n () => {\n if (!suggestion.link) {\n return;\n }\n trackSuggestionClick({searchTerm: query, page: suggestion.name});\n navigate(suggestion.link);\n },\n );\n }}\n >\n \n {parts.map((part, i) => (\n \n {part.text}\n \n ))}\n \n {suggestion.subline}\n \n );\n }\n\n /**\n * How to render the input field\n *\n */\n renderInputComponent(inputProps: any) {\n return ;\n }\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(TextFilter);\n","/**\n * Caret icon\n *\n */\n\n// IMPORTS\nimport React from \"react\";\n\ninterface CaretProps {\n color?: string;\n strokeWidth?: number;\n}\nconst Caret = ({color = '#fff', strokeWidth = 1.5}: CaretProps) => (\n \n);\n\n\nexport default Caret;\n","/**\n * Clock icon\n *\n */\n\n// IMPORTS\nimport React from \"react\";\n\ninterface ClockProps {\n color?: string;\n strokeWidth?: number;\n}\nconst Clock = ({color = '#fff', strokeWidth = 1.5}: ClockProps) => (\n \n);\n\nexport default Clock;\n","/**\n * Magnifying Glass icon\n *\n */\n\n// IMPORTS\nimport React from \"react\";\n\ninterface MagnifierProps {\n color?: string;\n}\nconst Magnifier = ({color = \"#fff\"}: MagnifierProps) => (\n \n);\n\nexport default Magnifier;\n","/**\n * Burger Menu icon\n *\n */\n\n// IMPORTS\nimport React from \"react\";\n\ninterface BurgerProps {\n color?: string;\n strokeWidth?: number;\n}\nconst Burger = ({color = \"#fff\", strokeWidth = 1}: BurgerProps) => (\n \n);\n\nexport default Burger;\n","/**\n * Checkmark icon\n *\n */\n\n// IMPORTS\nimport React from \"react\";\n\ninterface CheckmarkProps {\n color?: string;\n strokeWidth?: number;\n}\nconst Checkmark = ({color = \"#fff\"}: CheckmarkProps) => (\n \n);\n\nexport default Checkmark;\n","/**\n * Close (x) icon\n *\n */\n\n// IMPORTS\nimport React from \"react\";\n\ninterface CloseProps {\n color?: string;\n strokeWidth?: number;\n}\nconst Close = ({color = \"#fff\", strokeWidth = 1.5}: CloseProps) => (\n \n);\n\nexport default Close;\n","import * as React from \"react\";\nimport {Link} from \"gatsby\";\nimport styled, {css} from \"styled-components\";\nimport VideoPlayer from \"../videoPlayer/videoPlayer\";\nimport {breakpoint, colors, fonts, fontSizesPx, stage} from \"../../models\";\nimport {Caret} from \"../../components\";\nimport {getLastSlug} from \"../../util/util\";\n\nconst CARET_SIZE = 8;\n\nconst CaretWrapper = styled.div`\n width: ${CARET_SIZE}px;\n height: ${CARET_SIZE}px;\n transform: rotate(-90deg) translateY(-${CARET_SIZE}px);\n`;\n\nconst StyledLink = styled(props => )`\n display: inline-flex;\n align-items: center;\n font-size: ${fontSizesPx.small};\n font-weight: ${fonts.weightBold};\n line-height: ${CARET_SIZE}px;\n color: ${colors.black};\n margin: 0 0 20px ${CARET_SIZE - 2}px;\n`;\n\nconst Links = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 40px;\n`;\n\nconst Description = styled.p`\n font-size: ${fontSizesPx.small};\n`;\n\nconst Heading = styled.h1`\n font-size: ${fontSizesPx.medium};\n\n ${breakpoint.xl.up} {\n font-size: ${fontSizesPx.mediumBig};\n margin-top: 0;\n };\n`;\n\nconst Article = styled.article`\n padding: 0 20px;\n\n ${breakpoint.m.up} {\n padding: 0;\n };\n`;\n\nconst VideoWrapper = styled.div`\n width: 100%;\n`;\n\nconst Image = styled.img`\n width: 100%;\n`;\n\n// NOTE: imageSize and videoSize on desktop is set to medium by default\nconst Container = styled.div<{layout: string; imageSize?: string; videoSize?: string}>`\n display: grid;\n margin: 90px auto;\n font-family: ${fonts.headerFont};\n\n ${breakpoint.m.up} {\n max-width: 605px;\n };\n\n ${breakpoint.xl.up} {\n grid-template-columns: repeat(12, 1fr);\n grid-column-gap: 10px;\n max-width: ${stage.outerWidth}px;\n margin: 120px auto;\n\n ${Image},\n ${VideoWrapper} {\n // NOTE: medium size\n grid-column: 1 / span 7;\n\n ${p =>\n p.layout === \"right\" &&\n css`\n grid-column: 6 / span 12;\n order: 2;\n `};\n }\n\n ${Image} {\n ${p =>\n p.imageSize === \"small\" &&\n css`\n max-width: 515px;\n grid-column: 2 / span 7;\n `};\n\n // NOTE: small size applicable to Image only\n ${p =>\n p.imageSize === \"small\" &&\n p.layout === \"right\" &&\n css`\n grid-column: 7 / span 9;\n `};\n\n ${p =>\n p.imageSize === \"large\" &&\n css`\n width: 840px;\n transform: translateX(${p => (p.layout === \"right\" ? \"120px\" : \"-120px\")});\n `};\n }\n\n ${Article} {\n // NOTE: medium size\n grid-column: 10 / span 12;\n\n ${p =>\n p.imageSize === \"small\" &&\n css`\n grid-column: 9 / span 10;\n max-width: 390px;\n `};\n\n\n ${p =>\n p.layout === \"right\" &&\n css`\n grid-column: 1 / span 4;\n `};\n\n // NOTE: small size applicable to Image only\n ${p =>\n p.imageSize === \"small\" &&\n p.layout === \"right\" &&\n css`\n grid-column: 2 / span 4;\n `};\n } // end Article\n\n ${VideoWrapper} {\n ${p =>\n p.videoSize === \"large\" &&\n css`\n width: 840px;\n transform: translateX(${p => (p.layout === \"right\" ? \"120px\" : \"-120px\")});\n `};\n }\n\n // end breakpoint.xl here\n };\n`;\n\ninterface ContentBlockProps {\n heading: string;\n description: string;\n type: \"video\" | \"image\";\n links: any;\n imageUrl?: string;\n imageSize?: string;\n videoId?: string;\n videoSize?: string;\n layout: string;\n}\n\nconst getLastSlugWithAnchor = (url: string): string => {\n const match = url.match(/\\/[a-z-]+\\/(#?.*)$/);\n return match && match.length > 0 ? match[1] : null;\n};\n\nconst ContentBlockComp = (props: ContentBlockProps) => {\n const {heading, description, type, links, imageUrl, videoId, layout, imageSize, videoSize} = props;\n const hasLinks = links instanceof Array;\n return (\n \n {type === \"image\" && }\n {type === \"video\" && (\n \n \n \n )}\n \n {heading}\n {description}\n {hasLinks && (\n \n {links.map((item, i) => {\n return (\n item.link &&\n item.label && (\n \n \n \n \n {item.label}\n \n )\n );\n })}\n \n )}\n \n \n );\n};\n\nexport default ContentBlockComp;\n\n","import {\n UPDATE_SELECTED_REGION,\n SET_TIMEZONE_DETECTED,\n UPDATE_UTC_OFFSET,\n UPDATE_LOCAL_UTC_OFFSET_TEXT,\n UPDATE_NAVIGATION_OVERLAY,\n UPDATE_IS_NAVIGATION_HIDDEN,\n UPDATE_IS_NAVIGATION_INVERTED,\n UPDATE_IS_TEXTFILTER_ACTIVE,\n UPDATE_IS_HOMEPAGE_ABOVE_VIDEO,\n SET_CURRENT_JW_PLAYER_ID,\n SET_USER_DID_CONSENT,\n UPDATE_SCREENWIDTH,\n SystemActionTypes,\n} from \"./types\";\nimport {DflRegionType, NavigationOverlayStateType} from \"../../models\";\n\nexport const updateRegionAction = (newRegion: DflRegionType): SystemActionTypes => {\n return {\n type: UPDATE_SELECTED_REGION,\n payload: newRegion,\n };\n};\n\nexport const setTimezoneDetectedAction = (): SystemActionTypes => {\n return {\n type: SET_TIMEZONE_DETECTED,\n payload: true,\n };\n};\n\nexport const updateUTCOffsetAction = (newOffset: number): SystemActionTypes => {\n return {\n type: UPDATE_UTC_OFFSET,\n payload: newOffset,\n };\n};\n\nexport const updateLocalUTCOffsetTextAction = (newLocalUTCOffsetText: string): SystemActionTypes => {\n return {\n type: UPDATE_LOCAL_UTC_OFFSET_TEXT,\n payload: newLocalUTCOffsetText,\n };\n};\n\nexport const updateNavigationOverlayAction = (newState: NavigationOverlayStateType): SystemActionTypes => {\n return {\n type: UPDATE_NAVIGATION_OVERLAY,\n payload: newState,\n };\n};\n\nexport const updateIsHomepageAboveVideoAction = (isAboveVideo: boolean): SystemActionTypes => {\n return {\n type: UPDATE_IS_HOMEPAGE_ABOVE_VIDEO,\n payload: isAboveVideo,\n };\n};\n\nexport const updateIsNavigationHiddenAction = (isHidden: boolean): SystemActionTypes => {\n return {\n type: UPDATE_IS_NAVIGATION_HIDDEN,\n payload: isHidden,\n };\n};\n\nexport const updateIsNavigationInvertedAction = (isInverted: boolean): SystemActionTypes => {\n return {\n type: UPDATE_IS_NAVIGATION_INVERTED,\n payload: isInverted,\n };\n};\n\nexport const updateIsTextFilterActiveAction = (isActive: boolean): SystemActionTypes => {\n return {\n type: UPDATE_IS_TEXTFILTER_ACTIVE,\n payload: isActive,\n };\n};\n\nexport const setCurrentJwPlayerIdAction = (newJwPlayerId: string): SystemActionTypes => {\n return {\n type: SET_CURRENT_JW_PLAYER_ID,\n payload: newJwPlayerId,\n };\n};\n\nexport const setUserDidConsentAction = (didConsent: boolean): SystemActionTypes => {\n return {\n type: SET_USER_DID_CONSENT,\n payload: didConsent,\n };\n};\n\nexport const updateScreenWidthAction = (newScreenWidth: number): SystemActionTypes => {\n return {\n type: UPDATE_SCREENWIDTH,\n payload: newScreenWidth,\n };\n};\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","arrayLikeToArray","isArray","obj","key","value","Object","defineProperty","enumerable","configurable","writable","iter","Symbol","iterator","from","TypeError","objectWithoutPropertiesLoose","source","excluded","target","getOwnPropertySymbols","sourceSymbolKeys","indexOf","prototype","propertyIsEnumerable","call","strings","raw","slice","freeze","defineProperties","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_typeof","constructor","o","minLen","n","toString","name","test","removeDiacritics","specialCharsRegex","wordCharacterRegex","whitespacesRegex","text","query","options","subject","baseObject","insideWords","findAllOccurrences","requireMatchAll","keys","forEach","cleanedTextArray","map","x","cleanedText","join","trim","split","filter","word","reduce","result","occurrence","index","wordLen","prefix","regex","RegExp","replace","exec","offset","initialOffset","indexes","push","sort","match1","match2","matches","highlight","match","startIndex","endIndex","hasOwn","hasOwnProperty","classNames","classes","arguments","arg","argType","inner","apply","default","QueryHandler","each","MediaQuery","isUnconditional","this","handlers","mql","window","matchMedia","self","listener","currentTarget","assess","addListener","constuctor","addHandler","handler","qh","on","removeHandler","h","equals","destroy","splice","clear","removeListener","action","Util","isFunction","MediaQueryDispatch","Error","queries","browserIsIncapable","register","q","shouldDegrade","unregister","deferSetup","setup","initialised","off","unmatch","collection","fn","camel2hyphen","obj2mq","mq","features","feature","isDimension","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","freeSelf","root","Function","objectToString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","type","toNumber","isObjectLike","isSymbol","other","valueOf","isBinary","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","undefined","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","cancel","clearTimeout","flush","_react","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","_interopRequireWildcard","_propTypes","_interopRequireDefault","_arrays","_Autowhatever","_theme","WeakMap","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","_defineProperties","props","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","e","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","alwaysTrue","REASON_SUGGESTIONS_REVEALED","REASON_INPUT_FOCUSED","REASON_INPUT_CHANGED","REASON_ESCAPE_PRESSED","Autosuggest","_Component","subClass","superClass","create","_inherits","Derived","Constructor","protoProps","staticProps","_super","Super","NewTarget","_ref2","_this","_alwaysRenderSuggestions","alwaysRenderSuggestions","instance","_classCallCheck","event","justClickedOnSuggestionsContainer","node","detail","document","getAttribute","suggestionsContainer","parentNode","autowhatever","_ref3","sectionIndex","itemIndex","updateHighlightedSuggestion","pressedSuggestion","justSelectedSuggestion","justMouseEntered","multiSection","input","focus","onSuggestionsClearRequested","data","_this$props","onSuggestionSelected","onSuggestionsFetchRequested","keepSuggestionsOnSelect","shouldKeepSuggestionsOnSelect","suggestion","suggestionValue","reason","resetHighlightedSuggestion","_this$props2","focusInputOnSuggestionClick","_this$getSuggestionIn","getSuggestionIndices","findSuggestionElement","suggestionIndex","clickedSuggestion","getSuggestion","clickedSuggestionValue","getSuggestionValue","maybeCallOnChange","method","closeSuggestions","onBlur","_this$props3","inputProps","shouldRenderSuggestions","highlightedSuggestion","getHighlightedSuggestion","shouldRender","setState","isFocused","highlightedSectionIndex","highlightedSuggestionIndex","valueBeforeUpDown","isCollapsed","blurEvent","_ref4","onMouseEnter","onSuggestionMouseEnter","onMouseLeave","onSuggestionMouseLeave","onMouseDown","onSuggestionMouseDown","onTouchStart","onSuggestionTouchStart","onTouchMove","onSuggestionTouchMove","onClick","onSuggestionClick","_ref5","containerProps","children","renderSuggestionsContainer","getQuery","state","justPressedUpDown","addEventListener","onDocumentMouseDown","onDocumentMouseUp","itemsContainer","nextProps","shouldResetHighlighting","highlightFirstSuggestion","suggestions","willRenderSuggestions","revealSuggestions","prevProps","prevState","_this$props4","onSuggestionHighlighted","removeEventListener","prevValue","_this2","shouldResetValueBeforeUpDown","_this$props5","getSectionSuggestions","_this$state","suggestionElement","startNode","console","error","newValue","_this$props$inputProp","onChange","_this3","_this$props6","renderInputComponent","renderSuggestion","renderSectionTitle","id","theme","_this$state2","_onFocus","onFocus","_onKeyDown","onKeyDown","isOpen","items","autowhateverInputProps","scrollTop","keyCode","preventDefault","newHighlightedSectionIndex","newHighlightedItemIndex","getSuggestionValueByIndex","_newValue","willCloseSuggestions","renderSuggestionData","createElement","renderItemsContainer","renderItem","renderItemData","getSectionItems","highlightedItemIndex","itemProps","mapToAutowhateverTheme","ref","storeAutowhateverRef","Component","array","isRequired","propName","bool","string","_ref","defaultTheme","_sectionIterator","_reactThemeable","_SectionTitle","_ItemList","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","next","done","err","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","emptyObject","Autowhatever","userRef","current","highlightedItem","section","concat","isInputFocused","nextPrev","_this$sectionIterator2","sectionIterator","setSectionsItems","setSectionIterator","setTheme","ensureHighlightedItemIsVisible","sectionsItems","sectionsLengths","allSectionsAreEmpty","every","itemsCount","keyPrefix","sectionKeyPrefix","isFirstSection","onHighlightedItemChange","getItemId","storeItemsListReference","itemOffsetRelativeToContainer","offsetParent","offsetTop","offsetHeight","renderedItems","renderSections","renderItems","ariaActivedescendant","itemsContainerId","role","inputComponent","autoComplete","storeInputReference","storeItemsContainerReference","oneOfType","number","container","containerOpen","inputOpen","inputFocused","itemsContainerOpen","itemsList","item","itemFirst","itemHighlighted","sectionContainer","sectionContainerFirst","sectionTitle","_compareObjects","_extends","assign","_objectWithoutProperties","sourceKeys","_objectWithoutPropertiesLoose","Item","_len","_key","isHighlighted","restProps","storeItemReference","any","_Item","ItemsList","sectionPrefix","isItemPropsFunction","isFirst","itemKey","itemPropsObj","allItemProps","storeHighlightedItemReference","SectionTitle","objA","objB","aKeys","bKeys","keysMap","aValue","bValue","aValueKeys","bValueKeys","aValueKey","suggestionsContainerOpen","suggestionsList","suggestionFirst","suggestionHighlighted","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","it","size","entries","flags","$$typeof","message","warn","_createClass","_react2","_propTypes2","sizerStyle","position","top","left","visibility","height","overflow","whiteSpace","INPUT_PROPS_BLACKLIST","copyStyles","styles","style","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","navigator","userAgent","generateId","random","substr","AutosizeInput","inputRef","el","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","minWidth","inputId","prevId","mounted","copyInputStyles","updateInputWidth","onAutosize","getComputedStyle","inputStyles","scrollWidth","newInputWidth","placeholder","placeholderIsMinWidth","extraWidth","blur","select","injectStyles","dangerouslySetInnerHTML","__html","sizerValue","defaultValue","previousValue","currentValue","wrapperStyle","display","inputStyle","boxSizing","width","field","cleanInputProps","className","inputClassName","renderStyles","propTypes","defaultProps","_onAdPlay2","_onBeforePlay2","_onFullScreen2","_onMute2","_onPlay2","_onTime2","_onVideoLoad2","component","onAdPlay","bind","onBeforePlay","onFullScreen","onMute","onPlay","onTime","onVideoLoad","adHasPlayed","onAdResume","player","currentVideo","getPlaylistItem","hasPlayed","generatePrerollUrl","playAd","fullscreen","onEnterFullScreen","onExitFullScreen","mute","onUnmute","playReason","onAutoStart","oldstate","onResume","hasFired","duration","hasChanged","threeSeconds","onThreeSeconds","tenSeconds","onTenSeconds","thirtySeconds","onThirtySeconds","twentyFivePercent","onTwentyFivePercent","fiftyPercent","onFiftyPercent","seventyFivePercent","onSeventyFivePercent","ninetyFivePercent","onNinetyFivePercent","noOp","aspectRatio","file","isAutoPlay","isMuted","onAdSkipped","onAdComplete","onClose","onReady","onError","onAdPause","onPause","onOneHundredPercent","onBuffer","onBufferChange","playlist","useMultiplePlayerScripts","existingScript","callback","previousOnload","onload","prop","eventName","_eventName","firstLetter","rest","toLowerCase","opts","_opts$customProps","customProps","image","licenseKey","hasAdvertising","playerOpts","aspectratio","advertising","client","admessage","autoplayadsmuted","autostart","_getEventNameFromProp","_getEventNameFromProp2","eventsToInitialize","adPlay","eventHandlers","beforeComplete","beforePlay","play","playlistItem","context","onLoadCallback","scriptSrc","uniqueScriptId","jwPlayerScript","src","head","appendChild","playerId","jwplayer","remove","playerConfigs","__JW_PLAYER_CONFIGS__","existingConfig","defaults","oneOf","playerScript","_reactFastCompare2","_createEventHandlers2","_getCurriedOnLoad2","_getPlayerOpts2","_initialize3","_installPlayerScript2","_removeJwPlayerInstance2","_setJwPlayerDefaults2","_defaultProps2","_playerPropTypes2","ReactJWPlayer","videoRef","_initialize","_setVideoRef","isJWPlayerScriptLoaded","getElementById","isUsingMultiplePlayerScripts","hasFileChanged","hasPlaylistChanged","_props","element","displayName","keyList","hasProp","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","ex","React","React__default","canUseDOM","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","peek","rewind","recordedState","_proto","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","render","PureComponent","getDisplayName","NextArrow","PrevArrow","_classnames","_innerSliderUtils","_createSuper","hasNativeReflectConstruct","_React$PureComponent","clickHandler","prevClasses","prevHandler","infinite","currentSlide","slideCount","slidesToShow","prevArrowProps","prevArrow","cloneElement","_React$PureComponent2","_super2","nextClasses","nextHandler","canGoNext","nextArrowProps","nextArrow","_default","accessibility","adaptiveHeight","afterChange","appendDots","dots","arrows","autoplay","autoplaySpeed","beforeChange","centerMode","centerPadding","cssEase","customPaging","dotsClass","draggable","easing","edgeFriction","fade","focusOnSelect","initialSlide","lazyLoad","onEdge","onInit","onLazyLoadError","onReInit","pauseOnDotsHover","pauseOnFocus","pauseOnHover","responsive","rows","rtl","slide","slidesPerRow","slidesToScroll","speed","swipe","swipeEvent","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","waitForAnimate","Dots","spec","onMouseOver","dotCount","ceil","mouseEvents","_rightBound","rightBound","clamp","_leftBound","leftBound","dotOptions","animating","autoplaying","currentDirection","currentLeft","direction","dragging","edgeDragged","initialized","lazyLoadedList","listHeight","listWidth","scrolling","slideHeight","slideWidth","swipeLeft","swiped","swiping","touchObject","startX","startY","curX","curY","trackStyle","trackWidth","targetSlide","InnerSlider","_initialState","_lodash","_track","_dots","_arrows","_resizeObserverPolyfill","_React$Component","list","track","elem","querySelector","getHeight","slidesToLoad","getOnDemandLazySlides","onLazyLoad","listRef","trackRef","updateState","adaptHeight","autoPlay","lazyLoadTimer","setInterval","progressiveLazyLoad","ro","onWindowResized","callbackTimers","observe","querySelectorAll","onfocus","onSlideFocus","onblur","onSlideBlur","attachEvent","animationEndCallback","clearInterval","timer","detachEvent","autoplayTimer","disconnect","checkImagesLoad","setTrackStyle","didPropsChange","Children","count","changeSlide","pause","debouncedResize","resizeWindow","isTrackMounted","Boolean","updatedState","initializedState","slideIndex","targetLeft","getTrackLeft","getTrackCSS","_trackWidth","_trackLeft","childrenWidths","preClones","getPreClones","postClones","getPostClones","child","_i2","_trackStyle","currentWidth","childrenCount","trackLeft","images","imagesCount","loadedCount","onclick","prevClickHandler","onerror","_index","dontAnimate","asNavFor","_slideHandler","slideHandler","nextState","asNavForIndex","innerSlider","firstBatch","nodes","clickable","stopPropagation","dir","keyHandler","ontouchmove","returnValue","verticalSwiping","disableBodyScroll","swipeStart","swipeMove","swipeEnd","triggerSlideHandler","enableBodyScroll","Number","isNaN","nextIndex","playType","pauseType","trackProps","extractObject","onTrackOver","onTrackLeave","selectHandler","dotProps","onDotsLeave","onDotsOver","arrowProps","verticalHeightStyle","centerPaddingStyle","padding","listStyle","listProps","onMouseMove","onMouseUp","onTouchEnd","touchEnd","onTouchCancel","innerSliderProps","unslick","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_i3","_Object$keys","_innerSlider","_json2mq","_defaultProps","enquire","Slider","slickPrev","slickNext","slickGoTo","breakpoint","_responsiveMediaHandlers","breakpoints","breakpt","y","bQuery","maxWidth","media","settings","newProps","resp","toArray","newChildren","newSlide","j","row","k","tabIndex","innerSliderRefHandler","getSlideClasses","slickActive","slickCenter","slickCloned","centerOffset","floor","getKey","fallbackKey","renderSlides","slides","preCloneSlides","postCloneSlides","lazyStartIndex","lazyEndIndex","childOnClickOptions","childStyle","opacity","transition","getSlideStyle","slideClass","slideClasses","outline","preCloneNo","reverse","handleRef","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getTrackAnimateCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","getSwipeDirection","getWidth","lazySlidesOnRight","lazySlidesOnLeft","getRequiredLazySlides","safePreventDefault","lowerBound","upperBound","includes","_reactName","onDemandSlides","requiredSlides","offsetWidth","xDist","yDist","r","swipeAngle","atan2","round","PI","abs","canGo","newObject","listNode","trackNode","centerPaddingAdj","finalSlide","animationLeft","finalLeft","animationSlide","indexOffset","previousInt","slideOffset","previousTargetSlide","tagName","touches","pageX","clientX","pageY","clientY","curLeft","swipeLength","sqrt","pow","verticalSwipeLength","positionOffset","swipeDirection","touchSwipeLength","onSwipe","minSwipe","activeSlide","counter","navigables","prevNavigable","swipedSlide","slickList","offsetLeft","currentIndex","dataset","keysArray","trackHeight","trackChildren","WebkitTransition","WebkitTransform","transform","msTransform","marginTop","marginLeft","slidesToOffset","targetSlideIndex","trackElem","childNodes","right","sliceIterator","_toConsumableArray","_objectAssign","_objectAssign2","truthy","classNameDecorator","names","CAN_USE_DOM","memoized","canUsePassiveEventListeners","supportsPassiveOption","noop","testPassiveEventListeners","ensureCanMutateNextEventHandlers","nextHandlers","TargetEventHandlers","events","getEventHandlers","normalizedEventOptions","String","capture","passive","once","handleEvent","add","isSubscribed","EVENT_HANDLERS_KEY","eventOptions","normalizeEventOptions","computeOffsetPixels","contextHeight","str","pixelOffset","parseFloat","isFinite","percentOffset","parseOffsetAsPercentage","ABOVE","INSIDE","BELOW","INVISIBLE","isDOMElement","timeout","timeoutQueue","onNextTick","cb","shift","hasWindow","debug","scrollableAncestor","topOffset","bottomOffset","horizontal","onEnter","onLeave","onPositionChange","fireOnRapidScroll","Waypoint","refElement","componentDidMount","cancelOnNextTick","_this2$props","ensureRefIsProvidedByChild","_handleScroll","_findScrollableAncestor","scrollEventListenerUnsubscribe","resizeEventListenerUnsubscribe","resolveScrollableAncestorProp","body","getPropertyValue","bounds","_getBounds","currentPosition","viewportBottom","viewportTop","waypointTop","waypointBottom","getCurrentPosition","previousPosition","_previousPosition","callbackArg","contextScrollTop","_this$_ref$getBoundin","getBoundingClientRect","bottom","innerWidth","innerHeight","_this4","isForwardRef","innerRef","above","below","inside","invisible","u","for","c","d","f","l","m","t","v","characterMap","chars","allAccents","firstAccent","removeAccents","MapShim","getIndex","some","entry","class_1","__entries__","delete","ctx","_a","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","clientWidth","clientHeight","paddings","positions_1","getPaddings","horizPad","vertPad","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","_position","nextNonEmptySectionIndex","prev","_position2","prevNonEmptySectionIndex","isLast","_class","_temp","createGlobalStyle","fonts","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","classCallCheck","createClass","objectWithoutProperties","possibleConstructorReturn","encodeSpecialCharacters","encode","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","tag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","property","rafPolyfill","clock","currentTime","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","title","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","getElementsByTagName","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","removeAttribute","tags","headElement","tagNodes","indexToDelete","newElement","innerHTML","styleSheet","cssText","createTextNode","existingTag","isEqualNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","_ref$title","base","link","meta","noscript","script","HelmetSideEffects","defer","HelmetExport","HelmetWrapper","inherits","shouldComponentUpdate","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","defaultTitle","titleTemplate","mappedState","renderStatic","SEO","description","lang","site","useStaticQuery","metaDescription","siteMetadata","author","Select","styled","fontSizesPx","isBold","colors","selectedOption","selectedIndex","option","label","StyleSheet","_insertTag","before","prepend","firstChild","nextSibling","insertBefore","isSpeedy","speedy","ctr","nonce","hydrate","insert","rule","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","fromCharCode","pattern","replacement","indexof","search","charCodeAt","begin","end","line","column","character","characters","parent","return","copy","caret","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","identifier","MS","MOZ","WEBKIT","COMMENT","DECLARATION","serialize","output","stringify","hash","compile","parse","rules","rulesets","pseudo","points","declarations","atrule","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","z","getRules","parsed","toRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","ssrStyles","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","selector","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","isStringTag","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","cached","labelPattern","stringMode","lastIndex","identifierName","EmotionCacheContext","createContext","HTMLElement","CacheProvider","Provider","forwardRef","useContext","typePropName","createEmotionProps","Emotion","cssProp","css","jsx","argsLength","createElementArgArray","classnames","cls","toAdd","merge","ClassNames","cx","_len2","_key2","ele","applyPrefixToName","cleanValue","cleanCommonProps","clearValue","getStyles","getValue","hasValue","isMulti","isRtl","selectOption","selectProps","setValue","getScrollTop","pageYOffset","scrollTo","easeOutCubic","animatedScrollTo","to","start","change","increment","animateScroll","val","isTouchCapable","createEvent","passiveOptionAccessed","w","supportsPassiveEvents","getMenuPlacement","maxHeight","menuEl","minHeight","placement","shouldScroll","isFixedPosition","spacing","scrollParent","excludeStaticParent","overflowRx","docEl","parentElement","overflowY","overflowX","getScrollParent","defaultState","scrollHeight","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","marginBottom","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","PortalPlacementContext","getPortalPlacement","MenuPlacer","maxMenuHeight","getPlacement","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getUpdatedProps","placerProps","contextType","noticeCSS","_ref5$theme","baseUnit","color","neutral40","textAlign","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","innerProps","LoadingMessage","_templateObject","MenuPortal","_Component2","_ref7","appendTo","controlElement","isFixed","getBoundingClientObj","scrollDistance","menuWrapper","createPortal","Svg","viewBox","focusable","CrossIcon","DownChevron","baseCSS","_ref3$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","keyframes","LoadingDot","_ref6","animation","backgroundColor","borderRadius","verticalAlign","LoadingIndicator","indicator","isHidden","background","border","MultiValueGeneric","MultiValueContainer","MultiValueLabel","MultiValue","components","isDisabled","removeProps","Container","Label","Remove","emotionCx","cropWithEllipsis","ClearIndicator","Control","menuIsOpen","control","DropdownIndicator","Group","Heading","headingProps","group","GroupHeading","_cleanCommonProps","IndicatorsContainer","indicators","IndicatorSeparator","Input","disabled","Menu","menu","MenuList","MultiValueRemove","Option","isSelected","Placeholder","SelectContainer","SingleValue","ValueContainer","safeIsNaN","areInputsEqual","newInputs","lastInputs","first","second","resultFn","isEqual","lastResult","calledOnce","newArgs","A11yText","defaultAriaLiveMessages","guidance","isSearchable","tabSelectsValue","_props$label","_props$focused","focused","_props$label2","selectValue","getArrayIndex","status","onFilter","inputValue","resultsMessage","LiveRegion","ariaSelection","focusedOption","focusedValue","focusableOptions","ariaLiveMessages","getOptionLabel","isOptionDisabled","screenReaderStatus","ariaLabel","ariaLive","messages","useMemo","ariaSelected","removedValue","selected","onChangeProps","ariaFocused","focusMsg","onFocusProps","ariaResults","resultsMsg","ariaGuidance","guidanceMsg","ariaContext","diacritics","letters","anyDiacritic","diacriticToBase","diacritic","stripDiacritics","memoizedStripDiacriticsForInput","trimString","defaultStringify","DummyInput","in","out","onExited","appear","enter","exit","emotion","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","maxTouchPoints","activeScrollLocks","listenerOptions","blurSelectInput","activeElement","ScrollManager","lockEnabled","_ref$captureEnabled","captureEnabled","setScrollCaptureTarget","isEnabled","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","isBottom","useRef","isTop","touchStart","scrollTarget","handleEventDelta","useCallback","delta","_scrollTarget$current","isDeltaPositive","availableScroll","shouldCancelScroll","cancelScroll","onWheel","deltaY","changedTouches","startListening","notPassive","stopListening","useEffect","useScrollCapture","setScrollLockTarget","_ref$accountForScroll","accountForScrollbars","originalStyles","addScrollLock","touchScrollTarget","targetStyle","currentPadding","paddingRight","adjustedPadding","removeScrollLock","useScrollLock","defaultStyles","clearIndicator","pointerEvents","_ref$theme","alignItems","neutral5","neutral0","borderColor","neutral10","primary","borderStyle","borderWidth","boxShadow","flexWrap","justifyContent","neutral30","dropdownIndicator","paddingBottom","paddingTop","groupHeading","paddingLeft","indicatorsContainer","alignSelf","flexShrink","indicatorSeparator","_ref4$theme","margin","loadingIndicator","lineHeight","marginRight","loadingMessage","_ref2$theme","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","zIndex","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","userSelect","WebkitTapHighlightColor","primary50","neutral50","singleValue","valueContainer","flex","config","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionValue","isLoading","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","pageSize","toCategorizedOption","_isOptionDisabled","_isOptionSelected","getOptionLabel$1","getOptionValue$1","buildCategorizedOptions","groupOrOption","groupOrOptionIndex","categorizedOptions","optionIndex","categorizedOption","isFocusable","buildFocusableOptionsFromCategorizedOptions","optionsAccumulator","_props$inputValue","shouldHideSelectedOptions","_filterOption","isOptionSelected","hideSelectedOptions","instanceId","inputIsHidden","clearFocusValueOnUpdate","inputIsHiddenAfterUpdate","blockOptionHover","isComposing","commonProps","initialTouchX","initialTouchY","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","focusInput","blurInput","actionMeta","ariaOnChange","onInputChange","onMenuClose","deselected","removeValue","newValueArray","removedValues","popValue","lastSelectedValue","classNamePrefix","custom","getElementId","getComponents","getCategorizedOptions","buildFocusableOptions","getFocusableOptions","onMenuMouseDown","button","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","onClearIndicatorMouseDown","onScroll","onCompositionStart","onCompositionEnd","touch","deltaX","contains","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","onMenuOpen","onInputFocus","onInputBlur","onOptionHover","isClearable","defaultPrevented","focusValue","shiftKey","focusOption","startListeningComposition","startListeningToTouch","autoFocus","focusedEl","menuRect","focusedRect","overScroll","stopListeningComposition","stopListeningToTouch","openAtIndex","_this$state3","focusedIndex","nextFocus","getTheme","_this$props7","formatOptionLabel","_this$props8","form","ariaAttributes","autoCapitalize","autoCorrect","spellCheck","readOnly","_this$getComponents2","_this$props9","_this$state4","selectValues","opt","isOptionFocused","_this$props10","_this$props11","_this$getComponents5","_this$getComponents7","_this$props12","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","onHover","onSelect","optionId","hasOptions","groupIndex","groupId","headingId","_message","menuPlacementProps","menuElement","_ref4$placerProps","scrollTargetRef","_this5","_this$props13","_value","_this$state5","_this$getComponents8","_this$props14","getCommonProps","renderLiveRegion","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","newMenuOptionsState","nextSelectValue","lastFocusedIndex","getNextFocusedValue","lastFocusedOption","getNextFocusedOption","newInputIsHiddenState","defaultInputValue","defaultMenuIsOpen","SelectComponent","StateManager","callProp","getProp","manageState","OPTION_MIN_WIDTH","customStyles","borderBottom","span","onHandleChange","isNodeFound","componentNode","ignoreClass","correspondingElement","classList","seed","passiveEventSupport","uid","handlersMap","enabledInstances","touchEvents","getEventHandlerOptions","handlerOptions","componentName","onClickOutside","__outsideClickHandler","__clickOutsideHandlerProp","handleClickOutside","__getComponentNode","setClickOutsideRef","findDOMNode","enableOnClickOutside","_uid","testPassiveEventSupport","eventTypes","evt","excludeScrollbar","host","findHighest","composed","composedPath","outsideClickIgnoreClass","disableOnClickOutside","getRef","instanceRef","isReactComponent","wrappedRef","getClass","DropdownWrapper","RowDiv","zIndices","condensedMicroRegular","px","elementSizes","Title","condensedMicroBold","CaretWrapper","Choice","ChoicesList","GenericSelect","toggleCollapsed","CTA","smallBold","CenteredDiv","CTAComp","hovered","href","strokeWidth","Wrapper","MainStageVideo","useVerticalVideo","connect","screenWidth","system","srcHorizontal","srcVertical","muted","loop","playsInline","baseBold","componentBreakpoints","mediumBold","Text","macroRegular","smallRegular","CaretIcon","Tile","TileOverlay","isMobileNav","Row","Column","Cell","CategoryLink","Link","CloseOverlayLink","category","slug","trackSubNavClick","SubNavType","isMobile","updateNavigationOverlay","navigationOverlayStates","live","digital","MobileNavWrapper","ColumnDiv","Headline","dispatch","updateNavigationOverlayAction","productPages","allWpPage","edges","page","databaseId","wordpressPageIds","matchdayCategories","edge","categoryclass","categoryClasses","promotionCategories","storytellingCategories","wpPageNodeToCategory","MessageWrapper","mobilePaddings","mediumLight","Message","stage","createMarkup","RegularCell","collapsed","scheduleSizes","CategoryAggregationCell","CategoryCell","condensedMacroBold","VerticalWrapper","VerticalRegular","condensedSmallRegular","VerticalBold","condensedSmallBold","FlippedTextContainer","FlippedTextInner","ContentTable","BroadcastEntryLink","updateActiveSynergiesAction","newSynergies","UPDATE_ACTIVE_SYNERGIES","payload","updateHoveredDayAction","newDayIndex","UPDATE_HOVERED_DAY","updateUTCTimeOffsetAction","newTimeOffset","UPDATE_UTC_TIME_OFFSET","TableRow","CellInner","BroadcastEntry","LabelRow","RowRight","textColor","active","timings","SubLabel","TimeLabel","ClockWrapper","SynergyDotWrapper","SynergyDot","activeSynergies","schedule","activeBroadcastSynergies","hoveredDay","localUTCOffset","utcOffset","selectedUTCOffset","selectedUTCTimeOffset","updateActiveSynergies","updateHoveredDay","isSpan","spanContent","activeMatchDays","categoryName","labelColor","days","rowSpan","day","dayIndex","isDayHovered","broadcastGroups","broadCastGroup","entryIndex","isBroadcastGroupInActiveSynergyGroup","broadcasts","broadcast","linkTo","productLink","trackInternalLinkClick","subLabel","broadcastIndex","utcOffsetToUse","utcTimeStates","DFL_UTC_OFFSET","isBroadcastInActiveSynergyGroup","broadCastDate","anyTime","displayBroadcastTimeByLocalTimezoneOffset","createBroadcastDate","hours","minutes","weekDay","DayLabelRow","LabelCell","centered","scheduleWeek","isDayCollapsed","weekDayMap","shortName","fullName","categories","SeasonalProduct","TitleRow","Enhancement","Description","SeasonCell","seasons","season","seasonIndex","seasonalProducts","product","productIndex","enhancement","SeasonLabelRow","seasonMap","ScheduleMobile","ToggleButton","ToggleButtonWrapper","CategoriesWrapper","CategoryRow","hasMargin","CategoryLabel","DayLabel","BroadcastLabel","CustomDot","CustomDotsList","matchdaysCategories","seasonCategories","selectedView","updateSelectedView","scheduleViews","currentDay","categoryIndex","dayEntry","find","leftPad","currentSeason","seasonCategory","seasonCategoryIndex","seasonEntry","seasonalProduct","HeaderRow","ScheduleWrapper","ButtonColumn","Button","ScheduleTableWrapper","Schedule","NavigationRow","NavigationTimeSelect","NavigationViewToggle","DownloadText","NavigationViewToggleElement","activeMatchdays","selectedTimeOffset","localUTCOffsetText","updateActiveMatchDays","newMatchDays","newMatchdays","UPDATE_ACTIVE_MATCHDAYS","updateSelectedTimeOffset","newOffsetState","newView","UPDATE_SELECTED_VIEW","updateSelectedViewAction","aroundMatchdaysCategories","aroundSeasonCategories","pdfUrl","utcTimeStateMap","activeOption","ProgressTag","ProgressTagContainer","filledColor","barChartMaxValue","addCommasToNumber","barColor","QuickFactsFootnoteText","QuickFactsFootnote","QuickFactsItemImage","QuickFactsItemMain","QuickFactsItemDescription","QuickFactsItemHeadline","QuickFactsItemArticle","QuickFactsItem","QuickFactsItemWrapper","QuickFactsNonSlider","QuickFactsSlider","QuickFactsMain","QuickFacts","FullpageHeadline","FullpageSubheadline","headline","subheadline","footnote","SliderSettings","mainContent","heading","barChartOrImage","barChart","sourceUrl","alt","lineOfText","ContactCard","Logo","ContactDetails","Name","microBold","Telephone","microRegular","TextLink","phone","email","website","logo","trimWebsiteUrl","BottomRow","FooterRow","FooterRowInner","FooterLinks","StaticPageLinks","Separator","FooterText","StaticQuery","contactMainBLI","wpPost","contacts","mainBli","contactMainDFL","mainDfl","legalNoticeLabel","staticPageMap","staticPages","privacyPolicyLabel","imprintLabel","logoDFL","logoBLI","trackFooterLinkClick","Avatar","Email","avatar","position_two","location","decryptMail","ContactList","ContactRow","ContactWrapper","contactsBLI","contact","ContactListWithQuery","acfFieldsToContactPersons","contactsBli","market","selectedRegion","contactsDFL","contactsDfl","DescriptionList","descriptions","linesToTextArray","lineIndex","VideoPlayer","trackVideoPlayerAction","videoId","handleWaypointLeave","isPlaying","loaded","setCurrentJwPlayerId","currentJwPlayerId","newJwPlayerId","setCurrentJwPlayerIdAction","DescriptionColumns","CTARow","CTAWrapper","HeadlineWrapper","Subheadline","baseRegular","Anchor","LocalizedContentWrapper","ContentWrapper","columnSpan","LocalizedImage","columns","cta","isLocalized","isImage","isVideo","localizedImage","localizedVideos","getLocalizedVideo","imageUrl","getLocalizedImage","useButton","cleanedTitle","slugify","ButtonWrapper","ProductWrapper","enhanced","SizedImageContainer","imageSize","productWithImageSizes","layout","SizedImage","StageWidthContainer","Decoration","InfoBox","Image","imageAltText","decoration","localizedImages","videoSize","contentType","localizedImageUrl","getLocalizedProductImage","localizedVideoId","contentTypes","imageSrc","videoSrc","infoBox","productWithDecorations","decorationMap","visualElement","isLargeImage","isSmallOrMediumImage","isLargeVideo","productWithVideoSizes","isMediumVideo","stageWidth","gapWidth","visualPosition","contentWidth","contentElement","visualWidth","ProductHeader","Caption","hugeBold","caption","getTypes","allowedTypes","types","calculations","clientTop","clientLeft","scroll","scrollLeft","Measure","WithContentRect","_animationFrameID","_resizeObserver","_node","_window","measure","onResize","_handleRef","measureRef","withContentRect","ProductIntro","TextWrap","ProductIntroComp","fullWidth","handleResize","textWidth","mapRef","PinnedImageRow","fillColor","VisualContentWrapper","isLeft","PinnedImageRowComp","elementWidth","imageWidth","isVisualLeft","RundownSection","RundownBlockWrapper","rundownBlockSizes","RundownTimesRow","RundownTime","RundownBlockDiv","BlockInfobox","ProductLink","LinkDescription","LinkLabel","SpaceWrapper","Space","feed","selectedWeekDay","selectedPreMatchStartAndEndTime","selectedLiveMatchFirstHalfStartAndEndTime","selectedLiveMatchSecondHalfStartAndEndTime","selectedPostMatchStartAndEndTime","selectedDigitalHighlightsClipsTime","selectedSlowMotionPlayOutsTime","selectedPostMatchInterviewsTime","endTime","startTime","timePrefix","leftPosition","isBlockElementType","rundownElementTypes","matchStartTimeHours","matchStartTimeMinutes","matchEndTimeHours","matchEndTimeMinutes","getProductStartTime","getProductEndTime","startTimeWithOffset","endTimeWithOffset","url","RundownWrapper","RundownStage","OverflowScroll","RundownGraphicWrapper","SelectDescription","SelectMenu","CustomSelect","NativeSelectCaret","NativeSelectContainer","SelectWrapper","RundownElements","WorldFeedElements","AfterWorldFeedElements","WorldFeedLinkRow","AdditionalLinkRow","WorldFeedLinkArea","GoalArenaLinkArea","WorldFeedLink","WorldFeedLinkLineWrapper","WorldFeedLinkLine","Footnote","RundownComp","onSelectTimeChange","weekday","updateSelectedWeekDay","updateSelectedPreMatchStartAndEndTime","updateSelectedLiveMatchFirstHalfStartAndEndTime","updateSelectedLiveMatchSecondHalfStartAndEndTime","updateSelectedPostMatchStartAndEndTime","updateSelectedDigitalHighlightsClipsTime","updateSelectedSlowMotionPlayOutsTime","updateSelectedPostMatchInterviewsTime","rundownTimeMap","preMatchStart","preMatchEnd","liveMatchFirstHalfStart","liveMatchFirstHalfEnd","liveMatchSecondHalfStart","liveMatchSecondHalfEnd","postMatchStart","postMatchEnd","digitalHightlightClips","slowMotionPlayOuts","postMatchInterviews","selectedDateOption","fridayNight","RundownSelectMenuValues","saturdayAfternoon","saturdayNight","sundayLunch","sundayAfternoon","sundayNight","mondayNight","tuesdayNight","tuesdayLateNight","wednesdayNight","wednesdayLateNight","weekDays","intro","worldFeed","afterWorldFeed","updateSelectedDateOption","localTime","rundownDatesSelectOptionsNative","date","rundownDatesSelectOptionsDesktop","rundown","newDateState","newDate","UPDATE_SELECTED_DATE_OPTION","newWeekDayState","newSelectedWeekDay","UPDATE_SELECTED_WEEK_DAY","newSelectedPreMatchStartAndEndTimeState","newSelectedPreMatchStartAndEndTime","UPDATE_SELECTED_PREMATCH_START_AND_END_TIME","newSelectedLiveMatchFirstHalfStartAndEndTimeState","newSelectedLiveMatchFirstHalfStartAndEndTime","UPDATE_SELECTED_LIVEMATCH_FIRST_HALF_START_AND_END_TIME","newSelectedLiveMatchSecondHalfStartAndEndTimeState","newSelectedLiveMatchSecondHalfStartAndEndTime","UPDATE_SELECTED_LIVEMATCH_SECOND_HALF_START_AND_END_TIME","newSelectedPostMatchStartAndEndTimeState","newSelectedPostMatchStartAndEndTime","UPDATE_SELECTED_POST_MATCH_START_AND_END_TIME","newSelectedDigitalHighlightsClipsTimeState","newSelectedDigitalHighlightsClipsTime","UPDATE_SELECTED_DIGITAL_HIGHLIGHTS_CLIPS_TIME","newSelectedSlowMotionPlayOutsTimeState","newSelectedSlowMotionPlayOutsTime","UPDATE_SELECTED_SLOW_MOTION_PLAY_OUTS_TIME","newSelectedPostMatchInterviewsTimeState","newSelectedPostMatchInterviewsTime","UPDATE_SELECTED_POST_MATCH_INTERVIEWS_TIME","CARET_WIDTH_MOBILE","CARET_WIDTH_DESKTOP","SubTitle","ListItems","desktopColumnsLayout","linksListItemsDesktopColumnsLayout","subTitle","overline","ConsentBannerContainer","hidden","ConsentBannerContainerInner","ConsentBannerMessage","ConsentBannerButton","ConsentBanner","hideForever","setUserDidConsent","localStorage","getItem","COOKIE_KEY","userDidConsent","setItem","didConsent","setUserDidConsentAction","CaretActiveStyles","TextUnaccented","isTextDark","isInverted","PointerDiv","LinkList","LinkListDropdownMenuBtn","GridColumnDiv","isNavigationInverted","overlayState","onProductsMouseOver","onProductsMouseLeave","onUpdateRegionClick","onPageLinkClick","searchables","isCaretActive","isNavInverted","inactiveCaretColor","activeStyle","updateRegion","activeClassName","products","IconWrapper","isOverlayActive","onMenuClick","MobileOverlayButton","ButtonContent","onButtonClick","RegionRadioGroup","RadioItem","RadioItemContent","RadioItemComp","region","onRegionClick","dflRegions","MobileOverlayMainContact","LogoWrapper","visible","macroBold","CloseOverlayButton","logoDfl","logoBli","CONTAINER_PADDING_TOP","InnerContainer","show","Header","HeaderContentBackground","HeaderContent","Overlay","overlayActive","isNavigationHidden","isHomepageAboveVideo","updateRegionAction","updateScreenWidth","newScreenWidth","updateScreenWidthAction","updateIsNavigationInverted","updateIsNavigationInvertedAction","decodeHtml","subline","cutOffText","introText","suggestionSublineMaxLength","allWpPost","productToRelatedProductProps","product_details","productContent","productContentType","imageOrVideoSettings","productImageOrVideoSettings","productThreeColumnModule","columnOne","threeColumnLocalizedContentColumnOne","columnTwo","threeColumnLocalizedContentColumnTwo","columnThree","threeColumnLocalizedContentColumnThree","headerRef","trackMobileLocalizationChange","trackMainLogoClick","logoSmall","logoWide","trackNavClick","trackMobileMenuToggle","REGIONS","RegionDropdownContainer","RegionDropdownItem","regionIndex","SorryMessage","SorryMessageValue","SuggestionTitle","SuggestionSubline","SuggestionContainer","hasInput","SuggestionContainerComp","resultsEmpty","searchTerm","updateHoveredLink","IconContainerCollapsable","CollapsableContent","AutosuggestWrapper","StyledInput","SuggestionTitleSpan","SuggestionLink","TextFilter","_event","getSuggestions","hoveredLink","navigate","trackSuggestionClick","updateIsTextFilterActive","trackSearchButtonClick","escapedValue","escapeRegexCharacters","parts","part","updateIsTextFilterActiveAction","version","xmlns","xmlnsXlink","stroke","fill","strokeLinecap","fillRule","cy","strokeLinejoin","rx","ry","StyledLink","CARET_SIZE","Links","Article","VideoWrapper","getLastSlugWithAnchor","links","hasLinks","newRegion","UPDATE_SELECTED_REGION","setTimezoneDetectedAction","SET_TIMEZONE_DETECTED","updateUTCOffsetAction","newOffset","UPDATE_UTC_OFFSET","updateLocalUTCOffsetTextAction","newLocalUTCOffsetText","UPDATE_LOCAL_UTC_OFFSET_TEXT","UPDATE_NAVIGATION_OVERLAY","updateIsHomepageAboveVideoAction","isAboveVideo","UPDATE_IS_HOMEPAGE_ABOVE_VIDEO","updateIsNavigationHiddenAction","UPDATE_IS_NAVIGATION_HIDDEN","UPDATE_IS_NAVIGATION_INVERTED","UPDATE_IS_TEXTFILTER_ACTIVE","SET_CURRENT_JW_PLAYER_ID","SET_USER_DID_CONSENT","UPDATE_SCREENWIDTH"],"sourceRoot":""}