{"version":3,"file":"component---src-pages-news-js-cc43ef22097f61460aed.js","mappings":"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","sources":["webpack://gears-of-war-website/./node_modules/tcweb-material-components/core/section/index.js","webpack://gears-of-war-website/./src/components/common/searchable.js","webpack://gears-of-war-website/./src/hooks/useLocation.js","webpack://gears-of-war-website/./src/pages/news.js","webpack://gears-of-war-website/./node_modules/lodash/_baseMap.js","webpack://gears-of-war-website/./node_modules/lodash/_baseOrderBy.js","webpack://gears-of-war-website/./node_modules/lodash/_baseSortBy.js","webpack://gears-of-war-website/./node_modules/lodash/_compareAscending.js","webpack://gears-of-war-website/./node_modules/lodash/_compareMultiple.js","webpack://gears-of-war-website/./node_modules/lodash/head.js","webpack://gears-of-war-website/./node_modules/lodash/orderBy.js"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _isString = _interopRequireDefault(require(\"lodash/isString\"));\nvar _trim = _interopRequireDefault(require(\"lodash/trim\"));\nvar _styles = require(\"@material-ui/core/styles\");\nvar _clsx4 = _interopRequireDefault(require(\"clsx\"));\nvar _box = _interopRequireDefault(require(\"../box\"));\nvar _count = _interopRequireDefault(require(\"../poly/count\"));\nvar _reactMap = _interopRequireDefault(require(\"../poly/reactMap\"));\nvar _excluded = [\"children\", \"className\", \"isSubSection\", \"itemMargins\"];\nvar useClasses = (0, _styles.makeStyles)(function (theme) {\n return {\n root: {\n display: 'flex',\n flexDirection: 'column',\n textAlign: 'left',\n width: '100%'\n },\n defaultItem: {\n marginTop: 0,\n marginBottom: 0\n },\n item: function item(_ref) {\n var _ref2;\n var itemMargins = _ref.itemMargins;\n return _ref2 = {\n marginTop: 0,\n marginBottom: itemMargins.mobile || '30px'\n }, (0, _defineProperty2.default)(_ref2, theme.breakpoints.up('sm'), {\n marginBottom: itemMargins.tablet || '30px'\n }), (0, _defineProperty2.default)(_ref2, theme.breakpoints.up('md'), {\n marginBottom: itemMargins.desktop || '50px'\n }), _ref2;\n },\n subSection: (0, _defineProperty2.default)({\n padding: 0\n }, theme.breakpoints.up('md'), {\n padding: 0\n })\n };\n}, {\n classNamePrefix: 'TCUISection'\n});\nvar Section = function Section(_ref3) {\n var children = _ref3.children,\n className = _ref3.className,\n isSubSection = _ref3.isSubSection,\n itemMargins = _ref3.itemMargins,\n rest = (0, _objectWithoutProperties2.default)(_ref3, _excluded);\n var _classes = useClasses({\n itemMargins: itemMargins\n });\n return /*#__PURE__*/_react.default.createElement(_box.default, (0, _extends2.default)({}, rest, {\n className: (0, _clsx4.default)(_classes.root, (0, _defineProperty2.default)({}, _classes.subSection, isSubSection), className)\n }), (0, _reactMap.default)(function (child, i, flattenedChildren) {\n if (!(0, _isString.default)(child)) {\n var _clsx2;\n return /*#__PURE__*/_react.default.cloneElement(child, {\n className: (0, _clsx4.default)(_classes.defaultItem, (_clsx2 = {}, (0, _defineProperty2.default)(_clsx2, _classes.item, i + 1 !== _react.default.Children.count(flattenedChildren)), (0, _defineProperty2.default)(_clsx2, _classes.subSection, child.type === Section), _clsx2), child.props.className)\n });\n }\n if ((0, _count.default)((0, _trim.default)(child)) > 0) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: (0, _clsx4.default)((0, _defineProperty2.default)({}, _classes.item, i + 1 !== _react.default.Children.count(flattenedChildren)))\n }, child);\n }\n return null;\n }, children));\n};\nSection.propTypes = {\n children: _propTypes.default.node,\n className: _propTypes.default.string,\n isSubSection: _propTypes.default.bool,\n itemMargins: _propTypes.default.shape({\n mobile: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n tablet: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n desktop: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])\n })\n};\nSection.defaultProps = {\n children: null,\n className: null,\n isSubSection: false,\n itemMargins: {\n mobile: '30px',\n tablet: '30px',\n desktop: '50px'\n }\n};\nvar _default = Section;\nexports.default = _default;","import React, { useEffect, useReducer } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport pipe from 'lodash/fp/pipe'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Section from 'tcweb-material-components/core/section'\r\nimport { encodeQueryData } from 'tcweb-material-components/core/utilities/helpers'\r\nimport filter from 'tcweb-material-components/core/poly/filter'\r\nimport count from 'tcweb-material-components/core/poly/count'\r\n\r\nconst useClasses = makeStyles(({ breakpoints }) => ({\r\n showMoreContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center'\r\n },\r\n showMoreButton: {\r\n marginTop: '1em',\r\n [breakpoints.up('md')]: { width: 'calc(100vw / 3)' }\r\n }\r\n}))\r\n\r\nconst updateQuerystring = (params, enablePagination, page) => {\r\n const stringData = { ...params }\r\n\r\n if (enablePagination && page > 1) {\r\n stringData.page = page\r\n }\r\n\r\n {\r\n const cleanStringData = pipe(filter(Boolean), encodeQueryData)(stringData)\r\n if (cleanStringData.length) {\r\n window.history.replaceState(null, null, `?${cleanStringData}`)\r\n } else {\r\n window.history.replaceState(null, null, window.location.pathname)\r\n }\r\n\r\n }\r\n}\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case 'set':\r\n return { ...state, ...action.payload }\r\n case 'search': {\r\n const { data, page, perPage, onSearch, initialized, enablePagination, enableQuerystring } = state\r\n const { params, initialPerPage } = action.payload\r\n const filteredData = onSearch(data, params)\r\n const currentPage = initialized ? 1 : page\r\n const currentPageData = enablePagination ? filteredData.slice(0, initialPerPage + perPage * (currentPage - 1)) : filteredData\r\n\r\n if (enableQuerystring) {\r\n updateQuerystring(params, enablePagination, currentPage)\r\n }\r\n\r\n return {\r\n ...state,\r\n params,\r\n page: currentPage,\r\n filteredData,\r\n currentPageData,\r\n loading: false,\r\n initialized: true\r\n }\r\n }\r\n case 'nextPage': {\r\n const { page, params, perPage, filteredData, initialPerPage, enablePagination, enableQuerystring } = state\r\n const currentPage = page + 1\r\n\r\n if (enableQuerystring) {\r\n updateQuerystring(params, enablePagination, currentPage)\r\n }\r\n\r\n return {\r\n ...state,\r\n page: currentPage,\r\n currentPageData: enablePagination ? filteredData.slice(0, initialPerPage + perPage * page) : filteredData\r\n }\r\n }\r\n default:\r\n throw new Error(`Invalid action type passed to reducer: ${action.type}`)\r\n }\r\n}\r\n\r\nconst Searchable = ({\r\n data,\r\n params,\r\n children,\r\n enablePagination,\r\n perPage,\r\n nextPageComponent,\r\n page = 1,\r\n initialPerPage = perPage,\r\n enableQuerystring = true,\r\n emptyComponent = null,\r\n loadingComponent = null,\r\n onSearch = (data) => data,\r\n ...rest\r\n}) => {\r\n const _classes = useClasses()\r\n const { t } = useTranslation()\r\n const [state, dispatch] = useReducer(reducer, {\r\n data,\r\n page,\r\n perPage,\r\n onSearch,\r\n initialPerPage,\r\n enablePagination,\r\n enableQuerystring,\r\n loading: true,\r\n initialized: false\r\n })\r\n const onNextPage = () => {\r\n dispatch({ type: 'nextPage' })\r\n }\r\n const totalNumItems = count(state.filteredData)\r\n const hasItems = totalNumItems != 0\r\n const numItems = count(state.currentPageData)\r\n\r\n // Params updated\r\n useEffect(() => {\r\n if (JSON.stringify(params) !== JSON.stringify(state.params)) {\r\n dispatch({ type: 'set', payload: { loading: true } })\r\n dispatch({ type: 'search', payload: { params, initialPerPage } })\r\n }\r\n }, [params, initialPerPage])\r\n\r\n // Update state with new prop values\r\n useEffect(() => {\r\n dispatch({\r\n type: 'set',\r\n payload: {\r\n data,\r\n page,\r\n perPage,\r\n enableQuerystring,\r\n enablePagination\r\n }\r\n })\r\n }, [data, enableQuerystring, enablePagination, perPage, page])\r\n\r\n if (state.loading) return loadingComponent\r\n\r\n return (\r\n
\r\n {children({ data: state.currentPageData, params, page: state.page, total: totalNumItems, products: state.data })}\r\n
\r\n \r\n {!hasItems && emptyComponent}\r\n {hasItems && t('slug:showing-1-to-post-of-total', { post: numItems.toString(), total: totalNumItems })}\r\n \r\n {hasItems && numItems < totalNumItems &&\r\n React.cloneElement(nextPageComponent, {\r\n className: _classes.showMoreButton,\r\n onClick: onNextPage\r\n })}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Searchable\r\n","import { useState, useEffect } from 'react'\r\nimport { globalHistory } from '@reach/router'\r\nimport { splitQueryString } from 'tcweb-material-components/core/utilities/helpers'\r\n\r\nimport { getLocaleFromPath } from '../utilities/locale'\r\n\r\nconst useLocation = () => {\r\n const initialState = {\r\n oldLocation: null,\r\n location: globalHistory.location,\r\n transitioning: globalHistory.transitioning,\r\n locale: getLocaleFromPath(globalHistory.location.pathname) || 'en-us',\r\n querystring: splitQueryString(globalHistory.location.href)\r\n }\r\n\r\n const [state, setState] = useState(initialState)\r\n\r\n useEffect(() => {\r\n const removeListener = globalHistory.listen(params => {\r\n const { location, transitioning } = params\r\n\r\n setState({\r\n ...state,\r\n oldLocation: state.location,\r\n location,\r\n transitioning,\r\n locale: getLocaleFromPath(location.pathname) || 'en-us',\r\n querystring: splitQueryString(location.href)\r\n })\r\n })\r\n return removeListener\r\n }, [state])\r\n\r\n return state\r\n}\r\n\r\nexport default useLocation\r\n","import React, { useContext, useReducer, useEffect } from 'react'\r\nimport moment from 'moment'\r\nimport debounce from 'lodash/debounce'\r\nimport trim from 'lodash/trim'\r\nimport orderBy from 'lodash/orderBy'\r\nimport forEach from 'lodash/forEach'\r\nimport range from 'lodash/range'\r\nimport head from 'lodash/head'\r\nimport { graphql } from 'gatsby'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { makeStyles, useTheme } from '@material-ui/core/styles'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport InputAdornment from '@material-ui/core/InputAdornment'\r\nimport filter from 'tcweb-material-components/core/poly/filter'\r\nimport find from 'tcweb-material-components/core/poly/find'\r\nimport count from 'tcweb-material-components/core/poly/count'\r\nimport map from 'tcweb-material-components/core/poly/map'\r\nimport Button from 'tcweb-material-components/core/button'\r\nimport Section from 'tcweb-material-components/core/section'\r\n//import Tabs from 'tcweb-material-components/core/tabs'\r\n//import Tab from 'tcweb-material-components/core/tab'\r\nimport get from 'tcweb-material-components/core/poly/get'\r\nimport Helmet from 'react-helmet'\r\nimport { useTranslation } from 'react-i18next'\r\nimport loadable from '@loadable/component'\r\nimport { normalizePosts, normalizeGearsPosts } from '../utilities/helpers'\r\n\r\nimport { getLocaleFromWPMLLocale } from '../utilities/locale'\r\nimport Searchable from '../components/common/searchable'\r\nimport useLocation from '../hooks/useLocation'\r\nimport LocaleContext from '../components/context/localeContext'\r\nimport LayoutContent from '../components/layout/layoutContent'\r\n\r\nconst Skeleton = loadable(() => import('@material-ui/lab/Skeleton'))\r\nconst Grid = loadable(() => import('tcweb-material-components/core/grid'))\r\n\r\nconst SPECIAL_CHAR_REGEXP = /[^\\w\\s\\d]/\r\nconst INITIAL_POSTS_TO_SHOW = 5\r\nconst POSTS_TO_GET = 6\r\nconst NUM_DAYS_PER_WEEK = 7\r\n\r\nconst useStyles = makeStyles(({ breakpoints, palette, spacing, accessibility: { highContrast } }) => ({\r\n heading: {\r\n paddingTop: '30px',\r\n [breakpoints.up('md')]: {\r\n paddingTop: '100px'\r\n }\r\n },\r\n section: {\r\n position: 'relative',\r\n paddingBottom: '30px',\r\n [breakpoints.up('md')]: {\r\n paddingBottom: '100px'\r\n }\r\n },\r\n root: {\r\n paddingBottom: '3em',\r\n [breakpoints.up('md')]: {\r\n paddingTop: '4em',\r\n paddingBottom: '4em'\r\n }\r\n },\r\n searchable: {\r\n [breakpoints.up('md')]: {\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n width: '50vw'\r\n }\r\n },\r\n noPostsTitle: { margin: 0 },\r\n input: {\r\n display: 'flex',\r\n width: '100%',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n [breakpoints.up('md')]: { maxWidth: '50vw' }\r\n },\r\n categoryTab: {\r\n '&:hover': {\r\n backgroundColor: palette.secondary.light,\r\n color: palette.text.primary\r\n }\r\n },\r\n searchTextField: {\r\n [breakpoints.up('md')]: {\r\n display: 'flex',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n width: 'calc(100vw / 3)'\r\n },\r\n textTransform: 'uppercase',\r\n fontWeight: 'bold',\r\n fontStretch: 'condensed',\r\n letterSpacing: '.6px'\r\n },\r\n searchTextInput: {\r\n border: `1px solid ${palette.border.primary}`,\r\n borderRadius: 10,\r\n backgroundColor: palette.background.default,\r\n padding: spacing(1),\r\n '&:hover, &:focus': {\r\n [highContrast.mediaQuery('active')]: {\r\n border: `1px solid Highlight`\r\n }\r\n }\r\n },\r\n searchFocusVisible: {\r\n [highContrast.mediaQuery('active')]: {\r\n border: `1px solid Highlight`\r\n }\r\n },\r\n skeleton: { background: 'rgba(0, 0, 0, 0.2)' },\r\n searchIcon: {\r\n [highContrast.mediaQuery('active')]: {\r\n color: 'WindowText'\r\n }\r\n }\r\n}))\r\n\r\nconst getTranslation = (localeContext, post) =>\r\n localeContext.isImplicit ? post : find((t) => getLocaleFromWPMLLocale(t.locale.locale) === localeContext.locale, post.translated) || post\r\n\r\nconst getQueryRegExp = (query) =>\r\n new RegExp(\r\n String(query)\r\n .toLowerCase()\r\n .replace(SPECIAL_CHAR_REGEXP, '')\r\n .split(' ')\r\n .filter(Boolean)\r\n .map((i) => `(?=.*${i})`)\r\n .join(''),\r\n 'gm'\r\n )\r\n\r\nconst getCategories = (posts) => {\r\n const categories = new Set()\r\n\r\n forEach(posts, (post) => categories.add(post.node.wordpress_site))\r\n\r\n return [...categories].sort()\r\n}\r\n\r\nconst onSearch = (localeContext) => (data, params) => {\r\n let filteredPosts = [...data]\r\n\r\n if (params.category) {\r\n filteredPosts = filteredPosts.filter(post => post.node.wordpress_site === params.category)\r\n }\r\n\r\n if (trim(params.query)) {\r\n const query = getQueryRegExp(params.query)\r\n\r\n filteredPosts = filter((item) => {\r\n const post = getTranslation(localeContext, item.node)\r\n return (\r\n [post.title, ...map((tag) => tag.name, item.node.tags.nodes)].join(' ').toLowerCase().replace(SPECIAL_CHAR_REGEXP, '').search(query) >\r\n -1\r\n )\r\n }, filteredPosts)\r\n }\r\n\r\n return filteredPosts\r\n}\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case 'set':\r\n return { ...state, ...action.payload }\r\n default:\r\n throw new Error(`Invalid action type passed to reducer: ${action.type}`)\r\n }\r\n}\r\n\r\nconst NewsCard = loadable(() => import('../components/common/newsCard'))\r\n\r\nconst NewsPage = (props) => {\r\n const theme = useTheme()\r\n const isDesktop = useMediaQuery(theme.breakpoints.up('lg'))\r\n const classes = useStyles()\r\n const { querystring } = useLocation()\r\n const { t } = useTranslation()\r\n const localeContext = useContext(LocaleContext)\r\n const { sitePosts, siteData, /*esportsPosts = [], gears5Posts = [], tacticsPosts = [] */} = props.data\r\n\r\n const normalizedGOWPosts = normalizeGearsPosts(sitePosts.edges, 'gears-of-war')\r\n /*const normalizedEsportsPosts = normalizePosts(esportsPosts.posts.edges, 'gears-esports')\r\n const normalizedGears5Posts = normalizePosts(gears5Posts.posts.edges, 'gears-5')\r\n const normalizedTacticsPosts = normalizePosts(tacticsPosts.posts.edges, 'gears-tactics')\r\n\r\n let normalizedPosts = [...normalizedEsportsPosts, ...normalizedGears5Posts, ...normalizedTacticsPosts].filter(\r\n (post) => post.node.wpml_current_locale === localeContext.locale\r\n )*/\r\n\r\n const allPosts = [...normalizedGOWPosts/*, ...normalizedPosts*/]\r\n\r\n const [state, dispatch] = useReducer(reducer, {\r\n query: querystring.query || '',\r\n category: querystring.category || '',\r\n categories: getCategories(allPosts),\r\n posts: orderBy(allPosts, 'node.date', 'desc')\r\n })\r\n\r\n useEffect(() => {\r\n const timeSpans = {\r\n s: 'second',\r\n ss: 'seconds',\r\n m: 'minute',\r\n mm: 'minutes',\r\n h: 'hour',\r\n hh: 'hours',\r\n d: 'day',\r\n dd: 'days',\r\n w: 'week',\r\n ww: 'weeks',\r\n M: 'month',\r\n MM: 'months',\r\n y: 'year',\r\n yy: 'years'\r\n }\r\n\r\n const _relativeTimeParser = (number, _, key) => {\r\n if ((key === 'dd' || key === 'd') && number >= NUM_DAYS_PER_WEEK) {\r\n const weeks = Math.floor(number / NUM_DAYS_PER_WEEK)\r\n if (weeks === 4) {\r\n return t('slug:number-span-ago', { number: 1, span: timeSpans['M'] })\r\n } else {\r\n return t('slug:number-span-ago', { number: weeks, span: timeSpans[weeks === 1 ? 'w' : 'ww'] })\r\n }\r\n } else {\r\n return t('slug:number-span-ago', { number, span: timeSpans[key] })\r\n }\r\n }\r\n\r\n moment.relativeTimeRounding(Math.floor)\r\n moment.relativeTimeThreshold('s', 60)\r\n moment.relativeTimeThreshold('m', 60)\r\n moment.relativeTimeThreshold('h', 24)\r\n moment.relativeTimeThreshold('d', 31)\r\n moment.relativeTimeThreshold('w', 4)\r\n moment.relativeTimeThreshold('M', 12)\r\n moment.updateLocale('en', {\r\n relativeTime: {\r\n s: _relativeTimeParser,\r\n ss: _relativeTimeParser,\r\n m: _relativeTimeParser,\r\n mm: _relativeTimeParser,\r\n h: _relativeTimeParser,\r\n hh: _relativeTimeParser,\r\n d: _relativeTimeParser,\r\n dd: _relativeTimeParser,\r\n w: _relativeTimeParser,\r\n ww: _relativeTimeParser,\r\n M: _relativeTimeParser,\r\n MM: _relativeTimeParser,\r\n y: _relativeTimeParser,\r\n yy: _relativeTimeParser\r\n }\r\n })\r\n }, [])\r\n\r\n // If category is not ALL, show an even number of posts\r\n const POSTS_TO_SHOW = state.category === '' ? INITIAL_POSTS_TO_SHOW : INITIAL_POSTS_TO_SHOW + 1\r\n\r\n const handleSearchTextChangeWithDebounce = debounce((value) => {\r\n dispatch({ type: 'set', payload: { query: value } })\r\n }, 300)\r\n\r\n const handleCategoryChange = (_, category) => {\r\n dispatch({ type: 'set', payload: { category } })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {t('News')}\r\n \r\n
\r\n handleSearchTextChangeWithDebounce(e.target.value)}\r\n InputProps={{\r\n disableUnderline: true,\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n classes: { root: classes.searchTextInput, focused: classes.searchFocusVisible }\r\n }}\r\n />\r\n\r\n {/* Disabling News filter Pills for All / Gears / Gears 5 / Tactics */\r\n /*!!count(state.categories) && (\r\n \r\n \r\n {map(\r\n (category) => (\r\n \r\n ),\r\n state.categories\r\n )}\r\n \r\n )*/}\r\n\r\n \r\n {t('No News, check back soon')}\r\n \r\n }\r\n loadingComponent={\r\n \r\n {range(POSTS_TO_SHOW).map((i) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ))}\r\n
\r\n }\r\n nextPageComponent={\r\n \r\n }\r\n >\r\n {({ data, page }) => {\r\n const expectedNumPosts = POSTS_TO_GET * (page - 1) + POSTS_TO_SHOW\r\n const focusedPost = count(data) === expectedNumPosts ? count(data) - POSTS_TO_GET : expectedNumPosts - POSTS_TO_GET\r\n\r\n return (\r\n
\r\n {map((edge, i) => {\r\n const post = edge.node\r\n const locPost = getTranslation(localeContext, edge.node)\r\n\r\n return (\r\n {\r\n if (node && i === focusedPost && page !== 1) {\r\n setTimeout(() => node.focus(), 500)\r\n }\r\n }}\r\n />\r\n )\r\n }, data)}\r\n
\r\n )\r\n }}\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport const pageQuery = graphql`\r\n query NewsQuery {\r\n siteData: site {\r\n siteMetadata {\r\n title\r\n }\r\n }\r\n sitePosts: allWpSitePost(filter: { locale: { locale: { eq: \"en_US\" } } }) {\r\n totalCount\r\n edges {\r\n node {\r\n title\r\n excerpt\r\n slug\r\n link\r\n date\r\n isSticky\r\n # wordpress_site\r\n categories {\r\n nodes {\r\n id\r\n name\r\n slug\r\n }\r\n }\r\n tags {\r\n nodes {\r\n id\r\n name\r\n }\r\n }\r\n formattedDate: date(formatString: \"MMM D, YYYY\")\r\n featuredImage {\r\n node {\r\n sourceUrl\r\n altText\r\n localFile {\r\n childImageSharp {\r\n gatsbyImageData(placeholder: NONE, layout: FULL_WIDTH)\r\n }\r\n }\r\n translated {\r\n title\r\n # excerpt\r\n slug\r\n link\r\n date\r\n formattedDate: date(formatString: \"MMM D, YYYY\")\r\n locale {\r\n locale\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n # esportsPosts: esportsGraphql {\r\n # ...allWordpressEsportsGraphqlPostsFragment\r\n # }\r\n\r\n # gears5Posts: gears5Graphql {\r\n # ...allWordpressGears5GraphqlPostsFragment\r\n # }\r\n\r\n # tacticsPosts: tacticsGraphql {\r\n # ...allWordpressTacticsGraphqlPostsFragment\r\n # }\r\n }\r\n`\r\n\r\nexport default NewsPage\r\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n"],"names":["_interopRequireDefault","exports","_extends2","_objectWithoutProperties2","_defineProperty2","_react","_propTypes","_isString","_trim","_styles","_clsx4","_box","_count","_reactMap","_excluded","useClasses","makeStyles","theme","root","display","flexDirection","textAlign","width","defaultItem","marginTop","marginBottom","item","_ref","_ref2","itemMargins","mobile","default","breakpoints","up","tablet","desktop","subSection","padding","classNamePrefix","Section","_ref3","children","className","isSubSection","rest","_classes","createElement","child","i","flattenedChildren","_clsx2","Children","count","cloneElement","type","props","propTypes","node","string","bool","shape","oneOfType","number","defaultProps","_default","showMoreContainer","alignItems","showMoreButton","updateQuerystring","params","enablePagination","page","stringData","_objectSpread","cleanStringData","pipe","filter","Boolean","encodeQueryData","length","window","history","replaceState","location","pathname","reducer","state","action","payload","data","perPage","onSearch","initialized","enableQuerystring","initialPerPage","filteredData","currentPage","currentPageData","slice","loading","Error","nextPageComponent","emptyComponent","loadingComponent","_objectWithoutProperties","t","useTranslation","dispatch","useReducer","totalNumItems","hasItems","numItems","useEffect","JSON","stringify","React","total","products","Typography","align","post","toString","onClick","onNextPage","useLocation","initialState","oldLocation","globalHistory","transitioning","locale","getLocaleFromPath","querystring","splitQueryString","href","setState","useState","listen","Skeleton","loadable","Grid","SPECIAL_CHAR_REGEXP","useStyles","palette","spacing","accessibility","highContrast","heading","paddingTop","section","position","paddingBottom","searchable","marginLeft","marginRight","noPostsTitle","margin","input","maxWidth","categoryTab","backgroundColor","secondary","light","color","text","primary","searchTextField","textTransform","fontWeight","fontStretch","letterSpacing","searchTextInput","border","borderRadius","background","mediaQuery","searchFocusVisible","skeleton","searchIcon","getTranslation","localeContext","isImplicit","find","getLocaleFromWPMLLocale","translated","getCategories","posts","categories","Set","forEach","add","wordpress_site","_toConsumableArray","sort","filteredPosts","category","trim","query","RegExp","String","toLowerCase","replace","split","map","join","getQueryRegExp","title","concat","tag","name","tags","nodes","search","NewsCard","useTheme","isDesktop","useMediaQuery","classes","useContext","LocaleContext","sitePosts","siteData","normalizedGOWPosts","normalizeGearsPosts","edges","allPosts","orderBy","timeSpans","s","ss","m","mm","h","hh","d","dd","w","ww","M","MM","y","yy","_relativeTimeParser","_","key","weeks","Math","floor","span","moment","relativeTime","POSTS_TO_SHOW","INITIAL_POSTS_TO_SHOW","handleSearchTextChangeWithDebounce","debounce","value","LayoutContent","_extends","setBackgroundImage","Helmet","siteMetadata","variant","TextField","id","label","defaultValue","onChange","e","target","InputProps","disableUnderline","startAdornment","InputAdornment","FontAwesomeIcon","icon","focused","Searchable","cols","xs","md","range","height","Button","expectedNumPosts","focusedPost","edge","locPost","slug","wordpressSite","date","formattedDate","excerpt","featuredMedia","get","headerVariant","linkRefCallback","setTimeout","focus","baseEach","isArrayLike","module","collection","iteratee","index","result","Array","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","identity","isArray","iteratees","orders","object","other","array","comparer","isSymbol","valIsDefined","undefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","baseOrderBy","guard"],"sourceRoot":""}