(\n \n {data.allMarkdownRemark.edges.map(({ node }) => (\n \n {node.frontmatter.title}\n {node.excerpt}
\n {node.frontmatter.date}
\n \n ))}\n
\n )}\n />\n >\n );\n}\n\nexport default RecentNews;\n","import styled from 'styled-components';\nimport mq from '../common/mq';\n\n// Sidebar widget styling\nconst gutter = 30;\nconst SidebarWidget = styled.aside`\n padding: 15px 20px;\n background-color: #fff;\n\n @media (max-width: ${mq.min[480]}) {\n margin-left: -${gutter / 2}px;\n margin-right: -${gutter / 2}px;\n }\n`;\n\nexport default SidebarWidget;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport RecentNews from './RecentNews';\nimport SidebarWidget from './SidebarWidget';\n\n/**\n * Dummy component, contains sidebar content. This way, we don't have to copy-and-paste content\n * on all the pages.\n */\nconst Sidebar = ({ children }) => children;\n\nSidebar.propTypes = {\n children: PropTypes.node,\n};\n\nSidebar.defaultProps = {\n children: (\n \n \n \n ),\n};\n\nexport default Sidebar;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass SocialShareContainer extends Component {\n static defineNetworks() {\n return {\n facebook: {\n name: 'facebook',\n label: 'Share on Facebook',\n },\n twitter: {\n name: 'twitter',\n label: 'Share on Twitter',\n },\n facebookMessenger: {\n name: 'facebookMessenger',\n label: 'Share on Messenger',\n },\n reddit: {\n name: 'reddit',\n label: 'Share on Reddit',\n },\n email: {\n name: 'email',\n label: 'Share by email',\n },\n };\n }\n\n static calculateWindowPosition(windowDimension, popUpDimension) {\n return Math.round(windowDimension / 2 - popUpDimension / 2);\n }\n\n static windowSettings() {\n const windowSettings = {\n popUpWidth: 840,\n popUpHeight: 420,\n popUpLeft: 0,\n popUpTop: 0,\n height: window.innerHeight,\n width: window.innerWidth,\n };\n\n windowSettings.popUpLeft = SocialShareContainer.calculateWindowPosition(\n windowSettings.width,\n windowSettings.popUpWidth\n );\n\n windowSettings.popUpTop =\n windowSettings.height > windowSettings.popUpHeight\n ? SocialShareContainer.calculateWindowPosition(\n windowSettings.height,\n windowSettings.popUpHeight\n )\n : 0;\n\n windowSettings.windowOptions = 'toolbar=no,menubar=no,location=yes,resizable=no,scrollbars=yes';\n\n windowSettings.windowSize =\n `width=${windowSettings.popUpWidth},` +\n `height=${windowSettings.popUpHeight},` +\n `top=${windowSettings.popUpTop},` +\n `left=${windowSettings.popUpLeft}`;\n\n return windowSettings;\n }\n\n static openWindow(event) {\n const { windowOptions, windowSize } = SocialShareContainer.windowSettings();\n const isFacebook = event.currentTarget.dataset.network === 'facebook';\n const isReddit = event.currentTarget.dataset.network === 'reddit';\n const isTwitter = event.currentTarget.dataset.network === 'twitter';\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"__twttr\"] }] */\n const hasTwitterWidgets =\n typeof window !== 'undefined' &&\n typeof window.__twttr !== 'undefined' &&\n window.__twttr.widgets &&\n window.__twttr.widgets.init;\n const shouldOpenWindow = isFacebook || isReddit || (isTwitter && !hasTwitterWidgets);\n\n if (shouldOpenWindow) {\n window.open(event.currentTarget.href, 'share', `${windowOptions},${windowSize}`);\n\n event.preventDefault();\n }\n }\n\n constructor() {\n super();\n\n this.getData = this.getData.bind(this);\n this.networksToShow = this.networksToShow.bind(this);\n }\n\n getData() {\n const text = encodeURIComponent(this.props.text);\n const url = encodeURIComponent(this.props.url);\n const { via } = this.props;\n const data = SocialShareContainer.defineNetworks();\n\n data.facebook.href = `https://www.facebook.com/sharer/sharer.php?u=${url}`;\n data.twitter.href = `https://twitter.com/intent/tweet?text=${text}&url=${url}&via=${via}`;\n data.facebookMessenger.href = `fb-messenger://share/?link=${url}`;\n data.reddit.href = `http://www.reddit.com/submit/?url=${url}`;\n data.email.href = `mailto:?subject=${text}&body=${url}`;\n\n return data;\n }\n\n networksToShow() {\n const hiddenNetworks = this.props.hide;\n const networkData = this.getData();\n\n if (hiddenNetworks && hiddenNetworks.length) {\n for (let i = 0; i < hiddenNetworks.length; i += 1) {\n const { name } = networkData[hiddenNetworks[i]];\n\n delete networkData[name];\n }\n }\n\n return networkData;\n }\n\n render() {\n return React.createElement(this.props.children, {\n networks: this.networksToShow(),\n onClick: SocialShareContainer.openWindow,\n ...this.props,\n });\n }\n}\n\nSocialShareContainer.propTypes = {\n children: PropTypes.func.isRequired,\n url: PropTypes.string.isRequired,\n text: PropTypes.string,\n hide: PropTypes.arrayOf(PropTypes.oneOf(Object.keys(SocialShareContainer.defineNetworks()))),\n via: PropTypes.string,\n};\n\nSocialShareContainer.defaultProps = {\n text: '',\n hide: null,\n via: 'OciusTechnology',\n};\n\nexport default SocialShareContainer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Heading from './Heading';\nimport SocialIconButton from './SocialIconButton';\n\nfunction SocialShare({ networks, headingText, onClick }) {\n return (\n \n {headingText && (\n \n {headingText}\n \n )}\n\n {Object.keys(networks).map((network) => (\n \n ))}\n
\n );\n}\n\nSocialShare.propTypes = {\n networks: PropTypes.objectOf(PropTypes.object).isRequired,\n headingText: PropTypes.string,\n onClick: PropTypes.func,\n};\n\nSocialShare.defaultProps = {\n headingText: 'Share this post:',\n onClick: null,\n};\n\nexport default SocialShare;\n","import React from 'react';\nimport { graphql } from 'gatsby';\nimport { Grid, Row, Col } from '@r007/react-styled-flexboxgrid';\nimport Layout from '../layouts/Layout';\nimport SEO from '../components/SEO';\nimport Sidebar from '../components/Sidebar';\nimport SocialShareContainer from '../components/SocialShareContainer';\nimport SocialShare from '../components/SocialShare';\nimport Heading from '../components/Heading';\nimport { Spacing } from '../components/common';\n\nfunction BlogPage({ data }) {\n const post = data.markdownRemark;\n const { title, date, author } = post.frontmatter;\n return (\n \n \n \n \n \n \n \n \n News\n \n \n
\n \n \n \n {title}\n \n {date}
\n {author}
\n \n {typeof window !== 'undefined' && (\n \n {SocialShare}\n \n )}\n \n \n \n \n
\n \n \n \n );\n}\n\nexport const query = graphql`\n query ($slug: String!) {\n markdownRemark(fields: { slug: { eq: $slug } }) {\n html\n frontmatter {\n title\n date(formatString: \"DD MMMM, YYYY\")\n author\n }\n excerpt\n }\n }\n`;\n\nexport default BlogPage;\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}"],"names":["Link","styled","UnstyledLink","props","theme","colors","themeDark","List","neutralLightAlt","themePrimary","to","query","render","data","allMarkdownRemark","edges","map","node","key","id","fields","slug","frontmatter","title","className","excerpt","date","mq","gutter","Sidebar","children","propTypes","PropTypes","defaultProps","SocialShareContainer","getData","bind","networksToShow","defineNetworks","facebook","name","label","twitter","facebookMessenger","reddit","email","calculateWindowPosition","windowDimension","popUpDimension","Math","round","windowSettings","popUpWidth","popUpHeight","popUpLeft","popUpTop","height","window","innerHeight","width","innerWidth","windowOptions","windowSize","openWindow","event","isFacebook","currentTarget","dataset","network","isReddit","isTwitter","hasTwitterWidgets","__twttr","widgets","init","open","href","preventDefault","text","encodeURIComponent","this","url","via","hiddenNetworks","hide","networkData","length","i","React","networks","onClick","Component","SocialShare","headingText","role","Heading","size","level","Object","keys","SocialIconButton","post","markdownRemark","author","Layout","SEO","description","xs","md","lg","$value","weight","underline","dangerouslySetInnerHTML","__html","html","location","lgOffset","_assertThisInitialized","self","ReferenceError"],"sourceRoot":""}