{"version":3,"sources":["webpack:///./src/app/static/weather/windy.svg","webpack:///./src/app/static/general/SAcoronavirus-button.jpg","webpack:///./src/app/static/weather/rain.svg","webpack:///./src/app/templates/Articles/HomePageHighlight.js","webpack:///./src/app/templates/Articles/SectionHighlight.js","webpack:///./src/app/templates/Articles/MultimediaHighlight.js","webpack:///./src/app/pages/LandingPages/HomePage.js","webpack:///./src/app/components/AuthorBio.js","webpack:///./src/app/static/weather/cloudy.svg","webpack:///./src/app/pages/AuthorsSectionPage.js","webpack:///./src/app/components/MostReadArticles.js","webpack:///./src/app/components/EditorsChoice.js","webpack:///./src/app/components/Sidebar.js","webpack:///./src/app/static/weather/thunder.svg","webpack:///./src/app/components/WingBanners.js","webpack:///./src/app/static/weather/sunny.svg","webpack:///./src/app/pages/Feedback.js","webpack:///./src/app/static/weather/pcloudy.svg"],"names":["module","exports","ArticleCard","num","article","index","isConnected","withReadCount","noImage","hasMounted","useHasMounted","sectionLabel","split","length","replace","to","getCanonicalUri","image","width","alt","headline","shape","className","formatAgo","sponsoredIndicator","readCount","height","Math","abs","sign","toFixed","Ad","path","process","slotId","targeting","mpu","collapseEmptyDiv","FORMATS","mpu600","Default","articles","section","map","key","contentKey","SectionHighlight","useH1","showAbstract","highlightLabel","getSectionLabel","showPlayBtn","LeaderboardTop","Leaderboard","Wing","connect","state","props","WingBanners","useSmall","location","onSlotRenderEndedLeft","onSlotRenderEndedRight","mappingLeft","mappingRight","Helmet","title","property","content","name","itemProp","logo","interstitial","anchor","mapping","MAPPINGS","Interstitial","leaderboard","leaderboardtop","component","HomePageTemplate","count","pageSize","NoImage","MultimediaHighlightTemplate","AuthorBio","url","imageUrl","slug","description","AuthorsSectionPage","authors","hasFetched","fetchAuthors","this","setState","console","log","titleTemplate","keywords","element","React","Component","defaultProps","withRouter","dispatch","bindActionCreators","MostReadArticles","page0Limit","fetchArticles","fetchMostReadArticles","notFound","fetchMoreArticles","authorName","moreButton","mostReadArticles","EditorsChoice","fetchEditorsChoiceArticles","prevProps","rawArticles","IonArticle","slice","isFetching","editorsChoice","pictures","sunny","windy","cloudy","partlycloudyday","pcloudy","showersday","rain","modheavyrain","rainy","thunder","mpuRHS","Sidebar","sticky","handleSubmit","bind","handleChange","onTabMostReadSelected","onTabEditorsChoiceSelected","event","newState","target","value","updateForm","email","match","preventDefault","validateEmail","subscribeNewsletter","error","e","setMostReadTab","reinitialize","fetchWeather","magazineCover","fetchMagazineCover","today","Date","dd","getDate","mm","getMonth","yyyy","getFullYear","10","11","12","showForm","hasSubmited","isSubmiting","submitting","showThankYou","ref","setStickyRef","Sticky","context","id","type","checked","mostReadTab","onChange","htmlFor","adPath","href","rel","fill","src","SACovidButton","renderDate","weather","Forecasts","ForecastDay1","Day","Weather","Picture","WeatherFull","Temperature","AppTemp","hasError","children","onSubmit","style","color","placeholder","required","active","indeterminate","size","Object","assign","subscribe","app","values","deviceWidth","defaultWidth","pathname","wingbanner","onSlotRenderEnded","apping","recaptchaRef","createRef","Feedback","verifyCallback","initialise","phone","captchaVerified","recaptchaValue","current","getValue","validateName","fullName","validatePhone","submitFeedback","output","isSubmitting","hasSubmitted","encType","sitekey","header","feedback"],"mappings":"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","file":"static/js/pages-Feedback.bbffd08a.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/windy.fac784ea.svg\";","module.exports = \"data:image/jpeg;base64,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HBCnKKC1qqkAYjSPMIApcrp9pRmSgSrbjGaSzoKcmVpSEKS40oKAaaoTpAKBCceaAOwwAgBACAEAIAQAgBACAEAIA4P+NfvBn5dH3HoA7Bkn7vkvl2ftpgC4gBAGjZWZGZxxc1LtoXMFISpCjcvlNChSVihbWCAK1FRzpKUqHHEosqy+pLc0DPuMrUl9ISEVoXSqVUqiQSqtCmitVE0CiMbxuqOeVMJbSWx2Gstr2f57GWTkJp90IaaS60UkHN3wj4aJW+oAXNJdQjFVw3gq9UzjWlwQndba8dnh+7Oo5KZLNSTawlKc66b7iki6CrGgSOZAqQB3mgrFqWC2utQXmbFHSwQAgBACAEAIAQAgBACAEAIAQAgBACAEAIAQAgBACAEAIAQAgBACAEAcH/Gv3gz8uj7j0AQbH/GGebl2G0tyxShttAJS5WgSkCunroIAnctdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IActdobKV3HPUgBy12hspXcc9SAHLXaGyldxz1IA59lzlzMTcwhxxDQUGwiiEqAoFLPOo41UYA//9k=\"","module.exports = __webpack_public_path__ + \"static/media/rain.ac95ca87.svg\";","import React from 'react'\nimport { Link } from 'react-router-dom'\nimport Ad from '../../components/Ad'\nimport FORMATS from '../../components/AdFormats'\nimport { Mobile, MobileElse } from 'ion-media'\nimport { View } from 'ion-icon'\nimport { ImageOrNoImage } from 'ion-image'\nimport useHasMounted from '../../components/useHasMounted'\n\nfunction kFormatter (num) {\n return Math.abs(num) > 999 ? Math.sign(num) * ((Math.abs(num) / 1000).toFixed(1)) + 'k' : Math.sign(num) * Math.abs(num)\n}\n\nconst ArticleCard = ({ article, index, isConnected, withReadCount, noImage }) => {\n const hasMounted = useHasMounted()\n const tempSectionLabel = article.sectionLabel.split('/').length > 1 ? article.sectionLabel.split('/')[1] : article.sectionLabel.split('/')[0]\n const sectionLabel = tempSectionLabel.replace('-', ' ')\n return (\n <>\n <article>\n <Link to={'/' + article.getCanonicalUri()}>\n <Mobile>\n <ImageOrNoImage image={article.image} width={320} alt={article.headline} shape='square' noImage={noImage} />\n </Mobile>\n {hasMounted &&\n <MobileElse>\n {index === 0 && (\n <ImageOrNoImage image={article.image} width={680} alt={article.headline} shape='Cinema2K' noImage={noImage} />\n )}\n {index !== 0 && (\n <ImageOrNoImage image={article.image} width={518} alt={article.headline} shape='square' noImage={noImage} />\n )}\n </MobileElse>}\n <div className='content'>\n <h3>{article.headline}</h3>\n {index === 0 && (\n <small className='meta'>\n <span className='date'>{article.formatAgo()}</span> | {sectionLabel}\n </small>\n )}\n {(article.sponsoredIndicator === 'SPONSORED' || article.sponsoredIndicator === 'SPONSORED_EXPIRED') &&\n <small className='sponsored'>Sponsored</small>}\n {(article.sponsoredIndicator === 'NATIVE' || article.sponsoredIndicator === 'NATIVE_EXPIRED') &&\n <small className='native'>Partnered</small>}\n </div>\n {/* NOTE: React bug\n When this div is placed before the previous one, and the server does not generate the below div, when the\n client does, react will resuse the previous div node and not set the className. Ways to fix this would be to\n move the node, or possibly not making a div but a span\n */}\n {withReadCount && article.readCount > 200\n ? (\n <div className='views'><View width='12' height='12' />{kFormatter(article.readCount)}</div>\n )\n : ''}\n </Link>\n </article>\n {index === 2 && (\n <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='mpu-topright' targeting={{ mpu: 'topright' }} collapseEmptyDiv className='ad-mpudynamic-topright' {...FORMATS.mpu600} />\n )}\n </>\n )\n}\n\nconst Default = ({ articles, section, noImage, isConnected, withReadCount }) => {\n return articles.map((article, index) => {\n return (\n <ArticleCard key={article.contentKey} article={article} index={index} isConnected={isConnected} noImage={noImage} withReadCount={withReadCount} />\n )\n })\n}\n\nexport default Default\n","import React from 'react'\nimport ArticleCard from '../../components/ArticleCard'\n\nconst SectionHighlight = ({ articles, section, noImage, isConnected, sectionLabel, useH1, withReadCount }) => (\n articles.map((article, index) => {\n if (index) {\n return <ArticleCard key={article.contentKey} article={article} noImage={noImage} width={100} withReadCount={withReadCount} />\n } else {\n return <ArticleCard key={article.contentKey} article={article} showAbstract noImage={noImage} width={315} withReadCount={withReadCount} />\n }\n })\n)\n\nexport default SectionHighlight\n","import React, { Fragment } from 'react'\nimport { Link } from 'react-router-dom'\nimport { getSectionLabel } from 'ion-sections'\nimport ArticleCard from '../../components/ArticleCard'\nimport { RightArrow } from 'ion-icon'\n\nconst Default = ({ articles, section, noImage, isConnected, sectionLabel, withReadCount }) => {\n const highlightLabel = sectionLabel || getSectionLabel(section)\n return articles.map((article, index) => {\n return (\n <Fragment key={article.contentKey}>\n {index === 0 && (\n <>\n <div className='section-head'>\n <h2><span>{getSectionLabel(highlightLabel)}</span></h2>\n <Link to='/multimedia'>More <RightArrow width='12' height='12' /></Link>\n </div>\n <ArticleCard key={article.contentKey} article={article} showAbstract showPlayBtn noImage={noImage} width={305} withReadCount={withReadCount} />\n </>\n )}\n {index > 0 && (\n <ArticleCard key={article.contentKey} article={article} noImage={noImage} width={100} withReadCount={withReadCount} />\n )}\n </Fragment>\n )\n })\n}\n\nexport default Default\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport Helmet from 'react-helmet'\nimport { Articles, HomePageMeta } from 'ion-article-cmp'\nimport Ad from '../../components/Ad'\nimport { FORMATS, MAPPINGS } from '../../components/AdFormats'\nimport NoImage from '../../static/no-image.png'\nimport HomePageTemplate from '../../templates/Articles/HomePageHighlight'\nimport SectionHighlight from '../../templates/Articles/SectionHighlight'\nimport MultimediaHighlightTemplate from '../../templates/Articles/MultimediaHighlight'\nimport SiteSidebar from '../../components/Sidebar'\nimport WingBanners from '../../components/WingBanners'\nimport logo from '../../static/general/daily-voice.jpg'\nimport { MobileElse } from 'ion-media'\nimport { Link } from 'react-router-dom'\nimport { RightArrow } from 'ion-icon'\nimport useHasMounted from '../../components/useHasMounted'\n\nconst LeaderboardTop = [\n [[1024, 0], [[728, 90], [970, 90]]],\n [[640, 0], [[460, 60]]],\n [[0, 0], [[320, 100], [320, 50], [300, 100], [300, 50]]]\n]\n\nconst Leaderboard = [\n [[1024, 0], [[728, 90], [970, 90], [970, 250]]],\n [[640, 0], [[460, 60]]],\n [[0, 0], [[300, 600], [336, 280], [320, 100], [320, 50], [300, 250], [300, 100], [300, 50]]]\n]\n\nconst Wing = [\n [[1024, 0], [[160, 600], [120, 600]]],\n [[640, 0], []],\n [[0, 0], []]\n]\n\nconst HomePage = (props) => {\n const hasMounted = useHasMounted()\n return (\n <>\n <WingBanners useSmall={props.useSmall} isConnected={props.isConnected} location={props.location} onSlotRenderEndedLeft={props.onSlotRenderEndedLeft} onSlotRenderEndedRight={props.onSlotRenderEndedRight} mappingLeft={Wing} mappingRight={Wing} />\n <Helmet title={process.env.RAZZLE_SITE_TITLE}>\n <meta property='og:url' content={process.env.RAZZLE_SITE_URL} />\n <meta name='description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n <meta itemProp='description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n <meta property='og:description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n <meta name='twitter:site' content='@dailyvoicesa' />\n <meta name='twitter:creator' content={process.env.RAZZLE_SITE_TWITTER_USER} />\n <meta name='twitter:description' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n <meta name='twitter:title' content={process.env.RAZZLE_SITE_DESCRIPTION} />\n <meta name='twitter:card' content='summary_large_image' />\n <meta name='twitter:image:src' content={logo} />\n </Helmet>\n <HomePageMeta {...props} />\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='interstitial' targeting={{ interstitial: 'interstitial' }} collapseEmptyDiv className='advert-leaderboard' anchor='interstitial' mapping={MAPPINGS.Interstitial} {...FORMATS.interstitial} />\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='leaderboard-top' targeting={{ leaderboard: 'top' }} collapseEmptyDiv className='advert-leaderboard-top' mapping={LeaderboardTop} {...FORMATS.leaderboardtop} />\n {/* <div className='wrapper breaking-news'>\n <span>Breaking News</span>\n <a href='/'>\n Breaking News headline goes here\n </a>\n </div> */}\n <Articles {...props} component={HomePageTemplate} className='wrapper featured-articles' section='tvbox' count={7} pageSize={7} noImage={NoImage} />\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='leaderboard-top1' targeting={{ leaderboard: 'top1' }} collapseEmptyDiv className='advert-leaderboard' mapping={Leaderboard} {...FORMATS.leaderboard} />\n <div className='wrapper article-listing'>\n <div className='article-list'>\n {/* NEWS Section */}\n <div className='section-head'>\n <h1><span>News</span></h1>\n <Link to='/news'>More <RightArrow width='12' height='12' /></Link>\n <div className='related-sections'>\n <p>Related Sections</p>\n <nav>\n <ul>\n <li><Link to='/news/western-cape'>Western Cape</Link></li>\n <li><Link to='/news/national'>National</Link></li>\n <li><Link to='/news/international'>International</Link></li>\n </ul>\n </nav>\n </div>\n </div>\n <Articles {...props} component={SectionHighlight} className='highlights' section='news' count={5} pageSize={5} noImage={NoImage} />\n\n {/* SPORT Section */}\n <div className='section-head'>\n <h2><span>Sport</span></h2>\n <Link to='/sport'>More <RightArrow width='12' height='12' /></Link>\n <div className='related-sections'>\n <p>Related Sections</p>\n <nav>\n <ul>\n <li><Link to='/sport/cricket'>Cricket</Link></li>\n <li><Link to='/sport/rugby'>Rugby</Link></li>\n <li><Link to='/sport/soccer'>Soccer</Link></li>\n </ul>\n </nav>\n </div>\n </div>\n <Articles {...props} component={SectionHighlight} className='highlights' section='sport' count={5} pageSize={5} noImage={NoImage} />\n\n {/* SPORT Section */}\n <div className='section-head'>\n <h2><span>Lifestyle & Entertainment</span></h2>\n <Link to='/lifestyle-entertainment'>More <RightArrow width='12' height='12' /></Link>\n <div className='related-sections'>\n <p>Related Sections</p>\n <nav>\n <ul>\n <li><Link to='/lifestyle-entertainment/celebrity'>Celebrity</Link></li>\n <li><Link to='/lifestyle-entertainment/lifestyle'>Lifestyle</Link></li>\n <li><Link to='/lifestyle-entertainment/travel'>Travel</Link></li>\n </ul>\n </nav>\n </div>\n </div>\n <Articles {...props} component={SectionHighlight} className='highlights' section='lifestyle-entertainment' count={5} pageSize={5} noImage={NoImage} />\n\n <Articles {...props} component={MultimediaHighlightTemplate} className='highlights multimedia' section='multimedia' count={5} pageSize={5} noImage={NoImage} />\n\n {/* COLUMNS & OPINION Section */}\n <div className='section-head'>\n <h2><span>Columns & Opinion</span></h2>\n <Link to='/opinion'>More <RightArrow width='12' height='12' /></Link>\n <div className='related-sections'>\n <p>Related Sections</p>\n <nav>\n <ul>\n <li><Link to='/opinion/sport'>Sport</Link></li>\n <li><Link to='/opinion/motoring'>Motoring</Link></li>\n <li><Link to='/opinion/current-affairs'>Current Affairs</Link></li>\n </ul>\n </nav>\n </div>\n </div>\n <Articles {...props} component={SectionHighlight} className='highlights' section='opinion' sectionLabel='Columns & Opinion' count={5} pageSize={5} noImage={NoImage} />\n </div>\n <SiteSidebar {...props} section='homepage' />\n </div>\n {hasMounted &&\n <MobileElse>\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/homepage`} slotId='leaderboard-bot' targeting={{ leaderboard: 'bot' }} collapseEmptyDiv className='advert-leaderboard' mapping={Leaderboard} {...FORMATS.leaderboard} />\n </MobileElse>}\n </>\n )\n}\n\nconst mapStateToProps = (state) => ({ articles: state.articles })\n\nexport default connect(mapStateToProps)(HomePage)\n","import React from 'react'\nimport { ImageOrNoImage } from 'ion-image'\nimport { Link } from 'react-router-dom'\n\nconst AuthorBio = (props) => {\n return (\n <>\n <div className='author-bio'>\n <ImageOrNoImage shape='square' width={450} image={{ url: props.imageUrl }} alt={props.name} noImage={props.noImage} />\n <h4><Link to={'/' + props.slug}>{props.name}</Link></h4>\n {props.description && <p>{props.description}</p>}\n </div>\n </>\n )\n}\n\nexport default AuthorBio\n","module.exports = __webpack_public_path__ + \"static/media/cloudy.f97c2f8d.svg\";","import React from 'react'\nimport Helmet from 'react-helmet'\nimport { connect } from 'react-redux'\nimport { SectionMeta } from 'ion-article-cmp'\nimport WingBanners from '../components/WingBanners'\nimport { bindActionCreators } from 'redux'\nimport { withRouter } from 'react-router'\nimport { fetchAuthors } from '../../store/authors'\nimport { getSectionLabel } from 'ion-sections'\nimport Ad from '../components/Ad'\nimport FORMATS from '../components/AdFormats'\nimport { MobileElse } from 'ion-media'\nimport Sidebar from '../components/Sidebar'\nimport NoImage from '../static/no-image.png'\nimport AuthorBio from '../components/AuthorBio'\n\nclass AuthorsSectionPage extends (React.Component) {\n constructor (props) {\n super(props)\n this.state = { hasMounted: false }\n if (!this.props.authors.hasFetched) {\n props.fetchAuthors()\n }\n }\n\n componentDidMount () {\n this.setState({ hasMounted: true })\n }\n\n render () {\n const props = this.props\n console.log('Props: ', props)\n return (\n <>\n <Helmet\n titleTemplate='%s'\n title={props.title || getSectionLabel(props.section)}\n >\n <meta property='og:type' content='section' />\n <meta name='description' content={props.description} />\n <meta itemProp='description' content={props.description} />\n <meta property='og:description' content={props.description} />\n <meta property='og:url' content={props.url} />\n <meta property='keywords' content={props.keywords} />\n <meta name='twitter:description' content={props.description} />\n </Helmet>\n <WingBanners useSmall={props.useSmall} isConnected={props.isConnected} location={props.location} onSlotRenderEndedLeft={props.onSlotRenderEndedLeft} onSlotRenderEndedRight={props.onSlotRenderEndedRight} />\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='leaderboard-1' targeting={{ leaderboard: '1' }} collapseEmptyDiv className='advert-leaderboard-1' {...FORMATS.leaderboard} />\n <div className='wrapper article-listing'>\n {props.authors && props.authors.authors &&\n <div className='author article-list'>\n <div className='author-bio no-divider'>\n <h1>Authors</h1>\n <p>Follow your favourite authors here to be notified of all their latest articles.</p>\n <p>This option is not available to all web browsers.</p>\n </div>\n {\n props.authors.authors.map((element, index) => {\n return (\n <AuthorBio key={index} {...element} noImage={NoImage} />\n )\n })\n }\n </div>}\n <Sidebar {...props} />\n </div>\n <MobileElse>\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.section}`} slotId='leaderboard-3' targeting={{ leaderboard: '3' }} collapseEmptyDiv className='advert-leaderboard-3' {...FORMATS.leaderboard} />\n </MobileElse>\n <SectionMeta {...props} />\n </>\n )\n }\n}\n\nAuthorsSectionPage.defaultProps = {\n section: 'homepage'\n}\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ fetchAuthors }, dispatch)\n\nexport default withRouter(connect((state) => ({ authors: state.authors }), mapDispatchToProps)(AuthorsSectionPage))\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { fetchMostReadArticles } from '../../store/mostReadArticles'\n\nimport { Articles } from 'ion-article-cmp'\nimport NoImage from '../static/no-image.png'\n\nclass MostReadArticles extends Component {\n render () {\n return (\n <div className='most-read'>\n <h3><span>Most Read</span></h3>\n <Articles\n className='article-list paged' section='news' page0Limit={5} pageSize={5} fetchArticles={this.props.fetchMostReadArticles}\n noImage={NoImage} notFound={() => (<div>Oops!</div>)} fetchMoreArticles={() => { }} articles={this.props.articles}\n component={({ articles, authorName, noImage, moreButton }) => (\n <>\n {articles.map((article, index) => (\n <article key={article.contentKey}>\n <Link to={'/' + article.getCanonicalUri()}>\n <span>{index + 1}</span>\n <h4>{article.headline}</h4>\n </Link>\n </article>\n ))}\n </>)}\n />\n </div>\n )\n }\n}\n\nMostReadArticles.propTypes = {\n articles: PropTypes.object.isRequired,\n fetchMostReadArticles: PropTypes.func.isRequired\n}\n\nMostReadArticles.defaultProps = {\n pageSize: 5\n}\n\nconst mapStateToProps = (state) => ({ articles: state.mostReadArticles })\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ fetchMostReadArticles }, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MostReadArticles)\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\nimport { bindActionCreators } from 'redux'\nimport { connect } from 'react-redux'\nimport { fetchEditorsChoiceArticles } from '../../store/editorsChoice'\nimport IonArticle from 'ion-article'\n\nclass EditorsChoice extends Component {\n constructor (props) {\n super(props)\n const articles = props.articles[props.section]\n if (!articles || !articles.length) {\n props.fetchEditorsChoiceArticles(props.section)\n }\n }\n\n componentDidUpdate (prevProps) {\n if (prevProps.section !== this.props.section) {\n this.props.fetchEditorsChoiceArticles(this.props.section)\n }\n }\n\n render () {\n const rawArticles = this.props.articles\n if (rawArticles && rawArticles.length) {\n const articles = rawArticles.map(article => new IonArticle(article))\n return (\n <div className='editors-choice'>\n <h3><span>Editor's Choice</span></h3>\n {articles.slice(0, this.props.pageSize).map((article, index) => {\n return (\n <article key={article.contentKey}>\n <Link to={'/' + article.getCanonicalUri()}>\n <span>{index + 1}</span>\n <h4>{article.headline}</h4>\n </Link>\n </article>\n )\n })}\n </div>\n )\n } else if (this.props.isFetching) {\n return (\n <div>\n <p>Fetching most read articles...</p>\n </div>\n )\n } else {\n return ''\n }\n }\n}\n\nEditorsChoice.propTypes = {\n fetchEditorsChoiceArticles: PropTypes.func.isRequired,\n pageSize: PropTypes.number,\n title: PropTypes.string.isRequired,\n section: PropTypes.string.isRequired\n}\n\nEditorsChoice.defaultProps = {\n pageSize: 5\n}\n\nconst mapStateToProps = (state) => (state.editorsChoice)\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ fetchEditorsChoiceArticles }, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EditorsChoice)\n","import React, { Component, Fragment } from 'react'\nimport { bindActionCreators } from 'redux'\nimport { connect } from 'react-redux'\nimport { Dimmer, Loader, Segment } from 'semantic-ui-react/dist/commonjs'\nimport Helmet from 'react-helmet'\nimport { Link } from 'react-router-dom'\nimport 'semantic-ui-css/components/sticky.min.css'\nimport { Sticky } from 'semantic-ui-react'\nimport Ad from './Ad'\nimport FORMATS from './AdFormats'\nimport MostRead from '../components/MostReadArticles'\nimport EditorsChoice from '../components/EditorsChoice'\nimport { subscribeNewsletter, updateForm, reinitialize } from '../../store/subscribe'\nimport { fetchMagazineCover } from '../../store/magazineCover'\nimport { fetchWeather } from '../../store/weather'\nimport { setMostReadTab } from '../../store/app'\nimport { Twitter, Facebook, Instagram, RightArrow, RSS as Rss } from 'ion-icon'\nimport cloudy from '../static/weather/cloudy.svg'\nimport pcloudy from '../static/weather/pcloudy.svg'\nimport rain from '../static/weather/rain.svg'\nimport sunny from '../static/weather/sunny.svg'\nimport thunder from '../static/weather/thunder.svg'\nimport windy from '../static/weather/windy.svg'\nimport SACovidButton from '../static/general/SAcoronavirus-button.jpg'\n\nconst pictures = {\n sunny,\n windy,\n cloudy,\n partlycloudyday: pcloudy,\n showersday: rain,\n modheavyrain: rain,\n rainy: rain,\n thunder\n}\n\nconst mpuRHS = [\n [[1024, 0], [[300, 250], [3, 3]]],\n [[640, 0], [[300, 250], [336, 280], [3, 3]]],\n [[0, 0], [[300, 600], [336, 280], [320, 100], [320, 50], [300, 250], [300, 100], [300, 50], [3, 3]]]\n]\n\nexport class Sidebar extends Component {\n constructor (props) {\n super(props)\n this.state = {\n sticky: null\n }\n this.handleSubmit = this.handleSubmit.bind(this)\n this.handleChange = this.handleChange.bind(this)\n this.onTabMostReadSelected = this.onTabMostReadSelected.bind(this)\n this.onTabEditorsChoiceSelected = this.onTabEditorsChoiceSelected.bind(this)\n }\n\n setStickyRef = (element) => {\n this.setState({ sticky: element })\n }\n\n handleChange (event) {\n const newState = {}\n newState[event.target.name] = event.target.value\n this.props.updateForm(newState)\n }\n\n validateEmail (email) {\n const re = /^[^.@][^@]+@{1}[^@]+\\.[^@]+[^.@]$/i\n return email.match(re)\n }\n\n handleSubmit (event) {\n event.preventDefault()\n if (!this.validateEmail(this.props.email)) {\n this.props.updateForm({ error: 'Please enter a valid email address' })\n return false\n }\n this.props.subscribeNewsletter(this.props.email)\n return true\n }\n\n onTabMostReadSelected (e) {\n this.props.setMostReadTab(0)\n }\n\n onTabEditorsChoiceSelected (e) {\n this.props.setMostReadTab(1)\n }\n\n componentDidMount () {\n this.props.reinitialize()\n this.props.fetchWeather()\n if (!this.props.magazineCover) {\n this.props.fetchMagazineCover()\n }\n }\n\n renderDate () {\n const monthNumbers = {\n '01': 'January',\n '02': 'February',\n '03': 'March',\n '04': 'April',\n '05': 'May',\n '06': 'June',\n '07': 'July',\n '08': 'August',\n '09': 'September',\n 10: 'October',\n 11: 'November',\n 12: 'December'\n }\n let today = new Date()\n let dd = today.getDate()\n let mm = today.getMonth() + 1\n const yyyy = today.getFullYear()\n if (dd < 10) {\n dd = '0' + dd\n }\n if (mm < 10) {\n mm = '0' + mm\n }\n today = dd + ' ' + monthNumbers[mm] + ' ' + yyyy\n return today\n }\n\n render () {\n const props = this.props\n const showForm = !props.hasSubmited && !props.isSubmiting\n const submitting = props.isSubmiting\n const showThankYou = props.hasSubmited\n return (\n <aside className='sidebar' ref={this.setStickyRef}>\n <Sticky context={this.sticky}>\n <div className='read-choice'>\n <input id='most-read' type='radio' name='tabs' checked={this.props.mostReadTab === 0} onChange={() => this.onTabMostReadSelected()} />\n <label htmlFor='most-read'>Most Read</label>\n <input id='editors-choice' type='radio' name='tabs' checked={this.props.mostReadTab === 1} onChange={() => this.onTabEditorsChoiceSelected()} />\n <label htmlFor='editors-choice'>Editor's Choice</label>\n <div className='content' id='sidebar-articles'>\n {this.props.mostReadTab === 0\n ? (<MostRead {...props} section='' title='Daily Voice' />)\n : (<EditorsChoice {...props} section='' title='Daily Voice' />)}\n </div>\n </div>\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.adPath || props.section}`} slotId='mpu-topright1' targeting={{ mpu: 'topright1' }} collapseEmptyDiv className='advert-sidebar' mapping={mpuRHS} {...FORMATS.mpu} />\n <div className='follow-us'>\n <h3>\n <span>Follow us</span>\n </h3>\n <a href={process.env.RAZZLE_SITE_FACEBOOK} className='facebook' target='_blank' rel='noopener noreferrer'>\n <Facebook width='24' height='24' />\n <span>Like Daily Voice on Facebook</span>\n </a>\n <a href={process.env.RAZZLE_SITE_TWITTER} className='twitter' target='_blank' rel='noopener noreferrer'>\n <Twitter width='24' height='24' fill='white' />\n <span>Follow Daily Voice on Twitter</span>\n </a>\n <a href={process.env.RAZZLE_SITE_INSTAGRAM} className='instagram' target='_blank' rel='noopener noreferrer'>\n <Instagram width='24' height='24' />\n <span>Follow Daily Voice on Instagram</span>\n </a>\n <a href={process.env.RAZZLE_SITE_RSS} target='_blank' className='instagram' rel='noopener noreferrer'>\n <Rss width='24' height='24' />\n <span>Subscribe to Daily Voice RSS Feed</span>\n </a>\n </div>\n <div className='banner-button'>\n <a href='https://sacoronavirus.co.za/' target='_blank' rel='noopener noreferrer nofollow'>\n <img src={SACovidButton} title='COVID-19 Resource Portal' alt='COVID-19 Resource Portal' />\n </a>\n </div>\n <div className='weather'>\n <h3><span>Weather</span></h3>\n <h4>Today<br />{this.renderDate()}</h4>\n {this.props.hasFetched && this.props.weather &&\n <section className='forecast'>\n <img src={pictures[props.weather.Forecasts.ForecastDay1.Day.Weather.Picture]} alt={props.weather.Forecasts.ForecastDay1.Day.Weather.WeatherFull} /> <span>{props.weather.Forecasts.ForecastDay1.Temperature.AppTemp}°</span>\n </section>}\n {this.props.hasError &&\n <section className='forecast'>\n <p>Error: {this.props.error}</p>\n </section>}\n <Link to='/weather'>View 7 day forecast <RightArrow width='16' height='16' /></Link>\n </div>\n <div className='newsletter-subscribe'>\n <h3>\n <span>On Sale Now</span>\n </h3>\n {this.props.magazineCover &&\n <img src={this.props.magazineCover.image} alt='magazine cover' />}\n </div>\n {this.props.children}\n <div className='newsletter-subscribe'>\n <h3>\n <span>Subscribe</span>\n </h3>\n {showForm &&\n <>\n <form name='item-form' id='item-form' onSubmit={this.handleSubmit}>\n <label htmlFor='email'>Sign up to receive breaking news in your inbox.</label>\n {props.error &&\n <small style={{ color: 'red' }}>{this.props.error ? this.props.error : 'An error occured, please try again'}</small>}\n <input type='email' name='email' id='email' value={props.email} placeholder='Email Address' onChange={this.handleChange} required />\n <button type='submit'>Subscribe</button>\n </form>\n </>}\n {submitting &&\n <>\n <Helmet title='Article' />\n <Segment>\n <Dimmer active>\n <Loader indeterminate size='large'>Submitting subscription.....</Loader>\n </Dimmer>\n </Segment>\n </>}\n {showThankYou &&\n <>\n <Helmet title='Article' />\n <h3>Thank you for Subscribing!</h3>\n <p>We have sent a confirmation email to the email address that you provided. Click on the link in the email to confirm your subscription to our newsletter.</p>\n </>}\n </div>\n <Ad isConnected={props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/${props.adPath || props.section}`} slotId='mpu-bot' targeting={{ mpu: 'bot' }} collapseEmptyDiv className='advert-sidebar' {...FORMATS.mpu600} />\n </Sticky>\n </aside>\n )\n }\n}\n\nconst mapStateToProps = (state) => (Object.assign({}, state.subscribe, state.weather, state.app, state.magazineCover))\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({\n subscribeNewsletter,\n updateForm,\n reinitialize,\n fetchWeather,\n setMostReadTab,\n fetchMagazineCover\n}, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Sidebar)\n","module.exports = __webpack_public_path__ + \"static/media/thunder.6910377f.svg\";","import React from 'react'\nimport { Desktop, defaultWidth } from 'ion-media'\nimport Ad from './Ad'\nimport FORMATS from './AdFormats'\n\nconst WingBanners = ({ useSmall, isConnected, location, onSlotRenderEndedLeft, onSlotRenderEndedRight, mappingRight, mappingLeft }) => {\n return (\n <span>\n {process.env.NODE_ENV === 'production' &&\n <Desktop values={{ deviceWidth: defaultWidth }}>\n <div className={'wing-banners horizontal-center' + (useSmall ? ' reduced-header' : '')}>\n <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}${location.pathname === '/' ? '/homepage' : location.pathname}`} slotId='wingbanner-left' targeting={{ wingbanner: 'left' }} onSlotRenderEnded={onSlotRenderEndedLeft} collapseEmptyDiv className='advert-wingbanner-left' mapping={mappingLeft} {...FORMATS.wingbanner} />\n <Ad isConnected={isConnected} path={`/${process.env.RAZZLE_DFP_CODE}${location.pathname === '/' ? '/homepage' : location.pathname}`} slotId='wingbanner-right' targeting={{ wingbanner: 'right' }} onSlotRenderEnded={onSlotRenderEndedRight} collapseEmptyDiv className='advert-wingbanner-right' apping={mappingRight} {...FORMATS.wingbanner} />\n </div>\n </Desktop>}\n </span>\n )\n}\n\nexport default WingBanners\n","module.exports = __webpack_public_path__ + \"static/media/sunny.456930e2.svg\";","import Recaptcha from 'react-google-recaptcha'\nimport React, { Component, Fragment } from 'react'\nimport { Dimmer, Loader, Segment, Message } from 'semantic-ui-react/dist/commonjs'\nimport 'semantic-ui-css/components/dimmer.min.css'\nimport 'semantic-ui-css/components/loader.min.css'\nimport 'semantic-ui-css/components/segment.min.css'\nimport 'semantic-ui-css/components/message.min.css'\nimport Helmet from 'react-helmet'\nimport { bindActionCreators } from 'redux'\nimport { connect } from 'react-redux'\nimport { initialise, submitFeedback, updateForm } from '../../store/feedback'\nimport { FORMATS, MAPPINGS } from '../components/AdFormats'\nimport Ad from '../components/Ad'\n\nconst recaptchaRef = React.createRef()\n\nexport class Feedback extends Component {\n constructor (props) {\n super(props)\n this.handleChange = this.handleChange.bind(this)\n this.handleSubmit = this.handleSubmit.bind(this)\n this.verifyCallback = this.verifyCallback.bind(this)\n }\n\n componentDidMount () {\n this.props.initialise()\n }\n\n handleChange (event) {\n const newState = {}\n newState[event.target.name] = event.target.value\n this.props.updateForm(newState)\n }\n\n validateEmail (email) {\n const re = /^[^.@][^@]+@{1}[^@]+\\.[^@]+[^.@]$/i\n return email.match(re)\n }\n\n validateName (name) {\n const re = /^[`a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ' -]{2,45}$/i\n return name.match(re)\n }\n\n validatePhone (phone) {\n const re = /^[(]{0,1}[0-9]{3}[)]{0,1}[-\\s.]{0,1}[0-9]{3}[-\\s.]{0,1}[0-9]{4}$/\n return phone.match(re)\n }\n\n verifyCallback () {\n this.props.updateForm({\n captchaVerified: true,\n recaptchaValue: recaptchaRef.current.getValue()\n })\n }\n\n handleSubmit (event) {\n event.preventDefault()\n if (!this.validateEmail(this.props.email)) {\n this.props.updateForm({ output: 'Please enter a valid email address' })\n return false\n } else if (!this.validateName(this.props.fullName)) {\n this.props.updateForm({ output: 'Please enter a valid full name' })\n return false\n } else if (!this.validatePhone(this.props.phone)) {\n this.props.updateForm({ output: 'Please enter a valid cellphone number' })\n return false\n } else if (!this.props.captchaVerified) {\n this.props.updateForm({ output: 'Please enter a Captcha' })\n return false\n }\n this.props.submitFeedback(this.props)\n return true\n }\n\n render () {\n if (!this.props.isSubmitting && !this.props.hasSubmitted) {\n return (\n <>\n <Ad isConnected={this.props.isConnected} path={`/${process.env.RAZZLE_DFP_CODE}/feedback`} slotId='interstitial' targeting={{ interstitial: 'interstitial' }} collapseEmptyDiv className='advert-leaderboard' anchor='interstitial' mapping={MAPPINGS.Interstitial} {...FORMATS.interstitial} />\n <div className='wrapper static-page'>\n <Helmet title='Feedback, Enquiries and Comments | The Daily Voice' />\n <h1>Feedback Form</h1>\n <form id='item-form' name='item-form' encType='text/plain' onSubmit={this.handleSubmit}>\n <p>Fill out the form below to send your comments, queries and feedback.</p>\n <label htmlFor='fullName'>Full Name:</label>\n <input id='fullName' placeholder='Type your full name' required='required' type='text' name='fullName' value={this.props.fullName} onChange={this.handleChange} />\n <label htmlFor='email'>Email:</label>\n <input id='email' placeholder='example@domain.com' required='required' type='email' name='email' value={this.props.email} onChange={this.handleChange} />\n <label htmlFor='phone'>Cellphone:</label>\n <input id='phone' placeholder='Type your cellphone number' required='required' type='text' name='phone' value={this.props.phone} onChange={this.handleChange} />\n <label htmlFor='enquiryType'>Enquiry:</label>\n <select id='enquiryType' name='enquiryType' onChange={this.handleChange}>\n <option value='general'>General Enquiry</option>\n <option value='technical'>Technical Issue</option>\n <option value='news'>News</option>\n <option value='business'>Business</option>\n <option value='sport'>Sport</option>\n <option value='motoring'>Motoring</option>\n <option value='lifestyle'>Lifestyle</option>\n <option value='travel'>Travel</option>\n <option value='entertainment'>Entertainment</option>\n <option value='newspapers'>Newspapers</option>\n <option value='press'>Press Release</option>\n </select>\n <label htmlFor='message'>Message:</label>\n <textarea name='message' id='message' onChange={this.handleChange} />\n <Recaptcha ref={recaptchaRef} sitekey={process.env.RAZZLE_GOOGLE_CAPTCHA_SITE_KEY} onChange={() => this.verifyCallback} />\n {(!(this.props.output === '') &&\n <Message\n error\n header='Errors'\n content={this.props.output}\n />\n )}\n <input id='submitbutton' type='submit' value='Submit' className='red-btn' />\n <input type='hidden' name='form_hash' value='n1opdyilO0bEvwBq' id='form_hash' />\n </form>\n </div>\n </>\n )\n } else if (this.props.isSubmitting) {\n return (\n <>\n <Helmet title='Article' />\n <Segment>\n <Dimmer active>\n <Loader indeterminate size='large'>Submitting your feedback</Loader>\n </Dimmer>\n </Segment>\n </>\n )\n } else if (this.props.hasSubmitted) {\n return (\n <div className='content-wrapper'>\n <Helmet title='Thank you for your feedback' />\n <h1>Thank you for your feedback</h1>\n <p>Thank you for your feedback. We will get back to you shortly.</p>\n </div>\n )\n }\n }\n}\n\nconst mapStateToProps = (state) => (state.feedback)\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ initialise, submitFeedback, updateForm }, dispatch)\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Feedback)\n","module.exports = __webpack_public_path__ + \"static/media/pcloudy.638586d7.svg\";"],"sourceRoot":""}