{"version":3,"sources":["webpack:///./src/components/blog/BlogChip.tsx","webpack:///./node_modules/react-infinite-scroll-component/dist/index.es.js","webpack:///./src/pages/es/blog.tsx","webpack:///./src/utils/serializeHyperlink.tsx"],"names":["BlogChip","styled","Link","withConfig","displayName","componentId","colors","pink","_extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_assign","assign","t","s","i","n","arguments","length","prototype","call","apply","this","ThresholdUnits","defaultThreshold","unit","value","parseThreshold","scrollThreshold","match","parseFloat","console","warn","InfiniteScroll","_super","props","_this","lastScrollTop","actionTriggered","startY","currentY","dragging","maxPullDownDistance","getScrollableTarget","scrollableTarget","HTMLElement","document","getElementById","onStart","evt","MouseEvent","pageY","TouchEvent","touches","_infScroll","style","willChange","transition","onMove","Number","pullDownToRefreshThreshold","setState","pullToRefreshThresholdBreached","overflow","transform","onEnd","state","refreshFunction","requestAnimationFrame","onScrollListener","event","onScroll","setTimeout","target","height","_scrollableNode","documentElement","scrollTop","body","inverse","isElementAtTop","isElementAtBottom","hasMore","showLoader","next","prevDataLength","dataLength","throttledOnScrollListener","delay","noTrailing","callback","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","self","elapsed","Date","now","args","exec","clear","undefined","cancel","throttle","bind","__","constructor","create","__extends","componentDidMount","Error","el","window","addEventListener","initialScrollY","scrollHeight","scrollTo","pullDownToRefresh","_pullDown","firstChild","getBoundingClientRect","forceUpdate","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","getDerivedStateFromProps","nextProps","prevState","clientHeight","screen","availHeight","threshold","render","WebkitOverflowScrolling","hasChildren","children","outerDivStyle","createElement","className","ref","infScroll","position","pullDown","left","right","top","releaseToRefreshContent","pullDownToRefreshContent","loader","endMessage","Info","ImageLink","ReadMore","div","Loading","Summary","Category","Blog","useI18next","setMomentLocale","data","pageContext","prismic","categories","useState","allCategorys","edges","map","mapCategory","_useState2","posts","setPosts","_useState3","hasNextPage","hasPreviousPage","startCursor","endCursor","pageInfo","setPageInfo","location","useLocation","tag","URLSearchParams","search","get","useEffect","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$prismic$load","wrap","_context","prev","load","variables","prismicLang","tags","sent","allPosts","getPostsFromPrismicEdges","stop","fetchPostsData","popularPosts","mustReadPosts","fetchMore","_ref2","_callee2","_yield$prismic$load2","newPosts","_context2","after","concat","_toConsumableArray","React","Fragment","SEO","title","bodyAttributes","class","BlogLayout","formBanner","Left","to","decodeURI","CloseIcon","post","_post$author_card","BlogArticle","key","uid","category","slug","BlogTitleH2","RichText","asText","language","lang","author_card","author_name","_meta","updated_at","firstPublicationDate","imageUrl","paddingTop","imageRatio","PostImg","src","alt","summary","serializeHyperlink","Trans","query","id","source","toString","type","element","content","AnchorLink","external","href","url"],"mappings":"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","file":"component---src-pages-es-blog-tsx-069a07cd994c38f14c0b.js","sourcesContent":["import styled from 'styled-components';\nimport {Link} from 'gatsby-plugin-react-i18next';\nimport {colors} from '../../global.config';\n\nexport const BlogChip = styled(Link)`\n position: relative;\n font-size: 0.8rem;\n color: #ffffff;\n padding: 4px 36px 4px 6px;\n display: inline-flex;\n justify-content: space-between;\n align-items: center;\n border-radius: 8px;\n background: ${colors.pink};\n opacity: 0.7;\n top: -24px;\n transition: all 0.3s ease;\n svg {\n position: absolute;\n height: 32px;\n width: 32px;\n right: 0;\n transition: all 0.3s ease;\n path {\n fill: #ffffff;\n }\n }\n &:hover {\n color: #dddddd;\n opacity: 0.9;\n svg path {\n fill: #dddddd;\n }\n }\n`;\n","import React, { Component } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n};\nfunction __extends(d, b) {\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return _assign.apply(this, arguments);\n};\n\n/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [noTrailing] Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset)\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {Boolean} [debounceMode] If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @return {Function} A new, throttled, function.\n */\nfunction throttle(delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n function wrapper() {\n var self = this;\n var elapsed = Date.now() - lastExec;\n var args = arguments;\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, args);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n function clear() {\n timeoutID = undefined;\n }\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\nvar ThresholdUnits = {\n Pixel: 'Pixel',\n Percent: 'Percent'\n};\nvar defaultThreshold = {\n unit: ThresholdUnits.Percent,\n value: 0.8\n};\nfunction parseThreshold(scrollThreshold) {\n if (typeof scrollThreshold === 'number') {\n return {\n unit: ThresholdUnits.Percent,\n value: scrollThreshold * 100\n };\n }\n if (typeof scrollThreshold === 'string') {\n if (scrollThreshold.match(/^(\\d*(\\.\\d+)?)px$/)) {\n return {\n unit: ThresholdUnits.Pixel,\n value: parseFloat(scrollThreshold)\n };\n }\n if (scrollThreshold.match(/^(\\d*(\\.\\d+)?)%$/)) {\n return {\n unit: ThresholdUnits.Percent,\n value: parseFloat(scrollThreshold)\n };\n }\n console.warn('scrollThreshold format is invalid. Valid formats: \"120px\", \"50%\"...');\n return defaultThreshold;\n }\n console.warn('scrollThreshold should be string or number');\n return defaultThreshold;\n}\nvar InfiniteScroll = /** @class */function (_super) {\n __extends(InfiniteScroll, _super);\n function InfiniteScroll(props) {\n var _this = _super.call(this, props) || this;\n _this.lastScrollTop = 0;\n _this.actionTriggered = false;\n // variables to keep track of pull down behaviour\n _this.startY = 0;\n _this.currentY = 0;\n _this.dragging = false;\n // will be populated in componentDidMount\n // based on the height of the pull down element\n _this.maxPullDownDistance = 0;\n _this.getScrollableTarget = function () {\n if (_this.props.scrollableTarget instanceof HTMLElement) return _this.props.scrollableTarget;\n if (typeof _this.props.scrollableTarget === 'string') {\n return document.getElementById(_this.props.scrollableTarget);\n }\n if (_this.props.scrollableTarget === null) {\n console.warn(\"You are trying to pass scrollableTarget but it is null. This might\\n happen because the element may not have been added to DOM yet.\\n See https://github.com/ankeetmaini/react-infinite-scroll-component/issues/59 for more info.\\n \");\n }\n return null;\n };\n _this.onStart = function (evt) {\n if (_this.lastScrollTop) return;\n _this.dragging = true;\n if (evt instanceof MouseEvent) {\n _this.startY = evt.pageY;\n } else if (evt instanceof TouchEvent) {\n _this.startY = evt.touches[0].pageY;\n }\n _this.currentY = _this.startY;\n if (_this._infScroll) {\n _this._infScroll.style.willChange = 'transform';\n _this._infScroll.style.transition = \"transform 0.2s cubic-bezier(0,0,0.31,1)\";\n }\n };\n _this.onMove = function (evt) {\n if (!_this.dragging) return;\n if (evt instanceof MouseEvent) {\n _this.currentY = evt.pageY;\n } else if (evt instanceof TouchEvent) {\n _this.currentY = evt.touches[0].pageY;\n }\n // user is scrolling down to up\n if (_this.currentY < _this.startY) return;\n if (_this.currentY - _this.startY >= Number(_this.props.pullDownToRefreshThreshold)) {\n _this.setState({\n pullToRefreshThresholdBreached: true\n });\n }\n // so you can drag upto 1.5 times of the maxPullDownDistance\n if (_this.currentY - _this.startY > _this.maxPullDownDistance * 1.5) return;\n if (_this._infScroll) {\n _this._infScroll.style.overflow = 'visible';\n _this._infScroll.style.transform = \"translate3d(0px, \" + (_this.currentY - _this.startY) + \"px, 0px)\";\n }\n };\n _this.onEnd = function () {\n _this.startY = 0;\n _this.currentY = 0;\n _this.dragging = false;\n if (_this.state.pullToRefreshThresholdBreached) {\n _this.props.refreshFunction && _this.props.refreshFunction();\n _this.setState({\n pullToRefreshThresholdBreached: false\n });\n }\n requestAnimationFrame(function () {\n // this._infScroll\n if (_this._infScroll) {\n _this._infScroll.style.overflow = 'auto';\n _this._infScroll.style.transform = 'none';\n _this._infScroll.style.willChange = 'unset';\n }\n });\n };\n _this.onScrollListener = function (event) {\n if (typeof _this.props.onScroll === 'function') {\n // Execute this callback in next tick so that it does not affect the\n // functionality of the library.\n setTimeout(function () {\n return _this.props.onScroll && _this.props.onScroll(event);\n }, 0);\n }\n var target = _this.props.height || _this._scrollableNode ? event.target : document.documentElement.scrollTop ? document.documentElement : document.body;\n // return immediately if the action has already been triggered,\n // prevents multiple triggers.\n if (_this.actionTriggered) return;\n var atBottom = _this.props.inverse ? _this.isElementAtTop(target, _this.props.scrollThreshold) : _this.isElementAtBottom(target, _this.props.scrollThreshold);\n // call the `next` function in the props to trigger the next data fetch\n if (atBottom && _this.props.hasMore) {\n _this.actionTriggered = true;\n _this.setState({\n showLoader: true\n });\n _this.props.next && _this.props.next();\n }\n _this.lastScrollTop = target.scrollTop;\n };\n _this.state = {\n showLoader: false,\n pullToRefreshThresholdBreached: false,\n prevDataLength: props.dataLength\n };\n _this.throttledOnScrollListener = throttle(150, _this.onScrollListener).bind(_this);\n _this.onStart = _this.onStart.bind(_this);\n _this.onMove = _this.onMove.bind(_this);\n _this.onEnd = _this.onEnd.bind(_this);\n return _this;\n }\n InfiniteScroll.prototype.componentDidMount = function () {\n if (typeof this.props.dataLength === 'undefined') {\n throw new Error(\"mandatory prop \\\"dataLength\\\" is missing. The prop is needed\" + \" when loading more content. Check README.md for usage\");\n }\n this._scrollableNode = this.getScrollableTarget();\n this.el = this.props.height ? this._infScroll : this._scrollableNode || window;\n if (this.el) {\n this.el.addEventListener('scroll', this.throttledOnScrollListener);\n }\n if (typeof this.props.initialScrollY === 'number' && this.el && this.el instanceof HTMLElement && this.el.scrollHeight > this.props.initialScrollY) {\n this.el.scrollTo(0, this.props.initialScrollY);\n }\n if (this.props.pullDownToRefresh && this.el) {\n this.el.addEventListener('touchstart', this.onStart);\n this.el.addEventListener('touchmove', this.onMove);\n this.el.addEventListener('touchend', this.onEnd);\n this.el.addEventListener('mousedown', this.onStart);\n this.el.addEventListener('mousemove', this.onMove);\n this.el.addEventListener('mouseup', this.onEnd);\n // get BCR of pullDown element to position it above\n this.maxPullDownDistance = this._pullDown && this._pullDown.firstChild && this._pullDown.firstChild.getBoundingClientRect().height || 0;\n this.forceUpdate();\n if (typeof this.props.refreshFunction !== 'function') {\n throw new Error(\"Mandatory prop \\\"refreshFunction\\\" missing.\\n Pull Down To Refresh functionality will not work\\n as expected. Check README.md for usage'\");\n }\n }\n };\n InfiniteScroll.prototype.componentWillUnmount = function () {\n if (this.el) {\n this.el.removeEventListener('scroll', this.throttledOnScrollListener);\n if (this.props.pullDownToRefresh) {\n this.el.removeEventListener('touchstart', this.onStart);\n this.el.removeEventListener('touchmove', this.onMove);\n this.el.removeEventListener('touchend', this.onEnd);\n this.el.removeEventListener('mousedown', this.onStart);\n this.el.removeEventListener('mousemove', this.onMove);\n this.el.removeEventListener('mouseup', this.onEnd);\n }\n }\n };\n InfiniteScroll.prototype.componentDidUpdate = function (prevProps) {\n // do nothing when dataLength is unchanged\n if (this.props.dataLength === prevProps.dataLength) return;\n this.actionTriggered = false;\n // update state when new data was sent in\n this.setState({\n showLoader: false\n });\n };\n InfiniteScroll.getDerivedStateFromProps = function (nextProps, prevState) {\n var dataLengthChanged = nextProps.dataLength !== prevState.prevDataLength;\n // reset when data changes\n if (dataLengthChanged) {\n return _assign(_assign({}, prevState), {\n prevDataLength: nextProps.dataLength\n });\n }\n return null;\n };\n InfiniteScroll.prototype.isElementAtTop = function (target, scrollThreshold) {\n if (scrollThreshold === void 0) {\n scrollThreshold = 0.8;\n }\n var clientHeight = target === document.body || target === document.documentElement ? window.screen.availHeight : target.clientHeight;\n var threshold = parseThreshold(scrollThreshold);\n if (threshold.unit === ThresholdUnits.Pixel) {\n return target.scrollTop <= threshold.value + clientHeight - target.scrollHeight + 1;\n }\n return target.scrollTop <= threshold.value / 100 + clientHeight - target.scrollHeight + 1;\n };\n InfiniteScroll.prototype.isElementAtBottom = function (target, scrollThreshold) {\n if (scrollThreshold === void 0) {\n scrollThreshold = 0.8;\n }\n var clientHeight = target === document.body || target === document.documentElement ? window.screen.availHeight : target.clientHeight;\n var threshold = parseThreshold(scrollThreshold);\n if (threshold.unit === ThresholdUnits.Pixel) {\n return target.scrollTop + clientHeight >= target.scrollHeight - threshold.value;\n }\n return target.scrollTop + clientHeight >= threshold.value / 100 * target.scrollHeight;\n };\n InfiniteScroll.prototype.render = function () {\n var _this = this;\n var style = _assign({\n height: this.props.height || 'auto',\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch'\n }, this.props.style);\n var hasChildren = this.props.hasChildren || !!(this.props.children && this.props.children instanceof Array && this.props.children.length);\n // because heighted infiniteScroll visualy breaks\n // on drag down as overflow becomes visible\n var outerDivStyle = this.props.pullDownToRefresh && this.props.height ? {\n overflow: 'auto'\n } : {};\n return React.createElement(\"div\", {\n style: outerDivStyle,\n className: \"infinite-scroll-component__outerdiv\"\n }, React.createElement(\"div\", {\n className: \"infinite-scroll-component \" + (this.props.className || ''),\n ref: function ref(infScroll) {\n return _this._infScroll = infScroll;\n },\n style: style\n }, this.props.pullDownToRefresh && React.createElement(\"div\", {\n style: {\n position: 'relative'\n },\n ref: function ref(pullDown) {\n return _this._pullDown = pullDown;\n }\n }, React.createElement(\"div\", {\n style: {\n position: 'absolute',\n left: 0,\n right: 0,\n top: -1 * this.maxPullDownDistance\n }\n }, this.state.pullToRefreshThresholdBreached ? this.props.releaseToRefreshContent : this.props.pullDownToRefreshContent)), this.props.children, !this.state.showLoader && !hasChildren && this.props.hasMore && this.props.loader, this.state.showLoader && this.props.hasMore && this.props.loader, !this.props.hasMore && this.props.endMessage));\n };\n return InfiniteScroll;\n}(Component);\nexport default InfiniteScroll;","// i18next-extract-mark-ns-start blog\n\nimport {BlogArticle, BlogTitleH2, Left, PostImg} from 'components/blog/BlogComponents';\nimport {SEO} from 'components/SEO';\nimport {graphql, PageProps} from 'gatsby';\nimport {Link, Trans, useI18next} from 'gatsby-plugin-react-i18next';\nimport {colors} from 'global.config';\nimport BlogLayout from 'layouts/BlogLayout';\nimport {RichText} from 'prismic-reactjs';\nimport React, {useCallback, useEffect, useState} from 'react';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport styled from 'styled-components';\nimport {serializeHyperlink} from 'utils/serializeHyperlink';\nimport {getPostsFromPrismicEdges, mapCategory} from 'utils/blog-utils';\nimport {CloseIcon} from 'components/CloseIcon';\nimport {BlogChip} from 'components/blog/BlogChip';\nimport {setMomentLocale} from 'utils/helpers';\nimport {useLocation} from '@reach/router';\nimport {BlogCategoryType, BlogPost} from '../../../types/BlogTypes';\nimport moment from 'moment';\n\nconst Info = styled.p`\n color: #acb6bb;\n font-style: normal;\n font-weight: 500;\n font-size: 13px;\n line-height: 16px;\n margin: 0 0 2rem;\n`;\n\nconst ImageLink = styled(Link)`\n margin-bottom: 1rem;\n position: relative;\n display: block;\n background: #f3f4f6;\n\n img {\n position: absolute;\n width: 100%;\n top: 0;\n left: 0;\n margin-bottom: 0;\n }\n`;\n\nconst ReadMore = styled.div`\n a {\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: #ea7ec3;\n letter-spacing: 0.05em;\n text-decoration-line: underline;\n }\n`;\n\nconst Loading = styled.div`\n font-size: 1.1rem;\n font-weight: 600;\n text-align: center;\n color: ${colors.pink};\n margin-bottom: 2rem;\n`;\n\nconst Summary = styled.div`\n font-style: normal;\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.02em;\n color: #475157;\n margin: 0 0 2rem;\n\n > p {\n margin: unset;\n }\n`;\n\nconst Category = styled(Link)`\n font-style: normal;\n font-weight: 500;\n font-size: 13px;\n line-height: 16px;\n color: #7984d9;\n margin: 0 0 0.5rem;\n`;\n\nconst Blog: React.FC & {prismic: any}> = (props) => {\n const {t} = useI18next();\n setMomentLocale('es');\n\n const {data, pageContext, prismic} = props;\n const [categories] = useState(\n data.categories.allCategorys.edges.map(mapCategory) || []\n );\n\n const [posts, setPosts] = useState([]);\n const [pageInfo, setPageInfo] = useState({\n hasNextPage: false,\n hasPreviousPage: false,\n startCursor: '',\n endCursor: ''\n });\n\n const location = useLocation();\n\n const urlParams = new URLSearchParams(location.search);\n const tag = urlParams.get('tags');\n\n useEffect(() => {\n const fetchPostsData = async () => {\n const {data} = await prismic.load({\n variables: {\n prismicLang: pageContext.prismicLang,\n ...(tag !== null ? {tags: [tag]} : {})\n }\n });\n setPageInfo(data.allPosts.pageInfo);\n const posts = getPostsFromPrismicEdges({\n posts: data.allPosts.edges,\n categories\n });\n setPosts(posts);\n };\n\n fetchPostsData();\n }, [tag]);\n\n const popularPosts: BlogPost[] = getPostsFromPrismicEdges({\n posts: data.popularPosts.allPosts.edges,\n categories\n });\n const mustReadPosts: BlogPost[] = getPostsFromPrismicEdges({\n posts: data.mustReadPosts.allPosts.edges,\n categories\n });\n\n const fetchMore = async () => {\n const {data} = await prismic.load({\n variables: {\n after: pageInfo.endCursor,\n prismicLang: pageContext.prismicLang,\n ...(tag !== null ? {tags: [tag]} : {})\n }\n });\n setPageInfo(data.allPosts.pageInfo);\n const newPosts = getPostsFromPrismicEdges({\n posts: data.allPosts.edges,\n categories\n });\n setPosts([...posts, ...newPosts]);\n };\n\n return (\n <>\n \n \n \n {tag && (\n \n #{decodeURI(tag)} \n \n )}\n Loading...}>\n {posts.map((post: BlogPost) => {\n return (\n \n {post.category && (\n \n {post.category.title}\n \n )}\n \n \n {RichText.asText(post.title)}\n \n \n \n {post.author_card?.author_name && (\n \n {RichText.asText(post.author_card.author_name)}\n \n )}\n {post.author_card && ` | `}\n {(post.updated_at ? t('Originally published') : t('Published')) +\n ': ' +\n post.firstPublicationDate}\n {post.updated_at ? ' | ' + t('Updated') + ': ' + post.updated_at : ''}\n \n {post.imageUrl && (\n \n \n \n )}\n \n \n \n \n \n Read More\n \n \n \n );\n })}\n \n \n \n \n );\n};\n\nexport default Blog;\n\nexport const query = graphql`\n query BlogPostsES($after: String, $prismicLang: String, $tags: [String!]) {\n locales: allLocale(filter: {ns: {in: [\"common\", \"blog\"]}}) {\n edges {\n node {\n ns\n data\n language\n }\n }\n }\n posts: prismic {\n allPosts(\n sortBy: meta_firstPublicationDate_DESC\n after: $after\n lang: $prismicLang\n tags: $tags\n first: 10\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n title\n body\n image\n summary\n category\n author\n updated_at\n author_card {\n ... on PRISMIC_Author {\n author_name\n _meta {\n uid\n }\n }\n }\n _meta {\n uid\n lang\n alternateLanguages {\n lang\n }\n tags\n firstPublicationDate\n }\n }\n }\n }\n }\n categories: prismic {\n allCategorys(lang: $prismicLang) {\n edges {\n node {\n title\n _meta {\n uid\n lang\n }\n order\n }\n }\n }\n }\n popularPosts: prismic {\n allPosts(\n sortBy: meta_lastPublicationDate_DESC\n tags: \"Popular\"\n first: 3\n lang: $prismicLang\n ) {\n edges {\n node {\n title\n _meta {\n uid\n }\n }\n }\n }\n }\n mustReadPosts: prismic {\n allPosts(\n sortBy: meta_lastPublicationDate_DESC\n tags: \"Must Read\"\n first: 3\n lang: $prismicLang\n ) {\n edges {\n node {\n title\n _meta {\n uid\n }\n }\n }\n }\n }\n }\n`;\n","import {AnchorLink} from 'components/AnchorLink';\nimport React from 'react';\n\nexport const serializeHyperlink = (type: string, element: any, content: any) => {\n return (\n \n {content}\n \n );\n};\n"],"sourceRoot":""}