{"version":3,"file":"component---src-themes-casper-templates-post-js-fb98302104871edd1cd9.js","mappings":"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","sources":["webpack://gatsby-starter-ghost/./src/components/ghost/GhostHead.js","webpack://gatsby-starter-ghost/./src/components/Pagination.js","webpack://gatsby-starter-ghost/./src/themes/casper/templates/post.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useCodeInjection, useGhostSettings } from \"app/settings\";\nimport { MetaData } from \"components/meta\";\n\nconst GhostHead = ({ bodyClass, metaProps }) => {\n const site = useGhostSettings();\n useCodeInjection(site);\n return (\n <>\n \n \n \n \n \n );\n};\n\nGhostHead.propTypes = {\n metaProps: PropTypes.object,\n bodyClass: PropTypes.string,\n};\n\nexport default GhostHead;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport InternalLink from \"components/InternalLink\";\n\nconst PaginationWrapper = styled.nav`\n display: flex;\n justify-content: center;\n`;\nconst PaginationButton = styled(InternalLink)`\n border: 1px solid #e2e2e2;\n border-radius: 10px;\n background-color: ${({ partiallyActive }) =>\n partiallyActive ? \"#e2e2e2\" : \"#fff\"};\n text-align: center;\n color: #8bccd5;\n width: 40px;\n font-size: 20px;\n margin: 10px;\n`;\n\nconst Pagination = ({ pages, currentPage }) => {\n return (\n pages?.length > 1 && (\n \n {pages.map((page, index) => (\n \n {index + 1}\n \n ))}\n \n )\n );\n};\n\nPagination.propTypes = {\n pages: PropTypes.arrayOf(PropTypes.string),\n currentPage: PropTypes.number,\n};\n\nexport default Pagination;\n","import { readingTime as readingTimeHelper } from \"@tryghost/helpers\";\nimport { graphql } from \"gatsby\";\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nimport styled from \"styled-components\";\nimport InternalLink from \"components/InternalLink\";\nimport Pagination from \"components/Pagination\";\nimport GhostHead from \"components/ghost/GhostHead\";\nimport { Layout, PostCard, PostContent } from \"../components\";\nimport { formatDate, parseDateTime } from \"../../../utils/dateTool\";\n\nconst Article = styled.article`\n padding: max(8vmin, 40px) 0 max(8vmin, 64px);\n word-break: break-word;\n`;\n\nconst ArticleHeader = styled.header`\n padding: 0 0 max(6.4vmin, 40px);\n display: grid;\n grid-template-columns:\n [full-start] minmax(max(4vmin, 20px), auto) [wide-start] minmax(\n auto,\n 240px\n )\n [main-start] min(720px, calc(100% - max(8vmin, 40px)))\n [main-end] minmax(auto, 240px)\n [wide-end] minmax(max(4vmin, 20px), auto) [full-end];\n > * {\n grid-column: main-start/main-end;\n }\n`;\n\nconst ArticleTag = styled.div`\n margin-bottom: 16px;\n font-size: 1.6rem;\n a {\n color: var(--color-secondary-text);\n }\n`;\n\nconst PrimaryTag = styled(InternalLink)`\n font-size: 1.2rem;\n font-weight: 600;\n letter-spacing: 0.01em;\n margin-bottom: 12px;\n text-transform: uppercase;\n color: #8acdd6;\n`;\n\nconst ArticleTitle = styled.h1`\n margin-bottom: 0;\n font-size: clamp(3.2rem, 5vw, 5.2rem);\n font-weight: 800;\n line-height: 1;\n color: var(--color-darkgrey);\n`;\n\nconst ArticleExcerpt = styled.p`\n margin-top: 20px;\n max-width: 720px;\n font-size: 2rem;\n line-height: 1.45;\n color: var(--color-darkgrey);\n`;\n\nconst ArticleByline = styled.div`\n display: flex;\n justify-content: space-between;\n margin: min(24px, 5.6vmin) 0 0;\n`;\n\nconst ArticleBylineContent = styled.section`\n flex-grow: 1;\n display: flex;\n align-items: center;\n ul {\n justify-content: flex-start;\n padding: 0 14px 0 0;\n }\n`;\n\nconst AuthorList = styled.ul`\n display: flex;\n flex-wrap: wrap;\n margin: 0 0 0 4px;\n padding: 0;\n list-style: none;\n`;\n\nconst AuthorListItem = styled.li`\n position: relative;\n flex-shrink: 0;\n margin: 0;\n padding: 0;\n`;\n\nconst AuthorAvator = styled(InternalLink)`\n display: block;\n overflow: hidden;\n margin: 0 -4px;\n width: min(56px, 13.6vmin);\n height: min(56px, 13.6vmin);\n border: 2px solid #fff;\n border-radius: 50%;\n background-color: var(--color-border);\n div {\n background-color: #e6e6e6;\n img {\n display: block;\n width: 100%;\n height: 100%;\n background: #fff;\n border-radius: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n }\n }\n`;\n\nconst ArticleBylineMeta = styled.div`\n color: var(--color-secondary-text);\n font-size: 1.4rem;\n line-height: 1.2em;\n > span {\n display: inline-block;\n margin: 0 2px;\n }\n`;\n\nconst AuthorName = styled.h4`\n margin: 0 0 6px;\n font-size: 1.7rem;\n font-weight: 700;\n letter-spacing: 0;\n a {\n color: #15171a;\n text-decoration: none;\n }\n`;\n\nconst ArticleImage = styled.figure`\n grid-column: wide-start/wide-end;\n width: 100%;\n margin: max(6.4vmin, 40px) 0 0;\n img {\n display: block;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n }\n figcaption {\n padding: 1.5rem 1.5rem 0;\n text-align: center;\n color: rgba(0, 0, 0, 0.5);\n font-size: 1.3rem;\n line-height: 1.4em;\n }\n`;\n\nconst FooterCta = styled.section`\n position: relative;\n text-align: center;\n padding: 0 max(4vmin, 20px);\n`;\n\nconst Inner = styled.div`\n margin: 0 auto;\n max-width: 1200px;\n width: 100%;\n`;\n\nconst FooterCtaTitle = styled.h2`\n margin: 0 0 min(24px, 6.4vmin);\n font-size: clamp(2.6rem, 5vw, 3.8rem);\n font-weight: 800;\n`;\n\nconst FooterCtaButton = styled(InternalLink)`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n max-width: 500px;\n padding: 5px 5px 5px 15px;\n font-size: 1.7rem;\n color: var(--color-secondary-text);\n background: #fff;\n border: 1px solid var(--color-border);\n border-radius: 8px;\n transition: border-color 0.2s;\n &:hover {\n text-decoration: none;\n border-color: #c2c2c2;\n }\n span {\n display: inline-block;\n padding: 9px 15px;\n color: #fff;\n font-size: 1.6rem;\n font-weight: 600;\n letter-spacing: -0.005em;\n background: var(--ghost-accent-color);\n border-radius: 6px;\n }\n`;\n\nconst ReadMoreWrapper = styled.section`\n margin-top: max(12vmin, 72px);\n position: relative;\n padding: 0 max(4vmin, 20px);\n`;\n\nconst ReadMoreInner = styled.div`\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n grid-gap: 4vmin;\n\n margin: 0 auto;\n max-width: 1200px;\n width: 100%;\n .post-card {\n position: relative;\n grid-column: span 2;\n display: flex;\n flex-direction: column;\n background-size: cover;\n word-break: break-word;\n .post-card-title {\n margin: 0;\n font-size: 2.6rem;\n font-weight: 800;\n }\n }\n\n @media (max-width: 1000px) {\n grid-template-columns: repeat(4, 1fr);\n article:nth-child(3) {\n display: none;\n }\n }\n\n @media (max-width: 700px) {\n grid-template-columns: repeat(2, 1fr);\n article:nth-child(3),\n article:nth-child(2) {\n display: none;\n }\n }\n`;\n/* eslint-disable react/prop-types */\nexport const Head = ({ data, location }) => {\n const metaProps = { data, location, type: \"article\" };\n const page = data.ghostPostPage;\n const { post } = page;\n\n return (\n <>\n \n\n \n \n );\n};\n/* eslint-enable react/prop-types */\n\n/**\n * Single post view (/:slug)\n *\n * This file renders a single post and loads all the content.\n */\n\nconst Post = ({ data }) => {\n const page = data.ghostPostPage;\n const { post } = page;\n const relatedPosts = data.allGhostPost.edges;\n const readingTime = readingTimeHelper(post);\n\n return (\n \n
\n
\n \n \n {post.primary_tag && (\n \n {post.primary_tag.name}\n \n )}\n \n {post.title}\n {post.custom_excerpt && (\n \n {post.custom_excerpt}\n \n )}\n \n \n \n {post.authors.map((author) => (\n \n \n \n \n \n ))}\n \n \n \n \n {post.primary_author.name}\n \n \n\n \n {formatDate(post.published_at_pretty)}\n \n {readingTime && (\n \n {\"•\"}\n {readingTime}\n \n )}\n \n \n \n {page.index === 0 && (\n \n \n {post.feature_image_caption && (\n \n )}\n \n )}\n \n \n \n
\n
\n \n \n \n {\"Sign up for more like this.\"}\n \n \n {\"Enter your email\"}\n {\"Subscribe\"}\n \n \n \n {relatedPosts && (\n \n \n {relatedPosts.map(({ node }) => (\n \n ))}\n \n \n )}\n
\n );\n};\n\nPost.propTypes = {\n pageContext: PropTypes.shape({\n html: PropTypes.array,\n pageIndex: PropTypes.number,\n }).isRequired,\n data: PropTypes.shape({\n ghostPostPage: PropTypes.shape({\n index: PropTypes.number,\n html: PropTypes.string,\n post: PropTypes.shape({\n primary_author: PropTypes.object,\n primary_tag: PropTypes.object,\n codeinjection_styles: PropTypes.object,\n title: PropTypes.string.isRequired,\n feature_image: PropTypes.string,\n feature_image_alt: PropTypes.string,\n published_at_pretty: PropTypes.string,\n custom_excerpt: PropTypes.string,\n authors: PropTypes.array,\n feature_image_caption: PropTypes.string,\n slug: PropTypes.string,\n pagination: PropTypes.arrayOf(PropTypes.string).isRequired,\n }).isRequired,\n }),\n allGhostPost: PropTypes.object.isRequired,\n }).isRequired,\n};\n\nexport default Post;\n\nexport const postQuery = graphql`\n query ($slug: String!, $url: String!, $tag: String) {\n ghostPostPage(url: { eq: $url }) {\n index\n html\n post {\n feature_image_caption\n ...GhostPostFields\n }\n }\n allGhostPost(\n filter: {\n slug: { ne: $slug }\n tags: { elemMatch: { name: { eq: $tag } } }\n }\n limit: 3\n sort: { fields: published_at, order: DESC }\n ) {\n edges {\n node {\n ...GhostPostFields\n }\n }\n }\n }\n`;\n"],"names":["bodyClass","metaProps","site","useGhostSettings","useCodeInjection","lang","type","codeinjection_styles","className","PaginationWrapper","styled","PaginationButton","InternalLink","partiallyActive","pages","currentPage","length","map","page","index","key","to","Article","ArticleHeader","ArticleTag","PrimaryTag","ArticleTitle","ArticleExcerpt","ArticleByline","ArticleBylineContent","AuthorList","AuthorListItem","AuthorAvator","ArticleBylineMeta","AuthorName","ArticleImage","FooterCta","Inner","FooterCtaTitle","FooterCtaButton","ReadMoreWrapper","ReadMoreInner","Head","data","location","post","ghostPostPage","GhostHead","relatedPosts","allGhostPost","edges","readingTime","readingTimeHelper","primary_tag","slug","name","title","custom_excerpt","authors","author","src","profile_image","alt","primary_author","dateTime","parseDateTime","published_at_pretty","formatDate","srcSet","feature_image","sizes","feature_image_alt","feature_image_caption","dangerouslySetInnerHTML","__html","html","pagination","node","id"],"sourceRoot":""}