{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../common/components/ion-icon/distribution/social/rss.js","webpack:///../common/components/ion-icon/distribution/social/youtube.js","webpack:///./src/store/author.js","webpack:///../common/lib/ion-article/distribution/ion-article.js","webpack:///../common/components/ion-navchevron/distribution/navPath.js","webpack:///../common/components/ion-icon/distribution/app-icons/tags.js","webpack:///./src/store/search.js","webpack:///../common/components/ion-scrolltotop/distribution/index.js","webpack:///./src/store/weather.js","webpack:///../common/components/ion-icon/distribution/social/facebook.js","webpack:///../common/components/ion-icon/distribution/app-icons/timeclock.js","webpack:///../common/lib/ion-util/distribution/ion-util.js","webpack:///./src/store/rootReducer.js","webpack:///./src/app/static/favicon/apple-touch-icon.png","webpack:///../common/components/ion-navchevron/distribution/NavLink.js","webpack:///../common/components/ion-icon/distribution/social/twitter.js","webpack:///./src/app/components/Shell/NavMenu.js","webpack:///../common/components/ion-icon/distribution/app-icons/rss.js","webpack:///./src/app/static/favicon/favicon-16x16.png","webpack:///./src/app/components/Ad.js","webpack:///./src/app/static/general/daily-voice.jpg","webpack:///./src/store/user.js","webpack:///../common/lib/ion-sections/distribution/ion-sections.js","webpack:///./src/store/articles.js","webpack:///../common/components/ion-icon/distribution/social/linkedin.js","webpack:///../common/lib/ion-article/distribution/parse-article.js","webpack:///./src/app/components/Shell/Header.js","webpack:///./src/store/app.js","webpack:///./src/store/events.js","webpack:///../common/lib/redux-beacon-IONAnalytics/distribution/index.js","webpack:///../common/components/ion-icon/distribution/app-icons/menu.js","webpack:///../common/components/ion-navchevron/distribution/NavChevron.js","webpack:///../common/components/ion-icon/distribution/app-icons/search.js","webpack:///./src/app/components/AdFormats.js","webpack:///../common/components/ion-icon/distribution/app-icons/caretdwn.js","webpack:///../common/lib/ion-cache/distribution/src/memory-cache.js","webpack:///../common/components/ion-icon/distribution/app-icons/close.js","webpack:///./src/app/components/App.js","webpack:///../common/components/ion-icon/distribution/social/instagram.js","webpack:///../common/lib/ion-cache/distribution/src/cache.js","webpack:///../common/lib/ion-article/distribution/BaobabParagraphs.js","webpack:///../common/components/ion-icon/distribution/app-icons/playbtn.js","webpack:///./src/store/article.js","webpack:///../common/components/ion-ads/distribution/useHasMounted.js","webpack:///../common/components/ion-icon/distribution/app-icons/view.js","webpack:///../common/lib/ion-betaDates/distribution/ion-betaDates.js","webpack:///./src/store/staticPage.js","webpack:///./src/store/editorsChoice.js","webpack:///./src/app/components/Shell/Footer.js","webpack:///./src/store/mostReadArticles.js","webpack:///./src/store/magazineCover.js","webpack:///./src/store/subscribe.js","webpack:///../common/components/ion-icon/distribution/social/pinterest.js","webpack:///./src/store/sagas.js","webpack:///./src/client.js","webpack:///../common/components/ion-icon/distribution/social/tiktok.js","webpack:///./src/store/authors.js","webpack:///../common/components/ion-media/distribution/Media.js","webpack:///./src/app/static/favicon/safari-pinned-tab.svg","webpack:///./src/app/components/useHasMounted.js","webpack:///./src/app/static/favicon/favicon.ico","webpack:///../common/components/ion-icon/distribution/index.js","webpack:///./src/app/static/favicon/favicon-32x32.png","webpack:///./src/store/feedback.js","webpack:///../common/lib/ion-cache/distribution/cache.js","webpack:///../common/components/ion-icon/distribution/app-icons/rightarrow.js","webpack:///../common/components/ion-ads/distribution/Ads.js","webpack:///./src/store/createStore.js","webpack:///./src/app/static/general/logo.svg","webpack:///../common/components/ion-icon/distribution/app-icons/warn.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","9","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","obj","_react","_default","props","xmlns","width","height","viewBox","fill","transform","stroke","strokeWidth","fillRule","fetchAuthorSaga","watchFetchAuthor","fetchAuthorAPI","authorSlug","axios","response","log","res","put","payload","takeLatest","fetchAuthor","isFetching","hasFetched","initialState","didInvalidate","lastFetch","hasError","is404","author","Reducer","state","assign","Date","_typeof","iterator","constructor","parseArticle","_x","_parseArticle","this","arguments","_urlify","_interopRequireDefault","_parseArticle2","nodeInterop","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","_interopRequireWildcard","_ionUtil","WeakMap","cacheBabelInterop","cacheNodeInterop","asyncGeneratorStep","gen","_next","_throw","arg","info","done","_asyncToGenerator","fn","self","args","_defineProperties","descriptor","configurable","writable","logger","urlify","addEToUmlauts","szToSs","spaces","nonPrintable","toLower","trim","TIMELINE_REGEX","Article","instance","Constructor","TypeError","_classCallCheck","modified","toISOString","substring","published","bodyHTML","test","formatAbstract","relatedArticles","protoProps","staticProps","regex","string","match","text","other","replace","toLowerCase","address","phone","phoneNumber","extractRegex","concat","externalUri","buildName","contentKey","sectionId","category","section","warn","path","matcher","image","isEmpty","images","bodyLead","bodyMore","getImageObject","assert","headline","getSectionId","split","getUri","getName","_abstract","index","indexOf","endsWith","getAuthor","byline","credit","captions","Array","isArray","caption","formatImageCaption","formatImageCredit","youtube","id","youtubes","full","seconds","Math","floor","interval","formatDate","publishedString","parse","Number","isInteger","_short","toLocaleDateString","year","month","day","getCompetitionSlug","competitionSlug","competitionHTML","RegExp","timelineMatches","timelineSlugs","map","regeneratorRuntime","mark","_callee","rawArticle","wrap","_context","prev","next","abrupt","parseArticleData","stop","updateNavPath","navigateTo","NAVIGATE_TO","SET_NAVPATH","navPath","searchArticlesSaga","searchArticlesMoreSaga","watchSearchArticles","watchSearchArticlesMore","searchArticlesAPI","pageSize","query","SERVER_URL","process","join","_payload","hasMore","contents","articles","select","getArticles","currentArticles","takeEvery","search","searchArticles","searchArticlesMore","defaultState","meta","isLoadingMore","ScrollToTop","prevProps","location","scrollTo","children","fetchWeatherSaga","watchFetchWeather","Cache","fetchWeatherAPI","fetchWeather","weather","fillOpacity","points","keys","processError","status","headers","send","config","_axios","eventType","pageType","userId","titleKey","sessionId","locationUrl","eventData","timestamp","screenWidth","screenHeight","browser","outerWidth","outerHeight","navigator","userAgent","_eventData","post","env","RAZZLE_POST_ANALYTICS_SERVICE","JSON","stringify","combineReducers","article","mostReadArticles","app","staticPage","feedback","subscribe","magazineCover","editorsChoice","user","authors","default","NavLink","_redux","_reactRouter","_reactRouterDom","_reactRedux","_navPath","_extends","source","Component","super","handleClick","to","className","onClick","withRouter","connect","dispatch","bindActionCreators","NavMenu","toggleMenu","role","title","action","method","placeholder","cx","cy","handleAdSlotRegistered","useLocation","useState","pathname","setPath","hasHydrated","useHasMounted","useEffect","isConnected","adPath","slotId","refreshTime","targeting","onSlotRenderEnded","collapseEmptyDiv","onAdSlotRegistered","USER_SET_VISITORID","userToken","registerSuccess","registerError","visitorId","toTitleCase","str","txt","charAt","toUpperCase","substr","url2section","url","articleUrl2section","getSectionLabel","pop","getBaseSectionLabel","urlPath","fetchArticlesSaga","fetchMoreArticlesSaga","watchFetchArticles","FETCH_ARTICLES_SUCCESS","fetchArticlesReadCount","contentKeys","fetchArticlesAPI","offset","limit","max","tempSectionLabel","sectionsLabels","label","sectionLabel","authorName","readCounts","readCount","getAllArticles","fetchArticles","fetchMoreArticles","newPayload","parseSectionName","_x2","_parseArticleData","getHeadline","getSummaryData","_x7","_getSummaryData","_BaobabParagraphs","_slicedToArray","arr","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","from","_unsupportedIterableToArray","_nonIterableRest","len","arr2","_parseSectionName","stripCharacters","content","stripHeadline","stripTags","_callee4","videos","paragraphs","sourceRelatedArticles","_context4","primarySection","sent","getAbstract","byLine","formatPublished","publishDate","mediaContainer","mediaLists","_ref3","_callee3","media","_context3","resources","_ref4","_callee2","resource","_resource$imageURL$ma","_resource$imageURL$ma2","videoObject","_context2","mediaType","imageURL","translateImageResource","translateVideoResource","_x9","_x8","thumbnailURL","getBodyHTML","getParagraphs","getBodyLead","getBodyMore","relatedContent","forEach","relatedArticle","externalUrl","abstrct","summaryAbstract","summaryAbstractHTML","abstractHTML","summaryHeadline","html","startsWith","paragraph","_index","_x3","_translateVideoResource","_callee5","videoMediaSrc","urlToArray","_context5","Requests","json","siteProps","videoServiceUrl","_ref2","imageWidth","imageHeight","cropWidth","crop","w","h","cropHeight","x","cropOffsetX","y","cropOffsetY","focalPointX","focalPoint","focalPointY","date","body","elements","element","oembedContent","concatBodyElementsHtml","_x4","_getBodyLead","_callee6","_context6","formatHtml","reconstructBody","_x5","_getBodyMore","_callee7","_context7","_x6","_reconstructBody","_callee8","inlineImageMatch","_context8","formatBaobabVideo","formatInlineImage","_callee9","summary","_context9","video","Header","isSearchOpen","weekday","values","deviceWidth","defaultWidth","logo","alt","exact","setState","prefetchSaga","watchPrecache","hideMenuSaga","transitionTo","showLastSlotRegistered","watchNavChanges","EXPERIMENT_WIN","PAGE_VIEW","hideMenu","toggleSearch","updateConnectivity","adSlotRegistered","pageView","onSlotRenderEndedLeft","onSlotRenderEndedRight","setMostReadTab","mostReadTab","clearSlots","delay","performSingleRequest","showMenu","showSearch","wingbannerLeftActive","wingbannerRightActive","experiment","variant","eventsMap","virtualPageURL","FETCH_ARTICLE_SUCCESS","host","SERVER_ARTICLE_RENDER","_axios2","events","parts","customVisitorId","random","duration","now","timeNow","getTime","catch","createUrlAndSend","rx","_NavLink","NavChevron","handleNavClick","navid","lastIndexOf","showMe","Fragment","FORMATS","leaderboard","desktop","tablet","mobile","leaderboardsmall","leaderboardtop","mpu","inarticle","mpudynamic","mpu600","wingbanner","interstitial","halfpage","mobileLeaderboardSticky","MAPPINGS","Leaderboard","MPU","Gutter","Mapping6","Interstitial","_createClass","defineProperties","_cache","MemoryCache","_Cache","options","_this","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","_store","subClass","superClass","setPrototypeOf","_inherits","async","ttl","_ttl","expires","clean","_this2","delete","HomePage","loadable","NotFound","DefaultSection","StaticPage","SearchPage","Feedback","WeatherPage","AuthorsSectionPage","App","useSmall","scrollY","hamburgerActive","addEventListener","handleScroll","removeEventListener","Workbox","register","defaultTitle","lang","FaviconICO","sizes","FaviconApple","Favicon32","Favicon16","FaviconSafari","color","itemprop","Pushable","as","Segment","Menu","animation","visible","icon","vertical","Pusher","dimmed","wbMessage","floating","onDismiss","render","thanksMessage","component","description","twitterName","titleTemplate","page","params","strict","showSubscribe","enableSingleRequest","enableInterstitial","enableLazyLoad","enableMappings","mapStateToProps","mapDispatchToProps","reversedParagraphs","reverse","find","para","reverseIndex","sourceParaRegex","afpIndex","HtmlParagraphFormatter","filter","formatter","format","removeParas","embeddedLinkStyleMatch","embeddedWholeLinkStyleMatch","inlineStyleRemove","embeddedIolLinkStyleMatch","embeddedNewslettersLinkStyleMatch","embeddedFacebookLinkStyleMatch","embeddedTwitterLinkStyleMatch","embeddedLinkedInLinkStyleMatch","newspaperLabels","getNewspaperSectionId","includes","formatEmbeddedLink","formatPlain","formatSVG","style","_svgI","siteHost","paragaph","matchTwitter","fetchArticleContentSaga","watchFetchArticleContent","fetchArticleSaga","watchFetchArticle","setPreviewArticleSaga","submitCompetitionSaga","watchPreviewArticle","watchSubmitCompetition","fetchArticleAPI","fetchCompetition","submitCompetitionAPI","formData","fetchCanonicalURL","CANONICAL_FETCHER_URL","fetchIonArticle","fetchVisitorId","localStorage","getItem","setItem","IonArticle","canonicalUri","getCanonicalUri","competition","competitionExpired","nextArticles","getVisitorId","readNext","success","errors","fetchArticle","setPreviewArticle","submitCompetition","serverArticleRender","checkCanonical","canonical","previewArticle","readArticles","isSubmitting","hasSubmitted","hasErrorSubmit","ClientOnly","_excluded","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_React$useState2","hasMounted","setHasMounted","_ref","delegated","BetaTimestamps","formatAgo","isNaN","getDate","monthNames","defaultValue","timeStamp","formatDateString","dd","mmm","yyyy","hh","mm","monthName","getFullMonthName","parseInt","dateString","fetchStaticPageSaga","watchFetchStaticPage","fetchStaticPageAPI","pageName","fetchStaticPage","fetchEditorsChoiceArticlesSaga","watchfetchEditorsChoiceArticles","fetchEditorsChoiceArticles","Sticky","Footer","wallpaperRendered","mapping","fetchMostReadArticlesSaga","watchFetchMostReadArticles","item","fetchMostReadArticles","fetchMagazineCoverSaga","watchFetchMagazineCover","fetchMagazineCoverAPI","fetchMagazineCover","errorMagazine","subscribeSaga","watchSubscribe","subscribeAPI","email","lists","hp","subscribeNewsletter","updateForm","reinitialize","isSubmiting","hasSubmited","rootSaga","watchFeedback","watchFetchAuthors","store","createStore","__PRELOADED_STATE__","getToken","cookie","row","runSaga","loadableReady","container","getElementById","hydrateRoot","withReadCount","fetchAuthorsSaga","fetchAuthorsAPI","fetchAuthors","setDefaultWidth","getDefaultWidth","TabletMobile","Tablet","MobileElse","Mobile","HagDesktop","GqGlamDesktop","DesktopTablet","DesktopElse","Desktop","_reactResponsive","minWidth","maxWidth","React","_caretdwn","_close","_facebook","_instagram","_linkedin","_menu","_pinterest","_playbtn","_rss","_rightarrow","_rss2","_search","_tags","_tiktok","_timeclock","_twitter","_view","_warn","_youtube","feedbackSaga","feedbackAPI","initialise","submitFeedback","fullName","enquiryType","output","captchaVerified","recaptchaValue","DoNothingCache","_cache2","_memoryCache2","IonAd","IonAdSlot","_googletag","googletag","cmd","pubads","destroySlots","slots","refreshingSlots","disableAgeTarget","enableAgeTarget","disableAnchorAds","enableAnchorAds","disableArticleLevelTarget","enableArticleLevelTarget","disableGenderTarget","enableGenderTarget","disableInterstitial","disableMappings","disableSectionLevelTarget","enableSectionLevelTarget","getSlots","isAnchorAdsEnabled","display","_useHasMounted","_ionMedia","anchor","onSlotRequested","__onSlotRenderEnded","slot","_targeting","getOwnPropertyNames","_sizes","elem","__slotRequested","sizeMapping","getTargeting","targetingKeys","getTargetingKeys","secondsToWait","refresh","idx","defineOutOfPageSlot","enums","OutOfPageFormat","TOP_ANCHOR","BOTTOM_ANCHOR","INTERSTITIAL","addService","setConfig","triggers","navBar","unhideWindow","defineSlot","defineSizeMapping","setCollapseEmptyDiv","setTargeting","fetchMarginPercent","renderMarginPercent","mobileScaling","enableServices","adNotice","mpusection","gtm","GoogleTagManager","offlineStorage","OfflineWeb","beaconMiddleware","isServer","createBeaconMiddleware","IONAnalytics","createReduxStore","sagaMiddleware","RAZZLE_SAGA_MONITOR","createSagaMiddleware","sagaMonitor","createSagaMonitor","level","effectTrigger","effectResolve","actionDispatch","devToolsCompose","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","rootReducer","applyMiddleware","run","close","END","gradientTransform","gradientUnits","y2","x2","y1"],"mappings":"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","file":"static/js/client.6f87d693.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t9: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t9: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({\"3\":\"pages-Feedback\",\"4\":\"pages-NotFound\",\"6\":\"pages-Article\",\"10\":\"pages-WeatherPage\"}[chunkId]||chunkId) + \".\" + {\"0\":\"7869719e\",\"1\":\"a6d76d43\",\"2\":\"32b06a41\",\"3\":\"1e82ad31\",\"4\":\"f3b1b8d6\",\"5\":\"f9d23dac\",\"6\":\"deac1a02\",\"7\":\"45c522a9\",\"10\":\"4232956d\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"4\":1,\"5\":1,\"7\":1,\"10\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({\"3\":\"pages-Feedback\",\"4\":\"pages-NotFound\",\"6\":\"pages-Article\",\"10\":\"pages-WeatherPage\"}[chunkId]||chunkId) + \".\" + {\"0\":\"31d6cfe0\",\"1\":\"31d6cfe0\",\"2\":\"e5906287\",\"3\":\"31d6cfe0\",\"4\":\"bb9b656a\",\"5\":\"bb9b656a\",\"6\":\"31d6cfe0\",\"7\":\"2e1fa28f\",\"10\":\"bb9b656a\"}[chunkId] + \".chunk.css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"__LOADABLE_LOADED_CHUNKS__\"] = window[\"__LOADABLE_LOADED_CHUNKS__\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"ftlp\",8,12]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar RSS = function RSS(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 26 26\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#FFFFFF\",\n d: \"M162.666667,29.5000003 C162.666667,28.9019098 162.455078,28.3912764 162.031901,27.9680991 C161.608724,27.5449218 161.09809,27.3333337 160.499999,27.3333337 C159.90191,27.3333337 159.391276,27.5449218 158.968098,27.9680991 C158.544922,28.3912764 158.333333,28.9019098 158.333333,29.5000003 C158.333333,30.0980907 158.544922,30.6087241 158.968098,31.0319014 C159.391276,31.4550787 159.90191,31.6666668 160.499999,31.6666668 C161.09809,31.6666668 161.608724,31.4550787 162.031901,31.0319014 C162.455078,30.6087241 162.666667,30.0980907 162.666667,29.5000003 Z M168.608073,31.0911464 C168.461371,28.4618055 167.465494,26.2246099 165.620443,24.3795575 C163.775391,22.5345052 161.538194,21.5386284 158.908854,21.3919273 C158.750868,21.3806423 158.615451,21.4314234 158.502604,21.5442704 C158.389757,21.6571185 158.333333,21.7868926 158.333333,21.9335937 L158.333333,24.1002603 C158.333333,24.2469624 158.381293,24.3710935 158.477213,24.4726566 C158.573133,24.5742186 158.694444,24.6306427 158.841145,24.6419267 C160.578993,24.7660588 162.068577,25.4487853 163.309895,26.6901042 C164.551215,27.9314241 165.233941,29.4210072 165.358073,31.1588545 C165.369358,31.3055556 165.425781,31.4268667 165.527344,31.5227867 C165.628906,31.6187068 165.753038,31.6666668 165.899739,31.6666668 L168.066406,31.6666668 C168.213108,31.6666668 168.342882,31.6102438 168.455729,31.4973957 C168.568576,31.3845486 168.619357,31.2491325 168.608073,31.0911464 Z M175.108073,31.1080734 C175.051649,29.3702262 174.735676,27.6916239 174.160156,26.0722657 C173.584636,24.4529086 172.797526,22.9858945 171.798828,21.6712235 C170.80013,20.3565536 169.643446,19.1998697 168.328776,18.201172 C167.014106,17.2024743 165.547092,16.4153647 163.927734,15.8398433 C162.308377,15.2643228 160.629775,14.9483506 158.891927,14.8919266 C158.733941,14.8806426 158.604166,14.9314236 158.502604,15.0442707 C158.389757,15.1571178 158.333333,15.2868919 158.333333,15.433594 L158.333333,17.6002606 C158.333333,17.7469617 158.384115,17.8710938 158.485677,17.9726558 C158.587239,18.0742189 158.711371,18.1306419 158.858073,18.1419269 C161.160156,18.22092 163.292968,18.8500435 165.25651,20.0292973 C167.220052,21.2085502 168.791449,22.7799483 169.970703,24.7434898 C171.149957,26.7070312 171.779079,28.8398438 171.858072,31.1419275 C171.869357,31.2886286 171.925781,31.4127607 172.027343,31.5143237 C172.128907,31.6158858 172.253038,31.6666668 172.39974,31.6666668 L174.566406,31.6666668 C174.713107,31.6666668 174.842881,31.6102438 174.955729,31.4973957 C175.079861,31.3958336 175.130643,31.2660595 175.108073,31.1080734 Z M180,14.8749996 L180,31.1250004 C180,32.4678824 179.523221,33.6161033 178.569661,34.569662 C177.616102,35.5232207 176.467882,36 175.125,36 L158.875,36 C157.532118,36 156.383898,35.5232207 155.430339,34.569662 C154.476779,33.6161033 154,32.4678824 154,31.1250004 L154,14.8749996 C154,13.5321176 154.476779,12.3838977 155.430339,11.430338 C156.383898,10.4767793 157.532118,10 158.875,10 L175.125,10 C176.467882,10 177.616102,10.4767793 178.569661,11.430338 C179.523221,12.3838977 180,13.5321176 180,14.8749996 Z\",\n transform: \"translate(-154 -10)\"\n }));\n};\n\nvar _default = RSS;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Youtube = function Youtube(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 26 19\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"M10.3409091,13.0249659 L10.3409091,5.29321591 L17.1363636,9.15923864 L10.3409091,13.0249659 Z M25.4566591,2.86044318 C25.1576591,1.73446591 24.2766136,0.847806818 23.1580227,0.546886364 C21.1304659,0 13,0 13,0 C13,0 4.86953409,0 2.84197727,0.546886364 C1.72338636,0.847806818 0.842340909,1.73446591 0.543340909,2.86044318 C0,4.90114773 0,9.15909091 0,9.15909091 C0,9.15909091 0,13.4168864 0.543340909,15.4577386 C0.842340909,16.5837159 1.72338636,17.470375 2.84197727,17.7714432 C4.86953409,18.3181818 13,18.3181818 13,18.3181818 C13,18.3181818 21.1304659,18.3181818 23.1580227,17.7714432 C24.2766136,17.470375 25.1576591,16.5837159 25.4566591,15.4577386 C26,13.4168864 26,9.15909091 26,9.15909091 C26,9.15909091 26,4.90114773 25.4566591,2.86044318 Z\",\n fill: \"#FFFFFF\"\n })));\n};\n\nvar _default = Youtube;\nexports[\"default\"] = _default;","import axios from 'axios'\nimport { call, put, takeLatest } from 'redux-saga/effects'\n\nexport const FETCH_AUTHOR = 'api/FETCH_AUTHOR'\nexport const FETCH_AUTHOR_SUCCESS = 'api/FETCH_AUTHOR_SUCCESS'\nexport const FETCH_AUTHOR_ERROR = 'api/FETCH_AUTHOR_ERROR'\nexport const FETCH_AUTHOR_NOT_FOUND = 'api/FETCH_AUTHOR_NOT_FOUND'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '/data/content' : process.env.RAZZLE_CONTENT\n\nexport async function fetchAuthorAPI (authorSlug) {\n const key = '/author/' + process.env.RAZZLE_TITLE_KEY + '/' + authorSlug\n try {\n const response = await axios.get(SERVER_URL + key)\n return response.data\n } catch (error) {\n console.log('fetchAuthorAPI:', error.message)\n throw error\n }\n}\n\nfunction * fetchAuthorSaga ({ authorSlug }) {\n try {\n const res = yield call(fetchAuthorAPI, authorSlug)\n yield put({ type: FETCH_AUTHOR_SUCCESS, payload: res })\n } catch (e) {\n yield put({ type: FETCH_AUTHOR_ERROR, payload: e.message })\n }\n}\n\nexport function * watchFetchAuthor () {\n yield takeLatest(FETCH_AUTHOR, fetchAuthorSaga)\n}\n\nexport const fetchAuthor = (authorSlug) => ({ type: FETCH_AUTHOR, isFetching: true, hasFetched: false, authorSlug })\n\nexport const initialState = {\n didInvalidate: false,\n lastFetch: 0,\n isFetching: false,\n hasFetched: false,\n hasError: false,\n is404: false,\n error: null,\n author: null\n}\n\nexport const Reducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case FETCH_AUTHOR:\n return Object.assign({}, state, {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n is404: false,\n hasError: false,\n error: null\n })\n case FETCH_AUTHOR_NOT_FOUND:\n return Object.assign({}, state, {\n hasError: true,\n is404: true,\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n author: null\n })\n case FETCH_AUTHOR_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n is404: false,\n error: payload,\n hasFetched: true,\n isFetching: false,\n didInvalidate: true\n })\n case FETCH_AUTHOR_SUCCESS:\n return Object.assign({}, state, {\n lastFetch: new Date(),\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n author: payload,\n hasError: false,\n is404: false,\n error: null\n })\n default:\n return state\n }\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseArticle = parseArticle;\nexports[\"default\"] = void 0;\n\nvar _urlify = _interopRequireDefault(require(\"urlify\"));\n\nvar BetaDates = _interopRequireWildcard(require(\"ion-betaDates\"));\n\nvar _ionSections = _interopRequireDefault(require(\"ion-sections\"));\n\nvar _parseArticle2 = require(\"./parse-article\");\n\nvar _ionUtil = require(\"ion-util\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar logger = console;\n\nvar urlify = _urlify[\"default\"].create({\n addEToUmlauts: true,\n szToSs: true,\n spaces: '-',\n nonPrintable: '',\n toLower: true,\n trim: false\n}); // // These items below should be pulled from siteProps *****************************************************\n\n\nvar defaultArticleSectionUri = 'news'; // // *****************************************************\n\nvar SLUG_REGEX = '([a-z0-9_.-]+)';\nvar COMPETITION_REGEX = '\\\\[competition\\\\s?\\\\=\\\\s?[\\'\"]?%s[\\'\"]?\\\\]';\nvar TIMELINE_REGEX = /\\[timeline=([^ ]+)(?: mode=([^ ]+))?\\]/g;\n\nfunction isSimilarText(text, other) {\n if (text && other) {\n text = text.replace(/\\W/g, '').toLowerCase();\n other = other.replace(/\\W/g, '').toLowerCase();\n return text === other;\n }\n\n return false;\n}\n\nvar Article = /*#__PURE__*/function () {\n function Article(props) {\n _classCallCheck(this, Article);\n\n Object.assign(this, props); // if (typeof this.contentKey === 'string') {\n // this.contentKey = parseInt(this.contentKey)\n // }\n\n if (this.modified > 0) {\n this.modified = new Date(this.modified).toISOString().substring(0, 16);\n }\n\n if (this.published > 0) {\n this.published = new Date(this.published).toISOString().substring(0, 16);\n }\n\n if (!this.bodyHTML) {\n this.bodyHTML = '';\n } else if (!/[A-Z][a-z]/.test(this.bodyHTML)) {\n this.bodyHTML = '';\n }\n\n if (this[\"abstract\"]) {\n this.formatAbstract();\n }\n\n if (!this.relatedArticles) {\n this.relatedArticles = [];\n }\n } // This stuff below was brought in from BaobabArticle *****************************************************\n\n\n _createClass(Article, [{\n key: \"extractRegex\",\n value: function extractRegex(regex, string) {\n var match = string.match(regex);\n\n if (match && match.length > 1) {\n return match[1];\n }\n }\n }, {\n key: \"formatAbstract\",\n value: function formatAbstract() {\n this[\"abstract\"] = this[\"abstract\"].replace(/^\\* /, '');\n\n if (this.author) {\n if (isSimilarText(this[\"abstract\"], this.author)) {\n this[\"abstract\"] = '';\n } else {// logger.debug('author', this.author, this.abstract)\n }\n } else {// logger.debug('author none', ObjectLogs.keys(this))\n }\n\n var regex = /^(Address:\\s*)?(.*\\w)\\W+(Phone|Tel|phone|tel)\\s*:\\s*([0-9][0-9\\s]+[0-9])\\W*$/;\n var match = this[\"abstract\"].match(regex);\n\n if (match) {\n this.address = match[2];\n this.phone = match[4];\n\n if (!this.bodyHTML) {\n var phoneNumber = this.extractRegex(/\\+?0?([1-9]{8})/, this.phone.replace(/[^0-9+-]/g, '')); // logger.debug('listing', match, this.bodyHTML, phoneNumber)\n\n if (phoneNumber && phoneNumber.length === 8) {\n this.bodyHTML = \"<p class=\\\"link\\\"><svg class=\\\"iconSvgPhone\\\" viewBox=\\\"0 0 1792 1792\\\"><path d=\\\"M496.4,653c-54.3-44.4-116.9-104.1-171.2-171.5c-38.1-47.2-71.8-96.8-37-131.7l-244.1-244C8.5,150.3-70.4,362.1,267.6,708.7C623.8,1074,853.4,995.9,893,954.8L654.9,716.5C621.6,749.7,578.7,720.1,496.4,653z M978.8,816.3v-0.3c0,0-185.6-185.5-185.7-185.6c-14.7-14.9-38.3-14.4-52.9,0.1l-67.4,67.3l238.5,238.9c0,0,67.5-67.4,67.4-67.4l0.1-0.1C994.5,854,992.9,830.4,978.8,816.3z M374,264.2V264c15.6-15.6,14-39,0-53.1v-0.2c0,0-191.1-191-191.2-191.1C168.1,4.9,144.6,5.2,130,19.7L62.6,87.3l243.9,244.1C306.6,331.5,374,264.3,374,264.2z\\\"></path></svg><a href=\\\"tel:+27-\".concat(phoneNumber, \"\\\">\").concat(this.phone, \"</a>\");\n } else {\n this.bodyHTML = \"<p class=\\\"link\\\"><svg class=\\\"iconSvgPhone\\\" viewBox=\\\"0 0 1792 1792\\\"><path d=\\\"M496.4,653c-54.3-44.4-116.9-104.1-171.2-171.5c-38.1-47.2-71.8-96.8-37-131.7l-244.1-244C8.5,150.3-70.4,362.1,267.6,708.7C623.8,1074,853.4,995.9,893,954.8L654.9,716.5C621.6,749.7,578.7,720.1,496.4,653z M978.8,816.3v-0.3c0,0-185.6-185.5-185.7-185.6c-14.7-14.9-38.3-14.4-52.9,0.1l-67.4,67.3l238.5,238.9c0,0,67.5-67.4,67.4-67.4l0.1-0.1C994.5,854,992.9,830.4,978.8,816.3z M374,264.2V264c15.6-15.6,14-39,0-53.1v-0.2c0,0-191.1-191-191.2-191.1C168.1,4.9,144.6,5.2,130,19.7L62.6,87.3l243.9,244.1C306.6,331.5,374,264.3,374,264.2z\\\"></path></svg>\".concat(this.phone);\n }\n\n this.bodyHTML += \"<p class=\\\"link\\\"><svg class=\\\"iconSvgEmail\\\" viewBox=\\\"0 0 1792 1792\\\"><path d=\\\"M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z\\\"/></svg>\".concat(this.address, \"<p>\");\n }\n\n this[\"abstract\"] = 'Tel: ' + this.phone; // + '\\n' + this.address;\n } else {\n this[\"abstract\"] = this[\"abstract\"].replace(/^<p>/, '');\n this[\"abstract\"] = this[\"abstract\"].replace(/<\\/p>$/, '');\n this[\"abstract\"] = this[\"abstract\"].replace(/<!--PSTYLE=Normal-->/, '');\n this[\"abstract\"] = this[\"abstract\"].replace(/<p>/, '');\n }\n\n if (!this.bodyHTML) {\n this.bodyHTML = this[\"abstract\"];\n }\n }\n }, {\n key: \"getCanonicalUri\",\n value: function getCanonicalUri() {\n if (this.externalUri) {\n return this.externalUri;\n }\n\n var name = this.buildName();\n name += '-' + this.contentKey;\n var sectionId = this.category || this.section;\n\n if (sectionId) {\n return sectionId + '/' + name;\n } else {\n logger.warn('getCanonicalUri: No section defined for article:', this.contentKey);\n return name;\n }\n }\n }, {\n key: \"basename\",\n value: function basename(path) {\n var matcher = path.match(/([^\\/]+)\\.[a-z]+$/);\n\n if (matcher) {\n return matcher[1];\n } else {\n return path;\n }\n }\n }, {\n key: \"getImageObject\",\n value: function getImageObject() {\n if (this.image) {\n return this.image;\n } else if (!(0, _ionUtil.isEmpty)(this.images)) {\n return this.images[0];\n } else {\n return null;\n }\n }\n }, {\n key: \"getBodyLead\",\n value: function getBodyLead() {\n if (this.bodyLead) {\n return this.bodyLead;\n }\n\n return '';\n }\n }, {\n key: \"getBodyMore\",\n value: function getBodyMore() {\n if (this.bodyMore) {\n return this.bodyMore;\n }\n\n return '';\n }\n }, {\n key: \"getImageWidth\",\n value: function getImageWidth() {\n var image = this.getImageObject();\n\n if (image && image.width) {\n return image.width;\n } else {\n return '';\n }\n }\n }, {\n key: \"getImageHeight\",\n value: function getImageHeight() {\n var image = this.getImageObject();\n\n if (image && image.height) {\n return image.height;\n } else {\n return '';\n }\n } // The stuff above was brought in from BaobabArticle *****************************************************\n\n }, {\n key: \"getHeadline\",\n value: function getHeadline() {\n assert(this.headline);\n\n if (this.headline.length > 160) {\n return this.headline.replace(/([A-Za-z]*.\\.)\\s.*$/, '$1');\n } else {\n return this.headline;\n }\n } // getSectionLabel () {\n // var sectionId = this.getSectionId()\n // return Sections.getSectionLabel(sectionId)\n // }\n\n }, {\n key: \"getSectionId\",\n value: function getSectionId() {\n if (this.category) {\n return this.category;\n } else if (this.section) {\n return this.section;\n } else {\n logger.warn('getSectionId other', this.contentKey);\n return defaultArticleSectionUri;\n }\n } // getGrandSectionLabel () {\n // var sectionId = this.getGrandSectionId(this)\n // return Sections.getSectionLabel(sectionId)\n // }\n\n }, {\n key: \"getGrandSectionId\",\n value: function getGrandSectionId() {\n var sectionId = this.getSectionId();\n\n if (sectionId) {\n return sectionId.split('/')[0];\n }\n }\n }, {\n key: \"getPath\",\n value: function getPath() {\n return '/' + this.getUri();\n }\n }, {\n key: \"getUri\",\n value: function getUri() {\n var sectionId = this.getSectionId();\n\n if (!sectionId) {\n return this.getName();\n } else {\n return sectionId + '/' + this.getName();\n }\n }\n }, {\n key: \"getName\",\n value: function getName() {\n return this.buildName() + '-' + this.contentKey;\n }\n }, {\n key: \"buildName\",\n value: function buildName() {\n return urlify(this.headline.replace(/\\&/g, '-and-')).replace(/-+/g, '-');\n }\n }, {\n key: \"getAbstract\",\n value: function getAbstract() {\n if (this[\"abstract\"]) {\n var _abstract = this[\"abstract\"].trim();\n\n if (_abstract.length > 150) {\n var index = _abstract.indexOf('. ');\n\n if (index > 0 && index < 150) {\n _abstract = _abstract.substring(0, index + 1);\n } else {\n index = _abstract.substring(120).indexOf(' ');\n _abstract = _abstract.substring(0, 120 + index) + ' ...';\n }\n } else if (!_abstract.endsWith('.')) {}\n\n return _abstract;\n }\n }\n }, {\n key: \"formatByline\",\n value: function formatByline() {\n var author = this.getAuthor();\n\n if (author) {\n return 'By ' + author;\n } else {\n return '';\n }\n }\n }, {\n key: \"getAuthor\",\n value: function getAuthor() {\n if (!this) {\n // logger.warn('getAuthor')\n return null;\n } else if (this.author) {\n return this.author;\n } else if (this.byline) {\n if (this.byline.indexOf('By ') === 0) {\n return this.byline.substring(3);\n } else {\n return this.byline;\n }\n } else {\n // logger.debug('getAuthor empty', this.contentKey)\n return null;\n }\n }\n }, {\n key: \"formatImageCredit\",\n value: function formatImageCredit(index) {\n // logger.debug('formatImageCredit', this.contentKey, index)\n if (this.images && this.images.length > index && typeof this.images[index].credit === 'string') {\n return this.images[index].credit.replace(/\\.$/, '');\n }\n\n return '';\n }\n }, {\n key: \"formatImageCaption\",\n value: function formatImageCaption() {\n try {\n var image = this.getImageObject();\n\n if (image) {\n if (image.captions && image.captions.length) {\n return image.captions.trim(); // TODO\n }\n\n if (Array.isArray(image.caption) && image.caption.length) {\n return image.caption.trim(); // TODO\n }\n\n return image.caption;\n }\n } catch (err) {\n logger.error(err);\n }\n\n return '';\n }\n }, {\n key: \"formatImageCaptionCredit\",\n value: function formatImageCaptionCredit(index) {\n var caption = this.formatImageCaption();\n var credit = this.formatImageCredit(0);\n\n if (!(0, _ionUtil.isEmpty)(caption)) {\n if (credit && caption.toLowerCase().indexOf(credit.toLowerCase()) < 0) {\n if (!caption.endsWith('.')) {\n caption += '. Credit: ' + credit;\n } else {\n caption += ' Credit: ' + credit;\n }\n }\n } else if (!(0, _ionUtil.isEmpty)(credit)) {\n caption = 'Credit: ' + credit;\n }\n\n return caption;\n }\n }, {\n key: \"getYoutubeCardImage\",\n value: function getYoutubeCardImage() {\n if (this.youtube) {\n return 'http://img.youtube.com/vi/' + this.youtube.id + '/0.jpg';\n }\n\n if (!(0, _ionUtil.isEmpty)(this.youtubes)) {\n return 'http://img.youtube.com/vi/' + this.youtubes[0].id + '/0.jpg';\n }\n }\n }, {\n key: \"formatAgo\",\n value: function formatAgo() {\n var full = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n try {\n if (this.published) {\n var published = new Date(this.published);\n var seconds = Math.floor((new Date() - published) / 1000);\n var interval = Math.floor(seconds / 43200);\n\n if (interval > 1) {\n return this.formatDate(true);\n }\n\n interval = Math.floor(seconds / 3600);\n\n if (interval >= 1) {\n return interval + 'h' + (full ? ' ago' : '');\n }\n\n interval = Math.floor(seconds / 60);\n\n if (interval > 1) {\n return interval + 'm' + (full ? ' ago' : '');\n }\n\n return Math.floor(seconds) + 's' + (full ? ' ago' : '');\n } else if (this.publishedString) {\n return this.publishedString;\n } else {// logger.warn('formatAgo published', this.contentKey, ObjectLogs.formatKeys(this.props))\n }\n } catch (err) {\n logger.error(err, 'formatAgo', this.contentKey, this.props);\n }\n\n return '';\n }\n }, {\n key: \"parseDate\",\n value: function parseDate() {\n if (this.published) {\n if (typeof this.published === 'string') {\n if (this.published.length === 16) {\n return Date.parse(this.published + 'Z');\n }\n } else if (Number.isInteger(this.published)) {\n return new Date(this.published);\n }\n } else {\n logger.error('parseDate', this.contentKey, this.published);\n }\n }\n }, {\n key: \"formatDate\",\n value: function formatDate(_short) {\n try {\n if (this.published) {\n return new Date(this.published).toLocaleDateString('en-US', {\n year: 'numeric',\n month: _short ? 'short' : 'long',\n day: 'numeric'\n });\n } else if (this.publishedString) {\n return this.publishedString;\n } else {\n logger.warn('formatDate', this.contentKey);\n }\n } catch (err) {\n logger.error(err, 'formatDate', this.contentKey);\n }\n\n return '';\n }\n }, {\n key: \"getCompetitionSlug\",\n value: function getCompetitionSlug() {\n var match = this.bodyHTML.match(COMPETITION_REGEX.replace('%s', SLUG_REGEX));\n\n if (match && match.length > 1) {\n return match[1];\n }\n\n return false;\n }\n }, {\n key: \"hasCompetitionSlug\",\n value: function hasCompetitionSlug() {\n return this.getCompetitionSlug() !== false;\n }\n }, {\n key: \"setCompetition\",\n value: function setCompetition(competitionSlug, competitionHTML) {\n return this.bodyHTML.replace(new RegExp(COMPETITION_REGEX.replace('%s', competitionSlug)), competitionHTML);\n }\n }, {\n key: \"getTimelineSlugs\",\n value: function getTimelineSlugs() {\n var timelineMatches = this.bodyHTML.match(TIMELINE_REGEX);\n var timelineSlugs = timelineMatches === null || timelineMatches === void 0 ? void 0 : timelineMatches.map(function (match) {\n return match.match(/\\[timeline=([^ ]+)(?: mode=([^ ]+))?\\]/)[1];\n });\n\n if (timelineSlugs && timelineSlugs.length > 0) {\n return timelineSlugs;\n }\n\n return false;\n }\n }]);\n\n return Article;\n}();\n\nexports[\"default\"] = Article;\n\nfunction parseArticle(_x) {\n return _parseArticle.apply(this, arguments);\n}\n\nfunction _parseArticle() {\n _parseArticle = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(rawArticle) {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", (0, _parseArticle2.parseArticleData)(rawArticle));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _parseArticle.apply(this, arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Reducer = exports.updateNavPath = exports.navigateTo = exports.NAVIGATE_TO = exports.SET_NAVPATH = void 0;\nconst SET_NAVPATH = 'SET_NAVPATH';\nexports.SET_NAVPATH = SET_NAVPATH;\nconst NAVIGATE_TO = 'NAVIGATE_TO';\nexports.NAVIGATE_TO = NAVIGATE_TO;\n\nconst navigateTo = navPath => ({\n type: NAVIGATE_TO,\n payload: navPath\n});\n\nexports.navigateTo = navigateTo;\n\nconst updateNavPath = navPath => ({\n type: SET_NAVPATH,\n payload: navPath\n});\n\nexports.updateNavPath = updateNavPath;\n\nconst Reducer = (state = {\n navPath: '/'\n}, {\n type,\n payload\n}) => {\n switch (type) {\n case NAVIGATE_TO:\n case SET_NAVPATH:\n return { ...state,\n ...{\n navPath: payload\n }\n };\n\n default:\n return state;\n }\n};\n\nexports.Reducer = Reducer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Tags = function Tags(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 32 26\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#000000\",\n d: \"M7.5,5.422991 C7.5,4.831473 7.290737,4.326451 6.87221,3.907924 C6.453683,3.489397 5.948661,3.280134 5.357143,3.280134 C4.765625,3.280134 4.260603,3.489397 3.842076,3.907924 C3.423549,4.326451 3.214286,4.831473 3.214286,5.422991 C3.214286,6.014509 3.423549,6.519531 3.842076,6.938058 C4.260603,7.356585 4.765625,7.565848 5.357143,7.565848 C5.948661,7.565848 6.453683,7.356585 6.87221,6.938058 C7.290737,6.519531 7.5,6.014509 7.5,5.422991 Z M25.362723,15.065848 C25.362723,15.657366 25.15625,16.159598 24.743304,16.572545 L16.523438,24.809152 C16.08817,25.222098 15.580357,25.428571 15,25.428571 C14.408482,25.428571 13.90625,25.222098 13.493304,24.809152 L1.523438,12.822545 C1.09933,12.409598 0.739397,11.845982 0.443638,11.131696 C0.147879,10.417411 0,9.764509 0,9.172991 L0,2.208705 C0,1.628348 0.212054,1.126116 0.636161,0.702009 C1.060268,0.277902 1.5625,0.065848 2.142857,0.065848 L9.107143,0.065848 C9.698661,0.065848 10.351562,0.213728 11.065848,0.509487 C11.780134,0.805246 12.34933,1.165179 12.773438,1.589286 L24.743304,13.542411 C25.15625,13.977679 25.362723,14.485491 25.362723,15.065848 Z M31.791295,15.065848 C31.791295,15.657366 31.584821,16.159598 31.171875,16.572545 L22.952009,24.809152 C22.516741,25.222098 22.008929,25.428571 21.428571,25.428571 C21.026786,25.428571 20.697545,25.350446 20.440848,25.194196 C20.184152,25.037946 19.888393,24.78683 19.553571,24.440848 L27.421875,16.572545 C27.834821,16.159598 28.041295,15.657366 28.041295,15.065848 C28.041295,14.485491 27.834821,13.977679 27.421875,13.542411 L15.452009,1.589286 C15.027902,1.165179 14.458705,0.805246 13.74442,0.509487 C13.030134,0.213728 12.377232,0.065848 11.785714,0.065848 L15.535714,0.065848 C16.127232,0.065848 16.780134,0.213728 17.49442,0.509487 C18.208705,0.805246 18.777902,1.165179 19.202009,1.589286 L31.171875,13.542411 C31.584821,13.977679 31.791295,14.485491 31.791295,15.065848 Z\"\n }));\n};\n\nvar _default = Tags;\nexports[\"default\"] = _default;","import axios from 'axios'\nimport { call, put, takeEvery, takeLatest, select } from 'redux-saga/effects'\n\nexport const SEARCH_ARTICLES = 'api/SEARCH_ARTICLES'\nexport const SEARCH_ARTICLES_SUCCESS = 'api/SEARCH_ARTICLES_SUCCESS'\nexport const SEARCH_ARTICLES_ERROR = 'api/SEARCH_ARTICLES_ERROR'\nexport const SEARCH_ARTICLES_EMPTY = 'api/SEARCH_ARTICLES_EMPTY'\nexport const SEARCH_ARTICLES_MORE = 'api/SEARCH_ARTICLES_MORE'\nexport const SEARCH_ARTICLES_MORE_SUCCESS = 'api/SEARCH_ARTICLES_MORE_SUCCESS'\nexport const SEARCH_ARTICLES_MORE_ERROR = 'api/SEARCH_ARTICLES_MORE_ERROR'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '/data/content' : process.env.RAZZLE_CONTENT\n\nconst searchArticlesAPI = (index, pageSize, query) => {\n return axios.get([SERVER_URL + '/v3/section', process.env.RAZZLE_TITLE_KEY, index, pageSize + 1, 'search?q=' + query].join('/'))\n .then(response => {\n return response.data\n })\n .catch(err => {\n // console.error(err)\n throw err\n })\n}\n\nfunction * searchArticlesSaga ({ payload }) {\n const { index, pageSize, query } = payload\n try {\n const res = yield call(searchArticlesAPI, index, pageSize, query)\n const _payload = {\n lastFetch: new Date(),\n query,\n hasMore: res.contents.length > pageSize,\n articles: res.contents.slice(0, pageSize)\n }\n if (Array.isArray(res.contents)) {\n yield put({ type: SEARCH_ARTICLES_SUCCESS, payload: _payload })\n } else {\n yield put({ type: SEARCH_ARTICLES_EMPTY, payload: _payload })\n }\n } catch (e) {\n console.error('ERROR while searching section', query, 'json:', e.message)\n yield put({ type: SEARCH_ARTICLES_ERROR, payload: { query, message: e.message } })\n }\n}\n\nfunction * searchArticlesMoreSaga ({ payload }) {\n const { index, pageSize, query } = payload\n const currentArticles = yield select(getArticles)\n try {\n const res = yield call(searchArticlesAPI, index, pageSize, query)\n const data = {\n query,\n lastFetch: new Date(),\n hasMore: res.contents.length > pageSize,\n articles: currentArticles.concat(res.contents.slice(0, pageSize))\n }\n yield put({ type: SEARCH_ARTICLES_MORE_SUCCESS, payload: data })\n } catch (e) {\n console.error('ERROR while fetching search result', query, 'json:', e.message)\n yield put({ type: SEARCH_ARTICLES_MORE_ERROR, payload: { query, message: e.message } })\n }\n}\n\nexport function * watchSearchArticles () {\n yield takeEvery(SEARCH_ARTICLES, searchArticlesSaga)\n}\n\nexport function * watchSearchArticlesMore () {\n yield takeLatest(SEARCH_ARTICLES_MORE, searchArticlesMoreSaga)\n}\n\n// Saga actions\nconst getArticles = (state) => state.search.articles\nexport const searchArticles = (query, index, pageSize) => ({ type: SEARCH_ARTICLES, payload: { query, index, pageSize } })\nexport const searchArticlesMore = (query, index, pageSize) => ({ type: SEARCH_ARTICLES_MORE, payload: { query, index, pageSize } })\nconst defaultState = {\n didInvalidate: false,\n isFetching: false,\n hasFetched: false,\n hasError: false,\n query: '',\n error: null,\n isEmpty: false\n}\n\nexport const Reducer = (state = defaultState, { type, payload, meta, message }) => {\n switch (type) {\n case SEARCH_ARTICLES_MORE:\n return Object.assign({}, state, {\n didInvalidate: false,\n isLoadingMore: true,\n hasFetched: true,\n hasError: false,\n isEmpty: false\n })\n case SEARCH_ARTICLES:\n return Object.assign({}, state, {\n didInvalidate: false,\n isFetching: true,\n isLoadingMore: false,\n hasFetched: false,\n hasError: false,\n query: payload.query,\n error: null,\n isEmpty: false\n })\n case SEARCH_ARTICLES_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n error: payload.message,\n hasFetched: false,\n isFetching: false,\n isLoadingMore: false,\n didInvalidate: true,\n query: payload.query,\n isEmpty: false\n })\n case SEARCH_ARTICLES_EMPTY:\n return Object.assign({}, state, {\n hasError: false,\n hasFetched: true,\n isFetching: false,\n isLoadingMore: false,\n didInvalidate: true,\n query: payload.query,\n isEmpty: true\n })\n case SEARCH_ARTICLES_SUCCESS:\n return Object.assign({}, state, {\n hasFetched: true,\n isFetching: false,\n isLoadingMore: false,\n didInvalidate: false,\n isEmpty: false,\n query: payload.query,\n articles: payload.articles,\n hasMore: payload.hasMore,\n lastFetch: payload.lastFetch\n })\n case SEARCH_ARTICLES_MORE_SUCCESS:\n return Object.assign({}, state, {\n hasFetched: true,\n isLoadingMore: false,\n didInvalidate: false,\n isEmpty: false,\n query: payload.query,\n articles: payload.articles,\n hasMore: payload.hasMore,\n lastFetch: payload.lastFetch\n })\n case SEARCH_ARTICLES_MORE_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n error: payload.message,\n hasFetched: true,\n isLoadingMore: false,\n didInvalidate: true,\n query: payload.query,\n isEmpty: false\n })\n default:\n return state\n }\n}\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\n\nclass ScrollToTop extends Component {\n componentDidUpdate(prevProps) {\n if (this.props.location !== prevProps.location) {\n if (typeof window !== 'undefined') {\n window.scrollTo(0, 0);\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n}\n\nexport default withRouter(ScrollToTop);","import axios from 'axios'\nimport { call, put, takeEvery } from 'redux-saga/effects'\nimport Cache from 'ion-cache'\n\nexport const FETCH_WEATHER = 'api/FETCH_WEATHER'\nexport const FETCH_WEATHER_SUCCESS = 'api/FETCH_WEATHER_SUCCESS'\nexport const FETCH_WEATHER_ERROR = 'api/FETCH_WEATHER_ERROR'\n\nconst WEATHER_SERVER_URL = typeof window !== 'undefined' ? '' : 'http://localhost:' + process.env.PORT\nconst cache = new Cache()\nconst key = '/weather/'\n\nasync function fetchWeatherAPI () {\n const result = await cache.get(key)\n if (result) {\n return result\n }\n return axios.get(WEATHER_SERVER_URL + '/data/weather/cape-town')\n .then(response => {\n return response.data[0]\n })\n .catch(err => {\n // console.error(err)\n throw err\n })\n}\n\nfunction * fetchWeatherSaga () {\n try {\n const res = yield call(fetchWeatherAPI)\n cache.set(key, res)\n yield put({ type: FETCH_WEATHER_SUCCESS, payload: res })\n } catch (e) {\n yield put({ type: FETCH_WEATHER_ERROR, payload: e.message })\n }\n}\n\nexport function * watchFetchWeather () {\n yield takeEvery(FETCH_WEATHER, fetchWeatherSaga)\n}\n\n// Saga actions\nexport const fetchWeather = () => ({ type: FETCH_WEATHER, payload: {} })\n\nexport const Reducer = (state = {}, { type, payload }) => {\n switch (type) {\n case FETCH_WEATHER:\n // Do not update the state\n return state\n case FETCH_WEATHER_ERROR:\n return Object.assign({}, state, {\n isFetching: false,\n hasFetched: false,\n hasError: true,\n message: payload\n })\n case FETCH_WEATHER_SUCCESS:\n return Object.assign({}, state, {\n isFetching: false,\n hasFetched: true,\n hasError: false,\n weather: payload\n })\n default:\n return state\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Facebook = function Facebook(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 61 61\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#FFFFFF\",\n d: \"M56.9911152,0.666667333 C57.9075815,0.666667333 58.6931231,0.992188333 59.3477423,1.643228 C60.0023614,2.29427 60.329671,3.07552133 60.329671,3.98697967 L60.329671,57.3463533 C60.329671,58.2578117 60.0023614,59.039063 59.3477423,59.690105 C58.6931231,60.341147 57.9075815,60.6666657 56.9911152,60.6666657 L41.6337575,60.6666657 L41.6337575,37.4244793 L49.4499057,37.4244793 L50.6282193,28.3619783 L41.6337575,28.3619783 L41.6337575,22.5807297 C41.6337575,21.1223963 41.9414275,20.0286463 42.5567697,19.2994797 C43.1721118,18.570313 44.3700627,18.2057297 46.1506269,18.2057297 L50.9424373,18.1666673 L50.9424373,10.0807293 C49.2927979,9.84635533 46.9623539,9.729166 43.9511077,9.729166 C40.3899816,9.729166 37.542389,10.7708337 35.4083322,12.8541667 C33.2742753,14.9374997 32.2072469,17.8802087 32.2072469,21.6822913 L32.2072469,28.3619783 L24.3518194,28.3619783 L24.3518194,37.4244793 L32.2072469,37.4244793 L32.2072469,60.6666657 L3.33855581,60.6666657 C2.42208946,60.6666657 1.63654788,60.341147 0.981928731,59.690105 C0.327309577,59.039063 0,58.2578117 0,57.3463533 L0,3.98697967 C0,3.07552133 0.327309577,2.29427 0.981928731,1.643228 C1.63654788,0.992188333 2.42208946,0.666667333 3.33855581,0.666667333 L56.9911152,0.666667333 Z\"\n }));\n};\n\nvar _default = Facebook;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar TimeClock = function TimeClock(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 12 12\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"g\", {\n id: \"Page-1\",\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \"0.9\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"g\", {\n id: \"md-time\",\n fill: \"#000000\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"M5.99423077,0 C2.68269231,0 0,2.68846154 0,6 C0,9.31153846 2.68269231,12 5.99423077,12 C9.31153846,12 12,9.31153846 12,6 C12,2.68846154 9.31153846,0 5.99423077,0 Z M6,10.8 C3.34903846,10.8 1.2,8.65096154 1.2,6 C1.2,3.34903846 3.34903846,1.2 6,1.2 C8.65096154,1.2 10.8,3.34903846 10.8,6 C10.8,8.65096154 8.65096154,10.8 6,10.8 Z\",\n id: \"Shape\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"polygon\", {\n id: \"Path\",\n points: \"6.3 3 5.4 3 5.4 6.6 8.55 8.48942308 9 7.75096154 6.3 6.15\"\n }))));\n};\n\nvar _default = TimeClock;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isEmpty = isEmpty;\nexports.processError = processError;\nexports[\"default\"] = void 0;\n\nvar _axios = _interopRequireDefault(require(\"axios\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction isEmpty(value) {\n return value === undefined || value === null || _typeof(value) === 'object' && Object.keys(value).length === 0 || typeof value === 'string' && value.trim().length === 0;\n}\n\nfunction processError(res, error) {\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(error.response.data);\n console.log(error.response.status);\n console.log(error.response.headers);\n res.status(error.response.status).send(error.response.data);\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log('Server Error:', error.message);\n res.status(502).send(error.message);\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log('Error', error.message);\n res.status(500).send(error.message);\n }\n\n console.log(error.config);\n}\n/**\n * Processes the params and POSTs to ION Analytics \n * @param {string} eventType - pageView | ping | adRequest | adRender | navigation\n * @param {string} pageType - home | section | article | static\n * @param {string} userId - user id / visitor id\n * @param {string} titleKey - e.g. iol, dvd, glam\n * @param {string} sessionId - session id\n * @param {string} locationUrl - url\n * @param {object} eventData - Event-type specific additional data - author, section, clickWidget, desinationUrl, referrerUrl, scrollDepth, ad {}\n * @returns {promise<response>}\n */\n\n\nvar postAnalytics = function postAnalytics(eventType, pageType, userId, titleKey, sessionId, locationUrl, eventData) {\n var timestamp = new Date().toISOString();\n var screenWidth = 0;\n var screenHeight = 0;\n var browser = 'unknown';\n\n if (typeof window !== 'undefined') {\n screenWidth = window.outerWidth;\n screenHeight = window.outerHeight;\n\n if (navigator.userAgent.indexOf('Chrome') != -1) {\n browser = 'Google Chrome';\n } else if (navigator.userAgent.indexOf('Safari') != -1) {\n browser = 'Safari';\n } else if (navigator.userAgent.indexOf('Firefox') != -1) {\n browser = 'Mozilla Firefox';\n } else if (navigator.userAgent.indexOf('MSIE') != -1 || navigator.userAgent.indexOf('Trident/') != -1) {\n browser = 'Internet Explorer';\n } else if (navigator.userAgent.indexOf('Edge') != -1) {\n browser = 'Microsoft Edge';\n }\n }\n\n var _eventData = Object.assign({\n eventType: eventType,\n pageType: pageType,\n userId: userId,\n titleKey: titleKey,\n sessionId: sessionId,\n locationUrl: locationUrl,\n timestamp: timestamp,\n screenWidth: screenWidth,\n screenHeight: screenHeight,\n browser: browser\n }, eventData);\n\n return _axios[\"default\"].post(process.env.RAZZLE_POST_ANALYTICS_SERVICE, JSON.stringify(_eventData), {\n headers: {\n 'Content-Type': 'text/plain'\n }\n })[\"catch\"](function (error) {\n console.error('pageView event error:', error.message);\n throw error;\n });\n};\n\nvar _default = postAnalytics;\nexports[\"default\"] = _default;","import { combineReducers } from 'redux'\nimport { Reducer as articles } from './articles'\nimport { Reducer as mostReadArticles } from './mostReadArticles'\nimport { Reducer as article } from './article'\nimport { Reducer as navPath } from 'ion-navchevron'\nimport { Reducer as app } from './app'\nimport { Reducer as staticPage } from './staticPage'\nimport { Reducer as feedback } from './feedback'\nimport { Reducer as subscribe } from './subscribe'\nimport { Reducer as search } from './search'\nimport { Reducer as magazineCover } from './magazineCover'\nimport { Reducer as editorsChoice } from './editorsChoice'\nimport { Reducer as weather } from './weather'\nimport { Reducer as user } from './user'\nimport { Reducer as authors } from './authors'\nimport { Reducer as author } from './author'\n\nexport default combineReducers({\n article,\n articles,\n mostReadArticles,\n navPath,\n app,\n staticPage,\n feedback,\n subscribe,\n search,\n magazineCover,\n editorsChoice,\n weather,\n user,\n authors,\n author\n})\n","module.exports = \"data:image/png;base64,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\"","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.NavLink = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _redux = require(\"redux\");\n\nvar _reactRouter = require(\"react-router\");\n\nvar _reactRouterDom = require(\"react-router-dom\");\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _navPath = require(\"./navPath\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nclass NavLink extends _react.Component {\n constructor() {\n super();\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n this.props.navigateTo(this.props.to);\n this.props.updateNavPath('/');\n }\n\n render() {\n let props = {};\n Object.keys(this.props).map(key => {\n if (/^[a-z]+$/g.test(key)) {\n props[key] = this.props[key];\n }\n });\n\n if (this.props.className) {\n props.className = this.props.className;\n }\n\n return /*#__PURE__*/_react.default.createElement(_reactRouterDom.NavLink, _extends({\n onClick: this.handleClick\n }, props));\n }\n\n}\n\nexports.NavLink = NavLink;\n\nconst mapStateToProps = state => state.navPath;\n\nconst mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({\n updateNavPath: _navPath.updateNavPath,\n navigateTo: _navPath.navigateTo\n}, dispatch);\n\nvar _default = (0, _reactRouter.withRouter)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(NavLink));\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Twitter = function Twitter(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n width: props.width,\n height: props.height,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"g\", null, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"M13.9871 10.1633L22.7251 0.00616455H20.6545L13.0673 8.82547L7.00749 0.00616455H0.0181885L9.18185 13.3425L0.0181885 23.9938H2.08892L10.1011 14.6804L16.5008 23.9938H23.4901L13.9866 10.1633H13.9871ZM11.151 13.46L10.2225 12.132L2.83503 1.56498H6.01555L11.9773 10.0929L12.9058 11.4209L20.6554 22.5059H17.4749L11.151 13.4605V13.46Z\",\n fill: props.fill\n })));\n};\n\nvar _default = Twitter;\nexports[\"default\"] = _default;","import React from 'react'\nimport { NavLink } from 'ion-navchevron'\nimport 'semantic-ui-css/components/menu.min.css'\nimport { Facebook, Twitter, Instagram, Close, Search } from 'ion-icon'\n\nconst NavMenu = ({ toggleMenu }) => (\n // eslint-disable-next-line\n <nav role='navigation'>\n <button className='close-btn' onClick={toggleMenu}><Close width='20' height='20' /></button>\n <ul className='menu-social'>\n <li>\n <a href={process.env.RAZZLE_SITE_FACEBOOK} target='_blank' rel='noopener noreferrer' title='Like Daily Voice on Facebook'>\n <Facebook width='30' height='30' />\n </a>\n </li>\n <li>\n <a href={process.env.RAZZLE_SITE_TWITTER} target='_blank' rel='noopener noreferrer' title='Follow Daily Voice on Twitter'>\n <Twitter width='30' height='30' fill='white' />\n </a>\n </li>\n <li>\n <a href={process.env.RAZZLE_SITE_INSTAGRAM} target='_blank' rel='noopener noreferrer' title='Follow GQ on Instagram'>\n <Instagram width='30' height='30' />\n </a>\n </li>\n </ul>\n <div className='mobile-nav-search'>\n <form action='/search' method='get'>\n <input type='search' placeholder='Search Daily Voice' name='q' id='q' />\n <button><Search width='20' height='20' /></button>\n </form>\n </div>\n <ul className='main-nav'>\n <li>\n <NavLink to='/news'>News</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/news/western-cape'>Western Cape</NavLink>\n </li>\n <li>\n <NavLink to='/news/national'>National</NavLink>\n </li>\n <li>\n <NavLink to='/news/international'>International</NavLink>\n </li>\n <li>\n <NavLink to='/news/business'>Business</NavLink>\n </li>\n <li>\n <NavLink to='/news/politics'>Politics</NavLink>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/sport'>Sport</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/sport/highlights'>Highlights</NavLink>\n </li>\n <li>\n <NavLink to='/sport/cricket'>Cricket</NavLink>\n </li>\n <li>\n <NavLink to='/sport/rugby'>Rugby</NavLink>\n </li>\n <li>\n <NavLink to='/sport/soccer'>Soccer</NavLink>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment'>Lifestyle & Entertainment</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/lifestyle-entertainment/celebrity'>Celebrity</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/entertainment'>Entertainment</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/cape-spy'>Cape Spy</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/cinema'>Cinema</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/gadget-games'>Gadget & Games</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/tonight'>Tonight</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/recipes'>Recipes</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/lifestyle'>Lifestyle</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/travel'>Travel</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/parenting'>Parenting</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/health-beauty'>Health & Beauty</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/horoscope'>Horoscope</NavLink>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment/photo-of-the-day'>Photo of the Day</NavLink>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/multimedia'>Multimedia</NavLink>\n </li>\n <li>\n <NavLink to='/opinion'>Opinion</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/opinion/sport'>Sport</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/opinion/sport/dudley-carstens'>Dudley Carstens</NavLink>\n </li>\n <li>\n <NavLink to='/opinion/sport/matthew-marcus'>Matthew Marcus</NavLink>\n </li>\n <li>\n <NavLink to='/opinion/sport/nick-feinberg'>Nick Feinberg</NavLink>\n </li>\n <li>\n <NavLink to='/opinion/sport/julia-stuart'>Julia Stuart</NavLink>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/opinion/motoring'>Motoring</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/opinion/motoring/bobby-nitro'>Bobby Nitro</NavLink>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/opinion/current-affairs'>Current Affairs</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/opinion/current-affairs/bobby-brown'>Bobby Brown</NavLink>\n </li>\n <li>\n <NavLink to='/opinion/current-affairs/munier-grootbek'>Munier Grootbek</NavLink>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/opinion/lifestyle'>Lifestyle</NavLink>\n <ul className='sub-nav'>\n <li>\n <NavLink to='/opinion/lifestyle/cooksisters'>Cooksisters</NavLink>\n </li>\n <li>\n <NavLink to='/opinion/lifestyle/waseef-piekaan'>Waseef Piekaan</NavLink>\n </li>\n <li>\n <NavLink to='/opinion/lifestyle/auntie-pearl'>Auntie Pearl</NavLink>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/competitions'>Competitions</NavLink>\n </li>\n <li>\n <NavLink to='/weather'>Weather</NavLink>\n </li>\n <li>\n <NavLink to='/contact-us'>Contact</NavLink>\n </li>\n </ul>\n </nav>)\n\nexport default NavMenu\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Rss = function Rss(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 16 16\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\",\n transform: \"translate(-4 -4)\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"polygon\", {\n points: \"0 0 24 0 24 24 0 24\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"circle\", {\n cx: \"6.18\",\n cy: \"17.82\",\n r: \"2.18\",\n fill: \"#FFFFFF\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#FFFFFF\",\n fillRule: \"nonzero\",\n d: \"M4,4.44 L4,7.27 C11.03,7.27 16.73,12.97 16.73,20 L19.56,20 C19.56,11.41 12.59,4.44 4,4.44 Z M4,10.1 L4,12.93 C7.9,12.93 11.07,16.1 11.07,20 L13.9,20 C13.9,14.53 9.47,10.1 4,10.1 Z\"\n })));\n};\n\nvar _default = Rss;\nexports[\"default\"] = _default;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABI1BMVEXZICfZHiXZHSTZHybZHibZHifeNzrhR0ncKy3hTE7eNyPeMhjeMyjhSkzbIybaGh3aGx/aGx7aGh7aHiLZHCPmY2T1zc3oeXnxy8nngFvsh1bkX03npaTeSEjmYWHgR0fiT1DkVVbcJSjfODr31NP10tHv0dD01tbzzs/yvb3xysjyw8HtvLzlion019fyz87iX2HZICbbHyLxqaj58/PlkJD20tL0zcztvbz01NPywsHyurroh4f02tnosbDbUVPcJijrl5XuyMfbgYDGjIvJoaC+dHPLm5rGe3rHoaDQk5LttbPrwb/dSUvcKCzpdXbshIXcdnbAWFrFXV6+VljIYGHFXl/BWFnPZ2nrg4TqgIHfPD/ZHSPbHiXaHiXaHiT///9cBn1+AAAAAWJLR0Rgxbd8EAAAAAd0SU1FB+EJHQomIqWGyKIAAACOSURBVBjTY2CgBmBkYmZiYWVmYobymdnYOTi5uHl4+fgFBIWEGRhERMXEJSSlpGVk5eQVFJWYGRiVVVTV1DU0tbR1dPX0DUQYDI2MTUzNzC0sraxtbO3smRiYHRydnF1c3dw9PL28fXyBAn7+AYFBwSGhYeERkVHRjAwMhjEiTLFxsXFxsfEiIswU+QAGAOZmE+kDrfSHAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTI5VDEwOjM4OjM0KzAyOjAwD1dOswAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0yOVQxMDozODozNCswMjowMH4K9g8AAABXelRYdFJhdyBwcm9maWxlIHR5cGUgaXB0YwAAeJzj8gwIcVYoKMpPy8xJ5VIAAyMLLmMLEyMTS5MUAxMgRIA0w2QDI7NUIMvY1MjEzMQcxAfLgEigSi4A6hcRdPJCNZUAAAAASUVORK5CYII=\"","import React, { useState, useEffect } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { useLocation } from 'react-router-dom'\nimport useHasMounted from './useHasMounted'\nimport { adSlotRegistered as handleAdSlotRegistered } from '../../store/app'\nimport IonAd from 'ion-ads'\n\nconst Ad = (props) => {\n const location = useLocation()\n const [path, setPath] = useState(location.pathname)\n const pathname = location.pathname\n const hasHydrated = useHasMounted()\n useEffect(() => {\n if (location.pathname !== path) {\n setPath(location.pathname)\n }\n }, [pathname])\n if (path !== pathname || !hasHydrated) {\n return null\n }\n return (\n <IonAd\n className={props.className}\n isConnected={props.isConnected}\n path={`/${process.env.RAZZLE_DFP_CODE}${props.adPath || (path === '/' ? '/homepage' : path)}`}\n slotId={props.slotId}\n refreshTime={30}\n targeting={props.targeting}\n onSlotRenderEnded={props.onSlotRenderEnded}\n collapseEmptyDiv={props.collapseEmptyDiv} {...props}\n onAdSlotRegistered={props.handleAdSlotRegistered}\n {...props}\n />\n )\n}\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ handleAdSlotRegistered }, dispatch)\n\nexport default connect((state) => ({ app: state.app }), mapDispatchToProps)(Ad)\n","module.exports = __webpack_public_path__ + \"static/media/daily-voice.9e94b949.jpg\";","import axios from 'axios'\nimport { call, put, takeLatest, select, delay } from 'redux-saga/effects'\n\nexport const USER_LOGIN = 'api/USER_LOGIN'\nexport const USER_LOGIN_SUCCESS = 'api/USER_LOGIN_SUCCESS'\nexport const USER_LOGIN_ERROR = 'api/USER_LOGIN_ERROR'\n\nexport const USER_REGISTER = 'api/USER_REGISTER'\nexport const USER_REGISTER_SUCCESS = 'api/USER_REGISTER_SUCCESS'\nexport const USER_REGISTER_ERROR = 'api/USER_REGISTER_ERROR'\n\nexport const USER_LOGOUT = 'api/USER_LOGOUT'\nexport const USER_LOGOUT_SUCCESS = 'api/USER_LOGOUT_SUCCESS'\n\nexport const USER_SET_VISITORID = 'api/USER_SET_VISITORID'\nexport const USER_VERIFY = 'api/USER_VERIFY'\n\nconst SERVER_URL = process.env.RAZZLE_USER\n\nfunction attemptLogin (username, password) {\n return axios.post(SERVER_URL + 'login/' + process.env.RAZZLE_TITLE_KEY, JSON.stringify({ username, password }), {\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then(response => response.data)\n .catch(error => {\n console.error('attemptLogin:', error.message)\n throw error\n })\n}\n\nfunction attemptRegister (name, username, password) {\n console.log('attemptRegister', JSON.stringify({ nickname: name, username, password }), 'to', SERVER_URL + 'register/' + process.env.RAZZLE_TITLE_KEY)\n return axios.post(SERVER_URL + 'register/' + process.env.RAZZLE_TITLE_KEY, JSON.stringify({ nickname: name, username, password }), {\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then(response => response.data)\n .catch(error => {\n throw error\n })\n}\n\nfunction verifyToken (token) {\n return axios.post(SERVER_URL + 'verify', token, {\n headers: {\n 'Content-Type': 'text/plain'\n }\n })\n .then(response => response.data)\n .catch(error => {\n console.error('verifyToken:', error.message)\n throw error\n })\n}\n\nexport function * watchVerifyToken () {\n // eslint-disable-next-line no-unmodified-loop-condition\n while (typeof window !== 'undefined') { // NOSONAR\n yield call(verifyTokenSaga)\n yield delay(600000)\n }\n}\n\nfunction * verifyTokenSaga () {\n const token = yield select(getUserToken)\n try {\n if (token) {\n yield call(verifyToken, token)\n }\n } catch (e) {\n yield put({ type: USER_LOGOUT })\n }\n}\n\nexport function * watchUserLogout () {\n yield takeLatest(USER_LOGOUT, userLogoutSaga)\n}\n\nfunction * userLogoutSaga ({ username, password }) {\n if (window.localStorage) {\n window.localStorage.removeItem('token')\n }\n yield put({ type: USER_LOGOUT_SUCCESS })\n}\n\nexport function * watchUserLogin () {\n yield takeLatest(USER_LOGIN, userLoginSaga)\n}\n\nfunction * userLoginSaga ({ username, password }) {\n try {\n const token = yield call(attemptLogin, username, password)\n if (window.localStorage) {\n window.localStorage.setItem('token', token)\n }\n yield put({ type: USER_LOGIN_SUCCESS, payload: token })\n } catch (e) {\n if (e.response && e.response.status === 404) {\n yield put({ type: USER_LOGIN_ERROR, payload: e.message })\n } else {\n console.error('ERROR userLoginSaga', e)\n yield put({ type: USER_LOGIN_ERROR, payload: e.response.data })\n }\n }\n}\n\nexport function * watchUserRegister () {\n yield takeLatest(USER_REGISTER, userRegisterSaga)\n}\n\nfunction * userRegisterSaga ({ name, username, password }) {\n try {\n yield call(attemptRegister, name, username, password)\n yield put({ type: USER_REGISTER_SUCCESS })\n } catch (e) {\n if (e.response && e.response.status === 404) {\n yield put({ type: USER_REGISTER_ERROR, payload: e.message })\n } else {\n console.error('ERROR userRegisterSaga', e)\n yield put({ type: USER_REGISTER_ERROR, payload: e.response.data })\n }\n }\n}\n\n// Saga actions\nexport const userLogin = (username, password) => ({ type: USER_LOGIN, username, password })\nexport const userLogout = () => ({ type: USER_LOGOUT })\nexport const userRegister = (name, username, password) => ({ type: USER_REGISTER, name, username, password })\n\n// Saga selectors\nexport const getUserToken = (state) => state.user.userToken\n\nexport const initialState = {\n userToken: false\n}\n\nexport const Reducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case USER_LOGIN_SUCCESS:\n return Object.assign({}, state, {\n userToken: payload\n })\n case USER_LOGOUT_SUCCESS:\n return Object.assign({}, state, {\n userToken: false\n })\n case USER_REGISTER_SUCCESS:\n return Object.assign({}, state, {\n registerSuccess: true\n })\n case USER_REGISTER_ERROR:\n return Object.assign({}, state, {\n registerError: payload\n })\n case USER_SET_VISITORID:\n console.log('USER_SET_VISITORID', payload)\n return Object.assign({}, state, {\n visitorId: payload\n })\n default:\n return state\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.url2section = url2section;\nexports.articleUrl2section = articleUrl2section;\nexports.getSectionLabel = getSectionLabel;\nexports.getBaseSectionLabel = getBaseSectionLabel;\n\n/**\n * Formats an url to a section\n * @example\n * // returns \"news/south-africa\"\n * url2section(\"/news/south-africa/\")\n * @param {string} url\n */\nfunction url2section(url) {\n return url.replace(/^\\//, '').replace(/\\/$/, '');\n}\n\n/**\n * Formats an article url to a section\n * @example\n * // returns \"news/south-africa\"\n * url2section(\"/news/south-africa/zuma-must-fall-1235576\")\n * @param {string} url\n */\nfunction articleUrl2section(url) {\n return url.replace(/^\\//, '').replace(/\\/[^\\/]*$/, '');\n}\n\n/**\n * Formats the current section in a human readable way\n * @example\n * // returns \"South Africa\"\n * getSectionLabel(\"news/south-africa\")\n * @param {string} sectionId\n */\nfunction getSectionLabel(sectionId) {\n var section = sectionId.split('/').pop(); // Grab only the last section\n return toTitleCase(section.replace(/-/g, ' ').toLowerCase());\n}\n\n/**\n * Formats the first segment of the current path in a human readable way\n * @example\n * // returns \"News\"\n * getBaseSectionLabel(\"news/south-africa\")\n * @param {string} urlPath\n */\nfunction getBaseSectionLabel(urlPath) {\n var section = urlPath.split('/')[0]; // Grab only the first segment of the section\n return toTitleCase(section.replace('-', ' ').toLowerCase());\n}\n\n// Shamelessly ripped from \n// https://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript\nfunction toTitleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n}","import axios from 'axios'\nimport { call, put, select, takeLatest, takeEvery } from 'redux-saga/effects'\n// import { fetchArticleContent } from '../store/article'\nimport Cache from 'ion-cache'\n\nexport const FETCH_ARTICLES = 'api/FETCH_ARTICLES'\nexport const FETCH_ARTICLES_SUCCESS = 'api/FETCH_ARTICLES_SUCCESS'\nexport const FETCH_ARTICLES_ERROR = 'api/FETCH_ARTICLES_ERROR'\n\nexport const FETCH_MORE_ARTICLES = 'api/FETCH_MORE_ARTICLES'\nexport const FETCH_MORE_ARTICLES_SUCCESS = 'api/FETCH_MORE_ARTICLES_SUCCESS'\nexport const FETCH_MORE_ARTICLES_ERROR = 'api/FETCH_MORE_ARTICLES_ERROR'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '/data/content' : process.env.RAZZLE_CONTENT\nconst cache = new Cache()\n\nexport async function fetchArticlesReadCount (contentKeys) {\n return axios.get(process.env.RAZZLE_ARTICLE_READS_COUNT + contentKeys.join(','))\n .then((response) => Promise.resolve(response.data))\n .catch(err => {\n console.error(err)\n throw err\n })\n}\n\nexport async function fetchArticlesAPI (section, offset, limit) {\n if (offset === 0) {\n const result = await cache.get(section)\n if (result && result.contents && result.contents.length >= limit) {\n // console.log('fetchArticlesAPI', 'HIT', section, limit)\n result.contents = result.contents.slice(0, limit)\n return result\n }\n limit = Math.max(10, limit)\n }\n // console.log('Fetching', SERVER_URL + '/v3/section/' + process.env.RAZZLE_TITLE_KEY + '/' + offset + '/' + limit + '/' + section)\n return axios.get(SERVER_URL + '/v3/section/' + process.env.RAZZLE_TITLE_KEY + '/' + offset + '/' + limit + '/' + section)\n .then(response => {\n if (offset === 0) {\n return cache.set(section, response.data)\n } else {\n return Promise.resolve(response.data)\n }\n })\n .catch(err => {\n throw err\n })\n}\n\nfunction * fetchArticlesSaga ({ section, offset, limit }) {\n try {\n // const start = new Date()\n const res = yield call(fetchArticlesAPI, section, offset, limit + 1)\n // console.log('Fetched', section, offset, limit, 'articles in', new Date() - start, 'ms')\n let payload = { }\n if (res.contents) {\n const tempSectionLabel = res.sectionsLabels[0].label.split('/').length > 1 ? res.sectionsLabels[0].label.split('/')[1] : res.sectionsLabels[0].label.split('/')[0]\n const sectionLabel = tempSectionLabel.replace('-', ' ')\n payload = {\n lastFetch: new Date(),\n sectionLabel,\n hasMore: res.contents.length > limit,\n articles: res.contents.slice(0, limit),\n authorName: res['author-name'] ? res['author-name'] : null\n }\n let readCounts = []\n try {\n readCounts = yield call(fetchArticlesReadCount, payload.articles.map(article => article.contentKey))\n } catch (e) {\n // Ignore errors\n console.log('Unable to fetch read counts for', section, 'error', e)\n }\n payload.articles = payload.articles.map((article) => {\n const result = article\n result.readCount = readCounts[article.contentKey] || 0\n return result\n })\n }\n yield put({ type: FETCH_ARTICLES_SUCCESS, payload, section })\n } catch (e) {\n console.error('ERROR while fetching section', section, 'json:', e.message)\n yield put({ type: FETCH_ARTICLES_ERROR, payload: { section, message: e.message } })\n }\n}\n\nfunction * fetchMoreArticlesSaga ({ section, offset, limit }) {\n try {\n // console.log('fetchMoreArticlesSaga')\n let data = yield select(getArticles, section)\n if (data.articles.length < offset + limit) {\n const res = yield call(fetchArticlesAPI, section, data.articles.length, limit + 1)\n data = {\n section,\n hasMore: res.contents.length > limit,\n sectionLabel: res.sectionLabel,\n articles: data.articles.concat(res.contents.slice(0, limit))\n }\n } else {\n data = {\n section,\n hasMore: true,\n articles: data.articles\n }\n }\n yield put({ type: FETCH_MORE_ARTICLES_SUCCESS, payload: data })\n } catch (e) {\n console.error('ERROR while fetching section', section, 'json:', e.message)\n yield put({ type: FETCH_MORE_ARTICLES_ERROR, payload: { section, message: e.message } })\n }\n}\n\n// function * prefetchArticles ({payload}) {\n// if (payload.articles) {\n// for (let i = 0; i < payload.articles.length; i++) {\n// yield put(fetchArticleContent(payload.articles[i].contentKey))\n// }\n// }\n// }\n\nexport function * watchFetchArticles () {\n yield takeEvery(FETCH_ARTICLES, fetchArticlesSaga)\n yield takeLatest(FETCH_MORE_ARTICLES, fetchMoreArticlesSaga)\n // if (typeof window !== 'undefined') {\n // yield takeEvery(FETCH_ARTICLES_SUCCESS, prefetchArticles)\n // }\n}\n\n// Saga actions\nexport const getArticles = (state, section) => state.articles[section]\nexport const getAllArticles = (state, section) => state.articles\nexport const fetchArticles = (section, offset, limit) => ({ type: FETCH_ARTICLES, section, offset, limit })\nexport const fetchMoreArticles = (section, offset, limit) => ({ type: FETCH_MORE_ARTICLES, section, offset, limit })\n\nexport const Reducer = (state = {}, { type, payload, meta, section, message }) => {\n const newPayload = {}\n\n switch (type) {\n case FETCH_MORE_ARTICLES:\n case FETCH_ARTICLES:\n newPayload[section] = Object.assign({}, state[section], {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n hasError: false,\n error: null\n })\n return Object.assign({}, state, newPayload)\n case FETCH_ARTICLES_ERROR:\n case FETCH_MORE_ARTICLES_ERROR:\n console.log('Proccessing ERROR', type, payload, meta, section, message)\n newPayload[section] = {\n hasError: true,\n error: message,\n hasFetched: true,\n isFetching: false,\n didInvalidate: true\n }\n return Object.assign({}, state, newPayload)\n case FETCH_MORE_ARTICLES_SUCCESS:\n newPayload[payload.section] = {\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n articles: payload.articles,\n hasMore: payload.hasMore,\n lastFetch: payload.lastFetch,\n authorName: payload.authorName,\n sectionLabel: payload.sectionLabel\n }\n return Object.assign({}, state, newPayload)\n case FETCH_ARTICLES_SUCCESS:\n newPayload[section] = {\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n articles: payload.articles,\n hasMore: payload.hasMore,\n lastFetch: payload.lastFetch,\n authorName: payload.authorName,\n sectionLabel: payload.sectionLabel\n }\n return Object.assign({}, state, newPayload)\n default:\n return state\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar LinkedIn = function LinkedIn(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 26 25\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#FFFFFF\",\n d: \"M86.0117188,31.9309903 L89.9218745,31.9309903 L89.9218745,20.6354167 L86.0117188,20.6354167 L86.0117188,31.9309903 Z M90.1757817,17.1523439 C90.1644967,16.5881079 89.9613715,16.1215278 89.5664062,15.7526044 C89.171441,15.3836801 88.6467016,15.1992184 87.9921871,15.1992184 C87.3376737,15.1992184 86.8044703,15.3836801 86.392578,15.7526044 C85.9806858,16.1215278 85.7747396,16.5881079 85.7747396,17.1523439 C85.7747396,17.7057289 85.9750438,18.1695966 86.375651,18.5439449 C86.7762583,18.9182942 87.2981767,19.1054684 87.9414061,19.1054684 L87.9583331,19.1054684 C88.6241316,19.1054684 89.160156,18.9182942 89.5664062,18.5439449 C89.9726565,18.1695966 90.1757817,17.7057289 90.1757817,17.1523439 Z M100.078125,31.9309903 L103.988281,31.9309903 L103.988281,25.453125 C103.988281,23.782118 103.576389,22.5180123 102.752604,21.6608078 C101.928819,20.8036024 100.839843,20.3750001 99.4856771,20.3750001 C97.950955,20.3750001 96.7717012,21.009766 95.9479167,22.2792967 L95.9817707,22.2792967 L95.9817707,20.6354167 L92.071615,20.6354167 C92.105469,21.3515624 92.105469,25.1167536 92.071615,31.9309903 L95.9817707,31.9309903 L95.9817707,25.6158857 C95.9817707,25.2035594 96.0212677,24.89974 96.1002598,24.7044273 C96.2695309,24.324653 96.523437,24.0018451 96.8619793,23.7360026 C97.2005205,23.470161 97.6180558,23.3372398 98.1145832,23.3372398 C99.4236111,23.3372398 100.078125,24.1890193 100.078125,25.8925782 L100.078125,31.9309903 Z M108,15.6874996 L108,31.3125004 C108,32.6037331 107.523221,33.7077916 106.569661,34.624675 C105.616102,35.5415583 104.467882,36 103.125,36 L86.8750004,36 C85.5321184,36 84.3838977,35.5415583 83.430339,34.624675 C82.4767793,33.7077916 82,32.6037331 82,31.3125004 L82,15.6874996 C82,14.3962669 82.4767793,13.2922094 83.430339,12.375325 C84.3838977,11.4584417 85.5321184,11 86.8750004,11 L103.125,11 C104.467882,11 105.616102,11.4584417 106.569661,12.375325 C107.523221,13.2922094 108,14.3962669 108,15.6874996 Z\",\n transform: \"translate(-82 -11)\"\n }));\n};\n\nvar _default = LinkedIn;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseSectionName = parseSectionName;\nexports.parseArticleData = parseArticleData;\nexports.getHeadline = getHeadline;\nexports.getSummaryData = getSummaryData;\n\nvar _BaobabParagraphs = require(\"./BaobabParagraphs\");\n\nvar _ionUtil = require(\"ion-util\");\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction parseSectionName(_x) {\n return _parseSectionName.apply(this, arguments);\n}\n\nfunction _parseSectionName() {\n _parseSectionName = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(label) {\n var name;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n name = label.replace(/\\s+- Web\\s*$/, '').replace(/^IOL - /, '');\n return _context.abrupt(\"return\", name.toLowerCase().replace(/'/g, '').replace(/-web\\s*$/, '').replace(/^iol-/, '').replace(/-+/, '-').replace(/^-+/, '').replace(/-+$/, '').replace(/0027/, ''));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _parseSectionName.apply(this, arguments);\n}\n\nfunction stripCharacters(content) {\n return content.replace(/’/g, \"'\").replace(/‘/g, \"'\").replace(/“/g, '\"').replace(/”/g, '\"').replace(/#0027/g, \"'\").replace(/𺊌/g, \"\\\"\").replace(/𺊍/g, \"\\\"\").replace(/𺊈/g, \"'\").replace(/𺊉/g, \"'\").replace(/𺊖/g, \".\").replace(/嫀/g, \"è\").replace(/嫁/g, \"é\").replace(/嫃/g, \"ë\").replace(/£/g, \"£\").replace(/è/g, \"è\").replace(/é/g, \"é\").replace(/…/g, \"...\").replace(/–/, \"–\");\n}\n\nfunction stripHeadline(headline) {\n if (headline) {\n headline = stripTags(headline);\n headline = headline.replace(/\\s+/g, ' ');\n }\n\n return headline;\n}\n\nfunction stripTags(string) {\n if (string) {\n return string.replace(/<(.|\\n)*?>/g, '');\n }\n}\n\nfunction parseArticleData(_x2) {\n return _parseArticleData.apply(this, arguments);\n}\n\nfunction _parseArticleData() {\n _parseArticleData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(content) {\n var article, headline, _abstract, images, videos, youtubes, bodyHTML, paragraphs, relatedArticles, sourceRelatedArticles;\n\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n article = {};\n article['contentKey'] = content.contentKey;\n\n if (!content.primarySection) {\n _context4.next = 7;\n break;\n }\n\n _context4.next = 5;\n return parseSectionName(content.primarySection.replace(/^[^\\/]+\\//, ''));\n\n case 5:\n article['section'] = _context4.sent;\n article['titleKey'] = content.primarySection.split(/\\//)[0];\n\n case 7:\n headline = getHeadline(content);\n article['headline'] = stripCharacters(headline);\n _abstract = getAbstract(content);\n\n if (_abstract) {\n _abstract = stripCharacters(_abstract);\n article['abstract'] = _abstract.replace(/<!--PSTYLE=WL Web Lead-->/, '').replace(/<!--PSTYLE=HEADLINE-->/, '').replace(/<strong>/, '').replace(/<\\/strong>/, '').replace(/<!--PSTYLE=hed_35H 30pt-->/, '').replace(/<!--PSTYLE=hed_65H 60pt-->/, '').replace(/<!--PSTYLE=hed_95H 30pt-->/, '').replace(/<!--PSTYLE=hed_95H 72pt-->/, '').replace(/<!--PSTYLE=hed_OPED 48pt-->/, '').replace(/<!--PSTYLE=Normal-->/, '').replace(/<p>/, '').replace(/<\\/p>$/, '');\n }\n\n if (content.byLine) {\n article['author'] = stripTags(content.byLine);\n }\n\n article['published'] = formatPublished(content.publishDate);\n images = [];\n videos = [];\n youtubes = [];\n\n if (!content.mediaContainer) {\n _context4.next = 19;\n break;\n }\n\n _context4.next = 19;\n return Promise.all(content.mediaContainer.mediaLists.map( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(media) {\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return Promise.all(media.resources.map( /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(resource) {\n var _resource$imageURL$ma, _resource$imageURL$ma2, url, id, videoObject;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(media.mediaType === 'Image' && resource.imageURL)) {\n _context2.next = 4;\n break;\n }\n\n if (resource.imageURL.match('youtube.com')) {\n _resource$imageURL$ma = resource.imageURL.match(/youtube\\.com\\/vi\\/(.*)$/), _resource$imageURL$ma2 = _slicedToArray(_resource$imageURL$ma, 2), url = _resource$imageURL$ma2[0], id = _resource$imageURL$ma2[1];\n youtubes.push({\n url: resource.imageURL,\n id: id.replace(/\\/default\\.jpg/, '')\n });\n } else {\n images.push(translateImageResource(resource));\n }\n\n _context2.next = 12;\n break;\n\n case 4:\n if (!(media.mediaType === 'Video' && resource.url)) {\n _context2.next = 11;\n break;\n }\n\n _context2.next = 7;\n return translateVideoResource(resource);\n\n case 7:\n videoObject = _context2.sent;\n videos.push(videoObject);\n _context2.next = 12;\n break;\n\n case 11:\n console.warn('resource ', content.contentKey, resource);\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x9) {\n return _ref4.apply(this, arguments);\n };\n }()));\n\n case 2:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x8) {\n return _ref3.apply(this, arguments);\n };\n }()));\n\n case 19:\n if (content.thumbnailURL) {\n images.push({\n url: content.thumbnailURL\n });\n }\n\n if (!(0, _ionUtil.isEmpty)(images)) {\n article['images'] = images;\n }\n\n if (videos.length) {\n article['videos'] = videos;\n }\n\n if (youtubes.length) {\n article['youtubes'] = youtubes;\n }\n\n bodyHTML = getBodyHTML(content);\n bodyHTML = stripCharacters(bodyHTML);\n article['bodyHTML'] = bodyHTML;\n paragraphs = getParagraphs(bodyHTML);\n _context4.next = 29;\n return getBodyLead(paragraphs);\n\n case 29:\n article['bodyLead'] = _context4.sent;\n _context4.next = 32;\n return getBodyMore(paragraphs);\n\n case 32:\n article['bodyMore'] = _context4.sent;\n relatedArticles = [];\n sourceRelatedArticles = content.relatedContent || content.relatedArticles || [];\n\n if (sourceRelatedArticles.length > 0) {\n sourceRelatedArticles.forEach(function (relatedArticle) {\n if (relatedArticle.externalUrl) {\n relatedArticles.push(relatedArticle);\n }\n });\n\n if (relatedArticles.length > 0) {\n article['relatedArticles'] = relatedArticles;\n }\n }\n\n return _context4.abrupt(\"return\", article);\n\n case 37:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n return _parseArticleData.apply(this, arguments);\n}\n\nfunction getAbstract(content) {\n if (content.abstrct) {\n return content.abstrct;\n }\n\n if (content.summaryAbstract) {\n return content.summaryAbstract;\n }\n\n if (content.summaryAbstractHTML) {\n return content.summaryAbstractHTML;\n }\n\n if (content.abstractHTML) {\n return content.abstractHTML;\n }\n\n if (content[\"abstract\"]) {\n content[\"abstract\"];\n }\n\n return '';\n}\n\nfunction getHeadline(content) {\n if (content.headline) {\n return stripHeadline(content.headline);\n }\n\n if (content.summaryHeadline) {\n return stripHeadline(content.summaryHeadline);\n }\n\n if (content.label) {\n return stripHeadline(content.label);\n }\n\n return '';\n}\n\nfunction getParagraphs(html) {\n var fromIndex = 0;\n var paragraphs = [];\n\n while (true) {\n if (html.startsWith('<p')) {\n var index = html.indexOf('</p>');\n\n if (index < 0) {\n paragraphs.push(html + '</p>');\n return paragraphs;\n }\n\n index += 4;\n var paragraph = html.substring(fromIndex, index);\n\n if (paragraph.length) {\n paragraphs.push(paragraph);\n }\n\n html = html.substring(index);\n } else {\n var _index = html.indexOf('<p');\n\n if (_index < 0) {\n paragraphs.push(html);\n return paragraphs;\n } else {\n paragraphs.push(html.substring(fromIndex, _index));\n html = html.substring(_index);\n }\n }\n }\n\n return paragraphs;\n}\n\nfunction checkParagraph(html) {\n if (html.startsWith('<p>')) {\n return html;\n } else {\n var index = html.indexOf('<p>');\n\n if (index < 0) {\n return '<p>' + html + '</p>';\n } else {\n return '<p>' + html.substring(0, index) + '</p>' + html.substring(index);\n }\n }\n}\n\nfunction translateVideoResource(_x3) {\n return _translateVideoResource.apply(this, arguments);\n}\n\nfunction _translateVideoResource() {\n _translateVideoResource = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(resource) {\n var url, videoMediaSrc, urlToArray;\n return regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n url = resource.url;\n _context5.next = 3;\n return Requests.json({\n url: siteProps.videoServiceUrl + url + '&standAlone=true'\n });\n\n case 3:\n videoMediaSrc = _context5.sent;\n urlToArray = url.split('/'); //let initialMediaScripts = videoMediaSrc.match(/(<script)(.*)(<\\/script>)/)[0]\n //let finalMediaScript = videoMediaSrc.match(/<div id.*([^\\n]*\\n+)+(.*)/)[0]\n //const videoMediaScript = initialMediaScripts + '\\n'+ finalMediaScript\n\n return _context5.abrupt(\"return\", {\n id: urlToArray[urlToArray.length - 1],\n url: url,\n thumbnailURL: resource.thumbnailURL,\n script: videoMediaSrc\n });\n\n case 6:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n return _translateVideoResource.apply(this, arguments);\n}\n\nfunction translateImageResource(resource) {\n var _ref = resource.imageURL.match(/^.*\\/(image|media)\\/(.*)$/) || [],\n _ref2 = _slicedToArray(_ref, 3),\n url = _ref2[0],\n type = _ref2[1],\n id = _ref2[2];\n\n if (!id) {\n throw 'Unsupported image URL: ' + resource.imageURL;\n }\n\n var image = {\n id: id,\n url: url\n };\n\n if (resource.caption) {\n image.caption = stripCharacters(resource.caption);\n }\n\n if (resource.imageWidth) {\n image.width = resource.imageWidth;\n image.height = resource.imageHeight;\n\n if (false) {\n // TODO\n image.w = resource.imageWidth;\n image.h = resource.imageHeight;\n }\n\n if (resource.cropWidth) {\n image.crop = {\n w: resource.cropWidth,\n h: resource.cropHeight,\n x: resource.cropOffsetX || 0,\n y: resource.cropOffsetY || 0\n };\n }\n\n if (resource.focalPointX) {\n image.focalPoint = {\n x: resource.focalPointX,\n y: resource.focalPointY\n };\n }\n }\n\n return image;\n}\n\nfunction formatPublished(date) {\n if (date) return new Date(date).toISOString().substring(0, 16);else {\n return '';\n }\n}\n\nfunction getBodyHTML(content) {\n if (content.bodyHTML) {\n return content.bodyHTML;\n } else {\n try {\n return concatBodyElementsHtml(content);\n } catch (err) {\n console.warn(err, content.contentKey);\n throw 'body elements: ' + content.contentKey;\n }\n }\n}\n\nfunction getBodyLead(_x4) {\n return _getBodyLead.apply(this, arguments);\n}\n\nfunction _getBodyLead() {\n _getBodyLead = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(paragraphs) {\n var body;\n return regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n body = (0, _BaobabParagraphs.formatHtml)(paragraphs.slice(0, 2));\n _context6.next = 3;\n return reconstructBody(body);\n\n case 3:\n return _context6.abrupt(\"return\", _context6.sent);\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n return _getBodyLead.apply(this, arguments);\n}\n\nfunction getBodyMore(_x5) {\n return _getBodyMore.apply(this, arguments);\n}\n\nfunction _getBodyMore() {\n _getBodyMore = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(paragraphs) {\n var body;\n return regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n body = (0, _BaobabParagraphs.formatHtml)(paragraphs.slice(0, 2));\n _context7.next = 3;\n return reconstructBody(body);\n\n case 3:\n return _context7.abrupt(\"return\", _context7.sent);\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n return _getBodyMore.apply(this, arguments);\n}\n\nfunction reconstructBody(_x6) {\n return _reconstructBody.apply(this, arguments);\n}\n\nfunction _reconstructBody() {\n _reconstructBody = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(body) {\n var baobabVideoPlaceholderMatch, inlineArticleLinks, inlineAfricanIndyArticleLinks, inlineImageMatch;\n return regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n baobabVideoPlaceholderMatch = /(\\[video\\]\\()(.*)\\)/;\n inlineArticleLinks = /href='https?:\\/\\/([a-z]+\\.iol\\.co\\.za|iol\\.co\\.za)(.*?)([0-9]{5})/;\n inlineAfricanIndyArticleLinks = /href='https?:\\/\\/([a-z]+\\.africanindy\\.com|africanindy\\.com)(.*?)([0-9]{5})/;\n inlineImageMatch = /<figure><img class='baobab-embedded-image'/;\n\n if (!baobabVideoPlaceholderMatch.test(body)) {\n _context8.next = 8;\n break;\n }\n\n _context8.next = 7;\n return formatBaobabVideo(body);\n\n case 7:\n body = _context8.sent;\n\n case 8:\n if (!inlineImageMatch.test(body)) {\n _context8.next = 12;\n break;\n }\n\n _context8.next = 11;\n return formatInlineImage(body);\n\n case 11:\n body = _context8.sent;\n\n case 12:\n return _context8.abrupt(\"return\", body);\n\n case 13:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }));\n return _reconstructBody.apply(this, arguments);\n}\n\nfunction concatBodyElementsHtml(content) {\n var html = '';\n var author;\n\n if (content.byLine) {\n author = content.byLine.replace(/<[^>]*>/g, '');\n }\n\n assert(content.body && content.body.elements, 'content body elements');\n content.body.elements.forEach(function (element) {\n if (element.content.type === 'html') {\n assert(element.content.html, 'content html');\n\n if (author && element.content.html.indexOf(author) === 0) {\n html += element.content.html.substring(author.length);\n } else {\n html += element.content.html;\n }\n } else if (element.content.type === 'video-oembed') {\n assert(element.content.oembedContent.html, 'content video-oembed html');\n html += element.content.oembedContent.html;\n } else {\n console.warn('element html empty', content.contentKey, element.type, element);\n }\n });\n return html;\n}\n\nfunction getSummaryData(_x7) {\n return _getSummaryData.apply(this, arguments);\n}\n\nfunction _getSummaryData() {\n _getSummaryData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(data) {\n var summary;\n return regeneratorRuntime.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n summary = {\n contentKey: data.contentKey,\n section: data.section,\n headline: data.headline,\n \"abstract\": data[\"abstract\"],\n author: data.author,\n published: data.published,\n titleKey: data.titleKey\n };\n\n if (!(0, _ionUtil.isEmpty)(data.images)) {\n summary.image = data.images[0];\n }\n\n if (!(0, _ionUtil.isEmpty)(data.videos)) {\n summary.video = data.videos[0];\n }\n\n if (!(0, _ionUtil.isEmpty)(data.youtubes)) {\n summary.youtube = data.youtubes[0];\n }\n\n return _context9.abrupt(\"return\", summary);\n\n case 5:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n return _getSummaryData.apply(this, arguments);\n}","import React, { Component } from 'react'\nimport { Link } from 'react-router-dom'\nimport { NavLink } from 'ion-navchevron'\nimport logo from '../../static/general/logo.svg'\nimport { Button } from 'semantic-ui-react'\nimport { MenuIco, Search, Close } from 'ion-icon'\nimport { defaultWidth, DesktopTablet, Mobile } from 'ion-media'\n// import Ad from '../Ad'\n// import FORMATS from '../AdFormats'\n\nexport default class Header extends Component {\n constructor (props) {\n super(props)\n this.state = {\n isSearchOpen: false\n }\n }\n\n render () {\n return (\n <header role='banner'>\n <a href='#main-content' className='show-on-focus'>\n Skip to content\n </a>\n <div className='wrapper'>\n <nav className='commercial-nav'>\n <ul>\n <li><a rel='noopener noreferrer' href='https://www.iol.co.za' target='_blank' title='IOL' id='iol-commerical-nav'>IOL</a></li>\n <li><a rel='noopener noreferrer' href='https://iolproperty.co.za/?referrer=dv' target='_blank' title='Property360' id='iol-property-commerical-nav'>IOLProperty</a></li>\n <li><a href='https://www.stylemode.co.za' title='StyleMode' target='_blank' rel='noopener noreferrer nofollow'>StyleMode</a></li>\n <li><a rel='noopener noreferrer' href='https://www.tyi.co.za' target='_blank' title='TYI' id='young-independent-commerical-nav'>TYI</a></li>\n <li><a rel='noopener noreferrer' href='https://www.voices360.co.za' target='_blank' title='Voices360' id='voices360-commerical-nav'>Voices360</a></li>\n <li><a rel='noopener noreferrer' href='https://blog.talent360.co.za/' target='_blank' title='Talent360' id='talent360-commerical-nav'>Talent360</a></li>\n </ul>\n <div>{new Date().toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric' })}</div>\n </nav>\n </div>\n <div className='wrapper'>\n <Mobile values={{ deviceWidth: defaultWidth }}>\n <Button className='menu-btn' onClick={() => this.props.toggleMenu()}><MenuIco width='24' height='24' /></Button>\n </Mobile>\n <Link to='/' className='logo'>\n <img src={logo} alt='Daily Voice' />\n </Link>\n {/* <div className='advert'>\n <img src='https://via.placeholder.com/468x60.jpg?text=Leaderboard Header Idea' alt='' />\n </div> */}\n </div>\n <DesktopTablet values={{ deviceWidth: defaultWidth }}>\n <div className='wrapper'>\n <nav>\n <ul>\n <li>\n <NavLink to='/' exact>Home</NavLink>\n </li>\n <li>\n <NavLink to='/news'>News</NavLink>\n <ul>\n <li>\n <Link to='/news/western-cape'>Western Cape</Link>\n </li>\n <li>\n <Link to='/news/national'>National</Link>\n </li>\n <li>\n <Link to='/news/international'>International</Link>\n </li>\n <li>\n <Link to='/news/business'>Business</Link>\n </li>\n <li>\n <Link to='/news/politics'>Politics</Link>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/sport'>Sport</NavLink>\n <ul>\n <li>\n <Link to='/sport/highlights'>Highlights</Link>\n </li>\n <li>\n <Link to='/sport/cricket'>Cricket</Link>\n </li>\n <li>\n <Link to='/sport/rugby'>Rugby</Link>\n </li>\n <li>\n <Link to='/sport/soccer'>Soccer</Link>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/lifestyle-entertainment'>Lifestyle & Entertainment</NavLink>\n <ul>\n <li>\n <Link to='/lifestyle-entertainment/celebrity'>Celebrity</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/entertainment'>Entertainment</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/cape-spy'>Cape Spy</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/cinema'>Cinema</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/gadget-games'>Gadget & Games</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/tonight'>Tonight</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/recipes'>Recipes</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/lifestyle'>Lifestyle</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/travel'>Travel</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/parenting'>Parenting</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/health-beauty'>Health & Beauty</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/horoscope'>Horoscope</Link>\n </li>\n <li>\n <Link to='/lifestyle-entertainment/photo-of-the-day'>Photo of the Day</Link>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/multimedia'>Multimedia</NavLink>\n </li>\n <li>\n <NavLink to='/opinion'>Opinion</NavLink>\n <ul>\n <li>\n <NavLink to='/opinion/sport'>Sport</NavLink>\n <ul className='sub-mnu-nav'>\n <li>\n <Link to='/opinion/sport/dudley-carstens'>Dudley Carstens</Link>\n </li>\n <li>\n <Link to='/opinion/sport/matthew-marcus'>Matthew Marcus</Link>\n </li>\n <li>\n <Link to='/opinion/sport/nick-feinberg'>Nick Feinberg</Link>\n </li>\n <li>\n <Link to='/opinion/sport/julia-stuart'>Julia Stuart</Link>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/opinion/motoring'>Motoring</NavLink>\n <ul className='sub-mnu-nav'>\n <li>\n <Link to='/opinion/motoring/bobby-nitro'>Bobby Nitro</Link>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/opinion/current-affairs'>Current Affairs</NavLink>\n <ul className='sub-mnu-nav'>\n <li>\n <Link to='/opinion/current-affairs/bobby-brown'>Bobby Brown</Link>\n </li>\n <li>\n <Link to='/opinion/current-affairs/munier-grootbek'>Munier Grootbek</Link>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/opinion/lifestyle'>Lifestyle</NavLink>\n <ul className='sub-mnu-nav'>\n <li>\n <Link to='/opinion/lifestyle/cooksisters'>Cooksisters</Link>\n </li>\n <li>\n <Link to='/opinion/lifestyle/waseef-piekaan'>Waseef Piekaan</Link>\n </li>\n <li>\n <Link to='/opinion/lifestyle/auntie-pearl'>Auntie Pearl</Link>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n <li>\n <NavLink to='/competitions'>Competitions</NavLink>\n </li>\n <li>\n <NavLink to='/contact-us'>Contact</NavLink>\n </li>\n <li className='search-btn'>\n <Link to='#' onClick={() => this.setState({ isSearchOpen: !this.state.isSearchOpen })}>\n {(!this.state.isSearchOpen &&\n <Search width='24' height='24' />\n )}\n {(this.state.isSearchOpen &&\n <Close width='24' height='24' />\n )}\n </Link>\n </li>\n </ul>\n {(this.state.isSearchOpen &&\n <form action='/search' method='get' className='search-form'>\n <input type='search' placeholder='Search Daily Voice' name='q' id='q' />\n <button><Search width='24' height='24' /></button>\n </form>\n )}\n </nav>\n </div>\n </DesktopTablet>\n </header>\n )\n }\n}\n","\nimport { takeLatest, takeEvery, put, select, delay } from 'redux-saga/effects'\nimport { clearSlots, performSingleRequest } from 'ion-ads'\nimport { NAVIGATE_TO } from 'ion-navchevron'\nimport { getAllArticles, FETCH_ARTICLES_SUCCESS } from '../store/articles'\n\nexport const HIDE_MENU = 'HIDE_MENU'\nexport const SHOW_MENU = 'SHOW_MENU'\nexport const TOGGLE_MENU = 'TOGGLE_MENU'\n\nexport const HIDE_SEARCH = 'HIDE_SEARCH'\nexport const SHOW_SEARCH = 'SHOW_SEARCH'\nexport const TOGGLE_SEARCH = 'TOGGLE_SEARCH'\n\nexport const EXPERIMENT_WIN = 'EXPERIMENT_WIN'\nexport const PAGE_VIEW = 'PAGE_VIEW'\nexport const UPDATE_CONNECTIVITY = 'UPDATE_CONNECTIVITY'\n\nexport const SELECT_MOST_READ_TAB = 'SELECT_MOST_READ_TAB'\nexport const UPDATE_WINGBANNER_LEFT_ACTIVE = 'UPDATE_WINGBANNER_LEFT_ACTIVE'\nexport const UPDATE_WINGBANNER_RIGHT_ACTIVE = 'UPDATE_WINGBANNER_RIGHT_ACTIVE'\nexport const AD_SLOT_REGISTERED = 'AD_SLOT_REGISTERED'\n\nexport const PREFETCH = 'PREFETCH'\n\nexport const hideMenu = () => ({ type: HIDE_MENU, payload: false })\nexport const showMenu = () => ({ type: SHOW_MENU, payload: true })\nexport const toggleMenu = () => ({ type: TOGGLE_MENU })\n\nexport const hideSearch = () => ({ type: HIDE_SEARCH, payload: false })\nexport const showSearch = () => ({ type: SHOW_SEARCH, payload: true })\nexport const toggleSearch = () => ({ type: TOGGLE_SEARCH })\n\nexport const updateConnectivity = (isConnected) => ({ type: UPDATE_CONNECTIVITY, payload: isConnected })\n\nexport const adSlotRegistered = (slotId) => ({ type: AD_SLOT_REGISTERED, slotId })\n\nexport const experimentWin = (experiment, variant) => ({ type: EXPERIMENT_WIN, payload: experiment, variant })\nexport const pageView = (path) => ({ type: PAGE_VIEW, payload: path })\nexport const isConnected = state => state.app.isConnected\n\nexport const onSlotRenderEndedLeft = (e) => ({ type: UPDATE_WINGBANNER_LEFT_ACTIVE, payload: e })\nexport const onSlotRenderEndedRight = (e) => ({ type: UPDATE_WINGBANNER_RIGHT_ACTIVE, payload: e })\n\nexport const setMostReadTab = (mostReadTab) => ({ type: SELECT_MOST_READ_TAB, payload: mostReadTab })\n\nexport const Prefetch = () => ({ type: PREFETCH })\n\nfunction * prefetchSaga () {\n const articles = yield select(getAllArticles)\n for (const section in articles) {\n yield put({ type: FETCH_ARTICLES_SUCCESS, payload: articles[section], section })\n }\n}\n\nexport function * watchPrecache () {\n yield takeEvery(PREFETCH, prefetchSaga)\n}\n\nfunction * hideMenuSaga () {\n yield put({ type: HIDE_MENU, payload: false })\n}\n\nfunction * transitionTo (path) {\n // When navigating to a new location, destroy all the current slots\n clearSlots()\n\n yield\n}\n\nfunction * showLastSlotRegistered ({ slotId }) {\n // yield delay(2000) - seems to give stable results, but is very long\n // Make it 100ms and YOLO\n yield delay(100)\n performSingleRequest(slotId)\n}\n\nexport function * watchNavChanges () {\n yield takeLatest(PAGE_VIEW, transitionTo)\n yield takeLatest(NAVIGATE_TO, hideMenuSaga)\n yield takeLatest(AD_SLOT_REGISTERED, showLastSlotRegistered)\n}\n\nconst defaultState = {\n showMenu: false,\n showSearch: false,\n isConnected: true,\n path: '',\n mostReadTab: 0\n}\n\nexport const Reducer = (state = defaultState, { type, payload }) => {\n switch (type) {\n case UPDATE_WINGBANNER_LEFT_ACTIVE:\n return { ...state, ...{ wingbannerLeftActive: !payload.isEmpty } }\n case UPDATE_WINGBANNER_RIGHT_ACTIVE:\n return { ...state, ...{ wingbannerRightActive: !payload.isEmpty } }\n case UPDATE_CONNECTIVITY:\n return { ...state, ...{ isConnected: payload } }\n case EXPERIMENT_WIN:\n return { ...state, ...{ experiment: payload.experiment, variant: payload.variant } }\n case PAGE_VIEW:\n return { ...state, ...{ path: payload } }\n case HIDE_SEARCH:\n case SHOW_SEARCH:\n return { ...state, ...{ showSearch: payload } }\n case TOGGLE_SEARCH:\n return { ...state, ...{ showSearch: !state.showSearch } }\n case SHOW_MENU:\n case HIDE_MENU:\n return { ...state, ...{ showMenu: payload } }\n case TOGGLE_MENU:\n return { ...state, ...{ showMenu: !state.showMenu } }\n case SELECT_MOST_READ_TAB:\n return { ...state, ...{ mostReadTab: payload } }\n default:\n return state\n }\n}\n","import { PAGE_VIEW, EXPERIMENT_WIN } from './app'\nimport { FETCH_ARTICLE_SUCCESS, SERVER_ARTICLE_RENDER } from './article'\n\n// Map the event to a Redux action\nexport const eventsMap = {\n [PAGE_VIEW]: (action) => ({\n event: 'VirtualPageview',\n virtualPageURL: action.payload\n }),\n [FETCH_ARTICLE_SUCCESS]: (action) => ({\n event: 'ArticlePageview',\n contentKey: action.payload.contentKey,\n author: action.payload.author,\n section: action.payload.section,\n visitorId: action.payload.visitorId,\n host: process.env.RAZZLE_SITE_URL\n }),\n [SERVER_ARTICLE_RENDER]: (action) => ({\n event: 'ArticlePageview',\n contentKey: action.payload.contentKey,\n section: action.payload.section,\n author: action.payload.author,\n host: process.env.RAZZLE_SITE_URL\n }),\n [EXPERIMENT_WIN]: (action) => ({\n event: 'ABTest',\n experiment: action.payload,\n variant: action.variant\n })\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _axios = require('axios');\n\nvar _axios2 = _interopRequireDefault(_axios);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar IONAnalytics = function IONAnalytics(events) {\n events.forEach(function (event) {\n switch (event.event) {\n case 'ArticlePageview':\n try {\n var host = event.host.split('//')[1].split(':')[0];\n createUrlAndSend([host, 'a', event.contentKey, event.section], event.visitorId);\n } catch (error) {\n console.log(error);\n }\n break;\n default:\n break;\n }\n });\n};\n\nfunction createUrlAndSend(parts, visitorId) {\n var customVisitorId = visitorId || Math.random().toString(36).substr(2, 9);\n var duration = Date.now();\n var timeNow = new Date().getTime();\n var url = 'https://ai.iol.io/aa/' + parts.join('/');\n\n if (typeof window !== 'undefined') {\n url += '?w=' + window.outerWidth + '&h=' + window.outerHeight + '&u=' + customVisitorId + '&t=' + duration + '&ts=' + timeNow;\n } else {\n url += '?w=0&h=0&u=' + customVisitorId + '&t=' + duration + '&ts=' + timeNow;\n }\n _axios2.default.get(url).catch(function (error) {\n console.warn('IONAnalytics: Error ' + (error && error.status) + ' accessing', url);\n });\n}\nexports.default = IONAnalytics;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar MenuIco = function MenuIco(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 30 19\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"g\", {\n fill: \"#4A4A4A\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"rect\", {\n width: \"30\",\n height: \"3\",\n rx: \"1.5\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"rect\", {\n width: \"22\",\n height: \"3\",\n y: \"8\",\n rx: \"1.5\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"rect\", {\n width: \"26\",\n height: \"3\",\n y: \"16\",\n rx: \"1.5\"\n })));\n};\n\nvar _default = MenuIco;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NavLink\", {\n enumerable: true,\n get: function () {\n return _NavLink.default;\n }\n});\nObject.defineProperty(exports, \"updateNavPath\", {\n enumerable: true,\n get: function () {\n return _navPath.updateNavPath;\n }\n});\nObject.defineProperty(exports, \"SET_NAVPATH\", {\n enumerable: true,\n get: function () {\n return _navPath.SET_NAVPATH;\n }\n});\nObject.defineProperty(exports, \"NAVIGATE_TO\", {\n enumerable: true,\n get: function () {\n return _navPath.NAVIGATE_TO;\n }\n});\nObject.defineProperty(exports, \"Reducer\", {\n enumerable: true,\n get: function () {\n return _navPath.Reducer;\n }\n});\nexports.default = exports.NavChevron = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _redux = require(\"redux\");\n\nvar _NavLink = _interopRequireDefault(require(\"./NavLink\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _navPath = require(\"./navPath\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nclass NavChevron extends _react.Component {\n constructor() {\n super();\n this.handleClick = this.handleClick.bind(this);\n this.handleNavClick = this.handleNavClick.bind(this);\n }\n\n handleNavClick() {\n this.props.updateNavPath('/');\n }\n\n handleClick() {\n if (this.props.navPath.startsWith(this.props.navid)) {\n this.props.updateNavPath(this.props.navid.substr(0, this.props.navid.lastIndexOf('/')));\n } else {\n this.props.updateNavPath(this.props.navid);\n }\n }\n\n render() {\n let showMe = this.props.navPath.startsWith(this.props.navid);\n return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_NavLink.default, {\n to: this.props.navid,\n \"aria-haspopup\": \"true\"\n }, this.props.caption), /*#__PURE__*/_react.default.createElement(\"span\", {\n className: showMe ? 'expanded' : '',\n onClick: this.handleClick\n }), /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: showMe ? 'expanded' : '',\n \"aria-hidden\": \"true\",\n \"aria-label\": \"submenu\"\n }, this.props.children));\n }\n\n}\n\nexports.NavChevron = NavChevron;\n\nconst mapStateToProps = state => state.navPath;\n\nconst mapDispatchToProps = dispatch => (0, _redux.bindActionCreators)({\n updateNavPath: _navPath.updateNavPath\n}, dispatch);\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(NavChevron); // navPath exports\n\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Search = function Search(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#FFFFFF\",\n d: \"M1413.15266,71.0943396 L1412.06861,71.0943396 L1411.68439,70.7238422 C1413.02916,69.1595197 1413.83877,67.1286449 1413.83877,64.9193825 C1413.83877,59.9931389 1409.84563,56 1404.91938,56 C1399.99314,56 1396,59.9931389 1396,64.9193825 C1396,69.8456261 1399.99314,73.838765 1404.91938,73.838765 C1407.12864,73.838765 1409.15952,73.0291595 1410.72384,71.6843911 L1411.09434,72.0686106 L1411.09434,73.1526587 L1417.9554,80 L1420,77.9554031 L1413.15266,71.0943396 Z M1404.91938,71.0943396 C1401.50257,71.0943396 1398.74443,68.3361921 1398.74443,64.9193825 C1398.74443,61.5025729 1401.50257,58.7444254 1404.91938,58.7444254 C1408.33619,58.7444254 1411.09434,61.5025729 1411.09434,64.9193825 C1411.09434,68.3361921 1408.33619,71.0943396 1404.91938,71.0943396 Z\",\n transform: \"translate(-1396 -56)\"\n }));\n};\n\nvar _default = Search;\nexports[\"default\"] = _default;","export const FORMATS = {\n leaderboard: {\n desktop: [[728, 90], [970, 90], [970, 250]],\n tablet: [[728, 90]],\n mobile: [[320, 50], [300, 50]]\n },\n leaderboardsmall: {\n desktop: [[468, 60]],\n tablet: [[468, 60]],\n mobile: [[320, 50]]\n },\n leaderboardtop: {\n desktop: [[728, 90], [970, 90]],\n tablet: [[728, 90]],\n mobile: [[300, 50], [320, 50]]\n },\n mpu: {\n desktop: [[300, 250]],\n tablet: [[300, 250]],\n mobile: [[300, 250]]\n },\n inarticle: {\n desktop: [[300, 250]],\n tablet: [[300, 250]],\n mobile: [[300, 250], [336, 280]]\n },\n mpudynamic: {\n desktop: [[300, 600]],\n tablet: [[300, 250]],\n mobile: [[300, 250]]\n },\n mpu600: {\n desktop: [[300, 600], [120, 600], [160, 600]],\n tablet: [[300, 600], [336, 280]],\n mobile: [[300, 250], [336, 280]]\n },\n wingbanner: {\n desktop: [[160, 600]],\n tablet: [],\n mobile: []\n },\n interstitial: {\n desktop: [[970, 600], [300, 600], [336, 280], [300, 250]],\n tablet: [[300, 600], [336, 280], [300, 250]],\n mobile: [[300, 600], [336, 280], [300, 250]]\n },\n halfpage: {\n desktop: [[300, 600]],\n tablet: [[300, 600]],\n mobile: [[300, 600]]\n },\n mobileLeaderboardSticky: {\n desktop: [],\n tablet: [],\n mobile: [[300, 50], [320, 50], [300, 100], [320, 100]]\n }\n}\n\nexport const MAPPINGS = {\n 'Third-Party': [\n [[1400, 0], [1, 2]],\n [[1200, 0], [1, 2]],\n [[1000, 0], [1, 2]],\n [[700, 0], [1, 2]],\n [[500, 0], [1, 2]],\n [[200, 0], [1, 2]],\n [[0, 0], []]\n ],\n 'Main-Leaderboard': [\n [[1400, 0], [[1000, 250], [1000, 90], [970, 250], [970, 90], [728, 90]]],\n [[1200, 0], [[1000, 250], [1000, 90], [970, 250], [970, 90], [728, 90]]],\n [[1000, 0], [[1000, 250], [1000, 90], [970, 250], [970, 90], [728, 90]]],\n [[700, 0], [[728, 90], [468, 60], [320, 100], [320, 50], [300, 100], [300, 50]]],\n [[500, 0], [[468, 60], [320, 100], [320, 50], [300, 100], [300, 50]]],\n [[200, 0], [[320, 100], [320, 50], [300, 100], [300, 50]]],\n [[0, 0], []]\n ],\n Leaderboard: [\n [[1400, 0], [[728, 90], [468, 60], [300, 250], [336, 280]]],\n [[1400, 0], [[728, 90], [468, 60], [300, 250], [336, 280]]],\n [[1000, 0], [[468, 60], [300, 250], [336, 280], [320, 50], [300, 100], [300, 50]]],\n [[700, 0], [[468, 60], [320, 100], [320, 50], [300, 100], [300, 50], [300, 250], [336, 280], [250, 250]]],\n [[500, 0], [[468, 60], [320, 100], [320, 50], [300, 100], [300, 50], [300, 250], [336, 280], [250, 250]]],\n [[200, 0], [[320, 100], [320, 50], [300, 100], [300, 50], [300, 250], [300, 600], [336, 280], [250, 250]]],\n [[0, 0], []]\n ],\n MPU: [\n [[1400, 0], [[300, 600], [300, 250], [336, 280], [250, 250], [120, 600], [160, 600]]],\n [[1200, 0], [[300, 600], [300, 250], [336, 280], [250, 250], [120, 600], [160, 600]]],\n [[1000, 0], [[250, 250], [120, 600], [160, 600]]],\n [[700, 0], []],\n [[500, 0], []],\n [[200, 0], []],\n [[0, 0], []]\n ],\n Gutter: [\n [[1990, 0], [[300, 600], [300, 250], [336, 280], [250, 250], [120, 600], [160, 600]]],\n [[1690, 0], [[120, 600], [160, 600]]],\n [[1000, 0], []],\n [[700, 0], []],\n [[500, 0], []],\n [[200, 0], []],\n [[0, 0], []]\n ],\n Mapping6: [\n [[1400, 0], [[300, 250], [336, 280], [250, 250]]],\n [[1200, 0], [[300, 250], [336, 280], [250, 250]]],\n [[1000, 0], [[250, 250]]],\n [[700, 0], []],\n [[500, 0], []],\n [[200, 0], []],\n [[0, 0], []]\n ],\n Interstitial: [\n [[1400, 0], [[970, 600], [300, 600], [336, 280], [300, 250]]],\n [[1200, 0], [[970, 600], [300, 600], [336, 280], [300, 250]]],\n [[1000, 0], [[970, 600], [300, 600], [336, 280], [300, 250]]],\n [[700, 0], [[300, 600], [336, 280], [300, 250]]],\n [[500, 0], [[300, 600], [336, 280], [300, 250]]],\n [[200, 0], [[300, 600], [336, 280], [300, 250]]],\n [[0, 0], [[300, 600], [336, 280], [300, 250]]]\n ]\n}\n\nexport default FORMATS\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar CaretDwn = function CaretDwn(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 18 10\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#000000\",\n d: \"M17.142857,1.428571 C17.142857,1.71875 17.03683,1.969866 16.824777,2.18192 L9.324777,9.68192 C9.112723,9.893973 8.861607,10 8.571429,10 C8.28125,10 8.030134,9.893973 7.81808,9.68192 L0.31808,2.18192 C0.106027,1.969866 0,1.71875 0,1.428571 C0,1.138393 0.106027,0.887277 0.31808,0.675223 C0.530134,0.46317 0.78125,0.357143 1.071429,0.357143 L16.071429,0.357143 C16.361607,0.357143 16.612723,0.46317 16.824777,0.675223 C17.03683,0.887277 17.142857,1.138393 17.142857,1.428571 Z\"\n }));\n};\n\nvar _default = CaretDwn;\nexports[\"default\"] = _default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cache = require('./cache');\n\nvar _cache2 = _interopRequireDefault(_cache);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n * Basic Caching implementation. \n * This implementation will be used for client environments\n */\n\n\nvar MemoryCache = function (_Cache) {\n _inherits(MemoryCache, _Cache);\n\n function MemoryCache(options) {\n _classCallCheck(this, MemoryCache);\n\n var _this = _possibleConstructorReturn(this, (MemoryCache.__proto__ || Object.getPrototypeOf(MemoryCache)).call(this, options));\n\n _this._store = {};\n return _this;\n }\n //Setting a value in the cache\n\n\n _createClass(MemoryCache, [{\n key: 'set',\n value: async function set(key, value, ttl) {\n if (!ttl) {\n ttl = this._ttl;\n }\n this._store[key] = { value: value, expires: new Date().getTime() + ttl };\n this.clean();\n return Promise.resolve(value);\n }\n //Cycles through all keys and removes expired items\n\n }, {\n key: 'clean',\n value: async function clean() {\n var _this2 = this;\n\n var now = new Date().getTime();\n var promises = Object.keys(this._store).map(function (key) {\n if (now > _this2._store[key].expires) {\n return _this2.delete(key);\n }\n });\n return Promise.resolve(promises);\n }\n //Delete a key from the cache\n\n }, {\n key: 'delete',\n value: async function _delete(key) {\n delete this._store[key];\n return Promise.resolve(true);\n }\n //Setting a value in the cache\n\n }, {\n key: 'get',\n value: async function get(key) {\n this.clean();\n var value = this._store[key];\n if (value) {\n return Promise.resolve(value.value);\n }\n // this.delete(key)\n return Promise.resolve(false);\n }\n }]);\n\n return MemoryCache;\n}(_cache2.default);\n\nexports.default = MemoryCache;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Close = function Close(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"polygon\", {\n fill: \"#FFFFFF\",\n points: \"40 25.021 37.979 23 30 30.979 22.021 23 20 25.021 27.979 33 20 40.979 22.021 43 30 35.021 37.979 43 40 40.979 32.021 33\",\n transform: \"translate(-20 -23)\"\n }));\n};\n\nvar _default = Close;\nexports[\"default\"] = _default;","import React, { Component } from 'react'\nimport { Route, Switch } from 'react-router-dom'\nimport Helmet from 'react-helmet'\nimport { withRouter, Redirect } from 'react-router'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport loadable from '@loadable/component'\nimport { Workbox } from 'workbox-window'\n\nimport { Sidebar, Segment, Menu, Message } from 'semantic-ui-react'\nimport ScrollToTop from 'ion-scrolltotop'\nimport { Mobile } from 'ion-media'\nimport { url2section } from 'ion-sections'\nimport { enableSingleRequest, enableInterstitial, enableLazyLoad, enableMappings, disableMappings } from 'ion-ads'\n\nimport Header from './Shell/Header'\nimport Footer from './Shell/Footer'\nimport NavMenu from './Shell/NavMenu'\n\nimport FaviconApple from '../static/favicon/apple-touch-icon.png'\nimport Favicon32 from '../static/favicon/favicon-32x32.png'\nimport Favicon16 from '../static/favicon/favicon-16x16.png'\nimport FaviconSafari from '../static/favicon/safari-pinned-tab.svg'\nimport FaviconICO from '../static/favicon/favicon.ico'\n\nimport logo from '../static/general/daily-voice.jpg'\n\nimport { hideMenu, toggleMenu, toggleSearch, pageView, onSlotRenderEndedLeft, onSlotRenderEndedRight } from '../../store/app'\nimport { fetchArticles, fetchMoreArticles } from '../../store/articles'\n\nimport 'semantic-ui-css/components/sidebar.min.css'\nimport 'semantic-ui-css/components/segment.min.css'\nimport 'semantic-ui-css/components/menu.min.css'\nimport 'semantic-ui-css/components/message.min.css'\nimport 'semantic-ui-css/components/icon.min.css'\nimport '../styles/app.scss'\n\nexport const HomePage = loadable(() => import('../pages/LandingPages/HomePage'))\nexport const NotFound = loadable(() => import('../pages/NotFound'))\nexport const DefaultSection = loadable(() => import('./DefaultSection'))\nexport const Article = loadable(() => import('../pages/Article'))\nexport const StaticPage = loadable(() => import('../pages/StaticPage'))\nexport const SearchPage = loadable(() => import('../pages/SearchPage'))\nexport const Feedback = loadable(() => import('../pages/Feedback'))\nexport const WeatherPage = loadable(() => import('../pages/WeatherPage'))\nexport const AuthorsSectionPage = loadable(() => import('../pages/AuthorsSectionPage'))\n\n// GPT.enableSingleRequest()\n\nexport class App extends Component {\n constructor (props) {\n super(props)\n this.toggleMenu = this.toggleMenu.bind(this)\n this.hideMenu = this.hideMenu.bind(this)\n this.toggleSearch = this.toggleSearch.bind(this)\n this.state = {\n wingbannerLeftActive: false,\n wingbannerRightActive: false,\n hamburgerActive: false,\n useSmall: false\n }\n // this.props.pageView(this.props.location.pathname)\n }\n\n componentDidUpdate (prevProps) {\n // Re-fetch articles when the contentKey changes\n if (prevProps.location.pathname !== this.props.location.pathname) {\n setTimeout(() => {\n this.props.pageView(this.props.location.pathname)\n }, 0)\n }\n }\n\n componentDidMount () {\n window.addEventListener('scroll', this.handleScroll, true)\n }\n\n componentWillUnmount () {\n window.removeEventListener('scroll', this.handleScroll)\n }\n\n handleScroll = () => {\n const useSmall = window.scrollY > (125 + (this.state.useSmall ? -25 : 0))\n if (useSmall !== this.state.useSmall) { this.setState({ useSmall }) }\n }\n\n toggleSearch () {\n this.props.toggleSearch()\n }\n\n toggleMenu () {\n this.props.toggleMenu()\n }\n\n hideMenu () {\n if (this.props.showMenu) {\n this.props.hideMenu()\n }\n }\n\n render () {\n if (typeof window !== 'undefined' && 'serviceWorker' in navigator) {\n const wb = new Workbox('/sw.js')\n // wb.addEventListener('activated', (event) => {\n // // `event.isUpdate` will be true if another version of the service\n // // worker was controlling the page when this version was registered.\n // if (!event.isUpdate) {\n // this.setState({\n // wbMessage: 'This site is now available offline'\n // })\n // // If your service worker is configured to precache assets, those\n // // assets should all be available now.\n // } else {\n // this.setState({\n // wbMessage: 'This site has been updated.'\n // })\n // }\n // })\n // wb.addEventListener('message', (event) => {\n // if (event.data.type === 'CACHE_UPDATED') {\n // const { updatedURL } = event.data.payload\n // this.setState({\n // wbMessage: `A newer version of ${updatedURL} is available!`\n // })\n // }\n // })\n // wb.addEventListener('waiting', (event) => {\n // this.setState({\n // wbMessage: `A newer version of this site is available! Please reload your page to activate it.`\n // })\n // })\n wb.register()\n }\n return (\n <>\n <div className='app'>\n <Helmet\n defaultTitle={process.env.RAZZLE_SITE_TITLE}\n >\n <html lang='en' />\n <link rel='icon' type='image/x-icon' href={FaviconICO} />\n <link rel='apple-touch-icon' sizes='180x180' href={FaviconApple} />\n <link rel='icon' type='image/png' sizes='32x32' href={Favicon32} />\n <link rel='icon' type='image/png' sizes='16x16' href={Favicon16} />\n <link rel='mask-icon' href={FaviconSafari} color='#5bbad5' />\n <meta name='msapplication-TileColor' content='#ffffff' />\n <meta name='theme-color' content='#ffffff' />\n <meta name='description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n <meta name='msvalidate.01' content='5A0910AA1A12E32A5352933CF5FD96E9' />\n <meta property='fb:app_id' content='1915095138801045' />\n <meta property='og:type' content='article' />\n <meta charset='utf-8' />\n <meta property='og:title' content={process.env.RAZZLE_SITE_TITLE} />\n <meta property='og:description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n <meta property='og:image' content={logo} />\n <meta itemprop='inLanguage' content='en' />\n <meta itemprop='image' content={logo} />\n <meta name='viewport' content='width=device-width, initial-scale=1, viewport-fit=cover' />\n <meta name='mobile-web-app-capable' content='yes' />\n <meta name='theme-color' content='#ffffff' />\n <meta name='google-site-verification' content='pzAffsof8VshOp53XmZa9qZwwSMWIzKq_U8TnBj93U8' />\n <meta itemprop='image' content={logo} />\n <meta itemprop='thumbnailUrl' content={logo} />\n <meta name='twitter:site' content={process.env.RAZZLE_SITE_TWITTER_USER} />\n <meta name='twitter:creator' content={process.env.RAZZLE_SITE_TWITTER_USER} />\n <meta name='twitter:card' content='summary_large_image' />\n <meta name='twitter:image:src' content={logo} />\n <link rel='canonical' itemprop='url' href={process.env.RAZZLE_SITE_URL + (this.props.location.pathname === '/' ? '' : this.props.location.pathname)} />\n <body className={(this.props.showMenu ? 'menu-open' : 'menu-closed') + ((this.props.wingbannerLeftActive || this.props.wingbannerRightActive) ? ' dfp-take-over-ad' : '')} />\n </Helmet>\n <Sidebar.Pushable as={Segment}>\n <Sidebar as={Menu} animation='push' width='wide' visible={this.props.showMenu} icon='labeled' vertical>\n <Mobile>\n <NavMenu toggleMenu={this.toggleMenu} />\n </Mobile>\n </Sidebar>\n <Sidebar.Pusher dimmed={this.props.showMenu} onClick={() => this.hideMenu}>\n <Header useSmall={this.state.useSmall} toggleMenu={this.toggleMenu} toggleSearch={this.toggleSearch} {...this.props} />\n <main id='main-content' role='main' className='content'>\n <ScrollToTop>\n {this.state.wbMessage &&\n <Message floating info icon onDismiss={(event, data) => this.setState({ wbMessage: '' })}>{this.state.wbMessage}</Message>}\n <Switch>\n <Route exact path='/shell' render={() => <div>Loading...</div>} />\n <Route exact path='/feedback/thankyou' render={() => <Feedback thanksMessage='Thank you for your feedback. We will get back to you shortly.' />} />\n <Route exact path='/feedback' component={Feedback} />\n <Route exact path='/' render={p => <HomePage {...this.props} />} />\n <Route\n path='/authors' exact render={props =>\n <AuthorsSectionPage\n section='authors'\n title='Authors Page'\n description='Authors Page'\n {...this.props}\n />}\n />\n <Route\n exact path='/search' render={(props) =>\n <SearchPage\n {...this.props}\n twitterName={process.env.RAZZLE_SITE_TWITTER_USER}\n titleTemplate={'%s | ' + process.env.RAZZLE_SITE_TITLE}\n />}\n />\n <Route\n exact path='/:page(terms-and-conditions)' render={props =>\n <StaticPage\n page={props.match.params.page}\n title='Terms and Conditions | The Daily Voice'\n description='By making use of this website, you agree to and acknowledge the terms of use set out in The Daily Voice terms and conditions.'\n {...this.props}\n />}\n />\n <Route\n exact path='/:page(privacy-policy)' render={props =>\n <StaticPage\n page={props.match.params.page}\n title='Privacy Policy | The Daily Voice'\n description='By making use of this website, you agree to and acknowledge the terms of use set out in The Daily Voice terms and conditions.'\n {...this.props}\n />}\n />\n <Route\n exact path='/:page(contact-us)' render={props =>\n <StaticPage\n page={props.match.params.page}\n title='Contact Us | Get In Touch | The Daily Voice'\n description='Get in touch, we would love to hear from you! Visit our website to find out how you can get in contact with The Daily Voice team.'\n {...this.props}\n />}\n />\n <Route\n exact path='/:page(about-us)' render={props =>\n <StaticPage\n page={props.match.params.page}\n title='About Us | The Daily Voice'\n description='About The Daily Voice - Ons Skrik Vir Niks!'\n {...this.props}\n />}\n />\n <Route\n exact path='/:page(complaints)' render={props =>\n <StaticPage\n page={props.match.params.page}\n title='The Independent Media Complaints Procedure | The Daily Voice'\n description='The Independent Media Complaints Procedure'\n {...this.props}\n />}\n />\n <Route\n exact path='/:page(rss-feeds)' render={props =>\n <StaticPage\n page={props.match.params.page}\n title='RSS Feeds | The Daily Voice'\n description='About The Daily Voice - Ons Skrik Vir Niks!'\n {...this.props}\n />}\n />\n <Route\n exact path='/weather' render={props =>\n <WeatherPage\n title='Weather | The Daily Voice'\n description='Today’s weather forecast in Cape Town - Ons Skrik Vir Niks!'\n {...this.props}\n />}\n />\n {/* Defaults and direct article access */}\n <Route path='/preview' render={props => <Article {...this.props} {...props} url='preview' contentKey={999999} />} />\n <Route path='/:contentKey([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})' render={props => <Article {...this.props} {...props} contentKey={props.match.params.contentKey} />} />\n <Route path='/:contentKey([0-9]{5,})' render={props => <Article {...this.props} {...props} contentKey={props.match.params.contentKey} />} />\n <Route path='/:section([a-zA-Z0-9-]+)/' strict exact render={props => <Redirect to={'/' + props.match.params.section} />} />\n <Route path='/:section([a-zA-Z0-9-]+)' render={props => <DefaultSection {...this.props} {...props} twitterName={process.env.RAZZLE_SITE_TWITTER_USER} />} />\n {/* <Route exact path='/404' component={NotFound} {...this.props} /> */}\n <Route path='*' component={NotFound} {...this.props} />\n </Switch>\n </ScrollToTop>\n </main>\n <Footer showSubscribe={(this.props.location.pathname !== '/subscribe/newsletters')} section={url2section(this.props.location.pathname)} />\n </Sidebar.Pusher>\n </Sidebar.Pushable>\n </div>\n </>\n )\n }\n}\n\n/**\n * enable Single Request Mode for Ads\n *\n * This setting requires a call to `performSingleRequest` to initiate the fetch. This is currently achieved using sagas,\n * leveraging `onSlotRegistered` to trigger an action, and debouncing the events to catch the last one in the series to\n * trigger the `performSingleRequest` call.\n */\nenableSingleRequest()\nenableInterstitial()\nif (process.env.RAZZLE_ENABLE_GAM && process.env.RAZZLE_ENABLE_LAZYLOAD) {\n enableLazyLoad()\n}\nif (process.env.RAZZLE_ENABLE_MAPPINGS) {\n enableMappings()\n} else {\n disableMappings()\n}\n\nconst mapStateToProps = (state) => (state.app)\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ hideMenu, toggleMenu, toggleSearch, pageView, fetchArticles, fetchMoreArticles, onSlotRenderEndedLeft, onSlotRenderEndedRight }, dispatch)\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(App))\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Instagram = function Instagram(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 61 61\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#FFFFFF\",\n d: \"M40.2197799,30.6666677 C40.2197799,27.9062503 39.2378512,25.5494787 37.273996,23.596355 C35.3101386,21.643229 32.94042,20.666666 30.1648355,20.666666 C27.389251,20.666666 25.0195301,21.643229 23.055675,23.596355 C21.0918175,25.5494787 20.1098911,27.9062503 20.1098911,30.6666677 C20.1098911,33.4270827 21.0918175,35.7838543 23.055675,37.736978 C25.0195301,39.690104 27.389251,40.666667 30.1648355,40.666667 C32.94042,40.666667 35.3101386,39.690104 37.273996,37.736978 C39.2378512,35.7838543 40.2197799,33.4270827 40.2197799,30.6666677 Z M45.640024,30.6666677 C45.640024,34.9375007 44.1344009,38.5703117 41.1231547,41.5651053 C38.1119085,44.5598967 34.4591346,46.0572923 30.1648355,46.0572923 C25.8705364,46.0572923 22.2177625,44.5598967 19.2065163,41.5651053 C16.1952701,38.5703117 14.689647,34.9375007 14.689647,30.6666677 C14.689647,26.3958323 16.1952701,22.7630213 19.2065163,19.76823 C22.2177625,16.7734387 25.8705364,15.2760407 30.1648355,15.2760407 C34.4591346,15.2760407 38.1119085,16.7734387 41.1231547,19.76823 C44.1344009,22.7630213 45.640024,26.3958323 45.640024,30.6666677 Z M49.8819547,14.651041 C49.8819547,15.640624 49.5284597,16.48698 48.821472,17.1901043 C48.114482,17.8932287 47.263478,18.244792 46.2684578,18.244792 C45.2734375,18.244792 44.4224335,17.8932287 43.7154435,17.1901043 C43.0084559,16.48698 42.6549632,15.640624 42.6549632,14.651041 C42.6549632,13.661458 43.0084559,12.8151043 43.7154435,12.11198 C44.4224335,11.4088533 45.2734375,11.0572923 46.2684578,11.0572923 C47.263478,11.0572923 48.114482,11.4088533 48.821472,12.11198 C49.5284597,12.8151043 49.8819547,13.661458 49.8819547,14.651041 Z M30.1648355,6.05729267 C29.9815422,6.05729267 28.9799762,6.05078033 27.160135,6.03776033 C25.3402939,6.02474033 23.9590498,6.02474033 23.016398,6.03776033 C22.0737462,6.05078033 20.810333,6.08984267 19.2261536,6.15494733 C17.6419766,6.220052 16.2934613,6.35026133 15.1806102,6.545573 C14.067759,6.74088467 13.131653,6.981771 12.3722968,7.26822967 C11.0630585,7.78906233 9.91092808,8.54427133 8.91590781,9.53385433 C7.92088754,10.5234373 7.16152904,11.669272 6.63783465,12.9713537 C6.34980204,13.7265627 6.1075945,14.657551 5.91120735,15.7643233 C5.71482254,16.8710933 5.58389777,18.2122397 5.51843773,19.78776 C5.45297535,21.3632803 5.41369838,22.619792 5.4006045,23.5572927 C5.38751296,24.494791 5.38751296,25.8684897 5.4006045,27.6783863 C5.41369838,29.4882807 5.42024415,30.484376 5.42024415,30.6666677 C5.42024415,30.8489593 5.41369838,31.8450523 5.4006045,33.654949 C5.38751296,35.4648433 5.38751296,36.838542 5.4006045,37.7760427 C5.41369838,38.713541 5.45297535,39.9700527 5.51843773,41.545573 C5.58389777,43.1210933 5.71482254,44.4622397 5.91120735,45.5690097 C6.1075945,46.675782 6.34980204,47.6067703 6.63783465,48.3619793 C7.16152904,49.6640633 7.92088754,50.8098957 8.91590781,51.7994787 C9.91092808,52.7890617 11.0630585,53.5442707 12.3722968,54.0651033 C13.131653,54.351562 14.067759,54.5924483 15.1806102,54.78776 C16.2934613,54.983074 17.6419766,55.113281 19.2261536,55.1783857 C20.810333,55.2434903 22.0737462,55.2825527 23.016398,55.2955727 C23.9590498,55.3085927 25.3402939,55.3085927 27.160135,55.2955727 C28.9799762,55.2825527 29.9815422,55.2760427 30.1648355,55.2760427 C30.3481288,55.2760427 31.3496948,55.2825527 33.169536,55.2955727 C34.9893748,55.3085927 36.3706212,55.3085927 37.313273,55.2955727 C38.2559248,55.2825527 39.519338,55.2434903 41.103515,55.1783857 C42.6876921,55.113281 44.0362073,54.983074 45.1490608,54.78776 C46.261912,54.5924483 47.198018,54.351562 47.9573742,54.0651033 C49.2666125,53.5442707 50.4187406,52.7890617 51.4137608,51.7994787 C52.4087835,50.8098957 53.1681396,49.6640633 53.6918363,48.3619793 C53.9798666,47.6067703 54.2220765,46.675782 54.4184613,45.5690097 C54.6148485,44.4622397 54.7457709,43.1210933 54.8112333,41.545573 C54.8766957,39.9700527 54.9159726,38.713541 54.9290642,37.7760427 C54.942158,36.838542 54.942158,35.4648433 54.9290642,33.654949 C54.9159726,31.8450523 54.9094268,30.8489593 54.9094268,30.6666677 C54.9094268,30.484376 54.9159726,29.4882807 54.9290642,27.6783863 C54.942158,25.8684897 54.942158,24.494791 54.9290642,23.5572927 C54.9159726,22.619792 54.8766957,21.3632803 54.8112333,19.78776 C54.7457709,18.2122397 54.6148485,16.8710933 54.4184613,15.7643233 C54.2220765,14.657551 53.9798666,13.7265627 53.6918363,12.9713537 C53.1681396,11.669272 52.4087835,10.5234373 51.4137608,9.53385433 C50.4187406,8.54427133 49.2666125,7.78906233 47.9573742,7.26822967 C47.198018,6.981771 46.261912,6.74088467 45.1490608,6.545573 C44.0362073,6.35026133 42.6876921,6.220052 41.103515,6.15494733 C39.519338,6.08984267 38.2559248,6.05078033 37.313273,6.03776033 C36.3706212,6.02474033 34.9893748,6.02474033 33.169536,6.03776033 C31.3496948,6.05078033 30.3481288,6.05729267 30.1648355,6.05729267 Z M60.329671,30.6666677 C60.329671,36.630208 60.2642086,40.7578117 60.1332838,43.0494787 C59.8714367,48.4661463 58.2479827,52.6588547 55.2629218,55.6276037 C52.2778587,58.596355 48.0621135,60.2109377 42.6156839,60.471354 C40.3114277,60.6015633 36.1611425,60.6666657 30.1648355,60.6666657 C24.1685261,60.6666657 20.0182433,60.6015633 17.7139847,60.471354 C12.2675575,60.2109377 8.05181231,58.596355 5.06674915,55.6276037 C2.08168835,52.6588547 0.458232,48.4661463 0.196384808,43.0494787 C0.0654623846,40.7578117 0,36.630208 0,30.6666677 C0,24.703125 0.0654623846,20.5755213 0.196384808,18.2838543 C0.458232,12.8671867 2.08168835,8.67447833 5.06674915,5.70572933 C8.05181231,2.736978 12.2675575,1.12239533 17.7139847,0.861979 C20.0182433,0.731772 24.1685261,0.666667333 30.1648355,0.666667333 C36.1611425,0.666667333 40.3114277,0.731772 42.6156839,0.861979 C48.0621135,1.12239533 52.2778587,2.736978 55.2629218,5.70572933 C58.2479827,8.67447833 59.8714367,12.8671867 60.1332838,18.2838543 C60.2642086,20.5755213 60.329671,24.703125 60.329671,30.6666677 Z\"\n }));\n};\n\nvar _default = Instagram;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Basic Caching implementation. \n * This implementation will be used for server environments\n */\n\nvar Cache = function () {\n function Cache(options) {\n _classCallCheck(this, Cache);\n\n this._ttl = 5 * 60000; // Defaults to 5 minutes\n if (options) {\n if (options.ttl) {\n this.ttl = options.ttl;\n }\n }\n }\n //Setting a value in the cache\n\n\n _createClass(Cache, [{\n key: \"set\",\n value: async function set(key, value, ttl) {\n return Promise.resolve(value);\n }\n //Delete a key from the cache\n\n }, {\n key: \"delete\",\n value: async function _delete(key) {\n return true;\n }\n //Setting a value in the cache\n\n }, {\n key: \"get\",\n value: async function get(key) {\n return false;\n }\n }]);\n\n return Cache;\n}();\n\nexports.default = Cache;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatHtml = formatHtml;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar removeParas = [];\nvar embeddedLinkStyleMatch = /(<a href=|<a [^\\s]* href=)/;\nvar embeddedWholeLinkStyleMatch = /^(<a href=|<a [^\\s]* href=).*<\\/a>$/;\nvar inlineStyleRemove = /\\s+style=\"[^\"]*\"/g;\nvar embeddedIolLinkStyleMatch = /a href=\"https?:\\/\\/([a-z]+\\.iol\\.co\\.za|iol\\.co\\.za)/i;\nvar embeddedNewslettersLinkStyleMatch = /a href=\"https?:\\/\\/(www\\.iolnewsletters|iolnewsletters|[^\\/]*iol\\.co\\.za\\/newsletters)/i;\nvar embeddedFacebookLinkStyleMatch = /a href=\"https?:\\/\\/(www\\.facebook\\.com|facebook\\.com)\\//i;\nvar embeddedTwitterLinkStyleMatch = /a href=\"https?:\\/\\/(www\\.twitter\\.com|twitter\\.com)\\//i;\nvar embeddedLinkedInLinkStyleMatch = /a href=\"https?:\\/\\/(linkedin\\.com|www\\.linkedin\\.com|za\\.linkedin\\.com)\\/in\\//i;\nvar sourceParaRegex = /^(FemaleFirst|AFP|DPA|Daily Mail|Daily Voice|REUTERS|BLOOMBERG|(The )?Washington Post|The Independent)$/i;\nvar newspaperLabels = {};\n\nfunction formatHtml(paragraphs) {\n var truncated = false;\n\n if (paragraphs.length) {\n if (paragraphs[paragraphs.length - 1] === '<hr>') {\n paragraphs = paragraphs.slice(0, paragraphs.length - 1);\n }\n }\n\n var reversedParagraphs = paragraphs.slice(0).reverse();\n var sourceIndex;\n reversedParagraphs.find(function (para, reverseIndex) {\n var index = paragraphs.length - 1 - reverseIndex;\n\n if (sourceParaRegex.test(para)) {\n sourceIndex = index;\n return true;\n } else {\n return false;\n }\n });\n var info = true;\n var afpIndex;\n reversedParagraphs.forEach(function (paragraph, reverseIndex) {\n var index = paragraphs.length - 1 - reverseIndex;\n\n if (info) {\n if (/^\\s*[A-Z]/.test(paragraph)) {\n info = false;\n }\n } else if (/^\\s*\\* /.test(paragraph)) {\n if (paragraphs.length > 15 && reverseIndex > 5) {\n paragraphs[index] = paragraph.replace(/^\\s*\\*\\s+/, '• ');\n }\n } else if (/^\\s*\\*[A-Z]/.test(paragraph)) {\n if (paragraphs.length > 15 && reverseIndex > 5) {\n paragraphs[index] = paragraph.replace(/^\\s*\\*/, '• ');\n }\n }\n\n if (/ (-|–|–) AFP$/.test(paragraph)) {\n paragraphs[index] = paragraph.replace(/ (-|–|–) AFP$/, '');\n afpIndex = index;\n }\n });\n\n if (afpIndex) {\n paragraphs.splice(afpIndex + 1, 0, 'AFP');\n }\n\n return paragraphs.map(function (paragraph) {\n return new HtmlParagraphFormatter(paragraph);\n }).filter(function (formatter) {\n return formatter.filter();\n }).map(function (formatter) {\n try {\n var html = formatter.format();\n\n if (!html) {\n if (formatter.paragraph) {\n html = '<p>' + formatter.paragraph + '</p>';\n }\n }\n\n return html;\n } catch (err) {\n return '<p>' + formatter.paragraph + '</p>';\n }\n }).value().join('\\n');\n}\n\nfunction getNewspaperSectionId(label) {\n if (/^([A-Za-z]*\\s)?Independent on Saturday$/i.test(label)) {\n return 'ios';\n } else if (/^[A-Z]?IOS$/i.test(label)) {\n return 'ios';\n } else if (/^Saturday Argus$/i.test(label)) {\n return 'weekend-argus';\n } else if (/^(The )?Star Motoring$/i.test(label)) {\n return 'the-star/motoring';\n }\n\n var section = newspaperLabels[label.toLowerCase()];\n\n if (section) {\n return section.category;\n }\n}\n\nvar HtmlParagraphFormatter = /*#__PURE__*/function () {\n function HtmlParagraphFormatter(paragraph) {\n _classCallCheck(this, HtmlParagraphFormatter);\n\n this.para = paragraph;\n this.para = this.para.trim();\n this.para = this.para.replace(/(\\*+)([A-Z])/, '$1 $2');\n this.text = this.para.replace(/(<([^>]+)>)/ig, '').trim();\n }\n\n _createClass(HtmlParagraphFormatter, [{\n key: \"filter\",\n value: function filter() {\n if (/^<iframe.+youtu/.test(this.para)) {\n return true;\n } else if (removeParas.includes(this.text)) {\n return false;\n } else if (embeddedNewslettersLinkStyleMatch.test(this.para)) {\n // mini\n return true;\n } else if (/getElement|CDATA/.test(this.para)) {\n return false;\n } else if (/^</.test(this.para)) {\n return true;\n } else if (/^ $/.test(this.text)) {\n return false;\n } else if (this.text.length >= 1 && this.text.length <= 2) {\n return false;\n } else {\n return true;\n }\n }\n }, {\n key: \"format\",\n value: function format() {\n this.para = this.para.replace(/-1\\.([0-9]+[0-9]{4})/g, '-$1'); // remove all legacy classic URLs e.g. 1.1234567\n\n this.para = this.para.replace(/http:\\/\\/www.iol.co.za/, 'https://www.iol.co.za');\n this.para = this.para.replace(/http:\\/\\/www.iol.co.za\\/outgoing.php3\\?URL_to\\=/g, ''); // strip unwanted outgoing.php links\n\n this.para = this.para.replace(/\\/outgoing.php3\\?URL_to\\=/g, ''); // strip unwanted outgoing.php links\n\n this.para = this.para.replace(/outgoing.php3\\?URL_to\\=/g, ''); // strip unwanted outgoing.php links\n\n this.para = this.para.replace(/httphttp/g, 'http'); // strip erroneous double http links\n\n this.para = this.para.replace(/\\\"\\/\\/classic\\.iol\\.co\\.za\\/newsletters(.*?)\\\">/, '\"//www.iol.co.za/newsletters\">');\n\n if (this.para.includes('<iframe')) {\n this.para = this.para.replace('<iframe', '<div class=\"iframeWrapper\"><iframe');\n this.para = this.para.replace('</iframe>', '</iframe></div>');\n }\n\n if (embeddedLinkStyleMatch.test(this.para)) {\n this.formatEmbeddedLink();\n } else {\n this.formatPlain();\n }\n\n var svgI = this.formatSVG();\n\n if (this.style) {\n var _svgI = this.formatSVG();\n\n return \"<p class=\\\"link link-\".concat(this.style, \"\\\">\").concat(_svgI + ' ' + this.para, \"</p>\");\n } else {\n return this.para;\n }\n }\n }, {\n key: \"formatSVG\",\n value: function formatSVG() {\n switch (this.style) {\n case 'email':\n return '<svg class=\"iconSvgEmail\" viewBox=\"0 0 1792 1792\"><path d=\"M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z\" /></svg>';\n\n case 'newsletters':\n return \"<svg class='iconSvgEmail' viewBox='0 0 1792 1792'><path d='M1792 710v794q0 66-47 113t-113 47h-1472q-66 0-113-47t-47-113v-794q44 49 101 87 362 246 497 345 57 42 92.5 65.5t94.5 48 110 24.5h2q51 0 110-24.5t94.5-48 92.5-65.5q170-123 498-345 57-39 100-87zm0-294q0 79-49 151t-122 123q-376 261-468 325-10 7-42.5 30.5t-54 38-52 32.5-57.5 27-50 9h-2q-23 0-50-9t-57.5-27-52-32.5-54-38-42.5-30.5q-91-64-262-182.5t-205-142.5q-62-42-117-115.5t-55-136.5q0-78 41.5-130t118.5-52h1472q65 0 112.5 47t47.5 113z'/></svg>\";\n\n case 'newswire':\n return \"<svg class='iconSvgNewswire' viewBox='0 0 1000 1000'><path d='M864.9,741.2v-192c0-29.3-23.8-53.1-53.1-53.1s-53,23.7-53,53.1v114.4h-26.1V549.2c0-29.3-23.7-53.1-53-53.1c-29.2,0-53,23.7-53,53.1v114.4h-26V549.2c0-13.8-5.3-26.4-14-35.9c66.6-51.3,109.6-131.9,109.6-222.5C696.4,135.7,570.7,10,415.6,10c-155.1,0-280.8,125.7-280.8,280.8c0,136.9,98,251,227.8,275.7v182.1c0,2.1,0.4,4,0.6,5.9v122.4c0,62.4,37.2,113.1,83.1,113.1h335.8c45.8,0,83-50.6,83-113.1V749C865.1,746.4,864.9,743.7,864.9,741.2z M161.3,290.8c0-140.3,114.1-254.3,254.3-254.3C555.8,36.4,670,150.5,670,290.8c0,85.5-42.4,161.3-107.4,207.5c-4.7-1.4-9.7-2.1-14.8-2.1c-23.2,0-42.7,14.8-50,35.4c-9.5,3.2-19.2,5.9-29.1,8v-118c51.6-21,88-71.6,88-130.8c0-77.9-63.1-141.1-141.1-141.1s-141.1,63.1-141.1,141.1c0,59.2,36.5,109.9,88.1,130.8v118C247.7,515.1,161.3,412.8,161.3,290.8z M415.7,253.8c-29.3,0-53.1,23.8-53.1,53.1v85.5c-36.6-19.2-61.7-57.6-61.7-101.7c0-63.3,51.5-114.7,114.7-114.7c63.2,0,114.6,51.4,114.6,114.7c0,44.1-25,82.5-61.5,101.6v-85.5C468.7,277.6,444.9,253.8,415.7,253.8z M468.7,663.6v-97.1c8.8-1.7,17.5-3.8,26.1-6.3v103.4H468.7z'></path></svg>\";\n\n case 'newspaper':\n return \"<svg class='iconSvgNewspaper' viewBox='0 0 1792 1792'><path d='M896 512h-384v384h384v-384zm128 640v128h-640v-128h640zm0-768v640h-640v-640h640zm640 768v128h-512v-128h512zm0-256v128h-512v-128h512zm0-256v128h-512v-128h512zm0-256v128h-512v-128h512zm-1536 960v-960h-128v960q0 26 19 45t45 19 45-19 19-45zm1664 0v-1088h-1536v1088q0 33-11 64h1483q26 0 45-19t19-45zm128-1216v1216q0 80-56 136t-136 56h-1664q-80 0-136-56t-56-136v-1088h256v-128h20z'/></svg>\";\n\n case 'facebook':\n return \"<svg class='iconSvgFacebook-f' viewBox='0 0 1792 1792'><path d='M1343 12v264h-157q-86 0-116 36t-30 108v189h293l-39 296h-254v759h-306v-759h-255v-296h255v-218q0-186 104-288.5t277-102.5q147 0 228 12z'/></svg>\";\n\n case 'twitter':\n return \"<svg class='iconSvgTwitter' viewBox='0 0 1792 1792'><path d='M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z'/></svg>\";\n\n case 'linkedIn':\n return \"<svg class='iconSvgLinkedin' viewBox='0 0 1792 1792'><path d='M477 625v991h-330v-991h330zm21-306q1 73-50.5 122t-135.5 49h-2q-82 0-132-49t-50-122q0-74 51.5-122.5t134.5-48.5 133 48.5 51 122.5zm1166 729v568h-329v-530q0-105-40.5-164.5t-126.5-59.5q-63 0-105.5 34.5t-63.5 85.5q-11 30-11 81v553h-329q2-399 2-647t-1-296l-1-48h329v144h-2q20-32 41-56t56.5-52 87-43.5 114.5-15.5q171 0 275 113.5t104 332.5z'/></svg>\";\n\n case 'forum':\n return \"<svg class='iconSvgForum' viewBox='0 0 1792 1792'><path d='M935.6,872.7c0,43.5,22.1,81.3,54.4,99.7v15.3c-9,1.4-18.3,2.1-27.6,2.1c-57.9,0-110-27.3-146.9-71.1c-22.3,6.7-45.9,10.3-70.4,10.3c-135.3,0-245-109.7-245-245c0-135.3,109.7-245,245-245s245,109.7,245,245c0,53-16.8,102-45.4,142.1C938.8,840.2,935.6,856,935.6,872.7L935.6,872.7z M206.2,221.9c-56.3,51.5-87.3,117.7-87.3,186.4c0,38.6,9.5,76,28.3,111.2c19.4,36.3,48.5,69.5,84.2,95.9c25.8,19.1,43.2,49.7,47.8,84.1c1.5,11.5,2.5,23,2.9,34.6c6.4-5.9,12.5-12.3,18.6-19.1c20.6-23.1,48.3-35.9,77-35.9c4.6,0,9.2,0.3,13.7,1c17.8,2.5,36,3.8,54.1,3.8v122.5c-23.1,0-45.7-1.7-67.8-4.8C284.1,906.9,172.4,925.8,64.4,928.6v-25.8c58.3-32.1,108.9-90.7,108.9-157.6c0-9.3-0.6-18.5-1.8-27.5C73,644.8,10,533.3,10,408.4C10,188.5,205,10.2,445.6,10.2c236.9,0,429.6,172.8,435.4,388.1c-35-17.5-73-28.2-112.5-31.2c-9.8-53.7-38.6-104.1-83.6-145.2c-30.1-27.5-65.4-49.2-105.2-64.5c-42.3-16.3-87.4-24.6-134.2-24.6c-46.7,0-91.9,8.3-134.2,24.6C271.7,172.7,236.3,194.4,206.2,221.9L206.2,221.9z'></path></svg>\";\n\n case 'default':\n return \"<svg class='iconSvgLink' viewBox='0 0 1792 1792'><path d='M922.4,81.4l-3.9-3.9C828.5-12.5,681-12.5,591,77.6L382.2,286.3c-90.1,90.1-90.1,237.5,0,327.6l3.9,3.9c7.5,7.5,15.5,14.3,23.7,20.5l76.4-76.4c-8.9-5.3-17.3-11.6-25-19.2l-3.9-3.9c-48.9-48.9-48.9-128.5,0-177.4l208.8-208.7c48.9-48.9,128.5-48.9,177.4,0l3.9,3.9c48.9,48.9,48.9,128.5,0,177.4l-94.4,94.4c16.4,40.5,24.2,83.6,23.5,126.7l146-146C1012.5,319,1012.5,171.5,922.4,81.4L922.4,81.4z M613.9,382.2c-7.5-7.5-15.5-14.3-23.7-20.5l-76.4,76.4c8.9,5.3,17.3,11.6,25,19.2l3.9,3.9c48.9,48.9,48.9,128.5,0,177.4L333.9,847.4c-48.9,48.9-128.5,48.9-177.4,0l-3.9-3.9c-48.9-48.9-48.9-128.5,0-177.4l94.4-94.4c-16.4-40.5-24.2-83.6-23.5-126.7l-146,146c-90.1,90.1-90.1,237.5,0,327.6l3.9,3.9c90.1,90.1,237.5,90.1,327.6,0l208.7-208.7c90.1-90.1,90.1-237.5,0-327.6L613.9,382.2L613.9,382.2z'></path></svg>\";\n\n case 'instagram':\n return \"<svg class='iconSvgInstagram' viewBox='0 0 1792 1792'><path d='M879,838.2V424.7h-86.2c8.5,26.8,12.7,54.6,12.7,83.5c0,53.6-13.6,103-40.8,148.3c-27.2,45.3-64.2,81.1-111,107.5c-46.8,26.3-97.8,39.5-153.1,39.5c-83.8,0-155.5-28.8-215-86.5c-59.6-57.7-89.3-127.3-89.3-209c0-28.9,4.2-56.8,12.7-83.5h-90V838c0,11.1,3.7,20.3,11.2,27.8c7.5,7.5,16.7,11.2,27.8,11.2h682.1c10.6,0,19.8-3.7,27.4-11.2c7.7-7.5,11.5-16.7,11.5-27.8V838.2z M697.8,498.1c0-52.8-19.2-97.7-57.7-134.9c-38.5-37.2-85-55.8-139.4-55.9c-54,0-100.3,18.6-138.8,55.9s-57.7,82.2-57.7,134.9c0,52.7,19.2,97.7,57.7,134.9c38.5,37.2,84.7,55.9,138.8,55.9c54.4,0,100.9-18.6,139.4-55.9C678.6,595.8,697.8,550.8,697.8,498.1z M879,268.4V163.1c0-11.9-4.2-22.2-12.7-31c-8.5-8.7-18.9-13.1-31.3-13.1H724c-12.4,0-22.8,4.4-31.3,13.1c-8.5,8.7-12.7,19-12.7,31v105.3c0,12.4,4.2,22.8,12.7,31.3c8.5,8.5,18.9,12.7,31.3,12.7h111c12.4,0,22.8-4.2,31.3-12.7C874.8,291.2,879,280.8,879,268.4z M990,135.7v728.6c0,34.5-12.3,64-37,88.7c-24.7,24.7-54.2,37-88.7,37H135.7c-34.5,0-64-12.3-88.7-37c-24.7-24.7-37-54.2-37-88.7V135.7c0-34.5,12.3-64,37-88.7c24.7-24.7,54.2-37,88.7-37h728.6c34.5,0,64,12.3,88.7,37C977.7,71.7,990,101.2,990,135.7z'></path></svg>\";\n\n case 'info':\n return \"<svg class='iconSvgInfo' viewBox='0 0 1792 1792'><path d='M500,10C229.4,10,10,229.4,10,500s219.4,490,490,490s490-219.4,490-490S770.6,10,500,10L500,10z M500,898.1c-219.9,0-398.1-178.2-398.1-398.1S280.1,101.9,500,101.9S898.1,280.1,898.1,500S719.9,898.1,500,898.1L500,898.1z M438.8,255h122.5v122.5H438.8V255z M622.5,745h-245v-61.3h61.3V500h-61.3v-61.3h183.8v245h61.3V745z'></path></svg>\";\n\n case 'indy':\n return '';\n\n case 'bullet':\n return '';\n\n default:\n return false;\n }\n }\n }, {\n key: \"formatEmbeddedLink\",\n value: function formatEmbeddedLink() {\n this.para = this.para.replace(/\\.\\.+/, '.');\n this.para = this.para.replace(/<strong>\\s*([^<]*)\\s*<\\/strong>/ig, '$1');\n\n if (inlineStyleRemove.test(this.para)) {\n this.para = this.para.replace(inlineStyleRemove, '');\n this.para = this.para.replace(/(<span>|<\\/span>)/gi, '');\n this.para = this.para.trim();\n }\n\n this.para = this.para.replace(/\\/\\/sbeta\\.iol\\.co\\.za/g, '//www.iol.co.za');\n this.para = this.para.replace(/\\/\\/www,iol\\.co\\.za/g, '//www.iol.co.za'); // erroneous comma e.g. see 1943061\n\n this.para = this.para.replace(/^<span>(.*)<\\/span>$/ig, '$1');\n this.para = this.para.replace(/href=\"((?!mailto:)\\S*\\@(\\S*))\">/ig, 'href=\"mailto:$1\">');\n this.para = this.para.replace(/href=\"((?!mailto:) \\S*\\@(\\S*))\">/ig, 'href=\"mailto:$1\">');\n this.para = this.para.replace(/<a href=\\\"(.*)\\/index.php(.*)\\\">/g, '<a>');\n this.para = this.para.replace(/iol\\.co\\.za\\/business\\\"/g, 'iol.co.za/business-report\"');\n this.para = this.para.replace(/iol\\.co\\.za\\/business\\//g, 'iol.co.za/business-report/');\n\n if (/href=\"”[^\"]+”\"/.test(this.para)) {\n this.para = this.para.replace(/href=\"”([^\"]+)”\"/, 'href=\"$1\"');\n } else if (/^E-?mail your opinion/.test(this.text)) {\n this.para = this.para.replace(/<\\/?strong>/g, '');\n this.style = 'email';\n }\n\n this.para = this.para.replace(/ href=\"\\s+/, ' href=\"');\n this.para = this.para.replace(/ href=\\\"”http/, ' href=\"http');\n this.para = this.para.replace(/”\"/, '\"');\n this.para = this.para.replace(/ href=\\\"`/, ' href=\"');\n this.para = this.para.replace(/`\"/, '\"');\n this.para = this.para.replace(/href=\\\"www/g, 'href=\"http://www');\n this.para = this.para.replace(/href=\"http:\\/\\/www.africanindy/g, 'href=\"https://www.africanindy');\n this.text = this.para.replace(/(<([^>]+)>)/ig, '').trim();\n\n if (embeddedNewslettersLinkStyleMatch.test(this.para)) {\n this.style = 'newsletters';\n } else if (embeddedIolLinkStyleMatch.test(this.para)) {\n this.para = this.para.replace(/( | )+/g, ' ');\n\n if (/^\\s*<a .*<\\/a>\\s*$/.test(this.para)) {\n this.style = 'indy';\n }\n\n if (/mini/.test(siteProps.siteHost)) {\n this.para = this.para.replace(/\\/\\/www\\.iol\\.co\\.za/g, '//mini.iol.co.za');\n }\n } else if (embeddedFacebookLinkStyleMatch.test(this.para)) {\n this.style = 'facebook';\n } else if (embeddedTwitterLinkStyleMatch.test(this.para)) {\n this.style = 'twitter';\n\n if (/ href=\"https?:\\/\\/twitter.com\\/?\".*Daily News/.test(this.para)) {\n this.para = this.para.replace(/ href=\"https?:\\/\\/twitter.com\\/?\"/, ' href=\"https://twitter.com/dailynewssa\"');\n }\n } else if (embeddedLinkedInLinkStyleMatch.test(this.para)) {\n this.style = 'linkedIn';\n } else if (embeddedWholeLinkStyleMatch.test(this.para)) {\n if (/ href=\"https?:\\/\\/(www\\.)?babynet\\.co\\.za/i.test(this.para) && /join our Babynet forum/i.test(this.text)) {\n this.para = this.text.replace(/Babynet forum/i, '<a href=\"http://www.babynet.co.za/\" target=\"_blank\">Babynet forum</a>');\n this.style = 'forum';\n }\n\n this.style = this.style || 'default';\n } else if (/^See also: /i.test(this.text)) {\n this.para = this.para.replace(/^<h1[^>]*>(.*)<\\/h1>$/ig, '$1');\n this.para = this.para.replace(/^<span[^>]*>(.*)<\\/span>$/ig, '$1');\n\n if (/Instagram/.test(this.text)) {\n this.style = this.style || 'instagram';\n } else {\n this.style = this.style || 'default';\n }\n }\n }\n }, {\n key: \"formatPlain\",\n value: function formatPlain() {\n if (this.text === 'TALK TO US:') {\n this.para = 'Talk us to us via Twitter and Facebook.';\n this.style = 'info';\n return;\n }\n\n if (this.text === 'IOL') {\n this.style = 'indy';\n this.para = '<a href=\"/\">IOL</a>';\n return;\n }\n\n if (inlineStyleRemove.test(this.para)) {\n this.para = this.para.replace(inlineStyleRemove, '');\n }\n\n var length = this.para.length;\n this.para = this.para.replace(/ (iollifestyle@inl\\.co\\.za)/g, ' <a href=\"mailto:$1\">$1</a>');\n\n if (this.para.length !== length) {\n this.style = 'email';\n }\n\n this.para = this.para.replace(/ at http:\\/\\/([\\w\\.]*)([\\/\\w\\.]*pdf)/, ' at <a href=\"http://$1$2\">$1 (PDF)</a>');\n this.para = this.para.replace(/ https?:\\/\\/www\\.youtu/g, ' https://youtu');\n\n if (/ https?:\\/\\/youtu/.test(this.para)) {\n this.para = this.para.replace(/ https?:\\/\\/(youtu\\S*)/g, ' <a href=\"https://$1\" target=\"_blank\">youtube</a>');\n this.style = 'youtube';\n }\n\n if (/ (go\\s*to|visit|see):?\\s*www\\.[a-z]+\\.com/i.test(this.para)) {\n this.para = this.para.replace(/\\s*(www\\.[a-z]+\\.com)/ig, ' <a href=\"http://$1\" target=\"_blank\">$1</a>');\n this.style = 'default';\n }\n\n var html = this.para.replace(/^<strong>(.*)<\\/strong>$/i, '$1');\n var link;\n\n if (/^\\* \\*/.test(html)) {} else if (/^• /.test(html)) {\n this.style = this.style || 'bullet';\n this.para = html.replace(/^• /, '');\n } else if (/^\\*+ /.test(html)) {\n this.style = this.style || 'info';\n this.para = html.replace(/^\\*+ /, '');\n\n if (/^[A-Z]/.test(this.para)) {\n this.sectionId = getNewspaperSectionId(this.para);\n }\n } else if (/^\\*+\\s*(Use IOL|Use our |On IOL)/i.test(this.text)) {\n this.style = this.style || 'info';\n this.para = this.text.replace(/^\\*+\\s*/, '');\n } else if (/^l /i.test(this.para)) {\n this.style = this.style || 'info';\n this.para = this.para.substring(2);\n } else if (/^@\\s?[A-Za-z0-9_]+$/.test(this.text)) {\n this.style = 'twitter';\n var name = this.text.substring(1).trim();\n this.para = \"<a href=\\\"https://twitter.com/\".concat(name, \"\\\">@\").concat(name, \"</a>\");\n } else if (/^African News Agency$/.test(this.text)) {\n this.style = 'twitter';\n this.para = \"<a href=\\\"https://twitter.com/afrinewsagency\\\">\".concat(this.text, \"</a>\");\n } else if (/^REUTERS$/i.test(this.text)) {\n this.style = 'newswire';\n this.para = 'Reuters';\n } else if (/^BLOOMBERG$/.test(this.text)) {\n this.style = 'newswire';\n this.para = 'Bloomberg';\n } else if (/^(FemaleFirst|AFP|DPA|Daily Mail|Daily Voice|REUTERS|BLOOMBERG|The Washington Post|Washington Post|The Independent)$/i.test(this.text)) {\n this.style = 'newswire';\n this.para = this.text;\n } else if (/^For more information/i.test(this.text)) {\n this.style = this.style || 'info';\n } else if (/^\\* Follow @IndyCapeSport on Twitter/i.test(this.text)) {\n this.style = 'info';\n this.para = this.para.replace(/<\\/?strong>/g, '');\n this.para = this.para.replace(/^\\*\\s+/g, '');\n this.para = this.para.replace(/^Follow @IndyCapeSport/, 'Follow <a href=\"https://twitter.com/IndyCapeSport\">@IndyCapeSport</a>');\n } else if (/^@IndyCapeSport$/i.test(this.text)) {\n this.style = 'info';\n this.para = \"<a href=\\\"https://twitter.com/IndyCapeSport\\\">\".concat(this.para, \"</a>\");\n } else if (/^\\S*@inl\\.co\\.za$/.test(this.text)) {\n this.style = 'email';\n this.paragaph = \"<a href=\\\"mailto:\".concat(this.text, \"\\\">\").concat(this.para, \"</a>\");\n } else {\n this.sectionId = getNewspaperSectionId(this.text);\n }\n\n if (this.sectionId) {\n this.style = 'newspaper';\n this.para = \"<a href=\\\"/\".concat(this.sectionId, \"\\\">\").concat(this.text, \"</a>\");\n } else {\n this.matchTwitter();\n }\n }\n }, {\n key: \"matchTwitter\",\n value: function matchTwitter() {\n var match = this.para.match(/ Twitter:?\\s*@?([A-Za-z0-9_]+).?$/);\n\n if (match) {\n var name = match[1];\n this.style = 'twitter';\n this.para = this.para.substring(0, match.index) + \" Twitter: <a href=\\\"https://twitter.com/\".concat(name, \"\\\">@\").concat(name, \"</a>\");\n }\n }\n }]);\n\n return HtmlParagraphFormatter;\n}();","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar PlayBtn = function PlayBtn(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 36 37\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#000000\",\n d: \"M18,0.879121231 C21.2656246,0.879121231 24.2773437,1.68380763 27.0351561,3.29318321 C29.7929685,4.9025588 31.9765624,7.08615139 33.5859366,9.84396517 C35.1953122,12.6017776 36,15.6134953 36,18.8791213 C36,22.1447459 35.1953122,25.1564651 33.5859366,27.9142774 C31.9765624,30.6720898 29.7929685,32.8556838 27.0351561,34.465058 C24.2773437,36.0744336 21.2656246,36.87912 18,36.87912 C14.7343754,36.87912 11.7226563,36.0744336 8.9648439,34.465058 C6.20703153,32.8556838 4.02343756,30.6720898 2.41406197,27.9142774 C0.804687791,25.1564651 0,22.1447459 0,18.8791213 C0,15.6134953 0.804687791,12.6017776 2.41406197,9.84396517 C4.02343756,7.08615139 6.20703153,4.9025588 8.9648439,3.29318321 C11.7226563,1.68380763 14.7343754,0.879121231 18,0.879121231 Z M25.1868123,19.940044 C25.6263729,19.6927911 25.8461538,19.3150434 25.8461538,18.8068021 C25.8461538,18.2985597 25.6263729,17.920812 25.1868123,17.6735603 L13.9780209,11.0801535 C13.5521969,10.819164 13.1126363,10.8122963 12.6593403,11.0595492 C12.2197797,11.3205375 12,11.7051529 12,12.2133954 L12,25.4002077 C12,25.9084501 12.2197797,26.2930655 12.6593403,26.5540538 C12.87912,26.6639443 13.0989009,26.7188895 13.3186806,26.7188895 C13.5521969,26.7188895 13.7719778,26.6570766 13.9780209,26.5334495 L25.1868123,19.940044 Z\"\n }));\n};\n\nvar _default = PlayBtn;\nexports[\"default\"] = _default;","import axios from 'axios'\nimport { call, put, takeLatest, takeEvery, select } from 'redux-saga/effects'\nimport IonArticle from 'ion-article'\nimport { fetchArticlesAPI } from './articles'\nimport { USER_SET_VISITORID } from './user'\nimport Cache from 'ion-cache'\n\nexport const FETCH_ARTICLE_CONTENT = 'api/FETCH_ARTICLE_CONTENT'\nexport const FETCH_ARTICLE_CONTENT_SUCCESS = 'api/FETCH_ARTICLE_CONTENT_SUCCESS'\nexport const FETCH_ARTICLE_CONTENT_ERROR = 'api/FETCH_ARTICLE_CONTENT_ERROR'\nexport const FETCH_ARTICLE = 'api/FETCH_ARTICLE'\nexport const FETCH_ARTICLE_SUCCESS = 'api/FETCH_ARTICLE_SUCCESS'\nexport const FETCH_ARTICLE_VERIFY_URL = 'api/FETCH_ARTICLE_VERIFY_URL'\nexport const FETCH_ARTICLE_ERROR = 'api/FETCH_ARTICLE_ERROR'\nexport const FETCH_ARTICLE_NOT_FOUND = 'api/FETCH_ARTICLE_NOT_FOUND'\nexport const SET_PREVIEW_ARTICLE = 'api/SET_PREVIEW_ARTICLE'\nexport const SUBMIT_COMPETITION = 'api/SUBMIT_COMPETITION'\nexport const SUBMIT_COMPETITION_SUCCESS = 'api/SUBMIT_COMPETITION_SUCCESS'\nexport const SUBMIT_COMPETITION_ERROR = 'api/SUBMIT_COMPETITION_ERROR'\nexport const SERVER_ARTICLE_RENDER = 'api/SERVER_ARTICLE_RENDER'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '/data/content' : process.env.RAZZLE_CONTENT\nconst CANONICAL_FETCHER_URL = typeof window !== 'undefined' ? '/data/canonical/' : process.env.RAZZLE_CANONICAL_FETCHER_URL\n\nconst cache = new Cache()\n\nexport async function fetchArticleAPI (contentKey) {\n const key = '/article/' + contentKey\n const result = await cache.get(key)\n if (result) {\n return result\n }\n return axios.get(SERVER_URL + key)\n .then(response => {\n // console.log('fetchArticleAPI:', SERVER_URL + key)\n return cache.set(key, response.data, 60000)\n })\n .catch(error => {\n console.log('fetchArticleAPI:', error)\n throw error\n })\n}\n\nconst COMPETITION_SERVER_URL = typeof window !== 'undefined' ? '' : 'http://localhost:' + process.env.PORT\n\nasync function fetchCompetition (competitionSlug) {\n const key = '/competition/' + competitionSlug\n const result = await cache.get(key)\n if (result) {\n return result\n }\n return axios.get(COMPETITION_SERVER_URL + '/data/competition/' + competitionSlug)\n .then(response => {\n return cache.set(key, response.data)\n })\n .then(response => {\n return response\n })\n .catch(error => {\n console.error(error)\n throw error\n })\n}\n\nconst submitCompetitionAPI = (formData) => {\n return axios.post(COMPETITION_SERVER_URL + '/data/competition',\n formData\n )\n .then(data => data.data)\n .catch(error => console.error(error))\n}\n\nasync function fetchCanonicalURL (contentKey) {\n return axios.get(CANONICAL_FETCHER_URL + '/' + contentKey)\n .then(response => {\n return response\n })\n .catch(error => {\n console.error(error)\n throw error\n })\n}\n\nasync function fetchIonArticle (content) {\n return axios({\n method: 'post',\n headers: { 'Content-Type': 'text/plain' },\n url: SERVER_URL + '/preview',\n data: content\n })\n .then(data => data.data)\n .catch(error => console.error(error))\n}\n\nfunction * fetchArticleContentSaga ({ contentKey }) {\n try {\n const res = yield call(fetchArticleAPI, contentKey)\n yield put({ type: FETCH_ARTICLE_CONTENT_SUCCESS, payload: res })\n } catch (e) {\n yield put({ type: FETCH_ARTICLE_CONTENT_ERROR, payload: e.message })\n }\n}\n\nexport function * watchFetchArticleContent () {\n yield takeLatest(FETCH_ARTICLE_CONTENT, fetchArticleContentSaga)\n}\n\nfunction fetchVisitorId () {\n let result = false\n if (typeof window !== 'undefined' && window.localStorage) {\n result = window.localStorage.getItem('visitorId')\n }\n if (!result) {\n result = Math.random().toString(36).substr(2, 9)\n if (typeof window !== 'undefined' && window.localStorage) {\n window.localStorage.setItem('visitorId', result)\n }\n }\n return result\n}\n\nfunction * fetchArticleSaga ({ contentKey }) {\n try {\n // const start = new Date()\n const res = yield call(fetchArticleAPI, contentKey)\n const article = new IonArticle(res)\n let canonicalUri = '/' + article.getCanonicalUri()\n const competitionSlug = article.getCompetitionSlug()\n if (competitionSlug) {\n try {\n article.competition = yield call(fetchCompetition, competitionSlug)\n article.competitionExpired = false\n } catch (e) {\n article.competitionExpired = true\n }\n // article.bodyHTML = article.setCompetition(competitionSlug, competition.competition)\n }\n\n if (article.titleKey !== process.env.RAZZLE_TITLE_KEY) {\n const res = yield call(fetchCanonicalURL, contentKey)\n canonicalUri = res.data.url\n }\n let nextArticles = []\n try {\n nextArticles = yield call(fetchArticlesAPI, canonicalUri.split('/')[1], 0, 9)\n } catch (e) {\n console.log('Unable to fetch nextArticles')\n }\n article.visitorId = yield select(getVisitorId)\n if (!article.visitorId) {\n article.visitorId = fetchVisitorId()\n yield put({ type: USER_SET_VISITORID, payload: article.visitorId })\n }\n\n yield put({ type: FETCH_ARTICLE_VERIFY_URL, payload: canonicalUri })\n yield put({ type: FETCH_ARTICLE_SUCCESS, payload: article, readNext: nextArticles.contents })\n // console.log(' Fetching article extras', contentKey, 'took', new Date() - start, 'ms')\n } catch (e) {\n if (e.response && e.response.status === 404) {\n yield put({ type: FETCH_ARTICLE_NOT_FOUND, payload: e.message })\n } else {\n console.error('ERROR fetchArticleSaga', e)\n yield put({ type: FETCH_ARTICLE_ERROR, payload: e.message })\n }\n }\n}\n\nexport function * watchFetchArticle () {\n yield takeLatest(FETCH_ARTICLE, fetchArticleSaga)\n}\n\nfunction * setPreviewArticleSaga ({ payload }) {\n try {\n const res = yield call(fetchIonArticle, payload)\n yield put({ type: FETCH_ARTICLE_SUCCESS, payload: res, readNext: [] })\n // console.log(' Fetching article extras', contentKey, 'took', new Date() - start, 'ms')\n } catch (e) {\n console.log('setPreviewArticleSaga ERROR', e)\n yield put({ type: FETCH_ARTICLE_ERROR, payload: e.message })\n }\n}\n\nfunction * submitCompetitionSaga ({ payload }) {\n const formData = payload\n try {\n const res = yield call(submitCompetitionAPI, formData)\n if (res.success) {\n yield put({ type: SUBMIT_COMPETITION_SUCCESS })\n } else {\n yield put({ type: SUBMIT_COMPETITION_ERROR, payload: res.errors })\n }\n // let article = yield select(getArticle)\n // article.bodyHTML = article.bodyHTML.replace(/(<form([^]*)>)([.]*)(<\\/form>)/g, '$1<p id=\"success-message\">You have successfully entered our competition</p>$2')\n // yield put({ type: SUBMIT_COMPETITION_SUCCESS, payload: article })\n } catch (e) {\n console.error('ERROR while submitting to competition', e.message)\n yield put({ type: SUBMIT_COMPETITION_ERROR, payload: { message: e.message } })\n }\n}\n\nexport function * watchPreviewArticle () {\n yield takeLatest(SET_PREVIEW_ARTICLE, setPreviewArticleSaga)\n}\n\nexport function * watchSubmitCompetition () {\n yield takeEvery(SUBMIT_COMPETITION, submitCompetitionSaga)\n}\n\n// Saga actions\nexport const getVisitorId = (state) => state.user.visitorId\nexport const getIsLoggedIn = (state) => state.user.userToken\nexport const getArticle = (state) => state.article.article\nexport const fetchArticleContent = (contentKey) => ({ type: FETCH_ARTICLE_CONTENT, isFetching: true, hasFetched: false, contentKey })\nexport const fetchArticle = (contentKey) => ({ type: FETCH_ARTICLE, isFetching: true, hasFetched: false, contentKey })\nexport const setPreviewArticle = (data) => ({ type: SET_PREVIEW_ARTICLE, payload: data })\nexport const submitCompetition = (data) => ({ type: SUBMIT_COMPETITION, payload: data })\nexport const serverArticleRender = (payload) => ({ type: SERVER_ARTICLE_RENDER, payload })\n\nexport const initialState = {\n lastFetch: 0,\n didInvalidate: false,\n isFetching: false,\n hasFetched: false,\n hasError: false,\n is404: false,\n checkCanonical: false,\n canonical: null,\n error: null,\n article: null, // do not mutate these\n previewArticle: false,\n readNext: [],\n readArticles: []\n}\n\nexport const Reducer = (state = initialState, { type, payload, readNext, meta }) => {\n switch (type) {\n case SET_PREVIEW_ARTICLE:\n return Object.assign({}, state, {\n previewArticle: true\n })\n case FETCH_ARTICLE_VERIFY_URL:\n return Object.assign({}, state, {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n hasError: false,\n is404: false,\n checkCanonical: true,\n canonical: payload,\n error: null\n })\n case FETCH_ARTICLE_CONTENT:\n // Do not update the state\n return state\n case FETCH_ARTICLE:\n return Object.assign({}, state, {\n article: {},\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n is404: false,\n hasError: false,\n checkCanonical: false,\n canonical: null,\n error: null\n })\n case FETCH_ARTICLE_CONTENT_ERROR:\n // Do not update the state\n return state\n case FETCH_ARTICLE_NOT_FOUND:\n return Object.assign({}, state, {\n article: {},\n hasError: true,\n is404: true,\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n checkCanonical: false,\n canonical: null\n })\n case FETCH_ARTICLE_ERROR:\n return Object.assign({}, state, {\n article: {},\n hasError: true,\n is404: false,\n error: payload,\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n checkCanonical: false,\n canonical: null\n })\n case FETCH_ARTICLE_CONTENT_SUCCESS:\n // Do not update the state\n return state\n case FETCH_ARTICLE_SUCCESS:\n return Object.assign({}, state, {\n lastFetch: new Date(),\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n article: payload,\n readNext,\n hasError: false,\n is404: false,\n checkCanonical: false,\n // canonical: null,\n error: null\n })\n case SUBMIT_COMPETITION:\n return Object.assign({}, state, {\n isSubmitting: true,\n hasSubmitted: false,\n hasErrorSubmit: false,\n formData: payload\n })\n case SUBMIT_COMPETITION_SUCCESS:\n return Object.assign({}, state, {\n isSubmitting: false,\n hasSubmitted: true,\n hasErrorSubmit: false\n })\n case SUBMIT_COMPETITION_ERROR:\n return Object.assign({}, state, {\n isSubmitting: false,\n hasSubmitted: false,\n hasErrorSubmit: true,\n message: payload\n })\n default:\n return state\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ClientOnly = ClientOnly;\nexports[\"default\"] = void 0;\nexports.useHasMounted = useHasMounted;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _excluded = [\"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction useHasMounted() {\n var _React$useState = _react[\"default\"].useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n hasMounted = _React$useState2[0],\n setHasMounted = _React$useState2[1];\n\n _react[\"default\"].useEffect(function () {\n setHasMounted(true);\n }, []);\n\n return hasMounted;\n}\n\nfunction ClientOnly(_ref) {\n var children = _ref.children,\n delegated = _objectWithoutProperties(_ref, _excluded);\n\n var hasMounted = useHasMounted();\n\n if (!hasMounted) {\n return null;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", delegated, children);\n}\n\nvar _default = ClientOnly;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar ViewsIco = function ViewsIco(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n width: props.width,\n height: props.height,\n viewBox: \"0 0 22 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"M11 0.5C6 0.5 1.73 3.61 0 8C1.73 12.39 6 15.5 11 15.5C16 15.5 20.27 12.39 22 8C20.27 3.61 16 0.5 11 0.5ZM11 13C8.24 13 6 10.76 6 8C6 5.24 8.24 3 11 3C13.76 3 16 5.24 16 8C16 10.76 13.76 13 11 13ZM11 5C9.34 5 8 6.34 8 8C8 9.66 9.34 11 11 11C12.66 11 14 9.66 14 8C14 6.34 12.66 5 11 5Z\",\n fill: \"black\"\n }));\n};\n\nvar _default = ViewsIco;\nexports[\"default\"] = _default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.BetaTimestamps = BetaTimestamps;\nexports.formatAgo = formatAgo;\nexports.getDate = getDate;\nexports.formatDate = formatDate;\nexports.parse = parse;\n\nvar logger = console;\n\nvar monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nfunction BetaTimestamps(timestamp, defaultValue) {\n if (isNaN(timestamp)) {\n // logger.error('formatAgo', timestamp)\n return defaultValue;\n }\n var now = new Date().getTime();\n var duration = now - timestamp;\n duration = Math.floor(duration / 1000);\n if (duration <= 1) {\n return '1s ago';\n }\n if (duration < 60) {\n return duration + 's ago';\n }\n duration = Math.floor(duration / 60);\n if (duration <= 1) {\n return '1m ago';\n }\n if (duration < 60) {\n return duration + 'm ago';\n }\n // if (duration < 120) {\n // return `${duration}m`;\n // }\n duration = Math.floor(duration / 60);\n if (duration <= 1) {\n return '1h ago';\n }\n if (duration < 4) {\n return duration + 'h ago';\n }\n if (duration <= 24) {\n return duration + 'h ago';\n }\n // duration = Math.floor(duration / 24);\n // if (duration <= 1) {\n // return '1d ago';\n // }\n // if (duration < 60) {\n // return `${duration}d ago`;\n // }\n return defaultValue;\n}\n\nfunction formatAgo(date) {\n if (!date) {\n // logger.error('formatAgo empty')\n } else if (!isNaN(date)) {\n return BetaTimestamps(date, formatDate(date, false));\n } else if (typeof date === 'string') {\n var timestamp = void 0;\n if (date.length < 16) {\n // logger.warn('formatAgo string', date)\n return date;\n } else if (date.length === 16) {\n timestamp = Date.parse(date + 'Z');\n } else {\n timestamp = Date.parse(date);\n }\n // logger.debug('formatAgo', date, BetaTimestamps.formatAgo(timestamp, formatDate(date, false)))\n return BetaTimestamps(timestamp, formatDate(date, false));\n } else {\n // logger.error('formatAgo type', typeof date)\n }\n}\n\nfunction getDate(date) {\n if (Number.isInteger(date)) {\n return new Date(date);\n } else if (typeof date === 'string') {\n if (date.length === 16) {\n return new Date(date + 'Z');\n } else {\n // logger.warn('formatDate length', date)\n return new Date(date);\n }\n } else if ((typeof date === 'undefined' ? 'undefined' : _typeof(date)) === 'object') {\n return date;\n } else {\n logger.warn('formatDate', typeof date === 'undefined' ? 'undefined' : _typeof(date));\n }\n}\n\nfunction formatDate(date, timeStamp) {\n if (Number.isInteger(date)) {\n return formatDateString(new Date(date).toString(), timeStamp);\n } else if (typeof date === 'string') {\n if (date.substr(date.length - 1) === 'Z') {\n return formatDateString(new Date(date).toString(), timeStamp);\n } else if (date.length === 16) {\n return formatDateString(new Date(date + 'Z').toString(), timeStamp);\n } else {\n logger.warn('formatDate', date);\n }\n } else if ((typeof date === 'undefined' ? 'undefined' : _typeof(date)) === 'object') {\n return formatDateString(date.toString(), timeStamp);\n } else {\n logger.warn('formatDate', typeof date === 'undefined' ? 'undefined' : _typeof(date));\n }\n}\n\nfunction formatDateString(string, timeStamp) {\n if (string.length >= 21) {\n var dd = string.substring(8, 10);\n var mmm = string.substring(4, 7);\n var yyyy = string.substring(11, 15);\n var hh = string.substring(16, 18);\n var mm = string.substring(19, 21);\n var monthName = getFullMonthName(mmm);\n if (parseInt(dd) < 1 || parseInt(dd) > 31 || parseInt(yyyy) < 2000 || parseInt(yyyy) > 2020 || !monthName) {\n // logger.warn('formatDateString', string, dd, mmm, yyyy)\n return string;\n }\n if (dd.substring(0, 1) === '0') {\n dd = dd.substring(1);\n }\n var dateString = dd + ' ' + monthName + ' ' + yyyy;\n if (timeStamp) {\n if (hh > 12) {\n hh -= 12;\n dateString += ', ' + hh + ':' + mm + 'pm';\n } else if (parseInt(hh) === 12) {\n dateString += ', ' + hh + ':' + mm + 'pm';\n } else {\n dateString += ', ' + hh + ':' + mm + 'am';\n }\n }\n return dateString;\n } else {\n // logger.warn('formatDateString', string)\n return string;\n }\n}\n\nfunction getFullMonthName(string) {\n return monthNames.filter(function (name) {\n return name.substr(0, string.length) === string;\n });\n}\n\nfunction parse(string) {\n if (typeof string === 'string') {\n if (string.length === 16) {\n return Date.parse(string + 'Z');\n } else {\n return Date.parse(string);\n }\n }\n}","import axios from 'axios'\nimport { call, put, takeLatest } from 'redux-saga/effects'\n\nexport const FETCH_STATICPAGE = 'api/FETCH_STATICPAGE'\nexport const FETCH_STATICPAGE_SUCCESS = 'api/FETCH_STATICPAGE_SUCCESS'\nexport const FETCH_STATICPAGE_ERROR = 'api/FETCH_STATICPAGE_ERROR'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '' : 'http://localhost:' + process.env.PORT\n\nconst fetchStaticPageAPI = (pageName) => {\n return axios.get(SERVER_URL + '/data/static/' + pageName)\n .then(response => response.data)\n .catch(err => {\n // console.error(err)\n throw err\n })\n}\n\nfunction * fetchStaticPageSaga ({ pageName }) {\n try {\n const res = yield call(fetchStaticPageAPI, pageName)\n yield put({ type: FETCH_STATICPAGE_SUCCESS, payload: res })\n } catch (e) {\n yield put({ type: FETCH_STATICPAGE_ERROR, payload: e.message })\n }\n}\n\nexport function * watchFetchStaticPage () {\n yield takeLatest(FETCH_STATICPAGE, fetchStaticPageSaga)\n}\n\n// Saga actions\nexport const fetchStaticPage = (pageName) => ({ type: FETCH_STATICPAGE, isFetching: true, hasFetched: false, pageName })\n\nexport const initialState = {\n lastFetch: 0,\n didInvalidate: false,\n isFetching: false,\n hasFetched: false,\n hasError: false,\n canonical: null,\n error: null,\n staticPage: null // do not mutate these\n}\n\nexport const Reducer = (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case FETCH_STATICPAGE:\n return Object.assign({}, state, {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n hasError: false,\n canonical: null,\n error: null\n })\n case FETCH_STATICPAGE_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n error: payload,\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n canonical: null\n })\n case FETCH_STATICPAGE_SUCCESS:\n return Object.assign({}, state, {\n lastFetch: new Date(),\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n staticPage: payload,\n hasError: false,\n canonical: null,\n error: null\n })\n default:\n return state\n }\n}\n","import axios from 'axios'\nimport { call, put, takeLatest } from 'redux-saga/effects'\nimport Cache from 'ion-cache'\n\nexport const FETCH_EDITOR_CHOICE_ARTICLES = 'api/FETCH_EDITOR_CHOICE_ARTICLES'\nexport const FETCH_EDITOR_CHOICE_ARTICLES_SUCCESS = 'api/FETCH_EDITOR_CHOICE_ARTICLES_SUCCESS'\nexport const FETCH_EDITOR_CHOICE_ARTICLES_ERROR = 'api/FETCH_EDITOR_CHOICE_ARTICLES_ERROR'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '/data/editorchoice/' : process.env.RAZZLE_EDITOR_CHOICE\nconst cache = new Cache()\n\nasync function fetchArticlesAPI () {\n const key = 'editorchoice'\n const result = await cache.get(key)\n if (result) {\n return result\n }\n return axios.get(SERVER_URL)\n .then(response => {\n return cache.set(key, response.data)\n })\n .catch(err => {\n // console.error(err)\n throw err\n })\n}\n\nfunction * fetchEditorsChoiceArticlesSaga () {\n try {\n const res = yield call(fetchArticlesAPI)\n let payload = {}\n payload = res.contents\n\n yield put({ type: FETCH_EDITOR_CHOICE_ARTICLES_SUCCESS, payload })\n } catch (e) {\n yield put({ type: FETCH_EDITOR_CHOICE_ARTICLES_ERROR, payload: e.message })\n }\n}\n\nexport function * watchfetchEditorsChoiceArticles () {\n yield takeLatest(FETCH_EDITOR_CHOICE_ARTICLES, fetchEditorsChoiceArticlesSaga)\n}\n\n// Saga actions\nexport const fetchEditorsChoiceArticles = (section) => ({ type: FETCH_EDITOR_CHOICE_ARTICLES, section })\n\nconst initialState = {\n didInvalidate: false,\n isFetching: false,\n hasFetched: false,\n hasError: false,\n error: null,\n articles: {} // do not mutate these\n}\n\nexport const Reducer = (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case FETCH_EDITOR_CHOICE_ARTICLES:\n return Object.assign({}, state, {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n hasError: false,\n error: null\n })\n case FETCH_EDITOR_CHOICE_ARTICLES_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n error: payload,\n hasFetched: true,\n isFetching: false,\n didInvalidate: true\n })\n case FETCH_EDITOR_CHOICE_ARTICLES_SUCCESS:\n return Object.assign({}, state, {\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n articles: payload\n })\n default:\n return state\n }\n}\n","import React, { Fragment } from 'react'\nimport { Link } from 'react-router-dom'\nimport { Mobile } from 'ion-media'\nimport Ad from '../Ad'\n\nimport { FORMATS } from '../AdFormats'\n\nconst Sticky = [\n [[1024, 0], []],\n [[640, 0], [[320, 100], [320, 50], [300, 100], [300, 50]]],\n [[0, 0], [[320, 100], [320, 50], [300, 100], [300, 50]]]\n]\n\nconst Footer = props => (\n <>\n <footer role='contentinfo' className={props.wallpaperRendered ? 'wallpaper-present' : ''}>\n <div className='wrapper'>\n <nav>\n <ul>\n <li>\n <Link to='/about-us'>About Daily Voice</Link>\n </li>\n <li>\n <Link to='/contact-us'>Contact Us</Link>\n </li>\n <li>\n <Link to='/terms-and-conditions'>Terms and Conditions</Link>\n </li>\n <li>\n <Link to='/privacy-policy'>Privacy Policy</Link>\n </li>\n <li>\n <Link to='/feedback'>Feedback</Link>\n </li>\n <li>\n <Link to='/complaints'>Complaints Procedure</Link>\n </li>\n <li>\n <Link to='/contact-us'>Advertise with us</Link>\n </li>\n </ul>\n </nav>\n <p>\n © {new Date().toLocaleDateString('en-ZA', { year: 'numeric' })}{' '}\n Independent Media and affiliated companies. All rights reserved.\n </p>\n <p>Please visit the official Government information portal for Coronavirus by clicking <a href='https://sacoronavirus.co.za/' target='_blank' rel='noopener noreferrer nofollow'>HERE</a></p>\n </div>\n </footer>\n <Mobile>\n <Ad\n path={`/${process.env.RAZZLE_DFP_CODE}/${props.section || 'homepage'}`}\n targeting={{ 'mobile-leaderboard': 'sticky' }}\n slotId='ad-leaderboard-sticky'\n className='ad-leaderboard-sticky'\n mapping={Sticky}\n {...FORMATS.mobileLeaderboardSticky}\n />\n </Mobile>\n </>\n)\n\nexport default Footer\n","import axios from 'axios'\nimport { all, call, put, takeLatest } from 'redux-saga/effects'\nimport Cache from 'ion-cache'\nimport { fetchArticleAPI } from './article'\nimport IonArticle from 'ion-article'\n\nexport const FETCH_MOST_READ_ARTICLES = 'api/FETCH_MOST_READ_ARTICLES'\nexport const FETCH_MOST_READ_ARTICLES_SUCCESS = 'api/FETCH_MOST_READ_ARTICLES_SUCCESS'\nexport const FETCH_MOST_READ_ARTICLES_ERROR = 'api/FETCH_MOST_READ_ARTICLES_ERROR'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '/data/mostread/' : process.env.RAZZLE_POPULAR_FEED\nconst cache = new Cache()\n\nasync function fetchArticlesAPI (section) {\n const key = 'most-read/' + section\n const result = await cache.get(key)\n if (result) {\n return result\n }\n return axios.get(SERVER_URL)\n .then(response => {\n return cache.set(key, response.data)\n })\n .catch(err => {\n // console.error(err)\n throw err\n })\n}\n\nfunction * fetchMostReadArticlesSaga ({ section }) {\n try {\n const res = yield call(fetchArticlesAPI, section)\n // res does not contain ion-articles. Therefore cycle through each article,\n // fetch through store/article.js and convert to ion-article\n const mostReadArticles = yield all(res.map(item =>\n call(fetchArticleAPI, item.contentKey)\n ))\n let payload = {}\n payload = {\n lastFetch: new Date(),\n hasMore: false,\n articles: mostReadArticles.map(i => new IonArticle(i))\n }\n yield put({ type: FETCH_MOST_READ_ARTICLES_SUCCESS, payload, section })\n } catch (e) {\n yield put({ type: FETCH_MOST_READ_ARTICLES_ERROR, payload: e.message })\n }\n}\n\nexport function * watchFetchMostReadArticles () {\n yield takeLatest(FETCH_MOST_READ_ARTICLES, fetchMostReadArticlesSaga)\n}\n\n// Saga actions\nexport const fetchMostReadArticles = (section, limit) => ({ type: FETCH_MOST_READ_ARTICLES, section, limit })\n\nconst initialState = {}\n\nexport const Reducer = (state = initialState, { type, payload, section, meta }) => {\n const newPayload = {}\n\n switch (type) {\n case FETCH_MOST_READ_ARTICLES:\n newPayload[section] = Object.assign({}, state[section], {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n hasError: false,\n error: null\n })\n return Object.assign({}, state, newPayload)\n case FETCH_MOST_READ_ARTICLES_ERROR:\n newPayload[section] = {\n hasError: true,\n error: payload,\n hasFetched: true,\n isFetching: false,\n didInvalidate: true\n }\n return Object.assign({}, state, newPayload)\n case FETCH_MOST_READ_ARTICLES_SUCCESS:\n newPayload[section] = {\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n articles: payload.articles,\n hasMore: payload.hasMore,\n lastFetch: payload.lastFetch,\n authorName: payload.authorName,\n sectionLabel: payload.sectionLabel\n }\n return Object.assign({}, state, newPayload)\n default:\n return state\n }\n}\n","import axios from 'axios'\nimport { call, put, takeLatest } from 'redux-saga/effects'\nimport Cache from 'ion-cache'\n\nexport const FETCH_MAGAZINECOVER = 'api/FETCH_MAGAZINECOVER'\nexport const FETCH_MAGAZINECOVER_SUCCESS = 'api/FETCH_MAGAZINECOVER_SUCCESS'\nexport const FETCH_MAGAZINECOVER_ERROR = 'api/FETCH_MAGAZINECOVER_ERROR'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '' : 'http://localhost:' + process.env.PORT\n\nconst cache = new Cache()\n\nexport async function fetchMagazineCoverAPI () {\n const result = await cache.get('default')\n if (!result) {\n return axios.get(SERVER_URL + '/data/magazine-cover')\n .then(response => cache.set('default', response.data, 60 * 60000)) // Cache for 60 minutes\n .catch(err => {\n // console.error(err)\n throw err\n })\n }\n return result\n}\n\nfunction * fetchMagazineCoverSaga () {\n try {\n const res = yield call(fetchMagazineCoverAPI)\n yield put({ type: FETCH_MAGAZINECOVER_SUCCESS, payload: res })\n } catch (e) {\n yield put({ type: FETCH_MAGAZINECOVER_ERROR, payload: e.message })\n }\n}\n\nexport function * watchFetchMagazineCover () {\n yield takeLatest(FETCH_MAGAZINECOVER, fetchMagazineCoverSaga)\n}\n\n// Saga actions\nexport const fetchMagazineCover = () => ({ type: FETCH_MAGAZINECOVER, isFetching: true, hasFetched: false })\n\nexport const initialState = {\n lastFetch: 0,\n didInvalidate: false,\n isFetching: false,\n hasFetched: false,\n hasError: false,\n canonical: null,\n errorMagazine: null,\n magazineCover: null // do not mutate these\n}\n\nexport const Reducer = (state = initialState, { type, payload, meta }) => {\n switch (type) {\n case FETCH_MAGAZINECOVER:\n return Object.assign({}, state, {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n hasError: false,\n canonical: null,\n errorMagazine: null\n })\n case FETCH_MAGAZINECOVER_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n errorMagazine: payload,\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n canonical: null\n })\n case FETCH_MAGAZINECOVER_SUCCESS:\n return Object.assign({}, state, {\n lastFetch: new Date(),\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n magazineCover: payload,\n hasError: false,\n canonical: null,\n errorMagazine: null\n })\n default:\n return state\n }\n}\n","import axios from 'axios'\nimport { call, put, takeEvery } from 'redux-saga/effects'\n\nexport const SUBSCRIBE = 'api/SUBSCRIBE'\nexport const SUBSCRIBE_SUCCESS = 'api/SUBSCRIBE_SUCCESS'\nexport const SUBSCRIBE_ERROR = 'api/SUBSCRIBE_ERROR'\nexport const REINITIALIZE = 'api/REINITIALIZE'\n\nexport const UPDATE_DATA = 'api/UPDATE_DATA'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '' : 'http://localhost:' + process.env.PORT\n\nconst subscribeAPI = (email) => {\n return axios.post(SERVER_URL + '/data/newsletter/subscribe', {\n email,\n lists: [process.env.RAZZLE_NEWSLETTER_SENDY_LIST],\n hp: '',\n error: ''\n })\n .then(response => response.data)\n .catch(err => {\n // console.error(err)\n throw err\n })\n}\n\nfunction * subscribeSaga ({ payload }) {\n try {\n yield call(subscribeAPI, payload)\n yield put({ type: SUBSCRIBE_SUCCESS })\n } catch (e) {\n console.error('ERROR while subscribing', e.message)\n yield put({ type: SUBSCRIBE_ERROR, payload: { message: e.message } })\n }\n}\n\nexport function * watchSubscribe () {\n yield takeEvery(SUBSCRIBE, subscribeSaga)\n}\n\n// Saga actions\nexport const subscribeNewsletter = (email) => ({ type: SUBSCRIBE, payload: email })\nexport const updateForm = (email) => ({ type: UPDATE_DATA, payload: email })\nexport const reinitialize = () => ({ type: REINITIALIZE, payload: {} })\n\nconst defaultState = {\n email: ''\n}\n\nexport const Reducer = (state = defaultState, { type, payload }) => {\n switch (type) {\n case REINITIALIZE:\n return Object.assign({}, defaultState)\n case UPDATE_DATA:\n return Object.assign({}, state, payload)\n case SUBSCRIBE:\n return Object.assign({}, state, {\n didInvalidate: false,\n isSubmiting: true,\n hasSubmited: false,\n hasError: false,\n error: null,\n data: payload\n })\n case SUBSCRIBE_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n error: payload.message,\n isSubmiting: false,\n hasSubmited: false,\n didInvalidate: true\n })\n case SUBSCRIBE_SUCCESS:\n return Object.assign({}, state, {\n isSubmiting: false,\n hasSubmited: true,\n didInvalidate: false\n })\n default:\n return state\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Pinterest = function Pinterest(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 26 27\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#FFFFFF\",\n d: \"M25.714286,13.571429 C25.714286,15.904018 25.139509,18.055246 23.989955,20.025112 C22.840402,21.994978 21.280692,23.554688 19.310826,24.704241 C17.34096,25.853795 15.189732,26.428571 12.857143,26.428571 C11.618304,26.428571 10.401786,26.25 9.207589,25.892857 C9.866071,24.854911 10.301339,23.939732 10.513393,23.147321 C10.613839,22.767857 10.915179,21.590402 11.417411,19.614955 C11.640625,20.050223 12.047991,20.426897 12.639509,20.744978 C13.231027,21.063058 13.867188,21.222098 14.547991,21.222098 C15.898438,21.222098 17.103795,20.839844 18.164062,20.075335 C19.22433,19.310826 20.044643,18.258929 20.625,16.919643 C21.205357,15.580357 21.495536,14.073661 21.495536,12.399554 C21.495536,11.127232 21.163504,9.933036 20.499442,8.816964 C19.835379,7.700893 18.872768,6.791295 17.611607,6.08817 C16.350446,5.385045 14.927455,5.033482 13.342634,5.033482 C12.170759,5.033482 11.077009,5.195312 10.061384,5.518973 C9.045759,5.842634 8.183594,6.272321 7.474888,6.808036 C6.766183,7.34375 6.157924,7.960379 5.650112,8.657924 C5.142299,9.355469 4.768415,10.078125 4.52846,10.825893 C4.288504,11.573661 4.168527,12.321429 4.168527,13.069196 C4.168527,14.229911 4.391741,15.251116 4.83817,16.132812 C5.284598,17.014509 5.9375,17.633929 6.796875,17.991071 C7.131696,18.125 7.34375,18.013393 7.433036,17.65625 C7.455357,17.578125 7.5,17.405134 7.566964,17.137277 C7.633929,16.86942 7.678571,16.702009 7.700893,16.635045 C7.767857,16.378348 7.706473,16.138393 7.516741,15.915179 C6.947545,15.234375 6.662946,14.391741 6.662946,13.387277 C6.662946,11.702009 7.246094,10.253906 8.412388,9.042969 C9.578683,7.832031 11.104911,7.226562 12.991071,7.226562 C14.676339,7.226562 15.990513,7.684152 16.933594,8.59933 C17.876674,9.514509 18.348214,10.703125 18.348214,12.165179 C18.348214,14.0625 17.96596,15.675223 17.201451,17.003348 C16.436942,18.331473 15.457589,18.995536 14.263393,18.995536 C13.582589,18.995536 13.035714,18.75279 12.622768,18.267299 C12.209821,17.781808 12.081473,17.198661 12.237723,16.517857 C12.327009,16.127232 12.474888,15.605469 12.681362,14.952567 C12.887835,14.299665 13.055246,13.724888 13.183594,13.228237 C13.311942,12.731585 13.376116,12.310268 13.376116,11.964286 C13.376116,11.40625 13.225446,10.94308 12.924107,10.574777 C12.622768,10.206473 12.19308,10.022321 11.635045,10.022321 C10.94308,10.022321 10.357143,10.340402 9.877232,10.976562 C9.397321,11.612723 9.157366,12.405134 9.157366,13.353795 C9.157366,14.168527 9.296875,14.84933 9.575893,15.396205 L7.918527,22.393973 C7.728795,23.175223 7.65625,24.162946 7.700893,25.357143 C5.401786,24.341518 3.543527,22.773438 2.126116,20.652902 C0.708705,18.532366 0,16.171875 0,13.571429 C0,11.238839 0.574777,9.087612 1.72433,7.117746 C2.873884,5.147879 4.433594,3.58817 6.40346,2.438616 C8.373326,1.289062 10.524554,0.714286 12.857143,0.714286 C15.189732,0.714286 17.34096,1.289062 19.310826,2.438616 C21.280692,3.58817 22.840402,5.147879 23.989955,7.117746 C25.139509,9.087612 25.714286,11.238839 25.714286,13.571429 Z\"\n }));\n};\n\nvar _default = Pinterest;\nexports[\"default\"] = _default;","import { all } from 'redux-saga/effects'\nimport { watchFetchArticles } from './articles'\nimport { watchFetchMostReadArticles } from './mostReadArticles'\nimport { watchFetchArticleContent, watchFetchArticle, watchPreviewArticle, watchSubmitCompetition } from './article'\nimport { watchNavChanges, watchPrecache } from './app'\nimport { watchFetchStaticPage } from './staticPage'\nimport { watchFetchMagazineCover } from './magazineCover'\nimport { watchFeedback } from './feedback'\nimport { watchSearchArticles, watchSearchArticlesMore } from './search'\nimport { watchSubscribe } from './subscribe'\nimport { watchfetchEditorsChoiceArticles } from './editorsChoice'\nimport { watchFetchWeather } from './weather'\nimport { watchFetchAuthors } from './authors'\nimport { watchFetchAuthor } from './author'\n\nexport default function * rootSaga () {\n yield all([\n watchFetchArticleContent(),\n watchFetchArticle(),\n watchPreviewArticle(),\n watchFetchArticles(),\n watchFetchMostReadArticles(),\n watchNavChanges(),\n watchFeedback(),\n watchPrecache(),\n watchFetchStaticPage(),\n watchSubscribe(),\n watchSearchArticles(),\n watchSubmitCompetition(),\n watchSearchArticlesMore(),\n watchFetchMagazineCover(),\n watchfetchEditorsChoiceArticles(),\n watchFetchWeather(),\n watchFetchAuthors(),\n watchFetchAuthor()\n ])\n}\n","import App from './app/components/App'\nimport { BrowserRouter } from 'react-router-dom'\nimport React from 'react'\nimport { loadableReady } from '@loadable/component'\nimport { hydrateRoot } from 'react-dom/client'\nimport { Provider } from 'react-redux'\nimport createStore from './store/createStore'\nimport rootSaga from './store/sagas'\nimport { updateConnectivity } from './store/app'\n\nfunction getVisitorId () {\n return document.cookie\n .split('; ')\n .find(row => row.startsWith('visitorId='))\n .split('=')[1]\n}\nfunction getToken () {\n if (window.localStorage) {\n return window.localStorage.getItem('token')\n }\n}\nconst store = createStore({\n ...window.__PRELOADED_STATE__,\n ...{\n user: {\n userToken: getToken(),\n visitorId: getVisitorId()\n }\n }\n})\n\nstore.runSaga(rootSaga)\n\nwindow.addEventListener('offline', () => {\n store.dispatch(updateConnectivity(false))\n})\n\nwindow.addEventListener('online', () => {\n store.dispatch(updateConnectivity(true))\n})\n\nloadableReady(() => {\n const container = document.getElementById('root')\n hydrateRoot(container,\n <Provider store={store}>\n <BrowserRouter>\n <App withReadCount />\n </BrowserRouter>\n </Provider>\n )\n})\n\nif (module.hot) {\n module.hot.accept()\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar TikTok = function TikTok(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"M22.6181 5.76417C21.1449 5.71969 19.8104 5.01393 18.8038 4.07057C18.2537 3.54657 17.8179 2.91441 17.5238 2.21393C17.2299 1.51344 17.0838 0.759681 17.0949 -1.54075e-08H12.9934V15.7972C12.9934 18.3776 11.4468 19.8986 9.54652 19.8986C9.04268 19.904 8.5438 19.7991 8.08476 19.5909C7.62588 19.3829 7.21804 19.0768 6.8902 18.6941C6.56236 18.3114 6.32236 17.8615 6.187 17.3762C6.0518 16.8908 6.02444 16.3815 6.10716 15.8845C6.18988 15.3872 6.38044 14.9143 6.66556 14.4989C6.95068 14.0834 7.32348 13.7354 7.75756 13.4795C8.19164 13.2235 8.67644 13.0659 9.17804 13.0175C9.67964 12.9691 10.1859 13.0314 10.6608 13.1997V9.02818C10.2948 8.9477 9.92124 8.90818 9.54652 8.91026C8.05436 8.90994 6.59548 9.35218 5.35435 10.181C4.11339 11.0098 3.14619 12.188 2.57483 13.5667C2.00347 14.9451 1.85387 16.4624 2.14475 17.9261C2.43579 19.3896 3.15419 20.7343 4.20923 21.7895C5.26427 22.8448 6.60876 23.5636 8.07228 23.8549C9.53596 24.1461 11.0531 23.9968 12.4318 23.426C13.8105 22.8548 14.9889 21.8879 15.8181 20.6471C16.6472 19.4063 17.0897 17.9474 17.0897 16.4552V7.9533C18.679 9.05218 20.5776 9.5717 22.6043 9.60754L22.6181 5.76417Z\",\n fill: \"#FFFFFF\"\n }));\n};\n\nvar _default = TikTok;\nexports[\"default\"] = _default;","import axios from 'axios'\nimport { call, put, takeLatest } from 'redux-saga/effects'\n\nexport const FETCH_AUTHORS = 'api/FETCH_AUTHORS'\nexport const FETCH_AUTHORS_SUCCESS = 'api/FETCH_AUTHORS_SUCCESS'\nexport const FETCH_AUTHORS_ERROR = 'api/FETCH_AUTHORS_ERROR'\nexport const FETCH_AUTHORS_NOT_FOUND = 'api/FETCH_AUTHORS_NOT_FOUND'\n\nconst SERVER_AUTHORS_URL = typeof window !== 'undefined' ? '/data/content/authors/daily-voice' : process.env.RAZZLE_CONTENT + '/authors/daily-voice'\n\nexport async function fetchAuthorsAPI () {\n return axios.get(SERVER_AUTHORS_URL)\n .then(response => {\n return response.data\n })\n .catch(err => {\n console.log('fetchAuthorsAPI:', err.message)\n throw err\n })\n}\n\nfunction * fetchAuthorsSaga () {\n try {\n const res = yield call(fetchAuthorsAPI)\n yield put({ type: FETCH_AUTHORS_SUCCESS, payload: res })\n } catch (e) {\n yield put({ type: FETCH_AUTHORS_ERROR, payload: e.message })\n }\n}\n\nexport function * watchFetchAuthors () {\n yield takeLatest(FETCH_AUTHORS, fetchAuthorsSaga)\n}\n\nexport const fetchAuthors = () => ({ type: FETCH_AUTHORS, isFetching: true, hasFetched: false })\n\nexport const initialState = {\n didInvalidate: false,\n lastFetch: 0,\n isFetching: false,\n hasFetched: false,\n hasError: false,\n is404: false,\n error: null,\n authors: null\n}\n\nexport const Reducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case FETCH_AUTHORS:\n return Object.assign({}, state, {\n didInvalidate: false,\n isFetching: true,\n hasFetched: false,\n is404: false,\n hasError: false,\n error: null\n })\n case FETCH_AUTHORS_NOT_FOUND:\n return Object.assign({}, state, {\n hasError: true,\n is404: true,\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n authors: null\n })\n case FETCH_AUTHORS_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n is404: false,\n error: payload,\n hasFetched: true,\n isFetching: false,\n didInvalidate: true\n })\n case FETCH_AUTHORS_SUCCESS:\n return Object.assign({}, state, {\n lastFetch: new Date(),\n hasFetched: true,\n isFetching: false,\n didInvalidate: false,\n authors: payload,\n hasError: false,\n is404: false,\n error: null\n })\n default:\n return state\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setDefaultWidth = exports.getDefaultWidth = exports.defaultWidth = exports.TabletMobile = exports.Tablet = exports.MobileElse = exports.Mobile = exports.HagDesktop = exports.GqGlamDesktop = exports.DesktopTablet = exports.DesktopElse = exports.Desktop = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactResponsive = _interopRequireDefault(require(\"react-responsive\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n// Default rendering to mobile\nvar defaultWidth = 760;\nexports.defaultWidth = defaultWidth;\n\nvar setDefaultWidth = function setDefaultWidth(width) {\n exports.defaultWidth = defaultWidth = width;\n};\n\nexports.setDefaultWidth = setDefaultWidth;\n\nvar getDefaultWidth = function getDefaultWidth() {\n return defaultWidth;\n};\n\nexports.getDefaultWidth = getDefaultWidth;\n\nvar Desktop = function Desktop(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n minWidth: 992,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.Desktop = Desktop;\n\nvar GqGlamDesktop = function GqGlamDesktop(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n minWidth: 1330,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.GqGlamDesktop = GqGlamDesktop;\n\nvar HagDesktop = function HagDesktop(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n minWidth: 1500,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.HagDesktop = HagDesktop;\n\nvar DesktopTablet = function DesktopTablet(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n minWidth: 768,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.DesktopTablet = DesktopTablet;\n\nvar Tablet = function Tablet(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n minWidth: 768,\n maxWidth: 992,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.Tablet = Tablet;\n\nvar TabletMobile = function TabletMobile(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n maxWidth: 992,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.TabletMobile = TabletMobile;\n\nvar Mobile = function Mobile(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n maxWidth: 767,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.Mobile = Mobile;\n\nvar DesktopElse = function DesktopElse(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n maxWidth: 992,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.DesktopElse = DesktopElse;\n\nvar MobileElse = function MobileElse(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(_reactResponsive[\"default\"], _extends({}, props, {\n minWidth: 768,\n values: {\n deviceWidth: defaultWidth\n }\n }));\n};\n\nexports.MobileElse = MobileElse;","module.exports = __webpack_public_path__ + \"static/media/safari-pinned-tab.5350645f.svg\";","/**\n * Hook that returns false while the page is being hydrated, and true when rendering starts\n * @returns Boolean\n */\nimport React from 'react'\n\nfunction useHasMounted () {\n const [hasMounted, setHasMounted] = React.useState(false)\n React.useEffect(() => {\n setHasMounted(true)\n }, [])\n return hasMounted\n}\n\nexport default useHasMounted\n","module.exports = __webpack_public_path__ + \"static/media/favicon.e358c33d.ico\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"CaretDwn\", {\n enumerable: true,\n get: function get() {\n return _caretdwn[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Close\", {\n enumerable: true,\n get: function get() {\n return _close[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Facebook\", {\n enumerable: true,\n get: function get() {\n return _facebook[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Instagram\", {\n enumerable: true,\n get: function get() {\n return _instagram[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LinkedIn\", {\n enumerable: true,\n get: function get() {\n return _linkedin[\"default\"];\n }\n});\nObject.defineProperty(exports, \"MenuIco\", {\n enumerable: true,\n get: function get() {\n return _menu[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Pinterest\", {\n enumerable: true,\n get: function get() {\n return _pinterest[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PlayBtn\", {\n enumerable: true,\n get: function get() {\n return _playbtn[\"default\"];\n }\n});\nObject.defineProperty(exports, \"RSS\", {\n enumerable: true,\n get: function get() {\n return _rss[\"default\"];\n }\n});\nObject.defineProperty(exports, \"RightArrow\", {\n enumerable: true,\n get: function get() {\n return _rightarrow[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Rss\", {\n enumerable: true,\n get: function get() {\n return _rss2[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Search\", {\n enumerable: true,\n get: function get() {\n return _search[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Tags\", {\n enumerable: true,\n get: function get() {\n return _tags[\"default\"];\n }\n});\nObject.defineProperty(exports, \"TikTok\", {\n enumerable: true,\n get: function get() {\n return _tiktok[\"default\"];\n }\n});\nObject.defineProperty(exports, \"TimeClock\", {\n enumerable: true,\n get: function get() {\n return _timeclock[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Twitter\", {\n enumerable: true,\n get: function get() {\n return _twitter[\"default\"];\n }\n});\nObject.defineProperty(exports, \"View\", {\n enumerable: true,\n get: function get() {\n return _view[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Warn\", {\n enumerable: true,\n get: function get() {\n return _warn[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Youtube\", {\n enumerable: true,\n get: function get() {\n return _youtube[\"default\"];\n }\n});\n\nvar _facebook = _interopRequireDefault(require(\"./social/facebook\"));\n\nvar _twitter = _interopRequireDefault(require(\"./social/twitter\"));\n\nvar _instagram = _interopRequireDefault(require(\"./social/instagram\"));\n\nvar _linkedin = _interopRequireDefault(require(\"./social/linkedin\"));\n\nvar _pinterest = _interopRequireDefault(require(\"./social/pinterest\"));\n\nvar _youtube = _interopRequireDefault(require(\"./social/youtube\"));\n\nvar _rss = _interopRequireDefault(require(\"./social/rss\"));\n\nvar _search = _interopRequireDefault(require(\"./app-icons/search\"));\n\nvar _menu = _interopRequireDefault(require(\"./app-icons/menu\"));\n\nvar _close = _interopRequireDefault(require(\"./app-icons/close\"));\n\nvar _tags = _interopRequireDefault(require(\"./app-icons/tags\"));\n\nvar _caretdwn = _interopRequireDefault(require(\"./app-icons/caretdwn\"));\n\nvar _rss2 = _interopRequireDefault(require(\"./app-icons/rss\"));\n\nvar _tiktok = _interopRequireDefault(require(\"./social/tiktok\"));\n\nvar _timeclock = _interopRequireDefault(require(\"./app-icons/timeclock\"));\n\nvar _playbtn = _interopRequireDefault(require(\"./app-icons/playbtn\"));\n\nvar _rightarrow = _interopRequireDefault(require(\"./app-icons/rightarrow\"));\n\nvar _warn = _interopRequireDefault(require(\"./app-icons/warn\"));\n\nvar _view = _interopRequireDefault(require(\"./app-icons/view\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAC3FBMVEXZICfaHiPaGx/aGh7aHB/aHiLaHSHaHSLaHCLaGx7aHiHaHyPZICbbJSjnZmbpeHjhUVHaGx3fNTXpc3PmcHHeSS3iRxfiRxjhQhnhPhjgPTTocHDlaWjbKCnbHB7bHR/bIybzuLf////wv77ZICLv3NvcYyzpaw7qeA/oZxDjSxLkXlj68vHx3dzYODjbGRvbGhzbGx3bGxzqfHv35uXcP0DyrKvhqKfgWVDvmI7xqJ7tkILhQT3cPj7clZLXiYbWLS3jTU3tjo3xoaDrionbMDHkVlbulJPwn57obWzcJSbiR0f87ez9+/vkf33519b7+/vfoqD75uX8+vr05+f2zMvnc3H97u302djhbGr75OP+///x5eTnxsThg4H97+7w4N/qwsH++Pfnd3bcJif1w8Lz1dP+9vbw3t3msa/u1NPaZmb98/L9+Pjpo6D+9/b14uHqqqfz5OTPSEjTKSrtqajuzMztp6btuLfZIiXsiYj//v7iqqnplpXx09PhY2L98vL79/fjn53+9/fqqKb35eTeRkbdJSbwqKfz4uHhqKjah4bYIybjUFD98vH8/fzWa2v56ej9+fn64uHmx8fccXD/+fn14+Lfa2n44+P6397xwcDihoX67e3ur67usK/baGbZGx/eMjLknZvjtrXeqKfVQEDdKCneYF/ipqXamJfRR0ffT07ksrDepKPYOzrdW1ripKPkuLfboJ/VPj7dZGPhqafjuLfeq6nTUVDaHCDdKyvyr6300M7yzszzzsz3z83GnpyjeHepgYDEoJ+mfn2me3qkfHu3kpC2kpCienm9kpGuhoWjf32ogYDgt7b4zcz0zcvzz83odnbdKyz0uLb629r52dj62tjDo6KdfHylhITFpaShgICff3+gf3+4mJe9nJukg4O8m5uriomhgYCnhobbu7r729r63NvqfX3bHyLdLC7dLzHeLzHdLjDdLjHcLjDcJinZHyb3o10dAAAAAWJLR0QiXWVcrAAAAAd0SU1FB+EJHQomIqWGyKIAAAF0SURBVDjLY2AYBVQDjEzMLKxszMxs7Bzs7GzMnFyscMANkufh5eMXEBQSFhEVE5eQlJKWkZWThwEusAkKikrKKvxKqmrqGppa2jq6evoGhkZyBgaGBnKsYAWcxkompmZK5haWVtY2tnb2Do5Ozi6ubu4enl5sYAVM3j6+fv4BgUHBIUqhYeERkVHRMbFx8QmJSclMYAVsKalKaekZmUpZ2Tm5efkFhUpFxSWlSmXlShWVYAWsBlVK1Uo1tUp19Q2NTc0FLUqtbe0dSp1dXd09UAW9fUr9EwQmTpqsNGXqtOkzZirNmj1n7tx58xcsBCvgkl+0eMnSZctXrFyyavWatevWb9i4afOWrdu279i5C+KG3Xv27tt/4OChw0eOHjt+4uSp02fOnjt/4eK+S5dZIAquXL12/fqNm7du37l77/6Dh48eP3n67PmL69dfvoL4gvH1m7cg8O79+w/vP3x49xaIPr4HiXxihMbGZ1xgoJPJUAIAchOmSt9Tbz4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMDktMjlUMTA6Mzg6MzQrMDI6MDAPV06zAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTA5LTI5VDEwOjM4OjM0KzAyOjAwfgr2DwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAABJRU5ErkJggg==\"","import axios from 'axios'\nimport { call, put, takeEvery } from 'redux-saga/effects'\n\nexport const INITIALISE = 'api/INITIALISE'\nexport const FEEDBACK = 'api/FEEDBACK'\nexport const FEEDBACK_SUCCESS = 'api/FEEDBACK_SUCCESS'\nexport const FEEDBACK_ERROR = 'api/FEEDBACK_ERROR'\nexport const UPDATE_DATA = 'api/UPDATE_DATA'\n\nconst SERVER_URL = typeof window !== 'undefined' ? '' : 'http://localhost:' + process.env.PORT\n\nconst feedbackAPI = (data) => {\n return axios.post(SERVER_URL + '/data/feedback/submit', data)\n .then(response => response.data)\n .catch(err => {\n // console.error(err)\n throw err\n })\n}\n\nfunction * feedbackSaga ({ data }) {\n try {\n yield call(feedbackAPI, data)\n yield put({ type: FEEDBACK_SUCCESS })\n } catch (e) {\n console.error('ERROR while submitting', e.message)\n yield put({ type: FEEDBACK_ERROR, payload: { message: e.message } })\n }\n}\n\nexport function * watchFeedback () {\n yield takeEvery(FEEDBACK, feedbackSaga)\n}\n\n// Saga actions\nexport const initialise = (data) => ({ type: INITIALISE, data })\nexport const submitFeedback = (data) => ({ type: FEEDBACK, data })\nexport const updateForm = (data) => ({ type: UPDATE_DATA, payload: data })\n\nexport const initialState = {\n fullName: '',\n phone: '',\n email: '',\n enquiryType: 'general',\n message: '',\n output: '',\n captchaVerified: false,\n recaptchaValue: ''\n}\n\nexport const Reducer = (state = initialState, { type, payload }) => {\n switch (type) {\n case UPDATE_DATA:\n return Object.assign({}, state, payload)\n case INITIALISE:\n return Object.assign({}, state, {\n didInvalidate: false,\n isSubmitting: false,\n hasSubmitted: false,\n hasError: false,\n error: null\n })\n case FEEDBACK:\n return Object.assign({}, state, {\n didInvalidate: false,\n isSubmitting: true,\n hasSubmitted: false,\n hasError: false,\n error: null,\n data: payload\n })\n case FEEDBACK_ERROR:\n return Object.assign({}, state, {\n hasError: true,\n error: payload.message,\n hasSubmitted: true,\n isSubmitting: false,\n didInvalidate: true\n })\n case FEEDBACK_SUCCESS:\n return Object.assign({}, state, {\n hasSubmitted: true,\n isSubmitting: false,\n didInvalidate: false\n })\n default:\n return state\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DoNothingCache = undefined;\n\nvar _cache = require('./src/cache');\n\nvar _cache2 = _interopRequireDefault(_cache);\n\nvar _memoryCache = require('./src/memory-cache');\n\nvar _memoryCache2 = _interopRequireDefault(_memoryCache);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _memoryCache2.default;\nexports.DoNothingCache = _cache2.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar RightArrow = function RightArrow(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 8 14\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n fill: \"#000000\",\n fillRule: \"evenodd\",\n d: \"M11,4.14089348 C11,4.2600235 10.9532395,4.36540705 10.8597192,4.45704496 L4.32264558,10.8625427 C4.22912533,10.9541806 4.12157624,11 4,11 C3.87842376,11 3.77087551,10.9541806 3.67735442,10.8625427 L-2.85971921,4.45704496 C-2.95323946,4.36540705 -3,4.2600235 -3,4.14089348 C-3,4.02176428 -2.95323946,3.91638073 -2.85971921,3.82474282 L-2.15831607,3.13745727 C-2.06479582,3.04581936 -1.95724757,3 -1.83567133,3 C-1.71409425,3 -1.60654601,3.04581936 -1.51302576,3.13745727 L4,8.5395188 L9.5130258,3.13745727 C9.606546,3.04581936 9.7140951,3 9.8356713,3 C9.9572476,3 10.0647958,3.04581936 10.1583169,3.13745727 L10.8597192,3.82474282 C10.9532395,3.91638073 11,4.02176428 11,4.14089348 Z\",\n transform: \"rotate(-90 4 7)\"\n }));\n};\n\nvar _default = RightArrow;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FORMATS = void 0;\nexports.IonAd = IonAd;\nexports.IonAdSlot = IonAdSlot;\nexports.clearSlots = clearSlots;\nexports[\"default\"] = void 0;\nexports.disableAgeTarget = disableAgeTarget;\nexports.disableAnchorAds = disableAnchorAds;\nexports.disableArticleLevelTarget = disableArticleLevelTarget;\nexports.disableGenderTarget = disableGenderTarget;\nexports.disableInterstitial = disableInterstitial;\nexports.disableMappings = disableMappings;\nexports.disableSectionLevelTarget = disableSectionLevelTarget;\nexports.enableAgeTarget = enableAgeTarget;\nexports.enableAnchorAds = enableAnchorAds;\nexports.enableArticleLevelTarget = enableArticleLevelTarget;\nexports.enableGenderTarget = enableGenderTarget;\nexports.enableInterstitial = enableInterstitial;\nexports.enableLazyLoad = enableLazyLoad;\nexports.enableMappings = enableMappings;\nexports.enableSectionLevelTarget = enableSectionLevelTarget;\nexports.enableSingleRequest = enableSingleRequest;\nexports.getSlots = getSlots;\nexports.isAnchorAdsEnabled = isAnchorAdsEnabled;\nexports.performSingleRequest = performSingleRequest;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _useHasMounted = _interopRequireDefault(require(\"./useHasMounted\"));\n\nvar _ionMedia = require(\"ion-media\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar slots = {};\nvar refreshingSlots = [];\nvar events = [];\nvar options = {\n enableSingleRequest: false,\n enableLazyLoad: false,\n enableAnchorAds: false,\n enableMappings: false,\n enableInterstitial: false,\n enableGenderTarget: false,\n enableAgeTarget: false,\n enableArticleLevelTarget: false,\n enableSectionLevelTarget: false\n};\n\nif (typeof window !== 'undefined') {\n window.googletag = window.googletag || {\n cmd: []\n };\n}\n\nfunction getSlots() {\n return slots;\n}\n\nvar FORMATS = {\n leaderboard: {\n desktop: [[728, 90], [970, 90], [970, 250]],\n tablet: [[728, 90]],\n mobile: [[320, 50], [300, 50]]\n },\n mpudynamic: {\n desktop: [[300, 250], [300, 600]],\n tablet: [[300, 250]],\n mobile: [[300, 250], [336, 280]]\n },\n mpusection: {\n tablet: [[300, 250]],\n mobile: [[300, 250]]\n },\n mpu: {\n desktop: [[300, 250]],\n tablet: [[300, 250]],\n mobile: [[300, 250], [336, 280]]\n },\n inarticle: {\n desktop: [[300, 250]],\n tablet: [[300, 250]],\n mobile: [[300, 250], [336, 280]]\n }\n};\nexports.FORMATS = FORMATS;\n\nfunction clearSlots() {\n if (typeof window !== 'undefined') {\n console.warn('### CLEARING ALL AD SLOTS ###');\n var _window = window,\n _googletag = _window.googletag;\n\n _googletag.cmd.push(function () {\n events.forEach(function (item) {\n return _googletag.pubads().removeEventListener('slotRenderEnded', item);\n });\n events.forEach(function (item) {\n return _googletag.pubads().removeEventListener('slotRequested', item);\n });\n\n _googletag.destroySlots();\n });\n\n slots = {};\n refreshingSlots = [];\n }\n}\n\nfunction enableSingleRequest() {\n options.enableSingleRequest = true;\n}\n\nfunction enableLazyLoad() {\n options.enableLazyLoad = true;\n}\n\nfunction performSingleRequest(slotId) {\n googletag.cmd.push(function () {\n googletag.display(slotId);\n });\n}\n\nfunction enableAnchorAds() {\n options.enableAnchorAds = true;\n}\n\nfunction enableMappings() {\n options.enableMappings = true;\n}\n\nfunction disableAnchorAds() {\n options.enableAnchorAds = false;\n}\n\nfunction disableMappings() {\n options.enableMappings = false;\n}\n\nfunction isAnchorAdsEnabled() {\n return options.enableAnchorAds;\n}\n\nfunction enableInterstitial() {\n options.enableInterstitial = true;\n}\n\nfunction disableInterstitial() {\n options.enableInterstitial = false;\n}\n\nfunction enableGenderTarget() {\n options.enableGenderTarget = true;\n}\n\nfunction disableGenderTarget() {\n options.enableGenderTarget = false;\n}\n\nfunction enableAgeTarget() {\n options.enableAgeTarget = true;\n}\n\nfunction disableAgeTarget() {\n options.enableAgeTarget = false;\n}\n\nfunction enableArticleLevelTarget() {\n options.enableArticleLevelTarget = true;\n}\n\nfunction disableArticleLevelTarget() {\n options.enableArticleLevelTarget = true;\n}\n\nfunction enableSectionLevelTarget() {\n options.enableSectionLevelTarget = true;\n}\n\nfunction disableSectionLevelTarget() {\n options.enableSectionLevelTarget = true;\n}\n\nfunction IonAdSlot(_ref) {\n var slotId = _ref.slotId,\n path = _ref.path,\n targeting = _ref.targeting,\n className = _ref.className,\n sizes = _ref.sizes,\n mapping = _ref.mapping,\n anchor = _ref.anchor,\n refreshTime = _ref.refreshTime,\n collapseEmptyDiv = _ref.collapseEmptyDiv,\n onSlotRequested = _ref.onSlotRequested,\n onSlotRenderEnded = _ref.onSlotRenderEnded,\n onAdSlotRegistered = _ref.onAdSlotRegistered;\n (0, _react.useEffect)(function () {\n var _window2 = window,\n googletag = _window2.googletag;\n\n var __onSlotRenderEnded = function __onSlotRenderEnded(event) {\n if (event.slot) {\n var _targeting = [];\n\n _targeting.push(Object.getOwnPropertyNames(targeting)[0]);\n\n _targeting.push(targeting[_targeting[0]]);\n\n if (event.slot === slots[slotId]) {\n var _sizes = sizes.map(function (elem) {\n return elem.join('x');\n }).join('|');\n\n console.log('### Ad Rendered:', 'targeting:', _targeting.join(':'), 'path:', path, 'sizes:', _sizes, 'mapping:', mapping, 'isEmpty:', event.isEmpty, 'event:', event);\n\n if (onSlotRenderEnded) {\n onSlotRenderEnded(event);\n }\n }\n }\n };\n\n var __slotRequested = function __slotRequested(event) {\n if (event.slot === slots[slotId] && onSlotRequested) {\n event.sizes = sizes;\n event.sizeMapping = mapping;\n event.slotId = slotId;\n onSlotRequested(event);\n }\n };\n\n googletag.cmd.push(function () {\n events.push(__onSlotRenderEnded);\n events.push(__slotRequested);\n googletag.pubads().addEventListener('slotRenderEnded', __onSlotRenderEnded);\n googletag.pubads().addEventListener('slotRequested', __slotRequested);\n });\n }, []);\n (0, _react.useEffect)(function () {\n var _window3 = window,\n googletag = _window3.googletag;\n googletag.cmd.push(function () {\n googletag.pubads().addEventListener('impressionViewable', function (event) {\n var slot = event.slot;\n\n if (slot.getTargeting('refresh').indexOf('true') > -1) {\n var targetingKeys = slot.getTargetingKeys();\n\n if (refreshingSlots.indexOf(slot) < 0) {\n var secondsToWait = slot.getTargeting('refreshTime')[0];\n console.log('### Scheduling slot refresh in', secondsToWait, 'seconds -', targetingKeys[0], ':', slot.getTargeting(targetingKeys[0]));\n refreshingSlots.push(slot);\n setTimeout(function () {\n googletag.pubads().refresh([slot]);\n var idx = refreshingSlots.indexOf(slot);\n\n if (idx >= 0) {\n refreshingSlots.splice(idx, 1);\n }\n }, secondsToWait * 1000);\n }\n }\n });\n });\n }, []); // Configure and setup the slot\n\n (0, _react.useEffect)(function () {\n var _window4 = window,\n googletag = _window4.googletag; // Do not redeclare slots\n\n if (!slots[slotId]) {\n slots[slotId] = 'pending';\n var _targeting = [];\n\n if (targeting) {\n _targeting.push(Object.getOwnPropertyNames(targeting)[0]);\n\n _targeting.push(targeting[_targeting[0]]);\n }\n\n googletag.cmd.push(function () {\n try {\n var slot;\n\n switch (anchor) {\n case 'top':\n slot = googletag.defineOutOfPageSlot(path, googletag.enums.OutOfPageFormat.TOP_ANCHOR);\n break;\n\n case 'bottom':\n slot = googletag.defineOutOfPageSlot(path, googletag.enums.OutOfPageFormat.BOTTOM_ANCHOR);\n break;\n\n case 'interstitial':\n if (options.enableInterstitial) {\n slot = googletag.defineOutOfPageSlot(path, googletag.enums.OutOfPageFormat.INTERSTITIAL);\n slot.addService(googletag.pubads()).setConfig({\n interstitial: {\n triggers: {\n navBar: true,\n unhideWindow: true\n }\n }\n });\n }\n\n break;\n\n default:\n slot = googletag.defineSlot(path, sizes, slotId);\n }\n\n if (!slot) {\n console.error('### ERROR: Unable to create slot', {\n anchor: anchor,\n path: path,\n sizes: sizes,\n slotId: slotId\n });\n return;\n }\n\n if (mapping && options.enableMappings) {\n slot.defineSizeMapping(mapping);\n }\n\n slot.setCollapseEmptyDiv(!!collapseEmptyDiv);\n slot.addService(googletag.pubads());\n\n if (_targeting.length) {\n slot.setTargeting(_targeting[0], _targeting[1]);\n }\n\n if (refreshTime) {\n slot.setTargeting('refresh', 'true');\n slot.setTargeting('refreshTime', refreshTime);\n }\n\n slots[slotId] = slot;\n\n if (onAdSlotRegistered) {\n onAdSlotRegistered(slotId);\n }\n\n if (options.enableLazyLoad) {\n // googletag.pubads().disableInitialLoad()\n googletag.pubads().enableLazyLoad({\n fetchMarginPercent: 200,\n renderMarginPercent: 100,\n mobileScaling: 1.0\n });\n }\n\n if (options.enableSingleRequest) {\n googletag.pubads().enableSingleRequest();\n } else {\n googletag.cmd.push(function () {\n googletag.display(slotId);\n });\n }\n\n if (options.enableArticleLevelTarget) {\n googletag.pubads().setTargeting('contentKey', []);\n }\n\n if (options.enableSectionLevelTarget) {\n googletag.pubads().setTargeting('Section', []);\n }\n\n if (options.enableAgeTarget) {\n googletag.pubads().setTargeting('Age', []);\n }\n\n if (options.enableGenderTarget) {\n googletag.pubads().setTargeting('Gender', []);\n }\n\n googletag.enableServices();\n } catch (e) {\n console.error(e.message);\n\n var _sizes = sizes.map(function (elem) {\n return elem.join('x');\n }).join('|');\n\n console.error('slotId:', {\n anchor: anchor,\n targeting: _targeting.join(':'),\n path: path,\n sizes: _sizes\n });\n }\n });\n }\n }, [targeting, path, sizes, slotId, collapseEmptyDiv, onSlotRenderEnded]);\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n id: slotId,\n className: className\n });\n}\n\nfunction IonAd(_ref2) {\n var slotId = _ref2.slotId,\n path = _ref2.path,\n targeting = _ref2.targeting,\n refreshTime = _ref2.refreshTime,\n className = _ref2.className,\n adNotice = _ref2.adNotice,\n mapping = _ref2.mapping,\n anchor = _ref2.anchor,\n desktop = _ref2.desktop,\n tablet = _ref2.tablet,\n mobile = _ref2.mobile,\n collapseEmptyDiv = _ref2.collapseEmptyDiv,\n onSlotRequested = _ref2.onSlotRequested,\n onSlotRenderEnded = _ref2.onSlotRenderEnded,\n onAdSlotRegistered = _ref2.onAdSlotRegistered;\n var debug = !process.env.RAZZLE_ENABLE_GAM;\n var _targeting = [];\n\n _targeting.push(Object.getOwnPropertyNames(targeting)[0]);\n\n _targeting.push(targeting[_targeting[0]]);\n\n if ((anchor === 'top' || anchor === 'bottom') && !options.enableAnchorAds) {\n return null;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_useHasMounted[\"default\"], null, !debug && /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, /*#__PURE__*/_react[\"default\"].createElement(_ionMedia.Desktop, null, desktop && desktop.length > 0 && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className || 'advert'\n }, /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, adNotice && /*#__PURE__*/_react[\"default\"].createElement(\"small\", null, \"Advertisement\"), /*#__PURE__*/_react[\"default\"].createElement(IonAdSlot, {\n targeting: targeting,\n path: path,\n sizes: desktop,\n mapping: mapping,\n refreshTime: refreshTime,\n collapseEmptyDiv: collapseEmptyDiv,\n slotId: slotId,\n className: \"\",\n anchor: anchor,\n onSlotRenderEnded: onSlotRenderEnded,\n onSlotRequested: onSlotRequested,\n onAdSlotRegistered: onAdSlotRegistered\n })))), /*#__PURE__*/_react[\"default\"].createElement(_ionMedia.Tablet, null, tablet && tablet.length > 0 && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className || 'advert'\n }, /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, adNotice && /*#__PURE__*/_react[\"default\"].createElement(\"small\", null, \"Advertisement\"), /*#__PURE__*/_react[\"default\"].createElement(IonAdSlot, {\n targeting: targeting,\n path: path,\n sizes: tablet,\n mapping: mapping,\n refreshTime: refreshTime,\n collapseEmptyDiv: collapseEmptyDiv,\n slotId: slotId,\n className: \"\",\n anchor: anchor,\n onSlotRenderEnded: onSlotRenderEnded,\n onSlotRequested: onSlotRequested,\n onAdSlotRegistered: onAdSlotRegistered\n })))), /*#__PURE__*/_react[\"default\"].createElement(_ionMedia.Mobile, null, mobile && mobile.length > 0 && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className || 'advert'\n }, /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, adNotice && /*#__PURE__*/_react[\"default\"].createElement(\"small\", null, \"Advertisement\"), /*#__PURE__*/_react[\"default\"].createElement(IonAdSlot, {\n targeting: targeting,\n path: path,\n sizes: mobile,\n mapping: mapping,\n refreshTime: refreshTime,\n collapseEmptyDiv: collapseEmptyDiv,\n slotId: slotId,\n className: \"\",\n anchor: anchor,\n onSlotRenderEnded: onSlotRenderEnded,\n onSlotRequested: onSlotRequested,\n onAdSlotRegistered: onAdSlotRegistered\n }))))), debug && /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, /*#__PURE__*/_react[\"default\"].createElement(_ionMedia.Desktop, null, desktop && desktop.length > 0 && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, adNotice && /*#__PURE__*/_react[\"default\"].createElement(\"small\", null, \"Advertisement\"), /*#__PURE__*/_react[\"default\"].createElement(\"div\", null, /*#__PURE__*/_react[\"default\"].createElement(\"img\", {\n src: '//via.placeholder.com/' + desktop.reduce(function (p, c) {\n if (p[0] * p[1] > c[0] * c[1]) {\n return p;\n } else {\n return c;\n }\n }).join('x') + '?text=' + _targeting.join(':'),\n alt: \"\"\n }))))), /*#__PURE__*/_react[\"default\"].createElement(_ionMedia.Tablet, null, tablet && tablet.length > 0 && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, adNotice && /*#__PURE__*/_react[\"default\"].createElement(\"small\", null, \"Advertisement\"), /*#__PURE__*/_react[\"default\"].createElement(\"div\", null, /*#__PURE__*/_react[\"default\"].createElement(\"img\", {\n className: \"advert\",\n src: '//via.placeholder.com/' + tablet.reduce(function (p, c) {\n if (p[0] * p[1] > c[0] * c[1]) {\n return p;\n } else {\n return c;\n }\n }).join('x') + '?text=' + _targeting.join(':'),\n alt: \"\"\n }))))), /*#__PURE__*/_react[\"default\"].createElement(_ionMedia.Mobile, null, mobile && mobile.length > 0 && /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, adNotice && /*#__PURE__*/_react[\"default\"].createElement(\"small\", null, \"Advertisement\"), /*#__PURE__*/_react[\"default\"].createElement(\"div\", null, /*#__PURE__*/_react[\"default\"].createElement(\"img\", {\n className: \"advert\",\n src: '//via.placeholder.com/' + mobile.reduce(function (p, c) {\n if (p[0] * p[1] > c[0] * c[1]) {\n return p;\n } else {\n return c;\n }\n }).join('x') + '?text=' + _targeting.join(':'),\n alt: \"\"\n })))))));\n}\n\nvar _default = IonAd;\nexports[\"default\"] = _default;","import { compose, createStore, applyMiddleware } from 'redux'\nimport createSagaMiddleware, { END } from 'redux-saga'\nimport createSagaMonitor from '@clarketm/saga-monitor'\n\n// Beacons\nimport { createMiddleware as createBeaconMiddleware } from 'redux-beacon'\nimport GoogleTagManager from '@redux-beacon/google-tag-manager'\nimport OfflineWeb from '@redux-beacon/offline-web'\nimport IONAnalytics from 'redux-beacon-IONAnalytics'\n\nimport { eventsMap } from './events'\nimport rootReducer from './rootReducer'\nimport { isConnected } from './app'\n\nconst gtm = GoogleTagManager()\nconst offlineStorage = OfflineWeb(isConnected)\n\nfunction beaconMiddleware (isServer) {\n if (!isServer) {\n return [\n createBeaconMiddleware(eventsMap, gtm, { offlineStorage }),\n createBeaconMiddleware(eventsMap, IONAnalytics, { offlineStorage })\n ]\n } else {\n return [\n createBeaconMiddleware(eventsMap, IONAnalytics)\n ]\n }\n}\n\nexport default function createReduxStore (state = {}) {\n const sagaMiddleware = process.env.RAZZLE_SAGA_MONITOR === 'on'\n ? createSagaMiddleware({\n sagaMonitor: createSagaMonitor({\n level: 'warn',\n effectTrigger: true,\n effectResolve: true,\n actionDispatch: true\n })\n })\n : createSagaMiddleware()\n\n const devToolsCompose = (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose\n\n const store = createStore(rootReducer, state, devToolsCompose(applyMiddleware(\n ...beaconMiddleware(typeof window === 'undefined'),\n sagaMiddleware\n )))\n\n if (module.hot) {\n // Enable Webpack hot module replacement for reducers\n module.hot.accept('./rootReducer', () => {\n const nextRootReducer = require('./rootReducer').default\n store.replaceReducer(nextRootReducer)\n })\n }\n\n store.runSaga = sagaMiddleware.run\n store.close = () => store.dispatch(END)\n\n return store\n}\n","module.exports = __webpack_public_path__ + \"static/media/logo.a499b10a.svg\";","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Warn = function Warn(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: props.width,\n height: props.height,\n viewBox: \"0 0 64 64\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"defs\", null, /*#__PURE__*/_react[\"default\"].createElement(\"linearGradient\", {\n gradientTransform: \"matrix(1.31117 0 0 1.30239 737.39 159.91)\",\n gradientUnits: \"userSpaceOnUse\",\n id: \"0\",\n y2: \"-.599\",\n x2: \"0\",\n y1: \"45.47\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"stop\", {\n \"stop-color\": \"#ffc515\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"stop\", {\n offset: \"1\",\n \"stop-color\": \"#ffd55b\"\n }))), /*#__PURE__*/_react[\"default\"].createElement(\"g\", {\n transform: \"matrix(.85714 0 0 .85714-627.02-130.8)\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"m797.94 212.01l-25.607-48c-.736-1.333-2.068-2.074-3.551-2.074-1.483 0-2.822.889-3.569 2.222l-25.417 48c-.598 1.185-.605 2.815.132 4 .737 1.185 1.921 1.778 3.404 1.778h51.02c1.483 0 2.821-.741 3.42-1.926.747-1.185.753-2.667.165-4\",\n fill: \"url(#0)\"\n }), /*#__PURE__*/_react[\"default\"].createElement(\"path\", {\n d: \"m-26.309 18.07c-1.18 0-2.135.968-2.135 2.129v12.82c0 1.176.948 2.129 2.135 2.129 1.183 0 2.135-.968 2.135-2.129v-12.82c0-1.176-.946-2.129-2.135-2.129zm0 21.348c-1.18 0-2.135.954-2.135 2.135 0 1.18.954 2.135 2.135 2.135 1.181 0 2.135-.954 2.135-2.135 0-1.18-.952-2.135-2.135-2.135z\",\n transform: \"matrix(1.05196 0 0 1.05196 796.53 161.87)\",\n fill: \"#000\",\n stroke: \"#40330d\",\n \"fill-opacity\": \".75\"\n })));\n};\n\nvar _default = Warn;\nexports[\"default\"] = _default;"],"sourceRoot":""}