{"version":3,"sources":["webpack:///./node_modules/prop-types/index.js","webpack:///./src/js/helpers/index.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/classnames/index.js","webpack:///./src/js/modules/weatherWidget/components/Panel.js","webpack:///./src/js/modules/weatherWidget/index.js"],"names":["module","exports","gsap","registerPlugin","CSSPlugin","open","element","duration","ease","onComplete","set","height","from","Expo","close","offsetHeight","to","addUniqueIdsToArrayItems","arr","map","item","id","uuidv4","getQueryStringValues","values","queryString","document","location","search","replace","queryParameters","split","parameter","splitParameter","key","value","parameters","filter","includes","forEach","isFocusable","el","tabIndex","getAttribute","disabled","nodeName","href","rel","type","keyCode","TAB","RETURN","ESC","SPACE","PAGEUP","PAGEDOWN","END","HOME","LEFT","UP","RIGHT","DOWN","isDevice","userAgent","navigator","vendor","window","opera","test","MSStream","formDataToJson","formElement","formData","FormData","object","hasOwnProperty","Array","isArray","push","debounce","callback","wait","timerId","args","clearTimeout","setTimeout","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bool","func","number","string","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","uuid","byteToHex","toString","substr","offset","arguments","length","undefined","toLowerCase","TypeError","options","buf","rnds","random","i","hasOwn","classNames","classes","arg","argType","inner","apply","Object","prototype","call","join","default","Panel","isOpen","report","unit","onUnitChange","onClose","forecastLabel","snowLabel","acreageLabel","snow24hrLabel","snow48hrLabel","snow7dayLabel","loaded","useRef","panelRef","panelBoxRef","ignoreUtilFocusChanges","lastFocus","navRef","navButtonsRefs","useState","selectedMountain","setSelectedMountain","mountains","weather","content","breakpoint","matchMedia","breakpoints","tabletLandscape","animatePanel","useCallback","direction","panel","current","panelBox","timeline","anime","easing","begin","style","visibility","complete","focusFirstDescendant","add","targets","opacity","matches","translateX","animatedElement","querySelectorAll","closeButton","querySelector","delay","stagger","translateY","toggle","body","position","top","scrollY","scrollTo","parseInt","useEffect","handleFocus","e","contains","target","activeElement","focusLastDescendant","addEventListener","removeEventListener","listener","addListener","removeListener","childNodes","child","attemptFocus","focus","nf","Intl","NumberFormat","left","offsetLeft","behavior","className","ref","viewBox","xlinkHref","aria-label","onClick","data-animate","mountain","index","active","condition_title","temperature","toUpperCase","weatherIconMap","condition","high","low","snow","imperial","acres","format","total","button_links","link","url","link_text","text_links","propTypes","WeatherWidget","endpoint","setIsOpen","setReport","localStorage","getItem","selectedUnit","setSelectedUnit","Axios","method","data","fetchData","closeEvent","CustomEvent","customEvents","closeMobilePrimaryNavTrigger","dispatchEvent","handleEventClose","closeWeatherWidgetTrigger","setItem"],"mappings":"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","file":"20.0ec8f4e61e2b8499e907.js","sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { gsap, Expo, CSSPlugin } from 'gsap';\nimport { v4 as uuidv4 } from 'uuid';\n\ngsap.registerPlugin(CSSPlugin);\n\n/**\n * Opens an element\n *\n * @example\n * import {open} from '../helpers';\n *\n * open({ element: this.el.querySelector('.element)});\n *\n * @param {Object} element - HTML element you want to target for animation\n * @param {Number} duration - Speed of the animation\n * @param {String} ease - Ease of the animation\n * @param {Function} onComplete - On complete function\n */\nexport const open = ({\n element,\n duration = 0.4,\n ease = 'easeOut',\n onComplete\n}) => {\n gsap.set(element, { height: 'auto' });\n gsap.from(element, {\n height: 0,\n ease: Expo[ease],\n duration,\n onComplete: () => {\n onComplete && onComplete();\n }\n });\n};\n\n/**\n * Closes an element\n *\n * @example\n * import {close} from '../helpers';\n *\n * close({ element: this.el.querySelector('.element)});\n *\n * @param {Object} element - HTML element you want to target for animation\n * @param {Number} duration - Speed of the animation\n * @param {String} ease - Ease of the animation\n * @param {Function} onComplete - On complete function\n */\nexport const close = ({\n element,\n duration = 0.4,\n ease = 'easeOut',\n onComplete\n}) => {\n gsap.set(element, { height: element.offsetHeight });\n gsap.to(element, {\n height: 0,\n ease: Expo[ease],\n duration,\n onComplete: () => {\n onComplete && onComplete();\n }\n });\n};\n\n/**\n * Adds unique id to each element in the array\n * @param {Array} arr\n * @example\n * import {addUniqueIdsToArrayItems} from '../helpers';\n *\n * addUniqueIdsToArrayItems([{any: any}]);\n *\n */\nexport const addUniqueIdsToArrayItems = arr =>\n arr.map(item => ({ ...item, id: uuidv4() }));\n\nexport const getQueryStringValues = (...values) => {\n const queryString = document.location.search.replace('?', '');\n const queryParameters = queryString.split('&').map(parameter => {\n const splitParameter = parameter.split('=');\n return {\n key: splitParameter[0],\n value: splitParameter[1]\n };\n });\n if (!values) return queryParameters;\n const parameters = {};\n queryParameters\n .filter(({ key }) => values.includes(key))\n .forEach(parameter => {\n parameters[parameter.key] = parameter.value;\n });\n return parameters;\n};\n\n// /**\n// * Checks if an element is focusable\n// *\n// * @param {Object} el - HTML element you want to check if it's focusable\n// */\nexport const isFocusable = el => {\n if (\n el.tabIndex > 0 ||\n (el.tabIndex === 0 && el.getAttribute('tabIndex') !== null)\n ) {\n return true;\n }\n\n if (el.disabled) {\n return false;\n }\n\n switch (el.nodeName) {\n case 'A':\n return !!el.href && el.rel !== 'ignore';\n case 'INPUT':\n return el.type !== 'hidden' && el.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * Key code list object\n */\nexport const keyCode = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n SPACE: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n\n// /**\n// * Checks browser is running on a native mobile device\n// */\nexport const isDevice = () => {\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\n\n if (\n /windows phone/i.test(userAgent) ||\n /android/i.test(userAgent) ||\n (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream)\n ) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Convers form data into a JSON object\n *\n * @param {Object} element - The form HTML element\n */\nexport const formDataToJson = formElement => {\n const formData = new FormData(formElement);\n const object = {};\n\n formData.forEach((value, key) => {\n if (!object.hasOwnProperty(key)) {\n object[key] = value;\n return;\n }\n if (!Array.isArray(object[key])) {\n object[key] = [object[key]];\n }\n object[key].push(value);\n });\n\n return object;\n};\n\n// /**\n// * Debounce function\n// * Delays the processing of the event\n// */\nexport const debounce = (callback, wait) => {\n let timerId;\n return (...args) => {\n clearTimeout(timerId);\n timerId = setTimeout(() => {\n callback(...args);\n }, wait);\n };\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport anime from 'animejs';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport { isFocusable } from '../../../helpers';\nimport { breakpoints, weatherIconMap } from '../../../helpers/constants';\n\nconst Panel = ({\n isOpen,\n report,\n unit,\n onUnitChange,\n onClose,\n forecastLabel,\n snowLabel,\n acreageLabel,\n snow24hrLabel,\n snow48hrLabel,\n snow7dayLabel\n}) => {\n const loaded = useRef(false);\n const panelRef = useRef(null);\n const panelBoxRef = useRef(null);\n\n const ignoreUtilFocusChanges = useRef(null);\n const lastFocus = useRef(null);\n const navRef = useRef(null);\n const navButtonsRefs = useRef([]);\n\n const [selectedMountain, setSelectedMountain] = useState(0);\n const { weather, content } = report.mountains[selectedMountain];\n\n const breakpoint = window.matchMedia(\n `(min-width: ${breakpoints.tabletLandscape}px)`\n );\n\n const animatePanel = useCallback(\n ({ direction = 'normal' }) => {\n const panel = panelRef.current;\n const panelBox = panelBoxRef.current;\n\n const timeline = anime.timeline({\n easing: 'easeInOutQuad',\n direction,\n begin: () => {\n if (direction === 'normal') {\n panel.style.visibility = 'visible';\n }\n },\n complete: () => {\n if (direction === 'reverse') {\n panel.style.visibility = 'hidden';\n } else {\n focusFirstDescendant(panelBox);\n }\n }\n });\n\n timeline.add({\n targets: panel,\n opacity: [0, 1],\n duration: breakpoint.matches ? 150 : 0\n });\n\n if (breakpoint.matches) {\n timeline.add({\n targets: panelBox,\n translateX: ['100%', '0%'],\n duration: 400\n });\n\n const animatedElement = panelBox.querySelectorAll('[data-animate]');\n const closeButton = panelBox.querySelector(\n '.weather-widget__panel-close'\n );\n\n timeline.add({\n targets: [...animatedElement, closeButton],\n opacity: [0, 1],\n translateX: ['10%', '0%'],\n duration: 300,\n delay: anime.stagger(100)\n });\n } else {\n timeline.add({\n targets: panelBox,\n translateY: ['100%', '0%'],\n duration: 400\n });\n }\n },\n [breakpoint.matches, focusFirstDescendant]\n );\n\n const toggle = useCallback(() => {\n if (loaded.current) {\n if (isOpen) {\n document.body.style.position = 'fixed';\n document.body.style.top = `-${window.scrollY}px`;\n animatePanel({});\n } else {\n const scrollY = document.body.style.top;\n document.body.style.position = null;\n document.body.style.top = null;\n window.scrollTo(0, parseInt(scrollY || '0') * -1);\n animatePanel({ direction: 'reverse' });\n }\n } else {\n loaded.current = true;\n }\n }, [animatePanel, isOpen]);\n\n useEffect(() => {\n toggle();\n }, [toggle]);\n\n useEffect(() => {\n const handleFocus = e => {\n if (ignoreUtilFocusChanges.current) return;\n\n if (panelBoxRef.current.contains(e.target)) {\n lastFocus.current = e.target;\n } else {\n focusFirstDescendant(panelBoxRef.current);\n\n if (lastFocus.current === document.activeElement) {\n focusLastDescendant(panelBoxRef.current);\n }\n lastFocus.current = document.activeElement;\n }\n };\n\n document.addEventListener('focus', handleFocus, true);\n return () => {\n document.removeEventListener('focus', handleFocus, true);\n };\n }, [focusFirstDescendant, focusLastDescendant]);\n\n useEffect(() => {\n const listener = () => {\n panelRef.current.style = null;\n panelBoxRef.current.style = null;\n toggle();\n };\n\n breakpoint.addListener(listener);\n return () => breakpoint.removeListener(listener);\n }, [breakpoint, toggle]);\n\n const focusFirstDescendant = useCallback(\n element => {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i];\n if (attemptFocus(child) || focusFirstDescendant(child)) {\n return true;\n }\n }\n return false;\n },\n [attemptFocus]\n );\n\n const focusLastDescendant = useCallback(\n element => {\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\n const child = element.childNodes[i];\n if (attemptFocus(child) || focusLastDescendant(child)) {\n return true;\n }\n }\n return false;\n },\n [attemptFocus]\n );\n\n const attemptFocus = useCallback(element => {\n if (!isFocusable(element)) {\n return false;\n }\n\n ignoreUtilFocusChanges.current = true;\n try {\n element.focus();\n } catch (e) {\n return;\n }\n ignoreUtilFocusChanges.current = false;\n return document.activeElement === element;\n }, []);\n\n const nf = new Intl.NumberFormat();\n\n useEffect(() => {\n if (\n navRef.current &&\n navButtonsRefs.current &&\n navButtonsRefs.current[selectedMountain]\n ) {\n const left = navButtonsRefs.current[selectedMountain].offsetLeft;\n navRef.current.scrollTo({\n top: 0,\n left: left - 42,\n behavior: 'smooth'\n });\n }\n }, [selectedMountain]);\n\n return (\n
\n
\n \n \n \n\n \n \n \n \n \n
    \n {report.mountains?.map((mountain, index) => (\n
  • \n (navButtonsRefs.current[index] = ref)}\n className={classNames({\n active: selectedMountain === index\n })}\n onClick={() => setSelectedMountain(index)}\n >\n {mountain.name}\n \n
  • \n ))}\n
\n
\n {!!weather && (\n
\n

\n {forecastLabel}: {weather.condition_title}\n

\n
\n
\n onUnitChange('f')}\n >\n °F\n \n onUnitChange('c')}\n >\n °C\n \n
\n
\n

\n {weather.temperature.current[unit]}°{unit.toUpperCase()}\n

\n \n \n \n
\n

\n \n \n \n {weather.temperature.high[unit]}°{unit.toUpperCase()}\n

\n

\n \n \n \n {weather.temperature.low[unit]}°{unit.toUpperCase()}\n

\n
\n
\n
\n {weather.snow && (\n <>\n

\n {snowLabel}\n

\n
\n

\n {weather.snow['_24_hour'].imperial}”\n {snow24hrLabel}\n

\n

\n {weather.snow['_48_hour'].imperial}”\n {snow48hrLabel}\n

\n

\n {weather.snow['_7_day'].imperial}”\n {snow7dayLabel}\n

\n
\n \n )}\n {!!weather.acres && (\n
\n

\n {acreageLabel}\n

\n

\n {nf.format(weather.acres.open || 0)}{' '}\n \n of {nf.format(weather.acres.total || 0)}\n \n

\n
\n )}\n
\n )}\n \n
\n
\n
\n );\n};\n\nPanel.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n report: PropTypes.object.isRequired,\n unit: PropTypes.string.isRequired,\n onUnitChange: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n forecastLabel: PropTypes.string.isRequired,\n snowLabel: PropTypes.string.isRequired,\n acreageLabel: PropTypes.string.isRequired,\n snow24hrLabel: PropTypes.string.isRequired,\n snow48hrLabel: PropTypes.string.isRequired,\n snow7dayLabel: PropTypes.string.isRequired\n};\n\nexport default Panel;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Axios from 'axios';\n\nimport Panel from './components/Panel';\nimport { breakpoints, customEvents, weatherIconMap } from '../../helpers/constants';\n\nconst WeatherWidget = ({ endpoint, ...props }) => {\n const breakpoint = window.matchMedia(\n `(min-width: ${breakpoints.tabletLandscape}px)`\n );\n const [isOpen, setIsOpen] = useState(false);\n const [report, setReport] = useState({});\n const [selectedUnit, setSelectedUnit] = useState(\n window.localStorage.getItem('aspen_weather_unit') || 'f'\n );\n\n useEffect(() => {\n const fetchData = async () => {\n const { data } = await Axios({\n method: 'GET',\n url: endpoint\n });\n\n setReport(data);\n };\n\n fetchData();\n }, [endpoint]);\n\n useEffect(() => {\n if (isOpen) {\n const closeEvent = new CustomEvent(customEvents.closeMobilePrimaryNavTrigger);\n window.dispatchEvent(closeEvent);\n }\n }, [isOpen])\n\n const handleEventClose = () => (\n setIsOpen(false)\n )\n\n useEffect(() => {\n window.addEventListener(customEvents.closeWeatherWidgetTrigger, handleEventClose);\n return () => window.removeEventListener(customEvents.closeWeatherWidgetTrigger, handleEventClose);\n }, [])\n\n const handleSelectUnit = unit => {\n setSelectedUnit(unit);\n window.localStorage.setItem('aspen_weather_unit', unit);\n };\n\n if (!report.mountains?.length) {\n return null;\n }\n\n const {\n weather: { condition, temperature }\n } = report.mountains[0];\n\n return (\n <>\n setIsOpen(!isOpen)}\n >\n {isOpen && !breakpoint.matches ? (\n \n \n \n ) : (\n <>\n \n {temperature.current[selectedUnit]}°{selectedUnit.toUpperCase()}\n \n \n \n \n \n )}\n \n setIsOpen(false)}\n />\n \n );\n};\n\nWeatherWidget.propTypes = {\n endpoint: PropTypes.string.isRequired\n};\n\nexport default WeatherWidget;\n"],"sourceRoot":""}