{"version":3,"sources":["webpack://taiharuru-press/./node_modules/@babel/runtime/helpers/construct.js","webpack://taiharuru-press/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://taiharuru-press/./node_modules/gatsby-plugin-mdx/mdx-renderer.js","webpack://taiharuru-press/./src/components/Translations.js","webpack://taiharuru-press/./src/components/Time.js","webpack://taiharuru-press/./src/components/ContentHeader.js","webpack://taiharuru-press/./src/components/Content.js","webpack://taiharuru-press/./src/components/Flag.js","webpack://taiharuru-press/./src/components/icons/uk-flag.png","webpack://taiharuru-press/./src/components/icons/fr-flag.png","webpack://taiharuru-press/./src/components/TagList.js","webpack://taiharuru-press/./src/components/Bio.js","webpack://taiharuru-press/./src/components/Article.js","webpack://taiharuru-press/./src/components/PrevNextPost.js","webpack://taiharuru-press/./src/components/PurchaseLink.js","webpack://taiharuru-press/./src/templates/blog-post.js"],"names":["setPrototypeOf","isNativeReflectConstruct","_construct","Parent","args","Class","module","exports","Reflect","construct","__esModule","a","push","apply","instance","Function","bind","prototype","arguments","sham","Proxy","Boolean","valueOf","call","e","React","require","mdx","useMDXScope","scope","children","props","mdxScope","End","fullScope","keys","Object","values","key","fn","TranslationContainer","styled","InfoText","TranslationLink","render","translations","this","i","href","withPrefix","translation","TimeContainer","date","dateObject","Date","yyyymmdd","year","month","day","friendlyDate","datetime","Header","tags","Array","ContentBody","content","purchaseLink","FlagImage","language","img","alt","src","className","ListContainer","TagListItemLink","TagListItem","TagList","noLink","to","tag","BioWrapper","BioText","useSiteMetadata","authorAvatar","authorName","authorDescription","fixed","useSiteImages","style","backgroundImage","dangerouslySetInnerHTML","__html","ArticleWrapper","ArticleFooter","post","PreviewContainer","Preview","PreviewCover","PreviewContent","Author","articles","filter","item","node","siteCover","defaultLang","fluid","article","excerpt","cover","title","slug","heroImg","aria-label","AmazonLink","link","target","rel","data","previous","next","location","description","imageShare","lang","path","isBlogPost","subTitle"],"mappings":"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","file":"component---src-templates-blog-post-js-3a4900d16223ec20eff5.js","sourcesContent":["var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","const React = require(`react`)\nconst { mdx } = require(`@mdx-js/react`)\nconst { useMDXScope } = require(`./context`)\n\nmodule.exports = function MDXRenderer({\n scope,\n children,\n ...props\n}) {\n const mdxScope = useMDXScope(scope)\n\n // Memoize the compiled component\n const End = React.useMemo(() => {\n if (!children) {\n return null\n }\n\n const fullScope = {\n // React is here just in case the user doesn't pass them in\n // in a manual usage of the renderer\n React,\n mdx,\n ...mdxScope,\n }\n\n const keys = Object.keys(fullScope)\n const values = keys.map(key => fullScope[key])\n const fn = new Function(`_fn`, ...keys, `${children}`)\n\n return fn({}, ...values)\n }, [children, scope])\n\n return React.createElement(End, {...props })\n}\n","import React, { Fragment } from 'react'\nimport { withPrefix } from 'gatsby'\nimport styled from 'styled-components'\n\nconst TranslationContainer = styled.div`\n border-radius: 5px;\n padding: 10px;\n margin-top: 10px;\n background-color: var(--color-lightYellow);\n border: 1px solid var(--color-grey700);\n`\n\nconst InfoText = styled.span`\n color: var(--color-grey900);\n`\n\nconst TranslationLink = styled.a`\n color: var(--color-grey900);\n text-decoration: underline;\n`\n\nclass Translations extends React.Component {\n render() {\n const { translations } = this.props\n\n return (\n \n This article also exists in: \n {translations.map((translation, i) => {\n return (\n \n \n {translation.language}\n \n {i < translations.length - 1 ? ', ' : ''}\n \n )\n })}\n \n )\n }\n}\nexport default Translations\n","import React from 'react'\nimport styled from 'styled-components'\n\nconst TimeContainer = styled.time`\n color: var(--color-textSecondary);\n`\n\nconst Time = props => {\n const { date } = props\n\n const dateObject = new Date(date)\n const yyyymmdd = dateObject\n .toLocaleDateString('en-GB', {\n year: 'numeric',\n month: '2-digit',\n day: 'numeric',\n })\n .split('/')\n .reverse()\n .join('-')\n const friendlyDate = dateObject.toLocaleDateString('en-GB', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n\n return {friendlyDate}\n}\nexport default Time\n","import React, { Fragment } from 'react';\nimport styled from 'styled-components';\nimport TagList from './TagList';\nimport Translations from './Translations';\nimport Time from './Time';\nimport { Bull } from './Commons';\n\n\nconst Header = styled.header`\n margin-bottom: 2rem;\n color: var(--color-textSecondary);\n font-size: 0.9em;\n`;\n\nclass ContentIntro extends React.Component {\n render() {\n const { date, tags, translations } = this.props;\n return (\n
\n \n {date &&
\n );\n }\n}\n\nexport default ContentIntro;\n","import React from 'react'\nimport styled from 'styled-components'\nimport ContentHeader from './ContentHeader'\nimport MDXRenderer from 'gatsby-plugin-mdx/mdx-renderer'\n\nconst ContentBody = styled.div`\n line-height: 1.6;\n\n & > h2 {\n color: var(--color-h2);\n padding-top: 3rem;\n margin-top: 3rem;\n border-top: 1px solid #ececec;\n }\n\n & > h3 {\n padding-top: 3rem;\n }\n\n & > p {\n margin: 1em 0 0 0;\n }\n\n & a {\n fill: var(--color-text);\n box-shadow: 0 2px 0 0 var(--color-secondary);\n\n &:hover {\n filter: brightness(150%);\n box-shadow: none;\n }\n\n &.anchor,\n &.gatsby-resp-image-link {\n box-shadow: none;\n }\n }\n\n h1 .anchor svg,\n h2 .anchor svg,\n h3 .anchor svg,\n h4 .anchor svg,\n h5 .anchor svg,\n h6 .anchor svg {\n visibility: hidden;\n margin-left: -16px;\n }\n\n h1:hover .anchor svg,\n h2:hover .anchor svg,\n h3:hover .anchor svg,\n h4:hover .anchor svg,\n h5:hover .anchor svg,\n h6:hover .anchor svg,\n h1 .anchor:focus svg,\n h2 .anchor:focus svg,\n h3 .anchor:focus svg,\n h4 .anchor:focus svg,\n h5 .anchor:focus svg,\n h6 .anchor:focus svg {\n visibility: visible;\n }\n\n & > blockquote {\n box-sizing: border-box;\n background-color: var(--color-secondaryContentBackground);\n border-left: 5px solid var(--color-secondary);\n margin: 30px 0px;\n padding: 5px 20px;\n border-radius: 0 8px 8px 0;\n }\n\n & > blockquote p {\n margin: 0.8em 0;\n font-style: italic;\n }\n\n & .gatsby-highlight {\n border-radius: 5px;\n font-size: 15px;\n line-height: 1.7;\n border-radius: 10px;\n overflow: auto;\n tab-size: 1.5em;\n margin: 1.5em -1.5em;\n\n @media (max-width: 500px) {\n border-radius: 0;\n margin-left: -25px;\n margin-right: -25px;\n }\n }\n\n & .gatsby-highlight > pre {\n border: 0;\n margin: 0;\n padding: 1;\n }\n\n & .gatsby-highlight pre[class*='language-'] {\n float: left;\n min-width: 100%;\n }\n\n & .gatsby-highlight-code-line {\n background-color: var(--color-darkBlue);\n display: block;\n margin-right: -1em;\n margin-left: -1em;\n padding-right: 1em;\n padding-left: 0.75em;\n border-left: 0.25em solid var(--color-yellow);\n }\n\n & h1 > code.language-text,\n & h2 > code.language-text,\n & h3 > code.language-text,\n & h4 > code.language-text,\n & h5 > code.language-text,\n & h6 > code.language-text,\n & a > code.language-text,\n & p > code.language-text,\n & li > code.language-text,\n & em > code.language-text,\n & strong > code.language-text {\n background: var(--color-beige);\n color: #222222cc;\n padding: 0 3px;\n font-size: 0.94em;\n border-radius: 0.3rem;\n word-wrap: break-word;\n }\n\n & code {\n word-wrap: break-word;\n }\n\n & table {\n margin-top: 1em;\n margin-bottom: 1em;\n border-collapse: collapse;\n overflow: hidden;\n\n & th,\n & td {\n padding: 0.5em;\n background-color: var(--color-secondaryContentBackground);\n }\n & tr {\n border-bottom: 2px solid var(--color-white);\n }\n & tbody tr:last-child {\n border-bottom: none;\n }\n }\n`\n\nclass Content extends React.Component {\n render() {\n const { content, date, tags, translations, purchaseLink } = this.props\n\n return (\n
\n {(tags || date || translations) && (\n \n )}\n\n \n {content}\n \n
\n )\n }\n}\n\nexport default Content\n","import React from 'react'\nimport styled from 'styled-components'\nimport ukFlag from './icons/uk-flag.png'\nimport frFlag from './icons/fr-flag.png'\n\nconst FlagImage = styled.img`\n padding-right: 0.5rem;\n padding-bottom: 0.2rem;\n`\n\nclass Flag extends React.Component {\n render() {\n const { language } = this.props\n const img = language === 'en' ? ukFlag : frFlag\n const alt = language === 'en' ? 'english post' : 'post en francais'\n\n return \n }\n}\n\nexport default Flag\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAPASURBVDhPrZT7TxxVFMc/d/Y1wA60gEXwgSU1ViJiJSZqahpqm2jQNlRSHyhRa6wG2kTSpK3v2BptoyRorJi2IaLlF/qyoTU0sRAClDaKRqQ0qShElkJBdpd9z+7seGfQ+A9wkjvn3jnn3Pu93/PNFaY0lsiUf/2SmNATuqm4XYyPTRMOJ3C7nXbAMNLkF2STEw+RXAjjyvYSVDXmZhZwOBYx6HoKrWA5N4dmEZoXMflFi1m4YT2B4jtp2ncKny9IVpZKPK5TXfswlROXmb84RO5DFXQXP8CpYwOoqptoTOeWu4p4uUQn9/pfOJ7dgjJcupZIbz/qd8fZv7+aqk33EgpF5bkmQsivIqwZpviPWpNQIsnjm8p5S7tGocckZ8d2Bn6ZRLnUe5U9v+cSy9QI7H2Xmur7adxbJRHOEgrrSAikg0GIxQlHdK4vJNi5tZSNF9pQn6jC/WQV9fXfcrFvDCUm4fZ3DbPxkxEGVz2C75k6ykWAr1q3k6llkAyESM3NkwyG8OZnc2BdFsUnW1nW/CndvjQVFR/QNzBBTKJlzh8wdcM0o3raDOiWUEzTiEQWJ9Imd71njq5Zb3vbov/H/OGEXWfVW/uI0Z17TPObE5DhwVKcrTqLq/QiR44cDeGRsUQCQ6ITiiJzFhMVyafFq4SFeOEpFKtG98trzAdJ+YMYATmkTwcX7JGamSXpm7K9tTb8AdIyx47JPKvOqk/LzcVky1Ezs6cP0+0mlTSIRHWE1J1wyWEYhAd/InVjDueKfLwPVmDEJQrVIxEpqMLA5XJYgiNWuRZx4tzP5pU/YkQjCQqLNHY8Lwtm5zC+78JdV8vE1m3Mdxwnt6aG4o6j9tXDXd14VAfHnKu52j+CV+qytCQDh4uy95sPHGFqPETrkTpibe0kG17jHXMNpy/N8ljoCoHh31hx3z00/qhwvvMymxs246t/g1u7z/LZjTy+bjqMW3hQIpEYr7xey9i1j1l4cRuJM508V9ZIU8sZ8papiLSFRfIhuc3P1/i8uZ11lQe5/exJbpOkn5s4xJu7X0J3ulD2HXyaw4dqmVp5N9Ml5awaKaWz7bzcIFMOgWIRS8r2dpvJprfnV8nVq/y5YQvZPT/Q0L6btx/NQ8mYGmew4A4u7PqQso+GiYyNoWkSkXBgJPxMy3q/c7ntrbX1X5NiVpQUqwtr+bJjiKzRIcyZScTfwYDpTybxJBPkZMkOWofbJuQrEifqVFFk99Kyi5mpOF6vKmOLGrTABoOyefEkNxUVSipsBS6NLeHjCP8AHa/ubr0bcvgAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAKnRFWHRDcmVhdGlvbiBUaW1lAEZyIDkgTm92IDIwMDcgMTY6Mjc6MDYgKzAxMDAM3ZqdAAAAB3RJTUUH1wsJDxwzm8yD2gAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAAHdSURBVHjaxVO7btRAFD3zsNdxQIqQqBYk6ghR0tLxDXwCn8HX0BGlo6JCKAqCIlVCkCjQLgkgxbDB67XnlXPHRvsJGWs04/F53ZkxcNtNvXj5arG7uzf3KfJNIUSFh/dn2H9Qc564pABj0Z98hPt6CsVHyzoCrv6tl/bO3Xvzx0+fw0cveugp8ORRjWf7e1lAmi5naKuAHh2QSI4RpQbeHBzOrSfIBQ/vAzWRE8jcDQNCQk4g3TtinMtkEUHfIaxW0OIqa55rMTEYu3xXWm/r1AYZ5AYolqoJ6D4dU1jDCjFkMrskoFukKG2ys56EFEkyC38abE4+w1z/heU3K0Q/OUchp0zNxCCuU+sX37F69xZYt9CmQDHKUYDwQMPIONpo9A5o2gH9ZoPBjwKm5h78/glcs+ayylQtpyOjQFLS2fnovMHrDz9wftEixTACJKY1HFUmZbIk5GM4WkWyI/bg+AJD0CjKAmVhMlFPpchmaWUm4v8+HrElAu/Pmnz+RWmReGmU2QoYmRsRQHYdE2CbYMOaF51HOWNt1iJSoODFqeSd9YlAUe2g4+gVpjI0ZmoUspe/Lpfdqpk7cWH0QN0zVeOwqxnSjJtYVWi/fEO/DlDWZ2chX4W0vO1/EbgBHTnbxGOMU+UAAAAASUVORK5CYII=\"","import React, { Fragment } from 'react'\nimport { Link } from 'gatsby'\nimport styled from 'styled-components'\n\nconst ListContainer = styled.div`\n display: inline;\n color: var(--color-textSecondary);\n`\n\nconst TagListItemLink = styled(Link)`\n text-transform: uppercase;\n color: var(--color-textSecondary);\n\n &:not(:first-child) {\n margin-left: 0.3rem;\n }\n\n &:hover {\n border-bottom: 1px dotted var(--color-textSecondary);\n }\n &:before {\n content: '#';\n }\n`\n\nconst TagListItem = styled.span`\n text-transform: uppercase;\n color: var(--color-textSecondary);\n &:not(:first-child) {\n margin-left: 0.3rem;\n }\n &:before {\n content: '#';\n }\n`\n\nclass TagList extends React.Component {\n render() {\n const { tags, noLink } = this.props\n\n return (\n \n {tags.map((tag, i) => {\n return (\n \n {!noLink && (\n {tag}\n )}\n {noLink && {tag}}\n {i < tags.length - 1 ? ', ' : ''}\n \n )\n })}\n \n )\n }\n}\n\nexport default TagList\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Text } from './Commons'\nimport useSiteMetadata from '../hooks/use-site-config'\nimport useSiteImages from '../hooks/use-site-images'\n\nconst BioWrapper = styled.div`\n & .author-image {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n display: block;\n position: absolute;\n top: -40px;\n left: 50%;\n margin-left: -40px;\n width: 80px;\n height: 80px;\n border-radius: 100%;\n overflow: hidden;\n padding: 6px;\n z-index: 2;\n box-shadow: #ececec 0 0 0 1px;\n background-color: var(--color-wrapperBackground);\n }\n\n & .author-image .img {\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n background-size: cover;\n background-position: center center;\n border-radius: 100%;\n }\n\n & .author-profile .author-image {\n position: relative;\n left: auto;\n top: auto;\n width: 120px;\n height: 120px;\n padding: 3px;\n margin: -100px auto 0 auto;\n box-shadow: none;\n }\n`\n\nconst BioText = styled(Text)`\n & a {\n box-shadow: 0 2px 0 0 var(--color-secondary);\n }\n & a:hover {\n filter: brightness(150%);\n box-shadow: none;\n }\n`\n\nconst Bio = () => {\n const { authorAvatar, authorName, authorDescription } = useSiteMetadata()\n const { fixed } = useSiteImages(authorAvatar)\n\n return (\n \n
\n \n
\n
\n

About the author

\n \n
\n
\n )\n}\n\nexport default Bio\n","import React from 'react'\nimport styled from 'styled-components'\nimport Bio from './Bio'\nimport Content from './Content'\n\nconst ArticleWrapper = styled.article`\n padding: 0 30px 30px;\n\n @media only screen and (max-width: 500px) {\n padding: 0;\n }\n`\n\nconst ArticleFooter = styled.footer`\n position: relative;\n margin: 6rem 0 0;\n padding: 3rem 0 0;\n border-top: 1px solid #ececec;\n`\n\nclass Article extends React.Component {\n render() {\n const { post } = this.props\n\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport default Article\n","import React, { Fragment } from 'react'\nimport { Link } from 'gatsby'\nimport styled from 'styled-components'\nimport useSiteMetadata from '../hooks/use-site-config'\nimport useSiteImages from '../hooks/use-site-images'\nimport TagList from './TagList'\nimport Flag from './Flag'\nimport { Bull } from './Commons'\n\nconst PreviewContainer = styled.aside`\n display: flex;\n flex-wrap: wrap;\n max-width: 770px;\n width: 80%;\n margin: 0px auto 30px auto;\n top: 20px;\n position: relative;\n\n @media (max-width: 780px) {\n width: 100%;\n padding: 25px;\n }\n`\n\nconst Preview = styled.article`\n cursor: pointer;\n flex: 1 1 300px;\n background-color: var(--color-secondaryContentBackground);\n box-shadow: 0 0 0 0, 0 6px 12px rgba(0, 0, 0, 0.1);\n margin: 20px 20px;\n border-radius: 5px;\n\n &:hover {\n box-shadow: 0 0 0 0, 0 6px 12px var(--color-grey300);\n transition: all 0.3s ease;\n transform: translate3D(0, -1px, 0);\n }\n\n @media (min-width: 780px) {\n &:first-child {\n margin-left: 0;\n }\n &:last-child {\n margin-right: 0;\n }\n }\n`\n\nconst PreviewCover = styled.div`\n width: auto;\n height: 200px;\n background: #c5d2d9 no-repeat 50%;\n background-size: cover;\n border-radius: 5px 5px 0 0;\n`\n\nconst PreviewContent = styled.div`\n padding: 20px;\n\n header {\n padding: 0 0 10px 0;\n }\n section {\n padding-bottom: 10px;\n }\n footer {\n font-size: 0.8em;\n }\n`\n\nconst Author = styled.div`\n color: var(--color-textSecondary);\n`\n\nconst PrevNextPost = props => {\n const { previous, next } = props\n const articles = [previous, next].filter(i => i).map(item => ({ node: item }))\n const { siteCover, defaultLang, authorName } = useSiteMetadata()\n const { fluid } = useSiteImages(siteCover)\n\n return (\n \n \n {articles.map((article, i) => {\n const { excerpt, timeToRead } = article.node\n const {\n tags,\n cover,\n title,\n slug,\n language,\n } = article.node.frontmatter\n const heroImg = (cover && cover.publicURL) || fluid.src\n\n return (\n \n \n \n \n
\n

\n {defaultLang !== language && }\n {title}\n

\n
\n
\n

{excerpt}

\n
\n
\n {authorName}\n {Array.isArray(tags) && (\n <>\n \n \n \n )}\n
\n
\n \n
\n )\n })}\n
\n
\n )\n}\n\nexport default PrevNextPost\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst AmazonLink = styled.div`\n background: var(--color-secondary);\n padding: 1rem;\n font-size: 1.2rem;\n width: fit-content;\n color: white;\n &:hover {\n box-shadow: 0 0 0 0, 0 6px 12px var(--color-dropDownShadow);\n transition: all 0.3s ease;\n transform: translate3D(0, -2px, 0);\n }\n`;\n\nclass PurchaseLink extends React.Component {\n render() {\n const { link } = this.props\n \n return (\n \n \n \n Purchase on Amazon\n \n \n\n )\n }\n}\nexport default PurchaseLink;","import React from 'react'\nimport { graphql } from 'gatsby'\nimport Layout from '../components/layout'\nimport Wrapper from '../components/Wrapper'\nimport Hero from '../components/Hero'\nimport Article from '../components/Article'\nimport PrevNextPost from '../components/PrevNextPost'\nimport SEO from '../components/SEO'\nimport PurchaseLink from '../components/PurchaseLink';\n\nclass BlogPostTemplate extends React.Component {\n render() {\n const post = this.props.data.post\n const { previous, next } = this.props.pageContext\n return (\n \n \n \n }\n />\n\n \n
\n \n\n \n \n )\n }\n}\n\nexport default BlogPostTemplate\n\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!) {\n post: mdx(frontmatter: { slug: { eq: $slug } }) {\n excerpt\n body\n frontmatter {\n title\n date\n slug\n language\n tags\n purchaseLink\n highlightPhoto {\n publicURL\n }\n cover {\n publicURL\n }\n imageShare {\n publicURL\n }\n translations {\n language\n link\n hreflang\n }\n }\n }\n }\n`\n"],"sourceRoot":""}