{"version":3,"sources":["webpack:///./src/components/PostContent/styles.ts","webpack:///./src/components/PostContent/index.tsx","webpack:///./src/templates/post.tsx","webpack:///./node_modules/react-bootstrap/esm/divWithClassName.js","webpack:///./node_modules/react-bootstrap/esm/CardImg.js","webpack:///./node_modules/react-bootstrap/esm/Card.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/@tryghost/helpers-gatsby/lib/Tags.js","webpack:///./src/components/BlogContent/PostCard/styles.ts","webpack:///./src/components/BlogContent/PostCard/index.tsx","webpack:///./node_modules/@tryghost/helpers-gatsby/lib/index.js"],"names":["Wrapper","styled","Container","TagsWrapper","div","theme","colors","text","secondary","sections","headlines","large","fontSize","FeatureImage","figure","Header","Title","h2","primary","Details","span","small","Content","section","RelatedPosts","ViewMore","p","xlarge","PostContent","post","relatedPosts","Row","noGutters","visibility","autolink","separator","Col","feature_image","src","alt","title","published_at_pretty","primary_author","name","dangerouslySetInnerHTML","__html","html","lg","map","node","PostCard","key","id","to","postQuery","Post","data","location","ghostPost","allGhostPost","edges","Meta","type","Helmet","codeinjection_styles","Layout","forwardRef","ref","createElement","className","CardImg","_ref","bsPrefix","variant","_ref$as","as","Component","props","prefix","displayName","defaultProps","DivStyledAsH5","divWithClassName","DivStyledAsH6","CardBody","createWithBsPrefix","Card","bg","border","body","children","cardContext","cardHeaderBsPrefix","CardContext","Provider","value","Img","Subtitle","Body","Link","Text","Footer","ImgOverlay","createHTML","this","Object","defineProperty","exports","_react","_interopRequireDefault","require","_propTypes","_gatsbyLink","_helpers","obj","__esModule","Tags","opts","limit","from","fallback","keyIndex","generateKey","pre","concat","get","isValidElement","Fragment","separatorClasses","prefixClasses","suffix","suffixClasses","fn","tag","tagLink","permalink","replace","slug","classes","linkClasses","tags","propTypes","shape","arrayOf","string","isRequired","number","object","oneOf","bool","_default","LinkWrapper","ItemCard","blue","xsmall","Excerpt","medium","url","excerpt","enumerable","_Tags"],"mappings":"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","file":"component---src-templates-post-tsx-c55729399e6f0ca5e692.js","sourcesContent":["import styled from '@emotion/styled';\nimport Container from 'react-bootstrap/Container';\nimport { Link } from 'gatsby';\n\nexport const Wrapper = styled(Container)`\n margin-bottom: 2rem;\n`;\n\nexport const TagsWrapper = styled.div`\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.text.secondary};\n font-weight: bold;\n font-size: ${({ theme }) =>\n theme.sections.headlines.large.fontSize};\n margin: 1rem 0;\n`;\n\nexport const FeatureImage = styled.figure`\n img {\n width: 100%;\n height: auto;\n \n`;\n\nexport const Header = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 2rem 0;\n`;\nexport const Title = styled.h2`\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: bold;\n font-size: 28px;\n`;\nexport const Details = styled.span`\n color: #9aa0a6;\n font-weight: bold;\n font-size: ${({ theme }) => theme.fontSize.small};\n`;\n\nexport const Content = styled.section`\n color: ${({ theme }) => theme.colors.text.primary};\n font-size: 18px;\n img {\n max-width: 100%;\n padding: 1rem;\n height: auto;\n }\n margin-bottom: 8rem;\n`;\n\nexport const RelatedPosts = styled.h2`\n margin: 1rem 0;\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: bold;\n font-size: 28px;\n`;\n\nexport const ViewMore = styled.p`\n a {\n color: ${({ theme }) => theme.colors.text.secondary};\n font-size: ${({ theme }) => theme.fontSize.xlarge};\n }\n text-align: center;\n margin: 5rem;\n`;\n","import React, { ReactElement } from 'react';\nimport { Link } from 'gatsby';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport { Tags } from '@tryghost/helpers-gatsby';\nimport { IPost } from 'src/utils/ts/blog';\nimport PostCard from 'src/components/BlogContent/PostCard';\nimport {\n Wrapper,\n TagsWrapper,\n FeatureImage,\n Header,\n Title,\n Details,\n Content,\n RelatedPosts,\n ViewMore,\n} from './styles';\n\ninterface IPostContent {\n post: IPost;\n relatedPosts: { node: IPost }[];\n}\n\nconst PostContent = ({\n post,\n relatedPosts,\n}: IPostContent): ReactElement => {\n return (\n \n \n \n \n \n \n \n \n
\n {post.feature_image && (\n \n {post.title}\n \n )}\n
\n
\n {post.title}\n
\n on {post.published_at_pretty} / by{' '}\n {post.primary_author.name}\n
\n
\n\n {/* The main post content */}\n \n
\n
\n \n
\n \n \n More similar blogs\n \n \n \n {relatedPosts.map(({ node }: { node: IPost }) => (\n \n ))}\n \n \n \n \n View More Blogs\n \n \n \n
\n );\n};\n\nexport default PostContent;\n","import React, { ReactElement } from 'react';\nimport { graphql } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport { IPost } from 'src/utils/ts/blog';\nimport Layout from 'src/components/common/Layout';\nimport { MetaData } from 'src/components/common/Meta';\nimport PostContent from 'src/components/PostContent';\n\n/**\n * Single post view (/:slug)\n *\n * This file renders a single post and loads all the content.\n *\n */\n\ninterface IPostPage {\n data: {\n ghostPost: IPost;\n allGhostPost: {\n edges: {\n node: IPost;\n }[];\n };\n };\n location: {\n pathname: string;\n };\n pageContext: {\n tags: string[];\n };\n}\n\nconst Post = ({ data, location }: IPostPage): ReactElement => {\n const post = data.ghostPost;\n const relatedPosts = data.allGhostPost.edges;\n\n return (\n <>\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Post;\n\nexport const postQuery = graphql`\n query($slug: String!, $tags: [String!]) {\n ghostPost(slug: { eq: $slug }) {\n ...GhostPostFields\n }\n allGhostPost(\n sort: { fields: published_at, order: DESC }\n filter: { tags: { elemMatch: { slug: { in: $tags } } } }\n limit: 3\n ) {\n edges {\n node {\n ...GhostPostFields\n }\n }\n }\n }\n`;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return React.forwardRef(function (p, ref) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: null\n};\nvar CardImg = React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n variant = _ref.variant,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'img' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"variant\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar defaultProps = {\n body: false\n};\nvar Card = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n bg = _ref.bg,\n text = _ref.text,\n border = _ref.border,\n body = _ref.body,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card');\n var cardContext = useMemo(function () {\n return {\n cardHeaderBsPrefix: prefix + \"-header\"\n };\n }, [prefix]);\n return /*#__PURE__*/React.createElement(CardContext.Provider, {\n value: cardContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n }), body ? /*#__PURE__*/React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nCard.Subtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nCard.Body = CardBody;\nCard.Link = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nCard.Text = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nCard.Header = createWithBsPrefix('card-header');\nCard.Footer = createWithBsPrefix('card-footer');\nCard.ImgOverlay = createWithBsPrefix('card-img-overlay');\nexport default Card;","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\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\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _gatsbyLink = _interopRequireDefault(require(\"gatsby-link\"));\n\nvar _helpers = require(\"@tryghost/helpers\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * Tags helper\n *\n * Filters and outputs tags for a post\n *\n * @param {{tags: [*]}} data - the data we are filtering\n * @param {object} options - filter options\n * @param {int} [options.limit] - limits the number of tags to be returned\n * @param {int} [options.from=1] - index of the tag to start iterating from\n * @param {int} [options.to] - index of the last tag to iterate over\n * @param {string} [options.separator=\",\"] - string used between each tag\n * @param {string} [options.prefix] - string to output before each tag\n * @param {string} [options.suffix] - string to output after each tag\n * @param {string} [options.visibility=\"public\"] - change to \"all\" to include internal tags\n * @param {boolean} [options.autolink=true] - whether to convert tags to links\n * @param {string} [options.permalink=\"/:slug\"] - the pattern used for links\n * @param {object} [options.fallback] - a fallback tag to output if there are none\n * @param {function} [options.fn] - function to call on each tag, default outputs tag.name in a span\n * @param {string} [options.classes] - classNames applied to each tag\n * @param {string} [options.separatorClasses] - classNames applied to the separator span\n * @param {string} [options.prefixClasses] - classNames applied to the prefix span\n * @param {string} [options.suffixClasses] - classNames applied to the suffix span\n * @param {string} [options.linkClasses] - classNames applied to each link\n */\nvar Tags = function Tags(props) {\n var opts = {\n limit: props.limit,\n from: props.from,\n to: props.to,\n fallback: props.fallback,\n visibility: props.visibility\n };\n var keyIndex = 0;\n\n var generateKey = function generateKey(pre) {\n keyIndex = keyIndex + 1;\n return \"\".concat(pre, \"_\").concat(keyIndex);\n };\n\n Object.defineProperty(opts, 'separator', {\n get: function get() {\n if (props.separator === '') {\n return null;\n } else if (_react[\"default\"].isValidElement(props.separator)) {\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, {\n key: generateKey('separator')\n }, props.separator);\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n className: props.separatorClasses,\n key: generateKey('separator')\n }, props.separator);\n }\n });\n\n if (props.prefix) {\n opts.prefix = _react[\"default\"].isValidElement(props.prefix) ? props.prefix : /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n className: props.prefixClasses,\n key: \"prefix\"\n }, props.prefix);\n }\n\n if (props.suffix) {\n opts.suffix = _react[\"default\"].isValidElement(props.suffix) ? props.suffix : /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n className: props.suffixClasses,\n key: \"suffix\"\n }, props.suffix);\n }\n\n opts.fn = function process(tag) {\n var tagLink = props.permalink;\n tagLink = tagLink.replace(/:slug/, tag.slug) || \"/\".concat(tag.slug, \"/\");\n return props.autolink ? /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n className: props.classes,\n key: tag.slug\n }, /*#__PURE__*/_react[\"default\"].createElement(_gatsbyLink[\"default\"], {\n to: tagLink,\n className: props.linkClasses\n }, tag.name)) : /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n className: props.classes,\n key: tag.slug\n }, tag.name);\n };\n\n return (0, _helpers.tags)(props.post, opts);\n};\n\nTags.defaultProps = {\n separator: \", \",\n from: 1,\n classes: \"\",\n separatorClasses: \"\",\n prefixClasses: \"\",\n suffixClasses: \"\",\n linkClasses: \"\",\n permalink: \"/:slug/\",\n autolink: true\n};\nTags.propTypes = {\n post: _propTypes[\"default\"].shape({\n tags: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].shape({\n name: _propTypes[\"default\"].string,\n slug: _propTypes[\"default\"].string\n })).isRequired\n }).isRequired,\n limit: _propTypes[\"default\"].number,\n from: _propTypes[\"default\"].number,\n to: _propTypes[\"default\"].number,\n fallback: _propTypes[\"default\"].object,\n visibility: _propTypes[\"default\"].oneOf([\"public\", \"all\", \"internal\"]),\n permalink: _propTypes[\"default\"].string,\n autolink: _propTypes[\"default\"].bool,\n classes: _propTypes[\"default\"].string,\n separatorClasses: _propTypes[\"default\"].string,\n prefixClasses: _propTypes[\"default\"].string,\n suffixClasses: _propTypes[\"default\"].string,\n linkClasses: _propTypes[\"default\"].string\n};\nvar _default = Tags;\nexports[\"default\"] = _default;","import styled from '@emotion/styled';\nimport { Link } from 'gatsby';\nimport Card from 'react-bootstrap/Card';\n\nexport const LinkWrapper = styled(Link)`\n text-decoration: none;\n color: ${({ theme }) => theme.colors.text.primary};\n :hover {\n text-decoration: none;\n color: ${({ theme }) => theme.colors.text.primary};\n }\n`;\n\nexport const ItemCard = styled(Card)`\n margin: 1rem;\n border-bottom: 3px solid ${({ theme }) => theme.colors.blue};\n`;\n\nexport const TagsWrapper = styled.div`\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.text.secondary};\n font-weight: bold;\n font-size: ${({ theme }) => theme.fontSize.small}\n}\n`;\n\nexport const Details = styled.p`\n color: #9aa0a6;\n font-weight: bold;\n font-size: ${({ theme }) => theme.fontSize.xsmall};\n`;\n\nexport const Title = styled(Card.Title)`\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: bold;\n font-size: ${({ theme }) => theme.fontSize.xlarge};\n`;\n\nexport const Excerpt = styled(Card.Text)`\n font-size: ${({ theme }) => theme.fontSize.medium};\n display: block;\n display: -webkit-box;\n max-width: 100%;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n","import React, { ReactElement } from 'react';\nimport { Tags } from '@tryghost/helpers-gatsby';\nimport { IPost } from 'src/utils/ts/blog';\nimport Card from 'react-bootstrap/Card';\nimport Col from 'react-bootstrap/Col';\nimport {\n LinkWrapper,\n ItemCard,\n TagsWrapper,\n Details,\n Title,\n Excerpt,\n} from './styles';\n\ninterface IPostCard {\n post: IPost;\n}\n\nconst PostCard = ({ post }: IPostCard): ReactElement => {\n const url = `/blog/${post.slug}/`;\n\n return (\n \n \n \n {post.feature_image && (\n \n )}\n \n {post.tags && (\n \n \n \n )}\n
\n on {post.published_at_pretty} / by{' '}\n {post.primary_author.name}\n
\n {post.title}\n {post.excerpt}\n
\n
\n
\n \n );\n};\n\nexport default PostCard;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Tags\", {\n enumerable: true,\n get: function get() {\n return _Tags[\"default\"];\n }\n});\n\nvar _Tags = _interopRequireDefault(require(\"./Tags\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }"],"sourceRoot":""}