-
Notifications
You must be signed in to change notification settings - Fork 0
/
component---src-pages-blog-index-tsx-6d74951037486a5de0e0.js.map
1 lines (1 loc) · 28.9 KB
/
component---src-pages-blog-index-tsx-6d74951037486a5de0e0.js.map
1
{"version":3,"sources":["webpack:///./src/pages/blog/index.tsx","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./.cache/public-page-renderer.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./src/component/image/full-name-logo.tsx","webpack:///./src/component/ui/nav-item.tsx","webpack:///./src/component/navbar.tsx","webpack:///./src/component/ui/footer.tsx","webpack:///./src/component/image/letter-logo.tsx","webpack:///./src/component/layout.tsx","webpack:///./src/helper/slug.js","webpack:///./node_modules/slugify/index.js","webpack:///./src/component/blog-post-entry.tsx"],"names":["query","BlogPage","_ref","blogPosts","data","allMarkdownRemark","nodes","Object","_emotion_core__WEBPACK_IMPORTED_MODULE_0__","_component_layout__WEBPACK_IMPORTED_MODULE_2__","react__WEBPACK_IMPORTED_MODULE_1___default","a","Fragment","map","post","_component_blog_post_entry__WEBPACK_IMPORTED_MODULE_4__","date","frontmatter","excerpt","title","key","titleToSlug","loader","enqueue","React","createContext","m","module","exports","require","default","ProdPageRenderer","location","pageResources","createElement","InternalPageRenderer","assign","json","FullNameLogo","_4028588191","core_browser_esm","gatsby_image_default","fixed","file","childImageSharp","alt","fadeIn","StyledNavItem","styled_base_browser_esm","BaseNavItem","target","name","styles","NavItem","children","to","otherProps","_objectWithoutPropertiesLoose","gatsby_browser_entry","StyledNavbar","BaseNavbar","Navbar","_React$useState","isOpen","setIsOpen","expand","light","id","className","Container","full_name_logo_FullNameLogo","NavbarToggler","onClick","Collapse","navbar","Nav","nav_item_NavItem","Footer","LetterLogo","_2462350619","Wrapper","Main","Layout","_ref$container","container","_1097489062","site","siteMetadata","Helmet","defer","lang","content","navbar_Navbar","react_default","Row","Col","md","letter_logo_LetterLogo","gatsby_plugin_google_analytics","href","slugify","replacement","remove","lower","titleToPath","factory","__webpack_require__","charMap","JSON","parse","replace","string","options","Error","slug","split","reduce","result","ch","trim","toLowerCase","extend","customMap","Article","_emotion_styled_base__WEBPACK_IMPORTED_MODULE_0__","Excerpt","BlogPostEntry","_ref$titleTag","titleTag","_emotion_core__WEBPACK_IMPORTED_MODULE_1__","gatsby__WEBPACK_IMPORTED_MODULE_3__","Date","toLocaleDateString"],"mappings":"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","file":"component---src-pages-blog-index-tsx-6d74951037486a5de0e0.js","sourcesContent":["import React from \"react\";\nimport { graphql } from \"gatsby\";\n\nimport { Layout } from \"../../component/layout\";\nimport { titleToSlug } from \"../../helper/slug\";\nimport { BlogPostEntry } from \"../../component/blog-post-entry\";\n\nexport const query = graphql`\n query {\n allMarkdownRemark(\n filter: { fileAbsolutePath: { regex: \"/blog/\" } }\n sort: { order: DESC, fields: frontmatter___date }\n ) {\n nodes {\n excerpt(format: PLAIN, truncate: true, pruneLength: 500)\n frontmatter {\n date(formatString: \"MMMM DD, YYYY\")\n title\n }\n }\n }\n }\n`;\n\ninterface Frontmatter {\n date: Date;\n path: string;\n rawMarkdownBody: string;\n title: string;\n}\n\ninterface BlogPageProps {\n data: {\n allMarkdownRemark: {\n nodes: Array<{\n excerpt: string;\n frontmatter: Frontmatter;\n }>;\n };\n };\n}\n\nconst BlogPage: React.FC<BlogPageProps> = ({ data }) => {\n const blogPosts = data.allMarkdownRemark.nodes;\n\n return (\n <Layout>\n <>\n <h1>Blog</h1>\n {blogPosts.map(post => (\n <BlogPostEntry\n date={post.frontmatter.date}\n excerpt={post.excerpt}\n title={post.frontmatter.title}\n key={titleToSlug(post.frontmatter.title)}\n />\n ))}\n </>\n </Layout>\n );\n};\n\nexport default BlogPage;\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n <React.Fragment>\n {finalData && render(finalData)}\n {!finalData && <div>Loading (StaticQuery)</div>}\n </React.Fragment>\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n <StaticQueryContext.Consumer>\n {staticQueryData => (\n <StaticQueryDataRenderer\n data={data}\n query={query}\n render={render || children}\n staticQueryData={staticQueryData}\n />\n )}\n </StaticQueryContext.Consumer>\n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n if (context[query] && context[query].data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n push, // TODO replace for v3\n replace, // TODO remove replace for v3\n navigateTo, // TODO: remove navigateTo for v3\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location, pageResources }) => {\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","import * as React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\nimport Img from \"gatsby-image\";\n\nexport const query = graphql`\n query {\n file(relativePath: { eq: \"logo-couleur.png\" }) {\n childImageSharp {\n # Specify the image processing specifications right in the query.\n # Makes it trivial to update as your page's design changes.\n fixed(height: 50) {\n ...GatsbyImageSharpFixed\n }\n }\n }\n }\n`;\n\nexport const FullNameLogo: React.FC = () => {\n const data = useStaticQuery(query);\n return (\n <Img\n fixed={data.file.childImageSharp.fixed}\n alt=\"Logo le comtois du web\"\n fadeIn={false}\n />\n );\n};\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\nimport {\n NavItem as BaseNavItem,\n NavItemProps as BaseNavItemProps,\n NavLink,\n} from \"reactstrap\";\nimport { Link } from \"gatsby\";\n\nexport interface NavItemProps extends BaseNavItemProps {\n children: React.ReactChild;\n to: string;\n}\n\nconst StyledNavItem = styled(BaseNavItem)`\n margin: 0 0.5rem;\n padding: 0.1rem;\n`;\n\nexport const NavItem: React.FC<NavItemProps> = ({\n children,\n to,\n ...otherProps\n}) => (\n <StyledNavItem {...otherProps}>\n <Link to={to}>{children}</Link>\n </StyledNavItem>\n);\n","import * as React from \"react\";\nimport {\n Navbar as BaseNavbar,\n Container,\n Collapse,\n Nav,\n NavbarToggler,\n} from \"reactstrap\";\nimport { Link } from \"gatsby\";\nimport styled from \"@emotion/styled\";\n\nimport { FullNameLogo } from \"./image/full-name-logo\";\nimport { NavItem } from \"./ui/nav-item\";\n\nconst StyledNavbar = styled(BaseNavbar)`\n padding: 1rem 0;\n font-size: 18px;\n display: flex;\n align-items: center;\n\n & > .navbar-brand {\n flex: 1;\n }\n`;\n\nexport const Navbar: React.FC = () => {\n const [isOpen, setIsOpen] = React.useState(false);\n const toggle = () => setIsOpen(!isOpen);\n\n return (\n <StyledNavbar expand=\"lg\" light id=\"navbar\" className=\"px-2 px-sm-0\">\n <Container className=\"d-flex align-items-center\">\n <Link className=\"navbar-brand d-flex\" to=\"/\">\n <FullNameLogo />\n </Link>\n <NavbarToggler onClick={toggle} />\n <Collapse isOpen={isOpen} navbar>\n <Nav className=\"ml-auto\" navbar>\n <NavItem to=\"/work\">Travail</NavItem>\n <NavItem to=\"/blog\">Blog</NavItem>\n </Nav>\n </Collapse>\n </Container>\n </StyledNavbar>\n );\n};\n","import styled from \"@emotion/styled\";\n\nexport const Footer = styled.div`\n background-color: #131f66;\n bottom: 0;\n color: #fff;\n min-height: 200px;\n position: absolute;\n width: 100%;\n\n & a {\n border: 0;\n color: #fff;\n }\n`;\n","import * as React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\nimport Img from \"gatsby-image\";\n\nexport const query = graphql`\n query {\n file(relativePath: { eq: \"logo-lettre-blanc.png\" }) {\n childImageSharp {\n # Specify the image processing specifications right in the query.\n # Makes it trivial to update as your page's design changes.\n fixed(height: 100) {\n ...GatsbyImageSharpFixed\n }\n }\n }\n }\n`;\n\nexport const LetterLogo: React.FC = () => {\n const data = useStaticQuery(query);\n return (\n <Img\n fixed={data.file.childImageSharp.fixed}\n alt=\"Logo le comtois du web\"\n fadeIn={false}\n />\n );\n};\n","import React from \"react\";\nimport { Row, Col, Container } from \"reactstrap\";\nimport styled from \"@emotion/styled\";\nimport { Helmet } from \"react-helmet\";\nimport { graphql, useStaticQuery, Link } from \"gatsby\";\nimport { OutboundLink } from \"gatsby-plugin-google-analytics\";\n\nimport { Navbar } from \"./navbar\";\nimport { Footer } from \"./ui/footer\";\nimport { LetterLogo } from \"./image/letter-logo\";\n\nexport const query = graphql`\n query {\n site {\n siteMetadata {\n title\n }\n }\n }\n`;\n\nconst Wrapper = styled.div`\n position: relative;\n min-height: 100vh;\n`;\n\nconst Main = styled.main`\n margin-top: 3rem;\n padding-bottom: calc(200px + 2rem);\n position: relative;\n`;\n\nexport interface LayoutProps {\n container?: boolean;\n children: React.ReactChild;\n}\n\nexport const Layout: React.FC<LayoutProps> = ({\n children,\n container = true,\n}) => {\n const {\n site: {\n siteMetadata: { title },\n },\n } = useStaticQuery(query);\n\n return (\n <Wrapper>\n <Helmet title={title} defer={false}>\n <html lang=\"fr\" />\n <meta\n name=\"description\"\n content=\"Concrétisez vos projets d’innovation web et mobile\"\n />\n <meta\n name=\"og:description\"\n content=\"Concrétisez vos projets d’innovation web et mobile\"\n />\n <meta name=\"og:url\" content=\"https://lecomtoisduweb.com\" />\n <meta name=\"og:title\" content={title} />\n </Helmet>\n <header>\n <Navbar />\n </header>\n <Main id=\"main\">\n {container && <Container>{children}</Container>}\n {!container && <>{children}</>}\n </Main>\n <Footer className=\"footer mt-auto py-5 position-relative position-md-absolute\">\n <div className=\"container\">\n <Row>\n <Col\n md={2}\n className=\"d-flex flex-column align-items-center align-items-md-start justify-content-center\"\n >\n <Link to=\"/\">\n <LetterLogo />\n </Link>\n </Col>\n <Col\n md={4}\n className=\"d-flex flex-column align-items-center align-items-md-start justify-content-center\"\n >\n <p>Robin Bressan</p>\n <ul className=\"list-unstyled text-center text-md-left\">\n <li>contact@lecomtoisduweb.com</li>\n </ul>\n </Col>\n <Col md={6}>\n <ul className=\"h-100 list-unstyled d-flex flex-row align-items-center justify-content-md-end justify-content-center\">\n <li className=\"mr-3\">\n <OutboundLink\n href=\"https://www.linkedin.com/in/robin-bressan-99854141\"\n target=\"_blank\"\n >\n LinkedIn\n </OutboundLink>\n </li>\n <li className=\"mr-3\">\n <OutboundLink\n href=\"https://www.twitter.com/RobinBressan\"\n target=\"_blank\"\n >\n Twitter\n </OutboundLink>\n </li>\n <li>\n <OutboundLink\n href=\"https://github.com/RobinBressan\"\n target=\"_blank\"\n >\n GitHub\n </OutboundLink>\n </li>\n </ul>\n </Col>\n </Row>\n </div>\n </Footer>\n </Wrapper>\n );\n};\n","const slugify = require(\"slugify\");\n\nfunction titleToPath(title) {\n return `/blog/${titleToSlug(title)}`;\n}\n\nfunction titleToSlug(title) {\n return slugify(title, {\n replacement: \"-\", // replace spaces with replacement\n remove: /[*+~.,()'\"!:@]/g, // regex to remove characters\n lower: true, // result in lower case\n });\n}\n\nmodule.exports = { titleToPath, titleToSlug };\n","require(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\n;\n\n(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory();\n module.exports['default'] = factory();\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n root[name] = factory();\n }\n})('slugify', this, function () {\n /* eslint-disable */\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₹\":\"indian rupee\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\"}');\n /* eslint-enable */\n\n function replace(string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected');\n }\n\n options = typeof options === 'string' ? {\n replacement: options\n } : options || {};\n var slug = string.split('').reduce(function (result, ch) {\n return result + (charMap[ch] || ch). // allowed\n replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]/g, '');\n }, '') // trim leading/trailing spaces\n .trim() // convert spaces\n .replace(/[-\\s]+/g, options.replacement || '-');\n return options.lower ? slug.toLowerCase() : slug;\n }\n\n replace.extend = function (customMap) {\n for (var key in customMap) {\n charMap[key] = customMap[key];\n }\n };\n\n return replace;\n});","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport styled from \"@emotion/styled\";\nimport { titleToPath } from \"../helper/slug\";\n\nconst Article = styled.article`\n margin-bottom: 2rem;\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nconst Excerpt = styled.main`\n font-style: italic;\n`;\n\ninterface BlogPageProps {\n date: Date;\n excerpt: string;\n title: string;\n titleTag?: string;\n}\n\nexport const BlogPostEntry: React.FC<BlogPageProps> = ({\n date,\n excerpt,\n title,\n titleTag = \"h2\",\n}) => {\n return (\n <Article>\n <header>\n {React.createElement(\n titleTag,\n { className: \"mb-2\" },\n <Link to={titleToPath(title)}>{title}</Link>\n )}\n </header>\n <Excerpt>\n {excerpt}... - <small>{new Date(date).toLocaleDateString()}</small>\n </Excerpt>\n </Article>\n );\n};\n"],"sourceRoot":""}